From 53d628adb1082d7df51dc1a2151505f17b1de9a2 Mon Sep 17 00:00:00 2001 From: ludc Date: 星期一, 11 九月 2023 14:59:07 +0800 Subject: [PATCH] bug修改,规则克隆接口修改 --- Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeBasicSecServiceImpl.java | 111 +++++++++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 94 insertions(+), 17 deletions(-) diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeBasicSecServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeBasicSecServiceImpl.java index ea4666f..1123541 100644 --- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeBasicSecServiceImpl.java +++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeBasicSecServiceImpl.java @@ -52,6 +52,7 @@ import org.springframework.util.CollectionUtils; import javax.annotation.Resource; +import java.rmi.ServerException; import java.util.*; import java.util.stream.Collectors; @@ -114,7 +115,7 @@ /** * 涓婂眰鍒嗙被鐮佹鐨勫睘鎬у悕绉� */ - private static final String PARENT_FIELD_NAME = "parentclassifysecoid"; + private static final String PARENT_FIELD_NAME = "parentClassifySecOid"; /** * 涓婄骇鍒嗙被鐮佸�肩殑灞炴�у悕绉� @@ -170,10 +171,10 @@ // 灏嗚浣滀负鍒犻櫎鏉′欢鐨勫�兼斁鍦ㄤ竴涓泦鍚堥噷闈� Set<String> fixedSecOidSet = fixedSecList.stream().map(CodeBasicSec::getOid).collect(Collectors.toSet()); // 閫氳繃澶栭敭杩涜鏌ヨ - List<CodeFixedValue> fixedValueS = fixedValueMapper.selectList(Wrappers.<CodeFixedValue>query().lambda().in(CodeFixedValue::getCodeFixedSecOid,fixedSecOidSet)); - if(!fixedValueS.isEmpty()){ + List<CodeFixedValue> fixedValues = fixedValueMapper.selectList(Wrappers.<CodeFixedValue>query().lambda().in(CodeFixedValue::getCodeFixedSecOid,fixedSecOidSet)); + if(!fixedValues.isEmpty()){ // 鏍规嵁鏌ヨ鍑烘潵鐨刬d鎵ц鍥哄畾鐮佹鎵ц鍒犻櫎 - deletFlag = fixedValueMapper.deleteBatchIds(fixedValueS.stream().map(CodeFixedValue::getOid).collect(Collectors.toSet()))>0; + deletFlag = fixedValueMapper.deleteBatchIds(fixedValues.stream().map(CodeFixedValue::getOid).collect(Collectors.toSet()))>0; } } // 4銆佸啀鍒犻櫎鍒嗙被鐮佹 @@ -184,10 +185,10 @@ // 灏嗚浣滀负鍒犻櫎鏉′欢鐨勫�兼斁鍦ㄤ竴涓泦鍚堥噷闈� Set<String> classifySecOidSet = classifySecList.stream().map(CodeBasicSec::getOid).collect(Collectors.toSet()); // 閫氳繃澶栭敭杩涜鏌ヨ - List<CodeClassifyValue> fixedValueS = codeClassifyValueMapper.selectList(Wrappers.<CodeClassifyValue>query().lambda().in(CodeClassifyValue::getCodeClassifySecOid,classifySecOidSet)); - if(!fixedValueS.isEmpty()){ + List<CodeClassifyValue> codeClassifyValues = codeClassifyValueMapper.selectList(Wrappers.<CodeClassifyValue>query().lambda().in(CodeClassifyValue::getCodeClassifySecOid,classifySecOidSet)); + if(!codeClassifyValues.isEmpty()){ // 鏍规嵁鏌ヨ鍑烘潵鐨勪富閿甶d鎵ц鍥哄畾鐮佹鎵ц鍒犻櫎 - deletFlag = fixedValueMapper.deleteBatchIds(fixedValueS.stream().map(CodeClassifyValue::getOid).collect(Collectors.toSet()))>0; + deletFlag = codeClassifyValueMapper.deleteBatchIds(codeClassifyValues.stream().map(CodeClassifyValue::getOid).collect(Collectors.toSet()))>0; } } return deletFlag; @@ -574,7 +575,7 @@ */ @Override @Transactional(rollbackFor = Exception.class) - public R cloneCodeBasicSec(List<String> oidList, String pkCodeRule) throws ServiceException { + public R cloneCodeBasicSec(List<String> oidList, String pkCodeRule) throws ServiceException, ServerException { boolean isLinked = checkIsLinked(pkCodeRule,null); if (isLinked) { return R.fail("缂栫爜瑙勫垯宸茶寮曠敤锛屼笉鍏佽缂栬緫鎴栧垹闄�"); @@ -584,20 +585,96 @@ if(basicSecDOS.isEmpty()){ return R.fail("鍏嬮殕鐨勭爜娈典俊鎭笉瀛樺湪锛�"); } - basicSecDOS.forEach(sec -> { + List<CodeBasicSec> codeClassifySec = new ArrayList<>(); + Map<String,List<CodeFixedValue>> codeFixedValueMaps = new HashMap<>(); + for (CodeBasicSec sec : basicSecDOS) { CodeBasicSec newSecDO = new CodeBasicSec(); BeanUtilForVCI.copyPropertiesIgnoreCase(sec,newSecDO); - newSecDO.setOid(VciBaseUtil.getPk()); - newSecDO.setNameOid(VciBaseUtil.getPk()); - newSecDO.setRevisionOid(VciBaseUtil.getPk()); - newSecDO.setId(newSecDO.getId() + "_copy"); - newSecDO.setName(newSecDO.getName() + "_copy"); + String oldBasicOid = newSecDO.getOid(); + newSecDO.setId(newSecDO.getId()); + newSecDO.setName(newSecDO.getName()); newSecDO.setPkCodeRule(pkCodeRule); + // 鍒ゆ柇鏄惁鏄垎绫荤爜娈�,涓氬姟閫昏緫绋嶅井澶嶆潅涓�鐐规墍浠ラ渶瑕佸厛鎻愬嚭鏉ュ崟鐙鐞� + if(newSecDO.getSecType().equals(CodeSecTypeEnum.CODE_CLASSIFY_SEC.getValue())){ + // 瀛樺偍鏃х殑鐮佹oid鍜屾柊鐨勭爜娈电殑oid鐨勫叧鑱斿叧绯� + codeClassifySec.add(newSecDO); + continue; + } + // 鏇存敼鍒涘缓鏃堕棿锛屼慨鏀规椂闂寸瓑榛樿鍊� + DefaultAttrAssimtUtil.addDefaultAttrAssimt(newSecDO,MdmBtmTypeConstant.CODE_BASIC_SEC); + //鍥哄畾鐮佹 + if(newSecDO.getSecType().equals(CodeSecTypeEnum.CODE_FIXED_SEC.getValue())){ + // 鍥哄畾鐮佹瀛樺偍濂給id鍜岀爜鍊肩殑鍏宠仈鍏崇郴 + codeFixedValueMaps.put(newSecDO.getOid(),fixedValueService.list(Wrappers.<CodeFixedValue>query() + .lambda().eq(CodeFixedValue::getCodeFixedSecOid, oldBasicOid) + )); + } createList.add(newSecDO); - }); + } + // 澶勭悊鍒嗙被鐮佹鐨刼id锛屽洜涓簅id鍏宠仈parentClassifyOid锛屼笌鐮佸�糲odeClassifyOid锛岀爜鍊煎張闇�瑕侀�氳繃鏃х殑鐮佹oid鏉ユ煡璇紝鎵�浠ヤ笉鑳界洿鎺ユ敼鍙榦id + boolean resChangeAssn = changeParentOidAssnOid(codeClassifySec); + // 灏嗗鐞嗚繃鐨勫垎绫荤爜娈典篃娣诲姞杩涜鍋氭柊澧炲鐞嗙殑鐮佹闆嗗悎涓� + createList.addAll(codeClassifySec); boolean resBoolean = saveBatch(createList); - //codeBasicSecMapper.insertBatch(createList); - return resBoolean ? R.data(resBoolean,"鍏嬮殕鐮佹淇℃伅鎴愬姛"):R.fail("鍏嬮殕鐮佹淇℃伅澶辫触锛�"); + // 鏈�缁堣瀛樺叆鐮佸�艰〃涓殑锛岀爜鍊煎璞� + List<CodeFixedValue> codeFixedDOValues = new ArrayList<>(); + // 鏋勯�犵爜鍊煎璞★紝涓庣爜娈典富閿叧鑱斿叧绯伙紝浠ュ強鏀瑰彉鍥哄畾鐮佸�肩殑oid + codeFixedValueMaps.forEach((key, value) -> { + value.stream().forEach(item -> { + item.setOid(""); + item.setCodeFixedSecOid(key); + DefaultAttrAssimtUtil.updateDefaultAttrAssimt(item); + codeFixedDOValues.add(item); + }); + }); + // 鍏嬮殕鍥哄畾鐮佸�� + boolean resFixed = fixedValueService.saveBatch(codeFixedDOValues); + return (resBoolean&&resFixed&&resChangeAssn) ? R.data(resBoolean,"鍏嬮殕鐮佹淇℃伅鎴愬姛"):R.fail("鍏嬮殕鐮佹淇℃伅澶辫触锛�"); + } + + /** + * 鏀瑰彉鐮佹涓埗鍒嗙被鐮佹鍜屽瓙鍒嗙被鐮佹涔嬮棿鐨勫叧鑱攐id涓烘柊鐨刼id,骞朵笖涓嶇牬鍧忓垎绫荤爜鍊肩殑鍏宠仈鍏崇郴 + * @param basicSecs + * @return + * @throws ServerException + */ + @Override + public boolean changeParentOidAssnOid(List<CodeBasicSec> basicSecs) throws ServerException { + Map<String, List<CodeClassifyValue>> codeClassValues = new HashMap<>(); + List<CodeClassifyValue> codeClassifyDOValues = new ArrayList<>(); + HashMap<String, String> oidMap = new HashMap<>(); + boolean resClone = false; + try { + // 閬嶅巻瀵硅薄鏁扮粍锛屼负姣忎釜瀵硅薄鐢熸垚鏂扮殑oid锛屽苟灏嗗師濮媜id鍜屾柊oid鐨勬槧灏勫叧绯诲瓨鍌ㄥ埌Map涓� + for (CodeBasicSec obj : basicSecs) { + String originalOid = obj.getOid(); + String newOid = VciBaseUtil.getPk(); + oidMap.put(originalOid, newOid); + } + // 閬嶅巻瀵硅薄鏁扮粍锛屾洿鏂版瘡涓璞$殑oid鍜宑odeClassifySecOid灞炴�у�� + for (CodeBasicSec obj : basicSecs) { + String originalOid = obj.getOid(); + String newOid = oidMap.get(originalOid); + // 鏂扮殑oid鍏宠仈瑕佸厠闅嗙爜鍊� + codeClassValues.put(newOid,codeClassifyValueService.list(Wrappers.<CodeClassifyValue>query() + .lambda().eq(CodeClassifyValue::getCodeClassifySecOid, originalOid))); + obj.setOid(newOid); + String originalParentClassifyValueOid = obj.getParentClassifySecOid(); + String newParentClassifyValueOid = oidMap.get(originalParentClassifyValueOid); + obj.setParentClassifySecOid(newParentClassifyValueOid); + } + codeClassValues.forEach((key, value) -> { + value.stream().forEach(item -> { + DefaultAttrAssimtUtil.updateDefaultAttrAssimt(item); + item.setCodeClassifySecOid(key); + codeClassifyDOValues.add(item); + }); + }); + resClone = codeClassifyValueService.cloneCodeClassifyVaue(codeClassifyDOValues); + }catch (Exception e){ + throw new ServerException("鐖跺垎绫荤爜娈靛拰瀛愬垎绫荤爜娈礳lone杞崲oid鏃跺嚭閿欙細"+e.getCause()); + } + return resClone; } /** -- Gitblit v1.9.3