Commit 188cb5db by xieshaohua

[修改]流程环节修改

parent 2e5ed1a1
package com.keymobile.governworkorder.common.bo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
/**
* @author xiesh
* @version 1.0.0
* @date 2025/8/14
* @desc 流程审批信息
*/
@Data
@Schema(description = "流程")
public class WorkOrderStageVO {
@Schema(description = "id")
private String name;
/**
* 处理人账号
*/
@Schema(description = "处理人账号")
private String userName;
/**
* 处理人展示名
*/
@Schema(description = "处理人展示名")
private String userDname;
/**
* 创建时间
*/
@Schema(description = "createTime")
private String createTime;
/**
* 是否当前流程
*/
@Schema(description = "是否当前流程")
private boolean isCurrent;
/**
* 是否已经处理
*/
@Schema(description = "是否已经处理")
private boolean isHandle;
}
......@@ -11,8 +11,8 @@ public enum OrderProcessStageTypeEnum {
PROCESS_CREATE("发起"),
PROCESS_HANDLER("处理"),
PROCESS_APPROVER("审批"),
PROCESS_DONE("关闭"),
PROCESS_INVALIDATE("失效");
PROCESS_DONE("关闭");
// PROCESS_INVALIDATE("失效");
public String getName() {
return name;
......@@ -32,4 +32,6 @@ public enum OrderProcessStageTypeEnum {
this.name = name;
}
}
......@@ -3,6 +3,7 @@ package com.keymobile.governworkorder.core.api;
import com.keymobile.governworkorder.common.bo.WorkOrderDataVO;
import com.keymobile.governworkorder.common.bo.WorkOrderInfoVO;
import com.keymobile.governworkorder.common.bo.WorkOrderProcessVO;
import com.keymobile.governworkorder.common.bo.WorkOrderStageVO;
import com.keymobile.governworkorder.core.dto.WorkOrdeQueryDto;
import com.keymobile.governworkorder.core.dto.WorkOrderConfirmDataDto;
import com.keymobile.governworkorder.core.remote.user.User;
......@@ -10,7 +11,6 @@ import com.keymobile.governworkorder.core.service.WorkOrderService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.web.bind.annotation.*;
......@@ -112,4 +112,10 @@ public class WorkOrderApi {
return workOrderService.findUser(types, dataRoleIds, match, userGroupIds);
}
@GetMapping(value = "/stages")
@Operation(summary = "流程流转", description = "")
List<WorkOrderStageVO> stages(@RequestParam String workOrderId){
return workOrderService.stages(workOrderId);
}
}
......@@ -3,6 +3,7 @@ package com.keymobile.governworkorder.core.service;
import com.keymobile.governworkorder.common.bo.WorkOrderDataVO;
import com.keymobile.governworkorder.common.bo.WorkOrderInfoVO;
import com.keymobile.governworkorder.common.bo.WorkOrderProcessVO;
import com.keymobile.governworkorder.common.bo.WorkOrderStageVO;
import com.keymobile.governworkorder.core.dto.WorkOrdeQueryDto;
import com.keymobile.governworkorder.core.dto.WorkOrderConfirmDataDto;
import com.keymobile.governworkorder.core.remote.user.User;
......@@ -41,4 +42,6 @@ public interface WorkOrderService {
List<User> findUser(String[] types, Long[] dataRoleIds, String match, Long[] userGroupIds);
List<WorkOrderStageVO> stages(String workOrderId);
}
......@@ -3,6 +3,7 @@ package com.keymobile.governworkorder.core.service.impl;
import com.keymobile.governworkorder.common.bo.WorkOrderDataVO;
import com.keymobile.governworkorder.common.bo.WorkOrderInfoVO;
import com.keymobile.governworkorder.common.bo.WorkOrderProcessVO;
import com.keymobile.governworkorder.common.bo.WorkOrderStageVO;
import com.keymobile.governworkorder.common.type.*;
import com.keymobile.governworkorder.core.dto.WorkOrdeQueryDto;
import com.keymobile.governworkorder.core.dto.WorkOrderConfirmDataDto;
......@@ -24,6 +25,7 @@ import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
......@@ -34,9 +36,7 @@ import org.springframework.util.CollectionUtils;
import java.time.LocalDate;
import java.time.ZoneId;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.*;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
......@@ -401,11 +401,12 @@ public class WorkOrderServiceImpl implements WorkOrderService {
mongoTemplate.save(process);
mongoTemplate.save(workOrder);
} else {
//驳回 工单完成,但是发失效消息
process.setNextUserName(null);
process.setNextUserDname(null);
workOrder.setNextUserName(null);
workOrder.setNextUserDname(null);
workOrder.setStage(OrderProcessStageTypeEnum.PROCESS_INVALIDATE.getName());
workOrder.setStage(OrderProcessStageTypeEnum.PROCESS_DONE.getName());
workOrder.setStatus(OrderStatusTypeEnum.STATUS_INVALIDATE.getName());
mongoTemplate.save(process);
mongoTemplate.save(workOrder);
......@@ -453,6 +454,50 @@ public class WorkOrderServiceImpl implements WorkOrderService {
}
@Override
public List<WorkOrderStageVO> stages(String workOrderId) {
List<WorkOrderStageVO> result = new ArrayList<>();
WorkOrderInfo workOrder = mongoTemplate.findById(workOrderId, WorkOrderInfo.class);
Assert.notNull(workOrder, "找不到对应工单");
String stage = workOrder.getStage();
Query query = Query.query(Criteria.where("workOrderId").is(workOrderId));
query.with(Sort.by(Sort.Direction.DESC, "createTime"));
List<WorkOrderProcess> processList = mongoTemplate.find(query, WorkOrderProcess.class);
boolean handle = true;
for (OrderProcessStageTypeEnum item : OrderProcessStageTypeEnum.values()) {
WorkOrderStageVO vo = new WorkOrderStageVO();
String itemName = item.getName();
vo.setName(itemName);
if (StringUtils.equals(stage, itemName)) {
vo.setUserName(workOrder.getNextUserName());
vo.setUserDname(workOrder.getNextUserDname());
vo.setCurrent(true);
vo.setHandle(false);
handle = false;
} else if (handle) {
vo.setCurrent(false);
vo.setHandle(handle);
if (!CollectionUtils.isEmpty(processList)) {
WorkOrderProcess process = processList.stream().filter(e -> StringUtils.equals(e.getStage(), itemName))
.findFirst().orElse(null);
if (process != null) {
vo.setUserName(process.getUserName());
vo.setUserDname(process.getUserDname());
vo.setCreateTime(process.getCreateTime());
}
}
} else {
vo.setCurrent(false);
vo.setHandle(handle);
}
result.add(vo);
}
return result;
}
private void validateAndFillWorkOrder(WorkOrderInfo workOrder) {
if (StringUtils.isBlank(workOrder.getHandleUserName())) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment