jiangping
2024-12-27 5506edbe54883b31db3cc8e4a1d9d0795a18a3c9
server/service/src/main/java/com/doumee/core/utils/Constants.java
@@ -35,6 +35,8 @@
    public static final int TWO = 2 ;
    public static final int
            THREE = 3 ;
    public static final int FIVE = 5 ;
    public static final int SIX = 6 ;
    public static final int SEVEN = 7 ;
    public static final String ACCESS_ID="ACCESS_ID";
    public static final String BUCKETNAME = "BUCKETNAME";
@@ -54,6 +56,9 @@
    public static final String WX_MIN_APPID = "WX_MIN_APPID";
    public static final String WX_MIN_SECRET = "WX_MIN_SECRET";
    public static final String PLAT_COMPANY_NAME ="PLAT_COMPANY_NAME";
    public static final String PLAT_CREDIT_CODE ="PLAT_CREDIT_CODE";
    public static final String PLAT_EMAIL ="PLAT_EMAIL";
    public static final String SYSTEM ="SYSTEM";
    public static final String PROTOCOL ="PROTOCOL";
    public static final String PRIVACY ="PRIVACY";
@@ -91,6 +96,10 @@
    public static final String SMS_COMNAME = "SMS_COMNAME";
    public static final String TAXES_FILE = "TAXES_FILE";
    public static final String APPLY_FILE ="APPLY_FILE" ;
    public static final String COMPANY_USER_APPLY ="COMPANY_USER_APPLY" ;
    public static final String INSURANCE ="INSURANCE" ;
    public static final String CONTRACT ="CONTRACT" ;
    public static final String SETTLE_FILE ="SETTLE_FILE" ;
    public static final String DU_FILE ="DU_FILE" ;
    public static final String SIGN_DONE_NOTIFY_URL = "SIGN_DONE_NOTIFY_URL";
@@ -717,6 +726,12 @@
        WTB_CA_DONE_PDF(23, "委托加减保/换厂业务 - 合并单最终保单", "委托加减保/换厂业务 - 合并单最终保单"),
        WTB_CONFIRMATION_LATTER(24, "委托保 - 投保方案确认书", "委托保 - 投保方案确认书"),
        WTB_CA_TBD_PDF(25, "委托加减保/换厂业务 -申请单(商户签署后PDF)", "委托加减保/换厂业务 -申请单(商户签署后PDF)"),
        CONTRACT_PDF(26, "合同附件", "合同附件"),
        CONTRACT_FIRST_PDF(27, "合同签署附件", "合同签署附件"),
        CONTRACT_DONE_PDF(28, "合同签署附件", "合同签署附件"),
        COMPANY_SOLUTION_SIGN_PDF(29, "企业签署后方案确认书", "企业签署后方案确认书"),
        COMPANY_USER_APPLY(30, "企业申请集团用户附件", "企业申请集团用户附件"),
        ;
        // 成员变量
        private String name;
