From 5613052418903a5780a8cb77c29eab4ef8066bee Mon Sep 17 00:00:00 2001
From: 田源 <lastanimals@163.com>
Date: 星期四, 14 十二月 2023 20:18:42 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java                           |    5 
 Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/StatisticConfigServiceImpl.java             |  105 ++++++++++
 Source/UBCS/service-systemctl-restart.sh                                                                                        |   24 ++
 Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/mapper/StatisticConfigMapper.java                        |   12 +
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/attrmap/TT.json                   |   17 +
 Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/web/toolmodel/DateConverter.java                  |    5 
 Source/UBCS/ubcs-service/ubcs-applyjtcodeservice/src/main/java/com/vci/ubcs/code/applyjtcodeservice/feigh/MdmInterJtClient.java |    3 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyServiceImpl.java                    |    2 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/MdmEngineService.java                                |    1 
 /dev/null                                                                                                                       |  108 ----------
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/attrmap/标准..JSON                  |    9 
 Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/vo/StatisticConfigVO.java                        |   16 +
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/UniversalInterfaceImpl.java                     |   32 ++-
 Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/IStatisticConfigService.java                     |   36 +++
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/attrmap/xxx.json                  |   16 
 Source/UBCS/ubcs-service/ubcs-system/src/main/resources/mapper/StatisticConfigMapper.xml                                        |    7 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java                       |   36 ++-
 Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/controller/StatisticConfigController.java                |   58 +++++
 Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/entity/StatisticConfig.java                      |   66 ++++++
 19 files changed, 413 insertions(+), 145 deletions(-)

diff --git a/Source/UBCS/service-systemctl-restart.sh b/Source/UBCS/service-systemctl-restart.sh
index dd610e8..8993e66 100644
--- a/Source/UBCS/service-systemctl-restart.sh
+++ b/Source/UBCS/service-systemctl-restart.sh
@@ -18,61 +18,85 @@
 systemctl restart ubcs-admin.service
 echo '---------------ubcs-admin 鏈嶅姟閲嶅惎鍛戒护鎵ц瀹屾瘯------------------'
 
+sleep 3
+
 echo '--------------ubcs-applyjtcodeservice 鏈嶅姟姝e湪閲嶅惎------------'
 yes | cp -f ./target/ubcs-applyjtcodeservice.jar /data1/ubcs/ubcs-server/ubcs_applyjtcodeservice/
 systemctl restart ubcs-applyjtcodeservice.service
 echo '----------ubcs-applyjtcodeservice 鏈嶅姟閲嶅惎鍛戒护鎵ц瀹屾瘯----------'
+
+sleep 3
 
 echo '-------------------ubcs-auth 鏈嶅姟姝e湪閲嶅惎------------------ --'
 yes | cp -f ./target/ubcs-auth.jar /data1/ubcs/ubcs-server/ubcs_auth/
 systemctl restart ubcs-auth.service
 echo '---------------ubcs-auth 鏈嶅姟閲嶅惎鍛戒护鎵ц瀹屾瘯-------------------'
 
+sleep 3
+
 echo '-------------------ubcs-code 鏈嶅姟姝e湪閲嶅惎---------------------'
 yes | cp -f ./target/ubcs-code.jar /data1/ubcs/ubcs-server/ubcs_code/
 systemctl restart ubcs-code.service
 echo '---------------ubcs-code 鏈嶅姟閲嶅惎鍛戒护鎵ц瀹屾瘯-------------------'
+
+sleep 3
 
 echo '-------------------ubcs-desk 鏈嶅姟姝e湪閲嶅惎---------------------'
 yes | cp -f ./target/ubcs-desk.jar /data1/ubcs/ubcs-server/ubcs_desk/
 systemctl restart ubcs-desk.service
 echo '---------------ubcs-desk 鏈嶅姟閲嶅惎鍛戒护鎵ц瀹屾瘯-------------------'
 
+sleep 3
+
 echo '-------------------ubcs-flow 鏈嶅姟姝e湪閲嶅惎--------------------'
 yes | cp -f ./target/ubcs-flow.jar /data1/ubcs/ubcs-server/ubcs_flow/
 systemctl restart ubcs-flow.service
 echo '---------------ubcs-flow 鏈嶅姟閲嶅惎鍛戒护鎵ц瀹屾瘯------------------'
+
+sleep 3
 
 echo '-------------------ubcs-gateway 鏈嶅姟姝e湪閲嶅惎-----------------'
 yes | cp -f ./target/ubcs-gateway.jar /data1/ubcs/ubcs-server/ubcs_gateway/
 systemctl restart ubcs-gateway.service
 echo '---------------ubcs-gateway 鏈嶅姟閲嶅惎鍛戒护鎵ц瀹屾瘯---------------'
 
+sleep 3
+
 echo '-------------------ubcs-log 鏈嶅姟姝e湪閲嶅惎---------------------'
 yes | cp -f ./target/ubcs-log.jar /data1/ubcs/ubcs-server/ubcs_log/
 systemctl restart ubcs-log.service
 echo '---------------ubcs-log 鏈嶅姟閲嶅惎鍛戒护鎵ц瀹屾瘯-------------------'
+
+sleep 3
 
 echo '-------------------ubcs-omd 鏈嶅姟姝e湪閲嶅惎---------------------'
 yes | cp -f ./target/ubcs-omd.jar /data1/ubcs/ubcs-server/ubcs_omd/
 systemctl restart ubcs-omd.service
 echo '---------------ubcs-omd 鏈嶅姟閲嶅惎鍛戒护鎵ц瀹屾瘯-------------------'
 
+sleep 3
+
 echo '-------------------ubcs-report 鏈嶅姟姝e湪閲嶅惎-------------------'
 yes | cp -f ./target/ubcs-report.jar /data1/ubcs/ubcs-server/ubcs_report/
 systemctl restart ubcs-report.service
 echo '---------------ubcs-report 鏈嶅姟閲嶅惎鍛戒护鎵ц瀹屾瘯-----------------'
