From 52ffefd06e59cbd56c1a919972866592379cfed2 Mon Sep 17 00:00:00 2001 From: xiejun <xj@2023> Date: 星期四, 21 九月 2023 11:27:11 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/UniversalInterfaceImpl.java | 197 +++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 190 insertions(+), 7 deletions(-) diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/UniversalInterfaceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/UniversalInterfaceImpl.java index 91ee9bc..a5016f5 100644 --- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/UniversalInterfaceImpl.java +++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/UniversalInterfaceImpl.java @@ -17,6 +17,8 @@ import com.vci.ubcs.code.util.ClientBusinessObject; import com.vci.ubcs.code.util.gennerAttrMapUtil; import com.vci.ubcs.code.vo.pagemodel.*; +import com.vci.ubcs.code.vo.webserviceModel.applybz.ApplyBZParamVO; +import com.vci.ubcs.code.vo.webserviceModel.applybz.ApplyBZVO; import com.vci.ubcs.code.vo.webserviceModel.person.*; import com.vci.ubcs.code.vo.webserviceModel.apply.*; import com.vci.ubcs.code.vo.webserviceModel.attrmap.*; @@ -53,12 +55,23 @@ import com.vci.ubcs.system.vo.DeptVO; import com.vci.ubcs.system.vo.RoleVO; import lombok.extern.slf4j.Slf4j; +import org.apache.tools.ant.taskdefs.condition.Http; +import org.springblade.core.log.exception.ServiceException; +import org.springblade.core.secure.utils.AuthUtil; import org.springblade.core.tool.api.R; +import org.springblade.core.tool.utils.Func; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; + import javax.annotation.Resource; +import javax.jws.WebMethod; +import javax.servlet.ServletRequest; +import javax.servlet.http.HttpServletRequest; +import javax.ws.rs.core.Context; +import javax.xml.ws.WebServiceContext; +import javax.xml.ws.handler.MessageContext; import java.util.*; import java.util.concurrent.CopyOnWriteArrayList; import java.util.concurrent.atomic.AtomicBoolean; @@ -74,20 +87,25 @@ @Slf4j @VciWebservice(path = "/universalInterface") public class UniversalInterfaceImpl<IDockingLogeServiceing> implements UniversalInterfaceI { + @Value("${code.universalinterface.checkSystemConfig:true}") public boolean CODE_CHECKCONFIG; + @Autowired(required = false) private AttributeMapConfig attributeMapConfig; + /*** * 浜哄憳鐩稿叧閰嶇疆鏈嶅姟 */ @Autowired(required = false) private PersonAndDeptConfig personAndDeptConfig; + /** * 缂撳瓨鏈嶅姟 */ //@Autowired //private RedisService redisService; + /** * 涓婚搴撳垎绫荤殑鏈嶅姟 */ @@ -127,7 +145,6 @@ /** * 瀵嗙骇鐨勬湇鍔� */ - @Resource private MdmIOService mdmIOService; @@ -142,12 +159,43 @@ */ @Resource private IDockingLogeService dockingLogeService; + @Resource + private IPasswordFreeLoginService passwordFreeLoginService; private static String separator="##VCI##"; private String errorid="0"; private String msg="鎴愬姛"; private String objerrorCode="0"; private String objerrorMsg="鎴愬姛"; + + private final ThreadLocal<HttpServletRequest> threadLocal = new ThreadLocal<>(); + + @Resource + private WebServiceContext webServiceContext; + + @Override + public void setThreadLocal(ThreadLocal<HttpServletRequest> requestThreadLocal){ + this.threadLocal.set(requestThreadLocal.get()); + requestThreadLocal.remove(); + } + + @WebMethod + private HttpServletRequest getRequest() { + //rest璇锋眰鏂瑰紡鑾峰彇request + HttpServletRequest request = this.threadLocal.get(); + if(Func.isEmpty(request)){ + try { + // webservice璇锋眰鏂瑰紡鑾峰彇HttpServletRequest瀵硅薄 + request = (HttpServletRequest)webServiceContext.getMessageContext().get(MessageContext.SERVLET_REQUEST); + }catch (Exception e){ + throw new ServiceException("鑾峰彇httpServletRequest澶辫触锛屽師鍥�:"+e.getMessage()); + } + }else { + this.threadLocal.remove(); + } + return request; + } + /*** * 鐢宠缂栫爜鎺ュ彛 * @param data 浼犻�掔殑鏁版嵁鍙傛暟 @@ -190,9 +238,11 @@ ClassfysVO classfysVO = interParameterVO.getData().getClassifys(); systemId = interParameterVO.getData().getSystemId(); UserVO userVo = interParameterVO.getData().getUser(); + //鍏嶅瘑鐧诲綍鐢宠token锛宺equest涓坊鍔犵敤鎴蜂俊鎭� + passwordFreeLoginService.pwdFreeLoginByBoolean(userVo.getUserName(),this.getRequest()); + AuthUtil.getUser(); List<ClassfyVO> classVOList = classfysVO.getClassify(); InterParameterVO finalInterParameterVO = interParameterVO; - //杩欐槸璐﹀彿淇℃伅 SessionInfo sessionInfo = new SessionInfo(); sessionInfo.setUserId(userVo.getUserName()); @@ -341,8 +391,6 @@ //璋冪敤闆嗗洟鐢宠鎺ュ彛鐢宠闆嗗洟鐮� return resultStr; } - - /**** * 浜哄憳鏁版嵁鍚屾 @@ -616,6 +664,7 @@ return resultOrgData; } + /**** * 閮ㄩ棬鏁版嵁鍚屾 * @param orgData @@ -882,6 +931,7 @@ } return resultOrgData; } + /*** * 缁熶竴鏇存柊鎺ュ彛锛堟洿鏀圭姸鎬侊紝鏇存敼灞炴�т俊鎭級鎺ュ彛 * @param data @@ -926,6 +976,8 @@ ClassfysVO classfysVO = interParameterVO.getData().getClassifys(); systemId = interParameterVO.getData().getSystemId(); UserVO userVo = interParameterVO.getData().getUser(); + //鍏嶅瘑鐧诲綍鐢宠token锛宺equest涓坊鍔犵敤鎴蜂俊鎭� + passwordFreeLoginService.pwdFreeLoginByBoolean(userVo.getUserName(),this.getRequest()); List<ClassfyVO> classVOList = classfysVO.getClassify(); InterParameterVO finalInterParameterVO = interParameterVO; //杩欐槸璐﹀彿淇℃伅 @@ -1097,6 +1149,8 @@ } QueryData queryData=queryClassifyVO.getData(); UserVO userVo=queryData.getUser(); + //鍏嶅瘑鐧诲綍鐢宠token锛宺equest涓坊鍔犵敤鎴蜂俊鎭� + passwordFreeLoginService.pwdFreeLoginByBoolean(userVo.getUserName(),this.getRequest()); systemId=queryData.getSystemId(); QueryLibraryVO libraryVO= queryData.getLibrary(); String libId= libraryVO.getId(); @@ -1255,6 +1309,8 @@ CondtionsVO condtionsVO=dataCondtionsVO.getCondtions(); systemId=condtionsVO.getSystemId(); UserVO userVo=condtionsVO.getUser(); + //鍏嶅瘑鐧诲綍鐢宠token锛宺equest涓坊鍔犵敤鎴蜂俊鎭� + passwordFreeLoginService.pwdFreeLoginByBoolean(userVo.getUserName(),this.getRequest()); CondtionVO condtionVO= condtionsVO.getCondtion(); SessionInfo sessionInfo = new SessionInfo(); sessionInfo.setUserId(userVo.getUserName()); @@ -1431,11 +1487,8 @@ return resultStr; } - - @Override public String queryClassifyRule(String data, String dataType) throws Throwable { - boolean issucess=false; String resultStr = ""; String errorid="0"; @@ -1471,6 +1524,8 @@ } QueryData queryData=queryClassifyVO.getData(); UserVO userVo=queryData.getUser(); + //鍏嶅瘑鐧诲綍鐢宠token锛宺equest涓坊鍔犵敤鎴蜂俊鎭� + passwordFreeLoginService.pwdFreeLoginByBoolean(userVo.getUserName(),this.getRequest()); systemId=queryData.getSystemId(); QueryLibraryVO libraryVO= queryData.getLibrary(); String libId= libraryVO.getId(); @@ -1883,6 +1938,134 @@ return resultStr; } + public String applyCodeForBZ(String data,String dataType){ + String resultStr = ""; +// log.info("鏂规硶->applyCodeForBZ start"); +// +// final String[] errorid = {"0"}; +// msg="鎴愬姛"; +// objerrorCode="0"; +// objerrorMsg="鎴愬姛"; +// log.info("鐢宠缂栫爜鐨勬暟鎹弬鏁�:->"+data); +// log.info("鐢宠缂栫爜鐨勬暟鎹被鍨�:->"+dataType); +// String systemId=""; +// List<XMLResultClassfyVO> resultClassfyVOList = new ArrayList<>(); +// LinkedList<XMLResultDataObjectDetailDO> resultDataObjectDetailDOs = new LinkedList<>(); +// try{ +// try { +// if(StringUtils.isBlank(data)) { +// errorid[0] ="101"; +// throw new Throwable("鎺ュ彛鍙傛暟锛氫紶閫掍负绌�"); +// } +// ApplyBZParamVO applyBZParamVO =new ApplyBZParamVO(); +// //濡傛灉dataType鏄痻ml鍒欙紝閫氳繃xml搴忓垪鍖栨垚瀵硅薄褰㈠紡锛屽鏋滄槸json鍒欓�氳繃json杞崲鎴愬璞℃牸寮� +// try { +// if ("xml".equals(dataType)) { +// XStream xStream = new XStream(new DomDriver()); +// xStream.processAnnotations(RootDataVO.class); +// xStream.autodetectAnnotations(true); +// ApplyBZVO rootDataVO = (ApplyBZVO) xStream.fromXML(data); +// applyBZParamVO.setData(rootDataVO); +// } else { +// applyBZParamVO = JSONObject.toJavaObject(JSONObject.parseObject(data), ApplyBZParamVO.class); +// } +// }catch (Throwable e){ +// errorid[0] ="101"; +// throw new Throwable("鎺ュ彛鍙傛暟锛氫紶鍏ユ暟鎹弬鏁拌В鏋愬け璐�"); +// } +// ClassfysVO classfysVO = interParameterVO.getData().getClassifys(); +// systemId = interParameterVO.getData().getSystemId(); +// UserVO userVo = interParameterVO.getData().getUser(); +// //鍏嶅瘑鐧诲綍鐢宠token锛宺equest涓坊鍔犵敤鎴蜂俊鎭� +// passwordFreeLoginService.passwordFreeLogin(userVo.getUserName(),this.getRequest()); +// AuthUtil.getUser(); +// List<ClassfyVO> classVOList = classfysVO.getClassify(); +// InterParameterVO finalInterParameterVO = interParameterVO; +// //杩欐槸璐﹀彿淇℃伅 +// SessionInfo sessionInfo = new SessionInfo(); +// sessionInfo.setUserId(userVo.getUserName()); +// sessionInfo.setUserName(userVo.getTrueName()); +// sessionInfo.setIp(userVo.getIp()); +// VciBaseUtil.setCurrentUserSessionInfo(sessionInfo); +//// List<XMLResultDataObjectDetailDO> allResultDataObjectDetailDOS=new ArrayList<>(); +// String finalSystemId = systemId; +// } catch (Throwable e) { +// List<ApplyDataVO> applyDataVOList= classVO.getObjects().getObject(); +// objerrorCode="1"; +// if(!CollectionUtils.isEmpty(applyDataVOList)) { +// applyDataVOList.stream().forEach(applyDataVO -> { +// XMLResultDataObjectDetailDO xmlResultDataObjectDetailDO = new XMLResultDataObjectDetailDO(); +// xmlResultDataObjectDetailDO.setCode(""); +// xmlResultDataObjectDetailDO.setId(applyDataVO.getId()); +// xmlResultDataObjectDetailDO.setErrorid(objerrorCode); +// xmlResultDataObjectDetailDO.setMsg("缂栫爜鐢宠澶辫触:" + e.getMessage()); +// resultDataObjectDetailDOs.add(xmlResultDataObjectDetailDO); +// }); +// }else{ +// XMLResultDataObjectDetailDO xmlResultDataObjectDetailDO = new XMLResultDataObjectDetailDO(); +// xmlResultDataObjectDetailDO.setCode(""); +// xmlResultDataObjectDetailDO.setId(""); +// xmlResultDataObjectDetailDO.setErrorid(objerrorCode); +// xmlResultDataObjectDetailDO.setMsg("缂栫爜鐢宠澶辫触:" + e.getMessage()); +// resultDataObjectDetailDOs.add(xmlResultDataObjectDetailDO); +// } +// e.printStackTrace(); +// }finally { +// XMLResultClassfyVO resultClassfyVO = new XMLResultClassfyVO(); +// resultClassfyVO.setClassCode(classVO.getClassCode()); +// resultClassfyVO.setLibrary(classVO.getLibrary()); +// resultClassfyVO.setFullclsfNamePath(classVO.getFullclsfNamePath()); +// resultClassfyVO.setObjects(resultDataObjectDetailDOs); +// resultClassfyVOList.add(resultClassfyVO); +// } +// XMLResultSystemVO xmlResultSystemVO=new XMLResultSystemVO(); +// xmlResultSystemVO.setClassifys(resultClassfyVOList); +// xmlResultSystemVO.setMsg(msg); +// xmlResultSystemVO.setErrorid(errorid[0]); +// resultStr= transferResultXMl(xmlResultSystemVO,dataType); +// }catch (Throwable e){ +// e.printStackTrace(); +// msg="鐢宠缂栫爜澶辫触:"+e.getMessage(); +// /* XMLResultSystemVO XMLResultSystemVO=new XMLResultSystemVO(); +// XMLResultSystemVO.setErrorid(errorid); +// XMLResultSystemVO.setMsg("鐢宠缂栫爜澶辫触锛�->"+e.getMessage()); +// XMLResultSystemVO.setClassifys(resultClassfyVOList); +// resultStr=transferResultXMl(XMLResultSystemVO,dataType); +// +// log.error("鐢宠缂栫爜澶辫触锛�->"+e); +// return resultStr;*/ +// }finally { +// XMLResultSystemVO xmlResultSystemVO=new XMLResultSystemVO(); +// xmlResultSystemVO.setClassifys(resultClassfyVOList); +// xmlResultSystemVO.setMsg(msg); +// xmlResultSystemVO.setErrorid(errorid[0]); +// resultStr= transferResultXMl(xmlResultSystemVO,dataType); +// final boolean[] issucess = {true}; +// if(!errorid[0].equals("0")) { +// issucess[0] = false; +// }else { +// if(!CollectionUtils.isEmpty(resultClassfyVOList)) { +// resultClassfyVOList.stream().forEach(xMLResultClassfyVO -> { +// xMLResultClassfyVO.getObjects().stream().forEach(objec -> { +// if (!(objec.getErrorid().equals("0") || objec.getErrorid().equals("204"))) { +// issucess[0] = false; +// msg=objec.getMsg(); +// } +// }); +// }); +// } +// } +// try { +// //璁板綍鏃ュ織 +// this.saveLogs(systemId, systemId, data, resultStr, issucess[0], msg, "applyCodeForBZ"); +// }catch (Throwable e){ +// e.printStackTrace(); +// } +// } +// log.info("杩斿洖鍙傛暟:"+resultStr); + //璋冪敤闆嗗洟鐢宠鎺ュ彛鐢宠闆嗗洟鐮� + return resultStr; + } /*** * 鏌ヨ鏍¢獙鍒嗙被淇℃伅 * @param classfyVO -- Gitblit v1.9.3