weaver-hrm-salary/src/com/engine/salary/timer/AutoSyncAttendQuoteJob.java

82 lines
3.2 KiB
Java

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<SalarySobPO> 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);
}
}
});
}
}