package cn.timer.api.config.enuminterface; 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 io.swagger.annotations.ApiModelProperty; 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 OrgType implements YgEnumInterface { DEPARTMENT(0, "部门"), POST(1, "岗位"); private Integer type; private String name; OrgType(Integer type, String name) { this.type = type; this.name = name; } } /** * 员工类型 */ @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"; if (index == null) { return null; } 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; } } }