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.StringUtils; 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 AutoSyncAttendQuoteDataJob extends BaseCronJob { private String date; 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()); localDate.plusMonths(-1); if (StringUtils.isNotBlank(date)) { localDate = SalaryDateUtil.dateToLocalDate(SalaryDateUtil.dateStrToLocalDate(date)); } 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 { getAttendQuoteDataWrapper(tempUser).syncAttendQuoteData(AttendQuoteDataSyncParam.builder() .salarySobId(sob.getId()) .salaryYearMonth(dateStr) .build()); } catch (Exception e) { baseBean.writeLog("自动同步考勤数据出错:"+ e); } } }); } }