|  |  | 
 |  |  | import com.doumee.biz.system.SystemDictDataBiz; | 
 |  |  | import com.doumee.core.constants.ResponseStatus; | 
 |  |  | import com.doumee.core.exception.BusinessException; | 
 |  |  | import com.doumee.core.haikang.model.HKConstants; | 
 |  |  | import com.doumee.core.haikang.model.param.BaseResponse; | 
 |  |  | import com.doumee.core.haikang.model.param.request.ParkReservationAddRequest; | 
 |  |  | import com.doumee.core.haikang.model.param.respose.ParkReservationAddResponse; | 
 |  |  | import com.doumee.core.haikang.service.HKService; | 
 |  |  | import com.doumee.core.model.PageData; | 
 |  |  | import com.doumee.core.model.PageWrap; | 
 |  |  | import com.doumee.core.utils.Constants; | 
 |  |  | import com.doumee.core.utils.DateUtil; | 
 |  |  | import com.doumee.core.utils.SmsConstants; | 
 |  |  | import com.doumee.core.utils.Utils; | 
 |  |  | import com.doumee.core.wx.wxPlat.WxPlatConstants; | 
 |  |  | import com.doumee.core.wx.wxPlat.WxPlatNotice; | 
 |  |  | import com.doumee.dao.business.*; | 
 |  |  | import com.doumee.dao.business.dao.CompanyMapper; | 
 |  |  | import com.doumee.dao.business.dao.SmsConfigMapper; | 
 |  |  | import com.doumee.dao.business.dao.SmsEmailMapper; | 
 |  |  | import com.doumee.dao.business.dto.ApproveDTO; | 
 |  |  | import com.doumee.dao.business.join.ApproveJoinMapper; | 
 |  |  | import com.doumee.dao.business.join.CarUseBookJoinMapper; | 
 |  |  | import com.doumee.dao.business.join.VisitsJoinMapper; | 
 |  |  | import com.doumee.dao.business.model.*; | 
 |  |  | import com.doumee.dao.business.vo.ApproveDataVO; | 
 |  |  | import com.doumee.dao.system.SystemUserMapper; | 
 |  |  | import com.doumee.dao.system.dto.NoticesDTO; | 
 |  |  | import com.doumee.dao.system.join.NoticesJoinMapper; | 
 |  |  | import com.doumee.dao.system.model.Notices; | 
 |  |  | 
 |  |  | 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.doumee.service.system.NoticesService; | 
 |  |  | import com.doumee.service.business.third.EmayService; | 
 |  |  | import com.github.xiaoymin.knife4j.core.util.CollectionUtils; | 
 |  |  | import com.github.yulichang.wrapper.MPJLambdaWrapper; | 
 |  |  | import io.swagger.models.auth.In; | 
 |  |  | import lombok.extern.slf4j.Slf4j; | 
 |  |  | import org.apache.commons.lang3.StringUtils; | 
 |  |  | import org.apache.xpath.operations.Bool; | 
 |  |  | import org.springframework.beans.BeanUtils; | 
 |  |  | import org.springframework.beans.factory.annotation.Autowired; | 
 |  |  | import org.springframework.context.annotation.Bean; | 
 |  |  | import org.springframework.stereotype.Service; | 
 |  |  | import org.springframework.transaction.annotation.Transactional; | 
 |  |  |  | 
 |  |  | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     private SystemDictDataBiz systemDictDataBiz; | 
 |  |  |     @Autowired | 
 |  |  |     private WxNoticeConfigMapper wxNoticeConfigMapper; | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     private ApproveTemplMapper approveTemplMapper; | 
 |  |  | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     private CarUseBookMapper carUseBookMapper; | 
 |  |  |      | 
 |  |  |     @Autowired | 
 |  |  |     private SystemUserMapper systemUserMapper; | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     private CarDriverMapper carDriverMapper; | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     private VisitsMapper visitsMapper; | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     private VisitsJoinMapper visitsJoinMapper; | 
 |  |  |     private VisitsJoinMapper visitsMapper; | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     private CarUseBookJoinMapper carUseBookJoinMapper; | 
 |  |  | 
 |  |  |     private PlatformJobMapper platformJobMapper; | 
 |  |  |     @Autowired | 
 |  |  |     private PlatformLogMapper platformLogMapper; | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     private PlatformReasonMapper platformReasonMapper; | 
 |  |  |     @Autowired | 
 |  |  |     private PlatformGroupMapper platformGroupMapper; | 
 |  |  |     @Autowired | 
 |  |  |     private ParksMapper parksMapper; | 
 |  |  |     @Autowired | 
 |  |  |     private ParkBookMapper parkBookMapper; | 
 |  |  |     @Autowired | 
 |  |  |     private VisitParkMapper visitParkMapper; | 
 |  |  |     @Autowired | 
 |  |  |     private SmsConfigMapper smsConfigMapper; | 
 |  |  |     @Autowired | 
 |  |  |     private SmsEmailMapper smsEmailMapper; | 
 |  |  |     @Autowired | 
 |  |  |     private EmayService emayService; | 
 |  |  |     @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<Approve> deleteWrapper = new UpdateWrapper<>(approve); | 
 |  |  |         approveMapper.delete(deleteWrapper); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     public void deleteByIdInBatch(List<Integer> ids) { | 
 |  |  |         if (CollectionUtils.isEmpty(ids)) { | 
 |  |  | 
 |  |  |             if(CollectionUtils.isNotEmpty(noticesList)){ | 
 |  |  |                 //待我处理的数据 | 
 |  |  |                 internalHomeVO.setNoticeWaitNum( | 
 |  |  |                         noticesList.stream().filter(i->Constants.equalsInteger(i.getUserId(),memberId) | 
 |  |  |                         noticesList.stream().filter(i-> | 
 |  |  |                                 Constants.equalsInteger(i.getUserId(),memberId) | 
 |  |  |                                 &&Constants.equalsInteger(i.getStatus(),Constants.ZERO) | 
 |  |  |                                 &&Constants.equalsInteger(i.getSendacopy(),Constants.ZERO) | 
 |  |  |                         ).count() | 
 |  |  |                 ); | 
 |  |  |                 //已处理数据 | 
 |  |  |                 internalHomeVO.setNoticeDealNum( | 
 |  |  |                         noticesList.stream().filter(i->Constants.equalsInteger(i.getUserId(),memberId) | 
 |  |  |                         noticesList.stream().filter(i-> | 
 |  |  |                                 Constants.equalsInteger(i.getUserId(),memberId) | 
 |  |  |                                 &&StringUtils.equals(i.getParam4(),i.getUserId().toString()) | 
 |  |  |                                 &&Constants.equalsInteger(i.getStatus(),Constants.ONE) | 
 |  |  |                                 &&Constants.equalsInteger(i.getSendacopy(),Constants.ZERO) | 
 |  |  | 
 |  |  |                         noticesJoinMapper.selectCount(new QueryWrapper<Notices>().lambda().eq(Notices::getParam3,memberId)) | 
 |  |  |                 ); | 
 |  |  |                 //抄送我的数据 | 
 |  |  |                 internalHomeVO.setNoticeCopyNum( | 
 |  |  |                  internalHomeVO.setNoticeCopyNum( | 
 |  |  |                         noticesList.stream().filter(i->Constants.equalsInteger(i.getUserId(),memberId) | 
 |  |  |                                 &&Constants.equalsInteger(i.getSendacopy(),Constants.ONE) | 
 |  |  |                                 &&Constants.equalsInteger(i.getReaded(),Constants.ZERO) | 
 |  |  |                         ).count() | 
 |  |  |                 ); | 
 |  |  |             } | 
 |  |  | 
 |  |  |             internalHomeVO.setNoticeCopyNum( | 
 |  |  |                     noticesList.stream().filter(i->Constants.equalsInteger(i.getUserId(),noticesDTO.getMemberId()) | 
 |  |  |                             &&Constants.equalsInteger(i.getSendacopy(),Constants.ONE) | 
 |  |  |                             &&Constants.equalsInteger(i.getReaded(),Constants.ZERO) | 
 |  |  |                     ).count() | 
 |  |  |             ); | 
 |  |  |         } | 
 |  |  | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     @Transactional(rollbackFor = {Exception.class,BusinessException.class}) | 
 |  |  |     public void createApproveForPlatfrom(Integer tempId,Integer businessId,Integer createMemberId){ | 
 |  |  |         //查询处理模板 | 
 |  |  |         ApproveTempl approveTempl = approveTemplMapper.selectById(tempId); | 
 |  |  |         if(Objects.isNull(approveTempl)){ | 
 |  |  |             throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未查询到审批流配置模板"); | 
 |  |  |         } | 
 |  |  |         //查询配置流程 | 
 |  |  |         List<ApproveParam> approveParamAllList = approveParamMapper.selectList(new QueryWrapper<ApproveParam>() | 
 |  |  |                 .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<ApproveParam> 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<ApproveParam> approveCopyList = approveParamAllList.stream().filter(i->i.getType().equals(Constants.ONE)).collect(Collectors.toList()); | 
 |  |  |  | 
 |  |  |         Member createMember = memberMapper.selectById(createMemberId); | 
 |  |  |         if(Objects.isNull(createMember)){ | 
 |  |  |             throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"申请人组织信息异常"); | 
 |  |  |         } | 
 |  |  |         List<Approve> 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,approveCopyList,businessId,approveList); | 
 |  |  |         } | 
 |  |  |         approveJoinMapper.insert(approveList); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 组织审批流数据 | 
 |  |  |      * @param approveTempl | 
 |  |  | 
 |  |  |         approveList.add(createUserApprove); | 
 |  |  |  | 
 |  |  |         //查询所有待处理人 | 
 |  |  |  | 
 |  |  |         String token = systemDictDataBiz.queryByCode(Constants.WX_PLATFORM,Constants.WX_PLATFORM_ACCESS_TOKEN).getCode(); | 
 |  |  |         //审批业务数据 | 
 |  |  |         for (int i = 0; i < approveParamList.size(); i++) { | 
 |  |  |             ApproveParam approveParam = approveParamList.get(i); | 
 |  |  |             List<Integer> ids = this.getApproveUserIds(approveParam,createMember); | 
 |  |  |             List<Member> memberList = memberMapper.selectList(new QueryWrapper<Member>().lambda().in(Member::getId,ids)); | 
 |  |  |             List<Member> memberList = memberMapper.selectJoinList(Member.class, | 
 |  |  |                     new MPJLambdaWrapper<Member>() | 
 |  |  |                             .selectAll(Member.class) | 
 |  |  |                             .selectAs(SystemUser::getOpenid,Member::getSystemOpenid) | 
 |  |  |                             .leftJoin(SystemUser.class,SystemUser::getMemberId,Member::getId) | 
 |  |  |                             .in(Member::getId,ids) | 
 |  |  |             ); | 
 |  |  |             List<String> memberNameList =memberList.stream().map(m->m.getName()).collect(Collectors.toList()); | 
 |  |  |             String memberNames = String.join(",",memberNameList); | 
 |  |  |             Integer noticeType = Constants.approveTypeToNoticeType(approveTempl.getType()); | 
 |  |  |             String title = "【访客申请】申请人 - "; | 
 |  |  |             String title = "[访客申请]申请人-"; | 
 |  |  |             Map<String,Object> jsonMap = new HashMap<>(); | 
 |  |  |             for (int j = 0; j < memberList.size(); j++) { | 
 |  |  |                 Member member = memberList.get(j); | 
 |  |  | 
 |  |  |                 approve.setTemplatId(approveTempl.getId()); | 
 |  |  |                 approve.setChekorId(memberId); | 
 |  |  |                 approve.setStatus(i==0?Constants.ONE:Constants.ZERO); | 
 |  |  |                 approve.setStatusInfo(i==0?"审批中":"待审批"); | 
 |  |  |                 approve.setTitle("审批人"); | 
 |  |  |                 approve.setStatusInfo(i==0?"审批中":"待处理"); | 
 |  |  |                 approve.setTitle(StringUtils.isBlank(approveParam.getRemark())?"审批中":approveParam.getRemark()); | 
 |  |  |                 approve.setIsEndCheck((i+1) == approveParamList.size()?Constants.ONE:Constants.ZERO); | 
 |  |  |                 approve.setObjId(businessId); | 
 |  |  |                 approve.setLevel(i+1); | 
 |  |  | 
 |  |  |                 approve.setAddrParam(approveParam.getAddrParam()); | 
 |  |  |                 approve.setType(Constants.ZERO); | 
 |  |  |                 approveList.add(approve); | 
 |  |  |  | 
 |  |  |                 WxPlatNotice wxPlatNotice = new WxPlatNotice(); | 
 |  |  |                 if(Constants.equalsInteger(approve.getStatus(),Constants.ONE) && StringUtils.isNotBlank(member.getPhone())){ | 
 |  |  |                     //发送短信通知 | 
 |  |  |                     if(Constants.equalsInteger(noticeType,Constants.noticesObjectType.reason)){ | 
 |  |  |                         //物流车预约 | 
 |  |  |                         SmsEmailServiceImpl.sendPlatformBookSms(systemDictDataBiz, | 
 |  |  |                                 emayService,smsEmailMapper,smsConfigMapper,platformBooksMapper,businessId, | 
 |  |  |                                 SmsConstants.platformBookContent.platformBookWaitAudit, | 
 |  |  |                                 null,Arrays.asList(member.getPhone().split(",")) | 
 |  |  |                         ); | 
 |  |  |                         //公众号通知 | 
 |  |  |                         if(StringUtils.isNotBlank(member.getSystemOpenid())){ | 
 |  |  |                             wxPlatNotice.sendPlatformBookTemplateNotice(systemDictDataBiz, | 
 |  |  |                                     wxNoticeConfigMapper, | 
 |  |  |                                     platformBooksMapper.selectById(businessId), | 
 |  |  |                                     WxPlatConstants.platformBookContent.platformBookWaitAudit, | 
 |  |  |                                     token, | 
 |  |  |                                     Arrays.asList(member.getSystemOpenid().split(",")), | 
 |  |  |                                     Constants.ONE); | 
 |  |  |                         } | 
 |  |  |                     }else if(Constants.equalsInteger(noticeType,Constants.noticesObjectType.visit)){ | 
 |  |  |                         //访客申请 | 
 |  |  |                         //短信通知 | 
 |  |  |                         SmsEmailServiceImpl.sendVisitSms(systemDictDataBiz, | 
 |  |  |                                 emayService,smsEmailMapper,smsConfigMapper,visitsMapper,businessId, | 
 |  |  |                                 SmsConstants.visitContent.visitNotice, | 
 |  |  |                                 null,Arrays.asList(member.getPhone().split(",")) | 
 |  |  |                         ); | 
 |  |  |                         //公众号通知 | 
 |  |  |                         if(StringUtils.isNotBlank(member.getSystemOpenid())){ | 
 |  |  |                             wxPlatNotice.sendVisitTemplateNotice(systemDictDataBiz, | 
 |  |  |                                     wxNoticeConfigMapper,visitsMapper.selectById(businessId), WxPlatConstants.visitContent.visitWaitAudit, | 
 |  |  |                                     token, | 
 |  |  |                                     Arrays.asList(member.getSystemOpenid().split(",")) | 
 |  |  |                             ); | 
 |  |  |                         } | 
 |  |  |                     }else if(Constants.equalsInteger(noticeType,Constants.noticesObjectType.visitReporting)){ | 
 |  |  |                         //访客报备 | 
 |  |  |                         SmsEmailServiceImpl.sendVisitReportSms(systemDictDataBiz, | 
 |  |  |                                 emayService,smsEmailMapper,smsConfigMapper,visitsMapper,businessId, | 
 |  |  |                                 SmsConstants.visitReportingContent.visitReportingNotice, | 
 |  |  |                                 null,Arrays.asList(member.getPhone().split(",")) | 
 |  |  |                         ); | 
 |  |  |                         //公众号通知 | 
 |  |  |                         if(StringUtils.isNotBlank(member.getSystemOpenid())){ | 
 |  |  |                             wxPlatNotice.sendVisitTemplateNotice(systemDictDataBiz, | 
 |  |  |                                     wxNoticeConfigMapper,visitsMapper.selectById(businessId), WxPlatConstants.visitReportContent.visitReportWaitAudit, | 
 |  |  |                                     token, | 
 |  |  |                                     Arrays.asList(member.getSystemOpenid().split(",")) | 
 |  |  |                             ); | 
 |  |  |                         } | 
 |  |  |                     }else if(Constants.equalsInteger(noticeType,Constants.noticesObjectType.useCar)){ | 
 |  |  |                         //用车申请 | 
 |  |  |                         SmsEmailServiceImpl.sendCarUseSms(systemDictDataBiz, | 
 |  |  |                                 emayService,smsEmailMapper,smsConfigMapper,carUseBookMapper,businessId, | 
 |  |  |                                 SmsConstants.carUseBookContent.carUseBookWaitAudit, | 
 |  |  |                                 null,Arrays.asList(member.getPhone().split(",")) | 
 |  |  |                         ); | 
 |  |  |                         //公众号通知 | 
 |  |  |                         if(StringUtils.isNotBlank(member.getSystemOpenid())){ | 
 |  |  |                             CarUseBook carUseBook = carUseBookMapper.selectById(businessId); | 
 |  |  |                             if(Objects.nonNull(carUseBook)){ | 
 |  |  |                                 SystemUser systemUser = systemUserMapper.selectById(carUseBook.getCreator()); | 
 |  |  |                                 if(Objects.nonNull(systemUser)){ | 
 |  |  |                                     carUseBook.setMemberName(systemUser.getRealname()); | 
 |  |  |                                     wxPlatNotice.sendCarUseBookTemplateNotice(systemDictDataBiz, | 
 |  |  |                                             wxNoticeConfigMapper, | 
 |  |  |                                             carUseBookMapper.selectById(businessId), | 
 |  |  |                                             WxPlatConstants.carUseBookContent.carUseBookWaitAudit, | 
 |  |  |                                             token, | 
 |  |  |                                             Arrays.asList(member.getSystemOpenid().split(",")), | 
 |  |  |                                             Constants.ONE); | 
 |  |  |                                 } | 
 |  |  |                             } | 
 |  |  |                         } | 
 |  |  |                     } | 
 |  |  |                 } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  | 
 |  |  |         if(Constants.equalsInteger(noticeType,Constants.noticesObjectType.visit) | 
 |  |  |                 || Constants.equalsInteger(noticeType,Constants.noticesObjectType.visitReporting)){ | 
 |  |  |             //访客记录与访客报备 | 
 |  |  |             Visits visits = visitsJoinMapper.selectJoinOne(Visits.class, | 
 |  |  |             Visits visits = visitsMapper.selectJoinOne(Visits.class, | 
 |  |  |                     new MPJLambdaWrapper<Visits>().selectAll(Visits.class) | 
 |  |  |                             .selectAs(Member::getName,Visits::getReceptMemberName) | 
 |  |  |                             .selectAs(Company::getName,Visits::getReceptMemberDepartment) | 
 |  |  | 
 |  |  |             if(Constants.equalsInteger(noticeType,Constants.noticesObjectType.visit)){ | 
 |  |  |                 title = title + visits.getName(); | 
 |  |  |             }else{ | 
 |  |  |                 title = "【访客报备】申请人 - " + visits.getName(); | 
 |  |  |                 title = "[访客报备]申请人-" + visits.getName(); | 
 |  |  |             } | 
 |  |  |             jsonMap.put("name", "访问人:" + visits.getCompanyName() + " - " + visits.getReceptMemberName()); | 
 |  |  |             jsonMap.put("sTime", "入园时间:" + DateUtil.DateToStr(visits.getStarttime() , "yyyy-MM-dd HH:mm")); | 
 |  |  | 
 |  |  |             if(Objects.isNull(carUseBook)){ | 
 |  |  |                 throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"未查询到业务数据信息"); | 
 |  |  |             } | 
 |  |  |             title = "【用车申请】申请人 - " + carUseBook.getMemberName(); | 
 |  |  |             title = "[用车申请]申请人-" + carUseBook.getMemberName(); | 
 |  |  |             jsonMap.put("name", "申请人:" + carUseBook.getCompanyName() + " - " + carUseBook.getMemberName()); | 
 |  |  |             jsonMap.put("sTime", "开始时间:" + DateUtil.DateToStr(carUseBook.getStartTime() , "yyyy-MM-dd HH:mm")); | 
 |  |  |             jsonMap.put("eTime", "结束时间:" + DateUtil.DateToStr(carUseBook.getEndTime() , "yyyy-MM-dd HH:mm")); | 
 |  |  |             jsonMap.put("usrNum", StringUtils.isBlank(carUseBook.getMemberIds())?"乘车人数: 0人": "乘车人数: " +carUseBook.getMemberIds().split(",").length +"人"); | 
 |  |  |             jsonMap.put("mdd", StringUtils.isBlank(carUseBook.getAddr())?"目的地: - ": "目的地:" +carUseBook.getAddr()); | 
 |  |  |         }else { | 
 |  |  |             throw new BusinessException(ResponseStatus.NOT_ALLOWED); | 
 |  |  |         }else if(Constants.equalsInteger(noticeType,Constants.noticesObjectType.reason)){ | 
 |  |  |             //物流车预约 | 
 |  |  |             PlatformBooks platformBooks = platformBooksMapper.selectById(businessId); | 
 |  |  |             if(Objects.isNull(platformBooks)){ | 
 |  |  |                 throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"未查询到业务数据信息"); | 
 |  |  |             } | 
 |  |  |             title = "[物流车入园预约]申请人-" + platformBooks.getDriverName(); | 
 |  |  |             jsonMap.put("inType", "入库类型:"+(Constants.equalsInteger(platformBooks.getInType(),Constants.ZERO)?"整托盘":"件烟")); | 
 |  |  |             jsonMap.put("totalNum", "总运输量:"+platformBooks.getTotalNum()+"万支"); | 
 |  |  |             jsonMap.put("arriveDate", "到场时间:" + DateUtil.DateToStr(platformBooks.getArriveDate() , "yyyy-MM-dd HH:mm")); | 
 |  |  |             jsonMap.put("carNum", "车牌照:"+platformBooks.getCarCodeFront()); | 
 |  |  |         } | 
 |  |  |         return title; | 
 |  |  |     } | 
 |  |  | 
 |  |  |      * @param objLevel  查询级别 | 
 |  |  |      */ | 
 |  |  |     public Company getAuditCompanyHead(Integer companyId, Integer objLevel){ | 
 |  |  |         if(Objects.isNull(objLevel)||Objects.isNull(companyId)){ | 
 |  |  |             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"审批流配置异常,请联系管理员"); | 
 |  |  |         } | 
 |  |  |         Company auditCompany =  companyMapper.selectById(companyId); | 
 |  |  |         Integer queryLevel = Constants.ONE; | 
 |  |  |         while(queryLevel<objLevel){ | 
 |  |  | 
 |  |  |     private List<Approve> getLevelInfoFromList(Approve level,List<Approve> approveGroupList) { | 
 |  |  |         List<Approve> list = new ArrayList<>(); | 
 |  |  |         if(Constants.equalsInteger(level.getApproveType(),Constants.TWO)){ | 
 |  |  |             level.setApproveType(Constants.ZERO); | 
 |  |  |             level.setApproveType(Constants.TWO); | 
 |  |  |             //如果是单人审批 | 
 |  |  |             list.add(level); | 
 |  |  |             return list; | 
 |  |  | 
 |  |  |                 waitModel.setType(Constants.ZERO); | 
 |  |  |                 waitModel.setTitle(StringUtils.defaultString(level.getTitle(),"审批人")); | 
 |  |  |                 waitModel.setStatus(Constants.equalsInteger(waitList.get(Constants.ZERO).getStatus(),Constants.ONE)?Constants.ONE:Constants.ZERO); | 
 |  |  |                 waitModel.setStatusInfo("处理中"); | 
 |  |  |                 if(Constants.equalsInteger(level.getStatus(),Constants.approveStatus.auditIng) | 
 |  |  |                         ||Constants.equalsInteger(level.getStatus(),Constants.approveStatus.pass)){ | 
 |  |  |                     waitModel.setMemberName(waitList.size() +"人会签"); | 
 |  |  |                 if(Constants.equalsInteger(waitModel.getStatus(),Constants.approveStatus.wait)){ | 
 |  |  |                     waitModel.setStatusInfo("待处理"); | 
 |  |  |                 }else if(Constants.equalsInteger(waitModel.getStatus(),Constants.approveStatus.auditIng)){ | 
 |  |  |                     waitModel.setStatusInfo("处理中"); | 
 |  |  |                 } | 
 |  |  |  | 
 |  |  |                 waitModel.setMemberName(waitList.size() +"人会签"); | 
 |  |  | //                if(Constants.equalsInteger(level.getStatus(),Constants.approveStatus.auditIng) | 
 |  |  | //                        ||Constants.equalsInteger(level.getStatus(),Constants.approveStatus.pass)){ | 
 |  |  | //                    waitModel.setMemberName(waitList.size() +"人会签"); | 
 |  |  | //                } | 
 |  |  |                 if(CollectionUtils.isNotEmpty(waitList)){ | 
 |  |  |                     waitModel.setCreateDate(waitList.get(Constants.ZERO).getCreateDate()); | 
 |  |  |                 } | 
 |  |  | 
 |  |  |         }else { | 
 |  |  |             if((waitList.size()> 0 || otherPassList.size()>0)){ | 
 |  |  |                 Approve waitModel = new Approve(); | 
 |  |  |                 waitModel.setApproveType(Constants.ONE); | 
 |  |  |                 waitModel.setApproveType(Constants.ZERO); | 
 |  |  |                 if(Constants.equalsInteger(level.getStatus(),Constants.approveStatus.pass)){ | 
 |  |  |                     waitModel.setStatus(Constants.approveStatus.pass); | 
 |  |  |                     waitModel.setStatus(level.getStatus()); | 
 |  |  |                     waitModel.setType(Constants.ONE); | 
 |  |  |                     waitModel.setTitle("审批人(抄送或签审批人)"); | 
 |  |  |                     waitModel.setCheckDate(level.getCheckDate()); | 
 |  |  |                     waitModel.setTitle(StringUtils.defaultString(level.getTitle(),"审批人")); | 
 |  |  |                 }else{ | 
 |  |  |                     waitModel.setStatus(level.getStatus()); | 
 |  |  |                     waitModel.setType(Constants.ZERO); | 
 |  |  |                     waitModel.setStatusInfo(passList.size()<=0?StringUtils.defaultString(level.getTitle(),"审批人"):"抄送或签审批人"); | 
 |  |  |                     waitModel.setStatus(passList.size()>0?Constants.ONE:Constants.ZERO); | 
 |  |  |                     waitModel.setTitle(passList.size()<=0?StringUtils.defaultString(level.getTitle(),"审批人"):"抄送或签审批人"); | 
 |  |  |  | 
 |  |  |                 } | 
 |  |  |                 List<Approve> approveList = new ArrayList<>(); | 
 |  |  |                 approveList.addAll(waitList); | 
 |  |  | 
 |  |  |                 if(Constants.equalsInteger(waitModel.getStatus(),Constants.approveStatus.pass)){ | 
 |  |  |                     waitModel.setMemberName("已抄送"+ approveList.size() +"人"); | 
 |  |  |                 }else if(Constants.equalsInteger(waitModel.getStatus(),Constants.approveStatus.wait)){ | 
 |  |  |                     waitModel.setMemberName("处理中"); | 
 |  |  |                     waitModel.setMemberName(waitList.size() +"人或签"); | 
 |  |  |                     waitModel.setStatusInfo("待处理"); | 
 |  |  |                 }else{ | 
 |  |  |                     waitModel.setMemberName(waitList.size() +"人或签"); | 
 |  |  |                     waitModel.setStatusInfo("处理中"); | 
 |  |  |                 } | 
 |  |  |                 waitModel.setApproveList(approveList); | 
 |  |  |                 list.add(waitModel); | 
 |  |  | 
 |  |  |         return Constants.ZERO; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     public String getApproveUserName(Integer businessId,Integer businessType){ | 
 |  |  |          List<Approve> approveList = approveJoinMapper.selectJoinList(Approve.class,new MPJLambdaWrapper<Approve>() | 
 |  |  |                  .selectAll(Approve.class) | 
 |  |  |                  .selectAs(Member::getName,Approve::getMemberName) | 
 |  |  |                  .leftJoin(Member.class,Member::getId,Approve::getChekorId) | 
 |  |  |                 .eq(Approve::getObjId,businessId) | 
 |  |  |                 .eq(Approve::getObjType,businessType) | 
 |  |  |                 .eq(Approve::getType,Constants.ZERO) | 
 |  |  |                 .eq(Approve::getStatus,Constants.approveStatus.auditIng) | 
 |  |  |         ); | 
 |  |  |          if(CollectionUtils.isNotEmpty(approveList)){ | 
 |  |  |              List<String> names = approveList.stream().map(m->m.getMemberName()).collect(Collectors.toList()); | 
 |  |  |              return String.join(",",names); | 
 |  |  |          } | 
 |  |  |          return null; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  | 
 |  |  |     @Override | 
 |  |  |     @Transactional(rollbackFor = {Exception.class,BusinessException.class}) | 
 |  |  |     public void approved(ApproveDTO approveDTO){ | 
 |  |  |         WxPlatNotice wxPlatNotice = new WxPlatNotice(); | 
 |  |  |         if(Objects.isNull(approveDTO) | 
 |  |  |         || Objects.isNull(approveDTO.getObjId()) | 
 |  |  |                 || Objects.isNull(approveDTO.getObjType()) | 
 |  |  | 
 |  |  |                 .last(" limit 1") | 
 |  |  |         ); | 
 |  |  |         if(Objects.isNull(approve)){ | 
 |  |  |             throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未查询到审批数据"); | 
 |  |  |             throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"申请已被他人审批"); | 
 |  |  |         } | 
 |  |  |         if(!approve.getStatus().equals(Constants.ONE)){ | 
 |  |  |             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"审批记录状态错误!"); | 
 |  |  | 
 |  |  |             noticesJoinMapper.update(null,new UpdateWrapper<Notices>().lambda() | 
 |  |  |                     .set(Notices::getEditDate,new Date()) | 
 |  |  |                     .set(Notices::getParam4,approveDTO.getLoginUserInfo().getMemberId()) | 
 |  |  |                     .set(Notices::getInfo,"审批未通过") | 
 |  |  |                     .set(Notices::getInfo,"已拒绝") | 
 |  |  |                     .set(Notices::getReaded,Constants.ONE) | 
 |  |  |                     .set(Notices::getParam2,Constants.TWO) | 
 |  |  |                     .set(Notices::getStatus,Constants.ONE) | 
 |  |  | 
 |  |  |                         .set(Notices::getSendacopy,Constants.ONE) | 
 |  |  |                         .set(Notices::getStatus,Constants.ONE) | 
 |  |  |                         .set(Notices::getParam2,Constants.TWO) | 
 |  |  |                         .set(Notices::getInfo,"审批未通过") | 
 |  |  |                         .set(Notices::getInfo,"已拒绝") | 
 |  |  |                         .eq(Notices::getObjId,notices.getObjId()) | 
 |  |  |                         .eq(Notices::getObjType,notices.getObjType()) | 
 |  |  |                         .eq(Notices::getReaded,Constants.ZERO) | 
 |  |  | 
 |  |  |                             .in(Approve::getId,approveList.stream().map(m->m.getId()).collect(Collectors.toList()))); | 
 |  |  |                 } | 
 |  |  |                 /**开启下一级别的数据为待审核**/ | 
 |  |  |  | 
 |  |  |                 List<Approve> waitAuditList = approveJoinMapper.selectJoinList(Approve.class, | 
 |  |  |                         new MPJLambdaWrapper<Approve>() | 
 |  |  |                                 .selectAll(Approve.class) | 
 |  |  |                                 .selectAs(Member::getPhone,Approve::getMemberPhone) | 
 |  |  |                                 .selectAs(SystemUser::getOpenid,Approve::getSystemOpenid) | 
 |  |  |                                 .leftJoin(Member.class,Member::getId,Approve::getChekorId) | 
 |  |  |                                 .leftJoin(SystemUser.class,SystemUser::getMemberId,Member::getId) | 
 |  |  |                                 .eq(Approve::getStatus,Constants.approveStatus.wait) | 
 |  |  |                                 .eq(Approve::getObjId,approve.getObjId()) | 
 |  |  |                                 .eq(Approve::getObjType,approve.getObjType()) | 
 |  |  |                                 .eq(Approve::getLevel,(approve.getLevel()+1))); | 
 |  |  |  | 
 |  |  |                 approveJoinMapper.update(null,new UpdateWrapper<Approve>() | 
 |  |  |                         .lambda() | 
 |  |  |                         .set(Approve::getStatus,Constants.approveStatus.auditIng) | 
 |  |  | 
 |  |  |                         .eq(Approve::getObjType,approve.getObjType()) | 
 |  |  |                         .eq(Approve::getLevel,(approve.getLevel()+1)) | 
 |  |  |                 ); | 
 |  |  |                 if(approveDTO.getObjType().equals(Constants.approveObjectType.unConstructionVisit) | 
 |  |  |                         ||approveDTO.getObjType().equals(Constants.approveObjectType.constructionVisit) | 
 |  |  |                         ||approveDTO.getObjType().equals(Constants.approveObjectType.visitReporting)) { | 
 |  |  |                     Visits visits = visitsMapper.selectById(approve.getObjId()); | 
 |  |  |                     if(Objects.nonNull(visits)){ | 
 |  |  |                         if(Constants.equalsInteger(visits.getStatus(),Constants.ZERO)){ | 
 |  |  |                              visitsMapper.update(null,new UpdateWrapper<Visits>().lambda().set(Visits::getStatus,Constants.ONE).eq(Visits::getId,visits.getId())); | 
 |  |  |                         }else{ | 
 |  |  |                             throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未查询到业务数据对象!请刷新重试"); | 
 |  |  |                         } | 
 |  |  |                     } | 
 |  |  |  | 
 |  |  |                 //发送短信通知  下级审批人 | 
 |  |  |                 List<String> memberPhone = waitAuditList.stream().filter(i->StringUtils.isNotBlank(i.getMemberPhone())).map(i->i.getMemberPhone()).collect(Collectors.toList()); | 
 |  |  |                 List<String> openIdList =waitAuditList.stream().filter(i->StringUtils.isNotBlank(i.getSystemOpenid())).map(i->i.getSystemOpenid()).collect(Collectors.toList()); | 
 |  |  |  | 
 |  |  |                 }else if(approveDTO.getObjType().equals(Constants.approveObjectType.cityUseCar)||approveDTO.getObjType().equals( | 
 |  |  |                         Constants.approveObjectType.unCityUseCar)){ | 
 |  |  |                     this.updDriver(approveDTO,approve,false); | 
 |  |  |                 } | 
 |  |  |                 this.sendNextLvSms(approve,approveDTO,memberPhone,openIdList); | 
 |  |  |  | 
 |  |  | //                if(approveDTO.getObjType().equals(Constants.approveObjectType.cityUseCar)||approveDTO.getObjType().equals( | 
 |  |  | //                        Constants.approveObjectType.unCityUseCar)){ | 
 |  |  | //                    this.updDriver(approveDTO,approve,false); | 
 |  |  | //                } | 
 |  |  |             }else if(approve.getApproveType().equals(Constants.ONE)){ | 
 |  |  |                 //会签 且终审 | 
 |  |  |                 //无他人审批的情况 则修改数据状态 | 
 |  |  | 
 |  |  |                 }else{ | 
 |  |  |                     if(Constants.equalsInteger(approveList.size(),Constants.ZERO)&&Constants.equalsInteger(approve.getIsEndCheck(),Constants.ZERO)){ | 
 |  |  |                         /**开启下一级别的数据为待审核**/ | 
 |  |  |  | 
 |  |  |                         List<Approve> waitAuditList = approveJoinMapper.selectJoinList(Approve.class, | 
 |  |  |                                 new MPJLambdaWrapper<Approve>() | 
 |  |  |                                         .selectAll(Approve.class) | 
 |  |  |                                         .selectAs(Member::getPhone,Approve::getMemberPhone) | 
 |  |  |                                         .selectAs(SystemUser::getOpenid,Approve::getSystemOpenid) | 
 |  |  |                                         .leftJoin(Member.class,Member::getId,Approve::getChekorId) | 
 |  |  |                                         .leftJoin(SystemUser.class,SystemUser::getMemberId,Member::getId) | 
 |  |  |                                         .eq(Approve::getStatus,Constants.approveStatus.wait) | 
 |  |  |                                         .eq(Approve::getObjId,approve.getObjId()) | 
 |  |  |                                         .eq(Approve::getObjType,approve.getObjType()) | 
 |  |  |                                         .eq(Approve::getLevel,(approve.getLevel()+1))); | 
 |  |  |  | 
 |  |  |  | 
 |  |  |                         approveJoinMapper.update(null,new UpdateWrapper<Approve>() | 
 |  |  |                                 .lambda() | 
 |  |  |                                 .set(Approve::getStatus,Constants.approveStatus.auditIng) | 
 |  |  | 
 |  |  |                                 .eq(Approve::getObjType,approve.getObjType()) | 
 |  |  |                                 .eq(Approve::getLevel,(approve.getLevel()+1)) | 
 |  |  |                         ); | 
 |  |  |  | 
 |  |  |  | 
 |  |  |                         //发送短信通知  下级审批人 | 
 |  |  |                         List<String> memberPhone = waitAuditList.stream().filter(i->StringUtils.isNotBlank(i.getMemberPhone())).map(i->i.getMemberPhone()).collect(Collectors.toList()); | 
 |  |  |                         List<String> openIdList =waitAuditList.stream().filter(i->StringUtils.isNotBlank(i.getSystemOpenid())).map(i->i.getSystemOpenid()).collect(Collectors.toList()); | 
 |  |  |  | 
 |  |  |                         this.sendNextLvSms(approve,approveDTO,memberPhone,openIdList); | 
 |  |  |  | 
 |  |  |                     } | 
 |  |  |                     if(approveDTO.getObjType().equals(Constants.approveObjectType.cityUseCar)||approveDTO.getObjType().equals( | 
 |  |  |                             Constants.approveObjectType.unCityUseCar)){ | 
 |  |  |                         this.updDriver(approveDTO,approve,false); | 
 |  |  |                     } | 
 |  |  | //                    if(approveDTO.getObjType().equals(Constants.approveObjectType.cityUseCar)||approveDTO.getObjType().equals( | 
 |  |  | //                            Constants.approveObjectType.unCityUseCar)){ | 
 |  |  | //                        this.updDriver(approveDTO,approve,false); | 
 |  |  | //                    } | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |             this.passNextNotices(dealBusinessBean,notices,approve,approveList,approveCopyList,approveDTO); | 
 |  |  | 
 |  |  |             this.dealBusinessData(approveDTO,approve); | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     public void sendNextLvSms(Approve approve ,ApproveDTO approveDTO , List<String> memberPhone ,List<String> openIdList){ | 
 |  |  |         WxPlatNotice wxPlatNotice = new WxPlatNotice(); | 
 |  |  |         //物流车预约 | 
 |  |  |         if(approveDTO.getObjType().equals(Constants.approveObjectType.reason)){ | 
 |  |  |             SmsEmailServiceImpl.sendPlatformBookSms(systemDictDataBiz, | 
 |  |  |                     emayService,smsEmailMapper,smsConfigMapper,platformBooksMapper,approveDTO.getObjId(), | 
 |  |  |                     SmsConstants.platformBookContent.platformBookWaitAudit, | 
 |  |  |                     approveDTO.getCheckInfo(),memberPhone | 
 |  |  |             ); | 
 |  |  |             //公众号通知 | 
 |  |  |             if(CollectionUtils.isNotEmpty(openIdList)){ | 
 |  |  |                 wxPlatNotice.sendPlatformBookTemplateNotice(systemDictDataBiz, | 
 |  |  |                         wxNoticeConfigMapper, | 
 |  |  |                         platformBooksMapper.selectById(approveDTO.getObjId()), | 
 |  |  |                         WxPlatConstants.platformBookContent.platformBookWaitAudit, | 
 |  |  |                         systemDictDataBiz.queryByCode(Constants.WX_PLATFORM,Constants.WX_PLATFORM_ACCESS_TOKEN).getCode(), | 
 |  |  |                         openIdList, | 
 |  |  |                         Constants.ONE); | 
 |  |  |             } | 
 |  |  |  | 
 |  |  |         } else if(approveDTO.getObjType().equals(Constants.approveObjectType.cityUseCar) | 
 |  |  |                 || approveDTO.getObjType().equals(Constants.approveObjectType.unCityUseCar)){ | 
 |  |  |  | 
 |  |  |             this.updDriver(approveDTO,approve,false); | 
 |  |  |  | 
 |  |  |             SmsEmailServiceImpl.sendCarUseSms(systemDictDataBiz, | 
 |  |  |                     emayService,smsEmailMapper,smsConfigMapper,carUseBookMapper,approveDTO.getObjId(), | 
 |  |  |                     SmsConstants.carUseBookContent.carUseBookWaitAudit, | 
 |  |  |                     approveDTO.getCheckInfo(),memberPhone); | 
 |  |  |             //发送公众号通知 | 
 |  |  |             if(CollectionUtils.isNotEmpty(openIdList)){ | 
 |  |  |                 CarUseBook carUseBook = carUseBookMapper.selectById(approve.getObjId()); | 
 |  |  |                 if(Objects.nonNull(carUseBook)){ | 
 |  |  |                     SystemUser systemUser = systemUserMapper.selectById(carUseBook.getCreator()); | 
 |  |  |                     if(Objects.nonNull(systemUser)){ | 
 |  |  |                         carUseBook.setMemberName(systemUser.getRealname()); | 
 |  |  |                         //发送微信公众号通知 | 
 |  |  |                         wxPlatNotice.sendCarUseBookTemplateNotice(systemDictDataBiz, | 
 |  |  |                                 wxNoticeConfigMapper,carUseBook, | 
 |  |  |                                 WxPlatConstants.carUseBookContent.carUseBookWaitAudit, | 
 |  |  |                                 systemDictDataBiz.queryByCode(Constants.WX_PLATFORM,Constants.WX_PLATFORM_ACCESS_TOKEN).getCode(), | 
 |  |  |                                 openIdList,1); | 
 |  |  |                     } | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |         }else | 
 |  |  |             //访客申请/报备 | 
 |  |  |             if(approveDTO.getObjType().equals(Constants.approveObjectType.unConstructionVisit) | 
 |  |  |                     ||approveDTO.getObjType().equals(Constants.approveObjectType.constructionVisit) | 
 |  |  |                     ||approveDTO.getObjType().equals(Constants.approveObjectType.visitReporting)) { | 
 |  |  |                 Visits visits = visitsMapper.selectById(approve.getObjId()); | 
 |  |  |                 if(Objects.nonNull(visits)){ | 
 |  |  |                     if(Constants.equalsInteger(visits.getStatus(),Constants.ZERO)){ | 
 |  |  |                         visitsMapper.update(null,new UpdateWrapper<Visits>().lambda().set(Visits::getStatus,Constants.ONE).eq(Visits::getId,visits.getId())); | 
 |  |  |                     } | 
 |  |  |                     SmsEmailServiceImpl.sendVisitSms(systemDictDataBiz, | 
 |  |  |                             emayService,smsEmailMapper,smsConfigMapper,visitsMapper,approveDTO.getObjId(), | 
 |  |  |                             approveDTO.getObjType().equals(Constants.approveObjectType.visitReporting)? | 
 |  |  |                                     SmsConstants.visitReportingContent.visitReportingNotice:SmsConstants.visitContent.visitNotice, | 
 |  |  |                             null,memberPhone | 
 |  |  |                     ); | 
 |  |  |                     //公众号通知 | 
 |  |  |                     if(CollectionUtils.isNotEmpty(openIdList)){ | 
 |  |  |                         wxPlatNotice.sendVisitTemplateNotice(systemDictDataBiz, | 
 |  |  |                                 wxNoticeConfigMapper,visitsMapper.selectById(approveDTO.getObjId()), | 
 |  |  |                                 approveDTO.getObjType().equals(Constants.approveObjectType.visitReporting)?WxPlatConstants.visitReportContent.visitReportWaitAudit:WxPlatConstants.visitContent.visitWaitAudit, | 
 |  |  |                                 systemDictDataBiz.queryByCode(Constants.WX_PLATFORM,Constants.WX_PLATFORM_ACCESS_TOKEN).getCode(), | 
 |  |  |                                 openIdList | 
 |  |  |                         ); | 
 |  |  |                     } | 
 |  |  |  | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 处理待办信息 | 
 |  |  | 
 |  |  |                 .set(Notices::getEditDate,new Date()) | 
 |  |  |                 .set(Notices::getReaded,Constants.ONE) | 
 |  |  |                 .set(Notices::getStatus,Constants.ONE) | 
 |  |  |                 .set(Notices::getInfo,Constants.equalsInteger(approveDTO.getStatus(),Constants.TWO)?"已通过":"已拒绝") | 
 |  |  |                 .set(dealBusinessBean,Notices::getParam2,Constants.ONE) | 
 |  |  |                 .set(Notices::getParam4,approveDTO.getLoginUserInfo().getMemberId()) | 
 |  |  |                 .eq(Notices::getId,notices.getId()) | 
 |  |  | 
 |  |  |         String info = ""; | 
 |  |  |         List<String> memberNameList = Arrays.asList(memberNames.split(",")); | 
 |  |  |         if(Constants.equalsInteger(memberNameList.size(),Constants.ONE)){ | 
 |  |  |             info = "待 "+memberNameList.get(0)+" 处理中"; | 
 |  |  |             info = "待"+memberNameList.get(0)+"处理中"; | 
 |  |  |         }else{ | 
 |  |  |             info = "待 "+memberNameList.get(0)+" 等"+memberNameList.size()+"人处理中"; | 
 |  |  |             info = "待"+memberNameList.get(0)+"等"+memberNameList.size()+"人处理中"; | 
 |  |  |         } | 
 |  |  |         //更新该业务数据的所有记录信息 | 
 |  |  |         noticesJoinMapper.update(null,new UpdateWrapper<Notices>().lambda() | 
 |  |  |                         .set(!dealBusinessBean,Notices::getInfo,info) | 
 |  |  |                         .set(dealBusinessBean,Notices::getInfo,"审批通过") | 
 |  |  |                         .set(dealBusinessBean,Notices::getInfo,"已通过") | 
 |  |  |                         .set(Notices::getParam5,memberNames) | 
 |  |  |                         .eq(Notices::getObjId,notices.getObjId()) | 
 |  |  |                         .eq(Notices::getObjType,notices.getObjType())); | 
 |  |  | 
 |  |  |                     copyNotices.setEditDate(new Date()); | 
 |  |  |                     copyNotices.setParam2("2"); | 
 |  |  |                     copyNotices.setParam3(""); | 
 |  |  |                     copyNotices.setInfo("审批通过"); | 
 |  |  |                     copyNotices.setInfo("已通过"); | 
 |  |  |                     copyNotices.setUserId(copyApprove.getChekorId()); | 
 |  |  |                     copyNotices.setStatus(Constants.ZERO); | 
 |  |  |                     copyNotices.setSendacopy(Constants.ONE); | 
 |  |  | 
 |  |  |             notices.setParam5(memberNames); | 
 |  |  |             notices.setRemark(nextDealApprove.getMemberName()); | 
 |  |  |             if(Constants.equalsInteger(memberNameList.size(),Constants.ONE)){ | 
 |  |  |                 notices.setInfo("待 "+memberNameList.get(0)+" 处理中"); | 
 |  |  |                 notices.setInfo("待"+memberNameList.get(0)+"处理中"); | 
 |  |  |             }else{ | 
 |  |  |                 notices.setInfo("待 "+memberNameList.get(0)+" 等"+memberNameList.size()+"人处理中"); | 
 |  |  |                 notices.setInfo("待"+memberNameList.get(0)+"等"+memberNameList.size()+"人处理中"); | 
 |  |  |             } | 
 |  |  |             noticesJoinMapper.insert(newNotices); | 
 |  |  |         } | 
 |  |  |         return memberNames; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     public void dealBusinessData(ApproveDTO approveDTO,Approve approve){ | 
 |  |  |         WxPlatNotice wxPlatNotice = new WxPlatNotice(); | 
 |  |  |         if(approveDTO.getObjType().equals(Constants.approveObjectType.unConstructionVisit) | 
 |  |  |                 ||approveDTO.getObjType().equals(Constants.approveObjectType.constructionVisit) | 
 |  |  |                 ||approveDTO.getObjType().equals(Constants.approveObjectType.visitReporting)){ | 
 |  |  | 
 |  |  |             visits.setStatus(approveDTO.getStatus()); | 
 |  |  |             visits.setEditDate(new Date()); | 
 |  |  |             visits.setEditor(approveDTO.getLoginUserInfo().getMemberId()); | 
 |  |  |             //下发访客报备车辆信息 | 
 |  |  |             if(Constants.equalsInteger(approveDTO.getStatus(),Constants.TWO)&&approveDTO.getObjType().equals(Constants.approveObjectType.visitReporting)){ | 
 |  |  |                 Boolean sendStatus = true; | 
 |  |  |                 //查询当前启用的停车场 | 
 |  |  |                 List<Parks> parksList = parksMapper.selectList(new QueryWrapper<Parks>() | 
 |  |  |                         .lambda() | 
 |  |  |                         .isNotNull(Parks::getHkId) | 
 |  |  |                         .eq(Parks::getIsdeleted,Constants.ZERO)); | 
 |  |  |                 List<VisitPark> parkBookList = new ArrayList<>(); | 
 |  |  |                 if(CollectionUtils.isNotEmpty(parksList)){ | 
 |  |  |                     for (Parks parks:parksList) { | 
 |  |  |                         VisitPark visitPark = new VisitPark(); | 
 |  |  |                         visitPark.setIsdeleted(Constants.ZERO); | 
 |  |  |                         visitPark.setCreateDate(new Date()); | 
 |  |  |                         visitPark.setVisitApplyId(visits.getId().toString()); | 
 |  |  |                         visitPark.setCarCode(visits.getCarNos()); | 
 |  |  |                         visitPark.setParkId(parks.getId().toString()); | 
 |  |  |                         visitPark.setStartTime(visits.getStarttime()); | 
 |  |  |                         visitPark.setEndTime(visits.getEndtime()); | 
 |  |  |                         visitPark.setParkHkId(parks.getHkId()); | 
 |  |  |                         visitPark.setObjType(Constants.ZERO); | 
 |  |  |  | 
 |  |  |                         ParkReservationAddRequest request = new ParkReservationAddRequest(); | 
 |  |  |                         request.setPlateNo(visitPark.getCarCode()); | 
 |  |  |                         request.setParkSyscode(visitPark.getParkHkId()); | 
 |  |  |                         request.setPhoneNo(visits.getPhone()); | 
 |  |  |                         request.setOwner(visits.getName()); | 
 |  |  |                         request.setAllowTimes(Constants.ONE+""); | 
 |  |  |                         request.setIsCharge(Constants.ONE+""); | 
 |  |  |                         request.setStartTime(Objects.isNull(visitPark.getStartTime())?DateUtil.getISO8601Timestamp2(new Date()):DateUtil.getISO8601Timestamp2(visitPark.getStartTime())); | 
 |  |  |                         request.setEndTime(Objects.isNull(visitPark.getEndTime())?"2999-12-31T00:00:00+08:00":DateUtil.getISO8601Timestamp2(visitPark.getEndTime())); | 
 |  |  |                         BaseResponse response =  HKService.parkReservationAddition(request); | 
 |  |  |  | 
 |  |  |                         visitPark.setHkDate(new Date()); | 
 |  |  |                         if(response!=null | 
 |  |  |                                 && StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE)){ | 
 |  |  |                             ParkReservationAddResponse parkReservationAddResponse = (ParkReservationAddResponse) response.getData(); | 
 |  |  |                             visitPark.setHkId(parkReservationAddResponse.getReserveOrderNo()); | 
 |  |  |                             visitPark.setHkStatus(Constants.ONE); | 
 |  |  |                             visitPark.setRemark("包期成功"); | 
 |  |  |                         }else{ | 
 |  |  |                             visitPark.setHkStatus(Constants.TWO); | 
 |  |  |                             visitPark.setRemark("包期失败~"); | 
 |  |  |                             //下发失败  标记主业务状态为下发失败 | 
 |  |  |                             sendStatus = false; | 
 |  |  |                         } | 
 |  |  |                         parkBookList.add(visitPark); | 
 |  |  |  | 
 |  |  |                     } | 
 |  |  |                     visitParkMapper.insert(parkBookList); | 
 |  |  |                 } | 
 |  |  |                 if(sendStatus){ | 
 |  |  |                     visits.setStatus(Constants.VisitStatus.xfSuccess); | 
 |  |  |                 }else{ | 
 |  |  |                     visits.setStatus(Constants.VisitStatus.xfFail); | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |             //访客报备 | 
 |  |  |             String objCode = ""; | 
 |  |  |             if(approveDTO.getObjType().equals(Constants.approveObjectType.visitReporting)){ | 
 |  |  |                 //发送短信通知 | 
 |  |  |                 SmsEmailServiceImpl.sendVisitReportSms(systemDictDataBiz, | 
 |  |  |                         emayService,smsEmailMapper,smsConfigMapper,visitsMapper,visits.getId(), | 
 |  |  |                         Constants.equalsInteger(approveDTO.getStatus(),Constants.TWO)?SmsConstants.visitReportingContent.visitReportingAuditSuccess: | 
 |  |  |                                 SmsConstants.visitReportingContent.visitReportingAuditFail, | 
 |  |  |                         approveDTO.getCheckInfo(),null | 
 |  |  |                 ); | 
 |  |  |                 objCode =  Constants.equalsInteger(approveDTO.getStatus(),Constants.TWO)? | 
 |  |  |                         WxPlatConstants.visitReportContent.visitReportAuditSuccess:WxPlatConstants.visitReportContent.visitReportAuditFail; | 
 |  |  |  | 
 |  |  |             }else{ //访客申请 | 
 |  |  |                 //发送短信通知 | 
 |  |  |                 SmsEmailServiceImpl.sendVisitSms(systemDictDataBiz, | 
 |  |  |                         emayService,smsEmailMapper,smsConfigMapper,visitsMapper,visits.getId(), | 
 |  |  |                         Constants.equalsInteger(approveDTO.getStatus(),Constants.TWO)?SmsConstants.visitContent.visitAuditSuccess: | 
 |  |  |                                 SmsConstants.visitContent.visitAuditFail, | 
 |  |  |                         approveDTO.getCheckInfo(),null | 
 |  |  |                 ); | 
 |  |  |                 if(Constants.equalsInteger(approveDTO.getStatus(),Constants.TWO)){ | 
 |  |  |                     SmsEmailServiceImpl.sendVisitSms(systemDictDataBiz, | 
 |  |  |                             emayService,smsEmailMapper,smsConfigMapper,visitsMapper,visits.getId(), | 
 |  |  |                                     SmsConstants.visitContent.visitAuditSuccessToVisiter, | 
 |  |  |                             approveDTO.getCheckInfo(),null | 
 |  |  |                     ); | 
 |  |  |                 } | 
 |  |  |                 objCode =  Constants.equalsInteger(approveDTO.getStatus(),Constants.TWO)? WxPlatConstants.visitContent.visitAuditSuccess: | 
 |  |  |                         WxPlatConstants.visitContent.visitAuditFail; | 
 |  |  |             } | 
 |  |  |             visitsMapper.updateById(visits); | 
 |  |  |             //发送微信公众号 | 
 |  |  |             if(StringUtils.isNotBlank(objCode)){ | 
 |  |  |                 if(Objects.nonNull(visits) && StringUtils.isNotBlank(visits.getOpenid())){ | 
 |  |  |                     wxPlatNotice.sendVisitTemplateNotice(systemDictDataBiz, | 
 |  |  |                             wxNoticeConfigMapper,visits, objCode, | 
 |  |  |                             systemDictDataBiz.queryByCode(Constants.WX_PLATFORM,Constants.WX_PLATFORM_ACCESS_TOKEN).getCode(), | 
 |  |  |                             Arrays.asList(visits.getOpenid().split(",")) | 
 |  |  |                     ); | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |  | 
 |  |  |         }else if(approveDTO.getObjType().equals(Constants.approveObjectType.cityUseCar)||approveDTO.getObjType().equals( | 
 |  |  |                 Constants.approveObjectType.unCityUseCar)){ | 
 |  |  |             this.updDriver(approveDTO,approve,true); | 
 |  |  |         }else if(approveDTO.getObjType().equals(Constants.approveObjectType.logisticsCarUse)){ | 
 |  |  |             CarUseBook carUseBook = carUseBookJoinMapper.selectById(approveDTO.getObjId()); | 
 |  |  |             if(Objects.nonNull(carUseBook)){ | 
 |  |  |                 SystemUser systemUser = systemUserMapper.selectById(carUseBook.getCreator()); | 
 |  |  |                 //发送通知短息 | 
 |  |  |                 if(Objects.nonNull(systemUser)&&StringUtils.isNotBlank(systemUser.getMobile())){ | 
 |  |  |                     SmsEmailServiceImpl.sendCarUseSms(systemDictDataBiz, | 
 |  |  |                             emayService,smsEmailMapper,smsConfigMapper,carUseBookMapper,approveDTO.getObjId(), | 
 |  |  |                             Constants.equalsInteger(approveDTO.getStatus(),Constants.TWO)?SmsConstants.carUseBookContent.carUseBookAuditSuccess: | 
 |  |  |                                     SmsConstants.carUseBookContent.carUseBookAuditFail, | 
 |  |  |                             approveDTO.getCheckInfo(),Arrays.asList(systemUser.getMobile().split(",")) | 
 |  |  |                     ); | 
 |  |  |                 } | 
 |  |  |                 if(Objects.nonNull(systemUser)&&StringUtils.isNotBlank(systemUser.getOpenid())){ | 
 |  |  |                     carUseBook.setMemberName(systemUser.getRealname()); | 
 |  |  |                     //发送微信公众号通知 | 
 |  |  |                     wxPlatNotice.sendCarUseBookTemplateNotice(systemDictDataBiz, | 
 |  |  |                             wxNoticeConfigMapper,carUseBook, | 
 |  |  |                             Constants.equalsInteger(approveDTO.getStatus(),Constants.TWO)?WxPlatConstants.carUseBookContent.carUseBookAuditSuccess: WxPlatConstants.carUseBookContent.carUseBookAuditFail, | 
 |  |  |                             systemDictDataBiz.queryByCode(Constants.WX_PLATFORM,Constants.WX_PLATFORM_ACCESS_TOKEN).getCode(), | 
 |  |  |                             Arrays.asList(systemUser.getOpenid().split(",")),0); | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |  | 
 |  |  |         }else if(approveDTO.getObjType().equals(Constants.approveObjectType.reason)){ | 
 |  |  |             //物流车预约 | 
 |  |  |             PlatformBooks platformBooks = platformBooksMapper.selectById(approveDTO.getObjId()); | 
 |  |  |             if(Objects.isNull(platformBooks)){ | 
 |  |  | 
 |  |  |             platformBooks.setStatus(approveDTO.getStatus()); | 
 |  |  |             platformBooks.setEditDate(new Date()); | 
 |  |  |             platformBooks.setEditor(approveDTO.getLoginUserInfo().getMemberId()); | 
 |  |  |  | 
 |  |  |             //生成任务记录 | 
 |  |  |             PlatformJob platformJob = platformBooks.toPlatformJob(); | 
 |  |  |             platformJobMapper.insert(platformJob); | 
 |  |  |             platformBooks.setJobId(platformJob.getId()); | 
 |  |  |             platformBooksMapper.updateById(platformBooks); | 
 |  |  |             //生成任务操作记录 | 
 |  |  |             PlatformLog platformLog = new PlatformLog(); | 
 |  |  |             platformLog.setCreateDate(new Date()); | 
 |  |  |             platformLog.setJobId(platformJob.getId()); | 
 |  |  |             platformLog.setIsdeleted(Constants.ZERO); | 
 |  |  |             platformLog.setObjType(Constants.ZERO); | 
 |  |  |             platformLog.setObjId(platformJob.getId().toString()); | 
 |  |  |             platformLog.setAfterContent(JSONObject.toJSONString(platformJob)); | 
 |  |  |             platformLogMapper.insert(platformLog); | 
 |  |  |             if(Constants.equalsInteger(approveDTO.getStatus(),Constants.TWO)){ | 
 |  |  |                 PlatformReason platformReason = platformReasonMapper.selectById(platformBooks.getReasonId()); | 
 |  |  |                 if(Objects.isNull(platformReason)){ | 
 |  |  |                     throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未查询到入园原因数据"); | 
 |  |  |                 } | 
 |  |  |                 PlatformGroup platformGroup = platformGroupMapper.selectById(platformReason.getGroupId()); | 
 |  |  |                 if(Objects.isNull(platformGroup)){ | 
 |  |  |                     throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未查询到入园原因配置月台组数据"); | 
 |  |  |                 } | 
 |  |  |  | 
 |  |  |                 //生成任务记录 | 
 |  |  |                 PlatformJob platformJob = platformBooks.toPlatformJob(); | 
 |  |  |                 platformJob.setId(null); | 
 |  |  |                 platformJob.setPlatformGroupId(platformReason.getGroupId().intValue()); | 
 |  |  |                 if(Constants.equalsInteger(platformGroup.getType(),Constants.ZERO)){ | 
 |  |  |                     platformJob.setType(Constants.platformJobType.wxcxh); | 
 |  |  |                 }else if(Constants.equalsInteger(platformGroup.getType(),Constants.ONE)){ | 
 |  |  |                     platformJob.setType(Constants.platformJobType.wxczh); | 
 |  |  |                 }else{ | 
 |  |  |                     platformJob.setType(Constants.platformJobType.sgscxh); | 
 |  |  |                 } | 
 |  |  |                 platformJob.setStatus(Constants.PlatformJobStatus.WART_SIGN_IN.getKey()); | 
 |  |  |                 platformJobMapper.insert(platformJob); | 
 |  |  |                 platformBooks.setJobId(platformJob.getId()); | 
 |  |  |                 platformBooksMapper.updateById(platformBooks); | 
 |  |  |                 //生成任务操作记录 | 
 |  |  |                 PlatformLog platformLog = new PlatformLog(); | 
 |  |  |                 platformLog.setCreateDate(new Date()); | 
 |  |  |                 platformLog.setJobId(platformJob.getId()); | 
 |  |  |                 platformLog.setIsdeleted(Constants.ZERO); | 
 |  |  |                 platformLog.setParam4(platformJob.getCarCodeFront()); | 
 |  |  |                 platformLog.setContent(Constants.PlatformJobLogType.CREATE.getInfo()); | 
 |  |  |                 platformLog.setObjType(Constants.PlatformJobLogType.CREATE.getKey()); | 
 |  |  |                 platformLog.setObjId(platformJob.getId().toString()); | 
 |  |  |                 platformLog.setAfterContent(JSONObject.toJSONString(platformJob)); | 
 |  |  |                 platformLogMapper.insert(platformLog); | 
 |  |  |             } | 
 |  |  |             //发送短信通知 | 
 |  |  |             SmsEmailServiceImpl.sendPlatformBookSms(systemDictDataBiz, | 
 |  |  |                     emayService,smsEmailMapper,smsConfigMapper,platformBooksMapper,platformBooks.getId(), | 
 |  |  |                     Constants.equalsInteger(approveDTO.getStatus(),Constants.TWO)?SmsConstants.platformBookContent.platformBookAuditSuccess: | 
 |  |  |                             SmsConstants.platformBookContent.platformBookAuditFail, | 
 |  |  |                     approveDTO.getCheckInfo(),null | 
 |  |  |             ); | 
 |  |  |  | 
 |  |  |             //发送微信公众号消息 | 
 |  |  |             SystemUser driver = systemUserMapper.selectOne(new QueryWrapper<SystemUser>().lambda() | 
 |  |  |                     .eq(SystemUser::getDeleted, Constants.ZERO) | 
 |  |  |                     .eq(SystemUser::getType, Constants.ZERO) | 
 |  |  |                     .eq(SystemUser::getMobile,platformBooks.getDriverPhone()) | 
 |  |  |                     .last(" limit 1 ")); | 
 |  |  |             if(Objects.nonNull(driver) && StringUtils.isNotBlank(driver.getOpenid())){ | 
 |  |  |                 //发送微信公众号通知 | 
 |  |  |                 wxPlatNotice.sendPlatformBookTemplateNotice(systemDictDataBiz, | 
 |  |  |                         wxNoticeConfigMapper, platformBooks, | 
 |  |  |                         Constants.equalsInteger(approveDTO.getStatus(),Constants.TWO)?WxPlatConstants.platformBookContent.platformBookAuditSuccess: WxPlatConstants.platformBookContent.platformBookAuditFail, | 
 |  |  |                         systemDictDataBiz.queryByCode(Constants.WX_PLATFORM,Constants.WX_PLATFORM_ACCESS_TOKEN).getCode(), | 
 |  |  |                         Arrays.asList(driver.getOpenid().split(",")),0); | 
 |  |  |             } | 
 |  |  |  | 
 |  |  |         }else{ | 
 |  |  |             throw new BusinessException(ResponseStatus.BAD_REQUEST); | 
 |  |  | 
 |  |  |         if(approveDTO.getStatus()==Constants.TWO&&Constants.equalsInteger(approve.getDriverParam(),Constants.ONE)){ | 
 |  |  |             CarDriver carDriver = carDriverMapper.selectOne(new QueryWrapper<CarDriver>().lambda() | 
 |  |  |                     .eq(CarDriver::getIsdeleted,Constants.ZERO) | 
 |  |  |                     .eq(CarDriver::getStatus,Constants.ZERO) | 
 |  |  | //                    .eq(CarDriver::getStatus,Constants.ZERO) | 
 |  |  |                     .eq(CarDriver::getMemberId,approveDTO.getDriverId())); | 
 |  |  |             if(Objects.isNull(carDriver)){ | 
 |  |  |                 throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"未查询到司机信息"); |