@@ -833,10 +848,8 @@
    }
    public static void main(String[] args) {
        System.out.println(IdcardUtil.isValidCard("342623199201150101"));
        System.out.println(IdcardUtil.isValidCard("342623199201150102"));
        System.out.println(IdcardUtil.isValidCard("342623199201150103"));
        System.out.println(IdcardUtil.isValidCard("342623199201150104"));
         System.out.println(BigDecimal.valueOf(3.45678).setScale(2,BigDecimal.ROUND_HALF_UP));
        System.out.println(BigDecimal.valueOf(3.45678).setScale(2,BigDecimal.ROUND_DOWN));
//        System.out.println(IdcardUtil.isValidCard("340621199310134818"));
//        System.out.println(IdcardUtil.isValidCard("341621199310134818"));
@@ -1077,6 +1090,7 @@
        IA_HBD_UPLOAD_INSURANCE(35, "投保完成","保险生效起期:${param1}变更为${param2}",3),
        IA_HBD_CLOSE(36, "退回申请","原因:${param}",3),
        IA_HBD_UPLOAD_BXD(41, "上传保险单","",3),
        IA_HBD_REEXAMINE_PASS(42, "复审通过","",3),
@@ -1176,6 +1190,7 @@
        UPLOAD_INSURANCE_POLICY(2, "待出单","",0),
        FINISH(3, "保障中","",0),
        CLOSE(4, "已退回","",0),
        RETRIAL(5, "待审核","",0),
        ;
        // 成员变量
        private String name;
@@ -1463,7 +1478,7 @@
        CLOSE(9, "订单关闭","",6),
        PLATFORM_CHECK_PASS(10,"平台投保审核通过","提交意见:${param}",0),
        COMPANY_BACK_APPLY_PASS(11, "企业申请退回(平台投保审核通过)","提交意见:${param}",5),
        REEXAMINE(12, "商户或平台复审","复审意见:${param}",0),
        WTB_UPLOAD(20, "提交投保","",28),
@@ -1472,7 +1487,7 @@
        WTB_BUSINESS_CHECK_PASS(23,"商户投保审核通过","提交意见:${param}",23),
        WTB_RETURN(24, "已退回","提交意见:${param}",24),
        WTB_CLOSED(25, "已关闭","提交意见:${param}",25),
        WTB_TOUBAOING(26, "投保中","提交意见:${param}",26),
        WTB_TOUBAOING(26, "待出单","提交意见:${param}",26),
        WTB_DONE(27, "保障中","提交意见:${param}",27),
        ;
@@ -1569,7 +1584,10 @@
        CHANGE_FACTORY(2, "员工换厂申请","保险方案"),
        DISPATCH_UNIT(3, "派遣单位申请","派遣单位"),
        TAXES(4, "开票申请","开票金额"),
        SETTLE_CLAIMS(5, "报案理赔","报案人")
        SETTLE_CLAIMS(5, "报案理赔","报案人"),
        CONTRACT(6, "合同签署","合同签署"),
        SOLUTIONS(7, "方案签署","方案签署"),
        COMPANY_USER_APPLY(8, "集团申请","集团申请"),
        ;
        // 成员变量
        private int key;
@@ -1624,18 +1642,19 @@
    public  enum NoticeType {
        ZERO(0, "待审核","","","待审核","待处理","处理中"),
        ONE(1, "企业待签署","","","工种待审核","","已结案"),
        TWO(2, "待出单","待审核","待审核","","",""),
        THREE(3, "申请退回","申请退回","申请退回","","",""),
        FOUR(4, "已退回","已退回","已退回","","","已撤销"),
        FIVE(5, "申请驳回","申请驳回","申请驳回","","",""),
        ZERO(0, "待审核","","","待审核","待处理","处理中","待签署","待签署"),
        ONE(1, "企业待签署","","","工种待审核","","已结案","",""),
        TWO(2, "待出单","待审核","待审核","","","","",""),
        THREE(3, "申请退回","申请退回","申请退回","","","","",""),
        FOUR(4, "已退回","已退回","已退回","","","已撤销","",""),
        FIVE(5, "申请驳回","申请驳回","申请驳回","","","","",""),
        //续保通知
        SIX(6, "","","","","",""),
        SIX(6, "","","","","","","",""),
        //商户端 委托保 - 投保待审核 加减保 换厂 待审核
        SEVEN(7, "待审核","待审核","待审核","","",""),
        EIGHT(8, "","","","","",""),
        NINE(9, "","","","","",""),
        SEVEN(7, "待审核","待审核","待审核","","","","",""),
        //待复审
        EIGHT(8, "待审核","","","","","","",""),
        NINE(9, "","","","","","","",""),
        ;
        // 成员变量
@@ -1646,11 +1665,13 @@
        private String dispatchUnitDetail;
        private String taxesDetail;
        private String settleClaimsDetail;
        private String contract;
        private String solutions;
        // 构造方法
        NoticeType(int status, String insuranceApplyDetail,String applyChangeDetail
                , String changeFactoryDetail,String dispatchUnitDetail
                , String taxesDetail,String settleClaimsDetail) {
                , String taxesDetail,String settleClaimsDetail,String contract,String solutions) {
            this.status = status;
            this.insuranceApplyDetail = insuranceApplyDetail;
            this.applyChangeDetail = applyChangeDetail;
@@ -1658,6 +1679,8 @@
            this.dispatchUnitDetail = dispatchUnitDetail;
            this.taxesDetail = taxesDetail;
            this.settleClaimsDetail = settleClaimsDetail;
            this.contract = contract;
            this.solutions = solutions;
        }
        // 普通方法
@@ -1676,6 +1699,10 @@
                        return c.getTaxesDetail();
                    }else if(type == NoticeObjectType.SETTLE_CLAIMS.getKey()){
                        return c.getSettleClaimsDetail();
                    }else if(type == NoticeObjectType.CONTRACT.getKey()){
                        return c.getContract();
                    }else if(type == NoticeObjectType.SOLUTIONS.getKey()){
                        return c.getContract();
                    }
                }
            }
