阅后即焚

This commit is contained in:
Harryxzy 2024-03-11 10:35:56 +08:00
parent 20d7266db9
commit 78d4f5e2ae
8 changed files with 55 additions and 2 deletions

View File

@ -25,4 +25,9 @@ public class salaryBillViewingLimitSetting {
*/
private Integer limitMonth;
/**
* 首次查看后多少分钟不能查看工资单
*/
private Integer burningAfterReadingMin;
}

View File

@ -116,4 +116,9 @@ public class SalarySendInfoPO {
* 租户ID
*/
private String tenantKey;
/**
* 首次查看时间
*/
private Date firstReadingTime;
}

View File

@ -41,6 +41,7 @@
, t.bill_read_status
, t.bill_confirm_status
, t.send_employee_id
, t.first_reading_time
</sql>
<update id="deleteBySalaryAcctRecordIds">
update hrsa_salary_send_info

View File

@ -56,5 +56,11 @@ public interface SalaryBillBaseSetService {
*/
salaryBillViewingLimitSetting getSalaryBillViewingLimitSetting();
/**
* 获取首次查看后多少分钟不能查看工资单0代表一旦查看后无法再次查看
* @return
*/
Integer getBurningAfterReadingMin();
}

View File

@ -113,6 +113,7 @@ public class SalaryBillBaseSetServiceImpl extends Service implements SalaryBillB
salaryBillViewingLimitSetting salaryBillViewingLimitDTO = saveParam.getSalaryBillViewingLimitSetting();
if (salaryBillViewingLimitDTO != null) {
getSalarySysConfService(user).saveSettingByType(Util.null2String(salaryBillViewingLimitDTO.getLimitMonth()), SALARY_BILL_VIEWING_LIMIT_MONTH, "工资单时效性设置", "billSend");
getSalarySysConfService(user).saveSettingByType(Util.null2String(salaryBillViewingLimitDTO.getBurningAfterReadingMin()), SALARY_BILL_BURNING_AFTER_READING_MIN, "工资单查看后销毁设置", "billSend");
}
return StringUtils.EMPTY;
}
@ -169,13 +170,22 @@ public class SalaryBillBaseSetServiceImpl extends Service implements SalaryBillB
@Override
public salaryBillViewingLimitSetting getSalaryBillViewingLimitSetting() {
SalarySysConfPO limitMonthSetting = getSalarySysConfService(user).getOneByCode(SALARY_BILL_VIEWING_LIMIT_MONTH);
int limitMonth = 0;
if (limitMonthSetting != null && NumberUtils.isNumber(limitMonthSetting.getConfValue())) {
limitMonth = Integer.parseInt(limitMonthSetting.getConfValue());
}
return salaryBillViewingLimitSetting.builder().limitMonth(limitMonth).build();
}
@Override
public Integer getBurningAfterReadingMin() {
SalarySysConfPO ineffectiveMinSetting = getSalarySysConfService(user).getOneByCode(SALARY_BILL_BURNING_AFTER_READING_MIN);
if (ineffectiveMinSetting == null || StringUtils.isBlank(ineffectiveMinSetting.getConfValue()) || !NumberUtils.isNumber(ineffectiveMinSetting.getConfValue())) {
// 代表该设置不生效即首次读后可以一直查看
return null;
} else {
return Integer.parseInt(ineffectiveMinSetting.getConfValue());
}
}
}

View File

@ -501,6 +501,25 @@ public class SalarySendServiceImpl extends Service implements SalarySendService
if (ObjectUtils.isEmpty(salarySendPO)) {
throw new SalaryRunTimeException("工资单不存在");
}
// 获取记录首次查看时间
Date firstReadingTime = new Date();
if (salarySendInfo.getFirstReadingTime() == null) {
salarySendInfo.setFirstReadingTime(firstReadingTime);
getSalarySendInfoMapper().updateIgnoreNull(salarySendInfo);
} else {
firstReadingTime = salarySendInfo.getFirstReadingTime();
}
// 获取首次查看后多少分钟不能查看工资单0代表一旦查看后无法再次查看null代表不限制
Integer burningAfterReadingMin = getSalaryBillBaseSetService(user).getBurningAfterReadingMin();
if (burningAfterReadingMin != null) {
LocalDateTime limitTime = SalaryDateUtil.dateToLocalDateTime(firstReadingTime).plusMinutes(burningAfterReadingMin);
LocalDateTime now = SalaryDateUtil.dateToLocalDateTime(new Date());
if (limitTime.isAfter(now)) {
throw new SalaryRunTimeException("首次查看工资单" + burningAfterReadingMin + "分钟后,无法查看工资单");
}
}
// 更新查看状态
if (salarySendInfo.getBillReadStatus() == null || NumberUtils.compare(salarySendInfo.getBillReadStatus(), BillReadStatusEnum.UNREAD.getValue()) == 0) {
salarySendInfo.setBillReadStatus(BillReadStatusEnum.READED.getValue());

View File

@ -111,6 +111,11 @@ public class SalarySysConstant {
*/
public static final String SALARY_BILL_VIEWING_LIMIT_MONTH = "SALARY_BILL_VIEWING_LIMIT_MONTH";
/**
* 首次查看后多少分钟不能查看工资单
*/
public static final String SALARY_BILL_BURNING_AFTER_READING_MIN= "SALARY_BILL_BURNING_AFTER_READING_MIN";
/**
* 核算固定列头数
*/

View File

@ -49,6 +49,8 @@ public class SalaryBillBaseSetWrapper extends Service {
SalaryBillWatermarkDTO salaryBillWatermark = getSalaryBillBaseSetService(user).getWatermarkSetting();
SalaryBillAckFeedbackDTO salaryBillAckFeedback = getSalaryBillBaseSetService(user).getDefaultAckFeedbackSetting();
salaryBillViewingLimitSetting salaryBillViewingLimitSetting = getSalaryBillBaseSetService(user).getSalaryBillViewingLimitSetting();
Integer burningAfterReadingMin = getSalaryBillBaseSetService(user).getBurningAfterReadingMin();
salaryBillViewingLimitSetting.setBurningAfterReadingMin(burningAfterReadingMin);
if (Objects.isNull(salaryBillWatermark)) {
dto.setWatermarkStatus(false);