whycxzp
2023-04-23 90206a8d6467a7ad80a6caf398a131d284e918c4
更新大屏1级告警,单据审批
21个文件已修改
2个文件已添加
885 ■■■■ 已修改文件
src/main/java/com/whyc/constant/WorkflowEnum.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/controller/WorkflowLinkController.java 56 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/controller/WorkflowMainController.java 57 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/dto/WorkflowLinkDTO.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/mapper/BattDevAlarmDataMapper.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/mapper/BattalarmDataMapper.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/mapper/PwrdevAlarmMapper.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/mapper/WorkflowLinkMapper.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/mapper/WorkflowMainMapper.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/pojo/WorkflowMain.java 42 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/service/BattDischargePlanTempService.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/service/BattalarmDataService.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/service/DevalarmDataService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/service/PwrdevAlarmService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/service/WorkflowLinkService.java 353 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/service/WorkflowMainService.java 84 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/webSocket/ScreenSocket.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/BattDevAlarmDataMapper.xml 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/BattDischargePlanTempMapper.xml 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/BattalarmDataMapper.xml 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/PwrdevAlarmMapper.xml 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/WorkflowLinkMapper.xml 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/WorkflowMainMapper.xml 141 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/constant/WorkflowEnum.java
@@ -22,13 +22,14 @@
    /**节点表(link)状态*/
    STATUS_PENDING("待处理",0),
    STATUS_TAKE("待接单",1),
    STATUS_TAKING("待接单",1),
    STATUS_DEALING("处理中",2),
    STATUS_WAIT_FOR_REPLY("待回复",3),
    STATUS_DEAL_WITH_REPLY("处理回复",4),
    STATUS_FINISH("完成",5),
    STATUS_FINISH("通过",5),
    STATUS_WAIT_FOR_APPROVE("待审批",6),
    STATUS_CANCEL("已撤销",7),
    STATUS_REJECT("驳回",8),
    /**工单流类型*/
    MAIN_TYPE_DISCHARGE_PLAN("放电计划工单",1),
src/main/java/com/whyc/controller/WorkflowLinkController.java
@@ -1,6 +1,7 @@
package com.whyc.controller;
import com.whyc.dto.Response;
import com.whyc.dto.WorkflowLinkDTO;
import com.whyc.pojo.WorkflowLink;
import com.whyc.service.WorkflowLinkService;
import io.swagger.annotations.Api;
@@ -24,55 +25,10 @@
        return new Response<List<WorkflowLink>>().set(1,service.getWorkflowInfo(mainId));
    }
    /**
     * 新建 主表记录:status更新为
     *      当前link表记录:
     *
     * 派发 dealType=0
     *      当前link表记录:status更新为2(处理中)
     *      新增同级节点link表记录:dealType设置为0,status设置为3(待回复)
     *
     * 转派 dealType=1 (分为指定给班组或者个人)
     *      主表记录:status更新为4(二级处理中)
     *      当前link表记录:status更新为2(处理中)
     *      新增link表记录:如果指定的是role_id(班组),则班组下面的所有人可见,status为0(待处理)
     *
     * 移交 dealType=2
     *      当前link表记录:status更新为5(已完成)
     *      新增link表记录:status更新为0(待处理)
     *
     * 分派 dealType=3
     *      当前link表记录:status更新为2(处理中),deal_task_num更新
     *      新增link表记录:status更新为3(待回复),dealType为3(分派)
     *
     * 驳回 dealType=4
     *      当前link表记录:status更新为5 {同时doc指示dealType更新为5(回复),这里我认为不需要改变该值}
     *      父节点表记录: deal_tasks_reply_num 减1
     *      新增link表记录:重新分派给他,status设置为3(待回复)
     *
     * 通过 dealType=5
     *      当前link表记录:status更新为5,填写deal_reason
     *      父节点表记录: 查看是否全部回复,如果是,则更新status为
     *
     * 回复 dealType=6
     *      当前link表记录:status更新为6(待审批)
     *      父节点表记录:status更新为4(处理回复),deal_task_reply_num 加1
     *
     * 处理并归档 dealType=7
     *      主表记录:status更新为5(归档),填写end_reason
     *      当前link表记录:status更新为5(完成)
     *
     * @param link
     * @return
     */
    @PutMapping("updateLink")
    @ApiOperation(value = "处理工单节点")
    public Response updateLink(@RequestBody WorkflowLink link){
        boolean updateFlag = service.update(link);
        if(updateFlag) {
            return new Response().set(1,true, "提交成功");
        }else{
            return new Response().set(1,false,"已被接单,无法进行接单操作,请知悉");
        }
    @PutMapping("linkOfDischargePlanTemp")
    @ApiOperation("更新节点-放电计划")
    public Response updateLinkOfDischargePlanTemp(@RequestBody WorkflowLinkDTO linkDTO){
        return service.updateLinkOfDischargePlanTemp(linkDTO);
    }
}
src/main/java/com/whyc/controller/WorkflowMainController.java
@@ -2,7 +2,7 @@
import com.github.pagehelper.PageInfo;
import com.whyc.dto.Response;
import com.whyc.pojo.WorkflowLink;
import com.whyc.pojo.UserInf;
import com.whyc.pojo.WorkflowMain;
import com.whyc.service.WorkflowLinkService;
import com.whyc.service.WorkflowMainService;
@@ -12,7 +12,7 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Map;
@RestController
@RequestMapping("workflowMain")
@@ -25,17 +25,56 @@
    @Autowired
    private WorkflowLinkService linkService;
    @PostMapping("workflowMainList")
    @ApiOperation(value = "查询各状态工单列表",notes = "待处理:type=0,已处理:type=1,已归档:type=2,已撤销:type=3")
    public Response<PageInfo<WorkflowMain>> getList(@RequestBody WorkflowMain main,@RequestParam Integer type, @RequestParam Integer pageNum, @RequestParam Integer pageSize){
        Long userId = ActionUtil.getUser().getUId();
        return new Response<PageInfo<WorkflowMain>>().set(1,service.getPendingList(userId,type,pageNum,pageSize,main));
    }
    @GetMapping("basicInfo")
    @ApiOperation(value = "工单基本状态")
    public Response<WorkflowMain> getBasicInfo(@RequestParam Integer mainId){
        return new Response<WorkflowMain>().set(1,service.getBaseInfo(mainId));
    }
    //本人的单据: 已审批,审批中,已撤销,已驳回
    //接收到的单据: 待审核,(待接单审核?),已审核
    /**
     * 本人的单据:
     *  已审批,审批中,已撤销,已驳回
     * */
    @GetMapping("ownStatistics")
    @ApiOperation(value = "本人的单据统计")
    public Response<Map<Integer,Integer>> getOwnStatistics(int type){
        int userId = ActionUtil.getUser().getUId().intValue();
        return service.getOwnStatistics(userId,type);
    }
    /**
     * 本人的单据:
     *  已审批,审批中,已撤销,已驳回
     * */
    @GetMapping("ownListPage")
    @ApiOperation(value = "本人的单据列表分页")
    public Response<PageInfo<WorkflowMain>> ownListPage(int type,int status,int pageNum,int pageSize){
        int userId = ActionUtil.getUser().getUId().intValue();
        return service.ownListPage(userId,type,status,pageNum,pageSize);
    }
    /**
     * 接收到的单据:
     *  放电计划临时表中存在: 待审核,待接单审核,已审核
     * */
    @GetMapping("receivedStatistics")
    @ApiOperation(value = "接收到的单据统计")
    public Response<Map<Integer,Integer>> getReceivedStatistics(int type){
        UserInf user = ActionUtil.getUser();
        return service.getReceivedStatistics(type,user);
    }
    /**
     * 接收到的单据:
     *  放电计划临时表中存在: 待审核,待接单审核,已审核
     * */
    @GetMapping("receivedListPage")
    @ApiOperation(value = "接收到的单据列表分页")
    public Response<PageInfo<WorkflowMain>> getReceivedListPage(int type,int status,int pageNum,int pageSize){
        UserInf user = ActionUtil.getUser();
        return service.getReceivedListPage(type,status,user,pageNum,pageSize);
    }
}
src/main/java/com/whyc/dto/WorkflowLinkDTO.java
New file
@@ -0,0 +1,27 @@
package com.whyc.dto;
import com.whyc.pojo.BattDischargePlanTemp;
import com.whyc.pojo.WorkflowLink;
import java.util.List;
public class WorkflowLinkDTO {
    private WorkflowLink link;
    private List<BattDischargePlanTemp> tempList;
    public WorkflowLink getLink() {
        return link;
    }
    public void setLink(WorkflowLink link) {
        this.link = link;
    }
    public List<BattDischargePlanTemp> getTempList() {
        return tempList;
    }
    public void setTempList(List<BattDischargePlanTemp> tempList) {
        this.tempList = tempList;
    }
}
src/main/java/com/whyc/mapper/BattDevAlarmDataMapper.java
@@ -4,4 +4,5 @@
public interface BattDevAlarmDataMapper extends CustomMapper<BattDevAlarmData> {
    int searchNums(int uId);
    int getRealTimeWithLevel1(int uId);
}
src/main/java/com/whyc/mapper/BattalarmDataMapper.java
@@ -34,6 +34,8 @@
    //实时告警记录总数查询
    int serchRealTime(int uId);
    int getRealTimeWithLevel1(int uId);
    //电池单体健康率
    List<AlarmRes> serchGood(int uId);
