k94314517
2025-07-04 50fb58286ed3b718c39a97e0987ee7561a295651
server/service/src/main/java/com/doumee/service/business/impl/DispatchUnitServiceImpl.java
@@ -1,5 +1,6 @@
package com.doumee.service.business.impl;
import com.doumee.biz.system.SystemDictDataBiz;
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.exception.BusinessException;
import com.doumee.core.model.LoginUserInfo;
@@ -7,15 +8,11 @@
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.Constants;
import com.doumee.core.utils.Utils;
import com.doumee.dao.business.DispatchUnitMapper;
import com.doumee.dao.business.DuLogMapper;
import com.doumee.dao.business.DuSolutionMapper;
import com.doumee.dao.business.DuWorktypeMapper;
import com.doumee.dao.business.*;
import com.doumee.dao.business.dto.*;
import com.doumee.dao.business.join.DuLogJoinMapper;
import com.doumee.dao.business.join.DuSolutionJoinMapper;
import com.doumee.dao.business.join.DuWorkTypeJoinMapper;
import com.doumee.dao.business.join.*;
import com.doumee.dao.business.model.*;
import com.doumee.dao.system.model.SystemUser;
import com.doumee.service.business.DispatchUnitService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
@@ -30,10 +27,8 @@
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Date;
import java.util.List;
import java.util.Objects;
import java.util.UUID;
import java.util.*;
import java.util.stream.Collectors;
/**
 * 派遣单位信息表Service实现
@@ -47,7 +42,13 @@
    private DispatchUnitMapper dispatchUnitMapper;
    @Autowired
    private DispatchUnitJoinMapper dispatchUnitJoinMapper;
    @Autowired
    private DuSolutionMapper duSolutionMapper;
    @Autowired
    private SolutionWorktypeJoinMapper solutionWorktypeJoinMapper;
    @Autowired
    private DuWorktypeMapper    duWorktypeMapper;
@@ -64,14 +65,240 @@
    @Autowired
    private DuWorkTypeJoinMapper duWorkTypeJoinMapper;
    @Autowired
    private SystemDictDataBiz systemDictDataBiz;
    @Autowired
    private NoticesMapper noticesMapper;
    @Override
    @Transactional(rollbackFor = {Exception.class,BusinessException.class})
    public Integer checkWorktype(DispatchUnit param) {
        if(Objects.isNull(param)
                ||Objects.isNull(param.getId())
                ||param.getWorktypeStatus() == null
                ||!(param.getWorktypeStatus() ==Constants.ONE || param.getWorktypeStatus() == Constants.TWO)){
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
        DispatchUnit model = dispatchUnitMapper.selectById(param.getId());
        if(Objects.isNull(model) || !Constants.equalsInteger(model.getIsdeleted(),Constants.ZERO) ||!Constants.equalsInteger(model.getDataType(),Constants.ZERO)){
            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未查询到派遣单位信息");
        }
        if(!Constants.equalsInteger(model.getUnitStatus(),Constants.ONE)){
            throw  new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"对不起,该派遣单位尚未审核通过,不支持该操作!");
        }
        if(!Constants.equalsInteger(model.getWorktypeStatus(),Constants.ZERO)){
            throw  new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"对不起,该派遣单位工种已审核,请勿重复提交~");
        }
        DispatchUnit update = new DispatchUnit();
        update.setEditor(user.getId());
        update.setEditDate(new Date());
        update.setId(model.getId());
        update.setWorktypeStatus(param.getWorktypeStatus());
        update.setCheckDate(update.getEditDate());
        update.setCheckUserId(user.getId());
        update.setCheckInfo(param.getCheckInfo());
        dispatchUnitMapper.updateById(update);
        if(Constants.equalsInteger(param.getWorktypeStatus(),Constants.ONE)){
            //审核通过,修改状态,产生历史版本
            newVersionData(model,update,false);
            //存储操作历史
            this.saveDuLog(update,Constants.DispatchUnitLogType.WORK_TYPE_AUDIT_PASS,update.getCheckInfo());
        }else{
            //更新明细数据为审核失败
            duSolutionMapper.update(null,new UpdateWrapper<DuSolution>().lambda()
                    .set(DuSolution::getCheckDate,new Date() )
                    .set(DuSolution::getStatus,Constants.TWO)
                    .set(DuSolution::getCheckUserId,update.getCheckUserId())
                    .set(DuSolution::getCheckInfo,update.getCheckInfo())
                    .eq(DuSolution::getDispatchUnitId,update.getId()));
            duWorktypeMapper.update(null,new UpdateWrapper<DuWorktype>().lambda()
                    .set(DuWorktype::getStatus,Constants.TWO)
                    .set(DuWorktype::getCheckUserId,update.getCheckUserId())
                    .set(DuWorktype::getCheckInfo,update.getCheckInfo())
                    .set(DuWorktype::getCheckDate,new Date() )
                    .eq(DuWorktype::getIsdeleted,Constants.ZERO)
                    .eq(DuWorktype::getStatus,Constants.ZERO)
                    .eq(DuWorktype::getDispatchUnitId,update.getId()));
            //存储操作历史
            this.saveDuLog(update,Constants.DispatchUnitLogType.WORK_TYPE_AUDIT_UN_PASS,update.getCheckInfo());
        }
        //存储待办信息
        Constants.NoticeObjectType noticeObjectType = Constants.NoticeObjectType.DISPATCH_UNIT;
        //删除其他待办
        noticesMapper.delete(new QueryWrapper<Notices>().lambda().eq(Notices::getObjType,noticeObjectType.getKey()).eq(Notices::getObjId,model.getId()));
        return  1;
    }
    private void newVersionData(DispatchUnit model, DispatchUnit update,Boolean flag) {
        DispatchUnit newVersion = new DispatchUnit();
        if(flag){
            dispatchUnitMapper.update(null,new UpdateWrapper<DispatchUnit>().lambda()
                    .set(DispatchUnit::getDataType,Constants.ZERO)
                    .eq(DispatchUnit::getIsdeleted,Constants.ZERO)
                    .eq(DispatchUnit::getBaseId,model.getId()));
            BeanUtils.copyProperties(model, newVersion);
            newVersion.setId(null);
            newVersion.setWorktypeStatus(Constants.ONE);
            newVersion.setCheckDate(update.getEditDate());
            newVersion.setCheckUserId(update.getCheckUserId());
            newVersion.setCheckInfo(update.getCheckInfo());
            newVersion.setStatus(Constants.ZERO);
            newVersion.setCreateDate(update.getCreateDate());
            newVersion.setCreator(update.getEditor());
            newVersion.setBaseId(model.getId());
            newVersion.setDataType(Constants.TWO);
            dispatchUnitMapper.insert(newVersion);
        }else{
            newVersion = dispatchUnitMapper.selectOne(new QueryWrapper<DispatchUnit>().lambda()
                    .eq(DispatchUnit::getIsdeleted,Constants.ZERO)
                    .eq(DispatchUnit::getDataType,Constants.TWO)
                    .eq(DispatchUnit::getBaseId,model.getId())
                    .last(" limit 1"));
        }
        if(Objects.isNull(newVersion)){
            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未查询到派遣单位最新版本");
        }
        List<DuWorktype> newWorktypes = new ArrayList<>();
        List<DuSolution> solutions = duSolutionMapper.selectList(new QueryWrapper<DuSolution>().lambda()
                .eq(DuSolution::getIsdeleted,Constants.ZERO)
                .eq(DuSolution::getDispatchUnitId,model.getId()));
        duSolutionMapper.update(null,new UpdateWrapper<DuSolution>().lambda()
                        .set(DuSolution::getStatus,Constants.ONE)
                .set(DuSolution::getCheckDate,update.getEditDate() )
                .set(DuSolution::getCheckUserId,update.getCheckUserId())
                .set(DuSolution::getCheckInfo,update.getCheckInfo())
                .eq(DuSolution::getIsdeleted,Constants.ZERO)
                .eq(DuSolution::getStatus,Constants.ZERO)
                .eq(DuSolution::getDispatchUnitId,model.getId())
        );
        if(solutions == null || solutions.size() ==0){
            throw  new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"对不起,该派遣单位未设置方案工种信息,审核通过失败!");
        }
        for (DuSolution s : solutions){
            DuSolution ns = new DuSolution();
            BeanUtils.copyProperties(s, ns);
            ns.setId(null);
            ns.setDispatchUnitId(newVersion.getId());
            ns.setCheckDate(update.getEditDate());
            ns.setStatus(Constants.ONE);
            ns.setCheckInfo(update.getCheckInfo());
            ns.setCheckUserId(update.getCheckUserId());
            duSolutionMapper.insert(ns);
            List<DuWorktype> worktypes = duWorktypeMapper.selectList(new QueryWrapper<DuWorktype>().lambda()
                    .eq(DuWorktype::getIsdeleted,Constants.ZERO)
                    .eq(DuWorktype::getDuSolutionId,s.getId()));
            duWorktypeMapper.update(null,new UpdateWrapper<DuWorktype>().lambda()
                    .set(DuWorktype::getStatus,Constants.ONE)
                    .set(DuWorktype::getCheckDate,update.getEditDate())
                    .set(DuWorktype::getCheckUserId,update.getCheckUserId())
                    .set(DuWorktype::getCheckInfo,update.getCheckInfo())
                    .eq(DuWorktype::getIsdeleted,Constants.ZERO)
                    .eq(DuWorktype::getStatus,Constants.ZERO)
                    .eq(DuWorktype::getDuSolutionId,s.getId()));
            if(worktypes == null || worktypes.size() ==0){
                throw  new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"对不起,该派遣单位方案存在方案是未设置工种信息信息,审核通过失败!");
            }
            for (DuWorktype w : worktypes) {
                if(Constants.equalsInteger(w.getStatus(),Constants.TWO)){
                    continue;
                }
                DuWorktype nw = new DuWorktype();
                BeanUtils.copyProperties(w, nw);
                nw.setId(null);
                nw.setCreateDate(new Date());
                nw.setCheckDate(update.getEditDate());
                nw.setStatus(Constants.ONE);
                nw.setDuSolutionId(ns.getId());
                nw.setCheckInfo(update.getCheckInfo());
                nw.setCheckUserId(update.getCheckUserId());
                newWorktypes.add(nw);
            }
        }
        if(newWorktypes!=null &&newWorktypes.size()>0){
            //批量查询工种关联记录
            duWorktypeMapper.insert(newWorktypes);
        }
    }
    @Override
    @Transactional(rollbackFor = {Exception.class,BusinessException.class})
    public Integer check(DispatchUnit param) {
        if(Objects.isNull(param)
                ||Objects.isNull(param.getId())
                ||param.getUnitStatus() == null
                ||!(param.getUnitStatus() ==Constants.ONE || param.getUnitStatus() == Constants.TWO)){
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
        DispatchUnit model = dispatchUnitMapper.selectById(param.getId());
        if(Objects.isNull(model) || !Constants.equalsInteger(model.getIsdeleted(),Constants.ZERO) ||!Constants.equalsInteger(model.getDataType(),Constants.ZERO)){
            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未查询到派遣单位信息");
        }
        if(!Constants.equalsInteger(model.getUnitStatus(),Constants.ZERO)){
            throw  new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"对不起,该派遣单位工种已审核,请勿重复提交~");
        }
        DispatchUnit update = new DispatchUnit();
        update.setEditor(user.getId());
        update.setEditDate(new Date());
        update.setId(model.getId());
        update.setUnitStatus(param.getUnitStatus());
        update.setWorktypeStatus(param.getUnitStatus());
        update.setCheckDate(update.getEditDate());
        update.setCheckUserId(user.getId());
        update.setCheckInfo(param.getCheckInfo());
        dispatchUnitMapper.updateById(update);
        DispatchUnit dispatchUnit = dispatchUnitMapper.selectById(param.getId());
        if(Constants.equalsInteger(param.getUnitStatus(),Constants.ONE)){
            //审核通过,修改状态,产生历史版本
            newVersionData(dispatchUnit,update,true);
            //存储操作历史
            this.saveDuLog(dispatchUnit,Constants.DispatchUnitLogType.AUDIT_PASS,update.getCheckInfo());
        }else{
            //更新明细数据为审核失败
            duSolutionMapper.update(null,new UpdateWrapper<DuSolution>().lambda()
                    .set(DuSolution::getStatus,Constants.TWO)
                    .set(DuSolution::getCheckDate,new Date() )
                    .set(DuSolution::getCheckUserId,update.getCheckUserId())
                    .set(DuSolution::getCheckInfo,update.getCheckInfo())
                    .eq(DuSolution::getDispatchUnitId,update.getId()));
            duWorktypeMapper.update(null,new UpdateWrapper<DuWorktype>().lambda()
                    .set(DuWorktype::getStatus,Constants.TWO)
                    .set(DuWorktype::getCheckUserId,update.getCheckUserId())
                    .set(DuWorktype::getCheckInfo,update.getCheckInfo())
                    .set(DuWorktype::getCheckDate,new Date() )
                    .eq(DuWorktype::getIsdeleted,Constants.ZERO)
                    .eq(DuWorktype::getStatus,Constants.ZERO)
                    .eq(DuWorktype::getDispatchUnitId,update.getId()));
            //存储操作历史
            this.saveDuLog(dispatchUnit,Constants.DispatchUnitLogType.AUDIT_UN_PASS,update.getCheckInfo());
        }
        //存储待办信息
        Constants.NoticeObjectType noticeObjectType = Constants.NoticeObjectType.DISPATCH_UNIT;
        //删除其他待办
        noticesMapper.delete(new QueryWrapper<Notices>().lambda().eq(Notices::getObjType,noticeObjectType.getKey()).eq(Notices::getObjId,dispatchUnit.getId()));
        return  1;
    }
    @Override
    @Transactional(rollbackFor = {Exception.class,BusinessException.class})
    public Integer create(SaveDispatchUnitDTO saveDispatchUnitDTO) {
        if(Objects.isNull(saveDispatchUnitDTO)
            || StringUtils.isEmpty(saveDispatchUnitDTO.getName())
            || StringUtils.isEmpty(saveDispatchUnitDTO.getCode())
            || StringUtils.isEmpty(saveDispatchUnitDTO.getContent())
            || CollectionUtils.isEmpty(saveDispatchUnitDTO.getSaveDuSolutionDTOList())
        ){
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
@@ -81,16 +308,17 @@
                .eq(DispatchUnit::getCompanyId,loginUserInfo.getCompanyId())
                .eq(DispatchUnit::getName,saveDispatchUnitDTO.getName())
                .eq(DispatchUnit::getIsdeleted,Constants.ZERO)
                .eq(DispatchUnit::getDataType,Constants.ZERO)
        )> Constants.ZERO){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"【派遣单位名称】已存在");
        };
        if(dispatchUnitMapper.selectCount(new QueryWrapper<DispatchUnit>().lambda()
                .eq(DispatchUnit::getCompanyId,loginUserInfo.getCompanyId())
                .eq(DispatchUnit::getCode,saveDispatchUnitDTO.getCode())
                .eq(DispatchUnit::getIsdeleted,Constants.ZERO)
        )> Constants.ZERO){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"【派遣单位信用代码】已存在");
        };
//        if(dispatchUnitMapper.selectCount(new QueryWrapper<DispatchUnit>().lambda()
//                .eq(DispatchUnit::getCompanyId,loginUserInfo.getCompanyId())
//                .eq(DispatchUnit::getCode,saveDispatchUnitDTO.getCode())
//                .eq(DispatchUnit::getIsdeleted,Constants.ZERO)
//        )> Constants.ZERO){
//            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"【派遣单位信用代码】已存在");
//        };
        DispatchUnit dispatchUnit = new DispatchUnit();
        dispatchUnit.setCreateDate(new Date());
        dispatchUnit.setCreator(loginUserInfo.getId());
@@ -110,11 +338,19 @@
        this.saveDuLog(dispatchUnit,Constants.DispatchUnitLogType.UPLOAD,null);
        List<SaveDuSolutionDTO> saveDuSolutionDTOList = saveDispatchUnitDTO.getSaveDuSolutionDTOList();
        List<Integer> duSolutionIdS = saveDuSolutionDTOList.stream().map(m->m.getSolutionId()).collect(Collectors.toList());
        HashSet<Integer> setDuSolutionIdS=new HashSet<>(duSolutionIdS);
        if(duSolutionIdS.size()!=setDuSolutionIdS.size()){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"方案信息重复");
        }
        for (int i = 0; i < saveDuSolutionDTOList.size(); i++) {
            SaveDuSolutionDTO saveDuSolutionDTO = saveDuSolutionDTOList.get(i);
            DuSolution duSolution = new DuSolution();
            duSolution.setCreateDate(new Date());
            duSolution.setCreator(loginUserInfo.getId());
            duSolution.setStatus(Constants.ZERO);
            duSolution.setIsdeleted(Constants.ZERO);
            duSolution.setDispatchUnitId(dispatchUnit.getId());
            duSolution.setSortnum(i);
@@ -122,6 +358,13 @@
            duSolutionMapper.insert(duSolution);
            List<SaveDuWorkTypeDTO> saveDuWorkTypeDTOList = saveDuSolutionDTO.getSaveDuWorkTypeDTOList();
            List<Integer> duWorkTypeIdS = saveDuWorkTypeDTOList.stream().map(m->m.getWorkTypeId()).collect(Collectors.toList());
            HashSet<Integer> setDuWorkTypeIdS=new HashSet<>(duWorkTypeIdS);
            if(duWorkTypeIdS.size()!=setDuWorkTypeIdS.size()){
                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"【"+saveDuSolutionDTO.getSolutionName()+"】该方案下存在重复工种!");
            }
            if(!CollectionUtils.isNotEmpty(saveDuSolutionDTOList)){
                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"【"+saveDuSolutionDTO.getSolutionName()+"】该方案下未选择工种!");
            }
@@ -132,13 +375,24 @@
                duWorktype.setCreator(loginUserInfo.getId());
                duWorktype.setIsdeleted(Constants.ZERO);
                duWorktype.setDuSolutionId(duSolution.getId());
                duWorktype.setStatus(Constants.ZERO);
                duWorktype.setSortnum(j);
                duWorktype.setDispatchUnitId(dispatchUnit.getId());
                duWorktype.setWorkTypeId(saveDuWorkTypeDTO.getWorkTypeId());
                duWorktype.setVideoUrl(saveDuWorkTypeDTO.getVideoUrl());
                duWorktype.setStatus2(Constants.ZERO);
                duWorktypeMapper.insert(duWorktype);
            }
        }
        //存储待办信息
        Constants.NoticeObjectType noticeObjectType = Constants.NoticeObjectType.DISPATCH_UNIT;
        //删除其他待办
        noticesMapper.delete(new QueryWrapper<Notices>().lambda().eq(Notices::getObjType,noticeObjectType.getKey()).eq(Notices::getObjId,dispatchUnit.getId()));
        Notices notices = new Notices(noticeObjectType,Constants.ZERO,dispatchUnit.getId(),dispatchUnit.getName(),
                dispatchUnit.getCompanyId(), Constants.NoticeType.ZERO);
        noticesMapper.insert(notices);
        return dispatchUnit.getId();
    }
@@ -148,7 +402,6 @@
    public Integer editDispatchUnit(SaveDispatchUnitDTO saveDispatchUnitDTO) {
        if(Objects.isNull(saveDispatchUnitDTO)
                ||Objects.isNull(saveDispatchUnitDTO.getId())
                || CollectionUtils.isEmpty(saveDispatchUnitDTO.getSaveDuSolutionDTOList())
        ){
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
        }
@@ -159,33 +412,37 @@
        }
        if(dispatchUnitMapper.selectCount(new QueryWrapper<DispatchUnit>().lambda()
                .ne(DispatchUnit::getId,saveDispatchUnitDTO.getId())
                .ne(DispatchUnit::getBaseId,saveDispatchUnitDTO.getId())
                .eq(DispatchUnit::getCompanyId,loginUserInfo.getCompanyId())
                .eq(DispatchUnit::getName,saveDispatchUnitDTO.getName())
                .eq(DispatchUnit::getIsdeleted,Constants.ZERO)
                .eq(DispatchUnit::getDataType,Constants.ZERO)
        )> Constants.ZERO){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"【派遣单位名称】已存在");
        };
        if(dispatchUnitMapper.selectCount(new QueryWrapper<DispatchUnit>().lambda()
                .ne(DispatchUnit::getId,saveDispatchUnitDTO.getId())
                .eq(DispatchUnit::getCompanyId,loginUserInfo.getCompanyId())
                .eq(DispatchUnit::getCode,saveDispatchUnitDTO.getCode())
                .eq(DispatchUnit::getIsdeleted,Constants.ZERO)
        )> Constants.ZERO){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"【派遣单位信用代码】已存在");
        }
        dispatchUnit.setCode(saveDispatchUnitDTO.getCode());
        dispatchUnit.setContent(saveDispatchUnitDTO.getContent());
        dispatchUnit.setName(saveDispatchUnitDTO.getName());
        dispatchUnit.setUnitStatus(Constants.ZERO);
        dispatchUnit.setWorktypeStatus(Constants.ZERO);
        dispatchUnit.setEditDate(new Date());
        dispatchUnit.setEditor(loginUserInfo.getId());
        dispatchUnitMapper.updateById(dispatchUnit);
        dispatchUnitMapper.update(null,new UpdateWrapper<DispatchUnit>().lambda().set(DispatchUnit::getDataType,Constants.ONE).eq(DispatchUnit::getBaseId,dispatchUnit.getId())
                .eq(DispatchUnit::getDataType,Constants.TWO)
        );
        //存储操作记录
        this.saveDuLog(dispatchUnit,Constants.DispatchUnitLogType.EDIT_UNIT,null);
        this.dealDuData(saveDispatchUnitDTO,loginUserInfo);
        //存储待办信息
        Constants.NoticeObjectType noticeObjectType = Constants.NoticeObjectType.DISPATCH_UNIT;
        //删除其他待办
        noticesMapper.delete(new QueryWrapper<Notices>().lambda().eq(Notices::getObjType,noticeObjectType.getKey()).eq(Notices::getObjId,dispatchUnit.getId()));
        Notices notices = new Notices(noticeObjectType,Constants.ZERO,dispatchUnit.getId(),dispatchUnit.getName(),
                dispatchUnit.getCompanyId(), Constants.NoticeType.ZERO);
        noticesMapper.insert(notices);
        return dispatchUnit.getId();
    }
@@ -201,12 +458,15 @@
    public Integer createSolution(SaveDispatchUnitDTO saveDispatchUnitDTO) {
        if(Objects.isNull(saveDispatchUnitDTO)
                ||Objects.isNull(saveDispatchUnitDTO.getId())
                || CollectionUtils.isEmpty(saveDispatchUnitDTO.getSaveDuSolutionDTOList())
                || !CollectionUtils.isNotEmpty(saveDispatchUnitDTO.getSaveDuSolutionDTOList())
        ){
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
        DispatchUnit dispatchUnit = this.dispatchUnitMapper.selectById(saveDispatchUnitDTO.getId());
        if(!dispatchUnit.getUnitStatus().equals(Constants.ONE)){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"派遣单位未审批通过,无法进行该操作");
        }
        dispatchUnit.setWorktypeStatus(Constants.ZERO);
        dispatchUnit.setEditDate(new Date());
        dispatchUnit.setEditor(loginUserInfo.getId());
@@ -218,6 +478,15 @@
        //存储操作历史
        this.saveDuLog(dispatchUnit,Constants.DispatchUnitLogType.ADD_WORK_TYPE,null);
        this.dealDuData(saveDispatchUnitDTO,loginUserInfo);
        //存储待办信息
        Constants.NoticeObjectType noticeObjectType = Constants.NoticeObjectType.DISPATCH_UNIT;
        //删除其他待办
        noticesMapper.delete(new QueryWrapper<Notices>().lambda().eq(Notices::getObjType,noticeObjectType.getKey()).eq(Notices::getObjId,dispatchUnit.getId()));
        Notices notices = new Notices(noticeObjectType,Constants.ZERO,dispatchUnit.getId(),dispatchUnit.getName(),
                dispatchUnit.getCompanyId(), Constants.NoticeType.ONE);
        noticesMapper.insert(notices);
        return dispatchUnit.getId();
    }
@@ -226,15 +495,19 @@
        List<SaveDuSolutionDTO> saveDuSolutionDTOList = saveDispatchUnitDTO.getSaveDuSolutionDTOList();
        for (int i = 0; i < saveDuSolutionDTOList.size(); i++) {
            SaveDuSolutionDTO saveDuSolutionDTO = saveDuSolutionDTOList.get(i);
            DuSolution duSolution = duSolutionMapper.selectOne(new QueryWrapper<DuSolution>().lambda().eq(DuSolution::getDispatchUnitId,saveDuSolutionDTO.getId())
            if(Objects.isNull(saveDuSolutionDTO.getSolutionId())){
                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"【"+saveDuSolutionDTO.getSolutionName()+"】该方案下选择方案信息异常!");
            }
            DuSolution duSolution = duSolutionMapper.selectOne(new QueryWrapper<DuSolution>().lambda().eq(DuSolution::getDispatchUnitId,saveDispatchUnitDTO.getId())
                    .eq(DuSolution::getIsdeleted,Constants.ZERO)
                    .eq(DuSolution::getSolutionId,saveDuSolutionDTO.getSolutionId()).last("limit 1"));
            Integer duSolutionNum = duSolutionMapper.selectCount(new QueryWrapper<DuSolution>().lambda().eq(DuSolution::getDispatchUnitId,saveDuSolutionDTO.getId()));
            Integer duSolutionNum = duSolutionMapper.selectCount(new QueryWrapper<DuSolution>().lambda().eq(DuSolution::getDispatchUnitId,saveDuSolutionDTO.getId())).intValue();
            if(Objects.isNull(duSolution)){
                duSolution = new DuSolution();
                duSolution.setCreateDate(new Date());
                duSolution.setCreator(loginUserInfo.getId());
                duSolution.setIsdeleted(Constants.ZERO);
                duSolution.setStatus(Constants.ZERO);
                duSolution.setDispatchUnitId(saveDispatchUnitDTO.getId());
                duSolution.setSortnum(duSolutionNum + i);
                duSolution.setSolutionId(saveDuSolutionDTO.getSolutionId());
@@ -246,18 +519,29 @@
            }
            for (int j = 0; j < saveDuWorkTypeDTOList.size(); j++) {
                SaveDuWorkTypeDTO saveDuWorkTypeDTO = saveDuWorkTypeDTOList.get(j);
                if(duWorktypeMapper.selectCount(new QueryWrapper<DuWorktype>().lambda().eq(DuWorktype::getDuSolutionId,duSolution.getId())
                if(Objects.isNull(saveDuWorkTypeDTO.getWorkTypeId())){
                    throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"【"+saveDuSolutionDTO.getSolutionName()+"】该方案下"+saveDuWorkTypeDTO.getWorkTypeName()+"该工种信息异常");
                }
                //验证方案与工种的关系
                if(solutionWorktypeJoinMapper.selectCount(new QueryWrapper<SolutionWorktype>().lambda().eq(SolutionWorktype::getSolutionId,saveDuSolutionDTO.getSolutionId())
                        .eq(SolutionWorktype::getWorktypeId,saveDuWorkTypeDTO.getWorkTypeId()))<=0){
                    throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"【"+saveDuSolutionDTO.getSolutionName()+"】该方案下"+saveDuWorkTypeDTO.getWorkTypeName()+"该工种信息无绑定关系");
                };
                if(duWorktypeMapper.selectCount(new QueryWrapper<DuWorktype>()
                        .lambda().eq(DuWorktype::getDuSolutionId,duSolution.getId())
                        .eq(DuWorktype::getIsdeleted,Constants.ZERO)
                        .eq(DuWorktype::getWorkTypeId,saveDuWorkTypeDTO.getWorkTypeId()))>0){
                    throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"【"+saveDuSolutionDTO.getSolutionName()+"】该方案下"+saveDuWorkTypeDTO.getWorkTypeName()+"该工种已存在工种已存在");
                    throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"【"+saveDuSolutionDTO.getSolutionName()+"】该方案下"+saveDuWorkTypeDTO.getWorkTypeName()+"该工种已存在");
                }
                Integer duWorkTypeNum = duWorktypeMapper.selectCount(new QueryWrapper<DuWorktype>().lambda().eq(DuWorktype::getDuSolutionId,duSolution.getId()));
                Integer duWorkTypeNum = duWorktypeMapper.selectCount(new QueryWrapper<DuWorktype>().lambda().eq(DuWorktype::getDuSolutionId,duSolution.getId())).intValue();
                DuWorktype duWorktype = new DuWorktype();
                duWorktype.setCreateDate(new Date());
                duWorktype.setCreator(loginUserInfo.getId());
                duWorktype.setIsdeleted(Constants.ZERO);
                duWorktype.setDuSolutionId(duSolution.getId());
                duWorktype.setStatus(Constants.ZERO);
                duWorktype.setSortnum(duWorkTypeNum + j);
                duWorktype.setDispatchUnitId(saveDispatchUnitDTO.getId());
                duWorktype.setWorkTypeId(saveDuWorkTypeDTO.getWorkTypeId());
                duWorktype.setVideoUrl(saveDuWorkTypeDTO.getVideoUrl());
                duWorktype.setStatus2(Constants.ZERO);
@@ -288,7 +572,7 @@
        if(Objects.isNull(dispatchUnit)){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"未查询到派遣单位信息");
        }
        //派遣单位审批
        //派遣单位审核
        if(dispatchUnitAuditDTO.getAuditType().equals(Constants.ZERO)){
            if(dispatchUnit.getStatus().equals(Constants.ONE)){
                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"派遣单位信息已审核");
@@ -401,7 +685,20 @@
    @Override
    public void deleteById(Integer id) {
        dispatchUnitMapper.deleteById(id);
        LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
        DispatchUnit dispatchUnit = dispatchUnitMapper.selectById(id);
        if(Objects.isNull(dispatchUnit)){
            throw new BusinessException(ResponseStatus.DATA_EMPTY);
        }
        if(dispatchUnit.getUnitStatus().equals(Constants.TWO)){
            dispatchUnitMapper.update(null,new UpdateWrapper<DispatchUnit>().lambda()
                            .set(DispatchUnit::getEditor,loginUserInfo.getId())
                        .set(DispatchUnit::getEditDate,new Date())
                    .set(DispatchUnit::getIsdeleted,Constants.ONE)
                    .eq(DispatchUnit::getId,id));
        }else{
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"当前派遣单位状态无法进行该操作");
        }
    }
    @Override
@@ -421,6 +718,14 @@
    @Override
    public void updateById(DispatchUnit dispatchUnit) {
        dispatchUnitMapper.updateById(dispatchUnit);
        //更新历史表状态
        if(Objects.nonNull(dispatchUnit.getId())&& Objects.nonNull(dispatchUnit.getStatus())){
            dispatchUnitMapper.update(null,new UpdateWrapper<DispatchUnit>().lambda()
                    .set(DispatchUnit::getStatus,dispatchUnit.getStatus())
                    .eq(DispatchUnit::getDataType,Constants.TWO)
                    .eq(DispatchUnit::getBaseId,dispatchUnit.getId())
            );
        }
    }
    @Override
@@ -450,86 +755,111 @@
        QueryWrapper<DispatchUnit> wrapper = new QueryWrapper<>(dispatchUnit);
        return dispatchUnitMapper.selectList(wrapper);
    }
    @Override
    public PageData<DispatchUnit> findPage(PageWrap<DispatchUnit> pageWrap) {
        IPage<DispatchUnit> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
        QueryWrapper<DispatchUnit> queryWrapper = new QueryWrapper<>();
        if(pageWrap.getModel().getDataType() ==null){
            pageWrap.getModel().setDataType(Constants.ZERO);
        }
        LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
        Utils.MP.blankToNull(pageWrap.getModel());
        MPJLambdaWrapper<DispatchUnit>  queryWrapper =    new MPJLambdaWrapper<DispatchUnit>();
        queryWrapper.selectAll(DispatchUnit.class)
                .selectAs(Company::getName,DispatchUnit::getCompanyName)
                .leftJoin(Company.class,Company::getId,DispatchUnit::getCompanyId);
        queryWrapper.eq(DispatchUnit::getIsdeleted,Constants.ZERO);
        if(Constants.equalsInteger(user.getType(),Constants.ZERO)){
            //只能看权限范围内
            if(user.getCompanyIdList() == null || user.getCompanyIdList().size() == 0){
                queryWrapper. eq(Company::getId,-1);//设置无效访问
            }else {
                queryWrapper. in(Company::getId, user.getCompanyIdList());
            }
        } else  {
            //企业用户只看自己的数据
            pageWrap.getModel().setCompanyId(user.getCompanyId());
        }
        if (pageWrap.getModel().getId() != null) {
            queryWrapper.lambda().eq(DispatchUnit::getId, pageWrap.getModel().getId());
            queryWrapper.eq(DispatchUnit::getId, pageWrap.getModel().getId());
        }
        if (pageWrap.getModel().getCreator() != null) {
            queryWrapper.lambda().eq(DispatchUnit::getCreator, pageWrap.getModel().getCreator());
            queryWrapper.eq(DispatchUnit::getCreator, pageWrap.getModel().getCreator());
        }
        if (pageWrap.getModel().getCreateDate() != null) {
            queryWrapper.lambda().ge(DispatchUnit::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate()));
            queryWrapper.lambda().le(DispatchUnit::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate()));
            queryWrapper.ge(DispatchUnit::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate()));
            queryWrapper.le(DispatchUnit::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate()));
        }
        if (pageWrap.getModel().getEditor() != null) {
            queryWrapper.lambda().eq(DispatchUnit::getEditor, pageWrap.getModel().getEditor());
            queryWrapper.eq(DispatchUnit::getEditor, pageWrap.getModel().getEditor());
        }
        if (pageWrap.getModel().getEditDate() != null) {
            queryWrapper.lambda().ge(DispatchUnit::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate()));
            queryWrapper.lambda().le(DispatchUnit::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate()));
            queryWrapper.ge(DispatchUnit::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate()));
            queryWrapper.le(DispatchUnit::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate()));
        }
        if (pageWrap.getModel().getIsdeleted() != null) {
            queryWrapper.lambda().eq(DispatchUnit::getIsdeleted, pageWrap.getModel().getIsdeleted());
            queryWrapper.eq(DispatchUnit::getIsdeleted, pageWrap.getModel().getIsdeleted());
        }
        if (pageWrap.getModel().getName() != null) {
            queryWrapper.lambda().eq(DispatchUnit::getName, pageWrap.getModel().getName());
            queryWrapper.like(DispatchUnit::getName, pageWrap.getModel().getName());
        }
        if (pageWrap.getModel().getRemark() != null) {
            queryWrapper.lambda().eq(DispatchUnit::getRemark, pageWrap.getModel().getRemark());
            queryWrapper.eq(DispatchUnit::getRemark, pageWrap.getModel().getRemark());
        }
        if (pageWrap.getModel().getStatus() != null) {
            queryWrapper.lambda().eq(DispatchUnit::getStatus, pageWrap.getModel().getStatus());
            queryWrapper.eq(DispatchUnit::getStatus, pageWrap.getModel().getStatus());
        }
        if (pageWrap.getModel().getUnitStatus() != null) {
            queryWrapper.lambda().eq(DispatchUnit::getUnitStatus, pageWrap.getModel().getUnitStatus());
            queryWrapper.eq(DispatchUnit::getUnitStatus, pageWrap.getModel().getUnitStatus());
        }
        if (pageWrap.getModel().getWorktypeStatus() != null) {
            queryWrapper.lambda().eq(DispatchUnit::getWorktypeStatus, pageWrap.getModel().getWorktypeStatus());
            queryWrapper.eq(DispatchUnit::getWorktypeStatus, pageWrap.getModel().getWorktypeStatus());
        }
        if (pageWrap.getModel().getSortnum() != null) {
            queryWrapper.lambda().eq(DispatchUnit::getSortnum, pageWrap.getModel().getSortnum());
            queryWrapper.eq(DispatchUnit::getSortnum, pageWrap.getModel().getSortnum());
        }
        if (pageWrap.getModel().getCompanyId() != null) {
            queryWrapper.lambda().eq(DispatchUnit::getCompanyId, pageWrap.getModel().getCompanyId());
            queryWrapper.eq(DispatchUnit::getCompanyId, pageWrap.getModel().getCompanyId());
        }
        if (pageWrap.getModel().getPhone() != null) {
            queryWrapper.lambda().eq(DispatchUnit::getPhone, pageWrap.getModel().getPhone());
            queryWrapper.eq(DispatchUnit::getPhone, pageWrap.getModel().getPhone());
        }
        if (pageWrap.getModel().getLinkname() != null) {
            queryWrapper.lambda().eq(DispatchUnit::getLinkname, pageWrap.getModel().getLinkname());
            queryWrapper.eq(DispatchUnit::getLinkname, pageWrap.getModel().getLinkname());
        }
        if (pageWrap.getModel().getCheckDate() != null) {
            queryWrapper.lambda().ge(DispatchUnit::getCheckDate, Utils.Date.getStart(pageWrap.getModel().getCheckDate()));
            queryWrapper.lambda().le(DispatchUnit::getCheckDate, Utils.Date.getEnd(pageWrap.getModel().getCheckDate()));
            queryWrapper.ge(DispatchUnit::getCheckDate, Utils.Date.getStart(pageWrap.getModel().getCheckDate()));
            queryWrapper.le(DispatchUnit::getCheckDate, Utils.Date.getEnd(pageWrap.getModel().getCheckDate()));
        }
        if (pageWrap.getModel().getCheckInfo() != null) {
            queryWrapper.lambda().eq(DispatchUnit::getCheckInfo, pageWrap.getModel().getCheckInfo());
            queryWrapper.eq(DispatchUnit::getCheckInfo, pageWrap.getModel().getCheckInfo());
        }
        if (pageWrap.getModel().getCheckUserId() != null) {
            queryWrapper.lambda().eq(DispatchUnit::getCheckUserId, pageWrap.getModel().getCheckUserId());
            queryWrapper.eq(DispatchUnit::getCheckUserId, pageWrap.getModel().getCheckUserId());
        }
        if (pageWrap.getModel().getVersion() != null) {
            queryWrapper.lambda().eq(DispatchUnit::getVersion, pageWrap.getModel().getVersion());
            queryWrapper.eq(DispatchUnit::getVersion, pageWrap.getModel().getVersion());
        }
        if (pageWrap.getModel().getDataType() != null) {
            queryWrapper.lambda().eq(DispatchUnit::getDataType, pageWrap.getModel().getDataType());
            queryWrapper.eq(DispatchUnit::getDataType, pageWrap.getModel().getDataType());
        }
        if (pageWrap.getModel().getBaseId() != null) {
            queryWrapper.lambda().eq(DispatchUnit::getBaseId, pageWrap.getModel().getBaseId());
            queryWrapper.eq(DispatchUnit::getBaseId, pageWrap.getModel().getBaseId());
        }
        for(PageWrap.SortData sortData: pageWrap.getSorts()) {
            if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
                queryWrapper.orderByDesc(sortData.getProperty());
            } else {
                queryWrapper.orderByAsc(sortData.getProperty());
            }
        }
        return PageData.from(dispatchUnitMapper.selectPage(page, queryWrapper));
        queryWrapper.orderByAsc(DispatchUnit::getUnitStatus);
        queryWrapper.orderByAsc(DispatchUnit::getWorktypeStatus);
        queryWrapper.orderByDesc(DispatchUnit::getCreateDate);
//        for(PageWrap.SortData sortData: pageWrap.getSorts()) {
//            if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
//                queryWrapper.orderByDesc(sortData.getProperty());
//            } else {
//                queryWrapper.orderByAsc(sortData.getProperty());
//            }
//        }
        PageData<DispatchUnit> pageData = PageData.from(dispatchUnitJoinMapper.selectJoinPage(page,DispatchUnit.class, queryWrapper));
        return pageData;
    }
    @Override
@@ -541,14 +871,21 @@
    @Override
    public DispatchUnit detailById(Integer id) {
        DispatchUnit dispatchUnit = dispatchUnitMapper.selectById(id);
        DispatchUnit dispatchUnit = dispatchUnitJoinMapper.selectJoinOne(DispatchUnit.class,
                new MPJLambdaWrapper<DispatchUnit>()
                        .selectAll(DispatchUnit.class)
                        .selectAs(Company::getName,DispatchUnit::getCompanyName)
                        .leftJoin(Company.class,Company::getId,DispatchUnit::getCompanyId)
                        .eq(DispatchUnit::getId,id) );
        //方案配置表
        List<DuSolution> duSolutionList = duSolutionJoinMapper.selectJoinList(DuSolution.class,
                new MPJLambdaWrapper<DuSolution>()
                        .selectAll(DuSolution.class)
                        .selectAs(Solutions::getName,DuSolution::getSolutionName)
                        .leftJoin(Solutions.class,Solutions::getId,DuSolution::getSolutionId)
                        .eq(DuSolution::getSolutionId,dispatchUnit.getId())
                        .leftJoin(CompanySolution.class,CompanySolution::getSolutionId,Solutions::getId)
                        .eq(DuSolution::getDispatchUnitId,dispatchUnit.getId())
                        .eq(CompanySolution::getCompanyId,dispatchUnit.getCompanyId())
                        .orderByAsc(DuSolution::getSortnum)
        );
        if(CollectionUtils.isNotEmpty(duSolutionList)){
@@ -561,6 +898,14 @@
                                .leftJoin(Worktype.class,Worktype::getId,DuWorktype::getWorkTypeId)
                                .eq(DuWorktype::getDuSolutionId,duSolution.getId())
                );
                if(CollectionUtils.isNotEmpty(duWorkTypeList)){
                    String path = systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode()+systemDictDataBiz.queryByCode(Constants.OSS,Constants.DU_FILE).getCode();
                    duWorkTypeList.forEach(i->{
                        if(StringUtils.isNotBlank(i.getVideoUrl())){
                            i.setVideoUrlFull(path + i.getVideoUrl());
                        }
                    });
                }
                duSolution.setDuWorktypeList(duWorkTypeList);
            }
            dispatchUnit.setDuSolutionList(duSolutionList);
@@ -569,10 +914,11 @@
        List<DuLog> duLogList = duLogJoinMapper.selectJoinList(DuLog.class,
                new MPJLambdaWrapper<DuLog>()
                        .selectAll(DuLog.class)
                        .selectAs(Member::getName,DuLog::getCreatorName)
                        .selectAs(SystemUser::getType,DuLog::getCreatorType)
                        .selectAs(SystemUser::getRealname,DuLog::getCreatorName)
                        .selectAs(Company::getName,DuLog::getCompanyName)
                        .leftJoin(Member.class,Member::getId,DuLog::getCreator)
                        .leftJoin(Company.class,Company::getId,Member::getCompanyId)
                        .leftJoin(SystemUser.class,SystemUser::getId,DuLog::getCreator)
                        .leftJoin(Company.class,Company::getId,SystemUser::getCompanyId)
                        .eq(DuLog::getDuId,dispatchUnit.getId())
                        .orderByAsc(DuLog::getCreateDate)
        );
@@ -588,17 +934,22 @@
    @Override
    public List<DispatchUnit> findByDTO(DispatchUnitQueryDTO dispatchUnitQueryDTO) {
        LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
        List<DispatchUnit> dispatchUnitList = dispatchUnitMapper.selectList(new QueryWrapper<DispatchUnit>().lambda()
                .eq(DispatchUnit::getIsdeleted,Constants.ZERO)
                .eq(loginUserInfo.getType().equals(Constants.ONE),DispatchUnit::getCompanyId,loginUserInfo.getCompanyId())
                .eq(DispatchUnit::getStatus,Constants.ZERO)
                .eq(DispatchUnit::getDataType,dispatchUnitQueryDTO.getDataType())
                .apply(!Objects.isNull(dispatchUnitQueryDTO.getSolutionId()), " id in ( select d.dispatch_unit_id from du_solution d where d.solutionId = "+dispatchUnitQueryDTO.getSolutionId()+"  ) " )
                .exists(!Objects.isNull(dispatchUnitQueryDTO.getApplyId()),
                        " select 1 from apply_detail ad where ad.isdeleted = 0 and ad.apply_id = "+dispatchUnitQueryDTO.getApplyId()+" " +
                                " ad.du_id = t.id ")
                .orderByAsc(DispatchUnit::getSortnum)
        List<DispatchUnit> dispatchUnitList  = dispatchUnitJoinMapper.selectJoinList(DispatchUnit.class,
                new MPJLambdaWrapper<DispatchUnit>().selectAll(DispatchUnit.class)
                        .eq(DispatchUnit::getIsdeleted,Constants.ZERO)
                        .eq(DispatchUnit::getStatus,Constants.ZERO)
                        .select("(select b.id from du_solution b where b.isdeleted=0 and b.dispatch_unit_id=t.id and b.solution_id="+dispatchUnitQueryDTO.getSolutionId()+"  order by b.CHECK_DATE desc  limit 1) as du_solution_id" )
                        .eq(loginUserInfo.getType().equals(Constants.ONE),DispatchUnit::getCompanyId,loginUserInfo.getCompanyId())
                        .eq(Objects.nonNull(dispatchUnitQueryDTO.getCompanyId()),DispatchUnit::getCompanyId,dispatchUnitQueryDTO.getCompanyId())
                        .eq(Objects.isNull(dispatchUnitQueryDTO.getDataType()),DispatchUnit::getDataType,Constants.TWO)
                        .eq(!Objects.isNull(dispatchUnitQueryDTO.getDataType()),DispatchUnit::getDataType,dispatchUnitQueryDTO.getDataType())
                        .exists(!Objects.isNull(dispatchUnitQueryDTO.getSolutionId()),
                                "select b.id from du_solution b where b.isdeleted=0 and b.dispatch_unit_id=t.id and b.status = 1 and  b.solution_id="+dispatchUnitQueryDTO.getSolutionId() )
                        .exists(!Objects.isNull(dispatchUnitQueryDTO.getApplyId()),
                                " select 1 from apply_detail ad where ad.isdeleted = 0 and ad.apply_id = "+dispatchUnitQueryDTO.getApplyId()+" " +
                                        " and ad.du_id = t.id ")
        );
        return dispatchUnitList;
    }