diff --git a/src/com/engine/salary/entity/salaryBill/dto/SalarySendBaseInfoDTO.java b/src/com/engine/salary/entity/salaryBill/dto/SalarySendBaseInfoDTO.java index 94514a677..282618d24 100644 --- a/src/com/engine/salary/entity/salaryBill/dto/SalarySendBaseInfoDTO.java +++ b/src/com/engine/salary/entity/salaryBill/dto/SalarySendBaseInfoDTO.java @@ -35,4 +35,10 @@ public class SalarySendBaseInfoDTO { // @ApiModelProperty("薪资账套的周期") private SalarySobCycleDTO salarySobCycle; + + // 工资单发放类型 1:正常 2:补发 + private String salaryAcctType; + + // 是否回算过 0:没有回算过,1:回算过 + private Integer haveBackCalc; } diff --git a/src/com/engine/salary/entity/salaryBill/dto/SalarySendListDTO.java b/src/com/engine/salary/entity/salaryBill/dto/SalarySendListDTO.java index faca0b4bf..ed4ca8b57 100644 --- a/src/com/engine/salary/entity/salaryBill/dto/SalarySendListDTO.java +++ b/src/com/engine/salary/entity/salaryBill/dto/SalarySendListDTO.java @@ -112,6 +112,10 @@ public class SalarySendListDTO { @SalaryTableColumn(text = "最后发送时间", width = "15%", column = "lastSendTime") private Date lastSendTime; + /** + * 薪资核算ID + */ + private Long salaryAcctId; /** * 发放状态。0:未冻结、1:已冻结 @@ -123,5 +127,10 @@ public class SalarySendListDTO { */ private Integer salaryAcctType; + /** + * 是否回算过 0:没有回算过,1:回算过 + */ + private Integer haveBackCalc; + } diff --git a/src/com/engine/salary/mapper/salaryacct/SalaryAcctRecordMapper.java b/src/com/engine/salary/mapper/salaryacct/SalaryAcctRecordMapper.java index 4dfe0485b..4b560b7c2 100644 --- a/src/com/engine/salary/mapper/salaryacct/SalaryAcctRecordMapper.java +++ b/src/com/engine/salary/mapper/salaryacct/SalaryAcctRecordMapper.java @@ -76,4 +76,6 @@ public interface SalaryAcctRecordMapper { List listByCreateDate(@Param(value = "createRange") LocalDateRange createRange, @Param(value = "salarySobIds") Set salarySobIds); void updateLockSalaryItemIds(SalaryAcctRecordPO salaryAcctRecord); + + List getBackCalcRecordByIds(@Param("collection") Set salaryAcctIds); } \ No newline at end of file diff --git a/src/com/engine/salary/mapper/salaryacct/SalaryAcctRecordMapper.xml b/src/com/engine/salary/mapper/salaryacct/SalaryAcctRecordMapper.xml index 2ba269b02..404920353 100644 --- a/src/com/engine/salary/mapper/salaryacct/SalaryAcctRecordMapper.xml +++ b/src/com/engine/salary/mapper/salaryacct/SalaryAcctRecordMapper.xml @@ -142,6 +142,20 @@ ORDER BY id DESC + + t1.id, + t1.salary_accounting_id AS salaryAcctId, t1.send_status AS sendStatus, t1.salary_acct_type AS salaryAcctType, t2.salary_month AS salaryYearMonth, diff --git a/src/com/engine/salary/service/SalaryAcctRecordService.java b/src/com/engine/salary/service/SalaryAcctRecordService.java index 859466195..ffc811ac1 100644 --- a/src/com/engine/salary/service/SalaryAcctRecordService.java +++ b/src/com/engine/salary/service/SalaryAcctRecordService.java @@ -10,6 +10,7 @@ import com.engine.salary.util.page.PageInfo; import java.util.Collection; import java.util.List; +import java.util.Set; /** * 薪资核算记录 @@ -190,4 +191,12 @@ public interface SalaryAcctRecordService { * @date 2022/11/24 16:09 */ void backCalculate(Long salaryAcctRecordId); + + /** + * @description 获取是回算的薪资核算 + * @return List + * @author Harryxzy + * @date 2022/12/19 9:05 + */ + List getBackCalcRecordByIds(Set salaryAcctIds); } diff --git a/src/com/engine/salary/service/impl/SalaryAcctRecordServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctRecordServiceImpl.java index 23c2fda85..e04d45b20 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctRecordServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctRecordServiceImpl.java @@ -743,6 +743,14 @@ public class SalaryAcctRecordServiceImpl extends Service implements SalaryAcctRe reCalcOrBackCalc(salaryAcctRecordPO, false); } + @Override + public List getBackCalcRecordByIds(Set salaryAcctIds) { + if (CollectionUtils.isEmpty(salaryAcctIds)) { + return Collections.emptyList(); + } + return getSalaryAcctRecordMapper().getBackCalcRecordByIds(salaryAcctIds); + } + /** * 开启分权后需要判断是否能查看对应的薪资核算记录 diff --git a/src/com/engine/salary/service/impl/SalarySendServiceImpl.java b/src/com/engine/salary/service/impl/SalarySendServiceImpl.java index d44eabe3e..49c2bda55 100644 --- a/src/com/engine/salary/service/impl/SalarySendServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalarySendServiceImpl.java @@ -406,8 +406,12 @@ public class SalarySendServiceImpl extends Service implements SalarySendService throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(100512, "工资单发放不存在")); } Long salaryAcctId = salarySend.getSalaryAccountingId(); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM"); SalarySobCycleDTO salarySobCycleDTO = getSalaryAcctRecordService(user).getSalarySobCycleById(salaryAcctId); - + List salaryAcctRecordPOS = getSalaryAcctRecordService(user).listBySalarySobIds(Collections.singletonList(salarySobCycleDTO.getSalarySobId())); + // 是否有回算记录 + boolean haveBackCalc = salaryAcctRecordPOS.stream().filter(PO -> Objects.equals(PO.getBackCalcStatus(), NumberUtils.INTEGER_ONE) && + Objects.equals(sdf.format(PO.getSalaryMonth()), SalaryDateUtil.MONTH_FORMATTER.format(salarySobCycleDTO.getSalaryMonth())) ).collect(Collectors.toList()).size() > 0; String template = ""; // 获取默认模板 List salaryTemplates = getSalaryTemplateService(user).getDefaultTemplates(Collections.singletonList(salarySend.getSalarySobId())); @@ -419,13 +423,14 @@ public class SalarySendServiceImpl extends Service implements SalarySendService template = salaryTemplates.get(0).getName(); } } - return SalarySendBaseInfoDTO.builder() .salaryMonth(salarySobCycleDTO == null ? null : salarySobCycleDTO.getSalaryMonth()) .template(template) .salarySobCycle(salarySobCycleDTO) .sendNum(salarySend.getSendNum()) .sendTotal(salarySend.getSendTotal()) + .salaryAcctType(salarySend.getSalaryAcctType().toString()) + .haveBackCalc(haveBackCalc ? NumberUtils.INTEGER_ONE : NumberUtils.INTEGER_ZERO) .build(); } diff --git a/src/com/engine/salary/wrapper/SalarySendWrapper.java b/src/com/engine/salary/wrapper/SalarySendWrapper.java index fe7a07a22..631e1e539 100644 --- a/src/com/engine/salary/wrapper/SalarySendWrapper.java +++ b/src/com/engine/salary/wrapper/SalarySendWrapper.java @@ -122,8 +122,21 @@ public class SalarySendWrapper extends Service { e.setTemplate(NumberUtils.INTEGER_ONE.equals(e.getSalaryAcctType()) ? optional.get().getReplenishName() : optional.get().getName()); e.setTemplateId(optional.get().getId()); } + e.setHaveBackCalc(NumberUtils.INTEGER_ZERO); }); } + // 薪资核算ID + Set salaryAcctIds = SalaryEntityUtil.properties(pageList, SalarySendListDTO::getSalaryAcctId); + // 获取是回算的薪资核算ID + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + List salaryAcctRecordPOS = getSalaryAcctRecordService(user).getBackCalcRecordByIds(salaryAcctIds); + Set backCalcSalarySobs = SalaryEntityUtil.properties(salaryAcctRecordPOS, salaryAcctRecordPO -> salaryAcctRecordPO.getSalarySobId() + "-" + sdf.format(salaryAcctRecordPO.getSalaryMonth())); + // 判断是否回算过,haveBackCalc 属性 + pageList.stream().forEach(salarySendDTO -> { + if(backCalcSalarySobs.contains(salarySendDTO.getSalarySobId() + "-" + sdf.format(salarySendDTO.getSalaryYearMonth()))){ + salarySendDTO.setHaveBackCalc(NumberUtils.INTEGER_ONE); + } + }); List columns = buildWeaTableColumns(); WeaTable table = new WeaTable(); table.setColumns(columns);