GetQrcodeOweFeesCmd.java 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. package com.java110.fee.cmd.payFeeQrcode;
  2. import com.alibaba.fastjson.JSONObject;
  3. import com.java110.core.annotation.Java110Cmd;
  4. import com.java110.core.context.ICmdDataFlowContext;
  5. import com.java110.core.event.cmd.Cmd;
  6. import com.java110.core.event.cmd.CmdEvent;
  7. import com.java110.core.factory.CommunitySettingFactory;
  8. import com.java110.core.log.LoggerFactory;
  9. import com.java110.core.smo.IComputeFeeSMO;
  10. import com.java110.dto.fee.FeeAttrDto;
  11. import com.java110.dto.fee.FeeDto;
  12. import com.java110.fee.bmo.impl.QueryOweFeeImpl;
  13. import com.java110.intf.fee.IFeeInnerServiceSMO;
  14. import com.java110.utils.cache.MappingCache;
  15. import com.java110.utils.exception.CmdException;
  16. import com.java110.utils.util.Assert;
  17. import com.java110.utils.util.DateUtil;
  18. import com.java110.utils.util.MoneyUtil;
  19. import com.java110.utils.util.StringUtil;
  20. import com.java110.vo.ResultVo;
  21. import org.slf4j.Logger;
  22. import org.springframework.beans.factory.annotation.Autowired;
  23. import java.text.ParseException;
  24. import java.util.ArrayList;
  25. import java.util.List;
  26. /**
  27. * 查询 二维码 欠费费用
  28. */
  29. @Java110Cmd(serviceCode = "payFeeQrcode.getQrcodeOweFees")
  30. public class GetQrcodeOweFeesCmd extends Cmd {
  31. private final static Logger logger = LoggerFactory.getLogger(GetQrcodeOweFeesCmd.class);
  32. @Autowired
  33. private IFeeInnerServiceSMO feeInnerServiceSMOImpl;
  34. @Autowired
  35. private IComputeFeeSMO computeFeeSMOImpl;
  36. //域
  37. public static final String DOMAIN_COMMON = "DOMAIN.COMMON";
  38. //键
  39. public static final String TOTAL_FEE_PRICE = "TOTAL_FEE_PRICE";
  40. //键
  41. public static final String RECEIVED_AMOUNT_SWITCH = "RECEIVED_AMOUNT_SWITCH";
  42. //禁用电脑端提交收费按钮
  43. public static final String OFFLINE_PAY_FEE_SWITCH = "OFFLINE_PAY_FEE_SWITCH";
  44. @Override
  45. public void validate(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException, ParseException {
  46. Assert.hasKeyAndValue(reqJson, "communityId", "未包含小区");
  47. Assert.hasKeyAndValue(reqJson, "ownerId", "未包含业主");
  48. }
  49. @Override
  50. public void doCmd(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException, ParseException {
  51. FeeDto feeDto = new FeeDto();
  52. feeDto.setOwnerId(reqJson.getString("ownerId"));
  53. feeDto.setCommunityId(reqJson.getString("communityId"));
  54. feeDto.setArrearsEndTime(DateUtil.getCurrentDate());
  55. feeDto.setState(FeeDto.STATE_DOING);
  56. List<FeeDto> feeDtos = feeInnerServiceSMOImpl.queryFees(feeDto);
  57. if (feeDtos == null || feeDtos.size() < 1) {
  58. feeDtos = new ArrayList<>();
  59. context.setResponseEntity(ResultVo.createResponseEntity(feeDtos));
  60. return;
  61. }
  62. String val = CommunitySettingFactory.getValue(feeDtos.get(0).getCommunityId(), TOTAL_FEE_PRICE);
  63. if (StringUtil.isEmpty(val)) {
  64. val = MappingCache.getValue(DOMAIN_COMMON, TOTAL_FEE_PRICE);
  65. }
  66. List<FeeDto> tmpFeeDtos = new ArrayList<>();
  67. for (FeeDto tmpFeeDto : feeDtos) {
  68. try {
  69. computeFeeSMOImpl.computeEveryOweFee(tmpFeeDto);//计算欠费金额
  70. //如果金额为0 就排除
  71. tmpFeeDto.setFeeTotalPrice(
  72. MoneyUtil.computePriceScale(
  73. tmpFeeDto.getFeeTotalPrice(),
  74. tmpFeeDto.getScale(),
  75. Integer.parseInt(tmpFeeDto.getDecimalPlace())
  76. )
  77. );
  78. tmpFeeDto.setVal(val);
  79. //todo 这里考虑负数金额,有些可能要红冲
  80. if (tmpFeeDto.getFeePrice() !=0) {
  81. String ownerName = FeeAttrDto.getFeeAttrValue(tmpFeeDto,FeeAttrDto.SPEC_CD_OWNER_NAME);
  82. ownerName = StringUtil.maskName(ownerName);
  83. tmpFeeDto.setFeeAttrDtos(null); //todo 这里删掉 以免信息泄露带来的风险
  84. tmpFeeDto.setOwnerName(ownerName);
  85. tmpFeeDtos.add(tmpFeeDto);
  86. }
  87. } catch (Exception e) {
  88. logger.error("可能费用资料有问题导致算费失败", e);
  89. }
  90. }
  91. context.setResponseEntity(ResultVo.createResponseEntity(feeDtos));
  92. }
  93. }