From 54036dc2ebc591f891f452b3b248594d60fc583e Mon Sep 17 00:00:00 2001 From: xiejun <xj@2023> Date: 星期三, 29 十一月 2023 09:25:03 +0800 Subject: [PATCH] 1.标准申请功能开发 2.业务数据报错去空格 --- Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java | 297 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 296 insertions(+), 1 deletions(-) diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java index c596095..76d26b5 100644 --- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java +++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java @@ -9,8 +9,10 @@ import com.vci.ubcs.code.bo.CodeClassifyFullInfoBO; import com.vci.ubcs.code.bo.CodeTemplateAttrSqlBO; import com.vci.ubcs.code.constant.FrameWorkDefaultValueConstant; +import com.vci.ubcs.code.dto.CodeBZApplyDTO; import com.vci.ubcs.code.dto.CodeDeleteBatchDTO; import com.vci.ubcs.code.dto.CodeOrderDTO; +import com.vci.ubcs.code.dto.CodeOrderSecDTO; import com.vci.ubcs.code.dto.datapush.BaseModelDTO; import com.vci.ubcs.code.entity.*; import com.vci.ubcs.code.enumpack.*; @@ -22,6 +24,7 @@ import com.vci.ubcs.code.vo.pagemodel.UITablePageVO; import com.vci.ubcs.code.vo.pagemodel.*; import com.vci.ubcs.code.wrapper.BaseMdodelWrapper; +import com.vci.ubcs.code.wrapper.CodeAllcodeWrapper; import com.vci.ubcs.flow.core.dto.FlowStatusDTO; import com.vci.ubcs.flow.core.feign.IMDMIFlowAttrClient; import com.vci.ubcs.flow.core.vo.ProcessStageAttrVO; @@ -115,6 +118,49 @@ */ @Value("${batchadd.is_thread_import:false}") private boolean IS_THREAD_IMPORT; + + /*** + * 鎿嶄綔绫诲瀷 + */ + @Value("${bzApply.operationType:operationType}") + private String operationType; + /*** + * 鏄惁绯诲垪 + */ + @Value("${bzApply.isSeries:isSeries}") + private String isSeries; + /*** + *鍙戝竷鏃堕棿 + */ + @Value("${bzApply.releaseTime:releaseTime}") + private String releaseTime; + /*** + * 婧愭爣鍑嗗彿 + */ + @Value("${bzApply.oldCode:oldCode}") + private String oldCode; + + /*** + * 绯诲垪娴佹按 + */ + @Value("${bzApply.seriesFlow:seriesFlow}") + private String seriesFlow; + /*** + * 鏄惁鍙樻洿绯诲垪 + */ + @Value("${bzApply.isEditSeries:isEditSeries}") + private String isEditSeries; + /*** + * 鎺у埗鏄惁鍐欏叆鍊肩殑鐮佹鍚嶇О + */ + @Value("${bzApply.secName:绯诲垪鍙穧") + private String secName; + + /*** + * 鎺у埗鏄惁鍐欏叆鍊肩殑鐮佹鍚嶇О + */ + @Value("${bzApply.yearSecName:骞翠唬鍙穧") + private String yearSecName; /** * 妯℃澘鐨勬湇鍔� @@ -822,6 +868,255 @@ return R.data("false"); } + /*** + * + * @param codeBZApplyDTO 缂栫爜鐢宠鐩稿叧鐨勪俊鎭紝闇�瑕佹湁灞炴�у拰鐮佹鐩稿叧鐨勪俊鎭� + * @return + * @throws Exception + */ + @Override + public String addSaveBZ(CodeBZApplyDTO codeBZApplyDTO) throws Exception { + return addSaveBZCode(codeBZApplyDTO,true); + } + + /** + * 鏍囧噯鐢宠鍜屼慨璁㈢敤 + * + * @param codeBZApplyDTO 缂栫爜鐢宠鐩稿叧鐨勪俊鎭紝闇�瑕佹湁灞炴�у拰鐮佹鐩稿叧鐨勪俊鎭� + * @param authUser + * @return + */ + private String addSaveBZCode(CodeBZApplyDTO codeBZApplyDTO, boolean authUser) throws Exception { + String code=""; + VciBaseUtil.alertNotNull(codeBZApplyDTO.getCodeClassifyOid(), "涓婚搴撳垎绫荤殑涓婚敭", + codeBZApplyDTO.getTemplateOid(), "妯℃澘鐨勪富閿�", codeBZApplyDTO.getCodeRuleOid(), "缂栫爜瑙勫垯鐨勪富閿�"); + //鎿嶄綔绫诲瀷 + if(StringUtils.isBlank(codeBZApplyDTO.getOperationType())){ + String operationTypeValue=codeBZApplyDTO.getData().get(operationType); + codeBZApplyDTO.setOperationType(operationTypeValue); + } + //鏄惁绯诲垪 + if(!codeBZApplyDTO.isSeries()){ + boolean isSeriesValue=codeBZApplyDTO.getData().get(isSeries).equals("true")?true:false; + codeBZApplyDTO.setSeries(isSeriesValue); + } + //鍘熸爣鍑嗗彿 + if(StringUtils.isBlank(codeBZApplyDTO.getOldCode())){ + String oldCodeValue=codeBZApplyDTO.getData().get(oldCode); + codeBZApplyDTO.setOldCode(oldCodeValue); + } + //绯诲垪娴佹按 + if(StringUtils.isBlank(codeBZApplyDTO.getSeriesFlow())){ + String seriesFlowValue=codeBZApplyDTO.getData().get(seriesFlow); + codeBZApplyDTO.setSeriesFlow(seriesFlowValue); + } + //鍙戝竷鏃堕棿 + if(StringUtils.isBlank(codeBZApplyDTO.getReleaseTime())){ + String releaseTimeValue=codeBZApplyDTO.getData().get(releaseTime); + codeBZApplyDTO.setReleaseTime(releaseTimeValue); + } + //鏄惁鍙樻洿绯诲垪 + if(!codeBZApplyDTO.isEditSeries()){ + boolean isEditSeriesValue=codeBZApplyDTO.getData().get(isEditSeries).equals("true")?true:false; + codeBZApplyDTO.setEditSeries(isEditSeriesValue); + } + VciBaseUtil.alertNotNull(codeBZApplyDTO.getOperationType(), "鎿嶄綔绫诲瀷", + codeBZApplyDTO.isSeries(), "鏄惁绯诲垪", codeBZApplyDTO.getReleaseTime(), "鍙戝竷鏃堕棿"); + + if(codeBZApplyDTO.getOperationType().equals(CodeBZOperationTypeEnum.CODE_BZ_FORMULATE.getValue())){//鍒跺畾 + code= addsaveDataBZ(codeBZApplyDTO,authUser); + }else if(codeBZApplyDTO.getOperationType().equals(CodeBZOperationTypeEnum.CODE_BZ_AMENDMENT.getValue())){//淇 + VciBaseUtil.alertNotNull(codeBZApplyDTO.getOldCode(), "婧愭爣鍑嗗彿"); + code= amendmentDataBZ(codeBZApplyDTO,authUser); + createChangeOder(code,codeBZApplyDTO,authUser); + }else if(codeBZApplyDTO.getOperationType().equals(CodeBZOperationTypeEnum.CODE_BZ_EDIT.getValue())){//鏇存敼 + code= amendmentDataBZ(codeBZApplyDTO,authUser); + createChangeOder(code,codeBZApplyDTO,authUser); + }else if(codeBZApplyDTO.getOperationType().equals(CodeBZOperationTypeEnum.CODE_BZ_DISABLE.getValue())) {//浣滃簾 + code= amendmentDataBZ(codeBZApplyDTO,authUser); + createChangeOder(code,codeBZApplyDTO,authUser); + }else if(codeBZApplyDTO.getOperationType().equals(CodeBZOperationTypeEnum.CODE_BZ_AMENDMENT.getValue())) {//澶囨煡 + code= amendmentDataBZ(codeBZApplyDTO,authUser); + createChangeOder(code,codeBZApplyDTO,authUser); + } + return code; + } + + /*** + * 淇 + * @param codeBZApplyDTO + * @param authUser + * @return + */ + private String amendmentDataBZ(CodeBZApplyDTO codeBZApplyDTO, boolean authUser) throws Exception { + CodeOrderDTO orderDTO=new CodeOrderDTO(); + BeanUtil.convert(codeBZApplyDTO,orderDTO); + CodeRuleVO ruleVO = ruleService.getObjectHasSecByOid(codeBZApplyDTO.getCodeRuleOid()); + Map<String, CodeBasicSecVO> codeCodeBasicSecMap = ruleVO.getSecVOList().stream().filter(s -> StringUtils.isNotBlank(s.getOid())).collect(Collectors.toMap(s -> s.getOid().toLowerCase(Locale.ROOT), t -> t)); + VciBaseUtil.alertNotNull(orderDTO, "缂栫爜鐢宠鐩稿叧鐨勫睘鎬у拰鐮佹鐨勫唴瀹归兘涓虹┖", orderDTO.getCodeClassifyOid(), "涓婚搴撳垎绫荤殑涓婚敭", + orderDTO.getTemplateOid(), "妯℃澘鐨勪富閿�", orderDTO.getCodeRuleOid(), "缂栫爜瑙勫垯鐨勪富閿�"); + String oldCode=codeBZApplyDTO.getOldCode();//婧愭爣鍑嗙紪鐮� + String releaseTime=codeBZApplyDTO.getReleaseTime(); + List<CodeOrderSecDTO> secDTOS= orderDTO.getSecDTOList(); + LinkedList<CodeOrderSecDTO> newSecDTOList=new LinkedList<>(); + changeCodeOrderSecDTO(ruleVO,secDTOS,oldCode,newSecDTOList);//鏍规嵁瑕佹眰閲嶆柊绠楃爜娈电爜鍊� + if(!codeBZApplyDTO.isEditSeries()){//鍙樻洿涓烘爣鍑� + if(!codeBZApplyDTO.isSeries()){//濡傛灉鏄〃鍑嗭紝鍒欓渶瑕佸皢绯诲垪濂芥祦姘寸疆涓簄ull + //鍥犱负鏄爣鍑嗗垯鎺у埗鐮佹涓殑绯诲垪娴佹按鐮佹鍊间负绌� + newSecDTOList.stream().forEach(codeOrderSecDTO -> { + if(codeCodeBasicSecMap.containsKey(codeOrderSecDTO.getSecOid())&&codeCodeBasicSecMap.get(codeOrderSecDTO.getSecOid()).getName().equals(secName)){ + codeOrderSecDTO.setSecValue(""); + } + }); + } + orderDTO.setSecDTOList(newSecDTOList); + return createDataBZ(orderDTO,ruleVO,authUser); + }else{//鍙樻洿涓虹郴鍒�.鍒欐寜鐓ч�昏緫鍘诲鐞� + + + } + return ""; + } + private String createDataBZ(CodeOrderDTO orderDTO, CodeRuleVO ruleVO,boolean authUser) throws Exception { + CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(orderDTO.getCodeClassifyOid()); + CodeClassifyTemplateVO templateVO = templateService.getObjectHasAttrByOid(orderDTO.getTemplateOid()); + //1.鍒ゆ柇瑙勫垯涓櫎浜嗘祦姘寸爜娈碉紝鏄惁鏈夊叾浠栫爜娈� + checkSecValueOnOrder(ruleVO, orderDTO); + //2.鍒ゆ柇蹇呰緭椤� + checkRequiredAttrOnOrder(templateVO, orderDTO); + //3.鍏堟敞鍏ワ紝鍐嶇粍鍚堬紝鏈�鍚庢牎楠� + switchClassifyLevelOnOrder(templateVO, classifyFullInfo, orderDTO); + //4.澶勭悊缁勫悎瑙勫垯銆傜粍鍚堣鍒欎笉鑳戒娇鐢ㄧ紪鐮佺殑灞炴�э紝鍥犱负缂栫爜鐨勭敓鎴愬彲鑳芥槸闇�瑕佸睘鎬х殑 + switchComponentAttrOnOrder(templateVO, orderDTO); + //5.鏍¢獙瑙勫垯 + checkVerifyOnOrder(templateVO, orderDTO); + //6.鍏抽敭灞炴�� + checkKeyAttrOnOrder(classifyFullInfo, templateVO, orderDTO); + //7.鏋氫妇杞崲 + checkEnumOnOrder(templateVO, orderDTO); + //8.澶勭悊鏃堕棿鏍煎紡锛屽湪鏁版嵁搴撻噷闈笉璁烘槸瀛楃涓茶繕鏄棩鏈熸牸寮忥紝閮戒娇鐢ㄧ浉鍚岀殑鏍煎紡瀛樺偍 + switchDateAttrOnOrder(templateVO, orderDTO); + //9.鐢熸垚缂栫爜鐨勪俊鎭� 锛屽垵濮嬪寲涓氬姟绫诲瀷锛氱紦瀛樺厛鍙栨秷锛屽洜涓虹増鏈鍒欎細鍑虹幇鍙樺姩鐨勬儏鍐垫墍浠ユ棤娉曚娇鐢ㄧ紦瀛� + // BaseModel cbo = createCBOByBtmName(classifyFullInfo.getTopClassifyVO().getBtmTypeId()); + BaseModel cbo = createBaseModel(classifyFullInfo.getTopClassifyVO().getBtmTypeId().trim().toLowerCase()); + //榛樿鐨勫睘鎬ч兘涓嶇敤浠庡墠绔嫹璐� + //璁剧疆缂栫爜闇�瑕佺殑榛樿灞炴�х殑鍐呭 + copyValueToCBO(classifyFullInfo, cbo, orderDTO, templateVO, false); + cbo.setOid(VciBaseUtil.getPk()); + cbo.setRevisionOid(VciBaseUtil.getPk()); + cbo.setNameOid(VciBaseUtil.getPk()); + cbo.setCreateTime(new Date()); + cbo.setLastModifyTime(new Date()); + //cbo.setCreator(String.valueOf(AuthUtil.getUser().getUserId()));銆� + if(authUser) { + // 瑕佹眰鏄剧ず璐﹀彿锛屾墍浠ュ仛浜嗘洿鏀� + cbo.setCreator(String.valueOf(AuthUtil.getUser().getAccount())); + cbo.setLastModifier(String.valueOf(AuthUtil.getUser().getAccount())); + }else{ + cbo.setCreator(orderDTO.getCreator()); + cbo.setLastModifier(orderDTO.getLastModifier()); + } + cbo.setTenantId(AuthUtil.getTenantId()); + if(StringUtils.isNotBlank(orderDTO.getLcStatus())||StringUtils.isNotBlank(orderDTO.getData().get("lcStatus"))){ + cbo.setLcStatus(StringUtils.isNotBlank(orderDTO.getLcStatus())?orderDTO.getLcStatus():orderDTO.getData().get("lcStatus")); + } + //TODO:鍥犱负榛樿鐨勫睘鎬ч兘涓嶆嫹璐濓紝鐩墠闆嗗洟鐮佸彨name锛屽苟娌℃湁浠嶥TO鎷疯礉鍒癱bo閲屻�傚鍔犱竴涓崟鐙鐞嗭紝浠ュ悗鍐嶇湅瑕佷笉瑕佽皟鏁� + cbo.setName(orderDTO.getName() == null ? "" : orderDTO.getName()); + //end -- modify by lihang @20220407 + List<BaseModel> cboList = new ArrayList<>(); + //澶囨敞 + cbo.setDescription(orderDTO.getDescription()); + cboList.add(cbo); + List<String> codeList = productCodeService.productCodeAndSaveDataBZ(classifyFullInfo, templateVO, ruleVO, orderDTO.getSecDTOList(), cboList); + batchSaveSelectChar(templateVO, cboList); + return codeList.size() > 0 ? codeList.get(0) : ""; + + } + /*** + * 鏍规嵁缂栧彿鑾峰彇鐮佹鐮佸�� + * @param secDTOList + */ + private void changeCodeOrderSecDTO(CodeRuleVO ruleVO,List<CodeOrderSecDTO> secDTOList,String oldCode,LinkedList<CodeOrderSecDTO> newSecDTOList) throws Exception { + + //杩橀渶瑕佷慨鏀筧llCode鐨勭敓鍛藉懆鏈� + QueryWrapper<CodeAllCode> allCodeWrapper = new QueryWrapper<>(); + allCodeWrapper.in("id", VciBaseUtil.str2List(oldCode)); + Map<String,String> secDTOMap=secDTOList.stream().collect(Collectors.toMap(s -> s.getSecOid(), t -> t.getSecValue(),(o1, o2)->o2)); + List<CodeAllCode>codeAllcodeList=codeAllCodeService.selectByWrapper(allCodeWrapper); + if(!CollectionUtils.isEmpty(codeAllcodeList)){ + String codeDelimit=codeAllcodeList.get(0).getCodeDelimit(); + String[] secValues=StringUtils.splitByWholeSeparatorPreserveAllTokens(codeDelimit,SERIAL_VALUE_SPACE); + //VciBaseUtil.str2List() + for (int i=0; i<ruleVO.getSecVOList().size();i++){ + CodeBasicSecVO codeBasicSecVO=ruleVO.getSecVOList().get(i); + CodeOrderSecDTO codeOrderSecDTO=new CodeOrderSecDTO(); + String secValue=secValues[i]; + boolean isRoman=VciBaseUtil.isRoman(secValue); + if(isRoman){ + continue; + } + if(secDTOMap.containsKey(codeBasicSecVO.getOid())){ + secValue= secDTOMap.get(codeBasicSecVO.getOid()) ; + } + if(StringUtils.isNotBlank(secValue)) { + codeOrderSecDTO.setSecOid(codeBasicSecVO.getOid()); + codeOrderSecDTO.setSecValue(secValue); + newSecDTOList.add(codeOrderSecDTO); + } + } + }else{ + throw new Exception("鏍规嵁鍘熸爣鍑嗙紪鍙凤紝鍦ㄧ郴缁熶腑鏈煡璇㈠埌鐩稿簲鐨勪俊鎭�"); + } + } + /*** + * 鍒跺畾锛屽垯涓嶉渶瑕佷骇鐢熸洿鏀瑰崟鐩存帴鐢熸垚缂栫爜 + * @param codeBZApplyDTO + * @param authUser + * @return + */ + private String addsaveDataBZ(CodeBZApplyDTO codeBZApplyDTO, boolean authUser) throws Exception { + String code=""; + CodeOrderDTO orderDTO=new CodeOrderDTO(); + BeanUtil.convert(codeBZApplyDTO,orderDTO); + CodeRuleVO ruleVO = ruleService.getObjectHasSecByOid(codeBZApplyDTO.getCodeRuleOid()); + Map<String, CodeBasicSecVO> codeCodeBasicSecMap = ruleVO.getSecVOList().stream().filter(s -> StringUtils.isNotBlank(s.getOid())).collect(Collectors.toMap(s -> s.getOid(), t -> t)); + //鏄惁鏄爣鍑�,涓嶆槸鏍囧噯鐨勪笉浼氬幓绠� + if(!codeBZApplyDTO.isSeries()){ + //鍥犱负鏄爣鍑嗗垯鎺у埗鐮佹涓殑绯诲垪娴佹按鐮佹鍊间负绌� + orderDTO.getSecDTOList().stream().forEach(codeOrderSecDTO -> { + if(codeCodeBasicSecMap.containsKey(codeOrderSecDTO.getSecOid())&&codeCodeBasicSecMap.get(codeOrderSecDTO.getSecOid()).getName().equals(secName)){ + codeOrderSecDTO.setSecValue(""); + } + }); + } + VciBaseUtil.alertNotNull(orderDTO, "缂栫爜鐢宠鐩稿叧鐨勫睘鎬у拰鐮佹鐨勫唴瀹归兘涓虹┖", orderDTO.getCodeClassifyOid(), "涓婚搴撳垎绫荤殑涓婚敭", + orderDTO.getTemplateOid(), "妯℃澘鐨勪富閿�", orderDTO.getCodeRuleOid(), "缂栫爜瑙勫垯鐨勪富閿�"); + return createDataBZ(orderDTO,ruleVO,authUser); + } + + /*** + * 鏇存敼鍗曠殑鍒涘缓 + * @param code + * @param codeBZApplyDTO + * @param authUser + * @return + */ + private String createChangeOder(String code,CodeBZApplyDTO codeBZApplyDTO, boolean authUser){ + + return ""; + + } + /*** + * 闆嗘垚鍙彉鐮佹鐢宠鎺ュ彛 + * @param codeBZApplyDTO 鐢宠鐨勪俊鎭紝闇�瑕佸寘鍚睘鎬х殑鍐呭鍜岀爜娈电浉鍏崇殑鍐呭 + * @param authUser 鏄惁鐢ㄧ櫥褰曠敤鎴疯褰� + * @return + * @throws Exception + */ + public String addSaveBZCodeNotauthUser(CodeBZApplyDTO codeBZApplyDTO, boolean authUser) throws Exception { + return addSaveBZCode(codeBZApplyDTO,authUser); + } + /** * 灏佽鍏抽敭灞炴�х殑鏌ヨ璇彞 * @@ -873,7 +1168,7 @@ //涓嶅拷鐣ュぇ灏忓啓銆佷笉鍘荤┖銆佷笉蹇界暐鍏ㄥ崐瑙� temp = "%s"; } - queryKey = String.format(temp, "nvl("+ "t." + attrId +",'/')"); + queryKey = String.format(temp, "nvl("+ "t." + attrId +",'/')"); queryValue = String.format(temp, "'" + (trim ? value.trim() : value) + "'"); conditionMap.put(queryKey, queryValue); } else { -- Gitblit v1.9.3