From a5106b61fc8d50609385e1e6d25664a10a11ccf9 Mon Sep 17 00:00:00 2001
From: wuxw <928255095@qq.com>
Date: 星期四, 19 十月 2023 18:38:19 +0800
Subject: [PATCH] 优化代码
---
java110-bean/src/main/java/com/java110/po/fee/PayFeePo.java | 10 ++
service-fee/src/main/java/com/java110/fee/convertOnce/ICycleConvertOnceFee.java | 18 +++
service-fee/src/main/java/com/java110/fee/smo/impl/PayFeeRuleV1InnerServiceSMOImpl.java | 12 ++
service-fee/src/main/java/com/java110/fee/convertOnce/CycleConvertOnceFeeImpl.java | 149 +++++++++++++++++++++++++++++
service-user/src/main/java/com/java110/user/cmd/user/OwnerUserLoginCmd.java | 1
java110-utils/src/main/java/com/java110/utils/util/DateUtil.java | 16 +++
service-fee/src/main/java/com/java110/fee/dao/IPayFeeRuleV1ServiceDao.java | 7 +
java110-db/src/main/resources/mapper/fee/PayFeeRuleV1ServiceDaoImplMapper.xml | 14 ++
java110-bean/src/main/java/com/java110/dto/user/LoginOwnerResDto.java | 10 ++
java110-interface/src/main/java/com/java110/intf/fee/IPayFeeRuleV1InnerServiceSMO.java | 7 +
service-fee/src/main/java/com/java110/fee/dao/impl/PayFeeRuleV1ServiceDaoImpl.java | 11 ++
11 files changed, 254 insertions(+), 1 deletions(-)
diff --git a/java110-bean/src/main/java/com/java110/dto/user/LoginOwnerResDto.java b/java110-bean/src/main/java/com/java110/dto/user/LoginOwnerResDto.java
index ff94ccc..eb29c49 100644
--- a/java110-bean/src/main/java/com/java110/dto/user/LoginOwnerResDto.java
+++ b/java110-bean/src/main/java/com/java110/dto/user/LoginOwnerResDto.java
@@ -29,6 +29,8 @@
private String appUserId;
+ private String ownerTypeCd;
+
public String getUserId() {
return userId;
}
@@ -116,4 +118,12 @@
public void setAppUserId(String appUserId) {
this.appUserId = appUserId;
}
+
+ public String getOwnerTypeCd() {
+ return ownerTypeCd;
+ }
+
+ public void setOwnerTypeCd(String ownerTypeCd) {
+ this.ownerTypeCd = ownerTypeCd;
+ }
}
diff --git a/java110-bean/src/main/java/com/java110/po/fee/PayFeePo.java b/java110-bean/src/main/java/com/java110/po/fee/PayFeePo.java
index 633f5a8..55279af 100755
--- a/java110-bean/src/main/java/com/java110/po/fee/PayFeePo.java
+++ b/java110-bean/src/main/java/com/java110/po/fee/PayFeePo.java
@@ -19,6 +19,8 @@
private String incomeObjId;
private String startTime;
private String endTime;
+
+ private String maxTime;
private String amount;
private String userId;
private String bId;
@@ -171,4 +173,12 @@
public String getDeductFrom() { return deductFrom; }
public void setDeductFrom(String deductFrom) { this.deductFrom = deductFrom; }
+
+ public String getMaxTime() {
+ return maxTime;
+ }
+
+ public void setMaxTime(String maxTime) {
+ this.maxTime = maxTime;
+ }
}
diff --git a/java110-db/src/main/resources/mapper/fee/PayFeeRuleV1ServiceDaoImplMapper.xml b/java110-db/src/main/resources/mapper/fee/PayFeeRuleV1ServiceDaoImplMapper.xml
index e438d30..a638d63 100644
--- a/java110-db/src/main/resources/mapper/fee/PayFeeRuleV1ServiceDaoImplMapper.xml
+++ b/java110-db/src/main/resources/mapper/fee/PayFeeRuleV1ServiceDaoImplMapper.xml
@@ -14,6 +14,20 @@
)
</insert>
+ <insert id="savePayFeeRules" parameterType="Map">
+ insert into pay_fee_rule(
+ max_time,amount,fee_type_cd,cur_year_month,batch_id,user_id,income_obj_id,config_id,fee_flag,
+ start_time,end_time,state,rule_id,community_id,payer_obj_type,payer_obj_id
+ ) values
+ <foreach collection="payFeeRulePos" item="item" separator=",">
+ (
+ #{item.maxTime},#{item.amount},#{item.feeTypeCd},#{item.curYearMonth},#{item.batchId},#{item.userId},
+ #{item.incomeObjId},#{item.configId},#{item.feeFlag},#{item.startTime},#{item.endTime},#{item.state},#{item.ruleId},
+ #{item.communityId},#{item.payerObjType},#{item.payerObjId}
+ )
+ </foreach>
+ </insert>
+
<!-- 鏌ヨ璐圭敤瑙勫垯淇℃伅 add by wuxw 2018-07-03 -->
<select id="getPayFeeRuleInfo" parameterType="Map" resultType="Map">
diff --git a/java110-interface/src/main/java/com/java110/intf/fee/IPayFeeRuleV1InnerServiceSMO.java b/java110-interface/src/main/java/com/java110/intf/fee/IPayFeeRuleV1InnerServiceSMO.java
index b0383d9..92049e7 100644
--- a/java110-interface/src/main/java/com/java110/intf/fee/IPayFeeRuleV1InnerServiceSMO.java
+++ b/java110-interface/src/main/java/com/java110/intf/fee/IPayFeeRuleV1InnerServiceSMO.java
@@ -41,6 +41,11 @@
@RequestMapping(value = "/savePayFeeRule", method = RequestMethod.POST)
int savePayFeeRule(@RequestBody PayFeeRulePo payFeeRulePo);
+
+ @RequestMapping(value = "/savePayFeeRules", method = RequestMethod.POST)
+ int savePayFeeRules(@RequestBody List<PayFeeRulePo> payFeeRulePos);
+
+
@RequestMapping(value = "/updatePayFeeRule", method = RequestMethod.POST)
int updatePayFeeRule(@RequestBody PayFeeRulePo payFeeRulePo);
@@ -65,4 +70,6 @@
*/
@RequestMapping(value = "/queryPayFeeRulesCount", method = RequestMethod.POST)
int queryPayFeeRulesCount(@RequestBody PayFeeRuleDto payFeeRuleDto);
+
+
}
diff --git a/java110-utils/src/main/java/com/java110/utils/util/DateUtil.java b/java110-utils/src/main/java/com/java110/utils/util/DateUtil.java
index 1489167..805fb4a 100755
--- a/java110-utils/src/main/java/com/java110/utils/util/DateUtil.java
+++ b/java110-utils/src/main/java/com/java110/utils/util/DateUtil.java
@@ -889,4 +889,20 @@
return resMonth.doubleValue();
}
+
+ public static Date getTargetEndTime(double month, Date startDate) {
+ Calendar endDate = Calendar.getInstance();
+ endDate.setTime(startDate);
+
+ Double intMonth = Math.floor(month);
+ endDate.add(Calendar.MONTH, intMonth.intValue());
+ double doubleMonth = month - intMonth;
+ if (doubleMonth <= 0) {
+ return endDate.getTime();
+ }
+ int futureDay = endDate.getActualMaximum(Calendar.DAY_OF_MONTH);
+ Double hour = doubleMonth * futureDay * 24;
+ endDate.add(Calendar.HOUR_OF_DAY, hour.intValue());
+ return endDate.getTime();
+ }
}
diff --git a/service-fee/src/main/java/com/java110/fee/convertOnce/CycleConvertOnceFeeImpl.java b/service-fee/src/main/java/com/java110/fee/convertOnce/CycleConvertOnceFeeImpl.java
index 68381af..9c00103 100644
--- a/service-fee/src/main/java/com/java110/fee/convertOnce/CycleConvertOnceFeeImpl.java
+++ b/service-fee/src/main/java/com/java110/fee/convertOnce/CycleConvertOnceFeeImpl.java
@@ -1,13 +1,27 @@
package com.java110.fee.convertOnce;
+import com.java110.core.factory.GenerateCodeFactory;
+import com.java110.core.log.LoggerFactory;
+import com.java110.dto.fee.FeeConfigDto;
import com.java110.dto.fee.FeeDto;
+import com.java110.fee.dao.IPayFeeConfigV1ServiceDao;
+import com.java110.fee.dao.impl.PayFeeV1ServiceDaoImpl;
import com.java110.intf.fee.IFeeInnerServiceSMO;
+import com.java110.intf.fee.IPayFeeConfigV1InnerServiceSMO;
import com.java110.intf.fee.IPayFeeRuleV1InnerServiceSMO;
import com.java110.po.fee.PayFeePo;
+import com.java110.po.payFeeRule.PayFeeRulePo;
+import com.java110.utils.util.Assert;
+import com.java110.utils.util.BeanConvertUtil;
+import com.java110.utils.util.DateUtil;
+import com.java110.utils.util.StringUtil;
+import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Date;
import java.util.List;
/**
@@ -17,8 +31,14 @@
@Service
public class CycleConvertOnceFeeImpl implements ICycleConvertOnceFee {
+ private static Logger logger = LoggerFactory.getLogger(PayFeeV1ServiceDaoImpl.class);
+
+
@Autowired
private IFeeInnerServiceSMO feeInnerServiceSMOImpl;
+
+ @Autowired
+ private IPayFeeConfigV1InnerServiceSMO payFeeConfigV1InnerServiceSMOImpl;
@Autowired
private IPayFeeRuleV1InnerServiceSMO payFeeRuleV1InnerServiceSMOImpl;
@@ -41,6 +61,27 @@
//todo 涓氬姟澶勭悊
+ List<PayFeeRulePo> payFeeRulePos = new ArrayList<>();
+
+ PayFeeRulePo tmpPayFeeRulePo = null;
+ String curYearMonth = "";
+ for (PayFeePo tmpPayFeePo : payFeePos) {
+ tmpPayFeeRulePo = BeanConvertUtil.covertBean(tmpPayFeePo, PayFeeRulePo.class);
+ tmpPayFeeRulePo.setRuleId(GenerateCodeFactory.getGeneratorId("11"));
+ curYearMonth = DateUtil.getFormatTimeStringB(DateUtil.getDateFromStringB(tmpPayFeePo.getEndTime()));
+ tmpPayFeeRulePo.setCurYearMonth(curYearMonth);
+ payFeeRulePos.add(tmpPayFeeRulePo);
+ }
+
+ if (payFeeRulePos.isEmpty()) {
+ return 0;
+ }
+
+ //todo 淇濆瓨瑙勫垯
+ payFeeRuleV1InnerServiceSMOImpl.savePayFeeRules(payFeeRulePos);
+
+ //todo 鏍规嵁瑙勫垯鐢熸垚璐圭敤
+ rulesGeneratePayFees(payFeeRulePos);
return 0;
}
@@ -61,4 +102,112 @@
public int covertRuleIdsPayFee(List<String> ruleIds) {
return 0;
}
+
+ @Override
+ public int rulesGeneratePayFees(List<PayFeeRulePo> payFeeRulePos) {
+
+ if (payFeeRulePos == null || payFeeRulePos.isEmpty()) {
+ return 0;
+ }
+
+ for (PayFeeRulePo tmpPayFeeRulePo : payFeeRulePos) {
+ try {
+ //todo 鍗曚釜璐圭敤澶勭悊
+ ruleGeneratePayFee(tmpPayFeeRulePo);
+ } catch (Exception e) {
+ logger.error("澶勭悊寮傚父 ruleId" + tmpPayFeeRulePo.getRuleId(), e);
+ }
+ }
+ return payFeeRulePos.size();
+ }
+
+ /**
+ * @param tmpPayFeeRulePo
+ */
+ public int ruleGeneratePayFee(PayFeeRulePo tmpPayFeeRulePo) {
+
+ //todo 鏌ヨ璐圭敤椤逛俊鎭�
+ FeeConfigDto feeConfigDto = new FeeConfigDto();
+ feeConfigDto.setConfigId(tmpPayFeeRulePo.getConfigId());
+ feeConfigDto.setCommunityId(tmpPayFeeRulePo.getCommunityId());
+ List<FeeConfigDto> feeConfigDtos = payFeeConfigV1InnerServiceSMOImpl.queryPayFeeConfigs(feeConfigDto);
+
+ Assert.listOnlyOne(feeConfigDtos, "璐圭敤椤逛笉瀛樺湪锛宑onfigId=" + tmpPayFeeRulePo.getConfigId());
+
+ //todo 璁$畻鐩爣 缁撴潫鏃堕棿
+ Date targetEndTime = computeTargetEndTime(tmpPayFeeRulePo, feeConfigDtos.get(0));
+
+ //todo 鍒涘缓 pay_fee 鍜� attrs 鏁版嵁
+
+ List<PayFeePo> payFeePos = new ArrayList<>();
+ for()
+
+
+ return 0;
+ }
+
+ /**
+ * 璁$畻鐩爣缁撴潫鏃堕棿
+ *
+ * @param tmpPayFeeRulePo
+ * @param feeConfigDto
+ * @return
+ */
+ private Date computeTargetEndTime(PayFeeRulePo tmpPayFeeRulePo, FeeConfigDto feeConfigDto) {
+
+ Date targetEndDate = null;
+ //todo 鍒ゆ柇褰撳墠璐圭敤鏄惁宸茬粨鏉�
+ if (FeeDto.STATE_FINISH.equals(tmpPayFeeRulePo.getState())) {
+ targetEndDate = DateUtil.getDateFromStringB(tmpPayFeeRulePo.getEndTime());
+ return targetEndDate;
+ }
+
+ Calendar preEndTimeCal = Calendar.getInstance();
+ preEndTimeCal.setTime(DateUtil.getDateFromStringB(tmpPayFeeRulePo.getEndTime()));
+ if (StringUtil.isNumber(feeConfigDto.getPrepaymentPeriod())) {
+ preEndTimeCal.add(Calendar.DAY_OF_MONTH, Integer.parseInt(feeConfigDto.getPrepaymentPeriod()) * -1);
+ }
+ Date preEndTime = preEndTimeCal.getTime();
+ Date maxEndTime = DateUtil.getDateFromStringB(tmpPayFeeRulePo.getMaxTime());
+
+ Date billEndTime = DateUtil.getCurrentDate();
+ //寤鸿处鏃堕棿
+ Date startDate = DateUtil.getDateFromStringB(tmpPayFeeRulePo.getStartTime());
+ //璁¤垂璧峰鏃堕棿
+ Date endDate = DateUtil.getDateFromStringB(tmpPayFeeRulePo.getEndTime());
+ //缂磋垂鍛ㄦ湡
+ long paymentCycle = Long.parseLong(feeConfigDto.getPaymentCycle());
+ // 褰撳墠鏃堕棿 - 寮�濮嬫椂闂� = 鏈堜唤
+ double mulMonth = 0.0;
+ mulMonth = DateUtil.dayCompare(startDate, billEndTime);
+
+ // 鏈堜唤/ 鍛ㄦ湡 = 杞暟锛堝悜涓婂彇鏁达級
+ double round = 0.0;
+ if ("1200".equals(feeConfigDto.getPaymentCd())) { // 1200棰勪粯璐�
+ round = Math.floor(mulMonth / paymentCycle) + 1;
+ } else { //2100鍚庝粯璐�
+ round = Math.floor(mulMonth / paymentCycle);
+ }
+ // 杞暟 * 鍛ㄦ湡 * 30 + 寮�濮嬫椂闂� = 鐩爣 鍒版湡鏃堕棿
+ targetEndDate = DateUtil.getTargetEndTime(round * paymentCycle, startDate);//鐩爣缁撴潫鏃堕棿
+
+ //todo 濡傛灉 鍒颁簡 棰勪粯鏈� 浜х敓涓嬩釜鍛ㄦ湡鐨勮垂鐢�
+ if (DateUtil.getFormatTimeStringB(targetEndDate).equals(DateUtil.getFormatTimeStringB(endDate))
+ && DateUtil.getCurrentDate().getTime() > preEndTime.getTime()
+ ) {
+ targetEndDate = DateUtil.getTargetEndTime((round + 1) * paymentCycle, startDate);//鐩爣缁撴潫鏃堕棿
+ }
+
+
+ //todo 璐圭敤椤圭殑缁撴潫鏃堕棿<缂磋垂鐨勭粨鏉熸椂闂� 璐圭敤蹇粨鏉熶簡 鍙栬垂鐢ㄩ」鐨勭粨鏉熸椂闂�
+ if (maxEndTime.getTime() < targetEndDate.getTime()) {
+ targetEndDate = maxEndTime;
+ }
+
+ if (DateUtil.getDateFromStringB(tmpPayFeeRulePo.getEndTime()).getTime() > targetEndDate.getTime()) {
+ targetEndDate = DateUtil.getDateFromStringB(tmpPayFeeRulePo.getEndTime());
+ }
+
+ return targetEndDate;
+ }
}
diff --git a/service-fee/src/main/java/com/java110/fee/convertOnce/ICycleConvertOnceFee.java b/service-fee/src/main/java/com/java110/fee/convertOnce/ICycleConvertOnceFee.java
index 77ec0c4..1edc96b 100644
--- a/service-fee/src/main/java/com/java110/fee/convertOnce/ICycleConvertOnceFee.java
+++ b/service-fee/src/main/java/com/java110/fee/convertOnce/ICycleConvertOnceFee.java
@@ -1,6 +1,7 @@
package com.java110.fee.convertOnce;
import com.java110.po.fee.PayFeePo;
+import com.java110.po.payFeeRule.PayFeeRulePo;
import java.util.List;
@@ -36,8 +37,25 @@
/**
* 鏍规嵁 璐圭敤瑙勫垯杞崲
+ *
* @param ruleIds 璐圭敤瑙勫垯
* @return 澶т簬1 杞崲鎴愬姛 0 杞崲澶辫触
*/
int covertRuleIdsPayFee(List<String> ruleIds);
+
+ /**
+ * 鏍规嵁瑙勫垯鐢熸垚 涓�娆℃�ц垂鐢�
+ *
+ * @param payFeeRulePos
+ * @return
+ */
+ int rulesGeneratePayFees(List<PayFeeRulePo> payFeeRulePos);
+
+ /**
+ * 鏍规嵁瑙勫垯鐢熸垚 涓�娆℃�ц垂鐢�
+ *
+ * @param payFeeRulePo
+ * @return
+ */
+ int ruleGeneratePayFee(PayFeeRulePo payFeeRulePo);
}
diff --git a/service-fee/src/main/java/com/java110/fee/dao/IPayFeeRuleV1ServiceDao.java b/service-fee/src/main/java/com/java110/fee/dao/IPayFeeRuleV1ServiceDao.java
index 922e9c7..05d1ccb 100644
--- a/service-fee/src/main/java/com/java110/fee/dao/IPayFeeRuleV1ServiceDao.java
+++ b/service-fee/src/main/java/com/java110/fee/dao/IPayFeeRuleV1ServiceDao.java
@@ -70,4 +70,11 @@
*/
int queryPayFeeRulesCount(Map info);
+ /**
+ * 淇濆瓨鍒涘缓璐圭敤瑙勫垯
+ *
+ * @param info
+ * @return
+ */
+ int savePayFeeRules(Map info);
}
diff --git a/service-fee/src/main/java/com/java110/fee/dao/impl/PayFeeRuleV1ServiceDaoImpl.java b/service-fee/src/main/java/com/java110/fee/dao/impl/PayFeeRuleV1ServiceDaoImpl.java
index 4c265a0..ebd0404 100644
--- a/service-fee/src/main/java/com/java110/fee/dao/impl/PayFeeRuleV1ServiceDaoImpl.java
+++ b/service-fee/src/main/java/com/java110/fee/dao/impl/PayFeeRuleV1ServiceDaoImpl.java
@@ -60,6 +60,16 @@
return saveFlag;
}
+ @Override
+ public int savePayFeeRules(Map info) {
+ logger.debug("淇濆瓨 savePayFeeRules 鍏ュ弬 info : {}",info);
+
+ int saveFlag = sqlSessionTemplate.insert("payFeeRuleV1ServiceDaoImpl.savePayFeeRules",info);
+
+ return saveFlag;
+ }
+
+
/**
* 鏌ヨ璐圭敤瑙勫垯淇℃伅锛坕nstance锛�
@@ -109,4 +119,5 @@
}
+
}
diff --git a/service-fee/src/main/java/com/java110/fee/smo/impl/PayFeeRuleV1InnerServiceSMOImpl.java b/service-fee/src/main/java/com/java110/fee/smo/impl/PayFeeRuleV1InnerServiceSMOImpl.java
index 8310328..b31d1c6 100644
--- a/service-fee/src/main/java/com/java110/fee/smo/impl/PayFeeRuleV1InnerServiceSMOImpl.java
+++ b/service-fee/src/main/java/com/java110/fee/smo/impl/PayFeeRuleV1InnerServiceSMOImpl.java
@@ -29,7 +29,9 @@
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
/**
* 绫昏〃杩帮細 鏈嶅姟涔嬪墠璋冪敤鐨勬帴鍙e疄鐜扮被锛屼笉瀵瑰鎻愪緵鎺ュ彛鑳藉姏 鍙敤浜庢帴鍙e缓璋冪敤
@@ -52,7 +54,15 @@
return saveFlag;
}
- @Override
+ @Override
+ public int savePayFeeRules(@RequestBody List<PayFeeRulePo> payFeeRulePos) {
+ Map info = new HashMap();
+ info.put("payFeeRulePos",payFeeRulePos);
+ int saveFlag = payFeeRuleV1ServiceDaoImpl.savePayFeeRules(info);
+ return saveFlag;
+ }
+
+ @Override
public int updatePayFeeRule(@RequestBody PayFeeRulePo payFeeRulePo) {
int saveFlag = payFeeRuleV1ServiceDaoImpl.updatePayFeeRuleInfo(BeanConvertUtil.beanCovertMap(payFeeRulePo));
return saveFlag;
diff --git a/service-user/src/main/java/com/java110/user/cmd/user/OwnerUserLoginCmd.java b/service-user/src/main/java/com/java110/user/cmd/user/OwnerUserLoginCmd.java
index bc8550a..ffaa491 100644
--- a/service-user/src/main/java/com/java110/user/cmd/user/OwnerUserLoginCmd.java
+++ b/service-user/src/main/java/com/java110/user/cmd/user/OwnerUserLoginCmd.java
@@ -171,6 +171,7 @@
loginOwnerResDto.setCommunityName(communityDtos.get(0).getName());
loginOwnerResDto.setToken(token);
loginOwnerResDto.setKey(newKey);
+ loginOwnerResDto.setOwnerTypeCd(ownerDto.getOwnerTypeCd());
loginOwnerResDto.setAppUserId(ownerAppUserDtos.get(0).getAppUserId());
context.setResponseEntity(ResultVo.createResponseEntity(loginOwnerResDto));
--
Gitblit v1.8.0