From d4e94f635dbe265f10ad614eac7386968ae30c23 Mon Sep 17 00:00:00 2001
From: ludc
Date: 星期三, 19 七月 2023 11:25:30 +0800
Subject: [PATCH] 提交代码

---
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeRuleServiceImpl.java |  165 ++++++++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 138 insertions(+), 27 deletions(-)

diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeRuleServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeRuleServiceImpl.java
index c7c4c3f..fce6239 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeRuleServiceImpl.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeRuleServiceImpl.java
@@ -17,10 +17,12 @@
 package com.vci.ubcs.code.service.impl;
 
 import com.alibaba.cloud.commons.lang.StringUtils;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.vci.ubcs.code.constant.FrameWorkDefaultValueConstant;
 import com.vci.ubcs.code.constant.MdmBtmTypeConstant;
 import com.vci.ubcs.code.dto.CodeBasicSecDTO;
 import com.vci.ubcs.code.dto.CodeRuleDTO;
@@ -30,16 +32,17 @@
 import com.vci.ubcs.code.mapper.CodeRuleMapper;
 import com.vci.ubcs.code.mapper.CodeSerialValueMapper;
 import com.vci.ubcs.code.mapper.CommonsMapper;
-import com.vci.ubcs.code.service.ICodeAllCodeService;
-import com.vci.ubcs.code.service.ICodeBasicSecService;
-import com.vci.ubcs.code.service.ICodeClassifyService;
-import com.vci.ubcs.code.service.ICodeRuleService;
+import com.vci.ubcs.code.service.*;
 import com.vci.ubcs.code.vo.pagemodel.CodeBasicSecVO;
 import com.vci.ubcs.code.vo.pagemodel.CodeClassifyVO;
+import com.vci.ubcs.code.vo.pagemodel.CodeFixedValueVO;
 import com.vci.ubcs.code.vo.pagemodel.CodeRuleVO;
 import com.vci.ubcs.code.wrapper.CodeClassifyWrapper;
 import com.vci.ubcs.code.wrapper.CodeRuleWrapper;
+import com.vci.ubcs.omd.cache.EnumCache;
+import com.vci.ubcs.omd.enums.EnumEnum;
 import com.vci.ubcs.starter.exception.VciBaseException;
+import com.vci.ubcs.starter.revision.model.TreeQueryObject;
 import com.vci.ubcs.starter.revision.service.RevisionModelUtil;
 import com.vci.ubcs.starter.util.DefaultAttrAssimtUtil;
 import com.vci.ubcs.starter.util.UBCSCondition;
@@ -49,9 +52,12 @@
 import com.vci.ubcs.starter.web.util.WebUtil;
 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.constant.BladeConstant;
 import org.springblade.core.tool.utils.BeanUtil;
 import org.springblade.core.tool.utils.Func;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -60,6 +66,7 @@
 import javax.annotation.Resource;
 import java.util.*;
 import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 import static com.vci.ubcs.code.constant.FrameWorkDefaultValueConstant.FRAMEWORK_RELEASE_EDITING;
 import static com.vci.ubcs.code.constant.FrameWorkLangCodeConstant.DATA_OID_NOT_EXIST;
@@ -94,12 +101,19 @@
 	private ICodeAllCodeService codeAllcodeService;
 	@Resource
 	private ICodeBasicSecService codeBasicSecService;
+	@Resource
+	private ICodeClassifyValueService iCodeClassifyValueService;
 
 	/**
 	 * 瀵硅薄鐨勬搷浣�
 	 */
 	@Resource
 	private RevisionModelUtil revisionModelUtil;
