瀏覽代碼

材料缴交提交表单

大数据与最优化研究所 1 年之前
父節點
當前提交
5c4708c435

+ 8 - 2
src/main/java/com/xjrsoft/module/form/dto/FormExecuteInfoDto.java

@@ -22,8 +22,8 @@ public class FormExecuteInfoDto {
     /**
      * 主键id
      */
-    @NotBlank(message = "自定义表单 发布id 不能为空")
-    @ApiModelProperty("自定义表单 主键id")
+    @NotBlank(message = "自定义表单 数据id 不能为空")
+    @ApiModelProperty("自定义表单 数据的主键id")
     private String id;
 //
 //    /**
@@ -31,4 +31,10 @@ public class FormExecuteInfoDto {
 //     */
 //    @ApiModelProperty("自定义表单 表单id")
 //    private String formId;
+
+    /**
+     * 表单模板id
+     */
+    @ApiModelProperty("自定义表单 表单模板id")
+    private Long templateId;
 }

+ 8 - 0
src/main/java/com/xjrsoft/module/form/service/IFormExecuteService.java

@@ -61,12 +61,20 @@ public interface IFormExecuteService {
      */
     Object info(FormExecuteInfoDto dto);
 
+    /**
+     * 获取自定义表单 表单数据
+     * @return
+     */
+    Object getInfoByTemplateId(FormExecuteInfoDto dto);
+
     /**
      * App 获取自定义表单 表单数据
      * @return
      */
     Object appInfo(AppFormExecuteInfoDto dto);
 
+    Long addByTemplateId(FormExecuteAddOrUpdateDto dto);
+
     /**
      * 自定义表单 新增
      * @param dto

+ 57 - 5
src/main/java/com/xjrsoft/module/form/service/impl/FormExecuteServiceImpl.java

@@ -351,6 +351,42 @@ public class FormExecuteServiceImpl implements IFormExecuteService {
 
     }
 
+    @Override
+    public Object getInfoByTemplateId(FormExecuteInfoDto dto) {
+        //自定义表单数据
+        FormTemplate template = formTemplateMapper.selectById(dto.getTemplateId());
+
+        String formJson = template.getFormJson();
+        //自定义表单配置
+        FormDesignConfig formDesignConfig = JSONUtil.toBean(formJson, FormDesignConfig.class);
+        //表关系配置
+        List<TableConfig> tableConfigs = formDesignConfig.getTableConfigs();
+        //主表
+        Optional<TableConfig> mainTable = tableConfigs.stream().filter(TableConfig::getIsMain).findFirst();
+
+        if (mainTable.isPresent()) {
+            TableConfig tableConfig = mainTable.get();
+            String tableName = tableConfig.getTableName();
+
+            Map<String, List<ComponentConfig>> formComponentListMap = GeneratorUtil.buildFormComponentList(formDesignConfig.getFormJson().getList());
+            List<String> fieldsList = new ArrayList<>();
+            for (ComponentConfig config : formComponentListMap.get(tableName)) {
+                String type = config.getType();
+                if (StrUtil.equalsIgnoreCase(type, ComponentTypeConstant.TIME_RANGE) || StrUtil.equalsIgnoreCase(type, ComponentTypeConstant.DATE_RANGE)) {
+                    fieldsList.add(config.getBindStartTime());
+                    fieldsList.add(config.getBindEndTime());
+                } else {
+                    fieldsList.add(config.getBindField());
+                }
+            }
+
+            return getFormData(tableName, fieldsList, formDesignConfig, dto.getId());
+        } else {
+            throw new MyException("主表不存在");
+        }
+
+    }
+
     @Override
     public Object appInfo(AppFormExecuteInfoDto dto) {
         AppFuncDesign funcDesign = appFuncDesignService.getById(dto.getFuncId());
@@ -403,8 +439,21 @@ public class FormExecuteServiceImpl implements IFormExecuteService {
         //自定义表单数据
         FormTemplate template = formTemplateMapper.selectById(formRelease.getFormId());
 
-        return insertFormData(formData, template);
+        long id = insertFormData(formData, template);
+        if(id != 0){
+            return true;
+        }
+        return false;
+    }
 
+    @Transactional
+    @Override
+    public Long addByTemplateId(FormExecuteAddOrUpdateDto dto) {
+        Map<String, Object> formData = dto.getFormData();
+
+        //自定义表单数据
+        FormTemplate template = formTemplateMapper.selectById(dto.getReleaseId());
+        return insertFormData(formData, template);
     }
 
     @Transactional
@@ -421,7 +470,11 @@ public class FormExecuteServiceImpl implements IFormExecuteService {
         FormTemplate template = new FormTemplate();
         template.setFormJson(configJson);
 
-        return insertFormData(formData, template);
+        long id = insertFormData(formData, template);
+        if(id != 0){
+            return true;
+        }
+        return false;
     }
 
     @Transactional
@@ -787,7 +840,7 @@ public class FormExecuteServiceImpl implements IFormExecuteService {
 
 
     @Transactional
-    public boolean insertFormData(Map<String, Object> formData, FormTemplate template) {
+    public Long insertFormData(Map<String, Object> formData, FormTemplate template) {
         String formJson = template.getFormJson();
         //自定义表单配置
         FormDesignConfig formDesignConfig = JSONUtil.toBean(formJson, FormDesignConfig.class);
@@ -847,11 +900,10 @@ public class FormExecuteServiceImpl implements IFormExecuteService {
                     }
                 }
                 codeRuleService.useEncode(autoCodeList);
+                return keyValue;
             } catch (Exception e) {
                 throw new MyException("新增数据失败,数据回滚!", e);
             }
-
-            return true;
         } else {
             throw new MyException("主表不存在");
         }

+ 14 - 9
src/main/java/com/xjrsoft/module/material/controller/MaterialTaskController.java

@@ -16,15 +16,9 @@ import com.xjrsoft.common.page.ConventPage;
 import com.xjrsoft.common.page.PageOutput;
 import com.xjrsoft.common.utils.VoToColumnUtil;
 import com.xjrsoft.module.app.dto.UpdateEnableMarkDto;
-import com.xjrsoft.module.material.dto.AddMaterialTaskAssignDto;
-import com.xjrsoft.module.material.dto.AddMaterialTaskDto;
-import com.xjrsoft.module.material.dto.MaterialTaskAssignAppendixDto;
-import com.xjrsoft.module.material.dto.MaterialTaskAssignApprovedDto;
-import com.xjrsoft.module.material.dto.MaterialTaskAssignListDto;
-import com.xjrsoft.module.material.dto.MaterialTaskAssignPageDto;
-import com.xjrsoft.module.material.dto.MaterialTaskPageDto;
-import com.xjrsoft.module.material.dto.MaterialTaskWaitPageDto;
-import com.xjrsoft.module.material.dto.UpdateMaterialTaskDto;
+import com.xjrsoft.module.form.dto.FormExecuteInfoDto;
+import com.xjrsoft.module.form.service.IFormExecuteService;
+import com.xjrsoft.module.material.dto.*;
 import com.xjrsoft.module.material.entity.*;
 import com.xjrsoft.module.material.service.IMaterialTaskAppendixService;
 import com.xjrsoft.module.material.service.IMaterialTaskAssignService;
@@ -75,6 +69,8 @@ public class MaterialTaskController {
 
     private final IMaterialTaskAssignService materialTaskAssignService;
 
+    private final IFormExecuteService formExecuteService;
+
     @GetMapping(value = "/page")
     @ApiOperation(value = "材料提交任务列表(分页 我发布的)")
     @SaCheckPermission("materialtask:detail")
@@ -258,4 +254,13 @@ public class MaterialTaskController {
     public RT<List<MaterialTaskAssignListVo>> assignList(@Valid MaterialTaskAssignListDto dto) {
         return RT.ok(materialTaskService.assignList(dto));
     }
+
+    @GetMapping("/view -contents")
+    @ApiOperation(value = "查看填报的表单")
+    public R viewContent(@Valid ViewContentDto dto) {
+        return R.ok(formExecuteService.getInfoByTemplateId(new FormExecuteInfoDto(){{
+            setTemplateId(dto.getTemplateId());
+            setId(dto.getId());
+        }}));
+    }
 }

+ 3 - 6
src/main/java/com/xjrsoft/module/material/controller/MaterialTypeController.java

@@ -18,13 +18,11 @@ import com.xjrsoft.common.page.ConventPage;
 import com.xjrsoft.common.page.PageOutput;
 import com.xjrsoft.common.utils.VoToColumnUtil;
 import com.xjrsoft.module.app.dto.UpdateEnableMarkDto;
+import com.xjrsoft.module.form.dto.FormExecuteInfoDto;
 import com.xjrsoft.module.form.entity.FormTemplate;
+import com.xjrsoft.module.form.service.IFormExecuteService;
 import com.xjrsoft.module.form.service.IFormTemplateService;
-import com.xjrsoft.module.material.dto.AddMaterialTypeAssignDto;
-import com.xjrsoft.module.material.dto.AddMaterialTypeDto;
-import com.xjrsoft.module.material.dto.MaterialTypeAssignPageDto;
-import com.xjrsoft.module.material.dto.MaterialTypePageDto;
-import com.xjrsoft.module.material.dto.UpdateMaterialTypeDto;
+import com.xjrsoft.module.material.dto.*;
 import com.xjrsoft.module.material.entity.MaterialType;
 import com.xjrsoft.module.material.entity.MaterialTypeAssign;
 import com.xjrsoft.module.material.service.IMaterialTypeAssignService;
@@ -99,7 +97,6 @@ public class MaterialTypeController {
         return RT.ok(materialTypeVo);
     }
 
-
     @PostMapping
     @ApiOperation(value = "新增材料提交任务类型")
     @SaCheckPermission("materialtype:add")

+ 19 - 0
src/main/java/com/xjrsoft/module/material/dto/MaterialTaskAssignAppendixDto.java

@@ -3,7 +3,9 @@ package com.xjrsoft.module.material.dto;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
+import javax.validation.constraints.NotNull;
 import java.util.List;
+import java.util.Map;
 
 @Data
 public class MaterialTaskAssignAppendixDto {
@@ -13,6 +15,23 @@ public class MaterialTaskAssignAppendixDto {
     @ApiModelProperty("材料提交任务分配对象ID")
     private Long materialTaskAssignId;
 
+    /**
+     * 任务类型(可多选 xjr_dictionary_detail[material_category])
+     */
+    @ApiModelProperty("任务类型(可多选 xjr_dictionary_detail[material_category])")
+    private String materialCategory;
+
+    /**
+     * 表单模板id
+     */
+    @NotNull(message = "表单模板id")
+    private Long templateId;
+
+    /**
+     * 自定义表单 表单数据
+     */
+    private Map<String,Object> formData;
+
     /**
      * materialTaskAppendix
      */

+ 22 - 0
src/main/java/com/xjrsoft/module/material/dto/ViewContentDto.java

@@ -0,0 +1,22 @@
+package com.xjrsoft.module.material.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+
+@Data
+public class ViewContentDto {
+    /**
+     * 主键id
+     */
+    @NotBlank(message = "自定义表单 数据id 不能为空")
+    @ApiModelProperty("自定义表单 数据的主键id")
+    private String id;
+
+    /**
+     * 表单模板id
+     */
+    @ApiModelProperty("自定义表单 表单模板id")
+    private Long templateId;
+}

+ 72 - 23
src/main/java/com/xjrsoft/module/material/service/impl/MaterialTaskServiceImpl.java

@@ -13,6 +13,8 @@ import com.xjrsoft.common.enums.MaterialCategoryEnum;
 import com.xjrsoft.common.utils.RedisUtil;
 import com.xjrsoft.common.utils.VoToColumnUtil;
 import com.xjrsoft.config.CommonPropertiesConfig;
+import com.xjrsoft.module.form.dto.FormExecuteAddOrUpdateDto;
+import com.xjrsoft.module.form.service.IFormExecuteService;
 import com.xjrsoft.module.material.dto.*;
 import com.xjrsoft.module.material.entity.*;
 import com.xjrsoft.module.material.mapper.MaterialTaskAppendixMapper;
@@ -58,6 +60,8 @@ public class MaterialTaskServiceImpl extends MPJBaseServiceImpl<MaterialTaskMapp
     private final IMaterialTypeService materialTypeService;
     private final IWeChatService weChatService;
 
+    private final IFormExecuteService formExecuteService;
+
     private final CommonPropertiesConfig commonPropertiesConfig;
     @Override
     @Transactional(rollbackFor = Exception.class)
@@ -178,39 +182,84 @@ public class MaterialTaskServiceImpl extends MPJBaseServiceImpl<MaterialTaskMapp
     @Transactional(rollbackFor = Exception.class)
     public Boolean submited(MaterialTaskAssignAppendixDto materialTaskAssignAppendixDto) {
 
-        if (materialTaskAssignAppendixDto.getMaterialTaskAppendixList() != null && materialTaskAssignAppendixDto.getMaterialTaskAppendixList().size() > 0) {
+        if(materialTaskAssignAppendixDto.getMaterialCategory().equals(MaterialCategoryEnum.MT0001.getCode())){
+            if (materialTaskAssignAppendixDto.getMaterialTaskAppendixList() != null && materialTaskAssignAppendixDto.getMaterialTaskAppendixList().size() > 0) {
 
-            MaterialTaskAssign materialTaskAssign = materialTaskMaterialTaskAssignMapper.selectByIdDeep(materialTaskAssignAppendixDto.getMaterialTaskAssignId());
-            Integer oldStatus = materialTaskAssign.getStatus();
-            materialTaskAssign.setStatus(2);
+                MaterialTaskAssign materialTaskAssign = materialTaskMaterialTaskAssignMapper.selectByIdDeep(materialTaskAssignAppendixDto.getMaterialTaskAssignId());
+                Integer oldStatus = materialTaskAssign.getStatus();
+                materialTaskAssign.setStatus(2);
 
-            if (oldStatus == 1) {
-                MaterialTask materialTask = materialTaskMaterialTaskMapper.selectByIdDeep(materialTaskAssign.getMaterialTaskId());
+                if (oldStatus == 1) {
+                    MaterialTask materialTask = materialTaskMaterialTaskMapper.selectByIdDeep(materialTaskAssign.getMaterialTaskId());
 
-                LocalDate requiredCompleteTime = materialTask.getRequiredCompleteTime();
-                LocalDate today = materialTask.getRequiredCompleteTime();
+                    LocalDate requiredCompleteTime = materialTask.getRequiredCompleteTime();
+                    LocalDate today = LocalDate.now();
 
-                int comparison = today.compareTo(requiredCompleteTime);
-                if (comparison > 0) {//超时提交
-                    materialTaskAssign.setExecutiveStatus(3);
-                    materialTask.setTimeDelay(materialTask.getTimeDelay() + 1);
-                } else {//准时提交(包含当天)
-                    materialTaskAssign.setExecutiveStatus(2);
-                    materialTask.setOnTimePerson(materialTask.getOnTimePerson() + 1);
+                    int comparison = today.compareTo(requiredCompleteTime);
+                    if (comparison > 0) {//超时提交
+                        materialTaskAssign.setExecutiveStatus(3);
+                        materialTask.setTimeDelay(materialTask.getTimeDelay() + 1);
+                    } else {//准时提交(包含当天)
+                        materialTaskAssign.setExecutiveStatus(2);
+                        materialTask.setOnTimePerson(materialTask.getOnTimePerson() + 1);
+                    }
+                    materialTask.setSubmitedPerson(materialTask.getSubmitedPerson() + 1);
+                    materialTaskMaterialTaskMapper.updateById(materialTask);
+                }
+                materialTaskMaterialTaskAssignMapper.updateById(materialTaskAssign);
+
+                if (oldStatus == 4) { // 重做删除原来的
+                    materialTaskMaterialTaskAppendixMapper.delete(Wrappers.lambdaQuery(MaterialTaskAppendix.class).eq(MaterialTaskAppendix::getMaterialTaskId, materialTaskAssignAppendixDto.getMaterialTaskAssignId()));
                 }
-                materialTask.setSubmitedPerson(materialTask.getSubmitedPerson() + 1);
-                materialTaskMaterialTaskMapper.updateById(materialTask);
-            }
-            materialTaskMaterialTaskAssignMapper.updateById(materialTaskAssign);
 
-            if (oldStatus == 4) { // 重做删除原来的
-                materialTaskMaterialTaskAppendixMapper.delete(Wrappers.lambdaQuery(MaterialTaskAppendix.class).eq(MaterialTaskAppendix::getMaterialTaskId, materialTaskAssignAppendixDto.getMaterialTaskAssignId()));
+                for (AddMaterialTaskAppendixDto materialTaskAppendixDto : materialTaskAssignAppendixDto.getMaterialTaskAppendixList()) {
+                    MaterialTaskAppendix materialTaskAppendix = new MaterialTaskAppendix();
+                    materialTaskAppendix.setMaterialTaskId(materialTaskAssignAppendixDto.getMaterialTaskAssignId());
+                    materialTaskAppendix.setFileId(materialTaskAppendixDto.getFileId());
+                    materialTaskMaterialTaskAppendixMapper.insert(materialTaskAppendix);
+                }
             }
+        }
+
+        if(materialTaskAssignAppendixDto.getMaterialCategory().equals(MaterialCategoryEnum.MT0002.getCode())){
+            if (materialTaskAssignAppendixDto.getTemplateId() != null && !materialTaskAssignAppendixDto.getFormData().isEmpty()) {
+
+                MaterialTaskAssign materialTaskAssign = materialTaskMaterialTaskAssignMapper.selectByIdDeep(materialTaskAssignAppendixDto.getMaterialTaskAssignId());
+                Integer oldStatus = materialTaskAssign.getStatus();
+                materialTaskAssign.setStatus(2);
+
+                //状态 1=未提交 2=待审核 3=通过 4=重做
+                if (oldStatus == 1) {
+                    MaterialTask materialTask = materialTaskMaterialTaskMapper.selectByIdDeep(materialTaskAssign.getMaterialTaskId());
+
+                    LocalDate requiredCompleteTime = materialTask.getRequiredCompleteTime();
+                    LocalDate today = LocalDate.now();
+
+                    int comparison = today.compareTo(requiredCompleteTime);
+                    if (comparison > 0) {//超时提交
+                        materialTaskAssign.setExecutiveStatus(3);
+                        materialTask.setTimeDelay(materialTask.getTimeDelay() + 1);
+                    } else {//准时提交(包含当天)
+                        materialTaskAssign.setExecutiveStatus(2);
+                        materialTask.setOnTimePerson(materialTask.getOnTimePerson() + 1);
+                    }
+                    materialTask.setSubmitedPerson(materialTask.getSubmitedPerson() + 1);
+                    materialTaskMaterialTaskMapper.updateById(materialTask);
+                }
+                materialTaskMaterialTaskAssignMapper.updateById(materialTaskAssign);
+
+                if (oldStatus == 4) { // 重做删除原来的
+                    materialTaskMaterialTaskAppendixMapper.delete(Wrappers.lambdaQuery(MaterialTaskAppendix.class).eq(MaterialTaskAppendix::getMaterialTaskId, materialTaskAssignAppendixDto.getMaterialTaskAssignId()));
+                }
+
+                long id = formExecuteService.addByTemplateId(new FormExecuteAddOrUpdateDto(){{
+                    setReleaseId(materialTaskAssignAppendixDto.getTemplateId());
+                    setFormData(materialTaskAssignAppendixDto.getFormData());
+                }});
 
-            for (AddMaterialTaskAppendixDto materialTaskAppendixDto : materialTaskAssignAppendixDto.getMaterialTaskAppendixList()) {
                 MaterialTaskAppendix materialTaskAppendix = new MaterialTaskAppendix();
                 materialTaskAppendix.setMaterialTaskId(materialTaskAssignAppendixDto.getMaterialTaskAssignId());
-                materialTaskAppendix.setFileId(materialTaskAppendixDto.getFileId());
+                materialTaskAppendix.setFileId(id);
                 materialTaskMaterialTaskAppendixMapper.insert(materialTaskAppendix);
             }
         }