package com.whyc.service;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.github.pagehelper.PageHelper;
|
import com.github.pagehelper.PageInfo;
|
import com.whyc.dto.Response;
|
import com.whyc.dto.WorksheetDTO;
|
import com.whyc.mapper.WorkflowAlarmMapper;
|
import com.whyc.mapper.WorkflowLink1Mapper;
|
import com.whyc.mapper.WorkflowMain1Mapper;
|
import com.whyc.pojo.WorkflowAlarm;
|
import com.whyc.pojo.WorkflowLink;
|
import com.whyc.pojo.WorkflowMain;
|
import org.springframework.stereotype.Service;
|
|
import javax.annotation.Resource;
|
import java.text.SimpleDateFormat;
|
import java.util.Date;
|
import java.util.List;
|
|
@Service
|
public class Workflow1Service {
|
|
@Resource
|
private WorkflowMain1Mapper mainMapper;
|
@Resource
|
private WorkflowLink1Mapper linkMapper;
|
@Resource
|
private WorkflowAlarmMapper alarmMapper;
|
|
public String getOrderId() {
|
String nextSequence = "";
|
QueryWrapper<WorkflowMain> wrapper = Wrappers.query();
|
|
String orderId = "WF-2-";
|
String ymd = new SimpleDateFormat("yyyyMMdd").format(new Date());
|
orderId = orderId+ymd+"-";
|
wrapper.likeRight("order_id",orderId).orderByDesc("order_id").last(" limit 1");
|
WorkflowMain workflowMain = mainMapper.selectOne(wrapper);
|
if(workflowMain == null){
|
nextSequence="00001";
|
}else{
|
String maxSequence = workflowMain.getOrderId().split("-")[3];
|
int nextSequenceIntValue = Integer.parseInt(maxSequence) + 1;
|
nextSequence = String.format("%05d", nextSequenceIntValue);
|
}
|
return orderId+nextSequence;
|
}
|
|
public Response add(WorkflowMain main){
|
main.setCreateTime(new Date());
|
main.setStatus(0);
|
String orderId = getOrderId();
|
main.setOrderId(orderId);
|
main.setAuto(0);
|
mainMapper.insert(main);
|
//T0处理
|
WorkflowLink link = main.getLinkList().get(0);
|
link.setMainId(main.getId());
|
link.setProcessLevel("T0");
|
link.setProcessLevelName("工单派发");
|
link.setStatus(0);
|
link.setDealType(0);
|
link.setDealDesc("派单给T1");
|
link.setCreateTime(new Date());
|
linkMapper.insert(link);
|
return new Response().setII(1,"添加成功");
|
}
|
|
public PageInfo<WorksheetDTO> getWorksheetList(int pageNum, int pageSize, WorksheetDTO worksheetDto){
|
PageHelper.startPage(pageNum,pageSize);
|
QueryWrapper<WorksheetDTO> queryWrapper = new QueryWrapper();
|
queryWrapper.eq("l.deal_user_id",worksheetDto.getDealUserId());
|
if("待处理".equals(worksheetDto.getFlag())) {
|
queryWrapper.in("l.status", new int[]{0, 1, 3, 4});
|
}else if ("已处理".equals(worksheetDto.getFlag())){
|
queryWrapper.eq("l.status",5);
|
}else{//已归档 撤销先不做
|
queryWrapper.eq("m.status",5);
|
}
|
if (worksheetDto.getTitle()!=null&&worksheetDto.getTitle()!=""){
|
queryWrapper.like("m.title",worksheetDto.getTitle());
|
}
|
queryWrapper.like(worksheetDto.getTitle()!=null,"m.title",worksheetDto.getTitle());
|
queryWrapper.ge(worksheetDto.getStartTime()!=null,"m.create_time",worksheetDto.getStartTime())
|
.le(worksheetDto.getEndTime()!=null,"m.create_time",worksheetDto.getEndTime());
|
|
List<WorksheetDTO> list = mainMapper.getWorkFlowByPage(queryWrapper);
|
PageInfo<WorksheetDTO> pageInfo = new PageInfo<>(list);
|
return pageInfo;
|
}
|
|
public WorkflowMain getOneById(Integer id){
|
WorkflowMain main = mainMapper.selectById(id);
|
//关联link表
|
QueryWrapper linkWrapper = Wrappers.query();
|
linkWrapper.eq("main_id",main.getId());
|
List<WorkflowLink> links = linkMapper.selectList(linkWrapper);
|
main.setLinkList(links);
|
//关联告警
|
WorkflowAlarm alarm = alarmMapper.selectById(main.getAlarmOrderId());
|
main.setWorkflowAlarm(alarm);
|
return main;
|
}
|
|
/**
|
* main_status 0:自动派单,2:人工派单,3:工单T1处理中,4:工单T2处理中,5:归档
|
* link_status 0:待处理 1:接单(备用) 2:处理中 3:待审批 4:处理回复 5:完成 6:分派回复
|
* deal_type 1:转派(向下层级派发任务) 2:移交(任务移交到同级处理) 3:分派(同级派给多人处理) 4:驳回(驳回上级) 5:已处理(完成处理)6:处理未通过
|
* @param work
|
*/
|
public void setWorkflowAction(WorksheetDTO work){
|
WorkflowMain main = mainMapper.selectById(work.getId());
|
if (work.getDealType()==1){ //1:转派
|
//主表更改状态3:工单T1处理中
|
main.setStatus(3);
|
mainMapper.updateById(main);
|
//更新T1节点内容
|
WorkflowLink link = linkMapper.selectById(work.getLinkId());
|
//1:转派(向下层级派发任务)
|
link.setDealType(1);
|
link.setStatus(2);//处理中 往下处理,需审核后才算完成
|
link.setDealDesc(work.getDealDesc());
|
linkMapper.updateById(link);
|
WorkflowLink link1 = new WorkflowLink();
|
link1.setCreateTime(new Date());
|
link1.setMainId(work.getId());
|
link1.setParentId(link.getId());
|
link1.setProcessLevel("T2");
|
link1.setProcessLevelName("T2处理");
|
link1.setDealUserId(work.getDealUserId().intValue());
|
link1.setStatus(0);//待处理
|
linkMapper.insert(link1);
|
}else if (work.getDealType()==2){//2:移交
|
//更新T1节点内容
|
WorkflowLink link = linkMapper.selectById(work.getLinkId());
|
//1:转派(向下层级派发任务)
|
link.setDealType(2);
|
link.setStatus(5);//完成
|
link.setDealDesc(work.getDealDesc());
|
linkMapper.updateById(link);
|
WorkflowLink link1 = new WorkflowLink();
|
link1.setCreateTime(new Date());
|
link1.setMainId(work.getId());
|
link1.setParentId(link.getId());
|
link1.setProcessLevel(link.getProcessLevel());
|
link1.setProcessLevelName(link.getProcessLevelName());
|
link1.setDealUserId(work.getDealUserId().intValue());
|
link1.setStatus(0);
|
linkMapper.insert(link1);
|
}else if(work.getDealType()==3){//3:分派
|
//更新T1节点内容
|
WorkflowLink link = linkMapper.selectById(work.getLinkId());
|
//1:转派(向下层级派发任务)
|
link.setDealType(3);
|
link.setStatus(2);//处理中
|
//设置分派的人数,回复统计
|
link.setDealTaskNum(work.getDealUserIds().size());
|
link.setDealDesc(work.getDealDesc());
|
linkMapper.updateById(link);
|
for (int i=0;i<work.getDealUserIds().size();i++){
|
WorkflowLink link1 = new WorkflowLink();
|
link1.setCreateTime(new Date());
|
link1.setMainId(work.getId());
|
link1.setParentId(link.getId());
|
link1.setProcessLevel(link.getProcessLevel());
|
link1.setProcessLevelName(link.getProcessLevelName());
|
link1.setDealUserId(work.getDealUserIds().get(i));
|
link1.setStatus(3);//待回复
|
linkMapper.insert(link1);
|
}
|
|
}else if (work.getDealType()==4){//4:驳回
|
//更新T1节点内容
|
WorkflowLink link = linkMapper.selectById(work.getLinkId());
|
//1:转派(向下层级派发任务)
|
link.setDealType(4);
|
link.setStatus(5);//处理中 往下处理,需审核后才算完成
|
link.setDealTime(new Date());
|
link.setDealDesc(work.getDealDesc());
|
link.setDealTaskReplyNum(link.getDealTaskReplyNum()-1);
|
linkMapper.updateById(link);
|
WorkflowLink link1 = new WorkflowLink();
|
link1.setCreateTime(new Date());
|
link1.setMainId(work.getId());
|
link1.setParentId(link.getId());
|
link1.setProcessLevel("");
|
link1.setProcessLevelName("驳回重新处理");
|
link1.setDealUserId(work.getDealUserId().intValue());
|
link1.setStatus(3);//待处理
|
link1.setDealRejectReason(work.getRejectReasons());
|
linkMapper.insert(link1);
|
|
|
}else if (work.getDealType()==5){//5:回复
|
|
//更新T1节点内容
|
WorkflowLink link = linkMapper.selectById(work.getLinkId());
|
//1:转派(向下层级派发任务)
|
link.setDealType(5);
|
link.setStatus(6);//回复后待审核,等管理员确定是通过还是驳回
|
link.setDealTime(new Date());
|
link.setDealDesc(work.getDealDesc());
|
link.setDealReason(work.getDealDesc());
|
linkMapper.updateById(link);
|
|
QueryWrapper queryWrapper = Wrappers.query();
|
queryWrapper.in("status",new int[]{0,3,6});
|
queryWrapper.eq("parent_id",link.getParentId());
|
List list = linkMapper.selectList(queryWrapper);
|
if (list.size()==0){ //分派的都回复完了,主表状态调整为T1处理,后续该处理并归档
|
main.setStatus(3);
|
mainMapper.updateById(main);
|
}
|
|
}else if (work.getDealType()==6) {//6:处理并归档
|
main.setStatus(5);//主表状态归档
|
mainMapper.updateById(main);
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|