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 execute(PhoneRequest 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; } }