GenerateOweFeeTemplate.java 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. package com.java110.job.task.fee;
  2. import com.java110.core.factory.GenerateCodeFactory;
  3. import com.java110.core.smo.IComputeFeeSMO;
  4. import com.java110.dto.community.CommunityDto;
  5. import com.java110.dto.fee.FeeAttrDto;
  6. import com.java110.dto.fee.FeeConfigDto;
  7. import com.java110.dto.fee.FeeDto;
  8. import com.java110.dto.reportOweFee.ReportOweFeeDto;
  9. import com.java110.dto.task.TaskDto;
  10. import com.java110.intf.community.IParkingSpaceInnerServiceSMO;
  11. import com.java110.intf.community.IRoomInnerServiceSMO;
  12. import com.java110.intf.fee.IFeeConfigInnerServiceSMO;
  13. import com.java110.intf.fee.IFeeDetailInnerServiceSMO;
  14. import com.java110.intf.fee.IFeeInnerServiceSMO;
  15. import com.java110.intf.report.IReportOweFeeInnerServiceSMO;
  16. import com.java110.intf.user.IOwnerCarInnerServiceSMO;
  17. import com.java110.intf.user.IOwnerRoomRelInnerServiceSMO;
  18. import com.java110.job.quartz.TaskSystemQuartz;
  19. import com.java110.po.reportOweFee.ReportOweFeePo;
  20. import com.java110.utils.util.DateUtil;
  21. import com.java110.utils.util.StringUtil;
  22. import org.springframework.beans.factory.annotation.Autowired;
  23. import org.springframework.stereotype.Component;
  24. import java.util.List;
  25. /**
  26. * @ClassName GenerateOwnerBillTemplate
  27. * @Description TODO 房屋费用账单生成
  28. * @Author wuxw
  29. * @Date 2020/6/4 8:33
  30. * @Version 1.0
  31. * add by wuxw 2020/6/4
  32. **/
  33. @Component
  34. public class GenerateOweFeeTemplate extends TaskSystemQuartz {
  35. @Autowired
  36. private IFeeConfigInnerServiceSMO feeConfigInnerServiceSMOImpl;
  37. @Autowired
  38. private IFeeInnerServiceSMO feeInnerServiceSMOImpl;
  39. @Autowired
  40. private IFeeDetailInnerServiceSMO feeDetailInnerServiceSMOImpl;
  41. @Autowired
  42. private IRoomInnerServiceSMO roomInnerServiceSMOImpl;
  43. @Autowired
  44. private IOwnerRoomRelInnerServiceSMO ownerRoomRelInnerServiceSMOImpl;
  45. @Autowired
  46. private IParkingSpaceInnerServiceSMO parkingSpaceInnerServiceSMOImpl;
  47. @Autowired
  48. private IOwnerCarInnerServiceSMO ownerCarInnerServiceSMOImpl;
  49. @Autowired
  50. private IReportOweFeeInnerServiceSMO reportOweFeeInnerServiceSMOImpl;
  51. @Autowired
  52. private IComputeFeeSMO computeFeeSMOImpl;
  53. @Override
  54. protected void process(TaskDto taskDto) throws Exception {
  55. // 获取小区
  56. List<CommunityDto> communityDtos = getAllCommunity();
  57. for (CommunityDto communityDto : communityDtos) {
  58. GenerateOweFee(taskDto, communityDto);
  59. }
  60. }
  61. /**
  62. * 根据小区生成账单
  63. *
  64. * @param communityDto
  65. */
  66. private void GenerateOweFee(TaskDto taskDto, CommunityDto communityDto) {
  67. //查询费用项
  68. FeeConfigDto feeConfigDto = new FeeConfigDto();
  69. feeConfigDto.setCommunityId(communityDto.getCommunityId());
  70. List<FeeConfigDto> feeConfigDtos = feeConfigInnerServiceSMOImpl.queryFeeConfigs(feeConfigDto);
  71. for (FeeConfigDto tmpFeeConfigDto : feeConfigDtos) {
  72. try {
  73. GenerateOweFeeByFeeConfig(taskDto, tmpFeeConfigDto);
  74. } catch (Exception e) {
  75. logger.error("费用出账失败" + tmpFeeConfigDto.getConfigId(), e);
  76. }
  77. }
  78. }
  79. /**
  80. * 按费用项来出账
  81. *
  82. * @param taskDto
  83. * @param feeConfigDto
  84. */
  85. private void GenerateOweFeeByFeeConfig(TaskDto taskDto, FeeConfigDto feeConfigDto) throws Exception {
  86. //当前费用项是否
  87. FeeDto feeDto = new FeeDto();
  88. feeDto.setConfigId(feeConfigDto.getConfigId());
  89. feeDto.setCommunityId(feeConfigDto.getCommunityId());
  90. List<FeeDto> feeDtos = feeInnerServiceSMOImpl.queryFees(feeDto);
  91. //没有关联费用
  92. if (feeDto == null || feeDtos.size() < 1) {
  93. return;
  94. }
  95. for (FeeDto tmpFeeDto : feeDtos) {
  96. try {
  97. generateFee(tmpFeeDto, feeConfigDto);
  98. } catch (Exception e) {
  99. logger.error("生成费用失败", e);
  100. }
  101. }
  102. }
  103. /**
  104. * 生成 费用
  105. *
  106. * @param feeDto
  107. */
  108. private void generateFee(FeeDto feeDto, FeeConfigDto feeConfigDto) {
  109. //刷入欠费金额
  110. computeFeeSMOImpl.computeEveryOweFee(feeDto);
  111. //保存数据
  112. ReportOweFeePo reportOweFeePo = new ReportOweFeePo();
  113. reportOweFeePo.setAmountOwed(feeDto.getFeePrice() + "");
  114. reportOweFeePo.setCommunityId(feeDto.getCommunityId());
  115. reportOweFeePo.setConfigId(feeConfigDto.getConfigId());
  116. reportOweFeePo.setConfigName(feeConfigDto.getFeeName());
  117. reportOweFeePo.setDeadlineTime(DateUtil.getFormatTimeString(feeDto.getDeadlineTime(), DateUtil.DATE_FORMATE_STRING_A));
  118. reportOweFeePo.setEndTime(DateUtil.getFormatTimeString(feeDto.getEndTime(), DateUtil.DATE_FORMATE_STRING_A));
  119. reportOweFeePo.setFeeId(feeDto.getFeeId());
  120. reportOweFeePo.setFeeName(feeDto.getFeeName());
  121. reportOweFeePo.setOwnerId(FeeAttrDto.getFeeAttrValue(feeDto, FeeAttrDto.SPEC_CD_OWNER_ID));
  122. reportOweFeePo.setOwnerName(FeeAttrDto.getFeeAttrValue(feeDto, FeeAttrDto.SPEC_CD_OWNER_NAME));
  123. reportOweFeePo.setOwnerTel(FeeAttrDto.getFeeAttrValue(feeDto, FeeAttrDto.SPEC_CD_OWNER_LINK));
  124. reportOweFeePo.setPayerObjId(feeDto.getPayerObjId());
  125. reportOweFeePo.setPayerObjName(computeFeeSMOImpl.getFeeObjName(feeDto));
  126. reportOweFeePo.setPayerObjType(feeDto.getPayerObjType());
  127. reportOweFeePo.setUpdateTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A));
  128. ReportOweFeeDto reportOweFeeDto = new ReportOweFeeDto();
  129. reportOweFeeDto.setFeeId(feeDto.getFeeId());
  130. reportOweFeeDto.setPayerObjId(feeDto.getPayerObjId());
  131. List<ReportOweFeeDto> reportOweFeeDtos = reportOweFeeInnerServiceSMOImpl.queryReportAllOweFees(reportOweFeeDto);
  132. if (reportOweFeeDtos == null || reportOweFeeDtos.size() < 1) {
  133. reportOweFeePo.setOweId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_oweId));
  134. reportOweFeeInnerServiceSMOImpl.saveReportOweFee(reportOweFeePo);
  135. } else {
  136. reportOweFeePo.setOweId(reportOweFeeDtos.get(0).getOweId());
  137. reportOweFeeInnerServiceSMOImpl.updateReportOweFee(reportOweFeePo);
  138. }
  139. }
  140. }