@@ -1739,6 +1766,13 @@
            this.settleClaimsDetail = settleClaimsDetail;
        }
        public String getContract() {
            return contract;
        }
        public void setContract(String info) {
            this.contract = contract;
        }
    }
@@ -1813,6 +1847,52 @@
    }
    public enum CONTRACT_STATUS{
        WAIT(0, "待签署"),
        OUT_SIGN(1, "我方已签署"),
        COMPANY_SIGN(2, "企业/商户已签署"),
        FINISH(3, "已完成"),
        CANCEL(4, "已取消"),
        CLOSE(5, "已关闭"),
        ;
        // 成员变量
        private String name;
        private int key;
        // 构造方法
        CONTRACT_STATUS(int key, String name) {
            this.name = name;
            this.key = key;
        }
        // 普通方法
        public static String getName(int index) {
            for (CONTRACT_STATUS c : CONTRACT_STATUS.values()) {
                if (c.getKey() == index) {
                    return c.name;
                }
            }
            return null;
        }
        // get set 方法
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public int getKey() {
            return key;
        }
        public void setKey(int key) {
            this.key = key;
        }
    }
    public  enum SettleClaimsStatus {
@@ -2306,18 +2386,18 @@
        }else{
            if(solutions.getInsureCycleUnit().equals(Constants.InsureCycleUnit.DAY.getValue())){
                //天为批改单位
                return fee.multiply(new BigDecimal(days)).divide(new BigDecimal(countDays),2, RoundingMode.HALF_UP);
                return fee.multiply(new BigDecimal(days)).divide(new BigDecimal(countDays),6, 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);
                return fee.multiply(cycle).divide(new BigDecimal(timeUnit.getCoefficient()),6, 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);
                return fee.multiply(cycle).multiply(new BigDecimal(2)).divide(new BigDecimal(timeUnit.getCoefficient()),6, RoundingMode.HALF_UP);
            }else if(solutions.getInsureCycleUnit().equals(Constants.InsureCycleUnit.QUARTER.getValue())) {
                //季度为批改单位
@@ -2326,7 +2406,7 @@
                //转换为 总季度
                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);
                return fee.multiply(cycle).multiply(new BigDecimal(6)).divide(new BigDecimal(timeUnit.getCoefficient()),6, RoundingMode.HALF_UP);
            }else if(solutions.getInsureCycleUnit().equals(Constants.InsureCycleUnit.HALF_YEAR.getValue())) {
                //半年为批改单位
                //查询产生费用总月份
@@ -2334,7 +2414,7 @@
                //转换为 半年
                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);
                return fee.multiply(cycle).multiply(new BigDecimal(12)).divide(new BigDecimal(timeUnit.getCoefficient()),6, RoundingMode.HALF_UP);
            }else {
                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"方案配置错误");
            }
@@ -2359,18 +2439,18 @@
        }else{
            if(solutions.getInsureCycleUnit().equals(Constants.InsureCycleUnit.DAY.getValue())){
                //天为批改单位
                return fee.multiply(new BigDecimal(days)).divide(new BigDecimal(countDays),2, RoundingMode.HALF_UP);
                return fee.multiply(new BigDecimal(days)).divide(new BigDecimal(countDays),6, 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);
                return fee.multiply(cycle).divide(new BigDecimal(timeUnit.getCoefficient()),6, 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);
                return fee.multiply(cycle).multiply(new BigDecimal(2)).divide(new BigDecimal(timeUnit.getCoefficient()),6, RoundingMode.HALF_UP);
            }else if(solutions.getInsureCycleUnit().equals(Constants.InsureCycleUnit.QUARTER.getValue())) {
                //季度为批改单位
@@ -2379,7 +2459,7 @@
                //转换为 总季度
                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);
                return fee.multiply(cycle).multiply(new BigDecimal(6)).divide(new BigDecimal(timeUnit.getCoefficient()),6, RoundingMode.HALF_UP);
            }else if(solutions.getInsureCycleUnit().equals(Constants.InsureCycleUnit.HALF_YEAR.getValue())) {
                //半年为批改单位
                //查询产生费用总月份
@@ -2387,7 +2467,7 @@
                //转换为 半年
                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);
                return fee.multiply(cycle).multiply(new BigDecimal(12)).divide(new BigDecimal(timeUnit.getCoefficient()),6, RoundingMode.HALF_UP);
            }else {
                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"方案配置错误");
            }
