Эх сурвалжийг харах

Merge remote-tracking branch 'origin/demo_' into demo_

hfxc226 1 жил өмнө
parent
commit
ebf3233061

+ 6 - 0
platform-common/src/main/java/com/platform/common/constant/CommonConstants.java

@@ -342,4 +342,10 @@ public interface CommonConstants {
     int APPLY_MANAGER_VERIFY_SUCCESS = 2;// 负责人审批中
     int FIRST_PROCESSING_VERIFYING = 11;// 申请人费用审批中
     int SECOND_PROCESSING_VERIFYING = 15; // 验收审批中
+
+    int APPLY_MANAGER_VERIFY_BACK = 4; // 申请部门主管审核退回
+    int APPLY_LEADER_VERIFY_BACK = 7; // 申请部门负责人审核回退
+    int RECEIVE_VERIFY_BACK = 10; // 收件负责人回退
+    int FIRST_PROCESSING_VERIFY_BACK = 13; // 材料费用审核-回退
+    int SECOND_PROCESSING_BACK = 17; // 验收回退
 }

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

@@ -34,7 +34,7 @@ public enum WorkplaceBacklogDetailTypeEnum {
     SB_CALLER_REPAIR(28, "设备部报修审核"),
     SB_APPLY_BIG_REPAIR(30, "报修转大修审核"),
     PREPARATION_REPAIR(41, "筹建申请"),
-    PREPARATION_REPAIR_DISPATCH(32, "筹建报修派工通知"),
+    PREPARATION_REPAIR_DISPATCH(32, "筹建工通知"),
     OUT_STORE_NOTICE(33, "出库审批"),
     REPAIR_EXAMINE(24, "维修审核通知"),
     CHECK_RUN_EXPIRE(7, "润滑任务过期通知"),

+ 3 - 2
platform-dao/src/main/java/com/platform/dao/util/MessageTemplateUtil.java

@@ -440,13 +440,14 @@ public class MessageTemplateUtil {
     }
 
     public static String getInfoByStatus(String no,int status) {
-        if(status == PreparationStatusEnum.APPLY_MANAGER_VERIFY_SUCCESS.getValue()
+        if(status == PreparationStatusEnum.NOT_ALLOCATED.getValue() ||
+                status == PreparationStatusEnum.APPLY_MANAGER_VERIFY_SUCCESS.getValue()
                 || status == PreparationStatusEnum.APPLY_LEADER_VERIFY_SUCCESS.getValue()
                 || status == PreparationStatusEnum.PROCESSING.getValue()
         || status == PreparationStatusEnum.FIRST_PROCESSING_VERIFYING.getValue()
         || status == PreparationStatusEnum.SECOND_PROCESSING.getValue()
         || status == PreparationStatusEnum.SECOND_PROCESSING_VERIFYING.getValue()){
-            return String.format("有一条新的筹建工单【%s】待处理,请及时处理", no);
+            return String.format("筹建工单【%s】待处理,请及时处理", no);
         }else if(status == PreparationStatusEnum.CLOSE.getValue()) {
             return String.format("筹建工单【%s】被拒绝,请知悉", no);
         }else if(status == PreparationStatusEnum.APPLY_MANAGER_VERIFY_BACK.getValue()

+ 16 - 3
platform-rest/src/main/java/com/platform/rest/controller/preparation/PreparationController.java

@@ -69,11 +69,11 @@ public class PreparationController {
    * @param preparationDTO 筹建管理DTO
    * @return R
    */
-  @SysLog("修改筹建管理")
+  @SysLog("再次提交审核")
   @PutMapping("/{id}")
-  @PreAuthorize("@pms.hasPermission('preparation-preparations-edit')")
   public R update(@PathVariable("id") String id, @Validated({UpdateGroup.class}) @RequestBody PreparationDTO preparationDTO) {
-    preparationService.modModelByDTO(preparationDTO);
+    preparationDTO.setId(id);
+    preparationService.pushVerify(preparationDTO);
     return new R<>();
   }
 
@@ -163,6 +163,19 @@ public class PreparationController {
     return new R<>();
   }
 
+  /**
+   * 费用填报
+   * @param preparationDTO 维修单DTO
+   * @return R
+   */
+  @SysLog("筹建工单费用填报")
+  @PutMapping("/finish/fee/{id}")
+  public R fillFee(@PathVariable("id") String id, @Validated({UpdateGroup.class}) @RequestBody PreparationDTO preparationDTO) {
+    preparationDTO.setId(id);
+    preparationService.fillFee(preparationDTO);
+    return new R<>();
+  }
+
   /**
    * 派单
    *

+ 18 - 5
platform-service/src/main/java/com/platform/service/preparation/PreparationService.java

@@ -27,7 +27,6 @@ public interface PreparationService extends IBaseService<Preparation, Preparatio
 
     /**
      * 批量删除
-     *
      * @param ids :
      * @return :
      */
@@ -35,7 +34,6 @@ public interface PreparationService extends IBaseService<Preparation, Preparatio
 
     /**
      * 分页查询
-     *
      * @param record
      * @param pageNum
      * @param pageSize
@@ -45,7 +43,6 @@ public interface PreparationService extends IBaseService<Preparation, Preparatio
 
     /**
      * 报修生成任务
-     *
      * @param model
      * @return
      */
@@ -53,18 +50,21 @@ public interface PreparationService extends IBaseService<Preparation, Preparatio
 
     /**
      * 收件部门审核派单
-     *
      * @param model
      */
     void dispatchPreparation(PreparationDTO model);
 
     /**
      * 完成筹建维修
-     *
      * @param model
      */
     void completePreparation(PreparationDTO model);
 
+    /**
+     * 获取详情VO数据
+     * @param id
+     * @return
+     */
     PreparationVO getVOById(String id);
 
     /**
@@ -82,4 +82,17 @@ public interface PreparationService extends IBaseService<Preparation, Preparatio
      * @param model
      */
     void handleVerify(PreparationDTO model);
+
+    /**
+     * 修改提交审核
+     * @param model
+     */
+    void pushVerify(PreparationDTO model);
+
+    /**
+     * 费用填报
+     * @param model
+     */
+    void fillFee(PreparationDTO model);
+
 }

+ 158 - 15
platform-service/src/main/java/com/platform/service/preparation/impl/PreparationServiceImpl.java

@@ -288,9 +288,6 @@ public class PreparationServiceImpl extends BaseServiceImpl<PreparationMapper, P
                 statusList.add(PreparationStatusEnum.FIRST_PROCESSING_VERIFYING.getValue());
                 statusList.add(PreparationStatusEnum.SECOND_PROCESSING_VERIFYING.getValue());
             } else if (record.getSearchType() == 3) { // 我的工单
-                statusList.add(PreparationStatusEnum.NOT_ALLOCATED.getValue());
-                statusList.add(PreparationStatusEnum.PROCESSING.getValue());
-                statusList.add(PreparationStatusEnum.FINISHED.getValue());
             }
             // 超级管理员可以看到各个状态下的所有数据 相关领导,可以在这里进行设置
             if (userInfo.getSuperAdmin() == 1 || record.getSearchType() == -1) {
@@ -429,11 +426,15 @@ public class PreparationServiceImpl extends BaseServiceImpl<PreparationMapper, P
         updPre.setRepairEndTime(LocalDateTime.now());
         updPre.setRepairMinutes(DateUtils.getDurationHours(preparation.getRepairStartTime(), updPre.getRepairEndTime()));
         updPre.setStatus(PreparationStatusEnum.SECOND_PROCESSING_VERIFYING.getValue());
-        updPre.setFee(model.getFee());
-        // 保存文件图片
-        sysFileService.saveFile(model.getId(), SysFileTypeEnum.PREPARATION_APPLICATION_IMGS.getValue(), model.getImageList());
-        sysFileService.saveFile(model.getId(), SysFileTypeEnum.PREPARATION_APPLICATION_FILES.getValue(), model.getFileList());
         mapper.updateByPrimaryKeySelective(updPre);
+        // 添加状态记录
+        addRecord(updPre,PreparationRecordTypeEnum.FLOW.getValue(), "");
+        // 给申请人发消息
+        SysUserDTO sendDTO = new SysUserDTO();
+        sendDTO.setUserId(preparation.getUserId());
+        List<SysUserVO> sendUsers = sysUserMapper.getSysUserVO(sendDTO);
+        updPre.setNo(preparation.getNo());
+        sendMessageToApplyLeader(sendUsers, updPre);
     }
 
     @Override
@@ -515,7 +516,6 @@ public class PreparationServiceImpl extends BaseServiceImpl<PreparationMapper, P
         Preparation updPre = new Preparation();
         updPre.setId(preparation.getId());
         SysUserDTO queryDTO = new SysUserDTO();
-        List<SysUserVO> userVOS = ListUtils.newArrayList();
                 // 根据当前状态来区分审核权限
         switch (preparation.getStatus()) {
             case CommonConstants.PREPARATION_NOT_ALLOCATED:
@@ -533,8 +533,6 @@ public class PreparationServiceImpl extends BaseServiceImpl<PreparationMapper, P
                     updPre.setStatus(PreparationStatusEnum.CLOSE.getValue());
                     queryDTO.setUserId(preparation.getUserId());
                 }
-                // 给部门负责人发送消息
-                sysUserMapper.getSysUserVO(queryDTO);
                 break;
             case CommonConstants.APPLY_MANAGER_VERIFY_SUCCESS:
                 // 负责人审批
@@ -551,8 +549,6 @@ public class PreparationServiceImpl extends BaseServiceImpl<PreparationMapper, P
                     updPre.setStatus(PreparationStatusEnum.CLOSE.getValue());
                     queryDTO.setUserId(preparation.getApplyVerifyUserId());
                 }
-                // 给收件部门负责人发送消息
-                sysUserMapper.getSysUserVO(queryDTO);
                 break;
             case CommonConstants.FIRST_PROCESSING_VERIFYING:
                 // 申请人费用审批
@@ -568,7 +564,6 @@ public class PreparationServiceImpl extends BaseServiceImpl<PreparationMapper, P
                 }
                 // 给执行人发送消息
                 queryDTO.setUserId(preparation.getRepairUserId());
-                sysUserMapper.getSysUserVO(queryDTO);
                 break;
             case CommonConstants.SECOND_PROCESSING_VERIFYING:
                 // 申请人验收审批
@@ -584,8 +579,6 @@ public class PreparationServiceImpl extends BaseServiceImpl<PreparationMapper, P
                     updPre.setStatus(PreparationStatusEnum.CLOSE.getValue());
                     queryDTO.setUserId(preparation.getRepairUserId());
                 }
