package com.doumee.service.business.impl; 
 | 
  
 | 
import com.alibaba.fastjson.JSONObject; 
 | 
import com.doumee.biz.system.SystemDictDataBiz; 
 | 
import com.doumee.core.constants.ResponseStatus; 
 | 
import com.doumee.core.exception.BusinessException; 
 | 
import com.doumee.dao.business.dao.UserActionMapper; 
 | 
import com.doumee.service.business.third.model.LoginUserInfo; 
 | 
import com.doumee.service.business.third.model.PageData; 
 | 
import com.doumee.service.business.third.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.MemberMapper; 
 | 
import com.doumee.dao.business.dao.SmsConfigMapper; 
 | 
import com.doumee.dao.business.dao.SmsEmailMapper; 
 | 
import com.doumee.dao.business.join.ApproveJoinMapper; 
 | 
import com.doumee.dao.business.model.*; 
 | 
import com.doumee.dao.business.vo.ApproveDataVO; 
 | 
  
 | 
import com.doumee.dao.business.model.Member; 
 | 
import com.doumee.dao.system.SystemUserMapper; 
 | 
import com.doumee.dao.system.join.NoticesJoinMapper; 
 | 
import com.doumee.dao.system.model.Notices; 
 | 
import com.doumee.dao.system.model.SystemUser; 
 | 
import com.doumee.dao.web.reqeust.PlatformBooksApplyDTO; 
 | 
import com.doumee.dao.web.reqeust.PlatformBooksCheckNumDTO; 
 | 
import com.doumee.dao.web.reqeust.RevokeDTO; 
 | 
import com.doumee.service.business.ApproveService; 
 | 
import com.doumee.service.business.PlatformBooksService; 
 | 
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.doumee.service.business.third.EmayService; 
 | 
import org.apache.commons.lang3.StringUtils; 
 | 
import org.springframework.beans.BeanUtils; 
 | 
import org.springframework.beans.factory.annotation.Autowired; 
 | 
import org.springframework.stereotype.Service; 
 | 
import org.springframework.transaction.annotation.Transactional; 
 | 
import org.springframework.util.CollectionUtils; 
 | 
  
 | 
import java.math.BigDecimal; 
 | 
import java.util.Arrays; 
 | 
import java.util.Date; 
 | 
import java.util.List; 
 | 
import java.util.Objects; 
 | 
  
 | 
/** 
 | 
 * 月台入园预约信息表Service实现 
 | 
 * @author 江蹄蹄 
 | 
 * @date 2024/06/28 10:03 
 | 
 */ 
 | 
@Service 
 | 
public class PlatformBooksServiceImpl implements PlatformBooksService { 
 | 
  
 | 
    @Autowired 
 | 
    private PlatformBooksMapper platformBooksMapper; 
 | 
    @Autowired 
 | 
    private UserActionMapper userActionMapper; 
 | 
    @Autowired 
 | 
    private PlatformJobMapper platformJobMapper; 
 | 
  
 | 
    @Autowired 
 | 
    private NoticesJoinMapper noticesJoinMapper; 
 | 
  
 | 
    @Autowired 
 | 
    private ApproveTemplMapper approveTemplMapper; 
 | 
  
 | 
    @Autowired 
 | 
    private PlatformReasonMapper platformReasonMapper; 
 | 
  
 | 
    @Autowired 
 | 
    private PlatformGroupMapper platformGroupMapper; 
 | 
  
 | 
    @Autowired 
 | 
    private SystemDictDataBiz systemDictDataBiz; 
 | 
  
 | 
    @Autowired 
 | 
    private SystemUserMapper systemUserMapper; 
 | 
  
 | 
    @Autowired 
 | 
    private ApproveService approveService; 
 | 
  
 | 
    @Autowired 
 | 
    private MemberMapper memberMapper; 
 | 
  
 | 
    @Autowired 
 | 
    private ApproveJoinMapper approveJoinMapper; 
 | 
  
