工资单自动确认
This commit is contained in:
parent
33a0723ad2
commit
5dc2dadd46
|
|
@ -5,21 +5,22 @@ import com.engine.salary.enums.BaseEnum;
|
|||
import java.util.Arrays;
|
||||
|
||||
/**
|
||||
* @ClassName BillReadStatusEnum
|
||||
* @ClassName BillConfimStatusEnum
|
||||
* @author Harryxzy
|
||||
* @date 2023/7/10 17:13
|
||||
* @date 2023/7/10 17:03
|
||||
* @description 工资单确认
|
||||
*/
|
||||
public enum BillConfimStatusEnum implements BaseEnum<Integer> {
|
||||
|
||||
UNCONFIRMED(0, "未确认", 93286),
|
||||
CONFIRMED(1, "已确认", 93212);
|
||||
CONFIRMED(1, "已确认", 93212),
|
||||
AUTOCONFIRMED(3, "自动确认", 93212);
|
||||
|
||||
private int value;
|
||||
private final int value;
|
||||
|
||||
private String defaultLabel;
|
||||
private final String defaultLabel;
|
||||
|
||||
private int labelId;
|
||||
private final int labelId;
|
||||
|
||||
BillConfimStatusEnum(int value, String defaultLabel, int labelId) {
|
||||
this.value = value;
|
||||
|
|
@ -48,7 +49,7 @@ public enum BillConfimStatusEnum implements BaseEnum<Integer> {
|
|||
}
|
||||
BillConfimStatusEnum[] enumAry = BillConfimStatusEnum.values();
|
||||
for(int i = 0; i < Arrays.asList(enumAry).size(); i++){
|
||||
if (Integer.valueOf(enumAry[i].getValue()).equals(value)) {
|
||||
if (enumAry[i].getValue().equals(value)) {
|
||||
return enumAry[i].getDefaultLabel();
|
||||
}
|
||||
}
|
||||
|
|
@ -61,7 +62,7 @@ public enum BillConfimStatusEnum implements BaseEnum<Integer> {
|
|||
}
|
||||
BillConfimStatusEnum[] enumAry = BillConfimStatusEnum.values();
|
||||
for(int i = 0; i < Arrays.asList(enumAry).size(); i++){
|
||||
if (Integer.valueOf(enumAry[i].getValue()).equals(value)) {
|
||||
if (enumAry[i].getValue().equals(value)) {
|
||||
return enumAry[i].name();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -101,4 +101,10 @@ public interface SalarySendInfoMapper {
|
|||
void deleteBySalaryAcctRecordIds(@Param("salaryAcctRecordId") Collection<Long> ids);
|
||||
|
||||
List<SalarySendInfoPO> getNeedSendInfoList(@Param("salarySendIds") List<Long> salarySendIds);
|
||||
|
||||
/**
|
||||
* 自动确认工资单
|
||||
* @param needAutoIds
|
||||
*/
|
||||
void autoConfirmSalaryBill(@Param("ids") List<Long> needAutoIds);
|
||||
}
|
||||
|
|
@ -687,6 +687,12 @@
|
|||
<if test="tenantKey != null and tenantKey != ''">
|
||||
AND tenant_key = #{tenantKey}
|
||||
</if>
|
||||
<if test="billConfirmStatus != null and billConfirmStatus != ''">
|
||||
AND bill_confirm_status = #{billConfirmStatus}
|
||||
</if>
|
||||
<if test="billReadStatus != null and billReadStatus != ''">
|
||||
AND bill_read_status = #{billReadStatus}
|
||||
</if>
|
||||
ORDER BY id DESC
|
||||
</select>
|
||||
<select id="getNeedSendInfoList" resultType="com.engine.salary.entity.salaryBill.po.SalarySendInfoPO">
|
||||
|
|
@ -756,5 +762,18 @@
|
|||
</set>
|
||||
WHERE id = #{id} AND delete_type = 0
|
||||
</update>
|
||||
<update id="autoConfirmSalaryBill">
|
||||
UPDATE hrsa_salary_send_info
|
||||
set
|
||||
confirm_status = 2
|
||||
where
|
||||
delete_type = 0
|
||||
<if test="ids != null and ids.size() > 0">
|
||||
AND id IN
|
||||
<foreach collection="ids" open="(" item="id" separator="," close=")">
|
||||
#{id}
|
||||
</foreach>
|
||||
</if>
|
||||
</update>
|
||||
|
||||
</mapper>
|
||||
|
|
|
|||
|
|
@ -201,4 +201,17 @@ public interface SalarySendService {
|
|||
* @return
|
||||
*/
|
||||
List<SalarySendPO> getNeedSendListBySalarySobIds(List<Long> salarySobIds);
|
||||
|
||||
/**
|
||||
* 获取所有为确认的工资单
|
||||
* @return
|
||||
* @return
|
||||
*/
|
||||
List<SalarySendInfoPO> listAllUnConfirmedSendInfo();
|
||||
|
||||
/**
|
||||
* 自动确认工资单
|
||||
* @param needAutoIds
|
||||
*/
|
||||
void autoConfirmSalaryBill(List<Long> needAutoIds);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -629,7 +629,7 @@ public class SalarySendServiceImpl extends Service implements SalarySendService
|
|||
*/
|
||||
private void handleSalaryWatermark(SalaryTemplatePO salaryTemplate, SalarySendInfoPO salarySendInfo, Long currentEmployeeId) {
|
||||
SalaryBillWatermarkDTO salaryBillWatermark = JsonUtil.parseObject(salaryTemplate.getSalaryWatermark(), SalaryBillWatermarkDTO.class);
|
||||
if (Objects.isNull(salaryBillWatermark) || !salaryBillWatermark.getWatermarkStatus() ) {
|
||||
if (Objects.isNull(salaryBillWatermark) || Boolean.FALSE.equals(salaryBillWatermark.getWatermarkStatus()) ) {
|
||||
return;
|
||||
}
|
||||
// 发送时已经处理好变量字段,可直接获取判断
|
||||
|
|
@ -666,18 +666,17 @@ public class SalarySendServiceImpl extends Service implements SalarySendService
|
|||
SalarySysConfPO needFeedBack = getSalarySysConfService(user).getOneByCode(SalarySysConstant.SALARY_SEND_FEEDBACK);
|
||||
if(ObjectUtils.isNotEmpty(needFeedBack) && StringUtils.equals(needFeedBack.getConfValue(),"1")){
|
||||
// 默认为空时,未读未确认
|
||||
pageInfo.getList().stream().forEach(dto -> {
|
||||
if(StringUtils.isBlank(((SalarySendInfoListDTO)dto).getBillReadStatus() )){
|
||||
((SalarySendInfoListDTO) dto).setBillReadStatus(BillReadStatusEnum.UNREAD.getDefaultLabel());
|
||||
}else{
|
||||
((SalarySendInfoListDTO) dto).setBillReadStatus(
|
||||
BillReadStatusEnum.getDefaultLabelByValue( Integer.valueOf(((SalarySendInfoListDTO)dto).getBillReadStatus()) ));
|
||||
pageInfo.getList().stream().forEach(obj -> {
|
||||
SalarySendInfoListDTO dto = (SalarySendInfoListDTO) obj;
|
||||
if (StringUtils.isBlank( dto.getBillReadStatus() )){
|
||||
dto.setBillReadStatus(BillReadStatusEnum.UNREAD.getDefaultLabel());
|
||||
} else {
|
||||
dto.setBillReadStatus(BillReadStatusEnum.getDefaultLabelByValue( Integer.valueOf(dto.getBillReadStatus()) ));
|
||||
}
|
||||
if(StringUtils.isBlank(((SalarySendInfoListDTO)dto).getBillConfirmStatus() )){
|
||||
((SalarySendInfoListDTO) dto).setBillConfirmStatus(BillConfimStatusEnum.UNCONFIRMED.getDefaultLabel());
|
||||
}else {
|
||||
((SalarySendInfoListDTO) dto).setBillConfirmStatus(
|
||||
BillConfimStatusEnum.getDefaultLabelByValue( Integer.valueOf(((SalarySendInfoListDTO)dto).getBillConfirmStatus()) ));
|
||||
if (StringUtils.isBlank(dto.getBillConfirmStatus())){
|
||||
dto.setBillConfirmStatus(BillConfimStatusEnum.UNCONFIRMED.getDefaultLabel());
|
||||
} else {
|
||||
dto.setBillConfirmStatus(BillConfimStatusEnum.getDefaultLabelByValue( Integer.valueOf(dto.getBillConfirmStatus()) ));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
@ -997,9 +996,9 @@ public class SalarySendServiceImpl extends Service implements SalarySendService
|
|||
if (isReplenish && StringUtils.isNotEmpty(salaryTemplate.getReplenishSalaryItemSetting())) {
|
||||
List<SalaryTemplateSalaryItemSetListDTO> salaryTemplateShowSetData = JsonUtil.parseList(salaryTemplate.getReplenishSalaryItemSetting(),
|
||||
SalaryTemplateSalaryItemSetListDTO.class);
|
||||
salaryTemplateShowSetData.stream().filter(f -> !f.getGroupId().equals(SalaryTemplateSalaryItemSetGroupConstant.EMPLOYEE_INFO_GROUP_ID)).forEach(e -> {
|
||||
salaryItems.addAll(e.getItems());
|
||||
});
|
||||
salaryTemplateShowSetData.stream().filter(f -> !f.getGroupId().equals(SalaryTemplateSalaryItemSetGroupConstant.EMPLOYEE_INFO_GROUP_ID)).forEach(e ->
|
||||
salaryItems.addAll(e.getItems())
|
||||
);
|
||||
}
|
||||
return salaryItems;
|
||||
}
|
||||
|
|
@ -1477,7 +1476,6 @@ public class SalarySendServiceImpl extends Service implements SalarySendService
|
|||
if (Objects.isNull(salarySendPO)) {
|
||||
throw new SalaryRunTimeException("工资发放记录不存在或已被删除");
|
||||
}
|
||||
// return getSalaryAcctResultService(user).sumRow();
|
||||
|
||||
SalaryAcctResultQueryParam queryParam = SalaryAcctResultQueryParam.builder().salaryAcctRecordId(salarySendPO.getSalaryAccountingId()).build();
|
||||
// 查询薪资核算人员
|
||||
|
|
@ -1485,7 +1483,7 @@ public class SalarySendServiceImpl extends Service implements SalarySendService
|
|||
.listByResultQueryParam(queryParam);
|
||||
|
||||
if (org.apache.commons.collections4.CollectionUtils.isEmpty(salaryAcctEmployeePOS)) {
|
||||
return null;
|
||||
return Collections.emptyMap();
|
||||
}
|
||||
// 查询薪资核算记录
|
||||
SalaryAcctRecordPO salaryAcctRecordPO = getSalaryAcctRecordService(user).getById(queryParam.getSalaryAcctRecordId());
|
||||
|
|
@ -1508,7 +1506,7 @@ public class SalarySendServiceImpl extends Service implements SalarySendService
|
|||
// 是否是补发工资单
|
||||
List<SalarySendInfoPO> salarySendInfoPOS = getSalarySendInfoMapper().listSome(SalarySendInfoPO.builder().salarySendId(salarySendId).build());
|
||||
List<Long> sendEmployeeIds = salarySendInfoPOS.stream().map(SalarySendInfoPO::getEmployeeId).collect(Collectors.toList());
|
||||
salaryAcctResultPOS = salaryAcctResultPOS.stream().filter(PO -> sendEmployeeIds.contains(PO.getEmployeeId())).collect(Collectors.toList());
|
||||
salaryAcctResultPOS = salaryAcctResultPOS.stream().filter(po -> sendEmployeeIds.contains(po.getEmployeeId())).collect(Collectors.toList());
|
||||
|
||||
Map<String, Object> map = new HashMap<>();
|
||||
Map<Long, List<SalaryAcctResultPO>> acctResultMap = SalaryEntityUtil.group2Map(salaryAcctResultPOS, SalaryAcctResultPO::getSalaryItemId);
|
||||
|
|
@ -1610,4 +1608,17 @@ public class SalarySendServiceImpl extends Service implements SalarySendService
|
|||
}
|
||||
return getSalarySendMapper().getNeedSendListBySalarySobIds(salarySobIds);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<SalarySendInfoPO> listAllUnConfirmedSendInfo() {
|
||||
return getSalarySendInfoMapper().listSome(SalarySendInfoPO.builder().billConfirmStatus(BillConfimStatusEnum.UNCONFIRMED.getValue()).build());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void autoConfirmSalaryBill(List<Long> needAutoSendIds) {
|
||||
if(CollectionUtils.isEmpty(needAutoSendIds)){
|
||||
return;
|
||||
}
|
||||
getSalarySendInfoMapper().autoConfirmSalaryBill(needAutoSendIds);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -85,4 +85,10 @@ public class SalarySysConstant {
|
|||
* 工资单反馈
|
||||
*/
|
||||
public static final String SALARY_SEND_FEEDBACK = "SALARY_SEND_FEEDBACK";
|
||||
|
||||
/**
|
||||
* 工资单反馈自动确认
|
||||
*/
|
||||
public static final String SALARY_AUTO_CONFIRM = "SALARY_AUTO_CONFIRM";
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,63 @@
|
|||
package com.engine.salary.timer;
|
||||
|
||||
import com.engine.common.util.ServiceUtil;
|
||||
import com.engine.salary.entity.salaryBill.po.SalarySendInfoPO;
|
||||
import com.engine.salary.service.SalarySendService;
|
||||
import com.engine.salary.service.impl.SalarySendServiceImpl;
|
||||
import com.engine.salary.sys.constant.SalarySysConstant;
|
||||
import com.engine.salary.sys.entity.po.SalarySysConfPO;
|
||||
import com.engine.salary.sys.service.SalarySysConfService;
|
||||
import com.engine.salary.sys.service.impl.SalarySysConfServiceImpl;
|
||||
import com.engine.salary.util.SalaryDateUtil;
|
||||
import org.apache.commons.lang3.ObjectUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.commons.lang3.math.NumberUtils;
|
||||
import weaver.hrm.User;
|
||||
import weaver.interfaces.schedule.BaseCronJob;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.temporal.ChronoUnit;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @author Harryxzy
|
||||
* @ClassName AutoConfirmSalaryBill
|
||||
* @date 2023/07/11 15:50
|
||||
* @description 自动确认工资单
|
||||
*/
|
||||
public class AutoConfirmSalaryBillCronJob extends BaseCronJob {
|
||||
private SalarySendService getSalarySendService(User user) {
|
||||
return ServiceUtil.getService(SalarySendServiceImpl.class, user);
|
||||
}
|
||||
|
||||
private SalarySysConfService getSalarySysConfService(User user) {
|
||||
return ServiceUtil.getService(SalarySysConfServiceImpl.class, user);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute() {
|
||||
User user = new User();
|
||||
user.setUid(1);
|
||||
user.setLoginid("sysadmin");
|
||||
// 获取超时时间
|
||||
SalarySysConfPO feedbackPO = getSalarySysConfService(user).getOneByCode(SalarySysConstant.SALARY_SEND_FEEDBACK);
|
||||
if(ObjectUtils.isEmpty(feedbackPO) || StringUtils.equals(feedbackPO.getConfValue(), "0")){
|
||||
return;
|
||||
}
|
||||
SalarySysConfPO salaryAutoConfirmPO = getSalarySysConfService(user).getOneByCode(SalarySysConstant.SALARY_AUTO_CONFIRM);
|
||||
Long timeOutDays = ObjectUtils.isNotEmpty(salaryAutoConfirmPO) && NumberUtils.isCreatable(salaryAutoConfirmPO.getConfValue()) ?
|
||||
Long.valueOf(salaryAutoConfirmPO.getConfValue()) : 7L;
|
||||
LocalDateTime now = LocalDateTime.now();
|
||||
// 获取所有确认状态为 未确认的工资单
|
||||
List<SalarySendInfoPO> unConfirmedList = getSalarySendService(user).listAllUnConfirmedSendInfo();
|
||||
List<Long> needAutoIds = unConfirmedList.stream().filter(po -> {
|
||||
LocalDateTime sendDateTime = SalaryDateUtil.dateToLocalDateTime(po.getSendTime());
|
||||
LocalDateTime autoDateTime = sendDateTime.plus(timeOutDays, ChronoUnit.DAYS);
|
||||
return !autoDateTime.isAfter(now);
|
||||
}).map(SalarySendInfoPO::getId).collect(Collectors.toList());
|
||||
// 自动确认
|
||||
getSalarySendService(user).autoConfirmSalaryBill(needAutoIds);
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
Reference in New Issue