From 29f1a0a5d9bc184fa497a88ec11c37f10a45df92 Mon Sep 17 00:00:00 2001
From: 许鹏程 <1821349743@qq.com>
Date: 星期二, 26 十一月 2024 15:25:39 +0800
Subject: [PATCH] 排序 parent

---
 src/main/java/com/product/face/service/FaceDesignService.java |  158 +++++++++++++++++++---------------------------------
 1 files changed, 59 insertions(+), 99 deletions(-)

diff --git a/src/main/java/com/product/face/service/FaceDesignService.java b/src/main/java/com/product/face/service/FaceDesignService.java
index 0e3f15f..9daf37d 100644
--- a/src/main/java/com/product/face/service/FaceDesignService.java
+++ b/src/main/java/com/product/face/service/FaceDesignService.java
@@ -1,31 +1,29 @@
 package com.product.face.service;
 
-import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.util.ArrayUtil;
 import cn.hutool.core.util.IdUtil;
-import cn.hutool.core.util.NumberUtil;
-import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
-import com.drew.metadata.Face;
+import com.product.admin.service.PublicService;
 import com.product.common.lang.StringUtils;
+import com.product.core.cache.DataPoolCacheImpl;
 import com.product.core.config.CoreConst;
 import com.product.core.entity.DataTableEntity;
 import com.product.core.entity.FieldSetEntity;
 import com.product.core.exception.BaseException;
 import com.product.core.service.support.AbstractBaseService;
 import com.product.core.transfer.Transactional;
-import com.product.core.util.JsonUtil;
 import com.product.face.config.ErrorCode;
 import com.product.face.config.FaceConst;
 import com.product.face.service.ide.IFaceDesignService;
+import com.product.face.util.FaceUtil;
 import com.product.util.BaseUtil;
-import org.apache.logging.log4j.core.Core;
+import org.apache.poi.hdgf.pointers.Pointer;
+import org.apache.poi.ss.formula.functions.T;
 import org.springframework.stereotype.Service;
 
-import java.io.File;
+import javax.annotation.Resource;
 import java.util.*;
-import java.util.stream.Collectors;
 
 /**
  * @Author cheng
@@ -35,6 +33,9 @@
 @Service
 public class FaceDesignService extends AbstractBaseService implements IFaceDesignService {
 
+
+	@Resource
+	public PublicService publicService;
 
 	/**
 	 * 鑾峰彇琛ㄥ崟閰嶇疆璇︽儏
@@ -48,103 +49,36 @@
 		FieldSetEntity fse = getBaseDao().getFieldSetEntity(FaceConst.TABLE_FACE_CONFIG, uuid, true);
 		DataTableEntity fieldPropertyDt = fse.getSubDataTable(FaceConst.TABLE_FACE_FIELD_CONTROL_PROPERTY);
 		if (DataTableEntity.isEmpty(fieldPropertyDt)) {
-			return null;
+			throw new BaseException(ErrorCode.GET_FACE_CONFIG_FAIL);
 		}
-		List<JSONObject> result = new ArrayList<>();
-		List<FieldSetEntity> data = fieldPropertyDt.getData();
-		Map<String, List<FieldSetEntity>> collect = data.stream()
-				.filter(item -> StringUtils.isEmpty(item.getString(FaceConst.FIELD_PARENT_UUID))) //杩囨护 鍙栫埗绾�
-//				.sorted(Comparator.comparing(item -> item.getInteger(FaceConst.CONTROL_SEQUENCE))) //鎺掑簭
-				.collect(Collectors.groupingBy(item -> item.getString(FaceConst.FIELD_GROUP_UUID))); //鍒嗙粍
-		Map<String, List<FieldSetEntity>> groupContainer = data.stream()
-				.filter(item -> !StringUtils.isEmpty(item.getString(FaceConst.FIELD_PARENT_UUID))) //杩囨护 鍙栧瓙绾�
-				.collect(Collectors.groupingBy(item -> item.getString(FaceConst.FIELD_PARENT_UUID))); //鍒嗙粍
-		for (Map.Entry<String, List<FieldSetEntity>> entry : collect.entrySet()) {
-			List<FieldSetEntity> propertyList = entry.getValue();
-			result.add(getPropertyJson(propertyList, groupContainer));
-		}
-		result.sort(Comparator.comparing(item -> item.getInteger(FaceConst.CONTROL_SEQUENCE)));
-		System.out.println(result);
+		List<JSONObject> result = FaceUtil.getFaceControlList(fse, fieldPropertyDt);
 		Map<String, Object> other = new HashMap<>();
 		other.put("drawingList", result);
+		DataTableEntity faceCustomField = fse.getSubDataTable("product_sys_face_custom_field");
+		if (!DataTableEntity.isEmpty(faceCustomField)) {
+			for (int i = 0; i < faceCustomField.getRows(); i++) {
+				faceCustomField.setFieldValue(i, "customField", true);
+				faceCustomField.setFieldValue(i, "added", true);
+			}
+			other.put("product_sys_face_custom_field", BaseUtil.dataTableEntityToJson(faceCustomField));
+		} else {
+			other.put("product_sys_face_custom_field", new String[]{});
+		}
 		fse.getSubData().clear();
 		return BaseUtil.success(fse, other);
 	}
 
-	private JSONObject getPropertyJson(List<FieldSetEntity> propertyList, Map<String, List<FieldSetEntity>> groupContainer) {
-		JSONObject property = new JSONObject();
-		String propertyValue = null;
-		if (!CollectionUtil.isEmpty(propertyList)) {
-			for (FieldSetEntity fs : propertyList) {
-				//灞炴�х被鍨� 1
-				String groupUuid = fs.getUUID();
-				String propertyType = fs.getString(FaceConst.FIELD_PROPERTY_TYPE);
-				String propertyName = fs.getString(FaceConst.FIELD_PROPERTY_NAME);
-				propertyValue = fs.getString(FaceConst.FIELD_PROPERTY_VALUE);
-				switch (propertyType) {
-					case "1"://瀛楃涓�
-						property.put(propertyName, propertyValue);
-						break;
-					case "2"://鏁扮粍
-						property.put(propertyName, propertyValue.split(","));
-						break;
-					case "3"://瀛愮骇瀵硅薄
-						try {
-							JSONObject propertyJson = getPropertyJson(groupContainer.get(groupUuid), groupContainer);
-							property.put(propertyName, propertyJson);
-						} catch (Exception e) {
-							e.printStackTrace();
-							throw e;
-						}
-						break;
-					case "4"://瀛愮骇鏁扮粍瀵硅薄
-						List<FieldSetEntity> propertyListChild = groupContainer.get(groupUuid);
-						if (propertyListChild != null && !propertyListChild.isEmpty()) {
-							List<Object> array = propertyListChild.stream()
-									.collect(Collectors.groupingBy(item -> item.getString(FaceConst.FIELD_GROUP_UUID)))
-									.values().stream().map(item -> getPropertyJson(item, groupContainer)).sorted(Comparator.comparing(item -> item.getInteger(FaceConst.CONTROL_SEQUENCE))).collect(Collectors.toList());
-							property.put(propertyName, new JSONArray(array));
-						}
+	public class Pointer {
+		int data = 0;
 
-//					groupContainer.put(groupUuid, array);
-						break;
-					case "5": //boolean 绫诲瀷
-						Boolean value = null;
-						if ("1".equals(propertyValue)) {
-							value = true;
-						} else if ("0".equals(propertyValue)) {
-							value = false;
-						}
-						property.put(propertyName, value);
-						break;
-					case "6":// int 绫诲瀷
-						if (NumberUtil.isNumber(propertyValue)) {
-							property.put(propertyName, NumberUtil.parseInt(propertyValue));
-						}
-						break;
-					case "7"://double 绫诲瀷
-						if (NumberUtil.isDouble(propertyValue)) {
-							property.put(propertyName, NumberUtil.parseDouble(propertyValue));
-						}
-						break;
-				}
-			}
+		public int getData() {
+			return ++data;
 		}
 
-		if (!StringUtils.isEmpty(propertyValue)) {
-			Object o = groupContainer.get(propertyValue);
-			if (o != null) {
-				if (o instanceof JSONArray) {
-					((JSONArray) o).add(property);
-				} else {
-					((JSONObject) o).putAll(property);
-					groupContainer.remove(propertyValue);
-				}
-			}
+		public void setData(int data) {
+			this.data = data;
 		}
-		return property;
 	}
-
 
 	/**
 	 * 淇濆瓨琛ㄥ崟鍐呭鏁版嵁
@@ -161,23 +95,35 @@
 			ErrorCode.SAVE_EMPTY_FACE_FAIL.throwException();
 		}
 		List<FieldSetEntity> fieldSetEntityList = new ArrayList<>();
+		//澹版槑涓�涓甫鎸囬拡鐨刬nt鍙橀噺
+		Pointer pointer = new Pointer();
 		for (int i = 0; i < fields.getRows(); i++) {
-			fieldSetEntityList.addAll(controlTraverse(new JSONObject((Map) fields.getFieldSetEntity(i).getValues()), null, i));
+			if (fields.getBoolean(i, "event_property")) {
+				DataTableEntity subDataTable = fields.getFieldSetEntity(i).getSubDataTable("event_array");
+				if (DataTableEntity.isEmpty(subDataTable)) {
+					continue;
+				}
+				fields.setFieldValue(i, "event_array", BaseUtil.dataTableEntityToJson(subDataTable));
+			}
+			fieldSetEntityList.addAll(controlTraverse(new JSONObject((Map) fields.getFieldSetEntity(i).getValues()), null, i, pointer));
 		}
 		fse.removeSubData(FaceConst.FACE_FIELD);
 		BaseUtil.createCreatorAndCreationTime(fse);
 		fields.setData(fieldSetEntityList);
 		fse.addSubDataTable(fields);
-		fse.setValue(FaceConst.FIELD_FACE_TYPE, 2);
+//        fse.setValue(FaceConst.FIELD_FACE_TYPE, 2);
 		if (!StringUtils.isEmpty(fse.getUUID())) {
 			getBaseDao().delete(FaceConst.TABLE_FACE_FIELD_CONTROL_PROPERTY, "master_uuid=?", new Object[]{fse.getUUID()});
+		}
+		if (StringUtils.isEmpty(fse.getString("terminal_type"))) {
+			fse.setValue("terminal_type", 1);
 		}
 		getBaseDao().saveFieldSetEntity(fse);
 		fse.getSubData().clear();
 		return fse;
 	}
 
-	public List<FieldSetEntity> controlTraverse(Object o, String parentUuid, Integer sequence) {
+	public List<FieldSetEntity> controlTraverse(Object o, String parentUuid, Integer sequence, Pointer pointer) {
 		List<FieldSetEntity> fieldSetList = new ArrayList<>();
 		try {
 			if (o instanceof JSONArray) {
@@ -186,7 +132,7 @@
 				try {
 					for (int i = 0; i < jsonArray.size(); i++) {
 						Object obj = jsonArray.get(i);
-						fieldSetList.addAll(controlTraverse(obj, parentUuid, i));
+						fieldSetList.addAll(controlTraverse(obj, parentUuid, i, pointer));
 					}
 				} catch (Exception e) {
 					e.printStackTrace();
@@ -203,7 +149,7 @@
 						int propertyType = fs.getInteger(FaceConst.FIELD_PROPERTY_TYPE).intValue();
 						if ((4 == propertyType || 3 == propertyType) && (entry.getValue() instanceof JSONArray || entry.getValue() instanceof JSONObject)) {
 							try {
-								fieldSetList.addAll(controlTraverse(entry.getValue(), fs.getUUID(), null));
+								fieldSetList.addAll(controlTraverse(entry.getValue(), fs.getUUID(), null, pointer));
 								fs.remove(FaceConst.FIELD_PROPERTY_VALUE);
 							} catch (Exception e) {
 								e.printStackTrace();
@@ -215,7 +161,7 @@
 					}
 				}
 				if (sequence != null) {
-					FieldSetEntity fs = getTemplateFieldSet(FaceConst.CONTROL_SEQUENCE, sequence, groupUuid);
+					FieldSetEntity fs = getTemplateFieldSet(FaceConst.CONTROL_SEQUENCE, pointer.getData(), groupUuid);
 					fs.setValue(FaceConst.FIELD_PARENT_UUID, parentUuid);
 					fieldSetList.add(fs);
 				}
@@ -281,4 +227,18 @@
 		return fse;
 	}
 
+
+	/**
+	 * 鍒犻櫎琛ㄥ崟璁捐
+	 *
+	 * @param fse
+	 * @throws BaseException
+	 */
+	@Override
+	@Transactional
+	public void deleteFace(FieldSetEntity fse) throws BaseException {
+		publicService.delete(fse);
+	}
+
+
 }

--
Gitblit v1.9.2