xiongchao 3 years ago
parent
commit
56c64de904

+ 6 - 0
platform-dao/src/main/java/com/platform/dao/dto/check/CheckJobDTO.java

@@ -2,6 +2,7 @@ package com.platform.dao.dto.check;
 
 import com.platform.common.bean.BaseDTO;
 import com.platform.common.validation.group.UpdateGroup;
+import com.platform.dao.entity.upms.SysFile;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
@@ -11,6 +12,7 @@ import java.io.Serializable;
 import java.math.BigDecimal;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
+import java.util.List;
 
 /**
  * @Description 点检记录DTO
@@ -206,4 +208,8 @@ public class CheckJobDTO extends BaseDTO implements Serializable {
      */
     private String planName;
 
+    /**
+     * 完成图片
+     */
+    private List<SysFile> imgList;
 }

+ 1 - 0
platform-dao/src/main/java/com/platform/dao/enums/SysFileTypeEnum.java

@@ -30,6 +30,7 @@ public enum SysFileTypeEnum {
     REPAIR_FEE_FILES(19, "维修-费用文件"),
     CHECK_STANDARD_IMGS(21, "保养图片"),
     CHECK_STANDARD_FILES(22, "保养文件"),
+    CHECK_JOB_FILES(23, "保养任务完成文件"),
     Sb_MEASURE_IMGS(31, "计量图片"),
     Sb_MEASURE_FILES(32, "计量文件");
     private Integer value;

+ 6 - 1
platform-dao/src/main/java/com/platform/dao/vo/query/check/CheckJobVO.java

@@ -1,6 +1,7 @@
 package com.platform.dao.vo.query.check;
 
 import com.platform.common.bean.DataScope;
+import com.platform.dao.entity.upms.SysFile;
 import lombok.Data;
 import lombok.experimental.Accessors;
 
@@ -11,6 +12,7 @@ import java.io.Serializable;
 import java.math.BigDecimal;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
+import java.util.List;
 
 /**
  * @Description 点检记录VO结果类
@@ -166,5 +168,8 @@ public class CheckJobVO implements Serializable{
      * 标准名称+
      */
     private String standardName;
-
+    /**
+     * 完成图片
+     */
+    private List<SysFile> imgList;
 }

+ 3 - 34
platform-dao/src/main/resources/mapper/check/CheckJobMapper.xml

@@ -154,31 +154,26 @@
     </sql>
     <select id="selectList" parameterType="com.platform.dao.dto.check.CheckJobDTO"
             resultType="com.platform.dao.vo.query.check.CheckJobVO">
-        select checkjob.*, u.real_name as checkUserName, plan.name planName, plan.no planNo,
+        select checkjob.*, u.real_name as checkUserName,
                sbinfo.name sbName, sbinfo.no sbNo,
-               partinfo.name partName,standard.name standardName,
+               partinfo.name partName, standard.name standardName,
                standard.period period, standard.period_type periodType
         from t_check_job as checkjob
-        left join t_check_plan plan on checkjob.plan_id = plan.id
         left join t_sb_info sbinfo on sbinfo.id = checkjob.sb_id
         left join t_part_info partinfo on partinfo.id = checkjob.part_id
         left join t_check_standard standard on standard.id = checkjob.standard_id
         left join t_sys_user u on checkjob.check_user_id = u.user_id
         <where>
             <include refid="List_Condition"/>
-            <if test="planName != null and planName != ''">
-                and plan.name = #{planName}
-            </if>
         </where>
     </select>
 
     <select id="selectDetail" resultType="com.platform.dao.vo.query.check.CheckJobVO">
-        select checkjob.*, u.real_name as checkUserName, plan.name planName, plan.no planNo,
+        select checkjob.*, u.real_name as checkUserName,
                sbinfo.name sbName, sbinfo.no sbNo,
                partinfo.name partName,standard.name standardName,
                standard.period period, standard.period_type periodType
         from t_check_job as checkjob
-        left join t_check_plan plan on checkjob.plan_id = plan.id
         left join t_sb_info sbinfo on sbinfo.id = checkjob.sb_id
         left join t_part_info partinfo on partinfo.id = checkjob.part_id
         left join t_check_standard standard on standard.id = checkjob.standard_id
@@ -186,32 +181,6 @@
         where checkjob.id = #{id}
     </select>
 
