package com.doumee.core.utils; 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; import org.apache.commons.compress.archivers.zip.ZipArchiveOutputStream; import org.apache.commons.lang3.StringUtils; import javax.servlet.ServletOutputStream; import java.io.*; import java.math.BigDecimal; import java.net.URL; import java.net.URLDecoder; import java.time.LocalDate; import java.time.temporal.ChronoUnit; import java.util.*; import java.util.Date; import java.util.regex.Matcher; import java.util.regex.Pattern; public class Constants { public static final int ZERO = 0 ; public static final int ONE = 1 ; public static final int TWO = 2 ; public static final int THREE = 3 ; public static final int SEVEN = 7 ; public static final String ACCESS_ID="ACCESS_ID"; public static final String BUCKETNAME = "BUCKETNAME"; public static final String OSS = "OSS"; public static final String ACCESS_KEY = "ACCESS_KEY"; public static final String ENDPOINT = "ENDPOINT"; public static final String RESOURCE_PATH = "RESOURCE_PATH"; public static final String WEB_PARAM = "WEB_PARAM"; public static final String MAIN_COLOR = "MAIN_COLOR"; public static final String BG_IMG = "BG_IMG"; public static final String TOP_IMG = "TOP_IMG"; public static final String PK_IMG = "PK_IMG"; public static final String RANGE_SIZE = "RANGE_SIZE"; public static final String CATE_PARAM_OPEN = "_CATE_PARAM_OPEN"; public static final String OPEN_SYNC_SWITCH = "OPEN_SYNC_SWITCH"; public static final String SYSTEM ="SYSTEM"; 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}"; public static final String ROOT_PATH="ROOT_PATH";//本地文件上传地址配置 public static final String FILE_DIR="FILE_DIR";//本地文件访问地址配置 public static final String HOME_IMAGE="HOME_IMAGE";//H5 首页图 public static final String PROJECTS = "PROJECTS"; public static final String CATEGORY_IMG = "CATEGORY_IMG"; public static final String GOODS_IMG ="GOODS_IMG" ; public static final String GOODS_PRICE_RATE = "GOODS_PRICE_RATE"; public static final String COMPANY_MANAGE_ROLE = "COMPANY_MANAGE_ROLE"; public static final String DEFAULT_MANAGE_ROLE = "DEFAULT_MANAGE_ROLE"; public static final String DEFAULT_PASSWORD = "DEFAULT_PASSWORD"; public static final String BRAND_IMG = "BRAND_IMG"; public static final String PLATFORM = "PLATFORM"; public static final String ZHUBO_ROOM_URL = "ZHUBO_ROOM_URL"; public static final String SMS_IP ="SMS_IP" ; public static final String SMS_PORT ="SMS_PORT" ; public static final String SMS_APPKEY="SMS_APPKEY"; public static final String SMS_APPSECRET ="SMS_APPSERECT" ; public static final String SMS ="SMS" ; public static final String SIGN = "SIGN"; public static final String SIGN_URL = "SIGN_URL"; public static final String SIGN_APPKEY = "SIGN_APPKEY"; public static final String SIGN_APPSECRET = "SIGN_APPSECRET"; public static final String COMPANY_FILE ="COMPANY_FILE" ; 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 SETTLE_FILE ="SETTLE_FILE" ; public static final String DU_FILE ="DU_FILE" ; public static final String SIGN_DONE_NOTIFY_URL = "SIGN_DONE_NOTIFY_URL"; /** * 企业数据来源 0平台注册 1后台导入 */ public interface ORIGIN{ public static final int platformRegister = 0; public static final int backstageImport = 1; } public static String getRandom6Num( ) { Random random = new Random(); StringBuilder sb = new StringBuilder(); for (int i = 0; i < 6; i++) { int digit = random.nextInt(10); sb.append(digit); } return sb.toString(); } public static BigDecimal formatBigdecimal(BigDecimal d) { if (d == null) { d = new BigDecimal(0.0); } //保留两位小数且四舍五入 // d = d.setScale(2, BigDecimal.ROUND_HALF_UP); return d; } public static BigDecimal formatBigdecimal2Float(BigDecimal d) { if (d == null) { d = new BigDecimal(0.0); } //保留两位小数且四舍五入 d = d.setScale(2, BigDecimal.ROUND_HALF_UP); return d; } public static BigDecimal formatBigdecimal4Float(BigDecimal d) { if (d == null) { d = new BigDecimal(0.0); } //保留两位小数且四舍五入 d = d.setScale(4, BigDecimal.ROUND_HALF_UP); return d; } public static boolean equalsObject(Object a, Object b) { if (a == null && b == null) { return true; } if (a != null){ return a.equals(b); } return false; } public static boolean equalsInteger(Integer a, Integer b) { if (formatIntegerNum(a) == formatIntegerNum(b)) { return true; } return false; } public static int formatIntegerNum(Integer d) { if (d == null) { d = 0; } return d.intValue(); } public static long getAgeByIdCard(String idCard){ int birthYear = Integer.parseInt(idCard.substring(6, 10)); int birthMonth = Integer.parseInt(idCard.substring(10, 12)); int birthDay = Integer.parseInt(idCard.substring(12, 14)); LocalDate birthDate = LocalDate.of(birthYear, birthMonth, birthDay); LocalDate currentDate = LocalDate.now(); long age = ChronoUnit.YEARS.between(birthDate, currentDate); 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 = 0; if (matcher.matches()) { int genderCode = Integer.parseInt(idCard.substring(16, 17)); // 从第17位开始提取性别编码(奇数为男性,偶数为女性) if ((genderCode % 2 == 1) ) { sex = 0; } else { sex = 1; } } else { sex = -1; } return sex; } /** * 状态 0已保存、1待审核、2审核通过、3退回修改、4审核驳回、5待服务机构确认、6服务机构拒绝、7已分配服务机构、8诊断中 * (成功上传第一份服务资料)、9服务完成、10已分配评分专家、11已完成(专家上传评分) 12退回修改中 13 已完成退回修改 */ public enum DeclareStatus { EDITING(0, "已保存", "已保存"), CHECK_WAIT(1, "待审核", "待审核"), CHECK_PASS(2, "审核通过", "审核通过"), CHECK_EDIT(3, "退回修改", "退回修改"), CHECK_BACK(4, "审核驳回", "审核驳回"), WAIT_SO_COMFIRM(5, "待服务机构确认", "待服务机构确认"), SO_BACK(6, "服务机构拒绝", "服务机构拒绝"), SELECTED_SO(7, "已分配服务机构", "已分配服务机构"), SERVING(8, "诊断中", "诊断中"), SERVICE_DONE(9, "服务完成", "服务完成"), SELECT_EXPERT(10, "已分配评分专家", "已分配评分专家"), DONE(11, "已完成", "已完成"), BACK_SERVER_ING(12, "退回修改", "诊断服务退回修改"), BACK_SERVER_DONE(13, "退回修改完成", "诊断服务退回已修改"), ; // 成员变量 private String name; private int key; private String noteinfo;// 描述 // 构造方法 DeclareStatus(int key, String name, String noteinfo) { this.name = name; this.key = key; this.noteinfo = noteinfo; } // 普通方法 public static String getName(int index) { for (DeclareStatus c : DeclareStatus.values()) { if (c.getKey() == index) { return c.name; } } return null; } // 普通方法 public static String getNoteinfo(int index) { for (DeclareStatus c : DeclareStatus.values()) { if (c.getKey() == index) { return c.noteinfo; } } return "-"; } // 普通方法 public static String getInfo(int index) { for (DeclareStatus c : DeclareStatus.values()) { if (c.getKey() == index) { return c.noteinfo; } } 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 getNoteinfo() { return noteinfo; } } public enum DeclareCheckType{ EDITING(0, "已保存", "已保存"), CHECK_WAIT(1, "待审核", "待审核"), CHECK_PASS(2, "审核通过", "审核通过"), CHECK_EDIT(3, "退回修改", "退回修改"), CHECK_BACK(4, "审核驳回", "审核驳回"), WAIT_SO_COMFIRM(5, "待服务机构确认", "待服务机构确认"), SO_BACK(6, "服务机构拒绝", "服务机构拒绝"), SELECTED_SO(7, "已分配服务机构", "已分配服务机构"), SERVING(8, "诊断中", "诊断中"), SERVICE_DONE(9, "服务完成", "服务完成"), SELECT_EXPERT(10, "已分配评分专家", "已分配评分专家"), DONE(11, "已完成", "已完成"), ; // 成员变量 private String name; private int key; private String noteinfo;// 描述 // 构造方法 DeclareCheckType(int key, String name, String noteinfo) { this.name = name; this.key = key; this.noteinfo = noteinfo; } // 普通方法 public static String getName(int index) { for (ProjectRecord c : ProjectRecord.values()) { if (c.getKey() == index) { return c.name; } } return null; } // 普通方法 public static String getInfo(int index) { for (ProjectRecord c : ProjectRecord.values()) { if (c.getKey() == index) { return c.noteinfo; } } 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 getNoteinfo() { return noteinfo; } } public enum DeclareHistoryType{ EDITING(0,"保存","保存"), CHECK_WAIT_COUNTY(1,"待县区审核",""), CHECK_PASS_COUNTY(2,"县区审核通过",""), CHECK_EDIT_COUNTY(3,"县区退回修改",""), CHECK_BACK_COUNTY(4,"县区审核驳回",""), TWO_WAY_WAIT_SO_COMFIRM(5,"双选待服务机构确认",""), WO_WAY_WAIT_SO_BACK(6,"双选服务机构拒绝",""), SELECTED_SO(7,"已分配服务机构",""), SO_SERVICE(8,"服务机构诊断",""), SO_SERVICE_DONE(9,"服务机构服务完成",""), SELECT_EXPERT(10,"分配评分专家",""), EXPERT_SCORE(11,"专家完成评分","") ; private int key; private String name; private String noteInfo; DeclareHistoryType(int key, String name, String noteInfo) { this.key = key; this.name = name; this.noteInfo = noteInfo; } public int getKey() { return key; } public void setKey(int key) { this.key = key; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getNoteInfo() { return noteInfo; } public void setNoteInfo(String noteInfo) { this.noteInfo = noteInfo; } } public interface BasegoodsOrigin{ int userAdd = 0; int imported = 1; int basedata = 2; } /** * 关联对象类型 关联对象类型 0企业营业执照 1理赔报案事故视频或图片 2理赔员工关系证明材料 3理赔门诊资料 4理赔住院资料 5理赔伤残资料 6理赔赔付结案材料 7企业身份证号 8保单申请表PDF 9签署后保单申请表PDF 10企业签章 11最终报单 */ public enum MultiFile{ COM_BUSINESS_LICENSE(0, "企业营业执照", "企业营业执照"), LP_SGXC_FILE(1, "理赔报案事故视频或图片", "理赔报案事故视频或图片"), LP_YGGX_FILE(2, "理赔员工关系证明材料 ", "理赔员工关系证明材料 "), LP_MZCL_FILE(3, "理赔门诊资料 ", "理赔门诊资料"), LP_ZYCL_FILE(4, "理赔住院资料", "理赔住院资料"), LP_SCZL_FILE(5, "理赔伤残资料", "理赔伤残资料"), LP_JACL_FILE(6, "理赔赔付结案材料", "理赔赔付结案材料"), COM_IDCARD_IMG(7, "企业身份证号", "企业身份证号"), BD_APPLY_PDF(8, "保单申请表PDF ", "保单申请表PDF "), BD_SIGNED_PDF(9, "签署后保单申请表PDF", "签署后保单申请表PDF"), COM_SING_IMG(10, "企业印章", "企业印章"), BD_DONE_PDF(11, "最终报单", "最终报单"), CA_PD_PDF(12, "最终报单", "最终报单"), CA_APPLY_JIAJIAN_SIGN(13, "加减保申请签章文件", "加减保申请签章文件"), CA_APPLY_CHANGEUNIT_SIGN(14, "换厂申请签章文件", "换厂申请签章文件"), ; // 成员变量 private String name; private int key; private String noteinfo;// 描述 // 构造方法 MultiFile(int key, String name, String noteinfo) { this.name = name; this.key = key; this.noteinfo = noteinfo; } // 普通方法 public static String getName(int index) { for (ProjectRecord c : ProjectRecord.values()) { if (c.getKey() == index) { return c.name; } } return null; } // 普通方法 public static String getInfo(int index) { for (ProjectRecord c : ProjectRecord.values()) { if (c.getKey() == index) { return c.noteinfo; } } 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 getNoteinfo() { return noteinfo; } private volatile static Set multifileCompanyType; private volatile static Set multifileProjectType; public static Set multifileCompanyType(){ // 0企业营业执照 1工商变更登记 7企业资质 8企业中标通知书 11 变更企业营业执照 12 变更工商变更登记 if (CollectionUtils.isEmpty(multifileCompanyType)){ synchronized (MultiFile.class){ if (CollectionUtils.isEmpty(multifileCompanyType)){ multifileCompanyType = new HashSet<>(); multifileCompanyType.add(0); multifileCompanyType.add(1); multifileCompanyType.add(8); multifileCompanyType.add(9); multifileCompanyType.add(11); multifileCompanyType.add(12); } } } return multifileCompanyType; } public static Set multifileProjectType(){ //2项目申报企业资料 3企业评分表 4诊断报告 5诊断服务资料 6专家评分报告 7服务机构上传服务资料 if (CollectionUtils.isEmpty(multifileProjectType)){ synchronized (MultiFile.class){ if(CollectionUtils.isEmpty(multifileProjectType)){ multifileProjectType = new HashSet<>(); multifileProjectType.add(2); multifileProjectType.add(3); multifileProjectType.add(4); multifileProjectType.add(5); multifileProjectType.add(6); multifileProjectType.add(7); multifileProjectType.add(10); multifileProjectType.add(13); } } } return multifileProjectType; } public static Integer multifileType(String name){ boolean pic = Arrays.asList(".jpg", "png", "jpeg").stream().anyMatch(s -> name.contains(s)); if (pic){ return Constants.ZERO; } boolean ivc = Arrays.asList(".avi", "mp4").stream().anyMatch(s -> name.contains(s)); if (ivc){ return Constants.ONE; } return Constants.TWO; } } 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\"}"); } /** * 用户类型 0系统用户 1企业用户 2服务机构管理员 3服务机构子账号 4综合服务单位管理员 5综合服务单位子账号 6专家 7县区用户 8市局用户 */ public enum UserType { SYSTEM(0, "系统用户", "管理员",Arrays.asList(0,1,2,3,4,5,6,7,8,9,10,11)), COMPANY(1, "企业用户", "企业",Arrays.asList(-1)), ZHUBO(2, "主播", "主播",Arrays.asList(-1)), ; // 成员变量 private String name; private int key; private List historyStatus; private String noteinfo;// 描述 // 构造方法 UserType(int key, String name, String noteinfo,List historyStatus) { this.name = name; this.key = key; this.noteinfo = noteinfo; this.historyStatus=historyStatus; } // 普通方法 public static String getName(int index) { for (UserType c : UserType.values()) { if (c.getKey() == index) { return c.name; } } return null; } // 普通方法 public static String getInfo(int index) { for (UserType c : UserType.values()) { if (c.getKey() == index) { return c.noteinfo; } } return null; } // 普通方法 public static List getHistoryStatus(int index) { for (UserType c : UserType.values()) { if (c.getKey() == index) { return c.historyStatus; } } return null; } // get set 方法 public String getName() { return name; } public void setName(String name) { this.name = name; } public int getKey() { return key; } public List getHistoryStatus() { return historyStatus; } public void setKey(int key) { this.key = key; } public String getNoteinfo() { return noteinfo; } } public enum DispatchUnitLogType { UPLOAD(0, "提交申请"), AUDIT_PASS(1, "派遣单位通过"), AUDIT_UN_PASS(2, "派遣单位不通过"), EDIT_UNIT(3, "修改派遣单位信息"), ADD_WORK_TYPE(4, "提交添加工种"), WORK_TYPE_AUDIT_PASS(5, "添加工种审批通过"), WORK_TYPE_AUDIT_UN_PASS(6, "添加工种审批不通过"), ; // 成员变量 private String name; private int key; // 构造方法 DispatchUnitLogType(int key, String name) { this.name = name; this.key = key; } // 普通方法 public static String getName(int index) { for (DispatchUnitLogType c : DispatchUnitLogType.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 ApplyCollectStatus { DSP(0, "待审批"), DCD(1, "待出单"), BZZ(2, "保障中"), YGQ(3, "已过期"), YTH(4, "已退回"), THSQZ(5, "申请退回"), YGB(6, "已关闭"), DQYQZ(7, "待签署"), ; // 成员变量 private String name; private int key; // 构造方法 ApplyCollectStatus(int key, String name) { this.name = name; this.key = key; } // 普通方法 public static String getName(int index) { for (ApplyCollectStatus c : ApplyCollectStatus.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 ApplyLogType { 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_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,int type) { this.name = name; this.info = info; this.key = key; this.type = type; } // 普通方法 public static String getName(int index) { for (ApplyLogType c : ApplyLogType.values()) { if (c.getKey() == index) { return c.name; } } return null; } public static String getInfo(int index) { for (ApplyLogType c : ApplyLogType.values()) { if (c.getKey() == index) { return c.info; } } return null; } public static List getTypeList(int type) { List list = new ArrayList<>(); for (ApplyLogType c : ApplyLogType.values()) { if (c.getType() == type) { list.add(c.getKey()); } } return list; } // 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 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, "已上传代签申请表待企业签章","",7), SIGNATURE(3, "已签章待上传保险单","",1), 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}",0), COMPANY_BACK_APPLY_PASS(11, "企业申请退回(平台投保审核通过)","提交意见:${param}",5), ; // 成员变量 private String name; private String info; private int key; private int collectStatus; // 构造方法 InsuranceApplyStatus(int key, String name,String info,int collectStatus) { this.name = name; this.key = key; this.info = info; this.collectStatus = collectStatus; } // 普通方法 public static String getName(int index) { for (InsuranceApplyStatus c : InsuranceApplyStatus.values()) { if (c.getKey() == index) { return c.name; } } return null; } public static List getKesByStatus(Integer collectStatus) { List list = new ArrayList<>(); if(collectStatus!=null){ for (InsuranceApplyStatus c : InsuranceApplyStatus.values()) { if (Constants.equalsInteger(c.getCollectStatus() ,collectStatus)) { list.add(c.getKey()); } } } return list; } public static Integer getCollectStatus(Integer index) { for (InsuranceApplyStatus c : InsuranceApplyStatus.values()) { if (Constants.equalsInteger(c.getKey() , index)) { return c.collectStatus; } } return null; } public static String getInfo(int index) { for (InsuranceApplyStatus c : InsuranceApplyStatus.values()) { if (c.getKey() == index) { return c.info; } } 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 int getCollectStatus() { return collectStatus; } public void setCollectStatus(int collectStatus) { this.collectStatus = collectStatus; } } 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()); if(cycle==-1){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"日期信息错误!"); } 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); if(cycle==-1){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"日期信息错误!"); } return Constants.formatBigdecimal(price).multiply(new BigDecimal(cycle)); } public enum ApplyChangeStatus { UPLOAD(0, "提交加减保/换厂申请"), SIGNATURE(1, "已签章"), APPROVE(2, "已上传审核"), RETURN_APPLY_UPLOAD(3, "发起退回申请(待审核)"), RETURN_APPLY_SIGNATURE(4, "发起退回申请(已签章)"), PLATFORM_AGREE(5, "平台同意(已退回)"), CLOSE(6, "已关闭"), PALTFORM_CHECK_PASS(7, "审核通过"), PALTFORM_CHECK_PASS_NO(8, "审核不通过"), ; // 成员变量 private String name; private int key; // 构造方法 ApplyChangeStatus(int key, String name) { this.name = name; this.key = key; } // 普通方法 public static String getName(int index) { for (InsuranceApplyStatus c : InsuranceApplyStatus.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 { WAIT_ACCEPTANCE(0, "待受理"), RETURN_ACCEPTANCE(1, "退回受理"), DEAL_ING(2, "受理中"), CONFIRM_INFORMATION(3, "确认资料"), FINISH_ACCEPTANCE(4, "完成受理"), ; // 成员变量 private String name; private int key; // 构造方法 SettleClaimsStatus(int key, String name) { this.name = name; this.key = key; } // 普通方法 public static String getName(int index) { for (SettleClaimsStatus c : SettleClaimsStatus.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 SettleClaimsLogType { UPLOAD(0, "提交报案","提交意见:${param}"), PLATFORM_RETURN(1, "平台退回","提交意见:${param}"), PLATFORM_CONFIRM_INFORMATION(2, "平台确认资料",""), PLATFORM_FINISH(3, "结案提交","提交意见:${param}"), UPDATE_DATA(4, "修改信息","提交意见:${param}"), SUPPLEMENT(5, "补充说明","提交意见:${param}"), PLATFORM_LP_DEAL(6, "平台理赔处理","提交意见:${param}"), PLATFORM_REMARK(7, "平台备注标签","${param}"), PLATFORM_ADDCODE(8, "平台添加报案号","备案号:${param}"), PLATFORM_UN_AGREE_BACK(9, "企业下载资料",""), PLATFORM_DOWNLOAD(10, "平台下载资料",""), PLATFORM_CHECK_PASS(11, "平台上传资料",""), ; // 成员变量 private String name; private String info; private int key; // 构造方法 SettleClaimsLogType(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()) { if (c.getKey() == index) { return c.name; } } return null; } public static String getInfo(int index) { for (ApplyLogType c : ApplyLogType.values()) { if (c.getKey() == index) { return c.info; } } 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 ApplyChangeLogStatus { 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,String info) { this.name = name; this.info = info; this.key = key; } // 普通方法 public static String getName(int index) { 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; } // 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 ProjectRecord { COM_EDITING(0, "企业保存数据", "由 ${param2} ${param3}保存成功,当前进度为 【${param4}】"), COM_SUBMIT(1, "企业提交数据", "由 ${param2} ${param3}提交成功,当前进度为 【${param4}】"), XQ_CHECK_PASS(2, "县区审核通过", "由 ${param2} ${param3}审核通过,审核备注为:${param5};当前进度为 【${param4}】"), XQ_CHECK_EDIT(3, "县区审核退回修改", "由 ${param2} ${param3}审核退回修改,审核备注为:${param5};当前进度为 【${param4}】"), XQ_CHECK_BACK(4, "县区审核驳回", "由 ${param2} ${param3}审核驳回,审核备注为:${param5};当前进度为 审核驳回,流程结束。"), COM_SELECT_SO(5, "企业选择服务机构", "由 ${param2} ${param3}选择 ${param5},当前进度为 【${param4}】"), SO_PASS(6, "服务机构确认服务", "由 ${param2} ${param3}确认服务,当前进度为 【${param4}】"), SO_BACK(7, "服务机构拒绝服务", "由 ${param2} ${param3}拒绝服务,当前进度为 【${param4}】"), SJ_SELECT_SO(8, "市局分配服务机构", "由 ${param2} ${param3}完成分配服务机构,当前进度为 【${param4}】"), SD_SELECT_SO(9, "综合服务单位分配服务机构", "由 ${param2} ${param3}完成分配服务机构,当前进度为 【${param4}】"), SJ_RESELECT_SO(10, "市局重新分配服务机构", "由 ${param2} ${param3}完成重新分配服务机构,当前进度为 【${param4}】"), SD_RESELECT_SO(11, "综合服务单位重新分配服务机构", "由 ${param2} ${param3}完成重新分配服务机构,当前进度为 【${param4}】"), SO_SERVICE_UPLOAD(12, "服务机构上传服务数据", "由 ${param2} ${param3}完成上传服务数据,当前进度为 【${param4}】"), SO_DONE_SERVICE(13, "服务机构完成服务", "由 ${param2} ${param3}完成服务,当前进度为 【${param4}】"), SJ_SELECT_EXPERT(14, "市局分配评分专家", "由 ${param2} ${param3}完成分配评分专家,当前进度为 【${param4}】"), SD_SELECT_EXPERT(15, "综合服务单位分配评分专家", "由 ${param2} ${param3}完成分配评分专家,当前进度为 【${param4}】"), SJ_RESELECT_EXPERT(16, "市局重新分配评分专家", "由 ${param2} ${param3}完成重新分配评分专家,当前进度为 【${param4}】"), SD_RESELECT_EXPERT(17, "综合服务单位重新分配评分专家", "由 ${param2} ${param3}完成重新分配评分专家,当前进度为 【${param4}】"), EXPERT_SCORE(18, "专家上传评分", "由 ${param2} ${param3}完成评分,当前进度为 【${param4}】"), SD_SERVICE_UPLOAD(19, "综合服务单位上传诊断资料", "由 ${param2} ${param3}完成上传诊断资料,当前进度为 【${param4}】"), SD_BACK_DONE(20, "综合服务单位退回修改", "由 ${param2} ${param3}退回修改,当前进度为 【${param4}】"), SO_BACK_SUBMIT(21 , "服务机构修改完成服务", "由 ${param2} ${param3}完成服务,当前进度为 【${param4}】"), ; // 成员变量 private String name; private int key; private String noteinfo;// 描述 // 构造方法 ProjectRecord(int key, String name, String noteinfo) { this.name = name; this.key = key; this.noteinfo = noteinfo; } // 普通方法 public static String getName(int index) { for (ProjectRecord c : ProjectRecord.values()) { if (c.getKey() == index) { return c.name; } } return null; } // 普通方法 public static String getInfo(int index) { for (ProjectRecord c : ProjectRecord.values()) { if (c.getKey() == index) { return c.noteinfo; } } 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 getNoteinfo() { return noteinfo; } public void setNoteinfo(String noteinfo) { this.noteinfo = noteinfo; } public static String getContentWithData(ProjectRecord template, Map params){ String pattern = "\\$\\{(.+?)\\}"; Pattern p = Pattern.compile(pattern); Matcher m = p.matcher(template.noteinfo); StringBuffer sb = new StringBuffer(); while (m.find()){ String key = m.group(1); String value = params.get(key); m.appendReplacement(sb, value == null ? "" : value); } m.appendTail(sb); return sb.toString(); } } /** * 数据状态枚举 * */ public enum Status { /** 用户启用禁用枚举值*/ ENABLE(0,"正常"), DISABLE(1,"禁用"); private Integer value; private String des; Status(Integer value, String des) { this.value = value; this.des = des; } 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 enum goodsType { /** 用户启用禁用枚举值*/ CREATE(0,"自建"), PULL(1,"拉取"); private Integer value; private String des; goodsType(Integer value, String des) { this.value = value; this.des = des; } 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 enum CompanyType{ BUSINESS_COMPANYTYPE(0,"企业"), SERVICE_COMPANYTYPE(1,"服务机构"), ZF_SERVICE_COMPANY(2,"综合服务单位"); private Integer value; private String des; CompanyType(Integer value, String des) { this.value = value; this.des = des; } 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 static File getFileByNetFile(String url,String fileName) { //对本地文件命名 File file = null; try { URL urlfile; InputStream inStream = null; OutputStream os = null; try { String tempDir = System.getProperty("java.io.tmpdir")+fileName; file = new File(tempDir); //下载 urlfile = new URL(url); inStream = urlfile.openStream(); os = new FileOutputStream(file); int bytesRead = 0; byte[] buffer = new byte[8192]; while ((bytesRead = inStream.read(buffer, 0, 8192)) != -1) { os.write(buffer, 0, bytesRead); } } catch (Exception e) { e.printStackTrace(); } finally { try { if (null != os) { os.close(); } if (null != inStream) { inStream.close(); } } catch (Exception e) { e.printStackTrace(); } } }catch (Exception e){ } return file; } public static void packFilesToZip(List files, ServletOutputStream os) throws IOException { try (ZipArchiveOutputStream zipOutputStream = new ZipArchiveOutputStream(os)) { for (File file : files) { ZipArchiveEntry entry = new ZipArchiveEntry(file.getName()); zipOutputStream.putArchiveEntry(entry); try (FileInputStream fileInputStream = new FileInputStream(file)) { byte[] buffer = new byte[1024]; int length; while ((length = fileInputStream.read(buffer)) > 0) { zipOutputStream.write(buffer, 0, length); } } zipOutputStream.closeArchiveEntry(); file.delete(); } } } }