k94314517
2024-12-05 b7210488b6129ceb614e559d0240bf3ed3321dea
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/ApproveServiceImpl.java
@@ -15,8 +15,12 @@
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;
@@ -40,7 +44,6 @@
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -64,6 +67,8 @@
    @Autowired
    private SystemDictDataBiz systemDictDataBiz;
    @Autowired
    private WxNoticeConfigMapper wxNoticeConfigMapper;
    @Autowired
    private ApproveTemplMapper approveTemplMapper;
@@ -103,44 +108,32 @@
    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)) {
@@ -285,14 +278,16 @@
            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)
@@ -303,9 +298,10 @@
                        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()
                );
            }
@@ -492,7 +488,7 @@
        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);
@@ -563,7 +559,7 @@
                approve.setTemplatId(approveTempl.getId());
                approve.setChekorId(memberId);
                approve.setStatus(i==0?Constants.ONE:Constants.ZERO);
                approve.setStatusInfo(i==0?"审批中":"处理中");
                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);
@@ -575,6 +571,7 @@
                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)){
@@ -584,13 +581,32 @@
                                SmsConstants.platformBookContent.platformBookWaitAudit,
                                null,Arrays.asList(member.getPhone().split(","))
                        );
                        //公众号通知
                        if(StringUtils.isNotBlank(member.getOpenid())){
                            wxPlatNotice.sendPlatformBookTemplateNotice(
                                    wxNoticeConfigMapper,
                                    platformBooksMapper.selectById(businessId),
                                    WxPlatConstants.platformBookContent.platformBookWaitAudit,
                                    token,
                                    Arrays.asList(member.getOpenid().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.getOpenid())){
                            wxPlatNotice.sendVisitTemplateNotice(
                                    wxNoticeConfigMapper,visitsMapper.selectById(businessId), WxPlatConstants.visitContent.visitWaitAudit,
                                    token,
                                    Arrays.asList(member.getOpenid().split(","))
                            );
                        }
                    }else if(Constants.equalsInteger(noticeType,Constants.noticesObjectType.visitReporting)){
                        //访客报备
                        SmsEmailServiceImpl.sendVisitReportSms(systemDictDataBiz,
@@ -598,6 +614,14 @@
                                SmsConstants.visitReportingContent.visitReportingNotice,
                                null,Arrays.asList(member.getPhone().split(","))
                        );
                        //公众号通知
                        if(StringUtils.isNotBlank(member.getOpenid())){
                            wxPlatNotice.sendVisitTemplateNotice(
                                    wxNoticeConfigMapper,visitsMapper.selectById(businessId), WxPlatConstants.visitReportContent.visitReportWaitAudit,
                                    token,
                                    Arrays.asList(member.getOpenid().split(","))
                            );
                        }
                    }else if(Constants.equalsInteger(noticeType,Constants.noticesObjectType.useCar)){
                        //用车申请
                        SmsEmailServiceImpl.sendCarUseSms(systemDictDataBiz,
@@ -605,6 +629,16 @@
                                SmsConstants.carUseBookContent.carUseBookWaitAudit,
                                null,Arrays.asList(member.getPhone().split(","))
                        );
                        //公众号通知
                        if(StringUtils.isNotBlank(member.getOpenid())){
                            wxPlatNotice.sendCarUseBookTemplateNotice(
                                    wxNoticeConfigMapper,
                                    carUseBookMapper.selectById(businessId),
                                    WxPlatConstants.carUseBookContent.carUseBookWaitAudit,
                                    token,
                                    Arrays.asList(member.getOpenid().split(",")),
                                    Constants.ONE);
                        }
                    }
                }
@@ -788,6 +822,9 @@
     * @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){
@@ -921,7 +958,6 @@
                }else{
                    waitModel.setStatus(level.getStatus());
                    waitModel.setType(Constants.ZERO);
                    //waitModel.setStatusInfo(passList.size()<=0?StringUtils.defaultString(level.getTitle(),"审批人"):"抄送或签审批人");
                    waitModel.setTitle(passList.size()<=0?StringUtils.defaultString(level.getTitle(),"审批人"):"抄送或签审批人");
                }
