瀏覽代碼

Merge remote-tracking branch 'origin/master'

ljy121 1 年之前
父節點
當前提交
b79d40053f

+ 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("执行事件出错,请联系管理员!");
+        }
+    }
+}

+ 88 - 13
zjugis-business/src/main/java/com/zjugis/business/flow/leave/event/LeaveEvent.java

@@ -8,8 +8,12 @@ import com.zjugis.business.flow.leave.service.LeaveService;
 import com.zjugis.business.flow.leave.service.LeaveTimeService;
 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 com.zjugis.module.system.api.permission.RoleApi;
+import com.zjugis.module.system.api.permission.dto.RoleRespDto;
+import com.zjugis.module.system.api.user.AdminUserApi;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -19,10 +23,9 @@ 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;
+import java.util.*;
+
+import static com.zjugis.framework.common.util.collection.CollectionUtils.convertSet;
 
 /**
  * @Author 陈俊
@@ -41,6 +44,10 @@ public class LeaveEvent extends BaseController {
     private LeaveTimeService leaveTimeService;
     @Resource
     private AttendanceSheetApi attendanceSheetApi;
+    @Resource
+    private WorkflowClient workflowClient;
+    @Resource
+    private RoleApi roleApi;
 
     /**
      * 设置流程描述
@@ -56,17 +63,19 @@ public class LeaveEvent extends BaseController {
                 String flowInstanceId = activityInstance.get("flowInstanceId").toString();
                 LeaveDO entity = leaveService.findByInstanceId(flowInstanceId);
                 String flowDesc = "";
-                if (!Strings.isNullOrEmpty(entity.getDeptName())) {
-                    flowDesc += "/" + entity.getDeptName();
-                }
                 if (!Strings.isNullOrEmpty(entity.getUserNickname())) {
                     flowDesc += "/" + entity.getUserNickname();
                 }
-
+                if (!Strings.isNullOrEmpty(entity.getLeaveHours().toString())) {
+                    flowDesc += "/" + entity.getLeaveHours().toString();
+                }
+                if (!Strings.isNullOrEmpty(entity.getLeaveReason())) {
+                    flowDesc += "/" + entity.getLeaveReason();
+                }
                 entity.setFlowStatus(1);
                 leaveService.updateLeave(LeaveConvert.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("执行事件出错,请联系管理员!");
@@ -198,8 +207,23 @@ public class LeaveEvent extends BaseController {
         try {
             String flowInstanceId = flowInstance.get("id").toString();
             LeaveDO entity = leaveService.findByInstanceId(flowInstanceId);
-            if(entity != null && entity.getLeaveHours() != null
-                    && entity.getLeaveHours() > (7.5*3)){
+            if (entity != null && entity.getLeaveHours() != null
+                    && entity.getLeaveHours() > (7.5 * 3)) {
+                return "true";
+            }
+            return "false";
+        } catch (Exception ex) {
+            return error(ex.getMessage(), ErrorCode.DEFAULT);
+        }
+    }
+
+    @PostMapping("/le3")
+    public String le3(@ParamModel Map flowInstance, @ParamModel Map flowDirectionInstance, @ParamModel Map previousActivityInstance, @ParamModel Map previousGatewayInstance, @ParamModel Map nextActivityTemplate, @ParamModel Map nextGatewayInstance) {
+        try {
+            String flowInstanceId = flowInstance.get("id").toString();
+            LeaveDO entity = leaveService.findByInstanceId(flowInstanceId);
+            if (entity != null && entity.getLeaveHours() != null
+                    && entity.getLeaveHours() <= (7.5 * 3)) {
                 return "true";
             }
             return "false";
@@ -213,8 +237,59 @@ public class LeaveEvent extends BaseController {
         try {
             String flowInstanceId = flowInstance.get("id").toString();
             LeaveDO entity = leaveService.findByInstanceId(flowInstanceId);
-            if(entity != null && entity.getLeaveHours() != null
-                    && entity.getLeaveHours() > (7.5*7)){
+            if (entity != null && entity.getLeaveHours() != null
+                    && entity.getLeaveHours() > (7.5 * 7)) {
+                return "true";
+            }
+            return "false";
+        } catch (Exception ex) {
+            return error(ex.getMessage(), ErrorCode.DEFAULT);
+        }
+    }
+
+    @PostMapping("/le7")
+    public String le7(@ParamModel Map flowInstance, @ParamModel Map flowDirectionInstance, @ParamModel Map previousActivityInstance, @ParamModel Map previousGatewayInstance, @ParamModel Map nextActivityTemplate, @ParamModel Map nextGatewayInstance) {
+        try {
+            String flowInstanceId = flowInstance.get("id").toString();
+            LeaveDO entity = leaveService.findByInstanceId(flowInstanceId);
+            if (entity != null && entity.getLeaveHours() != null
+                    && entity.getLeaveHours() <= (7.5 * 7)) {
+                return "true";
+            }
+            return "false";
+        } catch (Exception ex) {
+            return error(ex.getMessage(), ErrorCode.DEFAULT);
+        }
+    }
+
+    @PostMapping("/managerGt3")
+    public String managerGt3(@ParamModel Map flowInstance, @ParamModel Map flowDirectionInstance, @ParamModel Map previousActivityInstance, @ParamModel Map previousGatewayInstance, @ParamModel Map nextActivityTemplate, @ParamModel Map nextGatewayInstance) {
+        try {
+            String flowInstanceId = flowInstance.get("id").toString();
+            LeaveDO entity = leaveService.findByInstanceId(flowInstanceId);
+            List<RoleRespDto> roleList = roleApi.getRoleByUser(entity.getUserId()).getCheckedData();
+            Set<String> roleName = convertSet(roleList, RoleRespDto::getName);
+            Double leaveHours = entity.getLeaveHours();
+            if (roleName.contains("测试部门经理") && entity != null && leaveHours != null
+                    && leaveHours > (7.5 * 3)) {
+                return "true";
+            }
+            return "false";
+        } catch (Exception ex) {
+            return error(ex.getMessage(), ErrorCode.DEFAULT);
+        }
+    }
+
+    @PostMapping("/managerLe3")
+    public String managerLe3(@ParamModel Map flowInstance, @ParamModel Map flowDirectionInstance, @ParamModel Map previousActivityInstance, @ParamModel Map previousGatewayInstance, @ParamModel Map nextActivityTemplate, @ParamModel Map nextGatewayInstance) {
+        try {
+            String flowInstanceId = flowInstance.get("id").toString();
+            LeaveDO entity = leaveService.findByInstanceId(flowInstanceId);
+            List<RoleRespDto> roleList = roleApi.getRoleByUser(entity.getUserId()).getCheckedData();
+            Set<String> roleName = convertSet(roleList, RoleRespDto::getName);
+            Double leaveHours = entity.getLeaveHours();
+            if (roleName.contains("测试部门经理") && entity != null && leaveHours != null
+                    && leaveHours <= (7.5 * 3)) {
                 return "true";
             }
             return "false";

+ 2 - 1
zjugis-business/src/main/java/com/zjugis/business/framework/rpc/config/RpcSystemConfiguration.java

@@ -4,6 +4,7 @@ import com.zjugis.module.adm.api.attendance.AttendanceSheetApi;
 import com.zjugis.module.system.api.company.CompanyApi;
 import com.zjugis.module.system.api.dept.DeptApi;
 import com.zjugis.module.system.api.dict.DictDataApi;
+import com.zjugis.module.system.api.permission.RoleApi;
 import com.zjugis.module.system.api.user.AdminUserApi;
 import org.springframework.cloud.openfeign.EnableFeignClients;
 import org.springframework.context.annotation.Configuration;
@@ -14,6 +15,6 @@ import org.springframework.context.annotation.Configuration;
  * @Version 1.0
  */
 @Configuration(proxyBeanMethods = false)
-@EnableFeignClients(clients = {AdminUserApi.class, DeptApi.class, DictDataApi.class, AttendanceSheetApi.class, CompanyApi.class})
+@EnableFeignClients(clients = {AdminUserApi.class, DeptApi.class, DictDataApi.class, AttendanceSheetApi.class, CompanyApi.class, RoleApi.class})
 public class RpcSystemConfiguration {
 }

+ 2 - 0
zjugis-module-adm/zjugis-module-adm-biz/src/main/java/com/zjugis/module/adm/service/attendance/AttendanceSheetServiceImpl.java

@@ -251,6 +251,8 @@ public class AttendanceSheetServiceImpl implements AttendanceSheetService {
         attendanceSheetMapper.deleteList(year, month, day);
         attendanceSheetMapper.insertBatch(attendanceSheetDOList);
         //删除重复记录
+        deleteDuplicateRecord(year, month, day, ATTENDANCE_TYPE_AM);
+        deleteDuplicateRecord(year, month, day, ATTENDANCE_TYPE_PM);
     }
 
     @Transactional(rollbackFor = Exception.class)