src/main/java/com/whyc/mapper/PwrdevAlarmMapper.java
@@ -19,6 +19,8 @@
    //电源告警个数
    int getAlarmNum(int uId);
    int getRealTimeWithLevel1(int uId);
    //通信电源告警--认证送检-配电柜专用
    List<PwrdevAlarm> getAllPage2(PwrdevAlarm pwrdevAlarm);
src/main/java/com/whyc/mapper/WorkflowLinkMapper.java
@@ -1,7 +1,12 @@
package com.whyc.mapper;
import com.whyc.pojo.UserInf;
import com.whyc.pojo.WorkflowLink;
import java.util.List;
public interface WorkflowLinkMapper extends CustomMapper<WorkflowLink>{
    List<WorkflowLink> getReceivedList(int type, UserInf user);
}
src/main/java/com/whyc/mapper/WorkflowMainMapper.java
@@ -1,12 +1,14 @@
package com.whyc.mapper;
import com.whyc.pojo.UserInf;
import com.whyc.pojo.WorkflowMain;
import java.util.List;
public interface WorkflowMainMapper extends CustomMapper<WorkflowMain>{
    List<WorkflowMain> getPendingWorkflowList(Long userId,Integer type,WorkflowMain main);
    WorkflowMain getBaseInfo(Integer mainId);
    List<WorkflowMain> getReceivedListByUserAndType(UserInf user, int type, int status);
}
src/main/java/com/whyc/pojo/WorkflowMain.java
@@ -50,10 +50,6 @@
    /**是否及时*/
    @TableField("is_in_time")
    private Integer inTime;
    /**告警工单拓展:告警工单id*/
    private Integer alarmOrderId;
    @TableField(exist = false)
    private WorkflowAlarm workflowAlarm;
    @TableField(exist = false)
    private List<WorkflowLink> linkList;
    /**工单状态:
@@ -83,6 +79,20 @@
     * */
    private Integer type;
    @TableField(exist = false)
    private BattDischargePlanTemp temp;
    public WorkflowMain(Integer id, Integer status,String endReason,Date endTime) {
        this.id = id;
        this.status = status;
        this.endReason = endReason;
        this.endTime = endTime;
    }
    public WorkflowMain() {
    }
    public Integer getId() {
        return id;
    }
