| | |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.checkerframework.checker.units.qual.C; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.util.CollectionUtils; |
| | | |
| | |
| | | private YwContractMapper ywContractMapper; |
| | | |
| | | @Autowired |
| | | private YwAccountMapper ywAccountMapper; |
| | | |
| | | @Autowired |
| | | private MemberMapper memberMapper; |
| | | |
| | | @Autowired |
| | | private YwTempConfigMapper ywTempConfigMapper; |
| | | |
| | | |
| | | @Value("${zip_file_path}") |
| | | private String zipFilePath; |
| | | |
| | | @Override |
| | | public Integer create(YwContractBill ywContractBill) { |
| | |
| | | .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) |
| | | .select(" ( select ifnull(sum(y.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) |
| | | ); |
| | | this.dealRoomDetail(ywContractBillList); |
| | | 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<File> fileList = new ArrayList<>(); |
| | | for (YwContractBill ywContractBill:ywContractBillList) { |
| | | this.dealTempData(tempList,ywContractBill,loginUserInfo); |
| | | List<YwTempConfig> dealList = this.dealTempData(tempList,ywContractBill,loginUserInfo); |
| | | String fileName = "催费通知单_" +ywContractBill.getCode() +"_" + System.currentTimeMillis()+".docx"; |
| | | YwTempConfig ywTempConfig = new YwTempConfig(); |
| | | if(Constants.equalsInteger(ywContractBill.getType(),Constants.ZERO)){ |
| | |
| | | if(Objects.isNull(ywTempConfig)){ |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"模板信息异常,请联系管理员"); |
| | | } |
| | | String path = ExcelReplaceCommon.modifyWordTemplate(ywTempConfig.getUrl(),tempList,fileName); |
| | | String path = ExcelReplaceCommon.modifyWordTemplate(ywTempConfig.getUrl(),dealList,fileName,zipFilePath); |
| | | File f = new File(path); |
| | | if(f !=null && f.isFile()){ |
| | | fileList.add(f); |
| | |
| | | } |
| | | |
| | | |
| | | public void dealTempData(List<YwTempConfig> ywTempConfigList , YwContractBill ywContractBill, LoginUserInfo loginUserInfo){ |
| | | public List<YwTempConfig> dealTempData(List<YwTempConfig> ywTempConfigList , YwContractBill ywContractBill, LoginUserInfo loginUserInfo){ |
| | | //查询收支账号数据 |
| | | YwAccount ywAccount = ywAccountMapper.selectOne(new QueryWrapper<YwAccount>().lambda().eq(YwAccount::getIsdeleted,Constants.ZERO).eq(YwAccount::getStatus,Constants.ZERO).eq(YwAccount::getCompanyId,ywContractBill.getCompanyId()) |
| | | .orderByDesc(YwAccount::getId) |
| | | .last(" limit 1 ")); |
| | | |
| | | List<YwTempConfig> dealList = new ArrayList<>(); |
| | | for (YwTempConfig y:ywTempConfigList) { |
| | | if(y.getTitle().equals("${费用名称}")&&Objects.nonNull(ywContractBill.getCostType())){ |
| | | //费用类型:0=租赁费;1=物业费;2=租赁押金;3=物业押金;4=水电费;5=杂项费;6=其他; 7=保证金 |
| | |
| | | y.setUrl("元每平米天"); |
| | | }else if(Constants.equalsInteger(ywContractBill.getCircleType(),Constants.ONE)){ |
| | | y.setUrl("元每平米月"); |
| | | }else if(Constants.equalsInteger(ywContractBill.getCircleType(),Constants.ONE)){ |
| | | }else if(Constants.equalsInteger(ywContractBill.getCircleType(),Constants.TWO)){ |
| | | y.setUrl("元每平米年"); |
| | | } else if(Constants.equalsInteger(ywContractBill.getCircleType(),Constants.ONE)){ |
| | | } else if(Constants.equalsInteger(ywContractBill.getCircleType(),Constants.THREE)){ |
| | | y.setUrl("元每天"); |
| | | } else if(Constants.equalsInteger(ywContractBill.getCircleType(),Constants.ONE)){ |
| | | } else if(Constants.equalsInteger(ywContractBill.getCircleType(),Constants.FOUR)){ |
| | | y.setUrl("元每月"); |
| | | } else if(Constants.equalsInteger(ywContractBill.getCircleType(),Constants.ONE)){ |
| | | } else if(Constants.equalsInteger(ywContractBill.getCircleType(),Constants.FIVE)){ |
| | | y.setUrl("元每年"); |
| | | } else if(Constants.equalsInteger(ywContractBill.getCircleType(),Constants.ONE)){ |
| | | } else if(Constants.equalsInteger(ywContractBill.getCircleType(),Constants.SIX)){ |
| | | y.setUrl("元每场"); |
| | | } |
| | | }else if(y.getTitle().equals("${应收日期}")&&Objects.nonNull(ywContractBill.getPlanPayDate())){ |
| | |
| | | } |
| | | }else if(y.getTitle().equals("${租客名称}")&&StringUtils.isNotBlank(ywContractBill.getCustomerName())){ |
| | | y.setUrl(ywContractBill.getCustomerName()); |
| | | }else if(y.getTitle().equals("${楼宇/楼层/房源}")){ |
| | | }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()) { |
| | |
| | | }else if(y.getTitle().equals("${租赁面积}")&&Objects.nonNull(ywContractBill.getTotalArea())){ |
| | | y.setUrl(ywContractBill.getTotalArea().toString()); |
| | | }else if(y.getTitle().equals("${所属公司账户名称}")){ |
| | | y.setUrl("所属公司账户名称"); |
| | | if(Objects.nonNull(ywAccount)&&StringUtils.isNotBlank(ywAccount.getName())){ |
| | | y.setUrl(ywAccount.getName()); |
| | | }else{ |
| | | y.setUrl("-"); |
| | | } |
| | | }else if(y.getTitle().equals("${所属公司银行账号}")){ |
| | | y.setUrl("所属公司银行账号"); |
| | | if(Objects.nonNull(ywAccount)&&StringUtils.isNotBlank(ywAccount.getName())){ |
| | | y.setUrl(ywAccount.getName()); |
| | | }else{ |
| | | y.setUrl("-"); |
| | | } |
| | | }else if(y.getTitle().equals("${所属公司开户银行}")){ |
| | | y.setUrl("所属公司开户银行"); |
| | | if(Objects.nonNull(ywAccount)&&StringUtils.isNotBlank(ywAccount.getBankNo())){ |
| | | y.setUrl(ywAccount.getBankNo()); |
| | | }else{ |
| | | y.setUrl("-"); |
| | | } |
| | | }else if(y.getTitle().equals("${通知单生成日期}")){ |
| | | y.setUrl(DateUtil.formatDate(new Date(),"yyyy-MM-dd")); |
| | | }else if(y.getTitle().equals("${当前用户姓名}")){ |
| | | }else if(y.getTitle().equals("${制表人名称}")){ |
| | | y.setUrl(loginUserInfo.getRealname()); |
| | | } |
| | | dealList.add(y); |
| | | } |
| | | return dealList; |
| | | } |
| | | |
| | | |
| | | public void sendSmsEmail(List<YwSmsEmailBillCallDTO> ywSmsEmailBillCallDTOList,LoginUserInfo loginUserInfo){ |
| | | @Override |
| | | public void sendSmsEmail(List<YwSmsEmailBillCallDTO> ywSmsEmailBillCallDTOList,SmsEmailServiceImpl smsEmailService,LoginUserInfo loginUserInfo){ |
| | | if(CollectionUtils.isEmpty(ywSmsEmailBillCallDTOList)){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST); |
| | | } |
| | |
| | | if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isEmpty(tempList)){ |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"未查询到模板配置项,请联系管理员"); |
| | | } |
| | | Optional<YwTempConfig> smsTempConfigOptional = ywTempConfigList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.ZERO)).findAny(); |
| | | Optional<YwTempConfig> emailTempConfigOptional = ywTempConfigList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.ONE)).findAny(); |
| | | for (YwSmsEmailBillCallDTO ywSmsEmailBillCallDTO:ywSmsEmailBillCallDTOList) { |
| | | if(Objects.isNull(ywSmsEmailBillCallDTO) |
| | | || Objects.isNull(ywSmsEmailBillCallDTO.getBillId()) |
| | | || Objects.isNull(ywSmsEmailBillCallDTO.getUserId()) |
| | | ||Objects.isNull(ywSmsEmailBillCallDTO.getSendEmail()) |
| | | || Objects.isNull(ywSmsEmailBillCallDTO.getSendSms())){ |
| | | || Objects.isNull(ywSmsEmailBillCallDTO.getSendSms()) |
| | | ){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST); |
| | | } |
| | | |
| | |
| | | if(Objects.isNull(member)){ |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"存在未查询到的人员信息"); |
| | | } |
| | | |
| | | if(Objects.nonNull(member)){ |
| | | if(Constants.equalsInteger(ywSmsEmailBillCallDTO.getSendSms(),Constants.ONE) && StringUtils.isNotBlank(member.getPhone()) |
| | | && smsTempConfigOptional.isPresent()){ |
| | | String content = this.dealTempSmsEmailData(smsTempConfigOptional.get().getTitle(),tempList,ywContractBill,loginUserInfo); |
| | | smsEmailService.sendBillSms(content,member.getPhone(),ywContractBill.getId()); |
| | | } |
| | | if(Constants.equalsInteger(ywSmsEmailBillCallDTO.getSendEmail(),Constants.ONE) && StringUtils.isNotBlank(member.getEmail()) |
| | | && emailTempConfigOptional.isPresent()){ |
| | | String content = this.dealTempSmsEmailData(emailTempConfigOptional.get().getTitle(),tempList,ywContractBill,loginUserInfo); |
| | | smsEmailService.sendEmail(content,member.getEmail(),ywContractBill.getId()); |
| | | } |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | for (YwSmsEmailBillCallDTO ywSmsEmailBillCallDTO:ywSmsEmailBillCallDTOList) { |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | public String dealTempSmsEmailData(String tempStr,List<YwTempConfig> ywTempConfigList , YwContractBill ywContractBill, LoginUserInfo loginUserInfo){ |
| | | //查询收支账号数据 |
| | | YwAccount ywAccount = ywAccountMapper.selectOne(new QueryWrapper<YwAccount>().lambda().eq(YwAccount::getIsdeleted,Constants.ZERO).eq(YwAccount::getStatus,Constants.ZERO).eq(YwAccount::getCompanyId,ywContractBill.getCompanyId()) |
| | | .orderByDesc(YwAccount::getId) |
| | | .last(" limit 1 ")); |
| | | 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)){ |
| | | tempStr.replace("${费用名称}","租赁费"); |
| | | }else if(Constants.equalsInteger(ywContractBill.getCostType(),Constants.ONE)){ |
| | | tempStr.replace("${费用名称}","物业费"); |
| | | }else if(Constants.equalsInteger(ywContractBill.getCostType(),Constants.TWO)){ |
| | | tempStr.replace("${费用名称}","租赁押金"); |
| | | }else if(Constants.equalsInteger(ywContractBill.getCostType(),Constants.THREE)){ |
| | | tempStr.replace("${费用名称}","物业押金"); |
| | | }else if(Constants.equalsInteger(ywContractBill.getCostType(),Constants.FOUR)){ |
| | | tempStr.replace("${费用名称}","水电费"); |
| | | }else if(Constants.equalsInteger(ywContractBill.getCostType(),Constants.FIVE)){ |
| | | tempStr.replace("${费用名称}","杂项费"); |
| | | }else if(Constants.equalsInteger(ywContractBill.getCostType(),Constants.SIX)){ |
| | | tempStr.replace("${费用名称}","其他"); |
| | | }else if(Constants.equalsInteger(ywContractBill.getCostType(),Constants.SEVEN)){ |
| | | tempStr.replace("${费用名称}","保证金"); |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | }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)){ |
| | | tempStr.replace("${计费周期}","一次性付款"); |
| | | }else if(Constants.equalsInteger(ywContractBill.getZlPayType(),Constants.ONE)){ |
| | | tempStr.replace("${计费周期}","每三个月一付"); |
| | | }else if(Constants.equalsInteger(ywContractBill.getZlPayType(),Constants.TWO)){ |
| | | tempStr.replace("${计费周期}","六个月一付"); |
| | | }else if(Constants.equalsInteger(ywContractBill.getZlPayType(),Constants.THREE)){ |
| | | tempStr.replace("${计费周期}","一年一付"); |
| | | } |
| | | } |
| | | }else{ |
| | | //物业支付方式 0=一次性付款;1=每三个月一付;2=六个月一付;3=一年一付 |
| | | if(Objects.nonNull(ywContractBill.getWyPayType())){ |
| | | if(Constants.equalsInteger(ywContractBill.getWyPayType(),Constants.ZERO)){ |
| | | tempStr.replace("${计费周期}","一次性付款"); |
| | | }else if(Constants.equalsInteger(ywContractBill.getWyPayType(),Constants.ONE)){ |
| | | tempStr.replace("${计费周期}","每三个月一付"); |
| | | }else if(Constants.equalsInteger(ywContractBill.getWyPayType(),Constants.TWO)){ |
| | | tempStr.replace("${计费周期}","六个月一付"); |
| | | }else if(Constants.equalsInteger(ywContractBill.getWyPayType(),Constants.THREE)){ |
| | | tempStr.replace("${计费周期}","一年一付"); |
| | | } |
| | | } |
| | | } |
| | | }else if(y.getTitle().equals("${单价}")&&Objects.nonNull(ywContractBill.getPrice())){ |
| | | tempStr.replace("${单价}",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)){ |
| | | tempStr.replace("${单位}","元每平米天"); |
| | | }else if(Constants.equalsInteger(ywContractBill.getCircleType(),Constants.ONE)){ |
| | | tempStr.replace("${单位}","元每平米月"); |
| | | }else if(Constants.equalsInteger(ywContractBill.getCircleType(),Constants.TWO)){ |
| | | tempStr.replace("${单位}","元每平米年"); |
| | | } else if(Constants.equalsInteger(ywContractBill.getCircleType(),Constants.THREE)){ |
| | | tempStr.replace("${单位}","元每天"); |
| | | } else if(Constants.equalsInteger(ywContractBill.getCircleType(),Constants.FOUR)){ |
| | | tempStr.replace("${单位}","元每月"); |
| | | } else if(Constants.equalsInteger(ywContractBill.getCircleType(),Constants.FIVE)){ |
| | | tempStr.replace("${单位}","元每年"); |
| | | } else if(Constants.equalsInteger(ywContractBill.getCircleType(),Constants.SIX)){ |
| | | tempStr.replace("${单位}","元每场"); |
| | | } |
| | | }else if(y.getTitle().equals("${应收日期}")&&Objects.nonNull(ywContractBill.getPlanPayDate())){ |
| | | tempStr.replace("${应收日期}",DateUtil.formatDate(ywContractBill.getPlanPayDate(),"yyyy-MM-dd")); |
| | | }else if(y.getTitle().equals("${应收金额}")&&Objects.nonNull(ywContractBill.getReceivableFee())){ |
| | | tempStr.replace("${应收金额}",ywContractBill.getReceivableFee().toString()); |
| | | }else if(y.getTitle().equals("${账单备注}")){ |
| | | if(StringUtils.isNotBlank(ywContractBill.getRemark())){ |
| | | tempStr.replace("${账单备注}",ywContractBill.getRemark()); |
| | | }else{ |
| | | tempStr.replace("${账单备注}",""); |
| | | } |
| | | }else if(y.getTitle().equals("${租客名称}")&&StringUtils.isNotBlank(ywContractBill.getCustomerName())){ |
| | | tempStr.replace("${租客名称}",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(";"); |
| | | } |
| | | } |
| | | tempStr.replace("${房间信息}",roomPathName.toString()); |
| | | } |
| | | }else if(y.getTitle().equals("${租赁面积}")&&Objects.nonNull(ywContractBill.getTotalArea())){ |
| | | tempStr.replace("${租赁面积}",ywContractBill.getTotalArea().toString()); |
| | | }else if(y.getTitle().equals("${所属公司账户名称}")){ |
| | | if(Objects.nonNull(ywAccount)&&StringUtils.isNotBlank(ywAccount.getName())){ |
| | | tempStr.replace("${所属公司账户名称}",ywAccount.getName()); |
| | | }else{ |
| | | tempStr.replace("${所属公司账户名称}","-"); |
| | | } |
| | | }else if(y.getTitle().equals("${所属公司银行账号}")){ |
| | | if(Objects.nonNull(ywAccount)&&StringUtils.isNotBlank(ywAccount.getName())){ |
| | | tempStr.replace("${所属公司银行账号}",ywAccount.getName()); |
| | | }else{ |
| | | tempStr.replace("${所属公司银行账号}","-"); |
| | | } |
| | | }else if(y.getTitle().equals("${所属公司开户银行}")){ |
| | | if(Objects.nonNull(ywAccount)&&StringUtils.isNotBlank(ywAccount.getBankNo())){ |
| | | tempStr.replace("${所属公司开户银行}",ywAccount.getBankNo()); |
| | | }else{ |
| | | tempStr.replace("${所属公司开户银行}","-"); |
| | | } |
| | | }else if(y.getTitle().equals("${通知单生成日期}")){ |
| | | tempStr.replace("${通知单生成日期}",DateUtil.formatDate(new Date(),"yyyy-MM-dd")); |
| | | }else if(y.getTitle().equals("${制表人名称}")){ |
| | | tempStr.replace("${制表人名称}",loginUserInfo.getRealname()); |
| | | } |
| | | } |
| | | return tempStr; |
| | | } |
| | | |
| | | |