GenerateOweFeeTemplate.java 8.3 KB

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