+
+sleep 3
 
 echo '-------------------ubcs-resource 鏈嶅姟姝e湪閲嶅惎------------------'
 yes | cp -f ./target/ubcs-resource.jar /data1/ubcs/ubcs-server/ubcs_resource/
 systemctl restart ubcs-resource.service
 echo '---------------ubcs-resource 鏈嶅姟閲嶅惎鍛戒护鎵ц瀹屾瘯----------------'
 
+sleep 3
+
 echo '-------------------ubcs-system 鏈嶅姟姝e湪閲嶅惎---------------------'
 yes | cp -f ./target/ubcs-system.jar /data1/ubcs/ubcs-server/ubcs_system/
 systemctl restart ubcs-system.service
 echo '---------------ubcs-system 鏈嶅姟閲嶅惎鍛戒护鎵ц瀹屾瘯-------------------'
 
+sleep 3
+
 echo '--------------------ubcs-user 鏈嶅姟姝e湪閲嶅惎----------------------'
 yes | cp -f ./target/ubcs-user.jar /data1/ubcs/ubcs-server/ubcs_user/
 systemctl restart ubcs-user.service
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/attrmap/TT.json b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/attrmap/TT.json
new file mode 100644
index 0000000..967a1a2
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/attrmap/TT.json
@@ -0,0 +1,17 @@
+{
+  "data": {
+    "systemId": "MPM",
+    "user": {
+      "userName": "weidy",
+      "trueName": "榄忓ぇ鍕�",
+      "ip": "127.0.0.1"
+    },
+    "library": {
+      "id": "wupin",
+      "classifyid":[
+        "020201",
+        "020202"
+      ]
+    }
+  }
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/attrmap/xxx.json b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/attrmap/xxx.json
index a83e07e..9cc4b97 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/attrmap/xxx.json
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/attrmap/xxx.json
@@ -3,18 +3,14 @@
     "classifys": {
       "classify": [
         {
-          "classCode": "050101",
+          "classCode": "1025",
           "fullclsfNamePath": "",
-          "library": "wupin",
+          "library": "10",
           "sections": {
             "section": [
               {
-                "name": "鍥哄畾鐮佹",
-                "value": "A"
-              },
-              {
-                "name": "寮曠敤鐮佹",
-                "value": "001"
+                "name": "鍒嗙被",
+                "value": "1025"
               }
             ]
           },
@@ -30,6 +26,10 @@
                   "key": "name",
                   "text": "鍚嶇О",
                   "value": "鍗婂渾澶磋灪閽�"
+                },{
+                  "key": "drawingno",
+                  "text": "鍥惧彿",
+                  "value": "test2023-11-20-24"
                 }]
               }
             ]
diff --git "a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/attrmap/\346\240\207\345\207\206..JSON" "b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/attrmap/\346\240\207\345\207\206..JSON"
index 1e34e0c..43fc541 100644
--- "a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/attrmap/\346\240\207\345\207\206..JSON"
+++ "b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/attrmap/\346\240\207\345\207\206..JSON"
@@ -16,7 +16,10 @@
                         "value": "Q/3B",
                         "name": "鍥哄畾鐮佹"
                     },
