From 27cddefb0cb28da699954ba1a1756d6bcabafbbe Mon Sep 17 00:00:00 2001
From: ludc <ludc@vci-tech.com>
Date: 星期三, 05 三月 2025 17:41:29 +0800
Subject: [PATCH] 集成申码接口调整:当码值按照约定传表名为空的业务场景下传null校验问题和码值组装问题。

---
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyTemplateAttrServiceImpl.java |  112 +++++++++++++++++++++++++++++++++++++------------------
 1 files changed, 75 insertions(+), 37 deletions(-)

diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyTemplateAttrServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyTemplateAttrServiceImpl.java
index 10740cd..1874a0c 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyTemplateAttrServiceImpl.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyTemplateAttrServiceImpl.java
@@ -2,47 +2,56 @@
 
 import com.alibaba.fastjson.JSONObject;
 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.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
-import com.vci.ubcs.code.constant.MdmBtmTypeConstant;
+
 import com.vci.ubcs.code.dto.CodeClassifyTemplateAttrDTO;
+import com.vci.ubcs.code.entity.CodeClassify;
 import com.vci.ubcs.code.entity.CodeClassifyTemplateAttr;
 import com.vci.ubcs.code.entity.CodeClassifyTemplate;
+import com.vci.ubcs.code.entity.CodeSynonym;
 import com.vci.ubcs.code.enumpack.CodeLevelTypeEnum;
 import com.vci.ubcs.code.mapper.CodeClassifyTemplateAttrMapper;
 import com.vci.ubcs.code.mapper.CodeClassifyTemplateMapper;
 import com.vci.ubcs.code.service.ICodeClassifyTemplateAttrService;
+import com.vci.ubcs.code.service.ICodeReferConfigService;
+import com.vci.ubcs.code.service.ICodeSynonymService;
 import com.vci.ubcs.code.service.ICodeTempphaseService;
+import com.vci.ubcs.code.vo.CodeReferConfigVO;
 import com.vci.ubcs.code.vo.pagemodel.CodeClassifyTemplateAttrVO;
+import com.vci.ubcs.code.vo.pagemodel.CodeSynonymVO;
+import com.vci.ubcs.code.vo.pagemodel.UIFormReferVO;
 import com.vci.ubcs.code.wrapper.CodeClassifyTemplateAttrWrapper;
-import com.vci.ubcs.omd.feign.IAttributeClient;
 import com.vci.ubcs.omd.feign.IBtmTypeClient;
 import com.vci.ubcs.omd.vo.BtmTypeAttributeVO;
 import com.vci.ubcs.omd.vo.BtmTypeVO;
 import com.vci.ubcs.starter.exception.VciBaseException;
 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.PatternUtil;
 import com.vci.ubcs.starter.util.UBCSCondition;
 import com.vci.ubcs.starter.web.enumpck.VciFieldTypeEnum;
 import com.vci.ubcs.starter.web.pagemodel.*;
 import com.vci.ubcs.starter.web.pagemodel.PageHelper;
-import com.vci.ubcs.starter.web.util.BeanUtil;
 import com.vci.ubcs.starter.web.util.BeanUtilForVCI;
 import com.vci.ubcs.starter.web.util.VciBaseUtil;
 import com.vci.ubcs.starter.web.util.VciDateUtil;
 import com.vci.ubcs.system.entity.DictBiz;
 import com.vci.ubcs.system.feign.IDictBizClient;
-import com.vci.ubcs.core.log.exception.ServiceException;
+import org.springblade.core.log.exception.ServiceException;
 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.R;
-import org.springframework.beans.BeanUtils;
+import org.springblade.core.tool.utils.Func;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.cglib.beans.BeanMap;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -76,6 +85,9 @@
 	CodeClassifyTemplateMapper codeClassifyTemplateMapper;
 
 	@Resource
+	private ICodeReferConfigService codeReferConfigService;
+
+	@Resource
 	@Lazy
 	ICodeTempphaseService codeTempphaseService;
 
@@ -90,6 +102,10 @@
 	 */
 	@Resource
 	private IBtmTypeClient btmTypeClient;
+
+	@Resource
+	@Lazy
+	private ICodeSynonymService codeSynonymService;
 
 	/**
 	 * 鏌ヨ鎵�鏈夌殑涓婚搴撳垎绫荤殑妯℃澘灞炴��
@@ -200,12 +216,20 @@
 	 * @throws VciBaseException 鎷疯礉灞炴�у嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
 	 */
 	@Override
