package com.fzzy.igds.app.v1.service.impl;
|
|
import com.alibaba.fastjson.JSONObject;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.fzzy.common.constant.RespCodeEnum;
|
import com.fzzy.igds.app.v1.constant.PhoneConstant;
|
import com.fzzy.igds.app.v1.data.AuthUser;
|
import com.fzzy.igds.app.v1.data.ParamOrder;
|
import com.fzzy.igds.app.v1.data.PhoneRequest;
|
import com.fzzy.igds.app.v1.data.PhoneResponse;
|
import com.fzzy.igds.app.v1.mapper.PhoneMapper;
|
import com.fzzy.igds.app.v1.service.PhoneService;
|
import com.fzzy.igds.app.v1.util.PhoneRespUtil;
|
import com.fzzy.igds.constant.Constant;
|
import com.fzzy.igds.data.BaseResp;
|
import com.fzzy.igds.utils.ContextUtil;
|
import com.fzzy.work.data.WorkNode;
|
import com.fzzy.work.data.WorkStatus;
|
import com.fzzy.work.domain.WorkOrder;
|
import com.fzzy.work.domain.WorkOrderConf;
|
import com.fzzy.work.domain.WorkOrderProcess;
|
import com.fzzy.work.mapper.WorkOrderMapper;
|
import com.fzzy.work.service.WorkOrderConfService;
|
import com.fzzy.work.service.WorkOrderProcessService;
|
import com.fzzy.work.service.WorkOrderService;
|
import com.ruoyi.common.core.domain.entity.SysUser;
|
import org.apache.commons.lang3.StringUtils;
|
import org.springframework.beans.BeanUtils;
|
import org.springframework.stereotype.Service;
|
|
import javax.annotation.Resource;
|
import java.util.Date;
|
|
/**
|
* @Author: YYC
|
* @Description: 工单管理-工单审核
|
* @DateTime: 2026-1-12 14:43
|
**/
|
@Service
|
public class ServiceImpl5102 implements PhoneService {
|
|
@Resource
|
private WorkOrderService orderService;
|
@Resource
|
private WorkOrderConfService confService;
|
@Resource
|
private WorkOrderProcessService orderProcessService;
|
|
|
@Override
|
public String getInterfaceId() {
|
return PhoneConstant.API_PHONE_5102;
|
}
|
|
@Override
|
public PhoneResponse<Object> execute(PhoneRequest<JSONObject> req, AuthUser authUser) throws Exception {
|
//转化对象
|
ParamOrder param = JSONObject.parseObject(req.getData().toString(), ParamOrder.class);
|
if (null == param) {
|
return PhoneRespUtil.error(RespCodeEnum.CODE_1111, "参数有误,请重试!!");
|
}
|
//参数验证
|
if (StringUtils.isEmpty(param.getDeptId())) {
|
return PhoneRespUtil.error(RespCodeEnum.CODE_1111, "参数有误,请重试!!");
|
}
|
//获取工单
|
WorkOrder work = orderService.selectById(param.getOrderId());
|
if (null == work) return PhoneRespUtil.error(RespCodeEnum.CODE_1111, "当前工单已不存在");
|
|
if (work.getStatus().equals(WorkStatus.STATUS_50.getCode())
|
|| work.getStatus().equals(WorkStatus.STATUS_60.getCode())) {
|
return PhoneRespUtil.error(RespCodeEnum.CODE_1111, "当前工单已处理,请刷新页面重试!!");
|
}
|
WorkOrderProcess process = new WorkOrderProcess();
|
BeanUtils.copyProperties(param, process);
|
//判断是不是指定处理人
|
if (StringUtils.isNotEmpty(work.getAssigneeId())) {
|
if (!work.getAssigneeId().equals(authUser.getUsername())) {
|
return PhoneRespUtil.error(RespCodeEnum.CODE_1111, "当前工单已分配其他人处理,请勿处理");
|
}
|
}
|
|
String curNode = process.getNode();
|
//获取处理人
|
if (!curNode.equals(work.getNode())) {
|
return PhoneRespUtil.error(RespCodeEnum.CODE_1111, "当前工单已被处理,请刷新页面重试!!");
|
}
|
|
//获取配置信息
|
WorkOrderConf conf = confService.selectById(work.getConfId());
|
if (null == conf) PhoneRespUtil.error(RespCodeEnum.CODE_1111, "当前工单未配置流程");
|
|
|
//添加记录
|
process.setId(ContextUtil.UUID());
|
process.setCreateTime(new Date());
|
process.setOrderId(work.getId());
|
process.setAssigneeName(authUser.getCname());
|
process.setAssigneeId(authUser.getUsername());
|
|
WorkNode nextNode = this.getNextNode(work.getNode(), conf);
|
|
//通过操作
|
if ("pass".equals(param.getStatus())) {
|
process.setAction("通过");
|
process.setNode(work.getNode());
|
//结束判断,如果是结束节点,则结束工单
|
if (WorkNode.NODE_END.getCode().equals(nextNode.getCode())) {
|
work.setStatus(WorkStatus.STATUS_50.getCode());
|
work.setAssigneeName(process.getAssigneeName());
|
work.setAssigneeId(process.getAssigneeId());
|
work.setNode(nextNode.getCode());
|
orderService.complete(work);
|
} else {
|
work.setNode(nextNode.getCode());
|
work.setStatus(WorkStatus.STATUS_30.getCode());
|
orderService.updateData(work);
|
}
|
|
//增加审批记录
|
orderProcessService.addData(process, WorkNode.NODE_END.equals(nextNode));
|
return PhoneRespUtil.success(RespCodeEnum.CODE_0000.getCode(), req);
|
}
|
|
//拒绝操作
|
if ("refuse".equals(param.getStatus())) {
|
process.setAction("拒绝");
|
process.setNode(work.getNode());
|
|
work.setStatus(WorkStatus.STATUS_60.getCode());
|
|
orderService.complete(work);
|
|
//增加审批记录
|
orderProcessService.addData(process, true);
|
|
return PhoneRespUtil.success(RespCodeEnum.CODE_0000.getCode(), req);
|
}
|
|
return PhoneRespUtil.success(RespCodeEnum.CODE_0000.getCode(), req);
|
}
|
|
|
/**
|
* 根据当前节点获取下一个节点
|
*
|
* @param curNode
|
* @param conf
|
* @return
|
*/
|
private WorkNode getNextNode(String curNode, WorkOrderConf conf) {
|
|
if (null == conf) return WorkNode.NODE_END;
|
|
if (WorkNode.NODE_START.getCode().equals(curNode)) {
|
if (Constant.YN_Y.equals(conf.getNodeVal1())) return WorkNode.NODE1;
|
if (Constant.YN_Y.equals(conf.getNodeVal2())) return WorkNode.NODE2;
|
if (Constant.YN_Y.equals(conf.getNodeVal3())) return WorkNode.NODE3;
|
}
|
|
if (WorkNode.NODE1.getCode().equals(curNode)) {
|
if (Constant.YN_Y.equals(conf.getNodeVal2())) return WorkNode.NODE2;
|
if (Constant.YN_Y.equals(conf.getNodeVal3())) return WorkNode.NODE3;
|
}
|
|
if (WorkNode.NODE2.getCode().equals(curNode)) {
|
if (Constant.YN_Y.equals(conf.getNodeVal3())) return WorkNode.NODE3;
|
}
|
|
return WorkNode.NODE_END;
|
}
|
}
|