| | |
| | | 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.config.CoreConst; |
| | |
| | | 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 |
| | |
| | | if (DataTableEntity.isEmpty(fieldPropertyDt)) { |
| | | throw new BaseException(ErrorCode.GET_FACE_CONFIG_FAIL); |
| | | } |
| | | List<JSONObject> result = getFaceControlList(fieldPropertyDt); |
| | | List<JSONObject> result = FaceUtil.getFaceControlList(fieldPropertyDt); |
| | | Map<String, Object> other = new HashMap<>(); |
| | | other.put("drawingList", result); |
| | | fse.getSubData().clear(); |
| | | return BaseUtil.success(fse, other); |
| | | } |
| | | |
| | | public List<JSONObject> getFaceControlList(DataTableEntity faceControlDt) { |
| | | List<JSONObject> result = new ArrayList<>(); |
| | | List<FieldSetEntity> data = faceControlDt.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))); |
| | | return result; |
| | | } |
| | | |
| | | 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; |
| | | } |
| | | |
| | | |