| | |
| | | |
| | | 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) { |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | } |