阅后即焚
This commit is contained in:
parent
20d7266db9
commit
78d4f5e2ae
|
|
@ -25,4 +25,9 @@ public class salaryBillViewingLimitSetting {
|
|||
*/
|
||||
private Integer limitMonth;
|
||||
|
||||
/**
|
||||
* 首次查看后多少分钟不能查看工资单
|
||||
*/
|
||||
private Integer burningAfterReadingMin;
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -116,4 +116,9 @@ public class SalarySendInfoPO {
|
|||
* 租户ID
|
||||
*/
|
||||
private String tenantKey;
|
||||
|
||||
/**
|
||||
* 首次查看时间
|
||||
*/
|
||||
private Date firstReadingTime;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -56,5 +56,11 @@ public interface SalaryBillBaseSetService {
|
|||
*/
|
||||
salaryBillViewingLimitSetting getSalaryBillViewingLimitSetting();
|
||||
|
||||
/**
|
||||
* 获取首次查看后多少分钟不能查看工资单(0代表一旦查看后无法再次查看)
|
||||
* @return
|
||||
*/
|
||||
Integer getBurningAfterReadingMin();
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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());
|
||||
|
|
|
|||
|
|
@ -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";
|
||||
|
||||
/**
|
||||
* 核算固定列头数
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
Loading…
Reference in New Issue