From b06ccd76e50812d81ee689dcd609bb02ac5c4ed4 Mon Sep 17 00:00:00 2001
From: xiaogang <905166056@qq.com>
Date: 星期四, 11 八月 2022 14:48:52 +0800
Subject: [PATCH] 1、优化页面展示行问题
---
service-fee/src/main/java/com/java110/fee/cmd/returnPayFee/UpdateReturnPayFeeCmd.java | 318 +++++++++++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 306 insertions(+), 12 deletions(-)
diff --git a/service-fee/src/main/java/com/java110/fee/cmd/returnPayFee/UpdateReturnPayFeeCmd.java b/service-fee/src/main/java/com/java110/fee/cmd/returnPayFee/UpdateReturnPayFeeCmd.java
index 6baa940..c527987 100644
--- a/service-fee/src/main/java/com/java110/fee/cmd/returnPayFee/UpdateReturnPayFeeCmd.java
+++ b/service-fee/src/main/java/com/java110/fee/cmd/returnPayFee/UpdateReturnPayFeeCmd.java
@@ -18,19 +18,39 @@
import com.alibaba.fastjson.JSONObject;
import com.java110.core.annotation.Java110Cmd;
import com.java110.core.annotation.Java110Transactional;
+import com.java110.core.context.DataFlowContext;
import com.java110.core.context.ICmdDataFlowContext;
-import com.java110.core.event.cmd.AbstractServiceCmdListener;
+import com.java110.core.event.cmd.Cmd;
import com.java110.core.event.cmd.CmdEvent;
import com.java110.core.factory.GenerateCodeFactory;
-import com.java110.intf.fee.IReturnPayFeeV1InnerServiceSMO;
+import com.java110.dto.fee.FeeDetailDto;
+import com.java110.dto.fee.FeeDto;
+import com.java110.dto.feeDiscount.FeeDiscountDto;
+import com.java110.dto.feeDiscount.FeeDiscountRuleDto;
+import com.java110.dto.feeDiscount.FeeDiscountSpecDto;
+import com.java110.dto.payFeeConfigDiscount.PayFeeConfigDiscountDto;
+import com.java110.dto.payFeeDetailDiscount.PayFeeDetailDiscountDto;
+import com.java110.dto.returnPayFee.ReturnPayFeeDto;
+import com.java110.intf.fee.*;
+import com.java110.po.fee.PayFeeDetailPo;
+import com.java110.po.fee.PayFeePo;
+import com.java110.po.payFeeDetailDiscount.PayFeeDetailDiscountPo;
import com.java110.po.returnPayFee.ReturnPayFeePo;
+import com.java110.utils.constant.BusinessTypeConstant;
import com.java110.utils.exception.CmdException;
import com.java110.utils.util.Assert;
import com.java110.utils.util.BeanConvertUtil;
-import com.java110.vo.ResultVo;
-import org.springframework.beans.factory.annotation.Autowired;
+import com.java110.utils.util.DateUtil;
+import com.java110.utils.util.StringUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import java.math.BigDecimal;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.List;
/**
@@ -44,32 +64,306 @@
* // modify by 寮犱笁 at 2021-09-12 绗�10琛屽湪鏌愮鍦烘櫙涓嬪瓨鍦ㄦ煇绉峛ug 闇�瑕佷慨澶嶏紝娉ㄩ噴10鑷�20琛� 鍔犲叆 20琛岃嚦30琛�
*/
@Java110Cmd(serviceCode = "returnPayFee.updateReturnPayFee")
-public class UpdateReturnPayFeeCmd extends AbstractServiceCmdListener {
+public class UpdateReturnPayFeeCmd extends Cmd {
- private static Logger logger = LoggerFactory.getLogger(UpdateReturnPayFeeCmd.class);
-
+ private static Logger logger = LoggerFactory.getLogger(UpdateReturnPayFeeCmd.class);
@Autowired
private IReturnPayFeeV1InnerServiceSMO returnPayFeeV1InnerServiceSMOImpl;
+
+ @Autowired
+ private IPayFeeConfigDiscountInnerServiceSMO payFeeConfigDiscountInnerServiceSMOImpl;
+
+ @Autowired
+ private IFeeDiscountInnerServiceSMO feeDiscountInnerServiceSMOImpl;
+
+ @Autowired
+ private IFeeDiscountRuleInnerServiceSMO feeDiscountRuleInnerServiceSMOImpl;
+
+ @Autowired
+ private IFeeDiscountSpecInnerServiceSMO feeDiscountSpecInnerServiceSMOImpl;
+
+
+
+ @Autowired
+ private IFeeInnerServiceSMO feeInnerServiceSMOImpl;
+
+ @Autowired
+ private IFeeDetailInnerServiceSMO feeDetailInnerServiceSMOImpl;
+
+ @Autowired
+ private IPayFeeDetailV1InnerServiceSMO payFeeDetailV1InnerServiceSMOImpl;
+
+ @Autowired
+ private IPayFeeDetailDiscountInnerServiceSMO payFeeDetailDiscountInnerServiceSMOImpl;
+
+ @Autowired
+ private IReturnPayFeeInnerServiceSMO returnPayFeeInnerServiceSMOImpl;
+
+ @Autowired
+ private IPayFeeV1InnerServiceSMO payFeeV1InnerServiceSMOImpl;
+
+ @Autowired
+ private IPayFeeDetailDiscountNewV1InnerServiceSMO payFeeDetailDiscountNewV1InnerServiceSMOImpl;
+
+ private static final String SPEC_RATE = "89002020980015"; //璧犻�佹湀浠�
+
+ private static final String SPEC_MONTH = "89002020980014"; //鏈堜唤
+
+
@Override
public void validate(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) {
Assert.hasKeyAndValue(reqJson, "returnFeeId", "returnFeeId涓嶈兘涓虹┖");
-Assert.hasKeyAndValue(reqJson, "communityId", "communityId涓嶈兘涓虹┖");
+ Assert.hasKeyAndValue(reqJson, "state", "state涓嶈兘涓虹┖");
+ Assert.hasKeyAndValue(reqJson, "feeId", "feeId涓嶈兘涓虹┖");
+ if (reqJson.containsKey("cycles")) {
+ String cycles = reqJson.getString("cycles");
+ if (!cycles.startsWith("-")) {
+ throw new IllegalArgumentException("閫�璐瑰懆鏈熷繀椤昏礋鏁�");// 杩欓噷蹇呴』浼犲叆璐熸暟锛屽惁鍒欒垂鐢ㄨ嚜鍔ㄧ浉鍔犱笉浼氶��璐�
+ }
+ }
+
+ FeeDetailDto feeDetailDto = new FeeDetailDto();
+ feeDetailDto.setDetailId(reqJson.getString("detailId"));
+ feeDetailDto.setFeeId(reqJson.getString("feeId"));
+ feeDetailDto.setCommunityId(reqJson.getString("communityId"));
+ List<FeeDetailDto> feeDetailDtos = feeDetailInnerServiceSMOImpl.queryFeeDetails(feeDetailDto);
+
+ Assert.listOnlyOne(feeDetailDtos, "涓嶅瓨鍦ㄧ即璐硅褰�");
+ reqJson.put("feeDetailDto", feeDetailDtos.get(0));
}
@Override
@Java110Transactional
public void doCmd(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) throws CmdException {
- ReturnPayFeePo returnPayFeePo = BeanConvertUtil.covertBean(reqJson, ReturnPayFeePo.class);
- int flag = returnPayFeeV1InnerServiceSMOImpl.updateReturnPayFee(returnPayFeePo);
+ FeeDetailDto feeDetailDto = (FeeDetailDto) reqJson.get("feeDetailDto");
+ updateReturnPayFee(reqJson);
+ //閫�璐瑰鏍搁�氳繃
+ if ("1100".equals(reqJson.getString("state"))) {
+ //鍒ゆ柇閫�璐瑰懆鏈熸槸鍚︿负璐熸暟濡傛灉涓嶆槸 鎶涘嚭寮傚父
+ String cycles = reqJson.getString("cycles");
+ reqJson.put("state", "1300");
+ reqJson.put("startTime", DateUtil.getFormatTimeString(feeDetailDto.getStartTime(), DateUtil.DATE_FORMATE_STRING_A));
+ reqJson.put("endTime", DateUtil.getFormatTimeString(feeDetailDto.getEndTime(), DateUtil.DATE_FORMATE_STRING_A));
+ addFeeDetail(reqJson);
+
+ reqJson.put("state", "1100");
+ String receivableAmount = (String) reqJson.get("receivableAmount");
+ String receivedAmount = (String) reqJson.get("receivedAmount");
+ reqJson.put("cycles", unum(cycles));
+ reqJson.put("receivableAmount", unum(receivableAmount));
+ reqJson.put("receivedAmount", unum(receivedAmount));
+ reqJson.put("createTime", reqJson.get("payTime"));
+ updateFeeDetail(reqJson);
+ //淇敼pay_fee 璐圭敤鍒版湡鏃堕棿 浠ュ強濡傛灉鏄娂閲戝垯淇敼鐘舵�佷负缁撴潫鏀惰垂
+ FeeDto feeDto = new FeeDto();
+ feeDto.setFeeId((String) reqJson.get("feeId"));
+ List<FeeDto> feeDtos = feeInnerServiceSMOImpl.queryFees(feeDto);
+
+ Assert.listOnlyOne(feeDtos, "璐圭敤涓嶅瓨鍦�");
+ FeeDto feeDto1 = feeDtos.get(0);
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ reqJson.put("endTime", DateUtil.getFormatTimeString(feeDetailDto.getStartTime(), DateUtil.DATE_FORMATE_STRING_A));
+ reqJson.put("amount", feeDto1.getAmount());
+ reqJson.put("feeTypeCd", feeDto1.getFeeTypeCd());
+ reqJson.put("communityId", feeDto1.getCommunityId());
+ reqJson.put("payerObjId", feeDto1.getPayerObjId());
+ reqJson.put("incomeObjId", feeDto1.getIncomeObjId());
+ reqJson.put("startTime", sdf.format(feeDto1.getStartTime()));
+ reqJson.put("userId", feeDto1.getUserId());
+ reqJson.put("feeFlag", feeDto1.getFeeFlag());
+ reqJson.put("statusCd", feeDto1.getStatusCd());
+ reqJson.put("state", feeDto1.getState());
+ reqJson.put("configId", feeDto1.getConfigId());
+ reqJson.put("payerObjType", feeDto1.getPayerObjType());
+ reqJson.put("feeId", feeDto1.getFeeId());
+ if ("888800010006".equals(feeDto1.getFeeTypeCds())) {
+ reqJson.put("state", "2009001");
+ } else {
+ reqJson.put("state", "2008001");
+ }
+ updateFee(reqJson);
+ //妫�鏌ユ槸鍚︽湁浼樻儬
+ PayFeeDetailDiscountDto payFeeDetailDiscountDto = new PayFeeDetailDiscountDto();
+ payFeeDetailDiscountDto.setCommunityId(feeDto1.getCommunityId());
+ payFeeDetailDiscountDto.setDetailId(reqJson.getString("detailId"));
+ List<PayFeeDetailDiscountDto> payFeeDetailDiscountDtos = payFeeDetailDiscountInnerServiceSMOImpl.queryPayFeeDetailDiscounts(payFeeDetailDiscountDto);
+ if (payFeeDetailDiscountDtos != null && payFeeDetailDiscountDtos.size() > 0) {
+ JSONObject discountJson = new JSONObject();
+ discountJson.put("discountId", payFeeDetailDiscountDtos.get(0).getDiscountId());
+ discountJson.put("discountPrice", unum(payFeeDetailDiscountDtos.get(0).getDiscountPrice()));
+ addPayFeeDetailDiscountTwo(reqJson, discountJson);
+ }
+ //鍒よ鏄惁鏈夎禒閫佽鍒欎紭鎯�
+ PayFeeConfigDiscountDto payFeeConfigDiscountDto = new PayFeeConfigDiscountDto();
+ payFeeConfigDiscountDto.setConfigId(reqJson.getString("configId"));
+ List<PayFeeConfigDiscountDto> payFeeConfigDiscountDtos = payFeeConfigDiscountInnerServiceSMOImpl.queryPayFeeConfigDiscounts(payFeeConfigDiscountDto);
+ if (payFeeConfigDiscountDtos != null && payFeeConfigDiscountDtos.size() > 0) {
+ for (PayFeeConfigDiscountDto payFeeConfigDiscount : payFeeConfigDiscountDtos) {
+ FeeDiscountDto feeDiscountDto = new FeeDiscountDto();
+ feeDiscountDto.setDiscountId(payFeeConfigDiscount.getDiscountId());
+ List<FeeDiscountDto> feeDiscountDtos = feeDiscountInnerServiceSMOImpl.queryFeeDiscounts(feeDiscountDto);
+ Assert.listOnlyOne(feeDiscountDtos, "鏌ヨ鎵撴姌浼樻儬琛ㄩ敊璇�");
+ FeeDiscountRuleDto feeDiscountRuleDto = new FeeDiscountRuleDto();
+ feeDiscountRuleDto.setRuleId(feeDiscountDtos.get(0).getRuleId());
+ List<FeeDiscountRuleDto> feeDiscountRuleDtos = feeDiscountRuleInnerServiceSMOImpl.queryFeeDiscountRules(feeDiscountRuleDto);
+ Assert.listOnlyOne(feeDiscountRuleDtos, "鏌ヨ瑙勫垯琛ㄩ敊璇�");
+ //鑾峰彇瀹炵幇鏂瑰紡
+ String beanImpl = feeDiscountRuleDtos.get(0).getBeanImpl();
+ if (!StringUtil.isEmpty(beanImpl) && beanImpl.equals("reductionMonthFeeRule")) { //璧犻�佽鍒�
+ SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ Calendar cal = Calendar.getInstance();
+ //鑾峰彇缂磋垂寮�濮嬫椂闂�
+ Date startTime = DateUtil.getDateFromStringA(reqJson.getString("startTime"));
+ FeeDiscountSpecDto feeDiscountSpecDto = new FeeDiscountSpecDto();
+ feeDiscountSpecDto.setDiscountId(payFeeConfigDiscount.getDiscountId());
+ feeDiscountSpecDto.setSpecId(SPEC_RATE);
+ //鏌ヨ鎵撴姌瑙勬牸
+ List<FeeDiscountSpecDto> feeDiscountSpecDtos = feeDiscountSpecInnerServiceSMOImpl.queryFeeDiscountSpecs(feeDiscountSpecDto);
+ Assert.listOnlyOne(feeDiscountSpecDtos, "鏌ヨ鎵撴姌瑙勬牸琛ㄩ敊璇紒");
+ //鑾峰彇璧犻�佹湀浠�
+ String specValue = feeDiscountSpecDtos.get(0).getSpecValue();
+ FeeDiscountSpecDto feeDiscountSpec = new FeeDiscountSpecDto();
+ feeDiscountSpec.setDiscountId(payFeeConfigDiscount.getDiscountId());
+ feeDiscountSpec.setSpecId(SPEC_MONTH);
+ List<FeeDiscountSpecDto> feeDiscountSpecs = feeDiscountSpecInnerServiceSMOImpl.queryFeeDiscountSpecs(feeDiscountSpec);
+ Assert.listOnlyOne(feeDiscountSpecs, "鏌ヨ鎵撴姌瑙勬牸琛ㄩ敊璇紒");
+ //鑾峰彇鏈堜唤
+ BigDecimal discountMonth = new BigDecimal(feeDiscountSpecs.get(0).getSpecValue());
+ //鑾峰彇鍛ㄦ湡
+ BigDecimal cycle = new BigDecimal(reqJson.getString("cycles"));
+ int flag = discountMonth.compareTo(cycle);
+ if (flag == 1) { //鏈堜唤discountMonth澶т簬鍛ㄦ湡cycle锛屾棤娉曚韩鍙楄禒閫佽鍒�
+ continue;
+ }
+ FeeDto feeDto2 = new FeeDto();
+ feeDto2.setFeeId(feeDtos.get(0).getFeeId());
+ List<FeeDto> fees = feeInnerServiceSMOImpl.queryFees(feeDto2);
+ Assert.listOnlyOne(fees, "鏌ヨ璐圭敤琛ㄩ敊璇�");
+ //鑾峰彇璐圭敤寮�濮嬫椂闂�
+ Date endTime = fees.get(0).getEndTime();
+ if (endTime.equals(startTime)) {
+ continue;
+ }
+ cal.setTime(endTime);
+ cal.add(Calendar.MONTH, -Integer.parseInt(specValue));
+ PayFeePo payFeePo = new PayFeePo();
+ payFeePo.setFeeId(feeDtos.get(0).getFeeId());
+ payFeePo.setEndTime(simpleDateFormat.format(cal.getTime()));
+ feeInnerServiceSMOImpl.updateFee(payFeePo);
+ }
+ }
+ }
+ //妫�鏌ユ槸鍚︾幇閲戣处鎴锋姷鎵�
+ }
+ //涓嶉�氳繃
+ if ("1200".equals(reqJson.getString("state"))) {
+ reqJson.put("state", "1200");
+ updateFeeDetail(reqJson);
+ reqJson.put("state", "1200");
+ String cycles = (String) reqJson.get("cycles");
+ String receivableAmount = (String) reqJson.get("receivableAmount");
+ String receivedAmount = (String) reqJson.get("receivedAmount");
+ reqJson.put("cycles", unum(cycles));
+ reqJson.put("receivableAmount", unum(receivableAmount));
+ reqJson.put("receivedAmount", unum(receivedAmount));
+ reqJson.put("createTime", reqJson.get("payTime"));
+ updateFeeDetail(reqJson);
+ }
+ }
+
+ private double unum(String value) {
+ double dValue = Double.parseDouble(value);
+ return dValue * -1;
+ }
+
+ /**
+ * 娣诲姞娲诲姩淇℃伅
+ *
+ * @param paramInJson 鎺ュ彛璋冪敤鏀句紶鍏ュ叆鍙�
+ * @return 璁㈠崟鏈嶅姟鑳藉鎺ュ彈鐨勬姤鏂�
+ */
+ public void updateReturnPayFee(JSONObject paramInJson) {
+
+ ReturnPayFeeDto returnPayFeeDto = new ReturnPayFeeDto();
+ returnPayFeeDto.setReturnFeeId(paramInJson.getString("returnFeeId"));
+ List<ReturnPayFeeDto> returnPayFeeDtos = returnPayFeeInnerServiceSMOImpl.queryReturnPayFees(returnPayFeeDto);
+
+ Assert.listOnlyOne(returnPayFeeDtos, "鏈壘鍒伴渶瑕佷慨鏀圭殑娲诲姩 鎴栧鏉℃暟鎹�");
+
+
+ JSONObject businessReturnPayFee = new JSONObject();
+ businessReturnPayFee.putAll(BeanConvertUtil.beanCovertMap(returnPayFeeDtos.get(0)));
+ businessReturnPayFee.putAll(paramInJson);
+ ReturnPayFeePo returnPayFeePo = BeanConvertUtil.covertBean(businessReturnPayFee, ReturnPayFeePo.class);
+ int flag = returnPayFeeV1InnerServiceSMOImpl.updateReturnPayFee(returnPayFeePo);
if (flag < 1) {
throw new CmdException("鏇存柊鏁版嵁澶辫触");
}
-
- cmdDataFlowContext.setResponseEntity(ResultVo.success());
}
+
+ public void updateFeeDetail(JSONObject paramInJson) {
+
+ FeeDetailDto feeDetailDto = new FeeDetailDto();
+ feeDetailDto.setDetailId(paramInJson.getString("detailId"));
+ List<FeeDetailDto> feeDetailDtos = feeDetailInnerServiceSMOImpl.queryFeeDetails(feeDetailDto);
+ Assert.listOnlyOne(feeDetailDtos, "鏈壘鍒伴渶瑕佷慨鏀圭殑娲诲姩 鎴栧鏉℃暟鎹�");
+
+ JSONObject businessReturnPayFee = new JSONObject();
+ businessReturnPayFee.putAll(BeanConvertUtil.beanCovertMap(feeDetailDtos.get(0)));
+ businessReturnPayFee.putAll(paramInJson);
+ PayFeeDetailPo returnPayFeePo = BeanConvertUtil.covertBean(businessReturnPayFee, PayFeeDetailPo.class);
+ int flag = payFeeDetailV1InnerServiceSMOImpl.updatePayFeeDetailNew(returnPayFeePo);
+ if (flag < 1) {
+ throw new CmdException("鏇存柊鏁版嵁澶辫触");
+ }
+ }
+
+
+ public void addFeeDetail(JSONObject paramInJson) {
+
+ JSONObject businessReturnPayFee = new JSONObject();
+ businessReturnPayFee.putAll(paramInJson);
+ businessReturnPayFee.put("detailId", GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_detailId));
+ PayFeeDetailPo returnPayFeePo = BeanConvertUtil.covertBean(businessReturnPayFee, PayFeeDetailPo.class);
+ int flag = payFeeDetailV1InnerServiceSMOImpl.savePayFeeDetailNew(returnPayFeePo);
+ if (flag < 1) {
+ throw new CmdException("鏇存柊鏁版嵁澶辫触");
+ }
+ paramInJson.put("newDetailId", businessReturnPayFee.getString("detailId"));
+ }
+
+ public void updateFee(JSONObject paramInJson) {
+ PayFeePo payFeePo = BeanConvertUtil.covertBean(paramInJson, PayFeePo.class);
+ int flag = payFeeV1InnerServiceSMOImpl.updatePayFee(payFeePo);
+ if (flag < 1) {
+ throw new CmdException("鏇存柊鏁版嵁澶辫触");
+ }
+ }
+
+ /**
+ * 娣诲姞灏忓尯淇℃伅
+ *
+ * @param paramInJson 鎺ュ彛璋冪敤鏀句紶鍏ュ叆鍙�
+ * @return 璁㈠崟鏈嶅姟鑳藉鎺ュ彈鐨勬姤鏂�
+ */
+ public void addPayFeeDetailDiscountTwo(JSONObject paramInJson, JSONObject discountJson) {
+ JSONObject businessFee = new JSONObject();
+ businessFee.put("detailDiscountId", "-1");
+ businessFee.put("discountPrice", discountJson.getString("discountPrice"));
+ businessFee.put("discountId", discountJson.getString("discountId"));
+ businessFee.put("detailId", paramInJson.containsKey("newDetailId") ? paramInJson.getString("newDetailId") : paramInJson.getString("detailId"));
+ businessFee.put("communityId", paramInJson.getString("communityId"));
+ businessFee.put("feeId", paramInJson.getString("feeId"));
+ PayFeeDetailDiscountPo payFeeDetailDiscountPo = BeanConvertUtil.covertBean(businessFee, PayFeeDetailDiscountPo.class);
+ int flag =payFeeDetailDiscountNewV1InnerServiceSMOImpl.savePayFeeDetailDiscountNew(payFeeDetailDiscountPo);
+ if (flag < 1) {
+ throw new CmdException("鏇存柊鏁版嵁澶辫触");
+ }
+ }
+
}
--
Gitblit v1.8.0