+
+	@Value("${user-info.tenant-id}")
+	private String tenantId;
+	@Value("${user-info.id}")
+	private String userId;
 
 	/**
 	 * 鍒嗛〉鏌ヨ
@@ -109,6 +123,11 @@
 	 */
 	@Override
 	public IPage<CodeRuleVO> gridCodeRule(Query query, Map<String,Object> conidtionMap) {
+		//濡傛灉绛変簬鑷繁閰嶇疆鐨勭鐞嗙粍绉熸埛id鍜岀鐞嗙粍瓒呯璐﹀彿锛屽氨涓嶉渶瑕佹寜鐓ц鍒欐墍鏈夎�呮潵杩涜鏌ヨ
+		if(!(AuthUtil.getTenantId().equals(this.tenantId) && AuthUtil.getUserId().toString().equals(this.userId))){
+			// 鎸夌収瑙勫垯鎵�鏈夎�呮潵鏌ヨ
+			conidtionMap.put("owner",AuthUtil.getUserId());
+		}
 		IPage<CodeRule> codeRuleIPage = this.codeRuleMapper.selectPage(Condition.getPage(query), UBCSCondition.getQueryWrapper(conidtionMap, CodeRule.class));
 		//do杞瑅o鍚屾椂setLcStatusText鐢熷懡鍛ㄦ湡鍊硷紝骞跺寘瑁呮垚鍒嗛〉瀵硅薄杩斿洖
 		return CodeRuleWrapper.build().pageVO(codeRuleIPage);
@@ -190,6 +209,9 @@
 		//灏咲TO杞崲涓篋O
 		CodeRule codeRule = selectByOid(codeRuleDTO.getOid());
 		revisionModelUtil.copyFromDTOIgnore(codeRuleDTO, codeRule);
+		if(!codeRule.getOwner().equals(codeRuleDTO.getOwner())){
+			codeRule.setOwner(codeRuleDTO.getOwner());
+		}
 		DefaultAttrAssimtUtil.updateDefaultAttrAssimt(codeRule);
 		return R.status(codeRuleMapper.updateById(codeRule)>0);
 	}
@@ -420,7 +442,9 @@
 			if (!CodeRuleLC.EDITING.getValue().equals(codeRuleDO.getLcStatus())) {
 				return R.fail("闈炵紪杈戠姸鎬佺殑缂栫爜瑙勫垯鏃犳硶鍙戝竷");
 			}
-			count = codeRuleMapper.update(null,wrapper.set(CodeRule::getLcStatus, CodeRuleLC.RELEASED.getValue()));
+			// 鍙戝竷鏃跺皢鐮佹绫诲瀷鎸夌収瀛楃涓插垎闅旂殑褰㈠紡鎷兼帴骞跺瓨鍌�
+			String secTypeStr = codeBasicSecService.listCodeBasicSecByRuleOid(codeRuleDO.getOid()).stream().map(CodeBasicSecVO::getSecType).collect(Collectors.joining(","));
+			count = codeRuleMapper.update(null,wrapper.set(CodeRule::getLcStatus, CodeRuleLC.RELEASED.getValue()).set(CodeRule::getBasicSecTypes,secTypeStr));
 		} else {
 			return R.fail("鏆備笉鏀寔鐨勬搷浣滅被鍨�");
 		}
