From 78c9c5d00e0b28177e2a40e1058773d6a1abef00 Mon Sep 17 00:00:00 2001
From: ludc
Date: 星期四, 12 十月 2023 10:33:03 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 Source/UBCS-WEB/src/views/system/tenant.vue                                                                      |    1 
 Source/UBCS-WEB/src/views/system/PasswordManagement/passwords.vue                                                |    1 
 Source/UBCS-WEB/src/views/system/menu.vue                                                                        |    1 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeResembleRuleServiceImpl.java |  250 +++++++++++++++++++++++++++
 Source/UBCS-WEB/src/views/authority/apiscope.vue                                                                 |    1 
 Source/UBCS-WEB/src/views/system/user.vue                                                                        |    8 
 Source/UBCS-WEB/src/views/authority/datascope.vue                                                                |    1 
 Source/UBCS-WEB/src/views/system/client.vue                                                                      |    1 
 Source/UBCS-WEB/src/views/system/topmenu.vue                                                                     |    1 
 Source/UBCS-WEB/src/views/authority/role.vue                                                                     |    3 
 Source/UBCS-WEB/src/option/system/dict.js                                                                        |    1 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeResembleRuleController.java    |  114 ++++++++++++
 Source/UBCS-WEB/src/option/system/dictbiz.js                                                                     |    1 
 Source/UBCS-WEB/src/views/system/dept.vue                                                                        |    1 
 Source/UBCS-WEB/src/views/system/post.vue                                                                        |    1 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeResembleRuleService.java         |   73 ++++++++
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmProductCodeServiceImpl.java   |   28 ++
 17 files changed, 471 insertions(+), 16 deletions(-)

diff --git a/Source/UBCS-WEB/src/option/system/dict.js b/Source/UBCS-WEB/src/option/system/dict.js
index e2d5c72..a56f842 100644
--- a/Source/UBCS-WEB/src/option/system/dict.js
+++ b/Source/UBCS-WEB/src/option/system/dict.js
@@ -2,6 +2,7 @@
   height: 'auto',
   calcHeight: 20,
   tip: false,
+  columnBtn:false,
   searchShow: true,
   searchMenuSpan: 10,
   border: true,