@@ -2415,18 +2495,18 @@
        }else{
            if(solutions.getInsureCycleUnit().equals(Constants.InsureCycleUnit.DAY.getValue())){
                //天为批改单位
                return fee.multiply(new BigDecimal(days)).divide(new BigDecimal(countDays),2, RoundingMode.HALF_UP);
                return fee.multiply(new BigDecimal(days)).divide(new BigDecimal(countDays),6, 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);
                return fee.multiply(cycle).divide(new BigDecimal(timeUnit.getCoefficient()),6, 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);
                return fee.multiply(cycle).multiply(new BigDecimal(2)).divide(new BigDecimal(timeUnit.getCoefficient()),6, RoundingMode.HALF_UP);
            }else if(solutions.getInsureCycleUnit().equals(Constants.InsureCycleUnit.QUARTER.getValue())) {
                //季度为批改单位
@@ -2435,7 +2515,7 @@
                //转换为 总季度
                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);
                return fee.multiply(cycle).multiply(new BigDecimal(6)).divide(new BigDecimal(timeUnit.getCoefficient()),6, RoundingMode.HALF_UP);
            }else if(solutions.getInsureCycleUnit().equals(Constants.InsureCycleUnit.HALF_YEAR.getValue())) {
                //半年为批改单位
                //查询产生费用总月份
@@ -2443,7 +2523,7 @@
                //转换为 半年
                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);
                return fee.multiply(cycle).multiply(new BigDecimal(12)).divide(new BigDecimal(timeUnit.getCoefficient()),6, RoundingMode.HALF_UP);
            }else {
                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"方案配置错误");
            }
@@ -2459,27 +2539,38 @@
        }else{
            if(solutions.getInsureCycleUnit().equals(Constants.InsureCycleUnit.DAY.getValue())){
                //天为批改单位
                return fee.divide(new BigDecimal(countDays),2, RoundingMode.HALF_UP);
                return fee.divide(new BigDecimal(countDays),6, RoundingMode.HALF_UP);
            }else if(solutions.getInsureCycleUnit().equals(Constants.InsureCycleUnit.HALF_MONTH.getValue())) {
                //根据投保周期 定义的 每个周期 = X个 半月周期 进行计算
                // 总金额 / 投保周期定义的 半月周期数
                return fee.divide(new BigDecimal(timeUnit.getCoefficient()),2, RoundingMode.HALF_UP);
                return fee.divide(new BigDecimal(timeUnit.getCoefficient()),6, RoundingMode.HALF_UP);
            }else if(solutions.getInsureCycleUnit().equals(Constants.InsureCycleUnit.MONTH.getValue())) {
                // 总金额 / 投保周期定义的 半月周期数 * 2
                return fee.multiply(new BigDecimal(2)).divide(new BigDecimal(timeUnit.getCoefficient()),2, RoundingMode.HALF_UP);
                return fee.multiply(new BigDecimal(2)).divide(new BigDecimal(timeUnit.getCoefficient()),6, RoundingMode.HALF_UP);
            }else if(solutions.getInsureCycleUnit().equals(Constants.InsureCycleUnit.QUARTER.getValue())) {
                //季度为批改单位
                // 总金额  / 投保周期定义的 半月周期数 * 6
                return fee.multiply(new BigDecimal(6)).divide(new BigDecimal(timeUnit.getCoefficient()),2, RoundingMode.HALF_UP);
                return fee.multiply(new BigDecimal(6)).divide(new BigDecimal(timeUnit.getCoefficient()),6, RoundingMode.HALF_UP);
            }else if(solutions.getInsureCycleUnit().equals(Constants.InsureCycleUnit.HALF_YEAR.getValue())) {
                //半年为批改单位
                // 总金额 * 产生费用的周期 / 投保周期定义的 半月周期数 * 6
                return fee.multiply(new BigDecimal(12)).divide(new BigDecimal(timeUnit.getCoefficient()),2, RoundingMode.HALF_UP);
                return fee.multiply(new BigDecimal(12)).divide(new BigDecimal(timeUnit.getCoefficient()),6, RoundingMode.HALF_UP);
            }else {
                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"方案配置错误");
            }
        }
    }
    public static BigDecimal getTwoPoint(BigDecimal bigDecimal){
        if(Objects.isNull(bigDecimal)){
            return BigDecimal.ZERO;
        }
        if(BigDecimal.ZERO.compareTo(bigDecimal) == 0){
            return BigDecimal.ZERO;
        }
        return bigDecimal.setScale(2,BigDecimal.ROUND_DOWN);
    }
}