diff --git a/src/com/engine/salary/maintainer/salaryacct/SalaryAcctManager.java b/src/com/engine/salary/maintainer/salaryacct/SalaryAcctManager.java index 05f17cb7b..31de28823 100644 --- a/src/com/engine/salary/maintainer/salaryacct/SalaryAcctManager.java +++ b/src/com/engine/salary/maintainer/salaryacct/SalaryAcctManager.java @@ -6,7 +6,6 @@ import com.engine.salary.entity.datacollection.DataCollectionEmployee; import com.engine.salary.entity.datacollection.dto.AttendQuoteFieldListDTO; import com.engine.salary.entity.salaryacct.bo.SalaryAcctCalculateBO; import com.engine.salary.entity.salaryacct.bo.SalaryAcctCalculatePriorityBO; -import com.engine.salary.entity.salaryacct.bo.SalaryAcctResultBO; import com.engine.salary.entity.salaryacct.dto.SalaryAcctProgressDTO; import com.engine.salary.entity.salaryacct.po.SalaryAcctEmployeePO; import com.engine.salary.entity.salaryacct.po.SalaryAcctRecordPO; @@ -26,6 +25,7 @@ import com.engine.salary.service.impl.*; import com.engine.salary.util.SalaryEntityUtil; import com.engine.salary.util.SalaryI18nUtil; import com.engine.salary.util.db.MapperProxyFactory; +import com.engine.salary.util.valid.ValidUtil; import com.google.common.collect.Lists; import com.weaver.util.threadPool.ThreadPoolUtil; import com.weaver.util.threadPool.constant.ModulePoolEnum; @@ -35,6 +35,7 @@ import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.MapUtils; import org.apache.commons.lang.math.NumberUtils; import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.BeanUtils; import org.springframework.jdbc.datasource.DataSourceTransactionManager; import weaver.hrm.User; @@ -148,17 +149,26 @@ public class SalaryAcctManager extends Service { * 核算已归档后,需要重新核算某一项 */ public void supplementAcctRecord(SalaryAcctSupplementParam param) { + ValidUtil.doValidator(param); + List salaryItemIds = Arrays.stream(param.getSalaryItemStrIds().split(",")).map(Long::valueOf).collect(Collectors.toList()); + param.setSalaryItemIds(salaryItemIds); + + if(CollectionUtils.isEmpty(salaryItemIds)){ + throw new SalaryRunTimeException("薪资项目为空!"); + } + + calculate(param); } /** - * 薪资核算-核算 + * 补算 * * @param calculateParam 薪资核算的参数 */ public void calculate(SalaryAcctSupplementParam calculateParam) { - log.info("开始核算V1{}", calculateParam); + log.info("补算开始{}", calculateParam); //当前登陆人员 DataCollectionEmployee simpleEmployee = new DataCollectionEmployee(); @@ -245,12 +255,7 @@ public class SalaryAcctManager extends Service { // 10、根据id查询其他合并计税的薪资核算记录 List otherSalaryAcctRecordPOS = getSalaryAcctRecordService(user).listById4OtherConsolidatedTax(salaryAcctRecordPO.getId()); // 11、查询本次核算人员 - List salaryAcctEmployeePOS; - if (CollectionUtils.isEmpty(calculateParam.getIds())) { - salaryAcctEmployeePOS = getSalaryAcctEmployeeService(user).listBySalaryAcctRecordId(salaryAcctRecordPO.getId()); - } else { - salaryAcctEmployeePOS = getSalaryAcctEmployeeService(user).listByIds(calculateParam.getIds()); - } + List salaryAcctEmployeePOS = getSalaryAcctEmployeeService(user).listBySalaryAcctRecordId(salaryAcctRecordPO.getId()); if (CollectionUtils.isEmpty(salaryAcctEmployeePOS)) { throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(103378, "薪资核算人员不能为空")); } @@ -314,10 +319,7 @@ public class SalaryAcctManager extends Service { } catch (Exception e) { log.info("薪资核算出错:{}", e.getMessage(), e); -// throw new SalaryRunTimeException(e); getSalaryAcctProgressService(user).fail("SalaryCacheKey.ACCT_PROGRESS" + calculateParam.getSalaryAcctRecordId(), SalaryI18nUtil.getI18nLabel(99642, "薪资核算出错") + ": " + e.getMessage()); - } finally { - // 数据库字段加密用 } } @@ -331,15 +333,15 @@ public class SalaryAcctManager extends Service { // 查询薪资核算结果的临时存储 List salaryAcctResultTempPOS = getSalaryAcctResultTempService(user).listByCalculateKey(calculateKey); // 删除原来的薪资核算结果 - if (CollectionUtils.isNotEmpty(calculateParam.getIds())) { - getSalaryAcctResultMapper().deleteBySalaryAcctEmpIds(calculateParam.getIds()); - } else { - getSalaryAcctResultMapper().deleteBySalaryAcctRecordIds(Collections.singleton(calculateParam.getSalaryAcctRecordId())); - getSalaryAcctReportService(user).deleteBySalaryAcctRecordId(calculateParam.getSalaryAcctRecordId()); - } + List salaryItemIds = calculateParam.getSalaryItemIds(); + getSalaryAcctResultMapper().deleteBySalaryAcctRecordIdAndSalaryItemIds(calculateParam.getSalaryAcctRecordId(), salaryItemIds); // 保存薪资的薪资核算结果 - List salaryAcctResultPOS = SalaryAcctResultBO.convert2ResultPO(salaryAcctResultTempPOS); -// batchSave(salaryAcctResultPOS); + List salaryAcctResultPOS = salaryAcctResultTempPOS.stream().filter(salaryAcctResultTempPO -> salaryItemIds.contains(salaryAcctResultTempPO.getSalaryItemId())).map(e -> { + SalaryAcctResultPO salaryAcctResult = new SalaryAcctResultPO(); + BeanUtils.copyProperties(e, salaryAcctResult); + return salaryAcctResult; + }).collect(Collectors.toList()); + getSalaryAcctResultService(user).batchSave(salaryAcctResultPOS); //保存核算报表数据 // List salaryAcctResultReportPOS = SalaryAcctResultReportBO.convert2ReportPO(salaryAcctResultTempPOS, calculateParam.getEmps()); // getSalaryAcctReportService(user).batchSave(salaryAcctResultReportPOS); diff --git a/src/com/engine/salary/maintainer/salaryacct/SalaryAcctSupplementParam.java b/src/com/engine/salary/maintainer/salaryacct/SalaryAcctSupplementParam.java index a4bcd3c64..d3e3c5b95 100644 --- a/src/com/engine/salary/maintainer/salaryacct/SalaryAcctSupplementParam.java +++ b/src/com/engine/salary/maintainer/salaryacct/SalaryAcctSupplementParam.java @@ -6,7 +6,7 @@ import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; -import java.util.Collection; +import java.util.List; /** * 薪资补充核算的参数 @@ -22,13 +22,12 @@ import java.util.Collection; @AllArgsConstructor public class SalaryAcctSupplementParam { - //核算人员的id,不是employeeId而是salaryAcctEmpId - private Collection ids; - @DataCheck(require = true,message = "参数错误,薪资核算记录ID不能为空") private Long salaryAcctRecordId; @DataCheck(require = true,message = "参数错误,薪资项目ID不能为空") - private String salaryItemIds; + private String salaryItemStrIds; + + private List salaryItemIds; } diff --git a/src/com/engine/salary/mapper/salaryacct/SalaryAcctResultMapper.java b/src/com/engine/salary/mapper/salaryacct/SalaryAcctResultMapper.java index 8ef60131e..0ae008b62 100644 --- a/src/com/engine/salary/mapper/salaryacct/SalaryAcctResultMapper.java +++ b/src/com/engine/salary/mapper/salaryacct/SalaryAcctResultMapper.java @@ -96,7 +96,7 @@ public interface SalaryAcctResultMapper { void deleteBySalaryAcctEmpIds(@Param("salaryAcctEmpIds") Collection salaryAcctEmpIds); /** - * 根据薪资核算id、薪资项目id删除薪资核算结果 + * 根据薪资核算人员id、薪资项目id删除薪资核算结果 * * @param salaryAcctEmpIds * @param salaryItemIds @@ -104,6 +104,14 @@ public interface SalaryAcctResultMapper { void deleteByAcctEmpIdsAndSalaryItemIds(@Param("salaryAcctEmpIds") Collection salaryAcctEmpIds, @Param("salaryItemIds") Collection salaryItemIds); + /** + * + * @param salaryAcctRecordId + * @param salaryItemIds + */ + void deleteBySalaryAcctRecordIdAndSalaryItemIds(@Param("salaryAcctRecordId") Long salaryAcctRecordId, + @Param("salaryItemIds") Collection salaryItemIds); + /** * 根据薪资核算id删除薪资核算结果 * diff --git a/src/com/engine/salary/mapper/salaryacct/SalaryAcctResultMapper.xml b/src/com/engine/salary/mapper/salaryacct/SalaryAcctResultMapper.xml index 9d54a0004..afd3f4a83 100644 --- a/src/com/engine/salary/mapper/salaryacct/SalaryAcctResultMapper.xml +++ b/src/com/engine/salary/mapper/salaryacct/SalaryAcctResultMapper.xml @@ -535,6 +535,16 @@ + + DELETE FROM hrsa_salary_acct_result + WHERE delete_type = 0 + AND salary_acct_record_id =#{salaryAcctRecordId} + AND salary_item_id IN + + #{salaryItemId} + + + DELETE FROM hrsa_salary_acct_result WHERE delete_type = 0