/** * @date 2020年3月23日 * @author 翁东州 * @方法中文名称: */ package cn.timer.api.config.enuminterface; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.regex.Pattern; import cn.timer.api.dto.yggl.YgbintuDto; import lombok.Getter; /** * @date 2020年3月23日 * @author 翁东州 * @方法中文名称: */ public interface YgEnumInterface { /** * 男女 */ @Getter enum sex implements YgEnumInterface{ MAN(0,"男"),WOMAN(1,"女"); private Integer type; private String name; sex(Integer type, String name) { this.type = type; this.name = name; } public static String isMan(String index) { sex mow = (index == null || index.length() == 0) ? sex.MAN : (index.indexOf(sex.MAN.name)!= -1)||(index.indexOf(sex.MAN.type)!= -1) ? sex.MAN:sex.WOMAN; return mow.type.toString(); } } /** * 员工类型 */ @Getter enum YgJobType implements YgEnumInterface{ QUANZHI(0, "全"),SHIXI(1, "实习"),JIANZHI(2, "兼"),LWPQ(3, "劳务派遣"), LAOWU(4, "劳务"),PAIQIAN(5, "派遣"),WAIBAO(6, "外包"),TUIXIU(7, "退休"); private Integer type; private String name; YgJobType(Integer type, String name) { this.type = type; this.name = name; } public static String choose(String index) { YgJobType result = YgJobType.QUANZHI; if(index == null || index.length() == 0) return result.type.toString(); for (YgJobType item : YgJobType.values()) { if (index.indexOf(item.getType()) !=-1 ||index.indexOf(item.getName()) !=-1 ) result = item; } return result.type.toString(); } } /** * 员工状态 */ @Getter enum jobStatus implements YgEnumInterface{ SHIYONG(0,"试用"),ZHENSHI(1,"正式"),LIZHIZHONG(2,"离职中"),YILIZHI(3,"已离职"); private Integer type; private String name; jobStatus(Integer type, String name) { this.type = type; this.name = name; } public static String isZhen(String index) { jobStatus zos = (index == null || index.length() == 0) ? YgEnumInterface.jobStatus.ZHENSHI: (index.indexOf(jobStatus.ZHENSHI.name)!= -1)||(index.indexOf(jobStatus.ZHENSHI.type)!= -1) ? jobStatus.ZHENSHI:jobStatus.SHIYONG; return zos.type.toString(); } } /** * 入职日期 */ @Getter enum rzTime implements YgEnumInterface{ ZHEN("--","yyyy-M-d"),XIE("//","yyyy/M/d"), DIAN("..","yyyy.M.d"),NYR("年月日","yyyy年M月d日"); private String type; private String name; rzTime(String type, String name) { this.type = type; this.name = name; } public static String tranTime(String index) { //String str ="2013/11/12"; String p = "年|月|日|号|时|/|//-"; String result = index.replaceAll(p, "-"); String p2 = "-$"; String result2 = result.replaceAll(p2, ""); return result2; } /* * public static String tranTime(String index) { DateFormat zhenFormat = new * SimpleDateFormat(ZHEN.name); String result = zhenFormat.format(new Date()); * if (index == null || index.length() == 0) return result; Pattern pattern = * Pattern.compile("^[0-9]{8}$"); if (pattern.matcher(index).matches()) { result * = index.substring(0, 4) + "-" + index.substring(4, 6) + "-" + * index.substring(6, 8); return result; } String s = * index.replaceAll("([1-9]+[0-9]*|0)(\\.[\\d]+)?", ""); for (rzTime item : * rzTime.values()) { if (s.indexOf(item.type) != -1) { DateFormat dateFormat = * new SimpleDateFormat(item.name); try { result = new * SimpleDateFormat(ZHEN.name).format(dateFormat.parse(index)); return result; } * catch (ParseException e) { e.printStackTrace(); return result; } } } return * result; } */ public static String tranTime2(String result) { String isYear ="^(?:(?!0000)[0-9]{4} -(?:(?:0[1-9]|1[0-2]) -(?:0[1-9]|1[0-9]|2[0-8]) |(?:0[13-9]|1[0-2]) -(?:29|30) |(?:0[13578]|1[02]) -31 )|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00) -02 -29 )$"; Pattern pattern = Pattern.compile(isYear); if (pattern.matcher(result).matches()) { return result; }else { result = new SimpleDateFormat(ZHEN.name).format(new Date()); return result; } } } /** * 试用期 */ @Getter enum syq implements YgEnumInterface{ ZERO(0,"无"),ONE(1,"一"),TWO(2,"二"),THREE(3,"三"),FOUR(4,"四"),FIVE(5,"五"),SIX(6,"六"); private Integer type; private String name; syq(Integer type, String name) { this.type = type; this.name = name; } public static String choose(String index) { syq result = syq.ZERO; if (index == null || index.length() == 0) result.type.toString(); for (syq item : syq.values()) { if (index.indexOf(item.getName()) !=-1 ||index.indexOf(item.getType()) !=-1 ) result=item; } return result.type.toString(); } } /** * 工龄 */ @Getter enum workage implements YgEnumInterface{ //NEW(0,183),HALF(1,365),ONE(2,548),ONEHALF(3,730),TWO(4,913),LONG(5,10000); NEW(0,30,0),ROOKIE(31,183,0),HALF(184,365,0),ONE(366,548,0),ONEHALF(549,730,0),TWO(731,1000,0),LONG(1001,10000,0); private Integer begin; private Integer end; private Integer number; workage(Integer begin, Integer end,Integer number) { this.begin = begin; this.end = end; this.number = number; } public static Map<String, Integer> choose(List<YgbintuDto> bintu) { for (YgbintuDto b : bintu) { Integer index = b.getWorkage(); for (workage item : workage.values()) { if (index>= item.begin && index<=item.end) item.number++; } } Map<String, Integer> result = new HashMap<String, Integer>(); result.put("本月新入职", NEW.number); result.put("x<0.5", NEW.number+ROOKIE.number); result.put("0.5<x<1", HALF.number); result.put("1<x<1.5", ONE.number); result.put("1.5<x<2", ONEHALF.number); result.put("2<x<3", TWO.number); result.put("x++", LONG.number); NEW.number=0;ROOKIE.number=0;HALF.number=0;ONE.number=0;ONEHALF.number=0;TWO.number=0;LONG.number=0; return result; } } /** * 年龄 */ @Getter enum age implements YgEnumInterface{ //NEW(0,183),HALF(1,365),ONE(2,548),ONEHALF(3,730),TWO(4,913),LONG(5,10000); CHILD(1,17,0),TEEN(18,25,0),YOUNG(26,32,0),MAN(33,38,0),MIDDLE(39,45,0),OLD(46,1000,0); private Integer begin; private Integer end; private Integer number; age(Integer begin, Integer end,Integer number) { this.begin = begin; this.end = end; this.number = number; } public static Map<String, Integer> choose(List<YgbintuDto> bintu) { Integer average = 0; Integer i = 0; Integer j = 0; for (YgbintuDto b : bintu) { Integer index = b.getAge(); for (; i < age.values().length; i++) { if (index>= age.values()[i].begin && index<=age.values()[i].end) age.values()[i].number++;j++; } average = average + index; } Map<String, Integer> result = new HashMap<String, Integer>(); result.put("18以下", CHILD.number); result.put("18-25", TEEN.number); result.put("25-32", YOUNG.number); result.put("32-38", MAN.number); result.put("38-45", MIDDLE.number); result.put("45以上", OLD.number); Integer pInjun = j>0 ?(average/j) :0; result.put("平均年龄", pInjun); CHILD.number =0;TEEN.number=0;YOUNG.number=0;MAN.number=0;MIDDLE.number=0;OLD.number=0; return result; } } }