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

80 lines
3.0 KiB
Java

package com.engine.salary.timer;
import com.engine.common.util.ServiceUtil;
import com.engine.salary.biz.SalarySobRangeBiz;
import com.engine.salary.entity.salarysob.po.SalarySobPO;
import com.engine.salary.entity.salarysob.po.SalarySobRangePO;
import com.engine.salary.service.SalarySobRangeService;
import com.engine.salary.service.SalarySobService;
import com.engine.salary.service.impl.SalarySobRangeServiceImpl;
import com.engine.salary.service.impl.SalarySobServiceImpl;
import com.engine.salary.util.db.IdGenerator;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import weaver.general.BaseBean;
import weaver.hrm.User;
import weaver.interfaces.schedule.BaseCronJob;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
/**
* 自动同步个税扣缴以为人人员范围至,账套人员范围
* <p>Copyright: Copyright (c) 2022</p>
* <p>Company: 泛微软件</p>
*
* @author qiantao
* @version 1.0
**/
@Slf4j
public class SyncTaxAgentEmp2SobEmpJob extends BaseCronJob {
private SalarySobService getSalarySobService(User user) {
return ServiceUtil.getService(SalarySobServiceImpl.class, user);
}
private SalarySobRangeService getSalarySobRangeService(User user) {
return ServiceUtil.getService(SalarySobRangeServiceImpl.class, user);
}
private String salarySobIds;
@Override
public void execute() {
User user = new User();
user.setUid(1);
user.setLoginid("sysadmin");
List<SalarySobPO> salarySobPOS;
if (StringUtils.isNotEmpty(salarySobIds)) {
// 只同步指定的账套
List<Long> salarySobIdList = Arrays.asList(StringUtils.split(salarySobIds, ",")).stream().map(Long::valueOf).collect(Collectors.toList());
salarySobPOS = getSalarySobService(user).listByIds(salarySobIdList);
} else {
salarySobPOS = getSalarySobService(user).listAll();
}
BaseBean baseBean = new BaseBean();
SalarySobRangeBiz salarySobRangeBiz = new SalarySobRangeBiz();
for (SalarySobPO po : salarySobPOS) {
List<SalarySobRangePO> salarySobRangePOS = new ArrayList<>();
try {
baseBean.writeLog("开始同步人员范围至账套账套:{}",po.getId());
// 保存前先删除
salarySobRangePOS = salarySobRangeBiz.listSome(SalarySobRangePO.builder().salarySobId(po.getId()).build());
getSalarySobRangeService(user).deleteBySalarySobIds(Collections.singletonList(po.getId()));
getSalarySobService(user).saveDefaultEmployeeRange(po);
} catch (Exception e) {
baseBean.writeLog("同步人员范围至账套账套出错:" + e.getMessage());
salarySobRangePOS.stream().forEach(p -> p.setId(IdGenerator.generate()));
salarySobRangeBiz.batchInsert(salarySobRangePOS);
}
}
}
}