111
k94314517
2024-03-05 5e7341ad54041a1c17a60fc4269eb71f44529476
server/service/src/main/java/com/doumee/service/business/impl/DispatchUnitServiceImpl.java
@@ -8,10 +8,7 @@
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.DispatchUnitJoinMapper;
import com.doumee.dao.business.join.DuLogJoinMapper;
@@ -71,6 +68,9 @@
    @Autowired
    private SystemDictDataBiz systemDictDataBiz;
    @Autowired
    private NoticesMapper noticesMapper;
    @Override
    @Transactional(rollbackFor = {Exception.class,BusinessException.class})
    public Integer checkWorktype(DispatchUnit param) {
@@ -102,7 +102,7 @@
        dispatchUnitMapper.updateById(update);
        if(Constants.equalsInteger(param.getWorktypeStatus(),Constants.ONE)){
            //审核通过,修改状态,产生历史版本
            newVersionData(dispatchUnitMapper.selectById(param.getId()),update);
            newVersionData(dispatchUnitMapper.selectById(param.getId()),update,false);
            //存储操作历史
            this.saveDuLog(update,Constants.DispatchUnitLogType.WORK_TYPE_AUDIT_PASS,update.getCheckInfo());
@@ -126,26 +126,42 @@
            //存储操作历史
            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) {
        dispatchUnitMapper.update(null,new UpdateWrapper<DispatchUnit>().lambda()
                .set(DispatchUnit::getDataType,Constants.ZERO)
                .eq(DispatchUnit::getIsdeleted,Constants.ZERO)
                .eq(DispatchUnit::getBaseId,model.getId()));
    private void newVersionData(DispatchUnit model, DispatchUnit update,Boolean flag) {
        DispatchUnit newVersion = new DispatchUnit();
        BeanUtils.copyProperties(model, newVersion);
        newVersion.setWorktypeStatus(Constants.ONE);
        newVersion.setCheckDate(update.getEditDate());
        newVersion.setCheckUserId(update.getCheckUserId());
        newVersion.setCheckInfo(update.getCheckInfo());
        newVersion.setCreateDate(update.getCreateDate());
        newVersion.setCreator(update.getEditor());
        newVersion.setBaseId(model.getBaseId());
        newVersion.setDataType(Constants.TWO);
        dispatchUnitMapper.insert(newVersion);
        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.setWorktypeStatus(Constants.ONE);
            newVersion.setCheckDate(update.getEditDate());
            newVersion.setCheckUserId(update.getCheckUserId());
            newVersion.setCheckInfo(update.getCheckInfo());
            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)
@@ -160,7 +176,6 @@
                .eq(DuSolution::getStatus,Constants.ZERO)
                .eq(DuSolution::getDispatchUnitId,model.getId())
        );
        if(solutions == null || solutions.size() ==0){
@@ -240,7 +255,7 @@
        DispatchUnit dispatchUnit = dispatchUnitMapper.selectById(param.getId());
        if(Constants.equalsInteger(param.getUnitStatus(),Constants.ONE)){
            //审核通过,修改状态,产生历史版本
            newVersionData(dispatchUnit,update);
            newVersionData(dispatchUnit,update,true);
            //存储操作历史
            this.saveDuLog(dispatchUnit,Constants.DispatchUnitLogType.AUDIT_PASS,update.getCheckInfo());
        }else{
@@ -263,6 +278,13 @@
            //存储操作历史
            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
@@ -270,8 +292,6 @@
    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);
@@ -284,13 +304,13 @@
        )> 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());
@@ -349,12 +369,23 @@
                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();
    }
@@ -380,14 +411,6 @@
        )> 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());
@@ -399,7 +422,13 @@
        //存储操作记录
        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();
    }
@@ -421,6 +450,9 @@
        }
        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());
@@ -432,6 +464,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();
    }
@@ -481,6 +522,7 @@
                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);
@@ -511,7 +553,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(),"派遣单位信息已审核");
@@ -766,13 +808,16 @@
        if (pageWrap.getModel().getBaseId() != null) {
            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());
            }
        }
        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;
    }
@@ -847,34 +892,20 @@
    @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.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()+" " +
//                                " ad.du_id = t.id ")
//                .orderByAsc(DispatchUnit::getSortnum)
//        );
        List<DispatchUnit> dispatchUnitList  = dispatchUnitJoinMapper.selectJoinList(DispatchUnit.class,
                new MPJLambdaWrapper<DispatchUnit>().selectAll(DispatchUnit.class)
                        .selectAs(DuSolution::getId,DispatchUnit::getDuSolutionId)
                        .leftJoin(DuSolution.class,DuSolution::getDispatchUnitId,DispatchUnit::getId)
                        .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())
                        .eq(!Objects.isNull(dispatchUnitQueryDTO.getSolutionId()),DuSolution::getSolutionId,dispatchUnitQueryDTO.getSolutionId())
                        .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()+" limit 1) as du_solution_id" )
                        .eq(loginUserInfo.getType().equals(Constants.ONE),DispatchUnit::getCompanyId,loginUserInfo.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()+" " +
                                        " ad.du_id = t.id ")
                                        " and ad.du_id = t.id ")
        );
        return dispatchUnitList;
    }