-                    { "name": "绯诲垪鍙�" },
+                    {
+						"name": "绯诲垪鍙�",
+						"value":""
+					},
                     {
                         "value": "-",
                         "name": "鍒嗗壊绗�"
@@ -33,9 +36,9 @@
                     "editSeriesFlag": "false",
                     "releaseTime": "2023-11-14",
                     "seriesFlag": "false",
-                    "oldCode": "",
+                    "oldCode": "Q/3B12-2023",
                     "seriesFlow": "",
-                    "operationType": "1",
+                    "operationType": "2",
                     "creator": "weidy",
                     "operate": "create",
                     "status": "Released",
diff --git a/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/entity/StatisticConfig.java b/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/entity/StatisticConfig.java
new file mode 100644
index 0000000..f20aa9c
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/entity/StatisticConfig.java
@@ -0,0 +1,66 @@
+package com.vci.ubcs.system.entity;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 涓绘暟鎹粺璁″璞�
+ * @author yuxc
+ * @date 2023/12/13 11:13
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@TableName("PL_SYS_STATISTIC_CONFIG")
+public class StatisticConfig implements Serializable {
+
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * 涓婚敭
+	 */
+	@TableId
+	private Long id;
+
+	/**
+	 * 鐢ㄦ埛id
+	 */
+	private Long  userId;
+
+	/**
+	 * 涓氬姟绫诲瀷
+	 */
+	private String btmname;
+
+	/**
+	 * 鍥惧舰ids
+	 */
+	private String chartIds;
+
+	/**
+	 * 鍒涘缓鏃堕棿
+	 */
+	private Date createtime;
+	/**
+	 * 鍒涘缓浜�
+	 */
+	private String creator;
+	/**
+	 * 淇敼鏃堕棿
+	 */
+	private Date lastmodifytime;
+	/**
+	 * 淇敼浜�
+	 */
+	private String lastmodifier;
+	/**
+	 *
+	 */
+	private Date ts;
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/vo/StatisticConfigVO.java b/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/vo/StatisticConfigVO.java
new file mode 100644
index 0000000..36ee16b
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/vo/StatisticConfigVO.java
@@ -0,0 +1,16 @@
+package com.vci.ubcs.system.vo;
+
+import com.vci.ubcs.system.entity.MdmCountConfig;
+import com.vci.ubcs.system.entity.StatisticConfig;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author ludc
+ * @date 2023/10/18 8:56
+ */
+@Data
+public class StatisticConfigVO extends StatisticConfig {
+
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/web/toolmodel/DateConverter.java b/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/web/toolmodel/DateConverter.java
index 9e280ef..1f98cc3 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/web/toolmodel/DateConverter.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/web/toolmodel/DateConverter.java
@@ -140,7 +140,7 @@
 		return text.substring(0, text.lastIndexOf(".")) + "." + nano;
 	}
 
-	public static void main(String[] args) {
+	/*public static void main(String[] args) {
 		List<String> list = new ArrayList<String>() {
 			{
 				this.add("2020-11-12 12:12:03");
@@ -175,7 +175,7 @@
 			}
 
 		});
-	}
+	}*/
 
 	public String getAsText(String dateFormat) {
 		Date value = this.getValue();
@@ -185,4 +185,5 @@
 
 		return value != null ? (new SimpleDateFormat(dateFormat)).format(value) : "";
 	}
+
 }
diff --git a/Source/UBCS/ubcs-service/ubcs-applyjtcodeservice/src/main/java/com/vci/ubcs/code/applyjtcodeservice/feigh/MdmInterJtClient.java b/Source/UBCS/ubcs-service/ubcs-applyjtcodeservice/src/main/java/com/vci/ubcs/code/applyjtcodeservice/feigh/MdmInterJtClient.java
index 42e4177..852fe8e 100644
--- a/Source/UBCS/ubcs-service/ubcs-applyjtcodeservice/src/main/java/com/vci/ubcs/code/applyjtcodeservice/feigh/MdmInterJtClient.java
+++ b/Source/UBCS/ubcs-service/ubcs-applyjtcodeservice/src/main/java/com/vci/ubcs/code/applyjtcodeservice/feigh/MdmInterJtClient.java
@@ -14,6 +14,7 @@
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.extern.slf4j.Slf4j;
+import org.jetbrains.annotations.NotNull;
 import org.springblade.core.tenant.annotation.NonDS;
 import org.springblade.core.tool.api.R;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -289,7 +290,7 @@
 	 * @param jclassObject
 	 * @throws Throwable
 	 */
-	private void getVilewMode(DockingClassifyVO jclassObject, List<DockingClassifyViewVO> list)
+	private void getVilewMode(@NotNull DockingClassifyVO jclassObject, List<DockingClassifyViewVO> list)
 		throws Throwable {
 		String nodeLinkName = jclassObject.getNodeLinkName();
 		try {
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/MdmEngineService.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/MdmEngineService.java
index 418809c..077354c 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/MdmEngineService.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/MdmEngineService.java
@@ -245,7 +245,6 @@
 	 */
 	R batchUpdateCode(List<CodeOrderDTO> orderDTOList);
 
-
 	/**
 	 * 鏍囪娴佺▼涓笟鍔℃暟鎹槸鍚﹂�氳繃
 	 * @param oid 涓氬姟鏁版嵁涓婚敭
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyServiceImpl.java
index bd645df..891948a 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyServiceImpl.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyServiceImpl.java
@@ -670,7 +670,7 @@
 	 * @return
 	 */
 	public List<CodeClassifyVO> selectAllClassifyByOid(String oid, String fieldInPath){
-		List<CodeClassify>  codeClassifyList=codeClassifyMapper.selectAllClassifyByOid(oid,AuthUtil.getTenantId(),fieldInPath);
+		List<CodeClassify>  codeClassifyList=codeClassifyMapper.selectAllClassifyByOid(oid,fieldInPath,AuthUtil.getTenantId());
 		List<CodeClassifyVO> voList = codeClassifyDO2VOs(codeClassifyList);
 		return voList;
 
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java
index 3bb6a3e..8e54c6b 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java
@@ -88,6 +88,8 @@
 import java.beans.PropertyDescriptor;
 import java.lang.reflect.Method;
 import java.math.BigDecimal;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
 import java.time.LocalDateTime;
 import java.time.ZoneId;
 import java.time.ZonedDateTime;
@@ -1166,10 +1168,7 @@
 							"order by to_char(CREATETIME, 'mm')";
 			//鏌ヨ鍑洪渶瑕佸鐞嗙殑鏁版嵁
 			List<Map> maps = commonsMapper.selectBySql(sql);
-			if(maps.size() == 0){
-				throw new ServiceException("浼犲叆绫诲瀷["+ datum.getName() + ":" +
-					datum.getId() +"]鏈煡鍒扮浉鍏崇粺璁℃暟鎹紝璇风‘璁�!!!!");
-			}
+
 			//褰撳勾姣忔湀鏈堜唤涔嬪墠涔嬪拰
 			List<Integer> monthCount = new ArrayList<>(12);
 			//褰撳勾姣忔湀鐨勬湀浠芥暟鎹�
@@ -1177,6 +1176,9 @@
 			//鑾峰彇褰撳墠鏈堢殑鏁板瓧
 			Calendar instance = Calendar.getInstance();
 			int nowmonth = instance.get(Calendar.MONTH) + 1;
+			if(maps.size() == 0){
+				nowmonth = 0;
+			}
 			//浠�1鍒�12鏈堣繘琛屽鐞�
 			for (Integer i = 1; i <= 12; i++) {
 				//褰撳墠鏈堝悗鎵�鏈夋暟鎹缃负0
@@ -2587,12 +2589,24 @@
                 }
                 DateConverter dateConverter = new DateConverter();
                 if (VciFieldTypeEnum.VTDateTime.equals(fieldTypeEnum)) {
-                    //瀹為檯涓婏紝鏁版嵁搴撻兘鏄痶imestamp鐨勭被鍨�.
-                    dateConverter.setAsText(value);
-                    return "to_date('" + dateConverter.getAsText(VciDateUtil.DateTimeFormat) + "','" + DATETIME_FORMAT + "')";
+                    //瀹為檯涓婏紝鏁版嵁搴撻兘鏄痶imestamp鐨勭被鍨�. TODO:铏界劧娌¤兘瑙e喅鏌ヨ鏃ユ湡鐨勯棶棰橈紝浣嗘槸鑳芥殏鏃惰В鍐虫姤閿欓棶棰�
+					if(value.contains("*")){
+						value = value.replace("*","%");
+						return "'" + value + "'";
+					}else{
+						value = value.replace("*","");
+						dateConverter.setAsText(value);
+						return "to_date('" + dateConverter.getAsText(VciDateUtil.DateTimeFormat) + "','" + DATETIME_FORMAT + "')";
+					}
                 } else if (VciFieldTypeEnum.VTDate.equals(fieldTypeEnum)) {
-                    dateConverter.setAsText(value);
-                    return "to_date('" + dateConverter.getAsText(VciDateUtil.DateFormat) + "','" + DATE_FORMAT + "')";
+					if(value.contains("*")){
+						value = value.replace("*","%");
+						return "'" + value + "'";
+					}else {
+						value = value.replace("*","");
+						dateConverter.setAsText(value);
+						return "to_date('" + dateConverter.getAsText(VciDateUtil.DateFormat) + "','" + DATE_FORMAT + "')";
+					}
                 } else if (VciFieldTypeEnum.VTDouble.equals(fieldTypeEnum)
                         || VciFieldTypeEnum.VTLong.equals(fieldTypeEnum)
                         || VciFieldTypeEnum.VTInteger.equals(fieldTypeEnum)) {
@@ -4196,7 +4210,7 @@
         bo.setFirstV("1");
         bo.setLastV("1");
         bo.setRevisionRule(listR.getData().get(0).getRevisionRuleId());
-        bo.setVersionRule("".equals(listR.getData().get(0).getVersionRule())?"0":listR.getData().get(0).getVersionRule());
+        bo.setVersionRule("".equals(listR.getData().get(0).getVersionRule())?"1":listR.getData().get(0).getVersionRule());
         if (StringUtils.isNotBlank(listR.getData().get(0).getRevisionRuleId())) {
             R<List<RevisionRuleVO>> revisionRuleVO = revisionRuleClient
                     .selectByIdCollection(Collections.singletonList(listR.getData().get(0).getRevisionRuleId().toLowerCase()));
@@ -4217,7 +4231,7 @@
         bo.setId("");
         bo.setName("");
         bo.setDescription("");
-        bo.setOwner("1");
+        bo.setOwner(AuthUtil.getUser().getUserId().toString());
 //		bo.setCheckinby(userName);
         bo.setCopyFromVersion("");
 //		this.initTypeAttributeValue(bo,btmTypeVO);
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java
index 973d396..93f901d 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java
@@ -3614,6 +3614,11 @@
 		rowDataList.stream().forEach(rowData -> {
 			ClientBusinessObject cbo=new ClientBusinessObject();
 			DefaultAttrAssimtUtil.addDefaultAttrAssimt(cbo, classifyFullInfo.getTopClassifyVO().getBtmTypeId());
+			R<List<BtmTypeVO>> listR = btmTypeClient.selectByIdCollection(Collections.singletonList(classifyFullInfo.getTopClassifyVO().getBtmTypeId()));
+			if(!listR.isSuccess() || listR.getData().size() == 0){
+				throw new VciBaseException("浼犲叆涓氬姟绫诲瀷鏈煡璇㈠埌鐩稿簲琛ㄥ崟锛岃妫�鏌ワ紒");
+			}
+			cbo.setRevisionRule("".equals(listR.getData().get(0).getVersionRule())?"1":listR.getData().get(0).getVersionRule());
 			rowData.getData().forEach((index,value)->{
 					String field = fieldIndexMap.get(index);
 				if (StringUtils.isBlank(field)) {
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/UniversalInterfaceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/UniversalInterfaceImpl.java
index 755fdba..40aa35b 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/UniversalInterfaceImpl.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/UniversalInterfaceImpl.java
@@ -315,7 +315,7 @@
 						//鏍¢獙鏄惁閰嶇疆
 						DockingSystemConfig dockingSystemConfig=null;
 						dockingSystemConfig=checkIspass(finalSystemId, SysIntegrationDataFlowTypeEnum.ACCEPT.getValue(), sysIntegrationPushTypeEnum.ACCPET_APPCODE.getValue(),codeClassifyVO.getOid());
-						if(dockingSystemConfig==null){
+						if(dockingSystemConfig==null||StringUtils.isBlank(dockingSystemConfig.getOid())){
 							errorid[0] ="101";
 							throw new Throwable("绯荤粺鏍囪瘑涓恒��"+ finalSystemId +"銆戯紝闆嗘垚鍒嗙被涓恒��"+codeClassifyVO.getName()+"銆戜互涓婂垎绫伙紝"+sysIntegrationPushTypeEnum.ACCPET_APPCODE.getText()+"鎺ュ彛閰嶇疆宸插仠鐢ㄦ垨鑰呮湭閰嶇疆锛岃鑱旂郴缂栫爜绠$悊鍛橈紒");
 						}
@@ -1064,7 +1064,7 @@
 					if(CODE_CHECKCONFIG) {
 						//鏍¢獙鏄惁閰嶇疆
 						DockingSystemConfig dockingSystemConfig= checkIspass(finalSystemId, SysIntegrationDataFlowTypeEnum.ACCEPT.getValue(), sysIntegrationPushTypeEnum.ACCPET_EDITCODE.getValue(),codeClassifyVO.getOid());
-						if(dockingSystemConfig==null){
+						if(dockingSystemConfig==null||StringUtils.isBlank(dockingSystemConfig.getOid())){
 							objerrorCode ="101";
 							throw new Throwable("绯荤粺鏍囪瘑涓恒��"+ finalSystemId +"銆戯紝闆嗘垚鍒嗙被涓恒��"+codeClassifyVO.getName()+"銆戜互涓婂垎绫伙紝"+sysIntegrationPushTypeEnum.ACCPET_EDITCODE.getText()+"鎺ュ彛閰嶇疆宸插仠鐢ㄦ垨鑰呮湭閰嶇疆锛岃鑱旂郴缂栫爜绠$悊鍛橈紒");
 						}
@@ -1421,7 +1421,7 @@
 					if(CODE_CHECKCONFIG) {
 						//鏍¢獙鏄惁閰嶇疆
 						DockingSystemConfig dockingSystemConfig= checkIspass(systemId, SysIntegrationDataFlowTypeEnum.ACCEPT.getValue(), sysIntegrationPushTypeEnum.ACCPET_QUERYDATA.getValue(),currentCodeClassify[0].getOid());
-						if(dockingSystemConfig==null){
+						if(dockingSystemConfig==null||StringUtils.isBlank(dockingSystemConfig.getOid())){
 							errorid ="101";
 							throw new Throwable("绯荤粺鏍囪瘑涓恒��"+ systemId +"銆戯紝闆嗘垚鍒嗙被涓恒��"+currentCodeClassify[0].getName()+"銆戜互涓婂垎绫伙紝"+sysIntegrationPushTypeEnum.ACCPET_QUERYDATA.getText()+"鎺ュ彛閰嶇疆宸插仠鐢ㄦ垨鑰呮湭閰嶇疆锛岃鑱旂郴缂栫爜绠$悊鍛橈紒");
 						}
@@ -2072,7 +2072,7 @@
 				//鏍¢獙鏄惁閰嶇疆
 				DockingSystemConfig dockingSystemConfig=null;
 				dockingSystemConfig=checkIspass(finalSystemId, SysIntegrationDataFlowTypeEnum.ACCEPT.getValue(), sysIntegrationPushTypeEnum.ACCPET_APPCODE.getValue(),codeClassifyVO.getOid());
-				if(dockingSystemConfig==null){
+				if(dockingSystemConfig==null||StringUtils.isBlank(dockingSystemConfig.getOid())){
 					errorid[0] ="101";
 					throw new Throwable("绯荤粺鏍囪瘑涓恒��"+ finalSystemId +"銆戯紝闆嗘垚鍒嗙被涓恒��"+codeClassifyVO.getName()+"銆戜互涓婂垎绫伙紝"+sysIntegrationPushTypeEnum.ACCPET_APPCODE.getText()+"鎺ュ彛閰嶇疆宸插仠鐢ㄦ垨鑰呮湭閰嶇疆锛岃鑱旂郴缂栫爜绠$悊鍛橈紒");
 				}
@@ -2426,7 +2426,7 @@
 		}catch (Throwable e){
 			objerrorCode="1";
 			e.printStackTrace();
-			throw new Throwable("MDM闆嗘垚灞炴�ч厤缃枃浠惰鍙栧け璐�");
+			throw new Throwable("闆嗘垚绯荤粺鏍囪瘑涓猴細銆�"+systemId+"銆戯紝鍒嗙被搴撲负:銆�"+libray+"銆戠殑闆嗘垚灞炴�ч厤缃枃浠惰鍙栧け璐�");
 		}
 		LinkedList<String> rowNameList=new LinkedList<>();
 		LinkedHashMap<String,Integer> filedIndexMap=new LinkedHashMap<>();
@@ -2537,7 +2537,7 @@
 		}catch (Throwable e){
 			objerrorCode="1";
 			e.printStackTrace();
-			throw new Throwable("MDM闆嗘垚灞炴�ч厤缃枃浠惰鍙栧け璐�");
+			throw new Throwable("闆嗘垚绯荤粺鏍囪瘑涓猴細銆�"+systemId+"銆戯紝鍒嗙被搴撲负:銆�"+libray+"銆戠殑闆嗘垚灞炴�ч厤缃枃浠惰鍙栧け璐�");
 		}
 		LinkedList<String> rowNameList=new LinkedList<>();
 		LinkedHashMap<String,Integer> filedIndexMap=new LinkedHashMap<>();
@@ -2729,8 +2729,15 @@
 	 */
 	private DockingSystemConfig  checkIspass(String systemId,String type,String operationType,String classOid){
 		log.info("systemId锛�"+systemId+",type:"+SysIntegrationDataFlowTypeEnum.getTextByValue(type)+",operationType:"+sysIntegrationPushTypeEnum.getTextByValue(operationType)+",classOid:"+classOid);
-		CodeClassifyVO codeClassifyVO= classifyService.getObjectByOid(classOid);
-		classOid=codeClassifyVO.getOid();
+		//CodeClassifyVO codeClassifyVO= classifyService.getObjectByOid(classOid);
+		List<CodeClassify> codeClassifyList=  classifyService.selectAllLevelParentByOid(classOid);
+		List<String> classifyOids=new ArrayList<>();
+		if(!CollectionUtils.isEmpty(codeClassifyList)) {
+			classifyOids = codeClassifyList.stream().map(CodeClassify::getOid).collect(Collectors.toList());
+		}else{
+			return null;
+		}
+		//classOid=codeClassifyVO.getOid();
 		//鏍规嵁绫诲瀷鍘绘煡璇㈤渶瑕侀泦鎴愮殑鍒嗙被鎴栬�呮暟鎹�
 		LambdaQueryWrapper<DockingSystemConfig> queryWrapper = Wrappers.<DockingSystemConfig>lambdaQuery();
 		queryWrapper.eq(DockingSystemConfig::getUsedFlag, MdmDuckingConstant.SEND_FLAG_TRUE);
@@ -2738,11 +2745,16 @@
 		queryWrapper.eq(DockingSystemConfig::getDataFlowType,type);
 		queryWrapper.eq(DockingSystemConfig::getPushType,operationType);
 		if(StringUtils.isNotBlank(classOid)){
-			queryWrapper.in(DockingSystemConfig::getClassifyOid,classOid);
+			queryWrapper.in(DockingSystemConfig::getClassifyOid,classifyOids);
 		}
 		List<DockingSystemConfig> dockingSystemConfigList=new ArrayList<>();
 		dockingSystemConfigList=	dockingSystemConfigList=dockingSystemConfigService.list(queryWrapper);
 		if(!CollectionUtils.isEmpty(dockingSystemConfigList)){
+			return	dockingSystemConfigList.get(0);
+		}else{
+			return null;
+		}
+		/*if(!CollectionUtils.isEmpty(dockingSystemConfigList)){
 		 return	dockingSystemConfigList.get(0);
 		}else{
 			if(StringUtils.isNotBlank(codeClassifyVO.getParentCodeClassifyOid())) {
@@ -2753,6 +2765,6 @@
 			return dockingSystemConfigList.get(0);
 		}else{
 			return	new DockingSystemConfig();
-		}
+		}*/
 	}
 }
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeWupinMapper.xml b/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeWupinMapper.xml
deleted file mode 100644
index 124812f..0000000
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeWupinMapper.xml
+++ /dev/null
@@ -1,108 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.vci.ubcs.code.mapper.CodeWupinMapper">
-
-    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
-    <resultMap id="codeWupinResultMap" type="com.vci.ubcs.code.entity.CodeWupin">
-        <result column="OID" property="oid"/>
-        <result column="REVISIONOID" property="revisionOid"/>
-        <result column="NAMEOID" property="nameOid"/>
-        <result column="BTMNAME" property="btmname"/>
-        <result column="LASTR" property="lastR"/>
-        <result column="FIRSTR" property="firstR"/>
-        <result column="LASTV" property="lastV"/>
-        <result column="FIRSTV" property="firstV"/>
-        <result column="CREATOR" property="creator"/>
-        <result column="CREATETIME" property="createTime"/>
-        <result column="LASTMODIFIER" property="lastModifier"/>
-        <result column="LASTMODIFYTIME" property="lastModifyTime"/>
-        <result column="REVISIONRULE" property="revisionRule"/>
-        <result column="VERSIONRULE" property="versionRule"/>
-        <result column="REVISIONSEQ" property="revisionSeq"/>
-        <result column="REVISIONVALUE" property="revisionValue"/>
-        <result column="VERSIONSEQ" property="versionSeq"/>
-        <result column="VERSIONVALUE" property="versionValue"/>
-        <result column="LCTID" property="lctid"/>
-        <result column="LCSTATUS" property="lcStatus"/>
-        <result column="TS" property="ts"/>
-        <result column="ID" property="id"/>
-        <result column="NAME" property="name"/>
-        <result column="DESCRIPTION" property="description"/>
-        <result column="OWNER" property="owner"/>
-        <result column="CHECKINBY" property="checkinby"/>
-        <result column="CHECKINTIME" property="checkintime"/>
-        <result column="CHECKOUTBY" property="checkoutby"/>
-        <result column="CHECKOUTTIME" property="checkouttime"/>
-        <result column="COPYFROMVERSION" property="copyFromVersion"/>
-        <result column="CODECLSFID" property="codeclsfid"/>
-        <result column="CODECLSFPATH" property="codeclsfpath"/>
-        <result column="CODETEMPLATEOID" property="codetemplateoid"/>
-        <result column="MATERIALCLASSIFY" property="materialclassify"/>
-        <result column="MATERIALID" property="materialid"/>
-        <result column="TUHAO" property="tuhao"/>
-        <result column="PINPAI" property="pinpai"/>
-        <result column="MORENGONGYS" property="morengongys"/>
-        <result column="XIEYIJIAGE" property="xieyijiage"/>
-        <result column="HESUANPICI" property="hesuanpici"/>
-        <result column="BEIZHUSHUOMING" property="beizhushuoming"/>
-        <result column="MATERIALTYPE" property="materialtype"/>
-        <result column="MATERIALNAME" property="materialname"/>
-        <result column="RUANJIANBANBEN" property="ruanjianbanben"/>
-        <result column="QITACHICUN" property="qitachicun"/>
-        <result column="MORENCAIGOUY" property="morencaigouy"/>
-        <result column="YUMAILEIXING" property="yumaileixing"/>
-        <result column="CHUANGJIANGONGSI" property="chuangjiangongsi"/>
-        <result column="CAIGOUWL" property="caigouwl"/>
-        <result column="WULIAOXINGZHI" property="wuliaoxingzhi"/>
-        <result column="XIEYIBIANHAO" property="xieyibianhao"/>
-        <result column="CAIZHI" property="caizhi"/>
-        <result column="CHUKUFANGSHI" property="chukufangshi"/>
-        <result column="SHIFOUPIHAOGUANLI" property="shifoupihaoguanli"/>
-        <result column="KUCUNWL" property="kucunwl"/>
-        <result column="XINGHAOGUIGE" property="xinghaoguige"/>
-        <result column="DUIWAIGUIGE" property="duiwaiguige"/>
-        <result column="ZHIBAOQI" property="zhibaoqi"/>
-        <result column="CAIGOUTIQIANQI" property="caigoutiqianqi"/>
-        <result column="HESUANFENLEI" property="hesuanfenlei"/>
-        <result column="XIAOSHOUWL" property="xiaoshouwl"/>
-        <result column="CHANGJIAXINGHAO" property="changjiaxinghao"/>
-        <result column="ZUIXIAOQIDING" property="zuixiaoqiding"/>
-        <result column="JILIANGDW" property="jiliangdw"/>
-        <result column="ZHILIANGBZ" property="zhiliangbz"/>
-        <result column="FIRSTFL" property="firstfl"/>
-        <result column="SECONDFL" property="secondfl"/>
-        <result column="THRIFL" property="thrifl"/>
-        <result column="OLDCODE" property="oldcode"/>
-        <result column="SECRETGRADE" property="secretGrade"/>
-        <result column="BAOZHUANGGUIGE" property="baozhuangguige"/>
-        <result column="PASSING" property="passing"/>
-        <result column="XBJ" property="xbj"/>
-        <result column="XBXKXS" property="xbxkxs"/>
-        <result column="XFJJSTJ" property="xfjjstj"/>
-        <result column="XGZCCDGCD" property="xgzccdgcd"/>
-        <result column="XXNDJ" property="xxndj"/>
-        <result column="XZJMC" property="xzjmc"/>
-        <result column="ZJXH" property="zjxh"/>
-        <result column="CLPH" property="clph"/>
-        <result column="BMCL" property="bmcl"/>
-        <result column="CPXS" property="cpxs"/>
-        <result column="XBZJBMC" property="xbzjbmc"/>
-        <result column="XWLWWMC" property="xwlwwmc"/>
-        <result column="JJZYQ" property="jjzyq"/>
-        <result column="JSBMC" property="jsbmc"/>
-        <result column="JSBXH" property="jsbxh"/>
-        <result column="JSCCJ" property="jsccj"/>
-        <result column="JSSXT" property="jssxt"/>
-        <result column="JSZGL" property="jszgl"/>
-        <result column="JZL" property="jzl"/>
-        <result column="JZRXX" property="jzrxx"/>
-        <result column="JZXZB" property="jzxzb"/>
-    </resultMap>
-
-
-    <select id="selectCodeWupinPage" resultMap="codeWupinResultMap">
-        select * from PL_CODE_WUPIN where is_deleted = 0
-    </select>
-
-
-</mapper>
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/controller/StatisticConfigController.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/controller/StatisticConfigController.java
new file mode 100644
index 0000000..a4d1453
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/controller/StatisticConfigController.java
@@ -0,0 +1,58 @@
+package com.vci.ubcs.system.controller;
+
+import com.vci.ubcs.system.entity.StatisticConfig;
+import com.vci.ubcs.system.service.IMdmCountConfigService;
+import com.vci.ubcs.system.service.IStatisticConfigService;
+import com.vci.ubcs.system.vo.MdmCountConfigVO;
+import io.swagger.annotations.Api;
+import lombok.AllArgsConstructor;
+import org.springblade.core.tenant.annotation.NonDS;
+import org.springblade.core.tool.api.R;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * @author yuxc
+ * @date 2023/12/13 15:47
+ */
+@NonDS
+@RestController
+@AllArgsConstructor
+@RequestMapping("/statisticConfig")
+//@Api(value = "瀛楀吀", tags = "瀛楀吀")
+public class StatisticConfigController {
+
+	private final IStatisticConfigService statisticConfigService;
+
+	/**
+     * 缁熻鍒嗘瀽淇濆瓨
+	 * @param statisticConfigs 鏁版嵁浼犺緭瀵硅薄
+	 * @return 鏁版嵁杩斿洖
+	 */
+	@PostMapping("/saveStatisticAnalysis")
+	public R saveStatisticAnalysis(@RequestBody List<StatisticConfig> statisticConfigs){
+		return statisticConfigService.saveStatisticConfig(statisticConfigs);
+	}
+
+	/**
+	 * 缁熻鍒嗘瀽鍒犻櫎鍥惧舰
+	 * @param btmname 涓氬姟绫诲瀷
+	 * @param chartId 鍥惧舰ID
+	 * @return 鎴愬姛涓庡惁
+	 */
+	@PostMapping("/deleteChartId")
+	public R deleteChartId(String btmname,String chartId){
+		return statisticConfigService.deleteChartId(btmname,chartId);
+	}
+
+	/**
+	 * 鑾峰彇鐢ㄦ埛閰嶇疆鐨勪笟鍔$被鍨嬩笌鐩稿叧鐨勫浘褰�
+	 * @return 鍥惧舰鏁版嵁涓庝笟鍔$被鍨婭D
+	 */
+	@GetMapping("/getBtmAndChartIds")
+	public R getBtmAndChartIds(){
+		return statisticConfigService.getBtmAndChartIds();
+	}
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/mapper/StatisticConfigMapper.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/mapper/StatisticConfigMapper.java
new file mode 100644
index 0000000..01fdf6c
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/mapper/StatisticConfigMapper.java
@@ -0,0 +1,12 @@
+package com.vci.ubcs.system.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.vci.ubcs.system.entity.StatisticConfig;
+
+/**
+ * @author ludc
+ * @date 2023/10/17 14:53
+ */
+public interface StatisticConfigMapper extends BaseMapper<StatisticConfig> {
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/IStatisticConfigService.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/IStatisticConfigService.java
new file mode 100644
index 0000000..352f766
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/IStatisticConfigService.java
@@ -0,0 +1,36 @@
+package com.vci.ubcs.system.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.vci.ubcs.system.entity.StatisticConfig;
+import org.springblade.core.tool.api.R;
+
+import java.util.List;
+
+/**
+ * 涓绘暟鎹粺璁¢椤甸厤缃湇鍔�
+ * @author ludc
+ * @date 2023/10/17 14:44
+ */
+public interface IStatisticConfigService extends IService<StatisticConfig> {
+
+	/**
+	 * 缁熻鍒嗘瀽淇濆瓨
+	 * @param statisticConfigs 鏁版嵁浼犺緭瀵硅薄
+	 * @return 鏁版嵁杩斿洖
+	 */
+	R saveStatisticConfig(List<StatisticConfig> statisticConfigs);
+
+	/**
+	 * 缁熻鍒嗘瀽鍒犻櫎鍥惧舰
+	 * @param btmname 涓氬姟绫诲瀷
+	 * @param chartId 鍥惧舰ID
+	 * @return 鎴愬姛涓庡惁
+	 */
+    R deleteChartId(String btmname, String chartId);
+
+	/**
+	 * 鑾峰彇鐢ㄦ埛閰嶇疆鐨勪笟鍔$被鍨嬩笌鐩稿叧鐨勫浘褰�
+	 * @return 鍥惧舰鏁版嵁涓庝笟鍔$被鍨婭D
+	 */
+	R getBtmAndChartIds();
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/StatisticConfigServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/StatisticConfigServiceImpl.java
new file mode 100644
index 0000000..0c5c98c
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/StatisticConfigServiceImpl.java
@@ -0,0 +1,105 @@
+package com.vci.ubcs.system.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.vci.ubcs.system.entity.MdmCountConfig;
+import com.vci.ubcs.system.entity.StatisticConfig;
+import com.vci.ubcs.system.mapper.MdmCountConfigMapper;
+import com.vci.ubcs.system.mapper.StatisticConfigMapper;
+import com.vci.ubcs.system.service.IMdmCountConfigService;
+import com.vci.ubcs.system.service.IStatisticConfigService;
+import com.vci.ubcs.system.vo.MdmCountConfigVO;
+import org.springblade.core.log.exception.ServiceException;
+import org.springblade.core.secure.utils.AuthUtil;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.Func;
+import org.springblade.core.tool.utils.StringUtil;
+import org.springframework.stereotype.Service;
+
+import java.util.*;
+import java.util.stream.Collectors;
+
+/**
+ * 涓绘暟鎹粺璁¢椤甸厤缃湇鍔�
+ * @author ludc
+ * @date 2023/10/17 14:45
+ */
+@Service
+public class StatisticConfigServiceImpl extends ServiceImpl<StatisticConfigMapper, StatisticConfig> implements IStatisticConfigService {
+	/**
+	 * 缁熻鍒嗘瀽淇濆瓨
+	 * @param statisticConfigs 鏁版嵁浼犺緭瀵硅薄
+	 * @return 鏁版嵁杩斿洖
+	 */
+	@Override
+	public R saveStatisticConfig(List<StatisticConfig> statisticConfigs) {
+
+		QueryWrapper<StatisticConfig> wrapper = new QueryWrapper<>();
+		wrapper.eq("user_id", AuthUtil.getUser().getUserId());
+		wrapper.in("btmname", statisticConfigs.stream().map(StatisticConfig::getBtmname).collect(Collectors.toList()));
+		List<StatisticConfig> list = this.list(wrapper);
+		statisticConfigs.stream().map(e ->{
+			list.stream().filter(lis -> e.getBtmname().equals(lis.getBtmname())).forEach(lis->{
+					e.setId(lis.getId());
+					e.setTs(new Date());
+					e.setCreator(lis.getCreator());
+					e.setCreatetime(lis.getCreatetime());
+					e.setLastmodifier(String.valueOf(AuthUtil.getUser().getUserId()));
+					e.setLastmodifytime(new Date());
+			});
+			if(e.getId() == null){
+				e.setUserId(AuthUtil.getUser().getUserId());
+				e.setTs(new Date());
+				e.setCreator(String.valueOf(AuthUtil.getUser().getUserId()));
+				e.setCreatetime(new Date());
+				e.setLastmodifier(String.valueOf(AuthUtil.getUser().getUserId()));
+				e.setLastmodifytime(new Date());
+			}
+			return e;
+		}).collect(Collectors.toList());
+
+		this.saveOrUpdateBatch(statisticConfigs);
+
+		return R.success("鎿嶄綔鎴愬姛锛�");
+	}
+
+	/**
+	 * 缁熻鍒嗘瀽鍒犻櫎鍥惧舰
+	 * @param btmname 涓氬姟绫诲瀷
+	 * @param chartId 鍥惧舰ID
+	 * @return 鎴愬姛涓庡惁
+	 */
+	@Override
+	public R deleteChartId(String btmname, String chartId) {
+
+		QueryWrapper<StatisticConfig> wrapper = new QueryWrapper<>();
+		wrapper.eq("user_id", AuthUtil.getUser().getUserId());
+		wrapper.in("btmname",btmname);
+		StatisticConfig statisticConfig = this.getOne(wrapper);
+		if(StringUtil.isBlank(statisticConfig.getChartIds())){
+			throw new ServiceException("鏈煡鍒板巻鍙茬浉鍏冲浘褰㈡暟鎹紝璇峰厛淇濆瓨锛侊紒");
+		}
+		List<String> chartIds = new ArrayList(Arrays.asList(statisticConfig.getChartIds().split(",")));
+		chartIds.remove(chartId);
+		statisticConfig.setChartIds(chartIds.stream().collect(Collectors.joining(",")));
+		this.updateById(statisticConfig);
+		return R.success("鎿嶄綔鎴愬姛锛侊紒");
+	}
+
+	/**
+	 * 鑾峰彇鐢ㄦ埛閰嶇疆鐨勪笟鍔$被鍨嬩笌鐩稿叧鐨勫浘褰�
+	 * @return 鍥惧舰鏁版嵁涓庝笟鍔$被鍨婭D
+	 */
+	@Override
+	public R getBtmAndChartIds() {
+		QueryWrapper<StatisticConfig> wrapper = new QueryWrapper<>();
+		wrapper.eq("user_id", AuthUtil.getUser().getUserId());
+		wrapper.isNotNull("chart_ids");
+		List<StatisticConfig> list = this.list(wrapper);
+		Map<String, String> collect = list.stream().collect(Collectors.toMap(StatisticConfig::getBtmname, StatisticConfig::getChartIds));
+		return R.data(collect);
+	}
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/resources/mapper/StatisticConfigMapper.xml b/Source/UBCS/ubcs-service/ubcs-system/src/main/resources/mapper/StatisticConfigMapper.xml
new file mode 100644
index 0000000..384de10
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/resources/mapper/StatisticConfigMapper.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.vci.ubcs.system.mapper.StatisticConfigMapper">
+
+
+
+</mapper>

--
Gitblit v1.9.3