From 29ab7773efe351a879ce9b3c29ab3ca50f4e62cb Mon Sep 17 00:00:00 2001
From: xiejun <xiejun@vci-tech.com>
Date: 星期三, 15 一月 2025 21:36:08 +0800
Subject: [PATCH] 产品型号集成,类型转换,人员组织加日志,申请接口引用码段值校验

---
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeReferConfigServiceImpl.java |  225 ++++++++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 195 insertions(+), 30 deletions(-)

diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeReferConfigServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeReferConfigServiceImpl.java
index 4b33006..2e90fe6 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeReferConfigServiceImpl.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeReferConfigServiceImpl.java
@@ -1,15 +1,42 @@
 package com.vci.ubcs.code.service.impl;
 
 
-import com.vci.ubcs.code.entity.CodeReferConfig;
+import com.alibaba.cloud.commons.lang.StringUtils;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.github.yulichang.base.MPJBaseServiceImpl;
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import com.vci.ubcs.code.dto.CodeReferConfigDTO;
+import com.vci.ubcs.code.entity.*;
 import com.vci.ubcs.code.mapper.CodeReferConfigMapper;
-import com.vci.ubcs.code.service.CodeReferConfigService;
+import com.vci.ubcs.code.service.ICodeReferConfigService;
+import com.vci.ubcs.code.service.ICodeShowFieldConfigService;
+import com.vci.ubcs.code.service.ICodeSrchCondConfigService;
+import com.vci.ubcs.code.vo.CodeReferConfigVO;
+import com.vci.ubcs.code.wrapper.CodeReferConfigWraper;
+import com.vci.ubcs.starter.exception.VciBaseException;
+import com.vci.ubcs.starter.util.DefaultAttrAssimtUtil;
+import com.vci.ubcs.starter.util.MdmBtmTypeConstant;
+import com.vci.ubcs.starter.web.pagemodel.BladeQueryObject;
+import com.vci.ubcs.starter.web.util.VciBaseUtil;
+import com.vci.ubcs.system.cache.NacosConfigCache;
+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.springblade.core.tool.utils.BeanUtil;
+import org.springblade.core.tool.utils.Func;
+import org.springframework.cglib.beans.BeanMap;
 import org.springframework.stereotype.Service;
-import org.springframework.data.domain.Page;
-import org.springframework.data.domain.PageImpl;
-import org.springframework.data.domain.PageRequest;
+import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+import static com.vci.ubcs.code.constant.FrameWorkLangCodeConstant.TS_NOT_PROCESS;
 
 /**
  * 鍙傜収閰嶇疆琛�(CodeReferconfig)琛ㄦ湇鍔″疄鐜扮被
@@ -18,9 +45,16 @@
  * @since 2023-05-19 17:48:02
  */
 @Service("CodeReferconfigService")