 | 
    @Autowired 
 | 
    private CarsMapper carsMapper; 
 | 
  
 | 
    @Autowired 
 | 
    private SmsConfigMapper smsConfigMapper; 
 | 
  
 | 
    @Autowired 
 | 
    private SmsEmailMapper smsEmailMapper; 
 | 
  
 | 
    @Autowired 
 | 
    private EmayService emayService; 
 | 
  
 | 
    @Autowired 
 | 
    private WxNoticeConfigMapper wxNoticeConfigMapper; 
 | 
  
 | 
    @Override 
 | 
    public Integer create(PlatformBooks platformBooks) { 
 | 
  
 | 
  
 | 
        platformBooksMapper.insert(platformBooks); 
 | 
        return platformBooks.getId(); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void deleteById(Integer id) { 
 | 
        platformBooksMapper.deleteById(id); 
 | 
    } 
 | 
    @Override 
 | 
    @Transactional(rollbackFor = {BusinessException.class,Exception.class}) 
 | 
    public void deleteById(Integer id,LoginUserInfo user) { 
 | 
        PlatformBooks model =findById(id); 
 | 
        if(model ==null || Constants.equalsInteger(model.getIsdeleted(),Constants.ONE)){ 
 | 
            throw  new BusinessException(ResponseStatus.DATA_EMPTY); 
 | 
        } 
 | 
        Date date =new Date(); 
 | 
        platformBooksMapper.update(null,new UpdateWrapper<PlatformBooks>().lambda() 
 | 
                .set(PlatformBooks::getIsdeleted,Constants.ONE) 
 | 
                .set(PlatformBooks::getEditDate,date) 
 | 
                .set(PlatformBooks::getEditor,user.getId()) 
 | 
                .eq(PlatformBooks::getId,id)); 
 | 
        if(model.getJobId()!=null){ 
 | 
            platformJobMapper.update(null,new UpdateWrapper<PlatformJob>().lambda() 
 | 
                    .set(PlatformJob::getIsdeleted,Constants.ONE) 
 | 
                    .set(PlatformJob::getEditDate,new Date()) 
 | 
                    .set(PlatformJob::getEditor,user.getId()) 
 | 
                    .eq(PlatformJob::getPlatformId,model.getJobId()) 
 | 
                    .eq(PlatformJob::getIsdeleted,Constants.ZERO)); 
 | 
        } 
 | 
        String[] params = new String[3]; 
 | 
        params[0] = user.getRealname(); 
 | 
        params[1]=DateUtil.getPlusTime2(date); 
 | 
        params[2]="【合同号:"+model.getContractNum()+"】-【司机:"+model.getDriverName()+" "+model.getDriverPhone()+"】-【车牌好: "+model.getPlateNum()+"】"; 
 | 
        //记录删除日志 
 | 
        UserActionServiceImpl.saveUserActionBiz(user,id,Constants.UserActionType.PLATFROM_BOOK_DEL,userActionMapper,date,params, JSONObject.toJSONString(model)); 
 | 
    } 
 | 
    @Override 
 | 
    public void delete(PlatformBooks platformBooks) { 
 | 
        UpdateWrapper<PlatformBooks> deleteWrapper = new UpdateWrapper<>(platformBooks); 
 | 
        platformBooksMapper.delete(deleteWrapper); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void deleteByIdInBatch(List<Integer> ids) { 
 | 
        if (CollectionUtils.isEmpty(ids)) { 
 | 
            return; 
 | 
        } 
 | 
        platformBooksMapper.deleteBatchIds(ids); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void updateById(PlatformBooks platformBooks) { 
 | 
        platformBooksMapper.updateById(platformBooks); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void updateByIdInBatch(List<PlatformBooks> platformBookss) { 
 | 
        if (CollectionUtils.isEmpty(platformBookss)) { 
 | 
            return; 
 | 
        } 
 | 
        for (PlatformBooks platformBooks: platformBookss) { 
 | 
            this.updateById(platformBooks); 
 | 
        } 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public PlatformBooks findById(Integer id) { 
 | 
        return platformBooksMapper.selectById(id); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public PlatformBooks findOne(PlatformBooks platformBooks) { 
 | 
        QueryWrapper<PlatformBooks> wrapper = new QueryWrapper<>(platformBooks); 
 | 
        return platformBooksMapper.selectOne(wrapper); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public List<PlatformBooks> findList(PlatformBooks platformBooks) { 
 | 
        QueryWrapper<PlatformBooks> wrapper = new QueryWrapper<>(platformBooks); 
 | 
        return platformBooksMapper.selectList(wrapper); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public PageData<PlatformBooks> findPage(PageWrap<PlatformBooks> pageWrap) { 
 | 
        IPage<PlatformBooks> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); 
 | 
        QueryWrapper<PlatformBooks> queryWrapper = new QueryWrapper<>(); 
 | 
        pageWrap.getModel().setIsdeleted(Constants.ZERO); 
 | 
        Utils.MP.blankToNull(pageWrap.getModel()); 
 | 
        queryWrapper.lambda() 
 | 
                .eq(pageWrap.getModel().getId() != null, PlatformBooks::getId, pageWrap.getModel().getId()) 
 | 
                .eq(pageWrap.getModel().getCreator() != null, PlatformBooks::getCreator, pageWrap.getModel().getCreator()) 
 | 
                .ge(pageWrap.getModel().getCreateDate() != null, PlatformBooks::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate())) 
 | 
                .le(pageWrap.getModel().getCreateDate() != null, PlatformBooks::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate())) 
 | 
                .eq(pageWrap.getModel().getEditor() != null, PlatformBooks::getEditor, pageWrap.getModel().getEditor()) 
 | 
                .ge(pageWrap.getModel().getEditDate() != null, PlatformBooks::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate())) 
 | 
                .le(pageWrap.getModel().getEditDate() != null, PlatformBooks::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate())) 
 | 
                .eq(pageWrap.getModel().getIsdeleted() != null, PlatformBooks::getIsdeleted, pageWrap.getModel().getIsdeleted()) 
 | 
                .eq(pageWrap.getModel().getName() != null, PlatformBooks::getName, pageWrap.getModel().getName()) 
 | 
                .eq(pageWrap.getModel().getRemark() != null, PlatformBooks::getRemark, pageWrap.getModel().getRemark()) 
 | 
                .eq(pageWrap.getModel().getStatus() != null, PlatformBooks::getStatus, pageWrap.getModel().getStatus()) 
 | 
                .eq(pageWrap.getModel().getContractNum() != null, PlatformBooks::getContractNum, pageWrap.getModel().getContractNum()) 
 | 
                .ge(pageWrap.getModel().getArriveDate() != null, PlatformBooks::getArriveDate, Utils.Date.getStart(pageWrap.getModel().getArriveDate())) 
 | 
                .le(pageWrap.getModel().getArriveDate() != null, PlatformBooks::getArriveDate, Utils.Date.getEnd(pageWrap.getModel().getArriveDate())) 
 | 
                .eq(pageWrap.getModel().getInType() != null, PlatformBooks::getInType, pageWrap.getModel().getInType()) 
 | 
                .eq(pageWrap.getModel().getTotalNum() != null, PlatformBooks::getTotalNum, pageWrap.getModel().getTotalNum()) 
 | 
                .eq(pageWrap.getModel().getCarCodeFront() != null, PlatformBooks::getCarCodeFront, pageWrap.getModel().getCarCodeFront()) 
 | 
                .eq(pageWrap.getModel().getCarCodeBack() != null, PlatformBooks::getCarCodeBack, pageWrap.getModel().getCarCodeBack()) 
 | 
                .eq(pageWrap.getModel().getDriverId() != null, PlatformBooks::getDriverId, pageWrap.getModel().getDriverId()) 
 | 
                .eq(pageWrap.getModel().getDriverName() != null, PlatformBooks::getDriverName, pageWrap.getModel().getDriverName()) 
 | 
                .eq(pageWrap.getModel().getPlateNum() != null, PlatformBooks::getPlateNum, pageWrap.getModel().getPlateNum()) 
 | 
                .eq(pageWrap.getModel().getDriverPhone() != null, PlatformBooks::getDriverPhone, pageWrap.getModel().getDriverPhone()) 
 | 
                .ge(pageWrap.getModel().getQueryDate() != null, PlatformBooks::getCreateDate, pageWrap.getModel().getQueryDate()) 
 | 
                .ge(pageWrap.getModel().getArriveDateStart() != null, PlatformBooks::getArriveDate, Utils.Date.getStart(pageWrap.getModel().getArriveDateStart())) 
 | 
                .le(pageWrap.getModel().getArriveDateEnd() != null, PlatformBooks::getArriveDate, Utils.Date.getEnd(pageWrap.getModel().getArriveDateEnd())) 
 | 
                .orderByDesc(PlatformBooks::getCreateDate) 
 | 
        ; 
 | 
        PageData<PlatformBooks> pageData = PageData.from(platformBooksMapper.selectPage(page, queryWrapper)); 
 | 
        for (PlatformBooks platformBooks:pageData.getRecords()) { 
 | 
            if(Constants.equalsInteger(platformBooks.getStatus(),Constants.ONE)||Constants.equalsInteger(platformBooks.getStatus(),Constants.ZERO)){ 
 | 
                String auditName = approveService.getApproveUserName(platformBooks.getId(),Constants.approveObjectType.reason); 
 | 
                platformBooks.setAuditName(auditName); 
 | 
            } 
 | 
        } 
 | 
  
 | 
        return pageData; 
 | 
    } 
 | 
  
 | 
  
 | 
  
 | 
  
 | 
  
 | 
    @Override 
 | 
    public long count(PlatformBooks platformBooks) { 
 | 
        QueryWrapper<PlatformBooks> wrapper = new QueryWrapper<>(platformBooks); 
 | 
        return platformBooksMapper.selectCount(wrapper); 
 | 
    } 
 | 
  
 | 
  
 | 
    @Override 
 | 
    public BigDecimal checkNum(PlatformBooksCheckNumDTO platformBooksCheckNumDTO){ 
 | 
        if(Objects.isNull(platformBooksCheckNumDTO) 
 | 
        || Objects.isNull(platformBooksCheckNumDTO.getTotalNum()) 
 | 
        || Objects.isNull(platformBooksCheckNumDTO.getReasonId()) 
 | 
        || Objects.isNull(platformBooksCheckNumDTO.getArriveDate())){ 
 | 
            return BigDecimal.ZERO; 
 | 
        } 
 | 
        //查询每日配置的总预约量 
 | 
        PlatformReason platformReason = platformReasonMapper.selectById(platformBooksCheckNumDTO.getReasonId()); 
 | 
        if(Objects.isNull(platformReason)|| !Constants.equalsInteger(platformReason.getIsdeleted(),Constants.ZERO)){ 
 | 
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"入园原因信息异常,请刷新重试"); 
 | 
        } 
 | 
        List<PlatformBooks> platformBooksList = platformBooksMapper.selectList(new QueryWrapper<PlatformBooks>().lambda() 
 | 
                .eq(PlatformBooks::getReasonId,platformBooksCheckNumDTO.getReasonId()) 
 | 
                .ne(PlatformBooks::getStatus,Constants.THREE) 
 | 
                .eq(PlatformBooks::getIsdeleted,Constants.ZERO) 
 | 
                .like(PlatformBooks::getCreateDate, DateUtil.getDate(platformBooksCheckNumDTO.getArriveDate(),"yyyy-MM-dd")) 
 | 
        ); 
 | 
        if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(platformBooksList)){ 
 | 
           BigDecimal countNum =  platformBooksList.stream().map(m->m.getTotalNum()).reduce(BigDecimal.ZERO,BigDecimal::add); 
 | 
           if(countNum.compareTo(platformReason.getLimitNum())>=Constants.ZERO){ 
 | 
               return BigDecimal.ZERO; 
 | 
           } 
 | 
           return platformReason.getLimitNum().subtract(countNum); 
 | 
        } 
 | 
        return platformReason.getLimitNum(); 
 | 
    } 
 | 
  
 | 
  
 | 
    @Override 
 | 
    @Transactional(rollbackFor = {BusinessException.class,Exception.class}) 
 | 
    public Integer apply(PlatformBooksApplyDTO platformBooksApplyDTO){ 
 | 
        if(Objects.isNull(platformBooksApplyDTO) 
 | 
            || StringUtils.isBlank(platformBooksApplyDTO.getContractNum()) 
 | 
            || Objects.isNull(platformBooksApplyDTO.getArriveDate()) 
 | 
            || Objects.isNull(platformBooksApplyDTO.getInType()) 
 | 
            || Objects.isNull(platformBooksApplyDTO.getTotalNum()) 
 | 
            || StringUtils.isBlank(platformBooksApplyDTO.getCarCodeFront()) 
 | 
            || StringUtils.isBlank(platformBooksApplyDTO.getCarCodeBack()) 
 | 
            || Objects.isNull(platformBooksApplyDTO.getDriverId()) 
 | 
            || StringUtils.isBlank(platformBooksApplyDTO.getDriverPhone()) 
 | 
            || StringUtils.isBlank(platformBooksApplyDTO.getDriverName()) 
 | 
            || StringUtils.isBlank(platformBooksApplyDTO.getTransportImg()) 
 | 
            || Objects.isNull(platformBooksApplyDTO.getReasonId()) 
 | 
            || StringUtils.isBlank(platformBooksApplyDTO.getInReason()) 
 | 
        ){ 
 | 
            throw new BusinessException(ResponseStatus.BAD_REQUEST); 
 | 
        } 
 | 
        PlatformReason platformReason = platformReasonMapper.selectById(platformBooksApplyDTO.getReasonId()); 
 | 
        if(Objects.isNull(platformReason)|| !Constants.equalsInteger(platformReason.getIsdeleted(),Constants.ZERO)){ 
 | 
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"入园原因信息异常,请刷新重试"); 
 | 
        } 
 | 
        PlatformGroup platformGroup= platformGroupMapper.selectById(platformReason.getGroupId()); 
 | 
        if(Objects.isNull(platformGroup)){ 
 | 
            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未查询到绑定月台组数据"); 
 | 
        } 
 | 
        if(!Constants.equalsInteger(platformGroup.getIsdeleted(),Constants.ZERO)){ 
 | 
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"绑定月台组数据异常,请联系管理员"); 
 | 
        } 
 | 
        if(!Constants.checkCarNo(platformBooksApplyDTO.getCarCodeFront())){ 
 | 
            throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"请输入正确的车牌!"); 
 | 
        }; 
 | 
        //查询车辆是否为自有车 
 | 
        if(carsMapper.selectCount(new QueryWrapper<Cars>().lambda().eq(Cars::getIsdeleted,Constants.ZERO).eq(Cars::getCode,platformBooksApplyDTO.getCarCodeFront()))>Constants.ZERO){ 
 | 
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"["+platformBooksApplyDTO.getCarCodeFront()+"]属于内部车辆,无法预约"); 
 | 
        }; 
 | 
        ApproveTempl approveTempl = approveTemplMapper.selectById(platformReason.getApproveTemplId()); 
 | 
        if(Objects.isNull(approveTempl)){ 
 | 
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"未配置审批流,请联系管理员"); 
 | 
        } 
 | 
        if(!Constants.equalsInteger(approveTempl.getIsdeleted(),Constants.ZERO)){ 
 | 
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"审批流已停用,请联系管理员"); 
 | 
        } 
 | 
        PlatformBooks platformBooks = new PlatformBooks(); 
 | 
        BeanUtils.copyProperties(platformBooksApplyDTO,platformBooks); 
 | 
        platformBooks.setCreateDate(new Date()); 
 | 
        platformBooks.setIsdeleted(Constants.ZERO); 
 | 
        platformBooks.setStatus(Constants.ZERO); 
 | 
        platformBooks.setDriverId(platformBooksApplyDTO.getUserId()); 
 | 
        platformBooks.setEditDate(new Date()); 
 | 
        platformBooksMapper.insert(platformBooks); 
 | 
  
 | 
        //创建审批流信息 
 | 
        approveService.createApproveForPlatfrom(approveTempl.getId(),platformBooks.getId(),platformBooks.getDriverId()); 
 | 
        //发送公众号通知 给提交人 
 | 
        SystemUser driver = systemUserMapper.selectOne(new QueryWrapper<SystemUser>().lambda() 
 | 
                .eq(SystemUser::getDeleted, Constants.ZERO) 
 | 
                .eq(SystemUser::getType, Constants.ZERO) 
 | 
                .eq(SystemUser::getMobile,platformBooks.getDriverPhone()) 
 | 
                .isNotNull(SystemUser::getOpenid) 
 | 
                .last(" limit 1 ")); 
 | 
  
 | 
        if(Objects.nonNull(driver)&&StringUtils.isNotBlank(driver.getOpenid())){ 
 | 
            WxPlatNotice wxPlatNotice = new WxPlatNotice(); 
 | 
            wxPlatNotice.sendPlatformBookTemplateNotice(systemDictDataBiz, 
 | 
                    wxNoticeConfigMapper, platformBooks, 
 | 
                    WxPlatConstants.platformBookContent.platformBookUpload, 
 | 
                    systemDictDataBiz.queryByCode(Constants.WX_PLATFORM,Constants.WX_PLATFORM_ACCESS_TOKEN).getCode(), 
 | 
                    Arrays.asList(driver.getOpenid().split(",")),0); 
 | 
        } 
 | 
        return platformBooks.getId(); 
 | 
    } 
 | 
  
 | 
  
 | 
  
 | 
    @Override 
 | 
    @Transactional(rollbackFor = {BusinessException.class,Exception.class}) 
 | 
    public Integer edit(PlatformBooksApplyDTO platformBooksApplyDTO){ 
 | 
        if(Objects.isNull(platformBooksApplyDTO) 
 | 
                || Objects.isNull(platformBooksApplyDTO.getId()) 
 | 
                || StringUtils.isBlank(platformBooksApplyDTO.getContractNum()) 
 | 
                || Objects.isNull(platformBooksApplyDTO.getArriveDate()) 
 | 
                || Objects.isNull(platformBooksApplyDTO.getInType()) 
 | 
                || Objects.isNull(platformBooksApplyDTO.getTotalNum()) 
 | 
                || StringUtils.isBlank(platformBooksApplyDTO.getCarCodeFront()) 
 | 
                || StringUtils.isBlank(platformBooksApplyDTO.getCarCodeBack()) 
 | 
                || Objects.isNull(platformBooksApplyDTO.getDriverId()) 
 | 
                || StringUtils.isBlank(platformBooksApplyDTO.getDriverPhone()) 
 | 
                || StringUtils.isBlank(platformBooksApplyDTO.getDriverName()) 
 | 
                || StringUtils.isBlank(platformBooksApplyDTO.getTransportImg()) 
 | 
        ){ 
 | 
            throw new BusinessException(ResponseStatus.BAD_REQUEST); 
 | 
        } 
 | 
        //查询车辆是否为自有车 
 | 
        if(carsMapper.selectCount(new QueryWrapper<Cars>().lambda().eq(Cars::getIsdeleted,Constants.ZERO).eq(Cars::getCode,platformBooksApplyDTO.getCarCodeFront()))>Constants.ZERO){ 
 | 
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"["+platformBooksApplyDTO.getCarCodeFront()+"]属于内部车辆,无法预约"); 
 | 
        }; 
 | 
        PlatformBooks platformBooks = platformBooksMapper.selectById(platformBooksApplyDTO.getId()); 
 | 
        if(Objects.isNull(platformBooks)||Constants.equalsInteger(platformBooks.getIsdeleted(),Constants.ONE)){ 
 | 
            throw new BusinessException(ResponseStatus.DATA_EMPTY); 
 | 
        } 
 | 
        if(!Constants.equalsInteger(platformBooks.getStatus(),Constants.ZERO)){ 
 | 
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"业务状态已流转"); 
 | 
        } 
 | 
        BeanUtils.copyProperties(platformBooksApplyDTO,platformBooks); 
 | 
        platformBooks.setEditDate(new Date()); 
 | 
        platformBooks.setReasonId(null); 
 | 
        platformBooks.setInReason(null); 
 | 
        platformBooksMapper.updateById(platformBooks); 
 | 
        return platformBooks.getId(); 
 | 
    } 
 | 
  
 | 
  
 | 
  
 | 
    @Override 
 | 
    public PlatformBooks getDetail(Integer id,Integer memberId){ 
 | 
        PlatformBooks model = platformBooksMapper.selectById(id); 
 | 
        if(Objects.isNull(model)||Constants.equalsInteger(model.getIsdeleted(),Constants.ONE)){ 
 | 
            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未查询到预约记录"); 
 | 
        } 
 | 
        String prefixUrl = systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_RESOURCE_PATH).getCode() + 
 | 
                systemDictDataBiz.queryByCode(Constants.FTP,Constants.PLATFORM).getCode(); 
 | 
        model.setPrefixUrl(prefixUrl); 
 | 
  
 | 
        ApproveDataVO approveDataVO = approveService.arrangeApprovedData(id, 
 | 
               6, 
 | 
                memberId); 
 | 
        model.setApproveDateVO(approveDataVO); 
 | 
        List<Approve> approveList = approveDataVO.getApproveList(); 
 | 
        if(Constants.equalsInteger(model.getStatus(),Constants.FOUR)){ 
 | 
            String path = systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_RESOURCE_PATH).getCode() 
 | 
                    +systemDictDataBiz.queryByCode(Constants.FTP,Constants.MEMBER_IMG).getCode(); 
 | 
            Member member = memberMapper.selectById(model.getDriverId()); 
 | 
  
 | 
            Approve approve = new Approve(); 
 | 
            approve.setApproveType(Constants.ZERO); 
 | 
            approve.setCreateDate(model.getCancelTime()); 
 | 
            approve.setTitle("撤销人"); 
 | 
            approve.setStatusInfo("已撤销"); 
 | 
            approve.setStatus(Constants.FOUR); 
 | 
            approve.setType(Constants.ZERO); 
 | 
            if(member!=null) { 
 | 
                approve.setMemberName(member.getName()); 
 | 
                if (StringUtils.isNotBlank(member.getFaceImg())) { 
 | 
                    approve.setFaceImg(path + member.getFaceImg()); 
 | 
                } 
 | 
            } 
 | 
            approve.setCheckInfo(model.getCancelInfo()); 
 | 
            approve.setCheckDate(model.getCancelTime()); 
 | 
            approveList.add(approve); 
 | 
        } 
 | 
  
 | 
        Notices notices = noticesJoinMapper.selectOne(new QueryWrapper<Notices>().lambda() 
 | 
                .eq(Notices::getObjId,id) 
 | 
                .eq(Notices::getType,Constants.noticesObjectType.reason) 
 | 
                .eq(Notices::getUserId,memberId) 
 | 
                .eq(Notices::getSendacopy,Constants.ZERO) 
 | 
                .orderByDesc(Notices::getId).last(" limit 1 ")); 
 | 
        if(Objects.nonNull(notices)){ 
 | 
            if(Constants.equalsInteger(notices.getStatus(),Constants.ZERO)){ 
 | 
                model.setInfo("待我处理"); 
 | 
            }else{ 
 | 
                model.setInfo(notices.getInfo()); 
 | 
            } 
 | 
        } 
 | 
        return model; 
 | 
    } 
 | 
  
 | 
  
 | 
  
 | 
    @Override 
 | 
    public void revoke(RevokeDTO revokeDTO, LoginUserInfo loginUserInfo){ 
 | 
        if(Objects.isNull(revokeDTO) 
 | 
                || Objects.isNull(revokeDTO.getId()) 
 | 
        ){ 
 | 
            throw new BusinessException(ResponseStatus.BAD_REQUEST); 
 | 
        } 
 | 
        PlatformBooks model = platformBooksMapper.selectById(revokeDTO.getId()); 
 | 
        if(Objects.isNull(model)||Constants.equalsInteger(model.getIsdeleted(),Constants.ONE)){ 
 | 
            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未查询到预约记录"); 
 | 
        } 
 | 
        if(!(Constants.equalsInteger(model.getStatus(),Constants.ZERO)||Constants.equalsInteger(model.getStatus(),Constants.ONE))){ 
 | 
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"业务状态已流转,无法进行该操作"); 
 | 
        } 
 | 
        model.setCancelUser(loginUserInfo.getId()); 
 | 
        model.setCancelInfo(revokeDTO.getInfo()); 
 | 
        model.setCancelTime(new Date()); 
 | 
        model.setStatus(Constants.FOUR); 
 | 
        platformBooksMapper.updateById(model); 
 | 
        //处理审批记录 
 | 
        approveJoinMapper.update(null,new UpdateWrapper<Approve>() 
 | 
                .lambda() 
 | 
                .set(Approve::getIsdeleted,Constants.ONE) 
 | 
                .set(Approve::getStatus,Constants.FOUR) 
 | 
                .set(Approve::getCheckInfo,"物流车预约申请取消") 
 | 
                .in(Approve::getStatus,Constants.ZERO,Constants.ONE) 
 | 
                .eq(Approve::getObjType,Constants.approveObjectType.logisticsCarUse) 
 | 
                .eq(Approve::getObjId,revokeDTO.getId()) 
 | 
        ); 
 | 
  
 | 
        noticesJoinMapper.update(null,new UpdateWrapper<Notices>().lambda() 
 | 
                .set(Notices::getEditDate,new Date()) 
 | 
                .set(Notices::getInfo,"物流车预约申请取消") 
 | 
                .set(Notices::getReaded,Constants.ONE) 
 | 
                .set(Notices::getParam2,Constants.TWO) 
 | 
                .set(Notices::getStatus,Constants.ONE) 
 | 
                .eq(Notices::getType,Constants.noticesObjectType.reason) 
 | 
                .eq(Notices::getObjId,model.getId()) 
 | 
        ); 
 | 
  
 | 
        //发送短信通知 
 | 
        SmsEmailServiceImpl.sendPlatformBookSms(systemDictDataBiz, 
 | 
                emayService,smsEmailMapper,smsConfigMapper,platformBooksMapper,model.getId(), 
 | 
                        SmsConstants.platformBookContent.platformBookCancel, 
 | 
                null,null 
 | 
        ); 
 | 
  
 | 
  
 | 
    } 
 | 
  
 | 
  
 | 
} 
 |