许鹏程
2024-11-05 9824fc1a7b71cb4d617ea18cab36b8c179e6a37c
src/main/java/com/product/face/service/FaceApplyService.java
@@ -1,9 +1,13 @@
package com.product.face.service;
import cn.hutool.core.map.MapBuilder;
import cn.hutool.core.map.MapUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.aspose.slides.p2cbca448.and;
import com.google.common.collect.Lists;
import com.product.admin.entity.FaceListEntity;
import com.product.admin.service.SystemFaceService;
import com.product.common.lang.StringUtils;
import com.product.core.cache.util.RedisUtil;
@@ -13,6 +17,8 @@
import com.product.core.service.support.AbstractBaseService;
import com.product.face.config.ErrorCode;
import com.product.face.config.FaceConst;
import com.product.face.entity.FaceEntity;
import com.product.face.entity.FaceListEntity;
import com.product.face.entity.TableColumn;
import com.product.face.util.FaceUtil;
import com.product.util.BaseUtil;
@@ -37,6 +43,11 @@
   @Resource
   private FaceCacheService faceCacheService;
   /**
    * 获取表单配置
    * @param fse
    * @return
    */
   public Object getFaceListConf(FieldSetEntity fse) {
      String faceUuid = fse.getString(FaceConst.FIELD_FACE_UUID);
      String faceNumber = fse.getString(FaceConst.FIELD_FACE_NUMBER);
@@ -47,13 +58,11 @@
      if (!StringUtils.isEmpty(faceUuid) && StringUtils.isEmpty(faceNumber)) {
         return systemFaceService.getFaceFieldList(faceUuid);
      }
      final String redisKey = FaceConst.FACE_LIST_KEY + ":face-number" + faceNumber;
      if (RedisUtil.exists(redisKey)) {
         return RedisUtil.get(redisKey);
      FaceListEntity faceListCache = faceCacheService.getFaceListCache(faceNumber);
      if (faceListCache == null) {
         throw new BaseException(ErrorCode.GET_FACE_CONF_FAIL);
      }
      return null;
      return faceListCache;
   }
   /**
@@ -64,21 +73,40 @@
    * @throws BaseException
    */
   public String getFaceFormConfig(FieldSetEntity fse) throws BaseException {
      String faceNumber = fse.getString(FaceConst.FIELD_FACE_NUMBER);
      if (StringUtils.isEmpty(faceNumber)) {
         throw new BaseException(ErrorCode.REQUEST_PARAM_ERROR);
      FaceEntity faceFormCache = faceCacheService.getFaceFormCache(fse.getString(FaceConst.FIELD_FACE_NUMBER));
      if (faceFormCache == null) {
         throw new BaseException(ErrorCode.GET_FACE_CONF_FAIL);
      }
      //根据表单号查询
      FieldSetEntity faceConf = getBaseDao().getFieldSetByFilter(FaceConst.TABLE_FACE_CONFIG, "face_number=?", new Object[]{faceNumber}, true);
      DataTableEntity fieldPropertyDt = faceConf.getSubDataTable(FaceConst.TABLE_FACE_FIELD_CONTROL_PROPERTY);
      if (DataTableEntity.isEmpty(fieldPropertyDt)) {
         throw new BaseException(ErrorCode.GET_FACE_CONFIG_FAIL);
      }
      List<JSONObject> faceControlList = FaceUtil.getFaceControlList(fieldPropertyDt);
      Map<String, Object> other = new HashMap<>();
      other.put("drawingList", faceControlList);
      faceConf.getSubData().clear();
      return BaseUtil.success(faceConf, other);
      return BaseUtil.success(faceFormCache.getData(), MapUtil.builder("drawingList", (Object) faceFormCache.getDrawingList()).map());
   }
   public List<String> getFaceReference(FieldSetEntity fse) throws BaseException {
      String faceNumber = fse.getString("face_number");
      if (StringUtils.isEmpty(faceNumber)) {
         return null;
      }
      String[] faceNumberArr = faceNumber.split(",");
      StringBuilder sql = new StringBuilder();
      sql.append(" select case when c.property_value like '%prompt' then  a.property_value else concat('《',a.property_value,'》') end as  property_value from product_sys_face_control_property a ");
      sql.append(" join product_sys_face_control_property b on a.group_uuid=b.group_uuid and a.uuid!=b.uuid ");
      sql.append(" join product_sys_face_control_property c on b.uuid=c.parent_uuid ");
      sql.append(" where a.property_name='advanceName' and a.master_uuid in (SELECT uuid from product_sys_face where face_type=2 and ").append(BaseUtil.buildQuestionMarkFilter("face_number", faceNumberArr.length, true)).append(") ");
      sql.append(" and b.property_name='__config__' and c.property_name='tag'  GROUP BY 1 ");
      DataTableEntity dte = getBaseDao().listTable(sql.toString(), faceNumberArr);
      List<String> list = Lists.newArrayList();
      if (DataTableEntity.isEmpty(dte)) {
         return list;
      }
      for (int i = 0; i < dte.getRows(); i++) {
         FieldSetEntity fs = dte.getFieldSetEntity(i);
         list.add(fs.getString("property_value"));
      }
      return list;
   }
}