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.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.dao.CompanyMapper; import com.doumee.dao.business.dto.ApproveDTO; import com.doumee.dao.business.join.ApproveJoinMapper; import com.doumee.dao.business.model.*; import com.doumee.dao.business.vo.ApproveDataVO; import com.doumee.dao.system.model.SystemUser; import com.doumee.dao.web.response.InternalHomeVO; import com.doumee.service.business.ApproveService; 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.xpath.operations.Bool; 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 2023/12/28 14:09 */ @Service public class ApproveServiceImpl implements ApproveService { @Autowired private ApproveMapper approveMapper; @Autowired private ApproveJoinMapper approveJoinMapper; @Autowired private SystemDictDataBiz systemDictDataBiz; @Autowired private ApproveTemplMapper approveTemplMapper; @Autowired private ApproveParamMapper approveParamMapper; @Autowired private MemberMapper memberMapper; @Autowired private CompanyMapper companyMapper; @Autowired private CarUseBookMapper carUseBookMapper; @Autowired private CarDriverMapper carDriverMapper; @Autowired private VisitsMapper visitsMapper; @Override public Integer create(Approve approve) { approveMapper.insert(approve); return approve.getId(); } @Override public void deleteById(Integer id) { approveMapper.deleteById(id); } @Override public void delete(Approve approve) { UpdateWrapper deleteWrapper = new UpdateWrapper<>(approve); approveMapper.delete(deleteWrapper); } @Override public void deleteByIdInBatch(List ids) { if (CollectionUtils.isEmpty(ids)) { return; } approveMapper.deleteBatchIds(ids); } @Override public void updateById(Approve approve) { approveMapper.updateById(approve); } @Override public void updateByIdInBatch(List approves) { if (CollectionUtils.isEmpty(approves)) { return; } for (Approve approve: approves) { this.updateById(approve); } } @Override public Approve findById(Integer id) { return approveMapper.selectById(id); } @Override public Approve findOne(Approve approve) { QueryWrapper wrapper = new QueryWrapper<>(approve); return approveMapper.selectOne(wrapper); } @Override public List findList(Approve approve) { QueryWrapper wrapper = new QueryWrapper<>(approve); return approveMapper.selectList(wrapper); } @Override public PageData findPage(PageWrap pageWrap) { IPage page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); QueryWrapper queryWrapper = new QueryWrapper<>(); Utils.MP.blankToNull(pageWrap.getModel()); if (pageWrap.getModel().getId() != null) { queryWrapper.lambda().eq(Approve::getId, pageWrap.getModel().getId()); } if (pageWrap.getModel().getCreator() != null) { queryWrapper.lambda().eq(Approve::getCreator, pageWrap.getModel().getCreator()); } if (pageWrap.getModel().getCreateDate() != null) { queryWrapper.lambda().ge(Approve::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate())); queryWrapper.lambda().le(Approve::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate())); } if (pageWrap.getModel().getEdirot() != null) { queryWrapper.lambda().eq(Approve::getEdirot, pageWrap.getModel().getEdirot()); } if (pageWrap.getModel().getEditDate() != null) { queryWrapper.lambda().ge(Approve::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate())); queryWrapper.lambda().le(Approve::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate())); } if (pageWrap.getModel().getIsdeleted() != null) { queryWrapper.lambda().eq(Approve::getIsdeleted, pageWrap.getModel().getIsdeleted()); } if (pageWrap.getModel().getRemark() != null) { queryWrapper.lambda().eq(Approve::getRemark, pageWrap.getModel().getRemark()); } if (pageWrap.getModel().getChekorId() != null) { queryWrapper.lambda().eq(Approve::getChekorId, pageWrap.getModel().getChekorId()); } if (pageWrap.getModel().getTitle() != null) { queryWrapper.lambda().eq(Approve::getTitle, pageWrap.getModel().getTitle()); } if (pageWrap.getModel().getTemplatId() != null) { queryWrapper.lambda().eq(Approve::getTemplatId, pageWrap.getModel().getTemplatId()); } if (pageWrap.getModel().getErpId() != null) { queryWrapper.lambda().eq(Approve::getErpId, pageWrap.getModel().getErpId()); } if (pageWrap.getModel().getStatus() != null) { queryWrapper.lambda().eq(Approve::getStatus, pageWrap.getModel().getStatus()); } if (pageWrap.getModel().getStatusInfo() != null) { queryWrapper.lambda().eq(Approve::getStatusInfo, pageWrap.getModel().getStatusInfo()); } if (pageWrap.getModel().getCheckInfo() != null) { queryWrapper.lambda().eq(Approve::getCheckInfo, pageWrap.getModel().getCheckInfo()); } if (pageWrap.getModel().getCheorId() != null) { queryWrapper.lambda().eq(Approve::getCheorId, pageWrap.getModel().getCheorId()); } if (pageWrap.getModel().getCheckorName() != null) { queryWrapper.lambda().eq(Approve::getCheckorName, pageWrap.getModel().getCheckorName()); } if (pageWrap.getModel().getIsEndCheck() != null) { queryWrapper.lambda().eq(Approve::getIsEndCheck, pageWrap.getModel().getIsEndCheck()); } if (pageWrap.getModel().getObjId() != null) { queryWrapper.lambda().eq(Approve::getObjId, pageWrap.getModel().getObjId()); } if (pageWrap.getModel().getLevel() != null) { queryWrapper.lambda().eq(Approve::getLevel, pageWrap.getModel().getLevel()); } if (pageWrap.getModel().getApproveType() != null) { queryWrapper.lambda().eq(Approve::getApproveType, pageWrap.getModel().getApproveType()); } for(PageWrap.SortData sortData: pageWrap.getSorts()) { if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) { queryWrapper.orderByDesc(sortData.getProperty()); } else { queryWrapper.orderByAsc(sortData.getProperty()); } } return PageData.from(approveMapper.selectPage(page, queryWrapper)); } @Override public long count(Approve approve) { QueryWrapper wrapper = new QueryWrapper<>(approve); return approveMapper.selectCount(wrapper); } /** * 内部人员H5页面首页 * @param memberId * @return */ @Override public InternalHomeVO getHomeData(Integer memberId){ InternalHomeVO internalHomeVO = new InternalHomeVO(); internalHomeVO.setHomeImg(systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.HOME_IMAGE).getCode()); internalHomeVO.setTaskNum(approveMapper.selectCount(new QueryWrapper().lambda().eq(Approve::getChekorId,memberId).eq(Approve::getStatus,Constants.ZERO))); return internalHomeVO; } /** * 创建审批流程 * @param tempType 模板类型 0非施工人员访客申请 1非施工人员访客申请 2访客报备 3公车市内用车 4公车室外用车 5市公司物流车预约 * @param businessId 业务主键 根据 tempType * @param createMemberId 提交流程人员 */ @Override @Transactional(rollbackFor = {Exception.class,BusinessException.class}) public void createApproveFlow(Integer tempType,Integer businessId,Integer createMemberId){ //查询处理模板 ApproveTempl approveTempl = approveTemplMapper.selectOne(new QueryWrapper().lambda() .eq(ApproveTempl::getType,tempType) .eq(ApproveTempl::getIsdeleted,Constants.ZERO) .last(" limit 1 ") ); if(Objects.isNull(approveTempl)){ throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未查询到配置模板"); } //查询配置流程 List approveParamAllList = approveParamMapper.selectList(new QueryWrapper() .lambda().eq(ApproveParam::getIsdeleted,Constants.ZERO) .eq(ApproveParam::getTemplId,approveTempl.getId()) .orderByAsc(ApproveParam::getType) .orderByAsc(ApproveParam::getLevel) ); if(Objects.isNull(approveParamAllList)){ throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未配置审批流程"); } //审批配置 List approveParamList = approveParamAllList.stream().filter(i->i.getType().equals(Constants.ZERO)).collect(Collectors.toList()); if(Objects.isNull(approveParamList)){ throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未配置审批流程"); } List approveCopyList = approveParamAllList.stream().filter(i->i.getType().equals(Constants.ONE)).collect(Collectors.toList()); Member createMember = memberMapper.selectById(createMemberId); if(Objects.isNull(createMember)|| Objects.isNull(createMember.getCompanyId())){ throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"申请人组织信息异常"); } List approveList = new ArrayList<>(); this.organizeApproveData(approveTempl,approveParamList,createMember,businessId,approveList); if(CollectionUtils.isEmpty(approveList)){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"审批流配置错误"); } //处理抄送数据 if(CollectionUtils.isNotEmpty(approveCopyList)){ this.organizeApproveCopyData(approveTempl,approveParamList,businessId,approveList); } approveMapper.insertBatchSomeColumn(approveList); } /** * 组织审批流数据 * @param approveTempl * @param approveParamList * @param createMember * @param businessId * @param approveList */ public void organizeApproveData(ApproveTempl approveTempl,List approveParamList,Member createMember,Integer businessId,List approveList){ //审批业务数据 for (int i = 0; i < approveParamList.size(); i++) { ApproveParam approveParam = approveParamList.get(i); List ids = this.getApproveUserIds(approveParam,createMember); for (Integer memberId:ids) { Approve approve = new Approve(); approve.setCreateDate(new Date()); approve.setIsdeleted(Constants.ZERO); approve.setTemplatId(approveTempl.getId()); approve.setChekorId(memberId); approve.setStatus(i==0?Constants.ONE:Constants.ZERO); approve.setStatusInfo(i==0?"审批中":"待审批"); approve.setIsEndCheck((i+1) == approveParamList.size()?Constants.ONE:Constants.ZERO); approve.setObjId(businessId); approve.setLevel(i+1); approve.setApproveType(approveParam.getApproveType()); approve.setDriverParam(approveParam.getDriverParam()); approve.setAddrParam(approveParam.getAddrParam()); approve.setType(Constants.ZERO); approveList.add(approve); } } } public void organizeApproveCopyData(ApproveTempl approveTempl,List approveCopyList,Integer businessId,List approveList){ for (ApproveParam approveParam:approveCopyList) { if(StringUtils.isBlank(approveParam.getObjIds())){ return; } List memberList = memberMapper.selectList(new QueryWrapper().lambda() .eq(Member::getIsdeleted,Constants.ZERO) .eq(Member::getWorkStatus,Constants.ZERO) .in(Member::getId,approveParam.getObjIds().split(","))); List userIds = new ArrayList<>(); if(CollectionUtils.isNotEmpty(memberList)){ userIds.addAll(memberList.stream().map(m->m.getId()).collect(Collectors.toList())); } //公务用车 默认加入 司机抄送 if(approveTempl.getType()==Constants.THREE||approveTempl.getType()==Constants.FOUR){ CarUseBook carUseBook = carUseBookMapper.selectById(businessId); if(Objects.isNull(carUseBook)){ throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"为查询到用车申请信息"); } CarDriver carDriver = carDriverMapper.selectById(carUseBook.getDriverId()); if(Objects.isNull(carDriver)){ throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"为查询到司机信息"); } userIds.add(carDriver.getMemberId()); } if(CollectionUtils.isNotEmpty(userIds)){ for (Integer memberId:userIds) { Approve approve = new Approve(); approve.setCreateDate(new Date()); approve.setIsdeleted(Constants.ZERO); approve.setTemplatId(approveTempl.getId()); approve.setChekorId(memberId); approve.setObjId(businessId); approve.setType(Constants.ONE); approveList.add(approve); } } } } public List getApproveUserIds(ApproveParam approveParam,Member createMember){ List userIds = new ArrayList<>(); if(approveParam.getMemberType().equals(Constants.ZERO)){ //申请人 userIds.add(createMember.getId()); }else if(approveParam.getMemberType().equals(Constants.ONE)){ //指定人员 if(StringUtils.isBlank(approveParam.getObjIds())){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"审批流配置错误[未配置指定审批人员]"); } List memberList = memberMapper.selectList(new QueryWrapper().lambda() .eq(Member::getIsdeleted,Constants.ZERO) .in(Member::getId,approveParam.getObjIds().split(","))); if(memberList.size()!=approveParam.getObjIds().split(",").length){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"审批流配置错误[指定审批人员信息异常]"); } userIds.addAll(memberList.stream().map(m->m.getId()).collect(Collectors.toList())); }else if(approveParam.getMemberType().equals(Constants.TWO)){ //部门主管审批 //审批部门 Company memberCompany = companyMapper.selectById(createMember.getCompanyId()); if(Objects.isNull(memberCompany)){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"审批流配置错误[指定审批部门未查询到]"); } Company auditCompany = this.getAuditCompanyHead(memberCompany.getParentId(),approveParam.getObjLevel()); if(Objects.isNull(auditCompany)){ //审批部门为空 自动流转下一级审批配置 throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"审批流配置错误[指定审批部门未查询到]"); }else{ //查询部门负责人 Member headMember = memberMapper.selectById(auditCompany.getHeadId()); if(Objects.isNull(headMember)){ //未查询到部门负责人 根据配置处理 由上级主管代替审核/直接结束流程 if(approveParam.getNoleaderOpt().equals(Constants.ONE)&&!Objects.isNull(auditCompany.getParentId())){ auditCompany = companyMapper.selectOne(new QueryWrapper().lambda().eq(Company::getId,auditCompany.getParentId())); //无父级 直接流传下一级审批 if(Objects.isNull(auditCompany)){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"审批流配置错误[指定审批部门未查询到]"); } headMember = memberMapper.selectById(auditCompany.getHeadId()); if(Objects.isNull(headMember)){ //查询部门负责人 为空 自动流转下一级审批配置 throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"审批流配置错误[指定审批部门未设置负责人]"); }else{ //添加审批人 userIds.add(headMember.getId()); } }else{ //添加审批人 userIds.add(headMember.getId()); } } } } return userIds; } /** * 根据配置查询上级数据 * @param companyId 父级部门主键 * @param objLevel 查询级别 */ public Company getAuditCompanyHead(Integer companyId, Integer objLevel){ Integer queryLevel = Constants.ZERO; Company auditCompany = companyMapper.selectById(companyId); while(queryLevel.equals(objLevel)){ auditCompany = companyMapper.selectById(auditCompany.getParentId()); if(Objects.isNull(auditCompany)){ return null; } queryLevel = queryLevel + 1; } return auditCompany; } /** * 整理 审批数据 * @param businessId * @param businessType * @return */ @Override public ApproveDataVO arrangeApprovedData(Integer businessId, Integer businessType, Integer memberId){ ApproveDataVO approveDateVO = new ApproveDataVO(); approveDateVO.setCanBeApproved(Constants.ZERO); List approveGroupList = approveJoinMapper.selectJoinList(Approve.class, new MPJLambdaWrapper(). select(Approve::getLevel,Approve::getType) .eq(Approve::getIsdeleted,Constants.ZERO) .eq(Approve::getObjId,businessId) .isNotNull(Approve::getLevel) .eq(Approve::getObjType,businessType) .groupBy(Approve::getLevel,Approve::getType) ); if(CollectionUtils.isEmpty(approveGroupList)){ return approveDateVO; } //所有的审批记录 List approveAllList = approveJoinMapper.selectJoinList(Approve.class, new MPJLambdaWrapper() .selectAll(Approve.class) .selectAs(Member::getName,Approve::getMemberName) .selectAs(Member::getPhone,Approve::getMemberPhone) .selectAs(Company::getName,Approve::getCompanyName) .leftJoin(Member.class,Member::getId,Approve::getChekorId) .leftJoin(Company.class,Company::getId,Member::getCompanyId) .leftJoin(SystemUser.class,SystemUser::getMemberId,Member::getId) .eq(Approve::getIsdeleted,Constants.ZERO) .eq(Approve::getObjId,businessId) .eq(Approve::getObjType,businessType) .orderByAsc(Approve::getType) .orderByAsc(Approve::getLevel) .orderByAsc(Approve::getId) ); if(CollectionUtils.isEmpty(approveAllList)){ return approveDateVO; } List approveList = approveAllList.stream().filter(i->i.getType().equals(Constants.ZERO)).collect(Collectors.toList()); if(CollectionUtils.isEmpty(approveList)){ return approveDateVO; } approveDateVO.setCanBeApproved(this.canBeApproved(approveList,memberId)); //根据审批级别 处理数据 for (Approve approve:approveGroupList) { approve.setApproveList( approveList.stream().filter(i->Objects.nonNull(i.getLevel())&&i.getLevel().equals(approve.getLevel())).collect(Collectors.toList()) ); } approveDateVO.setApproveList(approveGroupList); approveDateVO.setCopyList(approveAllList.stream().filter(i->i.getType().equals(Constants.ONE)).collect(Collectors.toList())); return approveDateVO; } public Integer canBeApproved(List approveList,Integer memberId){ //获取所有待审批的数据 List waitApprovedList = approveList.stream().filter(i->i.getType().equals(Constants.ZERO)&&i.getStatus().equals(Constants.ZERO)).collect(Collectors.toList()); if(CollectionUtils.isNotEmpty(waitApprovedList)){ //下个审批流程等级 Integer nextApprovedLevel = waitApprovedList.get(Constants.ZERO).getLevel(); //下个审批流程的 所有数据 List nextApprovedList = waitApprovedList.stream().filter(i->i.getStatus().equals(Constants.ZERO)&&i.getLevel().equals(nextApprovedLevel)).collect(Collectors.toList()); //下个审批流程内 如果存在当前 用户的抓紧 则可以进行审批 if(nextApprovedList.stream().filter(i->i.getChekorId().equals(memberId)).collect(Collectors.toList()).size()>0){ return Constants.ONE; } } return Constants.ZERO; } @Override @Transactional(rollbackFor = {Exception.class,BusinessException.class}) public void approved(ApproveDTO approveDTO){ if(Objects.isNull(approveDTO) || Objects.isNull(approveDTO.getObjId()) || Objects.isNull(approveDTO.getObjType()) || Objects.isNull(approveDTO.getStatus()) || Objects.isNull(approveDTO.getLoginUserInfo())){ throw new BusinessException(ResponseStatus.BAD_REQUEST); } if(approveDTO.getStatus().equals(Constants.THREE)&&StringUtils.isBlank(approveDTO.getCheckInfo())){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"请输入拒绝说明"); } Approve approve = approveMapper.selectOne(new QueryWrapper() .lambda() .eq(Approve::getObjId,approveDTO.getObjId()) .eq(Approve::getObjType,approveDTO.getObjType()) .last(" limit 1") ); if(Objects.isNull(approve)){ throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未查询到审批数据"); } if(!approve.getStatus().equals(Constants.ONE)){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"审批记录状态错误!"); } //处理审批信息 approve.setStatus(approveDTO.getStatus()); approve.setCheckInfo(approveDTO.getCheckInfo()); approve.setCheorId(approveDTO.getLoginUserInfo().getMemberId().toString()); approve.setCheckorName(approve.getLoginUserInfo().getRealname()); approve.setStatusInfo(approveDTO.getStatus()==Constants.TWO?"审批通过":approveDTO.getCheckInfo()); Visits visits = new Visits(); CarUseBook carUseBook = new CarUseBook(); this.dealBusinessData(approveDTO,approve,visits,carUseBook); //本级所有 待审批记录 List approveList = approveJoinMapper.selectJoinList(Approve.class, new MPJLambdaWrapper() .selectAll(Approve.class) .eq(Approve::getIsdeleted,Constants.ZERO) .eq(Approve::getObjId,approveDTO.getObjId()) .eq(Approve::getObjType,approveDTO.getObjType()) .eq(Approve::getLevel,approve.getLevel()) .eq(Approve::getStatus,Constants.ONE) .ne(Approve::getId,approve.getId()) ); //处理本次审批的业务数据 approveMapper.updateById(approve); //是否处理 业务数据 Boolean dealBusinessBean = false; //审批驳回情况 if(approveDTO.getStatus().equals(Constants.THREE)){ //修改其他所有待审批和审批中记录数据 approveJoinMapper.update(null,new UpdateWrapper() .lambda() .set(Approve::getStatus,Constants.approveStatus.otherUnPass) .in(Approve::getStatus,Constants.approveStatus.auditIng,Constants.approveStatus.wait) .eq(Approve::getObjId,approve.getObjId()) .eq(Approve::getObjType,approve.getObjType()) .ne(Approve::getId,approve.getId())); }else{ //处理其他业务数据 if(approve.getApproveType().equals(Constants.ZERO)&&approve.getIsEndCheck()==Constants.ONE){ //或签 且 终审 approveJoinMapper.update(null,new UpdateWrapper() .lambda() .set(Approve::getStatus,Constants.approveStatus.otherDeal) .in(Approve::getId,approveList.stream().map(m->m.getId()).collect(Collectors.toList()))); dealBusinessBean = true; }else if(approve.getApproveType().equals(Constants.ZERO)&&approve.getIsEndCheck()!=Constants.ONE){ //或签 非终审 则开启下一步业务流程 /**处理本级数据**/ approveJoinMapper.update(null,new UpdateWrapper() .lambda() .set(Approve::getStatus,Constants.approveStatus.otherDeal) .in(Approve::getId,approveList.stream().map(m->m.getId()).collect(Collectors.toList()))); /**开启下一级别的数据为待审核**/ approveJoinMapper.update(null,new UpdateWrapper() .lambda() .set(Approve::getStatus,Constants.approveStatus.auditIng) .eq(Approve::getStatus,Constants.approveStatus.wait) .eq(Approve::getObjId,approve.getObjId()) .eq(Approve::getObjType,approve.getObjType()) .eq(Approve::getLevel,(approve.getLevel()+1)) ); }else if(approve.getApproveType().equals(Constants.ONE)&&approve.getIsEndCheck()==Constants.ONE){ //会签 且终审 if(approveList.size()==Constants.ZERO){ dealBusinessBean = true; } } } if(approveDTO.getObjType().equals(Constants.approveObjectType.unConstructionVisit) ||approveDTO.getObjType().equals(Constants.approveObjectType.constructionVisit) ||approveDTO.getObjType().equals(Constants.approveObjectType.visitReporting)){ // 访客 三类业务数据 visitsMapper.updateById(visits); if(dealBusinessBean){ //TODO 发送审批通过消息 }else if(approveDTO.getStatus().equals(Constants.THREE)){ //TODO 审批未通过通知 } }else if(approveDTO.getObjType().equals(Constants.approveObjectType.cityUseCar)||approveDTO.getObjType().equals( Constants.approveObjectType.unCityUseCar)){ // 市内外用车申请 carUseBookMapper.updateById(carUseBook); if(dealBusinessBean){ //TODO 发送审批通过消息 }else if(approveDTO.getStatus().equals(Constants.THREE)){ //TODO 审批未通过通知 } }else if(approveDTO.getObjType().equals(Constants.approveObjectType.logisticsCarUse)){ //TODO 物流车预约 } } public void dealBusinessData(ApproveDTO approveDTO,Approve approve,Visits visits,CarUseBook carUseBook){ if(approveDTO.getObjType().equals(Constants.approveObjectType.unConstructionVisit) ||approveDTO.getObjType().equals(Constants.approveObjectType.constructionVisit) ||approveDTO.getObjType().equals(Constants.approveObjectType.visitReporting)){ // 访客 三类业务数据 visits = visitsMapper.selectById(approveDTO.getObjId()); if(Objects.isNull(visits)){ throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未查询到申请记录"); } visits.setStatus(approveDTO.getStatus()); visits.setEditDate(new Date()); visits.setEditor(approveDTO.getLoginUserInfo().getMemberId()); }else if(approveDTO.getObjType().equals(Constants.approveObjectType.cityUseCar)||approveDTO.getObjType().equals( Constants.approveObjectType.unCityUseCar)){ // 市内外用车申请 carUseBook = carUseBookMapper.selectById(approveDTO.getObjId()); if(Objects.isNull(carUseBook)){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"未查询到用车记录"); } carUseBook.setStatus(approveDTO.getStatus()); carUseBook.setEditDate(new Date()); carUseBook.setEditor(approveDTO.getLoginUserInfo().getMemberId()); //如果配置修改司机 且 入参了更换后司机信息 if(approveDTO.getStatus()==Constants.TWO&&approve.getDriverParam().equals(Constants.ONE)){ CarDriver carDriver = carDriverMapper.selectById(approveDTO.getDriverId()); if(Objects.isNull(carDriver)){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"未查询到司机信息"); } carUseBook.setDriverId(carDriver.getId()); } }else if(approveDTO.getObjType().equals(Constants.approveObjectType.logisticsCarUse)){ //TODO 物流车预约 }else{ throw new BusinessException(ResponseStatus.BAD_REQUEST); } } }