From b97ad178712998550bcfb3adf7606cbeee9bdec3 Mon Sep 17 00:00:00 2001
From: 杜洪波 <1074825718@qq.com>
Date: 星期五, 07 十一月 2025 14:42:40 +0800
Subject: [PATCH] 报表配置优化

---
 src/main/java/com/product/server/report/service/ReportTypeService.java |   84 ++++++++++++++++++++++++++----------------
 1 files changed, 52 insertions(+), 32 deletions(-)

diff --git a/src/main/java/com/product/server/report/service/ReportTypeService.java b/src/main/java/com/product/server/report/service/ReportTypeService.java
index 23855ea..23e7ce3 100644
--- a/src/main/java/com/product/server/report/service/ReportTypeService.java
+++ b/src/main/java/com/product/server/report/service/ReportTypeService.java
@@ -15,10 +15,15 @@
 import com.product.server.report.config.ReportCode;
 import com.product.server.report.service.idel.IReportTypeService;
 import com.product.util.BaseUtil;
+
+import cn.hutool.core.lang.UUID;
+
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
 
 @Component
 public class ReportTypeService extends AbstractBaseService implements IReportTypeService{
@@ -219,22 +224,22 @@
 	@Override
 	public DataTableEntity getEChartsElementList(String uuid)throws BaseException{
 		StringBuffer sql = new StringBuffer();
-		sql.append("SELECT ");
-		sql.append(" a.uuid auuid,a.detail adetail,a.attribute_name aname,a.subordinate_element_type asubordinate_element_type,a.is_commonly ais_commonly,a.prompt_name,a.default_value, ");
-		sql.append(" b.uuid buuid,b.detail bdetail,b.attribute_name bname,b.subordinate_element_type bsubordinate_element_type,b.is_commonly bis_commonly, ");
-		sql.append(" c.uuid cuuid,c.detail cdetail,c.attribute_name cname,c.subordinate_element_type csubordinate_element_type,c.is_commonly cis_commonly, ");
-		sql.append(" d.uuid duuid,d.detail ddetail,d.attribute_name dname,d.subordinate_element_type dsubordinate_element_type,d.is_commonly dis_commonly, ");
-		sql.append(" e.uuid euuid,e.detail edetail,e.attribute_name ename,e.subordinate_element_type esubordinate_element_type,e.is_commonly eis_commonly, ");
-		sql.append(" f.uuid fuuid,f.detail fdetail,f.attribute_name fname,f.subordinate_element_type fsubordinate_element_type,f.is_commonly fis_commonly  ");
-		sql.append("FROM product_sys_report_type_attribute a ");
-		sql.append("LEFT JOIN product_sys_report_type_attribute b on a.parent_attribute_uuid = b.uuid ");
-		sql.append("LEFT JOIN product_sys_report_type_attribute c on b.parent_attribute_uuid = c.uuid ");
-		sql.append("LEFT JOIN product_sys_report_type_attribute d on c.parent_attribute_uuid = d.uuid ");
-		sql.append("LEFT JOIN product_sys_report_type_attribute e on d.parent_attribute_uuid = e.uuid ");
-		sql.append("LEFT JOIN product_sys_report_type_attribute f on e.parent_attribute_uuid = f.uuid ");
-		sql.append("WHERE  a.config_properties = 1 ");
-		sql.append("AND a.type_uuid = ? ");
-		sql.append("ORDER BY a.is_commonly DESC");
+		sql.append("\nSELECT ");
+		sql.append("\n  a.uuid auuid,a.detail adetail,a.attribute_name aname,a.subordinate_element_type asubordinate_element_type,a.is_commonly ais_commonly,a.prompt_name,a.default_value, ");
+		sql.append("\n  b.uuid buuid,b.detail bdetail,b.attribute_name bname,b.subordinate_element_type bsubordinate_element_type,b.is_commonly bis_commonly, ");
+		sql.append("\n  c.uuid cuuid,c.detail cdetail,c.attribute_name cname,c.subordinate_element_type csubordinate_element_type,c.is_commonly cis_commonly, ");
+		sql.append("\n  d.uuid duuid,d.detail ddetail,d.attribute_name dname,d.subordinate_element_type dsubordinate_element_type,d.is_commonly dis_commonly, ");
+		sql.append("\n  e.uuid euuid,e.detail edetail,e.attribute_name ename,e.subordinate_element_type esubordinate_element_type,e.is_commonly eis_commonly, ");
+		sql.append("\n  f.uuid fuuid,f.detail fdetail,f.attribute_name fname,f.subordinate_element_type fsubordinate_element_type,f.is_commonly fis_commonly  ");
+		sql.append("\nFROM product_sys_report_type_attribute a ");
+		sql.append("\nLEFT JOIN product_sys_report_type_attribute b on a.parent_attribute_uuid = b.uuid ");
+		sql.append("\nLEFT JOIN product_sys_report_type_attribute c on b.parent_attribute_uuid = c.uuid ");
+		sql.append("\nLEFT JOIN product_sys_report_type_attribute d on c.parent_attribute_uuid = d.uuid ");
+		sql.append("\nLEFT JOIN product_sys_report_type_attribute e on d.parent_attribute_uuid = e.uuid ");
+		sql.append("\nLEFT JOIN product_sys_report_type_attribute f on e.parent_attribute_uuid = f.uuid ");
+		sql.append("\nWHERE  a.config_properties = 1 ");
+		sql.append("\nAND a.type_uuid = ? ");
+		sql.append("\nORDER BY a.is_commonly DESC");
 
 		return baseDao.listTable(sql.toString(), new String[]{uuid});
 	}
@@ -328,7 +333,9 @@
 			}
 			return uuid;
 		}else {
-			fse.getSubData().clear();
+			if (fse.getSubData() != null) {
+				fse.getSubData().clear();
+			}
 			baseDao.update(fse);
 			return fse.getUUID();
 		}
