|
|
@@ -4,12 +4,14 @@ import cn.hutool.core.collection.CollUtil;
|
|
|
import cn.hutool.core.lang.Assert;
|
|
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
|
|
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
|
|
+import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
|
|
|
import cn.iocoder.yudao.module.iscs.controller.admin.jobticket.vo.*;
|
|
|
import cn.iocoder.yudao.module.iscs.dal.dataobject.jobticket.*;
|
|
|
import cn.iocoder.yudao.module.iscs.dal.dataobject.sop.*;
|
|
|
import cn.iocoder.yudao.module.iscs.dal.dataobject.workflow.WorkflowModeDO;
|
|
|
import cn.iocoder.yudao.module.iscs.dal.mysql.jobticket.JobTicketMapper;
|
|
|
import cn.iocoder.yudao.module.iscs.enums.JobStatusEnum;
|
|
|
+import cn.iocoder.yudao.module.iscs.enums.JobUserEnum;
|
|
|
import cn.iocoder.yudao.module.iscs.service.sop.*;
|
|
|
import cn.iocoder.yudao.module.iscs.service.workflow.WorkflowModeService;
|
|
|
import cn.iocoder.yudao.module.system.service.attribute.AttributeService;
|
|
|
@@ -22,10 +24,13 @@ import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
import org.springframework.validation.annotation.Validated;
|
|
|
|
|
|
+import java.time.LocalDateTime;
|
|
|
+import java.time.format.DateTimeFormatter;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.List;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
+
|
|
|
/**
|
|
|
* 作业票 Service 实现类
|
|
|
*
|
|
|
@@ -220,11 +225,11 @@ public class JobTicketServiceImpl extends ServiceImpl<JobTicketMapper, JobTicket
|
|
|
for (JobTicketGroupRespVO groupRespVO : bean.getTicketGroupList()) {
|
|
|
List<JobTicketPointsRespVO> list = ticketPointsRespVOList.stream().filter(o -> o.getGroupId().equals(groupRespVO.getId())).toList();
|
|
|
// 待锁定
|
|
|
- int waitLock = (int)list.stream().filter(o -> StringUtils.isBlank(o.getPointStatus()) || o.getPointStatus().equals("0")).count();
|
|
|
+ int waitLock = (int) list.stream().filter(o -> StringUtils.isBlank(o.getPointStatus()) || o.getPointStatus().equals("0")).count();
|
|
|
// 已锁定
|
|
|
- int locked = (int)list.stream().filter(o -> StringUtils.isNotBlank(o.getPointStatus()) && o.getPointStatus().equals("1")).count();
|
|
|
+ int locked = (int) list.stream().filter(o -> StringUtils.isNotBlank(o.getPointStatus()) && o.getPointStatus().equals("1")).count();
|
|
|
// 已解锁
|
|
|
- int unlocked = (int)list.stream().filter(o -> StringUtils.isNotBlank(o.getPointStatus()) && o.getPointStatus().equals("2")).count();
|
|
|
+ int unlocked = (int) list.stream().filter(o -> StringUtils.isNotBlank(o.getPointStatus()) && o.getPointStatus().equals("2")).count();
|
|
|
// 组装数据
|
|
|
groupRespVO.setTicketPointsRespVOList(list);
|
|
|
groupRespVO.setWaitLock(waitLock);
|
|
|
@@ -521,4 +526,426 @@ public class JobTicketServiceImpl extends ServiceImpl<JobTicketMapper, JobTicket
|
|
|
return BeanUtils.toBean(list, JobTicketRespVO.class);
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public MyAgentRespVO getMyAgent(String startTime, String endTime) {
|
|
|
+ MyAgentVO myAgentVO1 = new MyAgentVO();
|
|
|
+ myAgentVO1.setTicketId(130L);
|
|
|
+ myAgentVO1.setTicketName("测试作业");
|
|
|
+
|
|
|
+ myAgentVO1.setTicketStatus("1");
|
|
|
+ myAgentVO1.setStepId(1L);
|
|
|
+ myAgentVO1.setStepIndex(1);
|
|
|
+ myAgentVO1.setIsCurrentStep(true);
|
|
|
+ myAgentVO1.setTodoTitle("结束作业");
|
|
|
+ // myAgentVO.setTodoContent();
|
|
|
+ myAgentVO1.setTodoType("END");
|
|
|
+ // myAgentVO.setTodoStatus();
|
|
|
+ myAgentVO1.setStepStatus(1);
|
|
|
+ myAgentVO1.setStepUpdateTime(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").format(LocalDateTime.now()));
|
|
|
+ myAgentVO1.setGroupId(1L);
|
|
|
+ myAgentVO1.setGroupName("默认分组1");
|
|
|
+ myAgentVO1.setCurrentStepName("1-启动上锁");
|
|
|
+ myAgentVO1.setCurrentOperateName("");
|
|
|
+ /*MyAgentVO myAgentVO1 = new MyAgentVO();
|
|
|
+ myAgentVO1.setTicketId(130L);
|
|
|
+ myAgentVO1.setTicketName("测试作业");
|
|
|
+
|
|
|
+ myAgentVO1.setTicketStatus("1");
|
|
|
+ myAgentVO1.setStepId(1L);
|
|
|
+ myAgentVO1.setStepIndex(1);
|
|
|
+ myAgentVO1.setIsCurrentStep(true);
|
|
|
+ myAgentVO1.setTodoTitle("启动上锁");
|
|
|
+ // myAgentVO.setTodoContent();
|
|
|
+ myAgentVO1.setTodoType("LOCK");
|
|
|
+ // myAgentVO.setTodoStatus();
|
|
|
+ myAgentVO1.setStepStatus(1);
|
|
|
+ myAgentVO1.setStepUpdateTime(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").format(LocalDateTime.now()));
|
|
|
+ myAgentVO1.setGroupId(1L);
|
|
|
+ myAgentVO1.setGroupName("默认分组1");
|
|
|
+ myAgentVO1.setCurrentStepName("1-启动上锁");
|
|
|
+ myAgentVO1.setCurrentOperateName("");*/
|
|
|
+
|
|
|
+ MyAgentVO myAgentVO2 = new MyAgentVO();
|
|
|
+ myAgentVO2.setTicketId(130L);
|
|
|
+ myAgentVO2.setTicketName("测试作业");
|
|
|
+ myAgentVO2.setTicketStatus("1");
|
|
|
+ myAgentVO2.setStepId(1L);
|
|
|
+ myAgentVO2.setStepIndex(1);
|
|
|
+ myAgentVO2.setIsCurrentStep(true);
|
|
|
+ myAgentVO2.setTodoTitle("开始共锁");
|
|
|
+ // myAgentVO.setTodoContent();
|
|
|
+ myAgentVO2.setTodoType("LOCK");
|
|
|
+ // myAgentVO.setTodoStatus();
|
|
|
+ myAgentVO2.setStepStatus(1);
|
|
|
+ myAgentVO2.setStepUpdateTime(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").format(LocalDateTime.now()));
|
|
|
+ myAgentVO2.setGroupId(1L);
|
|
|
+ myAgentVO2.setGroupName("");
|
|
|
+
|
|
|
+ // 需要我处理的
|
|
|
+ List<MyAgentVO> myAgent = new ArrayList<>();
|
|
|
+ // 等待上锁
|
|
|
+ List<MyAgentVO> waitAgent = new ArrayList<>();
|
|
|
+ waitAgent.add(myAgentVO2);
|
|
|
+ // 处理中
|
|
|
+ List<MyAgentVO> handleAgent = new ArrayList<>();
|
|
|
+ handleAgent.add(myAgentVO1);
|
|
|
+ // 已处理
|
|
|
+ List<MyAgentVO> finishAgent = new ArrayList<>();
|
|
|
+
|
|
|
+ // 1.获取当前用户信息
|
|
|
+ Long loginUserId = SecurityFrameworkUtils.getLoginUserId();
|
|
|
+ // 2.获取有没有我的当前代办作业
|
|
|
+ List<JobTicketDO> jobTicketDOS = list(Wrappers.<JobTicketDO>lambdaQuery()
|
|
|
+ .eq(JobTicketDO::getCreator, loginUserId)
|
|
|
+ .ne(JobTicketDO::getTicketStatus, "5")
|
|
|
+ .ne(JobTicketDO::getTicketStatus, "6"));
|
|
|
+ // 如果jobTicketDOS有数据,说明有需要我处理的作业
|
|
|
+ for (JobTicketDO jobTicketDO : jobTicketDOS) {
|
|
|
+ // 3.1获取作业的步骤信息,看下作业执行到了哪一步
|
|
|
+ List<JobTicketStepDO> jobTicketStepDOS = jobTicketStepService.list(Wrappers.<JobTicketStepDO>lambdaQuery()
|
|
|
+ .eq(JobTicketStepDO::getTicketId, jobTicketDO.getId())
|
|
|
+ .orderByAsc(JobTicketStepDO::getStepIndex));
|
|
|
+ // 3.2获取当前该处理的步骤
|
|
|
+ JobTicketStepDO currentStep = getCurrentStep(jobTicketStepDOS);
|
|
|
+ // 3.2.1查看当前的步骤是不是需要我确定的
|
|
|
+ if (currentStep != null) {
|
|
|
+ // 当前步骤不为空才能继续
|
|
|
+ if (currentStep.getEnableLock().equals(true)) {
|
|
|
+ // 3.3 如果开启上锁任务,检查有没有我的
|
|
|
+ List<JobTicketUserDO> jobTicketUserDOS = jobTicketUserService.list(Wrappers.<JobTicketUserDO>lambdaQuery()
|
|
|
+ .eq(JobTicketUserDO::getTicketId, jobTicketDO.getId())
|
|
|
+ .eq(JobTicketUserDO::getUserId, loginUserId)
|
|
|
+ .eq(JobTicketUserDO::getUserRole, JobUserEnum.JTLOCKER.key)
|
|
|
+ .eq(JobTicketUserDO::getUserId, loginUserId));
|
|
|
+ if (!jobTicketUserDOS.isEmpty()) {
|
|
|
+ for (JobTicketUserDO jobTicketUserDO : jobTicketUserDOS) {
|
|
|
+ MyAgentVO myAgentVO = new MyAgentVO();
|
|
|
+ myAgentVO.setTicketId(jobTicketDO.getId());
|
|
|
+ myAgentVO.setTicketName(jobTicketDO.getTicketName());
|
|
|
+ myAgentVO.setTicketStatus(jobTicketDO.getTicketStatus());
|
|
|
+ myAgentVO.setStepId(currentStep.getId());
|
|
|
+ myAgentVO.setStepIndex(currentStep.getStepIndex());
|
|
|
+ myAgentVO.setIsCurrentStep(true);
|
|
|
+ myAgentVO.setTodoTitle(currentStep.getStepTitleShort());
|
|
|
+ // myAgentVO.setTodoContent();
|
|
|
+ myAgentVO.setTodoType("LOCK");
|
|
|
+ // myAgentVO.setTodoStatus();
|
|
|
+ myAgentVO.setStepStatus(currentStep.getStepStatus());
|
|
|
+ myAgentVO.setStepUpdateTime(currentStep.getUpdateTime() != null ? DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").format(currentStep.getUpdateTime()) : null);
|
|
|
+ myAgentVO.setGroupId(jobTicketUserDO.getId());
|
|
|
+ if (jobTicketUserDO.getGroupId() != null) {
|
|
|
+ JobTicketGroupDO jobTicketGroupDO = jobTicketGroupService.getById(jobTicketUserDO.getGroupId());
|
|
|
+ if (jobTicketGroupDO != null) {
|
|
|
+ myAgentVO.setGroupName(jobTicketGroupDO.getGroupName());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ myAgentVO.setCurrentStepName(currentStep.getStepIndex() + currentStep.getStepTitleShort());
|
|
|
+ myAgent.add(myAgentVO);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (currentStep.getEnableColock().equals(true)) {
|
|
|
+ // 3.4 如果开启共锁任务,检查有没有我的
|
|
|
+ List<JobTicketUserDO> jobTicketUserDOS = jobTicketUserService.list(Wrappers.<JobTicketUserDO>lambdaQuery()
|
|
|
+ .eq(JobTicketUserDO::getTicketId, jobTicketDO.getId())
|
|
|
+ .eq(JobTicketUserDO::getUserId, loginUserId)
|
|
|
+ .eq(JobTicketUserDO::getUserRole, JobUserEnum.JTCOLOCKER.key)
|
|
|
+ .eq(JobTicketUserDO::getUserId, loginUserId));
|
|
|
+ if (!jobTicketUserDOS.isEmpty()) {
|
|
|
+ for (JobTicketUserDO jobTicketUserDO : jobTicketUserDOS) {
|
|
|
+ MyAgentVO myAgentVO = new MyAgentVO();
|
|
|
+ myAgentVO.setTicketId(jobTicketDO.getId());
|
|
|
+ myAgentVO.setTicketName(jobTicketDO.getTicketName());
|
|
|
+ myAgentVO.setTicketStatus(jobTicketDO.getTicketStatus());
|
|
|
+ myAgentVO.setStepId(currentStep.getId());
|
|
|
+ myAgentVO.setStepIndex(currentStep.getStepIndex());
|
|
|
+ myAgentVO.setIsCurrentStep(true);
|
|
|
+ myAgentVO.setTodoTitle(currentStep.getStepTitleShort());
|
|
|
+ // myAgentVO.setTodoContent();
|
|
|
+ myAgentVO.setTodoType("COLOCK");
|
|
|
+ // myAgentVO.setTodoStatus();
|
|
|
+ myAgentVO.setStepStatus(currentStep.getStepStatus());
|
|
|
+ myAgentVO.setStepUpdateTime(currentStep.getUpdateTime() != null ? DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").format(currentStep.getUpdateTime()) : null);
|
|
|
+ myAgentVO.setGroupId(jobTicketUserDO.getId());
|
|
|
+ // 共锁没有分组区分
|
|
|
+ /*if (jobTicketUserDO.getGroupId() != null) {
|
|
|
+ JobTicketGroupDO jobTicketGroupDO = jobTicketGroupService.getById(jobTicketUserDO.getGroupId());
|
|
|
+ if (jobTicketGroupDO != null) {
|
|
|
+ myAgentVO.setGroupName(jobTicketGroupDO.getGroupName());
|
|
|
+ }
|
|
|
+ }*/
|
|
|
+ myAgentVO.setCurrentStepName(currentStep.getStepIndex() + currentStep.getStepTitleShort());
|
|
|
+ myAgent.add(myAgentVO);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (currentStep.getEnableReleaseColock().equals(true)) {
|
|
|
+ // 3.5 如果开启解除共锁任务,检查有没有我的
|
|
|
+ List<JobTicketUserDO> jobTicketUserDOS = jobTicketUserService.list(Wrappers.<JobTicketUserDO>lambdaQuery()
|
|
|
+ .eq(JobTicketUserDO::getTicketId, jobTicketDO.getId())
|
|
|
+ .eq(JobTicketUserDO::getUserId, loginUserId)
|
|
|
+ .eq(JobTicketUserDO::getUserRole, JobUserEnum.JTCOLOCKER.key)
|
|
|
+ .eq(JobTicketUserDO::getUserId, loginUserId));
|
|
|
+ if (!jobTicketUserDOS.isEmpty()) {
|
|
|
+ for (JobTicketUserDO jobTicketUserDO : jobTicketUserDOS) {
|
|
|
+ MyAgentVO myAgentVO = new MyAgentVO();
|
|
|
+ myAgentVO.setTicketId(jobTicketDO.getId());
|
|
|
+ myAgentVO.setTicketName(jobTicketDO.getTicketName());
|
|
|
+ myAgentVO.setTicketStatus(jobTicketDO.getTicketStatus());
|
|
|
+ myAgentVO.setStepId(currentStep.getId());
|
|
|
+ myAgentVO.setStepIndex(currentStep.getStepIndex());
|
|
|
+ myAgentVO.setIsCurrentStep(true);
|
|
|
+ myAgentVO.setTodoTitle(currentStep.getStepTitleShort());
|
|
|
+ // myAgentVO.setTodoContent();
|
|
|
+ myAgentVO.setTodoType("RELEASE_COLOCK");
|
|
|
+ // myAgentVO.setTodoStatus();
|
|
|
+ myAgentVO.setStepStatus(currentStep.getStepStatus());
|
|
|
+ myAgentVO.setStepUpdateTime(currentStep.getUpdateTime() != null ? DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").format(currentStep.getUpdateTime()) : null);
|
|
|
+ myAgentVO.setGroupId(jobTicketUserDO.getId());
|
|
|
+ // 共锁没有分组区分
|
|
|
+ /*if (jobTicketUserDO.getGroupId() != null) {
|
|
|
+ JobTicketGroupDO jobTicketGroupDO = jobTicketGroupService.getById(jobTicketUserDO.getGroupId());
|
|
|
+ if (jobTicketGroupDO != null) {
|
|
|
+ myAgentVO.setGroupName(jobTicketGroupDO.getGroupName());
|
|
|
+ }
|
|
|
+ }*/
|
|
|
+ myAgentVO.setCurrentStepName(currentStep.getStepIndex() + currentStep.getStepTitleShort());
|
|
|
+ myAgent.add(myAgentVO);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (currentStep.getEnableUnlock().equals(true)) {
|
|
|
+ // 3.6 如果开启解除上锁任务,检查有没有我的
|
|
|
+ List<JobTicketUserDO> jobTicketUserDOS = jobTicketUserService.list(Wrappers.<JobTicketUserDO>lambdaQuery()
|
|
|
+ .eq(JobTicketUserDO::getTicketId, jobTicketDO.getId())
|
|
|
+ .eq(JobTicketUserDO::getUserId, loginUserId)
|
|
|
+ .eq(JobTicketUserDO::getUserRole, JobUserEnum.JTLOCKER.key)
|
|
|
+ .eq(JobTicketUserDO::getUserId, loginUserId));
|
|
|
+ if (!jobTicketUserDOS.isEmpty()) {
|
|
|
+ for (JobTicketUserDO jobTicketUserDO : jobTicketUserDOS) {
|
|
|
+ MyAgentVO myAgentVO = new MyAgentVO();
|
|
|
+ myAgentVO.setTicketId(jobTicketDO.getId());
|
|
|
+ myAgentVO.setTicketName(jobTicketDO.getTicketName());
|
|
|
+ myAgentVO.setTicketStatus(jobTicketDO.getTicketStatus());
|
|
|
+ myAgentVO.setStepId(currentStep.getId());
|
|
|
+ myAgentVO.setStepIndex(currentStep.getStepIndex());
|
|
|
+ myAgentVO.setIsCurrentStep(true);
|
|
|
+ myAgentVO.setTodoTitle(currentStep.getStepTitleShort());
|
|
|
+ // myAgentVO.setTodoContent();
|
|
|
+ myAgentVO.setTodoType("UNLOCK");
|
|
|
+ // myAgentVO.setTodoStatus();
|
|
|
+ myAgentVO.setStepStatus(currentStep.getStepStatus());
|
|
|
+ myAgentVO.setStepUpdateTime(currentStep.getUpdateTime() != null ? DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").format(currentStep.getUpdateTime()) : null);
|
|
|
+ myAgentVO.setGroupId(jobTicketUserDO.getId());
|
|
|
+ if (jobTicketUserDO.getGroupId() != null) {
|
|
|
+ JobTicketGroupDO jobTicketGroupDO = jobTicketGroupService.getById(jobTicketUserDO.getGroupId());
|
|
|
+ if (jobTicketGroupDO != null) {
|
|
|
+ myAgentVO.setGroupName(jobTicketGroupDO.getGroupName());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ myAgentVO.setCurrentStepName(currentStep.getStepIndex() + currentStep.getStepTitleShort());
|
|
|
+ myAgent.add(myAgentVO);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /*if (currentStep.getEnableUnlock().equals(true)) {
|
|
|
+ // 3.7 如果开启结束作业
|
|
|
+ List<JobTicketUserDO> jobTicketUserDOS = jobTicketUserService.list(Wrappers.<JobTicketUserDO>lambdaQuery()
|
|
|
+ .eq(JobTicketUserDO::getTicketId, jobTicketDO.getId())
|
|
|
+ .eq(JobTicketUserDO::getUserRole, JobUserEnum.JTLOCKER.key)
|
|
|
+ .eq(JobTicketUserDO::getUserId, loginUserId));
|
|
|
+
|
|
|
+ }*/
|
|
|
+ // 不是自动执行
|
|
|
+ if (currentStep.getConfirmType() != null
|
|
|
+ && currentStep.getConfirmType().equals(0)
|
|
|
+ // 执行人是我
|
|
|
+ && currentStep.getConfirmUser() != null
|
|
|
+ && currentStep.getConfirmUser().equals(loginUserId)) {
|
|
|
+
|
|
|
+ // 将步骤加入执行列表中
|
|
|
+ MyAgentVO myAgentVO = new MyAgentVO();
|
|
|
+ myAgentVO.setTicketId(jobTicketDO.getId());
|
|
|
+ myAgentVO.setTicketName(jobTicketDO.getTicketName());
|
|
|
+ myAgentVO.setTicketStatus(jobTicketDO.getTicketStatus());
|
|
|
+ myAgentVO.setStepId(currentStep.getId());
|
|
|
+ myAgentVO.setStepIndex(currentStep.getStepIndex());
|
|
|
+ myAgentVO.setIsCurrentStep(true);
|
|
|
+ myAgentVO.setTodoTitle(currentStep.getStepTitleShort());
|
|
|
+ // myAgentVO.setTodoContent();
|
|
|
+ myAgentVO.setTodoType("CONFIRM");
|
|
|
+ // myAgentVO.setTodoStatus();
|
|
|
+ myAgentVO.setStepStatus(currentStep.getStepStatus());
|
|
|
+ myAgentVO.setStepUpdateTime(currentStep.getUpdateTime() != null ? DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").format(currentStep.getUpdateTime()) : null);
|
|
|
+ myAgentVO.setCurrentStepName(currentStep.getStepIndex() + currentStep.getStepTitleShort());
|
|
|
+ myAgent.add(myAgentVO);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // --------------查询所有我的现在已经完成的---------------------
|
|
|
+ List<MyAgentVO> myFinish = getMyFinish(loginUserId, startTime, endTime);
|
|
|
+ finishAgent.addAll(myFinish);
|
|
|
+
|
|
|
+ MyAgentRespVO myAgentRespVO = new MyAgentRespVO();
|
|
|
+ myAgentRespVO.setWaitAgent(waitAgent);
|
|
|
+ myAgentRespVO.setHandleAgent(handleAgent);
|
|
|
+ myAgentRespVO.setFinishAgent(finishAgent);
|
|
|
+ return myAgentRespVO;
|
|
|
+ }
|
|
|
+
|
|
|
+ private List<MyAgentVO> getMyFinish(Long userId, String startTime, String endTime) {
|
|
|
+ if (StringUtils.isBlank(startTime)) {
|
|
|
+ startTime = "1990-01-01 00:00:00";
|
|
|
+ }
|
|
|
+ if (StringUtils.isBlank(endTime)) {
|
|
|
+ endTime = "3000-01-01 00:00:00";
|
|
|
+ }
|
|
|
+ ArrayList<MyAgentVO> myAgentVOS = new ArrayList<>();
|
|
|
+ // 我的已完成上锁任务,解锁任务,共锁任务,解除共锁任务
|
|
|
+ List<JobTicketUserDO> jobTicketUserDOS = jobTicketUserService.list(Wrappers.<JobTicketUserDO>lambdaQuery()
|
|
|
+ .eq(JobTicketUserDO::getUserId, userId)
|
|
|
+ .gt(JobTicketUserDO::getJobStatus, 3));
|
|
|
+ for (JobTicketUserDO jobTicketUserDO : jobTicketUserDOS) {
|
|
|
+ JobTicketDO jobTicketDO = getById(jobTicketUserDO.getTicketId());
|
|
|
+ MyAgentVO myAgentVO = new MyAgentVO();
|
|
|
+ myAgentVO.setTicketId(jobTicketDO.getId());
|
|
|
+ myAgentVO.setTicketName(jobTicketDO.getTicketName());
|
|
|
+ myAgentVO.setTicketStatus(jobTicketDO.getTicketStatus());
|
|
|
+ // myAgentVO.setStepId();
|
|
|
+ // myAgentVO.setStepIndex();
|
|
|
+ // myAgentVO.setIsCurrentStep();
|
|
|
+ if (jobTicketUserDO.getUserRole().equals(JobUserEnum.JTLOCKER.key) && jobTicketUserDO.getJobStatus().equals("4")) {
|
|
|
+ myAgentVO.setTodoTitle("完成上锁");
|
|
|
+ myAgentVO.setTodoType("LOCK");
|
|
|
+ // myAgentVO.setTodoStatus();
|
|
|
+ // myAgentVO.setCurrentStepName();
|
|
|
+ // myAgentVO.setStepStatus();
|
|
|
+ myAgentVO.setStepUpdateTime( DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").format(jobTicketUserDO.getUpdateTime()));
|
|
|
+ JobTicketGroupDO groupDO = jobTicketGroupService.getById(jobTicketUserDO.getGroupId());
|
|
|
+ myAgentVO.setGroupId(groupDO.getId());
|
|
|
+ myAgentVO.setGroupName(groupDO.getGroupName());
|
|
|
+ // myAgentVO.setCurrentOperateName();
|
|
|
+ }
|
|
|
+ if (jobTicketUserDO.getUserRole().equals(JobUserEnum.JTLOCKER.key) && jobTicketUserDO.getJobStatus().equals("5")) {
|
|
|
+ myAgentVO.setTodoTitle("完成解锁");
|
|
|
+ myAgentVO.setTodoType("UNLOCK");
|
|
|
+ // myAgentVO.setTodoStatus();
|
|
|
+ // myAgentVO.setCurrentStepName();
|
|
|
+ // myAgentVO.setStepStatus();
|
|
|
+ myAgentVO.setStepUpdateTime( DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").format(jobTicketUserDO.getUpdateTime()));
|
|
|
+ JobTicketGroupDO groupDO = jobTicketGroupService.getById(jobTicketUserDO.getGroupId());
|
|
|
+ myAgentVO.setGroupId(groupDO.getId());
|
|
|
+ myAgentVO.setGroupName(groupDO.getGroupName());
|
|
|
+ // myAgentVO.setCurrentOperateName();
|
|
|
+ }
|
|
|
+ if (jobTicketUserDO.getUserRole().equals(JobUserEnum.JTCOLOCKER.key) && jobTicketUserDO.getJobStatus().equals("4")) {
|
|
|
+ myAgentVO.setTodoTitle("完成共锁");
|
|
|
+ myAgentVO.setTodoType("COLOCK");
|
|
|
+ // myAgentVO.setTodoStatus();
|
|
|
+ // myAgentVO.setCurrentStepName();
|
|
|
+ // myAgentVO.setStepStatus();
|
|
|
+ myAgentVO.setStepUpdateTime( DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").format(jobTicketUserDO.getUpdateTime()));
|
|
|
+ JobTicketGroupDO groupDO = jobTicketGroupService.getById(jobTicketUserDO.getGroupId());
|
|
|
+ myAgentVO.setGroupId(groupDO.getId());
|
|
|
+ myAgentVO.setGroupName(groupDO.getGroupName());
|
|
|
+ // myAgentVO.setCurrentOperateName();
|
|
|
+ }
|
|
|
+ if (jobTicketUserDO.getUserRole().equals(JobUserEnum.JTCOLOCKER.key) && jobTicketUserDO.getJobStatus().equals("5")) {
|
|
|
+ myAgentVO.setTodoTitle("完成解除共锁");
|
|
|
+ myAgentVO.setTodoType("RELEASE_COLOCK");
|
|
|
+ // myAgentVO.setTodoStatus();
|
|
|
+ // myAgentVO.setCurrentStepName();
|
|
|
+ // myAgentVO.setStepStatus();
|
|
|
+ myAgentVO.setStepUpdateTime(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").format(jobTicketUserDO.getUpdateTime()));
|
|
|
+ JobTicketGroupDO groupDO = jobTicketGroupService.getById(jobTicketUserDO.getGroupId());
|
|
|
+ myAgentVO.setGroupId(groupDO.getId());
|
|
|
+ myAgentVO.setGroupName(groupDO.getGroupName());
|
|
|
+ // myAgentVO.setCurrentOperateName();
|
|
|
+ }
|
|
|
+ myAgentVOS.add(myAgentVO);
|
|
|
+ }
|
|
|
+
|
|
|
+ // ---------------------- 我处理的步骤--------------------
|
|
|
+ List<JobTicketStepDO> stepDOS = jobTicketStepService.list(Wrappers.<JobTicketStepDO>lambdaQuery()
|
|
|
+ .eq(JobTicketStepDO::getUpdater, userId)
|
|
|
+ .eq(JobTicketStepDO::getStepStatus, 1));
|
|
|
+ for (JobTicketStepDO stepDO : stepDOS) {
|
|
|
+ JobTicketDO jobTicketDO = getById(stepDO.getTicketId());
|
|
|
+ MyAgentVO myAgentVO = new MyAgentVO();
|
|
|
+ myAgentVO.setTicketId(jobTicketDO.getId());
|
|
|
+ myAgentVO.setTicketName(jobTicketDO.getTicketName());
|
|
|
+ myAgentVO.setTicketStatus(jobTicketDO.getTicketStatus());
|
|
|
+ myAgentVO.setStepId(stepDO.getId());
|
|
|
+ myAgentVO.setStepIndex(stepDO.getStepIndex());
|
|
|
+ // myAgentVO.setIsCurrentStep();
|
|
|
+ myAgentVO.setTodoTitle(stepDO.getStepTitleShort());
|
|
|
+ // myAgentVO.setTodoContent();
|
|
|
+ myAgentVO.setTodoType("CONFIRM");
|
|
|
+ myAgentVO.setTodoStatus("1");
|
|
|
+ myAgentVO.setCurrentStepName(stepDO.getStepIndex() + "-" + stepDO.getStepTitleShort());
|
|
|
+ myAgentVO.setStepStatus(stepDO.getStepStatus());
|
|
|
+ myAgentVO.setStepUpdateTime(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").format(stepDO.getUpdateTime()));
|
|
|
+ // myAgentVO.setGroupId();
|
|
|
+ // myAgentVO.setGroupName();
|
|
|
+ // myAgentVO.setCurrentOperateName();
|
|
|
+ myAgentVOS.add(myAgentVO);
|
|
|
+ }
|
|
|
+ // 进行时间排序和过滤
|
|
|
+ if (!myAgentVOS.isEmpty()) {
|
|
|
+ String finalStartTime = startTime;
|
|
|
+ String finalEndTime = endTime;
|
|
|
+ myAgentVOS.stream()
|
|
|
+ // ① 过滤无效时间和超出范围的数据
|
|
|
+ .filter(vo -> {
|
|
|
+ LocalDateTime stepTime = parseTime(vo.getStepUpdateTime());
|
|
|
+ return stepTime != null && !stepTime.isBefore(parseTime(finalStartTime)) && !stepTime.isAfter(parseTime(finalEndTime));
|
|
|
+ })
|
|
|
+ // ② 按时间倒序排序
|
|
|
+ .sorted((v1, v2) -> {
|
|
|
+ LocalDateTime t1 = parseTime(v1.getStepUpdateTime());
|
|
|
+ LocalDateTime t2 = parseTime(v2.getStepUpdateTime());
|
|
|
+ return t2.compareTo(t1); // 降序
|
|
|
+ })
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ }
|
|
|
+
|
|
|
+ return myAgentVOS;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 如果时间格式固定为 "yyyy-MM-dd HH:mm:ss"
|
|
|
+ private static final DateTimeFormatter FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
|
|
+
|
|
|
+
|
|
|
+ private LocalDateTime parseTime(String timeStr) {
|
|
|
+ try {
|
|
|
+ return LocalDateTime.parse(timeStr, FORMATTER);
|
|
|
+ } catch (Exception e) {
|
|
|
+ // 可根据需求修改行为:跳过无效记录 / 抛异常 / 日志记录
|
|
|
+ System.err.println("Invalid time format: " + timeStr);
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 根据作业步骤获取接下来需要执行的一步
|
|
|
+ *
|
|
|
+ * @param jobTicketStepDOS
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private JobTicketStepDO getCurrentStep(List<JobTicketStepDO> jobTicketStepDOS) {
|
|
|
+ for (JobTicketStepDO step : jobTicketStepDOS) {
|
|
|
+ if (step.getStepStatus() == 0) {
|
|
|
+ return step; // 返回第一个未执行的步骤
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
}
|