From f879ddd80a2bd267a0a575ef03f76d3ec2ae1504 Mon Sep 17 00:00:00 2001 From: ludc Date: 星期四, 04 一月 2024 11:42:22 +0800 Subject: [PATCH] bug列表269:集成日志查询bug修改。 270:关键属性校验,去掉多线程之后请求响应非常慢(之前报错线程阻塞的bug改成单线程导致非常慢,现在又改回ForJoinPool方式限制线程生成数量实现多线程并行,提升执行效率)。 --- Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java | 611 ++++++++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 538 insertions(+), 73 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 3d56800..9ea8b4d 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; @@ -54,26 +60,26 @@ import com.vci.ubcs.system.feign.ISysClient; import com.vci.ubcs.system.user.entity.User; import com.vci.ubcs.system.user.feign.IUserClient; +import io.swagger.models.auth.In; import net.logstash.logback.encoder.org.apache.commons.lang3.StringUtils; import oracle.sql.TIMESTAMP; 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.BladeUser; 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; import org.springframework.stereotype.Service; -import org.springframework.transaction.PlatformTransactionManager; -import org.springframework.transaction.TransactionStatus; import org.springframework.transaction.annotation.Transactional; -import org.springframework.transaction.support.DefaultTransactionDefinition; -import org.springframework.transaction.support.TransactionTemplate; import org.springframework.util.CollectionUtils; import javax.annotation.Resource; @@ -82,6 +88,8 @@ import java.beans.PropertyDescriptor; import java.lang.reflect.Method; import java.math.BigDecimal; +import java.text.ParseException; +import java.text.SimpleDateFormat; import java.time.LocalDateTime; import java.time.ZoneId; import java.time.ZonedDateTime; @@ -119,6 +127,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; /** * 妯℃澘鐨勬湇鍔� @@ -304,8 +355,15 @@ */ @Autowired private IMDMIFlowAttrClient imdmiFlowAttrClient; -// @Autowired -// private CodeOsbtmtypeMapper codeOsbtmtypeMapper;---- + + // @Autowired + // private CodeOsbtmtypeMapper codeOsbtmtypeMapper; + + /** + * 鏃ュ織淇濆瓨宸ュ叿绫� + */ + @Autowired + private SaveLogUtil saveLogUtil; /** @@ -368,39 +426,58 @@ @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()); + } + } + // 鍒氬ソ椤哄簭鏄竴鑷寸殑锛屾墍浠ョ洿鎺ユ寜鐓odeallcode鐨勯『搴忔潵鎷夸笟鍔℃暟鎹� + int i = -1; + for (CodeAllCode codeCbo : codeCbos) { + codeCbo.setLcStatus(baseModelDTO.getLcStatus()); + // 濡傛灉鏄洖鏀讹紝灏遍渶瑕佸皢涓氬姟鏁版嵁瀛樺偍鍒扮爜鍊艰〃涓� + if(baseModelDTO.getLcStatus().equals(FrameWorkDefaultValueConstant.FRAMEWORK_RELEASE_TAKEBACK)){ + codeCbo.setBusinessData(JSON.toJSONString(baseModels.get(++i))); + } + } + codeAllCodeService.updateBatchById(codeCbos); + + //璁板綍鏃ュ織淇℃伅 + saveLogUtil.operateLog( + CodeDefaultLC.getTextByValue(baseModelDTO.getLcStatus()), + false, + JSON.toJSONString(baseModels) + ); + }catch (Exception e){ + // 鎻掑叆鏇存敼鏃ュ織璁板綍 + saveLogUtil.operateLog(CodeDefaultLC.getTextByValue(baseModelDTO.getLcStatus()),true,e.toString()); + throw e; } - for (CodeAllCode codeCbo : codeCbos) { - codeCbo.setLcStatus(baseModelDTO.getLcStatus()); - } - codeAllCodeService.updateBatchById(codeCbos); } /** @@ -437,6 +514,7 @@ CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(orderDTO.getCodeClassifyOid()); CodeClassifyTemplateVO templateVO = templateService.getObjectHasAttrByOid(orderDTO.getTemplateOid()); CodeRuleVO ruleVO = ruleService.getObjectHasSecByOid(orderDTO.getCodeRuleOid()); + final BladeUser user = AuthUtil.getUser(); //1.鍒ゆ柇瑙勫垯涓櫎浜嗘祦姘寸爜娈碉紝鏄惁鏈夊叾浠栫爜娈� checkSecValueOnOrder(ruleVO, orderDTO); //2.鍒ゆ柇蹇呰緭椤� @@ -467,13 +545,13 @@ //cbo.setCreator(String.valueOf(AuthUtil.getUser().getUserId()));銆� if(authUser) { // 瑕佹眰鏄剧ず璐﹀彿锛屾墍浠ュ仛浜嗘洿鏀� - cbo.setCreator(String.valueOf(AuthUtil.getUser().getAccount())); - cbo.setLastModifier(String.valueOf(AuthUtil.getUser().getAccount())); + cbo.setCreator(String.valueOf(user.getAccount())); + cbo.setLastModifier(String.valueOf(user.getAccount())); }else{ cbo.setCreator(orderDTO.getCreator()); cbo.setLastModifier(orderDTO.getLastModifier()); } - cbo.setTenantId(AuthUtil.getTenantId()); + cbo.setTenantId(user.getTenantId()); if(StringUtils.isNotBlank(orderDTO.getLcStatus())||StringUtils.isNotBlank(orderDTO.getData().get("lcStatus"))){ cbo.setLcStatus(StringUtils.isNotBlank(orderDTO.getLcStatus())?orderDTO.getLcStatus():orderDTO.getData().get("lcStatus")); } @@ -486,7 +564,7 @@ cbo.setDescription(orderDTO.getDescription()); cboList.add(cbo); - List<String> codeList = productCodeService.productCodeAndSaveData(classifyFullInfo, templateVO, ruleVO, orderDTO.getSecDTOList(), cboList); + List<String> codeList = productCodeService.productCodeAndSaveData(classifyFullInfo, templateVO, ruleVO, orderDTO.getSecDTOList(), cboList,user); batchSaveSelectChar(templateVO, cboList); return codeList.size() > 0 ? codeList.get(0) : ""; @@ -636,7 +714,6 @@ } } - /** * 璁剧疆鏂扮殑鍊煎埌鐢宠瀵硅薄涓� * @@ -701,14 +778,16 @@ //娌℃湁闄愬埗鍒嗙被锛屼絾鏄竴涓ā鏉垮彧鍙兘鍦ㄤ竴涓笟鍔$被鍨嬮噷闈紝鎵�浠ョ洿鎺ユ煡璇㈣繖涓笟鍔$被鍨嬪嵆鍙� if (!CollectionUtils.isEmpty(conditionMap)) { - conditionMap.put("CODETEMPLATEOID","'" + orderDTO.getTemplateOid() + "'"); + // TODO: 鍚屼竴涓簱鍒ら噸涓嶉渶瑕佸尯鍒嗗垎绫籵id + // conditionMap.put("CODETEMPLATEOID","'" + orderDTO.getTemplateOid() + "'"); // final String[] sql = {"select count(*) from " + VciBaseUtil.getTableName(classifyFullInfo.getTopClassifyVO().getBtmtypeid()) + " t where 1 = 1 "}; R<List<BtmTypeVO>> listR = btmTypeClient.selectByIdCollection(Collections.singletonList(classifyFullInfo.getTopClassifyVO().getBtmTypeId())); // String referTable = VciBaseUtil.getTableName(referVO.getReferType()); if (!listR.isSuccess() || listR.getData().size() == 0) { throw new VciBaseException("浼犲叆涓氬姟绫诲瀷鏈煡璇㈠埌鐩稿簲琛ㄥ崟锛岃妫�鏌ワ紒"); } - final String[] sql = {"select count(*) from " + listR.getData().get(0).getTableName() + " t where 1 = 1 "}; + //final String[] sql = {"select count(*) from " + listR.getData().get(0).getTableName() + " t where 1 = 1 "}; + final String[] sql = {"select id from " + listR.getData().get(0).getTableName() + " t where 1 = 1 "}; conditionMap.forEach((key, value) -> { if(StringUtils.isBlank(value)||value.equals(QueryOptionConstant.ISNULL)) { sql[0] += " and " + key + " is null"; @@ -723,11 +802,17 @@ 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 + ")"; + } // if (boService.queryCountBySql(sql[0], new HashMap<>()) > 0) { - if (Integer.parseInt(commonsMapper.selectById(sql[0]).get(0)) > 0) { + List<String> repeatData = commonsMapper.selectList(sql[0]); + if (!repeatData.isEmpty()) { String ruleInfoMsg = keyRuleVO == null ? "" : "鏌ヨ瑙勫垯锛氬幓闄ょ┖鏍�--{0},蹇界暐澶у皬鍐�--{1},蹇界暐鍏ㄥ崐瑙�--{2},蹇界暐鍏ㄩ儴绌烘牸--{3}"; String[] objs = new String[]{trim ? "鏄�" : "鍚�", ignoreCase ? "鏄�" : "鍚�", ignoreWidth ? "鏄�" : "鍚�", trimAll ? "鏄�" : "鍚�"}; - throw new VciBaseException("鏍规嵁鎮ㄥ~鍐欑殑鍏抽敭灞炴�х殑鍐呭锛岀粨鍚堝叧閿睘鎬ф煡璇㈣鍒欙紝鍙戠幇杩欎釜鏁版嵁宸茬粡鍦ㄧ郴缁熶腑瀛樺湪浜嗐�傝淇!銆�" + ruleInfoMsg, objs); + throw new VciBaseException("鏍规嵁鎮ㄥ~鍐欑殑鍏抽敭灞炴�х殑鍐呭锛岀粨鍚堝叧閿睘鎬ф煡璇㈣鍒欙紝鍙戠幇璇ユ暟鎹凡缁忎笌绯荤粺涓紪鍙蜂负"+repeatData.stream().collect(Collectors.joining(","))+"鐨勬暟鎹噸澶嶃�傝淇!銆�" + ruleInfoMsg, objs); } } } @@ -819,6 +904,325 @@ 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); + } + + /** + * 鑾峰彇缁熻鍒嗘瀽鏁版嵁 + * @param btmNames 涓氬姟绫诲瀷 + * @return 鏁版嵁闆� + */ + @Override + public R getStatisticAnalysis(String btmNames) { + //鏌ヨ涓氬姟绫诲瀷瀵瑰簲鐨勬暟鎹簱琛� + R<List<BtmTypeVO>> listR = btmTypeClient.selectByIdCollection(Arrays.asList(btmNames.split(","))); + if (!listR.isSuccess() || listR.getData().size() == 0) { + throw new ServiceException("浼犲叆涓氬姟绫诲瀷鏈煡璇㈠埌鐩稿簲琛ㄥ崟锛岃妫�鏌ワ紒"); + } + List tableData = new ArrayList(); + for (BtmTypeVO datum : listR.getData()) { + String sql = "select count(*) countNum, to_char(CREATETIME, 'mm') countDate\n" + + "from "+ datum.getTableName() +"\n" + + "where CREATETIME >= to_date(EXTRACT(YEAR FROM SYSDATE) || '-01-01 00:00:00', 'yyyy-mm-dd hh24:mi:ss') AND LASTV = '1'\n" + + "group by to_char(CREATETIME, 'mm')\n" + + "order by to_char(CREATETIME, 'mm')"; + //鏌ヨ鍑洪渶瑕佸鐞嗙殑鏁版嵁 + List<Map> maps = commonsMapper.selectBySql(sql); + + //褰撳勾姣忔湀鏈堜唤涔嬪墠涔嬪拰 + List<Integer> monthCount = new ArrayList<>(12); + //褰撳勾姣忔湀鐨勬湀浠芥暟鎹� + List<Integer> month = new ArrayList<>(); + //鑾峰彇褰撳墠鏈堢殑鏁板瓧 + Calendar instance = Calendar.getInstance(); + int nowmonth = instance.get(Calendar.MONTH) + 1; + if(maps.size() == 0){ + nowmonth = 0; + } + //浠�1鍒�12鏈堣繘琛屽鐞� + for (Integer i = 1; i <= 12; i++) { + //褰撳墠鏈堝悗鎵�鏈夋暟鎹缃负0 + if(i>nowmonth){ + monthCount.add(0); + month.add(0); + continue; + } + //褰撳墠鏈堜唤涔嬪墠涔嬪拰 + Integer count = 0; + //褰撳墠鏈堜唤鏁版嵁 + Integer sameMonth = 0; + //瀵规暟鎹簱鏌ョ殑鏁版嵁杩涜澶勭悊锛屽褰撳墠鏈堜唤杩涜绱姞 + for (Map map : maps) { + Integer mounDate = Integer.parseInt(String.valueOf(map.get("COUNTDATE"))); + if(mounDate <= i){ + count += Integer.parseInt(String.valueOf(map.get("COUNTNUM"))); + } + if (mounDate == i) { + sameMonth = Integer.parseInt(String.valueOf(map.get("COUNTNUM"))); + } + } + monthCount.add(count); + month.add(sameMonth); + } + //瀵规暟鎹繘琛屾暣鍚� + HashMap<String,Object> menuData = new HashMap<>(); + menuData.put("menuName",datum.getName()); + menuData.put("codeType",null); + ArrayList monthData = new ArrayList(); + monthData.add(monthCount); + monthData.add(month); + menuData.put("menuData",monthData); + tableData.add(menuData); + } + return R.data(tableData); + } + /** * 灏佽鍏抽敭灞炴�х殑鏌ヨ璇彞 * @@ -870,13 +1274,13 @@ //涓嶅拷鐣ュぇ灏忓啓銆佷笉鍘荤┖銆佷笉蹇界暐鍏ㄥ崐瑙� temp = "%s"; } - queryKey = String.format(temp, "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("t." + attrId, "'" + value + "'"); + conditionMap.put("nvl("+ "t." + attrId+",'/')", "'" + SpecialCharacterConverter.escapeSpecialCharacters(value) + "'"); }else{ conditionMap.put("t." + attrId, QueryOptionConstant.ISNULL); } @@ -976,10 +1380,10 @@ // cbo.setLcStatus("Editing"); //// cbo.setLcStatus(lifeCycleVO.getStartStatus()); // } else { - cbo.setLcStatus(CodeDefaultLC.EDITING.getValue()); + cbo.setLcStatus(CodeDefaultLC.RELEASED.getValue()); // } } else { - cbo.setLcStatus(CodeDefaultLC.EDITING.getValue()); + cbo.setLcStatus(CodeDefaultLC.RELEASED.getValue()); } } @@ -1793,7 +2197,6 @@ } } - /** * 鏍规嵁妯℃澘灞炴�х敓鎴愮浉搴旂殑sql淇℃伅 * @@ -1959,6 +2362,8 @@ String sqlHasPage = pageHelper.getLimit() > 0 ? ("select * from (select A.*,rownum RN from (" + sql + whereSubfixForPage) : sql; String sqlCount = "select count(1) from " + tableName + SPACE + "t" + SPACE + joinTableList.values().stream().collect(Collectors.joining(SPACE)) + (StringUtils.isBlank(whereSql) ? "" : " where ") + whereSql; + String sqlId = "select t.ID from " + tableName + SPACE + "t" + SPACE + joinTableList.values().stream().collect(Collectors.joining(SPACE)) + + (StringUtils.isBlank(whereSql) ? "" : " where ") + whereSql; CodeTemplateAttrSqlBO sqlBO = new CodeTemplateAttrSqlBO(); sqlBO.setTableName(tableName); sqlBO.setJoinTable(joinTableList); @@ -1967,9 +2372,9 @@ sqlBO.setSqlHasPage(sqlHasPage); sqlBO.setSqlCount(sqlCount); sqlBO.setSqlUnPage(sql); + sqlBO.setSqlId(sqlId); return sqlBO; } - /** * 缁勫悎鏌ヨ鏉′欢鐨剆ql @@ -2110,7 +2515,15 @@ } else { return (field.contains(".") ? "" : "t.") + field + SPACE + "= " + getStringValueInWhere(field, value, attrVOMap) + "" + SPACE; } - } else { + } else if(key.endsWith("_in")){ + String field = UBCSSqlKeyword.getColumn(key, "_in"); + if (referFieldMap.containsKey(field)) { + return VciBaseUtil.toInSql(referFieldMap.get(field),value); //referFieldMap.get(field) + SPACE + "= '" + value + "'" + SPACE; + } else { + return (field.contains(".") ? "" : "t.") + field + SPACE + "= " + getStringValueInWhere(field, value, attrVOMap) + "" + SPACE; + } + + }else { // if (referFieldMap.containsKey(key)) { // //璇存槑鏄弬鐓х殑锛屾垜浠弬鐓х殑鏌ヨ閮借涓烘槸瀛楃涓诧紝濡傛灉鏄椂闂存牸寮忕殑鏌ヨ鑲畾鏈夐棶棰橈紝 // String selectKey = referFieldMap.get(key); @@ -2149,7 +2562,6 @@ return getSqlByValue(key, value, attrVOMap,btmType); } }*/ - } /** @@ -2184,12 +2596,24 @@ } DateConverter dateConverter = new DateConverter(); if (VciFieldTypeEnum.VTDateTime.equals(fieldTypeEnum)) { - //瀹為檯涓婏紝鏁版嵁搴撻兘鏄痶imestamp鐨勭被鍨�. - dateConverter.setAsText(value); - return "to_date('" + dateConverter.getAsText(VciDateUtil.DateTimeFormat) + "','" + DATETIME_FORMAT + "')"; + //瀹為檯涓婏紝鏁版嵁搴撻兘鏄痶imestamp鐨勭被鍨�. TODO:铏界劧娌¤兘瑙e喅鏌ヨ鏃ユ湡鐨勯棶棰橈紝浣嗘槸鑳芥殏鏃惰В鍐虫姤閿欓棶棰� + if(value.contains("*")){ + value = value.replace("*","%"); + return "'" + value + "'"; + }else{ + value = value.replace("*",""); + dateConverter.setAsText(value); + return "to_date('" + dateConverter.getAsText(VciDateUtil.DateTimeFormat) + "','" + DATETIME_FORMAT + "')"; + } } else if (VciFieldTypeEnum.VTDate.equals(fieldTypeEnum)) { - dateConverter.setAsText(value); - return "to_date('" + dateConverter.getAsText(VciDateUtil.DateFormat) + "','" + DATE_FORMAT + "')"; + if(value.contains("*")){ + value = value.replace("*","%"); + return "'" + value + "'"; + }else { + value = value.replace("*",""); + dateConverter.setAsText(value); + return "to_date('" + dateConverter.getAsText(VciDateUtil.DateFormat) + "','" + DATE_FORMAT + "')"; + } } else if (VciFieldTypeEnum.VTDouble.equals(fieldTypeEnum) || VciFieldTypeEnum.VTLong.equals(fieldTypeEnum) || VciFieldTypeEnum.VTInteger.equals(fieldTypeEnum)) { @@ -2406,6 +2830,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()); } @@ -2555,7 +2980,17 @@ } conditionMap.put("t.lastr", "1"); conditionMap.put("t.lastv", "1"); - return queryGrid(btmTypeId, templateVO, conditionMap, pageHelper); + DataGrid<Map<String, String>> mapDataGrid = queryGrid(btmTypeId, templateVO, conditionMap, pageHelper); + //澶勭悊杩斿洖鏁版嵁涓庢ā鏉挎暟鎹厤缃殑瀛楁涓嶄竴鏍烽棶棰� + templateVO.getAttributes().stream().forEach(e->{ + for (Map<String, String> datum : mapDataGrid.getData()) { + if(datum.containsKey(e.getId().toLowerCase()) && !datum.containsKey(e.getId())){ + datum.put(e.getId(),datum.get(e.getId().toLowerCase())); + datum.remove(e.getId().toLowerCase()); + } + } + }); + return mapDataGrid; // List<String> selectFieldList = templateVO.getAttributes().stream().map(CodeClassifyTemplateAttrVO::getId).collect(Collectors.toList()); // //鍙傜収璁╁钩鍙扮洿鎺ユ煡璇㈠氨琛� // List<String> finalSelectFieldList = selectFieldList; @@ -2780,11 +3215,27 @@ 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); - } + //澶勭悊鐮佸�艰〃锛屽鐮佸�艰〃杩涜澶勭悊鏇挎崲鍒涘缓鏁版嵁鐨刼id + QueryWrapper<CodeAllCode> wrapper = new QueryWrapper<>(); + wrapper.eq("CREATECODEOID",orderDTO.getCopyFromVersion()); + CodeAllCode codeAllCode = codeAllCodeService.getOne(wrapper); + codeAllCode.setCreateCodeOid(cbo.getOid()); + codeAllCode.setLastModifyTime(new Date()); + codeAllCode.setTs(new Date()); + codeAllCode.setLastModifier(AuthUtil.getUser().getUserName()); + codeAllCodeService.updateById(codeAllCode); + // 璁板綍鏁版嵁鏇存敼鏃ュ織 + saveLogUtil.operateLog("鏁版嵁鏇存敼",false, StringUtil.format("{}\n淇敼涓�:\n{}",JSON.toJSONString(Collections.singletonList(oldCbo)),JSON.toJSONString(Collections.singletonList(cbo)))); + } catch (Exception vciError) { + // 璁板綍鏁版嵁鏇存敼鎶ラ敊鏃剁殑鏃ュ織 + saveLogUtil.operateLog("鏁版嵁鏇存敼",true,vciError.toString()); + throw new VciBaseException("鏁版嵁鏇存敼淇濆瓨鍑洪敊浜�", new String[0], vciError); + } + batchSaveSelectChar(templateVO, Collections.singletonList(cbo)); } @@ -2982,6 +3433,16 @@ dataList.add(cbo); wrapperData(dataList, templateVO, sqlBO.getSelectFieldList(), true); R<List<Map<String, String>>> result = R.data(Collections.singletonList(cbo)); + //澶勭悊杩斿洖鏁版嵁涓庢ā鏉挎暟鎹厤缃殑瀛楁涓嶄竴鏍烽棶棰� + templateVO.getAttributes().stream().forEach(e->{ + for (Map<String, String> datum : result.getData()) { + if(datum.containsKey(e.getId().toLowerCase()) && !datum.containsKey(e.getId())){ + datum.put(e.getId(),datum.get(e.getId().toLowerCase())); + datum.remove(e.getId().toLowerCase()); + } + } + }); + //鎴戜滑瑕佺湅鏄惁涓嶆槸鍗囩増鐨勶紝鍗囩増鐨勮瘽锛岄渶瑕佸姣斾笉鐩哥瓑鐨勫睘鎬� /* String copy = cbo.get("copyfromversion"); // if (StringUtils.isBlank(copy)) { @@ -3595,12 +4056,15 @@ for (int i = 0; i < threadSafeMaps.size(); i += MAX_IMPORT_NUM) { final int startIndex = i; final int endIndex = Math.min(i + MAX_IMPORT_NUM, threadSafeMaps.size()); - - executor.execute(() -> { - List<Map<String, String>> subList = threadSafeMaps.subList(startIndex, endIndex); - // 璋冪敤鎻掑叆鏁版嵁搴撶殑鏂规硶 - commonsMapper.insertByBaseModel(tableName, threadSafeMaps.get(0), subList); - }); + try { + executor.execute(() -> { + List<Map<String, String>> subList = threadSafeMaps.subList(startIndex, endIndex); + // 璋冪敤鎻掑叆鏁版嵁搴撶殑鏂规硶 + commonsMapper.insertByBaseModel(tableName, threadSafeMaps.get(0), subList); + }); + }catch (Throwable e){ + throw new ServiceException(e.getMessage()); + } } // 鍏抽棴绾跨▼姹� @@ -3753,7 +4217,7 @@ bo.setFirstV("1"); bo.setLastV("1"); bo.setRevisionRule(listR.getData().get(0).getRevisionRuleId()); - bo.setVersionRule("".equals(listR.getData().get(0).getVersionRule())?"0":listR.getData().get(0).getVersionRule()); + bo.setVersionRule("".equals(listR.getData().get(0).getVersionRule())?"1":listR.getData().get(0).getVersionRule()); if (StringUtils.isNotBlank(listR.getData().get(0).getRevisionRuleId())) { R<List<RevisionRuleVO>> revisionRuleVO = revisionRuleClient .selectByIdCollection(Collections.singletonList(listR.getData().get(0).getRevisionRuleId().toLowerCase())); @@ -3774,7 +4238,7 @@ bo.setId(""); bo.setName(""); bo.setDescription(""); - bo.setOwner("1"); + bo.setOwner(AuthUtil.getUser().getUserId().toString()); // bo.setCheckinby(userName); bo.setCopyFromVersion(""); // this.initTypeAttributeValue(bo,btmTypeVO); @@ -4218,7 +4682,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