Browse Source

材料提交认任务

大数据与最优化研究所 1 year ago
parent
commit
d371c87f53

+ 3 - 24
src/main/java/com/xjrsoft/module/material/controller/MaterialTaskController.java

@@ -115,9 +115,9 @@ public class MaterialTaskController {
 //                .eq(MaterialTask::getCreateUserId, StpUtil.getLoginIdAsLong())
                 .like(StrUtil.isNotBlank(dto.getName()), MaterialTask::getName, dto.getName())
                 .like(StrUtil.isNotBlank(dto.getAssignedUser()), XjrUser::getName, dto.getAssignedUser())
-                .eq(ObjectUtil.isNotEmpty(dto.getStatus()) && dto.getStatus() > 0, MaterialTask::getStatus, dto.getStatus())
+                .eq(ObjectUtil.isNotEmpty(dto.getStatus()), MaterialTask::getStatus, dto.getStatus())
 //                .eq((ObjectUtil.isNotEmpty(dto.getMaterialTypeId())) && dto.getMaterialTypeId() > 0, MaterialTask::getMaterialTypeId, dto.getMaterialTypeId())
-                .eq((ObjectUtil.isNotEmpty(dto.getExtStatus())) && dto.getExtStatus() > 0, MaterialTaskAssign::getStatus, dto.getExtStatus())
+                .eq((ObjectUtil.isNotEmpty(dto.getExtStatus())), MaterialTaskAssign::getStatus, dto.getExtStatus())
                 .select(MaterialTask::getId)
                 .select(MaterialTask.class, x -> VoToColumnUtil.fieldsToColumns(MaterialTaskWaitPageVo.class).contains(x.getProperty()))
                 .innerJoin(MaterialTaskAssign.class, MaterialTaskAssign::getMaterialTaskId, MaterialTask::getId, ext -> ext.eq(MaterialTaskAssign::getUserId, StpUtil.getLoginIdAsLong()))
@@ -261,27 +261,6 @@ public class MaterialTaskController {
     @ApiOperation(value = "审核分员列表")
     @SaCheckPermission("materialtask:detail")
     public RT<List<MaterialTaskAssignListVo>> assignList(@Valid MaterialTaskAssignListDto dto) {
-
-        MPJLambdaWrapper<MaterialTaskAssign> queryWrapper = new MPJLambdaWrapper<>();
-        queryWrapper
-                .distinct()
-                .disableSubLogicDel()
-                .eq(MaterialTaskAssign::getMaterialTaskId, dto.getMaterialTaskId())
-                .eq(dto.getState() == 1, MaterialTaskAssign::getStatus, 2)
-                .eq(dto.getState() == 2, MaterialTaskAssign::getExecutiveStatus, 1)
-                .eq(dto.getState() == 3, MaterialTaskAssign::getStatus, 3)
-                .select(MaterialTaskAssign::getId)
-                .select(XjrUser::getName)
-                .select(MaterialTaskAssign.class, x -> VoToColumnUtil.fieldsToColumns(MaterialTaskAssignListVo.class).contains(x.getProperty()))
-                .innerJoin(XjrUser.class, XjrUser::getId, MaterialTaskAssign::getUserId, ext -> ext.selectAs(XjrUser::getUserName, MaterialTaskAssignListVo::getUserName))
-                .leftJoin(UserDeptRelation.class, UserDeptRelation::getUserId, MaterialTypeAssign::getUserId)
-                .leftJoin(Department.class, Department::getId, UserDeptRelation::getDeptId, ext -> ext.selectAs(Department::getName, MaterialTaskAssignListVo::getDeptName))
-                .select("(\n" +
-                        "SELECT id FROM xjr_file WHERE id IN (\n" +
-                        "SELECT file_id FROM material_task_appendix WHERE material_task_id = t.id\n" +
-                        ") ORDER BY create_date DESC LIMIT 1\n" +
-                        ") AS folderId ");
-        List<MaterialTaskAssignListVo> pageOutput = materialTaskAssignService.selectJoinList(MaterialTaskAssignListVo.class, queryWrapper);
-        return RT.ok(pageOutput);
+        return RT.ok(materialTaskService.assignList(dto));
     }
 }

+ 5 - 0
src/main/java/com/xjrsoft/module/material/dto/MaterialTaskAssignListDto.java

@@ -14,4 +14,9 @@ public class MaterialTaskAssignListDto {
      * 1=待审核 2=未提交 3=已审核
      */
     private Integer state;
+
+    /**
+     * 姓名
+     */
+    private String name;
 }

+ 4 - 0
src/main/java/com/xjrsoft/module/material/service/IMaterialTaskService.java

@@ -3,7 +3,9 @@ package com.xjrsoft.module.material.service;
 import com.github.yulichang.base.MPJBaseService;
 import com.xjrsoft.module.material.dto.AddMaterialTaskDto;
 import com.xjrsoft.module.material.dto.MaterialTaskAssignAppendixDto;
+import com.xjrsoft.module.material.dto.MaterialTaskAssignListDto;
 import com.xjrsoft.module.material.entity.MaterialTask;
+import com.xjrsoft.module.material.vo.MaterialTaskAssignListVo;
 import com.xjrsoft.module.material.vo.MaterialTaskVo;
 
 import java.util.List;
@@ -50,4 +52,6 @@ public interface IMaterialTaskService extends MPJBaseService<MaterialTask> {
     MaterialTaskVo getInfoById(Long id);
 
     void sendMessage(Long materialTaskId);
+
+    List<MaterialTaskAssignListVo> assignList(MaterialTaskAssignListDto dto);
 }

+ 2 - 0
src/main/java/com/xjrsoft/module/material/service/IMaterialTypeService.java

@@ -4,6 +4,7 @@ import com.github.yulichang.base.MPJBaseService;
 import com.xjrsoft.common.page.PageOutput;
 import com.xjrsoft.module.material.dto.MaterialTypePageDto;
 import com.xjrsoft.module.material.entity.MaterialType;
+import com.xjrsoft.module.material.vo.MaterialTaskAssignListVo;
 import com.xjrsoft.module.material.vo.MaterialTypePageVo;
 import com.xjrsoft.module.material.vo.MaterialTypeVo;
 
@@ -46,4 +47,5 @@ public interface IMaterialTypeService extends MPJBaseService<MaterialType> {
     MaterialTypeVo getInfoById(Long id);
 
     List<MaterialTypeVo> listMaterialTypeVo();
+    void handleFileAndTemplate(MaterialTaskAssignListVo materialTaskAssignListVo, String category);
 }

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

@@ -1,59 +1,41 @@
 package com.xjrsoft.module.material.service.impl;
 
-import cn.dev33.satoken.stp.StpUtil;
 import cn.hutool.core.bean.BeanUtil;
-import cn.hutool.core.util.ObjectUtil;
-import cn.hutool.core.util.StrUtil;
 import cn.hutool.extra.spring.SpringUtil;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.core.toolkit.StringPool;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.fasterxml.jackson.core.type.TypeReference;
 import com.github.yulichang.base.MPJBaseServiceImpl;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
 import com.xjrsoft.common.constant.GlobalConstant;
 import com.xjrsoft.common.enums.MaterialCategoryEnum;
-import com.xjrsoft.common.model.result.RT;
-import com.xjrsoft.common.page.ConventPage;
-import com.xjrsoft.common.utils.LocalDateTimeUtil;
 import com.xjrsoft.common.utils.RedisUtil;
 import com.xjrsoft.common.utils.VoToColumnUtil;
 import com.xjrsoft.config.CommonPropertiesConfig;
-import com.xjrsoft.module.material.dto.AddMaterialTaskAppendixDto;
-import com.xjrsoft.module.material.dto.AddMaterialTaskDto;
-import com.xjrsoft.module.material.dto.MaterialAssignUserDto;
-import com.xjrsoft.module.material.dto.MaterialTaskAssignAppendixDto;
-import com.xjrsoft.module.material.entity.MaterialTask;
-import com.xjrsoft.module.material.entity.MaterialTaskAppendix;
-import com.xjrsoft.module.material.entity.MaterialTaskAssign;
-import com.xjrsoft.module.material.entity.MaterialType;
+import com.xjrsoft.module.material.dto.*;
+import com.xjrsoft.module.material.entity.*;
 import com.xjrsoft.module.material.mapper.MaterialTaskAppendixMapper;
 import com.xjrsoft.module.material.mapper.MaterialTaskAssignMapper;
 import com.xjrsoft.module.material.mapper.MaterialTaskMapper;
 import com.xjrsoft.module.material.service.IMaterialTaskService;
 import com.xjrsoft.module.material.service.IMaterialTypeService;
-import com.xjrsoft.module.material.vo.MaterialTaskAppendixVo;
-import com.xjrsoft.module.material.vo.MaterialTaskPageVo;
+import com.xjrsoft.module.material.vo.MaterialTaskAssignListVo;
 import com.xjrsoft.module.material.vo.MaterialTaskVo;
 import com.xjrsoft.module.material.vo.MaterialTypeVo;
-import com.xjrsoft.module.oa.entity.News;
-import com.xjrsoft.module.oa.entity.NewsRelation;
-import com.xjrsoft.module.oa.vo.NewsRelationVo;
 import com.xjrsoft.module.organization.dto.WeChatSendMessageDto;
 import com.xjrsoft.module.organization.entity.Department;
 import com.xjrsoft.module.organization.entity.User;
+import com.xjrsoft.module.organization.entity.UserDeptRelation;
 import com.xjrsoft.module.organization.service.IUserService;
 import com.xjrsoft.module.organization.service.IWeChatService;
 import com.xjrsoft.module.system.entity.DictionaryDetail;
-import com.xjrsoft.module.system.entity.File;
 import com.xjrsoft.module.teacher.entity.XjrUser;
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.time.format.DateTimeFormatter;
+import java.time.LocalDate;
 import java.util.List;
 import java.util.Objects;
 import java.util.concurrent.CompletableFuture;
@@ -201,8 +183,21 @@ public class MaterialTaskServiceImpl extends MPJBaseServiceImpl<MaterialTaskMapp
             MaterialTaskAssign materialTaskAssign = materialTaskMaterialTaskAssignMapper.selectByIdDeep(materialTaskAssignAppendixDto.getMaterialTaskAssignId());
             Integer oldStatus = materialTaskAssign.getStatus();
             materialTaskAssign.setStatus(2);
+
             if (oldStatus == 1) {
                 MaterialTask materialTask = materialTaskMaterialTaskMapper.selectByIdDeep(materialTaskAssign.getMaterialTaskId());
+
+                LocalDate requiredCompleteTime = materialTask.getRequiredCompleteTime();
+                LocalDate today = materialTask.getRequiredCompleteTime();
+
+                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);
             }
