package com.fzzy.work.service;
|
|
import com.fzzy.igds.constant.Constant;
|
import com.fzzy.igds.data.BaseResp;
|
import com.fzzy.igds.domain.InoutNoticeIn;
|
import com.fzzy.igds.domain.InoutNoticeOut;
|
import com.fzzy.igds.utils.ContextUtil;
|
import com.fzzy.work.data.OrderStatus;
|
import com.fzzy.work.data.WorkBizType;
|
import com.fzzy.work.data.WorkNode;
|
import com.fzzy.work.domain.WorkOrder;
|
import com.fzzy.work.domain.WorkOrderConf;
|
import com.fzzy.work.domain.WorkOrderProcess;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.stereotype.Service;
|
|
import javax.annotation.Resource;
|
import java.util.Date;
|
|
/**
|
* @Desc: 工单业务接口
|
* @Author: Andy.jia
|
* @Date: 2026/1/15
|
*/
|
@Slf4j
|
@Service
|
public class BizWorkService {
|
@Resource
|
private WorkOrderConfService confService;
|
@Resource
|
private WorkOrderService orderService;
|
@Resource
|
private WorkOrderProcessService orderProcessService;
|
|
|
/**
|
* 获取流程配置信息
|
* @param deptId 库区ID
|
* @param type 业务类型
|
* @return 配置信息
|
*/
|
public WorkOrderConf getConfByDeptId(String deptId, WorkBizType type) {
|
return confService.getByDeptId(deptId, type);
|
}
|
|
/**
|
*
|
* 根据出入库通知单启动审批工单
|
* @param data 出入库工单数据
|
* @return 响应结果
|
*/
|
public BaseResp startByNoticeIn(InoutNoticeIn data, WorkOrderConf conf) {
|
if (null == conf) conf = confService.getByDeptId(data.getDeptId(), WorkBizType.TYPE_10);
|
|
if (Constant.YN_N.equals(conf.getValTag())) return BaseResp.error("流程未启用");
|
|
//创建工单
|
WorkOrder work = new WorkOrder();
|
work.setId(ContextUtil.generateOrderId("RKD"));
|
work.setBizType(WorkBizType.TYPE_10.getCode());
|
work.setBusinessId(data.getId());
|
work.setBankId(data.getBankId());
|
work.setBusinessUrl("com.fzzy.igds.InoutNoticeIn-Detail.d");
|
work.setCreateTime(new Date());
|
work.setDeptId(data.getDeptId());
|
work.setCompanyId(data.getCompanyId());
|
work.setUpdateTime(new Date());
|
work.setTitle("入库通知单审批");
|
work.setConfId(conf.getId());
|
work.setStatus(OrderStatus.STATUS_30.getCode());
|
work.setReceiveTime(new Date());
|
|
String nextNode = this.getNextNode(WorkNode.NODE_START.getCode(), conf).getCode();
|
work.setNode(nextNode);
|
orderService.addData(work);
|
|
//添加记录
|
WorkOrderProcess process = new WorkOrderProcess();
|
process.setId(ContextUtil.UUID());
|
process.setAction("提交");
|
process.setCreateTime(new Date());
|
process.setOrderId(work.getId());
|
process.setAssigneeName(work.getCreateBy());
|
process.setAssigneeId(work.getCreateById());
|
process.setNode(WorkNode.NODE_START.getCode());
|
orderProcessService.addData(process);
|
|
return BaseResp.success();
|
}
|
|
/**
|
*
|
* 根据出出库通知单启动审批工单
|
* @param data 出入库工单数据
|
* @return 响应结果
|
*/
|
public BaseResp startByNoticeOut(InoutNoticeOut data, WorkOrderConf conf) {
|
if (null == conf) conf = confService.getByDeptId(data.getDeptId(), WorkBizType.TYPE_10);
|
|
if (Constant.YN_N.equals(conf.getValTag())) return BaseResp.error("流程未启用");
|
|
//创建工单
|
WorkOrder work = new WorkOrder();
|
work.setId(ContextUtil.generateOrderId("CKD"));
|
work.setBizType(WorkBizType.TYPE_20.getCode());
|
work.setBusinessId(data.getId());
|
work.setBankId(data.getBankId());
|
work.setBusinessUrl("com.fzzy.igds.InoutNoticeOut-Detail.d");
|
work.setCreateTime(new Date());
|
work.setDeptId(data.getDeptId());
|
work.setCompanyId(data.getCompanyId());
|
work.setUpdateTime(new Date());
|
work.setTitle("出库通知单审批");
|
work.setConfId(conf.getId());
|
work.setStatus(OrderStatus.STATUS_30.getCode());
|
work.setReceiveTime(new Date());
|
|
String nextNode = this.getNextNode(WorkNode.NODE_START.getCode(), conf).getCode();
|
work.setNode(nextNode);
|
orderService.addData(work);
|
|
//添加记录
|
WorkOrderProcess process = new WorkOrderProcess();
|
process.setId(ContextUtil.UUID());
|
process.setAction("提交");
|
process.setCreateTime(new Date());
|
process.setOrderId(work.getId());
|
process.setAssigneeName(work.getCreateBy());
|
process.setAssigneeId(work.getCreateById());
|
process.setNode(WorkNode.NODE_START.getCode());
|
orderProcessService.addData(process);
|
|
return BaseResp.success();
|
}
|
|
/**
|
* 根据当前节点获取下一个节点
|
* @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;
|
}
|
|
/**
|
* 获取待处理工单
|
* @return 处理结果
|
*/
|
public BaseResp todoByProcess(WorkOrderProcess data) {
|
|
log.info("-----工单处理-----{}", data);
|
//获取工单
|
WorkOrder work = orderService.selectById(data.getOrderId());
|
if (null == work) return BaseResp.error("当前工单已不存在");
|
|
String action = data.getAction();
|
//通过操作
|
if ("pass".equals(action)) {
|
|
}
|
|
//拒绝操作
|
if ("refuse".equals(action)) {
|
|
}
|
|
return BaseResp.success();
|
}
|
}
|