@@ -507,21 +514,34 @@
 		if(BaseUtil.strIsNull(uuid)){
 			uuid = baseDao.add(fse);
 		}
-		//鍒涘缓浜�
-		Integer userId = SpringMVCContextHolder.getCurrentUser().getUser_id();
-		//鍒涘缓鏃堕棿
-		Date date = new Date();
-		DataTableEntity dataTableEntity = baseDao.listTable(CmnConst.PRODUCT_SYS_REPORT_TYPE_ATTRIBUTE, " type_uuid = ? ",new String[]{referenced_uuid});
-		for (int i = 0; i <dataTableEntity.getRows() ; i++) {
-			FieldSetEntity fieldSetEntity = dataTableEntity.getFieldSetEntity(i);
-			fieldSetEntity.remove(CmnConst.ID);
-			fieldSetEntity.remove(CmnConst.UUID);
-			fieldSetEntity.setValue(CmnConst.TYPE_UUID,uuid);
-			fieldSetEntity.setValue(CmnConst.CREATED_BY,userId);
-			fieldSetEntity.setValue(CmnConst.CREATED_UTC_DATETIME,date);
+		DataTableEntity dtAttribute = baseDao.listTable(CmnConst.PRODUCT_SYS_REPORT_TYPE_ATTRIBUTE, " type_uuid = ? ",new String[]{referenced_uuid});
+		if (!BaseUtil.dataTableIsEmpty(dtAttribute)) {
+			//鐢熸垚鍒涘缓浜哄拰甯歌鏃堕棿锛孶UID鏇存柊瀹瑰櫒
+			Integer createUser = SpringMVCContextHolder.getCurrentUser().getUser_id();
+			Date createDate = new Date();
+			Map<String, String> uuidMapping = new HashMap<>();
+			for (int i = 0; i <dtAttribute.getRows() ; i++) {
+				FieldSetEntity fseAttribute = dtAttribute.getFieldSetEntity(i);
+				// 鐢熸垚鏂癠UID
+				String oldUUID = fseAttribute.getUUID();
+				String newUUID = UUID.randomUUID().toString();
+				uuidMapping.put(oldUUID, newUUID);
+				fseAttribute.remove(CmnConst.ID);
+				fseAttribute.setValue(CmnConst.UUID, newUUID);
+				fseAttribute.setValue(CmnConst.TYPE_UUID, uuid);
+				fseAttribute.setValue(CmnConst.CREATED_BY, createUser);
+				fseAttribute.setValue(CmnConst.CREATED_UTC_DATETIME, createDate);
+			}
+			// 鏇存柊鐖剁骇UUID
+			for (int i = 0; i < dtAttribute.getRows(); i++) {
+				FieldSetEntity fseAttribute = dtAttribute.getFieldSetEntity(i);
+				String parentUUID = fseAttribute.getString(CmnConst.PARENT_ATTRIBUTE_UUID);
+				if (uuidMapping.containsKey(parentUUID)) {
+					fseAttribute.setValue(CmnConst.PARENT_ATTRIBUTE_UUID, uuidMapping.get(parentUUID));
+				}
+			}
+			baseDao.add(dtAttribute);
 		}
-		baseDao.add(dataTableEntity);
-		JSONObject obj = this.getEChartsElement(fse.getUUID());
-		return obj;
+		return this.getEChartsElement(fse.getUUID());
 	}
 }

--
Gitblit v1.9.2