-    <select id="selectJobList" resultType="com.platform.dao.vo.query.check.CheckJobVO">
-        select plan.id planId,plan.check_user_id,plan.check_user_name,
-               standard.id standardId, standard.name standardName,
-               standard.remark,standard.requirement,,
-               standard.period period, standard.period_type periodType
-               project.sb_id, project.part_id
-        from t_check_plan plan
-        left join t_check_project_plan_relation pprelation on pprelation.plan_id = plan.id
-        left join t_check_project project on project.id = pprelation.project_id
-        left join t_check_project_standard_relation cpsreladtion on cpsreladtion.project_id = project.id
-        left join t_check_standard standard on standard.id = cpsreladtion.standard_id
-        where plan.id = #{planId}
-    </select>
-
-    <!--<select id="selectLastJob" parameterType="com.platform.dao.dto.check.CheckJobDTO"
-            resultType="com.platform.dao.vo.query.check.CheckJobVO">
-        select checkjob.*
-        from t_check_job as checkjob
-        where checkjob.plan_id = #{planId}
-        and checkjob.sb_id = #{sbId}
-        and checkjob.standard_id = #{standardId}
-        and checkjob.type = #{type}
-        order by checkjob.created_time desc
-        limit 1
-    </select>-->
-
     <select id="selectLastJob" parameterType="com.platform.dao.dto.check.CheckJobDTO"
             resultType="com.platform.dao.vo.query.check.CheckJobVO">
         select checkjob.*

+ 31 - 1
platform-rest/src/main/java/com/platform/rest/controller/check/CheckJobController.java

@@ -2,6 +2,7 @@ package com.platform.rest.controller.check;
 
 import com.platform.common.util.R;
 import com.platform.dao.dto.check.CheckJobDTO;
+import com.platform.dao.dto.sb.SbInfoDTO;
 import com.platform.dao.entity.check.CheckJob;
 import com.platform.dao.vo.query.check.CheckJobVO;
 import com.platform.service.check.CheckJobService;
