Merge branch 'feature/240301_阅后即焚' into release/3.0.0.2403.01

This commit is contained in:
Harryxzy 2024-03-15 09:19:03 +08:00
commit b17d2b70de
8 changed files with 59 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
@ -616,6 +617,7 @@
hrsa_salary_send_info
<set>
first_reading_time = null,
<if test="po.sendStatus != null">
send_status = #{po.sendStatus},
</if>
@ -794,6 +796,9 @@
<if test="billConfirmStatus != null">
bill_confirm_status=#{billConfirmStatus},
</if>
<if test=" firstReadingTime!= null">
first_reading_time=#{firstReadingTime},
</if>
</set>
WHERE id = #{id} AND delete_type = 0
</update>

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.isBefore(now)) {
throw new SalaryRunTimeException("首次查看工资单" + burningAfterReadingMin + "分钟后,无法查看工资单。首次查看时间为:" + SalaryDateUtil.getFormatLocalDateTime(firstReadingTime));
}
}
}
// 更新查看状态
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);