From 3534b13391b2a6152d0f91b72fda343b13a947cb Mon Sep 17 00:00:00 2001 From: ludc <ludc@vci-tech.com> Date: 星期三, 22 一月 2025 15:55:27 +0800 Subject: [PATCH] 分类码段码值管理查询去除null的情况,分类码段生成编码时去除码值为null的情况 --- Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeSynonymServiceImpl.java | 417 ++++++++++++++++++++++------------------------------------ 1 files changed, 159 insertions(+), 258 deletions(-) diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeSynonymServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeSynonymServiceImpl.java index 6b75347..3181924 100644 --- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeSynonymServiceImpl.java +++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeSynonymServiceImpl.java @@ -1,278 +1,179 @@ +/* + * Copyright (c) 2018-2028, Chill Zhuang All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * Neither the name of the dreamlu.net developer nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * Author: Chill 搴勯獮 (smallchill@163.com) + */ package com.vci.ubcs.code.service.impl; - +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.baomidou.mybatisplus.extension.toolkit.SqlHelper; +import com.github.yulichang.wrapper.MPJLambdaWrapper; +import com.vci.ubcs.code.constant.FrameWorkDefaultValueConstant; +import com.vci.ubcs.code.entity.CodeClassifyTemplate; +import com.vci.ubcs.code.entity.CodeClassifyTemplateAttr; +import com.vci.ubcs.code.entity.CodeSynonym; import com.vci.ubcs.code.mapper.CodeSynonymMapper; -import com.vci.ubcs.code.entity.CodeSynonymDO; -import com.vci.ubcs.code.service.CodeSynonymServiceI; -import com.vci.starter.revision.service.RevisionModelUtil; -import com.vci.starter.web.exception.VciBaseException; -import com.vci.starter.web.pagemodel.BaseResult; -import com.vci.starter.web.pagemodel.DataGrid; -import com.vci.starter.web.pagemodel.PageHelper; -import com.vci.starter.web.util.BeanUtilForVCI; -import com.vci.starter.web.util.VciBaseUtil; -import com.vci.web.pageModel.BatchCBO; -import com.vci.web.service.WebBoServiceI; -import org.apache.commons.lang.StringUtils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import com.vci.ubcs.code.dto.CodeSynonymDTO; -import com.vci.ubcs.code.vo.pagemodel.CodeSynonymVO; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.annotation.Lazy; +import com.vci.ubcs.code.service.ICodeClassifyTemplateAttrService; +import com.vci.ubcs.code.service.ICodeSynonymService; +import com.vci.ubcs.code.vo.pagemodel.CodeClassifyTemplateAttrVO; +import com.vci.ubcs.code.wrapper.CodeClassifyTemplateAttrWrapper; +import com.vci.ubcs.starter.enumpack.CodeTableNameEnum; +import com.vci.ubcs.starter.util.DefaultAttrAssimtUtil; +import com.vci.ubcs.starter.util.MdmBtmTypeConstant; +import com.vci.ubcs.starter.util.UBCSCondition; +import lombok.AllArgsConstructor; +import org.springblade.core.log.exception.ServiceException; +import org.springblade.core.tool.api.R; +import org.springblade.core.tool.utils.Func; import org.springframework.stereotype.Service; -import org.springframework.util.CollectionUtils; -import javax.annotation.Resource; -import java.util.*; - -import static com.vci.frameworkcore.constant.FrameWorkBusLangCodeConstant.*; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; /** - * 鍚屼箟璇嶉厤缃湇鍔� - * @author weidy - * @date 2022-02-17 + * 杩戜箟璇嶇淮鎶� 鏈嶅姟瀹炵幇绫� + * + * @author yuxc + * @since 2023-04-04 */ @Service -public class CodeSynonymServiceImpl implements CodeSynonymServiceI { +@AllArgsConstructor +public class CodeSynonymServiceImpl extends ServiceImpl<CodeSynonymMapper, CodeSynonym> implements ICodeSynonymService { - /** - * 鏃ュ織 - */ - private Logger logger = LoggerFactory.getLogger(getClass()); + private final CodeSynonymMapper codeSynonymMapper; - /** - * 鏁版嵁鎿嶄綔灞� - */ - @Resource - private CodeSynonymMapper codeSynonymMapper; + private final ICodeClassifyTemplateAttrService codeClassifyTemplateAttrService; - /** - * 涓氬姟绫诲瀷鎿嶄綔鐨勬湇鍔� - */ - @Autowired - @Lazy - private WebBoServiceI boService; + /** + * 杩戜箟璇嶇淮鎶� 鏂板 + * @param codeSynonym + * @return + */ + @Override + public boolean addSave(CodeSynonym codeSynonym) { + if(codeSynonym.getSynonymValue().isEmpty() || codeSynonym.getSourceValue().isEmpty()){ + throw new ServiceException("婧愬�煎拰杩戜箟璇嶄笉鑳戒负绌�"); + } + DefaultAttrAssimtUtil.addDefaultAttrAssimt(codeSynonym, MdmBtmTypeConstant.CODE_SYNONYM); + // 娣诲姞鏃堕粯璁や负缂栬緫涓� + codeSynonym.setLcStatus(FrameWorkDefaultValueConstant.FRAMEWORK_RELEASE_RELEASED); + return SqlHelper.retBool(codeSynonymMapper.insert(codeSynonym)); + } - /** - * 瀵硅薄鐨勬搷浣� - */ - @Autowired - private RevisionModelUtil revisionModelUtil; + /** + * 杩戜箟璇嶇淮鎶� 淇敼 + * @param codeSynonym + * @return + */ + @Override + public boolean editSave(CodeSynonym codeSynonym) { + DefaultAttrAssimtUtil.updateDefaultAttrAssimt(codeSynonym); + return SqlHelper.retBool(codeSynonymMapper.updateById(codeSynonym)); + } + /** + * 杩戜箟璇嶇姸鎬佸仠鐢ㄥ惎鐢� + * @param map + * @return + */ + @Override + public boolean updateStatus(Map<String, String> map) { + if(Func.isEmpty(map.getOrDefault("oid",""))){ + throw new ServiceException("蹇呬紶鍙傛暟oid涓嶈兘涓虹┖锛�"); + } + if(Func.isEmpty(map.getOrDefault("lcStatus",""))){ + throw new ServiceException("鐢熷懡鍛ㄦ湡鐘舵�佷笉鑳戒负绌猴紒"); + } + LambdaUpdateWrapper<CodeSynonym> updateWrapper = Wrappers.<CodeSynonym>update() + .lambda().eq(CodeSynonym::getOid, map.get("oid")) + .set(CodeSynonym::getLcStatus, map.get("lcStatus")); + return SqlHelper.retBool(this.codeSynonymMapper.update(null,updateWrapper)); + } - /** - * 鏌ヨ鎵�鏈夌殑鍚屼箟璇嶉厤缃� - * @param conditionMap 鏌ヨ鏉′欢 - * @param pageHelper 鍒嗛〉鍜屾帓搴� - * @return 鎵ц缁撴灉 - * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父 - */ - @Override - public DataGrid<CodeSynonymVO> gridCodeSynonym(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException { - if (pageHelper == null) { - pageHelper = new PageHelper(-1); - } - pageHelper.addDefaultDesc("createTime"); - List<CodeSynonymDO> doList = codeSynonymMapper.selectByCondition(conditionMap,pageHelper); - DataGrid<CodeSynonymVO> dataGrid=new DataGrid<CodeSynonymVO>(); - if (!CollectionUtils.isEmpty(doList)) { - dataGrid.setData(codeSynonymDO2VOs(doList)); - dataGrid.setTotal(VciBaseUtil.getInt(String.valueOf(codeSynonymMapper.countByCondition(conditionMap)))); - } - return dataGrid; - } + /** + * 鍒犻櫎 + * @param oids + * @return + */ + @Override + public R deleteDataByIds(String oids) { + if(Func.isBlank(oids)){ + return R.fail("鏈幏鍙栫殑鍙傛暟oid"); + } + List<Long> oidList = Func.toLongList(oids); + LambdaQueryWrapper<CodeClassifyTemplateAttr> wrapper = Wrappers.<CodeClassifyTemplateAttr>query().lambda(); + oidList.stream().forEach(item->{ + wrapper.or().like(CodeClassifyTemplateAttr::getSysonymRuleOids, item); + }); + List<CodeClassifyTemplateAttr> voList = codeClassifyTemplateAttrService.selectByWrapper(wrapper); + if(!voList.isEmpty()){ + return R.fail("鍒犻櫎鐨勮鍒欎腑瀛樺湪琚紩鐢ㄧ殑杩戜箟璇嶆煡璇㈣鍒欙紒"); + } + return R.status(SqlHelper.retBool(codeSynonymMapper.deleteBatchIds(oidList))); + } - /** - * 鎵归噺鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞� - * @param codeSynonymDOs 鏁版嵁瀵硅薄鍒楄〃 - * @return 鏄剧ず瀵硅薄 - * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呬笉瀛樺湪鐨勬椂鍊欎細鎶涘嚭寮傚父 - */ - @Override - public List<CodeSynonymVO> codeSynonymDO2VOs(Collection<CodeSynonymDO> codeSynonymDOs) throws VciBaseException{ - List<CodeSynonymVO> voList = new ArrayList<CodeSynonymVO>(); - if(!CollectionUtils.isEmpty(codeSynonymDOs)){ - for(CodeSynonymDO s: codeSynonymDOs){ - CodeSynonymVO vo = codeSynonymDO2VO(s); - if(vo != null){ - voList.add(vo); - } - } - } - return voList; - } + /** + * 鏌ョ湅杩戜箟璇嶆煡璇㈣鍒欎娇鐢ㄨ寖鍥� + * @param oid + * @return + */ + @Override + public List<CodeClassifyTemplateAttrVO> listUseRangeInClsTempAttr(String oid) { + MPJLambdaWrapper<CodeClassifyTemplateAttr> mpjLambdaWrapper = new MPJLambdaWrapper<>(CodeClassifyTemplateAttr.class, CodeTableNameEnum.PL_CODE_CLSTEMPATTR.getText()) + .selectAll(CodeClassifyTemplateAttr.class) + .selectAs(CodeClassifyTemplate::getName,CodeClassifyTemplateAttr::getClassifyTemplateOidName) + .leftJoin(CodeClassifyTemplate.class,CodeTableNameEnum.PL_CODE_CLSTEMPLATE.getText(),CodeClassifyTemplate::getOid,CodeClassifyTemplateAttr::getClassifyTemplateOid) + .like(CodeClassifyTemplateAttr::getSysonymRuleOids, oid); + List<CodeClassifyTemplateAttr> voList = codeClassifyTemplateAttrService.selectByWrapper(mpjLambdaWrapper); + return CodeClassifyTemplateAttrWrapper.build().listVO(voList); + } - /** - * 鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞� - * @param codeSynonymDO 鏁版嵁瀵硅薄 - * @return 鏄剧ず瀵硅薄 - * @throws VciBaseException 鎷疯礉灞炴�у嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父 - */ - @Override - public CodeSynonymVO codeSynonymDO2VO(CodeSynonymDO codeSynonymDO) throws VciBaseException{ - CodeSynonymVO vo = new CodeSynonymVO(); - if(codeSynonymDO != null){ - BeanUtilForVCI.copyPropertiesIgnoreCase(codeSynonymDO,vo); - //濡傛灉鏈塴cstatus鐨勭被鐨勮瘽 + @Override + public String selectNameByWrapper(LambdaQueryWrapper<CodeSynonym> wrappers) { + List<CodeSynonym> codeSynonymsList = codeSynonymMapper.selectList(wrappers); + if(codeSynonymsList.isEmpty()){ + return ""; + } + StringBuilder res = new StringBuilder(); + codeSynonymsList.stream().forEach(item->{ + res.append(item.getName()).append("(").append(item.getId()).append(")").append(","); + }); + return res.toString().replaceAll(",$", ""); + } - } - return vo; - } + /** + * 鑾峰彇杩戜箟璇嶆煡璇㈣鍒� + * @return + */ + @Override + public Map<String, List<CodeSynonym>> getCodeSynonymByOids(Map<String, CodeClassifyTemplateAttrVO> sysonymAttrMap) { + if(sysonymAttrMap.isEmpty()){ + return new HashMap<>(); + } + Map<String, List<CodeSynonym>> resMap = new HashMap<>(); + for (String key : sysonymAttrMap.keySet()) { + List<String> oids = Func.toStrList(sysonymAttrMap.get(key).getSysonymRuleOids()); + List<CodeSynonym> codeSynonyms = codeSynonymMapper.selectBatchIds(oids); + resMap.put(key,codeSynonyms); + } + return resMap; + } - /** - * 澧炲姞鍚屼箟璇嶉厤缃� - * @param codeSynonymDTO 鍚屼箟璇嶉厤缃暟鎹紶杈撳璞� - * @return 鎵ц缁撴灉 - * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父 - */ - @Override - public CodeSynonymVO addSave(CodeSynonymDTO codeSynonymDTO) throws VciBaseException{ - VciBaseUtil.alertNotNull(codeSynonymDTO,"闇�瑕佹坊鍔犵殑鏁版嵁瀵硅薄"); - //灏咲TO杞崲涓篋O - CodeSynonymDO codeSynonymDO = new CodeSynonymDO(); - BeanUtilForVCI.copyPropertiesIgnoreCase(codeSynonymDTO,codeSynonymDO); - codeSynonymMapper.insert(codeSynonymDO); - return codeSynonymDO2VO(codeSynonymDO); - } - - /** - * 淇敼鍚屼箟璇嶉厤缃� - * @param codeSynonymDTO 鍚屼箟璇嶉厤缃暟鎹紶杈撳璞� - * @return 鎵ц缁撴灉 - * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父 - */ - @Override - public CodeSynonymVO editSave(CodeSynonymDTO codeSynonymDTO) throws VciBaseException{ - VciBaseUtil.alertNotNull(codeSynonymDTO,"鏁版嵁瀵硅薄",codeSynonymDTO.getOid(),"鍚屼箟璇嶉厤缃富閿�"); - //灏咲TO杞崲涓篋O - CodeSynonymDO codeSynonymDO = selectByOid(codeSynonymDTO.getOid()); - revisionModelUtil.copyFromDTOIgnore(codeSynonymDTO,codeSynonymDO); - codeSynonymMapper.updateByPrimaryKey(codeSynonymDO); - return codeSynonymDO2VO(codeSynonymDO); - } - - - /** - * 鏍¢獙鏄惁鍙互鍒犻櫎锛屽鏋滃瓨鍦ㄤ笅绾э紝骞朵笖涓嬬骇鏈夋暟鎹紩鐢ㄥ垯涓嶈兘鍒犻櫎 - * @param codeSynonymDTO 鏁版嵁浼犺緭瀵硅薄 - * @param codeSynonymDO 鏁版嵁搴撲腑鐨勬暟鎹璞� - * @return success涓簍rue涓哄彲浠ュ垹闄わ紝false琛ㄧず鏈夋暟鎹紩鐢紝obj涓簍rue琛ㄧず鏈変笅绾� - */ - private BaseResult checkIsCanDeleteForDO(CodeSynonymDTO codeSynonymDTO, CodeSynonymDO codeSynonymDO) { - CodeSynonymDO tsDO = new CodeSynonymDO(); - BeanUtilForVCI.copyPropertiesIgnoreCase(codeSynonymDTO,tsDO); - boService.checkTs(tsDO); - if(!checkIsLinked(codeSynonymDO.getOid())) { - return BaseResult.success(); - }else{ - return BaseResult.fail(DATA_LINKED_NOT_DELETE,new String[]{""}); - } - } - - /** - * 鏍¢獙鏄惁琚紩鐢� - * @param oid 涓婚敭 - * @throws VciBaseException 琚紩鐢ㄧ殑鏃跺�欎細鎶涘嚭寮傚父 - */ - private boolean checkIsLinked(String oid) throws VciBaseException{ - //TODO 娣诲姞闇�瑕佹牎楠屽紩鐢ㄧ殑鍦版柟 - return false; - } - - /** - * 鍒犻櫎鍚屼箟璇嶉厤缃� - * @param codeSynonymDTO 鍚屼箟璇嶉厤缃暟鎹紶杈撳璞★紝oid鍜宼s闇�瑕佷紶杈� - * @return 鍒犻櫎缁撴灉鍙嶉锛氾細success锛氭垚鍔燂紝fail锛氬け璐� - * @throws VciBaseException 鍙傛暟涓虹┖锛岃寮曠敤鏃舵姏鍑哄紓甯� - */ - @Override - public BaseResult deleteCodeSynonym(CodeSynonymDTO codeSynonymDTO) throws VciBaseException{ - VciBaseUtil.alertNotNull(codeSynonymDTO,"鍚屼箟璇嶉厤缃暟鎹璞�",codeSynonymDTO.getOid(),"鍚屼箟璇嶉厤缃殑涓婚敭"); - CodeSynonymDO codeSynonymDO = selectByOid(codeSynonymDTO.getOid()); - BaseResult baseResult = checkIsCanDeleteForDO(codeSynonymDTO,codeSynonymDO); - if(baseResult.isSuccess()) { - }else{ - return baseResult; - } - //鎵ц鍒犻櫎鎿嶄綔 - BatchCBO batchCBO = codeSynonymMapper.deleteByPrimaryKey(codeSynonymDO.getOid()); - return (batchCBO!=null && batchCBO.getDeleteCbos() !=null &&batchCBO.getDeleteCbos().size() > 0)?BaseResult.successMsg(DELETE_SUCCESS):BaseResult.fail(DELETE_FAIL); - } - - /** - * 涓婚敭鑾峰彇鍚屼箟璇嶉厤缃� - * @param oid 涓婚敭 - * @return 鍚屼箟璇嶉厤缃樉绀哄璞� - * @throws VciBaseException 鍙傛暟涓虹┖锛屾暟鎹笉瀛樺湪鏃朵細鎶涘嚭寮傚父 - */ - @Override - public CodeSynonymVO getObjectByOid(String oid) throws VciBaseException{ - return codeSynonymDO2VO(selectByOid(oid)); - } - - /** - * 涓婚敭鏌ヨ鏁版嵁瀵硅薄 - * @param oid 涓婚敭 - * @return 鏁版嵁瀵硅薄 - * @throws VciBaseException 鍙傛暟涓虹┖锛屽苟涓旀暟鎹笉瀛樺湪鐨勬椂鍊欎細鎶涘嚭寮傚父 - */ - private CodeSynonymDO selectByOid(String oid) throws VciBaseException{ - VciBaseUtil.alertNotNull(oid,"涓婚敭"); - CodeSynonymDO codeSynonymDO = codeSynonymMapper.selectByPrimaryKey(oid.trim()); - if(codeSynonymDO == null || StringUtils.isBlank(codeSynonymDO.getOid())){ - throw new VciBaseException(DATA_OID_NOT_EXIST); - } - return codeSynonymDO; - } - - /** - * 涓婚敭鎵归噺鑾峰彇鍚屼箟璇嶉厤缃� - * @param oidCollections 涓婚敭闆嗗悎锛屼絾鏄彈鎬ц兘褰卞搷锛屽缓璁竴娆℃煡璇笉瓒呰繃10000涓� - * @return 鍚屼箟璇嶉厤缃樉绀哄璞� - * @throws VciBaseException 鏌ヨ鍑虹幇寮傚父鏃朵細鎶涘嚭 - */ - @Override - public Collection<CodeSynonymVO> listCodeSynonymByOids(Collection<String> oidCollections) throws VciBaseException{ - VciBaseUtil.alertNotNull(oidCollections,"鏁版嵁瀵硅薄涓婚敭闆嗗悎"); - List<CodeSynonymDO> codeSynonymDOList = listCodeSynonymDOByOidCollections(oidCollections); - return codeSynonymDO2VOs(codeSynonymDOList); - } - - /** - * 浣跨敤涓婚敭闆嗗悎鏌ヨ鏁版嵁瀵硅薄 - * @param oidCollections 涓婚敭鐨勯泦鍚� - * @return 鏁版嵁瀵硅薄鍒楄〃 - */ - private List<CodeSynonymDO> listCodeSynonymDOByOidCollections(Collection<String> oidCollections){ - List<CodeSynonymDO> codeSynonymDOList = new ArrayList<CodeSynonymDO>(); - if(!CollectionUtils.isEmpty(oidCollections)){ - Collection<Collection<String>> oidCollectionsList = VciBaseUtil.switchCollectionForOracleIn(oidCollections); - for(Collection<String> oids: oidCollectionsList){ - List<CodeSynonymDO> tempDOList = codeSynonymMapper.selectByPrimaryKeyCollection(oids); - if(!CollectionUtils.isEmpty(tempDOList)){ - codeSynonymDOList.addAll(tempDOList); - } - } - } - return codeSynonymDOList; - } - - - - /** - * 鍙傜収鍚屼箟璇嶉厤缃垪琛� - * @param conditionMap 鏌ヨ鏉′欢 - * @param pageHelper 鍒嗛〉鍜屾帓搴� - * @return 鍚屼箟璇嶉厤缃樉绀哄璞″垪琛紝鐢熸晥鐨勫唴瀹� - * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父 - */ - @Override - public DataGrid<CodeSynonymVO> refDataGridCodeSynonym(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException{ - if(conditionMap == null){ - conditionMap = new HashMap<String, String>(); - } - return gridCodeSynonym(conditionMap,pageHelper); - } } - -- Gitblit v1.9.3