@@ -154,7 +155,7 @@ public class CheckJobController {
    * @param checkJobDTO 点检任务DTO
    * @return R
    */
-  @SysLog("执行点检任务")
+  @SysLog("接收点检任务")
   @PutMapping("/execute")
   @PreAuthorize("@pms.hasPermission('check-spot-jobs-edit') or @pms.hasPermission('check-polling-jobs-edit')")
   public R executeJob(@Validated({UpdateGroup.class}) @RequestBody CheckJobDTO checkJobDTO) {
@@ -176,4 +177,33 @@ public class CheckJobController {
     return new R<>();
   }
 
+
+    /**
+     * 修改记录
+     *
+     * @param ids
+     * @return R
+     */
+    @SysLog("批量接收保养任务")
+    @PutMapping("/batch/execute")
+    //@PreAuthorize("@pms.hasPermission('sb-infos-edit')")
+    public R batchExecute(@Validated({UpdateGroup.class}) @RequestBody List<String> ids) {
+        checkJobService.executeJobBatch(ids);
+        return new R<>("已接收");
+    }
+
+    /**
+     * 修改记录
+     *
+     * @param ids
+     * @return R
+     */
+    @SysLog("批量完成保养任务")
+    @PutMapping("/batch/finish")
+    //@PreAuthorize("@pms.hasPermission('sb-infos-edit')")
+    public R batchFinish(@Validated({UpdateGroup.class}) @RequestBody List<String> ids) {
+        checkJobService.finishJobBatch(ids);
+        return new R<>("已完成");
+    }
+
 }

+ 4 - 0
platform-service/src/main/java/com/platform/service/check/CheckJobService.java

@@ -83,4 +83,8 @@ public interface CheckJobService extends IBaseService<CheckJob, CheckJobDTO> {
      * @return :
      */
     int countUserTask(String userId, Integer type);
+
+    void executeJobBatch(List<String> ids);
+
+    void finishJobBatch(List<String> ids);
 }

+ 60 - 2
platform-service/src/main/java/com/platform/service/check/impl/CheckJobServiceImpl.java

@@ -1,5 +1,6 @@
 package com.platform.service.check.impl;
 
+import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.github.pagehelper.PageHelper;
 import com.platform.common.bean.AbstractPageResultBean;
@@ -13,8 +14,10 @@ import com.platform.dao.dto.check.CheckPlanDTO;
 import com.platform.dao.dto.check.CheckProjectPlanRelationDTO;
 import com.platform.dao.dto.sb.SbInfoDTO;
 import com.platform.dao.entity.check.*;
+import com.platform.dao.entity.upms.SysFile;
 import com.platform.dao.enums.*;
 import com.platform.dao.mapper.check.*;
+import com.platform.dao.mapper.upms.SysFileMapper;
 import com.platform.dao.vo.SysUserVO;
 import com.platform.dao.vo.query.check.CheckJobVO;
 import com.platform.dao.vo.query.check.CheckPlanVO;
@@ -58,6 +61,7 @@ public class CheckJobServiceImpl extends BaseServiceImpl<CheckJobMapper, CheckJo
     private SysUserDeptService sysUserDeptService;
     private SbInfoService sbInfoService;
 
+    private final SysFileMapper sysFileMapper;
 
     @Override
     public int batchDelete(List<String> ids) {
@@ -520,12 +524,26 @@ public class CheckJobServiceImpl extends BaseServiceImpl<CheckJobMapper, CheckJo
 
     @Override
     public CheckJobVO getDetail(Object id) {
-        return mapper.selectDetail(id);
+        CheckJobVO vo = mapper.selectDetail(id);
+        Weekend<SysFile> weekend = new Weekend<>(SysFile.class);
+        weekend.weekendCriteria().andEqualTo(SysFile::getTargetId, vo.getId());
+        List<SysFile> sysFiles = sysFileMapper.selectByExample(weekend);
+        List<SysFile> sbFileList = ListUtils.newArrayList();
+        sysFiles.forEach(item -> {
+            if (item.getType().equals( SysFileTypeEnum.CHECK_JOB_FILES.getValue())) {
+                sbFileList.add(item);
+            }
+        });
+        vo.setImgList(sbFileList);
+        return vo;
     }
 
     @Override
     public void executeJob(Object id) {
         CheckJob checkJob = mapper.selectByPrimaryKey(id);
+        if(!CheckJobStatusEnum.NOT_EXECUTE.getValue().equals(checkJob.getStatus()) && !CheckJobStatusEnum.OUT_OF_DATE.getValue().equals(checkJob.getStatus())){
+            return;
+        }
         checkJob.setStatus(CheckJobStatusEnum.EXECUTING.getValue());
         checkJob.setActualStartTime(LocalDateTime.now());
         UserInfo userInfo = SecurityUtils.getUser().getUserInfo();
@@ -547,6 +565,9 @@ public class CheckJobServiceImpl extends BaseServiceImpl<CheckJobMapper, CheckJo
     public void finishJob(CheckJobDTO dto) {
         LocalDateTime now = LocalDateTime.now();
         CheckJob checkJob = mapper.selectByPrimaryKey(dto.getId());
+        if(!CheckJobStatusEnum.EXECUTING.getValue().equals(checkJob.getStatus()) && !CheckJobStatusEnum.OUT_OF_DATE.getValue().equals(checkJob.getStatus())){
+            return;
+        }
         checkJob.setStatus(CheckJobStatusEnum.FINISHED.getValue());
         checkJob.setActualEndTime(now);
         checkJob.setRealHours(DateUtils.getDurationMinutes(checkJob.getActualStartTime(), checkJob.getActualEndTime()) + "");
@@ -558,8 +579,11 @@ public class CheckJobServiceImpl extends BaseServiceImpl<CheckJobMapper, CheckJo
         checkJob.setFeedback(dto.getFeedback());
         mapper.updateByPrimaryKeySelective(checkJob);
 
+        // 提交完成图片信息
+        this.saveFile(dto);
+
         // 非台时和公里,则需要生成下一次的任务
-        CheckStandard checkStandard = standardMapper.selectByPrimaryKey(dto.getStandardId());
+        CheckStandard checkStandard = standardMapper.selectByPrimaryKey(checkJob.getStandardId());
         if(!CheckPlanPeriodTypeEnum.MILES.getValue().equals(checkStandard.getPeriodType()) && !CheckPlanPeriodTypeEnum.TAISHI.getValue().equals(checkStandard.getPeriodType()) ){
             CheckJob nextCheckJob = BeanConverterUtil.copyObjectProperties(checkJob,CheckJob.class);
             nextCheckJob.setId(IdGeneratorUtils.getObjectId());
@@ -568,6 +592,20 @@ public class CheckJobServiceImpl extends BaseServiceImpl<CheckJobMapper, CheckJo
         }
     }
 
+    @Override
+    public void executeJobBatch(List<String> ids) {
+        ids.forEach(id->this.executeJob(id));
+    }
+
+    @Override
+    public void finishJobBatch(List<String> ids) {
+        ids.forEach(id->{
+            CheckJobDTO dto = new CheckJobDTO();
+            dto.setId(id);
+            this.finishJob(dto);
+        });
+    }
+
     @Override
     public int countUserTask(String userId, Integer type) {
         Weekend<CheckJob> weekend = new Weekend<>(CheckJob.class);
@@ -579,4 +617,24 @@ public class CheckJobServiceImpl extends BaseServiceImpl<CheckJobMapper, CheckJo
         weekendCriteria.andIn(CheckJob::getStatus, statusList);
         return mapper.selectCountByExample(weekend);
     }
+
+    private void saveFile(CheckJobDTO model) {
+
+        List<SysFile> repairFileList = model.getImgList();
+        List<SysFile> list = ListUtils.newArrayList();
+        if (CollectionUtil.isNotEmpty(repairFileList)) {
+            Weekend<SysFile> weekend = new Weekend<>(SysFile.class);
+            weekend.weekendCriteria().andEqualTo(SysFile::getTargetId, model.getId());
+            sysFileMapper.deleteByExample(weekend);
+            repairFileList.forEach(item -> {
+                item.setType(SysFileTypeEnum.CHECK_JOB_FILES.getValue());
+                item.setId(IdGeneratorUtils.getObjectId());
+                item.setTargetId(model.getId());
+                list.add(item);
+            });
+        }
+        if (CollectionUtil.isNotEmpty(list)) {
+            sysFileMapper.insertListforComplex(list);
+        }
+    }
 }