Ver código fonte

新增出差流程事件,修改考勤说明条流程事件

chenjun 1 ano atrás
pai
commit
1989a520c6

+ 7 - 4
zjugis-business/src/main/java/com/zjugis/business/flow/attendancenote/event/AttendanceNoteEvent.java

@@ -8,6 +8,7 @@ import com.zjugis.business.flow.attendancenote.service.AttendanceNoteService;
 import com.zjugis.business.flow.attendancenote.service.AttendanceNoteTimeService;
 import com.zjugis.framework.workflow.exception.BusinessException;
 import com.zjugis.framework.workflow.model.BaseController;
+import com.zjugis.framework.workflow.rpc.remote.WorkflowClient;
 import com.zjugis.framework.workflow.spring.resovler.ParamModel;
 import com.zjugis.module.adm.api.attendance.AttendanceSheetApi;
 import org.slf4j.Logger;
@@ -41,6 +42,8 @@ public class AttendanceNoteEvent extends BaseController {
     private AttendanceNoteTimeService attendanceNoteTimeService;
     @Resource
     private AttendanceSheetApi attendanceSheetApi;
+    @Resource
+    private WorkflowClient workflowClient;
 
     /**
      * 设置流程描述
@@ -56,17 +59,17 @@ public class AttendanceNoteEvent extends BaseController {
                 String flowInstanceId = activityInstance.get("flowInstanceId").toString();
                 AttendanceNoteDO entity = attendanceNoteService.findByInstanceId(flowInstanceId);
                 String flowDesc = "";
-                if (!Strings.isNullOrEmpty(entity.getDeptName())) {
-                    flowDesc += "/" + entity.getDeptName();
-                }
                 if (!Strings.isNullOrEmpty(entity.getUserNickname())) {
                     flowDesc += "/" + entity.getUserNickname();
                 }
+                if (!Strings.isNullOrEmpty(entity.getAttendanceNoteReason())) {
+                    flowDesc += "/" + entity.getAttendanceNoteReason();
+                }
 
                 entity.setFlowStatus(1);
                 attendanceNoteService.updateAttendanceNote(AttendanceNoteConvert.INSTANCE.convert(entity));
                 flowDesc = flowDesc.length() > 1 ? flowDesc.substring(1) : flowDesc;
-//                String result = E_FlowUtils.setFlowDesc(flowDesc, flowInstanceId);
+                workflowClient.saveFlowDescribe(flowInstanceId,flowDesc);
                 return ok("true");
             } else {
                 throw new BusinessException("执行事件出错,请联系管理员!");

+ 207 - 0
zjugis-business/src/main/java/com/zjugis/business/flow/businesstravel/event/TravelEvent.java

@@ -0,0 +1,207 @@
+package com.zjugis.business.flow.businesstravel.event;
+
+import com.google.common.base.Strings;
+import com.zjugis.business.converter.attendancenote.AttendanceNoteConvert;
+import com.zjugis.business.converter.businesstravel.TravelConvert;
+import com.zjugis.business.flow.attendancenote.entity.AttendanceNoteDO;
+import com.zjugis.business.flow.attendancenote.entity.AttendanceNoteTimeDO;
+import com.zjugis.business.flow.businesstravel.entity.TravelDO;
+import com.zjugis.business.flow.businesstravel.entity.TravelTimeDO;
+import com.zjugis.business.flow.businesstravel.service.TravelService;
+import com.zjugis.business.flow.businesstravel.service.TravelTimeService;
+import com.zjugis.framework.workflow.exception.BusinessException;
+import com.zjugis.framework.workflow.model.BaseController;
+import com.zjugis.framework.workflow.rpc.remote.WorkflowClient;
+import com.zjugis.framework.workflow.spring.resovler.ParamModel;
+import com.zjugis.module.adm.api.attendance.AttendanceSheetApi;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+
+/**
+ * @Author 陈俊
+ * @Date 2023/12/8 11:14
+ * @Version 1.0
+ */
+@RestController
+@RequestMapping("/travel-event")
+public class TravelEvent extends BaseController {
+    public static final Logger log = LoggerFactory.getLogger(TravelEvent.class);
+
+    @Resource
+    private TravelService travelService;
+    @Resource
+    private TravelTimeService travelTimeService;
+    @Resource
+    private AttendanceSheetApi attendanceSheetApi;
+    @Resource
+    private WorkflowClient workflowClient;
+
+
+    /**
+     * 设置流程描述
+     *
+     * @param flowInstance     流程实例
+     * @param activityInstance 活动实例
+     * @return true/false
+     */
+    @PostMapping("/setFlowDesc")
+    public String setFlowDesc(@ParamModel Map flowInstance, @ParamModel Map activityInstance) {
+        try {
+            if (!Objects.isNull(activityInstance) && activityInstance.containsKey("flowInstanceId")) {
+                String flowInstanceId = activityInstance.get("flowInstanceId").toString();
+                TravelDO entity = travelService.findByInstanceId(flowInstanceId);
+                String flowDesc = "";
+                if (!Strings.isNullOrEmpty(entity.getUserNickname())) {
+                    flowDesc += "/" + entity.getUserNickname();
+                }
+                if (!Strings.isNullOrEmpty(entity.getTravelReason())) {
+                    flowDesc += "/" + entity.getTravelReason();
+                }
+
+                entity.setFlowStatus(1);
+                travelService.updateTravel(TravelConvert.INSTANCE.convert(entity));
+                flowDesc = flowDesc.length() > 1 ? flowDesc.substring(1) : flowDesc;
+                workflowClient.saveFlowDescribe(flowInstanceId, flowDesc);
+                return ok("true");
+            } else {
+                throw new BusinessException("执行事件出错,请联系管理员!");
+            }
+        } catch (Exception e) {
+            log.error(e.getMessage(), e);
+            throw new BusinessException("执行事件出错,请联系管理员!");
+        }
+    }
+
+
+    /**
+     * 流程归档事件
+     *
+     * @param flowInstance                  流程实例
+     * @param triggerFinishActivityInstance 触发归档的结束活动实例
+     * @return
+     */
+    @PostMapping("/flowArchingEvent")
+    public String flowArchingEvent(@ParamModel Map flowInstance, @ParamModel Map triggerFinishActivityInstance) {
+        try {
+            if (!Objects.isNull(flowInstance) && flowInstance.containsKey("id")) {
+                String flowInstanceId = flowInstance.get("id").toString();
+                TravelDO entity = travelService.findByInstanceId(flowInstanceId);
+                entity.setFlowStatus(90);
+                entity.setFlowFinishtime(LocalDate.now());
+                travelService.updateTravel(TravelConvert.INSTANCE.convert(entity));
+                List<TravelTimeDO> travelTimeDOS = travelTimeService.getListByTravelId(entity.getId());
+                List<LocalDateTime[]> dateTimeList = new ArrayList<>();
+                travelTimeDOS.forEach(travelTimeDO -> {
+                    LocalDateTime[] times = new LocalDateTime[]{travelTimeDO.getStartTime(), travelTimeDO.getEndTime()};
+                    dateTimeList.add(times);
+                });
+                //修改出差申请人考勤状态和同行人考勤状态
+                attendanceSheetApi.updateByWorkflow(entity.getUserId(), 5, dateTimeList);
+                if (!Strings.isNullOrEmpty(entity.getPartners())) {
+                    String[] userIds = entity.getPartners().split(",");
+                    for (String userId : userIds) {
+                        attendanceSheetApi.updateByWorkflow(userId, 5, dateTimeList);
+                    }
+                }
+                return ok("true");
+            } else {
+                throw new BusinessException("执行事件出错,请联系管理员!");
+            }
+        } catch (Exception ex) {
+            log.error(ex.getMessage(), ex);
+            throw new BusinessException("执行事件出错,请联系管理员!");
+        }
+    }
+
+    /**
+     * 作废事件
+     *
+     * @param flowInstance     流程实例
+     * @param activityInstance 申请作废所在活动实例
+     * @param nullyApplyUserId 作废申请人ID
+     * @return
+     */
+    @PostMapping("/nullyEvent")
+    public String nullyEvent(@ParamModel Map flowInstance, @ParamModel Map activityInstance, String nullyApplyUserId) {
+        try {
+            if (!Objects.isNull(flowInstance) && flowInstance.containsKey("id")) {
+                String flowInstanceId = flowInstance.get("id").toString();
+                TravelDO entity = travelService.findByInstanceId(flowInstanceId);
+                entity.setFlowStatus(20);
+                entity.setIsvalid(0);
+                travelService.updateTravel(TravelConvert.INSTANCE.convert(entity));
+                return ok("true");
+            } else {
+                throw new BusinessException("执行事件出错,请联系管理员!");
+            }
+        } catch (Exception e) {
+            log.error(e.getMessage(), e);
+            throw new BusinessException("执行事件出错,请联系管理员!");
+        }
+    }
+
+    /**
+     * 作废恢复事件
+     *
+     * @param flowInstance      流程实例
+     * @param activityInstance  申请作废所在活动实例
+     * @param nullyApplyUserId  作废申请人ID
+     * @param nullyRecoverserId 作废恢复人ID
+     * @return
+     */
+    @PostMapping("/nullyRecoverEvent")
+    public String nullyRecoverEvent(@ParamModel Map flowInstance, @ParamModel Map activityInstance, String nullyApplyUserId, String nullyRecoverserId) {
+        try {
+            if (!Objects.isNull(flowInstance) && flowInstance.containsKey("id")) {
+                String flowInstanceId = flowInstance.get("id").toString();
+                TravelDO entity = travelService.findByInstanceId(flowInstanceId);
+                entity.setFlowStatus(1);
+                entity.setIsvalid(1);
+                travelService.updateTravel(TravelConvert.INSTANCE.convert(entity));
+                return ok("true");
+            } else {
+                throw new BusinessException("执行事件出错,请联系管理员!");
+            }
+        } catch (Exception e) {
+            log.error(e.getMessage(), e);
+            throw new BusinessException("执行事件出错,请联系管理员!");
+        }
+    }
+
+    /**
+     * 彻底作废事件
+     *
+     * @param flowInstance        流程实例
+     * @param activityInstance    申请作废所在活动实例
+     * @param nullyApplyUserId    作废申请人ID
+     * @param nullyCompleteUserId 彻底作废人ID
+     * @return
+     */
+    @PostMapping("/nullyCompleteEvent")
+    public String nullyCompleteEvent(@ParamModel Map flowInstance, @ParamModel Map activityInstance, String nullyApplyUserId, String nullyCompleteUserId) {
+        try {
+            if (!Objects.isNull(flowInstance) && flowInstance.containsKey("id")) {
+                String flowInstanceId = flowInstance.get("id").toString();
+                TravelDO entity = travelService.findByInstanceId(flowInstanceId);
+                travelService.deleteTravel(entity.getId());
+                return ok("true");
+            } else {
+                throw new BusinessException("执行事件出错,请联系管理员!");
+            }
+        } catch (Exception e) {
+            log.error(e.getMessage(), e);
+            throw new BusinessException("执行事件出错,请联系管理员!");
+        }
+    }
+}