| | |
| | | import com.java110.utils.util.StringUtil; |
| | | import com.java110.vo.ResultVo; |
| | | import org.slf4j.Logger; |
| | | import org.slf4j.LoggerFactory; |
| | | import com.java110.core.log.LoggerFactory; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.http.ResponseEntity; |
| | | import org.springframework.stereotype.Component; |
| | | import org.springframework.web.client.RestTemplate; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.text.DecimalFormat; |
| | | import java.text.ParseException; |
| | | import java.util.*; |
| | | |
| | |
| | | List<ReportOweFeeItemDto> itemDtos = reportOweFeeDo.getItems(); |
| | | String oweUrl = ""; |
| | | for (ReportOweFeeItemDto itemDto : itemDtos) { |
| | | BigDecimal amountOwed = new BigDecimal(itemDto.getAmountOwed()); |
| | | oweUrl = FeeDto.PAYER_OBJ_TYPE_ROOM.equals(reportOweFeeDo.getPayerObjType()) ? oweRoomUrl : oweCarUrl; |
| | | for (OwnerAppUserDto appUserDto : ownerAppUserDtos) { |
| | | try { |
| | | //获取用户缴费到期时间 |
| | | Date endTime = itemDto.getEndTime(); |
| | | Calendar calendar = Calendar.getInstance(); |
| | | calendar.setTime(endTime); |
| | | calendar.add(Calendar.DATE, -1); |
| | | endTime = calendar.getTime(); |
| | | |
| | | Data data = new Data(); |
| | | PropertyFeeTemplateMessage templateMessage = new PropertyFeeTemplateMessage(); |
| | | templateMessage.setTemplate_id(templateId); |
| | | templateMessage.setTouser(appUserDto.getOpenId()); |
| | | data.setFirst(new Content(itemDto.getFeeName() + "提醒")); |
| | | data.setKeyword1(new Content(itemDto.getPayerObjName())); |
| | | data.setKeyword2(new Content(itemDto.getAmountOwed())); |
| | | data.setKeyword3(new Content( |
| | | DateUtil.getFormatTimeString(itemDto.getStartTime(), DateUtil.DATE_FORMATE_STRING_B) |
| | | + "至" |
| | | + DateUtil.getFormatTimeString(endTime, DateUtil.DATE_FORMATE_STRING_B))); |
| | | data.setRemark(new Content("请您及时缴费,如有疑问请联系相关物业人员")); |
| | | |
| | | if (!StringUtil.isEmpty(oweUrl)) { |
| | | if (miniprogram == null) { |
| | | templateMessage.setUrl(oweUrl + itemDto.getPayerObjId() + "&wAppId=" + weChatDto.getAppId()); |
| | | } else { |
| | | miniprogram.setPagepath(oweUrl.split("@@")[1] + itemDto.getPayerObjId() + "&wAppId=" + weChatDto.getAppId()); |
| | | templateMessage.setMiniprogram(miniprogram); |
| | | } |
| | | } |
| | | templateMessage.setData(data); |
| | | logger.info("发送模板消息内容:{}", JSON.toJSONString(templateMessage)); |
| | | ResponseEntity<String> responseEntity = outRestTemplate.postForEntity(url, JSON.toJSONString(templateMessage), String.class); |
| | | logger.info("微信模板返回内容:{}", responseEntity); |
| | | } catch (Exception e) { |
| | | LogSystemErrorPo logSystemErrorPo = new LogSystemErrorPo(); |
| | | logSystemErrorPo.setErrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_errId)); |
| | | logSystemErrorPo.setErrType(LogSystemErrorDto.ERR_TYPE_OWE_FEE); |
| | | logSystemErrorPo.setMsg(ExceptionUtil.getStackTrace(e)); |
| | | saveSystemErrorSMOImpl.saveLog(logSystemErrorPo); |
| | | logger.error("欠费推送失败" + feeCollectionOrderDto.getCollectionName(), e); |
| | | } |
| | | String[] roomName = new String[]{}; |
| | | if ("3333".equals(reportOweFeeDo.getPayerObjType())) { |
| | | roomName = itemDto.getPayerObjName().split("-"); |
| | | } |
| | | for (OwnerAppUserDto appUserDto : ownerAppUserDtos) { |
| | | try { |
| | | //获取用户缴费到期时间 |
| | | Date endTime = itemDto.getEndTime(); |
| | | Calendar calendar = Calendar.getInstance(); |
| | | calendar.setTime(endTime); |
| | | calendar.add(Calendar.DATE, -1); |
| | | endTime = calendar.getTime(); |
| | | |
| | | Data data = new Data(); |
| | | PropertyFeeTemplateMessage templateMessage = new PropertyFeeTemplateMessage(); |
| | | templateMessage.setTemplate_id(templateId); |
| | | templateMessage.setTouser(appUserDto.getOpenId()); |
| | | data.setFirst(new Content(itemDto.getFeeName() + "提醒")); |
| | | if ("3333".equals(reportOweFeeDo.getPayerObjType())) { |
| | | data.setKeyword1(new Content(roomName[0] + "栋" + roomName[1] + "单元" + roomName[2] + "室")); |
| | | } else { |
| | | data.setKeyword1(new Content(itemDto.getPayerObjName())); |
| | | } |
| | | DecimalFormat df = new DecimalFormat("0.00"); |
| | | data.setKeyword2(new Content(df.format(amountOwed) + "元")); |
| | | data.setKeyword3(new Content( |
| | | DateUtil.getFormatTimeString(itemDto.getStartTime(), DateUtil.DATE_FORMATE_STRING_B) |
| | | + "至" |
| | | + DateUtil.getFormatTimeString(endTime, DateUtil.DATE_FORMATE_STRING_B))); |
| | | data.setRemark(new Content("请您及时缴费,如有疑问请联系相关物业人员!")); |
| | | |
| | | if (!StringUtil.isEmpty(oweUrl)) { |
| | | if (miniprogram == null) { |
| | | templateMessage.setUrl(oweUrl + itemDto.getPayerObjId() + "&wAppId=" + weChatDto.getAppId()); |
| | | } else { |
| | | miniprogram.setPagepath(oweUrl.split("@@")[1] + itemDto.getPayerObjId() + "&wAppId=" + weChatDto.getAppId()); |
| | | templateMessage.setMiniprogram(miniprogram); |
| | | } |
| | | } |
| | | templateMessage.setData(data); |
| | | logger.info("发送模板消息内容:{}", JSON.toJSONString(templateMessage)); |
| | | ResponseEntity<String> responseEntity = outRestTemplate.postForEntity(url, JSON.toJSONString(templateMessage), String.class); |
| | | logger.info("微信模板返回内容:{}", responseEntity); |
| | | } catch (Exception e) { |
| | | LogSystemErrorPo logSystemErrorPo = new LogSystemErrorPo(); |
| | | logSystemErrorPo.setErrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_errId)); |
| | | logSystemErrorPo.setErrType(LogSystemErrorDto.ERR_TYPE_OWE_FEE); |
| | | logSystemErrorPo.setMsg(ExceptionUtil.getStackTrace(e)); |
| | | saveSystemErrorSMOImpl.saveLog(logSystemErrorPo); |
| | | logger.error("欠费推送失败" + feeCollectionOrderDto.getCollectionName(), e); |
| | | } |
| | | } |
| | | } |
| | | |
| | | return new ResultVo(ResultVo.CODE_OK, ResultVo.MSG_OK); |
| | |
| | | } |
| | | ReportOweFeeDto reportOweFeeDto = new ReportOweFeeDto(); |
| | | reportOweFeeDto.setPayerObjIds(payObjIds.toArray(new String[payObjIds.size()])); |
| | | reportOweFeeDto.setHasOweFee("Y"); |
| | | List<ReportOweFeeDto> allReportOweFeeDtos = reportOweFeeInnerServiceSMOImpl.queryReportAllOweFees(reportOweFeeDto); |
| | | List<ReportOweFeeDto> reportOweFeeDtos = new ArrayList<>(); |
| | | for (ReportOweFeeDto reportOweFee : allReportOweFeeDtos) { |
| | | ReportOweFeeDto reportOwe = new ReportOweFeeDto(); |
| | | reportOwe.setOweId(reportOweFee.getOweId()); |
| | | reportOwe.setHasOweFee("Y"); |
| | | reportOweFee.setPayerObjType(reportOweFee.getPayerObjType()); |
| | | if (reportOweFee.getPayerObjType().equals("3333")) { |
| | | List<ReportOweFeeDto> reportOweFees = reportOweFeeInnerServiceSMOImpl.queryReportAllOweFeesByRoom(reportOwe); |