package com.landtool.lanbase.modules.res.controller; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.wsdl.WSDLException; import javax.xml.parsers.ParserConfigurationException; import org.apache.axis.utils.XMLUtils; import org.apache.shiro.SecurityUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.NodeList; import org.xml.sax.SAXException; import com.landtool.lanbase.common.annotation.LogAction; import com.landtool.lanbase.common.utils.WAWsdlUtil; import com.landtool.lanbase.config.SysTemPropertyConfig; import com.landtool.lanbase.modules.org.entity.OrgUnit; import com.landtool.lanbase.modules.org.entity.OrgUser; import com.landtool.lanbase.modules.org.service.OrgUserService; import com.landtool.lanbase.modules.res.entity.Res_ExtInterFaceService; import com.landtool.lanbase.modules.res.entity.Res_MainInfo; import com.landtool.lanbase.modules.res.service.ResExtInterFaceService; import com.landtool.lanbase.modules.res.service.ResMainInfoService; import com.landtool.lanbase.modules.sys.controller.AbstractController; @Controller @RequestMapping("/res") public class ResExtInterFaceServiceController extends AbstractController { @Autowired private ResExtInterFaceService resExtInterFaceService; @Autowired private ResMainInfoService resMainInfoService; @Autowired private OrgUserService orgUserService; @Autowired private SysTemPropertyConfig sysConfig; /** * 访问资源接口服务拓展信息页面 * @param resMainInfoId * @param model * @return */ @RequestMapping("/ResManage/ResRegister/ExtInterFaceService") public String ExtInterFaceService(int resMainInfoId, Model model) { Res_ExtInterFaceService res_extInterFaceService = resExtInterFaceService.selectByPrimaryKey(resMainInfoId);//获取接口服务拓展信息 if (res_extInterFaceService != null) { model.addAttribute("Res_ExtInterFaceService", res_extInterFaceService); Res_MainInfo res_mainInfo = resMainInfoService.selectByPrimaryKey(resMainInfoId); model.addAttribute("resMainInfo", res_mainInfo); } else { res_extInterFaceService = new Res_ExtInterFaceService(); model.addAttribute("Res_ExtInterFaceService", res_extInterFaceService); model.addAttribute("resMainInfo", new Res_MainInfo()); } model.addAttribute("resMainInfoId", resMainInfoId); model.addAttribute("content", res_extInterFaceService.getHelpurl()); if(SecurityUtils.getSubject().isPermitted("org_user_admin")) { //判断当前用户是否是管理员,是管理员或是未提交的资源才可以修改资源相关信息 model.addAttribute("admin",true); } else { model.addAttribute("admin",false); } model.addAttribute("esbWebServiceHost",sysConfig.getEsbWebServiceHost()); model.addAttribute("esbHost",sysConfig.getEsbHost()); model.addAttribute("esbUrl",sysConfig.getEsbUrl()); return "ResManage/ResRegister/ExtInterFaceService"; } @ResponseBody @RequestMapping("/ResManage/ResRegister/serverurl") public String serverurl(int resMainInfoId, Model model) { Res_ExtInterFaceService res_extInterFaceService = resExtInterFaceService.selectByPrimaryKey(resMainInfoId);//获取接口服务拓展信息 if (res_extInterFaceService != null ) { if(!res_extInterFaceService.getServerurl().equals("")){ Long userId = getUserId(); //获取用户ID OrgUnit orgUnit = getUnit();//获取用户单位信息 Map map = new HashMap<>(); map.put("resourceid", resMainInfoId); map.put("userid", userId); OrgUser user = getUser(); map.put("unitid", orgUserService.getDefaultUnit(user.getUserid()).getUnitid() ); int count = resMainInfoService.checkZiYuanQuanXian(map); if(count>0){ return "{'serverurl':'"+res_extInterFaceService.getServerurl()+"' }"; }else { return "0"; } }else { return null; } }else { return null; } } /** * 根据ID删除系统资源拓展信息功能 */ @ResponseBody @RequestMapping("/resExtInterFaceService/deleteByPrimaryKey") public int deleteByPrimaryKey(int resourceid) { return resExtInterFaceService.deleteByPrimaryKey(resourceid); } /** * 插入系统资源拓展信息功能并且增加更新功能 */ @ResponseBody @RequestMapping("/resExtInterFaceService/insertSelectiveAndUpdate") @LogAction("资源管理,资源发布,资源修改,修改|zy") public int insertSelectiveAndUpdate(Res_ExtInterFaceService entity,Res_MainInfo mainInfo) { Res_ExtInterFaceService res_extInterFaceService = resExtInterFaceService.selectByPrimaryKey(entity.getResourceid()); int result = 0; int interFaceResult = 0; if (res_extInterFaceService == null) { interFaceResult = resExtInterFaceService.insertSelective(entity);//添加 } else { interFaceResult = resExtInterFaceService.updateByPrimaryKeySelective(entity);//更新 } if(interFaceResult == 1){ result = resMainInfoService.updateByPrimaryKeySelective(mainInfo); } return result; } @RequestMapping("/resExtInterFaceService/WSDL") public String WSDL(Model model,int resMainInfoId) throws WSDLException { Res_ExtInterFaceService res_extInterFaceService = resExtInterFaceService.selectByPrimaryKey(resMainInfoId);//获取接口服务拓展信息 if (!res_extInterFaceService.getServerurl().equals("")) { String wsdluri = res_extInterFaceService.getServerurl()+"?wsdl"; List operations = new ArrayList(); List list=new ArrayList<>(); try { WAWsdlUtil.getOperationList(wsdluri, operations); for (String operationName : operations) { String Json = wsdlJX(operationName,wsdluri); list.add(Json); } }catch (WSDLException e){ e.setLocation("地址错了"); System.out.println(e); } model.addAttribute("pubzyWebRoot", sysConfig.getPubzyWebRoot()); model.addAttribute("webUrl",res_extInterFaceService.getServerurl()+"?op="); model.addAttribute("Obj", list); } else { model.addAttribute("pubzyWebRoot", sysConfig.getPubzyWebRoot()); // model.addAttribute("Obj", list); } return "ResManage/ResRegister/WSDL"; } public String wsdlJX(String functionName,String url) { InputStream is = null; Document document = null; StringBuilder data = new StringBuilder(); data.append("{"); String request = ""; String request1 = ""; data.append("functionName:'"+functionName+"',"); int b = 0; try { document = XMLUtils.newDocument(url); // document = XMLUtils.newDocument("http://18.1.2.13:9090/gpsdateconversion/DateConversion.asmx?op=DOYToDate"); Element elem = document.getDocumentElement(); NodeList list = elem.getElementsByTagName("wsdl:portType"); Element Element1 = (Element) list.item(0); NodeList wsdlOperationList = Element1.getElementsByTagName("wsdl:operation"); for (int i = 0; i < wsdlOperationList.getLength(); i++) { Element wsdlOperation = (Element) wsdlOperationList.item(i); if (wsdlOperation.getAttribute("name").equals(functionName)) { request = ((Element) wsdlOperation.getElementsByTagName("wsdl:documentation").item(0)).getFirstChild().getNodeValue(); data.append("ShuoMing:'"+request+"',"); break; } } data.append("ChanShus:["); NodeList list2 = elem.getElementsByTagName("wsdl:types"); Element Element2 = (Element) list2.item(0); NodeList list3 = Element2.getElementsByTagName("s:schema"); Element Element3 = (Element) list3.item(0); NodeList wsdlOperationList2 = Element3.getElementsByTagName("s:element"); for (int i = 0; i < wsdlOperationList2.getLength(); i++) { Element wsdlOperation1 = (Element) wsdlOperationList2.item(i); if (wsdlOperation1.getAttribute("name").equals(functionName)) { NodeList CanShuList = wsdlOperation1.getElementsByTagName("s:element"); for (int j=0;j