-	public  CodeClassifyTemplateAttrVO codeClassifyTemplateAttrDO2VO(CodeClassifyTemplateAttr codeClassifyTemplateAttrDO) throws VciBaseException{
+	public CodeClassifyTemplateAttrVO codeClassifyTemplateAttrDO2VO(CodeClassifyTemplateAttr codeClassifyTemplateAttrDO) throws VciBaseException{
 		CodeClassifyTemplateAttrVO vo = new CodeClassifyTemplateAttrVO();
 		if(codeClassifyTemplateAttrDO != null){
 			BeanUtilForVCI.copyPropertiesIgnoreCase(codeClassifyTemplateAttrDO,vo);
 			//濡傛灉鏈塴cstatus鐨勭被鐨勮瘽
 			vo.setAttributeDataTypeText(VciFieldTypeEnum.getTextByValue(vo.getAttributeDataType()));
+			if(Func.isNotBlank(codeClassifyTemplateAttrDO.getSysonymRuleOids())){
+				vo.setSysonymRuleOidsText(
+					codeSynonymService.selectNameByWrapper(
+						Wrappers.<CodeSynonym>query()
+							.lambda().in(CodeSynonym::getOid, Func.toStrList(",", codeClassifyTemplateAttrDO.getSysonymRuleOids()))
+					)
+				);
+			}
 		}
 		return vo;
 	}
@@ -299,12 +323,12 @@
 		pageHelper.addDefaultAsc("ordernum");
 		Query query = new Query();
 		query.setAscs("ordernum");
+		query.setSize(pageHelper.getLimit());
 		if(pageHelper.getLimit() != -1){
-			query.setSize(pageHelper.getLimit());
 			query.setCurrent(pageHelper.getPage());
 		}
 		IPage<CodeClassifyTemplateAttr> doList = baseMapper.
-			selectPage(Condition.getPage(query), UBCSCondition.getQueryWrapperByMapString(conditionMap,CodeClassifyTemplateAttr.class));
+			selectPage(Condition.getPage(query), UBCSCondition.getQueryWrapperByMapString(conditionMap,CodeClassifyTemplateAttr.class).orderByAsc("ordernum"));
 		if (!CollectionUtils.isEmpty(doList.getRecords())) {
 			dataGrid.setData(codeClassifyTemplateAttrDO2VOs(doList.getRecords()));
 			dataGrid.setTotal(VciBaseUtil.getInt(String.valueOf(baseMapper.selectCount(UBCSCondition.getQueryWrapperByMapString(conditionMap,CodeClassifyTemplateAttr.class)))));
@@ -356,8 +380,10 @@
 			throw new VciBaseException("妯℃澘灞炴�ц嫳鏂囧悕绉般�恵0}銆戦噸澶�",new String[]{ repeatIdList.stream().collect(Collectors.joining(","))});
 		}
 
-		//妯℃澘oid
+		// 妯℃澘oid
 		String CLASSIFYTEMPLATEOID = null;
+		//
+		CodeReferConfigVO codeReferConfigVO = null;
 		//杞崲
 		List<CodeClassifyTemplateAttr> codeClassifyTemplateAttrDOInsert = new ArrayList<CodeClassifyTemplateAttr>();
 		List<String> prefix = new ArrayList<>();
@@ -368,6 +394,12 @@
 			//灏咲TO杞崲涓篋O
 			CodeClassifyTemplateAttr codeClassifyTemplateAttrDO = new CodeClassifyTemplateAttr();
 			BeanUtilForVCI.copyPropertiesIgnoreCase(codeClassifyTemplateAttrDTO,codeClassifyTemplateAttrDO);
+			codeClassifyTemplateAttrDO.setCreateTime(codeClassifyTemplateAttrDO.getCreateTime()!=null?codeClassifyTemplateAttrDO.getCreateTime():new Date());
+			// codeClassifyTemplateAttrDO.setCreator(String.valueOf(AuthUtil.getUser().getUserId()));
+			codeClassifyTemplateAttrDO.setCreator(String.valueOf(AuthUtil.getUser().getAccount()));
+			codeClassifyTemplateAttrDO.setLastModifyTime(new Date());
+			// codeClassifyTemplateAttrDO.setLastModifier(String.valueOf(AuthUtil.getUser().getUserId()));
+			codeClassifyTemplateAttrDO.setLastModifier(String.valueOf(AuthUtil.getUser().getAccount()));
 			codeClassifyTemplateAttrDOInsert.add(codeClassifyTemplateAttrDO);
 
 			if(StringUtils.isNotBlank(codeClassifyTemplateAttrDO.getPrefixValue())){
@@ -420,14 +452,14 @@
 				CLASSIFYTEMPLATEOID = codeClassifyTemplateAttrDTO.getClassifyTemplateOid();
 			}
 
+			// 鍙傜収閰嶇疆鏄惁闇�瑕佹寔涔呭寲
+			codeReferConfigVO = JSONObject.parseObject(codeClassifyTemplateAttrDTO.getReferConfig(), CodeReferConfigVO.class);
+			if(Func.isNotEmpty(codeReferConfigVO) && codeReferConfigVO.getIsPersistence()=="true"){
+				codeReferConfigService.insert(codeReferConfigVO);
+			}
 		}
 
