From a28075c184ffb2e9853233b7b66e3697e6b3f0b6 Mon Sep 17 00:00:00 2001 From: xiejun <xj@2023> Date: 星期二, 29 八月 2023 21:53:45 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeRuleServiceImpl.java | 157 ++++++++++++++++++++++++++++++++++------------------ 1 files changed, 103 insertions(+), 54 deletions(-) diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeRuleServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeRuleServiceImpl.java index b0bb55c..286e404 100644 --- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeRuleServiceImpl.java +++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeRuleServiceImpl.java @@ -23,7 +23,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.vci.ubcs.code.constant.FrameWorkDefaultValueConstant; -import com.vci.ubcs.code.constant.MdmBtmTypeConstant; + import com.vci.ubcs.code.dto.CodeBasicSecDTO; import com.vci.ubcs.code.dto.CodeRuleDTO; import com.vci.ubcs.code.entity.*; @@ -32,20 +32,17 @@ import com.vci.ubcs.code.mapper.CodeRuleMapper; import com.vci.ubcs.code.mapper.CodeSerialValueMapper; import com.vci.ubcs.code.mapper.CommonsMapper; -import com.vci.ubcs.code.service.ICodeAllCodeService; -import com.vci.ubcs.code.service.ICodeBasicSecService; -import com.vci.ubcs.code.service.ICodeClassifyService; -import com.vci.ubcs.code.service.ICodeRuleService; -import com.vci.ubcs.code.vo.pagemodel.CodeBasicSecVO; -import com.vci.ubcs.code.vo.pagemodel.CodeClassifyVO; -import com.vci.ubcs.code.vo.pagemodel.CodeRuleVO; +import com.vci.ubcs.code.service.*; +import com.vci.ubcs.code.vo.pagemodel.*; import com.vci.ubcs.code.wrapper.CodeClassifyWrapper; import com.vci.ubcs.code.wrapper.CodeRuleWrapper; import com.vci.ubcs.omd.cache.EnumCache; import com.vci.ubcs.omd.enums.EnumEnum; import com.vci.ubcs.starter.exception.VciBaseException; +import com.vci.ubcs.starter.revision.model.TreeQueryObject; import com.vci.ubcs.starter.revision.service.RevisionModelUtil; import com.vci.ubcs.starter.util.DefaultAttrAssimtUtil; +import com.vci.ubcs.starter.util.MdmBtmTypeConstant; import com.vci.ubcs.starter.util.UBCSCondition; import com.vci.ubcs.starter.web.pagemodel.*; import com.vci.ubcs.starter.web.util.BeanUtilForVCI; @@ -54,7 +51,9 @@ import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Query; import org.springblade.core.secure.utils.AuthUtil; +import org.springblade.core.tool.api.IResultCode; import org.springblade.core.tool.api.R; +import org.springblade.core.tool.api.ResultCode; import org.springblade.core.tool.constant.BladeConstant; import org.springblade.core.tool.utils.BeanUtil; import org.springblade.core.tool.utils.Func; @@ -102,6 +101,8 @@ private ICodeAllCodeService codeAllcodeService; @Resource private ICodeBasicSecService codeBasicSecService; + @Resource + private ICodeClassifyValueService iCodeClassifyValueService; /** * 瀵硅薄鐨勬搷浣� @@ -161,11 +162,14 @@ */ @Override public boolean checkCodeRuleRepeat(CodeRuleDTO codeRuleDTO){ - List<CodeRule> codeRulesList = this.codeRuleMapper.selectList(Wrappers.<CodeRule>query().lambda().eq(CodeRule::getId, codeRuleDTO.getId())); + // 鏍规嵁瑙勫垯id鏌ヨ缂栧彿 + List<CodeRule> codeRulesList = this.codeRuleMapper.selectList(Wrappers.<CodeRule>query() + .lambda().eq(CodeRule::getId, codeRuleDTO.getId()) + .eq(CodeRule::getTenantId,AuthUtil.getTenantId().equals(this.tenantId) ? "":codeRuleDTO.getTenantId())); if(!codeRulesList.isEmpty()){ return codeRulesList.parallelStream().anyMatch(codeRule -> { if(StringUtils.isNotBlank(codeRuleDTO.getOid())){ - // 浠h〃鏄慨鏀� + // 浠h〃鏄慨鏀癸紝涓嶆槸灏嗙紪鍙蜂慨鏀圭浉鍚岀殑缂栧彿 return !codeRule.getOid().equals(codeRuleDTO.getOid()); }else { return true; @@ -443,8 +447,7 @@ } // 鍙戝竷鏃跺皢鐮佹绫诲瀷鎸夌収瀛楃涓插垎闅旂殑褰㈠紡鎷兼帴骞跺瓨鍌� String secTypeStr = codeBasicSecService.listCodeBasicSecByRuleOid(codeRuleDO.getOid()).stream().map(CodeBasicSecVO::getSecType).collect(Collectors.joining(",")); - codeRuleDO.setBasicSecTypes(secTypeStr); - count = codeRuleMapper.update(null,wrapper.set(CodeRule::getLcStatus, CodeRuleLC.RELEASED.getValue())); + count = codeRuleMapper.update(null,wrapper.set(CodeRule::getLcStatus, CodeRuleLC.RELEASED.getValue()).set(CodeRule::getBasicSecTypes,secTypeStr)); } else { return R.fail("鏆備笉鏀寔鐨勬搷浣滅被鍨�"); } @@ -507,76 +510,122 @@ @Override public R checkLikeCodeRule(String oid) throws VciBaseException { // 1銆佹煡璇㈠嚭褰撳墠瑕佸彂甯冪殑瑙勫垯 - CodeRuleVO codeRuleVO = getObjectHasSecByOid(oid); - // 褰撳墠鍙戝竷鐨勮鍒欎笉瀛樺湪鐮佹淇℃伅 - if(Func.isEmpty(codeRuleVO.getSecVOList())){ - return R.data(null); + CodeRuleVO releaseCodeRule = getObjectHasSecByOid(oid); + // 褰撳墠鍙戝竷鐨勮鍒欎笉瀛樺湪鐮佹淇℃伅锛岀洿鎺ョ┖淇℃伅杩斿洖 + if(Func.isEmpty(releaseCodeRule.getSecVOList())){ + return R.fail("瑙勫垯淇℃伅涓嶅瓨鍦紝璇峰埛鏂板悗閲嶈瘯锛�"); } // 2銆佹壘鍑轰笌褰撳墠鍙戝竷鐨勮鍒欑爜娈甸『搴忎竴鑷寸殑瑙勫垯 - String secTypes = codeRuleVO.getSecVOList().stream().map(CodeBasicSecVO::getSecType).collect(Collectors.joining(",")); - //鍏堟煡璇㈠嚭鎵�鏈夊凡鍙戝竷鐨勭紪鐮佽鍒� - List<CodeRule> codeRuleList = codeRuleMapper.selectList(Wrappers.<CodeRule>query().lambda().eq(CodeRule::getLcStatus, FrameWorkDefaultValueConstant.FRAMEWORK_RELEASE_RELEASED)); + String secTypes = releaseCodeRule.getSecVOList().stream().map(CodeBasicSecVO::getSecType).collect(Collectors.joining(",")); + // 鏌ヨ鍑烘墍鏈夊凡鍙戝竷鐨勭紪鐮佽鍒欎腑鐮佹绫诲瀷椤哄簭涓庡綋鍓嶈鍙戝竷鐨勮鍒欓『搴忎竴鑷寸殑缂栫爜瑙勫垯锛屾鏃跺凡杩戣繃婊ゆ帀澶ч儴鍒嗚鍒欙紝杩愮畻閲忓噺灏� + List<CodeRule> codeRuleList = codeRuleMapper.selectList(Wrappers.<CodeRule>query().lambda() + .eq(CodeRule::getLcStatus, CodeRuleLC.RELEASED.getValue()) + .eq(CodeRule::getBasicSecTypes,secTypes) + ); + // 涓虹┖锛岃瘉鏄庝笉瀛樺湪绫诲悓鐨勭紪鐮佽鍒欑洿鎺ヨ繑鍥� + if(Func.isEmpty(codeRuleList)){ + return R.data(new ResultDataVO(true)); + } + // 鏌ヨ鍑哄熀纭�鐮佹鍒楄〃锛堟寜鐓rderNum鍗囧簭鎺掑簭锛� List<CodeRuleVO> codeRuleVOS = codeRuleDO2VOs(codeRuleList, true); - // 婊¤冻鐮佹绫诲瀷椤哄簭涓�鑷寸殑瑕佹眰鐨勭紪鐮佽鍒欙紝鍙互杩涘叆涓嬩竴姝ユ瘮杈冭鍒� - List<CodeRuleVO> codeRuleVOStream = codeRuleVOS.parallelStream().filter(item -> { - // 瀵笲asicSec浣跨敤orderNum鎺掑簭(鏌ヨ鐨勬椂鍊欏叾瀹炲凡缁忔帓杩囦竴娆″簭浜�)锛屽苟灏唖ecType鐢ㄩ�楀彿鍒嗛殧鎷兼帴鎴愪竴涓瓧绗︿覆 - String itemSecTypes = item.getSecVOList().parallelStream().sorted(Comparator.comparing(CodeBasicSecVO::getOrderNum)).map(CodeBasicSecVO::getSecType).collect(Collectors.joining(",")); - if (secTypes.equals(itemSecTypes)) { - return true; - } - return false; - }).collect(Collectors.toList()); // 3銆佸悇绫荤爜娈靛垎鍒繘琛屾瘮瀵� - codeRuleVOStream.parallelStream().filter(item->{ - item.getSecVOList().stream().filter(basicSec->{ - switch (basicSec.getSecType()){ + List<CodeRuleVO> lastCodeRule = new ArrayList<>(); + codeRuleVOS.stream().forEach(item->{ + List<CodeBasicSecVO> secVOList = item.getSecVOList(); + boolean flag = true; + for (int index = 0; index < secVOList.size(); index++) { + // 褰撳墠瑕佸彂甯冪殑瑙勫垯鍖呭惈鐨勭爜娈典俊鎭� + CodeBasicSecVO releaseBasicSec = releaseCodeRule.getSecVOList().get(index); + // 宸插彂甯冪殑瑙勫垯鍖呭惈鐨勭爜娈典俊鎭� + CodeBasicSecVO releasedBasicSec = secVOList.get(index); + // 鍥犱负鐮佹椤哄簭閮芥槸鎸夌収OrderNum鎺掑簭鐨勶紝鎵�浠ョ洿鎺ユ寜鐓т笅鏍囦袱涓ゆ瘮杈冨氨鍙互浜� + switch (releasedBasicSec.getSecType()){ // 灞炴�х爜娈碉紝姣斿灞炴�у拰灞炴�ф墍鍦ㄥ垎绫�(referCodeClassifyOid) case "codeattrsec": - List<CodeBasicSecVO> codeattrsec = this.getBasicSecBySecType("codeattrsec", codeRuleVO); - + if(!releasedBasicSec.getReferCodeClassifyOid().equals(releaseBasicSec.getReferCodeClassifyOid())){ + flag = false; + } break; // 鍙彉鐮佹锛屾瘮瀵圭爜娈甸暱搴︼紝缂栫爜琛ヤ綅鏂瑰紡鍜岃ˉ浣嶆椂鐨勫瓧绗� case "codevariablesec": + if(!(releasedBasicSec.getCodeSecLength().equals(releaseBasicSec.getCodeSecLength()) + && releasedBasicSec.getCodeFillType().equals(releaseBasicSec.getCodeFillType()) + && releasedBasicSec.getCodeFillSeparator().equals(releaseBasicSec.getCodeFillSeparator()))){ + flag = false; + } break; // 鍥哄畾鐮佹姣斿鎸夊崌搴忔帓搴忕殑鐮佸�硷紝 case "codefixedsec": + if(Func.isNotEmpty(releasedBasicSec.getFixedValueVOList()) && Func.isNotEmpty(releaseBasicSec.getFixedValueVOList())){ + // 灏唂ixedValue鎸夌収閫楀彿鍒嗛殧鎷兼帴璧锋潵锛屼互渚挎瘮杈冿紝鐢变簬鏌ヨ鏃跺凡鎸夌収orderNum鎺掕繃搴忎簡锛屾墍浠ヤ笉闇�瑕佸啀娆℃帓搴� + String reledFixedValues = releasedBasicSec.getFixedValueVOList().stream().map(CodeFixedValueVO::getId).collect(Collectors.joining(",")); + String releFixedValues = releaseBasicSec.getFixedValueVOList().stream().map(CodeFixedValueVO::getId).collect(Collectors.joining(",")); + if(reledFixedValues.equals(releFixedValues)){ + flag = false; + } + } break; // 鍒嗙被鐮佹姣斿鎸夊崌搴忔帓搴忕爜鍊� case "codeclassifysec": + String classifyValueStr = this.iCodeClassifyValueService.getClassifyValueStr(releasedBasicSec.getOid()); + String classifyValueStr1 = this.iCodeClassifyValueService.getClassifyValueStr(releaseBasicSec.getOid()); + if(classifyValueStr.equals(classifyValueStr1)){ + flag = false; + } break; // 鏃ユ湡鐮佹姣斿鏃ユ湡鏍煎紡 case "codedatesec": + if(!releasedBasicSec.getCodeDateFormatStr().equals(releaseBasicSec.getCodeDateFormatStr())){ + flag = false; + } break; - // 寮曠敤鐮佹锛屾瘮瀵瑰弬鐓у簲鐢ㄧ殑涓氬姟绫诲瀷 + // 寮曠敤鐮佹锛屾瘮瀵瑰弬鐓у紩鐢ㄧ殑涓氬姟绫诲瀷 case "coderefersec": + if(!releasedBasicSec.getReferBtmId().equals(releaseBasicSec.getReferBtmId())){ + flag = false; + } break; // 灞傜骇鐮佹锛屾瘮瀵瑰眰绾х被鍨嬨�佸眰绾х殑鍊笺�佸瓧绗︽埅鍙栫被鍨嬨�佸彇鍊肩被鍨� case "codelevelsec": + if(!(releasedBasicSec.getCodeLevelType().equals(releaseBasicSec.getCodeLevelType()) + /*鍏堝仛闈炵┖鍒ゆ柇锛屽洜涓烘敼灞炴�т笉鏄繀濉睘鎬�*/ + && (Func.isNotEmpty(releasedBasicSec.getCodeLevelValue()) && Func.isNotEmpty(releaseBasicSec.getCodeLevelValue())) + && releasedBasicSec.getCodeLevelValue().equals(releaseBasicSec.getCodeLevelValue()) + && releasedBasicSec.getValueCutType().equals(releaseBasicSec.getValueCutType()) + && releasedBasicSec.getCodeGetValueType().equals(releaseBasicSec.getCodeGetValueType()))){ + flag = false; + } break; - case "codeserialsec": // 娴佹按鐮佹姣斿鐮佹鐨勯暱搴� - + case "codeserialsec": + if(!releasedBasicSec.getCodeFillLength().equals(releaseBasicSec.getCodeFillLength())){ + flag = false; + } break; - default: - return false; } - return false; - }); - return false; - }); - // 鏈�鍚庡皢缁撴灉杩涜杩斿洖 - - return null; - } - - private List<CodeBasicSecVO> getBasicSecBySecType(String secType,CodeRuleVO codeRuleVO){ - List<CodeBasicSecVO> codeBasicSecVOList = codeRuleVO.getSecVOList().parallelStream().filter(item -> { - if (item.getSecType().equals(secType)) { - return true; + if (!flag) { + break; + } } - return false; - }).collect(Collectors.toList()); - return codeBasicSecVOList; + // 婊¤冻鎵�鏈夌爜娈电被鍨嬫瘮瀵规潯浠剁殑瑙勫垯 + if (flag) { + lastCodeRule.add(item); + } + }); + // 涓虹┖鏃惰鏄庢楠�3娌℃瘮瀵瑰嚭绫讳技鐨勭紪鐮佽鍒� + if(lastCodeRule.isEmpty()){ + return R.data(new ResultDataVO(true)); + } + StringBuffer resMsg = new StringBuffer(); + resMsg.append("瀛樺湪濡備笅鐩镐技瑙勫垯锛屾槸鍚︾户缁彂甯冿紵\n"); + // 鏈�鍚庡皢缁撴灉杩涜澶勭悊骞惰繑鍥� + lastCodeRule.stream().forEach(item->{ + resMsg.append(item.getName()); + resMsg.append(item.getId()); + resMsg.append("缂栫爜瑙勫垯;\n"); + }); + ResultDataVO resultDataVO = new ResultDataVO(false,resMsg.toString()); + return R.data(resultDataVO); } /** -- Gitblit v1.9.3