diff --git a/src/main/java/io/v/nutz/task/job/sourcechange/SourceChangeJob.java b/src/main/java/io/v/nutz/task/job/sourcechange/SourceChangeJob.java new file mode 100644 index 0000000..46a8734 --- /dev/null +++ b/src/main/java/io/v/nutz/task/job/sourcechange/SourceChangeJob.java @@ -0,0 +1,76 @@ +package io.v.nutz.task.job.sourcechange; + +import io.v.nutz.base.utils.MsgApi; +import io.v.nutz.zhgh.staffmanage.member.constant.MemberChangeType; +import io.v.nutz.zhgh.staffmanage.sourcechange.model.SourceChangeMiddleTable; +import org.nutz.dao.Cnd; +import org.nutz.dao.Dao; +import org.nutz.ioc.loader.annotation.Inject; +import org.nutz.ioc.loader.annotation.IocBean; +import org.nutz.lang.util.NutMap; +import org.quartz.Job; +import org.quartz.JobExecutionContext; +import org.quartz.JobExecutionException; + +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; +import java.util.*; + +@IocBean +public class SourceChangeJob implements Job { + @Inject + private Dao dao; + @Inject + private MsgApi msgApi; + + @Override + public void execute(JobExecutionContext context) throws JobExecutionException { + // 获取当前日期 + LocalDate currentDate = LocalDate.now(); + + // 定义日期格式 + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + + // 格式化日期 + String formattedDate = currentDate.format(formatter); + + List list = dao.query(SourceChangeMiddleTable.class, Cnd.NEW().and("changeTime", "like", formattedDate)); + + // 统计各类型人数 + Map countMap = new HashMap<>(); + for (MemberChangeType type : MemberChangeType.values()) { + countMap.put(type, 0); + } + for (SourceChangeMiddleTable item : list) { + for (MemberChangeType type : MemberChangeType.values()) { + if (item.getChangeTypes().contains(type.getType())) { + countMap.put(type, countMap.get(type) + 1); + } + } + } + + StringBuffer msg = new StringBuffer(); + msg.append("日期:"+formattedDate); + appendIfPositive(msg, "新入职", countMap.get(MemberChangeType.NEW)); + appendIfPositive(msg, "在职", countMap.get(MemberChangeType.WORK)); + appendIfPositive(msg, "离校", countMap.get(MemberChangeType.LEAVE_SCHOOL)); + appendIfPositive(msg, "退休", countMap.get(MemberChangeType.RETIRE)); + appendIfPositive(msg, "辞职", countMap.get(MemberChangeType.RESIGN)); + appendIfPositive(msg, "调出", countMap.get(MemberChangeType.OUT)); + appendIfPositive(msg, "离职", countMap.get(MemberChangeType.LEAVE_OFFICE)); + appendIfPositive(msg, "其它", countMap.get(MemberChangeType.OTHER)); + appendIfPositive(msg, "单位异动", countMap.get(MemberChangeType.UNIT_CHANGE)); + appendIfPositive(msg, "基本信息异动", countMap.get(MemberChangeType.BASIC_CHANGE)); + + List channels=new ArrayList<>(); + channels.add("DingTalk"); + + //msgApi.sendMsg(channels, "", 1,"0",msg.toString(),null,null); + } + + private void appendIfPositive(StringBuffer msg, String label, Integer count) { + if (count > 0) { + msg.append("," + label + ":" + count + "人"); + } + } +}