From ae0dc4f46b075b5eace5596a66f6b81e357ae05e Mon Sep 17 00:00:00 2001 From: ludc Date: 星期二, 03 十二月 2024 17:24:06 +0800 Subject: [PATCH] 码值codeallcode查重改成一句分批次查询(500)一次执行查询改为and拼接的依据sql查询。 --- Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java | 6959 ++++++++++++++++++++++++++++++++--------------------------- 1 files changed, 3,757 insertions(+), 3,202 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 91912c7..6850502 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,16 +1,22 @@ package com.vci.ubcs.code.service.impl; +import cn.hutool.db.sql.Query; +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; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.vci.ubcs.code.applyjtcodeservice.entity.DockingPreMetaAttr; import com.vci.ubcs.code.applyjtcodeservice.vo.BaseModelVO; 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.*; @@ -38,8 +44,7 @@ import com.vci.ubcs.starter.revision.model.TreeQueryObject; 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.UBCSSqlKeyword; +import com.vci.ubcs.starter.util.*; import com.vci.ubcs.starter.web.constant.QueryOptionConstant; import com.vci.ubcs.starter.web.constant.RegExpConstant; import com.vci.ubcs.starter.web.enumpck.BooleanEnum; @@ -56,15 +61,18 @@ import com.vci.ubcs.system.user.feign.IUserClient; import net.logstash.logback.encoder.org.apache.commons.lang3.StringUtils; import oracle.sql.TIMESTAMP; +import org.hibernate.validator.constraints.NotEmpty; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springblade.core.cache.utils.CacheUtil; 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; @@ -116,288 +124,378 @@ @Value("${batchadd.is_thread_import:false}") private boolean IS_THREAD_IMPORT; - /** - * 妯℃澘鐨勬湇鍔� - */ - @Resource - private ICodeClstemplateService templateService; + /*** + * 鎿嶄綔绫诲瀷 + */ + @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; - /** - * 鐢熸垚缂栫爜鐨勬湇鍔� - */ - @Resource - private MdmProductCodeService productCodeService; + /*** + * 绯诲垪娴佹按 + */ + @Value("${bzApply.seriesFlow:seriesFlow}") + private String seriesFlow; - /** - * 鍙緭鍙�夌殑鏈嶅姟 - */ - @Resource - IDictBizClient iDictBizClient; - /** - * 绯荤粺鐨勬湇鍔� - */ - @Resource - ISysClient iSysClient; - /** - * 瀵嗙骇鏈嶅姟 - */ - @Resource - private IWebSecretClient secretService; - /** - * 鐢ㄦ埛鏈嶅姟 - */ - @Resource - IUserClient iUserClient; - /** - * 瀛楀吀鐨勬湇鍔� - */ - @Resource - IEnumClient enumClient; + /*** + * 鏄惁鍙樻洿绯诲垪 + */ + @Value("${bzApply.isEditSeries:isEditSeries}") + private String isEditSeries; + /*** + * 鎺у埗鏄惁鍐欏叆鍊肩殑鐮佹鍚嶇О + */ + @Value("${bzApply.secName:绯诲垪鍙穧") + private String secName; + + /*** + * 鎺у埗鏄惁鍐欏叆鍊肩殑鐮佹鍚嶇О + */ + @Value("${bzApply.yearSecName:骞翠唬鍙穧") + private String yearSecName; + + /** + * 妯℃澘鐨勬湇鍔� + */ + @Resource + private ICodeClstemplateService templateService; + + /** + * 鐢熸垚缂栫爜鐨勬湇鍔� + */ + @Resource + private MdmProductCodeService productCodeService; + + /** + * 杩戜箟璇嶈鍒欐煡璇㈡湇鍔� + */ + @Autowired ICodeSynonymService codeSynonymService; + + /** + * 鍙緭鍙�夌殑鏈嶅姟 + */ + @Resource + IDictBizClient iDictBizClient; + /** + * 绯荤粺鐨勬湇鍔� + */ + @Resource + ISysClient iSysClient; + /** + * 瀵嗙骇鏈嶅姟 + */ + @Resource + private IWebSecretClient secretService; + /** + * 鐢ㄦ埛鏈嶅姟 + */ + @Resource + IUserClient iUserClient; + /** + * 瀛楀吀鐨勬湇鍔� + */ + @Resource + IEnumClient enumClient; /** * 鐗堟湰瑙勫垯鏈嶅姟 */ @Resource private IRevisionRuleClient revisionRuleClient; - /** - * 鍏紡鐨勬湇鍔� - */ - @Autowired - private FormulaServiceImpl formulaService; + /** + * 鍏紡鐨勬湇鍔� + */ + @Autowired + private FormulaServiceImpl formulaService; - /** - * 瀵筼md涓彁渚涚殑feign鎺ュ彛杩涜璋冪敤锛屼互鍙婂鐞嗙浉鍏抽�昏緫 - */ - @Autowired - ICodeReferBtmTypeService codeReferBtmTypeService; + /** + * 瀵筼md涓彁渚涚殑feign鎺ュ彛杩涜璋冪敤锛屼互鍙婂鐞嗙浉鍏抽�昏緫 + */ + @Autowired + ICodeReferBtmTypeService codeReferBtmTypeService; - /** - * 鐩镐技椤规煡璇㈣鍒� - */ - @Autowired - private ICodeResembleRuleService resembleRuleService; + /** + * 鐩镐技椤规煡璇㈣鍒� + */ + @Autowired + private ICodeResembleRuleService resembleRuleService; - /** - * 瀵硅薄鐨勬搷浣� - */ - @Autowired - private RevisionModelUtil revisionModelUtil; + /** + * 瀵硅薄鐨勬搷浣� + */ + @Autowired + private RevisionModelUtil revisionModelUtil; - /** - * 闃舵鐨勬湇鍔� - */ - @Autowired - private ICodePhaseAttrService phaseAttrService; - /** - * 涓氬姟绫诲瀷鐨勬湇鍔� - */ - @Autowired - private IBtmTypeClient btmTypeClient; + /** + * 闃舵鐨勬湇鍔� + */ + @Autowired + private ICodePhaseAttrService phaseAttrService; + /** + * 涓氬姟绫诲瀷鐨勬湇鍔� + */ + @Autowired + private IBtmTypeClient btmTypeClient; - /** - * 閫氱敤鏌ヨ - */ - @Resource - private CommonsMapper commonsMapper; + /** + * 閫氱敤鏌ヨ + */ + @Resource + private CommonsMapper commonsMapper; - /** - * 缂栫爜瑙勫垯鐨勬湇鍔� - */ - @Autowired - private ICodeRuleService ruleService; - /** - * 缂栫爜瑙勫垯鐨勬湇鍔� - */ - @Autowired - private ICodeAllCodeService codeAllCodeService; + /** + * 缂栫爜瑙勫垯鐨勬湇鍔� + */ + @Autowired + private ICodeRuleService ruleService; - /** - * 鍒嗙被鐮佸�肩殑鏈嶅姟 - */ - @Autowired - private ICodeClassifyValueService classifyValueService; + /** + * 鐮佸�肩殑鏈嶅姟 + */ + @Autowired + private ICodeAllCodeService codeAllCodeService; - /** - * 鍒嗙被鐨勬湇鍔� - */ - @Resource - private ICodeClassifyService classifyService; + /** + * 鍒嗙被鐮佸�肩殑鏈嶅姟 + */ + @Autowired + private ICodeClassifyValueService classifyValueService; - /** - * 妯℃澘鎸夐挳鏈嶅姟 - */ - @Autowired - private ICodeClassifyTemplateButtonService templateButtonService; + /** + * 鍒嗙被鐨勬湇鍔� + */ + @Resource + private ICodeClassifyService classifyService; - @Autowired - private ICodeClassifyTemplateAttrService codeClassifyTemplateAttrService; + /** + * 妯℃澘鎸夐挳鏈嶅姟 + */ + @Autowired + private ICodeClassifyTemplateButtonService templateButtonService; + + @Autowired + private ICodeClassifyTemplateAttrService codeClassifyTemplateAttrService; // /** // * 鐢ㄦ埛鏌ヨ鐨勬湇鍔�,闇�瑕侀棶涓�涓嬫槸鍚﹂渶瑕侀噸鍐欙紝浣跨敤鏌ヨ姝ゅ钩鍙扮殑鐢ㄦ埛琛� // */ // @Autowired // private SmUserQueryServiceI userQueryService; - /** - * 鍏抽敭灞炴�х殑閰嶇疆 - */ - @Autowired - private ICodeKeyAttrRepeatService keyRuleService; - /** - * 鏃ュ織 - */ - private Logger logger = LoggerFactory.getLogger(getClass()); + /** + * 鍏抽敭灞炴�х殑閰嶇疆 + */ + @Autowired + private ICodeKeyAttrRepeatService keyRuleService; + /** + * 鏃ュ織 + */ + private Logger logger = LoggerFactory.getLogger(getClass()); - /** - * 绌烘牸 - */ - public static final String SPACE = " "; - /** - * 缂撳瓨锝嬶絽锝� - */ - public static final String BTM_INIT_CACHE = "ubcs-code:btm"; - /** - * - */ - public static final String BTM_NAME = "btm:name"; + /** + * 绌烘牸 + */ + public static final String SPACE = " "; - /** - * 瀵嗙骇鐨勫瓧娈� - */ - public static final String SECRET_FILED = "secretgrade"; - /** - * 鐢ㄦ埛鏂板鏁版嵁鐨勬椂鍊欏彲浠ユ煡鐪嬬殑瀵嗙骇 - */ - public static final String MY_DATA_SECRET = "myDataSecret"; - /** - * 鎷疯礉鐨勭増鏈� - */ - public static final String COPY_FROM_VERSION = "copyfromversion"; - /** - * 鍙槸sql - */ - public static final String ONLY = "${vcionly}"; + /** + * 缂撳瓨锝嬶絽锝� + */ + public static final String BTM_INIT_CACHE = "ubcs-code:btm"; + /** + * + */ + public static final String BTM_NAME = "btm:name"; - /** - * 榛樿鐨勬椂闂存牸寮� - */ - private static final String DATETIME_FORMAT = "yyyy-mm-dd hh24:mi:ss"; + /** + * 閰嶇疆鐨勭敤鏉ョ敵璇烽泦鍥㈢爜鐨勭敤鎴� + */ + @Value("${docking.apply.personUserAccount:28201728}") + public String applyCodeUserAccount; - /** - * 鏃ユ湡鏍煎紡 - */ - private static final String DATE_FORMAT = "yyyy-mm-dd"; + /** + * 瀵嗙骇鐨勫瓧娈� + */ + public static final String SECRET_FILED = "secretgrade"; + /** + * 鐢ㄦ埛鏂板鏁版嵁鐨勬椂鍊欏彲浠ユ煡鐪嬬殑瀵嗙骇 + */ + public static final String MY_DATA_SECRET = "myDataSecret"; + /** + * 鎷疯礉鐨勭増鏈� + */ + public static final String COPY_FROM_VERSION = "copyfromversion"; + /** + * 鍙槸sql + */ + public static final String ONLY = "${vcionly}"; - /** - * 蹇呰緭 - */ - public static final String REQUIRED_CHAR = "*"; - /** - * 鏇挎崲瀛楃 - */ - public static final String SPECIAL_CHAR = "VCI"; + /** + * 榛樿鐨勬椂闂存牸寮� + */ + private static final String DATETIME_FORMAT = "yyyy-mm-dd hh24:mi:ss"; + + /** + * 鏃ユ湡鏍煎紡 + */ + private static final String DATE_FORMAT = "yyyy-mm-dd"; + + /** + * 蹇呰緭 + */ + public static final String REQUIRED_CHAR = "*"; + /** + * 鏇挎崲瀛楃 + */ + public static final String SPECIAL_CHAR = "VCI"; /** * 涓绘暟鎹祦绋嬮樁娈垫湇鍔� */ @Autowired private IMDMIFlowAttrClient imdmiFlowAttrClient; -// @Autowired -// private CodeOsbtmtypeMapper codeOsbtmtypeMapper;---- + // @Autowired + // private CodeOsbtmtypeMapper codeOsbtmtypeMapper; - /** - * 浣跨敤鍒嗙被鐨勪富閿幏鍙栧彲浠ヤ娇鐢ㄧ殑妯℃澘瀵硅薄 - * - * @param codeClassifyOid 鍒嗙被鐨勪富閿� - * @return 妯℃澘鐨勬樉绀哄璞� - */ - @Override - public CodeClassifyTemplateVO getUsedTemplateByClassifyOid(String codeClassifyOid) { - return getUsedTemplateByClassifyOid(codeClassifyOid, true); - } + /** + * 鏃ュ織淇濆瓨宸ュ叿绫� + */ + @Autowired + private SaveLogUtil saveLogUtil; - /** - * 浣跨敤鍒嗙被鐨勪富閿幏鍙栧彲浠ヤ娇鐢ㄧ殑妯℃澘瀵硅薄 - * - * @param codeClassifyOid 鍒嗙被鐨勪富閿� - * @param hasAttr 鍖呭惈灞炴�� - * @return 妯℃澘鐨勬樉绀哄璞� - */ - @Override - public CodeClassifyTemplateVO getUsedTemplateByClassifyOid(String codeClassifyOid, boolean hasAttr) { - List<CodeClassifyTemplateVO> templateVOs = templateService.listReleaseTemplateByClassifyOid(codeClassifyOid, hasAttr); - return templateVOs.get(templateVOs.size() - 1); - } + /** + * 浣跨敤鍒嗙被鐨勪富閿幏鍙栧彲浠ヤ娇鐢ㄧ殑妯℃澘瀵硅薄 + * + * @param codeClassifyOid 鍒嗙被鐨勪富閿� + * @return 妯℃澘鐨勬樉绀哄璞� + */ + @Override + public CodeClassifyTemplateVO getUsedTemplateByClassifyOid(String codeClassifyOid) { + return getUsedTemplateByClassifyOid(codeClassifyOid, true); + } - /** - * 鑾峰彇鏋氫妇鐨勪笅鎷夐�夐」 - * - * @param attrVO 妯℃澘灞炴�х殑瀵硅薄 - * @return 涓嬫媺閫夐」 - */ - @Override - public List<KeyValue> listComboboxItems(CodeClassifyTemplateAttrVO attrVO) { - List<KeyValue> comboboxKVs = new ArrayList<>(); - if (StringUtils.isNotBlank(attrVO.getEnumString())) { - comboboxKVs = JSONObject.parseArray(attrVO.getEnumString(), KeyValue.class); - } else { + /** + * 浣跨敤鍒嗙被鐨勪富閿幏鍙栧彲浠ヤ娇鐢ㄧ殑妯℃澘瀵硅薄 + * + * @param codeClassifyOid 鍒嗙被鐨勪富閿� + * @param hasAttr 鍖呭惈灞炴�� + * @return 妯℃澘鐨勬樉绀哄璞� + */ + @Override + public CodeClassifyTemplateVO getUsedTemplateByClassifyOid(String codeClassifyOid, boolean hasAttr) { + List<CodeClassifyTemplateVO> templateVOs = templateService.listReleaseTemplateByClassifyOid(codeClassifyOid, hasAttr); + return templateVOs.get(templateVOs.size() - 1); + } + + /** + * 鑾峰彇鏋氫妇鐨勪笅鎷夐�夐」 + * + * @param attrVO 妯℃澘灞炴�х殑瀵硅薄 + * @return 涓嬫媺閫夐」 + */ + @Override + public List<KeyValue> listComboboxItems(CodeClassifyTemplateAttrVO attrVO) { + List<KeyValue> comboboxKVs = new ArrayList<>(); + if (StringUtils.isNotBlank(attrVO.getEnumString())) { + comboboxKVs = JSONObject.parseArray(attrVO.getEnumString(), KeyValue.class); + } else { // comboboxKVs = enumService.getEnum(attrVO.getEnumid()); // Dict dict = new Dict(); // dict.setParentId(Long.valueOf(attrVO.getEnumid())); - R<List<EnumVO>> list = enumClient.getList(attrVO.getEnumId()); - if (list.isSuccess()) { - for (EnumVO datum : list.getData()) { - KeyValue keyValue = new KeyValue(); - keyValue.setKey(datum.getItemValue()); - keyValue.setValue(datum.getItemName()); - comboboxKVs.add(keyValue); - } - } - } - return comboboxKVs; - } - - /** - * 淇敼鐘舵�� - * - * @param baseModelDTO 鏁版嵁浼犺緭瀵硅薄 - */ - @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()); + R<List<EnumVO>> list = enumClient.getList(attrVO.getEnumId()); + if (list.isSuccess()) { + for (EnumVO datum : list.getData()) { + KeyValue keyValue = new KeyValue(); + keyValue.setKey(datum.getItemValue()); + keyValue.setValue(datum.getItemName()); + comboboxKVs.add(keyValue); + } } } - for (CodeAllCode codeCbo : codeCbos) { - codeCbo.setLcStatus(baseModelDTO.getLcStatus()); - } - codeAllCodeService.updateBatchById(codeCbos); - } + return comboboxKVs; + } + + /** + * 淇敼鐘舵�� + * + * @param baseModelDTO 鏁版嵁浼犺緭瀵硅薄 + */ + @Transactional + @Override + public void changeStatus(BaseModelDTO baseModelDTO) { + try { + VciBaseUtil.alertNotNull(baseModelDTO, "鏁版嵁淇℃伅", baseModelDTO.getOid(), "涓婚敭", baseModelDTO.getBtmname(), "涓氬姟绫诲瀷", baseModelDTO.getLcStatus(), "鐩爣鐘舵��"); + List<String> oids = VciBaseUtil.str2List(baseModelDTO.getOid()); + List<BaseModel> baseModels = selectByTypeAndOid(baseModelDTO.getBtmname(), baseModelDTO.getOid()); + if (baseModels.size() == 0) { + throw new VciBaseException("鏈煡璇㈠埌鐩稿叧鏁版嵁銆�"); + } + //杩橀渶瑕佷慨鏀筧llCode鐨勭敓鍛藉懆鏈� + LambdaQueryWrapper<CodeAllCode> allCodeWrapper = Wrappers.<CodeAllCode>query().lambda(); + allCodeWrapper.eq(CodeAllCode::getCreateCodeBtm, baseModelDTO.getBtmname()); + allCodeWrapper.in(CodeAllCode::getCreateCodeOid, oids); + + List<CodeAllCode> codeCbos = codeAllCodeService.selectByWrapper(allCodeWrapper); + if(codeCbos.size() != baseModels.size()){ + throw new ServiceException("褰撳墠鍥炴敹鎿嶄綔涓煡璇㈠嚭鐨勪笟鍔℃暟鎹腑锛屽瓨鍦ㄥ鏉$爜鍊兼暟鎹搴斿叧绯伙紝璇疯仈绯诲紑鍙戜汉鍛樺鏁版嵁杩涜鎺掓煡澶勭悊锛侊紒"); + } + //杞负map鍚庣画鍙栫殑鏃跺�欐柟渚� + Map<String, BaseModel> baseModelMap = baseModels.stream().collect(Collectors.toMap(BaseModel::getId, baseModel -> baseModel)); + + // 鍥炴敹闇�瑕佷笟鍔℃暟鎹垹闄� + 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鐨勯『搴忔潵鎷夸笟鍔℃暟鎹� + BaseModel baseModel = null; + for (CodeAllCode codeCbo : codeCbos) { + codeCbo.setLcStatus(baseModelDTO.getLcStatus()); + // 濡傛灉鏄洖鏀讹紝灏遍渶瑕佸皢涓氬姟鏁版嵁瀛樺偍鍒扮爜鍊艰〃涓� + baseModel = baseModelMap.get(codeCbo.getId()); + if (baseModelDTO.getLcStatus().equals(FrameWorkDefaultValueConstant.FRAMEWORK_RELEASE_TAKEBACK)) { + codeCbo.setBusinessData(JSON.toJSONString(baseModel)); + } + } + 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; + } + } /** * 鐢宠鍗曚竴缂栫爜 @@ -407,10 +505,10 @@ */ @Override public String addSaveCode(CodeOrderDTO orderDTO) throws Exception { - return addSaveCode(orderDTO,true); + return addSaveCode(orderDTO, true); } - /*** + /** * 闆嗘垚鍙彉鐮佹鐢宠鎺ュ彛 * @param orderDTO 鐢宠鐨勪俊鎭紝闇�瑕佸寘鍚睘鎬х殑鍐呭鍜岀爜娈电浉鍏崇殑鍐呭 * @return @@ -418,331 +516,341 @@ */ @Override public String addSaveCodeNotauthUser(CodeOrderDTO orderDTO, boolean authUser) throws Exception { - return addSaveCode(orderDTO,authUser); + return addSaveCode(orderDTO, authUser); } - /** - * 鐢宠鍗曚竴缂栫爜 - * - * @param orderDTO 鐢宠鐨勪俊鎭紝闇�瑕佸寘鍚睘鎬х殑鍐呭鍜岀爜娈电浉鍏崇殑鍐呭 - * @return 杩斿洖缂栫爜鐨勫唴瀹� - */ + /** + * 鐢宠鍗曚竴缂栫爜 + * + * @param orderDTO 鐢宠鐨勪俊鎭紝闇�瑕佸寘鍚睘鎬х殑鍐呭鍜岀爜娈电浉鍏崇殑鍐呭 + * @return 杩斿洖缂栫爜鐨勫唴瀹� + */ private String addSaveCode(CodeOrderDTO orderDTO, boolean authUser) throws Exception { - VciBaseUtil.alertNotNull(orderDTO, "缂栫爜鐢宠鐩稿叧鐨勫睘鎬у拰鐮佹鐨勫唴瀹归兘涓虹┖", orderDTO.getCodeClassifyOid(), "涓婚搴撳垎绫荤殑涓婚敭", - orderDTO.getTemplateOid(), "妯℃澘鐨勪富閿�", orderDTO.getCodeRuleOid(), "缂栫爜瑙勫垯鐨勪富閿�"); - CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(orderDTO.getCodeClassifyOid()); - CodeClassifyTemplateVO templateVO = templateService.getObjectHasAttrByOid(orderDTO.getTemplateOid()); - CodeRuleVO ruleVO = ruleService.getObjectHasSecByOid(orderDTO.getCodeRuleOid()); - //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()); + VciBaseUtil.alertNotNull(orderDTO, "缂栫爜鐢宠鐩稿叧鐨勫睘鎬у拰鐮佹鐨勫唴瀹归兘涓虹┖", orderDTO.getCodeClassifyOid(), "涓婚搴撳垎绫荤殑涓婚敭", + orderDTO.getTemplateOid(), "妯℃澘鐨勪富閿�", orderDTO.getCodeRuleOid(), "缂栫爜瑙勫垯鐨勪富閿�"); + 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.鍒ゆ柇蹇呰緭椤� + 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); + 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) { + if (authUser) { // 瑕佹眰鏄剧ず璐﹀彿锛屾墍浠ュ仛浜嗘洿鏀� - cbo.setCreator(String.valueOf(AuthUtil.getUser().getAccount())); - cbo.setLastModifier(String.valueOf(AuthUtil.getUser().getAccount())); - }else{ + 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()); - if(StringUtils.isNotBlank(orderDTO.getLcStatus())||StringUtils.isNotBlank(orderDTO.getData().get("lcStatus"))){ - cbo.setLcStatus(StringUtils.isNotBlank(orderDTO.getLcStatus())?orderDTO.getLcStatus():orderDTO.getData().get("lcStatus")); + 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")); } //TODO:鍥犱负榛樿鐨勫睘鎬ч兘涓嶆嫹璐濓紝鐩墠闆嗗洟鐮佸彨name锛屽苟娌℃湁浠嶥TO鎷疯礉鍒癱bo閲屻�傚鍔犱竴涓崟鐙鐞嗭紝浠ュ悗鍐嶇湅瑕佷笉瑕佽皟鏁� - cbo.setName(orderDTO.getName() == null ? "" : orderDTO.getName()); + cbo.setName(orderDTO.getName() == null ? "" : orderDTO.getName()); //end -- modify by lihang @20220407 - List<BaseModel> cboList = new ArrayList<>(); + List<BaseModel> cboList = new ArrayList<>(); - //澶囨敞 - cbo.setDescription(orderDTO.getDescription()); - cboList.add(cbo); + //澶囨敞 + 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) : ""; - } + batchSaveSelectChar(templateVO, cboList); + return codeList.size() > 0 ? codeList.get(0) : ""; + } - /** - * 澶勭悊鍒嗙被娉ㄥ叆鐨勪俊鎭� - * - * @param templateVO 妯℃澘鐨勬樉绀哄璞★紝蹇呴』瑕佸悗妯℃澘鐨勫睘鎬� - * @param classifyFullInfoBO 鍒嗙被鐨勫叏璺緞 - * @param orderDTO 缂栫爜鐢宠鐨勪俊鎭� - */ - private void switchClassifyLevelOnOrder(CodeClassifyTemplateVO templateVO, CodeClassifyFullInfoBO classifyFullInfoBO, CodeOrderDTO orderDTO) { - Map<String, CodeClassifyTemplateAttrVO> classifyAttrVOMap = templateVO.getAttributes().stream().filter( - s -> StringUtils.isNotBlank(s.getClassifyInvokeAttr()) && StringUtils.isNotBlank(s.getClassifyInvokeLevel()) - ).collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t)); - if (classifyFullInfoBO.getTopClassifyVO() == null) { - //闇�瑕侀噸鏂版煡璇竴涓嬶紝鍥犱负杩欎釜鏄寚瀹氱殑鍒嗙被杩涙潵鐨� - } - if (!CollectionUtils.isEmpty(classifyAttrVOMap)) { - classifyAttrVOMap.forEach((attrId, attrVO) -> { - //鍒嗙被娉ㄥ叆鐨勭紪鍙锋垨鑰呭悕绉帮紝 - //灞傜骇鍖呭惈鎸囧畾灞傚拰鏈�灏忓眰 - CodeClassifyVO classifyVO = null; - if (!CodeLevelTypeEnum.MIN.getValue().equalsIgnoreCase(attrVO.getClassifyInvokeLevel()) && !"min".equalsIgnoreCase(attrVO.getClassifyInvokeLevel())) { - //鎸囧畾浜嗗眰绾х殑 - //娉ㄦ剰锛屽洜涓烘煡璇笂绾у垎绫诲嚭鏉ョ殑灞傜骇鏄�掑簭鐨勶紝鍗抽《灞傝妭鐐规槸鏈�澶х殑鍊� - List<CodeClassifyVO> classifyVOS = classifyFullInfoBO.getParentClassifyVOs().stream().sorted(((o1, o2) -> -o2.getDataLevel().compareTo(o1.getDataLevel()))).collect(Collectors.toList()); - int level = VciBaseUtil.getInt(attrVO.getClassifyInvokeLevel()); - if (classifyVOS.size() >= level && level > 0) { - classifyVO = classifyVOS.get(level - 1); - } - } else { - //褰撳墠鐨勫垎绫� - classifyVO = classifyFullInfoBO.getCurrentClassifyVO(); - } - if (classifyVO == null) { - //璇存槑灞傜骇鏈夎 - orderDTO.getData().put(attrId, "鍒嗙被鏍戜笂娌℃湁灞傜骇[" + attrVO.getClassifyInvokeLevel() + "]"); - // classifyVO = classifyFullInfoBO.getCurrentClassifyVO(); - } else { - Map<String, String> classifyDataMap = VciBaseUtil.objectToMapString(classifyVO); - String value = classifyDataMap.getOrDefault(attrVO.getClassifyInvokeAttr(), ""); - orderDTO.getData().put(attrId, value); - } - }); - } - } + /** + * 澶勭悊鍒嗙被娉ㄥ叆鐨勪俊鎭� + * + * @param templateVO 妯℃澘鐨勬樉绀哄璞★紝蹇呴』瑕佸悗妯℃澘鐨勫睘鎬� + * @param classifyFullInfoBO 鍒嗙被鐨勫叏璺緞 + * @param orderDTO 缂栫爜鐢宠鐨勪俊鎭� + */ + private void switchClassifyLevelOnOrder(CodeClassifyTemplateVO templateVO, CodeClassifyFullInfoBO classifyFullInfoBO, CodeOrderDTO orderDTO) { + Map<String, CodeClassifyTemplateAttrVO> classifyAttrVOMap = templateVO.getAttributes().stream().filter( + s -> StringUtils.isNotBlank(s.getClassifyInvokeAttr()) && StringUtils.isNotBlank(s.getClassifyInvokeLevel()) + ).collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t)); + if (classifyFullInfoBO.getTopClassifyVO() == null) { + //闇�瑕侀噸鏂版煡璇竴涓嬶紝鍥犱负杩欎釜鏄寚瀹氱殑鍒嗙被杩涙潵鐨� + } + if (!CollectionUtils.isEmpty(classifyAttrVOMap)) { + classifyAttrVOMap.forEach((attrId, attrVO) -> { + //鍒嗙被娉ㄥ叆鐨勭紪鍙锋垨鑰呭悕绉帮紝 + //灞傜骇鍖呭惈鎸囧畾灞傚拰鏈�灏忓眰 + CodeClassifyVO classifyVO = null; + if (!CodeLevelTypeEnum.MIN.getValue().equalsIgnoreCase(attrVO.getClassifyInvokeLevel()) && !"min".equalsIgnoreCase(attrVO.getClassifyInvokeLevel())) { + //鎸囧畾浜嗗眰绾х殑 + //娉ㄦ剰锛屽洜涓烘煡璇笂绾у垎绫诲嚭鏉ョ殑灞傜骇鏄�掑簭鐨勶紝鍗抽《灞傝妭鐐规槸鏈�澶х殑鍊� + List<CodeClassifyVO> classifyVOS = classifyFullInfoBO.getParentClassifyVOs().stream().sorted(((o1, o2) -> -o2.getDataLevel().compareTo(o1.getDataLevel()))).collect(Collectors.toList()); + int level = VciBaseUtil.getInt(attrVO.getClassifyInvokeLevel()); + if (classifyVOS.size() >= level && level > 0) { + classifyVO = classifyVOS.get(level - 1); + } + } else { + //褰撳墠鐨勫垎绫� + classifyVO = classifyFullInfoBO.getCurrentClassifyVO(); + } + if (classifyVO == null) { + //璇存槑灞傜骇鏈夎 + orderDTO.getData().put(attrId, "鍒嗙被鏍戜笂娌℃湁灞傜骇[" + attrVO.getClassifyInvokeLevel() + "]"); + // classifyVO = classifyFullInfoBO.getCurrentClassifyVO(); + } else { + Map<String, String> classifyDataMap = VciBaseUtil.objectToMapString(classifyVO); + String value = classifyDataMap.getOrDefault(attrVO.getClassifyInvokeAttr(), ""); + orderDTO.getData().put(attrId, value); + } + }); + } + } - /** - * 鍒ゆ柇缂栫爜鐨勭爜娈垫槸鍚﹁緭鍏ユ垨鑰呴�夋嫨浜嗙爜鍊� - * - * @param ruleVO 瑙勫垯鐨勬樉绀哄璞� - * @param orderDTO 缂栫爜鐢宠鐨勫唴瀹� - */ - @Override - public void checkSecValueOnOrder(CodeRuleVO ruleVO, CodeOrderDTO orderDTO) { - List<String> unSerialSecOidList = ruleVO.getSecVOList().stream().filter( - s -> !(CodeSecTypeEnum.CODE_SERIAL_SEC.getValue().equalsIgnoreCase(s.getSecType()) - || CodeSecTypeEnum.CODE_ATTR_SEC.getValue().equalsIgnoreCase(s.getSecType()) - || CodeSecTypeEnum.CODE_DATE_SEC.getValue().equalsIgnoreCase(s.getSecType()) - || CodeSecTypeEnum.CODE_LEVEL_SEC.getValue().equalsIgnoreCase(s.getSecType()) - || VciBaseUtil.getBoolean(s.getNullableFlag())) - ).map(CodeBasicSecVO::getOid).collect(Collectors.toList()); - if (!CollectionUtils.isEmpty(unSerialSecOidList)) { - if (CollectionUtils.isEmpty(orderDTO.getSecDTOList())) { - throw new VciBaseException("闈炴祦姘寸爜娈�(鎴栬�呭繀杈撶爜娈碉級蹇呴』瑕佽緭鍏�(鎴栭�夋嫨)鐮佸��"); - } - if (orderDTO.getSecDTOList().stream().anyMatch(s -> !unSerialSecOidList.contains(s.getSecOid()) - && StringUtils.isBlank(s.getSecValue()))) { - throw new VciBaseException("闈炴祦姘寸爜娈�(鎴栬�呭繀杈撶爜娈碉級蹇呴』瑕佽緭鍏�(鎴栭�夋嫨)鐮佸��"); - } - } - } + /** + * 鍒ゆ柇缂栫爜鐨勭爜娈垫槸鍚﹁緭鍏ユ垨鑰呴�夋嫨浜嗙爜鍊� + * + * @param ruleVO 瑙勫垯鐨勬樉绀哄璞� + * @param orderDTO 缂栫爜鐢宠鐨勫唴瀹� + */ + @Override + public void checkSecValueOnOrder(CodeRuleVO ruleVO, CodeOrderDTO orderDTO) { + List<String> unSerialSecOidList = ruleVO.getSecVOList().stream().filter( + s -> !(CodeSecTypeEnum.CODE_SERIAL_SEC.getValue().equalsIgnoreCase(s.getSecType()) + || CodeSecTypeEnum.CODE_ATTR_SEC.getValue().equalsIgnoreCase(s.getSecType()) + || CodeSecTypeEnum.CODE_DATE_SEC.getValue().equalsIgnoreCase(s.getSecType()) + || CodeSecTypeEnum.CODE_LEVEL_SEC.getValue().equalsIgnoreCase(s.getSecType()) + || VciBaseUtil.getBoolean(s.getNullableFlag())) + ).map(CodeBasicSecVO::getOid).collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(unSerialSecOidList)) { + if (CollectionUtils.isEmpty(orderDTO.getSecDTOList())) { + throw new VciBaseException("闈炴祦姘寸爜娈�(鎴栬�呭繀杈撶爜娈碉級蹇呴』瑕佽緭鍏�(鎴栭�夋嫨)鐮佸��"); + } + if (orderDTO.getSecDTOList().stream().anyMatch(s -> !unSerialSecOidList.contains(s.getSecOid()) + && StringUtils.isBlank(s.getSecValue()))) { + throw new VciBaseException("闈炴祦姘寸爜娈�(鎴栬�呭繀杈撶爜娈碉級蹇呴』瑕佽緭鍏�(鎴栭�夋嫨)鐮佸��"); + } + } + } - /** - * 鏍¢獙灞炴�ф槸鍚︿负蹇呰緭 - * - * @param templateVO 妯℃澘鐨勬樉绀哄璞★紝闇�瑕佸寘鍚ā鏉垮睘鎬� - * @param orderDTO 缂栫爜鐢宠鐨勪俊鎭� - */ - private void checkRequiredAttrOnOrder(CodeClassifyTemplateVO templateVO, CodeOrderDTO orderDTO) { + /** + * 鏍¢獙灞炴�ф槸鍚︿负蹇呰緭 + * + * @param templateVO 妯℃澘鐨勬樉绀哄璞★紝闇�瑕佸寘鍚ā鏉垮睘鎬� + * @param orderDTO 缂栫爜鐢宠鐨勪俊鎭� + */ + private void checkRequiredAttrOnOrder(CodeClassifyTemplateVO templateVO, CodeOrderDTO orderDTO) { - Map<String, CodeClassifyTemplateAttrVO> requiredAttrMap = templateVO.getAttributes().stream().filter( - s -> VciBaseUtil.getBoolean(s.getRequireFlag()) && StringUtils.isBlank(s.getComponentRule()) - && StringUtils.isBlank(s.getClassifyInvokeAttr())) - .collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t)); - if (!CollectionUtils.isEmpty(requiredAttrMap)) { - requiredAttrMap.forEach((attrId, attrVO) -> { - //鍙湁浼佷笟缂栫爜锛岀姸鎬侊紝澶囨敞锛屾ā鏉夸富閿紝鍒嗙被涓婚敭杩欏嚑涓槸鍥哄畾鐨勶紝鍏朵綑閮芥槸鑷閰嶇疆鐨� - if (StringUtils.isBlank(getValueFromOrderDTO(orderDTO, attrId))) { - throw new VciBaseException("灞炴�с�恵0}銆戝繀椤昏杈撳叆(閫夋嫨)鍐呭", new String[]{attrVO.getName()}); - } - }); - } - } + Map<String, CodeClassifyTemplateAttrVO> requiredAttrMap = templateVO.getAttributes().stream().filter( + s -> VciBaseUtil.getBoolean(s.getRequireFlag()) && StringUtils.isBlank(s.getComponentRule()) + && StringUtils.isBlank(s.getClassifyInvokeAttr())) + .collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t)); + if (!CollectionUtils.isEmpty(requiredAttrMap)) { + requiredAttrMap.forEach((attrId, attrVO) -> { + //鍙湁浼佷笟缂栫爜锛岀姸鎬侊紝澶囨敞锛屾ā鏉夸富閿紝鍒嗙被涓婚敭杩欏嚑涓槸鍥哄畾鐨勶紝鍏朵綑閮芥槸鑷閰嶇疆鐨� + if (StringUtils.isBlank(getValueFromOrderDTO(orderDTO, attrId))) { + throw new VciBaseException("灞炴�с�恵0}銆戝繀椤昏杈撳叆(閫夋嫨)鍐呭", new String[]{attrVO.getName()}); + } + }); + } + } - /** - * 浠庣紪鐮佺敵璇蜂俊鎭璞′笂鑾峰彇鏌愪釜灞炴�х殑鍊� - * - * @param orderDTO 缂栫爜鐢宠瀵硅薄 - * @param attrId 灞炴�х殑缂栧彿 - * @return 鍊� - */ - private String getValueFromOrderDTO(CodeOrderDTO orderDTO, String attrId) { - attrId = attrId.toLowerCase(Locale.ROOT); - String value = null; - if (VciQueryWrapperForDO.BASIC_FIELD_MAP.containsKey(attrId)) { - value = WebUtil.getStringValueFromObject(WebUtil.getValueFromField(WebUtil.getFieldForObject(attrId, orderDTO.getClass()).getName(), orderDTO)); - if(StringUtils.isBlank(value)){ + /** + * 浠庣紪鐮佺敵璇蜂俊鎭璞′笂鑾峰彇鏌愪釜灞炴�х殑鍊� + * + * @param orderDTO 缂栫爜鐢宠瀵硅薄 + * @param attrId 灞炴�х殑缂栧彿 + * @return 鍊� + */ + private String getValueFromOrderDTO(CodeOrderDTO orderDTO, String attrId) { + attrId = attrId.toLowerCase(Locale.ROOT); + String value = null; + if (VciQueryWrapperForDO.BASIC_FIELD_MAP.containsKey(attrId)) { + value = WebUtil.getStringValueFromObject(WebUtil.getValueFromField(WebUtil.getFieldForObject(attrId, orderDTO.getClass()).getName(), orderDTO)); + if (StringUtils.isBlank(value)) { value = orderDTO.getData().getOrDefault(attrId, ""); } } else { - //璇存槑鏄嚜琛岄厤缃殑 - //鍓嶇蹇呴』瑕佷紶閫掑皬鍐欑殑灞炴�� + //璇存槑鏄嚜琛岄厤缃殑 + //鍓嶇蹇呴』瑕佷紶閫掑皬鍐欑殑灞炴�� String orDefault = orderDTO.getData().getOrDefault(attrId, ""); value = Func.isBlank(orDefault) ? orderDTO.getData() - .getOrDefault(attrId.toUpperCase(Locale.ROOT), ""):orDefault; - } - return value; - } + .getOrDefault(attrId.toUpperCase(Locale.ROOT), "") : orDefault; + } + return value; + } - /** - * 杞崲缁勫悎瑙勫垯鐨勫�� - * - * @param templateVO 妯℃澘鐨勬樉绀哄璞★紝闇�瑕佸寘鍚ā鏉垮睘鎬� - * @param orderDTO 缂栫爜鐢宠鐨勪俊鎭� - */ - private void switchComponentAttrOnOrder(CodeClassifyTemplateVO templateVO, CodeOrderDTO orderDTO) { - Map<String, CodeClassifyTemplateAttrVO> compAttrVOMap = templateVO.getAttributes().stream().filter(s -> StringUtils.isNotBlank(s.getComponentRule())).collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t)); - if (!CollectionUtils.isEmpty(compAttrVOMap)) { - Map<String, String> dataMap = WebUtil.objectToMapString(orderDTO); + /** + * 杞崲缁勫悎瑙勫垯鐨勫�� + * + * @param templateVO 妯℃澘鐨勬樉绀哄璞★紝闇�瑕佸寘鍚ā鏉垮睘鎬� + * @param orderDTO 缂栫爜鐢宠鐨勪俊鎭� + */ + private void switchComponentAttrOnOrder(CodeClassifyTemplateVO templateVO, CodeOrderDTO orderDTO) { + Map<String, CodeClassifyTemplateAttrVO> compAttrVOMap = templateVO.getAttributes().stream().filter(s -> StringUtils.isNotBlank(s.getComponentRule())).collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t)); + if (!CollectionUtils.isEmpty(compAttrVOMap)) { + Map<String, String> dataMap = WebUtil.objectToMapString(orderDTO); - Map<String, String> dataLowMap = new HashMap<>(); - if (!CollectionUtils.isEmpty(dataMap)) { - dataMap.forEach((key, value) -> { - dataLowMap.put(key.toLowerCase(Locale.ROOT), value); - }); - } - dataLowMap.putAll(orderDTO.getData()); - compAttrVOMap.forEach((attrId, attrVO) -> { - dataLowMap.put(attrId, formulaService.getValueByFormula(dataLowMap, attrVO.getComponentRule())); - }); - dataLowMap.forEach((key, value) -> { - setValueToOrderDTO(orderDTO, key, value); - }); - } - } - - - /** - * 璁剧疆鏂扮殑鍊煎埌鐢宠瀵硅薄涓� - * - * @param orderDTO 缂栫爜鐢宠瀵硅薄 - * @param attrId 灞炴�х殑缂栧彿 - * @param value 鍊� - */ - private void setValueToOrderDTO(CodeOrderDTO orderDTO, String attrId, String value) { - attrId = attrId.toLowerCase(Locale.ROOT); - if (VciQueryWrapperForDO.BASIC_FIELD_MAP.containsKey(attrId)) { - WebUtil.setValueToField(WebUtil.getFieldForObject(attrId, orderDTO.getClass()).getName(), orderDTO, value); - } else { - orderDTO.getData().put(attrId, value); - } - } - - /** - * 鏍¢獙姝e垯琛ㄨ揪寮忔槸鍚︽纭� - * - * @param templateVO 妯℃澘鐨勪俊鎭紝蹇呴』鍖呭惈灞炴�х殑鍐呭 - * @param orderDTO 缂栫爜鐢宠鐨勭浉鍏崇殑淇℃伅 - */ - private void checkVerifyOnOrder(CodeClassifyTemplateVO templateVO, CodeOrderDTO orderDTO) { - Map<String, CodeClassifyTemplateAttrVO> verifyAttrVOMap = templateVO.getAttributes().stream().filter(s -> StringUtils.isNotBlank(s.getVerifyRule())).collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t)); - if (!CollectionUtils.isEmpty(verifyAttrVOMap)) { - verifyAttrVOMap.forEach((attrId, attrVO) -> { - String value = getValueFromOrderDTO(orderDTO, attrId); - if (StringUtils.isNotBlank(value) && !value.matches(attrVO.getVerifyRule())) { - //鏍¢獙姝e垯琛ㄨ揪寮� - throw new VciBaseException("灞炴�{0}]鐨勫�间笉绗﹀悎鏍¢獙瑙勫垯鐨勮姹�", new String[]{attrVO.getName()}); - } - }); - } - } - - /** - * 鏍¢獙鍏抽敭灞炴�� - * - * @param classifyFullInfo 鍒嗙被鐨勫叏閮ㄤ俊鎭� - * @param templateVO 妯℃澘鐨勫唴瀹癸紝蹇呴』鍖呭惈妯℃澘灞炴�� - * @param orderDTO 缂栫爜鐢宠鐨勭浉鍏崇殑淇℃伅 - */ - private void checkKeyAttrOnOrder(CodeClassifyFullInfoBO classifyFullInfo, CodeClassifyTemplateVO templateVO, CodeOrderDTO orderDTO) { - //鍏堣幏鍙栧叧閿睘鎬х殑瑙勫垯锛屼篃鍒╃敤缁ф壙鐨勬柟寮� - CodeKeyAttrRepeatVO keyRuleVO = keyRuleService.getRuleByClassifyFullInfo(classifyFullInfo); - //娉ㄦ剰鐨勬槸keyRuleVO鍙兘涓虹┖锛岃〃绀轰笉浣跨敤瑙勫垯鎺у埗 - //鑾峰彇鎵�鏈夌殑鍏抽敭灞炴�� - Map<String, CodeClassifyTemplateAttrVO> ketAttrMap = templateVO.getAttributes().stream().filter(s -> VciBaseUtil.getBoolean(s.getKeyAttrFlag())).collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t)); - Map<String, String> conditionMap = new HashMap<>(); - boolean trimAll = keyRuleVO == null ? false : VciBaseUtil.getBoolean(keyRuleVO.getIgnoreallspaceflag()); - //鍏ㄩ儴鍘荤┖鐨勪紭鍏堢骇澶т簬鍘荤┖ - boolean trim = keyRuleVO == null ? false : VciBaseUtil.getBoolean(keyRuleVO.getIgnorespaceflag()); - boolean ignoreCase = keyRuleVO == null ? false : VciBaseUtil.getBoolean(keyRuleVO.getIgnorecaseflag()); - boolean ignoreWidth = keyRuleVO == null ? false : VciBaseUtil.getBoolean(keyRuleVO.getIgnorewidthflag()); - ketAttrMap.forEach((attrId, attrVO) -> { - String value = getValueFromOrderDTO(orderDTO, attrId); - if (value == null) { - value = ""; - } - wrapperKeyAttrConditionMap(value, keyRuleVO, attrId, trim, ignoreCase, ignoreWidth, trimAll, conditionMap); - }); - - //娌℃湁闄愬埗鍒嗙被锛屼絾鏄竴涓ā鏉垮彧鍙兘鍦ㄤ竴涓笟鍔$被鍨嬮噷闈紝鎵�浠ョ洿鎺ユ煡璇㈣繖涓笟鍔$被鍨嬪嵆鍙� - if (!CollectionUtils.isEmpty(conditionMap)) { - // 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 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"; - }else{ - sql[0] += " and " + key + " = " + value; - } - }); - if (StringUtils.isNotBlank(orderDTO.getOid())) { - //淇敼鐨勬椂鍊欙紝闇�瑕佹帓闄よ嚜宸� - sql[0] += " and oid != '" + orderDTO.getOid() + "'"; - } else if (StringUtils.isNotBlank(orderDTO.getCopyFromVersion())) { - sql[0] += " and oid != '" + orderDTO.getCopyFromVersion() + "'"; - } - sql[0] += " and lastR = '1' and lastV = '1' "; - String isParticipateCheckOids = classifyService.selectLeafByParentClassifyOid(classifyFullInfo.getTopClassifyVO().getOid(), classifyFullInfo.getCurrentClassifyVO().getOid()); - if(Func.isNotEmpty(isParticipateCheckOids)){ - sql[0] += " and codeclsfid not in(" + isParticipateCheckOids + ")"; + Map<String, String> dataLowMap = new HashMap<>(); + if (!CollectionUtils.isEmpty(dataMap)) { + dataMap.forEach((key, value) -> { + dataLowMap.put(key.toLowerCase(Locale.ROOT), value); + }); } -// if (boService.queryCountBySql(sql[0], new HashMap<>()) > 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("鏍规嵁鎮ㄥ~鍐欑殑鍏抽敭灞炴�х殑鍐呭锛岀粨鍚堝叧閿睘鎬ф煡璇㈣鍒欙紝鍙戠幇璇ユ暟鎹凡缁忎笌绯荤粺涓紪鍙蜂负"+repeatData.stream().collect(Collectors.joining(","))+"鐨勬暟鎹噸澶嶃�傝淇!銆�" + ruleInfoMsg, objs); - } - } - } + dataLowMap.putAll(orderDTO.getData()); + compAttrVOMap.forEach((attrId, attrVO) -> { + dataLowMap.put(attrId, formulaService.getValueByFormula(dataLowMap, attrVO.getComponentRule())); + }); + dataLowMap.forEach((key, value) -> { + setValueToOrderDTO(orderDTO, key, value); + }); + } + } + + /** + * 璁剧疆鏂扮殑鍊煎埌鐢宠瀵硅薄涓� + * + * @param orderDTO 缂栫爜鐢宠瀵硅薄 + * @param attrId 灞炴�х殑缂栧彿 + * @param value 鍊� + */ + private void setValueToOrderDTO(CodeOrderDTO orderDTO, String attrId, String value) { + attrId = attrId.toLowerCase(Locale.ROOT); + if (VciQueryWrapperForDO.BASIC_FIELD_MAP.containsKey(attrId)) { + WebUtil.setValueToField(WebUtil.getFieldForObject(attrId, orderDTO.getClass()).getName(), orderDTO, value); + } else { + orderDTO.getData().put(attrId, value); + } + } + + /** + * 鏍¢獙姝e垯琛ㄨ揪寮忔槸鍚︽纭� + * + * @param templateVO 妯℃澘鐨勪俊鎭紝蹇呴』鍖呭惈灞炴�х殑鍐呭 + * @param orderDTO 缂栫爜鐢宠鐨勭浉鍏崇殑淇℃伅 + */ + private void checkVerifyOnOrder(CodeClassifyTemplateVO templateVO, CodeOrderDTO orderDTO) { + Map<String, CodeClassifyTemplateAttrVO> verifyAttrVOMap = templateVO.getAttributes().stream().filter(s -> StringUtils.isNotBlank(s.getVerifyRule())).collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t)); + if (!CollectionUtils.isEmpty(verifyAttrVOMap)) { + verifyAttrVOMap.forEach((attrId, attrVO) -> { + String value = getValueFromOrderDTO(orderDTO, attrId); + if (StringUtils.isNotBlank(value) && !value.matches(attrVO.getVerifyRule())) { + //鏍¢獙姝e垯琛ㄨ揪寮� + throw new VciBaseException("灞炴�{0}]鐨勫�间笉绗﹀悎鏍¢獙瑙勫垯鐨勮姹�", new String[]{attrVO.getName()}); + } + }); + } + } /** * 鏍¢獙鍏抽敭灞炴�� * + * @param classifyFullInfo 鍒嗙被鐨勫叏閮ㄤ俊鎭� + * @param templateVO 妯℃澘鐨勫唴瀹癸紝蹇呴』鍖呭惈妯℃澘灞炴�� * @param orderDTO 缂栫爜鐢宠鐨勭浉鍏崇殑淇℃伅 + */ + private void checkKeyAttrOnOrder(CodeClassifyFullInfoBO classifyFullInfo, CodeClassifyTemplateVO templateVO, CodeOrderDTO orderDTO) { + //鍏堣幏鍙栧叧閿睘鎬х殑瑙勫垯锛屼篃鍒╃敤缁ф壙鐨勬柟寮� + CodeKeyAttrRepeatVO keyRuleVO = keyRuleService.getRuleByClassifyFullInfo(classifyFullInfo); + //娉ㄦ剰鐨勬槸keyRuleVO鍙兘涓虹┖锛岃〃绀轰笉浣跨敤瑙勫垯鎺у埗 + //鑾峰彇鎵�鏈夌殑鍏抽敭灞炴�� + Map<String, CodeClassifyTemplateAttrVO> ketAttrMap = templateVO.getAttributes().stream().filter(s -> VciBaseUtil.getBoolean(s.getKeyAttrFlag())).collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t)); + // TODO:2024-02-01 鍏堣幏鍙栭厤缃簡杩戜箟璇嶆煡璇㈣鍒欑殑灞炴�э紝涓嶅悓浜庡叧閿睘鎬э紝璁剧疆浜嗚繎涔夎瘝鏌ヨ瑙勫垯鐨勫睘鎬у彲鑳芥槸澶氭潯涓嶅悓鐨勮繎涔夎瘝鏌ヨ瑙勫垯 + Map<String, CodeClassifyTemplateAttrVO> sysonymAttrMaps = templateVO.getAttributes().stream().filter(item -> Func.isNotBlank(item.getSysonymRuleOids())).collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t)); + // 鑾峰彇鏄惁鏈夐厤缃繎涔夎瘝鏌ヨ瑙勫垯灞炴�� + Map<String, List<CodeSynonym>> codeSynonymMaps = new HashMap<>(); + if(!sysonymAttrMaps.isEmpty()){ + // 鏌ヨ杩戜箟璇嶈鍒欙紝瀛樺偍鏂瑰紡key锛氬睘鎬d锛寁alue杩戜箟璇嶆煡璇㈣鍒欏垪琛� + codeSynonymMaps = codeSynonymService.getCodeSynonymByOids(sysonymAttrMaps); + } + Map<String, String> conditionMap = new HashMap<>(); + boolean trimAll = keyRuleVO == null ? false : VciBaseUtil.getBoolean(keyRuleVO.getIgnoreallspaceflag()); + //鍏ㄩ儴鍘荤┖鐨勪紭鍏堢骇澶т簬鍘荤┖ + boolean trim = keyRuleVO == null ? false : VciBaseUtil.getBoolean(keyRuleVO.getIgnorespaceflag()); + boolean ignoreCase = keyRuleVO == null ? false : VciBaseUtil.getBoolean(keyRuleVO.getIgnorecaseflag()); + boolean ignoreWidth = keyRuleVO == null ? false : VciBaseUtil.getBoolean(keyRuleVO.getIgnorewidthflag()); + Map<String, List<CodeSynonym>> finalCodeSynonymMaps = codeSynonymMaps; + ketAttrMap.forEach((attrId, attrVO) -> { + String value = getValueFromOrderDTO(orderDTO, attrId); + if (value == null) { + value = ""; + } + wrapperKeyAttrConditionMap(value, keyRuleVO, finalCodeSynonymMaps.get(attrId), attrId, trim, ignoreCase, ignoreWidth, trimAll, conditionMap); + }); + + //娌℃湁闄愬埗鍒嗙被锛屼絾鏄竴涓ā鏉垮彧鍙兘鍦ㄤ竴涓笟鍔$被鍨嬮噷闈紝鎵�浠ョ洿鎺ユ煡璇㈣繖涓笟鍔$被鍨嬪嵆鍙� + if (!CollectionUtils.isEmpty(conditionMap)) { + // 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 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"; + } else { + sql[0] += " and " + key + " = " + value; + } + }); + if (StringUtils.isNotBlank(orderDTO.getOid())) { + //淇敼鐨勬椂鍊欙紝闇�瑕佹帓闄よ嚜宸� + sql[0] += " and oid != '" + orderDTO.getOid() + "'"; + } else if (StringUtils.isNotBlank(orderDTO.getCopyFromVersion())) { + 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) { + 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("鏍规嵁鎮ㄥ~鍐欑殑鍏抽敭灞炴�х殑鍐呭锛岀粨鍚堝叧閿睘鎬ф煡璇㈣鍒欙紝鍙戠幇璇ユ暟鎹凡缁忎笌绯荤粺涓紪鍙蜂负" + repeatData.stream().collect(Collectors.joining(",")) + "鐨勬暟鎹噸澶嶃�傝淇!銆�" + ruleInfoMsg, objs); + } + } + } + + /** + * 鏍¢獙鍏抽敭灞炴�� + * + * @param orderDTO 缂栫爜鐢宠鐨勭浉鍏崇殑淇℃伅 */ @Override public List<Map> checkKeyAttrOnOrderFordatas(CodeOrderDTO orderDTO) { - List<Map>dataList=new ArrayList<>(); + List<Map> dataList = new ArrayList<>(); CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(orderDTO.getCodeClassifyOid()); CodeClassifyTemplateVO templateVO = templateService.getObjectHasAttrByOid(orderDTO.getTemplateOid()); //鍏堣幏鍙栧叧閿睘鎬х殑瑙勫垯锛屼篃鍒╃敤缁ф壙鐨勬柟寮� @@ -750,23 +858,32 @@ //娉ㄦ剰鐨勬槸keyRuleVO鍙兘涓虹┖锛岃〃绀轰笉浣跨敤瑙勫垯鎺у埗 //鑾峰彇鎵�鏈夌殑鍏抽敭灞炴�� Map<String, CodeClassifyTemplateAttrVO> ketAttrMap = templateVO.getAttributes().stream().filter(s -> VciBaseUtil.getBoolean(s.getKeyAttrFlag())).collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t)); + // TODO:2024-02-01 鍏堣幏鍙栭厤缃簡杩戜箟璇嶆煡璇㈣鍒欑殑灞炴�э紝涓嶅悓浜庡叧閿睘鎬э紝璁剧疆浜嗚繎涔夎瘝鏌ヨ瑙勫垯鐨勫睘鎬у彲鑳芥槸澶氭潯涓嶅悓鐨勮繎涔夎瘝鏌ヨ瑙勫垯 + Map<String, CodeClassifyTemplateAttrVO> sysonymAttrMaps = templateVO.getAttributes().stream().filter(item -> Func.isNotBlank(item.getSysonymRuleOids())).collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t)); + // 鑾峰彇鏄惁鏈夐厤缃繎涔夎瘝鏌ヨ瑙勫垯灞炴�� + Map<String, List<CodeSynonym>> codeSynonymMaps = new HashMap<>(); + if(!sysonymAttrMaps.isEmpty()){ + // 鏌ヨ杩戜箟璇嶈鍒欙紝瀛樺偍鏂瑰紡key锛氬睘鎬d锛寁alue杩戜箟璇嶆煡璇㈣鍒欏垪琛� + codeSynonymMaps = codeSynonymService.getCodeSynonymByOids(sysonymAttrMaps); + } Map<String, String> conditionMap = new HashMap<>(); boolean trimAll = keyRuleVO == null ? false : VciBaseUtil.getBoolean(keyRuleVO.getIgnoreallspaceflag()); //鍏ㄩ儴鍘荤┖鐨勪紭鍏堢骇澶т簬鍘荤┖ boolean trim = keyRuleVO == null ? false : VciBaseUtil.getBoolean(keyRuleVO.getIgnorespaceflag()); boolean ignoreCase = keyRuleVO == null ? false : VciBaseUtil.getBoolean(keyRuleVO.getIgnorecaseflag()); boolean ignoreWidth = keyRuleVO == null ? false : VciBaseUtil.getBoolean(keyRuleVO.getIgnorewidthflag()); + Map<String, List<CodeSynonym>> finalCodeSynonymMaps = codeSynonymMaps; ketAttrMap.forEach((attrId, attrVO) -> { String value = getValueFromOrderDTO(orderDTO, attrId); if (value == null) { value = ""; } - wrapperKeyAttrConditionMap(value, keyRuleVO, attrId, trim, ignoreCase, ignoreWidth, trimAll, conditionMap); + wrapperKeyAttrConditionMap(value, keyRuleVO, finalCodeSynonymMaps.get(attrId), attrId, trim, ignoreCase, ignoreWidth, trimAll, conditionMap); }); //娌℃湁闄愬埗鍒嗙被锛屼絾鏄竴涓ā鏉垮彧鍙兘鍦ㄤ竴涓笟鍔$被鍨嬮噷闈紝鎵�浠ョ洿鎺ユ煡璇㈣繖涓笟鍔$被鍨嬪嵆鍙� if (!CollectionUtils.isEmpty(conditionMap)) { - conditionMap.put("CODETEMPLATEOID","'" + orderDTO.getTemplateOid() + "'"); + 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()); @@ -775,9 +892,9 @@ } final String[] sql = {"select * from " + listR.getData().get(0).getTableName() + " t where 1 = 1 "}; conditionMap.forEach((key, value) -> { - if(StringUtils.isBlank(value)||value.equals(QueryOptionConstant.ISNULL)) { + if (StringUtils.isBlank(value) || value.equals(QueryOptionConstant.ISNULL)) { sql[0] += " and " + key + " is null"; - }else{ + } else { sql[0] += " and " + key + " = " + value; } }); @@ -789,7 +906,7 @@ } sql[0] += " and lastR = '1' and lastV = '1' "; // if (boService.queryCountBySql(sql[0], new HashMap<>()) > 0) { - dataList=commonsMapper.selectBySql(sql[0]); + dataList = commonsMapper.selectBySql(sql[0]); if (!CollectionUtils.isEmpty(dataList)) { // String ruleInfoMsg = keyRuleVO == null ? "" : "鏌ヨ瑙勫垯锛氬幓闄ょ┖鏍�--{0},蹇界暐澶у皬鍐�--{1},蹇界暐鍏ㄥ崐瑙�--{2},蹇界暐鍏ㄩ儴绌烘牸--{3}"; // String[] objs = new String[]{trim ? "鏄�" : "鍚�", ignoreCase ? "鏄�" : "鍚�", ignoreWidth ? "鏄�" : "鍚�", trimAll ? "鏄�" : "鍚�"}; @@ -803,6 +920,7 @@ /** * 鏍规嵁褰撳墠鐢宠缂栫爜鐨勫垎绫伙紝閫愬眰寰�涓婃牎楠屾槸鍚︾鍚堝睘浜庨厤缃殑涓殑鍒嗙被瀛愯妭鐐圭殑鍒� * 绫伙紝濡傛灉绗﹀悎锛屽垯璇ュ垎绫荤敵璇风殑缂栫爜涓洪泦鍥㈢爜杩斿洖true锛屽弽涔嬪垯涓轰紒涓氱紪鐮佽繑鍥瀎alse + * * @param parameter 浼犲叆鏁版嵁,classifyGroupCode:閰嶇疆鐨勪腑鐨勫垎绫婚《鑺傜偣锛宱id锛氶�夋嫨鑺傜偣鐨刼id */ @Override @@ -810,8 +928,8 @@ List<CodeClassify> codeClassifyList = classifyService.selectAllLevelParentByOid(parameter.get("oid")); Set<String> configGroupCode = Arrays.stream(parameter.get("classifyGroupCode").split("#")).collect(Collectors.toSet()); // Boolean checkGroupFlag = false;//鏄惁鏌ヨ鍒伴厤缃殑椤跺眰鍒嗙被涓� - for (int i = codeClassifyList.size()-1; i >= 0; i--) { - if(configGroupCode.contains(codeClassifyList.get(i).getId())){ + for (int i = codeClassifyList.size() - 1; i >= 0; i--) { + if (configGroupCode.contains(codeClassifyList.get(i).getId())) { // checkGroupFlag = true; return R.data("true"); } @@ -822,311 +940,656 @@ return R.data("false"); } - /** - * 灏佽鍏抽敭灞炴�х殑鏌ヨ璇彞 - * - * @param value 褰撳墠鐨勫�� - * @param keyRuleVO 鍏抽敭灞炴�х殑鎺у埗瑙勫垯锛屽彲浠ヤ负绌� - * @param attrId 灞炴�х殑缂栧彿 - * @param trim 鏄惁鍘婚櫎绌烘牸 - * @param ignoreCase 鏄惁涓嶅尯鍒嗗ぇ灏忓啓 - * @param ignoreWidth 鏄惁蹇界暐鍏ㄥ崐瑙� - * @param trimAll 鏄惁蹇界暐鍏ㄩ儴绌烘牸 - * @param conditionMap 鏌ヨ鏉′欢 - */ - @Override - public void wrapperKeyAttrConditionMap(String value, CodeKeyAttrRepeatVO keyRuleVO, String attrId, - boolean trim, boolean ignoreCase, boolean ignoreWidth, - boolean trimAll, Map<String, String> conditionMap) { - boolean ignoreSpace = trim || trimAll; - if (StringUtils.isBlank(value)) { - //涓虹┖鐨勬椂鍊欙紝涓嶈兘鐢≦ueryOperation.ISNULL锛屽钩鍙颁笉鐭ラ亾鍟ユ椂鍊欎笉澶勭悊杩欑浜� - conditionMap.put("t." + attrId, QueryOptionConstant.ISNULL); - } else { - if (keyRuleVO != null) { - String queryKey = ""; - String queryValue = ""; + /*** + * + * @param codeBZApplyDTO 缂栫爜鐢宠鐩稿叧鐨勪俊鎭紝闇�瑕佹湁灞炴�у拰鐮佹鐩稿叧鐨勪俊鎭� + * @return + * @throws Exception + */ + @Override + public String addSaveBZ(CodeBZApplyDTO codeBZApplyDTO) throws Exception { + return addSaveBZCode(codeBZApplyDTO, true); + } - String temp = ""; - if (ignoreCase && ignoreSpace && ignoreWidth) { - //蹇界暐澶у皬鍐欙紝涓斿幓绌猴紝蹇界暐鍏ㄥ崐瑙� - temp = (trimAll ? "REPLACE" : "TRIM") + "(UPPER(to_single_byte(%s)) " + (trimAll ? ",' ','')" : ")"); - } else if (ignoreCase && ignoreSpace && !ignoreWidth) { - //蹇界暐澶у皬鍐欍�佸幓绌恒�佷笉蹇界暐鍏ㄥ崐瑙� - temp = (trimAll ? "REPLACE" : "TRIM") + "(UPPER(%s) " + (trimAll ? ",' ','')" : ")"); - } else if (ignoreCase && !ignoreSpace && ignoreWidth) { - //蹇界暐澶у皬鍐欍�佷笉鍘荤┖銆佸拷鐣ュ叏鍗婅 - temp = "UPPER(to_single_byte(%s))"; - } else if (!ignoreCase && ignoreSpace && ignoreWidth) { - //涓嶅拷鐣ュぇ灏忓啓銆佸幓绌恒�佸拷鐣ュ叏鍗婅 - temp = (trimAll ? "REPLACE" : "TRIM") + "(to_single_byte(%s) " + (trimAll ? ",' ','')" : ")"); - } else if (ignoreCase && !ignoreSpace && !ignoreWidth) { - //蹇界暐澶у皬鍐欍�佷笉鍘荤┖銆佷笉蹇界暐鍏ㄥ崐瑙� - temp = "UPPER(%s)"; - } else if (!ignoreCase && !ignoreCase && ignoreWidth) { - //涓嶅拷鐣ュぇ灏忓啓銆佷笉鍘荤┖銆佸拷鐣ュ叏鍗婅 - temp = "to_single_byte(%s)"; - } else if (!ignoreCase && ignoreSpace && !ignoreWidth) { - //涓嶅拷鐣ュぇ灏忓啓銆佸幓绌恒�佷笉蹇界暐鍏ㄥ崐瑙� - temp = (trimAll ? "REPLACE" : "TRIM") + "(%s " + (trimAll ? ",' ','')" : ")"); - } else if (!ignoreCase && !ignoreSpace && !ignoreWidth) { - //涓嶅拷鐣ュぇ灏忓啓銆佷笉鍘荤┖銆佷笉蹇界暐鍏ㄥ崐瑙� - temp = "%s"; - } - queryKey = String.format(temp, "t." + attrId); - queryValue = String.format(temp, "'" + (trim ? value.trim() : value) + "'"); - conditionMap.put(queryKey, queryValue); - } else { - if(StringUtils.isNotBlank(value)) { - //涓虹┖鐨勬椂鍊欎笉浠h〃涓嶆牎楠岋紝鍙槸涓嶅幓闄ょ浉鍏崇殑淇℃伅 - conditionMap.put("t." + attrId, "'" + value + "'"); - }else{ + /** + * 鏍囧噯鐢宠鍜屼慨璁㈢敤 + * + * @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 = Func.toBoolean(codeBZApplyDTO.getData().get(isSeries)); + 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 = Func.toBoolean(codeBZApplyDTO.getData().get(isEditSeries)); + 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_FOR_REFERENCE.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); + } + + /** + * 灏佽鍏抽敭灞炴�х殑鏌ヨ璇彞 + * + * @param value 褰撳墠鐨勫�� + * @param keyRuleVO 鍏抽敭灞炴�х殑鎺у埗瑙勫垯锛屽彲浠ヤ负绌� + * @param attrId 灞炴�х殑缂栧彿 + * @param trim 鏄惁鍘婚櫎绌烘牸 + * @param ignoreCase 鏄惁涓嶅尯鍒嗗ぇ灏忓啓 + * @param ignoreWidth 鏄惁蹇界暐鍏ㄥ崐瑙� + * @param trimAll 鏄惁蹇界暐鍏ㄩ儴绌烘牸 + * @param conditionMap 鏌ヨ鏉′欢 + */ + @Override + public void wrapperKeyAttrConditionMap(String value, CodeKeyAttrRepeatVO keyRuleVO, + List<CodeSynonym> codeSynonymMaps, String attrId, + boolean trim, boolean ignoreCase, boolean ignoreWidth, + boolean trimAll, Map<String, String> conditionMap) { + boolean ignoreSpace = trim || trimAll; + if (StringUtils.isBlank(value)) { + //鍊间负绌虹殑鏃跺�欙紝涓嶈兘鐢≦ueryOperation.ISNULL锛屽钩鍙颁笉鐭ラ亾鍟ユ椂鍊欎笉澶勭悊杩欑浜� + conditionMap.put("t." + attrId, QueryOptionConstant.ISNULL); + } else { + //杩戜箟璇嶆煡璇㈣鍒檝alu鍊艰浆鎹� + value = this.getValueToSynony(codeSynonymMaps, value); + + if (keyRuleVO != null) { + String queryKey = ""; + String queryValue = ""; + + String temp = ""; + if (ignoreCase && ignoreSpace && ignoreWidth) { + //蹇界暐澶у皬鍐欙紝涓斿幓绌猴紝蹇界暐鍏ㄥ崐瑙� + temp = (trimAll ? "REPLACE" : "TRIM") + "(UPPER(to_single_byte(%s)) " + (trimAll ? ",' ','')" : ")"); + } else if (ignoreCase && ignoreSpace && !ignoreWidth) { + //蹇界暐澶у皬鍐欍�佸幓绌恒�佷笉蹇界暐鍏ㄥ崐瑙� + temp = (trimAll ? "REPLACE" : "TRIM") + "(UPPER(%s) " + (trimAll ? ",' ','')" : ")"); + } else if (ignoreCase && !ignoreSpace && ignoreWidth) { + //蹇界暐澶у皬鍐欍�佷笉鍘荤┖銆佸拷鐣ュ叏鍗婅 + temp = "UPPER(to_single_byte(%s))"; + } else if (!ignoreCase && ignoreSpace && ignoreWidth) { + //涓嶅拷鐣ュぇ灏忓啓銆佸幓绌恒�佸拷鐣ュ叏鍗婅 + temp = (trimAll ? "REPLACE" : "TRIM") + "(to_single_byte(%s) " + (trimAll ? ",' ','')" : ")"); + } else if (ignoreCase && !ignoreSpace && !ignoreWidth) { + //蹇界暐澶у皬鍐欍�佷笉鍘荤┖銆佷笉蹇界暐鍏ㄥ崐瑙� + temp = "UPPER(%s)"; + } else if (!ignoreCase && !ignoreCase && ignoreWidth) { + //涓嶅拷鐣ュぇ灏忓啓銆佷笉鍘荤┖銆佸拷鐣ュ叏鍗婅 + temp = "to_single_byte(%s)"; + } else if (!ignoreCase && ignoreSpace && !ignoreWidth) { + //涓嶅拷鐣ュぇ灏忓啓銆佸幓绌恒�佷笉蹇界暐鍏ㄥ崐瑙� + temp = (trimAll ? "REPLACE" : "TRIM") + "(%s " + (trimAll ? ",' ','')" : ")"); + } else if (!ignoreCase && !ignoreSpace && !ignoreWidth) { + //涓嶅拷鐣ュぇ灏忓啓銆佷笉鍘荤┖銆佷笉蹇界暐鍏ㄥ崐瑙� + temp = "%s"; + } + 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 + ",'/')", "'" + SpecialCharacterConverter.escapeSpecialCharacters(value) + "'"); + } else { conditionMap.put("t." + attrId, QueryOptionConstant.ISNULL); } - } - } - } + } + } + } - /** - * 鏍¢獙鏋氫妇鐨勫唴瀹� - * - * @param templateVO 妯℃澘鐨勬樉绀哄璞★紝闇�瑕佸寘鍚睘鎬� - * @param orderDTO 缂栫爜鐢宠鐨勪俊鎭� - */ - private void checkEnumOnOrder(CodeClassifyTemplateVO templateVO, CodeOrderDTO orderDTO) { - //濡傛灉鏋氫妇鍙互淇敼锛屽垯涓嶉渶瑕佹牎楠屾槸鍚︾鍚堟灇涓剧殑閫夐」 + /** + * 杩戜箟璇嶆煡璇㈣鍒欒浆鎹� + * @param codeSynonymMaps + * @param value + * @return + */ + public String getValueToSynony(/*杩戜箟璇嶆煡璇㈣鍒�*/List<CodeSynonym> codeSynonymMaps,String value){ + // 鑾峰彇骞跺垽鏂槸鍚﹂厤缃簡杩戜箟璇嶆煡璇㈣鍒� + // TODO锛氳繎涔夎瘝鏇挎崲鎴愭簮鍊硷紙婧愬�兼槸姝g‘鐨勫�硷紝杩戜箟璇嶆槸鐩稿綋浜庤緭閿欑瑪璇殑瀛楃锛� + if(Func.isNotEmpty(codeSynonymMaps)){ + for (int i = 0; i < codeSynonymMaps.size(); i++) { + value = value.replace(codeSynonymMaps.get(i).getSynonymValue(),codeSynonymMaps.get(i).getSourceValue()); + } + } + return value; + } - Map<String, CodeClassifyTemplateAttrVO> enumAttrVOMap = templateVO.getAttributes().stream().filter(s -> (StringUtils.isNotBlank(s.getEnumString()) || StringUtils.isNotBlank(s.getEnumId())) && !VciBaseUtil.getBoolean(s.getEnumEditFlag())).collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t)); - if (!CollectionUtils.isEmpty(enumAttrVOMap)) { - enumAttrVOMap.forEach((attrId, attrVO) -> { - String value = getValueFromOrderDTO(orderDTO, attrId); - if (StringUtils.isNotBlank(value)) { - //鏈夊�兼墠鑳芥牎楠� - List<KeyValue> comboboxKVs = listComboboxItems(attrVO); - if (!comboboxKVs.stream().anyMatch(s -> value.equalsIgnoreCase(s.getKey()))) { - throw new VciBaseException("灞炴�с�恵0}銆戠殑鍊间笉绗﹀悎鏋氫妇鐨勮姹�", new String[]{attrVO.getName()}); - } - } - }); - } - } + /** + * 鏍¢獙鏋氫妇鐨勫唴瀹� + * + * @param templateVO 妯℃澘鐨勬樉绀哄璞★紝闇�瑕佸寘鍚睘鎬� + * @param orderDTO 缂栫爜鐢宠鐨勪俊鎭� + */ + private void checkEnumOnOrder(CodeClassifyTemplateVO templateVO, CodeOrderDTO orderDTO) { + //濡傛灉鏋氫妇鍙互淇敼锛屽垯涓嶉渶瑕佹牎楠屾槸鍚︾鍚堟灇涓剧殑閫夐」 - /** - * 杞崲鏃堕棿鐨勬牸寮� - * - * @param templateVO 妯℃澘鐨勬樉绀哄璞★紝闇�瑕佸寘鍚睘鎬� - * @param orderDTO 缂栫爜鐢宠鐨勪俊鎭� - */ - private void switchDateAttrOnOrder(CodeClassifyTemplateVO templateVO, CodeOrderDTO orderDTO) { - Map<String, CodeClassifyTemplateAttrVO> dateAttrVOMap = templateVO.getAttributes().stream().filter(s -> StringUtils.isNotBlank(s.getCodeDateFormat())).collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t)); - if (!CollectionUtils.isEmpty(dateAttrVOMap)) { - dateAttrVOMap.forEach((attrId, attrVO) -> { - String value = getValueFromOrderDTO(orderDTO, attrId); - if (StringUtils.isNotBlank(value)) { - DateConverter dateConverter = new DateConverter(); - dateConverter.setAsText(value); - value = VciDateUtil.date2Str(dateConverter.getValue(), VciDateUtil.DateTimeMillFormat); - setValueToOrderDTO(orderDTO, attrId, value); - } - }); - } - } + Map<String, CodeClassifyTemplateAttrVO> enumAttrVOMap = templateVO.getAttributes().stream().filter(s -> (StringUtils.isNotBlank(s.getEnumString()) || StringUtils.isNotBlank(s.getEnumId())) && !VciBaseUtil.getBoolean(s.getEnumEditFlag())).collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t)); + if (!CollectionUtils.isEmpty(enumAttrVOMap)) { + enumAttrVOMap.forEach((attrId, attrVO) -> { + String value = getValueFromOrderDTO(orderDTO, attrId); + if (StringUtils.isNotBlank(value)) { + //鏈夊�兼墠鑳芥牎楠� + List<KeyValue> comboboxKVs = listComboboxItems(attrVO); + if (!comboboxKVs.stream().anyMatch(s -> value.equalsIgnoreCase(s.getKey()))) { + throw new VciBaseException("灞炴�с�恵0}銆戠殑鍊间笉绗﹀悎鏋氫妇鐨勮姹�", new String[]{attrVO.getName()}); + } + } + }); + } + } - /** - * 鎷疯礉鏁版嵁鍒癱bo瀵硅薄涓� - * - * @param classifyFullInfo 鍒嗙被鐨勫叏閮ㄤ俊鎭� - * @param cbo 涓氬姟鏁版嵁 - * @param orderDTO 缂栫爜鐢宠鐨勪俊鎭� - * @param templateVO 妯℃澘鐨勬樉绀哄璞� - * @param edit 鏄惁涓轰慨鏀� - */ - private void copyValueToCBO(CodeClassifyFullInfoBO classifyFullInfo, BaseModel cbo, - CodeOrderDTO orderDTO, CodeClassifyTemplateVO templateVO, - boolean edit) { - String fullPath = ""; - if (!CollectionUtils.isEmpty(classifyFullInfo.getParentClassifyVOs())) { - fullPath = classifyFullInfo.getParentClassifyVOs().stream().sorted(((o1, o2) -> o2.getDataLevel().compareTo(o1.getDataLevel()))) - .map(CodeClassifyVO::getOid).collect(Collectors.joining("##")); - } else { - fullPath = classifyFullInfo.getCurrentClassifyVO().getOid(); - } + /** + * 杞崲鏃堕棿鐨勬牸寮� + * + * @param templateVO 妯℃澘鐨勬樉绀哄璞★紝闇�瑕佸寘鍚睘鎬� + * @param orderDTO 缂栫爜鐢宠鐨勪俊鎭� + */ + private void switchDateAttrOnOrder(CodeClassifyTemplateVO templateVO, CodeOrderDTO orderDTO) { + Map<String, CodeClassifyTemplateAttrVO> dateAttrVOMap = templateVO.getAttributes().stream().filter(s -> StringUtils.isNotBlank(s.getCodeDateFormat())).collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t)); + if (!CollectionUtils.isEmpty(dateAttrVOMap)) { + dateAttrVOMap.forEach((attrId, attrVO) -> { + String value = getValueFromOrderDTO(orderDTO, attrId); + if (StringUtils.isNotBlank(value)) { + DateConverter dateConverter = new DateConverter(); + dateConverter.setAsText(value); + value = VciDateUtil.date2Str(dateConverter.getValue(), VciDateUtil.DateTimeMillFormat); + setValueToOrderDTO(orderDTO, attrId, value); + } + }); + } + } + + /** + * 鎷疯礉鏁版嵁鍒癱bo瀵硅薄涓� + * + * @param classifyFullInfo 鍒嗙被鐨勫叏閮ㄤ俊鎭� + * @param cbo 涓氬姟鏁版嵁 + * @param orderDTO 缂栫爜鐢宠鐨勪俊鎭� + * @param templateVO 妯℃澘鐨勬樉绀哄璞� + * @param edit 鏄惁涓轰慨鏀� + */ + private void copyValueToCBO(CodeClassifyFullInfoBO classifyFullInfo, BaseModel cbo, + CodeOrderDTO orderDTO, CodeClassifyTemplateVO templateVO, + boolean edit) { + String fullPath = ""; + if (!CollectionUtils.isEmpty(classifyFullInfo.getParentClassifyVOs())) { + fullPath = classifyFullInfo.getParentClassifyVOs().stream().sorted(((o1, o2) -> o2.getDataLevel().compareTo(o1.getDataLevel()))) + .map(CodeClassifyVO::getOid).collect(Collectors.joining("##")); + } else { + fullPath = classifyFullInfo.getCurrentClassifyVO().getOid(); + } orderDTO.getData().forEach((key, value) -> { if (!edit || (!checkUnAttrUnEdit(key) && !VciQueryWrapperForDO.LC_STATUS_FIELD.equalsIgnoreCase(key))) { try { - cbo.getData().put(cbo.getData().containsKey(key.toUpperCase())?key.toUpperCase():key, value); + cbo.getData().put(cbo.getData().containsKey(key.toUpperCase()) ? key.toUpperCase() : key, value); } catch (Exception e) { logger.error("璁剧疆灞炴�х殑鍊奸敊璇�", e); } } }); - try { + try { Map<String, String> data = new HashMap<>(); - data.put(cbo.getData().containsKey(CODE_CLASSIFY_OID_FIELD.toUpperCase())?CODE_CLASSIFY_OID_FIELD.toUpperCase():CODE_CLASSIFY_OID_FIELD, classifyFullInfo.getCurrentClassifyVO().getOid()); - data.put(cbo.getData().containsKey(CODE_TEMPLATE_OID_FIELD.toUpperCase())?CODE_TEMPLATE_OID_FIELD.toUpperCase():CODE_TEMPLATE_OID_FIELD, templateVO.getOid()); - data.put(cbo.getData().containsKey(CODE_FULL_PATH_FILED.toUpperCase())?CODE_FULL_PATH_FILED.toUpperCase():CODE_FULL_PATH_FILED, fullPath); - cbo.getData().putAll(data); - cbo.setLastModifyTime(new Date()); - //cbo.setLastModifier(AuthUtil.getUser().getUserName()); + data.put(cbo.getData().containsKey(CODE_CLASSIFY_OID_FIELD.toUpperCase()) ? CODE_CLASSIFY_OID_FIELD.toUpperCase() : CODE_CLASSIFY_OID_FIELD, classifyFullInfo.getCurrentClassifyVO().getOid()); + data.put(cbo.getData().containsKey(CODE_TEMPLATE_OID_FIELD.toUpperCase()) ? CODE_TEMPLATE_OID_FIELD.toUpperCase() : CODE_TEMPLATE_OID_FIELD, templateVO.getOid()); + data.put(cbo.getData().containsKey(CODE_FULL_PATH_FILED.toUpperCase()) ? CODE_FULL_PATH_FILED.toUpperCase() : CODE_FULL_PATH_FILED, fullPath); + cbo.getData().putAll(data); + cbo.setLastModifyTime(new Date()); + //cbo.setLastModifier(AuthUtil.getUser().getUserName()); cbo.setLastModifier(AuthUtil.getUser().getAccount()); - cbo.setTs(new Date()); - if (!edit && StringUtils.isBlank(orderDTO.getLcStatus())) { - //TODO 鍏堝啓鍥哄畾锛屽悗闈㈢敓鍛藉懆鏈熷ソ浜嗗湪缂栧啓 - if (StringUtils.isNotBlank(cbo.getLctid())) { + cbo.setTs(new Date()); + if (!edit && StringUtils.isBlank(orderDTO.getLcStatus())) { + //TODO 鍏堝啓鍥哄畾锛屽悗闈㈢敓鍛藉懆鏈熷ソ浜嗗湪缂栧啓 + if (StringUtils.isNotBlank(cbo.getLctid())) { // OsLifeCycleVO lifeCycleVO = lifeCycleService.getLifeCycleById(cbo.getLctid()); // if (lifeCycleVO != null) { // cbo.setLcStatus("Editing"); //// cbo.setLcStatus(lifeCycleVO.getStartStatus()); // } else { - cbo.setLcStatus(CodeDefaultLC.RELEASED.getValue()); + cbo.setLcStatus(CodeDefaultLC.RELEASED.getValue()); // } - } else { - cbo.setLcStatus(CodeDefaultLC.RELEASED.getValue()); - } + } else { + cbo.setLcStatus(CodeDefaultLC.RELEASED.getValue()); + } - } + } - int secret = VciBaseUtil.getInt(String.valueOf(cbo.getSecretGrade())); - if (secret == 0 || !secretService.checkDataSecret(secret).getData()) { - Integer userSecret = VciBaseUtil.getCurrentUserSecret(); + int secret = VciBaseUtil.getInt(String.valueOf(cbo.getSecretGrade())); + if (secret == 0 || !secretService.checkDataSecret(secret).getData()) { + Integer userSecret = VciBaseUtil.getCurrentUserSecret(); // cbo.setAttributeValue(SECRET_FIELD, String.valueOf((userSecret == null || userSecret == 0) ? UserSecretEnum.NONE.getValue() : userSecret)); - cbo.setSecretGrade(userSecret == null || userSecret == 0 ? UserSecretEnum.NONE.getValue() : userSecret); - } - } catch (Throwable e) { - logger.error("璁剧疆榛樿鐨勫睘鎬х殑鍊奸敊璇�", e); - } - } + cbo.setSecretGrade(userSecret == null || userSecret == 0 ? UserSecretEnum.NONE.getValue() : userSecret); + } + } catch (Throwable e) { + logger.error("璁剧疆榛樿鐨勫睘鎬х殑鍊奸敊璇�", e); + } + } - /** - * 鍒濆鍖栦笟鍔$被鍨� - * --鍒涘缓浜洪粯璁や负褰撳墠鐢ㄦ埛锛屽鏋滈渶瑕佷慨鏀癸紝鍙互鍦ㄨ幏鍙栧悗鑷澶勭悊 - * - * @param btmName 涓氬姟绫诲瀷鐨勫悕绉帮紝浼氳嚜鍔ㄥ彉鎴愬皬鍐� - * @return CodeWupinEntity - * @throws VciBaseException 鍒濆鍖栧嚭閿欑殑鏄細鎶涘嚭寮傚父 - */ - @Override - public BaseModel createCBOByBtmName(String btmName) - throws VciBaseException { - if (btmName != null) { - btmName = btmName.trim().toLowerCase(); - } - try { - String keyPrefix = BTM_INIT_CACHE.concat(StringPool.COLON).concat(AuthUtil.getTenantId()).concat(StringPool.COLON); - Cache.ValueWrapper valueWrapper = CacheUtil.getCache(keyPrefix).get(keyPrefix.concat(String.valueOf(btmName))); - if (valueWrapper == null) { - CacheUtil.getCache(keyPrefix).put(keyPrefix.concat(String.valueOf(btmName)), createBaseModel(btmName)); - valueWrapper = CacheUtil.getCache(keyPrefix).get(keyPrefix.concat(String.valueOf(btmName))); - } - return (BaseModel) valueWrapper.get(); - } catch (Exception e) { - logger.error("鍒涘缓涓氬姟绫诲瀷瀵硅薄", e); - throw new ServiceException("initBtmError:"+"涓氬姟绫诲瀷锛�"+btmName+":"+e.getMessage()); - } - } + /** + * 鍒濆鍖栦笟鍔$被鍨� + * --鍒涘缓浜洪粯璁や负褰撳墠鐢ㄦ埛锛屽鏋滈渶瑕佷慨鏀癸紝鍙互鍦ㄨ幏鍙栧悗鑷澶勭悊 + * + * @param btmName 涓氬姟绫诲瀷鐨勫悕绉帮紝浼氳嚜鍔ㄥ彉鎴愬皬鍐� + * @return CodeWupinEntity + * @throws VciBaseException 鍒濆鍖栧嚭閿欑殑鏄細鎶涘嚭寮傚父 + */ + @Override + public BaseModel createCBOByBtmName(String btmName) + throws VciBaseException { + if (btmName != null) { + btmName = btmName.trim().toLowerCase(); + } + try { + String keyPrefix = BTM_INIT_CACHE.concat(StringPool.COLON).concat(AuthUtil.getTenantId()).concat(StringPool.COLON); + Cache.ValueWrapper valueWrapper = CacheUtil.getCache(keyPrefix).get(keyPrefix.concat(String.valueOf(btmName))); + if (valueWrapper == null) { + CacheUtil.getCache(keyPrefix).put(keyPrefix.concat(String.valueOf(btmName)), createBaseModel(btmName)); + valueWrapper = CacheUtil.getCache(keyPrefix).get(keyPrefix.concat(String.valueOf(btmName))); + } + return (BaseModel) valueWrapper.get(); + } catch (Exception e) { + logger.error("鍒涘缓涓氬姟绫诲瀷瀵硅薄", e); + throw new ServiceException("initBtmError:" + "涓氬姟绫诲瀷锛�" + btmName + ":" + e.getMessage()); + } + } - /** - * 淇濆瓨鍙緭鍙�夌殑淇℃伅 - * - * @param templateVO 妯℃澘鐨勫璞� - * @param cboList 鏁版嵁鐨勫唴瀹� - */ - @Override - public void batchSaveSelectChar(CodeClassifyTemplateVO templateVO, /*List<ClientBusinessObject> cboList*/ - List<BaseModel> cboList) { - if (templateVO != null && !CollectionUtils.isEmpty(cboList)) { - //鏄紓姝ョ殑锛屾墍浠ョ洿鎺ュ惊鐜� - List<CodeClassifyTemplateAttrVO> selectAttrVOs = templateVO.getAttributes().stream().filter(s -> StringUtils.isNotBlank(s.getLibraryIdentification())).collect(Collectors.toList()); + /** + * 淇濆瓨鍙緭鍙�夌殑淇℃伅 + * + * @param templateVO 妯℃澘鐨勫璞� + * @param cboList 鏁版嵁鐨勫唴瀹� + */ + @Override + public void batchSaveSelectChar(CodeClassifyTemplateVO templateVO, /*List<ClientBusinessObject> cboList*/ + List<BaseModel> cboList) { + if (templateVO != null && !CollectionUtils.isEmpty(cboList)) { + //鏄紓姝ョ殑锛屾墍浠ョ洿鎺ュ惊鐜� + List<CodeClassifyTemplateAttrVO> selectAttrVOs = templateVO.getAttributes().stream().filter(s -> StringUtils.isNotBlank(s.getLibraryIdentification())).collect(Collectors.toList()); - if (!CollectionUtils.isEmpty(selectAttrVOs)) { + if (!CollectionUtils.isEmpty(selectAttrVOs)) { //SessionInfo sessionInfo = VciBaseUtil.getCurrentUserSessionInfo(); - selectAttrVOs.parallelStream().forEach(attrVO -> { - List<String> valuesList = new ArrayList<>(); - cboList.parallelStream().forEach(cbo -> { + selectAttrVOs.parallelStream().forEach(attrVO -> { + List<String> valuesList = new ArrayList<>(); + cboList.parallelStream().forEach(cbo -> { //String value = cbo.get.getAttributeValue(attrVO.getId()); - //灏哹ean杞负map,mybatis缁熶竴澶勭悊 - Map<String, String> map = null; + //灏哹ean杞负map,mybatis缁熶竴澶勭悊 + Map<String, String> map = null; //baseModels.stream().forEach(model-> { - try { - map = VciBaseUtil.convertBean2Map(cbo,null); - } catch (Exception e) { - throw new VciBaseException("绫诲瀷杞崲閿欒锛�" + e.getMessage()); - } + try { + map = VciBaseUtil.convertBean2Map(cbo, null); + } catch (Exception e) { + throw new VciBaseException("绫诲瀷杞崲閿欒锛�" + e.getMessage()); + } //}); - String value = map.get(attrVO.getId()); - if (StringUtils.isNotBlank(value)) { - valuesList.add(value); - } - }); - if (!CollectionUtils.isEmpty(valuesList)) { - for (String s : valuesList) { - DictBiz dictBiz = new DictBiz(); - dictBiz.setCode(templateVO.getBtmTypeId()); - dictBiz.setDictKey(s); - dictBiz.setDictValue(s); - //浠庡師鏉ョ殑charService锛堝彲杈撳彲閫夛級鏇存敼涓鸿皟鐢╫md涓殑鎺ュ彛鏉ュ疄鐜� - iDictBizClient.getCheck(dictBiz); - } + String value = map.get(attrVO.getId()); + if (StringUtils.isNotBlank(value)) { + valuesList.add(value); + } + }); + if (!CollectionUtils.isEmpty(valuesList)) { + for (String s : valuesList) { + DictBiz dictBiz = new DictBiz(); + dictBiz.setCode(templateVO.getBtmTypeId()); + dictBiz.setDictKey(s); + dictBiz.setDictValue(s); + //浠庡師鏉ョ殑charService锛堝彲杈撳彲閫夛級鏇存敼涓鸿皟鐢╫md涓殑鎺ュ彛鏉ュ疄鐜� + iDictBizClient.getCheck(dictBiz); + } // charService.saveBySameNamespaceAndFlag(templateVO.getBtmTypeId(), attrVO.getLibraryIdentification(), valuesList, sessionInfo); - } - }); - } - } - } + } + }); + } + } + } /** * 灏佽寮�鍏崇殑鍐呭锛屽父鐢ㄤ簬瀵煎嚭 - * @param dataMap 鏁版嵁鐨勫唴瀹� + * + * @param dataMap 鏁版嵁鐨勫唴瀹� * @param templateVO 妯℃澘鐨勬樉绀� */ @Override - public void wrapperBoolean(List<Map<String, String>> dataMap, CodeClassifyTemplateVO templateVO){ + public void wrapperBoolean(List<Map<String, String>> dataMap, CodeClassifyTemplateVO templateVO) { List<String> booleanAttributes = templateVO.getAttributes().stream().filter(s -> VciFieldTypeEnum.VTBoolean.name().equalsIgnoreCase(s.getAttributeDataType())).map(s -> s.getId().toLowerCase(Locale.ROOT)).collect(Collectors.toList()); - if(!CollectionUtils.isEmpty(booleanAttributes)){ + if (!CollectionUtils.isEmpty(booleanAttributes)) { dataMap.stream().forEach(data -> { - booleanAttributes.stream().forEach(attrId->{ - if(data.containsKey(attrId)){ + booleanAttributes.stream().forEach(attrId -> { + if (data.containsKey(attrId)) { String value = data.get(attrId); - data.put(attrId,BooleanEnum.TRUE.getValue().equalsIgnoreCase(value)?"鏄�":"鍚�"); + data.put(attrId, BooleanEnum.TRUE.getValue().equalsIgnoreCase(value) ? "鏄�" : "鍚�"); } }); }); } } - @Override - public MdmUIInfoVO getFormDefineByTemplateOid(String templateOid, String codeClassifyOid) { - CodeClassifyTemplateVO templateVO = templateService.getObjectHasAttrByOid(templateOid); - MdmUIInfoVO uiInfoVO = new MdmUIInfoVO(); - uiInfoVO.setTemplateVO(templateVO); - uiInfoVO.setFormDefineVO(wrapperFormDefineByTemplate(templateVO, codeClassifyOid)); - wrapperResemble(templateVO, uiInfoVO); - return uiInfoVO; - } + @Override + public MdmUIInfoVO getFormDefineByTemplateOid(String templateOid, String codeClassifyOid) { + CodeClassifyTemplateVO templateVO = templateService.getObjectHasAttrByOid(templateOid); + MdmUIInfoVO uiInfoVO = new MdmUIInfoVO(); + uiInfoVO.setTemplateVO(templateVO); + uiInfoVO.setFormDefineVO(wrapperFormDefineByTemplate(templateVO, codeClassifyOid)); + wrapperResemble(templateVO, uiInfoVO); + return uiInfoVO; + } + /** + * 妯℃澘灞炴�ц浆鎹负琛ㄥ崟瀹氫箟鐨勪俊鎭� + * + * @param templateVO 妯℃澘鐨勬樉绀哄璞� + * @param codeClassifyOid 鍒嗙被鐨勪富閿紝涓虹┖鐨勬椂鍊欙紝鑾峰彇妯℃澘鎵�灞炵殑鍒嗙被涓婚敭.鐢ㄤ簬浜х敓鍒嗙被娉ㄥ叆 + * @return 琛ㄦ牸鐨勪俊鎭� + */ + private UIFormDefineVO wrapperFormDefineByTemplate(CodeClassifyTemplateVO templateVO, String codeClassifyOid) { + UIFormDefineVO formDefineVO = new UIFormDefineVO(); + formDefineVO.setOid(templateVO.getOid()); + formDefineVO.setBtmType(templateVO.getBtmTypeId()); + if (StringUtils.isBlank(codeClassifyOid)) { + codeClassifyOid = templateVO.getCodeclassifyoid(); + } + CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(codeClassifyOid); - /** - * 妯℃澘灞炴�ц浆鎹负琛ㄥ崟瀹氫箟鐨勪俊鎭� - * - * @param templateVO 妯℃澘鐨勬樉绀哄璞� - * @param codeClassifyOid 鍒嗙被鐨勪富閿紝涓虹┖鐨勬椂鍊欙紝鑾峰彇妯℃澘鎵�灞炵殑鍒嗙被涓婚敭.鐢ㄤ簬浜х敓鍒嗙被娉ㄥ叆 - * @return 琛ㄦ牸鐨勪俊鎭� - */ - private UIFormDefineVO wrapperFormDefineByTemplate(CodeClassifyTemplateVO templateVO, String codeClassifyOid) { - UIFormDefineVO formDefineVO = new UIFormDefineVO(); - formDefineVO.setOid(templateVO.getOid()); - formDefineVO.setBtmType(templateVO.getBtmTypeId()); - if (StringUtils.isBlank(codeClassifyOid)) { - codeClassifyOid = templateVO.getCodeclassifyoid(); - } - CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(codeClassifyOid); - - List<UIFormItemVO> itemVOS = new ArrayList<>(); + List<UIFormItemVO> itemVOS = new ArrayList<>(); Map<String, List<CodeClassifyTemplateAttrVO>> attrGroupMap = new HashMap<>(); if (Func.isNotEmpty(templateVO.getAttributes())) { @@ -1137,300 +1600,301 @@ itemVOS.add(formItemVO); }); } - //澶勭悊灞炴�у垎缁� - if (!CollectionUtils.isEmpty(attrGroupMap)) { - //鎸夌収鍒嗙粍鐨勫睘鎬ф帓鍒楋紝鎵惧埌姣忎竴涓垎缁勭殑绗竴涓睘鎬� - for (String key : attrGroupMap.keySet()) { - List<CodeClassifyTemplateAttrVO> value = attrGroupMap.get(key); - //鎵惧埌杩欎釜鍒嗙粍鐨勫睘鎬х殑绗竴涓� - CodeClassifyTemplateAttrVO attrVO = value.stream().sorted(((o1, o2) -> o1.getOrderNum().compareTo(o2.getOrderNum()))).findFirst().get(); - //鎴戜滑鎵惧埌杩欎釜灞炴�у湪鏈�缁堢殑itemVOs閲岀殑浣嶇疆 - UIFormItemVO lineVO = new UIFormItemVO(); - lineVO.setField(attrVO.getId() + "_line"); - lineVO.setType("line"); - lineVO.setText(key); + //澶勭悊灞炴�у垎缁� + if (!CollectionUtils.isEmpty(attrGroupMap)) { + //鎸夌収鍒嗙粍鐨勫睘鎬ф帓鍒楋紝鎵惧埌姣忎竴涓垎缁勭殑绗竴涓睘鎬� + for (String key : attrGroupMap.keySet()) { + List<CodeClassifyTemplateAttrVO> value = attrGroupMap.get(key); + //鎵惧埌杩欎釜鍒嗙粍鐨勫睘鎬х殑绗竴涓� + CodeClassifyTemplateAttrVO attrVO = value.stream().sorted(((o1, o2) -> o1.getOrderNum().compareTo(o2.getOrderNum()))).findFirst().get(); + //鎴戜滑鎵惧埌杩欎釜灞炴�у湪鏈�缁堢殑itemVOs閲岀殑浣嶇疆 + UIFormItemVO lineVO = new UIFormItemVO(); + lineVO.setField(attrVO.getId() + "_line"); + lineVO.setType("line"); + lineVO.setText(key); List<CodeClassifyTemplateAttrVO> collect = value.stream().filter(s -> "true".equals(s.getFormDisplayFlag())).collect(Collectors.toList()); - if(collect.size() == 0){ + if (collect.size() == 0) { continue; } //鎵句綅缃� - for (int i = 0; i < itemVOS.size(); i++) { - UIFormItemVO record = itemVOS.get(i); - if (record.getField().equalsIgnoreCase(attrVO.getId())) { - itemVOS.add(i, lineVO); - break; - } - } - } - } + for (int i = 0; i < itemVOS.size(); i++) { + UIFormItemVO record = itemVOS.get(i); + if (record.getField().equalsIgnoreCase(attrVO.getId())) { + itemVOS.add(i, lineVO); + break; + } + } + } + } - CodeOrderDTO orderDTO = new CodeOrderDTO(); - switchClassifyLevelOnOrder(templateVO, classifyFullInfo, orderDTO); - if (!CollectionUtils.isEmpty(orderDTO.getData())) { - orderDTO.getData().forEach((key, value) -> { - for (int i = 0; i < itemVOS.size(); i++) { - UIFormItemVO itemVO = itemVOS.get(i); - if (itemVO.getField().equalsIgnoreCase(key)) { - itemVO.setDefaultValue(value); - break; - } - } - }); - } - formDefineVO.setItems(itemVOS); - //鏌ヨ鏄惁鏈夊垎绫绘敞鍏ョ殑 - return formDefineVO; - } + CodeOrderDTO orderDTO = new CodeOrderDTO(); + switchClassifyLevelOnOrder(templateVO, classifyFullInfo, orderDTO); + if (!CollectionUtils.isEmpty(orderDTO.getData())) { + orderDTO.getData().forEach((key, value) -> { + for (int i = 0; i < itemVOS.size(); i++) { + UIFormItemVO itemVO = itemVOS.get(i); + if (itemVO.getField().equalsIgnoreCase(key)) { + itemVO.setDefaultValue(value); + break; + } + } + }); + } + formDefineVO.setItems(itemVOS); + //鏌ヨ鏄惁鏈夊垎绫绘敞鍏ョ殑 + return formDefineVO; + } - /** - * 灞炴�х被鍨嬩笌js涓殑瀛楁绫诲瀷鐨勬槧灏� - */ - private static Map<String, String> vciFieldTypeMap = new HashMap<String, String>() {{ - put(VciFieldTypeEnum.VTString.name(), "text"); - put(VciFieldTypeEnum.VTInteger.name(), "text"); - put(VciFieldTypeEnum.VTLong.name(), "text"); - put(VciFieldTypeEnum.VTDouble.name(), "text"); - put(VciFieldTypeEnum.VTClob.name(), "text"); - put(VciFieldTypeEnum.VTBoolean.name(), "truefalse"); - put(VciFieldTypeEnum.VTDateTime.name(), "datetime"); - put(VciFieldTypeEnum.VTDate.name(), "datetime"); - put(VciFieldTypeEnum.VTTime.name(), "datetime"); - put(VciFieldTypeEnum.VTFilePath.name(), "file"); - }}; + /** + * 灞炴�х被鍨嬩笌js涓殑瀛楁绫诲瀷鐨勬槧灏� + */ + private static Map<String, String> vciFieldTypeMap = new HashMap<String, String>() {{ + put(VciFieldTypeEnum.VTString.name(), "text"); + put(VciFieldTypeEnum.VTInteger.name(), "text"); + put(VciFieldTypeEnum.VTLong.name(), "text"); + put(VciFieldTypeEnum.VTDouble.name(), "text"); + put(VciFieldTypeEnum.VTClob.name(), "text"); + put(VciFieldTypeEnum.VTBoolean.name(), "truefalse"); + put(VciFieldTypeEnum.VTDateTime.name(), "datetime"); + put(VciFieldTypeEnum.VTDate.name(), "datetime"); + put(VciFieldTypeEnum.VTTime.name(), "datetime"); + put(VciFieldTypeEnum.VTFilePath.name(), "file"); + }}; - /** - * 妯℃澘灞炴�ц浆鎹负琛ㄥ崟鐨勫瓧娈� - * - * @param attrVO 妯℃澘灞炴�� - * @param btmType 涓氬姟绫诲瀷 - * @return 琛ㄥ崟鐨勫瓧娈� - */ - @Override - public UIFormItemVO templateAttr2FormField(CodeClassifyTemplateAttrVO attrVO, String btmType) { + /** + * 妯℃澘灞炴�ц浆鎹负琛ㄥ崟鐨勫瓧娈� + * + * @param attrVO 妯℃澘灞炴�� + * @param btmType 涓氬姟绫诲瀷 + * @return 琛ㄥ崟鐨勫瓧娈� + */ + @Override + public UIFormItemVO templateAttr2FormField(CodeClassifyTemplateAttrVO attrVO, String btmType) { - UIFormItemVO itemVO = new UIFormItemVO(); - if (SECRET_FILED.equalsIgnoreCase(attrVO.getId())) { + UIFormItemVO itemVO = new UIFormItemVO(); + if (SECRET_FILED.equalsIgnoreCase(attrVO.getId())) { // attrVO.setEnumid(OsEnumServiceImpl.MY_DATA_SECRET); - attrVO.setEnumId(MY_DATA_SECRET); - } - itemVO.setField(attrVO.getId()); - itemVO.setText(attrVO.getName()); - itemVO.setType(vciFieldTypeMap.getOrDefault(attrVO.getAttributeDataType(), "text")); - if (VciBaseUtil.getBoolean(attrVO.getTextAreaFlag())) { - itemVO.setType("textarea"); - } - if (VciFieldTypeEnum.VTLong.name().equalsIgnoreCase(attrVO.getAttributeDataType()) - || VciFieldTypeEnum.VTInteger.name().equalsIgnoreCase(attrVO.getAttributeDataType()) - || VciFieldTypeEnum.VTDouble.name().equalsIgnoreCase(attrVO.getAttributeDataType())) { - itemVO.setVerify("number"); - } - itemVO.setReadOnly(VciBaseUtil.getBoolean(attrVO.getReadOnlyFlag())); - itemVO.setKeyAttr(VciBaseUtil.getBoolean(attrVO.getKeyAttrFlag())); - itemVO.setRequired(VciBaseUtil.getBoolean(attrVO.getRequireFlag())); - itemVO.setDefaultValue(attrVO.getDefaultValue()); - itemVO.setDateFormate(attrVO.getCodeDateFormat()); - itemVO.setHidden(!VciBaseUtil.getBoolean(attrVO.getFormDisplayFlag())); - itemVO.setVerify(attrVO.getVerifyRule()); - itemVO.setPrefix(attrVO.getPrefixValue()); - itemVO.setSuffix(attrVO.getSuffixValue()); - itemVO.setTooltips(attrVO.getExplain()); - itemVO.setInputTip(attrVO.getInputTip()); - itemVO.setSelectLibFlag(attrVO.getLibraryIdentification()); - //鐪嬬湅鏄惁鏈夋灇涓� - if ((StringUtils.isNotBlank(attrVO.getEnumString()) - && !"[]".equalsIgnoreCase(attrVO.getEnumString())) || - StringUtils.isNotBlank(attrVO.getEnumId())) { - itemVO.setType("combox"); - itemVO.setComboxKey(attrVO.getEnumId()); - if (StringUtils.isNotBlank(attrVO.getEnumString())) { - //鎸囧畾鐨勪笅鎷夋鍐呭 - itemVO.setData(JSONObject.parseArray(attrVO.getEnumString(), KeyValue.class)); - if (StringUtils.isBlank(attrVO.getEnumId())) { - itemVO.setComboxKey(itemVO.getField() + "_data"); - } - } - } - //鐪嬫槸鍚︽湁鍙傜収 - if (StringUtils.isNotBlank(attrVO.getReferBtmId()) || StringUtils.isNotBlank(attrVO.getReferConfig())) { - itemVO.setType("refer"); - itemVO.setShowField(itemVO.getField() + "name"); - if (StringUtils.isNotBlank(attrVO.getReferConfig())) { - // 閰嶇疆鐨勫唴瀹� - // itemVO.setReferConfig(JSONObject.parseObject(attrVO.getReferConfig(), UIFormReferVO.class)); + attrVO.setEnumId(MY_DATA_SECRET); + } + itemVO.setField(attrVO.getId()); + itemVO.setText(attrVO.getName()); + itemVO.setType(vciFieldTypeMap.getOrDefault(attrVO.getAttributeDataType(), "text")); + if (VciBaseUtil.getBoolean(attrVO.getTextAreaFlag())) { + itemVO.setType("textarea"); + } + if (VciFieldTypeEnum.VTLong.name().equalsIgnoreCase(attrVO.getAttributeDataType()) + || VciFieldTypeEnum.VTInteger.name().equalsIgnoreCase(attrVO.getAttributeDataType()) + || VciFieldTypeEnum.VTDouble.name().equalsIgnoreCase(attrVO.getAttributeDataType())) { + itemVO.setVerify("number"); + } + itemVO.setReadOnly(VciBaseUtil.getBoolean(attrVO.getReadOnlyFlag())); + itemVO.setKeyAttr(VciBaseUtil.getBoolean(attrVO.getKeyAttrFlag())); + itemVO.setRequired(VciBaseUtil.getBoolean(attrVO.getRequireFlag())); + itemVO.setDefaultValue(attrVO.getDefaultValue()); + itemVO.setDateFormate(attrVO.getCodeDateFormat()); + itemVO.setHidden(!VciBaseUtil.getBoolean(attrVO.getFormDisplayFlag())); + itemVO.setVerify(attrVO.getVerifyRule()); + itemVO.setPrefix(attrVO.getPrefixValue()); + itemVO.setSuffix(attrVO.getSuffixValue()); + itemVO.setTooltips(attrVO.getExplain()); + itemVO.setInputTip(attrVO.getInputTip()); + itemVO.setSelectLibFlag(attrVO.getLibraryIdentification()); + //鐪嬬湅鏄惁鏈夋灇涓� + if ((StringUtils.isNotBlank(attrVO.getEnumString()) + && !"[]".equalsIgnoreCase(attrVO.getEnumString())) || + StringUtils.isNotBlank(attrVO.getEnumId())) { + itemVO.setType("combox"); + itemVO.setComboxKey(attrVO.getEnumId()); + if (StringUtils.isNotBlank(attrVO.getEnumString())) { + //鎸囧畾鐨勪笅鎷夋鍐呭 + itemVO.setData(JSONObject.parseArray(attrVO.getEnumString(), KeyValue.class)); + if (StringUtils.isBlank(attrVO.getEnumId())) { + itemVO.setComboxKey(itemVO.getField() + "_data"); + } + } + } + //鐪嬫槸鍚︽湁鍙傜収 + if (StringUtils.isNotBlank(attrVO.getReferBtmId()) || StringUtils.isNotBlank(attrVO.getReferConfig())) { + itemVO.setType("refer"); + itemVO.setShowField(itemVO.getField() + "name"); + if (StringUtils.isNotBlank(attrVO.getReferConfig())) { + // 閰嶇疆鐨勫唴瀹� + // itemVO.setReferConfig(JSONObject.parseObject(attrVO.getReferConfig(), UIFormReferVO.class)); itemVO.setReferConfig(referConfigToUIUiTable(attrVO.getReferConfig())); - } else { - UIFormReferVO formReferVO = new UIFormReferVO(); - formReferVO.setType("default"); - formReferVO.setReferType(attrVO.getReferBtmId()); - itemVO.setReferConfig(formReferVO); - } - } + } else { + UIFormReferVO formReferVO = new UIFormReferVO(); + formReferVO.setType("default"); + formReferVO.setReferType(attrVO.getReferBtmId()); + itemVO.setReferConfig(formReferVO); + } + } - //濡傛灉鏄粍鍚堣鍒欙紝鍒嗙被娉ㄥ叆鐨勶紝鏄剧ず涓哄彧璇� - if (StringUtils.isNotBlank(attrVO.getComponentRule())) { - itemVO.setReadOnly(true); - itemVO.setTooltips("鏈睘鎬т负缁勫悎瑙勫垯"); - itemVO.setRequired(false); - } - if (StringUtils.isNotBlank(attrVO.getClassifyInvokeAttr())) { - itemVO.setReadOnly(!VciBaseUtil.getBoolean(attrVO.getClassifyInvokeEditFlag())); - itemVO.setTooltips("鏈睘鎬ф槸鍒嗙被娉ㄥ叆"); - itemVO.setRequired(false); - } + //濡傛灉鏄粍鍚堣鍒欙紝鍒嗙被娉ㄥ叆鐨勶紝鏄剧ず涓哄彧璇� + if (StringUtils.isNotBlank(attrVO.getComponentRule())) { + itemVO.setReadOnly(true); + itemVO.setTooltips("鏈睘鎬т负缁勫悎瑙勫垯"); + itemVO.setRequired(false); + } + if (StringUtils.isNotBlank(attrVO.getClassifyInvokeAttr())) { + itemVO.setReadOnly(!VciBaseUtil.getBoolean(attrVO.getClassifyInvokeEditFlag())); + itemVO.setTooltips("鏈睘鎬ф槸鍒嗙被娉ㄥ叆"); + itemVO.setRequired(false); + } - if (VciQueryWrapperForDO.LC_STATUS_FIELD.equalsIgnoreCase(itemVO.getField())) { - //鏄敓鍛藉懆鏈熺姸鎬� - itemVO.setType("combox"); - itemVO.setComboxKey(btmType + LC_STATUS_SUBFIX); - } - return itemVO; - } + if (VciQueryWrapperForDO.LC_STATUS_FIELD.equalsIgnoreCase(itemVO.getField())) { + //鏄敓鍛藉懆鏈熺姸鎬� + itemVO.setType("combox"); + itemVO.setComboxKey(btmType + LC_STATUS_SUBFIX); + } + return itemVO; + } - /** - * 灏佽鐩镐技椤规煡璇㈢殑鍒楄〃 - * - * @param templateVO 妯℃澘鐨勬樉绀哄璞� - * @param uiInfoVO 椤甸潰鐨勪俊鎭� - */ - private void wrapperResemble(CodeClassifyTemplateVO templateVO, MdmUIInfoVO uiInfoVO) { - List<CodeClassifyTemplateAttrVO> resembleAttrList = templateVO.getAttributes().stream().filter(s -> VciBaseUtil.getBoolean(s.getSameRepeatAttrFlag()) - || VciQueryWrapperForDO.ID_FIELD.equalsIgnoreCase(s.getId())).collect(Collectors.toList()); - if (!CollectionUtils.isEmpty(resembleAttrList) && resembleAttrList.size() > 1) { - UITableDefineVO resembleTable = new UITableDefineVO(); - resembleTable.setOid(templateVO.getOid()); - resembleTable.setBtmType(templateVO.getBtmTypeId()); - resembleTable.setDisplayQueryArea(false); - resembleTable.setPageVO(new UITablePageVO()); - //澶勭悊鎵�鏈夌殑鍒楋紝杩欎釜妯℃澘娌℃湁鍚堝苟鐨勮〃澶寸殑鎯呭喌 - List<UITableFieldVO> fieldVOList = new ArrayList<>(); - resembleAttrList.forEach(attrVO -> { - UITableFieldVO tableFieldVO = templateAttr2TableField(attrVO, false); - tableFieldVO.setHidden(false); - fieldVOList.add(tableFieldVO); - }); - List<List<UITableFieldVO>> cols = new ArrayList<>(); - cols.add(fieldVOList); - resembleTable.setCols(cols); - uiInfoVO.setResembleTableVO(resembleTable); - } - } + /** + * 灏佽鐩镐技椤规煡璇㈢殑鍒楄〃 + * + * @param templateVO 妯℃澘鐨勬樉绀哄璞� + * @param uiInfoVO 椤甸潰鐨勪俊鎭� + */ + private void wrapperResemble(CodeClassifyTemplateVO templateVO, MdmUIInfoVO uiInfoVO) { + List<CodeClassifyTemplateAttrVO> resembleAttrList = templateVO.getAttributes().stream().filter(s -> VciBaseUtil.getBoolean(s.getSameRepeatAttrFlag()) + || VciQueryWrapperForDO.ID_FIELD.equalsIgnoreCase(s.getId())).collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(resembleAttrList) && resembleAttrList.size() > 1) { + UITableDefineVO resembleTable = new UITableDefineVO(); + resembleTable.setOid(templateVO.getOid()); + resembleTable.setBtmType(templateVO.getBtmTypeId()); + resembleTable.setDisplayQueryArea(false); + resembleTable.setPageVO(new UITablePageVO()); + //澶勭悊鎵�鏈夌殑鍒楋紝杩欎釜妯℃澘娌℃湁鍚堝苟鐨勮〃澶寸殑鎯呭喌 + List<UITableFieldVO> fieldVOList = new ArrayList<>(); + resembleAttrList.forEach(attrVO -> { + UITableFieldVO tableFieldVO = templateAttr2TableField(attrVO, false); + tableFieldVO.setHidden(false); + fieldVOList.add(tableFieldVO); + }); + List<List<UITableFieldVO>> cols = new ArrayList<>(); + cols.add(fieldVOList); + resembleTable.setCols(cols); + uiInfoVO.setResembleTableVO(resembleTable); + } + } - /** - * 妯℃澘灞炴�ц浆鎹负琛ㄦ牸鏄剧ず鐨勯厤缃� - * - * @param attrVO 妯℃澘灞炴�� - * @param forEdit 鏄惁鏄紪杈戞墍闇� - * @return 琛ㄦ牸鐨勫瓧娈� - */ - @Override - public UITableFieldVO templateAttr2TableField(CodeClassifyTemplateAttrVO attrVO, boolean forEdit) { - UITableFieldVO fieldVO = new UITableFieldVO(); - if (SECRET_FILED.equalsIgnoreCase(attrVO.getId())) { - attrVO.setEnumId(MY_DATA_SECRET); - } - fieldVO.setField(attrVO.getId()); - fieldVO.setTitle(attrVO.getName()); - fieldVO.setFieldType(vciFieldTypeMap.getOrDefault(attrVO.getAttributeDataType(), "text")); - fieldVO.setSort(true); - fieldVO.setSortField(fieldVO.getField()); - fieldVO.setQueryField(fieldVO.getField()); - if (forEdit) { - fieldVO.setHidden(!VciBaseUtil.getBoolean(attrVO.getFormDisplayFlag())); - } else { - fieldVO.setHidden(!VciBaseUtil.getBoolean(attrVO.getTableDisplayFlag())); - } - if (attrVO.getAttrTableWidth() != null && attrVO.getAttrTableWidth() > 0) { - fieldVO.setMinWidth(Integer.valueOf(attrVO.getAttrTableWidth())); - fieldVO.setWidth(Integer.valueOf(attrVO.getAttrTableWidth())); - } - //鐪嬬湅鏄惁鏈夋灇涓� - if ((StringUtils.isNotBlank(attrVO.getEnumString()) - && !"[]".equalsIgnoreCase(attrVO.getEnumString())) || - StringUtils.isNotBlank(attrVO.getEnumId())) { - fieldVO.setFieldType("combox"); - fieldVO.setField(fieldVO.getField() + "Text"); - fieldVO.setComboxKey(attrVO.getEnumId()); - if (StringUtils.isNotBlank(attrVO.getEnumString())) { - //鎸囧畾鐨勪笅鎷夋鍐呭 - fieldVO.setData(JSONObject.parseArray(attrVO.getEnumString(), KeyValue.class)); - if (StringUtils.isBlank(attrVO.getEnumId())) { - fieldVO.setComboxKey(fieldVO.getField() + "_data"); - } - } else { - List<KeyValue> osEnumItemVOList = VciOmdUtil.enumsToListKeyVale(EnumCache.getList(attrVO.getEnumId())); - fieldVO.setData(osEnumItemVOList); - } - } - //鐪嬫槸鍚︽湁鍙傜収 - if (StringUtils.isNotBlank(attrVO.getReferBtmId()) || StringUtils.isNotBlank(attrVO.getReferConfig())) { - fieldVO.setFieldType("refer"); - fieldVO.setQueryField(fieldVO.getField()); - fieldVO.setField(fieldVO.getField() + "name"); - fieldVO.setShowField(fieldVO.getField()); - if (StringUtils.isNotBlank(attrVO.getReferConfig())) { - //閰嶇疆鐨勫唴瀹� - // fieldVO.setReferConfig(JSONObject.parseObject(attrVO.getReferConfig(), UIFormReferVO.class)); + /** + * 妯℃澘灞炴�ц浆鎹负琛ㄦ牸鏄剧ず鐨勯厤缃� + * + * @param attrVO 妯℃澘灞炴�� + * @param forEdit 鏄惁鏄紪杈戞墍闇� + * @return 琛ㄦ牸鐨勫瓧娈� + */ + @Override + public UITableFieldVO templateAttr2TableField(CodeClassifyTemplateAttrVO attrVO, boolean forEdit) { + UITableFieldVO fieldVO = new UITableFieldVO(); + if (SECRET_FILED.equalsIgnoreCase(attrVO.getId())) { + attrVO.setEnumId(MY_DATA_SECRET); + } + fieldVO.setField(attrVO.getId()); + fieldVO.setTitle(attrVO.getName()); + fieldVO.setFieldType(vciFieldTypeMap.getOrDefault(attrVO.getAttributeDataType(), "text")); + fieldVO.setSort(true); + fieldVO.setSortField(fieldVO.getField()); + fieldVO.setQueryField(fieldVO.getField()); + if (forEdit) { + fieldVO.setHidden(!VciBaseUtil.getBoolean(attrVO.getFormDisplayFlag())); + } else { + fieldVO.setHidden(!VciBaseUtil.getBoolean(attrVO.getTableDisplayFlag())); + } + if (attrVO.getAttrTableWidth() != null && attrVO.getAttrTableWidth() > 0) { + fieldVO.setMinWidth(Integer.valueOf(attrVO.getAttrTableWidth())); + fieldVO.setWidth(Integer.valueOf(attrVO.getAttrTableWidth())); + } + //鐪嬬湅鏄惁鏈夋灇涓� + if ((StringUtils.isNotBlank(attrVO.getEnumString()) + && !"[]".equalsIgnoreCase(attrVO.getEnumString())) || + StringUtils.isNotBlank(attrVO.getEnumId())) { + fieldVO.setFieldType("combox"); + fieldVO.setField(fieldVO.getField() + "Text"); + fieldVO.setComboxKey(attrVO.getEnumId()); + if (StringUtils.isNotBlank(attrVO.getEnumString())) { + //鎸囧畾鐨勪笅鎷夋鍐呭 + fieldVO.setData(JSONObject.parseArray(attrVO.getEnumString(), KeyValue.class)); + if (StringUtils.isBlank(attrVO.getEnumId())) { + fieldVO.setComboxKey(fieldVO.getField() + "_data"); + } + } else { + List<KeyValue> osEnumItemVOList = VciOmdUtil.enumsToListKeyVale(EnumCache.getList(attrVO.getEnumId())); + fieldVO.setData(osEnumItemVOList); + } + } + //鐪嬫槸鍚︽湁鍙傜収 + if (StringUtils.isNotBlank(attrVO.getReferBtmId()) || StringUtils.isNotBlank(attrVO.getReferConfig())) { + fieldVO.setFieldType("refer"); + fieldVO.setQueryField(fieldVO.getField()); + fieldVO.setField(fieldVO.getField() + "name"); + fieldVO.setShowField(fieldVO.getField()); + if (StringUtils.isNotBlank(attrVO.getReferConfig())) { + //閰嶇疆鐨勫唴瀹� + // fieldVO.setReferConfig(JSONObject.parseObject(attrVO.getReferConfig(), UIFormReferVO.class)); fieldVO.setReferConfig(referConfigToUIUiTable(attrVO.getReferConfig())); - } else { - UIFormReferVO formReferVO = new UIFormReferVO(); - formReferVO.setType("default"); - formReferVO.setReferType(attrVO.getReferBtmId()); - fieldVO.setReferConfig(formReferVO); - } - } - if (VciQueryWrapperForDO.LC_STATUS_FIELD.equalsIgnoreCase(fieldVO.getSortField())) { - fieldVO.setField("lcstatus_text"); - } - Map<String, String> eventJsMap = new HashMap<>(); - //瓒呴摼鎺ヤ笌妯℃澘鏄簰鏂� - if (StringUtils.isNotBlank(attrVO.getTableHref())) { - String event = fieldVO.getSortField() + "_href"; - eventJsMap.put(event, attrVO.getTableHref()); - fieldVO.setTemplet("function(d){ return '<a class=\"layui-btn layui-btn-intable \" lay-event=\"" + event + "\">d." + fieldVO.getField() + "</a>';}"); - } - if (StringUtils.isNotBlank(attrVO.getTableDisplayJs())) { - //鐩存帴鍐檉unction(d){ return xxxxx;} - fieldVO.setTemplet(attrVO.getTableDisplayJs()); - } - if (StringUtils.isBlank(fieldVO.getTemplet()) && VciFieldTypeEnum.VTBoolean.name().equalsIgnoreCase(attrVO.getAttributeDataType())) { - fieldVO.setTemplet("function(row,column){return row[column.property]=='true' || row[column.property]=='1'?'鏄�':'鍚�'}"); + } else { + UIFormReferVO formReferVO = new UIFormReferVO(); + formReferVO.setType("default"); + formReferVO.setReferType(attrVO.getReferBtmId()); + fieldVO.setReferConfig(formReferVO); + } + } + if (VciQueryWrapperForDO.LC_STATUS_FIELD.equalsIgnoreCase(fieldVO.getSortField())) { + fieldVO.setField("lcstatus_text"); + } + Map<String, String> eventJsMap = new HashMap<>(); + //瓒呴摼鎺ヤ笌妯℃澘鏄簰鏂� + if (StringUtils.isNotBlank(attrVO.getTableHref())) { + String event = fieldVO.getSortField() + "_href"; + eventJsMap.put(event, attrVO.getTableHref()); + fieldVO.setTemplet("function(d){ return '<a class=\"layui-btn layui-btn-intable \" lay-event=\"" + event + "\">d." + fieldVO.getField() + "</a>';}"); + } + if (StringUtils.isNotBlank(attrVO.getTableDisplayJs())) { + //鐩存帴鍐檉unction(d){ return xxxxx;} + fieldVO.setTemplet(attrVO.getTableDisplayJs()); + } + if (StringUtils.isBlank(fieldVO.getTemplet()) && VciFieldTypeEnum.VTBoolean.name().equalsIgnoreCase(attrVO.getAttributeDataType())) { + fieldVO.setTemplet("function(row,column){return row[column.property]=='true' || row[column.property]=='1'?'鏄�':'鍚�'}"); // fieldVO.setTemplet("function(d){return $webUtil.formateBoolean(d." + fieldVO.getField() + ");}"); - } - fieldVO.setOptionJsMap(eventJsMap); - fieldVO.setStyle(attrVO.getTableDisplayStyle()); - fieldVO.setTableDisplayFlag(attrVO.getTableDisplayFlag()); - //鍒楄〃閲屼笉鍏佽鐩存帴缂栬緫 - fieldVO.setDateFormate(attrVO.getCodeDateFormat()); - return fieldVO; - } + } + fieldVO.setOptionJsMap(eventJsMap); + fieldVO.setStyle(attrVO.getTableDisplayStyle()); + fieldVO.setTableDisplayFlag(attrVO.getTableDisplayFlag()); + //鍒楄〃閲屼笉鍏佽鐩存帴缂栬緫 + fieldVO.setDateFormate(attrVO.getCodeDateFormat()); + return fieldVO; + } /** * 灏唕eferconfig杞崲涓篔SON鏍煎紡鐨刄IFormReferVO + * * @param codeReferConfigVO * @return */ - private UIFormReferVO referConfigToUIUiTable(String codeReferConfigVO){ + private UIFormReferVO referConfigToUIUiTable(String codeReferConfigVO) { CodeReferConfigVO codeReferConfig = JSONObject.parseObject(codeReferConfigVO, CodeReferConfigVO.class); // 鎷疯礉涓轰互鍓嶇殑鑰佸璞� UIFormReferVO uiFormReferVO = new UIFormReferVO(); - org.springblade.core.tool.utils.BeanUtil.copy(codeReferConfig,uiFormReferVO); + org.springblade.core.tool.utils.BeanUtil.copy(codeReferConfig, uiFormReferVO); // 琛ㄦ牸鐨勮嚜瀹氫箟瀹氫箟 UITableCustomDefineVO uiTableConfigVO = new UITableCustomDefineVO(); - uiTableConfigVO.setPage(new UITablePageVO(codeReferConfig.getLimit(),1)); + uiTableConfigVO.setPage(new UITablePageVO(codeReferConfig.getLimit(), 1)); // 鍒楄〃鐨勫垪鐨勪俊鎭浆鎹� List<UITableFieldVO> uiTableFieldVOs = new ArrayList<>(); // 蹇�熸煡璇㈠垪 List<UITableFieldVO> queryColumns = new ArrayList<>(); - if(!CollectionUtils.isEmpty(codeReferConfig.getCodeShowFieldConfigVOS())){ - codeReferConfig.getCodeShowFieldConfigVOS().stream().forEach(showField ->{ + if (!CollectionUtils.isEmpty(codeReferConfig.getCodeShowFieldConfigVOS())) { + codeReferConfig.getCodeShowFieldConfigVOS().stream().forEach(showField -> { UITableFieldVO tableColVO = new UITableFieldVO(); - org.springblade.core.tool.utils.BeanUtil.copy(showField,tableColVO); + org.springblade.core.tool.utils.BeanUtil.copy(showField, tableColVO); tableColVO.setSortField(showField.getAttrSortField()); uiTableFieldVOs.add(tableColVO); - if(showField.getIsQuery().equals("true")){ + if (showField.getIsQuery().equals("true")) { queryColumns.add(tableColVO); } }); @@ -1443,234 +1907,234 @@ uiFormReferVO.setTableConfig(uiTableConfigVO); //瀛楁鍚嶄笉涓�鑷达紝闇�瑕佹墜鍔╯et - uiFormReferVO.setMuti(StringUtils.isBlank(codeReferConfig.getIsMuti())?false:true); - uiFormReferVO.setInitSort(new UIFieldSortVO(codeReferConfig.getSortField(),codeReferConfig.getSortType())); + uiFormReferVO.setMuti(StringUtils.isBlank(codeReferConfig.getIsMuti()) ? false : true); + uiFormReferVO.setInitSort(new UIFieldSortVO(codeReferConfig.getSortField(), codeReferConfig.getSortType())); // 绛涢�夋潯浠� HashMap<String, String> whereMap = new HashMap<>(); - if(!CollectionUtils.isEmpty(codeReferConfig.getCodeSrchCondConfigVOS())){ - codeReferConfig.getCodeSrchCondConfigVOS().stream().forEach(srch->{ - whereMap.put(srch.getFilterField()+srch.getFilterType(),srch.getFilterValue()); + if (!CollectionUtils.isEmpty(codeReferConfig.getCodeSrchCondConfigVOS())) { + codeReferConfig.getCodeSrchCondConfigVOS().stream().forEach(srch -> { + whereMap.put(srch.getFilterField() + srch.getFilterType(), srch.getFilterValue()); }); } uiFormReferVO.setWhere(whereMap); return uiFormReferVO; } - /** - * 鐩镐技椤规煡璇� - * - * @param orderDTO 缂栫爜鐨勭浉鍏充俊鎭� - * @return 鏁版嵁鍒楄〃 - */ - @Override - public DataGrid<Map<String, String>> resembleQuery(CodeOrderDTO orderDTO) { - VciBaseUtil.alertNotNull(orderDTO, "鐢宠鐨勪俊鎭�", orderDTO.getCodeClassifyOid(), "鍒嗙被涓婚敭", orderDTO.getTemplateOid(), "妯℃澘涓婚敭"); - CodeClassifyFullInfoBO fullInfoBO = classifyService.getClassifyFullInfo(orderDTO.getCodeClassifyOid()); - CodeClassifyTemplateVO templateVO = templateService.getObjectHasAttrByOid(orderDTO.getTemplateOid()); - switchClassifyLevelOnOrder(templateVO, fullInfoBO, orderDTO); - switchDateAttrOnOrder(templateVO, orderDTO); - switchComponentAttrOnOrder(templateVO, orderDTO); - //闇�瑕佽幏鍙栨槸鍚︽湁鐩镐技鏌ヨ灞炴�� - Map<String, CodeClassifyTemplateAttrVO> attrVOs = templateVO.getAttributes().stream().filter(s -> VciBaseUtil.getBoolean(s.getSameRepeatAttrFlag())).collect(Collectors.toMap(s -> s.getId(), t -> t)); - if (CollectionUtils.isEmpty(attrVOs)) { - //閮芥病鏈夊睘鎬э紝鑲畾涓嶈兘鏌ヨ浜� - return new DataGrid<>(); - } - Map<String, String> conditionMap = new HashMap<>(); - //鎴戜滑棣栧厛鑾峰彇鏈夋病鏈夋煡璇㈣鍒� - CodeResembleRuleVO resembleRuleVO = Optional.ofNullable(getUseResembleRule(fullInfoBO, fullInfoBO.getCurrentClassifyVO())).orElseGet(() -> new CodeResembleRuleVO()); - attrVOs.forEach((attrId, attrVO) -> { - String value = getValueFromOrderDTO(orderDTO, attrId); - if (value == null) { - value = ""; - } - wrapperResembleConditionMap(value, resembleRuleVO, attrId, conditionMap); - }); + /** + * 鐩镐技椤规煡璇� + * + * @param orderDTO 缂栫爜鐨勭浉鍏充俊鎭� + * @return 鏁版嵁鍒楄〃 + */ + @Override + public DataGrid<Map<String, String>> resembleQuery(CodeOrderDTO orderDTO) { + VciBaseUtil.alertNotNull(orderDTO, "鐢宠鐨勪俊鎭�", orderDTO.getCodeClassifyOid(), "鍒嗙被涓婚敭", orderDTO.getTemplateOid(), "妯℃澘涓婚敭"); + CodeClassifyFullInfoBO fullInfoBO = classifyService.getClassifyFullInfo(orderDTO.getCodeClassifyOid()); + CodeClassifyTemplateVO templateVO = templateService.getObjectHasAttrByOid(orderDTO.getTemplateOid()); + switchClassifyLevelOnOrder(templateVO, fullInfoBO, orderDTO); + switchDateAttrOnOrder(templateVO, orderDTO); + switchComponentAttrOnOrder(templateVO, orderDTO); + //闇�瑕佽幏鍙栨槸鍚︽湁鐩镐技鏌ヨ灞炴�� + Map<String, CodeClassifyTemplateAttrVO> attrVOs = templateVO.getAttributes().stream().filter(s -> VciBaseUtil.getBoolean(s.getSameRepeatAttrFlag())).collect(Collectors.toMap(s -> s.getId(), t -> t)); + if (CollectionUtils.isEmpty(attrVOs)) { + //閮芥病鏈夊睘鎬э紝鑲畾涓嶈兘鏌ヨ浜� + return new DataGrid<>(); + } + Map<String, String> conditionMap = new HashMap<>(); + //鎴戜滑棣栧厛鑾峰彇鏈夋病鏈夋煡璇㈣鍒� + CodeResembleRuleVO resembleRuleVO = Optional.ofNullable(getUseResembleRule(fullInfoBO, fullInfoBO.getCurrentClassifyVO())).orElseGet(() -> new CodeResembleRuleVO()); + attrVOs.forEach((attrId, attrVO) -> { + String value = getValueFromOrderDTO(orderDTO, attrId); + if (value == null) { + value = ""; + } + wrapperResembleConditionMap(value, resembleRuleVO, attrId, conditionMap); + }); - //娌℃湁闄愬埗鍒嗙被锛屼絾鏄竴涓ā鏉垮彧鍙兘鍦ㄤ竴涓笟鍔$被鍨嬮噷闈紝鎵�浠ョ洿鎺ユ煡璇㈣繖涓笟鍔$被鍨嬪嵆鍙� - if (!CollectionUtils.isEmpty(conditionMap)) { - Map<String, String> andConditionMap = new HashMap<>(); - andConditionMap.put("t.lastr", "1"); - andConditionMap.put("t.lastv", "1"); - if (StringUtils.isNotBlank(orderDTO.getOid())) { - andConditionMap.put("t.oid", QueryOptionConstant.NOTEQUAL + orderDTO.getOid()); - } - conditionMap.putAll(andConditionMap); - PageHelper pageHelper = new PageHelper(-1); - pageHelper.addDefaultDesc("id"); - return queryGrid(fullInfoBO.getTopClassifyVO().getBtmTypeId(), templateVO, conditionMap, pageHelper); - } - return new DataGrid<>(); - } + //娌℃湁闄愬埗鍒嗙被锛屼絾鏄竴涓ā鏉垮彧鍙兘鍦ㄤ竴涓笟鍔$被鍨嬮噷闈紝鎵�浠ョ洿鎺ユ煡璇㈣繖涓笟鍔$被鍨嬪嵆鍙� + if (!CollectionUtils.isEmpty(conditionMap)) { + Map<String, String> andConditionMap = new HashMap<>(); + andConditionMap.put("t.lastr", "1"); + andConditionMap.put("t.lastv", "1"); + if (StringUtils.isNotBlank(orderDTO.getOid())) { + andConditionMap.put("t.oid", QueryOptionConstant.NOTEQUAL + orderDTO.getOid()); + } + conditionMap.putAll(andConditionMap); + PageHelper pageHelper = new PageHelper(-1); + pageHelper.addDefaultDesc("id"); + return queryGrid(fullInfoBO.getTopClassifyVO().getBtmTypeId(), templateVO, conditionMap, pageHelper); + } + return new DataGrid<>(); + } - /** - * 鑾峰彇浣跨敤鐨勭浉浼兼煡璇㈣鍒� - * - * @param fullInfoBO 绫诲叏閮ㄤ俊鎭� - * @param currentClassifyVO 褰撳墠鐨勫垎绫� - * @return 瑙勫垯锛屽鏋滀笉瀛樺湪浼氳繑鍥濶ull - */ - @Override - public CodeResembleRuleVO getUseResembleRule(CodeClassifyFullInfoBO fullInfoBO, CodeClassifyVO currentClassifyVO) { - if (currentClassifyVO == null) { - return null; - } - if (currentClassifyVO != null && StringUtils.isNotBlank(currentClassifyVO.getCodeResembleRuleOid())) { - //璇存槑宸茬粡瀛樺湪 - return resembleRuleService.getObjectByOid(currentClassifyVO.getCodeResembleRuleOid()); - } - if (StringUtils.isBlank(currentClassifyVO.getParentCodeClassifyOid())) { - return null; - } - Map<String, CodeClassifyVO> classifyVOMap = fullInfoBO.getParentClassifyVOs().stream().collect(Collectors.toMap(s -> s.getOid(), t -> t)); - return getUseResembleRule(fullInfoBO, classifyVOMap.getOrDefault(currentClassifyVO.getParentCodeClassifyOid(), null)); - } + /** + * 鑾峰彇浣跨敤鐨勭浉浼兼煡璇㈣鍒� + * + * @param fullInfoBO 绫诲叏閮ㄤ俊鎭� + * @param currentClassifyVO 褰撳墠鐨勫垎绫� + * @return 瑙勫垯锛屽鏋滀笉瀛樺湪浼氳繑鍥濶ull + */ + @Override + public CodeResembleRuleVO getUseResembleRule(CodeClassifyFullInfoBO fullInfoBO, CodeClassifyVO currentClassifyVO) { + if (currentClassifyVO == null) { + return null; + } + if (currentClassifyVO != null && StringUtils.isNotBlank(currentClassifyVO.getCodeResembleRuleOid())) { + //璇存槑宸茬粡瀛樺湪 + return resembleRuleService.getObjectByOid(currentClassifyVO.getCodeResembleRuleOid()); + } + if (StringUtils.isBlank(currentClassifyVO.getParentCodeClassifyOid())) { + return null; + } + Map<String, CodeClassifyVO> classifyVOMap = fullInfoBO.getParentClassifyVOs().stream().collect(Collectors.toMap(s -> s.getOid(), t -> t)); + return getUseResembleRule(fullInfoBO, classifyVOMap.getOrDefault(currentClassifyVO.getParentCodeClassifyOid(), null)); + } - /** - * 灏佽鐩镐技椤规煡璇㈢殑鏌ヨ鏉′欢鐨勬槧灏� - * - * @param value 鍊� - * @param resembleRuleVO 鐩镐技椤硅鍒� - * @param attrId 灞炴�х殑缂栧彿 - * @param conditionMap 鏌ヨ鏉′欢 - */ - @Override - public void wrapperResembleConditionMap(String value, CodeResembleRuleVO resembleRuleVO, String attrId, Map<String, String> conditionMap) { - boolean ignoreSpace = VciBaseUtil.getBoolean(resembleRuleVO.getIgnorespaceflag()) || VciBaseUtil.getBoolean(resembleRuleVO.getIgnoreallspaceflag()); - if (StringUtils.isBlank(value)) { - //涓虹┖鐨勬椂鍊欏氨涓嶆煡璇㈠畠灏辨槸 - } else { - String queryKey = ""; - String queryValue = ""; - boolean ignoreCase = VciBaseUtil.getBoolean(resembleRuleVO.getIgnorecaseflag()); - boolean ignoreWidth = VciBaseUtil.getBoolean(resembleRuleVO.getIgnorewidthflag()); - boolean trimAll = VciBaseUtil.getBoolean(resembleRuleVO.getIgnoreallspaceflag()); - boolean trim = VciBaseUtil.getBoolean(resembleRuleVO.getIgnoreallspaceflag()); - String temp = ""; - if (ignoreCase && ignoreSpace && ignoreWidth) { - //蹇界暐澶у皬鍐欙紝涓斿幓绌猴紝蹇界暐鍏ㄥ崐瑙� - temp = (trimAll ? "REPLACE" : "TRIM") + "(UPPER(to_single_byte('%s')) " + (trimAll ? ",' ','')" : ")"); - } else if (ignoreCase && ignoreSpace && !ignoreWidth) { - //蹇界暐澶у皬鍐欍�佸幓绌恒�佷笉蹇界暐鍏ㄥ崐瑙� - temp = (trimAll ? "REPLACE" : "TRIM") + "(UPPER(%s) " + (trimAll ? ",' ','')" : ")"); - } else if (ignoreCase && !ignoreSpace && ignoreWidth) { - //蹇界暐澶у皬鍐欍�佷笉鍘荤┖銆佸拷鐣ュ叏鍗婅 - temp = "UPPER(to_single_byte('%s'))"; - } else if (!ignoreCase && ignoreSpace && ignoreWidth) { - //涓嶅拷鐣ュぇ灏忓啓銆佸幓绌恒�佸拷鐣ュ叏鍗婅 - temp = (trimAll ? "REPLACE" : "TRIM") + "(to_single_byte('%s') " + (trimAll ? ",' ','')" : ")"); - } else if (ignoreCase && !ignoreSpace && !ignoreWidth) { - //蹇界暐澶у皬鍐欍�佷笉鍘荤┖銆佷笉蹇界暐鍏ㄥ崐瑙� - temp = "UPPER(%s)"; - } else if (!ignoreCase && !ignoreCase && ignoreWidth) { - //涓嶅拷鐣ュぇ灏忓啓銆佷笉鍘荤┖銆佸拷鐣ュ叏鍗婅 - temp = "to_single_byte('%s')"; - } else if (!ignoreCase && ignoreSpace && !ignoreWidth) { - //涓嶅拷鐣ュぇ灏忓啓銆佸幓绌恒�佷笉蹇界暐鍏ㄥ崐瑙� - temp = (trimAll ? "REPLACE" : "TRIM") + "(%s " + (trimAll ? ",' ','')" : ")"); - } else if (!ignoreCase && !ignoreSpace && !ignoreWidth) { - //涓嶅拷鐣ュぇ灏忓啓銆佷笉鍘荤┖銆佷笉蹇界暐鍏ㄥ崐瑙� - temp = "%s"; - } - if (StringUtils.isNotBlank(resembleRuleVO.getLinkCharacter())) { - List<String> chars = VciBaseUtil.str2List(resembleRuleVO.getLinkCharacter()); - for (int i = 0; i < chars.size(); i++) { - String s = chars.get(i); - temp = "replace(" + temp + ",'" + s + "','')"; - } - } - queryValue = String.format(temp, (trim ? value.trim() : value)); - temp = temp.replace("to_single_byte('%s')", "to_single_byte(%s)"); - queryKey = String.format(temp, "t." + attrId); - conditionMap.put(queryKey, QueryOptionConstant.OR + queryValue); - } - } + /** + * 灏佽鐩镐技椤规煡璇㈢殑鏌ヨ鏉′欢鐨勬槧灏� + * + * @param value 鍊� + * @param resembleRuleVO 鐩镐技椤硅鍒� + * @param attrId 灞炴�х殑缂栧彿 + * @param conditionMap 鏌ヨ鏉′欢 + */ + @Override + public void wrapperResembleConditionMap(String value, CodeResembleRuleVO resembleRuleVO, String attrId, Map<String, String> conditionMap) { + boolean ignoreSpace = VciBaseUtil.getBoolean(resembleRuleVO.getIgnorespaceflag()) || VciBaseUtil.getBoolean(resembleRuleVO.getIgnoreallspaceflag()); + if (StringUtils.isBlank(value)) { + //涓虹┖鐨勬椂鍊欏氨涓嶆煡璇㈠畠灏辨槸 + } else { + String queryKey = ""; + String queryValue = ""; + boolean ignoreCase = VciBaseUtil.getBoolean(resembleRuleVO.getIgnorecaseflag()); + boolean ignoreWidth = VciBaseUtil.getBoolean(resembleRuleVO.getIgnorewidthflag()); + boolean trimAll = VciBaseUtil.getBoolean(resembleRuleVO.getIgnoreallspaceflag()); + boolean trim = VciBaseUtil.getBoolean(resembleRuleVO.getIgnorecaseflag()); + String temp = ""; + if (ignoreCase && ignoreSpace && ignoreWidth) { + //蹇界暐澶у皬鍐欙紝涓斿幓绌猴紝蹇界暐鍏ㄥ崐瑙� + temp = (trimAll ? "REPLACE" : "TRIM") + "(UPPER(to_single_byte('%s')) " + (trimAll ? ",' ','')" : ")"); + } else if (ignoreCase && ignoreSpace && !ignoreWidth) { + //蹇界暐澶у皬鍐欍�佸幓绌恒�佷笉蹇界暐鍏ㄥ崐瑙� + temp = (trimAll ? "REPLACE" : "TRIM") + "(UPPER(%s) " + (trimAll ? ",' ','')" : ")"); + } else if (ignoreCase && !ignoreSpace && ignoreWidth) { + //蹇界暐澶у皬鍐欍�佷笉鍘荤┖銆佸拷鐣ュ叏鍗婅 + temp = "UPPER(to_single_byte('%s'))"; + } else if (!ignoreCase && ignoreSpace && ignoreWidth) { + //涓嶅拷鐣ュぇ灏忓啓銆佸幓绌恒�佸拷鐣ュ叏鍗婅 + temp = (trimAll ? "REPLACE" : "TRIM") + "(to_single_byte('%s') " + (trimAll ? ",' ','')" : ")"); + } else if (ignoreCase && !ignoreSpace && !ignoreWidth) { + //蹇界暐澶у皬鍐欍�佷笉鍘荤┖銆佷笉蹇界暐鍏ㄥ崐瑙� + temp = "UPPER(%s)"; + } else if (!ignoreCase && !ignoreCase && ignoreWidth) { + //涓嶅拷鐣ュぇ灏忓啓銆佷笉鍘荤┖銆佸拷鐣ュ叏鍗婅 + temp = "to_single_byte('%s')"; + } else if (!ignoreCase && ignoreSpace && !ignoreWidth) { + //涓嶅拷鐣ュぇ灏忓啓銆佸幓绌恒�佷笉蹇界暐鍏ㄥ崐瑙� + temp = (trimAll ? "REPLACE" : "TRIM") + "(%s " + (trimAll ? ",' ','')" : ")"); + } else if (!ignoreCase && !ignoreSpace && !ignoreWidth) { + //涓嶅拷鐣ュぇ灏忓啓銆佷笉鍘荤┖銆佷笉蹇界暐鍏ㄥ崐瑙� + temp = "%s"; + } + if (StringUtils.isNotBlank(resembleRuleVO.getLinkCharacter())) { + List<String> chars = VciBaseUtil.str2List(resembleRuleVO.getLinkCharacter()); + for (int i = 0; i < chars.size(); i++) { + String s = chars.get(i); + temp = "replace(" + temp + ",'" + s + "','')"; + } + } + queryValue = String.format(temp, (trim ? "'"+value.trim()+"'" : "'"+value+"'")); + temp = temp.replace("to_single_byte('%s')", "to_single_byte(%s)"); + queryKey = String.format(temp, "t." + attrId); + conditionMap.put(queryKey, QueryOptionConstant.OR + queryValue); + } + } - /** - * 鏌ヨ缂栫爜鏁版嵁鐨勫垪琛� - * - * @param btmType 涓氬姟绫诲瀷 - * @param templateVO 妯℃澘鐨勫璞★紝闇�瑕佸寘鍚ā鏉跨殑灞炴�� - * @param conditionMap 鏌ヨ鏉′欢 - * @param pageHelper 鍒嗛〉瀵硅薄 - * @return 鏁版嵁鍒楄〃 - */ - @Override - public DataGrid<Map<String, String>> queryGrid(String btmType, CodeClassifyTemplateVO templateVO, Map<String, String> conditionMap, PageHelper pageHelper) { - CodeTemplateAttrSqlBO sqlBO = getSqlByTemplateVO(btmType, templateVO, conditionMap, pageHelper); -// List<Map> maps = boService.queryByOnlySqlForMap(sqlBO.getSqlHasPage()); + /** + * 鏌ヨ缂栫爜鏁版嵁鐨勫垪琛� + * + * @param btmType 涓氬姟绫诲瀷 + * @param templateVO 妯℃澘鐨勫璞★紝闇�瑕佸寘鍚ā鏉跨殑灞炴�� + * @param conditionMap 鏌ヨ鏉′欢 + * @param pageHelper 鍒嗛〉瀵硅薄 + * @return 鏁版嵁鍒楄〃 + */ + @Override + public DataGrid<Map<String, String>> queryGrid(String btmType, CodeClassifyTemplateVO templateVO, Map<String, String> conditionMap, PageHelper pageHelper) { + CodeTemplateAttrSqlBO sqlBO = getSqlByTemplateVO(btmType, templateVO, conditionMap, pageHelper); + // List<Map> maps = boService.queryByOnlySqlForMap(sqlBO.getSqlHasPage()); List<Map<String, String>> maps = null; try { maps = commonsMapper.queryByOnlySqlForMap(sqlBO.getSqlHasPage()); - }catch (Exception e){ + } catch (Exception e) { String errorMessage = e.getMessage(); if (errorMessage.contains("鏃犳硶瑙f瀽鐨勬垚鍛樿闂〃杈惧紡")) { - throw new ServiceException("缂哄皯"+errorMessage.substring(errorMessage.indexOf("[t.") + 1, errorMessage.indexOf("]"))+"瀛楁"); + throw new ServiceException("缂哄皯" + errorMessage.substring(errorMessage.indexOf("[T.") + 1, errorMessage.indexOf("]")) + "瀛楁"); } throw new ServiceException(e.getMessage()); } - DataGrid<Map<String, String>> dataGrid = new DataGrid<>(); - List<Map<String, String>> dataList = new ArrayList<>(); - if (!CollectionUtils.isEmpty(maps)) { - maps.stream().forEach(map -> { - Map<String, String> data = new HashMap<>(); - for (String s : map.keySet()) { - data.put(s.toLowerCase(Locale.ROOT), map.get(s)==null?null:String.valueOf(map.get(s))); - } -// map.forEach((key, value) -> { -// data.put(((String) key).toLowerCase(Locale.ROOT), String.valueOf(value)); -// }); - dataList.add(data); - }); - wrapperData(dataList, templateVO, sqlBO.getSelectFieldList(), false); -// maps.stream().forEach(map -> { -// Map<String, String> data = new HashMap<>(); -//// map.forEach((key, value) -> { -//// data.put(((String) key).toLowerCase(Locale.ROOT), String.valueOf(value)); -//// }); -// for (String s : map.keySet()) { -// data.put(((String) s).toLowerCase(Locale.ROOT), String.valueOf(map.get(s))); -// } -// dataList.add(data); -// }); - } -// dataGrid.setData(dataList); -// if (!CollectionUtils.isEmpty(maps)) { -// wrapperData(maps, templateVO, sqlBO.getSelectFieldList(), false); -// maps.stream().forEach(map -> { -// Map<String, String> data = new HashMap<>(); -//// map.forEach((key, value) -> { -//// data.put(((String) key).toLowerCase(Locale.ROOT), String.valueOf(value)); -//// }); -// for (String s : map.keySet()) { -// data.put(((String) s).toLowerCase(Locale.ROOT), String.valueOf(map.get(s))); -// } -// dataList.add(data); -// }); - dataGrid.setData(dataList); - dataGrid.setTotal(Long.parseLong(commonsMapper.selectBySql(sqlBO.getSqlCount()).get(0).values().toArray()[0].toString())); -// } - return dataGrid; - } + DataGrid<Map<String, String>> dataGrid = new DataGrid<>(); + List<Map<String, String>> dataList = new ArrayList<>(); + if (!CollectionUtils.isEmpty(maps)) { + maps.stream().forEach(map -> { + Map<String, String> data = new HashMap<>(); + for (String s : map.keySet()) { + data.put(s.toLowerCase(Locale.ROOT), map.get(s) == null ? null : String.valueOf(map.get(s))); + } + // map.forEach((key, value) -> { + // data.put(((String) key).toLowerCase(Locale.ROOT), String.valueOf(value)); + // }); + dataList.add(data); + }); + wrapperData(dataList, templateVO, sqlBO.getSelectFieldList(), false); + // maps.stream().forEach(map -> { + // Map<String, String> data = new HashMap<>(); + // map.forEach((key, value) -> { + // data.put(((String) key).toLowerCase(Locale.ROOT), String.valueOf(value)); + // }); + // for (String s : map.keySet()) { + // data.put(((String) s).toLowerCase(Locale.ROOT), String.valueOf(map.get(s))); + // } + // dataList.add(data); + // }); + } + // dataGrid.setData(dataList); + // if (!CollectionUtils.isEmpty(maps)) { + // wrapperData(maps, templateVO, sqlBO.getSelectFieldList(), false); + // maps.stream().forEach(map -> { + // Map<String, String> data = new HashMap<>(); + //// map.forEach((key, value) -> { + //// data.put(((String) key).toLowerCase(Locale.ROOT), String.valueOf(value)); + //// }); + // for (String s : map.keySet()) { + // data.put(((String) s).toLowerCase(Locale.ROOT), String.valueOf(map.get(s))); + // } + // dataList.add(data); + // }); + dataGrid.setData(dataList); + dataGrid.setTotal(Long.parseLong(commonsMapper.selectBySql(sqlBO.getSqlCount()).get(0).values().toArray()[0].toString())); + // } + return dataGrid; + } - /** - * 灏佽鏌ヨ鍑烘潵鐨勬暟鎹� - * - * @param dataMap 鏁版嵁鐨勬槧灏� - * @param templateVO 妯℃澘鐨勫睘鎬� - * @param onlySelectAttrIdList 浠呬粎鏌ヨ鐨勫睘鎬у瓧娈� - * @param form 琛ㄥ崟閲屼娇鐢� - */ - @Override - public void wrapperData(List<Map<String, String>> dataMap, CodeClassifyTemplateVO templateVO, - Collection<String> onlySelectAttrIdList, boolean form) { - if (onlySelectAttrIdList == null) { - onlySelectAttrIdList = new ArrayList<>(); - } - //鍏堣浆鎹竴涓嬫椂闂存牸寮� - List<String> finalOnlySelectAttrIdList = onlySelectAttrIdList.stream().collect(Collectors.toList()); + /** + * 灏佽鏌ヨ鍑烘潵鐨勬暟鎹� + * + * @param dataMap 鏁版嵁鐨勬槧灏� + * @param templateVO 妯℃澘鐨勫睘鎬� + * @param onlySelectAttrIdList 浠呬粎鏌ヨ鐨勫睘鎬у瓧娈� + * @param form 琛ㄥ崟閲屼娇鐢� + */ + @Override + public void wrapperData(List<Map<String, String>> dataMap, CodeClassifyTemplateVO templateVO, + Collection<String> onlySelectAttrIdList, boolean form) { + if (onlySelectAttrIdList == null) { + onlySelectAttrIdList = new ArrayList<>(); + } + //鍏堣浆鎹竴涓嬫椂闂存牸寮� + List<String> finalOnlySelectAttrIdList = onlySelectAttrIdList.stream().collect(Collectors.toList()); List<CodeClassifyTemplateAttrVO> dateFormatAttrVOs = new ArrayList<>(); List<CodeClassifyTemplateAttrVO> enumAttrVOs = new ArrayList<>(); if (Func.isNotEmpty(templateVO.getAttributes())) { @@ -1686,445 +2150,461 @@ ).collect(Collectors.toList()); } - List<String> userIds = new ArrayList<>(); + List<String> userIds = new ArrayList<>(); List<CodeClassifyTemplateAttrVO> finalDateFormatAttrVOs = dateFormatAttrVOs; List<CodeClassifyTemplateAttrVO> finalEnumAttrVOs = enumAttrVOs; dataMap.stream().forEach(data -> { - //澶勭悊鏃堕棿 - if (!form) { - //琛ㄥ崟鐨勬椂鍊欏彧鑳界敤缁熶竴鐨勬椂闂存牸寮� - wrapperDateFormat(finalDateFormatAttrVOs, data); - } - //澶勭悊鏋氫妇 - wrapperEnum(finalEnumAttrVOs, data); - String lcstatus = data.get(VciQueryWrapperForDO.LC_STATUS_FIELD); - String copyFromVersion = data.getOrDefault(COPY_FROM_VERSION, ""); - if ((CodeDefaultLC.EDITING.getValue().equalsIgnoreCase(lcstatus) || CodeDefaultLC.AUDITING.getValue().equalsIgnoreCase(lcstatus)) - && StringUtils.isBlank(copyFromVersion) - ) { - data.put(VciQueryWrapperForDO.ID_FIELD, "******"); - } - data.put(VciQueryWrapperForDO.LC_STATUS_FIELD_TEXT.toLowerCase(Locale.ROOT), CodeDefaultLC.getTextByValue(lcstatus)); - if (CodeDefaultLC.EDITING.getValue().equalsIgnoreCase(lcstatus) - && StringUtils.isNotBlank(copyFromVersion)) { - data.put(VciQueryWrapperForDO.LC_STATUS_FIELD_TEXT.toLowerCase(Locale.ROOT), "淇敼涓�"); - } - if (data.containsKey("creator")) { - userIds.add(data.get("creator")); - } - if (data.containsKey("lastmodifier")) { - userIds.add(data.get("lastmodifier")); - } - }); - if (!CollectionUtils.isEmpty(userIds)) { - Map<String, User> userVOMap = new HashMap<>(); - for (String userId : userIds) { - if (!StringUtils.isNumeric(userId)) { - continue; - } - User data = iUserClient.userInfoById(Long.valueOf(userId)).getData(); - if (data != null) { - userVOMap.put(String.valueOf(data.getId()), data); - } - } -// Map<String, SmUserVO> userVOMap = Optional.ofNullable(userQueryService.listUserByUserIds(userIds)).orElseGet(() -> new ArrayList<>()).stream().collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t)); - dataMap.stream().forEach(data -> { - String creator = data.getOrDefault("creator", null); - if (StringUtils.isNotBlank(creator) && userVOMap.containsKey(creator.toLowerCase(Locale.ROOT))) { - data.put("creator", creator + "(" + userVOMap.get(creator.toLowerCase(Locale.ROOT)).getRealName() + ")"); - } - String lastmodifier = data.getOrDefault("lastmodifier", null); - if (StringUtils.isNotBlank(lastmodifier) && userVOMap.containsKey(lastmodifier.toLowerCase(Locale.ROOT))) { - data.put("lastmodifier", lastmodifier + "(" + userVOMap.get(lastmodifier.toLowerCase(Locale.ROOT)).getRealName() + ")"); - } - }); - } - } + //澶勭悊鏃堕棿 + if (!form) { + //琛ㄥ崟鐨勬椂鍊欏彧鑳界敤缁熶竴鐨勬椂闂存牸寮� + wrapperDateFormat(finalDateFormatAttrVOs, data); + } + //澶勭悊鏋氫妇 + wrapperEnum(finalEnumAttrVOs, data); + String lcstatus = data.get(VciQueryWrapperForDO.LC_STATUS_FIELD); + String copyFromVersion = data.getOrDefault(COPY_FROM_VERSION, ""); + if ((CodeDefaultLC.EDITING.getValue().equalsIgnoreCase(lcstatus) || CodeDefaultLC.AUDITING.getValue().equalsIgnoreCase(lcstatus)) + && StringUtils.isBlank(copyFromVersion) + ) { + data.put(VciQueryWrapperForDO.ID_FIELD, "******"); + } + data.put(VciQueryWrapperForDO.LC_STATUS_FIELD_TEXT.toLowerCase(Locale.ROOT), CodeDefaultLC.getTextByValue(lcstatus)); + if (CodeDefaultLC.EDITING.getValue().equalsIgnoreCase(lcstatus) + && StringUtils.isNotBlank(copyFromVersion)) { + data.put(VciQueryWrapperForDO.LC_STATUS_FIELD_TEXT.toLowerCase(Locale.ROOT), "淇敼涓�"); + } + if (data.containsKey("creator")) { + userIds.add(data.get("creator")); + } + if (data.containsKey("lastmodifier")) { + userIds.add(data.get("lastmodifier")); + } + }); + if (!CollectionUtils.isEmpty(userIds)) { + Map<String, User> userVOMap = new HashMap<>(); + for (String userId : userIds) { + if (!StringUtils.isNumeric(userId)) { + continue; + } + User data = iUserClient.userInfoById(Long.valueOf(userId)).getData(); + if (data != null) { + userVOMap.put(String.valueOf(data.getId()), data); + } + } + // Map<String, SmUserVO> userVOMap = Optional.ofNullable(userQueryService.listUserByUserIds(userIds)).orElseGet(() -> new ArrayList<>()).stream().collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t)); + dataMap.stream().forEach(data -> { + String creator = data.getOrDefault("creator", null); + if (StringUtils.isNotBlank(creator) && userVOMap.containsKey(creator.toLowerCase(Locale.ROOT))) { + data.put("creator", creator + "(" + userVOMap.get(creator.toLowerCase(Locale.ROOT)).getRealName() + ")"); + } + String lastmodifier = data.getOrDefault("lastmodifier", null); + if (StringUtils.isNotBlank(lastmodifier) && userVOMap.containsKey(lastmodifier.toLowerCase(Locale.ROOT))) { + data.put("lastmodifier", lastmodifier + "(" + userVOMap.get(lastmodifier.toLowerCase(Locale.ROOT)).getRealName() + ")"); + } + }); + } + } + /** + * 澶勭悊鏃堕棿鏍煎紡 + * + * @param dateFormatAttrVOs 鏃堕棿鏍煎紡鐨勫睘鎬� + * @param data 褰撳墠琛屾暟鎹� + */ + private void wrapperDateFormat(Collection<CodeClassifyTemplateAttrVO> dateFormatAttrVOs, Map<String, String> data) { + if (!CollectionUtils.isEmpty(dateFormatAttrVOs)) { + dateFormatAttrVOs.stream().forEach(dateFormatAttrVO -> { + String attrId = dateFormatAttrVO.getId().toLowerCase(Locale.ROOT); + String oldValue = data.getOrDefault(attrId, null); + if (StringUtils.isNotBlank(oldValue)) { + DateConverter dateConverter = new DateConverter(); + try { + dateConverter.setAsText(oldValue); + Date value = dateConverter.getValue(); + if (value != null) { + data.put(attrId, VciDateUtil.date2Str(value, dateFormatAttrVO.getCodeDateFormat())); + } + } catch (Throwable e) { + //杞崲鍙兘鏈夐棶棰橈紝杩欏氨浣跨敤鍘熸湰瀛樺偍鐨勫�� + } + } + }); + } + } - /** - * 澶勭悊鏃堕棿鏍煎紡 - * - * @param dateFormatAttrVOs 鏃堕棿鏍煎紡鐨勫睘鎬� - * @param data 褰撳墠琛屾暟鎹� - */ - private void wrapperDateFormat(Collection<CodeClassifyTemplateAttrVO> dateFormatAttrVOs, Map<String, String> data) { - if (!CollectionUtils.isEmpty(dateFormatAttrVOs)) { - dateFormatAttrVOs.stream().forEach(dateFormatAttrVO -> { - String attrId = dateFormatAttrVO.getId().toLowerCase(Locale.ROOT); - String oldValue = data.getOrDefault(attrId, null); - if (StringUtils.isNotBlank(oldValue)) { - DateConverter dateConverter = new DateConverter(); - try { - dateConverter.setAsText(oldValue); - Date value = dateConverter.getValue(); - if (value != null) { - data.put(attrId, VciDateUtil.date2Str(value, dateFormatAttrVO.getCodeDateFormat())); - } - } catch (Throwable e) { - //杞崲鍙兘鏈夐棶棰橈紝杩欏氨浣跨敤鍘熸湰瀛樺偍鐨勫�� - } - } - }); - } - } - - - /** - * 澶勭悊鏋氫妇鐨勫唴瀹癸紝濡傛灉涓嶅湪鏋氫妇涓紝浼氳繑鍥炲師鏈殑鍊� - * - * @param enumAttrVOs 鏋氫妇灞炴�� - * @param data 褰撳墠琛屾暟鎹� - */ - private void wrapperEnum(Collection<CodeClassifyTemplateAttrVO> enumAttrVOs, Map<String, String> data) { - //澶勭悊鏋氫妇鐨勫唴瀹癸紝涓轰簡鍏煎浠ュ墠鐨勬暟鎹�,濡傛灉鏁版嵁涓嶈兘浣跨敤鏋氫妇杞崲鐨勮瘽锛岄偅杩樻槸鏄剧ず浠ュ墠鐨勫�� - if (!CollectionUtils.isEmpty(enumAttrVOs)) { - enumAttrVOs.stream().forEach(enumAttrVO -> { + /** + * 澶勭悊鏋氫妇鐨勫唴瀹癸紝濡傛灉涓嶅湪鏋氫妇涓紝浼氳繑鍥炲師鏈殑鍊� + * + * @param enumAttrVOs 鏋氫妇灞炴�� + * @param data 褰撳墠琛屾暟鎹� + */ + private void wrapperEnum(Collection<CodeClassifyTemplateAttrVO> enumAttrVOs, Map<String, String> data) { + //澶勭悊鏋氫妇鐨勫唴瀹癸紝涓轰簡鍏煎浠ュ墠鐨勬暟鎹�,濡傛灉鏁版嵁涓嶈兘浣跨敤鏋氫妇杞崲鐨勮瘽锛岄偅杩樻槸鏄剧ず浠ュ墠鐨勫�� + if (!CollectionUtils.isEmpty(enumAttrVOs)) { + enumAttrVOs.stream().forEach(enumAttrVO -> { // String attrId = enumAttrVO.getId().toUpperCase(Locale.ROOT); - String attrId = enumAttrVO.getId().toLowerCase(Locale.ROOT); - String oldValue = String.valueOf(data.getOrDefault(attrId, null)); - if (StringUtils.isNotBlank(oldValue)) { - List<KeyValue> comboxKVs = listComboboxItems(enumAttrVO); - String newValue = oldValue; - KeyValue keyValue = Optional.ofNullable(comboxKVs).orElseGet(() -> new ArrayList<>()).stream().filter(s -> s.getKey().equalsIgnoreCase(oldValue)).findFirst().orElseGet(() -> null); - if (keyValue != null) { - newValue = keyValue.getValue(); - } - data.put(attrId + "Text", newValue); - } - }); - } - } + String attrId = enumAttrVO.getId().toLowerCase(Locale.ROOT); + String oldValue = String.valueOf(data.getOrDefault(attrId, null)); + if (StringUtils.isNotBlank(oldValue)) { + List<KeyValue> comboxKVs = listComboboxItems(enumAttrVO); + String newValue = oldValue; + KeyValue keyValue = Optional.ofNullable(comboxKVs).orElseGet(() -> new ArrayList<>()).stream().filter(s -> s.getKey().equalsIgnoreCase(oldValue)).findFirst().orElseGet(() -> null); + if (keyValue != null) { + newValue = keyValue.getValue(); + } + data.put(attrId + "Text", newValue); + } + }); + } + } - /** - * 鏍规嵁妯℃澘灞炴�х敓鎴愮浉搴旂殑sql淇℃伅 - * - * @param btmType 涓氬姟绫诲瀷 - * @param templateVO 妯℃澘鏄剧ず瀵硅薄锛屽繀椤诲寘鍚睘鎬� - * @param conditionMap 鏌ヨ鏉′欢 - * @param pageHelper 鍒嗛〉鍜屾帓搴忓璞� - * @return sql鐨勭浉鍏充俊鎭� - */ - @Override - public CodeTemplateAttrSqlBO getSqlByTemplateVO(String btmType, CodeClassifyTemplateVO templateVO, Map<String, String> conditionMap, PageHelper pageHelper) { - //鍥犱负鍙傜収涓嶄竴瀹氭槸鍦ㄥ钩鍙扮殑灞炴�ф睜閲岄潰璁剧疆锛屾墍浠ユ垜浠緱闇�瑕佽嚜琛屽鐞� - //鍙傝�僔ciQueryWrapper鏉ュ鐞� - //1. 鎵惧埌鎵�鏈夌殑瀛楁锛� + /** + * 鏍规嵁妯℃澘灞炴�х敓鎴愮浉搴旂殑sql淇℃伅 + * + * @param btmType 涓氬姟绫诲瀷 + * @param templateVO 妯℃澘鏄剧ず瀵硅薄锛屽繀椤诲寘鍚睘鎬� + * @param conditionMap 鏌ヨ鏉′欢 + * @param pageHelper 鍒嗛〉鍜屾帓搴忓璞� + * @return sql鐨勭浉鍏充俊鎭� + */ + @Override + public CodeTemplateAttrSqlBO getSqlByTemplateVO(String btmType, CodeClassifyTemplateVO templateVO, Map<String, String> conditionMap, PageHelper pageHelper) { + //鍥犱负鍙傜収涓嶄竴瀹氭槸鍦ㄥ钩鍙扮殑灞炴�ф睜閲岄潰璁剧疆锛屾墍浠ユ垜浠緱闇�瑕佽嚜琛屽鐞� + //鍙傝�僔ciQueryWrapper鏉ュ鐞� + //1. 鎵惧埌鎵�鏈夌殑瀛楁锛� Map<String, CodeClassifyTemplateAttrVO> attrVOMap = new HashMap<>(); List<String> selectFieldList = new ArrayList<>(); - if(Func.isNotEmpty(templateVO.getAttributes())){ + if (Func.isNotEmpty(templateVO.getAttributes())) { attrVOMap = templateVO.getAttributes().stream().collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t)); selectFieldList = attrVOMap.keySet().stream().collect(Collectors.toList()); } - //鎵�鏈夌殑鍙傜収鐨勫瓧娈� - Map<String/**灞炴�у瓧娈�**/, String> joinTableList = new ConcurrentHashMap<>(); + //鎵�鏈夌殑鍙傜収鐨勫瓧娈� + Map<String/**灞炴�у瓧娈�**/, String> joinTableList = new ConcurrentHashMap<>(); List<CodeClassifyTemplateAttrVO> referAttrVOs = null; if (Func.isNotEmpty(templateVO.getAttributes())) { referAttrVOs = templateVO.getAttributes().stream().filter( s -> StringUtils.isNotBlank(s.getReferBtmId()) || StringUtils.isNotBlank(s.getReferConfig()) ).collect(Collectors.toList()); } - Map<String/**鍙傜収鐨勫睘鎬�**/, String/**瀹為檯鐨勫瓧娈�**/> referFieldMap = new ConcurrentHashMap<>(); - if (!CollectionUtils.isEmpty(referAttrVOs)) { + Map<String/**鍙傜収鐨勫睘鎬�**/, String/**瀹為檯鐨勫瓧娈�**/> referFieldMap = new ConcurrentHashMap<>(); + if (!CollectionUtils.isEmpty(referAttrVOs)) { List<String> finalSelectFieldList = selectFieldList; referAttrVOs.parallelStream().forEach(attrVO -> { - UIFormReferVO referVO = null; - if (StringUtils.isNotBlank(attrVO.getReferConfig())) { - referVO = JSONObject.parseObject(attrVO.getReferConfig(), UIFormReferVO.class); - } else { - referVO = new UIFormReferVO(); - referVO.setReferType(attrVO.getReferBtmId()); - referVO.setValueField(VciQueryWrapperForDO.OID_FIELD); - referVO.setTextField("name"); - } - //浣跨敤浼犲叆鐨勪笟鍔$被鍨嬫煡璇㈣〃 - R<List<BtmTypeVO>> listR = btmTypeClient.selectByIdCollection(Collections.singletonList(referVO.getReferType())); + UIFormReferVO referVO = null; + if (StringUtils.isNotBlank(attrVO.getReferConfig())) { + referVO = JSONObject.parseObject(attrVO.getReferConfig(), UIFormReferVO.class); + } else { + referVO = new UIFormReferVO(); + referVO.setReferType(attrVO.getReferBtmId()); + referVO.setValueField(VciQueryWrapperForDO.OID_FIELD); + referVO.setTextField("name"); + } + //浣跨敤浼犲叆鐨勪笟鍔$被鍨嬫煡璇㈣〃 + R<List<BtmTypeVO>> listR = btmTypeClient.selectByIdCollection(Collections.singletonList(referVO.getReferType())); // String referTable = VciBaseUtil.getTableName(referVO.getReferType()); - if (!listR.isSuccess() || listR.getData().size() == 0) { - throw new VciBaseException("浼犲叆涓氬姟绫诲瀷鏈煡璇㈠埌鐩稿簲琛ㄥ崟锛岃妫�鏌ワ紒"); - } - String referTable = listR.getData().get(0).getTableName(); + if (!listR.isSuccess() || listR.getData().size() == 0) { + throw new VciBaseException("浼犲叆涓氬姟绫诲瀷鏈煡璇㈠埌鐩稿簲琛ㄥ崟锛岃妫�鏌ワ紒"); + } + String referTable = listR.getData().get(0).getTableName(); // String referTable = "pl_code_classify"; - String referTableNick = attrVO.getId() + "0"; - String left = " left join " + referTable + " " + referTableNick + " on " + referTableNick + "." + referVO.getValueField() + " = t." + attrVO.getId(); - joinTableList.put(attrVO.getId(), left); - String referShowField = attrVO.getId() + "Name"; - List<String> textFields = VciBaseUtil.str2List(referVO.getTextField()); - String showFieldInSource = ""; - if (textFields.contains("name")) { - showFieldInSource = "name"; - } else { - showFieldInSource = textFields.get(0); - } - referFieldMap.put(attrVO.getId(), referTableNick + "." + showFieldInSource); - finalSelectFieldList.add(referTableNick + "." + showFieldInSource + " as " + referShowField); - }); - } - R<BtmTypeVO> allAttributeByBtmId = btmTypeClient.getDefaultAttrByBtmId(btmType); + String referTableNick = attrVO.getId() + "0"; + String left = " left join " + referTable + " " + referTableNick + " on " + referTableNick + "." + referVO.getValueField() + " = t." + attrVO.getId(); + joinTableList.put(attrVO.getId(), left); + String referShowField = attrVO.getId() + "Name"; + List<String> textFields = VciBaseUtil.str2List(referVO.getTextField()); + String showFieldInSource = ""; + if (textFields.contains("name")) { + showFieldInSource = "name"; + } else { + showFieldInSource = textFields.get(0); + } + referFieldMap.put(attrVO.getId(), referTableNick + "." + showFieldInSource); + finalSelectFieldList.add(referTableNick + "." + showFieldInSource + " as " + referShowField); + }); + } + R<BtmTypeVO> allAttributeByBtmId = btmTypeClient.getDefaultAttrByBtmId(btmType); - if (allAttributeByBtmId.getData() != null) { - for (BtmTypeAttributeVO attribute : allAttributeByBtmId.getData().getAttributes()) { - if (!selectFieldList.contains(attribute.getId()) && !"secretgrade".equalsIgnoreCase(attribute.getId())) { - selectFieldList.add(attribute.getId()); - } - } - } + if (allAttributeByBtmId.getData() != null) { + for (BtmTypeAttributeVO attribute : allAttributeByBtmId.getData().getAttributes()) { + if (!selectFieldList.contains(attribute.getId()) && !"secretgrade".equalsIgnoreCase(attribute.getId())) { + selectFieldList.add(attribute.getId()); + } + } + } - if (!selectFieldList.contains(CODE_FIELD)) { - selectFieldList.add(CODE_FIELD); - } - if (!selectFieldList.contains(CODE_CLASSIFY_OID_FIELD)) { - selectFieldList.add(CODE_CLASSIFY_OID_FIELD); - } - if (!selectFieldList.contains(CODE_TEMPLATE_OID_FIELD)) { - selectFieldList.add(CODE_TEMPLATE_OID_FIELD); - } - if (!selectFieldList.contains(CODE_FULL_PATH_FILED)) { - selectFieldList.add(CODE_FULL_PATH_FILED); - } + if (!selectFieldList.contains(CODE_FIELD)) { + selectFieldList.add(CODE_FIELD); + } + if (!selectFieldList.contains(CODE_CLASSIFY_OID_FIELD)) { + selectFieldList.add(CODE_CLASSIFY_OID_FIELD); + } + if (!selectFieldList.contains(CODE_TEMPLATE_OID_FIELD)) { + selectFieldList.add(CODE_TEMPLATE_OID_FIELD); + } + if (!selectFieldList.contains(CODE_FULL_PATH_FILED)) { + selectFieldList.add(CODE_FULL_PATH_FILED); + } - //澶勭悊鏌ヨ鏉′欢 - //TODO 楠岃瘉sql娉ㄥ叆 - List<String> andSql = new ArrayList<>(); - List<String> orSql = new ArrayList<>(); - if (!CollectionUtils.isEmpty(conditionMap)) { - Map<String, String> orConditionMap = new HashMap<>(); - Map<String, String> andCondtionMap = new HashMap<>(); - //鍏堝垎绂籵r鐨勬煡璇㈡潯浠讹紝鍙﹀褰撴煡璇㈡潯浠舵槸绌虹殑鏃跺�欎篃涓嶆煡璇� - conditionMap.forEach((k, v) -> { - if (StringUtils.isNotBlank(v)) { - if (v.startsWith(QueryOptionConstant.OR)) { - orConditionMap.put(k, v.substring(QueryOptionConstant.OR.length())); - } else { - andCondtionMap.put(k, v); - } - } - }); + //澶勭悊鏌ヨ鏉′欢 + //TODO 楠岃瘉sql娉ㄥ叆 + List<String> andSql = new ArrayList<>(); + List<String> orSql = new ArrayList<>(); + if (!CollectionUtils.isEmpty(conditionMap)) { + Map<String, String> orConditionMap = new HashMap<>(); + Map<String, String> andCondtionMap = new HashMap<>(); + //鍏堝垎绂籵r鐨勬煡璇㈡潯浠讹紝鍙﹀褰撴煡璇㈡潯浠舵槸绌虹殑鏃跺�欎篃涓嶆煡璇� + conditionMap.forEach((k, v) -> { + if (StringUtils.isNotBlank(v)) { + if (v.startsWith(QueryOptionConstant.OR)) { + orConditionMap.put(k, v.substring(QueryOptionConstant.OR.length())); + } else { + andCondtionMap.put(k, v); + } + } + }); Map<String, CodeClassifyTemplateAttrVO> finalAttrVOMap = attrVOMap; andCondtionMap.forEach((k, v) -> { - andSql.add(getConditionSql(k.toLowerCase(), v, referFieldMap, finalAttrVOMap, btmType)); - }); - orConditionMap.forEach((k, v) -> { - orSql.add(getConditionSql(k.toLowerCase(), v, referFieldMap, finalAttrVOMap, btmType)); - }); - } - //缁勫悎璧锋潵 - StringBuilder andSb = new StringBuilder(); - andSql.stream().forEach(s -> { - andSb.append(s).append(SPACE).append(QueryOptionConstant.AND).append(SPACE); - }); + andSql.add(getConditionSql(k.toLowerCase(), v, referFieldMap, finalAttrVOMap, btmType)); + }); + orConditionMap.forEach((k, v) -> { + orSql.add(getConditionSql(k.toLowerCase(), v, referFieldMap, finalAttrVOMap, btmType)); + }); + } + //缁勫悎璧锋潵 + StringBuilder andSb = new StringBuilder(); + andSql.stream().forEach(s -> { + andSb.append(s).append(SPACE).append(QueryOptionConstant.AND).append(SPACE); + }); - String andString = andSb.toString().trim(); - String endWithSql = QueryOptionConstant.AND; - if (andString.endsWith(endWithSql)) { - andString = andString.substring(0, andString.length() - endWithSql.length()); - } + String andString = andSb.toString().trim(); + String endWithSql = QueryOptionConstant.AND; + if (andString.endsWith(endWithSql)) { + andString = andString.substring(0, andString.length() - endWithSql.length()); + } - String orString = orSql.stream().collect(Collectors.joining(" or ")); - String whereSql = ""; - if (StringUtils.isNotBlank(orString)) { - if (StringUtils.isBlank(andString)) { - andString = " 1 = 1 "; - } - whereSql = SPACE + "(" + SPACE + andString + SPACE + ") and (" + SPACE + orString + SPACE + ")" + SPACE; - } else { - whereSql = andString + SPACE; - } - if (attrVOMap.keySet().contains("secretgrade")) { - Integer userSecret = VciBaseUtil.getCurrentUserSecret(); - if (userSecret == null || userSecret == 0) { - userSecret = secretService.getMinUserSecret().getData(); - } - whereSql += " and ( t.secretGrade <= " + userSecret + ") "; - } + String orString = orSql.stream().collect(Collectors.joining(" or ")); + String whereSql = ""; + if (StringUtils.isNotBlank(orString)) { + if (StringUtils.isBlank(andString)) { + andString = " 1 = 1 "; + } + whereSql = SPACE + "(" + SPACE + andString + SPACE + ") and (" + SPACE + orString + SPACE + ")" + SPACE; + } else { + whereSql = andString + SPACE; + } + if (attrVOMap.keySet().contains("secretgrade")) { + Integer userSecret = VciBaseUtil.getCurrentUserSecret(); + if (userSecret == null || userSecret == 0) { + userSecret = secretService.getMinUserSecret().getData(); + } + whereSql += " and ( t.secretGrade <= " + userSecret + ") "; + } // String tableName = VciBaseUtil.getTableName(btmType); - R<List<BtmTypeVO>> listR = btmTypeClient.selectByIdCollection(Collections.singletonList(btmType)); - if (!listR.isSuccess() || listR.getData().size() == 0) { - throw new VciBaseException("浼犲叆涓氬姟绫诲瀷鏈煡璇㈠埌鐩稿簲琛ㄥ崟锛岃妫�鏌ワ紒"); - } + R<List<BtmTypeVO>> listR = btmTypeClient.selectByIdCollection(Collections.singletonList(btmType)); + if (!listR.isSuccess() || listR.getData().size() == 0) { + throw new VciBaseException("浼犲叆涓氬姟绫诲瀷鏈煡璇㈠埌鐩稿簲琛ㄥ崟锛岃妫�鏌ワ紒"); + } // String referTable = VciBaseUtil.getTableName(referVO.getReferType()); - String tableName = listR.getData().get(0).getTableName(); - String sql = "select " + selectFieldList.stream().map(s -> (s.contains(".") ? s : ("t." + s))).collect(Collectors.joining(",")) - + " from " + tableName + SPACE + "t" + SPACE - + joinTableList.values().stream().collect(Collectors.joining(SPACE)) - + (StringUtils.isBlank(whereSql) ? "" : " where ") + whereSql; - if (pageHelper == null) { - pageHelper = new PageHelper(-1); - } - //鐪嬬湅鎺掑簭 - String orderSql = pageHelper.getOrderSql("t"); - sql += (orderSql == null ? "" : orderSql); - String whereSubfixForPage = " ) A where rownum < " + (pageHelper.getLimit() * pageHelper.getPage() + 1) + ") where RN >= " - + (pageHelper.getLimit() * (pageHelper.getPage() - 1) + 1); - 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 ID from " + tableName + SPACE + "t" + SPACE + joinTableList.values().stream().collect(Collectors.joining(SPACE)) + String tableName = listR.getData().get(0).getTableName(); + String sql = "select " + selectFieldList.stream().map(s -> (s.contains(".") ? s : ("t." + s))).collect(Collectors.joining(",")) + + " 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); - sqlBO.setNickName("t"); + if (pageHelper == null) { + pageHelper = new PageHelper(-1); + } + //鐪嬬湅鎺掑簭 + String orderSql = pageHelper.getOrderSql("t"); + sql += (orderSql == null ? "" : orderSql); + String whereSubfixForPage = " ) A where rownum < " + (pageHelper.getLimit() * pageHelper.getPage() + 1) + ") where RN >= " + + (pageHelper.getLimit() * (pageHelper.getPage() - 1) + 1); + 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); + sqlBO.setNickName("t"); // sqlBO.setPageHelper(pageHelper); - sqlBO.setSqlHasPage(sqlHasPage); - sqlBO.setSqlCount(sqlCount); - sqlBO.setSqlUnPage(sql); + sqlBO.setSqlHasPage(sqlHasPage); + sqlBO.setSqlCount(sqlCount); + sqlBO.setSqlUnPage(sql); sqlBO.setSqlId(sqlId); - return sqlBO; - } + return sqlBO; + } - /** - * 缁勫悎鏌ヨ鏉′欢鐨剆ql - * - * @param key 瀛楁 - * @param value 鍚嶅瓧 - * @param referFieldMap 鍙傜収鐨勫瓧娈� - * @param attrVOMap 灞炴�х殑鏄犲皠 - * @return Sql璇彞 - */ - private String getConditionSql(String key, String value, Map<String/**鍙傜収鐨勫睘鎬�**/, String/**瀹為檯鐨勫睘鎬�**/> referFieldMap, Map<String, CodeClassifyTemplateAttrVO> attrVOMap, String btmType) { - if (!Func.hasEmpty(new Object[]{key, value}) && !key.endsWith("_ignore")) { - if (key.endsWith("_like")) { - String field = UBCSSqlKeyword.getColumn(key, "_like"); - if (referFieldMap.containsKey(field)) { - //璇存槑杩樻槸鍙傜収閲岄潰鐨勶紝鎴戜滑榛樿杩欑鎯呭喌涓嬮兘鏄瓧绗︿覆鍚э紝鍥犱负鍙傜収鐨勫睘鎬т笉涓�瀹氱敤鐨勫钩鍙扮殑灞炴�ф睜閲岀殑锛屾墍浠ュぇ閮ㄥ垎鎯呭喌涓嬶紝鏄剧ず鐨勫睘鎬ч兘鏄瓧绗︿覆鍚� - return referFieldMap.get(field) + SPACE + "LIKE" + SPACE + "'%" + value + "%'" + SPACE; - } else { - return (field.contains(".") ? "" : "t.") + field + SPACE + "LIKE " + "'%" + value + "%'" + SPACE; - } - } else if (key.endsWith("_notequal")) { - String field = UBCSSqlKeyword.getColumn(key, "_notequal"); - if (referFieldMap.containsKey(field)) { - return referFieldMap.get(field) + SPACE + " != " + value + SPACE; - } else { - return (field.contains(".") ? "" : "t.") + field + SPACE + " != " + getStringValueInWhere(field, value, attrVOMap); - } - } else if (key.endsWith("_likeleft")) { - String field = UBCSSqlKeyword.getColumn(key, "_likeleft"); - if (referFieldMap.containsKey(field)) { - return referFieldMap.get(field) + SPACE + "LIKE" + SPACE + "%" + value + SPACE; - } else { - return (field.contains(".") ? "" : "t.") + field + SPACE + "LIKE " + "%" + getStringValueInWhere(field, value, attrVOMap) + SPACE; - } - } else if (key.endsWith("_likeright")) { - String field = UBCSSqlKeyword.getColumn(key, "_likeright"); - if (referFieldMap.containsKey(field)) { - return referFieldMap.get(field) + SPACE + "LIKE" + SPACE + value + "%" + SPACE; - } else { - return (field.contains(".") ? "" : "t.") + field + SPACE + "LIKE " + getStringValueInWhere(field, value, attrVOMap) + "%" + SPACE; - } - } else if (key.endsWith("_notlike")) { - String field = UBCSSqlKeyword.getColumn(key, "_notlike"); - if (referFieldMap.containsKey(field)) { - return referFieldMap.get(field) + SPACE + "NO LIKE" + SPACE + "%" + value + "%" + SPACE; - } else { - return (field.contains(".") ? "" : "t.") + field + SPACE + "NO LIKE " + "%" + getStringValueInWhere(field, value, attrVOMap) + "%" + SPACE; - } - } else if (key.endsWith("_ge")) { - String field = UBCSSqlKeyword.getColumn(key, "_ge"); - if (referFieldMap.containsKey(field)) { - return referFieldMap.get(field) + SPACE + " >= " + value + SPACE; - } else { - return (field.contains(".") ? "" : "t.") + field + SPACE + " >= " + getStringValueInWhere(field, value, attrVOMap) + SPACE; - } - } else if (key.endsWith("_le")) { - //璇存槑鏄�<=鐨勩�傛垜浠渶瑕佸厛鑾峰彇涓�涓� - String field = UBCSSqlKeyword.getColumn(key, "_le"); - if (referFieldMap.containsKey(field)) { - return referFieldMap.get(field) + SPACE + " <= " + value + "" + SPACE; - } else { - return (field.contains(".") ? "" : "t.") + field + SPACE + " <= " + getStringValueInWhere(field, value, attrVOMap) + SPACE; - } - } else if (key.endsWith("_gt")) { - String field = UBCSSqlKeyword.getColumn(key, "_gt"); - if (referFieldMap.containsKey(field)) { - return referFieldMap.get(field) + SPACE + "> " + value + SPACE; - } else { - return (field.contains(".") ? "" : "t.") + field + SPACE + "> " + getStringValueInWhere(field, value, attrVOMap) + SPACE; - } - } else if (key.endsWith("_lt")) { - String field = UBCSSqlKeyword.getColumn(key, "_lt"); - if (referFieldMap.containsKey(field)) { - return referFieldMap.get(field) + SPACE + "< " + value + SPACE; - } else { - return (field.contains(".") ? "" : "t.") + field + SPACE + "< " + getStringValueInWhere(field, value, attrVOMap) + SPACE; - } - } else if (key.endsWith("_datege")) { - String field = UBCSSqlKeyword.getColumn(key, "_datege"); - if (referFieldMap.containsKey(field)) { - return referFieldMap.get(field) + SPACE + ">= '" + DateUtil.parse(String.valueOf(value), "yyyy-MM-dd HH:mm:ss") + "'" + SPACE; - } else { - return (field.contains(".") ? "" : "t.") + field + SPACE + ">= '" + DateUtil.parse(String.valueOf(getStringValueInWhere(field, value, attrVOMap)), "yyyy-MM-dd HH:mm:ss") + "'" + SPACE; - } - } else if (key.endsWith("_dategt")) { - String field = UBCSSqlKeyword.getColumn(key, "_dategt"); - if (referFieldMap.containsKey(field)) { - return referFieldMap.get(field) + SPACE + "> '" + DateUtil.parse(String.valueOf(value), "yyyy-MM-dd HH:mm:ss") + "'" + SPACE; - } else { - return (field.contains(".") ? "" : "t.") + field + SPACE + "> '" + DateUtil.parse(String.valueOf(getStringValueInWhere(field, value, attrVOMap)), "yyyy-MM-dd HH:mm:ss") + "'" + SPACE; - } - } else if (key.endsWith("_dateequal")) { - String field = UBCSSqlKeyword.getColumn(key, "_dateequal"); - if (referFieldMap.containsKey(field)) { - return referFieldMap.get(field) + SPACE + "= '" + DateUtil.parse(String.valueOf(value), "yyyy-MM-dd HH:mm:ss") + "'" + SPACE; - } else { - return (field.contains(".") ? "" : "t.") + field + SPACE + "= '" + DateUtil.parse(String.valueOf(getStringValueInWhere(field, value, attrVOMap)), "yyyy-MM-dd HH:mm:ss") + "'" + SPACE; - } - } else if (key.endsWith("_datele")) { - String field = UBCSSqlKeyword.getColumn(key, "_datele"); - if (referFieldMap.containsKey(field)) { - return referFieldMap.get(field) + SPACE + "<= '" + DateUtil.parse(String.valueOf(value), "yyyy-MM-dd HH:mm:ss") + "'" + SPACE; - } else { - return (field.contains(".") ? "" : "t.") + field + SPACE + "<= '" + DateUtil.parse(String.valueOf(getStringValueInWhere(field, value, attrVOMap)), "yyyy-MM-dd HH:mm:ss") + "'" + SPACE; - } - } else if (key.endsWith("_datelt")) { - String field = UBCSSqlKeyword.getColumn(key, "_datelt"); - if (referFieldMap.containsKey(field)) { - return referFieldMap.get(field) + SPACE + "< '" + DateUtil.parse(String.valueOf(value), "yyyy-MM-dd HH:mm:ss") + "'" + SPACE; - } else { - return (field.contains(".") ? "" : "t.") + field + SPACE + "< '" + DateUtil.parse(String.valueOf(getStringValueInWhere(field, value, attrVOMap)), "yyyy-MM-dd HH:mm:ss") + "'" + SPACE; - } - } else if (key.endsWith("_null")) { - String field = UBCSSqlKeyword.getColumn(key, "_null"); - if (referFieldMap.containsKey(field)) { - return referFieldMap.get(field) + SPACE + "IS NULL" + SPACE; - } else { - return (field.contains(".") ? "" : "t.") + field + SPACE + "IS NULL" + SPACE; - } - } else if (key.endsWith("_notnull")) { - String field = UBCSSqlKeyword.getColumn(key, "_null"); - if (referFieldMap.containsKey(field)) { - return referFieldMap.get(field) + SPACE + "IS NOT NULL" + SPACE; - } else { - return (field.contains(".") ? "" : "t.") + field + SPACE + "IS NOT NULL" + SPACE; - } - } else if (key.endsWith("_dateequal")) { - String field = UBCSSqlKeyword.getColumn(key, "_dateequal"); - if (referFieldMap.containsKey(field)) { - return referFieldMap.get(field) + SPACE + "= '" + DateUtil.parse(String.valueOf(value), "yyyy-MM-dd HH:mm:ss") + "'" + SPACE; - } else { - return (field.contains(".") ? "" : "t.") + field + SPACE + "= '" + DateUtil.parse(String.valueOf(getStringValueInWhere(field, value, attrVOMap)), "yyyy-MM-dd HH:mm:ss") + "'" + SPACE; - } - } else if (key.endsWith("_equal")) { - String field = UBCSSqlKeyword.getColumn(key, "_equal"); - if (referFieldMap.containsKey(field)) { - return referFieldMap.get(field) + SPACE + "= '" + value + "'" + SPACE; - } else { - return (field.contains(".") ? "" : "t.") + field + SPACE + "= " + getStringValueInWhere(field, value, attrVOMap) + "" + SPACE; - } - } else { + /** + * 缁勫悎鏌ヨ鏉′欢鐨剆ql + * + * @param key 瀛楁 + * @param value 鍚嶅瓧 + * @param referFieldMap 鍙傜収鐨勫瓧娈� + * @param attrVOMap 灞炴�х殑鏄犲皠 + * @return Sql璇彞 + */ + private String getConditionSql(String key, String value, Map<String/**鍙傜収鐨勫睘鎬�**/, String/**瀹為檯鐨勫睘鎬�**/> referFieldMap, Map<String, CodeClassifyTemplateAttrVO> attrVOMap, String btmType) { + if (!Func.hasEmpty(new Object[]{key, value}) && !key.endsWith("_ignore")) { + if (key.endsWith("_like")) { + String field = UBCSSqlKeyword.getColumn(key, "_like"); + if (referFieldMap.containsKey(field)) { + //璇存槑杩樻槸鍙傜収閲岄潰鐨勶紝鎴戜滑榛樿杩欑鎯呭喌涓嬮兘鏄瓧绗︿覆鍚э紝鍥犱负鍙傜収鐨勫睘鎬т笉涓�瀹氱敤鐨勫钩鍙扮殑灞炴�ф睜閲岀殑锛屾墍浠ュぇ閮ㄥ垎鎯呭喌涓嬶紝鏄剧ず鐨勫睘鎬ч兘鏄瓧绗︿覆鍚� + return referFieldMap.get(field) + SPACE + "LIKE" + SPACE + "'%" + value + "%'" + SPACE; + } else { + return (field.contains(".") ? "" : "t.") + field + SPACE + "LIKE " + "'%" + value + "%'" + SPACE; + } + } else if (key.endsWith("_notequal")) { + String field = UBCSSqlKeyword.getColumn(key, "_notequal"); + if (referFieldMap.containsKey(field)) { + return referFieldMap.get(field) + SPACE + " != " + value + SPACE; + } else { + return (field.contains(".") ? "" : "t.") + field + SPACE + " != " + getStringValueInWhere(field, value, attrVOMap); + } + } else if (key.endsWith("_likeleft")) { + String field = UBCSSqlKeyword.getColumn(key, "_likeleft"); + if (referFieldMap.containsKey(field)) { + return referFieldMap.get(field) + SPACE + "LIKE" + SPACE + "%" + value + SPACE; + } else { + return (field.contains(".") ? "" : "t.") + field + SPACE + "LIKE " + "%" + getStringValueInWhere(field, value, attrVOMap) + SPACE; + } + } else if (key.endsWith("_likeright")) { + String field = UBCSSqlKeyword.getColumn(key, "_likeright"); + if (referFieldMap.containsKey(field)) { + return referFieldMap.get(field) + SPACE + "LIKE" + SPACE + value + "%" + SPACE; + } else { + return (field.contains(".") ? "" : "t.") + field + SPACE + "LIKE " + getStringValueInWhere(field, value, attrVOMap) + "%" + SPACE; + } + } else if (key.endsWith("_notlike")) { + String field = UBCSSqlKeyword.getColumn(key, "_notlike"); + if (referFieldMap.containsKey(field)) { + return referFieldMap.get(field) + SPACE + "NO LIKE" + SPACE + "%" + value + "%" + SPACE; + } else { + return (field.contains(".") ? "" : "t.") + field + SPACE + "NO LIKE " + "%" + getStringValueInWhere(field, value, attrVOMap) + "%" + SPACE; + } + } else if (key.endsWith("_ge")) { + String field = UBCSSqlKeyword.getColumn(key, "_ge"); + if (referFieldMap.containsKey(field)) { + return referFieldMap.get(field) + SPACE + " >= " + value + SPACE; + } else { + return (field.contains(".") ? "" : "t.") + field + SPACE + " >= " + getStringValueInWhere(field, value, attrVOMap) + SPACE; + } + } else if (key.endsWith("_le")) { + //璇存槑鏄�<=鐨勩�傛垜浠渶瑕佸厛鑾峰彇涓�涓� + String field = UBCSSqlKeyword.getColumn(key, "_le"); + if (referFieldMap.containsKey(field)) { + return referFieldMap.get(field) + SPACE + " <= " + value + "" + SPACE; + } else { + return (field.contains(".") ? "" : "t.") + field + SPACE + " <= " + getStringValueInWhere(field, value, attrVOMap) + SPACE; + } + } else if (key.endsWith("_gt")) { + String field = UBCSSqlKeyword.getColumn(key, "_gt"); + if (referFieldMap.containsKey(field)) { + return referFieldMap.get(field) + SPACE + "> " + value + SPACE; + } else { + return (field.contains(".") ? "" : "t.") + field + SPACE + "> " + getStringValueInWhere(field, value, attrVOMap) + SPACE; + } + } else if (key.endsWith("_lt")) { + String field = UBCSSqlKeyword.getColumn(key, "_lt"); + if (referFieldMap.containsKey(field)) { + return referFieldMap.get(field) + SPACE + "< " + value + SPACE; + } else { + return (field.contains(".") ? "" : "t.") + field + SPACE + "< " + getStringValueInWhere(field, value, attrVOMap) + SPACE; + } + } else if (key.endsWith("_datege")) { + String field = UBCSSqlKeyword.getColumn(key, "_datege"); + if (referFieldMap.containsKey(field)) { + return referFieldMap.get(field) + SPACE + ">= '" + DateUtil.parse(String.valueOf(value), "yyyy-MM-dd HH:mm:ss") + "'" + SPACE; + } else { + return (field.contains(".") ? "" : "t.") + field + SPACE + ">= '" + DateUtil.parse(String.valueOf(getStringValueInWhere(field, value, attrVOMap)), "yyyy-MM-dd HH:mm:ss") + "'" + SPACE; + } + } else if (key.endsWith("_dategt")) { + String field = UBCSSqlKeyword.getColumn(key, "_dategt"); + if (referFieldMap.containsKey(field)) { + return referFieldMap.get(field) + SPACE + "> '" + DateUtil.parse(String.valueOf(value), "yyyy-MM-dd HH:mm:ss") + "'" + SPACE; + } else { + return (field.contains(".") ? "" : "t.") + field + SPACE + "> '" + DateUtil.parse(String.valueOf(getStringValueInWhere(field, value, attrVOMap)), "yyyy-MM-dd HH:mm:ss") + "'" + SPACE; + } + } else if (key.endsWith("_dateequal")) { + String field = UBCSSqlKeyword.getColumn(key, "_dateequal"); + if (referFieldMap.containsKey(field)) { + return referFieldMap.get(field) + SPACE + "= '" + DateUtil.parse(String.valueOf(value), "yyyy-MM-dd HH:mm:ss") + "'" + SPACE; + } else { + return (field.contains(".") ? "" : "t.") + field + SPACE + "= '" + DateUtil.parse(String.valueOf(getStringValueInWhere(field, value, attrVOMap)), "yyyy-MM-dd HH:mm:ss") + "'" + SPACE; + } + } else if (key.endsWith("_datele")) { + String field = UBCSSqlKeyword.getColumn(key, "_datele"); + if (referFieldMap.containsKey(field)) { + return referFieldMap.get(field) + SPACE + "<= '" + DateUtil.parse(String.valueOf(value), "yyyy-MM-dd HH:mm:ss") + "'" + SPACE; + } else { + return (field.contains(".") ? "" : "t.") + field + SPACE + "<= '" + DateUtil.parse(String.valueOf(getStringValueInWhere(field, value, attrVOMap)), "yyyy-MM-dd HH:mm:ss") + "'" + SPACE; + } + } else if (key.endsWith("_datelt")) { + String field = UBCSSqlKeyword.getColumn(key, "_datelt"); + if (referFieldMap.containsKey(field)) { + return referFieldMap.get(field) + SPACE + "< '" + DateUtil.parse(String.valueOf(value), "yyyy-MM-dd HH:mm:ss") + "'" + SPACE; + } else { + return (field.contains(".") ? "" : "t.") + field + SPACE + "< '" + DateUtil.parse(String.valueOf(getStringValueInWhere(field, value, attrVOMap)), "yyyy-MM-dd HH:mm:ss") + "'" + SPACE; + } + } else if (key.endsWith("_null")) { + String field = UBCSSqlKeyword.getColumn(key, "_null"); + if (referFieldMap.containsKey(field)) { + return referFieldMap.get(field) + SPACE + "IS NULL" + SPACE; + } else { + return (field.contains(".") ? "" : "t.") + field + SPACE + "IS NULL" + SPACE; + } + } else if (key.endsWith("_notnull")) { + String field = UBCSSqlKeyword.getColumn(key, "_null"); + if (referFieldMap.containsKey(field)) { + return referFieldMap.get(field) + SPACE + "IS NOT NULL" + SPACE; + } else { + return (field.contains(".") ? "" : "t.") + field + SPACE + "IS NOT NULL" + SPACE; + } + } else if (key.endsWith("_dateequal")) { + String field = UBCSSqlKeyword.getColumn(key, "_dateequal"); + if (referFieldMap.containsKey(field)) { + return referFieldMap.get(field) + SPACE + "= '" + DateUtil.parse(String.valueOf(value), "yyyy-MM-dd HH:mm:ss") + "'" + SPACE; + } else { + return (field.contains(".") ? "" : "t.") + field + SPACE + "= '" + DateUtil.parse(String.valueOf(getStringValueInWhere(field, value, attrVOMap)), "yyyy-MM-dd HH:mm:ss") + "'" + SPACE; + } + } else if (key.endsWith("_equal")) { + String field = UBCSSqlKeyword.getColumn(key, "_equal"); + if (referFieldMap.containsKey(field)) { + return referFieldMap.get(field) + SPACE + "= '" + value + "'" + SPACE; + } else { + return (field.contains(".") ? "" : "t.") + field + SPACE + "= " + getStringValueInWhere(field, value, attrVOMap) + "" + SPACE; + } + } 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 { + //TODO:鏆傛椂娌¤�冭檻IN>1000鏉$殑闂 + //return (field.contains(".") ? "" : "t.") + field + SPACE + "= " + getStringValueInWhere(field, value, attrVOMap) + "" + SPACE; + return (field.contains(".") ? "" : "t.") + field + SPACE + "IN (" + getStringValueInWhere(field, "IN//"+value, attrVOMap) + ")" + SPACE; + } + } else if (key.endsWith("_notin")) { + 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 + "not in (" + getStringValueInWhere(field, "IN//"+value, attrVOMap) + ")" + SPACE; + return (field.contains(".") ? "" : "t.") + field + SPACE + "IN (" + getStringValueInWhere(field, "IN//"+value, attrVOMap) + ")" + SPACE; + } + + } else { // if (referFieldMap.containsKey(key)) { // //璇存槑鏄弬鐓х殑锛屾垜浠弬鐓х殑鏌ヨ閮借涓烘槸瀛楃涓诧紝濡傛灉鏄椂闂存牸寮忕殑鏌ヨ鑲畾鏈夐棶棰橈紝 // String selectKey = referFieldMap.get(key); // return getSqlByValue(selectKey, value, null, btmType); // } else { - return getSqlByValue(key, value, attrVOMap, btmType); + return getSqlByValue(key, value, attrVOMap, btmType); // } - } - } - return ""; + } + } + return ""; /*if (key.endsWith("_begin")) { //璇存槑鏄�>=鐨勩�傛垜浠渶瑕佸厛鑾峰彇涓�涓� @@ -2153,685 +2633,735 @@ return getSqlByValue(key, value, attrVOMap,btmType); } }*/ + } - } + /** + * 鑾峰彇鏌ヨ鏉′欢涓殑鍊肩殑锛屽鐞嗕笉鍚岀殑绫诲瀷 + * + * @param value 鍊� + * @param field 瀛楁鍚嶇О + * @return 鏃ユ湡鎴栬�呮椂闂存牸寮忎細鍖呮嫭to_date锛屽瓧绗︿覆浼氬姞' + */ + private String getStringValueInWhere(String field, String value, Map<String, CodeClassifyTemplateAttrVO> attrVOMap) { + if ((field.contains(".") && !field.toLowerCase(Locale.ROOT).startsWith("t.")) || attrVOMap == null + || !field.replace("t.", "").matches(RegExpConstant.LETTER) || value.startsWith(ONLY)) { + //璇存槑鍙兘鏄寚瀹氱殑鏌愪釜鏉′欢锛岀洿鎺ヨ繑鍥� + if (value.startsWith(ONLY)) { + value = value.replace(ONLY, ""); + } + if ((value.startsWith("(") && value.endsWith(")")) || (value.startsWith("'") && value.endsWith("'"))) { + return value; + } + if (field.contains(".") && attrVOMap != null && attrVOMap.containsKey(field.split("\\.")[0].toLowerCase(Locale.ROOT))) { + //鏄弬鐓� + return "'" + value + "'"; + } else { + return value; + } + } else { + //鐪嬬湅鏄笉鏄繖涓璞¢噷鐨勫睘鎬� + if (attrVOMap.containsKey(field)) { + VciFieldTypeEnum fieldTypeEnum = VciFieldTypeEnum.valueOf(attrVOMap.get(field).getAttributeDataType()); + if ("ts".equalsIgnoreCase(field)) { + return "to_timestamp('" + value + "', '" + DATETIME_FORMAT + ".ff')"; + } + DateConverter dateConverter = new DateConverter(); + if (VciFieldTypeEnum.VTDateTime.equals(fieldTypeEnum)) { + //瀹為檯涓婏紝鏁版嵁搴撻兘鏄痶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)) { + 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)) { + return value; + } else { + if(value.contains("IN//")){ + return MybatisParameterUtil.getInClause(Func.toStrList(value.replace("IN//",""))); + } + return "'" + value + "'"; + } + } else { + if ((value.startsWith("(") && value.endsWith(")")) || (value.startsWith("'") && value.endsWith("'"))) { + return value; + }else if(value.contains("IN//")){ + //鏆傛椂涓嶈�冭檻>1000鐨勬儏鍐碉紝鍥犱负鎼滅储涓�鑸篃涓嶄細鍑虹幇鎼滅储1000鏉$殑鎯呭喌 + //return MybatisParameterUtil.convertToOrConditions(field, Func.toStrList(value.replace("IN//",""))); + return MybatisParameterUtil.getInClause(Func.toStrList(value.replace("IN//",""))); + }else{ + return "'" + value + "'"; + } + } + } - /** - * 鑾峰彇鏌ヨ鏉′欢涓殑鍊肩殑锛屽鐞嗕笉鍚岀殑绫诲瀷 - * - * @param value 鍊� - * @param field 瀛楁鍚嶇О - * @return 鏃ユ湡鎴栬�呮椂闂存牸寮忎細鍖呮嫭to_date锛屽瓧绗︿覆浼氬姞' - */ - private String getStringValueInWhere(String field, String value, Map<String, CodeClassifyTemplateAttrVO> attrVOMap) { - if ((field.contains(".") && !field.toLowerCase(Locale.ROOT).startsWith("t.")) || attrVOMap == null - || !field.replace("t.", "").matches(RegExpConstant.LETTER) || value.startsWith(ONLY)) { - //璇存槑鍙兘鏄寚瀹氱殑鏌愪釜鏉′欢锛岀洿鎺ヨ繑鍥� - if (value.startsWith(ONLY)) { - value = value.replace(ONLY, ""); - } - if ((value.startsWith("(") && value.endsWith(")")) || (value.startsWith("'") && value.endsWith("'"))) { - return value; - } - if (field.contains(".") && attrVOMap != null && attrVOMap.containsKey(field.split("\\.")[0].toLowerCase(Locale.ROOT))) { - //鏄弬鐓� - return "'" + value + "'"; - } else { - return value; - } - } else { - //鐪嬬湅鏄笉鏄繖涓璞¢噷鐨勫睘鎬� - if (attrVOMap.containsKey(field)) { - VciFieldTypeEnum fieldTypeEnum = VciFieldTypeEnum.valueOf(attrVOMap.get(field).getAttributeDataType()); - if ("ts".equalsIgnoreCase(field)) { - return "to_timestamp('" + value + "', '" + DATETIME_FORMAT + ".ff')"; - } - DateConverter dateConverter = new DateConverter(); - if (VciFieldTypeEnum.VTDateTime.equals(fieldTypeEnum)) { - //瀹為檯涓婏紝鏁版嵁搴撻兘鏄痶imestamp鐨勭被鍨�. - 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 + "')"; - } else if (VciFieldTypeEnum.VTDouble.equals(fieldTypeEnum) - || VciFieldTypeEnum.VTLong.equals(fieldTypeEnum) - || VciFieldTypeEnum.VTInteger.equals(fieldTypeEnum)) { - return value; - } else { - return "'" + value + "'"; - } - } else { - if ((value.startsWith("(") && value.endsWith(")")) || (value.startsWith("'") && value.endsWith("'"))) { - return value; - } - return "'" + value + "'"; - } - } + } - } + /** + * 鏌ョ湅鏄惁榛樿灞炴�� + * + * @param selectKey + * @param btmType + * @return + */ + private boolean isDefaultAttr(String selectKey, String btmType) { + if (StringUtils.isBlank(btmType)) { + return false; + } + R<BtmTypeVO> r = btmTypeClient.getDefaultAttrByBtmId(btmType); + List<BtmTypeAttributeVO> attributes = r.getData().getAttributes(); + if (!r.isSuccess() || attributes.isEmpty()) { + return false; + } + return attributes.stream().anyMatch(item -> item.getId().equals(selectKey)); + } - /** - * 鏌ョ湅鏄惁榛樿灞炴�� - * - * @param selectKey - * @param btmType - * @return - */ - private boolean isDefaultAttr(String selectKey, String btmType) { - if (StringUtils.isBlank(btmType)) { - return false; - } - R<BtmTypeVO> r = btmTypeClient.getDefaultAttrByBtmId(btmType); - List<BtmTypeAttributeVO> attributes = r.getData().getAttributes(); - if (!r.isSuccess() || attributes.isEmpty()) { - return false; - } - return attributes.stream().anyMatch(item -> item.getId().equals(selectKey)); - } - - /** - * 灏佽鏈�缁堢殑sql璇彞涓殑鍊奸儴鍒� - * - * @param selectKey 鏌ヨ鐨勫瓧娈� - * @param value 鍊� - * @param attrVOMap 灞炴�х殑鏄剧ず瀵硅薄鏄犲皠 - * @return sql閲岀殑鍊� - */ - private String getSqlByValue(String selectKey, String value, Map<String, CodeClassifyTemplateAttrVO> attrVOMap, String btmType) { - StringBuilder sql = new StringBuilder(); - // TODO 宸插畬鍠� - if (!selectKey.contains(".") && (attrVOMap.containsKey(selectKey.toLowerCase(Locale.ROOT)) || isDefaultAttr(selectKey, btmType) || selectKey.matches(RegExpConstant.LETTER))) { - sql.append("t."); - } - if (value.startsWith(QueryOptionConstant.IN)) { - if(value.startsWith(QueryOptionConstant.IN+"('") && value.endsWith("')")){ + /** + * 灏佽鏈�缁堢殑sql璇彞涓殑鍊奸儴鍒� + * + * @param selectKey 鏌ヨ鐨勫瓧娈� + * @param value 鍊� + * @param attrVOMap 灞炴�х殑鏄剧ず瀵硅薄鏄犲皠 + * @return sql閲岀殑鍊� + */ + private String getSqlByValue(String selectKey, String value, Map<String, CodeClassifyTemplateAttrVO> attrVOMap, String btmType) { + StringBuilder sql = new StringBuilder(); + // TODO 宸插畬鍠� + if (!selectKey.contains(".") && (attrVOMap.containsKey(selectKey.toLowerCase(Locale.ROOT)) || isDefaultAttr(selectKey, btmType) || selectKey.matches(RegExpConstant.LETTER))) { + sql.append("t."); + } + if (value.startsWith(QueryOptionConstant.IN)) { + if (value.startsWith(QueryOptionConstant.IN + "('") && value.endsWith("')")) { sql.append(selectKey) .append(SPACE) .append("in") .append(SPACE) .append(value.replace(QueryOptionConstant.IN, "")); - }else{ + } else { sql.append(selectKey) - .append(SPACE) - .append("in") - .append(SPACE) - .append("(") - .append(value.replace(QueryOptionConstant.IN, "")) - .append(")"); + .append(SPACE) + .append("in") + .append(SPACE) + .append("(") + .append(value.replace(QueryOptionConstant.IN, "")) + .append(")"); } - } else if (value.startsWith(QueryOptionConstant.NOTIN)) { - sql.append(selectKey) - .append(SPACE) - .append("not in") - .append(SPACE) - .append("(") - .append(value.replace(QueryOptionConstant.NOTIN, "")) - .append(")"); - } else if (value.startsWith(QueryOptionConstant.NOTEQUAL)) { - value = value.replace(QueryOptionConstant.NOTEQUAL, ""); - value = getStringValueInWhere(selectKey, value, attrVOMap); - sql.append(selectKey) - .append(SPACE) - .append(QueryOptionConstant.NOTEQUAL) - .append(SPACE) - .append(value); - } else if (value.startsWith(QueryOptionConstant.MORETHAN)) { - value = value.replace(QueryOptionConstant.MORETHAN, ""); - value = getStringValueInWhere(selectKey, value, attrVOMap); - sql.append(selectKey) - .append(SPACE) - .append(QueryOptionConstant.MORETHAN) - .append(SPACE) - .append(value); - } else if (value.startsWith(QueryOptionConstant.MORE)) { - value = value.replace(QueryOptionConstant.MORE, ""); - value = getStringValueInWhere(selectKey, value, attrVOMap); - sql.append(selectKey) - .append(SPACE) - .append(QueryOptionConstant.MORE) - .append(SPACE) - .append(value); - } else if (value.startsWith(QueryOptionConstant.LESSTHAN)) { - value = value.replace(QueryOptionConstant.LESSTHAN, ""); - value = getStringValueInWhere(selectKey, value, attrVOMap); + } else if (value.startsWith(QueryOptionConstant.NOTIN)) { + sql.append(selectKey) + .append(SPACE) + .append("not in") + .append(SPACE) + .append("(") + .append(value.replace(QueryOptionConstant.NOTIN, "")) + .append(")"); + } else if (value.startsWith(QueryOptionConstant.NOTEQUAL)) { + value = value.replace(QueryOptionConstant.NOTEQUAL, ""); + value = getStringValueInWhere(selectKey, value, attrVOMap); + sql.append(selectKey) + .append(SPACE) + .append(QueryOptionConstant.NOTEQUAL) + .append(SPACE) + .append(value); + } else if (value.startsWith(QueryOptionConstant.MORETHAN)) { + value = value.replace(QueryOptionConstant.MORETHAN, ""); + value = getStringValueInWhere(selectKey, value, attrVOMap); + sql.append(selectKey) + .append(SPACE) + .append(QueryOptionConstant.MORETHAN) + .append(SPACE) + .append(value); + } else if (value.startsWith(QueryOptionConstant.MORE)) { + value = value.replace(QueryOptionConstant.MORE, ""); + value = getStringValueInWhere(selectKey, value, attrVOMap); + sql.append(selectKey) + .append(SPACE) + .append(QueryOptionConstant.MORE) + .append(SPACE) + .append(value); + } else if (value.startsWith(QueryOptionConstant.LESSTHAN)) { + value = value.replace(QueryOptionConstant.LESSTHAN, ""); + value = getStringValueInWhere(selectKey, value, attrVOMap); - sql.append(selectKey) - .append(SPACE) - .append(QueryOptionConstant.LESSTHAN) - .append(SPACE) - .append(value); - } else if (value.startsWith(QueryOptionConstant.LESS)) { - value = value.replace(QueryOptionConstant.LESS, ""); - value = getStringValueInWhere(selectKey, value, attrVOMap); + sql.append(selectKey) + .append(SPACE) + .append(QueryOptionConstant.LESSTHAN) + .append(SPACE) + .append(value); + } else if (value.startsWith(QueryOptionConstant.LESS)) { + value = value.replace(QueryOptionConstant.LESS, ""); + value = getStringValueInWhere(selectKey, value, attrVOMap); - sql.append(selectKey) - .append(SPACE) - .append(QueryOptionConstant.LESS) - .append(SPACE) - .append(value); - } else if (value.startsWith(QueryOptionConstant.ISNOTNULL)) { - sql.append(selectKey) - .append(SPACE) - .append(" is not null"); - } else if (value.startsWith(QueryOptionConstant.ISNULL)) { - sql.append(selectKey) - .append(SPACE) - .append(" is null"); - } else if (value.contains("*")) { - //璇存槑鏄痩ike锛屾垨鑰卨efe like ,right like - value = getStringValueInWhere(selectKey, value, attrVOMap); - sql.append(selectKey) - .append(SPACE) - .append("like") - .append(SPACE) - // .append("'") - .append(value.replace("*", "%")) - // .append("'") - .append(SPACE); - } else { - value = value.replace(SPECIAL_CHAR, REQUIRED_CHAR); - value = getStringValueInWhere(selectKey, value, attrVOMap); + sql.append(selectKey) + .append(SPACE) + .append(QueryOptionConstant.LESS) + .append(SPACE) + .append(value); + } else if (value.startsWith(QueryOptionConstant.ISNOTNULL)) { + sql.append(selectKey) + .append(SPACE) + .append(" is not null"); + } else if (value.startsWith(QueryOptionConstant.ISNULL)) { + sql.append(selectKey) + .append(SPACE) + .append(" is null"); + } else if (value.contains("*")) { + //璇存槑鏄痩ike锛屾垨鑰卨efe like ,right like + value = getStringValueInWhere(selectKey, value, attrVOMap); + sql.append(selectKey) + .append(SPACE) + .append("like") + .append(SPACE) + // .append("'") + .append(value.replace("*", "%")) + // .append("'") + .append(SPACE); + } else { + value = value.replace(SPECIAL_CHAR, REQUIRED_CHAR); + value = getStringValueInWhere(selectKey, value, attrVOMap); - sql.append(selectKey) - .append(SPACE) - .append(QueryOptionConstant.EQUAL) - .append(SPACE) - .append(value); - } - sql.append(SPACE); - return sql.toString(); - } + sql.append(selectKey) + .append(SPACE) + .append(QueryOptionConstant.EQUAL) + .append(SPACE) + .append(value); + } + sql.append(SPACE); + return sql.toString(); + } - /** - * 淇敼涓婚搴撴暟鎹� - * - * @param orderDTO 鏁版嵁鐨勫唴瀹癸紝涓嶇敤鍖呭惈鐮佹鐨勫唴瀹逛簡 - */ - @Override - public void editSaveCode(CodeOrderDTO orderDTO) { - VciBaseUtil.alertNotNull(orderDTO, "缂栫爜鐢宠鐩稿叧鐨勫睘鎬х殑鍐呭閮戒负绌�", orderDTO.getOid(), "鏁版嵁涓婚敭", - orderDTO.getCodeClassifyOid(), "涓婚搴撳垎绫荤殑涓婚敭"); + /** + * 淇敼涓婚搴撴暟鎹� + * + * @param orderDTO 鏁版嵁鐨勫唴瀹癸紝涓嶇敤鍖呭惈鐮佹鐨勫唴瀹逛簡 + */ + @Override + public void editSaveCode(CodeOrderDTO orderDTO) { + VciBaseUtil.alertNotNull(orderDTO, "缂栫爜鐢宠鐩稿叧鐨勫睘鎬х殑鍐呭閮戒负绌�", orderDTO.getOid(), "鏁版嵁涓婚敭", + orderDTO.getCodeClassifyOid(), "涓婚搴撳垎绫荤殑涓婚敭"); // CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(orderDTO.getCodeClassifyOid()); - CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(orderDTO.getCodeClassifyOid()); - //鎵句笟鍔$被鍨嬶紝鐒跺悗浣跨敤涓婚敭鍘昏幏鍙栨暟鎹簱閲岀殑鏁版嵁 - List<BaseModel> cbos = selectByTypeAndOid(classifyFullInfo.getTopClassifyVO().getBtmTypeId(), orderDTO.getOid()); + CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(orderDTO.getCodeClassifyOid()); + //鎵句笟鍔$被鍨嬶紝鐒跺悗浣跨敤涓婚敭鍘昏幏鍙栨暟鎹簱閲岀殑鏁版嵁 + List<BaseModel> cbos = selectByTypeAndOid(classifyFullInfo.getTopClassifyVO().getBtmTypeId(), orderDTO.getOid()); - if (CollectionUtils.isEmpty(cbos)) { - throw new VciBaseException(DATA_OID_NOT_EXIST); - } - BaseModel cbo = cbos.get(0); - if (cbo == null) { - throw new VciBaseException(DATA_OID_NOT_EXIST); - } - if (!cbo.getTs().toString().contains(VciDateUtil.date2Str(orderDTO.getTs(), VciDateUtil.DateTimeFormat))) { - throw new VciBaseException("鏁版嵁涓嶆槸鏈�鏂扮殑锛屽彲鑳戒粬浜哄凡缁忎慨鏀癸紝璇峰埛鏂板悗鍐嶈瘯"); - } - if (!CodeDefaultLC.EDITING.getValue().equalsIgnoreCase(cbo.getLcStatus()) && !orderDTO.isEditInProcess()) { - throw new VciBaseException("鏁版嵁涓嶆槸{0}鐨勭姸鎬侊紝涓嶅厑璁镐慨鏀�", new String[]{CodeDefaultLC.EDITING.getText()}); - } + if (CollectionUtils.isEmpty(cbos)) { + throw new VciBaseException(DATA_OID_NOT_EXIST); + } + BaseModel cbo = cbos.get(0); + if (cbo == null) { + throw new VciBaseException(DATA_OID_NOT_EXIST); + } + if (!cbo.getTs().toString().contains(VciDateUtil.date2Str(orderDTO.getTs(), VciDateUtil.DateTimeFormat))) { + throw new VciBaseException("鏁版嵁涓嶆槸鏈�鏂扮殑锛屽彲鑳戒粬浜哄凡缁忎慨鏀癸紝璇峰埛鏂板悗鍐嶈瘯"); + } + if (!CodeDefaultLC.EDITING.getValue().equalsIgnoreCase(cbo.getLcStatus()) && !orderDTO.isEditInProcess()) { + throw new VciBaseException("鏁版嵁涓嶆槸{0}鐨勭姸鎬侊紝涓嶅厑璁镐慨鏀�", new String[]{CodeDefaultLC.EDITING.getText()}); + } - //娉ㄦ剰妯℃澘涓嶈兘浣跨敤鏁版嵁瀛樺偍鐨勬椂鍊欑殑妯℃澘锛屽洜涓哄彲鑳戒細鍙樺寲 + //娉ㄦ剰妯℃澘涓嶈兘浣跨敤鏁版嵁瀛樺偍鐨勬椂鍊欑殑妯℃澘锛屽洜涓哄彲鑳戒細鍙樺寲 - String codeClassifyOid=cbo.getData().get(CODE_CLASSIFY_OID_FIELD.toUpperCase()); + String codeClassifyOid = cbo.getData().get(CODE_CLASSIFY_OID_FIELD.toUpperCase()); orderDTO.setCodeClassifyOid(codeClassifyOid); // CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(orderDTO.getCodeClassifyOid()); // CodeClassifyTemplateVO templateVO= this.getUsedTemplateByClassifyOid(orderDTO.getCodeClassifyOid()); - CodeClassifyTemplateVO templateVO = templateService.getObjectHasAttrByOid(orderDTO.getTemplateOid()); + CodeClassifyTemplateVO templateVO = templateService.getObjectHasAttrByOid(orderDTO.getTemplateOid()); orderDTO.setTemplateOid(templateVO.getOid()); //1. 鍒ゆ柇蹇呰緭椤� checkRequiredAttrOnOrder(templateVO, orderDTO); - //2.鍏堟敞鍏ワ紝鍐嶇粍鍚堬紝鏈�鍚庢牎楠� - switchClassifyLevelOnOrder(templateVO, classifyFullInfo, orderDTO); - //3.澶勭悊缁勫悎瑙勫垯銆傜粍鍚堣鍒欎笉鑳戒娇鐢ㄧ紪鐮佺殑灞炴�э紝鍥犱负缂栫爜鐨勭敓鎴愬彲鑳芥槸闇�瑕佸睘鎬х殑 - switchComponentAttrOnOrder(templateVO, orderDTO); - //4.鏍¢獙瑙勫垯 - checkVerifyOnOrder(templateVO, orderDTO); - //5.鍒ゆ柇鍏抽敭灞炴�� - checkKeyAttrOnOrder(classifyFullInfo, templateVO, orderDTO); - //6.鏍¢獙鏋氫妇鐨勫唴瀹规槸鍚︽纭� - checkEnumOnOrder(templateVO, orderDTO); - //7.澶勭悊鏃堕棿鏍煎紡锛屽湪鏁版嵁搴撻噷闈笉璁烘槸瀛楃涓茶繕鏄棩鏈熸牸寮忥紝閮戒娇鐢ㄧ浉鍚岀殑鏍煎紡瀛樺偍 - switchDateAttrOnOrder(templateVO, orderDTO); - //榛樿鐨勫唴瀹逛笉鑳藉彉锛屾墍浠ュ彧闇�瑕佹嫹璐濊嚜瀹氫箟鐨勭浉鍏冲睘鎬у嵆鍙� - copyValueToCBO(classifyFullInfo, cbo, orderDTO, templateVO, true); - //浼佷笟鐮佸拰闆嗗洟鐮佺殑涓嶄慨鏀� - cbo.setDescription(orderDTO.getDescription()); + //2.鍏堟敞鍏ワ紝鍐嶇粍鍚堬紝鏈�鍚庢牎楠� + switchClassifyLevelOnOrder(templateVO, classifyFullInfo, orderDTO); + //3.澶勭悊缁勫悎瑙勫垯銆傜粍鍚堣鍒欎笉鑳戒娇鐢ㄧ紪鐮佺殑灞炴�э紝鍥犱负缂栫爜鐨勭敓鎴愬彲鑳芥槸闇�瑕佸睘鎬х殑 + switchComponentAttrOnOrder(templateVO, orderDTO); + //4.鏍¢獙瑙勫垯 + checkVerifyOnOrder(templateVO, orderDTO); + //5.鍒ゆ柇鍏抽敭灞炴�� + checkKeyAttrOnOrder(classifyFullInfo, templateVO, orderDTO); + //6.鏍¢獙鏋氫妇鐨勫唴瀹规槸鍚︽纭� + checkEnumOnOrder(templateVO, orderDTO); + //7.澶勭悊鏃堕棿鏍煎紡锛屽湪鏁版嵁搴撻噷闈笉璁烘槸瀛楃涓茶繕鏄棩鏈熸牸寮忥紝閮戒娇鐢ㄧ浉鍚岀殑鏍煎紡瀛樺偍 + switchDateAttrOnOrder(templateVO, orderDTO); + //榛樿鐨勫唴瀹逛笉鑳藉彉锛屾墍浠ュ彧闇�瑕佹嫹璐濊嚜瀹氫箟鐨勭浉鍏冲睘鎬у嵆鍙� + copyValueToCBO(classifyFullInfo, cbo, orderDTO, templateVO, true); + //浼佷笟鐮佸拰闆嗗洟鐮佺殑涓嶄慨鏀� + cbo.setDescription(orderDTO.getDescription()); // cbo.setName(orderDTO.getName()); - try { - cbo.setDescription(StringUtils.isBlank(orderDTO.getDescription()) ? "" : orderDTO.getDescription()); - cbo.setName(orderDTO.getName()); - } catch (Exception e) { - e.printStackTrace(); - } + try { + cbo.setDescription(StringUtils.isBlank(orderDTO.getDescription()) ? "" : orderDTO.getDescription()); + cbo.setName(orderDTO.getName()); + } catch (Exception e) { + e.printStackTrace(); + } // cbo.getData().putAll(orderDTO.getData()); - cbo.setLastModifyTime(new Date()); - cbo.setLastModifier(String.valueOf(AuthUtil.getUser().getAccount())); + cbo.setLastModifyTime(new Date()); + cbo.setLastModifier(String.valueOf(AuthUtil.getUser().getAccount())); R r = updateBatchByBaseModel(classifyFullInfo.getTopClassifyVO().getBtmTypeId(), Collections.singletonList(cbo)); - if(!r.isSuccess()){ + + if (!r.isSuccess()) { throw new ServiceException(r.getMsg()); } batchSaveSelectChar(templateVO, Collections.singletonList(cbo)); - } + } - /** - * 鍒犻櫎涓婚搴撴暟鎹� - * - * @param deleteBatchDTO 鏁版嵁鐨勫唴瀹癸紝蹇呴』瑕佹湁涓婚敭鍜屽垎绫讳富閿� - */ - @Override - public void deleteCode(CodeDeleteBatchDTO deleteBatchDTO) { - VciBaseUtil.alertNotNull(deleteBatchDTO, "缂栫爜鐢宠鐩稿叧鐨勫睘鎬у拰鐮佹鐨勫唴瀹归兘涓虹┖", deleteBatchDTO.getOidList(), "鏁版嵁涓婚敭", - deleteBatchDTO.getCodeClassifyOid(), "涓婚搴撳垎绫荤殑涓婚敭"); - CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(deleteBatchDTO.getCodeClassifyOid()); - //鎵句笟鍔$被鍨嬶紝鐒跺悗浣跨敤涓婚敭鍘昏幏鍙栨暟鎹簱閲岀殑鏁版嵁 - Collection<String> oidCollection = new ArrayList<>(); - for (Collection<String> strings : VciBaseUtil.switchCollectionForOracleIn(deleteBatchDTO.getOidList())) { - oidCollection.addAll(strings); - } + /** + * 鍒犻櫎涓婚搴撴暟鎹� + * + * @param deleteBatchDTO 鏁版嵁鐨勫唴瀹癸紝蹇呴』瑕佹湁涓婚敭鍜屽垎绫讳富閿� + */ + @Override + public void deleteCode(CodeDeleteBatchDTO deleteBatchDTO) { + VciBaseUtil.alertNotNull(deleteBatchDTO, "缂栫爜鐢宠鐩稿叧鐨勫睘鎬у拰鐮佹鐨勫唴瀹归兘涓虹┖", deleteBatchDTO.getOidList(), "鏁版嵁涓婚敭", + deleteBatchDTO.getCodeClassifyOid(), "涓婚搴撳垎绫荤殑涓婚敭"); + CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(deleteBatchDTO.getCodeClassifyOid()); + //鎵句笟鍔$被鍨嬶紝鐒跺悗浣跨敤涓婚敭鍘昏幏鍙栨暟鎹簱閲岀殑鏁版嵁 + Collection<String> oidCollection = new ArrayList<>(); + for (Collection<String> strings : VciBaseUtil.switchCollectionForOracleIn(deleteBatchDTO.getOidList())) { + oidCollection.addAll(strings); + } // List<CodeWupin> cboList = codeWupinMapper.selectBatchIds(oidCollection); - List<BaseModel> cboList = new ArrayList<>(); - oidCollection.stream().forEach(oids -> { - Map<String, String> conditionMap = new HashMap<>(); + List<BaseModel> cboList = new ArrayList<>(); + oidCollection.stream().forEach(oids -> { + Map<String, String> conditionMap = new HashMap<>(); // conditionMap.put("oid", QueryOptionConstant.IN + "(" + VciBaseUtil.toInSql(oids.toArray(new String[0])) + ")"); - List<BaseModel> cbos = selectByTypeAndOid(classifyFullInfo.getTopClassifyVO().getBtmTypeId(), oids); + List<BaseModel> cbos = selectByTypeAndOid(classifyFullInfo.getTopClassifyVO().getBtmTypeId(), oids); // boService.queryCBO(classifyFullInfo.getTopClassifyVO().getBtmtypeid(), conditionMap); - cboList.addAll(cbos); - }); - if (CollectionUtils.isEmpty(cboList)) { - throw new VciBaseException("鏁版嵁鍏ㄩ儴鍦ㄧ郴缁熶腑涓嶅瓨鍦�"); - } - List<BaseModel> editCBOs = cboList.stream().filter(s -> !CodeDefaultLC.EDITING.getValue().equalsIgnoreCase(s.getLcStatus())).collect(Collectors.toList()); - if (!CollectionUtils.isEmpty(editCBOs)) { - BaseModel cbo = editCBOs.get(0); - throw new VciBaseException("缂栫爜涓簕0}绛夊叡{1}鏉℃暟鎹殑鐘舵�佷笉鏄痆{2}]锛屼笉鍏佽鍒犻櫎", new String[]{cbo.getId(), String.valueOf(editCBOs.size()), CodeDefaultLC.EDITING.getText()}); - } + cboList.addAll(cbos); + }); + if (CollectionUtils.isEmpty(cboList)) { + throw new VciBaseException("鏁版嵁鍏ㄩ儴鍦ㄧ郴缁熶腑涓嶅瓨鍦�"); + } + List<BaseModel> editCBOs = cboList.stream().filter(s -> !CodeDefaultLC.EDITING.getValue().equalsIgnoreCase(s.getLcStatus())).collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(editCBOs)) { + BaseModel cbo = editCBOs.get(0); + throw new VciBaseException("缂栫爜涓簕0}绛夊叡{1}鏉℃暟鎹殑鐘舵�佷笉鏄痆{2}]锛屼笉鍏佽鍒犻櫎", new String[]{cbo.getId(), String.valueOf(editCBOs.size()), CodeDefaultLC.EDITING.getText()}); + } - //鍙兘鍒犻櫎鑷繁鍒涘缓鐨勬暟鎹� - String userId = String.valueOf(AuthUtil.getUser().getAccount()); - for (BaseModel clientBusinessObject : cboList) { - String creator = clientBusinessObject.getCreator(); - if (!userId.equalsIgnoreCase(creator)) { - throw new VciBaseException("缂栫爜涓�" + clientBusinessObject.getId() + "鐨勬暟鎹笉鏄綋鍓嶇敤鎴峰垱寤猴紝涓嶈兘鍒犻櫎锛�"); - } + //鍙兘鍒犻櫎鑷繁鍒涘缓鐨勬暟鎹� + String userId = String.valueOf(AuthUtil.getUser().getAccount()); + for (BaseModel clientBusinessObject : cboList) { + String creator = clientBusinessObject.getCreator(); + if (!userId.equalsIgnoreCase(creator)) { + throw new VciBaseException("缂栫爜涓�" + clientBusinessObject.getId() + "鐨勬暟鎹笉鏄綋鍓嶇敤鎴峰垱寤猴紝涓嶈兘鍒犻櫎锛�"); + } - } + } // BatchCBO batchCBO = new BatchCBO(); // batchCBO.getDeleteCbos().addAll(cboList); // WebUtil.setPersistence(false); // batchCBO.copyFromOther( - productCodeService.recycleCode(classifyFullInfo.getTopClassifyVO().getBtmTypeId(), deleteBatchDTO.getOidList()); + productCodeService.recycleCode(classifyFullInfo.getTopClassifyVO().getBtmTypeId(), deleteBatchDTO.getOidList()); // baseMapper.deleteBatchIds(cboList); - //浣跨敤浼犲叆鐨勪笟鍔$被鍨嬫煡璇㈣〃 - R<List<BtmTypeVO>> listR = btmTypeClient.selectByIdCollection(Collections.singletonList(classifyFullInfo.getTopClassifyVO().getBtmTypeId())); - if (!listR.isSuccess() || listR.getData().size() == 0) { - throw new VciBaseException("浼犲叆涓氬姟绫诲瀷鏈煡璇㈠埌鐩稿簲琛ㄥ崟锛岃妫�鏌ワ紒"); - } - commonsMapper.deleteByTaleAndOid(listR.getData().get(0).getTableName(), - "'" + (StringUtils.join(cboList.stream().map(BaseModel::getOid).collect(Collectors.toSet()), "','")) + "'"); - // ); + //浣跨敤浼犲叆鐨勪笟鍔$被鍨嬫煡璇㈣〃 + R<List<BtmTypeVO>> listR = btmTypeClient.selectByIdCollection(Collections.singletonList(classifyFullInfo.getTopClassifyVO().getBtmTypeId())); + if (!listR.isSuccess() || listR.getData().size() == 0) { + throw new VciBaseException("浼犲叆涓氬姟绫诲瀷鏈煡璇㈠埌鐩稿簲琛ㄥ崟锛岃妫�鏌ワ紒"); + } + commonsMapper.deleteByTaleAndOid(listR.getData().get(0).getTableName(), + "'" + (StringUtils.join(cboList.stream().map(BaseModel::getOid).collect(Collectors.toSet()), "','")) + "'"); + // ); // WebUtil.setPersistence(true); // boService.persistenceBatch(batchCBO); - } + } - /** - * 浣跨敤鍒嗙被鍜岄樁娈电殑缂栧彿锛岃幏鍙栧寘鍚殑灞炴�� - * - * @param codeClassifyOid 鍒嗙被鐨勪富閿� - * @param phase 闃舵鐨勫悕绉� - * @return 灞炴�х殑鑻辨枃鍚嶇О - */ - @Override - public List<String> listPhaseAttrByClassifyOid(String codeClassifyOid, String phase) { - CodeClassifyTemplateVO templateVO = getUsedTemplateByClassifyOid(codeClassifyOid, false); - //鎵鹃樁娈� - return phaseAttrService.listAttrByTemplateOidAndPhaseId(templateVO.getOid(), phase); - } + /** + * 浣跨敤鍒嗙被鍜岄樁娈电殑缂栧彿锛岃幏鍙栧寘鍚殑灞炴�� + * + * @param codeClassifyOid 鍒嗙被鐨勪富閿� + * @param phase 闃舵鐨勫悕绉� + * @return 灞炴�х殑鑻辨枃鍚嶇О + */ + @Override + public List<String> listPhaseAttrByClassifyOid(String codeClassifyOid, String phase) { + CodeClassifyTemplateVO templateVO = getUsedTemplateByClassifyOid(codeClassifyOid, false); + //鎵鹃樁娈� + return phaseAttrService.listAttrByTemplateOidAndPhaseId(templateVO.getOid(), phase); + } - /** - * 璺緞涓婂寘鍚綋鍓嶅垎绫荤殑鎵�鏈夊垎绫讳俊鎭� - * - * @param codeClassifyOid 鍒嗙被鐨勪富閿� - * @return 鍒嗙被鏍� - */ - @Override - public List<Tree> hasSelfClassifyTree(String codeClassifyOid) { - if (StringUtils.isBlank(codeClassifyOid)) { - return new ArrayList<>(); - } - CodeClassifyFullInfoBO fullInfo = classifyService.getClassifyFullInfo(codeClassifyOid); - //鏌ヨ瀛� - List<CodeClassifyVO> childrenClassifys = classifyService.listChildrenClassify(codeClassifyOid, true, "id", true); - Map<String, CodeClassifyVO> classifyVOMap = new HashMap<>(); - classifyVOMap.putAll(Optional.ofNullable(fullInfo.getParentClassifyVOs()).orElseGet(() -> new ArrayList<>()).stream().collect(Collectors.toMap(s -> s.getOid(), t -> t))); - classifyVOMap.putAll(Optional.ofNullable(childrenClassifys).orElseGet(() -> new ArrayList<>()).stream().collect(Collectors.toMap(s -> s.getOid(), t -> t))); - TreeWrapperOptions treeWrapperOptions = new TreeWrapperOptions(CodeClassifyServiceImpl.PARENT_FIELD_NAME.toLowerCase(Locale.ROOT)); - return revisionModelUtil.doList2Trees(classifyVOMap.values().stream().collect(Collectors.toList()), treeWrapperOptions, (CodeClassifyVO s) -> { - return s.getId() + " " + s.getName() + (FrameworkDataLCStatus.DISABLED.getValue().equalsIgnoreCase(s - .getLcStatus()) ? (" 銆愬仠鐢ㄣ�� ") : ""); - }); - } + /** + * 璺緞涓婂寘鍚綋鍓嶅垎绫荤殑鎵�鏈夊垎绫讳俊鎭� + * + * @param codeClassifyOid 鍒嗙被鐨勪富閿� + * @return 鍒嗙被鏍� + */ + @Override + public List<Tree> hasSelfClassifyTree(String codeClassifyOid) { + if (StringUtils.isBlank(codeClassifyOid)) { + return new ArrayList<>(); + } + CodeClassifyFullInfoBO fullInfo = classifyService.getClassifyFullInfo(codeClassifyOid); + //鏌ヨ瀛� + List<CodeClassifyVO> childrenClassifys = classifyService.listChildrenClassify(codeClassifyOid, true, "id", true); + Map<String, CodeClassifyVO> classifyVOMap = new HashMap<>(); + classifyVOMap.putAll(Optional.ofNullable(fullInfo.getParentClassifyVOs()).orElseGet(() -> new ArrayList<>()).stream().collect(Collectors.toMap(s -> s.getOid(), t -> t))); + classifyVOMap.putAll(Optional.ofNullable(childrenClassifys).orElseGet(() -> new ArrayList<>()).stream().collect(Collectors.toMap(s -> s.getOid(), t -> t))); + TreeWrapperOptions treeWrapperOptions = new TreeWrapperOptions(CodeClassifyServiceImpl.PARENT_FIELD_NAME.toLowerCase(Locale.ROOT)); + return revisionModelUtil.doList2Trees(classifyVOMap.values().stream().collect(Collectors.toList()), treeWrapperOptions, (CodeClassifyVO s) -> { + return s.getId() + " " + s.getName() + (FrameworkDataLCStatus.DISABLED.getValue().equalsIgnoreCase(s + .getLcStatus()) ? (" 銆愬仠鐢ㄣ�� ") : ""); + }); + } - /** - * 浣跨敤鍒嗙被鑾峰彇瀵瑰簲鐨勬暟鎹� - * - * @param codeClassifyOid 鍒嗙被鐨勪富閿� - * @param templateOid 妯℃澘鐨勪富閿� - * @param conditionMap 鏌ヨ鏉′欢 - * @param pageHelper 鍒嗛〉鐨勫璞� - * @return 鏁版嵁锛堝寘鍚笅绾у垎绫伙級 - */ - @Override - public DataGrid<Map<String, String>> gridTableDataByClassifyOid(String codeClassifyOid, String templateOid, Map<String, String> conditionMap, PageHelper pageHelper) { - //1. 浣跨敤鍒嗙被鑾峰彇鎵�鏈夌殑涓嬬骇鍒嗙被锛岀劧鍚庢牴鎹垎绫绘煡璇㈠搴旂殑鏁版嵁 - //2. 鍏ㄩ儴浣跨敤褰撳墠鍒嗙被鐨勫綋鍓嶆ā鏉挎潵灞曠ず鍐呭 - //3. 濡傛灉妯℃澘涓婃湁鏋氫妇娉ㄥ叆锛岀粍鍚堣鍒欙紝鍜屽弬鐓х殑锛岄渶瑕佹墽琛岃浆鎹� - //4. 鏌ヨ鐨勬椂鍊欙紝鐩存帴浣跨敤codeclsfpath鏉ユ煡璇� - CodeClassifyVO topClassifyVO = classifyService.getTopClassifyVO(codeClassifyOid); - CodeClassifyTemplateVO templateVO = templateService.getObjectHasAttrByOid(templateOid); - if (topClassifyVO == null || StringUtils.isBlank(topClassifyVO.getBtmTypeId())) { - throw new VciBaseException("褰撳墠涓婚搴撳垎绫绘病鏈夐《灞傚垎绫伙紝鎴栬�呴《灞傚垎绫绘病鏈夎缃笟鍔$被鍨�"); - } - String btmTypeId = topClassifyVO.getBtmTypeId(); - if (StringUtils.isBlank(btmTypeId)) { - return new DataGrid<>("杩欎釜鍒嗙被鎵�灞為《灞傚垎绫绘病鏈夋坊鍔犱笟鍔$被鍨�"); - } - if (conditionMap == null) { - conditionMap = new HashMap<>(); - } - pageHelper.addDefaultDesc("createTime"); -// pageHelper.addDefaultDesc("id"); - if (!classifyService.checkHasChild(codeClassifyOid)) { - conditionMap.put("t." + CODE_CLASSIFY_OID_FIELD, codeClassifyOid); - } else { + /** + * 浣跨敤鍒嗙被鑾峰彇瀵瑰簲鐨勬暟鎹� + * + * @param codeClassifyOid 鍒嗙被鐨勪富閿� + * @param templateOid 妯℃澘鐨勪富閿� + * @param conditionMap 鏌ヨ鏉′欢 + * @param pageHelper 鍒嗛〉鐨勫璞� + * @return 鏁版嵁锛堝寘鍚笅绾у垎绫伙級 + */ + @Override + public DataGrid<Map<String, String>> gridTableDataByClassifyOid(String codeClassifyOid, String templateOid, Map<String, String> conditionMap, PageHelper pageHelper) { + //1. 浣跨敤鍒嗙被鑾峰彇鎵�鏈夌殑涓嬬骇鍒嗙被锛岀劧鍚庢牴鎹垎绫绘煡璇㈠搴旂殑鏁版嵁 + //2. 鍏ㄩ儴浣跨敤褰撳墠鍒嗙被鐨勫綋鍓嶆ā鏉挎潵灞曠ず鍐呭 + //3. 濡傛灉妯℃澘涓婃湁鏋氫妇娉ㄥ叆锛岀粍鍚堣鍒欙紝鍜屽弬鐓х殑锛岄渶瑕佹墽琛岃浆鎹� + //4. 鏌ヨ鐨勬椂鍊欙紝鐩存帴浣跨敤codeclsfpath鏉ユ煡璇� + CodeClassifyVO topClassifyVO = classifyService.getTopClassifyVO(codeClassifyOid); + CodeClassifyTemplateVO templateVO = templateService.getObjectHasAttrByOid(templateOid); + if (topClassifyVO == null || StringUtils.isBlank(topClassifyVO.getBtmTypeId())) { + throw new VciBaseException("褰撳墠涓婚搴撳垎绫绘病鏈夐《灞傚垎绫伙紝鎴栬�呴《灞傚垎绫绘病鏈夎缃笟鍔$被鍨�"); + } + String btmTypeId = topClassifyVO.getBtmTypeId(); + if (StringUtils.isBlank(btmTypeId)) { + return new DataGrid<>("杩欎釜鍒嗙被鎵�灞為《灞傚垎绫绘病鏈夋坊鍔犱笟鍔$被鍨�"); + } + if (conditionMap == null) { + conditionMap = new HashMap<>(); + } + pageHelper.addDefaultDesc("createTime"); + // pageHelper.addDefaultDesc("id"); + if (!classifyService.checkHasChild(codeClassifyOid)) { + conditionMap.put("t." + CODE_CLASSIFY_OID_FIELD, codeClassifyOid); + } else { // conditionMap.put(CODE_CLASSIFY_OID_FIELD, QueryOptionConstant.IN + "(select oid from " + VciBaseUtil.getTableName(MdmBtmTypeConstant.CODE_CLASSIFY) List<BtmTypeVO> classifyData = btmTypeClient.selectByIdCollection(Collections.singletonList(MdmBtmTypeConstant.CODE_CLASSIFY)).getData(); - if(Func.isEmpty(classifyData)){ - throw new ServiceException("涓氬姟绫诲瀷涓嫳鏂囧悕绉板拰鏌ヨ鏉′欢閰嶇疆涓嶄竴鑷达紝璇蜂慨鏀逛笟鍔$被鍨嬩腑鍒嗙被琛ㄨ嫳鏂囧悕绉颁负"+MdmBtmTypeConstant.CODE_CLASSIFY); + if (Func.isEmpty(classifyData)) { + throw new ServiceException("涓氬姟绫诲瀷涓嫳鏂囧悕绉板拰鏌ヨ鏉′欢閰嶇疆涓嶄竴鑷达紝璇蜂慨鏀逛笟鍔$被鍨嬩腑鍒嗙被琛ㄨ嫳鏂囧悕绉颁负" + MdmBtmTypeConstant.CODE_CLASSIFY); } - conditionMap.put("t." + CODE_CLASSIFY_OID_FIELD, QueryOptionConstant.IN + "(select oid from " + + conditionMap.put("t." + CODE_CLASSIFY_OID_FIELD, QueryOptionConstant.IN + "(select oid from " + classifyData.get(0).getTableName() + " where lcstatus='" + FrameWorkDefaultValueConstant - .FRAMEWORK_DATA_ENABLED + "' start with parentCodeClassifyOid = '" + codeClassifyOid + - "' CONNECT BY PRIOR OID = parentCodeClassifyOid )"); - } - conditionMap.put("t.lastr", "1"); - conditionMap.put("t.lastv", "1"); - return queryGrid(btmTypeId, templateVO, conditionMap, pageHelper); -// List<String> selectFieldList = templateVO.getAttributes().stream().map(CodeClassifyTemplateAttrVO::getId).collect(Collectors.toList()); -// //鍙傜収璁╁钩鍙扮洿鎺ユ煡璇㈠氨琛� -// List<String> finalSelectFieldList = selectFieldList; -// List<CodeClassifyTemplateAttrVO> referAttrVOs = templateVO.getAttributes().stream().filter( -// s -> StringUtils.isNotBlank(s.getReferbtmid()) -// && -// (finalSelectFieldList.size() ==0 || finalSelectFieldList.contains(s.getId().toLowerCase(Locale.ROOT))) -// ).collect(Collectors.toList()); -// if(!CollectionUtils.isEmpty(referAttrVOs)){ -// for (int i = 0; i < referAttrVOs.size(); i++) { -// selectFieldList.add(referAttrVOs.get(i).getId() + ".name"); -// } -// } -// //鎴戜滑浣跨敤鍜屼笟鍔$被鍨嬬殑鏉ユ煡璇� -// DataGrid<Map<String,String>> dataGrid = boService.queryGridByBo(btmTypeId, conditionMap, pageHelper, selectFieldList); -// //鎴戜滑闇�瑕佷娇鐢ㄦā鏉挎潵杞崲 -// if(!CollectionUtils.isEmpty(dataGrid.getData())){ -// wrapperData(dataGrid.getData(),templateVO,finalSelectFieldList,false); -// } -// return dataGrid; - } + .FRAMEWORK_DATA_ENABLED + "' start with parentCodeClassifyOid = '" + codeClassifyOid + + "' CONNECT BY PRIOR OID = parentCodeClassifyOid )"); + } + conditionMap.put("t.lastr", "1"); + conditionMap.put("t.lastv", "1"); + DataGrid<Map<String, String>> mapDataGrid = queryGrid(btmTypeId, templateVO, conditionMap, pageHelper); + if(templateVO.getAttributes().isEmpty()){ + throw new ServiceException(String.format("涓婚敭涓猴細{}鐨勬ā鏉夸笅锛屾ā鏉垮睘鎬ч厤缃负绌猴紒",templateVO.getOid())); + } + //澶勭悊杩斿洖鏁版嵁涓庢ā鏉挎暟鎹厤缃殑瀛楁涓嶄竴鏍烽棶棰� + 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; + // List<CodeClassifyTemplateAttrVO> referAttrVOs = templateVO.getAttributes().stream().filter( + // s -> StringUtils.isNotBlank(s.getReferbtmid()) + // && + // (finalSelectFieldList.size() ==0 || finalSelectFieldList.contains(s.getId().toLowerCase(Locale.ROOT))) + // ).collect(Collectors.toList()); + // if(!CollectionUtils.isEmpty(referAttrVOs)){ + // for (int i = 0; i < referAttrVOs.size(); i++) { + // selectFieldList.add(referAttrVOs.get(i).getId() + ".name"); + // } + // } + // //鎴戜滑浣跨敤鍜屼笟鍔$被鍨嬬殑鏉ユ煡璇� + // DataGrid<Map<String,String>> dataGrid = boService.queryGridByBo(btmTypeId, conditionMap, pageHelper, selectFieldList); + // //鎴戜滑闇�瑕佷娇鐢ㄦā鏉挎潵杞崲 + // if(!CollectionUtils.isEmpty(dataGrid.getData())){ + // wrapperData(dataGrid.getData(),templateVO,finalSelectFieldList,false); + // } + // return dataGrid; + } - /** - * 鎵归噺淇濆瓨娴佺▼鎵ц椤甸潰淇敼鐨勫唴瀹� - * - * @param orderDTOList 缂栫爜鐩稿叧鐨勪俊鎭紝涓嶉渶瑕佺爜娈电殑淇℃伅 - * @return 鎵ц缁撴灉 - */ - @Override - public R batchUpdateCode(List<CodeOrderDTO> orderDTOList) { - VciBaseUtil.alertNotNull(orderDTOList, "缂栫爜鐢宠鐩稿叧鐨勫睘鎬у唴瀹�"); - orderDTOList.forEach(orderDTO -> { - VciBaseUtil.alertNotNull(orderDTO, "缂栫爜鐢宠鐩稿叧鐨勫睘鎬х殑鍐呭閮戒负绌�", orderDTO.getOid(), "鏁版嵁涓婚敭", - orderDTO.getCodeClassifyOid(), "涓婚搴撳垎绫荤殑涓婚敭"); - }); - Map<String, CodeOrderDTO> orderDTOMap = orderDTOList.stream().filter(orderDTO -> orderDTO != null && StringUtils.isNotBlank(orderDTO.getOid())).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getOid(), t -> t)); - List<BaseModel> updateList = new ArrayList<>(); - // 搴旇閮芥槸涓�涓垎绫讳笅鐨勪笟鍔℃暟鎹紝鎵剧涓�鏉$殑灏辫 - CodeClassifyFullInfoBO topClassifyFullInfo = classifyService.getClassifyFullInfo(orderDTOList.get(0).getCodeClassifyOid()); - if (CollectionUtils.isEmpty(orderDTOMap.keySet())) { - throw new VciBaseException(DATA_OID_NOT_EXIST); - } + /** + * 鎵归噺淇濆瓨娴佺▼鎵ц椤甸潰淇敼鐨勫唴瀹� + * + * @param orderDTOList 缂栫爜鐩稿叧鐨勪俊鎭紝涓嶉渶瑕佺爜娈电殑淇℃伅 + * @return 鎵ц缁撴灉 + */ + @Override + public R batchUpdateCode(List<CodeOrderDTO> orderDTOList) { + VciBaseUtil.alertNotNull(orderDTOList, "缂栫爜鐢宠鐩稿叧鐨勫睘鎬у唴瀹�"); + orderDTOList.forEach(orderDTO -> { + VciBaseUtil.alertNotNull(orderDTO, "缂栫爜鐢宠鐩稿叧鐨勫睘鎬х殑鍐呭閮戒负绌�", orderDTO.getOid(), "鏁版嵁涓婚敭", + orderDTO.getCodeClassifyOid(), "涓婚搴撳垎绫荤殑涓婚敭"); + }); + Map<String, CodeOrderDTO> orderDTOMap = orderDTOList.stream().filter(orderDTO -> orderDTO != null && StringUtils.isNotBlank(orderDTO.getOid())).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getOid(), t -> t)); + List<BaseModel> updateList = new ArrayList<>(); + // 搴旇閮芥槸涓�涓垎绫讳笅鐨勪笟鍔℃暟鎹紝鎵剧涓�鏉$殑灏辫 + CodeClassifyFullInfoBO topClassifyFullInfo = classifyService.getClassifyFullInfo(orderDTOList.get(0).getCodeClassifyOid()); + if (CollectionUtils.isEmpty(orderDTOMap.keySet())) { + throw new VciBaseException(DATA_OID_NOT_EXIST); + } - List<BaseModel> cboList = selectByTypeAndOid(topClassifyFullInfo.getTopClassifyVO().getBtmTypeId(), VciBaseUtil.array2String(orderDTOMap.keySet().toArray(new String[0]))); + List<BaseModel> cboList = selectByTypeAndOid(topClassifyFullInfo.getTopClassifyVO().getBtmTypeId(), VciBaseUtil.array2String(orderDTOMap.keySet().toArray(new String[0]))); if (CollectionUtils.isEmpty(cboList)) { - throw new VciBaseException(DATA_OID_NOT_EXIST); - } + throw new VciBaseException(DATA_OID_NOT_EXIST); + } Map<String, BaseModel> cboMap = cboList.stream().filter(cbo -> cbo != null).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getOid(), t -> t)); - orderDTOMap.keySet().stream().forEach(oid -> { - CodeOrderDTO orderDTO = orderDTOMap.get(oid); - CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(orderDTO.getCodeClassifyOid()); - CodeClassifyTemplateVO firstTemplateVO = templateService.getObjectHasAttrByOid(orderDTOMap.values().stream().findFirst().get().getTemplateOid()); - BaseModel cbo = cboMap.get(oid); - String code = cbo.getId(); - if (!cbo.getTs().toString().contains(VciDateUtil.date2Str(orderDTO.getTs(), VciDateUtil.DateTimeFormat))) { - throw new VciBaseException("鏁版嵁涓嶆槸鏈�鏂扮殑锛屽彲鑳戒粬浜哄凡缁忎慨鏀癸紝璇峰埛鏂板悗鍐嶈瘯"); - } - if (!CodeDefaultLC.EDITING.getValue().equalsIgnoreCase(cbo.getLcStatus()) && !orderDTO.isEditInProcess()) { - throw new VciBaseException("鏁版嵁涓嶆槸{0}鐨勭姸鎬侊紝涓嶅厑璁镐慨鏀�", new String[]{CodeDefaultLC.EDITING.getText()}); - } - //1. 鍒ゆ柇蹇呰緭椤� - CodeClassifyTemplateVO templateVO = templateService.getObjectHasAttrByOid(orderDTO.getTemplateOid()); - checkRequiredAttrOnOrder(templateVO, orderDTO); - //2.鍏堟敞鍏ワ紝鍐嶇粍鍚堬紝鏈�鍚庢牎楠� - switchClassifyLevelOnOrder(templateVO, classifyFullInfo, orderDTO); - //3.澶勭悊缁勫悎瑙勫垯銆傜粍鍚堣鍒欎笉鑳戒娇鐢ㄧ紪鐮佺殑灞炴�э紝鍥犱负缂栫爜鐨勭敓鎴愬彲鑳芥槸闇�瑕佸睘鎬х殑 - switchComponentAttrOnOrder(templateVO, orderDTO); - //4.鏍¢獙瑙勫垯 - checkVerifyOnOrder(templateVO, orderDTO); - //5.鍒ゆ柇鍏抽敭灞炴�� - checkKeyAttrOnOrder(classifyFullInfo, templateVO, orderDTO); - //6.鏍¢獙鏋氫妇鐨勫唴瀹规槸鍚︽纭� - checkEnumOnOrder(templateVO, orderDTO); - //7.澶勭悊鏃堕棿鏍煎紡锛屽湪鏁版嵁搴撻噷闈笉璁烘槸瀛楃涓茶繕鏄棩鏈熸牸寮忥紝閮戒娇鐢ㄧ浉鍚岀殑鏍煎紡瀛樺偍 - switchDateAttrOnOrder(templateVO, orderDTO); - //榛樿鐨勫唴瀹逛笉鑳藉彉锛屾墍浠ュ彧闇�瑕佹嫹璐濊嚜瀹氫箟鐨勭浉鍏冲睘鎬у嵆鍙� - copyValueToCBO(classifyFullInfo, cbo, orderDTO, templateVO, true); - //浼佷笟鐮佸拰闆嗗洟鐮佺殑涓嶄慨鏀� - cbo.setDescription(StringUtils.isBlank(orderDTO.getDescription()) ? "" : orderDTO.getDescription()); - cbo.setName(orderDTO.getName()); - cbo.setId(code); - cbo.setDescription(StringUtils.isBlank(orderDTO.getDescription()) ? "" : orderDTO.getDescription()); - cbo.setName(orderDTO.getName()); + orderDTOMap.keySet().stream().forEach(oid -> { + CodeOrderDTO orderDTO = orderDTOMap.get(oid); + CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(orderDTO.getCodeClassifyOid()); + CodeClassifyTemplateVO firstTemplateVO = templateService.getObjectHasAttrByOid(orderDTOMap.values().stream().findFirst().get().getTemplateOid()); + BaseModel cbo = cboMap.get(oid); + String code = cbo.getId(); + if (!cbo.getTs().toString().contains(VciDateUtil.date2Str(orderDTO.getTs(), VciDateUtil.DateTimeFormat))) { + throw new VciBaseException("鏁版嵁涓嶆槸鏈�鏂扮殑锛屽彲鑳戒粬浜哄凡缁忎慨鏀癸紝璇峰埛鏂板悗鍐嶈瘯"); + } + if (!CodeDefaultLC.EDITING.getValue().equalsIgnoreCase(cbo.getLcStatus()) && !orderDTO.isEditInProcess()) { + throw new VciBaseException("鏁版嵁涓嶆槸{0}鐨勭姸鎬侊紝涓嶅厑璁镐慨鏀�", new String[]{CodeDefaultLC.EDITING.getText()}); + } + //1. 鍒ゆ柇蹇呰緭椤� + CodeClassifyTemplateVO templateVO = templateService.getObjectHasAttrByOid(orderDTO.getTemplateOid()); + checkRequiredAttrOnOrder(templateVO, orderDTO); + //2.鍏堟敞鍏ワ紝鍐嶇粍鍚堬紝鏈�鍚庢牎楠� + switchClassifyLevelOnOrder(templateVO, classifyFullInfo, orderDTO); + //3.澶勭悊缁勫悎瑙勫垯銆傜粍鍚堣鍒欎笉鑳戒娇鐢ㄧ紪鐮佺殑灞炴�э紝鍥犱负缂栫爜鐨勭敓鎴愬彲鑳芥槸闇�瑕佸睘鎬х殑 + switchComponentAttrOnOrder(templateVO, orderDTO); + //4.鏍¢獙瑙勫垯 + checkVerifyOnOrder(templateVO, orderDTO); + //5.鍒ゆ柇鍏抽敭灞炴�� + checkKeyAttrOnOrder(classifyFullInfo, templateVO, orderDTO); + //6.鏍¢獙鏋氫妇鐨勫唴瀹规槸鍚︽纭� + checkEnumOnOrder(templateVO, orderDTO); + //7.澶勭悊鏃堕棿鏍煎紡锛屽湪鏁版嵁搴撻噷闈笉璁烘槸瀛楃涓茶繕鏄棩鏈熸牸寮忥紝閮戒娇鐢ㄧ浉鍚岀殑鏍煎紡瀛樺偍 + switchDateAttrOnOrder(templateVO, orderDTO); + //榛樿鐨勫唴瀹逛笉鑳藉彉锛屾墍浠ュ彧闇�瑕佹嫹璐濊嚜瀹氫箟鐨勭浉鍏冲睘鎬у嵆鍙� + copyValueToCBO(classifyFullInfo, cbo, orderDTO, templateVO, true); + //浼佷笟鐮佸拰闆嗗洟鐮佺殑涓嶄慨鏀� + cbo.setDescription(StringUtils.isBlank(orderDTO.getDescription()) ? "" : orderDTO.getDescription()); + cbo.setName(orderDTO.getName()); + cbo.setId(code); + cbo.setDescription(StringUtils.isBlank(orderDTO.getDescription()) ? "" : orderDTO.getDescription()); + cbo.setName(orderDTO.getName()); - updateList.add(cbo); - batchSaveSelectChar(firstTemplateVO, cboList); - }); - updateBatchByBaseModel(topClassifyFullInfo.getTopClassifyVO().getBtmTypeId(), updateList); - return R.success("鎿嶄綔鎴愬姛锛�"); - } + updateList.add(cbo); + batchSaveSelectChar(firstTemplateVO, cboList); + }); + updateBatchByBaseModel(topClassifyFullInfo.getTopClassifyVO().getBtmTypeId(), updateList); + return R.success("鎿嶄綔鎴愬姛锛�"); + } - /** - * 鏍囪娴佺▼涓笟鍔℃暟鎹槸鍚﹂�氳繃 - * - * @param oid 涓氬姟鏁版嵁涓婚敭 - * @param btmName 涓氬姟绫诲瀷 - * @param pass 鏄惁閫氳繃 - * @return 鎵ц缁撴灉 - */ - @Override - public R markDataPassing(String oid, String btmName, Boolean pass) { - VciBaseUtil.alertNotNull(oid, "涓氬姟鏁版嵁涓婚敭", btmName, "涓氬姟绫诲瀷", pass, "鏍囪绫诲瀷"); - boolean flag = true; - try { - List<BaseModel> datas = selectByTypeAndOid(btmName, oid); - if (datas.size() == 0) { - return R.fail(DATA_OID_NOT_EXIST); - } - datas.stream().forEach(data -> data.getData().put("PASSING", String.valueOf(pass))); - R r = updateBatchByBaseModel(btmName, datas); - if (!r.isSuccess()) { - flag = false; - } - } catch (Exception e) { - flag = false; - e.printStackTrace(); - } - if (flag) { - return R.success("鏍囪鎴愬姛锛�"); - } else { - return R.fail("鏍囪澶辫触锛�"); - } - } + /** + * 鏍囪娴佺▼涓笟鍔℃暟鎹槸鍚﹂�氳繃 + * + * @param oid 涓氬姟鏁版嵁涓婚敭 + * @param btmName 涓氬姟绫诲瀷 + * @param pass 鏄惁閫氳繃 + * @return 鎵ц缁撴灉 + */ + @Override + public R markDataPassing(String oid, String btmName, Boolean pass) { + VciBaseUtil.alertNotNull(oid, "涓氬姟鏁版嵁涓婚敭", btmName, "涓氬姟绫诲瀷", pass, "鏍囪绫诲瀷"); + boolean flag = true; + try { + List<BaseModel> datas = selectByTypeAndOid(btmName, oid); + if (datas.size() == 0) { + return R.fail(DATA_OID_NOT_EXIST); + } + datas.stream().forEach(data -> data.getData().put("PASSING", String.valueOf(pass))); + R r = updateBatchByBaseModel(btmName, datas); + if (!r.isSuccess()) { + flag = false; + } + } catch (Exception e) { + flag = false; + e.printStackTrace(); + } + if (flag) { + return R.success("鏍囪鎴愬姛锛�"); + } else { + return R.fail("鏍囪澶辫触锛�"); + } + } - /** - * 棰勮缁勫悎瑙勫垯 - * - * @param orderDTO 棰勮鐨勪俊鎭紝鍖呭惈妯℃澘鐨勪富閿� - * @return key鏄粍鍚堣鍒欑殑灞炴�с�倂alue鏄粍鍚堝悗鐨勫�硷紝銆傚鏋滅己灏戞煇涓睘鎬х殑鍊硷紝浼氫綔涓簐alue杩斿洖 - */ - @Override - public Map<String, String> previewCompRule(CodeOrderDTO orderDTO) { - VciBaseUtil.alertNotNull(orderDTO, "缂栫爜鐢宠鐩稿叧淇℃伅", orderDTO.getTemplateOid(), "妯℃澘鐨勪富閿�"); - //鏌ヨ鍒嗙被鐨勪俊鎭紝鏌ヨ妯℃澘鐨勪俊鎭� - CodeClassifyTemplateVO templateVO = templateService.getObjectHasAttrByOid(orderDTO.getTemplateOid()); - switchComponentAttrOnOrder(templateVO, orderDTO); - return orderDTO.getData(); - } + /** + * 棰勮缁勫悎瑙勫垯 + * + * @param orderDTO 棰勮鐨勪俊鎭紝鍖呭惈妯℃澘鐨勪富閿� + * @return key鏄粍鍚堣鍒欑殑灞炴�с�倂alue鏄粍鍚堝悗鐨勫�硷紝銆傚鏋滅己灏戞煇涓睘鎬х殑鍊硷紝浼氫綔涓簐alue杩斿洖 + */ + @Override + public Map<String, String> previewCompRule(CodeOrderDTO orderDTO) { + VciBaseUtil.alertNotNull(orderDTO, "缂栫爜鐢宠鐩稿叧淇℃伅", orderDTO.getTemplateOid(), "妯℃澘鐨勪富閿�"); + //鏌ヨ鍒嗙被鐨勪俊鎭紝鏌ヨ妯℃澘鐨勪俊鎭� + CodeClassifyTemplateVO templateVO = templateService.getObjectHasAttrByOid(orderDTO.getTemplateOid()); + switchComponentAttrOnOrder(templateVO, orderDTO); + return orderDTO.getData(); + } - /** - * 鍒嗙被娉ㄥ叆鐨勫唴瀹归瑙� - * - * @param codeClassifyOid 鍒嗙被鐨勪富閿� - * @param codeTemplateOid 妯℃澘鐨勪富閿� - * @return key鏄垎绫绘敞鍏ョ殑灞炴�э紝value鏄敞鍏ュ悗鐨勫�� - */ - @Override - public Map<String, String> previewClassify(String codeClassifyOid, String codeTemplateOid) { - if (StringUtils.isBlank(codeClassifyOid) || StringUtils.isBlank(codeTemplateOid)) { - return new HashMap<>(); - } - //鏌ヨ鍒嗙被鐨勪俊鎭紝鏌ヨ妯℃澘鐨勪俊鎭� - CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(codeClassifyOid); - CodeClassifyTemplateVO templateVO = templateService.getObjectHasAttrByOid(codeTemplateOid); - // + /** + * 鍒嗙被娉ㄥ叆鐨勫唴瀹归瑙� + * + * @param codeClassifyOid 鍒嗙被鐨勪富閿� + * @param codeTemplateOid 妯℃澘鐨勪富閿� + * @return key鏄垎绫绘敞鍏ョ殑灞炴�э紝value鏄敞鍏ュ悗鐨勫�� + */ + @Override + public Map<String, String> previewClassify(String codeClassifyOid, String codeTemplateOid) { + if (StringUtils.isBlank(codeClassifyOid) || StringUtils.isBlank(codeTemplateOid)) { + return new HashMap<>(); + } + //鏌ヨ鍒嗙被鐨勪俊鎭紝鏌ヨ妯℃澘鐨勪俊鎭� + CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(codeClassifyOid); + CodeClassifyTemplateVO templateVO = templateService.getObjectHasAttrByOid(codeTemplateOid); + // - CodeOrderDTO orderDTO = new CodeOrderDTO(); - orderDTO.setData(new HashMap<>()); - switchClassifyLevelOnOrder(templateVO, classifyFullInfo, orderDTO); - return orderDTO.getData(); - } + CodeOrderDTO orderDTO = new CodeOrderDTO(); + orderDTO.setData(new HashMap<>()); + switchClassifyLevelOnOrder(templateVO, classifyFullInfo, orderDTO); + return orderDTO.getData(); + } - /** - * 鍗囩増鐨勪富棰樺簱鏁版嵁 - * - * @param orderDTO 鏁版嵁鐨勫唴瀹癸紝涓嶉渶瑕佸寘鍚爜娈电殑鍐呭 - */ - @Override - public void upSaveCode(CodeOrderDTO orderDTO) { - VciBaseUtil.alertNotNull(orderDTO, "缂栫爜鏁版嵁鎵�鍦ㄤ笟鍔$被鍚嶇О", orderDTO.getBtmname()); - String btmName = orderDTO.getBtmname(); - //鎵句笟鍔$被鍨嬶紝鐒跺悗浣跨敤涓婚敭鍘昏幏鍙栨暟鎹簱閲岀殑鏁版嵁 - List<BaseModel> cbos = selectByTypeAndOid(btmName, orderDTO.getCopyFromVersion()); - if (CollectionUtils.isEmpty(cbos)) { - throw new VciBaseException(DATA_OID_NOT_EXIST); - } - BaseModel oldCbo = cbos.get(0); + /** + * 鍗囩増鐨勪富棰樺簱鏁版嵁 + * + * @param orderDTO 鏁版嵁鐨勫唴瀹癸紝涓嶉渶瑕佸寘鍚爜娈电殑鍐呭 + */ + @Override + public void upSaveCode(CodeOrderDTO orderDTO) { + VciBaseUtil.alertNotNull(orderDTO, "缂栫爜鏁版嵁鎵�鍦ㄤ笟鍔$被鍚嶇О", orderDTO.getBtmname()); + String btmName = orderDTO.getBtmname(); + //鎵句笟鍔$被鍨嬶紝鐒跺悗浣跨敤涓婚敭鍘昏幏鍙栨暟鎹簱閲岀殑鏁版嵁 + List<BaseModel> cbos = selectByTypeAndOid(btmName, orderDTO.getCopyFromVersion()); + if (CollectionUtils.isEmpty(cbos)) { + throw new VciBaseException(DATA_OID_NOT_EXIST); + } + BaseModel oldCbo = cbos.get(0); - if (!CodeDefaultLC.RELEASED.getValue().equalsIgnoreCase(oldCbo.getLcStatus())) { - throw new VciBaseException("鏁版嵁涓嶆槸{0}鐨勭姸鎬侊紝涓嶅厑璁告暟鎹洿鏀�", new String[]{CodeDefaultLC.RELEASED.getText()}); - } + if (!CodeDefaultLC.RELEASED.getValue().equalsIgnoreCase(oldCbo.getLcStatus())) { + throw new VciBaseException("鏁版嵁涓嶆槸{0}鐨勭姸鎬侊紝涓嶅厑璁告暟鎹洿鏀�", new String[]{CodeDefaultLC.RELEASED.getText()}); + } - //鏍规嵁鏁版嵁鑾峰彇鍒嗙被oid - String codeClassifyOid = oldCbo.getData().get(CODE_CLASSIFY_OID_FIELD.toUpperCase()); - orderDTO.setCodeClassifyOid(codeClassifyOid); - CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(orderDTO.getCodeClassifyOid()); - CodeClassifyTemplateVO templateVO = this.getUsedTemplateByClassifyOid(orderDTO.getCodeClassifyOid()); - orderDTO.setTemplateOid(templateVO.getOid()); - VciBaseUtil.alertNotNull(orderDTO, "缂栫爜鐢宠鐩稿叧鐨勫睘鎬х殑鍐呭涓虹┖", orderDTO.getCopyFromVersion(), "鍘熷鏁版嵁鐨勪富閿�", - orderDTO.getCodeClassifyOid(), "涓婚搴撳垎绫荤殑涓婚敭"); + //鏍规嵁鏁版嵁鑾峰彇鍒嗙被oid + String codeClassifyOid = oldCbo.getData().get(CODE_CLASSIFY_OID_FIELD.toUpperCase()); + orderDTO.setCodeClassifyOid(codeClassifyOid); + CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(orderDTO.getCodeClassifyOid()); + CodeClassifyTemplateVO templateVO = this.getUsedTemplateByClassifyOid(orderDTO.getCodeClassifyOid()); + orderDTO.setTemplateOid(templateVO.getOid()); + VciBaseUtil.alertNotNull(orderDTO, "缂栫爜鐢宠鐩稿叧鐨勫睘鎬х殑鍐呭涓虹┖", orderDTO.getCopyFromVersion(), "鍘熷鏁版嵁鐨勪富閿�", + orderDTO.getCodeClassifyOid(), "涓婚搴撳垎绫荤殑涓婚敭"); - //闇�瑕佸崌鐗� - BaseModel cbo = null; - cbo = reviseBusinessObject(oldCbo); - //1. 鍒ゆ柇蹇呰緭椤� + //闇�瑕佸崌鐗� + BaseModel cbo = null; + cbo = reviseBusinessObject(oldCbo); + //1. 鍒ゆ柇蹇呰緭椤� checkRequiredAttrOnOrder(templateVO, orderDTO); - //2.鍏堟敞鍏ワ紝鍐嶇粍鍚堬紝鏈�鍚庢牎楠� - switchClassifyLevelOnOrder(templateVO, classifyFullInfo, orderDTO); - //3.澶勭悊缁勫悎瑙勫垯銆傜粍鍚堣鍒欎笉鑳戒娇鐢ㄧ紪鐮佺殑灞炴�э紝鍥犱负缂栫爜鐨勭敓鎴愬彲鑳芥槸闇�瑕佸睘鎬х殑 - switchComponentAttrOnOrder(templateVO, orderDTO); - //4.鏍¢獙瑙勫垯 - checkVerifyOnOrder(templateVO, orderDTO); - //5.鍒ゆ柇鍏抽敭灞炴�� - checkKeyAttrOnOrder(classifyFullInfo, templateVO, orderDTO); - //6.鏍¢獙鏋氫妇鐨勫唴瀹规槸鍚︽纭� - checkEnumOnOrder(templateVO, orderDTO); - //7.澶勭悊鏃堕棿鏍煎紡锛屽湪鏁版嵁搴撻噷闈笉璁烘槸瀛楃涓茶繕鏄棩鏈熸牸寮忥紝閮戒娇鐢ㄧ浉鍚岀殑鏍煎紡瀛樺偍 - switchDateAttrOnOrder(templateVO, orderDTO); - //榛樿鐨勫唴瀹逛笉鑳藉彉锛屾墍浠ュ彧闇�瑕佹嫹璐濊嚜瀹氫箟鐨勭浉鍏冲睘鎬у嵆鍙� - copyValueToCBO(classifyFullInfo, cbo, orderDTO, templateVO, true); - //浼佷笟鐮佸拰闆嗗洟鐮佺殑涓嶄慨鏀� - cbo.setDescription(StringUtils.isBlank(orderDTO.getDescription()) ? "" : orderDTO.getDescription()); - cbo.setName(orderDTO.getName()); - cbo.setDescription(StringUtils.isBlank(orderDTO.getDescription()) ? "" : orderDTO.getDescription()); - cbo.setName(orderDTO.getName()); - //鏁版嵁鐨勬椂鍊欙紝缂栫爜鏄笉鍙樼殑 - cbo.setCreateTime(cbo.getCreateTime()); + //2.鍏堟敞鍏ワ紝鍐嶇粍鍚堬紝鏈�鍚庢牎楠� + switchClassifyLevelOnOrder(templateVO, classifyFullInfo, orderDTO); + //3.澶勭悊缁勫悎瑙勫垯銆傜粍鍚堣鍒欎笉鑳戒娇鐢ㄧ紪鐮佺殑灞炴�э紝鍥犱负缂栫爜鐨勭敓鎴愬彲鑳芥槸闇�瑕佸睘鎬х殑 + switchComponentAttrOnOrder(templateVO, orderDTO); + //4.鏍¢獙瑙勫垯 + checkVerifyOnOrder(templateVO, orderDTO); + //5.鍒ゆ柇鍏抽敭灞炴�� + checkKeyAttrOnOrder(classifyFullInfo, templateVO, orderDTO); + //6.鏍¢獙鏋氫妇鐨勫唴瀹规槸鍚︽纭� + checkEnumOnOrder(templateVO, orderDTO); + //7.澶勭悊鏃堕棿鏍煎紡锛屽湪鏁版嵁搴撻噷闈笉璁烘槸瀛楃涓茶繕鏄棩鏈熸牸寮忥紝閮戒娇鐢ㄧ浉鍚岀殑鏍煎紡瀛樺偍 + switchDateAttrOnOrder(templateVO, orderDTO); + //榛樿鐨勫唴瀹逛笉鑳藉彉锛屾墍浠ュ彧闇�瑕佹嫹璐濊嚜瀹氫箟鐨勭浉鍏冲睘鎬у嵆鍙� + copyValueToCBO(classifyFullInfo, cbo, orderDTO, templateVO, true); + //浼佷笟鐮佸拰闆嗗洟鐮佺殑涓嶄慨鏀� + cbo.setDescription(StringUtils.isBlank(orderDTO.getDescription()) ? "" : orderDTO.getDescription()); + cbo.setName(orderDTO.getName()); + cbo.setDescription(StringUtils.isBlank(orderDTO.getDescription()) ? "" : orderDTO.getDescription()); + cbo.setName(orderDTO.getName()); + //鏁版嵁鐨勬椂鍊欙紝缂栫爜鏄笉鍙樼殑 + cbo.setCreateTime(cbo.getCreateTime()); cbo.setCreator(cbo.getCreator()); - cbo.setLastModifyTime(cbo.getLastModifyTime()); + cbo.setLastModifyTime(cbo.getLastModifyTime()); cbo.setTenantId(AuthUtil.getTenantId()); oldCbo.setLastV("0"); oldCbo.setLastModifier(String.valueOf(AuthUtil.getUser().getAccount())); oldCbo.setLastModifyTime(new Date()); - try { + try { + // 淇敼鐗堟鍙� updateBatchByBaseModel(oldCbo.getBtmname(), Collections.singletonList(oldCbo)); - insertBatchByType(cbo.getBtmname(), Collections.singletonList(cbo)); - } catch (Exception vciError) { - throw new VciBaseException("鏁版嵁鏇存敼淇濆瓨鍑洪敊浜�", new String[0], vciError); - } - batchSaveSelectChar(templateVO, Collections.singletonList(cbo)); - } + // 鎻掑叆鏂扮殑鏁版嵁 + insertBatchByType(cbo.getBtmname(), Collections.singletonList(cbo)); + //澶勭悊鐮佸�艰〃锛屽鐮佸�艰〃杩涜澶勭悊鏇挎崲鍒涘缓鏁版嵁鐨刼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); + } - /** - * 浣跨敤鐮佹鐨勪富閿幏鍙栧垎绫荤殑鐮佸�煎唴瀹� - * - * @param classifySecOid 鐮佹鐨勪富閿� - * @param parentClassifyValueOid 涓婄骇鍒嗙被鐨勪富閿� - * @return 鍒嗙被鐮佸�肩殑鍐呭 - */ - @Override - public List<CodeClassifyValueVO> listCodeClassifyValueBySecOid(String classifySecOid, String parentClassifyValueOid) { - return classifyValueService.listCodeClassifyValueBySecOid(classifySecOid, parentClassifyValueOid); - } + batchSaveSelectChar(templateVO, Collections.singletonList(cbo)); + } - /** - * 浣跨敤涓婚搴撳垎绫昏幏鍙栫紪鐮佽鍒� - * - * @param codeClassifyOid 鍒嗙被鐨勪富閿� - * @return 缂栫爜瑙勫垯鐨勫唴瀹� - */ - @Override - public CodeRuleVO getCodeRuleByClassifyOid(String codeClassifyOid) { - VciBaseUtil.alertNotNull(codeClassifyOid, "鍒嗙被鐨勪富閿�"); - CodeClassifyVO classifyVO = classifyService.getObjectByOid(codeClassifyOid); - String codeRuleOid = classifyVO.getCodeRuleOid(); - if (StringUtils.isBlank(codeRuleOid)) { - //寰�涓婃壘 + /** + * 浣跨敤鐮佹鐨勪富閿幏鍙栧垎绫荤殑鐮佸�煎唴瀹� + * + * @param classifySecOid 鐮佹鐨勪富閿� + * @param parentClassifyValueOid 涓婄骇鍒嗙被鐨勪富閿� + * @return 鍒嗙被鐮佸�肩殑鍐呭 + */ + @Override + public List<CodeClassifyValueVO> listCodeClassifyValueBySecOid(String classifySecOid, String parentClassifyValueOid) { + return classifyValueService.listCodeClassifyValueBySecOid(classifySecOid, parentClassifyValueOid); + } + + /** + * 浣跨敤涓婚搴撳垎绫昏幏鍙栫紪鐮佽鍒� + * + * @param codeClassifyOid 鍒嗙被鐨勪富閿� + * @return 缂栫爜瑙勫垯鐨勫唴瀹� + */ + @Override + public CodeRuleVO getCodeRuleByClassifyOid(String codeClassifyOid) { + VciBaseUtil.alertNotNull(codeClassifyOid, "鍒嗙被鐨勪富閿�"); + CodeClassifyVO classifyVO = classifyService.getObjectByOid(codeClassifyOid); + String codeRuleOid = classifyVO.getCodeRuleOid(); + if (StringUtils.isBlank(codeRuleOid)) { + //寰�涓婃壘 CodeRuleVO classifyFullInfoCodeRule = getCodeRuleByClassifyFullInfo(classifyService.getClassifyFullInfo(codeClassifyOid)); return toCodeValueApplyStatus(classifyFullInfoCodeRule); - } - //鏌ヨ缂栫爜瑙勫垯 + } + //鏌ヨ缂栫爜瑙勫垯 CodeRuleVO objectHasSecByOid = ruleService.getObjectHasSecByOid(codeRuleOid); return toCodeValueApplyStatus(objectHasSecByOid); - } + } /** * 缂栫爜鐢宠琛ㄥ崟锛岄殣钘忋�佸彲杈撱�佸彧璇昏浆鎹� + * * @param codeRuleVO * @return */ - private CodeRuleVO toCodeValueApplyStatus(CodeRuleVO codeRuleVO){ - if(codeRuleVO.getSecVOList().isEmpty()){ + private CodeRuleVO toCodeValueApplyStatus(CodeRuleVO codeRuleVO) { + if (codeRuleVO.getSecVOList().isEmpty()) { return codeRuleVO; } // 鍙緭鐮佹绫诲瀷 @@ -2854,17 +3384,17 @@ // 褰撳墠瑙勫垯鐨勬墍鏈夌被鍨嬬爜娈� List<String> secTypeList = codeRuleVO.getSecVOList().stream().map(CodeBasicSecVO::getSecType).collect(Collectors.toList()); // 鎯呭喌涓� 鍏ㄩ儴鏄彧璇荤殑鐮佹绫诲瀷 - boolean hasAllReadOnlyType =secTypeList.stream().allMatch(item -> readOnlyTypes.stream().anyMatch(item1-> item.equals(item1))); + boolean hasAllReadOnlyType = secTypeList.stream().allMatch(item -> readOnlyTypes.stream().anyMatch(item1 -> item.equals(item1))); // 鍏ㄩ儴鏄彧璇荤殑鐮佹绫诲瀷 - if(hasAllReadOnlyType){ + if (hasAllReadOnlyType) { List<CodeBasicSecVO> basicSecVOS = codeRuleVO.getSecVOList().stream().map(secVO -> { secVO.setCodeValueApplyStatus(3); // 鏃ユ湡鐮佹璁剧疆榛樿鍊� if (secVO.getSecType().equals(CodeSecTypeEnum.CODE_DATE_SEC.getValue())) { try { - secVO.setCodeDateValue(Func.format(new Date(),secVO.getCodeDateFormatStr())); - }catch (Exception e){ - throw new ServiceException("鏃ユ湡鐮佹鏃ユ湡鏍煎紡閰嶇疆鏈夎锛屽鑷磋浆鎹㈠嚭閿欙細"+e.getMessage()); + secVO.setCodeDateValue(Func.format(new Date(), secVO.getCodeDateFormatStr())); + } catch (Exception e) { + throw new ServiceException("鏃ユ湡鐮佹鏃ユ湡鏍煎紡閰嶇疆鏈夎锛屽鑷磋浆鎹㈠嚭閿欙細" + e.getMessage()); } } return secVO; @@ -2873,16 +3403,16 @@ return codeRuleVO; } // 鎯呭喌浜� 鍏ㄩ儴閮芥槸鍙緭鍏ョ被鍨嬬殑 - boolean hasAllInputType = secTypeList.stream().allMatch(item -> inputTypes.stream().anyMatch(item1-> item.equals(item1))); - if(hasAllInputType){ + boolean hasAllInputType = secTypeList.stream().allMatch(item -> inputTypes.stream().anyMatch(item1 -> item.equals(item1))); + if (hasAllInputType) { List<CodeBasicSecVO> basicSecVOS = codeRuleVO.getSecVOList().stream().map(secVO -> { secVO.setCodeValueApplyStatus(1); // 鏃ユ湡鐮佹璁剧疆榛樿鍊� if (secVO.getSecType().equals(CodeSecTypeEnum.CODE_DATE_SEC.getValue())) { try { - secVO.setCodeDateValue(Func.format(new Date(),secVO.getCodeDateFormatStr())); - }catch (Exception e){ - throw new ServiceException("鏃ユ湡鐮佹鏃ユ湡鏍煎紡閰嶇疆鏈夎锛屽鑷磋浆鎹㈠嚭閿欙細"+e.getMessage()); + secVO.setCodeDateValue(Func.format(new Date(), secVO.getCodeDateFormatStr())); + } catch (Exception e) { + throw new ServiceException("鏃ユ湡鐮佹鏃ユ湡鏍煎紡閰嶇疆鏈夎锛屽鑷磋浆鎹㈠嚭閿欙細" + e.getMessage()); } } return secVO; @@ -2892,298 +3422,312 @@ } // 鎯呭喌涓夊寘鍚汉涓洪�夋嫨鐨勭爜娈碉紝鍙堟湁鍙绫诲瀷鐮佹鐨勶紝鎵�鏈夌爜娈甸兘瑕佹樉绀哄嚭鏉ワ紝鍙緭璁剧疆涓�1锛屽彧璇昏缃负2锛岄殣钘忚缃负3 List<CodeBasicSecVO> basicSecVOS = codeRuleVO.getSecVOList().stream().map(secVO -> { - if(inputTypes.contains(secVO.getSecType())){ + if (inputTypes.contains(secVO.getSecType())) { secVO.setCodeValueApplyStatus(1); - }else if(readOnlyTypes.contains(secVO.getSecType())){ + } else if (readOnlyTypes.contains(secVO.getSecType())) { secVO.setCodeValueApplyStatus(2); - }else{ + } else { secVO.setCodeValueApplyStatus(3); } // 鏃ユ湡鐮佹璁剧疆榛樿鍊� if (secVO.getSecType().equals(CodeSecTypeEnum.CODE_DATE_SEC.getValue())) { try { - secVO.setCodeDateValue(Func.format(new Date(),secVO.getCodeDateFormatStr())); - }catch (Exception e){ - throw new ServiceException("鏃ユ湡鐮佹鏃ユ湡鏍煎紡閰嶇疆鏈夎锛屽鑷磋浆鎹㈠嚭閿欙細"+e.getMessage()); + secVO.setCodeDateValue(Func.format(new Date(), secVO.getCodeDateFormatStr())); + } catch (Exception e) { + throw new ServiceException("鏃ユ湡鐮佹鏃ユ湡鏍煎紡閰嶇疆鏈夎锛屽鑷磋浆鎹㈠嚭閿欙細" + e.getMessage()); } } return secVO; }).collect(Collectors.toList()); codeRuleVO.setSecVOList(basicSecVOS); - codeRuleVO.setIsShowHideStatus(hasAllReadOnlyType ? "readOnly":(hasAllInputType ? "input":"readAndInput")); + codeRuleVO.setIsShowHideStatus(hasAllReadOnlyType ? "readOnly" : (hasAllInputType ? "input" : "readAndInput")); return codeRuleVO; } - /** - * 浣跨敤鍒嗙被鐨勫叏閮ㄤ俊鎭幏鍙栫紪鐮佽鍒� - * - * @param fullInfoBO 鍒嗙被鐨勫叏閮ㄤ俊鎭� - * @return 瑙勫垯鐨勫唴瀹� - */ - @Override - public CodeRuleVO getCodeRuleByClassifyFullInfo(CodeClassifyFullInfoBO fullInfoBO) { - //寰�涓婃壘 - String codeRuleOid = ""; - if (StringUtils.isNotBlank(fullInfoBO.getCurrentClassifyVO().getCodeRuleOid())) { - codeRuleOid = fullInfoBO.getCurrentClassifyVO().getCodeRuleOid(); - } else { - if (CollectionUtils.isEmpty(fullInfoBO.getParentClassifyVOs())) { - //璇存槑宸茬粡鏄渶楂樺眰绾�, - throw new ServiceException("褰撳墠涓婚搴撳垎绫伙紝浠ュ強瀹冪殑鎵�鏈夌殑涓婄骇鍒嗙被閮芥病鏈夎缃紪鐮佽鍒�"); - } - List<CodeClassifyVO> parentClassifyVOList = fullInfoBO.getParentClassifyVOs().stream().sorted((o1, o2) -> o1.getDataLevel().compareTo(o2.getDataLevel())).collect(Collectors.toList()); - //浠庢渶楂樼殑level寮�濮嬭幏鍙� - for (int i = parentClassifyVOList.size()-1; i >= 0; i--) { - CodeClassifyVO record = parentClassifyVOList.get(i); - if (StringUtils.isNotBlank(record.getCodeRuleOid())) { - codeRuleOid = record.getCodeRuleOid(); - break; - } - } - if (StringUtils.isBlank(codeRuleOid)) { - throw new ServiceException("褰撳墠涓婚搴撳垎绫伙紝浠ュ強瀹冪殑鎵�鏈夌殑涓婄骇鍒嗙被閮芥病鏈夎缃紪鐮佽鍒�"); - } - } - return ruleService.getObjectHasSecByOid(codeRuleOid); - } + /** + * 浣跨敤鍒嗙被鐨勫叏閮ㄤ俊鎭幏鍙栫紪鐮佽鍒� + * + * @param fullInfoBO 鍒嗙被鐨勫叏閮ㄤ俊鎭� + * @return 瑙勫垯鐨勫唴瀹� + */ + @Override + public CodeRuleVO getCodeRuleByClassifyFullInfo(CodeClassifyFullInfoBO fullInfoBO) { + //寰�涓婃壘 + String codeRuleOid = ""; + if (StringUtils.isNotBlank(fullInfoBO.getCurrentClassifyVO().getCodeRuleOid())) { + codeRuleOid = fullInfoBO.getCurrentClassifyVO().getCodeRuleOid(); + } else { + if (CollectionUtils.isEmpty(fullInfoBO.getParentClassifyVOs())) { + //璇存槑宸茬粡鏄渶楂樺眰绾�, + throw new ServiceException("褰撳墠涓婚搴撳垎绫伙紝浠ュ強瀹冪殑鎵�鏈夌殑涓婄骇鍒嗙被閮芥病鏈夎缃紪鐮佽鍒�"); + } + List<CodeClassifyVO> parentClassifyVOList = fullInfoBO.getParentClassifyVOs().stream().sorted((o1, o2) -> o1.getDataLevel().compareTo(o2.getDataLevel())).collect(Collectors.toList()); + //浠庢渶楂樼殑level寮�濮嬭幏鍙� + for (int i = parentClassifyVOList.size() - 1; i >= 0; i--) { + CodeClassifyVO record = parentClassifyVOList.get(i); + if (StringUtils.isNotBlank(record.getCodeRuleOid())) { + codeRuleOid = record.getCodeRuleOid(); + break; + } + } + if (StringUtils.isBlank(codeRuleOid)) { + throw new ServiceException("褰撳墠涓婚搴撳垎绫伙紝浠ュ強瀹冪殑鎵�鏈夌殑涓婄骇鍒嗙被閮芥病鏈夎缃紪鐮佽鍒�"); + } + } + return ruleService.getObjectHasSecByOid(codeRuleOid); + } - /** - * 浣跨敤鏁版嵁涓婚敭鑾峰彇鏁版嵁鐨勫叏閮ㄤ俊鎭� - * - * @param oid 涓婚敭 - * @param templateOid 妯℃澘鐨勪富閿� - * @return 鏁版嵁鐨勫唴瀹� - */ - @Override - public R<List<Map<String, String>>> getDataByOid(String oid, String templateOid) { - CodeClassifyTemplateVO templateVO = templateService.getObjectHasAttrByOid(templateOid); - //涓轰簡闃叉妯℃澘涓婄殑涓氬姟绫诲瀷涓庡垎绫讳笂涓嶅搴� - CodeClassifyVO topClassifyVO = classifyService.getTopClassifyVO(templateVO.getCodeclassifyoid()); - String btmId = topClassifyVO.getBtmTypeId(); - //鏌ヨ鏁版嵁 - Map<String, String> conditionMap = new HashMap<>(); - conditionMap.put("t.oid", oid); - CodeTemplateAttrSqlBO sqlBO = getSqlByTemplateVO(btmId, templateVO, conditionMap, new PageHelper(-1)); - //鎴戜滑浣跨敤鍜屼笟鍔$被鍨嬬殑鏉ユ煡璇� - List<Map> cbosB = commonsMapper.selectBySql(sqlBO.getSqlUnPage()); - List<Map<String, String>> cbos = new ArrayList<>(); - cbosB.stream().forEach(map -> { - Map<String, String> data = new HashMap<>(); - for (Object o : map.keySet()) { - data.put(((String) o).toLowerCase(Locale.ROOT), map.get(o)==null?"":String.valueOf(map.get(o))); - } - cbos.add(data); - }); + /** + * 浣跨敤鏁版嵁涓婚敭鑾峰彇鏁版嵁鐨勫叏閮ㄤ俊鎭� + * + * @param oid 涓婚敭 + * @param templateOid 妯℃澘鐨勪富閿� + * @return 鏁版嵁鐨勫唴瀹� + */ + @Override + public R<List<Map<String, String>>> getDataByOid(String oid, String templateOid) { + CodeClassifyTemplateVO templateVO = templateService.getObjectHasAttrByOid(templateOid); + //涓轰簡闃叉妯℃澘涓婄殑涓氬姟绫诲瀷涓庡垎绫讳笂涓嶅搴� + CodeClassifyVO topClassifyVO = classifyService.getTopClassifyVO(templateVO.getCodeclassifyoid()); + String btmId = topClassifyVO.getBtmTypeId(); + //鏌ヨ鏁版嵁 + Map<String, String> conditionMap = new HashMap<>(); + conditionMap.put("t.oid", oid); + CodeTemplateAttrSqlBO sqlBO = getSqlByTemplateVO(btmId, templateVO, conditionMap, new PageHelper(-1)); + //鎴戜滑浣跨敤鍜屼笟鍔$被鍨嬬殑鏉ユ煡璇� + List<Map> cbosB = commonsMapper.selectBySql(sqlBO.getSqlUnPage()); + List<Map<String, String>> cbos = new ArrayList<>(); + cbosB.stream().forEach(map -> { + Map<String, String> data = new HashMap<>(); + for (Object o : map.keySet()) { + data.put(((String) o).toLowerCase(Locale.ROOT), map.get(o) == null ? "" : String.valueOf(map.get(o))); + } + cbos.add(data); + }); -// List<ClientBusinessObject> cbos = boService.queryByOnlySql(sqlBO.getSqlUnPage()); - if (CollectionUtils.isEmpty(cbos)) { - throw new VciBaseException("鏁版嵁鍦ㄧ郴缁熶腑涓嶅瓨鍦紝鏄惁鍥犱负淇敼杩囦笟鍔$被鍨嬶紵"); - } -// Map<String, String> data = new HashMap<>(); - Map<String, String> cbo = cbos.get(0); -// WebUtil.copyValueToMapFromCbos(cbo, data); - List<Map<String, String>> dataList = new ArrayList<>(); - dataList.add(cbo); - wrapperData(dataList, templateVO, sqlBO.getSelectFieldList(), true); - R<List<Map<String, String>>> result = R.data(Collections.singletonList(cbo)); - //鎴戜滑瑕佺湅鏄惁涓嶆槸鍗囩増鐨勶紝鍗囩増鐨勮瘽锛岄渶瑕佸姣斾笉鐩哥瓑鐨勫睘鎬� -/* String copy = cbo.get("copyfromversion"); -// if (StringUtils.isBlank(copy)) { -// copy = cbo.getAttributeValue("copyfromversion"); -// } - if (StringUtils.isNotBlank(copy)) { - //璇存槑鏈夊彉鏇寸殑鍐呭 + // List<ClientBusinessObject> cbos = boService.queryByOnlySql(sqlBO.getSqlUnPage()); + if (CollectionUtils.isEmpty(cbos)) { + return R.fail("鏁版嵁鍦ㄧ郴缁熶腑涓嶅瓨鍦紝鏄惁鍥犱负淇敼杩囦笟鍔$被鍨嬶紵"); + } + // Map<String, String> data = new HashMap<>(); + Map<String, String> cbo = cbos.get(0); + // WebUtil.copyValueToMapFromCbos(cbo, data); + List<Map<String, String>> dataList = new ArrayList<>(); + dataList.add(cbo); + wrapperData(dataList, templateVO, sqlBO.getSelectFieldList(), true); + R<List<Map<String, String>>> result = R.data(Collections.singletonList(cbo)); + if(templateVO.getAttributes().isEmpty()){ + return R.fail(String.format("涓婚敭涓猴細%s鐨勬ā鏉夸笅锛屾ā鏉垮睘鎬ч厤缃负绌猴紒",templateVO.getOid())); + } + //澶勭悊杩斿洖鏁版嵁涓庢ā鏉挎暟鎹厤缃殑瀛楁涓嶄竴鏍烽棶棰� + 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()); + } + } + }); - CodeTemplateAttrSqlBO oldSqlBO = getSqlByTemplateVO(btmId, templateVO, WebUtil.getOidQuery(copy), new PageHelper(-1)); - //鎴戜滑浣跨敤鍜屼笟鍔$被鍨嬬殑鏉ユ煡璇� -// List<Map> cbos = commonsMapper.selectBySql(sqlBO.getSqlUnPage()); - List<Map> oldCbos = commonsMapper.selectBySql(oldSqlBO.getSqlUnPage()); - if (!CollectionUtils.isEmpty(oldCbos)) { -// Map<String, String> newData = new HashMap<>(); -// WebUtil.copyValueToMapFromCbos(cbo, newData); - Map<String, String> oldData = new HashMap<>(); - oldData = oldCbos.get(0); - Map<String, String> difFieldMap = new HashMap<>(); - Map<String, String> finalOldData = oldData; - cbo.forEach((key, value) -> { - // 杩欏効oldmap涓殑鍏ㄦ槸澶у啓锛岃�宑bo涓殑鍏ㄦ槸灏忓啓鎵�浠ヤ細鎷夸笉鍒板彧锛岃繖鍎跨洿鎺ュ鐞嗘垚灏忓啓鎷夸笉鍒板氨鐢ㄥぇ鍐欐嬁 - String oldValue = String.valueOf(finalOldData.getOrDefault(key.toUpperCase(Locale.ROOT), finalOldData.getOrDefault(key, ""))); - if (value == null || value == "null") { - value = ""; - } - if (oldValue == null || oldValue == "null") { - oldValue = ""; - } - if (!value.equalsIgnoreCase(oldValue)) { - difFieldMap.put(key, oldValue); - } - }); - List<Map<String, String>> difFieldList = new ArrayList<>(); - difFieldList.add(difFieldMap); - result.setData(difFieldList); - } - }*/ - return result; - } + //鎴戜滑瑕佺湅鏄惁涓嶆槸鍗囩増鐨勶紝鍗囩増鐨勮瘽锛岄渶瑕佸姣斾笉鐩哥瓑鐨勫睘鎬� + /* String copy = cbo.get("copyfromversion"); + // if (StringUtils.isBlank(copy)) { + // copy = cbo.getAttributeValue("copyfromversion"); + // } + if (StringUtils.isNotBlank(copy)) { + //璇存槑鏈夊彉鏇寸殑鍐呭 - /** - * 浣跨敤妯℃澘鐨勪富閿幏鍙栬〃鍗曠殑淇℃伅 - * - * @param templateOid 妯℃澘鐨勪富閿� - * @param executionId 娴佺▼鎵цid - * @param processUse 娴佺▼妯℃澘鐨勭敤閫� - * @return ui鐩稿叧鐨勫唴瀹� - */ - @Override - public List<String> getFieldByProcessTemplate(String templateOid, String executionId, String processUse) { - VciBaseUtil.alertNotNull(templateOid, "妯℃澘涓婚敭", executionId, "娴佺▼鐨勬墽琛孖d", processUse, "娴佺▼妯℃澘鐢ㄩ��"); - while (StringUtils.countMatches(executionId, ".") > 1) { - executionId = executionId.substring(0, executionId.lastIndexOf(".")); - } - String sql = "select wm_concat(distinct (t.codetempattrOidArr)) codetempattroidarr\n" + - "from pl_code_clsflowtemp t\n" + - "join PLFLOWINSTANCE plfi on t.ID = plfi.PLTEMPLATEPUID\n" + - "where plfi.PLEXECUTIONID = '" + executionId + "' and t.CLASSIFYTEMPLATEOID = '" + templateOid + "' and t.CODEPROCESSUSE = '" + processUse + "'"; + CodeTemplateAttrSqlBO oldSqlBO = getSqlByTemplateVO(btmId, templateVO, WebUtil.getOidQuery(copy), new PageHelper(-1)); + //鎴戜滑浣跨敤鍜屼笟鍔$被鍨嬬殑鏉ユ煡璇� + // List<Map> cbos = commonsMapper.selectBySql(sqlBO.getSqlUnPage()); + List<Map> oldCbos = commonsMapper.selectBySql(oldSqlBO.getSqlUnPage()); + if (!CollectionUtils.isEmpty(oldCbos)) { + // Map<String, String> newData = new HashMap<>(); + // WebUtil.copyValueToMapFromCbos(cbo, newData); + Map<String, String> oldData = new HashMap<>(); + oldData = oldCbos.get(0); + Map<String, String> difFieldMap = new HashMap<>(); + Map<String, String> finalOldData = oldData; + cbo.forEach((key, value) -> { + // 杩欏効oldmap涓殑鍏ㄦ槸澶у啓锛岃�宑bo涓殑鍏ㄦ槸灏忓啓鎵�浠ヤ細鎷夸笉鍒板彧锛岃繖鍎跨洿鎺ュ鐞嗘垚灏忓啓鎷夸笉鍒板氨鐢ㄥぇ鍐欐嬁 + String oldValue = String.valueOf(finalOldData.getOrDefault(key.toUpperCase(Locale.ROOT), finalOldData.getOrDefault(key, ""))); + if (value == null || value == "null") { + value = ""; + } + if (oldValue == null || oldValue == "null") { + oldValue = ""; + } + if (!value.equalsIgnoreCase(oldValue)) { + difFieldMap.put(key, oldValue); + } + }); + List<Map<String, String>> difFieldList = new ArrayList<>(); + difFieldList.add(difFieldMap); + result.setData(difFieldList); + } + }*/ + return result; + } + + /** + * 浣跨敤妯℃澘鐨勪富閿幏鍙栬〃鍗曠殑淇℃伅 + * + * @param templateOid 妯℃澘鐨勪富閿� + * @param executionId 娴佺▼鎵цid + * @param processUse 娴佺▼妯℃澘鐨勭敤閫� + * @return ui鐩稿叧鐨勫唴瀹� + */ + @Override + public List<String> getFieldByProcessTemplate(String templateOid, String executionId, String processUse) { + VciBaseUtil.alertNotNull(templateOid, "妯℃澘涓婚敭", executionId, "娴佺▼鐨勬墽琛孖d", processUse, "娴佺▼妯℃澘鐢ㄩ��"); + while (StringUtils.countMatches(executionId, ".") > 1) { + executionId = executionId.substring(0, executionId.lastIndexOf(".")); + } + String sql = "select wm_concat(distinct (t.codetempattrOidArr)) codetempattroidarr\n" + + "from pl_code_clsflowtemp t\n" + + "join PLFLOWINSTANCE plfi on t.ID = plfi.PLTEMPLATEPUID\n" + + "where plfi.PLEXECUTIONID = '" + executionId + "' and t.CLASSIFYTEMPLATEOID = '" + templateOid + "' and t.CODEPROCESSUSE = '" + processUse + "'"; // List<ClientBusinessObject> tempAttrOidArr = boService.queryByOnlySql(sql); - List<Map> tempAttrOidArr = commonsMapper.selectBySql(sql); - if (CollectionUtils.isEmpty(tempAttrOidArr) || StringUtils.isBlank((CharSequence) tempAttrOidArr.get(0).get("codetempattroidarr"))) { - return new ArrayList<>(); - } - return VciBaseUtil.str2List(tempAttrOidArr.get(0).get("CODETEMPATTROIDARR").toString()); - } + List<Map> tempAttrOidArr = commonsMapper.selectBySql(sql); + if (CollectionUtils.isEmpty(tempAttrOidArr) || StringUtils.isBlank((CharSequence) tempAttrOidArr.get(0).get("codetempattroidarr"))) { + return new ArrayList<>(); + } + return VciBaseUtil.str2List(tempAttrOidArr.get(0).get("CODETEMPATTROIDARR").toString()); + } - /** - * 浣跨敤鍒嗙被鐨勪富閿幏鍙栦笟鍔℃暟鎹� - * - * @param btmType 涓氬姟绫诲瀷 - * @param queryObject 鏌ヨ瀵硅薄 - * @return 琛ㄦ牸鐨勬樉绀哄璞″�� - */ - @Override - public DataGrid<Map<String, String>> getTableDataByExecutionId(String btmType, BaseQueryObject queryObject) { - VciBaseUtil.alertNotNull(btmType, "涓氬姟绫诲瀷"); - if (queryObject == null) { - queryObject = new BaseQueryObject(); - } - if (queryObject.getConditionMap() == null) { - queryObject.setConditionMap(new HashMap<>()); - } - Map<String, String> conditionMap = queryObject.getConditionMap(); - PageHelper pageHelper = queryObject.getPageHelper(); - if (!conditionMap.containsKey("oid")) { - throw new VciBaseException("涓氬姟鏁版嵁涓婚敭涓嶈兘涓虹┖"); - } - List<String> oidList = VciBaseUtil.str2List(conditionMap.get("oid")); + /** + * 浣跨敤鍒嗙被鐨勪富閿幏鍙栦笟鍔℃暟鎹� + * + * @param btmType 涓氬姟绫诲瀷 + * @param queryObject 鏌ヨ瀵硅薄 + * @return 琛ㄦ牸鐨勬樉绀哄璞″�� + */ + @Override + public DataGrid<Map<String, String>> getTableDataByExecutionId(String btmType, BaseQueryObject queryObject) { + VciBaseUtil.alertNotNull(btmType, "涓氬姟绫诲瀷"); + if (queryObject == null) { + queryObject = new BaseQueryObject(); + } + if (queryObject.getConditionMap() == null) { + queryObject.setConditionMap(new HashMap<>()); + } + Map<String, String> conditionMap = queryObject.getConditionMap(); + PageHelper pageHelper = queryObject.getPageHelper(); + if (!conditionMap.containsKey("oid")) { + throw new VciBaseException("涓氬姟鏁版嵁涓婚敭涓嶈兘涓虹┖"); + } + List<String> oidList = VciBaseUtil.str2List(conditionMap.get("oid")); - List<BaseModel> cbos = selectByTypeAndOid(btmType, conditionMap.get("oid")); - if (CollectionUtils.isEmpty(cbos)) { - throw new VciBaseException("鏈壘鍒颁笟鍔℃暟鎹�"); - } - BaseModel cbo = cbos.get(0); - String templateOid = cbo.getData().get("CODETEMPLATEOID"); + List<BaseModel> cbos = selectByTypeAndOid(btmType, conditionMap.get("oid")); + if (CollectionUtils.isEmpty(cbos)) { + throw new VciBaseException("鏈壘鍒颁笟鍔℃暟鎹�"); + } + BaseModel cbo = cbos.get(0); + String templateOid = cbo.getData().get("CODETEMPLATEOID"); - QueryWrapper<CodeClassifyTemplate> codeClassifyTemplateWrapper = new QueryWrapper<>(); - codeClassifyTemplateWrapper.eq("oid", templateOid); - List<CodeClassifyTemplate> templateDOList = templateService.list(codeClassifyTemplateWrapper); + QueryWrapper<CodeClassifyTemplate> codeClassifyTemplateWrapper = new QueryWrapper<>(); + codeClassifyTemplateWrapper.eq("oid", templateOid); + List<CodeClassifyTemplate> templateDOList = templateService.list(codeClassifyTemplateWrapper); - QueryWrapper<CodeClassifyTemplateAttr> codeClassifyTemplateAttrWrapper = new QueryWrapper<>(); - codeClassifyTemplateAttrWrapper.eq("CLASSIFYTEMPLATEOID", templateOid); + QueryWrapper<CodeClassifyTemplateAttr> codeClassifyTemplateAttrWrapper = new QueryWrapper<>(); + codeClassifyTemplateAttrWrapper.eq("CLASSIFYTEMPLATEOID", templateOid); - List<CodeClassifyTemplateAttr> attrDOList = codeClassifyTemplateAttrService.list(codeClassifyTemplateAttrWrapper); + List<CodeClassifyTemplateAttr> attrDOList = codeClassifyTemplateAttrService.list(codeClassifyTemplateAttrWrapper); - if (CollectionUtils.isEmpty(templateDOList)) { - logger.error("鎵句笉鍒颁笟鍔℃暟鎹叧鑱旂殑妯℃澘锛屾ā鏉夸富閿細" + templateOid); - throw new VciBaseException("鎵句笉鍒颁笟鍔℃暟鎹叧鑱旂殑妯℃澘"); - } - CodeClassifyTemplateVO templateVO = templateService.codeClassifyTemplateDO2VO(templateDOList.get(0)); - templateVO.setAttributes(codeClassifyTemplateAttrService.codeClassifyTemplateAttrDO2VOs(attrDOList)); - try { - if (oidList.size() > 1) { - DataGrid<Map<String, String>> allDataGrid = new DataGrid<>(); - List<Map<String, String>> allData = new ArrayList<>(); - oidList.forEach(oid -> { - Map<String, String> condition = new HashMap<>(); - condition.put("oid", oid); - DataGrid<Map<String, String>> dataGrid = queryGrid(btmType, templateVO, condition, pageHelper); - allData.addAll(dataGrid.getData()); - }); - allDataGrid.setData(allData); - return allDataGrid; - } else { - return queryGrid(btmType, templateVO, conditionMap, pageHelper); - } - } catch (Exception e) { - System.out.println(e.getMessage()); - return null; - } - } + if (CollectionUtils.isEmpty(templateDOList)) { + logger.error("鎵句笉鍒颁笟鍔℃暟鎹叧鑱旂殑妯℃澘锛屾ā鏉夸富閿細" + templateOid); + throw new VciBaseException("鎵句笉鍒颁笟鍔℃暟鎹叧鑱旂殑妯℃澘"); + } + CodeClassifyTemplateVO templateVO = templateService.codeClassifyTemplateDO2VO(templateDOList.get(0)); + templateVO.setAttributes(codeClassifyTemplateAttrService.codeClassifyTemplateAttrDO2VOs(attrDOList)); + try { + if (oidList.size() > 1) { + DataGrid<Map<String, String>> allDataGrid = new DataGrid<>(); + List<Map<String, String>> allData = new ArrayList<>(); + oidList.forEach(oid -> { + Map<String, String> condition = new HashMap<>(); + condition.put("oid", oid); + DataGrid<Map<String, String>> dataGrid = queryGrid(btmType, templateVO, condition, pageHelper); + allData.addAll(dataGrid.getData()); + }); + allDataGrid.setData(allData); + return allDataGrid; + } else { + return queryGrid(btmType, templateVO, conditionMap, pageHelper); + } + } catch (Exception e) { + System.out.println(e.getMessage()); + return null; + } + } - /** - * 浣跨敤鍒嗙被鐨勪富閿幏鍙栬〃鏍肩殑瀹氫箟 - * - * @param codeClassifyOid 鍒嗙被涓婚敭 - * @param phase 闃舵鐨勫悕绉� - * @return UI鐩稿叧鐨勪俊鎭紙浠呭寘鍚〃鍗�) - */ - @Override - public MdmUIInfoVO getTableDefineByClassifyOid_v2(String codeClassifyOid, String phase) { - MdmUIInfoVO uiInfoVO = new MdmUIInfoVO(); - CodeClassifyTemplateVO templateVO = getUsedTemplateByClassifyOid(codeClassifyOid); - uiInfoVO.setTemplateVO(templateVO); - UITableDefineVO uiTableDefineVO = wrapperTableDefineByTemplate(templateVO, true); - List<String> phaseAttrIdList = listPhaseAttrByClassifyOid(codeClassifyOid, phase); - uiTableDefineVO.getCols().stream().forEach(list -> { - List<UITableFieldVO> visiableTableField = new ArrayList<>(); - if (StringUtils.isNotBlank(phase)) { - visiableTableField = list.stream().filter(col -> - phaseAttrIdList.stream().anyMatch(s -> StringUtils.equalsIgnoreCase(col.getField(), s) || - (StringUtils.equalsIgnoreCase(col.getFieldType(), "combox") && StringUtils.equalsIgnoreCase(col.getSortField(), s)) - || (StringUtils.equalsIgnoreCase(col.getFieldType(), "refer") && StringUtils.equalsIgnoreCase(col.getQueryField(), s)) - )).collect(Collectors.toList()); - } else { - visiableTableField = list.stream().filter(col -> - templateVO.getAttributes().stream().anyMatch(s -> - (!s.getReadOnlyFlag().equalsIgnoreCase("true") && StringUtils.equalsIgnoreCase(col.getField(), s.getId())) || - (StringUtils.equalsIgnoreCase(col.getFieldType(), "combox") && StringUtils.equalsIgnoreCase(col.getSortField(), s.getId())) - || (StringUtils.equalsIgnoreCase(col.getFieldType(), "refer") && StringUtils.equalsIgnoreCase(col.getQueryField(), s.getId())) - )).collect(Collectors.toList()); - } + /** + * 浣跨敤鍒嗙被鐨勪富閿幏鍙栬〃鏍肩殑瀹氫箟 + * + * @param codeClassifyOid 鍒嗙被涓婚敭 + * @param phase 闃舵鐨勫悕绉� + * @return UI鐩稿叧鐨勪俊鎭紙浠呭寘鍚〃鍗�) + */ + @Override + public MdmUIInfoVO getTableDefineByClassifyOid_v2(String codeClassifyOid, String phase) { + MdmUIInfoVO uiInfoVO = new MdmUIInfoVO(); + CodeClassifyTemplateVO templateVO = getUsedTemplateByClassifyOid(codeClassifyOid); + uiInfoVO.setTemplateVO(templateVO); + UITableDefineVO uiTableDefineVO = wrapperTableDefineByTemplate(templateVO, true); + List<String> phaseAttrIdList = listPhaseAttrByClassifyOid(codeClassifyOid, phase); + uiTableDefineVO.getCols().stream().forEach(list -> { + List<UITableFieldVO> visiableTableField = new ArrayList<>(); + if (StringUtils.isNotBlank(phase)) { + visiableTableField = list.stream().filter(col -> + phaseAttrIdList.stream().anyMatch(s -> StringUtils.equalsIgnoreCase(col.getField(), s) || + (StringUtils.equalsIgnoreCase(col.getFieldType(), "combox") && StringUtils.equalsIgnoreCase(col.getSortField(), s)) + || (StringUtils.equalsIgnoreCase(col.getFieldType(), "refer") && StringUtils.equalsIgnoreCase(col.getQueryField(), s)) + )).collect(Collectors.toList()); + } else { + visiableTableField = list.stream().filter(col -> + templateVO.getAttributes().stream().anyMatch(s -> + (!s.getReadOnlyFlag().equalsIgnoreCase("true") && StringUtils.equalsIgnoreCase(col.getField(), s.getId())) || + (StringUtils.equalsIgnoreCase(col.getFieldType(), "combox") && StringUtils.equalsIgnoreCase(col.getSortField(), s.getId())) + || (StringUtils.equalsIgnoreCase(col.getFieldType(), "refer") && StringUtils.equalsIgnoreCase(col.getQueryField(), s.getId())) + )).collect(Collectors.toList()); + } - visiableTableField.stream().forEach(vo -> { - uiTableDefineVO.setHasEditor(true); - if ("refer".equalsIgnoreCase(vo.getFieldType())) { - setReferConfig2EditConfig(vo); - } else if ("combox".equalsIgnoreCase(vo.getFieldType())) { - setComboxConfig2EditConfig(vo); - } else if (StringUtils.isNotBlank(vo.getDateFormate())) { - vo.setEdit("date"); - } else { - vo.setEdit(vo.getFieldType()); - } - }); - }); - uiInfoVO.setTableDefineVO(uiTableDefineVO); - wrapperResemble(templateVO, uiInfoVO); - return uiInfoVO; - } + visiableTableField.stream().forEach(vo -> { + uiTableDefineVO.setHasEditor(true); + if ("refer".equalsIgnoreCase(vo.getFieldType())) { + setReferConfig2EditConfig(vo); + } else if ("combox".equalsIgnoreCase(vo.getFieldType())) { + setComboxConfig2EditConfig(vo); + } else if (StringUtils.isNotBlank(vo.getDateFormate())) { + vo.setEdit("date"); + } else { + vo.setEdit(vo.getFieldType()); + } + }); + }); + uiInfoVO.setTableDefineVO(uiTableDefineVO); + wrapperResemble(templateVO, uiInfoVO); + return uiInfoVO; + } /** * 浣跨敤鍒嗙被鐨勪富閿幏鍙栬〃鏍肩殑瀹氫箟-ubcs鍚庝慨鏀硅幏鍙栨祦绋嬮樁娈电啛鎮夎幏鍙栨柟娉� + * * @param codeClassifyOid * @param templateId * @param taskId * @param modelKey * @return */ - public MdmUIInfoVO getTableDefineByClassifyOid_v2(String codeClassifyOid,String templateId,String taskId,String modelKey) { + public MdmUIInfoVO getTableDefineByClassifyOid_v2(String codeClassifyOid, String templateId, String taskId, String modelKey) { MdmUIInfoVO uiInfoVO = new MdmUIInfoVO(); CodeClassifyTemplateVO templateVO = getUsedTemplateByClassifyOid(codeClassifyOid); uiInfoVO.setTemplateVO(templateVO); UITableDefineVO uiTableDefineVO = wrapperTableDefineByTemplate(templateVO, true); - R<List<ProcessStageAttrVO>> r = imdmiFlowAttrClient.ssslist(templateId,modelKey,taskId); + R<List<ProcessStageAttrVO>> r = imdmiFlowAttrClient.ssslist(templateId, modelKey, taskId); List<ProcessStageAttrVO> stageAttrVOS = r.getData(); List<String> attrList = new ArrayList<>(); - stageAttrVOS.stream().forEach(attr->{ + stageAttrVOS.stream().forEach(attr -> { attrList.add(attr.getAttrId()); }); uiTableDefineVO.getCols().stream().forEach(list -> { @@ -3212,24 +3756,24 @@ return uiInfoVO; } - /** - * 妯℃澘灞炴�ц浆鎹负琛ㄦ牸瀹氫箟鐨勪俊鎭� - * - * @param templateVO 妯℃澘鐨勬樉绀哄璞� - * @param forEdit 鏄惁鏄紪杈戞墍闇� - * @return 琛ㄦ牸鐨勪俊鎭� - */ - private UITableDefineVO wrapperTableDefineByTemplate(CodeClassifyTemplateVO templateVO, boolean forEdit) { - //灏佽淇℃伅 - UITableDefineVO tableDefineVO = new UITableDefineVO(); - tableDefineVO.setOid(templateVO.getOid()); - tableDefineVO.setBtmType(templateVO.getBtmTypeId()); - tableDefineVO.setDisplayQueryArea(true); - //鍓嶇浼氶粯璁ゅ垎椤电殑淇℃伅 + /** + * 妯℃澘灞炴�ц浆鎹负琛ㄦ牸瀹氫箟鐨勪俊鎭� + * + * @param templateVO 妯℃澘鐨勬樉绀哄璞� + * @param forEdit 鏄惁鏄紪杈戞墍闇� + * @return 琛ㄦ牸鐨勪俊鎭� + */ + private UITableDefineVO wrapperTableDefineByTemplate(CodeClassifyTemplateVO templateVO, boolean forEdit) { + //灏佽淇℃伅 + UITableDefineVO tableDefineVO = new UITableDefineVO(); + tableDefineVO.setOid(templateVO.getOid()); + tableDefineVO.setBtmType(templateVO.getBtmTypeId()); + tableDefineVO.setDisplayQueryArea(true); + //鍓嶇浼氶粯璁ゅ垎椤电殑淇℃伅 - //澶勭悊鎵�鏈夌殑鍒楋紝杩欎釜妯℃澘娌℃湁鍚堝苟鐨勮〃澶寸殑鎯呭喌 - List<UITableFieldVO> fieldVOList = new ArrayList<>(); - Map<String, String> comboxOrReferFieldMap = new HashMap<>(); + //澶勭悊鎵�鏈夌殑鍒楋紝杩欎釜妯℃澘娌℃湁鍚堝苟鐨勮〃澶寸殑鎯呭喌 + List<UITableFieldVO> fieldVOList = new ArrayList<>(); + Map<String, String> comboxOrReferFieldMap = new HashMap<>(); if (Func.isNotEmpty(templateVO.getAttributes())) { templateVO.getAttributes().forEach(attrVO -> { @@ -3246,10 +3790,10 @@ fieldVOList.add(tableFieldVO); }); } - List<List<UITableFieldVO>> cols = new ArrayList<>(); - cols.add(fieldVOList); - tableDefineVO.setCols(cols); - Map<String, UITableFieldVO> fieldVOMap = fieldVOList.stream().collect(Collectors.toMap(s -> s.getField().toLowerCase(Locale.ROOT), t -> t)); + List<List<UITableFieldVO>> cols = new ArrayList<>(); + cols.add(fieldVOList); + tableDefineVO.setCols(cols); + Map<String, UITableFieldVO> fieldVOMap = fieldVOList.stream().collect(Collectors.toMap(s -> s.getField().toLowerCase(Locale.ROOT), t -> t)); List<CodeClassifyTemplateAttrVO> seniorQueryAttrVOs = null; if (Func.isNotEmpty(templateVO.getAttributes())) { //鏌ヨ灞炴�� @@ -3268,223 +3812,222 @@ //楂樼骇灞炴�� seniorQueryAttrVOs = templateVO.getAttributes().stream().filter(s -> BooleanEnum.TRUE.getValue().equalsIgnoreCase(s.getSeniorQueryAttrFlag())).collect(Collectors.toList()); } - if (!CollectionUtils.isEmpty(seniorQueryAttrVOs)) { - List<UITableFieldVO> queryFieldVOs = new ArrayList<>(); - seniorQueryAttrVOs.stream().forEach(attrVO -> { - String attrId = attrVO.getId().toLowerCase(Locale.ROOT); - attrId = comboxOrReferFieldMap.getOrDefault(attrId, attrId).toLowerCase(Locale.ROOT); - if (fieldVOMap.containsKey(attrId)) { - queryFieldVOs.add(fieldVOMap.get(attrId)); - } - }); - tableDefineVO.setSeniorQueryColumns(queryFieldVOs); - } - return tableDefineVO; - } + if (!CollectionUtils.isEmpty(seniorQueryAttrVOs)) { + List<UITableFieldVO> queryFieldVOs = new ArrayList<>(); + seniorQueryAttrVOs.stream().forEach(attrVO -> { + String attrId = attrVO.getId().toLowerCase(Locale.ROOT); + attrId = comboxOrReferFieldMap.getOrDefault(attrId, attrId).toLowerCase(Locale.ROOT); + if (fieldVOMap.containsKey(attrId)) { + queryFieldVOs.add(fieldVOMap.get(attrId)); + } + }); + tableDefineVO.setSeniorQueryColumns(queryFieldVOs); + } + return tableDefineVO; + } - /** - * 鍔犺浇鎴愬弬鐓х殑淇敼閰嶇疆 - * - * @param vo 琛ㄦ牸瀛楁鏄剧ず瀵硅薄 - */ - private void setReferConfig2EditConfig(UITableFieldVO vo) { - if (!CollectionUtils.isEmpty(vo.getReferConfig().getWhere())) { - vo.getReferConfig().getWhere().keySet().forEach(key -> { - vo.getReferConfig().getWhere().put(key, "'" + vo.getReferConfig().getWhere().get(key) + "'"); - }); - } - if (StringUtils.isNotBlank(vo.getReferConfig().getParentValue())) { - String parentValue = vo.getReferConfig().getParentValue(); - parentValue = "\\" + parentValue.replaceAll("'", "{vci-quote}").replaceAll("=", "{vci-equals}"); - vo.getReferConfig().setParentValue(parentValue); - } - String referConfig = vo.getReferConfig().toString() - .replaceAll("=", ":") - .replaceAll("UITableCustomDefineVO", "") - .replaceAll("UIFieldSortVO", "") - .replaceAll("UITablePageVO", "") - .replaceAll("UITableFieldVO", "") - .replaceAll("UIFormReferVO", "") - .replaceAll("\\{vci-equals}", "=") - .replaceAll("\\{vci-quote}", "\\\\'") - .replaceAll("'null'", "null"); - referConfig = referConfig + ",fieldMap:{" + vo.getQueryField() + ":'" + vo.getReferConfig().getValueField() + "'}"; - vo.setEditConfig("{referConfig:" + referConfig + "}"); - vo.setEdit(vo.getFieldType()); - } + /** + * 鍔犺浇鎴愬弬鐓х殑淇敼閰嶇疆 + * + * @param vo 琛ㄦ牸瀛楁鏄剧ず瀵硅薄 + */ + private void setReferConfig2EditConfig(UITableFieldVO vo) { + if (!CollectionUtils.isEmpty(vo.getReferConfig().getWhere())) { + vo.getReferConfig().getWhere().keySet().forEach(key -> { + vo.getReferConfig().getWhere().put(key, "'" + vo.getReferConfig().getWhere().get(key) + "'"); + }); + } + if (StringUtils.isNotBlank(vo.getReferConfig().getParentValue())) { + String parentValue = vo.getReferConfig().getParentValue(); + parentValue = "\\" + parentValue.replaceAll("'", "{vci-quote}").replaceAll("=", "{vci-equals}"); + vo.getReferConfig().setParentValue(parentValue); + } + String referConfig = vo.getReferConfig().toString() + .replaceAll("=", ":") + .replaceAll("UITableCustomDefineVO", "") + .replaceAll("UIFieldSortVO", "") + .replaceAll("UITablePageVO", "") + .replaceAll("UITableFieldVO", "") + .replaceAll("UIFormReferVO", "") + .replaceAll("\\{vci-equals}", "=") + .replaceAll("\\{vci-quote}", "\\\\'") + .replaceAll("'null'", "null"); + referConfig = referConfig + ",fieldMap:{" + vo.getQueryField() + ":'" + vo.getReferConfig().getValueField() + "'}"; + vo.setEditConfig("{referConfig:" + referConfig + "}"); + vo.setEdit(vo.getFieldType()); + } - /** - * 鍔犺浇鎴愪笅鎷夋鐨勪慨鏀归厤缃� - * - * @param vo 琛ㄦ牸瀛楁鏄剧ず瀵硅薄 - */ - private void setComboxConfig2EditConfig(UITableFieldVO vo) { - vo.setEditConfig("{editable:true,comboxKey:'" + vo.getComboxKey() + "'"); - if (!CollectionUtils.isEmpty(vo.getData())) { - vo.setEditConfig(vo.getEditConfig() + ", comboxConfig:"); - for (int i = 0; i < vo.getData().size(); i++) { - KeyValue data = vo.getData().get(i); - if (i == vo.getData().size() - 1) { - vo.setEditConfig(vo.getEditConfig() + "{attributes:" + data.getAttributes() + ",key:'" + data.getKey() + "',value:'" + data.getValue() + "'}]}"); - } else if (i == 0) { - vo.setEditConfig(vo.getEditConfig() + "{data:[{attributes:" + data.getAttributes() + ",key:'" + data.getKey() + "',value:'" + data.getValue() + "'},"); - } else { - vo.setEditConfig(vo.getEditConfig() + "{attributes:" + data.getAttributes() + ",key:'" + data.getKey() + "',value:'" + data.getValue() + "'},"); - } - } - vo.setEditConfig(vo.getEditConfig() + ",valueField:'" + vo.getQueryField() + "'"); - } - vo.setEditConfig(vo.getEditConfig() + "}"); - vo.setEdit(vo.getFieldType()); - } + /** + * 鍔犺浇鎴愪笅鎷夋鐨勪慨鏀归厤缃� + * + * @param vo 琛ㄦ牸瀛楁鏄剧ず瀵硅薄 + */ + private void setComboxConfig2EditConfig(UITableFieldVO vo) { + vo.setEditConfig("{editable:true,comboxKey:'" + vo.getComboxKey() + "'"); + if (!CollectionUtils.isEmpty(vo.getData())) { + vo.setEditConfig(vo.getEditConfig() + ", comboxConfig:"); + for (int i = 0; i < vo.getData().size(); i++) { + KeyValue data = vo.getData().get(i); + if (i == vo.getData().size() - 1) { + vo.setEditConfig(vo.getEditConfig() + "{attributes:" + data.getAttributes() + ",key:'" + data.getKey() + "',value:'" + data.getValue() + "'}]}"); + } else if (i == 0) { + vo.setEditConfig(vo.getEditConfig() + "{data:[{attributes:" + data.getAttributes() + ",key:'" + data.getKey() + "',value:'" + data.getValue() + "'},"); + } else { + vo.setEditConfig(vo.getEditConfig() + "{attributes:" + data.getAttributes() + ",key:'" + data.getKey() + "',value:'" + data.getValue() + "'},"); + } + } + vo.setEditConfig(vo.getEditConfig() + ",valueField:'" + vo.getQueryField() + "'"); + } + vo.setEditConfig(vo.getEditConfig() + "}"); + vo.setEdit(vo.getFieldType()); + } - /** - * 浣跨敤鍒嗙被鐨勭紪鍙疯矾寰勶紝鑾峰彇琛ㄥ崟鐨勭浉鍏冲畾涔� - * - * @param idPath 缂栧彿鐨勮矾寰勶紝蹇呴』浠庨《灞傝妭鐐瑰紑濮嬶紝xx/yyy/zz - * @return UI鐩稿叧鐨勪俊鎭紙浠呭寘鍚〃鍗�) - */ - @Override - public MdmUIInfoVO getFormDefineByClassifyIdPath(String idPath) { - CodeClassifyVO classifyVO = classifyService.getObjectByIdPath(idPath); - if (classifyVO != null) { - return getFormDefineByClassifyOid(classifyVO.getOid()); - } - return null; - } + /** + * 浣跨敤鍒嗙被鐨勭紪鍙疯矾寰勶紝鑾峰彇琛ㄥ崟鐨勭浉鍏冲畾涔� + * + * @param idPath 缂栧彿鐨勮矾寰勶紝蹇呴』浠庨《灞傝妭鐐瑰紑濮嬶紝xx/yyy/zz + * @return UI鐩稿叧鐨勪俊鎭紙浠呭寘鍚〃鍗�) + */ + @Override + public MdmUIInfoVO getFormDefineByClassifyIdPath(String idPath) { + CodeClassifyVO classifyVO = classifyService.getObjectByIdPath(idPath); + if (classifyVO != null) { + return getFormDefineByClassifyOid(classifyVO.getOid()); + } + return null; + } - /** - * 浣跨敤涓婚搴撳垎绫荤殑涓婚敭鑾峰彇琛ㄥ崟鐨勪俊鎭� - * - * @param codeClassifyOid 鍒嗙被鐨勪富閿� - * @return ui鐩稿叧鐨勫唴瀹� - */ - @Override - public MdmUIInfoVO getFormDefineByClassifyOid(String codeClassifyOid) { - MdmUIInfoVO uiInfoVO = new MdmUIInfoVO(); - CodeClassifyTemplateVO templateVO = getUsedTemplateByClassifyOid(codeClassifyOid); - uiInfoVO.setTemplateVO(templateVO); - uiInfoVO.setFormDefineVO(wrapperFormDefineByTemplate(templateVO, codeClassifyOid)); - wrapperResemble(templateVO, uiInfoVO); - return uiInfoVO; - } + /** + * 浣跨敤涓婚搴撳垎绫荤殑涓婚敭鑾峰彇琛ㄥ崟鐨勪俊鎭� + * + * @param codeClassifyOid 鍒嗙被鐨勪富閿� + * @return ui鐩稿叧鐨勫唴瀹� + */ + @Override + public MdmUIInfoVO getFormDefineByClassifyOid(String codeClassifyOid) { + MdmUIInfoVO uiInfoVO = new MdmUIInfoVO(); + CodeClassifyTemplateVO templateVO = getUsedTemplateByClassifyOid(codeClassifyOid); + uiInfoVO.setTemplateVO(templateVO); + uiInfoVO.setFormDefineVO(wrapperFormDefineByTemplate(templateVO, codeClassifyOid)); + wrapperResemble(templateVO, uiInfoVO); + return uiInfoVO; + } - /** - * 浣跨敤妯℃澘涓婚敭鑾峰彇ui鐩稿叧鐨勫唴瀹� - * - * @param templateOid 妯℃澘鐨勪富閿� - * @return ui鐩稿叧鐨勫唴瀹� - */ - @Override - public MdmUIInfoVO getTableDefineByTemplateOid(String templateOid) { - return getTableDefineByTemplateVO(templateService.getObjectHasAttrByOid(templateOid)); - } + /** + * 浣跨敤妯℃澘涓婚敭鑾峰彇ui鐩稿叧鐨勫唴瀹� + * + * @param templateOid 妯℃澘鐨勪富閿� + * @return ui鐩稿叧鐨勫唴瀹� + */ + @Override + public MdmUIInfoVO getTableDefineByTemplateOid(String templateOid) { + return getTableDefineByTemplateVO(templateService.getObjectHasAttrByOid(templateOid)); + } - /** - * 浣跨敤妯℃澘鏄剧ず瀵硅薄杞崲涓鸿〃鏍肩殑淇℃伅锛堝寘鍚墿灞曠殑鎸夐挳锛� - * - * @param templateVO 妯℃澘鐨勪俊鎭� - * @return UI鐩稿叧鐨勫唴瀹癸紙浠呭寘鍚〃鏍间俊鎭級 - */ - private MdmUIInfoVO getTableDefineByTemplateVO(CodeClassifyTemplateVO templateVO) { - //鍏堢湅杩欎釜鍒嗙被鏈韩鏄惁鏈夋ā鏉� - MdmUIInfoVO uiInfoVO = new MdmUIInfoVO(); - uiInfoVO.setTemplateVO(templateVO); - //鎴戜滑闇�瑕佸皢妯℃澘杞崲涓鸿〃鏍肩浉鍏崇殑鏄剧ず淇℃伅 - uiInfoVO.setTableDefineVO(wrapperTableDefineByTemplate(uiInfoVO.getTemplateVO(), false)); - //闇�瑕佸幓鐪嬫墿灞曠殑鎸夐挳,鍙湁鍒楄〃閲岄潰鏈韩鎵嶆坊鍔犺繘鍘伙紝宸ュ叿鏍忎笂鐨勫崟鐙幏鍙� - List<CodeClassifyTemplateButtonVO> buttonVOS = templateButtonService.listButtonByTemplateOid(templateVO.getOid(), true); - if (!CollectionUtils.isEmpty(buttonVOS)) { - //鎴戜滑瑕佸垎寮�涓烘寜閽紝杩樻槸鍦ㄦ搷浣滃垪閲岄潰 - List<CodeClassifyTemplateButtonVO> tableButtonVOs = buttonVOS.stream().filter(s -> CodeUseButtonPositionTypeEnum.TABLE.getValue().equalsIgnoreCase(s.getButtonUse())).collect(Collectors.toList()); - if (!CollectionUtils.isEmpty(tableButtonVOs)) { - UITableFieldVO optionFieldVO = new UITableFieldVO(); - optionFieldVO.setField("options"); - optionFieldVO.setTitle("鎿嶄綔"); - optionFieldVO.setFieldType("text"); - optionFieldVO.setOptionField(true); - List<KeyValue> buttons = new ArrayList<>(); - Map<String, String> optionJsMap = new HashMap<>(); - tableButtonVOs.stream().forEach(buttonVO -> { - KeyValue kv = new KeyValue(); - kv.setKey(buttonVO.getId()); - kv.setValue(buttonVO.getClassifyButtonOidName()); - kv.setAttributes(VciBaseUtil.objectToMap(buttonVO)); - buttons.add(kv); - optionJsMap.put(buttonVO.getId(), buttonVO.getButtonVO().getExecuteJs()); - }); - optionFieldVO.setOptionJsMap(optionJsMap); - uiInfoVO.getTableDefineVO().getCols().get(0).add(optionFieldVO); - } - } - return uiInfoVO; - } + /** + * 浣跨敤妯℃澘鏄剧ず瀵硅薄杞崲涓鸿〃鏍肩殑淇℃伅锛堝寘鍚墿灞曠殑鎸夐挳锛� + * + * @param templateVO 妯℃澘鐨勪俊鎭� + * @return UI鐩稿叧鐨勫唴瀹癸紙浠呭寘鍚〃鏍间俊鎭級 + */ + private MdmUIInfoVO getTableDefineByTemplateVO(CodeClassifyTemplateVO templateVO) { + //鍏堢湅杩欎釜鍒嗙被鏈韩鏄惁鏈夋ā鏉� + MdmUIInfoVO uiInfoVO = new MdmUIInfoVO(); + uiInfoVO.setTemplateVO(templateVO); + //鎴戜滑闇�瑕佸皢妯℃澘杞崲涓鸿〃鏍肩浉鍏崇殑鏄剧ず淇℃伅 + uiInfoVO.setTableDefineVO(wrapperTableDefineByTemplate(uiInfoVO.getTemplateVO(), false)); + //闇�瑕佸幓鐪嬫墿灞曠殑鎸夐挳,鍙湁鍒楄〃閲岄潰鏈韩鎵嶆坊鍔犺繘鍘伙紝宸ュ叿鏍忎笂鐨勫崟鐙幏鍙� + List<CodeClassifyTemplateButtonVO> buttonVOS = templateButtonService.listButtonByTemplateOid(templateVO.getOid(), true); + if (!CollectionUtils.isEmpty(buttonVOS)) { + //鎴戜滑瑕佸垎寮�涓烘寜閽紝杩樻槸鍦ㄦ搷浣滃垪閲岄潰 + List<CodeClassifyTemplateButtonVO> tableButtonVOs = buttonVOS.stream().filter(s -> CodeUseButtonPositionTypeEnum.TABLE.getValue().equalsIgnoreCase(s.getButtonUse())).collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(tableButtonVOs)) { + UITableFieldVO optionFieldVO = new UITableFieldVO(); + optionFieldVO.setField("options"); + optionFieldVO.setTitle("鎿嶄綔"); + optionFieldVO.setFieldType("text"); + optionFieldVO.setOptionField(true); + List<KeyValue> buttons = new ArrayList<>(); + Map<String, String> optionJsMap = new HashMap<>(); + tableButtonVOs.stream().forEach(buttonVO -> { + KeyValue kv = new KeyValue(); + kv.setKey(buttonVO.getId()); + kv.setValue(buttonVO.getClassifyButtonOidName()); + kv.setAttributes(VciBaseUtil.objectToMap(buttonVO)); + buttons.add(kv); + optionJsMap.put(buttonVO.getId(), buttonVO.getButtonVO().getExecuteJs()); + }); + optionFieldVO.setOptionJsMap(optionJsMap); + uiInfoVO.getTableDefineVO().getCols().get(0).add(optionFieldVO); + } + } + return uiInfoVO; + } - /** - * 浣跨敤鍒嗙被鐨勭紪鍙疯矾寰勶紝鑾峰彇琛ㄦ牸鐨勭浉鍏冲畾涔� - * - * @param codeClassifyIdPath 鍒嗙被鐨勭紪鍙疯矾寰勶紝蹇呴』鏄粠椤跺眰鑺傜偣寮�濮嬶紝xxx/yy/zz杩欐牱鐨勬牸寮� - * @param functionId 鍔熻兘鐨勭紪鍙� - * @return UI鐩稿叧鐨勪俊鎭紙浠呭寘鍚〃鏍�) - */ - @Override - public MdmUIInfoVO getUIInfoByClassifyIdPath(String codeClassifyIdPath, String functionId) { - CodeClassifyVO classifyVO = classifyService.getObjectByIdPath(codeClassifyIdPath); - if (classifyVO != null) { - return getUIInfoByClassifyOid(classifyVO.getOid(), functionId); - } - return null; - } + /** + * 浣跨敤鍒嗙被鐨勭紪鍙疯矾寰勶紝鑾峰彇琛ㄦ牸鐨勭浉鍏冲畾涔� + * + * @param codeClassifyIdPath 鍒嗙被鐨勭紪鍙疯矾寰勶紝蹇呴』鏄粠椤跺眰鑺傜偣寮�濮嬶紝xxx/yy/zz杩欐牱鐨勬牸寮� + * @param functionId 鍔熻兘鐨勭紪鍙� + * @return UI鐩稿叧鐨勪俊鎭紙浠呭寘鍚〃鏍�) + */ + @Override + public MdmUIInfoVO getUIInfoByClassifyIdPath(String codeClassifyIdPath, String functionId) { + CodeClassifyVO classifyVO = classifyService.getObjectByIdPath(codeClassifyIdPath); + if (classifyVO != null) { + return getUIInfoByClassifyOid(classifyVO.getOid(), functionId); + } + return null; + } - /** - * 浣跨敤鍒嗙被涓婚敭鑾峰彇椤甸潰鐨勫唴瀹癸紝鍖呭惈鎸夐挳 - * - * @param codeClassifyOid 涓婚搴撳垎绫讳富閿� - * @param functionId 鍔熻兘鐨勭紪鍙� - * @return UI鐩稿叧鐨勫唴瀹� - */ - @Override - public MdmUIInfoVO getUIInfoByClassifyOid(String codeClassifyOid, String functionId) { - VciBaseUtil.alertNotNull(codeClassifyOid, "涓婚搴撳垎绫讳富閿�"); + /** + * 浣跨敤鍒嗙被涓婚敭鑾峰彇椤甸潰鐨勫唴瀹癸紝鍖呭惈鎸夐挳 + * + * @param codeClassifyOid 涓婚搴撳垎绫讳富閿� + * @param functionId 鍔熻兘鐨勭紪鍙� + * @return UI鐩稿叧鐨勫唴瀹� + */ + @Override + public MdmUIInfoVO getUIInfoByClassifyOid(String codeClassifyOid, String functionId) { + VciBaseUtil.alertNotNull(codeClassifyOid, "涓婚搴撳垎绫讳富閿�"); + MdmUIInfoVO uiInfoVO = getTableDefineByTemplateVO(getUsedTemplateByClassifyOid(codeClassifyOid)); + uiInfoVO.setLeaf(classifyService.countChildrenByClassifyOid(codeClassifyOid) == 0); + if (StringUtils.isNotBlank(functionId) && !"~".equalsIgnoreCase(functionId)) { + // TODO:2024-1-25 18:42妯℃澘涓婄殑btmtypeid鏈夋椂鍊欎細瀛樺湪澶у皬鍐欑殑闂锛屾寜鐞嗘潵璇磋繖鍎跨洿鎺ョ敤functionId灏辫兘婊¤冻鏌ヨ鑿滃崟鎸夐挳浜唘iInfoVO.getTemplateVO().getBtmTypeId() + R<List<Menu>> buttonListR = iSysClient.getMenuButtonByType(codeClassifyOid, functionId, "data_auth"); + if(!buttonListR.isSuccess()){ + throw new ServiceException("鑾峰彇鎸夐挳鎺堟潈鍒楄〃澶辫触锛屽師鍥狅細"+buttonListR.getMsg()); + } + List<Menu> buttonVOS = buttonListR.getData(); - MdmUIInfoVO uiInfoVO = getTableDefineByTemplateVO(getUsedTemplateByClassifyOid(codeClassifyOid)); - uiInfoVO.setLeaf(classifyService.countChildrenByClassifyOid(codeClassifyOid) == 0); - if (StringUtils.isNotBlank(functionId) && !"~".equalsIgnoreCase(functionId)) { - List<Menu> buttonVOS = iSysClient.getMenuButtonByType(uiInfoVO.getTemplateVO().getBtmTypeId()).getData(); - // List<SmOperationVO> operationVOS = operationService.listButtonByFunctionId(functionId); - // if (operationVOS == null) { - // operationVOS = new ArrayList<>(); - // } - // //鏌ヨ鎵╁睍鎸夐挳 - // List<CodeButtonVO> buttonVOS = listButtonInToolbarByClassifyOid(codeClassifyOid); - List<SmOperationVO> operationVOS = new ArrayList<>(); - if (!CollectionUtils.isEmpty(buttonVOS)) { - for (int i = 0; i < buttonVOS.size(); i++) { - Menu buttonVO = buttonVOS.get(i); - SmOperationVO operationVO = new SmOperationVO(); - operationVO.setModuleNo(functionId); - operationVO.setUniqueFlag(buttonVO.getCode()); - operationVO.setName(buttonVO.getName()); - operationVO.setAlias(buttonVO.getAlias()); - operationVO.setOrderNo(String.valueOf(buttonVO.getSort())); + List<SmOperationVO> operationVOS = new ArrayList<>(); + if (!CollectionUtils.isEmpty(buttonVOS)) { + for (int i = 0; i < buttonVOS.size(); i++) { + Menu buttonVO = buttonVOS.get(i); + SmOperationVO operationVO = new SmOperationVO(); + operationVO.setModuleNo(functionId); + operationVO.setUniqueFlag(buttonVO.getCode()); + operationVO.setName(buttonVO.getName()); + operationVO.setAlias(buttonVO.getAlias()); + operationVO.setOrderNo(String.valueOf(buttonVO.getSort())); // operationVO.setExecuteJs(buttonVO.getExecuteJs()); // operationVO.setIconCls(buttonVO.getIconCls()); - operationVOS.add(operationVO); - } - } - uiInfoVO.setButtons(operationVOS); - } - return uiInfoVO; - } + operationVOS.add(operationVO); + } + } + uiInfoVO.setButtons(operationVOS); + } + return uiInfoVO; + } - @Override - public MdmUIInfoVO getFlowUIInfoByClassifyOid(String codeClassifyOid, String functionId,String templateId,String taskId,String modelKey){ + @Override + public MdmUIInfoVO getFlowUIInfoByClassifyOid(String codeClassifyOid, String functionId, String templateId, String taskId, String modelKey) { // MdmUIInfoVO uiInfoVO = getTableDefineByClassifyOid_v2(codeClassifyOid,templateId,taskId,modelKey); MdmUIInfoVO uiInfoVO = getTableDefineByTemplateVO(getUsedTemplateByClassifyOid(codeClassifyOid)); - R<List<ProcessStageAttrVO>> r = imdmiFlowAttrClient.ssslist(templateId,modelKey,taskId); + R<List<ProcessStageAttrVO>> r = imdmiFlowAttrClient.ssslist(templateId, modelKey, taskId); List<ProcessStageAttrVO> stageAttrVOS = r.getData(); Set<String> attrSet = new HashSet<>(); - stageAttrVOS.stream().forEach(attr->{ + stageAttrVOS.stream().forEach(attr -> { attrSet.add(attr.getAttrId()); }); @@ -3493,67 +4036,67 @@ UITableDefineVO tableDefineVO = uiInfoVO.getTableDefineVO(); List<List<UITableFieldVO>> tableFieldVOs = tableDefineVO.getCols(); List<UITableFieldVO> uiTableFieldVOS = tableFieldVOs.get(0); - uiTableFieldVOS.stream().forEach(ui->{ + uiTableFieldVOS.stream().forEach(ui -> { // if(!attrSet.contains(ui.getField())){ // ui.setEdit(null); // ui.setEditConfig(null); // } }); - }catch (Exception e){ + } catch (Exception e) { throw new ServiceException("妯℃澘娌℃湁瀹氫箟灞炴�э紝璇诲彇琛ㄥご澶辫触!"); } return uiInfoVO; } - /** - * 浣跨敤鍒嗙被涓婚敭鑾峰彇宸ュ叿鏍忎腑鐨勬寜閽俊鎭� - * - * @param codeClassifyOid 鍒嗙被鐨勪富閿� - * @return 鎸夐挳鐨勪俊鎭紝浼氭寜鐓ф帓搴忓彿杩涜鎺掑簭 - */ - @Override - public List<CodeButtonVO> listButtonInToolbarByClassifyOid(String codeClassifyOid) { - CodeClassifyTemplateVO templateVO = getUsedTemplateByClassifyOid(codeClassifyOid); - return listButtonInToolbarByTemplateOid(templateVO.getOid()); - } + /** + * 浣跨敤鍒嗙被涓婚敭鑾峰彇宸ュ叿鏍忎腑鐨勬寜閽俊鎭� + * + * @param codeClassifyOid 鍒嗙被鐨勪富閿� + * @return 鎸夐挳鐨勪俊鎭紝浼氭寜鐓ф帓搴忓彿杩涜鎺掑簭 + */ + @Override + public List<CodeButtonVO> listButtonInToolbarByClassifyOid(String codeClassifyOid) { + CodeClassifyTemplateVO templateVO = getUsedTemplateByClassifyOid(codeClassifyOid); + return listButtonInToolbarByTemplateOid(templateVO.getOid()); + } - /** - * 浣跨敤妯℃澘涓婚敭鑾峰彇宸ュ叿鏍忎腑鐨勬寜閽俊鎭� - * - * @param templateOid 妯℃澘鐨勪富閿� - * @return 鎸夐挳鐨勪俊鎭紝浼氭寜鐓ф帓搴忓彿杩涜鎺掑簭 - */ - @Override - public List<CodeButtonVO> listButtonInToolbarByTemplateOid(String templateOid) { - List<CodeClassifyTemplateButtonVO> buttonVOS = templateButtonService.listButtonByTemplateOid(templateOid, true); - if (CollectionUtils.isEmpty(buttonVOS)) { - return new ArrayList<>(); - } - List<CodeClassifyTemplateButtonVO> toolbarButtons = buttonVOS.stream().filter(s -> CodeUseButtonPositionTypeEnum.TOOLBAR.getValue().equalsIgnoreCase(s.getButtonUse())).collect(Collectors.toList()); - if (CollectionUtils.isEmpty(toolbarButtons)) { - return new ArrayList<>(); - } - List<CodeButtonVO> buttonVOList = new ArrayList<>(); - for (int i = 0; i < toolbarButtons.size(); i++) { - buttonVOList.add(toolbarButtons.get(i).getButtonVO()); - } - return buttonVOList; - } + /** + * 浣跨敤妯℃澘涓婚敭鑾峰彇宸ュ叿鏍忎腑鐨勬寜閽俊鎭� + * + * @param templateOid 妯℃澘鐨勪富閿� + * @return 鎸夐挳鐨勪俊鎭紝浼氭寜鐓ф帓搴忓彿杩涜鎺掑簭 + */ + @Override + public List<CodeButtonVO> listButtonInToolbarByTemplateOid(String templateOid) { + List<CodeClassifyTemplateButtonVO> buttonVOS = templateButtonService.listButtonByTemplateOid(templateOid, true); + if (CollectionUtils.isEmpty(buttonVOS)) { + return new ArrayList<>(); + } + List<CodeClassifyTemplateButtonVO> toolbarButtons = buttonVOS.stream().filter(s -> CodeUseButtonPositionTypeEnum.TOOLBAR.getValue().equalsIgnoreCase(s.getButtonUse())).collect(Collectors.toList()); + if (CollectionUtils.isEmpty(toolbarButtons)) { + return new ArrayList<>(); + } + List<CodeButtonVO> buttonVOList = new ArrayList<>(); + for (int i = 0; i < toolbarButtons.size(); i++) { + buttonVOList.add(toolbarButtons.get(i).getButtonVO()); + } + return buttonVOList; + } - /** - * 浼犲叆涓氬姟绫诲瀷浠ュ強鐩稿叧鏁版嵁杩涜鎵归噺鎻掑叆鎿嶄綔 - * - * @param btmType 涓氬姟绫诲瀷 - * @param baseModels 澶勭悊鏁版嵁 - * @return 澶勭悊鎴愬姛鏁版嵁鏉℃暟 - */ - @Override - public Integer insertBatchByType(String btmType, List<BaseModel> baseModels) { - //浣跨敤浼犲叆鐨勪笟鍔$被鍨嬫煡璇㈣〃 - R<List<BtmTypeVO>> listR = btmTypeClient.selectByIdCollection(Collections.singletonList(btmType)); - if (!listR.isSuccess() || listR.getData().size() == 0) { - throw new VciBaseException("浼犲叆涓氬姟绫诲瀷鏈煡璇㈠埌鐩稿簲琛ㄥ崟锛岃妫�鏌ワ紒"); - } + /** + * 浼犲叆涓氬姟绫诲瀷浠ュ強鐩稿叧鏁版嵁杩涜鎵归噺鎻掑叆鎿嶄綔 + * + * @param btmType 涓氬姟绫诲瀷 + * @param baseModels 澶勭悊鏁版嵁 + * @return 澶勭悊鎴愬姛鏁版嵁鏉℃暟 + */ + @Override + public Integer insertBatchByType(String btmType, List<BaseModel> baseModels) { + //浣跨敤浼犲叆鐨勪笟鍔$被鍨嬫煡璇㈣〃 + R<List<BtmTypeVO>> listR = btmTypeClient.selectByIdCollection(Collections.singletonList(btmType)); + if (!listR.isSuccess() || listR.getData().size() == 0) { + throw new VciBaseException("浼犲叆涓氬姟绫诲瀷鏈煡璇㈠埌鐩稿簲琛ㄥ崟锛岃妫�鏌ワ紒"); + } //鑾峰彇褰撳墠涓氬姟绫诲瀷鎵�鏈夊瓧娈电敤鏉ュ仛瀵规瘮 R<BtmTypeVO> allAttributeByBtmId = btmTypeClient.getAllAttributeByBtmId(btmType); if (!allAttributeByBtmId.isSuccess() || allAttributeByBtmId.getData().getAttributes().size() == 0) { @@ -3563,36 +4106,37 @@ return btmTypeAttributeVO.getId().toLowerCase(); }).collect(Collectors.toSet()); //灏哹ean杞负map,mybatis缁熶竴澶勭悊 - List<Map<String, String>> maps = new ArrayList<>(); + List<Map<String, String>> maps = new ArrayList<>(); - baseModels.stream().forEach(model -> { - try { - maps.add(VciBaseUtil.convertBean2Map(model,existFild)); - } catch (Exception e) { - throw new VciBaseException("绫诲瀷杞崲閿欒锛�" + e.toString()); - } - }); - // 鏄惁寮�鍚绾跨▼鎵ц鎻掑叆璇彞 - if(IS_THREAD_IMPORT){ + baseModels.stream().forEach(model -> { try { - threadBactchExecuteInsert(listR.getData().get(0).getTableName(),maps); - }catch (Exception e){ - throw new ServiceException("鍒嗘壒鎵цinsert璇彞鎶ラ敊:"+e.getMessage()); + maps.add(VciBaseUtil.convertBean2Map(model, existFild)); + } catch (Exception e) { + throw new VciBaseException("绫诲瀷杞崲閿欒锛�" + e.toString()); } - }else { - bacthExcecuteInsert(listR.getData().get(0).getTableName(),maps); + }); + // 鏄惁寮�鍚绾跨▼鎵ц鎻掑叆璇彞 + if (IS_THREAD_IMPORT) { + try { + threadBactchExecuteInsert(listR.getData().get(0).getTableName(), maps); + } catch (Exception e) { + throw new ServiceException("鍒嗘壒鎵цinsert璇彞鎶ラ敊:" + e.getMessage()); + } + } else { + bacthExcecuteInsert(listR.getData().get(0).getTableName(), maps); } - return maps.size(); - } + return maps.size(); + } /** * 澶氱嚎绋嬫柟寮忓垎鎵规墽琛宨nsert璇彞 + * * @param tableName * @param maps * @throws ServiceException */ - private void threadBactchExecuteInsert(String tableName, List<Map<String, String>> maps) throws ServiceException{ + private void threadBactchExecuteInsert(String tableName, List<Map<String, String>> maps) throws ServiceException { ExecutorService executor = Executors.newFixedThreadPool(THREAD_NUM); // 鍒涘缓涓�涓浐瀹氬ぇ灏忕殑绾跨▼姹� List<Map<String, String>> threadSafeMaps = new CopyOnWriteArrayList<>(maps); @@ -3605,7 +4149,7 @@ // 璋冪敤鎻掑叆鏁版嵁搴撶殑鏂规硶 commonsMapper.insertByBaseModel(tableName, threadSafeMaps.get(0), subList); }); - }catch (Throwable e){ + } catch (Throwable e) { throw new ServiceException(e.getMessage()); } } @@ -3617,16 +4161,17 @@ executor.awaitTermination(Long.MAX_VALUE, TimeUnit.NANOSECONDS); } catch (InterruptedException e) { // 澶勭悊寮傚父 - throw new ServiceException("澶氱嚎绋嬫柟寮忔墽琛屾壒閲忔彃鍏ユ椂浜х敓閿欒:"+e.getMessage()); + throw new ServiceException("澶氱嚎绋嬫柟寮忔墽琛屾壒閲忔彃鍏ユ椂浜х敓閿欒:" + e.getMessage()); } } /** * 鍗曠嚎绋嬫柟寮忓垎鎵规墽琛� + * * @param tableName * @param maps */ - private void bacthExcecuteInsert(String tableName, List<Map<String, String>> maps){ + private void bacthExcecuteInsert(String tableName, List<Map<String, String>> maps) { for (int i = 0; i < maps.size(); i += MAX_IMPORT_NUM) { final int startIndex = i; final int endIndex = Math.min(i + MAX_IMPORT_NUM, maps.size()); @@ -3640,26 +4185,26 @@ * 浼犲叆涓氬姟绫诲瀷浠ュ強ID鏌ヨ涓氬姟琛ㄦ暟鎹槸鍚﹂噸澶� * * @param btmType 涓氬姟绫诲瀷 - * @param ids 澶勭悊鏁版嵁 + * @param ids 澶勭悊鏁版嵁 * @return 鏌ヨ鍒版暟鎹殑鎬绘暟 */ - @Override - public Integer selectIdsCounts(String btmType, List<String> ids) { - //浣跨敤浼犲叆鐨勪笟鍔$被鍨嬫煡璇㈣〃 - R<List<BtmTypeVO>> listR = btmTypeClient.selectByIdCollection(Collections.singletonList(btmType)); - if (!listR.isSuccess() || listR.getData().size() == 0) { - throw new VciBaseException("浼犲叆涓氬姟绫诲瀷鏈煡璇㈠埌鐩稿簲琛ㄥ崟锛岃妫�鏌ワ紒"); - } + @Override + public Integer selectIdsCounts(String btmType, List<String> ids) { + //浣跨敤浼犲叆鐨勪笟鍔$被鍨嬫煡璇㈣〃 + R<List<BtmTypeVO>> listR = btmTypeClient.selectByIdCollection(Collections.singletonList(btmType)); + if (!listR.isSuccess() || listR.getData().size() == 0) { + throw new VciBaseException("浼犲叆涓氬姟绫诲瀷鏈煡璇㈠埌鐩稿簲琛ㄥ崟锛岃妫�鏌ワ紒"); + } return commonsMapper.queryCountBySql("select count(*) from " + - listR.getData().get(0).getTableName() + " where id in ("+ ids.stream().map(s -> "'" + s + "'").collect(Collectors.joining(",")) +")"); - } + listR.getData().get(0).getTableName() + " where id in (" + ids.stream().map(s -> "'" + s + "'").collect(Collectors.joining(",")) + ")"); + } /** * 浼犲叆涓氬姟绫诲瀷浠ュ強ID銆丱ID鏌ヨ涓氬姟琛ㄦ暟鎹槸鍚﹂噸澶� * * @param btmType 涓氬姟绫诲瀷 * @param id 澶勭悊鏁版嵁id - * @param oid 澶勭悊鏁版嵁oid + * @param oid 澶勭悊鏁版嵁oid * @return 鏌ヨ鍒版暟鎹殑鎬绘暟 */ @Override @@ -3673,152 +4218,152 @@ listR.getData().get(0).getTableName() + " where id ='" + id + "' and oid <> '" + oid + "'"); } - /** - * 浼犲叆涓氬姟绫诲瀷浠ュ強鐩竜id闆嗗悎鏌ヨ鏁版嵁杩涜杩斿洖 - * - * @param btmType 涓氬姟绫诲瀷 - * @param oids 闇�瑕佹煡璇㈢殑oid闆嗗悎 閫楀彿鍒嗗紑 - * @return 鏌ヨ鍑虹殑鏁版嵁 - */ - @Override - public List<BaseModel> selectByTypeAndOid(String btmType, String oids) { + /** + * 浼犲叆涓氬姟绫诲瀷浠ュ強鐩竜id闆嗗悎鏌ヨ鏁版嵁杩涜杩斿洖 + * + * @param btmType 涓氬姟绫诲瀷 + * @param oids 闇�瑕佹煡璇㈢殑oid闆嗗悎 閫楀彿鍒嗗紑 + * @return 鏌ヨ鍑虹殑鏁版嵁 + */ + @Override + public List<BaseModel> selectByTypeAndOid(String btmType, String oids) { - //浣跨敤浼犲叆鐨勪笟鍔$被鍨嬫煡璇㈣〃 - R<List<BtmTypeVO>> listR = btmTypeClient.selectByIdCollection(Collections.singletonList(btmType)); - if (!listR.isSuccess() || listR.getData().size() == 0) { - throw new VciBaseException("浼犲叆涓氬姟绫诲瀷鏈煡璇㈠埌鐩稿簲琛ㄥ崟锛岃妫�鏌ワ紒"); - } - //鏌ヨ鏁版嵁 - List<Map> maps = commonsMapper.selectBySql("select * from " + listR.getData().get(0).getTableName() + " where oid in (" - + VciBaseUtil.toInSql(oids.toString()) + ")"); + //浣跨敤浼犲叆鐨勪笟鍔$被鍨嬫煡璇㈣〃 + R<List<BtmTypeVO>> listR = btmTypeClient.selectByIdCollection(Collections.singletonList(btmType)); + if (!listR.isSuccess() || listR.getData().size() == 0) { + throw new VciBaseException("浼犲叆涓氬姟绫诲瀷鏈煡璇㈠埌鐩稿簲琛ㄥ崟锛岃妫�鏌ワ紒"); + } + //鏌ヨ鏁版嵁 + List<Map> maps = commonsMapper.selectBySql("select * from " + listR.getData().get(0).getTableName() + " where oid in (" + + VciBaseUtil.toInSql(oids.toString()) + ")"); - List<BaseModel> baseModels = new ArrayList<>(); - //灏嗘煡璇㈠埌鐨勬暟鎹浆鎹负basemodel锛屼娇鐢ㄧ殑鍙嶅皠鏂瑰紡鏉ヨ繘琛屽垱寤虹殑 - try { - for (Map map : maps) { - Object obj = BaseModel.class.newInstance(); - BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass()); - PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors(); - for (PropertyDescriptor property : propertyDescriptors) { - Method setter = property.getWriteMethod(); - if (setter != null) { - //oracle鐨勬椂闂翠负TIMESTAMP鐨勶紝闇�瑕佽繘琛岃浆鎹㈡垚data锛屽惁鍒欏皢鎶ラ敊 - if (map.get(property.getName().toUpperCase()) instanceof TIMESTAMP) { - LocalDateTime localDateTime = ((TIMESTAMP) map.get(property.getName().toUpperCase())).toLocalDateTime(); - ZoneId zoneId = ZoneId.systemDefault(); - ZonedDateTime zdt = localDateTime.atZone(zoneId); - Date date = Date.from(zdt.toInstant()); - setter.invoke(obj, date); - map.remove(property.getName().toUpperCase()); - } //oracle鐨勬暟瀛椾负BigDecimal鐨勶紝闇�瑕佽繘琛岃浆鎹㈡垚Integer锛屽惁鍒欏皢鎶ラ敊 - else if (map.get(property.getName().toUpperCase()) instanceof BigDecimal - && ("Integer").equals(setter.getParameterTypes()[0].getSimpleName())) { - setter.invoke(obj, ((BigDecimal) map.get(property.getName().toUpperCase())).intValue()); - map.remove(property.getName().toUpperCase()); - } else if (map.containsKey(property.getName().toUpperCase())) { - if(setter.getParameterTypes()[0].getSimpleName().equals("String")){ - setter.invoke(obj, map.get(property.getName().toUpperCase()) == null ? null:String.valueOf(map.get(property.getName().toUpperCase()))); - }else{ + List<BaseModel> baseModels = new ArrayList<>(); + //灏嗘煡璇㈠埌鐨勬暟鎹浆鎹负basemodel锛屼娇鐢ㄧ殑鍙嶅皠鏂瑰紡鏉ヨ繘琛屽垱寤虹殑 + try { + for (Map map : maps) { + Object obj = BaseModel.class.newInstance(); + BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass()); + PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors(); + for (PropertyDescriptor property : propertyDescriptors) { + Method setter = property.getWriteMethod(); + if (setter != null) { + //oracle鐨勬椂闂翠负TIMESTAMP鐨勶紝闇�瑕佽繘琛岃浆鎹㈡垚data锛屽惁鍒欏皢鎶ラ敊 + if (map.get(property.getName().toUpperCase()) instanceof TIMESTAMP) { + LocalDateTime localDateTime = ((TIMESTAMP) map.get(property.getName().toUpperCase())).toLocalDateTime(); + ZoneId zoneId = ZoneId.systemDefault(); + ZonedDateTime zdt = localDateTime.atZone(zoneId); + Date date = Date.from(zdt.toInstant()); + setter.invoke(obj, date); + map.remove(property.getName().toUpperCase()); + } //oracle鐨勬暟瀛椾负BigDecimal鐨勶紝闇�瑕佽繘琛岃浆鎹㈡垚Integer锛屽惁鍒欏皢鎶ラ敊 + else if (map.get(property.getName().toUpperCase()) instanceof BigDecimal + && ("Integer").equals(setter.getParameterTypes()[0].getSimpleName())) { + setter.invoke(obj, ((BigDecimal) map.get(property.getName().toUpperCase())).intValue()); + map.remove(property.getName().toUpperCase()); + } else if (map.containsKey(property.getName().toUpperCase())) { + if (setter.getParameterTypes()[0].getSimpleName().equals("String")) { + setter.invoke(obj, map.get(property.getName().toUpperCase()) == null ? null : String.valueOf(map.get(property.getName().toUpperCase()))); + } else { setter.invoke(obj, map.get(property.getName().toUpperCase())); } - map.remove(property.getName().toUpperCase()); - } - } - } - for (Object key : map.keySet()) { - map.put(key, map.get(key) == null ? null : String.valueOf(map.get(key))); - } + map.remove(property.getName().toUpperCase()); + } + } + } + for (Object key : map.keySet()) { + map.put(key, map.get(key) == null ? null : String.valueOf(map.get(key))); + } - ((BaseModel) obj).setData(map); - baseModels.add((BaseModel) obj); - } - } catch (Exception e) { - throw new VciBaseException("鏌ヨ澶辫触锛�" + e.getMessage()); - } - return baseModels; - } + ((BaseModel) obj).setData(map); + baseModels.add((BaseModel) obj); + } + } catch (Exception e) { + throw new VciBaseException("鏌ヨ澶辫触锛�" + e.getMessage()); + } + return baseModels; + } - /** - * 鏍规嵁涓氬姟绫诲瀷鍚嶇О鍒涘缓涓氬姟鏁版嵁婧愬璞� - * - * @param boName 涓氬姟绫诲瀷鍚嶇О - * @return 涓氬姟鏁版嵁瀵硅薄 - */ - public BaseModel createBaseModel(String boName) { - R<List<BtmTypeVO>> listR = btmTypeClient.selectByIdCollection(Collections.singletonList(boName)); - if (!listR.isSuccess() || listR.getData().size() == 0) { - throw new VciBaseException("浼犲叆涓氬姟绫诲瀷鏈煡璇㈠埌鐩稿簲琛ㄥ崟锛岃妫�鏌ワ紒"); - } + /** + * 鏍规嵁涓氬姟绫诲瀷鍚嶇О鍒涘缓涓氬姟鏁版嵁婧愬璞� + * + * @param boName 涓氬姟绫诲瀷鍚嶇О + * @return 涓氬姟鏁版嵁瀵硅薄 + */ + public BaseModel createBaseModel(String boName) { + R<List<BtmTypeVO>> listR = btmTypeClient.selectByIdCollection(Collections.singletonList(boName)); + if (!listR.isSuccess() || listR.getData().size() == 0) { + throw new VciBaseException("浼犲叆涓氬姟绫诲瀷鏈煡璇㈠埌鐩稿簲琛ㄥ崟锛岃妫�鏌ワ紒"); + } // String userName = String.valueOf(AuthUtil.getUser().getUserId()); - BaseModel bo = new BaseModel(); + BaseModel bo = new BaseModel(); // bo.setOid(VciBaseUtil.getPk()); // bo.setRevisionid(VciBaseUtil.getPk()); // bo.setNameoid(VciBaseUtil.getPk()); - bo.setBtmname(boName); - bo.setLastR("1"); - bo.setFirstR("1"); - 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()); - if (StringUtils.isNotBlank(listR.getData().get(0).getRevisionRuleId())) { - R<List<RevisionRuleVO>> revisionRuleVO = revisionRuleClient - .selectByIdCollection(Collections.singletonList(listR.getData().get(0).getRevisionRuleId().toLowerCase())); - if(revisionRuleVO.getData().size() != 0 ){ + bo.setBtmname(boName); + bo.setLastR("1"); + bo.setFirstR("1"); + bo.setFirstV("1"); + bo.setLastV("1"); + bo.setRevisionRule(listR.getData().get(0).getRevisionRuleId()); + 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())); + if (revisionRuleVO.getData().size() != 0) { bo.setRevisionValue(revisionRuleVO.getData().get(0).getStartCode()); - }else{ + } else { bo.setRevisionValue("1"); } - } - bo.setRevisionSeq(1); - bo.setVersionSeq(1); - bo.setVersionValue(getVersionValue(WebUtil.getInt(listR.getData().get(0).getVersionRule()))); - bo.setLctid(listR.getData().get(0).getLifeCycleId()); + } + bo.setRevisionSeq(1); + bo.setVersionSeq(1); + bo.setVersionValue(getVersionValue(WebUtil.getInt(listR.getData().get(0).getVersionRule()))); + bo.setLctid(listR.getData().get(0).getLifeCycleId()); // if(StringUtils.isNotBlank(listR.getData().get(0).getLifeCycleId())){ // OsLifeCycleVO lifeCycleVO = lifeService.getLifeCycleById(listR.getData().get(0).getLifeCycleId()); - bo.setLcStatus("Editing"); + bo.setLcStatus("Editing"); // } - bo.setId(""); - bo.setName(""); - bo.setDescription(""); - bo.setOwner("1"); + bo.setId(""); + bo.setName(""); + bo.setDescription(""); + bo.setOwner(AuthUtil.getUser().getUserId().toString()); // bo.setCheckinby(userName); - bo.setCopyFromVersion(""); + bo.setCopyFromVersion(""); // this.initTypeAttributeValue(bo,btmTypeVO); - return bo; - } + return bo; + } - /** - * 鑾峰彇鐗堟鐨勫�� - * - * @param verRuleName 鐗堟鐨勮鍒� - * @return 鐗堟鐨勫�硷紝娌℃湁瑙勫垯鍒欎负绌� - */ - private String getVersionValue(int verRuleName) { - if (verRuleName == 0) { - return "1"; - } else if (verRuleName == 1) { - return "a"; - } else if (verRuleName == 2) { - return "0"; - } - return ""; - } + /** + * 鑾峰彇鐗堟鐨勫�� + * + * @param verRuleName 鐗堟鐨勮鍒� + * @return 鐗堟鐨勫�硷紝娌℃湁瑙勫垯鍒欎负绌� + */ + private String getVersionValue(int verRuleName) { + if (verRuleName == 0) { + return "1"; + } else if (verRuleName == 1) { + return "a"; + } else if (verRuleName == 2) { + return "0"; + } + return ""; + } - /** - * 浼犲叆涓氬姟绫诲瀷浠ュ強鐩稿叧鏁版嵁杩涜鎵归噺鏇存柊鎿嶄綔 - * - * @param btmType 涓氬姟绫诲瀷 - * @param baseModels 澶勭悊鏁版嵁 - * @return 澶勭悊鐘舵�� - */ - @Override - public R updateBatchByBaseModel(String btmType, List<BaseModel> baseModels) { - //浣跨敤浼犲叆鐨勪笟鍔$被鍨嬫煡璇㈣〃 - R<List<BtmTypeVO>> listR = btmTypeClient.selectByIdCollection(Collections.singletonList(btmType)); - if (!listR.isSuccess() || listR.getData().size() == 0) { - throw new VciBaseException("浼犲叆涓氬姟绫诲瀷鏈煡璇㈠埌鐩稿簲琛ㄥ崟锛岃妫�鏌ワ紒"); - } + /** + * 浼犲叆涓氬姟绫诲瀷浠ュ強鐩稿叧鏁版嵁杩涜鎵归噺鏇存柊鎿嶄綔 + * + * @param btmType 涓氬姟绫诲瀷 + * @param baseModels 澶勭悊鏁版嵁 + * @return 澶勭悊鐘舵�� + */ + @Override + public R updateBatchByBaseModel(String btmType, List<BaseModel> baseModels) { + //浣跨敤浼犲叆鐨勪笟鍔$被鍨嬫煡璇㈣〃 + R<List<BtmTypeVO>> listR = btmTypeClient.selectByIdCollection(Collections.singletonList(btmType)); + if (!listR.isSuccess() || listR.getData().size() == 0) { + throw new VciBaseException("浼犲叆涓氬姟绫诲瀷鏈煡璇㈠埌鐩稿簲琛ㄥ崟锛岃妫�鏌ワ紒"); + } //鑾峰彇褰撳墠涓氬姟绫诲瀷鎵�鏈夊瓧娈电敤鏉ュ仛瀵规瘮 R<BtmTypeVO> allAttributeByBtmId = btmTypeClient.getAllAttributeByBtmId(btmType); if (!allAttributeByBtmId.isSuccess() || allAttributeByBtmId.getData().getAttributes().size() == 0) { @@ -3827,30 +4372,31 @@ Set<String> existFild = allAttributeByBtmId.getData().getAttributes().stream().map(btmTypeAttributeVO -> { return btmTypeAttributeVO.getId(); }).collect(Collectors.toSet()); - //灏哹ean杞负map,mybatis缁熶竴澶勭悊 - List<Map<String, String>> maps = new ArrayList<>(); + //灏哹ean杞负map,mybatis缁熶竴澶勭悊 + List<Map<String, String>> maps = new ArrayList<>(); - baseModels.stream().forEach(model -> { - try { - maps.add(VciBaseUtil.convertBean2Map(model,existFild)); - } catch (Exception e) { - throw new VciBaseException("绫诲瀷杞崲閿欒锛�" + e.getMessage()); - } - }); - try { - //娉ㄦ剰姝ゅ鏇存柊鎴愬姛鏄繑鍥炵殑-1 - commonsMapper.updateBatchByBaseModel(listR.getData().get(0).getTableName(), maps); - } catch (Exception e) { - return R.fail("鏇存柊澶辫触锛�" + e.getMessage()); - } + baseModels.stream().forEach(model -> { + try { + maps.add(VciBaseUtil.convertBean2Map(model, existFild)); + } catch (Exception e) { + throw new VciBaseException("绫诲瀷杞崲閿欒锛�" + e.getMessage()); + } + }); + try { + //娉ㄦ剰姝ゅ鏇存柊鎴愬姛鏄繑鍥炵殑-1 + commonsMapper.updateBatchByBaseModel(listR.getData().get(0).getTableName(), maps); + } catch (Exception e) { + return R.fail("鏇存柊澶辫触锛�" + e.getMessage()); + } - return R.success("鏇存柊鎴愬姛锛�"); - } + return R.success("鏇存柊鎴愬姛锛�"); + } + /** * 鏇存柊涓氬姟鏁版嵁鍚屾椂瀵圭爜鍊艰〃鏁版嵁鎿嶄綔鎺ュ彛 * - * @param btmType 涓氬姟绫诲瀷 - * @param baseModels 澶勭悊鏁版嵁 + * @param btmType 涓氬姟绫诲瀷 + * @param baseModels 澶勭悊鏁版嵁 * @return 澶勭悊鐘舵�� */ @Transactional(rollbackFor = VciBaseException.class) @@ -3870,28 +4416,28 @@ Set<String> existFild = allAttributeByBtmId.getData().getAttributes().stream().map(btmTypeAttributeVO -> { return btmTypeAttributeVO.getId(); }).collect(Collectors.toSet()); - if(!CollectionUtils.isEmpty(baseModels)){ - List<String> oidList=baseModels.stream().filter(data-> com.baomidou.mybatisplus.core.toolkit.StringUtils.isNotBlank(data.getOid())).map(BaseModel::getOid).distinct().collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(baseModels)) { + List<String> oidList = baseModels.stream().filter(data -> com.baomidou.mybatisplus.core.toolkit.StringUtils.isNotBlank(data.getOid())).map(BaseModel::getOid).distinct().collect(Collectors.toList()); LambdaQueryWrapper<CodeAllCode> lqw = new LambdaQueryWrapper<>(); - lqw.in(CodeAllCode::getCreateCodeOid,oidList); - List<CodeAllCode> codeAllCodeList= codeAllCodeService.selectByWrapper(lqw); + lqw.in(CodeAllCode::getCreateCodeOid, oidList); + List<CodeAllCode> codeAllCodeList = codeAllCodeService.selectByWrapper(lqw); Map<String, CodeAllCode> cboMap = codeAllCodeList.stream().filter(cbo -> cbo != null).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getCreateCodeOid(), t -> t)); - List<CodeAllCode> newCodeAllCodeList=new ArrayList<>(); + List<CodeAllCode> newCodeAllCodeList = new ArrayList<>(); //灏哹ean杞负map,mybatis缁熶竴澶勭悊 List<Map<String, String>> maps = new ArrayList<>(); try { - baseModels.stream().forEach(baseModel->{ - String oid=baseModel.getOid(); + baseModels.stream().forEach(baseModel -> { + String oid = baseModel.getOid(); try { - maps.add(VciBaseUtil.convertBean2Map(baseModel,existFild)); + maps.add(VciBaseUtil.convertBean2Map(baseModel, existFild)); } catch (Exception e) { throw new VciBaseException("绫诲瀷杞崲閿欒锛�" + e.getMessage()); } - if(cboMap.containsKey(oid)){ - CodeAllCode codeAllCode= cboMap.get(oid); + if (cboMap.containsKey(oid)) { + CodeAllCode codeAllCode = cboMap.get(oid); codeAllCode.setId(baseModel.getId()); - // codeAllCode.setLastModifier(AuthUtil.getUser().getUserName()); - codeAllCode.setLastModifier(AuthUtil.getUser().getAccount()); + // 涓绘暟鎹帹閫佸舰寮忥紝鏄嬁涓嶅埌鐢ㄦ埛淇℃伅鐨� + codeAllCode.setLastModifier(Func.isBlank(AuthUtil.getUserAccount()) ? applyCodeUserAccount:AuthUtil.getUserAccount()); codeAllCode.setLastModifyTime(new Date()); codeAllCode.setLcStatus(baseModel.getLcStatus()); newCodeAllCodeList.add(codeAllCode); @@ -3908,200 +4454,201 @@ } /** - * 鑾峰彇鍙傜収鐨勪俊鎭� - * - * @param referConfigVO 鍙傜収鐨勯厤缃� - * @return 鍒楄〃鏁版嵁 - */ - @Override - public IPage<BaseModelVO> referDataGrid(UIFormReferVO referConfigVO, BaseQueryObject baseQueryObject) throws VciBaseException { - //checkReferConfig(referConfigVO); - //浣跨敤涓氬姟绫诲瀷鏌ヨ - R<BtmTypeVO> allAttributeByBtmId = btmTypeClient.getAllAttributeByBtmId(referConfigVO.getReferType()); - if (!allAttributeByBtmId.isSuccess()) { - throw new ServiceException("涓氬姟绫诲瀷feign鎺ュ彛璋冪敤閿欒;"+allAttributeByBtmId.getMsg()); - } - if (Func.isEmpty(allAttributeByBtmId.getData())) { - throw new VciBaseException("浼犲叆涓氬姟绫诲瀷鏈煡璇㈠埌鐩稿簲琛ㄥ崟锛岃妫�鏌ワ紒"); - } - BtmTypeVO btmTypeVO = allAttributeByBtmId.getData(); - /** - * 鍔犱笂鏌ヨ鏈�鏂扮増娆� - */ - baseQueryObject.getConditionMap().put("lastr", "1"); - baseQueryObject.getConditionMap().put("lastv", "1"); - if (VciBaseUtil.containsKeyUnCaseForMap(baseQueryObject.getConditionMap(), VciQueryWrapperForDO.LC_STATUS_FIELD) && - BtmTypeLcStatusConstant.FRAME_WORK_LIFE_CYCLE_NAME.equalsIgnoreCase(btmTypeVO.getLifeCycleId())) { - baseQueryObject.getConditionMap().put(VciQueryWrapperForDO.LC_STATUS_FIELD, FrameworkDataLCStatus.ENABLED.getValue()); - } - if (VciBaseUtil.containsKeyUnCaseForMap(baseQueryObject.getConditionMap(), VciQueryWrapperForDO.LC_STATUS_FIELD) && - BtmTypeLcStatusConstant.RELEASE_LIFE_CYCLE.equalsIgnoreCase(btmTypeVO.getLifeCycleId())) { - baseQueryObject.getConditionMap().put(VciQueryWrapperForDO.LC_STATUS_FIELD, CodeDefaultLC.RELEASED.getValue()); - } + * 鑾峰彇鍙傜収鐨勪俊鎭� + * + * @param referConfigVO 鍙傜収鐨勯厤缃� + * @return 鍒楄〃鏁版嵁 + */ + @Override + public IPage<BaseModelVO> referDataGrid(UIFormReferVO referConfigVO, BaseQueryObject baseQueryObject) throws VciBaseException { + //checkReferConfig(referConfigVO); + //浣跨敤涓氬姟绫诲瀷鏌ヨ + R<BtmTypeVO> allAttributeByBtmId = btmTypeClient.getAllAttributeByBtmId(referConfigVO.getReferType()); + if (!allAttributeByBtmId.isSuccess()) { + throw new ServiceException("涓氬姟绫诲瀷feign鎺ュ彛璋冪敤閿欒;" + allAttributeByBtmId.getMsg()); + } + if (Func.isEmpty(allAttributeByBtmId.getData())) { + throw new VciBaseException("浼犲叆涓氬姟绫诲瀷鏈煡璇㈠埌鐩稿簲琛ㄥ崟锛岃妫�鏌ワ紒"); + } + BtmTypeVO btmTypeVO = allAttributeByBtmId.getData(); + /** + * 鍔犱笂鏌ヨ鏈�鏂扮増娆� + */ + baseQueryObject.getConditionMap().put("lastr", "1"); + baseQueryObject.getConditionMap().put("lastv", "1"); + if (VciBaseUtil.containsKeyUnCaseForMap(baseQueryObject.getConditionMap(), VciQueryWrapperForDO.LC_STATUS_FIELD) && + BtmTypeLcStatusConstant.FRAME_WORK_LIFE_CYCLE_NAME.equalsIgnoreCase(btmTypeVO.getLifeCycleId())) { + baseQueryObject.getConditionMap().put(VciQueryWrapperForDO.LC_STATUS_FIELD, FrameworkDataLCStatus.ENABLED.getValue()); + } + if (VciBaseUtil.containsKeyUnCaseForMap(baseQueryObject.getConditionMap(), VciQueryWrapperForDO.LC_STATUS_FIELD) && + BtmTypeLcStatusConstant.RELEASE_LIFE_CYCLE.equalsIgnoreCase(btmTypeVO.getLifeCycleId())) { + baseQueryObject.getConditionMap().put(VciQueryWrapperForDO.LC_STATUS_FIELD, CodeDefaultLC.RELEASED.getValue()); + } - R<List<BtmTypeVO>> listR = btmTypeClient.selectByIdCollection(Collections.singletonList(referConfigVO.getReferType())); - if (!listR.isSuccess()) { - throw new ServiceException(Func.isNotBlank(listR.getMsg()) ? listR.getMsg() : "涓氬姟绫诲瀷feign鎺ュ彛璋冪敤閿欒锛�"); - } - if (listR.getData().isEmpty()) { - throw new VciBaseException("浼犲叆涓氬姟绫诲瀷鏈煡璇㈠埌鐩稿簲琛ㄥ崟锛岃妫�鏌ワ紒"); - } + R<List<BtmTypeVO>> listR = btmTypeClient.selectByIdCollection(Collections.singletonList(referConfigVO.getReferType())); + if (!listR.isSuccess()) { + throw new ServiceException(Func.isNotBlank(listR.getMsg()) ? listR.getMsg() : "涓氬姟绫诲瀷feign鎺ュ彛璋冪敤閿欒锛�"); + } + if (listR.getData().isEmpty()) { + throw new VciBaseException("浼犲叆涓氬姟绫诲瀷鏈煡璇㈠埌鐩稿簲琛ㄥ崟锛岃妫�鏌ワ紒"); + } // TODO:鍙傜収閰嶇疆鐨勬ā绯婃煡璇㈣繃婊ゆ潯浠舵殏鏈鐞� - String namesql = ""; - if (StringUtils.isNotBlank(baseQueryObject.getConditionMap().get("name"))) { - String s = baseQueryObject.getConditionMap().get("name"); - s = "%" + s + "%"; - namesql = "and name like" + VciBaseUtil.toInSql(s); - } + /* String namesql = ""; + if (StringUtils.isNotBlank(baseQueryObject.getConditionMap().get("name"))) { + String s = baseQueryObject.getConditionMap().get("name"); + s = "%" + s + "%"; + namesql = "and name like" + VciBaseUtil.toInSql(s); + } - String codesql = ""; - if (StringUtils.isNotBlank(baseQueryObject.getConditionMap().get("id"))) { - String s = baseQueryObject.getConditionMap().get("id"); - s = "%" + s + "%"; - codesql = "and id like" + VciBaseUtil.toInSql(s); - } + String codesql = ""; + if (StringUtils.isNotBlank(baseQueryObject.getConditionMap().get("id"))) { + String s = baseQueryObject.getConditionMap().get("id"); + s = "%" + s + "%"; + codesql = "and id like" + VciBaseUtil.toInSql(s); + } - String lcstatusSql = ""; - if (StringUtils.isNotBlank(baseQueryObject.getConditionMap().get("lcstatus"))) { - lcstatusSql = "and lcstatus =" + VciBaseUtil.toInSql(baseQueryObject.getConditionMap().get("lcstatus")); - } -// String where = ""; + String lcstatusSql = ""; + if (StringUtils.isNotBlank(baseQueryObject.getConditionMap().get("lcstatus"))) { + lcstatusSql = "and lcstatus =" + VciBaseUtil.toInSql(baseQueryObject.getConditionMap().get("lcstatus")); + }*/ + // String where = ""; -// if (StringUtils.isNotBlank(codesql) || StringUtils.isNotBlank(lcstatusSql) || StringUtils.isNotBlank(namesql)) { -// where = "where "; -// } + // if (StringUtils.isNotBlank(codesql) || StringUtils.isNotBlank(lcstatusSql) || StringUtils.isNotBlank(namesql)) { + // where = "where "; + // } + String whereSqlByMap = UBCSCondition.getWhereSqlByMap(baseQueryObject.getConditionMap()); - String num1 = baseQueryObject.getPage() * baseQueryObject.getLimit() + ""; - String num2 = ((baseQueryObject.getPage()) - 1) * baseQueryObject.getLimit() + 1 + ""; + String num1 = baseQueryObject.getPage() * baseQueryObject.getLimit() + ""; + String num2 = ((baseQueryObject.getPage()) - 1) * baseQueryObject.getLimit() + 1 + ""; - List<Map> maps = commonsMapper.selectBySql("select * from ( select rownum rn, t.* from (select * from " + listR.getData().get(0).getTableName() + SPACE - + (StringUtils.isNotBlank(listR.getData().get(0).getRevisionRuleId()) ? (" where lastr = " + VciBaseUtil.toInSql(baseQueryObject.getConditionMap().get("lastr").toString()) - + " and lastv =" + VciBaseUtil.toInSql(baseQueryObject.getConditionMap().get("lastv").toString())) + " and" : "where") + SPACE + "1=1 " - + lcstatusSql + namesql + codesql + ") t "+ (baseQueryObject.getLimit()==-1?")": ("where rownum <=" + num1 + ") where rn >=" + num2) + List<Map> maps = commonsMapper.selectBySql("select * from (select rownum rn, t.* from (select * from " + listR.getData().get(0).getTableName() + SPACE + + (StringUtils.isNotBlank(listR.getData().get(0).getRevisionRuleId()) ? (" where lastr = " + VciBaseUtil.toInSql(baseQueryObject.getConditionMap().get("lastr").toString()) + + " and lastv =" + VciBaseUtil.toInSql(baseQueryObject.getConditionMap().get("lastv").toString())) + " and" : "where") + SPACE + "1=1 " + + (Func.isNotBlank(whereSqlByMap) ? "and " + whereSqlByMap : "") + ") t " + (baseQueryObject.getLimit() == -1 ? ")" : ("where rownum <=" + num1 + ") where rn >=" + num2) )); - List<BaseModel> baseModels = new ArrayList<>(); - //灏嗘煡璇㈠埌鐨勬暟鎹浆鎹负basemodel锛屼娇鐢ㄧ殑鍙嶅皠鏂瑰紡鏉ヨ繘琛屽垱寤虹殑 - try { - for (Map map : maps) { - Object obj = BaseModel.class.newInstance(); - BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass()); - PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors(); - for (PropertyDescriptor property : propertyDescriptors) { - Method setter = property.getWriteMethod(); - if (setter != null) { - //oracle鐨勬椂闂翠负TIMESTAMP鐨勶紝闇�瑕佽繘琛岃浆鎹㈡垚data锛屽惁鍒欏皢鎶ラ敊 - if (map.get(property.getName().toUpperCase()) instanceof TIMESTAMP) { - LocalDateTime localDateTime = ((TIMESTAMP) map.get(property.getName().toUpperCase())).toLocalDateTime(); - ZoneId zoneId = ZoneId.systemDefault(); - ZonedDateTime zdt = localDateTime.atZone(zoneId); - Date date = Date.from(zdt.toInstant()); - setter.invoke(obj, date); - //map.remove(property.getName().toUpperCase()); - } //oracle鐨勬暟瀛椾负BigDecimal鐨勶紝闇�瑕佽繘琛岃浆鎹㈡垚Integer锛屽惁鍒欏皢鎶ラ敊 - else if (map.get(property.getName().toUpperCase()) instanceof BigDecimal - && ("Integer").equals(setter.getParameterTypes()[0].getSimpleName())) { - setter.invoke(obj, ((BigDecimal) map.get(property.getName().toUpperCase())).intValue()); - //map.remove(property.getName().toUpperCase()); - } else if (map.get(property.getName().toUpperCase()) != null) { - if(setter.getParameterTypes()[0].getSimpleName().equals("String")){ - setter.invoke(obj, map.get(property.getName().toUpperCase()) == null ? null:String.valueOf(map.get(property.getName().toUpperCase()))); - }else{ + List<BaseModel> baseModels = new ArrayList<>(); + //灏嗘煡璇㈠埌鐨勬暟鎹浆鎹负basemodel锛屼娇鐢ㄧ殑鍙嶅皠鏂瑰紡鏉ヨ繘琛屽垱寤虹殑 + try { + for (Map map : maps) { + Object obj = BaseModel.class.newInstance(); + BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass()); + PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors(); + for (PropertyDescriptor property : propertyDescriptors) { + Method setter = property.getWriteMethod(); + if (setter != null) { + //oracle鐨勬椂闂翠负TIMESTAMP鐨勶紝闇�瑕佽繘琛岃浆鎹㈡垚data锛屽惁鍒欏皢鎶ラ敊 + if (map.get(property.getName().toUpperCase()) instanceof TIMESTAMP) { + LocalDateTime localDateTime = ((TIMESTAMP) map.get(property.getName().toUpperCase())).toLocalDateTime(); + ZoneId zoneId = ZoneId.systemDefault(); + ZonedDateTime zdt = localDateTime.atZone(zoneId); + Date date = Date.from(zdt.toInstant()); + setter.invoke(obj, date); + //map.remove(property.getName().toUpperCase()); + } //oracle鐨勬暟瀛椾负BigDecimal鐨勶紝闇�瑕佽繘琛岃浆鎹㈡垚Integer锛屽惁鍒欏皢鎶ラ敊 + else if (map.get(property.getName().toUpperCase()) instanceof BigDecimal + && ("Integer").equals(setter.getParameterTypes()[0].getSimpleName())) { + setter.invoke(obj, ((BigDecimal) map.get(property.getName().toUpperCase())).intValue()); + //map.remove(property.getName().toUpperCase()); + } else if (map.get(property.getName().toUpperCase()) != null) { + if (setter.getParameterTypes()[0].getSimpleName().equals("String")) { + setter.invoke(obj, map.get(property.getName().toUpperCase()) == null ? null : String.valueOf(map.get(property.getName().toUpperCase()))); + } else { setter.invoke(obj, map.get(property.getName().toUpperCase())); } - //map.remove(property.getName().toUpperCase()); - } - } - } - for (Object key : map.keySet()) { - map.put(key, String.valueOf(map.get(key))); - } + //map.remove(property.getName().toUpperCase()); + } + } + } + for (Object key : map.keySet()) { + map.put(key, String.valueOf(map.get(key))); + } Map<String, String> newMap = new HashMap<>(); map.forEach((key, value) -> newMap.put(String.valueOf(key).toLowerCase(), String.valueOf(value))); ((BaseModel) obj).setData(newMap); - baseModels.add((BaseModel) obj); - } - } catch (Exception e) { - throw new VciBaseException("鏌ヨ澶辫触锛�" + e.getMessage()); - } - int total = commonsMapper.queryCountBySql("select count(*) from " + listR.getData().get(0).getTableName() + SPACE - + (StringUtils.isNotBlank(listR.getData().get(0).getRevisionRuleId()) ? (" where lastr = " + VciBaseUtil.toInSql(baseQueryObject.getConditionMap().get("lastr").toString()) - + "and lastv = " + VciBaseUtil.toInSql(baseQueryObject.getConditionMap().get("lastv").toString())) + " and" : "where") + SPACE + "1=1 " - + lcstatusSql + namesql + codesql - ); - IPage<BaseModelVO> objectDataGrid = new Page<>(); - objectDataGrid.setPages(baseQueryObject.getPage()); - objectDataGrid.setCurrent(baseQueryObject.getPage()); - objectDataGrid.setRecords(BaseMdodelWrapper.build().listVO(baseModels)); - objectDataGrid.setSize(baseQueryObject.getLimit()); - objectDataGrid.setTotal(total); - return objectDataGrid; - } + baseModels.add((BaseModel) obj); + } + } catch (Exception e) { + throw new VciBaseException("鏌ヨ澶辫触锛�" + e.getMessage()); + } + int total = commonsMapper.queryCountBySql("select count(*) from " + listR.getData().get(0).getTableName() + SPACE + + (StringUtils.isNotBlank(listR.getData().get(0).getRevisionRuleId()) ? (" where lastr = " + VciBaseUtil.toInSql(baseQueryObject.getConditionMap().get("lastr").toString()) + + "and lastv = " + VciBaseUtil.toInSql(baseQueryObject.getConditionMap().get("lastv").toString())) + " and" : "where") + SPACE + "1=1 " + + (Func.isNotBlank(whereSqlByMap) ? "and " + whereSqlByMap : "") + ); + IPage<BaseModelVO> objectDataGrid = new Page<>(); + objectDataGrid.setPages(baseQueryObject.getPage()); + objectDataGrid.setCurrent(baseQueryObject.getPage()); + objectDataGrid.setRecords(BaseMdodelWrapper.build().listVO(baseModels)); + objectDataGrid.setSize(baseQueryObject.getLimit()); + objectDataGrid.setTotal(total); + return objectDataGrid; + } - /** - * 鑾峰彇鏍戝舰鐨勫弬鐓� - * - * @param referConfigVO 鍙傜収鐨勯厤缃� - * @return 鏍戝舰鐨勬暟鎹� - */ - @Override - public List<Tree> referTree(UIFormReferVO referConfigVO, TreeQueryObject queryObject) { - if (queryObject.getConditionMap() == null) { - queryObject.setConditionMap(new HashMap<>()); - } + /** + * 鑾峰彇鏍戝舰鐨勫弬鐓� + * + * @param referConfigVO 鍙傜収鐨勯厤缃� + * @return 鏍戝舰鐨勬暟鎹� + */ + @Override + public List<Tree> referTree(UIFormReferVO referConfigVO, TreeQueryObject queryObject) { + if (queryObject.getConditionMap() == null) { + queryObject.setConditionMap(new HashMap<>()); + } - if (queryObject.getParentOid() == null) { - LambdaQueryWrapper<CodeClassify> lqw = new LambdaQueryWrapper<>(); - String parentValue = referConfigVO.getParentValue().substring(3); - lqw.inSql(CodeClassify::getOid, parentValue); - List<String> codeClassifies = classifyService.select1(lqw); - String oid = codeClassifies.get(0); - queryObject.setParentOid(oid); - } - String oidFieldName = StringUtils.isNotBlank(referConfigVO.getParentUsedField()) ? referConfigVO.getParentUsedField() : referConfigVO.getValueField(); - if (queryObject.isQueryAllLevel()) { - String parentOidSql = ""; - if (StringUtils.isNotBlank(referConfigVO.getParentValue())) { - String temp = referConfigVO.getParentValue(); - if (temp.startsWith(QueryOptionConstant.IN)) { - temp = temp.substring((QueryOptionConstant.IN).length()).trim(); - parentOidSql = " in " + ((temp.startsWith("(") && temp.endsWith(")")) ? temp : "(" + temp + ")"); - } else if (temp.startsWith(QueryOptionConstant.NOTIN)) { - parentOidSql = " not in " + ((temp.startsWith("(") && temp.endsWith(")")) ? temp : "(" + temp + ")"); - } else if (temp.startsWith(QueryOptionConstant.NOTEQUAL)) { - temp = temp.substring((QueryOptionConstant.NOTEQUAL).length()).trim(); - parentOidSql = QueryOptionConstant.NOTEQUAL + " " + ((temp.startsWith("'") && temp.endsWith("'")) ? temp : "'" + temp + "'"); - } else if (temp.startsWith(QueryOptionConstant.MORETHAN)) { - temp = temp.substring((QueryOptionConstant.MORETHAN).length()).trim(); - parentOidSql = QueryOptionConstant.MORETHAN + " " + ((temp.startsWith("'") && temp.endsWith("'")) ? temp : "'" + temp + "'"); - } else if (temp.startsWith(QueryOptionConstant.MORE)) { - temp = temp.substring((QueryOptionConstant.MORE).length()).trim(); - parentOidSql = QueryOptionConstant.MORE + " " + ((temp.startsWith("'") && temp.endsWith("'")) ? temp : "'" + temp + "'"); - } else if (temp.startsWith(QueryOptionConstant.LESSTHAN)) { - temp = temp.substring((QueryOptionConstant.LESSTHAN).length()).trim(); - parentOidSql = QueryOptionConstant.LESSTHAN + " " + ((temp.startsWith("'") && temp.endsWith("'")) ? temp : "'" + temp + "'"); - } else if (temp.startsWith(QueryOptionConstant.LESS)) { - temp = temp.substring((QueryOptionConstant.LESS).length()).trim(); - parentOidSql = QueryOptionConstant.LESS + " " + ((temp.startsWith("'") && temp.endsWith("'")) ? temp : "'" + temp + "'"); - } else if (temp.startsWith(QueryOptionConstant.ISNOTNULL)) { - parentOidSql = " is not null"; - } else if (temp.startsWith(QueryOptionConstant.ISNULL)) { - parentOidSql = " is null"; - } else if (temp.contains("*")) { - parentOidSql = " like " + ((temp.startsWith("'") && temp.endsWith("'")) ? temp : "'" + temp + "'").replace("*", "%"); - } else { - parentOidSql = " = " + ((temp.startsWith("'") && temp.endsWith("'")) ? temp : "'" + temp + "'"); - } + if (queryObject.getParentOid() == null) { + LambdaQueryWrapper<CodeClassify> lqw = new LambdaQueryWrapper<>(); + String parentValue = referConfigVO.getParentValue().substring(3); + lqw.inSql(CodeClassify::getOid, parentValue); + List<String> codeClassifies = classifyService.select1(lqw); + String oid = codeClassifies.get(0); + queryObject.setParentOid(oid); + } + String oidFieldName = StringUtils.isNotBlank(referConfigVO.getParentUsedField()) ? referConfigVO.getParentUsedField() : referConfigVO.getValueField(); + if (queryObject.isQueryAllLevel()) { + String parentOidSql = ""; + if (StringUtils.isNotBlank(referConfigVO.getParentValue())) { + String temp = referConfigVO.getParentValue(); + if (temp.startsWith(QueryOptionConstant.IN)) { + temp = temp.substring((QueryOptionConstant.IN).length()).trim(); + parentOidSql = " in " + ((temp.startsWith("(") && temp.endsWith(")")) ? temp : "(" + temp + ")"); + } else if (temp.startsWith(QueryOptionConstant.NOTIN)) { + parentOidSql = " not in " + ((temp.startsWith("(") && temp.endsWith(")")) ? temp : "(" + temp + ")"); + } else if (temp.startsWith(QueryOptionConstant.NOTEQUAL)) { + temp = temp.substring((QueryOptionConstant.NOTEQUAL).length()).trim(); + parentOidSql = QueryOptionConstant.NOTEQUAL + " " + ((temp.startsWith("'") && temp.endsWith("'")) ? temp : "'" + temp + "'"); + } else if (temp.startsWith(QueryOptionConstant.MORETHAN)) { + temp = temp.substring((QueryOptionConstant.MORETHAN).length()).trim(); + parentOidSql = QueryOptionConstant.MORETHAN + " " + ((temp.startsWith("'") && temp.endsWith("'")) ? temp : "'" + temp + "'"); + } else if (temp.startsWith(QueryOptionConstant.MORE)) { + temp = temp.substring((QueryOptionConstant.MORE).length()).trim(); + parentOidSql = QueryOptionConstant.MORE + " " + ((temp.startsWith("'") && temp.endsWith("'")) ? temp : "'" + temp + "'"); + } else if (temp.startsWith(QueryOptionConstant.LESSTHAN)) { + temp = temp.substring((QueryOptionConstant.LESSTHAN).length()).trim(); + parentOidSql = QueryOptionConstant.LESSTHAN + " " + ((temp.startsWith("'") && temp.endsWith("'")) ? temp : "'" + temp + "'"); + } else if (temp.startsWith(QueryOptionConstant.LESS)) { + temp = temp.substring((QueryOptionConstant.LESS).length()).trim(); + parentOidSql = QueryOptionConstant.LESS + " " + ((temp.startsWith("'") && temp.endsWith("'")) ? temp : "'" + temp + "'"); + } else if (temp.startsWith(QueryOptionConstant.ISNOTNULL)) { + parentOidSql = " is not null"; + } else if (temp.startsWith(QueryOptionConstant.ISNULL)) { + parentOidSql = " is null"; + } else if (temp.contains("*")) { + parentOidSql = " like " + ((temp.startsWith("'") && temp.endsWith("'")) ? temp : "'" + temp + "'").replace("*", "%"); + } else { + parentOidSql = " = " + ((temp.startsWith("'") && temp.endsWith("'")) ? temp : "'" + temp + "'"); + } - } - //鏌ヨ鍏ㄩ儴鐨勪俊鎭� - queryObject.getConditionMap().put("oid", QueryOptionConstant.IN + "(select oid from " + - getTableName(referConfigVO.getReferType()) + - " START WITH " + referConfigVO.getParentFieldName() + " " + - parentOidSql + - " CONNECT BY PRIOR " + oidFieldName + " = " + referConfigVO.getParentFieldName() + ")"); - } else { - if (StringUtils.isNotBlank(referConfigVO.getParentFieldName()) && StringUtils.isNotBlank(queryObject.getParentOid())) { - queryObject.getConditionMap().put(referConfigVO.getParentFieldName(), queryObject.getParentOid()); + } + //鏌ヨ鍏ㄩ儴鐨勪俊鎭� + queryObject.getConditionMap().put("oid", QueryOptionConstant.IN + "(select oid from " + + getTableName(referConfigVO.getReferType()) + + " START WITH " + referConfigVO.getParentFieldName() + " " + + parentOidSql + + " CONNECT BY PRIOR " + oidFieldName + " = " + referConfigVO.getParentFieldName() + ")"); + } else { + if (StringUtils.isNotBlank(referConfigVO.getParentFieldName()) && StringUtils.isNotBlank(queryObject.getParentOid())) { + queryObject.getConditionMap().put(referConfigVO.getParentFieldName(), queryObject.getParentOid()); //鏌ヨ鍏ㄩ儴鐨勪俊鎭� String parentOidSql = ""; if (StringUtils.isNotBlank(referConfigVO.getParentValue())) { @@ -4144,100 +4691,108 @@ parentOidSql + " CONNECT BY PRIOR " + oidFieldName + " = " + referConfigVO.getParentFieldName() + ")"); } - } - LambdaQueryWrapper<CodeClassify> lqw = new LambdaQueryWrapper<>(); - String sql = queryObject.getConditionMap().get("oid").substring(3); - lqw.inSql(CodeClassify::getOid, sql); - List<CodeClassify> codeClassifies = classifyService.selectByWrapper(lqw); - TreeWrapperOptions treeWrapperOptions = new TreeWrapperOptions(referConfigVO.getParentFieldName()); - treeWrapperOptions.setOidFieldName(oidFieldName); - treeWrapperOptions.setTextFieldName(referConfigVO.getTextField()); - treeWrapperOptions.setMultipleSelect(referConfigVO.isMuti()); - treeWrapperOptions.setParentOid(queryObject.getParentOid()); - return revisionModelUtil.doList2Trees(codeClassifies, treeWrapperOptions, null); - } + } + LambdaQueryWrapper<CodeClassify> lqw = new LambdaQueryWrapper<>(); + String sql = queryObject.getConditionMap().get("oid").substring(3); + lqw.inSql(CodeClassify::getOid, sql); + List<CodeClassify> codeClassifies = classifyService.selectByWrapper(lqw); + TreeWrapperOptions treeWrapperOptions = new TreeWrapperOptions(referConfigVO.getParentFieldName()); + treeWrapperOptions.setOidFieldName(oidFieldName); + treeWrapperOptions.setTextFieldName(referConfigVO.getTextField()); + treeWrapperOptions.setMultipleSelect(referConfigVO.isMuti()); + treeWrapperOptions.setParentOid(queryObject.getParentOid()); + return revisionModelUtil.doList2Trees(codeClassifies, treeWrapperOptions, null); + } - @Override - public boolean checkUnAttrUnEdit(String attrName) { - return (VciQueryWrapperForDO.OID_FIELD.equalsIgnoreCase(attrName) - || "ts".equalsIgnoreCase(attrName) - || "lastmodifier".equalsIgnoreCase(attrName) - || "lastmodifytime".equalsIgnoreCase(attrName) - || "createtime".equalsIgnoreCase(attrName) - || "checkintime".equalsIgnoreCase(attrName) - || "checkouttime".equalsIgnoreCase(attrName)); - } + @Override + public boolean checkUnAttrUnEdit(String attrName) { + return (VciQueryWrapperForDO.OID_FIELD.equalsIgnoreCase(attrName) + || "ts".equalsIgnoreCase(attrName) + || "lastmodifier".equalsIgnoreCase(attrName) + || "lastmodifytime".equalsIgnoreCase(attrName) + || "createtime".equalsIgnoreCase(attrName) + || "checkintime".equalsIgnoreCase(attrName) + || "checkouttime".equalsIgnoreCase(attrName)); + } - private String getTableName(String refertype) { - if ("codeclassify".equals(refertype)) { - return "pl_code_classify"; - } - if ("table".equals(refertype)) { - return "pl_code_test_table"; - } - if ("testBtmType".equals(refertype)) { - return "PLBT_code_testBtmType"; - } + private String getTableName(String refertype) { + if ("codeclassify".equals(refertype)) { + return "pl_code_classify"; + } + if ("table".equals(refertype)) { + return "pl_code_test_table"; + } + if ("testBtmType".equals(refertype)) { + return "PLBT_code_testBtmType"; + } - return "pl_code_" + refertype.trim().toLowerCase(); - } + return "pl_code_" + refertype.trim().toLowerCase(); + } - public BaseModel reviseBusinessObject(BaseModel fromBo) { - BaseModel toBo = new BaseModel(); - toBo.setOid(VciBaseUtil.getPk()); - toBo.setRevisionOid(VciBaseUtil.getPk()); - toBo.setNameOid(fromBo.getNameOid()); - toBo.setBtmname(fromBo.getBtmname()); - toBo.setLastR(String.valueOf(1)); + public BaseModel reviseBusinessObject(BaseModel fromBo) { + BaseModel toBo = new BaseModel(); + toBo.setOid(VciBaseUtil.getPk()); + toBo.setRevisionOid(VciBaseUtil.getPk()); + toBo.setNameOid(fromBo.getNameOid()); + toBo.setBtmname(fromBo.getBtmname()); + toBo.setLastR(String.valueOf(1)); // 鍗囩増灏咶irstR淇敼涓�0 - toBo.setFirstR(String.valueOf(0)); - toBo.setFirstV(String.valueOf(1)); - toBo.setLastV(String.valueOf(1)); + toBo.setFirstR(String.valueOf(0)); + toBo.setFirstV(String.valueOf(1)); + toBo.setLastV(String.valueOf(1)); // 鏁版嵁鍗囩増涓嶉渶瑕侀噸鏂拌缃垱寤轰汉锛屽彧瀵规渶鍚庝慨鏀逛汉鍋氭洿鏂板氨鍙互浜� - //toBo.setCreator(String.valueOf(AuthUtil.getUser().getUserId())); - toBo.setCreateTime(fromBo.getCreateTime()); - // toBo.setLastModifier(String.valueOf(AuthUtil.getUser().getUserId())); + //toBo.setCreator(String.valueOf(AuthUtil.getUser().getUserId())); + toBo.setCreateTime(fromBo.getCreateTime()); + // toBo.setLastModifier(String.valueOf(AuthUtil.getUser().getUserId())); toBo.setLastModifier(String.valueOf(AuthUtil.getUser().getAccount())); - toBo.setLastModifyTime(new Date()); - toBo.setRevisionRule(fromBo.getRevisionRule()); - toBo.setVersionRule(fromBo.getVersionRule()); + toBo.setLastModifyTime(new Date()); + toBo.setRevisionRule(fromBo.getRevisionRule()); + toBo.setVersionRule(fromBo.getVersionRule()); //鏌ヨ涓氬姟绫诲瀷淇℃伅锛屽彲浠ヨ幏鍙栧埌鐗堟湰瑙勫垯淇℃伅锛坮evisionRuleId锛� R<List<BtmTypeVO>> listR = btmTypeClient.selectByIdCollection(Collections.singletonList(fromBo.getBtmname())); - if (!listR.isSuccess() || listR.getData().size() == 0) { - throw new VciBaseException("浼犲叆涓氬姟绫诲瀷鏈煡璇㈠埌鐩稿簲琛ㄥ崟锛岃妫�鏌ワ紒"); - } - //Map<String, Object> nextRevision = commonsMapper.getNextRevision(listR.getData().get(0).getTableName(), fromBo.getNameOid()); + if (!listR.isSuccess() || listR.getData().size() == 0) { + throw new VciBaseException("浼犲叆涓氬姟绫诲瀷鏈煡璇㈠埌鐩稿簲琛ㄥ崟锛岃妫�鏌ワ紒"); + } + //Map<String, Object> nextRevision = commonsMapper.getNextRevision(listR.getData().get(0).getTableName(), fromBo.getNameOid()); /* TODO:杩欐槸涓�涓緟鍚庢湡瀹屽杽鐨勫姛鑳斤紝鐩墠瀹炵幇鏂瑰紡鏄紝鍏堟煡璇㈠嚭褰撳墠鏁版嵁鐨勫ぇ鐗堟湰瑙勫垯锛� 鐒跺悗鍐嶆煡璇笟鍔¤〃浣跨敤鐨勮鍒欑殑姝ラ暱鏄灏戠劧鍚庤绠楀嚭璇ュ崌鐗堜负澶氬皯 */ Map<String, Object> nextRevision = commonsMapper.getCurrentRevision(listR.getData().get(0).getTableName(), fromBo.getNameOid()); R<RevisionRuleVO> revisionRuleVOR = revisionRuleClient.selectById(listR.getData().get(0).getRevisionRuleId()); - String revisionval = nextRevision.get("REVISIONVAL").toString(); + String revisionval = ""; + try{ + revisionval = nextRevision.get("REVISIONVAL").toString(); + }catch (Exception e){ + throw new ServiceException("涓氬姟鏁版嵁鐗堟鍊艰幏鍙栧嚭閿�,鍘熷洜锛�" + e.getMessage()); + } + // 鏈煡璇㈠埌鐗堟湰瑙勫垯锛岄粯璁ょ洿鎺ョ粰澶х増鏈姞涓� - if(!revisionRuleVOR.isSuccess() || Func.isEmpty(revisionRuleVOR.getData())){ - revisionval = String.valueOf((Integer.parseInt(revisionval)+1)); - }else { - revisionval = String.valueOf(Integer.parseInt(revisionval)+revisionRuleVOR.getData().getSerialStep()); + if (!revisionRuleVOR.isSuccess() || Func.isEmpty(revisionRuleVOR.getData())) { + revisionval = String.valueOf((Integer.parseInt(revisionval) + 1)); + } else { + revisionval = String.valueOf(Integer.parseInt(revisionval) + revisionRuleVOR.getData().getSerialStep()); } toBo.setRevisionValue(revisionval); toBo.setRevisionSeq(Integer.parseInt(nextRevision.get("REVISIONSEQ").toString())); - toBo.setVersionSeq(Integer.valueOf(nextRevision.get("VERSIONSEQ").toString())); - toBo.setVersionValue(nextRevision.get("VERSIONVAL").toString()); - toBo.setLctid(fromBo.getLctid()); - toBo.setLcStatus("Editing"); - toBo.setId(fromBo.getId()); - toBo.setName(fromBo.getName()); - toBo.setDescription(fromBo.getDescription()); - toBo.setOwner(String.valueOf(AuthUtil.getUser().getUserId())); - toBo.setCopyFromVersion(fromBo.getOid()); - toBo.getData().putAll(fromBo.getData()); - toBo.getData().put("CHECKINBY", String.valueOf(AuthUtil.getUser().getUserId())); - return toBo; - } + toBo.setVersionSeq(Integer.valueOf(nextRevision.get("VERSIONSEQ").toString())); + toBo.setVersionValue(nextRevision.get("VERSIONVAL").toString()); + toBo.setLctid(fromBo.getLctid()); + //toBo.setLcStatus("Editing"); + toBo.setLcStatus(CodeDefaultLC.RELEASED.getValue()); + toBo.setId(fromBo.getId()); + toBo.setName(fromBo.getName()); + toBo.setDescription(fromBo.getDescription()); + toBo.setOwner(String.valueOf(AuthUtil.getUser().getUserId())); + toBo.setCopyFromVersion(fromBo.getOid()); + toBo.getData().putAll(fromBo.getData()); + toBo.getData().put("CHECKINBY", String.valueOf(AuthUtil.getUser().getUserId())); + return toBo; + } /** * 娴佺▼涓彉鏇寸姸鎬佸�� + * * @param flowDTO * @return */ @@ -4247,7 +4802,7 @@ BaseModelDTO baseModel = new BaseModelDTO(); baseModel.setOid(s); baseModel.setBtmname(flowDTO.getBtmType()); - baseModel.setLcStatus(String.valueOf(flowDTO.getVariableMap().getOrDefault("statusValue","Auditing"))); + baseModel.setLcStatus(String.valueOf(flowDTO.getVariableMap().getOrDefault("statusValue", "Auditing"))); changeStatus(baseModel); }); return R.success("鎴愬姛"); -- Gitblit v1.9.3