From f55d6c3c4f13e1564899d3c88cbe698537aefcf9 Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期二, 18 六月 2024 10:21:42 +0800
Subject: [PATCH] sssssssssss
---
server/service/src/main/java/com/doumee/core/utils/Constants.java | 369 +++++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 359 insertions(+), 10 deletions(-)
diff --git a/server/service/src/main/java/com/doumee/core/utils/Constants.java b/server/service/src/main/java/com/doumee/core/utils/Constants.java
index 93d9893..a418f86 100644
--- a/server/service/src/main/java/com/doumee/core/utils/Constants.java
+++ b/server/service/src/main/java/com/doumee/core/utils/Constants.java
@@ -1,7 +1,9 @@
package com.doumee.core.utils;
+import cn.hutool.core.util.IdcardUtil;
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.exception.BusinessException;
+import com.doumee.dao.business.dto.CountCyclePriceDTO;
import com.doumee.dao.business.model.Solutions;
import com.doumee.dao.business.vo.CountCyclePriceVO;
import io.swagger.models.auth.In;
@@ -13,6 +15,7 @@
import javax.servlet.ServletOutputStream;
import java.io.*;
import java.math.BigDecimal;
+import java.math.RoundingMode;
import java.net.URL;
import java.net.URLDecoder;
import java.time.LocalDate;
@@ -49,6 +52,11 @@
public static final String WX_MIN_SECRET = "WX_MIN_SECRET";
public static final String SYSTEM ="SYSTEM";
+ public static final String PROTOCOL ="PROTOCOL";
+ public static final String PRIVACY ="PRIVACY";
+ public static final String USE ="USE";
+
+
public static final String GOODS_IMG_DIR ="GOODS_IMG_DIR";
public static final String CREDIT_CODE_REGEX = "[0-9A-HJ-NPQRTUWXY]{2}\\d{6}[0-9A-HJ-NPQRTUWXY]{10}";
@@ -175,31 +183,77 @@
}
+ public static CountCyclePriceVO getCountCyclePriceVO(CountCyclePriceDTO countCyclePriceDTO){
+ if(Objects.isNull(countCyclePriceDTO)
+ || Objects.isNull(countCyclePriceDTO.getSolutions())
+ || Objects.isNull(countCyclePriceDTO.getStartDate())
+ ){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST);
+ }
+ return Constants.countPriceVO(countCyclePriceDTO.getStartDate(),countCyclePriceDTO.getSolutions());
+ }
public static CountCyclePriceVO countPriceVO(Date startDate, Solutions solutions){
CountCyclePriceVO countCyclePriceVO = new CountCyclePriceVO();
- if(solutions.getInsureCycleUnit().equals(Constants.ZERO)){
+ //澶�
+ if(solutions.getTimeUnit().equals(TimeUnit.DAY.getValue())){
countCyclePriceVO.setEndDate(
DateUtil.getMontageDate(
- DateUtil.afterDateByType(startDate,0,solutions.getInsureCycle()-1)
- ,2)
+ DateUtil.afterDateByType(startDate,0,0)
+ ,2)
);
- }else if(solutions.getInsureCycleUnit().equals(Constants.TWO)){
+ }else if(solutions.getTimeUnit().equals(TimeUnit.MONTH.getValue())){
//鑾峰彇褰撴湀澶╂暟
Integer monthDays = DateUtil.monthDays(startDate);
//鑾峰彇澶╂暟鍚庣殑鏃ユ湡
Date afterDate = DateUtil.afterDateByType(startDate,0,monthDays);
//璧嬪�� 姣忔棩缁撴潫鏃跺垎绉�
countCyclePriceVO.setEndDate(DateUtil.getMontageDate(afterDate,3));
- }else if(solutions.getInsureCycleUnit().equals(Constants.THREE)){
+ }else if(solutions.getTimeUnit().equals(TimeUnit.QUARTER.getValue())){
//鑾峰彇X骞村悗鏃ユ湡 澶氫簡涓�澶�
- Date afterDate = DateUtil.afterDateByType(startDate,2,solutions.getInsureCycle());
+ Date afterDate = DateUtil.afterDateByType(startDate,1,3);
+ //璧嬪�� 姣忔棩缁撴潫鏃跺垎绉� 鐒跺悗鍑忓皯涓�澶�
+ countCyclePriceVO.setEndDate(DateUtil.getMontageDate(afterDate,3));
+ }else if(solutions.getTimeUnit().equals(TimeUnit.HALF_YEAR.getValue())){
+ //鑾峰彇X骞村悗鏃ユ湡 澶氫簡涓�澶�
+ Date afterDate = DateUtil.afterDateByType(startDate,1,6);
+ //璧嬪�� 姣忔棩缁撴潫鏃跺垎绉� 鐒跺悗鍑忓皯涓�澶�
+ countCyclePriceVO.setEndDate(DateUtil.getMontageDate(afterDate,3));
+ }else if(solutions.getTimeUnit().equals(TimeUnit.YEAR.getValue())){
+ //鑾峰彇X骞村悗鏃ユ湡 澶氫簡涓�澶�
+ Date afterDate = DateUtil.afterDateByType(startDate,2,1);
//璧嬪�� 姣忔棩缁撴潫鏃跺垎绉� 鐒跺悗鍑忓皯涓�澶�
countCyclePriceVO.setEndDate(DateUtil.getMontageDate(afterDate,3));
}
- countCyclePriceVO.setCyclePrice(Constants.countDetailFee(solutions,countCyclePriceVO.getEndDate(),startDate));
+ countCyclePriceVO.setCyclePrice(solutions.getPrice());
return countCyclePriceVO;
}
+
+
+// public static CountCyclePriceVO countPriceVO(Date startDate, Solutions solutions){
+// CountCyclePriceVO countCyclePriceVO = new CountCyclePriceVO();
+// if(solutions.getInsureCycleUnit().equals(Constants.ZERO)){
+// countCyclePriceVO.setEndDate(
+// DateUtil.getMontageDate(
+// DateUtil.afterDateByType(startDate,0,solutions.getInsureCycle()-1)
+// ,2)
+// );
+// }else if(solutions.getInsureCycleUnit().equals(Constants.TWO)){
+// //鑾峰彇褰撴湀澶╂暟
+// Integer monthDays = DateUtil.monthDays(startDate);
+// //鑾峰彇澶╂暟鍚庣殑鏃ユ湡
+// Date afterDate = DateUtil.afterDateByType(startDate,0,monthDays);
+// //璧嬪�� 姣忔棩缁撴潫鏃跺垎绉�
+// countCyclePriceVO.setEndDate(DateUtil.getMontageDate(afterDate,3));
+// }else if(solutions.getInsureCycleUnit().equals(Constants.THREE)){
+// //鑾峰彇X骞村悗鏃ユ湡 澶氫簡涓�澶�
+// Date afterDate = DateUtil.afterDateByType(startDate,2,solutions.getInsureCycle());
+// //璧嬪�� 姣忔棩缁撴潫鏃跺垎绉� 鐒跺悗鍑忓皯涓�澶�
+// countCyclePriceVO.setEndDate(DateUtil.getMontageDate(afterDate,3));
+// }
+// countCyclePriceVO.setCyclePrice(Constants.countDetailFee(solutions,countCyclePriceVO.getEndDate(),startDate));
+// return countCyclePriceVO;
+// }
public static Integer getSexByIdCard(String idCard){
if(StringUtils.isBlank(idCard)){
@@ -579,7 +633,10 @@
public static void main(String[] args) {
- System.out.println("{\"companyName\":\"搴斿疂绉戞妧\",\"endtime\":\"2024-03-01 17:19:00\",\"erpId\":\"4D40185D5BC74A13821BE46EAF8B4179\",\"erpWithVisitDTOList\":[],\"faceImg\":\"20240304/1709518170325_742.jpg\",\"idcardNo\":\"342501199609300535\",\"idcardType\":0,\"name\":\"榛勬檵\",\"phone\":\"17756328697\",\"reason\":\"鎺㈤櫓\",\"receptMemberId\":\"E7E514BD7DE3F27CE0530B630A0AEAE0\",\"starttime\":\"2024-03-01 13:18:00\"}");
+ System.out.println(IdcardUtil.isValidCard("340621199310134818"));
+ System.out.println(IdcardUtil.isValidCard("341621199310134818"));
+
+// System.out.println("{\"companyName\":\"搴斿疂绉戞妧\",\"endtime\":\"2024-03-01 17:19:00\",\"erpId\":\"4D40185D5BC74A13821BE46EAF8B4179\",\"erpWithVisitDTOList\":[],\"faceImg\":\"20240304/1709518170325_742.jpg\",\"idcardNo\":\"342501199609300535\",\"idcardType\":0,\"name\":\"榛勬檵\",\"phone\":\"17756328697\",\"reason\":\"鎺㈤櫓\",\"receptMemberId\":\"E7E514BD7DE3F27CE0530B630A0AEAE0\",\"starttime\":\"2024-03-01 13:18:00\"}");
}
/**
* 鐢ㄦ埛绫诲瀷 0绯荤粺鐢ㄦ埛 1浼佷笟鐢ㄦ埛 2鏈嶅姟鏈烘瀯绠$悊鍛� 3鏈嶅姟鏈烘瀯瀛愯处鍙� 4缁煎悎鏈嶅姟鍗曚綅绠$悊鍛� 5缁煎悎鏈嶅姟鍗曚綅瀛愯处鍙� 6涓撳 7鍘垮尯鐢ㄦ埛 8甯傚眬鐢ㄦ埛
@@ -726,7 +783,8 @@
WTBYTH(24, "宸查��鍥�"),
WTBYGB(25, "宸插叧闂�"),
//2024骞�4鏈�25鏃�15:17:13 淇敼 鎶曚繚涓� = 銆� 鎵规敼鐢宠涓�
- WTBTBZ(26, "鎵规敼鐢宠涓�"),
+ //2024-5-21 14:04:10 淇敼 鎵规敼鐢宠涓�= 銆嬫姇淇濅腑
+ WTBTBZ(26, "鎶曚繚涓�"),
WTBBZZ(27, "淇濋殰涓�"),
;
// 鎴愬憳鍙橀噺
@@ -1000,6 +1058,128 @@
this.collectStatus = collectStatus;
}
}
+
+ /**
+ * 鏂规 鍛ㄦ湡鍗曚綅
+ * coefficient 浠ュ崐鏈堜负鏈�灏忛绮�
+ */
+ public enum TimeUnit {
+ DAY(0,"鏃�",0),
+ MONTH(2,"鏈�",2),
+ QUARTER(3,"瀛e害",6),
+ HALF_YEAR(4,"鍗婂勾",12),
+ YEAR(5,"骞�",24);
+ private Integer value;
+ private String des;
+ private Integer coefficient;
+
+
+ TimeUnit(Integer value, String des, Integer coefficient) {
+ this.value = value;
+ this.des = des;
+ this.coefficient = coefficient;
+ }
+
+ public Integer getValue() {
+ return value;
+ }
+
+ public void setValue(Integer value) {
+ this.value = value;
+ }
+
+ public String getDes() {
+ return des;
+ }
+
+ public void setDes(String des) {
+ this.des = des;
+ }
+
+ public Integer getCoefficient() {
+ return coefficient;
+ }
+
+ public void setCoefficient(Integer coefficient) {
+ this.coefficient = coefficient;
+ }
+
+ public static TimeUnit getTimeUnit(Integer value) {
+ for (TimeUnit c : TimeUnit.values()) {
+ if (Constants.equalsInteger(c.getValue() , value)) {
+ return c;
+ }
+ }
+ return null;
+ }
+ }
+
+ /**
+ * 鏂规 鍛ㄦ湡鍗曚綅 INSURE_CYCLE_UNIT
+ * coefficient 浠ュ崐鏈堜负鏈�灏忛绮�
+ */
+ public enum InsureCycleUnit {
+ DAY(0,"鏃�",new BigDecimal(1),0),
+ HALF_MONTH(1,"鍗婃湀",new BigDecimal(15.5),1),
+ MONTH(2,"鏈�",new BigDecimal(31),2),
+ QUARTER(3,"瀛e害",new BigDecimal(92),6),
+ HALF_YEAR(4,"鍗婂勾", new BigDecimal(184),12),
+ YEAR(5,"骞�", new BigDecimal(365),24);
+ private Integer value;
+ private String des;
+ private BigDecimal days;
+ private Integer coefficient;
+
+
+ public static InsureCycleUnit getInsureCycleUnit(Integer value) {
+ for (InsureCycleUnit c : InsureCycleUnit.values()) {
+ if (Constants.equalsInteger(c.getValue() , value)) {
+ return c;
+ }
+ }
+ return null;
+ }
+
+ InsureCycleUnit(Integer value, String des,BigDecimal days, Integer coefficient) {
+ this.value = value;
+ this.des = des;
+ this.days = days;
+ this.coefficient = coefficient;
+ }
+
+ public Integer getValue() {
+ return value;
+ }
+
+ public void setValue(Integer value) {
+ this.value = value;
+ }
+
+ public String getDes() {
+ return des;
+ }
+
+ public void setDes(String des) {
+ this.des = des;
+ }
+ public BigDecimal getDays() {
+ return days;
+ }
+
+ public void setDays(BigDecimal days) {
+ this.days = days;
+ }
+
+ public Integer getCoefficient() {
+ return coefficient;
+ }
+
+ public void setCoefficient(Integer coefficient) {
+ this.coefficient = coefficient;
+ }
+
+ }
+
@@ -1388,7 +1568,7 @@
CLOSE(6, "宸插叧闂�"),
CHECHED_PASSED(7, "瀹℃牳閫氳繃"),
PALTFORM_CHECK_PASS_NO(8, "瀹℃牳涓嶉�氳繃"),
- WTB_TOUBAOING(9, "鎶曚繚涓�"),
+ WTB_TOUBAOING(9, "鎵规敼鐢宠涓�"),
;
// 鎴愬憳鍙橀噺
private String name;
@@ -1874,4 +2054,173 @@
}
}
}
+
+
+
+ /**
+ * 鍑忎繚 鎬昏垂鐢�
+ * @param solutions
+ * @param fee
+ * @param startTime
+ * @param endTime
+ * @param reduceStartTime
+ * @param reduceEndTime
+ * @return
+ */
+ public static BigDecimal reduceFee(Solutions solutions,BigDecimal fee,Date startTime ,Date endTime,Date reduceStartTime,Date reduceEndTime){
+ Integer days = DateUtil.daysBetweenDates(reduceEndTime, reduceStartTime) + 1;
+ Integer countDays = DateUtil.daysBetweenDates(endTime, startTime) + 1;
+ Constants.TimeUnit timeUnit = Constants.TimeUnit.getTimeUnit(solutions.getTimeUnit());
+ Constants.InsureCycleUnit insureCycleUnit = Constants.InsureCycleUnit.getInsureCycleUnit(solutions.getInsureCycleUnit());
+ if(solutions.getTimeUnit().equals(solutions.getInsureCycleUnit())){
+ return fee;
+ }else{
+ if(solutions.getInsureCycleUnit().equals(Constants.InsureCycleUnit.DAY.getValue())){
+ //澶╀负鎵规敼鍗曚綅
+ return fee.multiply(new BigDecimal(days)).divide(new BigDecimal(countDays),2, RoundingMode.HALF_UP);
+ }else if(solutions.getInsureCycleUnit().equals(Constants.InsureCycleUnit.HALF_MONTH.getValue())) {
+ //鍗婃湀涓烘壒鏀瑰崟浣�
+ BigDecimal cycle = new BigDecimal(days).divide(insureCycleUnit.getDays(),0,RoundingMode.CEILING);
+ //鏍规嵁鎶曚繚鍛ㄦ湡 瀹氫箟鐨� 姣忎釜鍛ㄦ湡 = X涓� 鍗婃湀鍛ㄦ湡 杩涜璁$畻
+ // 鎬婚噾棰� * 浜х敓璐圭敤鐨勫懆鏈� / 鎶曚繚鍛ㄦ湡瀹氫箟鐨� 鍗婃湀鍛ㄦ湡鏁�
+ return fee.multiply(cycle).divide(new BigDecimal(timeUnit.getCoefficient()),2, RoundingMode.HALF_UP);
+ }else if(solutions.getInsureCycleUnit().equals(Constants.InsureCycleUnit.MONTH.getValue())) {
+ //鏈堜唤涓烘壒鏀瑰崟浣�
+ BigDecimal cycle = new BigDecimal(DateUtil.getDifferenceMonths(reduceEndTime,reduceStartTime));
+ // 鎬婚噾棰� * 浜х敓璐圭敤鐨勫懆鏈� / 鎶曚繚鍛ㄦ湡瀹氫箟鐨� 鍗婃湀鍛ㄦ湡鏁� * 2
+ return fee.multiply(cycle).multiply(new BigDecimal(2)).divide(new BigDecimal(timeUnit.getCoefficient()),2, RoundingMode.HALF_UP);
+
+ }else if(solutions.getInsureCycleUnit().equals(Constants.InsureCycleUnit.QUARTER.getValue())) {
+ //瀛e害涓烘壒鏀瑰崟浣�
+ //鏌ヨ浜х敓璐圭敤鎬绘湀浠�
+ BigDecimal cycle = new BigDecimal(DateUtil.getDifferenceMonths(reduceEndTime,reduceStartTime));
+ //杞崲涓� 鎬诲搴�
+ cycle = cycle.divide(new BigDecimal(3),0,RoundingMode.CEILING);
+ // 鎬婚噾棰� * 浜х敓璐圭敤鐨勫懆鏈� / 鎶曚繚鍛ㄦ湡瀹氫箟鐨� 鍗婃湀鍛ㄦ湡鏁� * 6
+ return fee.multiply(cycle).multiply(new BigDecimal(6)).divide(new BigDecimal(timeUnit.getCoefficient()),2, RoundingMode.HALF_UP);
+ }else if(solutions.getInsureCycleUnit().equals(Constants.InsureCycleUnit.HALF_YEAR.getValue())) {
+ //鍗婂勾涓烘壒鏀瑰崟浣�
+ //鏌ヨ浜х敓璐圭敤鎬绘湀浠�
+ BigDecimal cycle = new BigDecimal(DateUtil.getDifferenceMonths(reduceEndTime,reduceStartTime));
+ //杞崲涓� 鍗婂勾
+ cycle = cycle.divide(new BigDecimal(6),0,RoundingMode.CEILING);
+ // 鎬婚噾棰� * 浜х敓璐圭敤鐨勫懆鏈� / 鎶曚繚鍛ㄦ湡瀹氫箟鐨� 鍗婃湀鍛ㄦ湡鏁� * 6
+ return fee.multiply(cycle).multiply(new BigDecimal(12)).divide(new BigDecimal(timeUnit.getCoefficient()),2, RoundingMode.HALF_UP);
+ }else {
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鏂规閰嶇疆閿欒");
+ }
+ }
+ }
+
+ /**
+ * 鍔犱繚涓氬姟 鏍规嵁鏂规璁$畻鎬昏垂鐢�
+ * @param solutions
+ * @param startTime
+ * @param endTime
+ * @param newStartTime
+ * @return
+ */
+ public static BigDecimal addFee(Solutions solutions,BigDecimal fee,Date startTime ,Date endTime,Date newStartTime,Date newEndTime){
+ Integer days = DateUtil.daysBetweenDates(newEndTime, newStartTime) + 1;
+ Integer countDays = DateUtil.daysBetweenDates(endTime, startTime) + 1;
+ Constants.TimeUnit timeUnit = Constants.TimeUnit.getTimeUnit(solutions.getTimeUnit());
+ Constants.InsureCycleUnit insureCycleUnit = Constants.InsureCycleUnit.getInsureCycleUnit(solutions.getInsureCycleUnit());
+ if(solutions.getTimeUnit().equals(solutions.getInsureCycleUnit())){
+ return fee;
+ }else{
+ if(solutions.getInsureCycleUnit().equals(Constants.InsureCycleUnit.DAY.getValue())){
+ //澶╀负鎵规敼鍗曚綅
+ return fee.multiply(new BigDecimal(days)).divide(new BigDecimal(countDays),2, RoundingMode.HALF_UP);
+ }else if(solutions.getInsureCycleUnit().equals(Constants.InsureCycleUnit.HALF_MONTH.getValue())) {
+ //鍗婃湀涓烘壒鏀瑰崟浣�
+ BigDecimal cycle = new BigDecimal(days).divide(insureCycleUnit.getDays(),0,RoundingMode.CEILING);
+ //鏍规嵁鎶曚繚鍛ㄦ湡 瀹氫箟鐨� 姣忎釜鍛ㄦ湡 = X涓� 鍗婃湀鍛ㄦ湡 杩涜璁$畻
+ // 鎬婚噾棰� * 浜х敓璐圭敤鐨勫懆鏈� / 鎶曚繚鍛ㄦ湡瀹氫箟鐨� 鍗婃湀鍛ㄦ湡鏁�
+ return fee.multiply(cycle).divide(new BigDecimal(timeUnit.getCoefficient()),2, RoundingMode.HALF_UP);
+ }else if(solutions.getInsureCycleUnit().equals(Constants.InsureCycleUnit.MONTH.getValue())) {
+ //鏈堜唤涓烘壒鏀瑰崟浣�
+ BigDecimal cycle = new BigDecimal(DateUtil.getDifferenceMonths(newEndTime,newStartTime));
+ // 鎬婚噾棰� * 浜х敓璐圭敤鐨勫懆鏈� / 鎶曚繚鍛ㄦ湡瀹氫箟鐨� 鍗婃湀鍛ㄦ湡鏁� * 2
+ return fee.multiply(cycle).multiply(new BigDecimal(2)).divide(new BigDecimal(timeUnit.getCoefficient()),2, RoundingMode.HALF_UP);
+
+ }else if(solutions.getInsureCycleUnit().equals(Constants.InsureCycleUnit.QUARTER.getValue())) {
+ //瀛e害涓烘壒鏀瑰崟浣�
+ //鏌ヨ浜х敓璐圭敤鎬绘湀浠�
+ BigDecimal cycle = new BigDecimal(DateUtil.getDifferenceMonths(newEndTime,newStartTime));
+ //杞崲涓� 鎬诲搴�
+ cycle = cycle.divide(new BigDecimal(3),0,RoundingMode.CEILING);
+ // 鎬婚噾棰� * 浜х敓璐圭敤鐨勫懆鏈� / 鎶曚繚鍛ㄦ湡瀹氫箟鐨� 鍗婃湀鍛ㄦ湡鏁� * 6
+ return fee.multiply(cycle).multiply(new BigDecimal(6)).divide(new BigDecimal(timeUnit.getCoefficient()),2, RoundingMode.HALF_UP);
+ }else if(solutions.getInsureCycleUnit().equals(Constants.InsureCycleUnit.HALF_YEAR.getValue())) {
+ //鍗婂勾涓烘壒鏀瑰崟浣�
+ //鏌ヨ浜х敓璐圭敤鎬绘湀浠�
+ BigDecimal cycle = new BigDecimal(DateUtil.getDifferenceMonths(newEndTime,newStartTime));
+ //杞崲涓� 鍗婂勾
+ cycle = cycle.divide(new BigDecimal(6),0,RoundingMode.CEILING);
+ // 鎬婚噾棰� * 浜х敓璐圭敤鐨勫懆鏈� / 鎶曚繚鍛ㄦ湡瀹氫箟鐨� 鍗婃湀鍛ㄦ湡鏁� * 6
+ return fee.multiply(cycle).multiply(new BigDecimal(12)).divide(new BigDecimal(timeUnit.getCoefficient()),2, RoundingMode.HALF_UP);
+ }else {
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鏂规閰嶇疆閿欒");
+ }
+ }
+ }
+
+
+
+ /**
+ * 璁$畻宸蹭骇鐢熻垂鐢�
+ * @param solutions
+ * @param fee
+ * @param startTime
+ * @param endTime
+ * @return
+ */
+ public static BigDecimal produceFee(Solutions solutions,BigDecimal fee,Date startTime ,Date endTime,Date produceStartTime){
+ //瓒呭嚭澶╂暟
+ Integer days = DateUtil.daysBetweenDates(DateUtil.getMontageDate(new Date(), 2), produceStartTime) + 1;
+ Integer countDays = DateUtil.daysBetweenDates(endTime, startTime) + 1;
+ Constants.TimeUnit timeUnit = Constants.TimeUnit.getTimeUnit(solutions.getTimeUnit());
+ Constants.InsureCycleUnit insureCycleUnit = Constants.InsureCycleUnit.getInsureCycleUnit(solutions.getInsureCycleUnit());
+ if(solutions.getTimeUnit().equals(solutions.getInsureCycleUnit())){
+ return fee;
+ }else{
+ if(solutions.getInsureCycleUnit().equals(Constants.InsureCycleUnit.DAY.getValue())){
+ //澶╀负鎵规敼鍗曚綅
+ return fee.multiply(new BigDecimal(days)).divide(new BigDecimal(countDays),2, RoundingMode.HALF_UP);
+ }else if(solutions.getInsureCycleUnit().equals(Constants.InsureCycleUnit.HALF_MONTH.getValue())) {
+ //鍗婃湀涓烘壒鏀瑰崟浣�
+ BigDecimal cycle = new BigDecimal(days).divide(insureCycleUnit.getDays(),0,RoundingMode.CEILING);
+ //鏍规嵁鎶曚繚鍛ㄦ湡 瀹氫箟鐨� 姣忎釜鍛ㄦ湡 = X涓� 鍗婃湀鍛ㄦ湡 杩涜璁$畻
+ // 鎬婚噾棰� * 浜х敓璐圭敤鐨勫懆鏈� / 鎶曚繚鍛ㄦ湡瀹氫箟鐨� 鍗婃湀鍛ㄦ湡鏁�
+ return fee.multiply(cycle).divide(new BigDecimal(timeUnit.getCoefficient()),2, RoundingMode.HALF_UP);
+ }else if(solutions.getInsureCycleUnit().equals(Constants.InsureCycleUnit.MONTH.getValue())) {
+ //鏈堜唤涓烘壒鏀瑰崟浣�
+ BigDecimal cycle = new BigDecimal(DateUtil.getDifferenceMonths(new Date(),startTime));
+ // 鎬婚噾棰� * 浜х敓璐圭敤鐨勫懆鏈� / 鎶曚繚鍛ㄦ湡瀹氫箟鐨� 鍗婃湀鍛ㄦ湡鏁� * 2
+ return fee.multiply(cycle).multiply(new BigDecimal(2)).divide(new BigDecimal(timeUnit.getCoefficient()),2, RoundingMode.HALF_UP);
+
+ }else if(solutions.getInsureCycleUnit().equals(Constants.InsureCycleUnit.QUARTER.getValue())) {
+ //瀛e害涓烘壒鏀瑰崟浣�
+ //鏌ヨ浜х敓璐圭敤鎬绘湀浠�
+ BigDecimal cycle = new BigDecimal(DateUtil.getDifferenceMonths(new Date(),startTime));
+ //杞崲涓� 鎬诲搴�
+ cycle = cycle.divide(new BigDecimal(3),0,RoundingMode.CEILING);
+ // 鎬婚噾棰� * 浜х敓璐圭敤鐨勫懆鏈� / 鎶曚繚鍛ㄦ湡瀹氫箟鐨� 鍗婃湀鍛ㄦ湡鏁� * 6
+ return fee.multiply(cycle).multiply(new BigDecimal(6)).divide(new BigDecimal(timeUnit.getCoefficient()),2, RoundingMode.HALF_UP);
+ }else if(solutions.getInsureCycleUnit().equals(Constants.InsureCycleUnit.HALF_YEAR.getValue())) {
+ //鍗婂勾涓烘壒鏀瑰崟浣�
+ //鏌ヨ浜х敓璐圭敤鎬绘湀浠�
+ BigDecimal cycle = new BigDecimal(DateUtil.getDifferenceMonths(new Date(),startTime));
+ //杞崲涓� 鍗婂勾
+ cycle = cycle.divide(new BigDecimal(6),0,RoundingMode.CEILING);
+ // 鎬婚噾棰� * 浜х敓璐圭敤鐨勫懆鏈� / 鎶曚繚鍛ㄦ湡瀹氫箟鐨� 鍗婃湀鍛ㄦ湡鏁� * 6
+ return fee.multiply(cycle).multiply(new BigDecimal(12)).divide(new BigDecimal(timeUnit.getCoefficient()),2, RoundingMode.HALF_UP);
+ }else {
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鏂规閰嶇疆閿欒");
+ }
+ }
+ }
+
+
+
}
--
Gitblit v1.9.3