package com.engine.salary.timer; import com.engine.common.util.ServiceUtil; import com.engine.salary.entity.datacollection.param.AttendQuoteCheckOperationParam; import com.engine.salary.entity.datacollection.param.AttendQuoteDataSyncParam; import com.engine.salary.entity.salarysob.po.SalarySobPO; import com.engine.salary.service.SalarySobService; import com.engine.salary.service.impl.SalarySobServiceImpl; import com.engine.salary.util.SalaryDateUtil; import com.engine.salary.wrapper.AttendQuoteDataWrapper; import com.engine.salary.wrapper.AttendQuoteWrapper; import org.apache.commons.lang3.math.NumberUtils; import weaver.general.BaseBean; import weaver.hrm.User; import weaver.interfaces.schedule.BaseCronJob; import java.time.LocalDate; import java.util.Date; import java.util.List; /** * @author Harryxzy * @ClassName AutoSyncAttendQuoteData * @date 2023/08/11 9:53 * @description 自动同步所有薪资账套的考勤引用 */ public class AutoSyncAttendQuoteJob extends BaseCronJob { private String preMonth; private SalarySobService getSalarySobService(User user) { return ServiceUtil.getService(SalarySobServiceImpl.class, user); } private AttendQuoteWrapper getAttendQuoteWrapper(User user) { return ServiceUtil.getService(AttendQuoteWrapper.class, user); } private AttendQuoteDataWrapper getAttendQuoteDataWrapper(User user) { return ServiceUtil.getService(AttendQuoteDataWrapper.class, user); } @Override public void execute() { User tempUser = new User(); tempUser.setUid(1); tempUser.setLoginid("sysadmin"); // 获取所有的薪资账套 List salarySobList = getSalarySobService(tempUser).listAll(); LocalDate localDate = SalaryDateUtil.dateToLocalDate(new Date()); int preMonthValue = -1; if (preMonth != null && NumberUtils.isCreatable(preMonth)) { preMonthValue = -1 * Integer.valueOf(preMonth); } localDate = localDate.plusMonths(preMonthValue); String dateStr = SalaryDateUtil.getFormatYearMonth(localDate); BaseBean baseBean = new BaseBean(); // 循环所有的账套 salarySobList.stream().forEach(sob -> { // 校验是否可以操作 Boolean canSync = getAttendQuoteWrapper(tempUser).checkOperation(AttendQuoteCheckOperationParam.builder() .salarySobId(sob.getId()) .salaryYearMonthStr(dateStr) .build()); if (canSync) { // 同步数据 try { baseBean.writeLog("自动同步考勤数据开始:"+ sob.getId()+","+dateStr); getAttendQuoteDataWrapper(tempUser).syncAttendQuoteData(AttendQuoteDataSyncParam.builder() .salarySobId(sob.getId()) .salaryYearMonth(dateStr) .build()); baseBean.writeLog("自动同步考勤数据结束:"+ sob.getId()+","+dateStr); } catch (Exception e) { baseBean.writeLog("自动同步考勤数据出错:"+ e); } } }); } }