-public class CodeReferConfigServiceImpl implements CodeReferConfigService {
+public class CodeReferConfigServiceImpl extends MPJBaseServiceImpl<CodeReferConfigMapper,CodeReferConfig> implements ICodeReferConfigService {
+
     @Resource
     private CodeReferConfigMapper codeReferconfigMapper;
+
+	@Resource
+	private ICodeShowFieldConfigService ICodeShowFieldConfigService;
+
+	@Resource
+	private ICodeSrchCondConfigService ICodeSrchCondConfigService;
 
     /**
      * 閫氳繃ID鏌ヨ鍗曟潯鏁版嵁
@@ -29,55 +63,186 @@
      * @return 瀹炰緥瀵硅薄
      */
     @Override
-    public CodeReferConfig queryById(String oid) {
-        return this.codeReferconfigMapper.queryById(oid);
+    public CodeReferConfigVO queryById(String oid) {
+		CodeReferConfig codeReferConfig = this.codeReferconfigMapper.selectJoinOne(CodeReferConfig.class, this.getMPJLambdaWrapper().eq(CodeReferConfig::getOid, oid));
+		return CodeReferConfigWraper.build().entityVO(codeReferConfig);
     }
 
-    /**
-     * 鍒嗛〉鏌ヨ
-     *
-     * @param plCodeReferconfig 绛涢�夋潯浠�
-     * @param pageRequest      鍒嗛〉瀵硅薄
-     * @return 鏌ヨ缁撴灉
-     */
+	/**
+	 * 鍒嗛〉鏌ヨ
+	 *
+	 * @param bladeQueryObject 绛涢�夋潯浠�
+	 * @return 鏌ヨ缁撴灉
+	 */
+	@Override
+	public IPage<CodeReferConfigVO> queryByJoinPage(BladeQueryObject bladeQueryObject) {
+		CodeReferConfig codeReferConfig = new CodeReferConfig();
+		// 鏍规嵁绉熸埛杩涜鍖哄垎瀵瑰簲鐨勫弬鐓ч厤缃�
+		Map<String, Object> conditionMap = bladeQueryObject.getConditionMap();
+		// 鏌ヨ鎵�灞炵鎴蜂笅鐨勫拰寮�鍚叏灞�鐨勫弬鐓ч厤缃俊鎭�
+		if(!NacosConfigCache.getAdminUserInfo().getTenantId().equals(AuthUtil.getTenantId())){
+			conditionMap.put("tenantId",AuthUtil.getTenantId());
+		}
+		conditionMap.put("isOpenGlobal","true");
+		BeanMap beanMap = BeanMap.create(codeReferConfig);
+		beanMap.putAll(conditionMap);
+		// 娣诲姞榛樿鎺掑簭瀛楁,鏍规嵁鏃堕棿杩涜鎺掑簭
+		Query query = bladeQueryObject.getQuery();
+		query.setAscs("CREATETIME");
+		IPage<CodeReferConfig> codeReferConfigs = codeReferconfigMapper.selectJoinPage(codeReferConfig, Condition.getPage(query));
+		return CodeReferConfigWraper.build().pageVO(codeReferConfigs);
+	}
+
     @Override
-    public Page<CodeReferConfig> queryByPage(CodeReferConfig plCodeReferconfig, PageRequest pageRequest) {
-        long total = this.codeReferconfigMapper.count(plCodeReferconfig);
-        return new PageImpl<>(this.codeReferconfigMapper.queryAllByLimit(plCodeReferconfig, pageRequest), pageRequest, total);
-    }
+    public List<CodeReferConfigVO> queryByList(CodeReferConfigVO codeReferConfigVO) {
+		codeReferConfigVO.setTenantId(AuthUtil.getTenantId());
+		//MPJLambdaWrapper<CodeReferConfig> mpjLambdaWrapper = UBCSCondition.getMPJLambdaWrapper(bladeQueryObject.getConditionMap(), CodeReferConfig.class)
+		MPJLambdaWrapper<CodeReferConfig> mpjLambdaWrapper = getMPJLambdaWrapper()
+			.setEntity(codeReferConfigVO)
+			.orderBy(true, true, CodeReferConfig::getCreateTime);
+		List<CodeReferConfig> codeReferConfigList = codeReferconfigMapper.selectJoinList(CodeReferConfig.class, mpjLambdaWrapper);
+		return CodeReferConfigWraper.build().listVO(codeReferConfigList);
+	}
 
     /**
      * 鏂板鏁版嵁
      *
-     * @param plCodeReferconfig 瀹炰緥瀵硅薄
+     * @param codeReferConfigVO 瀹炰緥瀵硅薄
      * @return 瀹炰緥瀵硅薄
      */
     @Override
-    public CodeReferConfig insert(CodeReferConfig plCodeReferconfig) {
-        this.codeReferconfigMapper.insert(plCodeReferconfig);
-        return plCodeReferconfig;
+	@Transactional(rollbackFor = Exception.class)
+    public R insert(CodeReferConfigVO codeReferConfigVO) {
+		VciBaseUtil.alertNotNull(codeReferConfigVO,"闇�瑕佹坊鍔犵殑鏁版嵁瀵硅薄");
+		if (StringUtils.isBlank(codeReferConfigVO.getReferType())){
+			throw new VciBaseException("鍙傜収閰嶇疆涓嶈兘涓虹┖");
+		}
+		// Long count = countCodeReferConfig(codeReferConfigVO);
+		// if(count > 0){
+		//    throw new VciBaseException("宸插瓨鍦ㄧ浉鍚岀殑鍙傜収閰嶇疆");
+		// }
+		CodeReferConfig codeReferConfig = CodeReferConfigWraper.build().entityDO(codeReferConfigVO);
+		codeReferConfig.setOid(VciBaseUtil.getPk().toUpperCase());
+		DefaultAttrAssimtUtil.addDefaultAttrAssimt(codeReferConfig, MdmBtmTypeConstant.CODE_REFER_CONFIG);
+		codeReferConfig.setTenantId(AuthUtil.getTenantId());
+		boolean resInsertReferConfig = this.codeReferconfigMapper.insert(codeReferConfig) > 0;
+		if (!resInsertReferConfig) {
+			return R.fail("鏂板鍙傜収閰嶇疆澶辫触锛�");
+		}
+		// 涓婚敭鍥炲~
+		if(Func.isNotEmpty(codeReferConfig.getCodeShowFieldConfigs())){
+			ICodeShowFieldConfigService.insertBatch(codeReferConfigVO.getCodeShowFieldConfigVOS(),codeReferConfig.getOid());
+		}
+		if(Func.isNotEmpty(codeReferConfig.getCodeSrchCondConfigs())){
+			ICodeSrchCondConfigService.insertBatch(codeReferConfigVO.getCodeSrchCondConfigVOS(),codeReferConfig.getOid());
+		}
+		return R.data(codeReferConfigVO);
     }
+
+	/**
+	 * 鑾峰彇宸插瓨鍦ㄧ殑鍙傜収閰嶇疆
+	 * @param codeReferConfigVO
+	 * @return 涓暟
+	 */
+	private Long countCodeReferConfig(CodeReferConfigVO codeReferConfigVO) {
+		String templateName = codeReferConfigVO.getName();
+		String templateId = codeReferConfigVO.getId();
+		if (StringUtils.isBlank(templateName) && StringUtils.isBlank(templateId)){
+			throw new VciBaseException("鍙傜収閰嶇疆缂栧彿鍜屽悕绉颁笉鑳戒负绌�");
+		}
+		LambdaQueryWrapper<CodeReferConfig> wrapper = Wrappers.<CodeReferConfig>query()
+			.lambda().eq(CodeReferConfig::getId, codeReferConfigVO.getId())
+			.eq(CodeReferConfig::getTenantId, codeReferConfigVO.getTenantId())
+			.or(true)
+			.eq(CodeReferConfig::getIsOpenGlobal,"true") // 鏌ヨ寮�鍚叏灞�鐨勫弬鐓ч厤缃�
+			.eq(CodeReferConfig::getId,templateId)
+			.eq(CodeReferConfig::getName,templateName);
+		Long count = codeReferconfigMapper.selectCount(wrapper);
+		return count;
+	}
+
+	/**
+	 * 杩炶〃鏌ヨWrapper瀵硅薄鑾峰彇
+	 * @return
+	 */
+	private MPJLambdaWrapper<CodeReferConfig> getMPJLambdaWrapper(){
+		MPJLambdaWrapper<CodeReferConfig> mpjLambdaWrapper = new MPJLambdaWrapper<>(CodeReferConfig.class)
+			.selectAll(CodeReferConfig.class)
+			// .select(CodeShowFieldConfig::getField
+			// ,CodeShowFieldConfig::getTitle
+			// ,CodeShowFieldConfig::getFieldType
+			// ,CodeShowFieldConfig::getSort
+			// ,CodeShowFieldConfig::getAttrSortField
+			// ,CodeShowFieldConfig::getWidth
+			// ,CodeShowFieldConfig::getFixedPosition
+			// ,CodeShowFieldConfig::getTemplet)
+			// .select(
+			// CodeSrchCondConfig::getFilterType,
+			// CodeSrchCondConfig::getFilterField,
+			// CodeSrchCondConfig::getFilterValue)
+			.selectCollection(CodeShowFieldConfig.class, CodeReferConfig::getCodeShowFieldConfigs)
+			.selectCollection(CodeSrchCondConfig.class, CodeReferConfig::getCodeSrchCondConfigs)
+			.leftJoin(CodeShowFieldConfig.class, CodeShowFieldConfig::getReferConfigOid,CodeReferConfig::getOid)
+			.leftJoin(CodeSrchCondConfig.class, CodeSrchCondConfig::getReferConfigOid, CodeReferConfig::getOid);
+		return mpjLambdaWrapper;
+	}
 
     /**
      * 淇敼鏁版嵁
      *
-     * @param plCodeReferconfig 瀹炰緥瀵硅薄
+     * @param codeReferConfigVO 瀹炰緥瀵硅薄
      * @return 瀹炰緥瀵硅薄
      */
     @Override
-    public CodeReferConfig update(CodeReferConfig plCodeReferconfig) {
-        this.codeReferconfigMapper.update(plCodeReferconfig);
-        return this.queryById(plCodeReferconfig.getOid());
+	@Transactional(rollbackFor = Exception.class)
+    public R update(CodeReferConfigVO codeReferConfigVO) {
+		boolean resUpdateReferConfig = this.codeReferconfigMapper.updateById(codeReferConfigVO) > 0;
+		if (!resUpdateReferConfig) {
+			return R.fail("鍙傜収閰嶇疆淇敼澶辫触锛�");
+		}
+		this.ICodeShowFieldConfigService.updateBatch(codeReferConfigVO.getCodeShowFieldConfigVOS());
+		this.ICodeSrchCondConfigService.updateBatch(codeReferConfigVO.getCodeSrchCondConfigVOS());
+        return R.data(codeReferConfigVO);
     }
 
     /**
      * 閫氳繃涓婚敭鍒犻櫎鏁版嵁
      *
-     * @param oid 涓婚敭
+     * @param codeReferConfigDTO
      * @return 鏄惁鎴愬姛
      */
     @Override
-    public boolean deleteById(String oid) {
-        return this.codeReferconfigMapper.deleteById(oid) > 0;
+	@Transactional(rollbackFor = Exception.class)
+    public R deleteById(CodeReferConfigDTO codeReferConfigDTO) {
+		CodeReferConfig tsDO = new CodeReferConfig();
+		BeanUtil.copyProperties(tsDO,codeReferConfigDTO);
+		CodeReferConfig codeReferConfig = codeReferconfigMapper.queryById(codeReferConfigDTO.getOid());
+		// 妫�鏌s瀛楁鏄惁涓�鑷�
+		if (!checkTs(tsDO,codeReferConfig)) {
+			return R.fail(TS_NOT_PROCESS);
+		}
+		boolean resDeleteReferConfig = this.codeReferconfigMapper.deleteById(codeReferConfigDTO.getOid()) > 0;
+		if (!resDeleteReferConfig) {
+			return R.fail("鍙傜収閰嶇疆鍒犻櫎澶辫触锛�");
+		}
+		this.ICodeShowFieldConfigService.deleteByReferConfigOid(codeReferConfigDTO.getOid());
+		this.ICodeSrchCondConfigService.deleteByReferConfigOid(codeReferConfigDTO.getOid());
+        return  R.status(resDeleteReferConfig);
     }
+
+	/**
+	 * 妫�鏌s
+	 * @param tempDO
+	 * @param codeReferConfig
+	 * @return
+	 */
+	private boolean checkTs(CodeReferConfig tempDO, CodeReferConfig codeReferConfig){
+		Date dbTs = codeReferConfig.getTs();
+		Date currentTs = tempDO.getTs();
+		if(currentTs == null ?  dbTs == null:currentTs.compareTo(dbTs)==0){
+			return true;
+		}
+		return false;
+	}
+
 }

--
Gitblit v1.9.3