汇通批量核算调整
This commit is contained in:
parent
d24f9bf0a6
commit
cf03a36835
|
|
@ -410,6 +410,9 @@
|
|||
<if test="approvalStatus != null">
|
||||
approval_status=#{approvalStatus},
|
||||
</if>
|
||||
<if test="runStatus != null">
|
||||
run_status=#{runStatus},
|
||||
</if>
|
||||
</set>
|
||||
WHERE id = #{id} AND delete_type = 0
|
||||
</update>
|
||||
|
|
|
|||
|
|
@ -2198,7 +2198,7 @@ public class SIAccountServiceImpl extends Service implements SIAccountService {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void socialSecurityBenefitsRecalculate(InsuranceAccountBatchPO param) {
|
||||
public void socialSecurityBenefitsRecalculate(InsuranceAccountBatchPO insuranceAccountBatchParam) {
|
||||
//fixme 重新核算的校验逻辑 1、先取台账对应扣缴义务人下的所有账套 2、取账套下所有核算记录 3、判断核算记录有没有使用对应月份的福利台账
|
||||
// int num = getSiAccountBiz(user).checkIfBusinessaccounting(param);
|
||||
// int num = checkIfBusinessAccounting(param);
|
||||
|
|
@ -2206,11 +2206,63 @@ public class SIAccountServiceImpl extends Service implements SIAccountService {
|
|||
// if (num > 0) {
|
||||
// throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(0, "已被薪酬核算给核算过,无法重新核算!"));
|
||||
// }
|
||||
param.setBillStatus(0);
|
||||
insuranceAccountBatchParam.setBillStatus(0);
|
||||
// getSiAccountBiz(user).updateById(param);
|
||||
updateById(param);
|
||||
updateById(insuranceAccountBatchParam);
|
||||
InsuranceAccountBatchPO po = getInsuranceAccountBatchMapper().getById(insuranceAccountBatchParam.getId());
|
||||
if (po == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
// 核算
|
||||
AccountParam param = new AccountParam();
|
||||
param.setBillMonth(po.getBillMonth());
|
||||
param.setFlag(false);
|
||||
param.setPaymentOrganization(po.getPaymentOrganization());
|
||||
ValidUtil.doValidator(param);
|
||||
|
||||
try {
|
||||
List<Long> employeeIds = getInsuranceAccountDetailMapper().selectEmpByPaymentOrg(param.getPaymentOrganization());
|
||||
if (CollectionUtils.isEmpty(employeeIds)) {
|
||||
List<InsuranceAccountDetailPO> list = Lists.newArrayList(getInsuranceAccountDetailMapper().queryNormalListByBillMonth(param.getBillMonth(), param.getPaymentOrganization()));
|
||||
encryptUtil.decryptList(list, InsuranceAccountDetailPO.class);
|
||||
if (CollectionUtils.isNotEmpty(list)) {
|
||||
list.stream().forEach(f -> {
|
||||
getInsuranceAccountDetailMapper().deleteById(f.getId());
|
||||
});
|
||||
}
|
||||
}
|
||||
SalaryAssert.notEmpty(employeeIds, SalaryI18nUtil.getI18nLabel(0, "没有需要核算的人员"));
|
||||
|
||||
//福利核算进度
|
||||
ProgressDTO salaryAcctProgressDTO = getSalaryAcctProgressService(user).getProgress(SalaryCacheKey.ACCT_PROGRESS + param.getBillMonth() + "_" + param.getPaymentOrganization());
|
||||
if (salaryAcctProgressDTO != null && salaryAcctProgressDTO.isStatus() && salaryAcctProgressDTO.getProgress().compareTo(BigDecimal.ONE) < 0) {
|
||||
return;
|
||||
}
|
||||
// 初始化进度
|
||||
ProgressDTO initProgress = new ProgressDTO()
|
||||
.setTitle(SalaryI18nUtil.getI18nLabel(0, "核算中"))
|
||||
.setTitleLabelId(97515L)
|
||||
.setTotalQuantity(2000)
|
||||
.setCalculatedQuantity(NumberUtils.INTEGER_ZERO)
|
||||
.setProgress(BigDecimal.ZERO)
|
||||
.setStatus(true)
|
||||
.setMessage(StringUtils.EMPTY);
|
||||
getSalaryAcctProgressService(user).initProgress(SalaryCacheKey.ACCT_PROGRESS + param.getBillMonth() + "_" + param.getPaymentOrganization(), initProgress);
|
||||
siAccounting(param);
|
||||
} catch (Exception e) {
|
||||
// 回滚
|
||||
List<InsuranceAccountBatchPO> list = Lists.newArrayList(getInsuranceAccountBatchMapper().getByBillMonth(param.getBillMonth(), param.getPaymentOrganization()));
|
||||
list = encryptUtil.decryptList(list, InsuranceAccountBatchPO.class);
|
||||
if (CollectionUtils.isNotEmpty(list)) {
|
||||
list.stream().forEach(f -> {
|
||||
getInsuranceAccountBatchMapper().deleteById(f.getId());
|
||||
});
|
||||
}
|
||||
throw new SalaryRunTimeException(e.getMessage());
|
||||
}
|
||||
//记录操作日志
|
||||
InsuranceAccountBatchPO targetPO = getInsuranceAccountBatchMapper().getById(param.getId());
|
||||
InsuranceAccountBatchPO targetPO = getInsuranceAccountBatchMapper().getById(insuranceAccountBatchParam.getId());
|
||||
encryptUtil.decrypt(targetPO, InsuranceAccountBatchPO.class);
|
||||
TaxAgentPO taxAgentInfo = getTaxAgentMapper().getById(targetPO.getPaymentOrganization());
|
||||
LoggerContext<InsuranceAccountBatchPO> loggerContext = new LoggerContext<>();
|
||||
|
|
@ -5557,14 +5609,20 @@ public class SIAccountServiceImpl extends Service implements SIAccountService {
|
|||
.setStatus(true)
|
||||
.setMessage(StringUtils.EMPTY);
|
||||
getSalaryAcctProgressService(user).initProgress(SalaryCacheKey.ACCT_PROGRESS + param.getBillMonth() + "_" + param.getPaymentOrganization(), initProgress);
|
||||
|
||||
ExecutorService taskExecutor = Executors.newCachedThreadPool();
|
||||
taskExecutor.execute(() -> {
|
||||
if (param.isFlag()) {
|
||||
siAccounting(param);
|
||||
if (param.isFileFlag()) {
|
||||
siFile(param.getBillMonth(), param.getPaymentOrganization());
|
||||
}
|
||||
});
|
||||
} else {
|
||||
ExecutorService taskExecutor = Executors.newCachedThreadPool();
|
||||
taskExecutor.execute(() -> {
|
||||
siAccounting(param);
|
||||
if (param.isFileFlag()) {
|
||||
siFile(param.getBillMonth(), param.getPaymentOrganization());
|
||||
}
|
||||
});
|
||||
}
|
||||
} catch (Exception e) {
|
||||
// 回滚
|
||||
List<InsuranceAccountBatchPO> list = Lists.newArrayList(getInsuranceAccountBatchMapper().getByBillMonth(param.getBillMonth(), param.getPaymentOrganization()));
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@ import com.engine.salary.config.SalaryElogConfig;
|
|||
import com.engine.salary.entity.salaryBill.po.SalarySendPO;
|
||||
import com.engine.salary.entity.salaryacct.bo.SalaryAcctRecordBO;
|
||||
import com.engine.salary.entity.salaryacct.param.SalaryAcctBatParam;
|
||||
import com.engine.salary.entity.salaryacct.param.SalaryAcctCalculateParam;
|
||||
import com.engine.salary.entity.salaryacct.param.SalaryAcctRecordQueryParam;
|
||||
import com.engine.salary.entity.salaryacct.param.SalaryAcctRecordSaveParam;
|
||||
import com.engine.salary.entity.salaryacct.po.SalaryAcctEmployeePO;
|
||||
|
|
@ -36,6 +37,7 @@ import com.engine.salary.util.db.MapperProxyFactory;
|
|||
import com.engine.salary.util.page.PageInfo;
|
||||
import com.engine.salary.util.page.SalaryPageUtil;
|
||||
import com.engine.salary.util.valid.ValidUtil;
|
||||
import com.engine.salary.wrapper.SalaryAcctResultWrapper;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.commons.lang3.math.NumberUtils;
|
||||
|
|
@ -116,6 +118,9 @@ public class SalaryAcctRecordServiceImpl extends Service implements SalaryAcctRe
|
|||
return ServiceUtil.getService(SalaryEmployeeServiceImpl.class, user);
|
||||
}
|
||||
|
||||
private SalaryAcctResultWrapper getSalaryAcctResultWrapper(User user) {
|
||||
return ServiceUtil.getService(SalaryAcctResultWrapper.class, user);
|
||||
}
|
||||
|
||||
@Override
|
||||
public SalaryAcctRecordPO getById(Long id) {
|
||||
|
|
@ -506,6 +511,21 @@ public class SalaryAcctRecordServiceImpl extends Service implements SalaryAcctRe
|
|||
});
|
||||
}
|
||||
|
||||
public void updateRunStatusByIds(Collection<Long> ids, String runStatus) {
|
||||
// 查询薪资核算记录
|
||||
List<SalaryAcctRecordPO> salaryAcctRecordPOS = listByIds(ids);
|
||||
if (CollectionUtils.isEmpty(salaryAcctRecordPOS)) {
|
||||
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98747, "薪资核算记录不存在或已被删除"));
|
||||
}
|
||||
// 更新薪资核算记录的状态
|
||||
Date now = new Date();
|
||||
salaryAcctRecordPOS.forEach(salaryAcctRecordPO -> {
|
||||
salaryAcctRecordPO.setRunStatus(runStatus);
|
||||
salaryAcctRecordPO.setUpdateTime(now);
|
||||
getSalaryAcctRecordMapper().updateIgnoreNull(salaryAcctRecordPO);
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteByIds(Collection<Long> ids) {
|
||||
// 查询薪资核算记录
|
||||
|
|
@ -879,7 +899,20 @@ public class SalaryAcctRecordServiceImpl extends Service implements SalaryAcctRe
|
|||
List<Long> salaryAcctRecordIds = param.getSalaryAcctRecordIds();
|
||||
for (int i = 0; i < salaryAcctRecordIds.size(); i++) {
|
||||
Long recordId = salaryAcctRecordIds.get(i);
|
||||
reCalculate(recordId);
|
||||
SalaryAcctRecordPO salaryAcctRecordPO = getById(recordId);
|
||||
if (salaryAcctRecordPO != null && salaryAcctRecordPO.getStatus().equals(SalaryAcctRecordStatusEnum.NOT_ARCHIVED.getValue())) {
|
||||
// 未归档直接重新核算
|
||||
} else {
|
||||
reCalculate(recordId);
|
||||
}
|
||||
}
|
||||
|
||||
// 更新核算状态
|
||||
updateRunStatusByIds(salaryAcctRecordIds, "核算中");
|
||||
|
||||
// 重新核算
|
||||
salaryAcctRecordIds.forEach(salaryAcctRecordId -> {
|
||||
getSalaryAcctResultWrapper(user).calculate4Sync(SalaryAcctCalculateParam.builder().salaryAcctRecordId(salaryAcctRecordId).build());
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue