From 9824fc1a7b71cb4d617ea18cab36b8c179e6a37c Mon Sep 17 00:00:00 2001
From: 许鹏程 <1821349743@qq.com>
Date: 星期二, 05 十一月 2024 17:34:16 +0800
Subject: [PATCH] commit

---
 src/main/java/com/product/face/service/FaceDesignService.java |  444 +++++++++++++++++++++++--------------------------------
 1 files changed, 185 insertions(+), 259 deletions(-)

diff --git a/src/main/java/com/product/face/service/FaceDesignService.java b/src/main/java/com/product/face/service/FaceDesignService.java
index ba3e436..5fe52a9 100644
--- a/src/main/java/com/product/face/service/FaceDesignService.java
+++ b/src/main/java/com/product/face/service/FaceDesignService.java
@@ -1,33 +1,27 @@
 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.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
-import java.io.File;
 import java.util.*;
-import java.util.stream.Collectors;
 
 /**
  * @Author cheng
@@ -38,266 +32,198 @@
 public class FaceDesignService extends AbstractBaseService implements IFaceDesignService {
 
 
-    @Resource
-    private PublicService publicService;
+	@Resource
+	public PublicService publicService;
 
-    /**
-     * 鑾峰彇琛ㄥ崟閰嶇疆璇︽儏
-     *
-     * @param uuid
-     * @return
-     * @throws BaseException
-     */
-    @Override
-    public String getFaceConfigInfo(String uuid) throws BaseException {
-        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;
-        }
-        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);
-        Map<String, Object> other = new HashMap<>();
-        other.put("drawingList", result);
-        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));
-                        }
-
-//					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;
-                }
-            }
-        }
-
-        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);
-                }
-            }
-        }
-        return property;
-    }
+	/**
+	 * 鑾峰彇琛ㄥ崟閰嶇疆璇︽儏
+	 *
+	 * @param uuid
+	 * @return
+	 * @throws BaseException
+	 */
+	@Override
+	public String getFaceConfigInfo(String uuid) throws BaseException {
+		FieldSetEntity fse = getBaseDao().getFieldSetEntity(FaceConst.TABLE_FACE_CONFIG, uuid, true);
+		DataTableEntity fieldPropertyDt = fse.getSubDataTable(FaceConst.TABLE_FACE_FIELD_CONTROL_PROPERTY);
+		if (DataTableEntity.isEmpty(fieldPropertyDt)) {
+			throw new BaseException(ErrorCode.GET_FACE_CONFIG_FAIL);
+		}
+		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);
+	}
 
 
-    /**
-     * 淇濆瓨琛ㄥ崟鍐呭鏁版嵁
-     *
-     * @param fse
-     * @return
-     * @throws BaseException
-     */
-    @Override
-    @Transactional
-    public FieldSetEntity saveFaceData(FieldSetEntity fse) throws BaseException {
-        DataTableEntity fields = fse.getSubDataTable(FaceConst.FACE_FIELD);
-        if (DataTableEntity.isEmpty(fields)) {
-            ErrorCode.SAVE_EMPTY_FACE_FAIL.throwException();
-        }
-        List<FieldSetEntity> fieldSetEntityList = new ArrayList<>();
-        for (int i = 0; i < fields.getRows(); i++) {
-            fieldSetEntityList.addAll(controlTraverse(new JSONObject((Map) fields.getFieldSetEntity(i).getValues()), null, i));
-        }
-        fse.removeSubData(FaceConst.FACE_FIELD);
-        BaseUtil.createCreatorAndCreationTime(fse);
-        fields.setData(fieldSetEntityList);
-        fse.addSubDataTable(fields);
-        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()});
-        }
-        getBaseDao().saveFieldSetEntity(fse);
-        fse.getSubData().clear();
-        return fse;
-    }
+	/**
+	 * 淇濆瓨琛ㄥ崟鍐呭鏁版嵁
+	 *
+	 * @param fse
+	 * @return
+	 * @throws BaseException
+	 */
+	@Override
+	@Transactional
+	public FieldSetEntity saveFaceData(FieldSetEntity fse) throws BaseException {
+		DataTableEntity fields = fse.getSubDataTable(FaceConst.FACE_FIELD);
+		if (DataTableEntity.isEmpty(fields)) {
+			ErrorCode.SAVE_EMPTY_FACE_FAIL.throwException();
+		}
+		List<FieldSetEntity> fieldSetEntityList = new ArrayList<>();
+		for (int i = 0; i < fields.getRows(); 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));
+		}
+		fse.removeSubData(FaceConst.FACE_FIELD);
+		BaseUtil.createCreatorAndCreationTime(fse);
+		fields.setData(fieldSetEntityList);
+		fse.addSubDataTable(fields);
+//        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) {
-        List<FieldSetEntity> fieldSetList = new ArrayList<>();
-        try {
-            if (o instanceof JSONArray) {
-                //鏁扮粍
-                JSONArray jsonArray = (JSONArray) o;
-                try {
-                    for (int i = 0; i < jsonArray.size(); i++) {
-                        Object obj = jsonArray.get(i);
-                        fieldSetList.addAll(controlTraverse(obj, parentUuid, i));
-                    }
-                } catch (Exception e) {
-                    e.printStackTrace();
-                    throw e;
-                }
-            } else {
-                //json瀵硅薄
-                JSONObject property = (JSONObject) o;
-                String groupUuid = IdUtil.randomUUID();
-                for (Map.Entry<String, Object> entry : property.entrySet()) {
+	public List<FieldSetEntity> controlTraverse(Object o, String parentUuid, Integer sequence) {
+		List<FieldSetEntity> fieldSetList = new ArrayList<>();
+		try {
+			if (o instanceof JSONArray) {
+				//鏁扮粍
+				JSONArray jsonArray = (JSONArray) o;
+				try {
+					for (int i = 0; i < jsonArray.size(); i++) {
+						Object obj = jsonArray.get(i);
+						fieldSetList.addAll(controlTraverse(obj, parentUuid, i));
+					}
+				} catch (Exception e) {
+					e.printStackTrace();
+					throw e;
+				}
+			} else {
+				//json瀵硅薄
+				JSONObject property = (JSONObject) o;
+				String groupUuid = IdUtil.randomUUID();
+				for (Map.Entry<String, Object> entry : property.entrySet()) {
 
-                    FieldSetEntity fs = getTemplateFieldSet(entry.getKey(), entry.getValue(), groupUuid);
-                    if (fs != null) {
-                        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));
-                                fs.remove(FaceConst.FIELD_PROPERTY_VALUE);
-                            } catch (Exception e) {
-                                e.printStackTrace();
-                                throw e;
-                            }
-                        }
-                        fs.setValue(FaceConst.FIELD_PARENT_UUID, parentUuid);
-                        fieldSetList.add(fs);
-                    }
-                }
-                if (sequence != null) {
-                    FieldSetEntity fs = getTemplateFieldSet(FaceConst.CONTROL_SEQUENCE, sequence, groupUuid);
-                    fs.setValue(FaceConst.FIELD_PARENT_UUID, parentUuid);
-                    fieldSetList.add(fs);
-                }
-            }
-        } catch (Exception e) {
-            e.printStackTrace();
-            throw e;
-        }
-        return fieldSetList;
-    }
+					FieldSetEntity fs = getTemplateFieldSet(entry.getKey(), entry.getValue(), groupUuid);
+					if (fs != null) {
+						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));
+								fs.remove(FaceConst.FIELD_PROPERTY_VALUE);
+							} catch (Exception e) {
+								e.printStackTrace();
+								throw e;
+							}
+						}
+						fs.setValue(FaceConst.FIELD_PARENT_UUID, parentUuid);
+						fieldSetList.add(fs);
+					}
+				}
+				if (sequence != null) {
+					FieldSetEntity fs = getTemplateFieldSet(FaceConst.CONTROL_SEQUENCE, sequence, groupUuid);
+					fs.setValue(FaceConst.FIELD_PARENT_UUID, parentUuid);
+					fieldSetList.add(fs);
+				}
+			}
+		} catch (Exception e) {
+			e.printStackTrace();
+			throw e;
+		}
+		return fieldSetList;
+	}
 
-    /**
-     * 鑾峰彇妯℃澘FieldSet
-     *
-     * @return
-     */
-    private FieldSetEntity getTemplateFieldSet(String propertyName, Object propertyValue, String groupUuid) {
-        FieldSetEntity fse = new FieldSetEntity(FaceConst.TABLE_FACE_FIELD_CONTROL_PROPERTY);
-        //璁剧疆鎿嶄綔绫诲瀷涓烘柊澧�
-        fse.setValue(CoreConst.SYSTEM_DATA_OPERATE_TYPE, CoreConst.SYSTEM_DATA_OPERATE_ADD);
-        //鎵嬪姩鐢熸垚uuid
-        fse.setValue(CoreConst.UUID, IdUtil.randomUUID());
-        fse.setValue("last_update_time", new Date());
-        fse.setValue(FaceConst.FIELD_PROPERTY_NAME, propertyName);
-        fse.setValue(FaceConst.FIELD_GROUP_UUID, groupUuid);
-        int properType = 1;
-        if (propertyValue instanceof JSONArray) {
-            JSONArray array = (JSONArray) propertyValue;
-            if (array == null || array.isEmpty()) {
-                return null;
-            }
-            Object object = array.get(0);
-            if (!(object instanceof JSONObject)) {
-                //鏅�氭暟缁� 杞负瀛楃涓�
-                fse.setValue(FaceConst.FIELD_PROPERTY_VALUE, ArrayUtil.join(array.toArray(), ","));//鏈夊瓙绾у璞�
-                properType = 2;
-            } else {
-                //鏈夊瓙绾у璞�
-                properType = 4;
-            }
-        } else if (propertyValue instanceof JSONObject) {
-            //灞炴�у�兼槸瀵硅薄
-            JSONObject value = (JSONObject) propertyValue;
-            if (value == null || value.isEmpty()) {
-                return null;
-            }
-            properType = 3;
-        } else {
-            if (propertyValue == null || StringUtils.isEmpty(propertyValue)) {
-                return null;
-            }
+	/**
+	 * 鑾峰彇妯℃澘FieldSet
+	 *
+	 * @return
+	 */
+	private FieldSetEntity getTemplateFieldSet(String propertyName, Object propertyValue, String groupUuid) {
+		FieldSetEntity fse = new FieldSetEntity(FaceConst.TABLE_FACE_FIELD_CONTROL_PROPERTY);
+		//璁剧疆鎿嶄綔绫诲瀷涓烘柊澧�
+		fse.setValue(CoreConst.SYSTEM_DATA_OPERATE_TYPE, CoreConst.SYSTEM_DATA_OPERATE_ADD);
+		//鎵嬪姩鐢熸垚uuid
+		fse.setValue(CoreConst.UUID, IdUtil.randomUUID());
+		fse.setValue("last_update_time", new Date());
+		fse.setValue(FaceConst.FIELD_PROPERTY_NAME, propertyName);
+		fse.setValue(FaceConst.FIELD_GROUP_UUID, groupUuid);
+		int properType = 1;
+		if (propertyValue instanceof JSONArray) {
+			JSONArray array = (JSONArray) propertyValue;
+			if (array == null || array.isEmpty()) {
+				return null;
+			}
+			Object object = array.get(0);
+			if (!(object instanceof JSONObject)) {
+				//鏅�氭暟缁� 杞负瀛楃涓�
+				fse.setValue(FaceConst.FIELD_PROPERTY_VALUE, ArrayUtil.join(array.toArray(), ","));//鏈夊瓙绾у璞�
+				properType = 2;
+			} else {
+				//鏈夊瓙绾у璞�
+				properType = 4;
+			}
+		} else if (propertyValue instanceof JSONObject) {
+			//灞炴�у�兼槸瀵硅薄
+			JSONObject value = (JSONObject) propertyValue;
+			if (value == null || value.isEmpty()) {
+				return null;
+			}
+			properType = 3;
+		} else {
+			if (propertyValue == null || StringUtils.isEmpty(propertyValue)) {
+				return null;
+			}
 
-            if (propertyValue instanceof Boolean) {
-                properType = 5;
-            } else if (propertyValue instanceof Integer) {
-                properType = 6;
-            } else if (propertyValue instanceof Double) {
-                properType = 7;
-            }
-            fse.setValue(FaceConst.FIELD_PROPERTY_VALUE, propertyValue);
-        }
-        fse.setValue(FaceConst.FIELD_PROPERTY_TYPE, properType);
-        return fse;
-    }
+			if (propertyValue instanceof Boolean) {
+				properType = 5;
+			} else if (propertyValue instanceof Integer) {
+				properType = 6;
+			} else if (propertyValue instanceof Double) {
+				properType = 7;
+			}
+			fse.setValue(FaceConst.FIELD_PROPERTY_VALUE, propertyValue);
+		}
+		fse.setValue(FaceConst.FIELD_PROPERTY_TYPE, properType);
+		return fse;
+	}
 
 
-    /**
-     * 鍒犻櫎琛ㄥ崟璁捐
-     *
-     * @param fse
-     * @throws BaseException
-     */
-    @Override
-    @Transactional
-    public void deleteFace(FieldSetEntity fse) throws BaseException {
-        publicService.delete(fse);
-    }
+	/**
+	 * 鍒犻櫎琛ㄥ崟璁捐
+	 *
+	 * @param fse
+	 * @throws BaseException
+	 */
+	@Override
+	@Transactional
+	public void deleteFace(FieldSetEntity fse) throws BaseException {
+		publicService.delete(fse);
+	}
 
 
 }

--
Gitblit v1.9.2