|
@@ -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);
|