|  |  | 
 |  |  |  | 
 |  |  | import com.doumee.biz.system.SystemDictDataBiz; | 
 |  |  | import com.doumee.core.constants.ResponseStatus; | 
 |  |  | import com.doumee.core.excel.ExcelReplaceCommon; | 
 |  |  | import com.doumee.core.exception.BusinessException; | 
 |  |  | import com.doumee.core.model.LoginUserInfo; | 
 |  |  | import com.doumee.core.model.PageData; | 
 |  |  | 
 |  |  | import com.doumee.core.utils.DateUtil; | 
 |  |  | import com.doumee.core.utils.Utils; | 
 |  |  | import com.doumee.dao.business.*; | 
 |  |  | import com.doumee.dao.business.dto.YwSmsEmailBillCallDTO; | 
 |  |  | import com.doumee.dao.business.model.*; | 
 |  |  | import com.doumee.dao.business.vo.YwContractBillCallDataVO; | 
 |  |  | import com.doumee.dao.business.vo.YwContractBillDataVO; | 
 |  |  | 
 |  |  | import com.baomidou.mybatisplus.core.metadata.IPage; | 
 |  |  | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | 
 |  |  | import com.github.yulichang.wrapper.MPJLambdaWrapper; | 
 |  |  | import lombok.extern.java.Log; | 
 |  |  | import org.apache.commons.lang3.StringUtils; | 
 |  |  | import org.checkerframework.checker.units.qual.C; | 
 |  |  | import org.springframework.beans.factory.annotation.Autowired; | 
 |  |  | import org.springframework.stereotype.Service; | 
 |  |  | import org.springframework.util.CollectionUtils; | 
 |  |  |  | 
 |  |  | import javax.servlet.http.HttpServletResponse; | 
 |  |  | import java.io.File; | 
 |  |  | import java.math.BigDecimal; | 
 |  |  | import java.net.URLEncoder; | 
 |  |  | import java.nio.charset.Charset; | 
 |  |  | import java.util.*; | 
 |  |  | import java.util.stream.Collectors; | 
 |  |  |  | 
 |  |  | 
 |  |  |     @Autowired | 
 |  |  |     private MemberMapper memberMapper; | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     private YwTempConfigMapper ywTempConfigMapper; | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  | 
 |  |  |         ){ | 
 |  |  |             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"账单数据错误,请刷新重试"); | 
 |  |  |         } | 
 |  |  |         this.dealRoomDetail(ywContractBillList); | 
 |  |  |         for (YwContractBill ywContractBill:ywContractBillList) { | 
 |  |  |             YwContractBillCallDataVO ywContractBillCallDataVO = new YwContractBillCallDataVO(); | 
 |  |  |             ywContractBillCallDataVO.setBillId(ywContractBill.getId()); | 
 |  |  | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     public void downloadCallFeeDoc(List<Integer> billIds){ | 
 |  |  |         List<YwContractBill> ywContractBillList = ywContractBillMapper.selectJoinList(YwContractBill.class,new MPJLambdaWrapper<YwContractBill>() | 
 |  |  |                 .selectAll(YwContractBill.class) | 
 |  |  |                 .selectAs(YwCustomer::getName,YwContractBill::getCustomerName) | 
 |  |  |                 .selectAs(YwCustomer::getUserId,YwContractBill::getCustomerUserId) | 
 |  |  |                 .selectAs(YwCustomer::getId,YwContractBill::getCustomerId) | 
 |  |  |                 .leftJoin(YwContract.class,YwContract::getId,YwContractBill::getContractId) | 
 |  |  |                 .leftJoin(YwCustomer.class,YwCustomer::getId,YwContract::getRenterId) | 
 |  |  |                 .in(YwContractBill::getId,billIds) | 
 |  |  |         ); | 
 |  |  |     @Override | 
 |  |  |     public void downloadCallFeeDoc(List<Integer> billIds, LoginUserInfo loginUserInfo,HttpServletResponse response){ | 
 |  |  |         try { | 
 |  |  |             List<YwContractBill> ywContractBillList = ywContractBillMapper.selectJoinList(YwContractBill.class,new MPJLambdaWrapper<YwContractBill>() | 
 |  |  |                     .selectAll(YwContractBill.class) | 
 |  |  |                     .selectAs(YwCustomer::getName,YwContractBill::getCustomerName) | 
 |  |  |                     .selectAs(YwCustomer::getUserId,YwContractBill::getCustomerUserId) | 
 |  |  |                     .selectAs(YwCustomer::getId,YwContractBill::getCustomerId) | 
 |  |  |                     .selectAs(YwContractDetail::getPrice,YwContractBill::getPrice) | 
 |  |  |                     .selectAs(YwContract::getCompanyId,YwContractBill::getCompanyId) | 
 |  |  |                     .selectAs(YwContractDetail::getCircleType,YwContractBill::getCircleType) | 
 |  |  |                     .selectAs(YwContractDetail::getType,YwContractBill::getDetailType) | 
 |  |  |                     .selectAs(YwContract::getZlPayType,YwContractBill::getZlPayType) | 
 |  |  |                     .selectAs(YwContract::getWyPayType,YwContractBill::getWyPayType) | 
 |  |  |                     .select(" ( select ifnull(sum(r.rent_area),0) from yw_room y left join yw_contract_room yr on y.id = yr.room_id where yr.contract_id = t.contract_id and y.IS_INVESTMENT = 0 and yr.type = 0 )  " , YwContractBill::getTotalArea) | 
 |  |  |                     .leftJoin(YwContract.class,YwContract::getId,YwContractBill::getContractId) | 
 |  |  |                     .leftJoin(YwCustomer.class,YwCustomer::getId,YwContract::getRenterId) | 
 |  |  |                     .leftJoin(YwContractDetail.class,YwContractDetail::getId,YwContractBill::getDetailId) | 
 |  |  |                     .in(YwContractBill::getId,billIds) | 
 |  |  |             ); | 
 |  |  |             List<YwTempConfig> ywTempConfigList = ywTempConfigMapper.selectList(new QueryWrapper<YwTempConfig>().lambda().eq(YwTempConfig::getIsdeleted,Constants.ZERO)); | 
 |  |  |             if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isEmpty(ywTempConfigList)){ | 
 |  |  |                 throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"未查询到模板配置项,请联系管理员"); | 
 |  |  |             } | 
 |  |  |             List<YwTempConfig> tempList = ywTempConfigList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.FOUR)|| | 
 |  |  |                     Constants.equalsInteger(i.getType(),Constants.FIVE)|| | 
 |  |  |                     Constants.equalsInteger(i.getType(),Constants.SIX)).collect(Collectors.toList()); | 
 |  |  |             if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isEmpty(tempList)){ | 
 |  |  |                 throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"未查询到模板配置项,请联系管理员"); | 
 |  |  |             } | 
 |  |  |             List<File> fileList = new ArrayList<>(); | 
 |  |  |             for (YwContractBill ywContractBill:ywContractBillList) { | 
 |  |  |                 this.dealTempData(tempList,ywContractBill,loginUserInfo); | 
 |  |  |                 String fileName =  "催费通知单_" +ywContractBill.getCode() +"_" + System.currentTimeMillis()+".docx"; | 
 |  |  |                 YwTempConfig ywTempConfig = new YwTempConfig(); | 
 |  |  |                 if(Constants.equalsInteger(ywContractBill.getType(),Constants.ZERO)){ | 
 |  |  |                     Optional<YwTempConfig> optional = ywTempConfigList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.TWO)).findAny(); | 
 |  |  |                     if (optional.isPresent()) { | 
 |  |  |                         ywTempConfig = optional.get(); | 
 |  |  |                     } | 
 |  |  |                 }else{ | 
 |  |  |                     Optional<YwTempConfig> optional = ywTempConfigList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.THREE)).findAny(); | 
 |  |  |                     if (optional.isPresent()) { | 
 |  |  |                         ywTempConfig = optional.get(); | 
 |  |  |                     } | 
 |  |  |                 } | 
 |  |  |                 if(Objects.isNull(ywTempConfig)){ | 
 |  |  |                     throw  new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"模板信息异常,请联系管理员"); | 
 |  |  |                 } | 
 |  |  |                 String path = ExcelReplaceCommon.modifyWordTemplate(ywTempConfig.getUrl(),tempList,fileName); | 
 |  |  |                 File f = new File(path); | 
 |  |  |                 if(f !=null && f.isFile()){ | 
 |  |  |                     fileList.add(f); | 
 |  |  |                 } | 
 |  |  |                 if(fileList == null || fileList.size() == 0){ | 
 |  |  |                     throw  new BusinessException(ResponseStatus.DATA_EMPTY); | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |             String fileName =  "催费通知单-" +System.currentTimeMillis(); | 
 |  |  |             String encodeFileName = URLEncoder.encode(fileName, Charset.forName("UTF-8").toString())+".zip"; | 
 |  |  |             response.setHeader("Content-Disposition","attachment;filename=" + encodeFileName); | 
 |  |  |             response.setContentType("application/octet-stream"); | 
 |  |  |             response.setHeader("eva-opera-type", "download"); | 
 |  |  |             response.setHeader("eva-download-filename", encodeFileName); | 
 |  |  |             Constants.packFilesToZip(fileList,response.getOutputStream()); | 
 |  |  |         } catch (Exception e) { | 
 |  |  |             throw new BusinessException(ResponseStatus.EXPORT_EXCEL_ERROR, e); | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     public void dealTempData(List<YwTempConfig> ywTempConfigList , YwContractBill ywContractBill, LoginUserInfo loginUserInfo){ | 
 |  |  |         //查询收支账号数据 | 
 |  |  |  | 
 |  |  |         for (YwTempConfig y:ywTempConfigList) { | 
 |  |  |             if(y.getTitle().equals("${费用名称}")&&Objects.nonNull(ywContractBill.getCostType())){ | 
 |  |  |                 //费用类型:0=租赁费;1=物业费;2=租赁押金;3=物业押金;4=水电费;5=杂项费;6=其他; 7=保证金 | 
 |  |  |                 if(Constants.equalsInteger(ywContractBill.getCostType(),Constants.ZERO)){ | 
 |  |  |                     y.setUrl("租赁费"); | 
 |  |  |                 }else if(Constants.equalsInteger(ywContractBill.getCostType(),Constants.ONE)){ | 
 |  |  |                     y.setUrl("物业费"); | 
 |  |  |                 }else if(Constants.equalsInteger(ywContractBill.getCostType(),Constants.TWO)){ | 
 |  |  |                     y.setUrl("租赁押金"); | 
 |  |  |                 }else if(Constants.equalsInteger(ywContractBill.getCostType(),Constants.THREE)){ | 
 |  |  |                     y.setUrl("物业押金"); | 
 |  |  |                 }else if(Constants.equalsInteger(ywContractBill.getCostType(),Constants.FOUR)){ | 
 |  |  |                     y.setUrl("水电费"); | 
 |  |  |                 }else if(Constants.equalsInteger(ywContractBill.getCostType(),Constants.FIVE)){ | 
 |  |  |                     y.setUrl("杂项费"); | 
 |  |  |                 }else if(Constants.equalsInteger(ywContractBill.getCostType(),Constants.SIX)){ | 
 |  |  |                     y.setUrl("其他"); | 
 |  |  |                 }else if(Constants.equalsInteger(ywContractBill.getCostType(),Constants.SEVEN)){ | 
 |  |  |                     y.setUrl("保证金"); | 
 |  |  |                 } | 
 |  |  |             }else if(y.getTitle().equals("${计费周期}")&&Objects.nonNull(ywContractBill.getDetailType())){ | 
 |  |  |                 if(Constants.equalsInteger(ywContractBill.getDetailType(),Constants.ZERO)){ | 
 |  |  |                     //租赁支付方式 0=一次性付款;1=每三个月一付;2=六个月一付;3=一年一付 | 
 |  |  |                     if(Objects.nonNull(ywContractBill.getZlPayType())){ | 
 |  |  |                         if(Constants.equalsInteger(ywContractBill.getZlPayType(),Constants.ZERO)){ | 
 |  |  |                             y.setUrl("一次性付款"); | 
 |  |  |                         }else if(Constants.equalsInteger(ywContractBill.getZlPayType(),Constants.ONE)){ | 
 |  |  |                             y.setUrl("每三个月一付"); | 
 |  |  |                         }else if(Constants.equalsInteger(ywContractBill.getZlPayType(),Constants.TWO)){ | 
 |  |  |                             y.setUrl("六个月一付"); | 
 |  |  |                         }else if(Constants.equalsInteger(ywContractBill.getZlPayType(),Constants.THREE)){ | 
 |  |  |                             y.setUrl("一年一付"); | 
 |  |  |                         } | 
 |  |  |                     } | 
 |  |  |                 }else{ | 
 |  |  |                     //物业支付方式 0=一次性付款;1=每三个月一付;2=六个月一付;3=一年一付 | 
 |  |  |                     if(Objects.nonNull(ywContractBill.getWyPayType())){ | 
 |  |  |                         if(Constants.equalsInteger(ywContractBill.getWyPayType(),Constants.ZERO)){ | 
 |  |  |                             y.setUrl("一次性付款"); | 
 |  |  |                         }else if(Constants.equalsInteger(ywContractBill.getWyPayType(),Constants.ONE)){ | 
 |  |  |                             y.setUrl("每三个月一付"); | 
 |  |  |                         }else if(Constants.equalsInteger(ywContractBill.getWyPayType(),Constants.TWO)){ | 
 |  |  |                             y.setUrl("六个月一付"); | 
 |  |  |                         }else if(Constants.equalsInteger(ywContractBill.getWyPayType(),Constants.THREE)){ | 
 |  |  |                             y.setUrl("一年一付"); | 
 |  |  |                         } | 
 |  |  |                     } | 
 |  |  |                 } | 
 |  |  |             }else if(y.getTitle().equals("${单价}")&&Objects.nonNull(ywContractBill.getPrice())){ | 
 |  |  |                 y.setUrl(ywContractBill.getPrice().toString()); | 
 |  |  |             }else if(y.getTitle().equals("${单位}")&&Objects.nonNull(ywContractBill.getCircleType())){ | 
 |  |  |                 //付款周期类型 0=元每平米天;1=元每平米月;2=元每平米年;3=元每天;4=元每月;5=元每年;6=元每场; | 
 |  |  |                 if(Constants.equalsInteger(ywContractBill.getCircleType(),Constants.ZERO)){ | 
 |  |  |                     y.setUrl("元每平米天"); | 
 |  |  |                 }else if(Constants.equalsInteger(ywContractBill.getCircleType(),Constants.ONE)){ | 
 |  |  |                     y.setUrl("元每平米月"); | 
 |  |  |                 }else if(Constants.equalsInteger(ywContractBill.getCircleType(),Constants.ONE)){ | 
 |  |  |                     y.setUrl("元每平米年"); | 
 |  |  |                 } else if(Constants.equalsInteger(ywContractBill.getCircleType(),Constants.ONE)){ | 
 |  |  |                     y.setUrl("元每天"); | 
 |  |  |                 } else if(Constants.equalsInteger(ywContractBill.getCircleType(),Constants.ONE)){ | 
 |  |  |                     y.setUrl("元每月"); | 
 |  |  |                 } else if(Constants.equalsInteger(ywContractBill.getCircleType(),Constants.ONE)){ | 
 |  |  |                     y.setUrl("元每年"); | 
 |  |  |                 } else if(Constants.equalsInteger(ywContractBill.getCircleType(),Constants.ONE)){ | 
 |  |  |                     y.setUrl("元每场"); | 
 |  |  |                 } | 
 |  |  |             }else if(y.getTitle().equals("${应收日期}")&&Objects.nonNull(ywContractBill.getPlanPayDate())){ | 
 |  |  |                 y.setUrl(DateUtil.formatDate(ywContractBill.getPlanPayDate(),"yyyy-MM-dd")); | 
 |  |  |             }else if(y.getTitle().equals("${应收金额}")&&Objects.nonNull(ywContractBill.getReceivableFee())){ | 
 |  |  |                 y.setUrl(ywContractBill.getReceivableFee().toString()); | 
 |  |  |             }else if(y.getTitle().equals("${账单备注}")){ | 
 |  |  |                 if(StringUtils.isNotBlank(ywContractBill.getRemark())){ | 
 |  |  |                     y.setUrl(ywContractBill.getRemark()); | 
 |  |  |                 }else{ | 
 |  |  |                     y.setUrl(""); | 
 |  |  |                 } | 
 |  |  |             }else if(y.getTitle().equals("${租客名称}")&&StringUtils.isNotBlank(ywContractBill.getCustomerName())){ | 
 |  |  |                 y.setUrl(ywContractBill.getCustomerName()); | 
 |  |  |             }else if(y.getTitle().equals("${楼宇/楼层/房源}")){ | 
 |  |  |                 if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(ywContractBill.getYwContractRoomList())){ | 
 |  |  |                     StringBuilder roomPathName = new StringBuilder(); | 
 |  |  |                     for (YwContractRoom ywContractRoom:ywContractBill.getYwContractRoomList()) { | 
 |  |  |                         if(StringUtils.isNotBlank(ywContractRoom.getProjectName())){ | 
 |  |  |                             roomPathName.append(ywContractRoom.getProjectName()+"/"); | 
 |  |  |                         } | 
 |  |  |                         if(StringUtils.isNotBlank(ywContractRoom.getBuildingName())){ | 
 |  |  |                             roomPathName.append(ywContractRoom.getBuildingName()+"/"); | 
 |  |  |                         } | 
 |  |  |                         if(StringUtils.isNotBlank(ywContractRoom.getFloorName())){ | 
 |  |  |                             roomPathName.append(ywContractRoom.getFloorName()+"/"); | 
 |  |  |                         } | 
 |  |  |                         if(StringUtils.isNotBlank(ywContractRoom.getRoomName())){ | 
 |  |  |                             roomPathName.append(ywContractRoom.getRoomName()); | 
 |  |  |                         } | 
 |  |  |                         if(StringUtils.isNotBlank(roomPathName)){ | 
 |  |  |                             roomPathName.append(";"); | 
 |  |  |                         } | 
 |  |  |                     } | 
 |  |  |                     y.setUrl(roomPathName.toString()); | 
 |  |  |                 } | 
 |  |  |             }else if(y.getTitle().equals("${租赁面积}")&&Objects.nonNull(ywContractBill.getTotalArea())){ | 
 |  |  |                 y.setUrl(ywContractBill.getTotalArea().toString()); | 
 |  |  |             }else if(y.getTitle().equals("${所属公司账户名称}")){ | 
 |  |  |                 y.setUrl("所属公司账户名称"); | 
 |  |  |             }else if(y.getTitle().equals("${所属公司银行账号}")){ | 
 |  |  |                 y.setUrl("所属公司银行账号"); | 
 |  |  |             }else if(y.getTitle().equals("${所属公司开户银行}")){ | 
 |  |  |                 y.setUrl("所属公司开户银行"); | 
 |  |  |             }else if(y.getTitle().equals("${通知单生成日期}")){ | 
 |  |  |                 y.setUrl(DateUtil.formatDate(new Date(),"yyyy-MM-dd")); | 
 |  |  |             }else if(y.getTitle().equals("${当前用户姓名}")){ | 
 |  |  |                 y.setUrl(loginUserInfo.getRealname()); | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     public void sendSmsEmail(List<YwSmsEmailBillCallDTO> ywSmsEmailBillCallDTOList,LoginUserInfo loginUserInfo){ | 
 |  |  |         if(CollectionUtils.isEmpty(ywSmsEmailBillCallDTOList)){ | 
 |  |  |             throw new BusinessException(ResponseStatus.BAD_REQUEST); | 
 |  |  |         } | 
 |  |  |         List<YwTempConfig> ywTempConfigList = ywTempConfigMapper.selectList(new QueryWrapper<YwTempConfig>().lambda().eq(YwTempConfig::getIsdeleted,Constants.ZERO)); | 
 |  |  |         if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isEmpty(ywTempConfigList)){ | 
 |  |  |             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"未查询到模板配置项,请联系管理员"); | 
 |  |  |         } | 
 |  |  |         List<YwTempConfig> tempList = ywTempConfigList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.FOUR)|| | 
 |  |  |                 Constants.equalsInteger(i.getType(),Constants.FIVE)|| | 
 |  |  |                 Constants.equalsInteger(i.getType(),Constants.SIX)).collect(Collectors.toList()); | 
 |  |  |         if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isEmpty(tempList)){ | 
 |  |  |             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"未查询到模板配置项,请联系管理员"); | 
 |  |  |         } | 
 |  |  |         for (YwSmsEmailBillCallDTO ywSmsEmailBillCallDTO:ywSmsEmailBillCallDTOList) { | 
 |  |  |             if(Objects.isNull(ywSmsEmailBillCallDTO) | 
 |  |  |             || Objects.isNull(ywSmsEmailBillCallDTO.getBillId()) | 
 |  |  |                     || Objects.isNull(ywSmsEmailBillCallDTO.getUserId()) | 
 |  |  |             ||Objects.isNull(ywSmsEmailBillCallDTO.getSendEmail()) | 
 |  |  |                     || Objects.isNull(ywSmsEmailBillCallDTO.getSendSms())){ | 
 |  |  |                 throw new BusinessException(ResponseStatus.BAD_REQUEST); | 
 |  |  |             } | 
 |  |  |  | 
 |  |  |             YwContractBill ywContractBill = ywContractBillMapper.selectJoinOne(YwContractBill.class,new MPJLambdaWrapper<YwContractBill>() | 
 |  |  |                     .selectAll(YwContractBill.class) | 
 |  |  |                     .selectAs(YwCustomer::getName,YwContractBill::getCustomerName) | 
 |  |  |                     .selectAs(YwCustomer::getUserId,YwContractBill::getCustomerUserId) | 
 |  |  |                     .selectAs(YwCustomer::getId,YwContractBill::getCustomerId) | 
 |  |  |                     .selectAs(YwContractDetail::getPrice,YwContractBill::getPrice) | 
 |  |  |                     .selectAs(YwContract::getCompanyId,YwContractBill::getCompanyId) | 
 |  |  |                     .selectAs(YwContractDetail::getCircleType,YwContractBill::getCircleType) | 
 |  |  |                     .selectAs(YwContractDetail::getType,YwContractBill::getDetailType) | 
 |  |  |                     .selectAs(YwContract::getZlPayType,YwContractBill::getZlPayType) | 
 |  |  |                     .selectAs(YwContract::getWyPayType,YwContractBill::getWyPayType) | 
 |  |  |                     .select(" ( select ifnull(sum(r.rent_area),0) from yw_room y left join yw_contract_room yr on y.id = yr.room_id where yr.contract_id = t.contract_id and y.IS_INVESTMENT = 0 and yr.type = 0 )  " , YwContractBill::getTotalArea) | 
 |  |  |                     .leftJoin(YwContract.class,YwContract::getId,YwContractBill::getContractId) | 
 |  |  |                     .leftJoin(YwCustomer.class,YwCustomer::getId,YwContract::getRenterId) | 
 |  |  |                     .leftJoin(YwContractDetail.class,YwContractDetail::getId,YwContractBill::getDetailId) | 
 |  |  |                     .eq(YwContractBill::getId,ywSmsEmailBillCallDTO.getBillId()) | 
 |  |  |                     .last( "limit 1" ) | 
 |  |  |             ); | 
 |  |  |             this.dealTempData(tempList,ywContractBill,loginUserInfo); | 
 |  |  |             Member member = memberMapper.selectById(ywSmsEmailBillCallDTO.getUserId()); | 
 |  |  |             if(Objects.isNull(member)){ | 
 |  |  |                 throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"存在未查询到的人员信息"); | 
 |  |  |             } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |         for (YwSmsEmailBillCallDTO ywSmsEmailBillCallDTO:ywSmsEmailBillCallDTOList) { | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |          | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  | } |