-		//鎵ц鏁版嵁淇濆瓨鎿嶄綔
-//		WebUtil.setPersistence(false);//涓嶆墽琛屼繚瀛�
-
 		//鍏堥兘鍒犱簡
-//		VciQueryWrapperForDO deleteAttrWrapper = new VciQueryWrapperForDO(CodeClassifyTemplateAttrDO.class);
-//		deleteAttrWrapper.addQueryMap("CLASSIFYTEMPLATEOID",CLASSIFYTEMPLATEOID);
 		Map<String,Object> condition = new HashMap<>();
 		condition.put("CLASSIFYTEMPLATEOID",CLASSIFYTEMPLATEOID);
 		List<CodeClassifyTemplateAttr> codeClassifyTemplateAttrDODelete = baseMapper.selectByMap(condition);
@@ -437,11 +469,9 @@
 		for (CodeClassifyTemplateAttr codeClassifyTemplateAttrDO:codeClassifyTemplateAttrDODelete){
 			oids.add(codeClassifyTemplateAttrDO.getOid());
 		}
-//		BatchCBO batchCBOTemplateDelete = new BatchCBO();
 		if(!CollectionUtils.isEmpty(oids)){
 			this.removeBatchByIds(oids);
 		}
-
 		//鍐嶆柊澧�
 		if(!CollectionUtils.isEmpty(codeClassifyTemplateAttrDOInsert)){
 			this.saveBatch(codeClassifyTemplateAttrDOInsert);
@@ -453,42 +483,34 @@
 
 		}
 
-
-//		SessionInfo sessionInfo = VciBaseUtil.getCurrentUserSessionInfo();
 		//澶勭悊鍙緭鍙�夌殑瀛楃
 		if(!CollectionUtils.isEmpty(prefix)){
 			for (String s : prefix) {
 				DictBiz dictBiz = new DictBiz();
 				dictBiz.setCode(MdmBtmTypeConstant.CODE_CLASSIFY_TEMPLATE_ATTR);
-				dictBiz.setDictKey(s);
-				dictBiz.setDictValue("prefix");
+				dictBiz.setDictKey("prefix");
+				dictBiz.setDictValue(s);
 				iDictBizClient.getCheck(dictBiz) ;
 			}
-//				.saveBySameNamespaceAndFlag(MdmBtmTypeConstant.CODE_CLASSIFY_TEMPLATE_ATTR,"prefix",prefix,sessionInfo);
 		}
 		if(!CollectionUtils.isEmpty(suffix)){
 			for (String s : suffix) {
 				DictBiz dictBiz = new DictBiz();
 				dictBiz.setCode(MdmBtmTypeConstant.CODE_CLASSIFY_TEMPLATE_ATTR);
-				dictBiz.setDictKey(s);
-				dictBiz.setDictValue("suffix");
+				dictBiz.setDictKey("suffix");
+				dictBiz.setDictValue(s);
 				iDictBizClient.getCheck(dictBiz) ;
 			}
-//			charService.saveBySameNamespaceAndFlag(MdmBtmTypeConstant.CODE_CLASSIFY_TEMPLATE_ATTR,"suffix",suffix,sessionInfo);
 		}
 		if(!CollectionUtils.isEmpty(dateFormates)){
 			for (String s : dateFormates) {
 				DictBiz dictBiz = new DictBiz();
 				dictBiz.setCode(MdmBtmTypeConstant.CODE_CLASSIFY_TEMPLATE_ATTR);
-				dictBiz.setDictKey(s);
-				dictBiz.setDictValue("dateFormates");
+				dictBiz.setDictKey("dateFormates");
+				dictBiz.setDictValue(s);
 				iDictBizClient.getCheck(dictBiz) ;
 			}
-//			charService.saveBySameNamespaceAndFlag(MdmBtmTypeConstant.CODE_CLASSIFY_TEMPLATE_ATTR,"dateFormates",dateFormates,sessionInfo);
 		}
