Browse Source

查询参数

guarantee-lsq 8 months ago
parent
commit
d2934112f9

+ 23 - 0
platform-common/src/main/java/com/platform/common/enums/CustomFormDataStatusEnum.java

@@ -0,0 +1,23 @@
+package com.platform.common.enums;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * @Description 词典类型枚举
+ * @Author future
+ * @Date 2019/8/6
+ * @Version Copyright (c) 2019,北京乾元坤和科技有限公司 All rights reserved.
+ */
+@Getter
+@AllArgsConstructor
+public enum CustomFormDataStatusEnum {
+    WAIT_PUBLISH("待发起"),
+    HANDLING("处理中"),
+    FINISH("结束"),
+    CANCEL("撤销"),
+    PAUSE("终止"),
+    BACK("退回"),;
+    private final String type;
+
+}

+ 2 - 0
platform-dao/src/main/java/com/platform/dao/entity/custom/CustomFormBom.java

@@ -121,4 +121,6 @@ public class CustomFormBom implements Serializable{
 
     private String status; // 状态
 
+    private String currentUser; // 当前处理人
+
 }

+ 63 - 9
platform-service/src/main/java/com/platform/service/custom/impl/CustomFormDataServiceImpl.java

@@ -1,12 +1,13 @@
 package com.platform.service.custom.impl;
 
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
 import com.github.pagehelper.PageHelper;
 import com.platform.common.bean.AbstractPageResultBean;
+import com.platform.common.cache.DictCache;
+import com.platform.common.enums.CustomFormDataStatusEnum;
 import com.platform.common.exception.DeniedException;
-import com.platform.common.util.BeanConverterUtil;
-import com.platform.common.util.IdGeneratorUtils;
-import com.platform.common.util.SecurityUtils;
-import com.platform.common.util.StringUtils;
+import com.platform.common.util.*;
 import com.platform.dao.bean.MyPage;
 import com.platform.dao.dto.custom.CustomFormDataDTO;
 import com.platform.dao.entity.custom.CustomForm;
@@ -14,19 +15,24 @@ import com.platform.dao.entity.custom.CustomFormBom;
 import com.platform.dao.entity.custom.CustomFormBomField;
 import com.platform.dao.entity.custom.CustomFormData;
 import com.platform.dao.mapper.custom.CustomFormBomFieldMapper;
+import com.platform.dao.mapper.custom.CustomFormBomMapper;
 import com.platform.dao.mapper.custom.CustomFormDataMapper;
 import com.platform.dao.mapper.custom.CustomFormMapper;
 import com.platform.dao.vo.query.custom.CustomFormDataVO;
 import com.platform.service.base.impl.BaseServiceImpl;
 import com.platform.service.custom.CustomFormDataService;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections.CollectionUtils;
 import org.springframework.stereotype.Service;
 import tk.mybatis.mapper.weekend.Weekend;
 import tk.mybatis.mapper.weekend.WeekendCriteria;
 
 import javax.annotation.Resource;
+import java.lang.reflect.Method;
 import java.time.LocalDateTime;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 /**
  * @Description 自定义表单数据表 service 实现类
@@ -41,6 +47,8 @@ public class CustomFormDataServiceImpl extends BaseServiceImpl<CustomFormDataMap
     private CustomFormBomFieldMapper customFormBomFieldMapper;
     @Resource
     private CustomFormMapper customFormMapper;
+    @Resource
+    private CustomFormBomMapper customFormBomMapper;
 
     @Override
     public int batchDelete(List<String> ids) {
@@ -70,8 +78,16 @@ public class CustomFormDataServiceImpl extends BaseServiceImpl<CustomFormDataMap
         fieldQuery.setFormId(record.getFormId());
         List<CustomFormBomField> fieldList = customFormBomFieldMapper.select(fieldQuery);
         // 新增bom表(存储查询的value值)
-        CustomFormBom bom = addBom(record,fieldList);
-        return null;
+        CustomFormBom bom = addBom(data,fieldList,form);
+        // 流程ID不为空处理
+        handleFlow(bom);
+        mapper.insert(data);
+        customFormBomMapper.insert(bom);
+        return data;
+    }
+
+    private void handleFlow(CustomFormBom bom) {
+
     }
 
     private void packageData(CustomFormData data) {
@@ -79,7 +95,6 @@ public class CustomFormDataServiceImpl extends BaseServiceImpl<CustomFormDataMap
         data.setCreatedTime(LocalDateTime.now());
         data.setCreatedUserName(SecurityUtils.getUserInfo().getRealName());
         data.setCreatedUserId(SecurityUtils.getUserInfo().getUserId());
-        // 根据jsonString 存储targetId
     }
 
     private void checkPreview(CustomFormDataDTO record) {
@@ -88,15 +103,54 @@ public class CustomFormDataServiceImpl extends BaseServiceImpl<CustomFormDataMap
         }
     }
 
-    private CustomFormBom addBom(CustomFormDataDTO record, List<CustomFormBomField> fieldList){
+    private CustomFormBom addBom(CustomFormData record, List<CustomFormBomField> fieldList,CustomForm form){
         CustomFormBom bom = new CustomFormBom();
         bom.setApplyMan(SecurityUtils.getUserInfo().getRealName());
         bom.setApplyTime(LocalDateTime.now());
         bom.setId(IdGeneratorUtils.getObjectId());
-        //bom.setDataId()
+        bom.setDataId(record.getId());
+        bom.setCreatedTime(LocalDateTime.now());
+        bom.setCreatedUserName(SecurityUtils.getUserInfo().getRealName());
+        bom.setCreatedUserId(SecurityUtils.getUserInfo().getUserId());
+        bom.setFormCategory(form.getCategory());
+        bom.setFormType(form.getType());
+        bom.setName(bom.getApplyMan() + "创建了" + DictCache.getLabelByValue("CUSTOM_FORM_TYPE",bom.getFormType()) + DateUtils.dateToString(LocalDateTime.now(),DateUtils.PATTERN_YMD));
+        bom.setStatus(StringUtils.isBlank(record.getFlowId()) ? CustomFormDataStatusEnum.WAIT_PUBLISH.getType() : CustomFormDataStatusEnum.HANDLING.getType());
+        // 处理查询值
+        if(CollectionUtils.isNotEmpty(fieldList)){
+            Map<String,JSONObject> maps = new HashMap<>();
+            // json data 解析
+            JSONArray arrays = JSONArray.parseArray(record.getJsonString());
+            for(int i=0; i< arrays.size(); i++){
+                JSONObject object = arrays.getJSONObject(i);
+                String key = object.getString("value");
+                maps.put(key,object);
+            }
+            Class<?> cla = bom.getClass();
+            fieldList.forEach(item->{
+                // 检索出查询字段名称,并给bom赋值
+                String key = item.getFiledName();
+                JSONObject object = maps.get(key);
+                if(object != null){
+                    JSONObject attrs = object.getJSONObject("attrs");
+                    String value = attrs.getString("value");
+                    try{
+                        String methodName = transferMethodName(item.getBomFieldName());
+                        Method method = cla.getMethod(methodName,String.class);
+                        method.invoke(bom,value);
+                    }catch (Exception e){
+                        e.printStackTrace();
+                    }
+                }
+            });
+        }
         return bom;
     }
 
+    private String transferMethodName(String bomFieldName){
+        return "set" + bomFieldName.substring(0, 1).toUpperCase() + bomFieldName.substring(1);
+    }
+
     @Override
     public AbstractPageResultBean<CustomFormData> selectPageInfo(CustomFormDataDTO record, int pageNum, int pageSize) {
         PageHelper.startPage(pageNum, pageSize);