-                // 给执行人发送消息
-                sysUserMapper.getSysUserVO(queryDTO);
                 break;
 
         }
@@ -597,9 +590,159 @@ public class PreparationServiceImpl extends BaseServiceImpl<PreparationMapper, P
         // 修改进度状态
         mapper.updateByPrimaryKeySelective(updPre);
         // 发送消息
+        List<SysUserVO> userVOS = sysUserMapper.getSysUserVO(queryDTO);
         sendMessageToApplyLeader(userVOS, preparation);
     }
 
+    @Override
+    public void pushVerify(PreparationDTO model) {
+        if(StringUtils.isEmpty(model.getId())){
+            throw new DeniedException("工单ID未携带");
+        }
+        // 获取信息,根据状态判断,提交到哪个节点
+        Preparation preparation = mapper.selectByPrimaryKey(model.getId());
+        Preparation updPre = new Preparation();
+        updPre.setId(preparation.getId());
+        updPre.setName(model.getName());
+        updPre.setParentPositionId(model.getParentPositionId());
+        updPre.setPositionId(model.getPositionId());
+        updPre.setApplyTime(model.getApplyTime());
+        updPre.setLimitHours(model.getLimitHours());
+        // 审批主管变更-特殊处理
+        updPre.setApplyVerifyUserId(model.getApplyVerifyUserId());
+        // 收件部门变更-特殊处理
+        updPre.setReceiveDept(model.getReceiveDept());
+        updPre.setApplyReason(model.getApplyReason());
+        updPre.setContent(model.getContent());
+        SysUserDTO queryUserDTO = new SysUserDTO();
+        List<SysUserVO> userVOS = null;
+        // 查询发送消息用户
+        SysUserDTO sendUserDTO = new SysUserDTO();
+        switch (preparation.getStatus()){
+            case CommonConstants.APPLY_MANAGER_VERIFY_BACK:
+                // 审批主管回退
+                updPre.setStatus(PreparationStatusEnum.NOT_ALLOCATED.getValue());
+                // 收件部门变更
+                if(!updPre.getReceiveDept().equals(preparation.getReceiveDept())){
+                    queryUserDTO.setRoleCode(SysRoleCodeEnum.DEPT_LEADER.name());
+                    queryUserDTO.setDeptId(updPre.getReceiveDept());
+                    userVOS = sysUserMapper.selectDeptRoleUser(queryUserDTO);
+                    // 判断收件部门是否有负责人
+                    if (userVOS == null || userVOS.size() != 1) {
+                        throw new DeniedException("选择的收件部门,无负责人或存在多个");
+                    }
+                    updPre.setReceiveVerifyLeader(userVOS.get(0).getUserId());
+                }
+                // 给审批主管发信息
+                sendUserDTO.setUserId(updPre.getApplyVerifyUserId());
+                break;
+            case CommonConstants.APPLY_LEADER_VERIFY_BACK:
+                // 部门负责人回退
+                updPre.setStatus(PreparationStatusEnum.APPLY_MANAGER_VERIFY_SUCCESS.getValue());
+                // 审批主管变更
+                if(!updPre.getApplyVerifyUserId().equals(preparation.getApplyVerifyUserId())){
+                    throw new DeniedException("部门主管审批通过,不可以修改审批主管人选");
+                }
+                // 收件部门变更
+                if(!updPre.getReceiveDept().equals(preparation.getReceiveDept())){
+                    queryUserDTO.setRoleCode(SysRoleCodeEnum.DEPT_LEADER.name());
+                    queryUserDTO.setDeptId(updPre.getReceiveDept());
+                    userVOS = sysUserMapper.selectDeptRoleUser(queryUserDTO);
+                    // 判断收件部门是否有负责人
+                    if (userVOS == null || userVOS.size() != 1) {
+                        throw new DeniedException("选择的收件部门,无负责人或存在多个");
+                    }
+                    updPre.setReceiveVerifyLeader(userVOS.get(0).getUserId());
+                }
+                // 给部门负责人发信息
+                sendUserDTO.setUserId(updPre.getApplyVerifyLeader());
+                break;
+            case CommonConstants.RECEIVE_VERIFY_BACK:
+                // 收件部门回退
+                updPre.setStatus(PreparationStatusEnum.APPLY_LEADER_VERIFY_SUCCESS.getValue());
+                // 审批主管变更
+                if(!updPre.getApplyVerifyUserId().equals(preparation.getApplyVerifyUserId())){
+                    throw new DeniedException("单据已流转到收件部门,不可以修改审批主管人选");
+                }
+                // 收件部门变更
+                if(!updPre.getReceiveDept().equals(preparation.getReceiveDept())){
+                    queryUserDTO.setRoleCode(SysRoleCodeEnum.DEPT_LEADER.name());
+                    queryUserDTO.setDeptId(updPre.getReceiveDept());
+                    userVOS = sysUserMapper.selectDeptRoleUser(queryUserDTO);
+                    // 判断收件部门是否有负责人
+                    if (userVOS == null || userVOS.size() != 1) {
+                        throw new DeniedException("选择的收件部门,无负责人或存在多个");
+                    }
+                    updPre.setReceiveVerifyLeader(userVOS.get(0).getUserId());
+                }
+                // 给收件部门负责人发信息
+                sendUserDTO.setUserId(updPre.getReceiveVerifyLeader());
+                break;
+            case CommonConstants.FIRST_PROCESSING_VERIFY_BACK:
+                // 申请费用回退
+                updPre.setStatus(PreparationStatusEnum.FIRST_PROCESSING_VERIFYING.getValue());
+                // 审批主管变更
+                if(!updPre.getApplyVerifyUserId().equals(preparation.getApplyVerifyUserId())){
+                    throw new DeniedException("单据已流转到费用审核流程,不可以修改审批主管人选");
+                }
+                // 收件部门变更
+                if(!updPre.getReceiveDept().equals(preparation.getReceiveDept())){
+                    throw new DeniedException("单据已流转到费用审核流程,不可以修改收件部门");
+                }
+                // 给申请人发信息
+                sendUserDTO.setUserId(updPre.getUserId());
+                break;
+            case CommonConstants.SECOND_PROCESSING_BACK:
+                // 验收回退
+                updPre.setStatus(PreparationStatusEnum.SECOND_PROCESSING_VERIFYING.getValue());
+                // 审批主管变更
+                if(!updPre.getApplyVerifyUserId().equals(preparation.getApplyVerifyUserId())){
+                    throw new DeniedException("单据已流转到验收审核流程,不可以修改审批主管人选");
+                }
+                // 收件部门变更
+                if(!updPre.getReceiveDept().equals(preparation.getReceiveDept())){
+                    throw new DeniedException("单据已流转到验收审核流程,不可以修改收件部门");
+                }
+                // 给申请人发信息
+                sendUserDTO.setUserId(updPre.getUserId());
+                break;
+        }
+        // 添加状态记录
+        addRecord(updPre, PreparationRecordTypeEnum.FLOW.getValue(), "");
+        // 修改信息表
+        mapper.updateByPrimaryKeySelective(updPre);
+        // 发送消息
+        List<SysUserVO> sendUsers = sysUserMapper.getSysUserVO(sendUserDTO);
+        sendMessageToApplyLeader(sendUsers, updPre);
+    }
+
+    @Override
+    public void fillFee(PreparationDTO model) {
+        Preparation preparation = mapper.selectByPrimaryKey(model.getId());
+        String currentUserId = SecurityUtils.getUserInfo().getUserId();
+        if (!currentUserId.equals(preparation.getRepairUserId())) {
+            throw new DeniedException("不是该工单执行人,不可以填报费用");
+        }
+        Preparation updPre = new Preparation();
+        updPre.setId(model.getId());
+        updPre.setStatus(PreparationStatusEnum.FIRST_PROCESSING_VERIFYING.getValue());
+        updPre.setFee(model.getFee());
+        // 保存文件图片
+        sysFileService.saveFile(model.getId(), SysFileTypeEnum.PREPARATION_APPLICATION_IMGS.getValue(), model.getImageList());
+        sysFileService.saveFile(model.getId(), SysFileTypeEnum.PREPARATION_APPLICATION_FILES.getValue(), model.getFileList());
+        mapper.updateByPrimaryKeySelective(updPre);
+        // 添加状态记录
+        addRecord(updPre,PreparationRecordTypeEnum.FLOW.getValue(), "");
+        // 添加审核记录
+        addRecord(updPre,PreparationRecordTypeEnum.VERIFY.getValue(), "同意");
+        // 给申请人发消息
+        SysUserDTO sendDTO = new SysUserDTO();
+        sendDTO.setUserId(preparation.getUserId());
+        List<SysUserVO> sendUsers = sysUserMapper.getSysUserVO(sendDTO);
+        updPre.setNo(preparation.getNo());
+        sendMessageToApplyLeader(sendUsers, updPre);
+    }
+
     private String getParentPositionId(String positionId) {
         SbPosition sbPosition = sbPositionMapper.selectByPrimaryKey(positionId);
         while (!StringUtils.isEmpty(sbPosition.getParentId())) {