package com.doumee.core.utils; import com.doumee.dao.business.model.Areas; import org.apache.commons.collections4.CollectionUtils; import java.math.BigDecimal; import java.net.URLDecoder; import java.util.*; import java.util.regex.Matcher; import java.util.regex.Pattern; import java.util.stream.Collectors; public class Constants { public static final boolean IS_DEBUG = false;// true测试模式 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 SYSTEM ="SYSTEM"; public static final String COMPANY_ROLE ="COMPANY_ROLE"; public static final String SO_ADMIN_ROLE="SO_ADMIN_ROLE"; public static final String SD_ADMIN_ROLE="SD_ADMIN_ROLE"; public static final String AREA_ROLE="AREA_ROLE"; public static final String CITY_ROLE="CITY_ROLE"; public static final String EXPERT_ROLE="EXPERT_ROLE"; public static final String SO_CHILD_ROLE="SO_CHILD_ROLE"; public static final String SD_CHILD_ROLE="SD_CHILD_ROLE"; public static final String CITY_CHILD_ROLE="CITY_CHILD_ROLE"; public static final String PROJECT_FILE ="PROJECT_FILE" ; public static final String DEFAULT_PASSWORD = "DEFAULT_PASSWORD" ; public static final String COMPANY_FILE ="COMPANY_FILE" ; public static final String SYSTEM_USER_FILE ="SYSTEM_USER_FILE" ; public static final String CREDIT_CODE_REGEX = "[0-9A-HJ-NPQRTUWXY]{2}\\d{6}[0-9A-HJ-NPQRTUWXY]{10}"; public static final String COMPANY_USER_RULES = "COMPANY_USER_RULES"; public static final String LOGO_FILE ="LOGO_FILE" ; /** * 单点登录 */ public static final String GONGFU_CAS_CLIENT_ID = "GONGFU_CAS_CLIENT_ID"; public static final String GONGFU_CAS_DOMAIN = "GONGFU_CAS_DOMAIN"; public static final String GONGFU_CAS_CLIENT_KEY = "GONGFU_CAS_CLIENT_KEY"; public static final String GONGFU_CAS_INTFACE_URL = "GONGFU_CAS_INTFACE_URL"; /** * 企业数据来源 0平台注册 1后台导入 */ public interface ORIGIN{ public static final int platformRegister = 0; public static final int backstageImport = 1; } 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 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(); } /** * 状态 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 Integer 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; } } /** * 关联对象类型 0企业营业执照 1工商变更登记 2项目申报企业资料 3企业评分表 4诊断报告 5诊断服务资料 6专家评分报告 7服务机构上传服务资料 8企业资质 9企业中标通知书 10项目图片 */ public enum MultiFile{ BUSINESS_LICENSE(0, "企业营业执照", "企业营业执照"), BUSINESS_CHANGE(1, "工商变更登记", "工商变更登记"), BUSINESS_DECLARE(2, "项目申报企业资料", "项目申报企业资料"), BUSINESS_SCORE(3, "企业评分表", "企业评分表"), BUSINESS_DIAGNOSIS(4, "诊断报告", "诊断报告"), BUSINESS_DIA_SERVICE(5, "诊断服务资料", "诊断服务资料"), BUSINESS_EXPERT(6, "专家评分报告", "专家评分报告"), BUSINESS_UP_SERVICE(7, "服务机构上传服务资料", "服务机构上传服务资料"), BUSINESS_ZZ(8, "企业资质", "企业资质"), BUSINESS_NOTICE(9, "企业中标通知书", "企业中标通知书"), BUSINESS_PROURL(10, "项目图片", "项目图片"), COMPANY_CHANGE_LICENSE(11,"变更企业营业执照","变更企业营业执照"), COMPANY_CHANGE_CHANGE(12,"变更工商变更登记","变更工商变更登记"), BUSINESS_HC(13, "综合服务单位核查资料", "综合服务单位核查资料"), BUSINESS_UP_EXTRA(14, "服务机构上传服务补充资料", "服务机构上传服务补充资料"), BUSINESS_HC_EXTRA(15, "综合服务单位核查补充资料", "综合服务单位核查补充资料"), BUSINESS_DIAGNOSIS_EXTRA(16, "完成服务补充资料", "完成服务补充资料"), COMPANY_SCORE_REPORT(17,"企业评分附件","企业评分附件"), SJ_SCORE_REPORT(18,"市局评分附件","市局评分附件"), SD_SCORE_REPORT(19,"综合服务单位评分附件","综合服务单位评分附件"), SO_SCORE_REPORT(20,"服务单位评分附件","综合服务单位评分附件"), AREA_SCORE_REPORT(21,"区县评分附件","综合服务单位评分附件"), IDCARD_FRONT_USER(22,"身份证正面","身份证正面"), IDCARD_REVERSE_USER(23,"身份证反面","身份证反面"), PROFESSION_USER(24,"职称图片","职称图片") ; // 成员变量 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) { String t = URLDecoder.decode("https://lsqw.gtja.com/qwcos/v-index.html#/loginforProperty?corpId=ww4b7aefafeb430e4b&corpId=ww4b7aefafeb430e4b&agentId=1000005&agentId=1000005&fromRoute=&userCode=013561&userCode=&userId=zz&userId=&encryptUserCode=&custQwId=wmIUuSDgAAR8MhtVY8w90EyKltvoK5fA&custCode=&openId=op1wZwD1dKuBQywmWWS5957zUOJI&name=%E8%B9%84%E8%B9%84&headUrl=http%3A%2F%2Fwx.qlogo.cn%2Fmmhead%2FQ3auHgzwzM4QlibSOAvYcvRMdsoyF3Ua7duLOYSJfB3dsGsYxIYonBw%2F0&dbHeadUrl=https%3A%2F%2Ftgf.gtja.com%2Ff%2F%2Fqwoms%2F2022512%2Fqwoms_1652332606613_8.jpg"); System.out.println(t); } /** * 用户类型 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)), SO_ADMIN(2, "服务机构管理员", "服务机构",Arrays.asList(-1)), SO_CHILD(3, "服务机构子账号", "服务机构",Arrays.asList(-1)), SD_ADMIN(4, "综合服务单位管理员", "综合服务单位",Arrays.asList(0,1,2,3,4,5,6,7,8,9,10,11,12,13)), SD_CHILD(5, "综合服务单位子账号", "综合服务单位",Arrays.asList(0,1,2,3,4,5,6,7,8,9,10,11,12,13)), EXPERT(6, "专家", "专家", Arrays.asList(-1)), AREA(7, "县区用户", "县区",Arrays.asList(0,1,2,3,4,5,6,7,8,9)), SJ(8, "市局用户", "市局",Arrays.asList(0,1,2,3,4,5,6,7,8,9,10,11,12,13)), SJ_CHILD(9, "市局子账号", "市局子账号",Arrays.asList(0,1,2,3,4,5,6,7,8,9,10,11,12,13)), ; // 成员变量 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; } /** * 不需要审批修改信息角色 * @return */ public static List getNoCheckUserChange(){ return Arrays.asList(SO_ADMIN.key, AREA.key, SJ.key, EXPERT.key, SD_ADMIN.key,SYSTEM.key); } /** * 获取子账号类型 * @return */ public static List getSonUserType(){ return Arrays.asList(SO_CHILD.key, SD_CHILD.key); } /** * 获取关联企业的用户类型 * @return */ public static List getHasCompanyType(){ return Arrays.asList(COMPANY.key, SO_ADMIN.key, SD_ADMIN.key); } } 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 static List getValues(){ return Arrays.stream(values()).map(s->s.getValue()).collect(Collectors.toList()); } } 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 enum ProjectScoreType{ COMPANY(0, "企业用户", "企业"), AREA(1, "县区", "县区"), SO_ADMIN(2, "服务机构", "服务机构"), SD_ADMIN(3, "综合服务单位", "综合服务单位"), EXPERT(4, "专家", "专家"), SJ(5, "市局", "市局") ; // 成员变量 private String name; private Integer key; private String noteInfo; ProjectScoreType( int key,String name, String noteinfo) { this.name = name; this.key = key; this.noteInfo = noteinfo; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getKey() { return key; } public void setKey(Integer key) { this.key = key; } public String getNoteInfo() { return noteInfo; } public void setNoteInfo(String noteinfo) { this.noteInfo = noteinfo; } /** * * * @param userType * @return */ // public static Integer getProjectScoreRoleType(Integer userType){ // // Integer key = null; // // switch (userType){ // // case 1 : key = ProjectScoreType.COMPANY.getKey(); break; // // case 7 : key = ProjectScoreType.AREA.getKey(); break; // // case 2 : key = ProjectScoreType.SO_ADMIN.getKey(); break; // // case 4 : key = ProjectScoreType.SD_ADMIN.getKey(); break; // // case 6 : key = ProjectScoreType.EXPERT.getKey(); break; // // case 8 : key = ProjectScoreType.SJ.getKey(); break; // } // // return key; // // } // } }