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; import com.doumee.core.model.PageData; import com.doumee.core.model.PageWrap; import com.doumee.core.utils.Constants; import com.doumee.core.utils.Utils; 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; import com.doumee.dao.business.join.DuSolutionJoinMapper; import com.doumee.dao.business.join.DuWorkTypeJoinMapper; 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; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.github.xiaoymin.knife4j.core.util.CollectionUtils; import com.github.yulichang.wrapper.MPJLambdaWrapper; import org.apache.commons.lang3.StringUtils; import org.apache.shiro.SecurityUtils; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.*; import java.util.stream.Collectors; /** * 派遣单位信息表Service实现 * @author 江蹄蹄 * @date 2024/01/16 10:03 */ @Service public class DispatchUnitServiceImpl implements DispatchUnitService { @Autowired private DispatchUnitMapper dispatchUnitMapper; @Autowired private DispatchUnitJoinMapper dispatchUnitJoinMapper; @Autowired private DuSolutionMapper duSolutionMapper; @Autowired private DuWorktypeMapper duWorktypeMapper; @Autowired private DuLogMapper duLogMapper; @Autowired private DuLogJoinMapper duLogJoinMapper; @Autowired private DuSolutionJoinMapper duSolutionJoinMapper; @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(dispatchUnitMapper.selectById(param.getId()),update,false); //存储操作历史 this.saveDuLog(update,Constants.DispatchUnitLogType.WORK_TYPE_AUDIT_PASS,update.getCheckInfo()); }else{ //更新明细数据为审核失败 duSolutionMapper.update(null,new UpdateWrapper().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().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().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().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().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 newWorktypes = new ArrayList<>(); List solutions = duSolutionMapper.selectList(new QueryWrapper().lambda() .eq(DuSolution::getIsdeleted,Constants.ZERO) .eq(DuSolution::getDispatchUnitId,model.getId())); duSolutionMapper.update(null,new UpdateWrapper().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.setDispatchUnitId(newVersion.getId()); ns.setCheckDate(update.getEditDate()); ns.setStatus(Constants.ONE); ns.setCheckInfo(update.getCheckInfo()); ns.setCheckUserId(update.getCheckUserId()); duSolutionMapper.insert(ns); List worktypes = duWorktypeMapper.selectList(new QueryWrapper().lambda() .eq(DuWorktype::getIsdeleted,Constants.ZERO) .eq(DuWorktype::getDuSolutionId,s.getId())); duWorktypeMapper.update(null,new UpdateWrapper().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) { DuWorktype nw = new DuWorktype(); BeanUtils.copyProperties(w, nw); 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.insertBatchSomeColumn(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().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().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().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()) || CollectionUtils.isEmpty(saveDispatchUnitDTO.getSaveDuSolutionDTOList()) ){ throw new BusinessException(ResponseStatus.BAD_REQUEST); } LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); if(dispatchUnitMapper.selectCount(new QueryWrapper().lambda() .eq(DispatchUnit::getCompanyId,loginUserInfo.getCompanyId()) .eq(DispatchUnit::getName,saveDispatchUnitDTO.getName()) .eq(DispatchUnit::getIsdeleted,Constants.ZERO) )> Constants.ZERO){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"【派遣单位名称】已存在"); }; // if(dispatchUnitMapper.selectCount(new QueryWrapper().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()); dispatchUnit.setCompanyId(loginUserInfo.getCompanyId()); dispatchUnit.setIsdeleted(Constants.ZERO); dispatchUnit.setName(saveDispatchUnitDTO.getName()); dispatchUnit.setCode(saveDispatchUnitDTO.getCode()); dispatchUnit.setContent(saveDispatchUnitDTO.getContent()); dispatchUnit.setStatus(Constants.ZERO); dispatchUnit.setVersion(UUID.randomUUID().toString()); dispatchUnit.setUnitStatus(Constants.ZERO); dispatchUnit.setWorktypeStatus(Constants.ZERO); dispatchUnit.setDataType(Constants.ZERO); dispatchUnitMapper.insert(dispatchUnit); //存储操作历史 this.saveDuLog(dispatchUnit,Constants.DispatchUnitLogType.UPLOAD,null); List saveDuSolutionDTOList = saveDispatchUnitDTO.getSaveDuSolutionDTOList(); List duSolutionIdS = saveDuSolutionDTOList.stream().map(m->m.getSolutionId()).collect(Collectors.toList()); HashSet 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); duSolution.setSolutionId(saveDuSolutionDTO.getSolutionId()); duSolutionMapper.insert(duSolution); List saveDuWorkTypeDTOList = saveDuSolutionDTO.getSaveDuWorkTypeDTOList(); List duWorkTypeIdS = saveDuWorkTypeDTOList.stream().map(m->m.getWorkTypeId()).collect(Collectors.toList()); HashSet 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()+"】该方案下未选择工种!"); } for (int j = 0; j < saveDuWorkTypeDTOList.size(); j++) { SaveDuWorkTypeDTO saveDuWorkTypeDTO = saveDuWorkTypeDTOList.get(j); 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(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().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(); } @Override @Transactional(rollbackFor = {Exception.class,BusinessException.class}) public Integer editDispatchUnit(SaveDispatchUnitDTO saveDispatchUnitDTO) { if(Objects.isNull(saveDispatchUnitDTO) ||Objects.isNull(saveDispatchUnitDTO.getId()) ){ throw new BusinessException(ResponseStatus.BAD_REQUEST); } LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); DispatchUnit dispatchUnit = this.dispatchUnitMapper.selectById(saveDispatchUnitDTO.getId()); if(Objects.isNull(dispatchUnit)){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"未查询到派遣单位信息"); } if(dispatchUnitMapper.selectCount(new QueryWrapper().lambda() .ne(DispatchUnit::getId,saveDispatchUnitDTO.getId()) .eq(DispatchUnit::getCompanyId,loginUserInfo.getCompanyId()) .eq(DispatchUnit::getName,saveDispatchUnitDTO.getName()) .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.setEditDate(new Date()); dispatchUnit.setEditor(loginUserInfo.getId()); dispatchUnitMapper.updateById(dispatchUnit); //存储操作记录 this.saveDuLog(dispatchUnit,Constants.DispatchUnitLogType.EDIT_UNIT,null); //存储待办信息 Constants.NoticeObjectType noticeObjectType = Constants.NoticeObjectType.DISPATCH_UNIT; //删除其他待办 noticesMapper.delete(new QueryWrapper().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(); } /** * 添加方案信息 * @param saveDispatchUnitDTO * @return */ @Override @Transactional(rollbackFor = {Exception.class,BusinessException.class}) public Integer createSolution(SaveDispatchUnitDTO saveDispatchUnitDTO) { if(Objects.isNull(saveDispatchUnitDTO) ||Objects.isNull(saveDispatchUnitDTO.getId()) || !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()); dispatchUnitMapper.updateById(dispatchUnit); if(Objects.isNull(dispatchUnit)){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"未查询到派遣单位信息"); } //存储操作历史 this.saveDuLog(dispatchUnit,Constants.DispatchUnitLogType.ADD_WORK_TYPE,null); this.dealDuData(saveDispatchUnitDTO,loginUserInfo); //存储待办信息 Constants.NoticeObjectType noticeObjectType = Constants.NoticeObjectType.DISPATCH_UNIT; //删除其他待办 noticesMapper.delete(new QueryWrapper().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(); } public void dealDuData(SaveDispatchUnitDTO saveDispatchUnitDTO,LoginUserInfo loginUserInfo){ List saveDuSolutionDTOList = saveDispatchUnitDTO.getSaveDuSolutionDTOList(); for (int i = 0; i < saveDuSolutionDTOList.size(); i++) { SaveDuSolutionDTO saveDuSolutionDTO = saveDuSolutionDTOList.get(i); if(Objects.isNull(saveDuSolutionDTO.getSolutionId())){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"【"+saveDuSolutionDTO.getSolutionName()+"】该方案下选择方案信息异常!"); } DuSolution duSolution = duSolutionMapper.selectOne(new QueryWrapper().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().lambda().eq(DuSolution::getDispatchUnitId,saveDuSolutionDTO.getId())); 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()); duSolutionMapper.insert(duSolution); } List saveDuWorkTypeDTOList = saveDuSolutionDTO.getSaveDuWorkTypeDTOList(); if(!CollectionUtils.isNotEmpty(saveDuSolutionDTOList)){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"【"+saveDuSolutionDTO.getSolutionName()+"】该方案下未选择工种!"); } for (int j = 0; j < saveDuWorkTypeDTOList.size(); j++) { SaveDuWorkTypeDTO saveDuWorkTypeDTO = saveDuWorkTypeDTOList.get(j); if(Objects.isNull(saveDuWorkTypeDTO.getWorkTypeId())){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"【"+saveDuSolutionDTO.getSolutionName()+"】该方案下"+saveDuWorkTypeDTO.getWorkTypeName()+"该工种信息异常"); } if(duWorktypeMapper.selectCount(new QueryWrapper() .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()+"该工种已存在"); } Integer duWorkTypeNum = duWorktypeMapper.selectCount(new QueryWrapper().lambda().eq(DuWorktype::getDuSolutionId,duSolution.getId())); 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); duWorktypeMapper.insert(duWorktype); } } } @Override @Transactional(rollbackFor = {BusinessException.class,Exception.class}) public void auditData(DispatchUnitAuditDTO dispatchUnitAuditDTO){ if(Objects.isNull(dispatchUnitAuditDTO) || Objects.isNull(dispatchUnitAuditDTO.getId()) || Objects.isNull(dispatchUnitAuditDTO.getAuditType()) || Objects.isNull(dispatchUnitAuditDTO.getStatus()) || !(dispatchUnitAuditDTO.getAuditType().equals(Constants.ZERO) || dispatchUnitAuditDTO.getAuditType().equals(Constants.ONE)) || !(dispatchUnitAuditDTO.getStatus().equals(Constants.ONE) || dispatchUnitAuditDTO.getAuditType().equals(Constants.TWO)) ){ throw new BusinessException(ResponseStatus.BAD_REQUEST); } LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); if(loginUserInfo.getType().equals(Constants.ONE)){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"用户类型错误:企业用户无法进行该操作"); } DispatchUnit dispatchUnit = this.dispatchUnitMapper.selectById(dispatchUnitAuditDTO.getId()); 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(),"派遣单位信息已审核"); } dispatchUnit.setStatus(dispatchUnitAuditDTO.getStatus()); dispatchUnit.setCheckDate(new Date()); dispatchUnit.setCheckUserId(loginUserInfo.getId()); dispatchUnit.setCheckInfo(dispatchUnitAuditDTO.getAuditRemark()); dispatchUnitMapper.updateById(dispatchUnit); if(dispatchUnitAuditDTO.getStatus().equals(Constants.ONE)){ this.saveDuLog(dispatchUnit,Constants.DispatchUnitLogType.AUDIT_PASS,dispatchUnitAuditDTO.getAuditRemark()); }else{ this.saveDuLog(dispatchUnit,Constants.DispatchUnitLogType.AUDIT_UN_PASS,dispatchUnitAuditDTO.getAuditRemark()); } }else if(dispatchUnitAuditDTO.getAuditType().equals(Constants.ONE)){ if(!dispatchUnit.getStatus().equals(Constants.ONE)){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"派遣单位信息未审核,无法进行该操作"); } if(dispatchUnitAuditDTO.getStatus().equals(Constants.ONE)){ this.saveDuLog(dispatchUnit,Constants.DispatchUnitLogType.WORK_TYPE_AUDIT_PASS,dispatchUnitAuditDTO.getAuditRemark()); }else{ this.saveDuLog(dispatchUnit,Constants.DispatchUnitLogType.WORK_TYPE_AUDIT_UN_PASS,dispatchUnitAuditDTO.getAuditRemark()); } }else{ throw new BusinessException(ResponseStatus.BAD_REQUEST); } //更新方案数据 List duSolutionList = duSolutionMapper.selectList(new QueryWrapper().lambda() .eq(DuSolution::getStatus,Constants.ZERO) .eq(DuSolution::getIsdeleted,Constants.ZERO) .eq(DuSolution::getDispatchUnitId,dispatchUnit.getId())); for (DuSolution duSolution:duSolutionList) { duSolution.setStatus(dispatchUnitAuditDTO.getStatus()); duSolution.setCheckDate(new Date()); duSolution.setCheckUserId(loginUserInfo.getId()); duSolution.setCheckInfo(dispatchUnitAuditDTO.getAuditRemark()); dispatchUnitMapper.updateById(dispatchUnit); //查询工种数据 List duWorktypeList = duWorktypeMapper.selectList(new QueryWrapper().lambda() .eq(DuWorktype::getStatus,Constants.ZERO) .eq(DuWorktype::getIsdeleted,Constants.ZERO) .eq(DuWorktype::getDuSolutionId,duSolution.getId())); for (DuWorktype duWorktype:duWorktypeList) { duWorktype.setStatus(dispatchUnitAuditDTO.getStatus()); duWorktype.setCheckDate(new Date()); duWorktype.setCheckUserId(loginUserInfo.getId()); duWorktype.setCheckInfo(dispatchUnitAuditDTO.getAuditRemark()); dispatchUnitMapper.updateById(dispatchUnit); } } this.saveHistory(dispatchUnit); } public void saveHistory(DispatchUnit dispatchUnit){ if(dispatchUnit.getStatus().equals(Constants.ONE)){ DispatchUnit his = new DispatchUnit(); BeanUtils.copyProperties(dispatchUnit,his); his.setBaseId(dispatchUnit.getId()); his.setId(null); his.setDataType(Constants.TWO); dispatchUnitMapper.insert(his); //修改其他历史版本数据为 历史版本 dispatchUnitMapper.update(null,new UpdateWrapper().lambda().set(DispatchUnit::getDataType,Constants.ONE).eq(DispatchUnit::getBaseId,dispatchUnit.getId()) .eq(DispatchUnit::getDataType,Constants.TWO).ne(DispatchUnit::getId,his.getId()) ); //存储方案数据 List duSolutionList = duSolutionMapper.selectList(new QueryWrapper().lambda() .eq(DuSolution::getStatus,Constants.ONE) .eq(DuSolution::getDispatchUnitId,dispatchUnit.getId())); for (DuSolution duSolution:duSolutionList) { DuSolution hisDuSolution = new DuSolution(); BeanUtils.copyProperties(duSolution,hisDuSolution); hisDuSolution.setId(null); hisDuSolution.setDispatchUnitId(his.getId()); duSolutionMapper.insert(hisDuSolution); //查询工种数据 List duWorktypeList = duWorktypeMapper.selectList(new QueryWrapper().lambda() .eq(DuWorktype::getStatus,Constants.ONE) .eq(DuWorktype::getDuSolutionId,duSolution.getId())); for (DuWorktype duWorktype:duWorktypeList) { DuWorktype hisDuWorktype = new DuWorktype(); BeanUtils.copyProperties(duWorktype,hisDuWorktype); hisDuWorktype.setId(null); hisDuWorktype.setDuSolutionId(hisDuSolution.getId()); duWorktypeMapper.insert(hisDuWorktype); } } } } public void saveDuLog(DispatchUnit dispatchUnit,Constants.DispatchUnitLogType dispatchUnitLogType,String content){ LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); DuLog duLog = new DuLog(); duLog.setCreateDate(new Date()); duLog.setCreator(loginUserInfo.getId()); duLog.setIsdeleted(Constants.ZERO); duLog.setDuId(dispatchUnit.getId()); duLog.setTitle(dispatchUnitLogType.getName()); duLog.setContent(content); duLog.setObjType(dispatchUnitLogType.getKey()); duLog.setObjId(Integer.toString(dispatchUnit.getId())); duLog.setStatus(Constants.ZERO); duLogMapper.insert(duLog); } @Override public void deleteById(Integer id) { dispatchUnitMapper.deleteById(id); } @Override public void delete(DispatchUnit dispatchUnit) { UpdateWrapper deleteWrapper = new UpdateWrapper<>(dispatchUnit); dispatchUnitMapper.delete(deleteWrapper); } @Override public void deleteByIdInBatch(List ids) { if (CollectionUtils.isEmpty(ids)) { return; } dispatchUnitMapper.deleteBatchIds(ids); } @Override public void updateById(DispatchUnit dispatchUnit) { dispatchUnitMapper.updateById(dispatchUnit); } @Override public void updateByIdInBatch(List dispatchUnits) { if (CollectionUtils.isEmpty(dispatchUnits)) { return; } for (DispatchUnit dispatchUnit: dispatchUnits) { this.updateById(dispatchUnit); } } @Override public DispatchUnit findById(Integer id) { return dispatchUnitMapper.selectById(id); } @Override public DispatchUnit findOne(DispatchUnit dispatchUnit) { QueryWrapper wrapper = new QueryWrapper<>(dispatchUnit); return dispatchUnitMapper.selectOne(wrapper); } @Override public List findList(DispatchUnit dispatchUnit) { dispatchUnit.setIsdeleted(Constants.ZERO); QueryWrapper wrapper = new QueryWrapper<>(dispatchUnit); return dispatchUnitMapper.selectList(wrapper); } @Override public PageData findPage(PageWrap pageWrap) { IPage page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); if(pageWrap.getModel().getDataType() ==null){ pageWrap.getModel().setDataType(Constants.ZERO); } LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); Utils.MP.blankToNull(pageWrap.getModel()); MPJLambdaWrapper queryWrapper = new MPJLambdaWrapper(); 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.eq(DispatchUnit::getId, pageWrap.getModel().getId()); } if (pageWrap.getModel().getCreator() != null) { queryWrapper.eq(DispatchUnit::getCreator, pageWrap.getModel().getCreator()); } if (pageWrap.getModel().getCreateDate() != null) { 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.eq(DispatchUnit::getEditor, pageWrap.getModel().getEditor()); } if (pageWrap.getModel().getEditDate() != null) { 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.eq(DispatchUnit::getIsdeleted, pageWrap.getModel().getIsdeleted()); } if (pageWrap.getModel().getName() != null) { queryWrapper.like(DispatchUnit::getName, pageWrap.getModel().getName()); } if (pageWrap.getModel().getRemark() != null) { queryWrapper.eq(DispatchUnit::getRemark, pageWrap.getModel().getRemark()); } if (pageWrap.getModel().getStatus() != null) { queryWrapper.eq(DispatchUnit::getStatus, pageWrap.getModel().getStatus()); } if (pageWrap.getModel().getUnitStatus() != null) { queryWrapper.eq(DispatchUnit::getUnitStatus, pageWrap.getModel().getUnitStatus()); } if (pageWrap.getModel().getWorktypeStatus() != null) { queryWrapper.eq(DispatchUnit::getWorktypeStatus, pageWrap.getModel().getWorktypeStatus()); } if (pageWrap.getModel().getSortnum() != null) { queryWrapper.eq(DispatchUnit::getSortnum, pageWrap.getModel().getSortnum()); } if (pageWrap.getModel().getCompanyId() != null) { queryWrapper.eq(DispatchUnit::getCompanyId, pageWrap.getModel().getCompanyId()); } if (pageWrap.getModel().getPhone() != null) { queryWrapper.eq(DispatchUnit::getPhone, pageWrap.getModel().getPhone()); } if (pageWrap.getModel().getLinkname() != null) { queryWrapper.eq(DispatchUnit::getLinkname, pageWrap.getModel().getLinkname()); } if (pageWrap.getModel().getCheckDate() != null) { 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.eq(DispatchUnit::getCheckInfo, pageWrap.getModel().getCheckInfo()); } if (pageWrap.getModel().getCheckUserId() != null) { queryWrapper.eq(DispatchUnit::getCheckUserId, pageWrap.getModel().getCheckUserId()); } if (pageWrap.getModel().getVersion() != null) { queryWrapper.eq(DispatchUnit::getVersion, pageWrap.getModel().getVersion()); } if (pageWrap.getModel().getDataType() != null) { queryWrapper.eq(DispatchUnit::getDataType, pageWrap.getModel().getDataType()); } if (pageWrap.getModel().getBaseId() != null) { queryWrapper.eq(DispatchUnit::getBaseId, pageWrap.getModel().getBaseId()); } 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 pageData = PageData.from(dispatchUnitJoinMapper.selectJoinPage(page,DispatchUnit.class, queryWrapper)); return pageData; } @Override public long count(DispatchUnit dispatchUnit) { QueryWrapper wrapper = new QueryWrapper<>(dispatchUnit); return dispatchUnitMapper.selectCount(wrapper); } @Override public DispatchUnit detailById(Integer id) { DispatchUnit dispatchUnit = dispatchUnitJoinMapper.selectJoinOne(DispatchUnit.class, new MPJLambdaWrapper() .selectAll(DispatchUnit.class) .selectAs(Company::getName,DispatchUnit::getCompanyName) .leftJoin(Company.class,Company::getId,DispatchUnit::getCompanyId) .eq(DispatchUnit::getId,id) ); //方案配置表 List duSolutionList = duSolutionJoinMapper.selectJoinList(DuSolution.class, new MPJLambdaWrapper() .selectAll(DuSolution.class) .selectAs(Solutions::getName,DuSolution::getSolutionName) .leftJoin(Solutions.class,Solutions::getId,DuSolution::getSolutionId) .eq(DuSolution::getDispatchUnitId,dispatchUnit.getId()) .orderByAsc(DuSolution::getSortnum) ); if(CollectionUtils.isNotEmpty(duSolutionList)){ for (DuSolution duSolution:duSolutionList) { //查询方案下的工种信息 List duWorkTypeList = duWorkTypeJoinMapper.selectJoinList(DuWorktype.class, new MPJLambdaWrapper() .selectAll(DuWorktype.class) .selectAs(Worktype::getName,DuWorktype::getWorkTypeName) .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); } //查询操作记录 List duLogList = duLogJoinMapper.selectJoinList(DuLog.class, new MPJLambdaWrapper() .selectAll(DuLog.class) .selectAs(SystemUser::getType,DuLog::getCreatorType) .selectAs(SystemUser::getRealname,DuLog::getCreatorName) .selectAs(Company::getName,DuLog::getCompanyName) .leftJoin(SystemUser.class,SystemUser::getId,DuLog::getCreator) .leftJoin(Company.class,Company::getId,SystemUser::getCompanyId) .eq(DuLog::getDuId,dispatchUnit.getId()) .orderByAsc(DuLog::getCreateDate) ); dispatchUnit.setDuLogList(duLogList); return dispatchUnit; } /** * 查询企业下的派遣单位 * @return */ @Override public List findByDTO(DispatchUnitQueryDTO dispatchUnitQueryDTO) { LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); List dispatchUnitList = dispatchUnitJoinMapper.selectJoinList(DispatchUnit.class, new MPJLambdaWrapper().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()+" 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()+" " + " and ad.du_id = t.id ") ); return dispatchUnitList; } }