@@ -97,14 +107,6 @@
    public void setOrderId(String orderId) {
        this.orderId = orderId;
    }
    public Integer getAlarmOrderId() {
        return alarmOrderId;
    }
    public void setAlarmOrderId(Integer alarmOrderId) {
        this.alarmOrderId = alarmOrderId;
    }
    public String getTitle() {
@@ -187,14 +189,6 @@
        this.inTime = inTime;
    }
    public WorkflowAlarm getWorkflowAlarm() {
        return workflowAlarm;
    }
    public void setWorkflowAlarm(WorkflowAlarm workflowAlarm) {
        this.workflowAlarm = workflowAlarm;
    }
    public Integer getStatus() {
        return status;
    }
@@ -266,4 +260,12 @@
    public void setType(Integer type) {
        this.type = type;
    }
    public BattDischargePlanTemp getTemp() {
        return temp;
    }
    public void setTemp(BattDischargePlanTemp temp) {
        this.temp = temp;
    }
}
src/main/java/com/whyc/service/BattDischargePlanTempService.java
@@ -1,17 +1,14 @@
package com.whyc.service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.whyc.constant.WorkflowDischargePlanEnum;
import com.whyc.constant.WorkflowEnum;
import com.whyc.dto.Response;
import com.whyc.factory.ThreadPoolExecutorFactory;
import com.whyc.mapper.BattDischargePlanTempMapper;
import com.whyc.pojo.*;
import com.whyc.util.ActionUtil;
import com.whyc.util.DateUtil;
import com.whyc.util.ExcelUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
@@ -19,11 +16,8 @@
import javax.annotation.Resource;
import javax.servlet.ServletContext;
import javax.swing.*;
import java.text.ParseException;
import java.util.*;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.stream.Collectors;
@Service
@@ -875,6 +869,12 @@
            item.setCreateTime(now);
            item.setMainId(main.getId());
        });
        updateList(list);
        return new Response().setII(1,"提交完成");
    }
    public void updateList(List<BattDischargePlanTemp> list) {
        //化整为零,避免sql拼接太长导致无法执行
        int step = 20;
        for (int i = 0; i < list.size(); i = i+step) {
@@ -884,8 +884,6 @@
                mapper.updateList(list.subList(i, list.size()));
            }
        }
        return new Response().setII(1,"更新完成");
    }