-
-//		WebUtil.setPersistence(true);//鎵ц淇濆瓨
-//		boService.persistenceBatch(batchCBOTemplateDelete);//涓�璧锋墽琛屼繚瀛�
 		return codeClassifyTemplateAttrDO2VOs(codeClassifyTemplateAttrDOInsert);
 	}
 
@@ -713,8 +735,8 @@
 		}
 		//杩欎釜涓氬姟绫诲瀷涓嬬殑鎵�鏈夊睘鎬�
 		R<BtmTypeVO> btmTypeVOR = btmTypeClient.getAllAttributeByBtmId(codeClassifyTemplateDO.getBtmTypeId());
-		if(btmTypeVOR.getCode() != 200){
-			throw new ServiceException("涓氬姟绫诲瀷feign璋冪敤澶辫触锛�");
+		if(!btmTypeVOR.isSuccess()){
+			throw new ServiceException("涓氬姟绫诲瀷feign璋冪敤閿欒锛�");
 		}
 
 		//杩欎釜妯℃澘涓嬪凡缁忔湁鐨勫睘鎬�
@@ -722,18 +744,18 @@
 		// queryWrapper.addQueryMap("CLASSIFYTEMPLATEOID",templateAttrOid);
 		Map<String,Object> condition = new HashMap<>(1);
 		condition.put("CLASSIFYTEMPLATEOID",templateAttrOid);
+
 		List<CodeClassifyTemplateAttr> codeClassifyTemplateAttrDOList = baseMapper.selectByMap(condition);
 
-		List<String> btmOids = new ArrayList<String>();
+		List<String> btmIds = new ArrayList<String>();
 		for (CodeClassifyTemplateAttr codeClassifyTemplateAttrDO:codeClassifyTemplateAttrDOList){
-			btmOids.add(codeClassifyTemplateAttrDO.getId());
+			btmIds.add(codeClassifyTemplateAttrDO.getId());
 		}
 
 		//杩囨护鎺夊凡缁忓瓨鍦ㄧ殑灞炴��
 		List<BtmTypeAttributeVO> boAttrss = new ArrayList<BtmTypeAttributeVO>();
-
 		for (BtmTypeAttributeVO osBtmTypeAttributeVO:btmTypeVOR.getData().getAttributes()){
-			if(!btmOids.contains(osBtmTypeAttributeVO.getId())){
+			if(!btmIds.contains(osBtmTypeAttributeVO.getId())){
 				//鐪嬬湅鏄笉鏄湁妯$硦鏌ヨ
 				boolean inSearch = true;
 				if(StringUtils.isNotBlank(name) && !osBtmTypeAttributeVO.getName().contains(name.replace("*",""))){
@@ -743,10 +765,16 @@
 					inSearch = false;
 				}
 				if(inSearch) {
+					if(!VciFieldTypeEnum.VTDouble.equals(osBtmTypeAttributeVO.getAttrDataType())){
+						osBtmTypeAttributeVO.setPrecisionLength(null);
+						osBtmTypeAttributeVO.setScaleLength(null);
+					}
 					boAttrss.add(osBtmTypeAttributeVO);
 				}
 			}
 		}
+		// 鎸夌収id鍗囧簭鎺掑簭
+		boAttrss = boAttrss.stream().sorted(Comparator.comparing(BtmTypeAttributeVO::getId)).collect(Collectors.toList());
 		dataGrid.setData(boAttrss);
 		dataGrid.setTotal(boAttrss.size());
 		return dataGrid;
@@ -861,4 +889,14 @@
 		return R.success("鎿嶄綔鎴愬姛锛�");
 	}
 
+	/**
+	 * 浣跨敤鏌ヨ灏佽鍣ㄦ潵鏌ヨ
+	 * @param wrapper 鏌ヨ灏佽鍣�
+	 * @return 鏁版嵁瀵硅薄
+	 */
+	@Override
+	public List<CodeClassifyTemplateAttr> selectByWrapper(Wrapper wrapper) {
+		return codeClassifyTemplateAttrMapper.selectList(wrapper);
+	}
+
 }

--
Gitblit v1.9.3