jiangping
2024-03-05 2e1ac74716f62ca5712d0187cb7d7d25ee13efe5
server/service/src/main/java/com/doumee/core/utils/Constants.java
@@ -3,6 +3,7 @@
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.exception.BusinessException;
import com.doumee.dao.business.model.Solutions;
import com.doumee.dao.business.vo.CountCyclePriceVO;
import io.swagger.models.auth.In;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.compress.archivers.zip.ZipArchiveEntry;
@@ -79,6 +80,7 @@
    public static final String TAXES_FILE = "TAXES_FILE";
    public static final String APPLY_FILE ="APPLY_FILE" ;
    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";
    /**
@@ -160,17 +162,42 @@
        return age;
    }
    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){
        Pattern pattern = Pattern.compile("\\d{17}[\\d|x]"); // 定义身份证号码格式的正则表达式
        Matcher matcher = pattern.matcher(idCard);
        Integer sex = 1;
        Integer sex = 0;
        if (matcher.matches()) {
            int genderCode = Integer.parseInt(idCard.substring(16, 17)); // 从第17位开始提取性别编码(奇数为男性,偶数为女性)
            if ((genderCode % 2 == 1)) {
                sex = 1;
            if ((genderCode % 2 == 1) ) {
                sex = 0;
            } else {
                sex = 2;
                sex = 1;
            }
        } else {
           sex = -1;
@@ -528,7 +555,7 @@
    public static void main(String[] args) {
        System.out.println("hello&&devicenumber=22110002&&uuid=1e52008fb8ff\n".length());
        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市局用户
@@ -665,8 +692,9 @@
        BZZ(2, "保障中"),
        YGQ(3, "已过期"),
        YTH(4, "已退回"),
        THSQZ(5, "退回申请中"),
        THSQZ(5, "申请退回"),
        YGB(6, "已关闭"),
        DQYQZ(7, "待签署"),
        ;
        // 成员变量
        private String name;
@@ -709,43 +737,48 @@
    public  enum ApplyLogType {
        UPLOAD(0, "提交投保","提交意见:${param}"),
        PLATFORM_RETURN(1, "退回投保","提交意见:${param}"),
        WAIT_SIGNATURE(2, "上传投保单","提交意见:${param}"),
        SIGNATURE(3, "企业签章",""),
        FAIL_RETURN(4, "保单出具失败退回","提交意见:${param}"),
        UPLOAD_INSURANCE(5, "保单完成","保险生效起期:${param1}变更为${param2}"),
        COMPANY_APPLY_RETURN(6, "申请退回","提交意见:${param}"),
        COMPANY_APPLY_CLOSE(7, "关闭申请",""),
        PLATFORM_AGREE_BACK(8, "同意退回申请",""),
        PLATFORM_UN_AGREE_BACK(9, "驳回退回申请","提交意见:${param}"),
        COMPANY_EDIT(10, "保单修改","提交意见:${param1}\n${param2}"),
        PLATFORM_CHECK_PASS(11, "投保审核通过",""),
        CA_PLATFORM_CHECK_PASS_NO(12, "退回投保","提交意见:${param}"),
        CA_PLATFORM_AGREE_BACK_APPLY(13, "同意退回申请","提交意见:${param}"),
        CA_PLATFORM_APPROVE(14, "批单完成","保险生效起期:${param1}变更为${param2}"),
        CA_PLATFORM_CHECK_SIGNATURE(15, "企业签章",""),
        CA_COMPANY_EDIT(16, "批单修改","提交意见:${param1}\n${param2}"),
        CA_COMPANY_COMMIT(17, "提交投保","提交意见:${param}"),
        CA_COMPANY_BACK_APPLY(18, "申请退回","提交意见:${param}"),
        CA_COMPANY_CLOSE(19, "关闭订单",""),
        CA_PALTFORM_REFUSE_APPLY(20, "驳回退回申请",""),
        CA_PALTFORM_EDIT_PIDAN(21, "修改批单","修改原因:${param}"),
        PALTFORM_EDIT_BD(22, "修改保单","修改原因:${param}"),
        CA_JIAJIAN_APPLY_SIGN(23, "加减保申请企业签章",""),
        UPLOAD(0, "提交投保","提交意见:${param}",0),
        PLATFORM_RETURN(1, "退回投保","提交意见:${param}",0),
        WAIT_SIGNATURE(2, "上传投保单","提交意见:${param}",0),
        SIGNATURE(3, "企业签章","",0),
        FAIL_RETURN(4, "保单出具失败退回","提交意见:${param}",0),
        UPLOAD_INSURANCE(5, "保单完成","保险生效起期:${param1}变更为${param2}",0),
        COMPANY_APPLY_RETURN(6, "申请退回","提交意见:${param}",0),
        COMPANY_APPLY_CLOSE(7, "关闭申请","",0),
        PLATFORM_AGREE_BACK(8, "同意退回申请","",0),
        PLATFORM_UN_AGREE_BACK(9, "驳回退回申请","提交意见:${param}",0),
        COMPANY_EDIT(10, "保单修改","提交意见:${param1}\n${param2}",0),
        PLATFORM_CHECK_PASS(11, "投保审核通过","提交意见:${param}",0),
        UPLOAD_AGAIN(26, "再次投保","",0),
        PALTFORM_EDIT_BD(22, "修改保单","修改原因:${param}",0),
        CA_CHANGUNIT_APPLY_SIGN(24, "换成申请企业签章",""),
        CA_PLATFORM_CHECK_PASS_NO(12, "退回投保","提交意见:${param}",1),
        CA_PLATFORM_AGREE_BACK_APPLY(13, "同意退回申请","提交意见:${param}",1),
        CA_PLATFORM_APPROVE(14, "批单完成","保险生效起期:${param1}变更为${param2}",1),
        CA_PLATFORM_CHECK_SIGNATURE(15, "企业签章","",1),
        CA_COMPANY_EDIT(16, "批单修改","提交意见:${param1}\n${param2}",1),
        CA_COMPANY_COMMIT(17, "提交投保","",1),
        CA_COMPANY_BACK_APPLY(18, "申请退回","提交意见:${param}",1),
        CA_COMPANY_CLOSE(19, "关闭订单","",1),
        CA_PALTFORM_REFUSE_APPLY(20, "驳回退回申请","",1),
        CA_PALTFORM_EDIT_PIDAN(21, "修改批单","修改原因:${param}",1),
        CA_JIAJIAN_APPLY_SIGN(23, "加减保申请企业签章","",1),
        CA_CHANGUNIT_APPLY_SIGN(24, "换厂申请企业签章","",1),
        CA_UPLOAD_AGAIN(25, "再次投保","",1),
        ;
        // 成员变量
        private String name;
        private String info;
        private int key;
        private int type;
        // 构造方法
        ApplyLogType(int key, String name,String info) {
        ApplyLogType(int key, String name,String info,int type) {
            this.name = name;
            this.info = info;
            this.key = key;
            this.type = type;
        }
        // 普通方法
@@ -765,6 +798,16 @@
            }
            return null;
        }
        public static List<Integer> getTypeList(int type) {
            List<Integer> list = new ArrayList<>();
            for (ApplyLogType c : ApplyLogType.values()) {
                if (c.getType() == type) {
                    list.add(c.getKey());
                }
            }
            return list;
        }
        // get set 方法
        public String getName() {
@@ -790,20 +833,30 @@
        public void setInfo(String info) {
            this.info = info;
        }
        public int getType() {
            return type;
        }
        public void setType(int type) {
            this.type = type;
        }
    }
    public  enum InsuranceApplyStatus {
        UPLOAD(0, "提交投保","",0),
        PLATFORM_RETURN(1, "审核不通过","提交意见:${param}",4),
        WAIT_SIGNATURE(2, "已上传代签申请表待企业签章","",1),
        WAIT_SIGNATURE(2, "已上传代签申请表待企业签章","",7),
        SIGNATURE(3, "已签章待上传保险单","",1),
        FAIL_RETURN(4, "保单出具失败退回","",0),
        FAIL_RETURN(4, "保单出具失败退回","",4),
        UPLOAD_INSURANCE(5, "保单完成","保险生效起期:${param}变更为${param1}",2),
        COMPANY_BACK_APPLY_UPLOAD(6, "企业申请退回(提交投保)","提交意见:${param}",5),
        COMPANY_BACK_APPLY_WAIT_SIGNATURE(7, "企业申请退回(待签章)","提交意见:${param}",5),
        COMPANY_BACK_APPLY_SIGNATURE(8, "企业申请退回(已签章)","提交意见:${param}",5),
        CLOSE(9, "订单关闭","",6),
        PLATFORM_CHECK_PASS(10,"平台投保审核通过","提交意见:${param}",1),
        PLATFORM_CHECK_PASS(10,"平台投保审核通过","提交意见:${param}",0),
        COMPANY_BACK_APPLY_PASS(11, "企业申请退回(平台投保审核通过)","提交意见:${param}",5),
        ;
        // 成员变量
        private String name;
@@ -891,6 +944,182 @@
        }
    }
    public  enum NoticeObjectType {
        INSURANCE_APPLY(0, "投保申请","保险方案"),
        APPLY_CHANGE(1, "加减保申请","保险方案"),
        CHANGE_FACTORY(2, "员工换厂申请","保险方案"),
        DISPATCH_UNIT(3, "派遣单位申请","派遣单位"),
        TAXES(4, "开票申请","开票金额"),
        SETTLE_CLAIMS(5, "报案理赔","报案人")
        ;
        // 成员变量
        private int key;
        private String name;
        private String info;
        // 构造方法
        NoticeObjectType(int key, String name,String info) {
            this.name = name;
            this.key = key;
            this.info = info;
        }
        // 普通方法
        public static String getName(int index) {
            for (NoticeObjectType c : NoticeObjectType.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 String getInfo() {
            return info;
        }
        public void setInfo(String info) {
            this.info = info;
        }
    }
    public  enum NoticeType {
        ZERO(0, "待审批","","","待审核","待处理","处理中"),
        ONE(1, "企业待签署","","","工种待审核","","处理中"),
        TWO(2, "待出单","待审批","待审批","","",""),
        THREE(3, "申请退回","申请退回","申请退回","","",""),
        FOUR(4, "已退回","已退回","已退回","","",""),
        FIVE(5, "申请驳回","申请驳回","申请驳回","","",""),
        SIX(6, "","","","","","")
        ;
        // 成员变量
        private int status;
        private String insuranceApplyDetail;
        private String applyChangeDetail;
        private String changeFactoryDetail;
        private String dispatchUnitDetail;
        private String taxesDetail;
        private String settleClaimsDetail;
        // 构造方法
        NoticeType(int status, String insuranceApplyDetail,String applyChangeDetail
                , String changeFactoryDetail,String dispatchUnitDetail
                , String taxesDetail,String settleClaimsDetail) {
            this.status = status;
            this.insuranceApplyDetail = insuranceApplyDetail;
            this.applyChangeDetail = applyChangeDetail;
            this.changeFactoryDetail = changeFactoryDetail;
            this.dispatchUnitDetail = dispatchUnitDetail;
            this.taxesDetail = taxesDetail;
            this.settleClaimsDetail = settleClaimsDetail;
        }
        // 普通方法
        public static String getDetail(int status,int type) {
            for (NoticeType c : NoticeType.values()) {
                if (c.getStatus() == status) {
                    if(type==NoticeObjectType.INSURANCE_APPLY.getKey() ){
                        return c.getInsuranceApplyDetail();
                    }else if(type == NoticeObjectType.APPLY_CHANGE.getKey()){
                        return c.getApplyChangeDetail();
                    }else if(type == NoticeObjectType.CHANGE_FACTORY.getKey()){
                        return c.getChangeFactoryDetail();
                    }else if(type == NoticeObjectType.DISPATCH_UNIT.getKey()){
                        return c.getDispatchUnitDetail();
                    }else if(type == NoticeObjectType.TAXES.getKey()){
                        return c.getTaxesDetail();
                    }else if(type == NoticeObjectType.SETTLE_CLAIMS.getKey()){
                        return c.getSettleClaimsDetail();
                    }
                }
            }
            return null;
        }
        // get set 方法
        public int getStatus() {
            return status;
        }
        public void setStatus(int status) {
            this.status = status;
        }
        public String getInsuranceApplyDetail() {
            return insuranceApplyDetail;
        }
        public void setInsuranceApplyDetail(String name) {
            this.insuranceApplyDetail = insuranceApplyDetail;
        }
        public String getApplyChangeDetail() {
            return applyChangeDetail;
        }
        public void setApplyChangeDetail(String info) {
            this.applyChangeDetail = applyChangeDetail;
        }
        public String getChangeFactoryDetail() {
            return changeFactoryDetail;
        }
        public void setChangeFactoryDetail(String info) {
            this.changeFactoryDetail = changeFactoryDetail;
        }
        public String getDispatchUnitDetail() {
            return dispatchUnitDetail;
        }
        public void setDispatchUnitDetail(String info) {
            this.dispatchUnitDetail = dispatchUnitDetail;
        }
        public String getTaxesDetail() {
            return taxesDetail;
        }
        public void setTaxesDetail(String info) {
            this.taxesDetail = taxesDetail;
        }
        public String getSettleClaimsDetail() {
            return settleClaimsDetail;
        }
        public void setSettleClaimsDetail(String info) {
            this.settleClaimsDetail = settleClaimsDetail;
        }
    }
    public static BigDecimal countDetailFee(Solutions solutions,Date startDate, Date endDate){
        //查询保险实际周期
        Integer cycle = DateUtil.calculateBetween(endDate,startDate,solutions.getTimeUnit());
@@ -899,6 +1128,7 @@
        }
        return solutions.getPrice().multiply(new BigDecimal(cycle));
    }
    public static BigDecimal countDetailFee(int timeUnit ,BigDecimal price,Date startDate, Date endDate){
        //查询保险实际周期
        Integer cycle = DateUtil.calculateBetween(endDate,startDate,timeUnit);
@@ -912,7 +1142,7 @@
    public  enum ApplyChangeStatus {
        UPLOAD(0, "提交加减保/换厂申请"),
        SIGNATURE(1, "已签章"),
        APPROVE(2, "已上传审批"),
        APPROVE(2, "已上传审核"),
        RETURN_APPLY_UPLOAD(3, "发起退回申请(待审核)"),
        RETURN_APPLY_SIGNATURE(4, "发起退回申请(已签章)"),
        PLATFORM_AGREE(5, "平台同意(已退回)"),
@@ -1010,12 +1240,12 @@
        UPLOAD(0, "提交报案","提交意见:${param}"),
        PLATFORM_RETURN(1, "平台退回","提交意见:${param}"),
        PLATFORM_CONFIRM_INFORMATION(2, "平台确认资料",""),
        PLATFORM_FINISH(3, "平台完成受理","提交意见:${param}"),
        PLATFORM_FINISH(3, "结案提交","提交意见:${param}"),
        UPDATE_DATA(4, "修改信息","提交意见:${param}"),
        SUPPLEMENT(5, "补充说明","提交意见:${param}"),
        PLATFORM_LP_DEAL(6, "平台理赔处理","提交意见:${param}"),
        PLATFORM_REMARK(7, "平台备注标签",""),
        PLATFORM_ADDCODE(8, "平台添加报案号",""),
        PLATFORM_REMARK(7, "平台备注标签","${param}"),
        PLATFORM_ADDCODE(8, "平台添加报案号","备案号:${param}"),
        PLATFORM_UN_AGREE_BACK(9, "企业下载资料",""),
        PLATFORM_DOWNLOAD(10, "平台下载资料",""),
        PLATFORM_CHECK_PASS(11, "平台上传资料",""),
@@ -1080,27 +1310,37 @@
    public  enum ApplyChangeLogStatus {
        UPLOAD(0, "发起申请"),
        RETURN_APPLY(3, "发起退回申请"),
        PLATFORM_AGREE(4, "平台审批通过"),
        PLATFORM_UN_AGREE(0, "审批驳回"),
        CLOSE(5, "关闭"),
        UPLOAD(0, "发起申请",""),
        RETURN_APPLY(3, "发起退回申请","提交意见:${param}"),
        PLATFORM_AGREE(4, "平台审核通过" ,"提交意见:${param}"),
        PLATFORM_UN_AGREE(0, "审核驳回","提交意见:${param}"),
        CLOSE(5, "关闭",""),
        ;
        // 成员变量
        private String name;
        private String info;
        private int key;
        // 构造方法
        ApplyChangeLogStatus(int key, String name) {
        ApplyChangeLogStatus(int key, String name,String info) {
            this.name = name;
            this.info = info;
            this.key = key;
        }
        // 普通方法
        public static String getName(int index) {
            for (ApplyLogType c : ApplyLogType.values()) {
            for (ApplyChangeLogStatus c : ApplyChangeLogStatus.values()) {
                if (c.getKey() == index) {
                    return c.name;
                }
            }
            return null;
        }
        public static String getInfo(int index) {
            for (ApplyChangeLogStatus c : ApplyChangeLogStatus.values()) {
                if (c.getKey() == index) {
                    return c.info;
                }
            }
            return null;
@@ -1121,6 +1361,14 @@
        public void setKey(int key) {
            this.key = key;
        }
        public String getInfo() {
            return info;
        }
        public void setInfo(String info) {
            this.info = info;
        }
    }
@@ -1382,6 +1630,7 @@
                    }
                }
                zipOutputStream.closeArchiveEntry();
                file.delete();
            }
        }
    }