diff --git a/Source/UBCS-WEB/src/option/system/dictbiz.js b/Source/UBCS-WEB/src/option/system/dictbiz.js
index 277f520..ace45a3 100644
--- a/Source/UBCS-WEB/src/option/system/dictbiz.js
+++ b/Source/UBCS-WEB/src/option/system/dictbiz.js
@@ -1,6 +1,7 @@
 export const optionParent = {
   height: 'auto',
   calcHeight: 30,
+  columnBtn:false,
   tip: false,
   searchShow: true,
   searchMenuSpan: 10,
diff --git a/Source/UBCS-WEB/src/views/authority/apiscope.vue b/Source/UBCS-WEB/src/views/authority/apiscope.vue
index dd05b22..431957b 100644
--- a/Source/UBCS-WEB/src/views/authority/apiscope.vue
+++ b/Source/UBCS-WEB/src/views/authority/apiscope.vue
@@ -114,6 +114,7 @@
         menu: true,
         option: {
           lazy: true,
+          columnBtn:false,
           tip: false,
           //simplePage: true,
           searchShow: true,
diff --git a/Source/UBCS-WEB/src/views/authority/datascope.vue b/Source/UBCS-WEB/src/views/authority/datascope.vue
index 4a32fa0..8734524 100644
--- a/Source/UBCS-WEB/src/views/authority/datascope.vue
+++ b/Source/UBCS-WEB/src/views/authority/datascope.vue
@@ -118,6 +118,7 @@
         watchMode: true,
         option: {
           lazy: true,
+          columnBtn:false,
           tip: false,
           // simplePage: true,
           searchShow: true,
diff --git a/Source/UBCS-WEB/src/views/authority/role.vue b/Source/UBCS-WEB/src/views/authority/role.vue
index bece5ed..75d0045 100644
--- a/Source/UBCS-WEB/src/views/authority/role.vue
+++ b/Source/UBCS-WEB/src/views/authority/role.vue
@@ -38,7 +38,7 @@
     <el-dialog title="瑙掕壊鏉冮檺閰嶇疆"
       append-to-body
       :visible.sync="box"
-      width="350px" 
+      width="350px"
       style="height: 115vh; margin-top: -13vh; overflow: hidden">
       <el-tabs type="border-card" style="overflow-y: auto; height: 72vh">
         <el-tab-pane label="鑿滃崟鏉冮檺">
@@ -113,6 +113,7 @@
         option: {
           height: "auto",
           tip: false,
+          columnBtn:false,
           // simplePage: true,
           searchShow: true,
           searchMenuSpan: 6,
diff --git a/Source/UBCS-WEB/src/views/system/PasswordManagement/passwords.vue b/Source/UBCS-WEB/src/views/system/PasswordManagement/passwords.vue
index 3a39a37..e64436d 100644
--- a/Source/UBCS-WEB/src/views/system/PasswordManagement/passwords.vue
+++ b/Source/UBCS-WEB/src/views/system/PasswordManagement/passwords.vue
@@ -128,6 +128,7 @@
       option: {
         headerAlign: 'center',
         align: 'center',
+        columnBtn:false,
         border: true,
         index: true,
         rowKey:'id',
diff --git a/Source/UBCS-WEB/src/views/system/client.vue b/Source/UBCS-WEB/src/views/system/client.vue
index e80b4ce..91292b0 100644
--- a/Source/UBCS-WEB/src/views/system/client.vue
+++ b/Source/UBCS-WEB/src/views/system/client.vue
@@ -50,6 +50,7 @@
         selectionList: [],
         option: {
           height: 'auto',
+          columnBtn:false,
           calcHeight: 30,
           tip: false,
           searchShow: true,
diff --git a/Source/UBCS-WEB/src/views/system/dept.vue b/Source/UBCS-WEB/src/views/system/dept.vue
index 41936f8..1cb7847 100644
--- a/Source/UBCS-WEB/src/views/system/dept.vue
+++ b/Source/UBCS-WEB/src/views/system/dept.vue
@@ -78,6 +78,7 @@
           tip: false,
           height:'auto',
           maxHeight:600,
+          columnBtn:false,
           // simplePage: true,
           searchShow: true,
           searchMenuSpan: 6,
diff --git a/Source/UBCS-WEB/src/views/system/menu.vue b/Source/UBCS-WEB/src/views/system/menu.vue
index fbb3747..efe0136 100644
--- a/Source/UBCS-WEB/src/views/system/menu.vue
+++ b/Source/UBCS-WEB/src/views/system/menu.vue
@@ -107,6 +107,7 @@
         option: {
           height: "auto",
           lazy: true,
+          columnBtn:false,
           tip: false,
           simplePage: true,
           searchShow: true,
diff --git a/Source/UBCS-WEB/src/views/system/post.vue b/Source/UBCS-WEB/src/views/system/post.vue
index c702914..0c22c51 100644
--- a/Source/UBCS-WEB/src/views/system/post.vue
+++ b/Source/UBCS-WEB/src/views/system/post.vue
@@ -55,6 +55,7 @@
         selectionList: [],
         option: {
           height: 'auto',
+          columnBtn:false,
           calcHeight: 30,
           tip: false,
           searchShow: true,
diff --git a/Source/UBCS-WEB/src/views/system/tenant.vue b/Source/UBCS-WEB/src/views/system/tenant.vue
index d384ec9..5effe12 100644
--- a/Source/UBCS-WEB/src/views/system/tenant.vue
+++ b/Source/UBCS-WEB/src/views/system/tenant.vue
@@ -227,6 +227,7 @@
     option(){
       return{
           height: 'auto',
+          columnBtn:false,
           calcHeight: 30,
           tip: false,
           searchShow: true,
diff --git a/Source/UBCS-WEB/src/views/system/topmenu.vue b/Source/UBCS-WEB/src/views/system/topmenu.vue
index 96c8cf1..b55335f 100644
--- a/Source/UBCS-WEB/src/views/system/topmenu.vue
+++ b/Source/UBCS-WEB/src/views/system/topmenu.vue
@@ -93,6 +93,7 @@
         option: {
           height: 'auto',
           calcHeight: 30,
+          columnBtn:false,
           tip: false,
           searchShow: true,
           searchMenuSpan: 6,
diff --git a/Source/UBCS-WEB/src/views/system/user.vue b/Source/UBCS-WEB/src/views/system/user.vue
index 0f92d14..80d027e 100644
--- a/Source/UBCS-WEB/src/views/system/user.vue
+++ b/Source/UBCS-WEB/src/views/system/user.vue
@@ -278,6 +278,7 @@
         tip: false,
         searchShow: true,
         searchMenuSpan: 6,
+        columnBtn:false,
         border: true,
         index: true,
         selection: true,
@@ -548,12 +549,7 @@
                 props: {
                   label: "postName",
                   value: "id"
-                },
-                rules: [{
-                  required: true,
-                  message: "璇烽�夋嫨鎵�灞炲矖浣�",
-                  trigger: "click"
-                }],
+                }
               },
             ]
           },
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeResembleRuleController.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeResembleRuleController.java
new file mode 100644
index 0000000..1586d75
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeResembleRuleController.java
@@ -0,0 +1,114 @@
+package com.vci.ubcs.code.controller;
+
+import com.vci.ubcs.code.dto.CodeResembleRuleDTO;
+import com.vci.ubcs.code.service.ICodeResembleRuleService;
+import com.vci.ubcs.code.vo.pagemodel.CodeResembleRuleVO;
+import com.vci.ubcs.starter.web.pagemodel.BaseQueryObject;
+import com.vci.ubcs.starter.web.pagemodel.DataGrid;
+import com.vci.ubcs.starter.web.util.VciBaseUtil;
+import org.springblade.core.tool.api.R;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.util.Collection;
+
+/**
+ * 鐩镐技鏌ヨ瑙勫垯鎺у埗鍣�
+ *
+ * @author weidy
+ * @date 2022-04-10
+ */
+@RestController
+@RequestMapping("/resembleRuleController")
+public class CodeResembleRuleController {
+	/**
+	 * 鐩镐技鏌ヨ瑙勫垯 鏈嶅姟
+	 */
+	@Resource
+	private ICodeResembleRuleService codeResembleRuleService;
+
+	/**
+	 * 鐩镐技鏌ヨ瑙勫垯鍒楄〃
+	 * @param baseQueryObject 鍩虹鏌ヨ瀵硅薄锛屽寘鍚煡璇㈡潯浠讹紝鍒嗛〉锛屾帓搴忕瓑
+	 * @return 鐩镐技鏌ヨ瑙勫垯鏄剧ず瀵硅薄鍒楄〃
+	 */
+	@GetMapping("/gridCodeResembleRule")
+	public DataGrid<CodeResembleRuleVO> gridCodeResembleRule(BaseQueryObject baseQueryObject){
+		if(baseQueryObject == null){
+			baseQueryObject = new BaseQueryObject();
+		}
+		return codeResembleRuleService.gridCodeResembleRule(baseQueryObject.getConditionMap(),baseQueryObject.getPageHelper());
+	}
+	/**
+	 * 澧炲姞 鐩镐技鏌ヨ瑙勫垯
+	 * @param codeResembleRuleDTO 鐩镐技鏌ヨ瑙勫垯鏁版嵁浼犺緭瀵硅薄
+	 * @return 鎵ц缁撴灉锛宻uccess涓簍rue琛ㄧず鎴愬姛锛宮sg鏄け璐ョ殑鎻愮ず淇℃伅锛宱bj鏄坊鍔犲畬鎴愬悗鐨勬樉绀哄璞�
+	 */
+	@PostMapping( "/addSave")
+	public R<CodeResembleRuleVO> addSave(@RequestBody CodeResembleRuleDTO codeResembleRuleDTO){
+		CodeResembleRuleVO codeResembleRuleVO = codeResembleRuleService.addSave(codeResembleRuleDTO);
+		return R.data(codeResembleRuleVO);
+	}
+
+	/**
+	 * 淇敼 鐩镐技鏌ヨ瑙勫垯
+	 * @param codeResembleRuleDTO 鐩镐技鏌ヨ瑙勫垯鏁版嵁浼犺緭瀵硅薄
+	 * @return 鎵ц缁撴灉锛宻uccess涓簍rue琛ㄧず鎴愬姛锛宮sg鏄け璐ョ殑鎻愮ず淇℃伅锛宱bj鏄坊鍔犲畬鎴愬悗鐨勬樉绀哄璞�
+	 */
+	@PutMapping("/editSave")
+	public R<CodeResembleRuleVO> editSave(@RequestBody CodeResembleRuleDTO codeResembleRuleDTO){
+		CodeResembleRuleVO codeResembleRuleVO = codeResembleRuleService.editSave(codeResembleRuleDTO);
+		return R.data(codeResembleRuleVO);
+	}
+
+
+	/**
+	 * 鍒犻櫎鐩镐技鏌ヨ瑙勫垯
+	 * @param codeResembleRuleDTO 鐩镐技鏌ヨ瑙勫垯鏁版嵁浼犺緭瀵硅薄锛宱id鍜宼s闇�瑕佷紶杈�
+	 * @return 鍒犻櫎缁撴灉鍙嶉锛氾細success锛氭垚鍔燂紝fail锛氬け璐�
+	 */
+	@DeleteMapping( "/deleteData")
+	public R delCodeResembleRule( CodeResembleRuleDTO codeResembleRuleDTO) {
+		return codeResembleRuleService.deleteCodeResembleRule(codeResembleRuleDTO);
+	}
+
+	/**
+	 * 涓婚敭鑾峰彇鐩镐技鏌ヨ瑙勫垯
+	 * @param oid 涓婚敭
+	 * @return 鐩镐技鏌ヨ瑙勫垯鏄剧ず瀵硅薄
+	 */
+	@GetMapping("/getObjectByOid")
+	public R<CodeResembleRuleVO> getObjectByOid(String oid){
+		CodeResembleRuleVO codeResembleRuleVO = codeResembleRuleService.getObjectByOid(oid);
+		return R.data(codeResembleRuleVO);
+	}
+
+	/**
+	 * 涓婚敭鎵归噺鑾峰彇鐩镐技鏌ヨ瑙勫垯
+	 * @param oids 涓婚敭锛屽涓互閫楀彿鍒嗛殧锛屼絾鏄彈鎬ц兘褰卞搷锛屽缓璁竴娆℃煡璇笉瓒呰繃10000涓�
+	 * @return 鐩镐技鏌ヨ瑙勫垯鏄剧ず瀵硅薄
+	 */
+	@GetMapping("/listDataByOids")
+	public R<CodeResembleRuleVO> listCodeResembleRuleByOids(String oids){
+		Collection<CodeResembleRuleVO> voCollection =  codeResembleRuleService.listCodeResembleRuleByOids(VciBaseUtil.str2List(oids));
+		R baseResult = R.success("鏌ヨ鎴愬姛!");
+		baseResult.setData(voCollection);
+		return  baseResult;
+	}
+
+
+
+	/**
+	 * 鍙傜収鐩镐技鏌ヨ瑙勫垯鍒楄〃
+	 * @param baseQueryObject 鍩虹鏌ヨ瀵硅薄锛屽寘鍚煡璇㈡潯浠讹紝鍒嗛〉锛屾帓搴忕瓑
+	 * @return 鐩镐技鏌ヨ瑙勫垯鏄剧ず瀵硅薄鍒楄〃锛岀敓鏁堢殑鍐呭
+	 */
+	@GetMapping("/refDataGrid")
+	public DataGrid<CodeResembleRuleVO> refDataGridCodeResembleRule(BaseQueryObject baseQueryObject){
+		if(baseQueryObject == null){
+			baseQueryObject = new BaseQueryObject();
+		}
+		return codeResembleRuleService.refDataGridCodeResembleRule(baseQueryObject.getConditionMap(),baseQueryObject.getPageHelper());
+	}
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeResembleRuleService.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeResembleRuleService.java
index 8454cc0..668e4d0 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeResembleRuleService.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeResembleRuleService.java
@@ -1,10 +1,18 @@
 package com.vci.ubcs.code.service;
 
 import com.github.yulichang.base.MPJBaseService;
+import com.vci.ubcs.code.dto.CodeResembleRuleDTO;
 import com.vci.ubcs.code.entity.CodeReferConfig;
 import com.vci.ubcs.code.entity.CodeResembleRule;
 import com.vci.ubcs.code.vo.pagemodel.CodeResembleRuleVO;
 import com.vci.ubcs.starter.exception.VciBaseException;
+import com.vci.ubcs.starter.web.pagemodel.DataGrid;
+import com.vci.ubcs.starter.web.pagemodel.PageHelper;
+import org.springblade.core.tool.api.R;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
 
 public interface ICodeResembleRuleService  extends MPJBaseService<CodeResembleRule>  {
 	CodeResembleRuleVO getObjectByOid(String codeResembleRuleOid);
@@ -17,4 +25,67 @@
 	 */
 	CodeResembleRuleVO codeResembleRuleDO2VO(CodeResembleRule codeResembleRuleDO) throws VciBaseException;
 
-	}
+	/**
+	 * 鏌ヨ鎵�鏈夌殑鐩镐技鏌ヨ瑙勫垯
+	 * @param conditionMap 鏌ヨ鏉′欢
+	 * @param pageHelper 鍒嗛〉鍜屾帓搴�
+	 * @return 鎵ц缁撴灉
+	 * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+	 */
+	DataGrid<CodeResembleRuleVO> gridCodeResembleRule(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException;
+
+
+	/**
+	 * 鎵归噺鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+	 * @param codeResembleRuleDOs 鏁版嵁瀵硅薄鍒楄〃
+	 * @return 鏄剧ず瀵硅薄
+	 * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呬笉瀛樺湪鐨勬椂鍊欎細鎶涘嚭寮傚父
+	 */
+	List<CodeResembleRuleVO> codeResembleRuleDO2VOs(Collection<CodeResembleRule> codeResembleRuleDOs) throws VciBaseException;
+
+
+	/**
+	 * 澧炲姞鐩镐技鏌ヨ瑙勫垯
+	 * @param codeResembleRuleDTO 鐩镐技鏌ヨ瑙勫垯鏁版嵁浼犺緭瀵硅薄
+	 * @return 鎵ц缁撴灉
+	 * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
+	 */
+	CodeResembleRuleVO addSave(CodeResembleRuleDTO codeResembleRuleDTO) throws VciBaseException;
+
+	/**
+	 * 淇敼鐩镐技鏌ヨ瑙勫垯
+	 * @param codeResembleRuleDTO 鐩镐技鏌ヨ瑙勫垯鏁版嵁浼犺緭瀵硅薄
+	 * @return 鎵ц缁撴灉
+	 * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
+	 */
+	CodeResembleRuleVO editSave(CodeResembleRuleDTO codeResembleRuleDTO) throws VciBaseException;
+
+
+	/**
+	 * 鍒犻櫎鐩镐技鏌ヨ瑙勫垯
+	 * @param codeResembleRuleDTO 鐩镐技鏌ヨ瑙勫垯鏁版嵁浼犺緭瀵硅薄锛宱id鍜宼s闇�瑕佷紶杈�
+	 * @return 鍒犻櫎缁撴灉鍙嶉锛氾細success锛氭垚鍔燂紝fail锛氬け璐�
+	 * @throws VciBaseException 鍙傛暟涓虹┖锛岃寮曠敤鏃舵姏鍑哄紓甯�
+	 */
+	R deleteCodeResembleRule(CodeResembleRuleDTO codeResembleRuleDTO) throws VciBaseException;
+
+	/**
+	 * 涓婚敭鎵归噺鑾峰彇鐩镐技鏌ヨ瑙勫垯
+	 * @param oidCollections 涓婚敭闆嗗悎锛屼絾鏄彈鎬ц兘褰卞搷锛屽缓璁竴娆℃煡璇笉瓒呰繃10000涓�
+	 * @return 鐩镐技鏌ヨ瑙勫垯鏄剧ず瀵硅薄
+	 * @throws VciBaseException 鏌ヨ鍑虹幇寮傚父鏃朵細鎶涘嚭
+	 */
+	Collection<CodeResembleRuleVO> listCodeResembleRuleByOids(Collection<String> oidCollections) throws VciBaseException;
+
+
+
+	/**
+	 * 鍙傜収鐩镐技鏌ヨ瑙勫垯鍒楄〃
+	 * @param conditionMap 鏌ヨ鏉′欢
+	 * @param pageHelper 鍒嗛〉鍜屾帓搴�
+	 * @return 鐩镐技鏌ヨ瑙勫垯鏄剧ず瀵硅薄鍒楄〃锛岀敓鏁堢殑鍐呭
+	 * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+	 */
+	DataGrid<CodeResembleRuleVO> refDataGridCodeResembleRule(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException;
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeResembleRuleServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeResembleRuleServiceImpl.java
index 896e759..a8f6fc0 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeResembleRuleServiceImpl.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeResembleRuleServiceImpl.java
@@ -1,6 +1,10 @@
 package com.vci.ubcs.code.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.github.yulichang.base.MPJBaseServiceImpl;
+import com.vci.ubcs.code.dto.CodeResembleRuleDTO;
 import com.vci.ubcs.code.entity.CodeReferConfig;
 import com.vci.ubcs.code.entity.CodeResembleRule;
 import com.vci.ubcs.code.enumpack.FrameworkDataLCStatus;
@@ -8,13 +12,27 @@
 import com.vci.ubcs.code.mapper.CodeResembleRuleMapper;
 import com.vci.ubcs.code.service.ICodeResembleRuleService;
 import com.vci.ubcs.code.vo.pagemodel.CodeResembleRuleVO;
+import com.vci.ubcs.omd.entity.BtmType;
 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.web.pagemodel.DataGrid;
+import com.vci.ubcs.starter.web.pagemodel.PageHelper;
 import com.vci.ubcs.starter.web.util.BeanUtilForVCI;
 import com.vci.ubcs.starter.web.util.VciBaseUtil;
 import net.logstash.logback.encoder.org.apache.commons.lang3.StringUtils;
+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.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
 
-import static com.vci.ubcs.code.constant.FrameWorkLangCodeConstant.DATA_OID_NOT_EXIST;
+import java.util.*;
+
+import static com.vci.ubcs.code.constant.FrameWorkLangCodeConstant.*;
 
 /**
  * 鐩镐技鏌ヨ瑙勫垯鏈嶅姟
@@ -23,6 +41,14 @@
  */
 @Service
 public class CodeResembleRuleServiceImpl extends MPJBaseServiceImpl<CodeResembleRuleMapper, CodeResembleRule> implements ICodeResembleRuleService {
+
+	/**
+	 * 瀵硅薄鐨勬搷浣�
+	 */
+	@Autowired
+	private RevisionModelUtil revisionModelUtil;
+
+
 	@Override
 	public CodeResembleRuleVO getObjectByOid(String oid) {
 		return codeResembleRuleDO2VO(selectByOid(oid));
@@ -62,4 +88,226 @@
 		}
 		return vo;
 	}
+
+	/**
+	 * 鏌ヨ鎵�鏈夌殑鐩镐技鏌ヨ瑙勫垯
+	 * @param conditionMap 鏌ヨ鏉′欢
+	 * @param pageHelper 鍒嗛〉鍜屾帓搴�
+	 * @return 鎵ц缁撴灉
+	 * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+	 */
+	@Override
+	public DataGrid<CodeResembleRuleVO> gridCodeResembleRule(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException{
+		if (pageHelper == null) {
+			pageHelper = new PageHelper(-1);
+		}
+		Query query = new Query();
+		query.setSize(pageHelper.getLimit());
+		query.setCurrent(pageHelper.getPage());
+		query.setDescs("createTime");
+
+		Map<String, Object> condition = new HashMap<>(conditionMap);
+		List<CodeResembleRule> doList = baseMapper.selectPage(Condition.getPage(query),Condition.getQueryWrapper(condition, CodeResembleRule.class)).getRecords();
+		DataGrid<CodeResembleRuleVO> dataGrid=new DataGrid<CodeResembleRuleVO>();
+		if (!CollectionUtils.isEmpty(doList)) {
+			dataGrid.setData(codeResembleRuleDO2VOs(doList));
+			dataGrid.setTotal(VciBaseUtil.getInt(String.valueOf(baseMapper.selectCount(Condition.getQueryWrapper(condition, CodeResembleRule.class)))));
+		}
+		return dataGrid;
+	}
+
+	/**
+	 * 鎵归噺鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+	 * @param codeResembleRuleDOs 鏁版嵁瀵硅薄鍒楄〃
+	 * @return 鏄剧ず瀵硅薄
+	 * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呬笉瀛樺湪鐨勬椂鍊欎細鎶涘嚭寮傚父
+	 */
+	@Override
+	public List<CodeResembleRuleVO> codeResembleRuleDO2VOs(Collection<CodeResembleRule> codeResembleRuleDOs) throws VciBaseException{
+		List<CodeResembleRuleVO> voList = new ArrayList<CodeResembleRuleVO>();
+		if(!CollectionUtils.isEmpty(codeResembleRuleDOs)){
+			for(CodeResembleRule s: codeResembleRuleDOs){
+				CodeResembleRuleVO vo =  codeResembleRuleDO2VO(s);
+				if(vo != null){
+					voList.add(vo);
+				}
+			}
+		}
+		return voList;
+	}
+
+//	/**
+//	 * 鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+//	 * @param  codeResembleRuleDO 鏁版嵁瀵硅薄
+//	 * @return 鏄剧ず瀵硅薄
+//	 * @throws VciBaseException 鎷疯礉灞炴�у嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+//	 */
+//	@Override
+//	public  CodeResembleRuleVO codeResembleRuleDO2VO(CodeResembleRule codeResembleRuleDO) throws VciBaseException{
+//		CodeResembleRuleVO vo = new CodeResembleRuleVO();
+//		if(codeResembleRuleDO != null){
+//			BeanUtilForVCI.copyPropertiesIgnoreCase(codeResembleRuleDO,vo);
+//			//濡傛灉鏈塴cstatus鐨勭被鐨勮瘽
+//			vo.setLcStatusText(FrameworkDataLCStatus.getTextByValue(vo.getLcStatus()));
+//
+//		}
+//		return vo;
+//	}
+
+	/**
+	 * 澧炲姞鐩镐技鏌ヨ瑙勫垯
+	 * @param codeResembleRuleDTO 鐩镐技鏌ヨ瑙勫垯鏁版嵁浼犺緭瀵硅薄
+	 * @return 鎵ц缁撴灉
+	 * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
+	 */
+	@Override
+	public CodeResembleRuleVO addSave(CodeResembleRuleDTO codeResembleRuleDTO) throws VciBaseException{
+		VciBaseUtil.alertNotNull(codeResembleRuleDTO,"闇�瑕佹坊鍔犵殑鏁版嵁瀵硅薄");
+		//灏咲TO杞崲涓篋O
+		CodeResembleRule codeResembleRuleDO = new CodeResembleRule();
+		BeanUtilForVCI.copyPropertiesIgnoreCase(codeResembleRuleDTO,codeResembleRuleDO);
+		DefaultAttrAssimtUtil.addDefaultAttrAssimt(codeResembleRuleDO, MdmBtmTypeConstant.CODE_RESEMBLE_RULE);
+		codeResembleRuleDO.setTenantId(AuthUtil.getTenantId());
+		codeResembleRuleDO.setLctid("frameworkDataLc");
+		codeResembleRuleDO.setLcStatus("Enabled");
+		codeResembleRuleDO.setOwner(AuthUtil.getUser().getUserName());
+		codeResembleRuleDO.setLastModifier(AuthUtil.getUser().getUserName());
+		baseMapper.insert(codeResembleRuleDO);
+		return codeResembleRuleDO2VO(codeResembleRuleDO);
+	}
+
+	/**
+	 * 淇敼鐩镐技鏌ヨ瑙勫垯
+	 * @param codeResembleRuleDTO 鐩镐技鏌ヨ瑙勫垯鏁版嵁浼犺緭瀵硅薄
+	 * @return 鎵ц缁撴灉
+	 * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
+	 */
+	@Override
+	public CodeResembleRuleVO editSave(CodeResembleRuleDTO codeResembleRuleDTO) throws VciBaseException{
+		VciBaseUtil.alertNotNull(codeResembleRuleDTO,"鏁版嵁瀵硅薄",codeResembleRuleDTO.getOid(),"鐩镐技鏌ヨ瑙勫垯涓婚敭");
+		//灏咲TO杞崲涓篋O
+		CodeResembleRule codeResembleRuleDO = selectByOid(codeResembleRuleDTO.getOid());
+		revisionModelUtil.copyFromDTOIgnore(codeResembleRuleDTO,codeResembleRuleDO);
+		codeResembleRuleDO.setLastModifier(AuthUtil.getUser().getUserName());
+		codeResembleRuleDO.setLastModifyTime(new Date());
+		codeResembleRuleDO.setTs(new Date());
+		baseMapper.updateById(codeResembleRuleDO);
+		return codeResembleRuleDO2VO(codeResembleRuleDO);
+	}
+
+
+	/**
+	 * 鏍¢獙鏄惁鍙互鍒犻櫎锛屽鏋滃瓨鍦ㄤ笅绾э紝骞朵笖涓嬬骇鏈夋暟鎹紩鐢ㄥ垯涓嶈兘鍒犻櫎
+	 * @param codeResembleRuleDTO 鏁版嵁浼犺緭瀵硅薄
+	 * @param codeResembleRuleDO 鏁版嵁搴撲腑鐨勬暟鎹璞�
+	 * @return success涓簍rue涓哄彲浠ュ垹闄わ紝false琛ㄧず鏈夋暟鎹紩鐢紝obj涓簍rue琛ㄧず鏈変笅绾�
+	 */
+	private R checkIsCanDeleteForDO(CodeResembleRuleDTO codeResembleRuleDTO, CodeResembleRule codeResembleRuleDO) {
+		CodeResembleRule tsDO = new CodeResembleRule();
+		BeanUtilForVCI.copyPropertiesIgnoreCase(codeResembleRuleDTO,tsDO);
+//		boService.checkTs(tsDO);
+//		QueryWrapper<CodeResembleRule> wrapper = new QueryWrapper<>();
+//		wrapper.eq("oid",tsDO.getOid());
+//		wrapper.eq("ts",tsDO.getTs());
+		if(!checkIsLinked(codeResembleRuleDO.getOid())) {
+			return R.success("鍙互鍒犻櫎锛�");
+		}else{
+			return R.fail(DATA_LINKED_NOT_DELETE);
+		}
+	}
+
+	/**
+	 * 鏍¢獙鏄惁琚紩鐢�
+	 * @param oid 涓婚敭
+	 * @throws VciBaseException 琚紩鐢ㄧ殑鏃跺�欎細鎶涘嚭寮傚父
+	 */
+	private boolean checkIsLinked(String oid) throws VciBaseException{
+		//TODO 娣诲姞闇�瑕佹牎楠屽紩鐢ㄧ殑鍦版柟
+		return false;
+	}
+
+	/**
+	 * 鍒犻櫎鐩镐技鏌ヨ瑙勫垯
+	 * @param codeResembleRuleDTO 鐩镐技鏌ヨ瑙勫垯鏁版嵁浼犺緭瀵硅薄锛宱id鍜宼s闇�瑕佷紶杈�
+	 * @return 鍒犻櫎缁撴灉鍙嶉锛氾細success锛氭垚鍔燂紝fail锛氬け璐�
+	 * @throws VciBaseException 鍙傛暟涓虹┖锛岃寮曠敤鏃舵姏鍑哄紓甯�
+	 */
+	@Override
+	public R deleteCodeResembleRule(CodeResembleRuleDTO codeResembleRuleDTO) throws VciBaseException{
+		VciBaseUtil.alertNotNull(codeResembleRuleDTO,"鐩镐技鏌ヨ瑙勫垯鏁版嵁瀵硅薄",codeResembleRuleDTO.getOid(),"鐩镐技鏌ヨ瑙勫垯鐨勪富閿�");
+		CodeResembleRule codeResembleRuleDO = selectByOid(codeResembleRuleDTO.getOid());
+		R baseResult = checkIsCanDeleteForDO(codeResembleRuleDTO,codeResembleRuleDO);
+		if(baseResult.isSuccess()) {
+		}else{
+			return baseResult;
+		}
+		//鎵ц鍒犻櫎鎿嶄綔
+//		BatchCBO batchCBO = codeResembleRuleMapper.deleteByPrimaryKey(codeResembleRuleDO.getOid());
+		int i = baseMapper.deleteById(codeResembleRuleDO.getOid());
+		return (i > 0)?R.success(DELETE_SUCCESS):R.fail(DELETE_FAIL);
+	}
+
+//	/**
+//	 * 涓婚敭鏌ヨ鏁版嵁瀵硅薄
+//	 * @param oid 涓婚敭
+//	 * @return  鏁版嵁瀵硅薄
+//	 * @throws VciBaseException 鍙傛暟涓虹┖锛屽苟涓旀暟鎹笉瀛樺湪鐨勬椂鍊欎細鎶涘嚭寮傚父
+//	 */
+//	private CodeResembleRule selectByOid(String oid) throws VciBaseException{
+//		VciBaseUtil.alertNotNull(oid,"涓婚敭");
+//		CodeResembleRule codeResembleRuleDO = codeResembleRuleMapper.selectByPrimaryKey(oid.trim());
+//		if(codeResembleRuleDO == null || StringUtils.isBlank(codeResembleRuleDO.getOid())){
+//			throw new VciBaseException(DATA_OID_NOT_EXIST);
+//		}
+//		return codeResembleRuleDO;
+//	}
+
+	/**
+	 * 涓婚敭鎵归噺鑾峰彇鐩镐技鏌ヨ瑙勫垯
+	 * @param oidCollections 涓婚敭闆嗗悎锛屼絾鏄彈鎬ц兘褰卞搷锛屽缓璁竴娆℃煡璇笉瓒呰繃10000涓�
+	 * @return 鐩镐技鏌ヨ瑙勫垯鏄剧ず瀵硅薄
+	 * @throws VciBaseException 鏌ヨ鍑虹幇寮傚父鏃朵細鎶涘嚭
+	 */
+	@Override
+	public Collection<CodeResembleRuleVO> listCodeResembleRuleByOids(Collection<String> oidCollections) throws VciBaseException{
+		VciBaseUtil.alertNotNull(oidCollections,"鏁版嵁瀵硅薄涓婚敭闆嗗悎");
+		List<CodeResembleRule> codeResembleRuleDOList = listCodeResembleRuleDOByOidCollections(oidCollections);
+		return codeResembleRuleDO2VOs(codeResembleRuleDOList);
+	}
+
+	/**
+	 * 浣跨敤涓婚敭闆嗗悎鏌ヨ鏁版嵁瀵硅薄
+	 * @param oidCollections 涓婚敭鐨勯泦鍚�
+	 * @return 鏁版嵁瀵硅薄鍒楄〃
+	 */
+	private List<CodeResembleRule> listCodeResembleRuleDOByOidCollections(Collection<String> oidCollections){
+		List<CodeResembleRule> codeResembleRuleDOList = new ArrayList<CodeResembleRule>();
+		if(!CollectionUtils.isEmpty(oidCollections)){
+			Collection<Collection<String>> oidCollectionsList = VciBaseUtil.switchCollectionForOracleIn(oidCollections);
+			for(Collection<String> oids: oidCollectionsList){
+				List<CodeResembleRule> tempDOList =  baseMapper.selectBatchIds(oids);
+				if(!CollectionUtils.isEmpty(tempDOList)){
+					codeResembleRuleDOList.addAll(tempDOList);
+				}
+			}
+		}
+		return  codeResembleRuleDOList;
+	}
+
+
+
+	/**
+	 * 鍙傜収鐩镐技鏌ヨ瑙勫垯鍒楄〃
+	 * @param conditionMap 鏌ヨ鏉′欢
+	 * @param pageHelper 鍒嗛〉鍜屾帓搴�
+	 * @return 鐩镐技鏌ヨ瑙勫垯鏄剧ず瀵硅薄鍒楄〃锛岀敓鏁堢殑鍐呭
+	 * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+	 */
+	@Override
+	public DataGrid<CodeResembleRuleVO> refDataGridCodeResembleRule(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException{
+		if(conditionMap == null){
+			conditionMap = new HashMap<String, String>();
+		}
+		return gridCodeResembleRule(conditionMap,pageHelper);
+	}
 }
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmProductCodeServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmProductCodeServiceImpl.java
index 1a5b1ae..cf29925 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmProductCodeServiceImpl.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmProductCodeServiceImpl.java
@@ -29,6 +29,7 @@
 import com.vci.ubcs.starter.web.enumpck.OsCodeFillTypeEnum;
 import com.vci.ubcs.starter.web.util.VciBaseUtil;
 import com.vci.ubcs.starter.web.util.VciDateUtil;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
@@ -42,6 +43,7 @@
 
 import static com.vci.ubcs.code.constant.MdmEngineConstant.*;
 @Service
+@Slf4j
 public class MdmProductCodeServiceImpl  implements MdmProductCodeService {
 
 	/**
@@ -97,9 +99,11 @@
 			Map<String/**娴佹按渚濇嵁**/, Map<String/**鐮佹鐨勪富閿�**/,Double/**鏈�澶ф祦姘村彿**/>> maxSerialMap = new HashMap<>();
 			// TODO 澶氱嚎绋嬫祦寮曞彂鐨勯棶棰樺凡淇敼
 			dataCBOList.parallelStream().forEach(cbo->{
+				log.info("code:----->"+cbo.getId());
 //				VciBaseUtil.setCurrentUserSessionInfo(sessionInfo);
 				String code = cbo.getId();
 				List<String> serialUnitList = new ArrayList<>();
+				String seclenghStr=cbo.getData().get(CODE_SEC_LENGTH_FIELD);
 				String[] secLengths = cbo.getData().get(CODE_SEC_LENGTH_FIELD).split("#");
 				cbo.getData().remove(CODE_SEC_LENGTH_FIELD);//灏嗘key闄ゅ幓
 				cbo.getData().remove(IMPORT_ROW_INDEX);//灏嗘key闄ゅ幓
@@ -110,18 +114,18 @@
 				for (int i = 0; i < secLengths.length; i++) {
 					CodeBasicSecVO secVO = secVOList.get(i);
 					String thisSecValue  = "";
-					if(i == 0){
-						thisSecValue = code.contains("#")?code.substring(0,code.indexOf("#")):code;
+					/*if(i == 0){
+						thisSecValue = seclenghStr.contains("#")?code.substring(0,VciBaseUtil.getInt(secLengths[i])):code;
 					} else if(i == secLengths.length-1){
 						//鏈�鍚�
-						thisSecValue =  code.contains("#")?code.substring(code.lastIndexOf("#")):code;
-					}else {
+						thisSecValue =  seclenghStr.contains("#")?code.substring(VciBaseUtil.getInt(secLengths[i-1]),code.length()):code;
+					}else {*/
 						int start = 0;
 						for (int j = 0; j < i; j++) {
-							start += VciBaseUtil.getInt(secLengths[j]) + 1;
+							start += VciBaseUtil.getInt(secLengths[j]);
 						}
-						thisSecValue = code.substring(start,start+VciBaseUtil.getInt(secLengths[1]));
-					}
+						thisSecValue = code.substring(start,start+VciBaseUtil.getInt(secLengths[i]));
+				//	}
 					if(VciBaseUtil.getBoolean(secVO.getSerialDependFlag())){
 						serialUnitList.add(thisSecValue);
 					}
@@ -146,6 +150,12 @@
 								OsCodeFillTypeEnum.LEFT.getValue().equalsIgnoreCase(secVO.getCodeFillType()))));
 						}
 						Map<String, Double> thisUnitMaxMap = maxSerialMap.getOrDefault(serialUnitString, new HashMap<>());
+						if(thisUnitMaxMap.containsKey(secOid)){
+							Double maxValue=  thisUnitMaxMap.getOrDefault(secOid,new Double(-1));
+							if(maxValue>serialDb){
+								serialDb=maxValue;
+							}
+						}
 						thisUnitMaxMap.put(secOid,serialDb);
 						maxSerialMap.put(serialUnitString,thisUnitMaxMap);
 						serialUnFileStringList.add(String.valueOf(serialDb));
@@ -167,6 +177,7 @@
 			//澶勭悊鏈�澶х殑娴佹按鍙�
 			List<CodeSerialValue> addSerialValueList = new ArrayList<>();
 			List<CodeSerialValue> editSerialValueList = new ArrayList<>();
+			log.info("maxSerialMap:----->"+maxSerialMap.size());
 			maxSerialMap.forEach((serialUnit,secOidMaxMap)->{
 				secOidMaxMap.forEach((secOid,maxSerial)->{
 					QueryWrapper<CodeSerialValue> queryWrapper = new QueryWrapper<>();
@@ -176,8 +187,10 @@
 					queryWrapper.eq("codeSecOid", secOid);
 
 					List<CodeSerialValue> serialValueDOS = serialValueMapper.selectList(queryWrapper);
+					log.info("serialValueDOS--->"+serialValueDOS.size());
 					if (!CollectionUtils.isEmpty(serialValueDOS)) {
 						CodeSerialValue serialValueDO = serialValueDOS.get(0);
+						log.info("oldmaxSerial--->"+serialValueDO.getMaxSerial()+"---- newmaxSerial---->"+maxSerial);
 						if(VciBaseUtil.getDouble(serialValueDO.getMaxSerial())<maxSerial){
 							serialValueDO.setMaxSerial(String.valueOf(maxSerial));
 							DefaultAttrAssimtUtil.updateDefaultAttrAssimt(serialValueDO);
@@ -318,6 +331,7 @@
 				//瑕佸瓨鍌ㄦ渶鍚庣殑鍏ㄩ儴allcode
 				wrapperAllCode(classifyFullInfoBO, ruleVO, cbo, templateVO, allCodeDOList, serialUnitString, sb.toString());
 			}
+			//澶勭悊鏈�澶ф祦姘�
 			saveSerialValue( ruleVO, lastMaxSerialValueMap, maxSerialValueMap);
 
 			allCodeDOList.stream().forEach(

--
Gitblit v1.9.3