@@ -1508,6 +1544,7 @@
    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)){
@@ -1577,6 +1614,7 @@
                }
            }
            //访客报备
            String objCode = "";
            if(approveDTO.getObjType().equals(Constants.approveObjectType.visitReporting)){
                //发送短信通知
                SmsEmailServiceImpl.sendVisitReportSms(systemDictDataBiz,
@@ -1585,6 +1623,9 @@
                                SmsConstants.visitReportingContent.visitReportingAuditFail,
                        approveDTO.getCheckInfo(),null
                );
                objCode =  Constants.equalsInteger(approveDTO.getStatus(),Constants.TWO)? WxPlatConstants.visitReportContent.visitReportAuditSuccess:WxPlatConstants.visitReportContent.visitReportAuditFail;
            }else{ //访客申请
                //发送短信通知
                SmsEmailServiceImpl.sendVisitSms(systemDictDataBiz,
@@ -1593,15 +1634,28 @@
                                SmsConstants.visitContent.visitAuditFail,
                        approveDTO.getCheckInfo(),null
                );
                objCode =  Constants.equalsInteger(approveDTO.getStatus(),Constants.TWO)? WxPlatConstants.visitContent.visitAuditSuccess:WxPlatConstants.visitContent.visitAuditFail;
            }
            visitsMapper.updateById(visits);
            //发送微信公众号
            if(StringUtils.isNotBlank(objCode)){
                Member member = memberMapper.selectById(visits.getCreateMemberId());
                if(Objects.nonNull(member) && StringUtils.isNotBlank(member.getOpenid())){
                    wxPlatNotice.sendVisitTemplateNotice(
                            wxNoticeConfigMapper,visits, objCode,
                            systemDictDataBiz.queryByCode(Constants.WX_PLATFORM,Constants.WX_PLATFORM_ACCESS_TOKEN).getCode(),
                            Arrays.asList(member.getOpenid().split(","))
                    );
                }
            }
            visitsMapper.updateById(visits);
        }else if(approveDTO.getObjType().equals(Constants.approveObjectType.cityUseCar)||approveDTO.getObjType().equals(
                Constants.approveObjectType.unCityUseCar)){
            this.updDriver(approveDTO,approve,true);
            CarUseBook carUseBook = carUseBookJoinMapper.selectById(approveDTO.getObjId());
            if(Objects.nonNull(carUseBook)){
                Member member = memberMapper.selectById(carUseBook.getMemberId());
                //发送通知短息
                if(Objects.nonNull(member)&&StringUtils.isNotBlank(member.getPhone())){
                    SmsEmailServiceImpl.sendCarUseSms(systemDictDataBiz,
                            emayService,smsEmailMapper,smsConfigMapper,carUseBookMapper,approveDTO.getObjId(),
@@ -1609,6 +1663,14 @@
                                    SmsConstants.carUseBookContent.carUseBookAuditFail,
                            approveDTO.getCheckInfo(),Arrays.asList(member.getPhone().split(","))
                    );
                }
                if(StringUtils.isNotBlank(member.getOpenid())){
                    //发送微信公众号通知
                    wxPlatNotice.sendCarUseBookTemplateNotice(
                            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(member.getOpenid().split(",")),0);
                }
            }
@@ -1667,7 +1729,16 @@
                    approveDTO.getCheckInfo(),null
            );
            //TODO 发送微信公众号消息
            //发送微信公众号消息
            Member member = memberMapper.selectById(platformBooks.getDriverId() );
            if(Objects.nonNull(member) && StringUtils.isNotBlank(member.getOpenid())){
                //发送微信公众号通知
                wxPlatNotice.sendPlatformBookTemplateNotice(
                        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(member.getOpenid().split(",")),0);
            }
        }else{
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
@@ -1703,7 +1774,7 @@
        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(),"未查询到司机信息");