From bce3fcf05020405e33199706c3d91e9b9a71bd39 Mon Sep 17 00:00:00 2001 From: ludc Date: 星期五, 01 十二月 2023 12:42:05 +0800 Subject: [PATCH] 关键属性查重特殊字符转义添加 --- Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java | 411 ++++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 370 insertions(+), 41 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..094677d 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 @@ -1,5 +1,6 @@ package com.vci.ubcs.code.service.impl; +import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -9,8 +10,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 +25,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; @@ -39,6 +43,8 @@ import com.vci.ubcs.starter.revision.model.TreeWrapperOptions; import com.vci.ubcs.starter.revision.service.RevisionModelUtil; import com.vci.ubcs.starter.util.MdmBtmTypeConstant; +import com.vci.ubcs.starter.util.SaveLogUtil; +import com.vci.ubcs.starter.util.SpecialCharacterConverter; import com.vci.ubcs.starter.util.UBCSSqlKeyword; import com.vci.ubcs.starter.web.constant.QueryOptionConstant; import com.vci.ubcs.starter.web.constant.RegExpConstant; @@ -59,12 +65,14 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springblade.core.cache.utils.CacheUtil; +import org.springblade.core.log.annotation.OperateLog; 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.DateUtil; import org.springblade.core.tool.utils.Func; import org.springblade.core.tool.utils.StringPool; +import org.springblade.core.tool.utils.StringUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.cache.Cache; @@ -115,6 +123,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; /** * 妯℃澘鐨勬湇鍔� @@ -300,8 +351,15 @@ */ @Autowired private IMDMIFlowAttrClient imdmiFlowAttrClient; -// @Autowired -// private CodeOsbtmtypeMapper codeOsbtmtypeMapper;---- + + // @Autowired + // private CodeOsbtmtypeMapper codeOsbtmtypeMapper; + + /** + * 鏃ュ織淇濆瓨宸ュ叿绫� + */ + @Autowired + private SaveLogUtil saveLogUtil; /** @@ -364,39 +422,52 @@ @Transactional @Override public void changeStatus(BaseModelDTO baseModelDTO) { - VciBaseUtil.alertNotNull(baseModelDTO, "鏁版嵁淇℃伅", baseModelDTO.getOid(), "涓婚敭", baseModelDTO.getBtmname(), "涓氬姟绫诲瀷", baseModelDTO.getLcStatus(), "鐩爣鐘舵��"); - List<String> oids = VciBaseUtil.str2List(baseModelDTO.getOid()); - List<BaseModel> baseModels = new ArrayList<>(); - baseModels = selectByTypeAndOid(baseModelDTO.getBtmname(), baseModelDTO.getOid()); - if (baseModels.size() == 0) { - throw new VciBaseException("鏈煡璇㈠埌鐩稿叧鏁版嵁銆�"); - } - //杩橀渶瑕佷慨鏀筧llCode鐨勭敓鍛藉懆鏈� - QueryWrapper<CodeAllCode> allCodeWrapper = new QueryWrapper<>(); - allCodeWrapper.eq("createcodebtm", baseModelDTO.getBtmname()); - allCodeWrapper.in("createcodeoid", oids); - List<CodeAllCode> codeCbos = codeAllCodeService.selectByWrapper(allCodeWrapper);// 鍥炴敹闇�瑕佷笟鍔℃暟鎹垹闄� - if (CodeDefaultLC.TASK_BACK.getValue().equals(baseModelDTO.getLcStatus())) { - R<List<BtmTypeVO>> listR = btmTypeClient.selectByIdCollection(Collections.singletonList(baseModelDTO.getBtmname())); - if (!listR.isSuccess() || listR.getData().size() == 0) { - throw new VciBaseException("浼犲叆涓氬姟绫诲瀷鏈煡璇㈠埌鐩稿簲琛ㄥ崟锛岃妫�鏌ワ紒"); - } - // 鐩存帴鍒犻櫎锛屼笉缁欑姸鎬� - commonsMapper.deleteByTaleAndOid(listR.getData().get(0).getTableName(), VciBaseUtil.toInSql(baseModelDTO.getOid())); - // commonsMapper.updateByTaleAndOid(listR.getData().get(0).getTableName(), VciBaseUtil.toInSql(baseModelDTO.getOid()),CodeDefaultLC.TASK_BACK.getValue()); - } else { - for (BaseModel baseModel : baseModels) { - baseModel.setLcStatus(baseModelDTO.getLcStatus()); - } - R r = updateBatchByBaseModel(baseModelDTO.getBtmname(), baseModels); - if(!r.isSuccess()){ - throw new VciBaseException("鏇存柊鏁版嵁鍑洪敊锛岄噸璇曪紒"+r.getMsg()); + try { + VciBaseUtil.alertNotNull(baseModelDTO, "鏁版嵁淇℃伅", baseModelDTO.getOid(), "涓婚敭", baseModelDTO.getBtmname(), "涓氬姟绫诲瀷", baseModelDTO.getLcStatus(), "鐩爣鐘舵��"); + List<String> oids = VciBaseUtil.str2List(baseModelDTO.getOid()); + List<BaseModel> baseModels = new ArrayList<>(); + baseModels = selectByTypeAndOid(baseModelDTO.getBtmname(), baseModelDTO.getOid()); + if (baseModels.size() == 0) { + throw new VciBaseException("鏈煡璇㈠埌鐩稿叧鏁版嵁銆�"); } + //杩橀渶瑕佷慨鏀筧llCode鐨勭敓鍛藉懆鏈� + QueryWrapper<CodeAllCode> allCodeWrapper = new QueryWrapper<>(); + allCodeWrapper.eq("createcodebtm", baseModelDTO.getBtmname()); + allCodeWrapper.in("createcodeoid", oids); + List<CodeAllCode> codeCbos = codeAllCodeService.selectByWrapper(allCodeWrapper);// 鍥炴敹闇�瑕佷笟鍔℃暟鎹垹闄� + if (CodeDefaultLC.TASK_BACK.getValue().equals(baseModelDTO.getLcStatus())) { + R<List<BtmTypeVO>> listR = btmTypeClient.selectByIdCollection(Collections.singletonList(baseModelDTO.getBtmname())); + if (!listR.isSuccess() || listR.getData().size() == 0) { + throw new VciBaseException("浼犲叆涓氬姟绫诲瀷鏈煡璇㈠埌鐩稿簲琛ㄥ崟锛岃妫�鏌ワ紒"); + } + // 鐩存帴鍒犻櫎锛屼笉缁欑姸鎬� + commonsMapper.deleteByTaleAndOid(listR.getData().get(0).getTableName(), VciBaseUtil.toInSql(baseModelDTO.getOid())); + // commonsMapper.updateByTaleAndOid(listR.getData().get(0).getTableName(), VciBaseUtil.toInSql(baseModelDTO.getOid()),CodeDefaultLC.TASK_BACK.getValue()); + } else { + for (BaseModel baseModel : baseModels) { + baseModel.setLcStatus(baseModelDTO.getLcStatus()); + } + R r = updateBatchByBaseModel(baseModelDTO.getBtmname(), baseModels); + if(!r.isSuccess()){ + throw new VciBaseException("鏇存柊鏁版嵁鍑洪敊锛岄噸璇曪紒"+r.getMsg()); + } + } + for (CodeAllCode codeCbo : codeCbos) { + codeCbo.setLcStatus(baseModelDTO.getLcStatus()); + } + codeAllCodeService.updateBatchById(codeCbos); + + //璁板綍鏃ュ織淇℃伅 + saveLogUtil.operateLog( + CodeDefaultLC.getTextByValue(baseModelDTO.getLcStatus()), + false, + JSON.toJSONString(baseModels) + ); + }catch (Exception e){ + // 鎻掑叆鏇存敼鏃ュ織璁板綍 + saveLogUtil.operateLog(CodeDefaultLC.getTextByValue(baseModelDTO.getLcStatus()),true,e.getMessage()); + throw e; } - for (CodeAllCode codeCbo : codeCbos) { - codeCbo.setLcStatus(baseModelDTO.getLcStatus()); - } - codeAllCodeService.updateBatchById(codeCbos); } /** @@ -721,6 +792,7 @@ sql[0] += " and oid != '" + orderDTO.getCopyFromVersion() + "'"; } sql[0] += " and lastR = '1' and lastV = '1' "; + // 鑾峰彇涓嶅弬涓庢牎楠岀殑鍒嗙被oid String isParticipateCheckOids = classifyService.selectLeafByParentClassifyOid(classifyFullInfo.getTopClassifyVO().getOid(), classifyFullInfo.getCurrentClassifyVO().getOid()); if(Func.isNotEmpty(isParticipateCheckOids)){ sql[0] += " and codeclsfid not in(" + isParticipateCheckOids + ")"; @@ -822,6 +894,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 + */ + public 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{//鍙樻洿涓虹郴鍒�.鍒欐寜鐓ч�昏緫鍘诲鐞� + orderDTO.setSecDTOList(newSecDTOList); + return createDataBZ(orderDTO,ruleVO,authUser); + } + } + 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 + */ + @Override + public String addSaveBZCodeNotauthUser(CodeBZApplyDTO codeBZApplyDTO, boolean authUser) throws Exception { + return addSaveBZCode(codeBZApplyDTO,authUser); + } + /** * 灏佽鍏抽敭灞炴�х殑鏌ヨ璇彞 * @@ -873,13 +1194,13 @@ //涓嶅拷鐣ュぇ灏忓啓銆佷笉鍘荤┖銆佷笉蹇界暐鍏ㄥ崐瑙� temp = "%s"; } - queryKey = String.format(temp, "nvl("+ "t." + attrId +",'/')"); - queryValue = String.format(temp, "'" + (trim ? value.trim() : value) + "'"); + queryKey = String.format(temp, "nvl("+ "t." + attrId +",'/')"); + queryValue = String.format(temp, "'" + (trim ? SpecialCharacterConverter.escapeSpecialCharacters(value.trim()):SpecialCharacterConverter.escapeSpecialCharacters(value)) + "'"); conditionMap.put(queryKey, queryValue); } else { if(StringUtils.isNotBlank(value)) { //涓虹┖鐨勬椂鍊欎笉浠h〃涓嶆牎楠岋紝鍙槸涓嶅幓闄ょ浉鍏崇殑淇℃伅 - conditionMap.put("nvl("+ "t." + attrId+",'/')", "'" + value + "'"); + conditionMap.put("nvl("+ "t." + attrId+",'/')", "'" + SpecialCharacterConverter.escapeSpecialCharacters(value) + "'"); }else{ conditionMap.put("t." + attrId, QueryOptionConstant.ISNULL); } @@ -2153,7 +2474,6 @@ return getSqlByValue(key, value, attrVOMap,btmType); } }*/ - } /** @@ -2410,6 +2730,7 @@ cbo.setLastModifyTime(new Date()); cbo.setLastModifier(String.valueOf(AuthUtil.getUser().getAccount())); R r = updateBatchByBaseModel(classifyFullInfo.getTopClassifyVO().getBtmTypeId(), Collections.singletonList(cbo)); + if(!r.isSuccess()){ throw new ServiceException(r.getMsg()); } @@ -2784,11 +3105,18 @@ oldCbo.setLastModifier(String.valueOf(AuthUtil.getUser().getAccount())); oldCbo.setLastModifyTime(new Date()); try { + // 淇敼鐗堟鍙� updateBatchByBaseModel(oldCbo.getBtmname(), Collections.singletonList(oldCbo)); + // 鎻掑叆鏂扮殑鏁版嵁 insertBatchByType(cbo.getBtmname(), Collections.singletonList(cbo)); - } catch (Exception vciError) { - throw new VciBaseException("鏁版嵁鏇存敼淇濆瓨鍑洪敊浜�", new String[0], vciError); - } + // 璁板綍鏁版嵁鏇存敼鏃ュ織 + saveLogUtil.operateLog("鏁版嵁鏇存敼",false, StringUtil.format("{}\n淇敼涓�:\n{}",JSON.toJSONString(Collections.singletonList(oldCbo)),JSON.toJSONString(Collections.singletonList(cbo)))); + } catch (Exception vciError) { + // 璁板綍鏁版嵁鏇存敼鎶ラ敊鏃剁殑鏃ュ織 + saveLogUtil.operateLog("鏁版嵁鏇存敼",true,vciError.getMessage()); + throw new VciBaseException("鏁版嵁鏇存敼淇濆瓨鍑洪敊浜�", new String[0], vciError); + } + batchSaveSelectChar(templateVO, Collections.singletonList(cbo)); } @@ -4225,7 +4553,8 @@ toBo.setVersionSeq(Integer.valueOf(nextRevision.get("VERSIONSEQ").toString())); toBo.setVersionValue(nextRevision.get("VERSIONVAL").toString()); toBo.setLctid(fromBo.getLctid()); - toBo.setLcStatus("Editing"); + //toBo.setLcStatus("Editing"); + toBo.setLcStatus(CodeDefaultLC.RELEASED.getValue()); toBo.setId(fromBo.getId()); toBo.setName(fromBo.getName()); toBo.setDescription(fromBo.getDescription()); -- Gitblit v1.9.3