src/main/java/com/whyc/service/BattalarmDataService.java
@@ -256,6 +256,12 @@
        return  new Response().set(number);
    }
    //实时1级告警记录总数查询
    public Response getRealTimeWithLevel1(int uId) {
        int number=mapper.getRealTimeWithLevel1(uId);
        return  new Response().set(number);
    }
    //电池告警实时查询(确认告警)
    public Response update(int num) {
        UpdateWrapper wrapper = new UpdateWrapper<>();
src/main/java/com/whyc/service/DevalarmDataService.java
@@ -120,6 +120,10 @@
        return battDevAlarmDataMapper.searchNums(userId);
    }
    public int getRealTimeWithLevel1(int userId) {
        return battDevAlarmDataMapper.getRealTimeWithLevel1(userId);
    }
    //今日实时告警
    public Response getDalmToday(int userId) {
        try {
src/main/java/com/whyc/service/PwrdevAlarmService.java
@@ -135,6 +135,10 @@
    public int getAlarmNumByUserId(int userId) {
        return  mapper.getAlarmNum(userId);
    }
    //实时1级电源告警个数
    public int getRealTimeWithLevel1(int userId) {
        return  mapper.getRealTimeWithLevel1(userId);
    }
    //首页电源总个数
    public int getHomeAlarmNum(int uId) {
src/main/java/com/whyc/service/WorkflowLinkService.java
@@ -1,20 +1,24 @@
package com.whyc.service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.whyc.constant.RoleEnum;
import com.whyc.constant.WorkflowDischargePlanEnum;
import com.whyc.constant.WorkflowEnum;
import com.whyc.dto.Response;
import com.whyc.dto.WorkflowLinkDTO;
import com.whyc.mapper.WorkflowLinkMapper;
import com.whyc.mapper.WorkflowMainMapper;
import com.whyc.pojo.BattDischargePlanTemp;
import com.whyc.pojo.UserInf;
import com.whyc.pojo.WorkflowLink;
import com.whyc.pojo.WorkflowMain;
import com.whyc.util.ActionUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Date;
import java.util.LinkedList;
import java.util.List;
import java.util.*;
import java.util.stream.Collectors;
@Service
public class WorkflowLinkService {
@@ -22,8 +26,11 @@
    @Resource
    private WorkflowLinkMapper mapper;
    @Resource
    private WorkflowMainMapper mainMapper;
    @Autowired
    private WorkflowMainService mainService;
    @Autowired
    private BattDischargePlanTempService battDischargePlanTempService;
    public void addBatch(List<WorkflowLink> links){
        mapper.insertBatchSomeColumn(links);
@@ -36,253 +43,121 @@
    }
    /**
     * 新建 主表记录:status更新为
     *      当前link表记录:
     *
     * 派发 dealType=0
     *      当前link表记录:status更新为2(处理中)
     *      新增同级节点link表记录:dealType设置为0,status设置为3(待回复)
     *
     * 转派 dealType=1 (分为指定给班组或者个人)
     *      主表记录:status更新为4(二级处理中)
     *      当前link表记录:status更新为2(处理中)
     *      新增link表记录:如果指定的是role_id(班组),则班组下面的所有人可见,status为0(待处理)
     *
     * 移交 dealType=2
     *      当前link表记录:status更新为5(已完成)
     *      新增link表记录:status更新为0(待处理)
     *
     * 分派 dealType=3
     *      当前link表记录:status更新为2(处理中),deal_task_num更新
     *      新增link表记录:status更新为3(待回复),dealType为3(分派)
     *
     * 驳回 dealType=4
     *      当前link表记录:status更新为5 {同时doc指示dealType更新为5(回复),这里我认为不需要改变该值}
     *      父节点表记录: deal_tasks_reply_num 减1
     *      新增link表记录:重新分派给他,status设置为3(待回复)
     *
     * 通过 dealType=5
     *      当前link表记录:status更新为5,填写deal_reason
     *      父节点表记录: 查看是否全部回复,如果是,则更新status为
     *
     * 回复 dealType=6
     *      当前link表记录:status更新为6(待审批)
     *      父节点表记录:status更新为4(处理回复),deal_task_reply_num 加1
     *
     * 处理并归档 dealType=7
     *      主表记录:status更新为5(归档),填写end_reason
     *      当前link表记录:status更新为5(完成)
     *
     */
    public boolean update(WorkflowLink link) {
        boolean updateFlag = true;
        switch (link.getDealType()){
            case 0: {
                boolean updateRes = updateDealType0(link);
                updateFlag = updateRes;
    /**传入id,mainId,processLevel,status,dealReason或者dealRejectReason
     * @param linkDTO 节点数据传输类
     * */
    public Response updateLinkOfDischargePlanTemp(WorkflowLinkDTO linkDTO) {
        WorkflowLink link = linkDTO.getLink();
        List<BattDischargePlanTemp> tempList = linkDTO.getTempList();
        String processLevel = link.getProcessLevel();
        Date now = new Date();
        int userId = ActionUtil.getUser().getUId().intValue();
        switch (processLevel){
            case "P1"://当前节点为过程1-会签,本场景没有拒绝选项
            {
                battDischargePlanTempService.updateList(tempList);
                updateLinkField(link);
                //判断会签是否完成,完成则新建下一步的节点
                int leftAssignNum = getLeftAssignNum(link.getMainId(),link.getProcessLevel());
                if(leftAssignNum == 0){ //剩余会签数量为0,说明会签已经完成
                    WorkflowLink linkNew = new WorkflowLink();
                    linkNew.setMainId(link.getMainId());
                    linkNew.setParentId(link.getId());
                    linkNew.setProcessLevel(WorkflowDischargePlanEnum.PROCESS_MANAGER1SIGN.getProcessLevel());
                    linkNew.setProcessLevelName(WorkflowDischargePlanEnum.PROCESS_MANAGER1SIGN.getProcessLevelName());
                    linkNew.setCreateTime(now);
                    linkNew.setDealRoleId(RoleEnum.ADMIN.getId());
                    linkNew.setDealType(WorkflowEnum.TYPE_TRANSFER_DISPATCH.getValue());
                    linkNew.setDealDesc("班组会签完成");
                    linkNew.setStatus(WorkflowEnum.STATUS_TAKING.getValue());
                    mapper.insert(linkNew);
                }
                break;
            }
            case 1: {
                updateDealType1(link);
            case "P2"://当前节点为过程2-管理审核
            {
                link.setDealUserId(userId);
                if(link.getStatus() == WorkflowEnum.STATUS_REJECT.getValue().intValue()){ //驳回
                    updateLinkFieldAndFinish(link);
                }else{ //通过
                    updateLinkField(link);
                    //新建下一节点-领导层
                    WorkflowLink linkNew = new WorkflowLink();
                    linkNew.setMainId(link.getMainId());
                    linkNew.setParentId(link.getId());
                    linkNew.setProcessLevel(WorkflowDischargePlanEnum.PROCESS_MANAGER2SIGN.getProcessLevel());
                    linkNew.setProcessLevelName(WorkflowDischargePlanEnum.PROCESS_MANAGER2SIGN.getProcessLevelName());
                    linkNew.setCreateTime(now);
                    linkNew.setDealRoleId(RoleEnum.LEADER.getId());
                    linkNew.setDealType(WorkflowEnum.TYPE_TRANSFER_DISPATCH.getValue());
                    String dealUserName = ActionUtil.getUser().getUName();
                    linkNew.setDealDesc(dealUserName+"审核完成");
                    linkNew.setStatus(WorkflowEnum.STATUS_TAKING.getValue());
                    mapper.insert(linkNew);
                }
                break;
            }
            case 2:{
                updateDealType2(link);
                break;
            }
            case 3:{
                updateDealType3(link);
                break;
            }
            case 4:{
                updateDealType4(link);
                break;
            }
            case 5:{
                updateDealType5(link);
                break;
            }
            case 6:{
                updateDealType6(link);
                break;
            }
            case 7:{
                updateDealType7(link);
            case "P3"://当前节点为过程3-领导审批
            {
                link.setDealUserId(userId);
                updateLinkFieldAndFinish(link);
                break;
            }
        }
        return updateFlag;
        return new Response().setII(1,"更新完成");
    }
    /**
     * 接单
     * 先判断:是否已经被接单
     *
     * @param mainId 特定的单据
     * @param processLevel 特定的过程
     * @return 特定单据,特定过程,未完成的会签的数量
     */
    private boolean updateDealType0(WorkflowLink link) {
        QueryWrapper<WorkflowLink> queryWrapper = Wrappers.query();
        UpdateWrapper<WorkflowLink> wrapper = Wrappers.update();
    private int getLeftAssignNum(Integer mainId, String processLevel) {
        QueryWrapper<WorkflowLink> query = Wrappers.query();
        query.select("count(*) as id").eq("main_id",mainId).eq("process_level",processLevel).ne("status",WorkflowEnum.STATUS_FINISH.getValue());
        return mapper.selectOne(query).getId();
    }
        //先判断,是否已经被接单
        queryWrapper.select("deal_user_id").eq("id",link.getId()).last(" limit 1");
        WorkflowLink workflowLink = mapper.selectOne(queryWrapper);
        if(workflowLink.getDealUserId()!=null){
            return false;
    /**
     * 更新节点,主节点不完结
     * @param link 参数id,status,dealReason或者dealRejectReason
     */
    private void updateLinkField(WorkflowLink link) {
        Date now = new Date();
        link.setDealTime(now);
        mapper.updateById(link);
    }
    /**
     * 更新节点,主节点完结,单据完结
     * @param link 参数id,mainId,status,dealReason或者dealRejectReason
     */
    private void updateLinkFieldAndFinish(WorkflowLink link) {
        updateLinkField(link);
        Date now = link.getDealTime();
        if(link.getStatus() == WorkflowEnum.STATUS_FINISH.getValue().intValue()){ //通过
            mainService.updateStatus(link.getMainId(),WorkflowEnum.MAIN_STATUS_END_PASS.getValue(),link.getDealReason(),now);
        }else{ //驳回
            mainService.updateStatus(link.getMainId(),WorkflowEnum.MAIN_STATUS_END_REJECT.getValue(),link.getDealRejectReason(),now);
        }
        wrapper.set("deal_user_id",link.getDealUserId()).set("status",WorkflowEnum.STATUS_PENDING)
                .eq("id",link.getId());
        mapper.update(null,wrapper);
        return true;
    }
    /**
     * 转派
     */
    private void updateDealType1(WorkflowLink link) {
        updateLinkStatus(link.getId(),WorkflowEnum.STATUS_DEALING.getValue(),null,null,null,null);
        if(link.getDealUserId()==null){
            link.setStatus(WorkflowEnum.STATUS_TAKE.getValue());
        }else{
            link.setStatus(WorkflowEnum.STATUS_PENDING.getValue());
    public Map<Integer, Integer> getReceivedStatistics(int type, UserInf user) {
        Map<Integer,Integer> statistics = new HashMap<>();
        statistics.put(1,0);
        statistics.put(6,0);
        statistics.put(58,0);
        List<WorkflowLink> links = mapper.getReceivedList(type,user);
        Map<Integer, List<WorkflowLink>> receivedListMap = links.stream().collect(Collectors.groupingBy(WorkflowLink::getStatus));
        Set<Integer> statusSet = receivedListMap.keySet();
        for (Integer status : statusSet) {
            if(status == 5 || status == 8){
                statistics.put(58,statistics.get(58)+receivedListMap.get(status).size());
            }else{
                statistics.put(status,receivedListMap.get(status).size());
            }
        }
        link.setParentId(link.getId());
/*        link.setDealUserId(link.getDealUserId());
        link.setDealRoleId(link.getDealRoleId());
        link.setMainId(link.getMainId());*/
        link.setDealDesc(link.getDealDesc()+";"+link.getDealReason());
        link.setDealReason(null);
        mapper.insert(link);
    }
    /**
     * 移交
     */
    private void updateDealType2(WorkflowLink link) {
        updateLinkStatus(link.getId(),WorkflowEnum.STATUS_FINISH.getValue(),null,null,link.getDealReason(),null);
        if(link.getDealUserId()==null){
            link.setStatus(WorkflowEnum.STATUS_TAKE.getValue());
        }else{
            link.setStatus(WorkflowEnum.STATUS_PENDING.getValue());
        }
        //link.setParentId(link.getId());
        link.setParentId(link.getParentId());
        link.setDealDesc(link.getDealReason());
        link.setDealReason(null);
        mapper.insert(link);
    }
    /**
     * 分派
     */
    private void updateDealType3(WorkflowLink link) {
        List<Integer> dealUserIdList = link.getDealUserIdList();
        updateLinkStatus(link.getId(), WorkflowEnum.STATUS_DEALING.getValue(), dealUserIdList.size(), null, null,null);
        List<WorkflowLink> workflowLinkList = new LinkedList<>();
        dealUserIdList.stream().forEach(dealUserId->{
            WorkflowLink linkTemp = new WorkflowLink();
            linkTemp.setCreateTime(new Date());
            linkTemp.setRequiredFinishTime(link.getRequiredFinishTime());
            linkTemp.setMainId(link.getMainId());
            linkTemp.setParentId(link.getId());
            linkTemp.setDealUserId(dealUserId);
            linkTemp.setDealDesc(link.getDealReason());
            linkTemp.setDealType(link.getDealType());
            linkTemp.setStatus(WorkflowEnum.STATUS_WAIT_FOR_REPLY.getValue());
            workflowLinkList.add(linkTemp);
        });
        mapper.insertBatchSomeColumn(workflowLinkList);
    }
    /**
     * 驳回
     */
    private void updateDealType4(WorkflowLink link) {
        updateLinkStatus(link.getId(),WorkflowEnum.STATUS_FINISH.getValue(),null,null,null,link.getReplyContent());
        updateLinkStatus(link.getParentId(),null,null,link.getDealTaskReplyNum()-1,null,null);
        WorkflowLink newLink = new WorkflowLink();
        newLink.setMainId(link.getMainId());
        newLink.setParentId(link.getId());
        newLink.setDealType(WorkflowEnum.TYPE_ASSIGN.getValue());
        newLink.setStatus(WorkflowEnum.STATUS_WAIT_FOR_REPLY.getValue());
        newLink.setDealUserId(link.getDealUserId());
        newLink.setDealDesc(link.getReplyContent());
        mapper.insert(newLink);
    }
    /**
     * 通过
     */
    private void updateDealType5(WorkflowLink link) {
        updateLinkStatus(link.getId(),WorkflowEnum.STATUS_FINISH.getValue(),null,null,null,link.getReplyContent());
    }
    /**
     * 回复
     */
    private void updateDealType6(WorkflowLink link) {
       updateLinkStatus(link.getId(),WorkflowEnum.STATUS_WAIT_FOR_APPROVE.getValue(),null,null,link.getDealReason(),null);
       updateLinkStatus(link.getParentId(),WorkflowEnum.STATUS_DEAL_WITH_REPLY.getValue(),null,link.getDealTaskReplyNum()+1,link.getDealReason(),null);
    }
    /**
     * 处理并归档
     * TODO 最后处理这个逻辑
     */
    private void updateDealType7(WorkflowLink link) {
    }
    /**
     * 抽取出来共用的更新表记录方法
     */
    private void updateMainStatus(Integer mainId,Integer status){
        UpdateWrapper<WorkflowMain> mainWrapper = Wrappers.update();
        mainWrapper.set("status",status)
                .eq("id",mainId);
        mainMapper.update(null,mainWrapper);
    }
    /**
     * 抽取出来共用的更新表记录方法
     */
    private void updateLinkStatus(Integer linkId,Integer status,Integer dealTaskNum,Integer dealTaskReplyNum,String dealReason,String replyContent){
        UpdateWrapper<WorkflowLink> linkWrapper = Wrappers.update();
        linkWrapper.set("status",status)
                .eq("id",linkId);
        if(dealTaskNum!=null){
            linkWrapper.set("deal_task_num",dealTaskNum);
        }
        if(dealTaskReplyNum!=null){
            linkWrapper.set("deal_task_reply_num",dealTaskReplyNum);
        }
        if(dealReason!=null){
            linkWrapper.set("deal_reason",dealReason).set("deal_time",new Date());
        }
        if(replyContent!=null){
            linkWrapper.set("reply_content",replyContent).set("reply_time",new Date());
        }
        mapper.update(null,linkWrapper);
        return statistics;
    }
}
src/main/java/com/whyc/service/WorkflowMainService.java
@@ -1,25 +1,23 @@
package com.whyc.service;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
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.mapper.WorkflowLinkMapper;
import com.whyc.dto.Response;
import com.whyc.mapper.WorkflowMainMapper;
import com.whyc.pojo.WorkflowAlarm;
import com.whyc.pojo.UserInf;
import com.whyc.pojo.WorkflowLink;
import com.whyc.pojo.WorkflowMain;
import com.whyc.util.ActionUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import javax.servlet.ServletContext;
import java.text.SimpleDateFormat;
import java.util.Comparator;
import java.util.Date;
import java.util.LinkedList;
import java.util.List;
import java.util.*;
import java.util.stream.Collectors;
@Service
public class WorkflowMainService {
@@ -27,8 +25,8 @@
    @Resource
    private WorkflowMainMapper mapper;
    @Resource
    private WorkflowLinkMapper linkMapper;
    @Autowired
    private WorkflowLinkService linkService;
    /**
     * 分派单号:
@@ -77,15 +75,6 @@
        mapper.insertBatchSomeColumn(workflowMainList);
    }
    public PageInfo<WorkflowMain> getPendingList(Long userId,Integer type,Integer pageNum,Integer pageSize,WorkflowMain main) {
        PageHelper.startPage(pageNum,pageSize,true);
        //获取系统生成,待处理的工单,获取正在工单节点表中待处理的工单
        List<WorkflowMain> workflowList = mapper.getPendingWorkflowList(userId,type,main);
        PageInfo<WorkflowMain> pageInfo = new PageInfo<>(workflowList);
        return pageInfo;
    }
    public WorkflowMain getBaseInfo(Integer mainId) {
        return mapper.getBaseInfo(mainId);
@@ -97,4 +86,63 @@
        //return linkMapper.
        return null;
    }
    public void updateStatus(Integer id, Integer status,String endReason,Date endTime) {
        WorkflowMain main = new WorkflowMain(id,status,endReason,endTime);
        mapper.updateById(main);
    }
    /**
     *
     * @param userId
     * @param type
     * @see com.whyc.constant.WorkflowEnum
     *
     * @return
     */
    public Response<Map<Integer,Integer>> getOwnStatistics(int userId, int type) {
        Map<Integer,Integer> statistics = new HashMap<>();
        statistics.put(1,0);
        statistics.put(2,0);
        statistics.put(3,0);
        statistics.put(4,0);
        QueryWrapper<WorkflowMain> query = Wrappers.query();
        query.eq("create_user_id",userId);
        List<WorkflowMain> mains = mapper.selectList(query);
        Map<Integer, List<WorkflowMain>> statusListMap = mains.stream().collect(Collectors.groupingBy(WorkflowMain::getStatus));
        Set<Integer> statusSet = statusListMap.keySet();
        for (Integer status : statusSet) {
            statistics.put(status,statusListMap.get(status).size());
        }
        return new Response<Map<Integer,Integer>>().set(1,statistics);
    }
    public Response<PageInfo<WorkflowMain>> ownListPage(int userId, int type, int status, int pageNum, int pageSize) {
        PageHelper.startPage(pageNum,pageSize);
        List<WorkflowMain> mains = getOwnListByUserAndType(userId,type,status);
        PageInfo<WorkflowMain> pageInfo = new PageInfo<>(mains);
        return new Response<PageInfo<WorkflowMain>>().set(1,pageInfo);
    }
    private List<WorkflowMain> getOwnListByUserAndType(int userId, int type, int status) {
        QueryWrapper<WorkflowMain> query = Wrappers.query();
        query.eq("create_user_id",userId).eq("type",type).eq("status",status);
        return mapper.selectList(query);
    }
    public Response<Map<Integer,Integer>> getReceivedStatistics(int type, UserInf user) {
        Map<Integer,Integer> statisticsMap = linkService.getReceivedStatistics(type,user);
        return new Response<Map<Integer,Integer>>().set(1,statisticsMap);
    }
    public Response<PageInfo<WorkflowMain>> getReceivedListPage(int type, int status, UserInf user, int pageNum, int pageSize) {
        PageHelper.startPage(pageNum,pageSize);
        List<WorkflowMain> mains = getReceivedListByUserAndType(user,type,status);
        PageInfo<WorkflowMain> pageInfo = new PageInfo<>(mains);
        return new Response<PageInfo<WorkflowMain>>().set(1,pageInfo);
    }
    private List<WorkflowMain> getReceivedListByUserAndType(UserInf user, int type, int status) {
        return mapper.getReceivedListByUserAndType(user,type,status);
    }
}
src/main/java/com/whyc/webSocket/ScreenSocket.java
@@ -108,9 +108,9 @@
                            Response res_devAlarmNum = new Response();
                            Map<String, Integer> devAlarmNumMap = new HashMap<>();
                            try {
                                int battAlarmNum = battAlarmDataService.serchRealTime(userId).getCode();
                                int devAlarmNum = devAlarmDataService.getAlarmNum(userId);
                                int powerAlarmNum = powerAlarmService.getAlarmNumByUserId(userId);
                                int battAlarmNum = battAlarmDataService.getRealTimeWithLevel1(userId).getCode();
                                int devAlarmNum = devAlarmDataService.getRealTimeWithLevel1(userId);
                                int powerAlarmNum = powerAlarmService.getRealTimeWithLevel1(userId);
                                devAlarmNumMap.put("battAlarmNum",battAlarmNum);
                                devAlarmNumMap.put("devAlarmNum",devAlarmNum);
                                devAlarmNumMap.put("powerAlarmNum",powerAlarmNum);
src/main/resources/mapper/BattDevAlarmDataMapper.xml
@@ -13,4 +13,16 @@
        and db_user.tb_user_inf.uid=db_user.tb_user_battgroup_baojigroup_usr.uid
        and db_user.tb_user_inf.uid=#{uId} )
    </select>
    <select id="getRealTimeWithLevel1" resultType="java.lang.Integer">
        select count(dev_id)
        from db_alarm.tb_devalarm_data
        where alm_level=1
        and tb_devalarm_data.dev_id in (select distinct db_battinf.tb_battinf.FbsDeviceId
        from db_battinf.tb_battinf,db_user.tb_user_battgroup_baojigroup_battgroup,db_user.tb_user_battgroup_baojigroup_usr,db_user.tb_user_inf
        where db_user.tb_user_battgroup_baojigroup_battgroup.BattGroupId=db_battinf.tb_battinf.BattGroupId
        and db_user.tb_user_battgroup_baojigroup_usr.baoji_group_id=db_user.tb_user_battgroup_baojigroup_battgroup.baoji_group_id
        and db_user.tb_user_inf.uid=db_user.tb_user_battgroup_baojigroup_usr.uid
        and db_user.tb_user_inf.uid=#{uId} )
    </select>
</mapper>
src/main/resources/mapper/BattDischargePlanTempMapper.xml
@@ -3,7 +3,12 @@
<mapper namespace="com.whyc.mapper.BattDischargePlanTempMapper" >
    <update id="updateList">
        <foreach collection="list" item="item">
            update web_site.tb_battdischarge_plan_temp set discharge_start_time = #{item.dischargeStartTime},create_time = #{item.createTime},submit_status=1,main_id=#{item.mainId} where id = #{item.id};
            update web_site.tb_battdischarge_plan_temp set discharge_start_time = #{item.dischargeStartTime},submit_status=1
            <if test="item.createTime!=null">
                ,create_time = #{item.createTime}
                ,main_id=#{item.mainId}
            </if>
            where id = #{item.id};
        </foreach>
    </update>
    <select id="getValidOneByYear" resultType="com.whyc.pojo.BattDischargePlanTemp">
src/main/resources/mapper/BattalarmDataMapper.xml
@@ -147,6 +147,20 @@
                and db_user.tb_user_inf.uid=#{uId}  )
    </select>
    <select id="getRealTimeWithLevel1" parameterType="java.lang.Integer" resultType="java.lang.Integer">
        select count(num) as number from db_alarm.tb_battalarm_data
        where
        alm_cleared_type=0
        and alm_level=1
        and db_alarm.tb_battalarm_data.BattGroupId
        in (select distinct db_battinf.tb_battinf.battgroupid
        from db_battinf.tb_battinf,db_user.tb_user_battgroup_baojigroup_battgroup,db_user.tb_user_battgroup_baojigroup_usr,db_user.tb_user_inf
        where db_user.tb_user_battgroup_baojigroup_battgroup.BattGroupId=db_battinf.tb_battinf.BattGroupId
        and db_user.tb_user_battgroup_baojigroup_usr.baoji_group_id=db_user.tb_user_battgroup_baojigroup_battgroup.baoji_group_id
        and db_user.tb_user_inf.uid=db_user.tb_user_battgroup_baojigroup_usr.uid
        and db_user.tb_user_inf.uid=#{uId}  )
    </select>
    <select id="serchGood" parameterType="java.lang.Integer" resultType="AlarmStaticRes">
        SELECT battgroupid,count(DISTINCT MonNum) as number,alm_id
        FROM db_alarm.tb_battalarm_data
src/main/resources/mapper/PwrdevAlarmMapper.xml
@@ -117,6 +117,21 @@
        and db_user.tb_user_inf.uid=#{uid} ) ;
    </select>
    <select id="getRealTimeWithLevel1" parameterType="java.lang.Integer" resultType="java.lang.Integer">
        select count(*) as num from db_pwrdev_alarm.tb_pwrdev_alarm alarm,db_pwrdev_inf.tb_pwrdev_inf inf
        where alarm.PowerDeviceId = inf.PowerDeviceId
        and alarm.alm_level=1
        and inf.StationId in ( select distinct inf.StationId from
        (select StationId from db_battinf.tb_battinf union select StationId from db_pwrdev_inf.tb_pwrdev_inf ) inf,
        db_user.tb_user_battgroup_baojigroup_battgroup,
        db_user.tb_user_battgroup_baojigroup_usr,
        db_user.tb_user_inf
        where db_user.tb_user_battgroup_baojigroup_battgroup.StationId=inf.StationId
        and db_user.tb_user_battgroup_baojigroup_usr.baoji_group_id=db_user.tb_user_battgroup_baojigroup_battgroup.baoji_group_id
        and db_user.tb_user_inf.uid=db_user.tb_user_battgroup_baojigroup_usr.uid
        and db_user.tb_user_inf.uid=#{uid} ) ;
    </select>
    <select id="getAllPage2" resultType="com.whyc.pojo.PwrdevAlarm">
        select  alarm.*,inf.StationName from db_pwrdev_alarm.tb_pwrdev_alarm alarm,db_pwrdev_inf.tb_pwrdev_inf inf
        <where>
src/main/resources/mapper/WorkflowLinkMapper.xml
New file
@@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.whyc.mapper.WorkflowLinkMapper" >
    <select id="getReceivedList" resultType="com.whyc.pojo.WorkflowLink">
        (
        SELECT l.* FROM web_site.tb_workflow_main m,web_site.tb_workflow_link l
        where m.id = l.main_id
        and m.type = #{type}
        and l.deal_user_id = #{user.uId}
        )
        union all
        (
        SELECT l.* FROM web_site.tb_workflow_main m,web_site.tb_workflow_link l
        where m.id = l.main_id
        and m.type = #{type}
        and l.deal_role_id = #{user.uRole}
        and l.deal_user_id is null
        )
    </select>
</mapper>
src/main/resources/mapper/WorkflowMainMapper.xml
@@ -3,30 +3,30 @@
<mapper namespace="com.whyc.mapper.WorkflowMainMapper" >
    <sql id="linkColumn">
        link.id link_id,
        link.main_id,
        link.parent_id,
        link.process_level,
        link.process_level_name,
        link.create_time link_create_time,
        link.deal_user_id,
        link.deal_type,
        link.deal_desc,
        link.deal_file_name,
        link.deal_file_url,
        link.deal_pic_name,
        link.deal_pic_url,
        link.status link_status,
        link.deal_role_id,
        link.deal_and_close,
        link.deal_reject_reason,
        link.deal_task_num,
        link.deal_task_reply_num,
        link.deal_reason,
        link.required_finish_time,
        link.deal_time,
        link.reply_content,
        link.reply_time
        l.id link_id,
        l.main_id,
        l.parent_id,
        l.process_level,
        l.process_level_name,
        l.create_time link_create_time,
        l.deal_user_id,
        l.deal_type,
        l.deal_desc,
        l.deal_file_name,
        l.deal_file_url,
        l.deal_pic_name,
        l.deal_pic_url,
        l.status link_status,
        l.deal_role_id,
        l.deal_and_close,
        l.deal_reject_reason,
        l.deal_task_num,
        l.deal_task_reply_num,
        l.deal_reason,
        l.required_finish_time,
        l.deal_time,
        l.reply_content,
        l.reply_time
    </sql>
    <resultMap id="Map_WorkflowMain" type="WorkflowMain">
        <id column="id" property="id" />
@@ -49,18 +49,6 @@
        <result column="status" property="status"/>
        <result column="is_auto" property="auto"/>
        <result column="type" property="type"/>
        <association property="workflowAlarm" javaType="WorkflowAlarm">
            <result column="alarm_num" property="alarmNum"/>
            <result column="alarm_record_id" property="alarmRecordId"/>
            <result column="station_id" property="stationId"/>
            <result column="station_name" property="stationName"/>
            <result column="batt_group_id" property="battGroupId"/>
            <result column="batt_group_name" property="battGroupName"/>
            <result column="device_id" property="deviceId"/>
            <result column="alarm_level" property="alarmLevel"/>
            <result column="alarm_name" property="alarmName"/>
            <result column="alarm_time" property="alarmTime"/>
        </association>
        <collection property="linkList" ofType="WorkflowLink">
            <id column="link_id" property="id"/>
            <result column="main_id" property="mainId"/>
@@ -103,74 +91,27 @@
        and link.main_id = main.id
        and main.id = #{mainId}
    </select>
    <select id="getPendingWorkflowList" resultMap="Map_WorkflowMain">
    <select id="getReceivedListByUserAndType" resultMap="Map_WorkflowMain">
        <choose>
            <!--
            /**节点表(link)状态*/
                STATUS_PENDING("待处理",0),
                STATUS_TAKE("接单",1),
                STATUS_DEALING("处理中",2),
                STATUS_WAIT_FOR_REPLY("待回复",3),
                STATUS_DEAL_WITH_REPLY("处理回复",4),
                STATUS_FINISH("完成",5),
                STATUS_WAIT_FOR_APPROVE("待审批",6),
                STATUS_CANCEL("已撤销",7),
            -->
            <!--待处理-->
            <when test="type==0">
                (
                SELECT
                    main.*,
                    <include refid="linkColumn" />
                FROM
                    web_site.tb_workflow_main main,
                    web_site.tb_workflow_link link
                where
                    link.main_id = main.id
                and link.status = 1
                and deal_role_id in (select distinct baoji_group_id  from db_user.tb_user_battgroup_baojigroup_usr where uId = #{userId})
                <if test="main.title!=null">
                    and title like concat('%',#{main.title},'%')
                </if>
                ) union
                (SELECT
                    main.*,
                    <include refid="linkColumn" />
                FROM web_site.tb_workflow_main main,
                    web_site.tb_workflow_link link
                WHERE link.main_id = main.id
                    and link.status  in (0,3,4)
                    and deal_user_id = #{userId}
                <if test="main.title!=null">
                    and title like concat('%',#{main.title},'%')
                </if>
                )
            <!--待接单-->
            <when test="status==1">
                SELECT m.*,<include refid="linkColumn" />
                FROM web_site.tb_workflow_main m,web_site.tb_workflow_link l
                where m.id = l.main_id
                and m.type = #{type}
                and l.deal_role_id = #{user.uRole}
                and l.deal_user_id is null
                and l.status = #{status}
            </when>
            <!--已处理-->
            <when test="type==1">
                SELECT
                    main.*,
                    <include refid="linkColumn" />
                FROM
                    web_site.tb_workflow_main main,
                    web_site.tb_workflow_link link
                WHERE link.main_id = main.id
                and link.status  in (2,5,6)
                and deal_user_id = #{userId}
                <if test="main.title!=null"> and title like concat('%',#{main.title},'%')</if>
            </when>
            <!--已归档-->
            <when test="type==2">
                SELECT * FROM web_site.tb_workflow_main where status = 2
                <if test="main.title!=null"> and title like concat('%',#{main.title},'%')</if>
                and create_user_id = #{userId};
            </when>
            <!--已撤销-->
            <otherwise>
                SELECT * FROM web_site.tb_workflow_main where status = 6
                <if test="main.title!=null"> and title like concat('%',#{main.title},'%')</if>
                and create_user_id = #{userId};
                SELECT m.*,<include refid="linkColumn" />
                FROM web_site.tb_workflow_main m,web_site.tb_workflow_link l
                where m.id = l.main_id
                and m.type = #{type}
                and l.deal_user_id = #{user.uId}
                and l.status = #{status}
            </otherwise>
        </choose>
    </select>
</mapper>