@@ -482,25 +506,114 @@
 	 */
 	@Override
 	public R checkLikeCodeRule(String oid) throws VciBaseException {
-		CodeRuleVO codeRuleVO = getObjectByOid(oid);
-		// 1銆佸幓鎺夋祦姘寸爜娈碉紝璁$畻鍑哄叾浠栫爜娈靛�奸暱搴︼紝鍦ㄥ凡鍙戝竷鐨勮鍒欎腑姣斿鍑洪暱搴︿竴鑷寸殑缂栫爜瑙勫垯
-		HashMap<String, Object> condtionMap = new HashMap<>();
-		condtionMap.put("pkCodeRule_equal",codeRuleVO.getOid());
-		condtionMap.put("secType_notequal", CodeSecTypeEnum.CODE_SERIAL_SEC);
-		codeRuleVO.setSecVOList(codeBasicSecService.listCodeBasicSecByRuleOid(condtionMap));
-		// TODO 寰呭畬鍠�
-
-
-		// 2銆佸湪1銆佺殑鍩虹涓婂啀姣斿鐮佹绫诲瀷鐨勯『搴忎竴鑷寸殑缂栫爜璺潃
-
-		// 3銆佸湪2銆佺殑鍩虹涓婃瘮杈冪爜娈电爜鍊奸暱搴︼紝瀵规瘮鍑洪暱搴︾浉鍚岀殑缂栫爜瑙勫垯
-
-		// 4銆佸湪3銆佺殑鍩虹涓婃瘮杈冪爜鍊兼槸鍚︾浉鍚�
-
-
-		// 鏈�鍚庡皢缁撴灉杩涜杩斿洖
-
-		return null;
+		// 1銆佹煡璇㈠嚭褰撳墠瑕佸彂甯冪殑瑙勫垯
+		CodeRuleVO releaseCodeRule = getObjectHasSecByOid(oid);
+		// 褰撳墠鍙戝竷鐨勮鍒欎笉瀛樺湪鐮佹淇℃伅锛岀洿鎺ョ┖淇℃伅杩斿洖
+		if(Func.isEmpty(releaseCodeRule.getSecVOList())){
+			return R.success("");
+		}
+		// 2銆佹壘鍑轰笌褰撳墠鍙戝竷鐨勮鍒欑爜娈甸『搴忎竴鑷寸殑瑙勫垯
+		String secTypes = releaseCodeRule.getSecVOList().stream().map(CodeBasicSecVO::getSecType).collect(Collectors.joining(","));
+		// 鏌ヨ鍑烘墍鏈夊凡鍙戝竷鐨勭紪鐮佽鍒欎腑鐮佹绫诲瀷椤哄簭涓庡綋鍓嶈鍙戝竷鐨勮鍒欓『搴忎竴鑷寸殑缂栫爜瑙勫垯锛屾鏃跺凡杩戣繃婊ゆ帀澶ч儴鍒嗚鍒欙紝杩愮畻閲忓噺灏�
+		List<CodeRule> codeRuleList = codeRuleMapper.selectList(Wrappers.<CodeRule>query().lambda()
+			.eq(CodeRule::getLcStatus, CodeRuleLC.RELEASED.getValue())
+			.eq(CodeRule::getBasicSecTypes,secTypes)
+		);
+		// 涓虹┖锛岃瘉鏄庝笉瀛樺湪绫诲悓鐨勭紪鐮佽鍒欑洿鎺ヨ繑鍥�
+		if(Func.isEmpty(codeRuleList)){
+			return R.success("");
+		}
+		// 鏌ヨ鍑哄熀纭�鐮佹鍒楄〃锛堟寜鐓rderNum鍗囧簭鎺掑簭锛�
+		List<CodeRuleVO> codeRuleVOS = codeRuleDO2VOs(codeRuleList, true);
+		// 3銆佸悇绫荤爜娈靛垎鍒繘琛屾瘮瀵�
+		List<CodeRuleVO> lastCodeRule = new ArrayList<>();
+		codeRuleVOS.stream().forEach(item->{
+			List<CodeBasicSecVO> secVOList = item.getSecVOList();
+			boolean flag = true;
+			for (int index = 0; index < secVOList.size(); index++) {
+				// 褰撳墠瑕佸彂甯冪殑瑙勫垯鍖呭惈鐨勭爜娈典俊鎭�
+				CodeBasicSecVO releaseBasicSec = releaseCodeRule.getSecVOList().get(index);
+				// 宸插彂甯冪殑瑙勫垯鍖呭惈鐨勭爜娈典俊鎭�
+				CodeBasicSecVO releasedBasicSec = secVOList.get(index);
+				// 鍥犱负鐮佹椤哄簭閮芥槸鎸夌収OrderNum鎺掑簭鐨勶紝鎵�浠ョ洿鎺ユ寜鐓т笅鏍囦袱涓ゆ瘮杈冨氨鍙互浜�
+				switch (releasedBasicSec.getSecType()){
+					// 灞炴�х爜娈碉紝姣斿灞炴�у拰灞炴�ф墍鍦ㄥ垎绫�(referCodeClassifyOid)
+					case "codeattrsec":
+						if(!releasedBasicSec.getReferCodeClassifyOid().equals(releaseBasicSec.getReferCodeClassifyOid())){
+							flag = false;
+						}
+						break;
+					// 鍙彉鐮佹锛屾瘮瀵圭爜娈甸暱搴︼紝缂栫爜琛ヤ綅鏂瑰紡鍜岃ˉ浣嶆椂鐨勫瓧绗�
+					case "codevariablesec":
+						if(!(releasedBasicSec.getCodeSecLength().equals(releaseBasicSec.getCodeSecLength())
+							&& releasedBasicSec.getCodeFillType().equals(releaseBasicSec.getCodeFillType())
+							&& releasedBasicSec.getCodeFillSeparator().equals(releaseBasicSec.getCodeFillSeparator()))){
+							flag = false;
+						}
+						break;
+					// 鍥哄畾鐮佹姣斿鎸夊崌搴忔帓搴忕殑鐮佸�硷紝
+					case "codefixedsec":
+						if(Func.isNotEmpty(releasedBasicSec.getFixedValueVOList()) && Func.isNotEmpty(releaseBasicSec.getFixedValueVOList())){
+							// 灏唂ixedValue鎸夌収閫楀彿鍒嗛殧鎷兼帴璧锋潵锛屼互渚挎瘮杈冿紝鐢变簬鏌ヨ鏃跺凡鎸夌収orderNum鎺掕繃搴忎簡锛屾墍浠ヤ笉闇�瑕佸啀娆℃帓搴�
+							String reledFixedValues = releasedBasicSec.getFixedValueVOList().stream().map(CodeFixedValueVO::getId).collect(Collectors.joining(","));
+							String releFixedValues = releaseBasicSec.getFixedValueVOList().stream().map(CodeFixedValueVO::getId).collect(Collectors.joining(","));
+							if(reledFixedValues.equals(releFixedValues)){
+								flag = false;
+							}
+						}
+						break;
+					// 鍒嗙被鐮佹姣斿鎸夊崌搴忔帓搴忕爜鍊�
+					case "codeclassifysec":
+						if(!releasedBasicSec.getReferCodeClassifyOid().equals(releaseBasicSec.getReferCodeClassifyOid())){
+							flag = false;
+						}
+						break;
+					// 鏃ユ湡鐮佹姣斿鏃ユ湡鏍煎紡
+					case "codedatesec":
+						if(!releasedBasicSec.getCodeDateFormatStr().equals(releaseBasicSec.getCodeDateFormatStr())){
+							flag = false;
+						}
+						break;
+					// 寮曠敤鐮佹锛屾瘮瀵瑰弬鐓у紩鐢ㄧ殑涓氬姟绫诲瀷
+					case "coderefersec":
+						if(!releasedBasicSec.getReferBtmId().equals(releaseBasicSec.getReferBtmId())){
+							flag = false;
+						}
+						break;
+					// 灞傜骇鐮佹锛屾瘮瀵瑰眰绾х被鍨嬨�佸眰绾х殑鍊笺�佸瓧绗︽埅鍙栫被鍨嬨�佸彇鍊肩被鍨�
+					case "codelevelsec":
+						if(!(releasedBasicSec.getCodeLevelType().equals(releaseBasicSec.getCodeLevelType())
+							&& releasedBasicSec.getCodeLevelValue().equals(releaseBasicSec.getCodeLevelValue())
+							&& releasedBasicSec.getValueCutType().equals(releaseBasicSec.getValueCutType())
+							&& releasedBasicSec.getCodeGetValueType().equals(releaseBasicSec.getCodeGetValueType()))){
+							flag = false;
+						}
+						break;
+					// 娴佹按鐮佹姣斿鐮佹鐨勯暱搴�
+					case "codeserialsec":
+						if(!releasedBasicSec.getCodeFillLength().equals(releaseBasicSec.getCodeFillLength())){
+							flag = false;
+						}
+						break;
+				}
+				if (flag) {
+					break;
+				}
+			}
+			// 婊¤冻鎵�鏈夌爜娈电被鍨嬫瘮瀵规潯浠剁殑瑙勫垯
+			if (flag) {
+				lastCodeRule.add(item);
+			}
+		});
+		StringBuffer resMsg = new StringBuffer();
+		resMsg.append("瀛樺湪濡備笅鐩镐技瑙勫垯锛屾槸鍚︾户缁彂甯冿紵\n");
+		// 鏈�鍚庡皢缁撴灉杩涜澶勭悊骞惰繑鍥�
+		lastCodeRule.stream().forEach(item->{
+			resMsg.append(item.getName());
+			resMsg.append(item.getId());
+			resMsg.append("缂栫爜瑙勫垯;\n");
+		});
+		return R.fail(resMsg.toString());
 	}
 
 	/**
@@ -539,9 +652,7 @@
 			//濡傛灉鏈塴cstatus鐨勭被鐨勮瘽
 			vo.setLcStatusText(CodeRuleLC.getTextByValue(vo.getLcStatus()));
 			if (hasSec) {
-				Map<String, Object> condtionMap = new HashMap<>();
-				condtionMap.put("pkCodeRule",vo.getOid());
-				List<CodeBasicSecVO> codeBasicSecVOS = codeBasicSecService.listCodeBasicSecByRuleOid(condtionMap);
+				List<CodeBasicSecVO> codeBasicSecVOS = codeBasicSecService.listCodeBasicSecByRuleOid(vo.getOid());
 				//鏌ヨ鐮佹
 				vo.setSecVOList(codeBasicSecVOS);
 			}

--
Gitblit v1.9.3