@@ -308,6 +303,43 @@ public class MaterialTaskServiceImpl extends MPJBaseServiceImpl<MaterialTaskMapp
         });
     }
 
+    @Override
+    public List<MaterialTaskAssignListVo> assignList(MaterialTaskAssignListDto dto) {
+
+        MPJLambdaWrapper<MaterialTaskAssign> queryWrapper = new MPJLambdaWrapper<>();
+        queryWrapper
+                .distinct()
+                .disableSubLogicDel()
+                .like(dto.getName() != null && !dto.getName().equals(""), XjrUser::getName, dto.getName())
+                .eq(MaterialTaskAssign::getMaterialTaskId, dto.getMaterialTaskId())
+                .eq(dto.getState() != null, MaterialTaskAssign::getStatus, dto.getState())
+                .select(MaterialTaskAssign::getId)
+                .selectAs(XjrUser::getName, MaterialTaskAssignListVo::getName)
+                .selectAs(MaterialTaskAppendix::getFileId, MaterialTaskAssignListVo::getFolderId)
+                .selectAs(MaterialTaskAppendix::getFileId, MaterialTaskAssignListVo::getFormReleaseId)
+                .select(MaterialTask::getMaterialCategory)
+                .select(MaterialTaskAssign.class, x -> VoToColumnUtil.fieldsToColumns(MaterialTaskAssignListVo.class).contains(x.getProperty()))
+                .innerJoin(XjrUser.class, XjrUser::getId, MaterialTaskAssign::getUserId, ext -> ext.selectAs(XjrUser::getUserName, MaterialTaskAssignListVo::getUserName))
+                .leftJoin(UserDeptRelation.class, UserDeptRelation::getUserId, MaterialTypeAssign::getUserId)
+                .leftJoin(Department.class, Department::getId, UserDeptRelation::getDeptId, ext -> ext.selectAs(Department::getName, MaterialTaskAssignListVo::getDeptName))
+                .leftJoin(MaterialTask.class, MaterialTask::getId, MaterialTaskAssign::getMaterialTaskId)
+                .leftJoin(MaterialTaskAppendix.class, MaterialTaskAppendix::getMaterialTaskId, MaterialTaskAssign::getId)
+//                .select("(\n" +
+//                        "SELECT id FROM xjr_file WHERE id IN (\n" +
+//                        "SELECT file_id FROM material_task_appendix WHERE material_task_id = t.id\n" +
+//                        ") ORDER BY create_date DESC LIMIT 1\n" +
+//                        ") AS folderId ")
+        ;
+
+        List<MaterialTaskAssignListVo> pageOutput = materialTaskMaterialTaskAssignMapper.selectJoinList(MaterialTaskAssignListVo.class, queryWrapper);
+
+        for (MaterialTaskAssignListVo materialTaskAssignListVo : pageOutput){
+            materialTypeService.handleFileAndTemplate(materialTaskAssignListVo, materialTaskAssignListVo.getMaterialCategory());
+        }
+
+        return pageOutput;
+    }
+
     private boolean sendMessageUtil(MaterialTask materialTask ) {
         IUserService userService = SpringUtil.getBean(IUserService.class);
         RedisUtil redisUtil = SpringUtil.getBean(RedisUtil.class);

+ 8 - 0
src/main/java/com/xjrsoft/module/material/service/impl/MaterialTypeServiceImpl.java

@@ -19,6 +19,7 @@ import com.xjrsoft.module.material.entity.MaterialTypeAssign;
 import com.xjrsoft.module.material.mapper.MaterialTypeAssignMapper;
 import com.xjrsoft.module.material.mapper.MaterialTypeMapper;
 import com.xjrsoft.module.material.service.IMaterialTypeService;
+import com.xjrsoft.module.material.vo.MaterialTaskAssignListVo;
 import com.xjrsoft.module.material.vo.MaterialTypePageVo;
 import com.xjrsoft.module.material.vo.MaterialTypeVo;
 import com.xjrsoft.module.system.entity.File;
@@ -228,6 +229,13 @@ public class MaterialTypeServiceImpl extends MPJBaseServiceImpl<MaterialTypeMapp
         BeanUtils.copyProperties(materialTypePageVo, materialTypeVo);
     }
 
