From f8722a3c6d5a3e50e5c5066b1db085179245e4bc Mon Sep 17 00:00:00 2001 From: ludc Date: 星期五, 17 十一月 2023 09:14:12 +0800 Subject: [PATCH] 统一保存接口代冲突合并 --- Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyServiceImpl.java | 108 +++++++++++++++++++++++++++++++++++++++++++----------- 1 files changed, 86 insertions(+), 22 deletions(-) diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyServiceImpl.java index 66505ab..ae01ddd 100644 --- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyServiceImpl.java +++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyServiceImpl.java @@ -2,7 +2,9 @@ import com.alibaba.nacos.common.utils.StringUtils; import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -13,6 +15,7 @@ import com.vci.ubcs.code.enumpack.FrameworkDataLCStatus; import com.vci.ubcs.code.mapper.CodeClassifyMapper; import com.vci.ubcs.code.mapper.CodeClassifyTemplateMapper; +import com.vci.ubcs.code.mapper.CommonsMapper; import com.vci.ubcs.code.po.CodeClassifyPO; import com.vci.ubcs.code.service.ICodeClassifyService; import com.vci.ubcs.code.service.ICodeKeyAttrRepeatService; @@ -59,6 +62,7 @@ import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import javax.annotation.Resource; @@ -69,6 +73,7 @@ import java.util.stream.Stream; import static com.vci.ubcs.code.constant.FrameWorkDefaultValueConstant.*; +import static com.vci.ubcs.starter.web.util.VciBaseUtil.getTableName; @Service public class CodeClassifyServiceImpl extends ServiceImpl<CodeClassifyMapper, CodeClassify> implements ICodeClassifyService { @@ -84,6 +89,9 @@ @Resource private IBtmTypeClient btmTypeClient; + + @Resource + private CommonsMapper commonsMapper; /** * 鏃ュ織 @@ -173,6 +181,7 @@ * @return 鎵ц缁撴灉 */ @Override + @Transactional(rollbackFor = Exception.class) public R editSave(CodeClassify codeClassifyEntity) { if(codeClassifyEntity == null || codeClassifyEntity.getOid() == null){ return R.fail("浼犲叆鏁版嵁涓嶈兘涓虹┖锛�"); @@ -190,15 +199,28 @@ codeClassifyEntity.setLastModifier(String.valueOf(AuthUtil.getUser().getAccount())); codeClassifyEntity.setLastModifyTime(new Date()); codeClassifyEntity.setTs(new Date()); - int insertNumber = codeClassifyMapper.updateById(codeClassifyEntity); + int updateEntity = codeClassifyMapper.updateById(codeClassifyEntity); + // 濡傛灉涓嶆槸鍙跺瓙缁撶偣锛屽垯闇�瑕佷慨鏀瑰叾涓嬫墍鏈夌殑瀛愬垎绫伙紝鏄惁鍙備笌鍏抽敭灞炴�ф牎楠岀殑鍊� + String oid = codeClassifyEntity.getOid(); + List<CodeClassify> codeClassifies = codeClassifyMapper.selectStartWithCurrentOid(oid); + int updateAttr = 0; + // 涓嶄负绌哄氨闇�瑕佽褰撳墠鍒嗙被涓嬫墍鏈夊瓙鍒嗙被鐨刬sParticipateCheck + if(!codeClassifies.isEmpty()){ + List<String> oids = codeClassifies.stream().map(CodeClassify::getOid).collect(Collectors.toList()); + updateAttr = codeClassifyMapper.update( + null, + Wrappers.<CodeClassify>update() + .lambda().in(CodeClassify::getOid, oids) + .set(CodeClassify::getIsParticipateCheck, codeClassifyEntity.getIsParticipateCheck()) + ); + } // //澶勭悊鏁版嵁闆嗘垚閫昏緫,鎴愬姛鍚庢墽琛岄泦鎴愮涓�姝�,鍒嗙被鏁版嵁鐗规畩澶勭悊銆傚彧鏈夊惎鐢ㄧ姸鎬佺殑鍒嗙被鎵嶆帹閫� // if(FRAMEWORK_DATA_ENABLED.equals(codeClassifyDO.getLcStatus())); // { // codeDuckingServiceI.insertCache1(CACHE_TYPE_CLASSIFY_EDIT,FRAMEWORK_DATA_ENABLED,DOCKING_DEFAULT_CLASSIFY, DOCKING_DEFAULT_CLASSIFYOID, codeClassifyDO.getOid(), codeClassifyDTO.getTs()); // } - return R.status(SqlHelper.retBool(insertNumber)); -// return BaseResult.success(codeClassifyDO2VO(codeClassifyDO)); + return R.status(SqlHelper.retBool(updateAttr) & SqlHelper.retBool(updateEntity)); } /** @@ -442,7 +464,7 @@ List<CodeClassifyVO> voList = new ArrayList<CodeClassifyVO>(); if(!CollectionUtils.isEmpty(codeClassifys)){ for(CodeClassify s: codeClassifys){ - CodeClassifyVO vo = codeClassifyDO2VO(s); + CodeClassifyVO vo = codeClassifyDO2VO(s); if(vo != null){ voList.add(vo); } @@ -522,20 +544,21 @@ lcStatus = treeQueryObject.getConditionMap().getOrDefault("lcStatus",null); } if(StringUtils.isNotBlank(id) || StringUtils.isNotBlank(lcStatus) ){ + //String tableName = this.getTableName(treeQueryObject.getConditionMap().get("btmTypeId"),treeQueryObject.getConditionMap().get("id"), treeQueryObject.getConditionMap().get("lcStatus")); doList = codeClassifyMapper - .selectCodeClassifyDOByTree(treeQueryObject.getConditionMap().get("id"),treeQueryObject.getConditionMap().get("lcStatus"),treeQueryObject.getParentOid(), AuthUtil.getTenantId() - .equals( - NacosConfigCache - .getAdminUserInfo() - .getTenantId() - ) ? null:AuthUtil.getTenantId()); + .selectCodeClassifyDOByTree( + treeQueryObject.getConditionMap().get("id"), + treeQueryObject.getConditionMap().get("lcStatus"), + treeQueryObject.getParentOid(), + VciBaseUtil.checkAdminTenant() ? null:AuthUtil.getTenantId() + /*tableName*/ + ); }else{ - doList =codeClassifyMapper.selectCodeClassifyVOByTree(treeQueryObject.getParentOid(), AuthUtil.getTenantId() - .equals( - NacosConfigCache - .getAdminUserInfo() - .getTenantId() - ) ? null:AuthUtil.getTenantId()); + // 鍙鍓嶇浼氫紶鍙傛暟杩囨潵灏变笉浼氬嚭鐜拌蛋杩欏彞鐨勬儏鍐碉紝鎵�浠ユ煡璇㈡�绘暟娌″湪杩欏効娣诲姞 + doList =codeClassifyMapper.selectCodeClassifyVOByTree( + treeQueryObject.getParentOid(), + VciBaseUtil.checkAdminTenant() ? null:AuthUtil.getTenantId() + ); } List<CodeClassifyVO> voList = codeClassifyDO2VOs(doList); TreeWrapperOptions treeWrapperOptions = new TreeWrapperOptions(PARENT_FIELD_NAME); @@ -545,6 +568,7 @@ return s.getId() + " " + s.getName() + (FrameworkDataLCStatus.DISABLED.getValue().equalsIgnoreCase(s .getLcStatus()) ? (" 銆愬仠鐢ㄣ�� ") : ""); }); + Iterator var6 = tree.listIterator(); while(var6.hasNext()){ Tree trees = (Tree) var6.next(); @@ -556,6 +580,28 @@ } } return tree; + } + + /** + * 鍒嗙被鍔犺浇鏃惰幏鍙栦笟鍔$被鍨媔d锛屾嫾鎺ヤ笟鍔$被鍨嬭〃鍚� + * @return + */ + private String getTableName(String btmTypeId,String id,String lcStatus){ + if(Func.isNotEmpty(btmTypeId)){ + return VciBaseUtil.getTableName(btmTypeId,true); + } + LambdaQueryWrapper<CodeClassify> wrapper = Wrappers.<CodeClassify>query() + .lambda().select(CodeClassify::getBtmTypeId) + .eq(CodeClassify::getLcStatus, lcStatus) + .isNotNull(CodeClassify::getBtmTypeId) + .last("limit 1") + .eq(CodeClassify::getId,id).isNull(CodeClassify::getParentCodeClassifyOid); + + CodeClassify codeClassify = codeClassifyMapper.selectOne(wrapper); + if(Func.isEmpty(codeClassify) || Func.isEmpty(codeClassify.getBtmTypeId())){ + throw new ServiceException("鏌ヨ涓绘暟鎹�绘暟鏃讹紝鏈幏鍙栧埌涓氬姟绫诲瀷ID锛�"); + } + return VciBaseUtil.getTableName(codeClassify.getBtmTypeId(),true); } /** @@ -609,12 +655,29 @@ * @param oid * @return */ - public List<CodeClassifyVO> selectAllClassifyByOid(String oid){ - List<CodeClassify> codeClassifyList=codeClassifyMapper.selectAllClassifyByOid(oid,AuthUtil.getTenantId()); + public List<CodeClassifyVO> selectAllClassifyByOid(String oid, String fieldInPath){ + List<CodeClassify> codeClassifyList=codeClassifyMapper.selectAllClassifyByOid(oid,AuthUtil.getTenantId(),fieldInPath); List<CodeClassifyVO> voList = codeClassifyDO2VOs(codeClassifyList); return voList; } + + /** + * 鏍规嵁椤跺眰鑺傜偣oid鏌ヨ鎵�鏈夐櫎褰撳墠鑺傜偣浠ュ鎵�鏈変笉鍙備笌鏍¢獙鐨勫垎绫籵id + * @param topOid + * @param currentOid + * @return + */ + @Override + public String selectLeafByParentClassifyOid(String topOid, String currentOid) { + List<CodeClassify> codeClassifies = codeClassifyMapper.selectLeafByParentClassifyOid(topOid, currentOid); + if(codeClassifies.isEmpty()){ + return ""; + } + String oids = codeClassifies.stream().map(CodeClassify::getOid).collect(Collectors.joining(",")); + return oids; + } + /*** * 鏍规嵁鍒嗙被鎻忚堪澶囨敞鍜屽簱鑺傜偣鏌ヨ鍒嗙被淇℃伅 * @param desc @@ -777,9 +840,8 @@ @Override public List<CodeClassifyVO> listChildrenClassify(String codeClassifyOid, boolean allLevel, String fieldInPath, boolean enable) { if(allLevel){ - List<CodeClassify> classifyDOS = codeClassifyMapper.selectAllLevelChildHasPath(codeClassifyOid,fieldInPath); + List<CodeClassify> classifyDOS = codeClassifyMapper.selectAllLevelChildHasPath(codeClassifyOid,fieldInPath,AuthUtil.getTenantId()); if(!CollectionUtils.isEmpty(classifyDOS)){ - // 杩欏効鐢╯tream鏈夌偣鎱� classifyDOS = classifyDOS.parallelStream().filter(s->FRAMEWORK_DATA_ENABLED.equalsIgnoreCase(s.getLcStatus())).collect(Collectors.toList()); } return codeClassifyDO2VOs(classifyDOS); @@ -898,7 +960,7 @@ Map<String/**璺緞**/,String/**涓婚敭**/> oidPathMap = new HashMap<>(); //鎴戜滑闇�瑕佹煡璇㈡墍鏈夊凡缁忓瓨鍦ㄧ殑鍒嗙被锛屼富瑕佹槸璺緞锛岀敤鏉ュ垽鏂垎绫荤殑鏁版嵁 - List<CodeClassify> existClassifyDOs = codeClassifyMapper.selectAllLevelChildHasPath("",null); + List<CodeClassify> existClassifyDOs = codeClassifyMapper.selectAllLevelChildHasPath("",null,AuthUtil.getTenantId()); Map<String/**璺緞**/, CodeClassify/**宸茬粡瀛樺湪鐨勬暟鎹�**/> pathDOMap = Optional.ofNullable(existClassifyDOs).orElse(new ArrayList<>()).stream().collect(Collectors.toMap(s -> { String path = s.getPath(); if(StringUtils.isNotBlank(path) && path.startsWith("#")){ @@ -1234,7 +1296,7 @@ return null; } List<Tree> treeList = trees.stream().filter(tree -> !CollectionUtils.isEmpty(btmTypeVOS.stream().filter(btmType -> { - if(Objects.equals(tree.getAttributes().get("id"), btmType.getId())){ + if(Objects.equals(tree.getAttributes().get("btmTypeId"), btmType.getId())){ tree.getAttributes().put("btmTypeOid",btmType.getOid()); return true; } @@ -1327,4 +1389,6 @@ return codeClassifyMapper.selectCount(wrapper).intValue(); } + + } -- Gitblit v1.9.3