+    public void handleFileAndTemplate(MaterialTaskAssignListVo materialTaskAssignListVo, String category) {
+        MaterialTypePageVo materialTypePageVo = new MaterialTypePageVo();
+        BeanUtils.copyProperties(materialTaskAssignListVo, materialTypePageVo);
+        handleFileAndTemplate(materialTypePageVo, category);
+        BeanUtils.copyProperties(materialTypePageVo, materialTaskAssignListVo);
+    }
+
     private void handleFileAndTemplate(MaterialTypePageVo materialTypePageVo, String category) {
         if (MaterialCategoryEnum.MT0001.getCode().equals(category) && materialTypePageVo.getFolderId() != null) {
             List<File> files = getFileListByFolderId(materialTypePageVo.getFolderId());

+ 35 - 2
src/main/java/com/xjrsoft/module/material/vo/MaterialTaskAssignListVo.java

@@ -1,8 +1,11 @@
 package com.xjrsoft.module.material.vo;
 
+import com.xjrsoft.module.system.entity.File;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
+import java.util.List;
+
 @Data
 public class MaterialTaskAssignListVo {
 
@@ -16,6 +19,13 @@ public class MaterialTaskAssignListVo {
      */
     @ApiModelProperty("材料提交任务(material_task)")
     private Long materialTaskId;
+
+    /**
+     * 任务类型(可多选 xjr_dictionary_detail[material_category])
+     */
+    @ApiModelProperty("任务类型(可多选 xjr_dictionary_detail[material_category])")
+    private String materialCategory;
+
     /**
      * 用户(xjr_user)
      */
@@ -44,10 +54,33 @@ public class MaterialTaskAssignListVo {
      * 部门
      */
     private String deptName;
+
+    /**
+     * 文件模板
+     */
+    @ApiModelProperty("文件模板")
+    private Long folderId;
     /**
-     * 文件包
+     * 文件模板
      */
-    private String folderId;
+    @ApiModelProperty("文件模板")
+    private String folderIdCn;
+    /**
+     * 文件模板
+     */
+    @ApiModelProperty("文件模板")
+    private List<File> files;
+    /**
+     * 表单发布
+     */
+    @ApiModelProperty("表单发布")
+    private Long formReleaseId;
+    /**
+     * 表单发布
+     */
+    @ApiModelProperty("表单发布")
+    private String formReleaseIdCn;
+
 
     /**
      * 用户名字