薪资核算记录 批量新建并核算

This commit is contained in:
Harryxzy 2025-06-09 10:42:23 +08:00
parent e9e3483c8b
commit d8d46cd932
12 changed files with 101 additions and 12 deletions

View File

@ -106,6 +106,7 @@ public class SalaryAcctRecordBO {
.updateTime(SalaryDateUtil.getFormatLocalDateTime(salaryAcctRecordPO.getUpdateTime()))
.description(salaryAcctRecordPO.getDescription())
.approvalStatus(salaryAcctRecordPO.getApprovalStatus())
.runStatus(salaryAcctRecordPO.getRunStatus())
.operate(btnList)
.build();
}).collect(Collectors.toList());
@ -122,7 +123,7 @@ public class SalaryAcctRecordBO {
*/
public static SalaryAcctRecordPO convert2PO(SalaryAcctRecordSaveParam saveParam,
SalarySobCycleDTO salarySobCycle,
int acctTimes, Long employeeId) {
int acctTimes, Long employeeId, String runStatus) {
Date now = new Date();
return new SalaryAcctRecordPO()
.setSalaryMonth(SalaryDateUtil.localDateToDate(saveParam.getSalaryMonth().atDay(1)))
@ -136,6 +137,7 @@ public class SalaryAcctRecordBO {
.setCreator(employeeId)
.setCreateTime(now)
.setUpdateTime(now)
.setRunStatus(runStatus)
.setTenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY);
}

View File

@ -76,6 +76,9 @@ public class SalaryAcctRecordListDTO {
@TableTitle(title = "审批状态", dataIndex = "approvalStatus", key = "approvalStatus")
private String approvalStatus;
@TableTitle(title = "执行状态", dataIndex = "runStatus", key = "runStatus")
private String runStatus;
@TableTitle(title = "操作", dataIndex = "operate", key = "operate")
private List<WeaTableOperate> operate;
}

View File

@ -0,0 +1,37 @@
package com.engine.salary.entity.salaryacct.param;
import com.engine.salary.util.valid.DataCheck;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
import java.util.List;
/**
* @author Harryxzy
* @ClassName SalaryAcctRecordBatchSaveParam
* @date 2025/06/09 9:45
* @description 薪资核算基本信息保存参数
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
//薪资核算基本信息保存参数
public class SalaryAcctRecordBatchSaveParam {
//薪资所属月
@DataCheck(require = true, message = "薪资所属月格式错误")
private Date salaryMonth;
private String salaryMonthStr;
//薪资账套id
private List<Long> salarySobIds;
//备注
@DataCheck(max = 80, message = "备注不能超过80个字符")
private String description;
}

View File

@ -36,4 +36,6 @@ public class SalaryAcctRecordSaveParam {
//备注
@DataCheck(max = 80, message = "备注不能超过80个字符")
private String description;
private String runStatus;
}

View File

@ -137,6 +137,11 @@ public class SalaryAcctRecordPO {
@Deprecated
private List<Long> lockSalaryItemIds;
/**
* 执行状态
*/
private String runStatus;
//查询条件-------------------------------
Collection<Long> ids;

View File

@ -80,5 +80,5 @@ public interface SalaryAcctRecordMapper {
List<SalaryAcctRecordPO> getBackCalcRecordByIds(@Param("collection") Set<Long> salaryAcctIds);
void updateDate(@Param("id")Long id, @Param("updateTime")Date updateTime);
void updateDate(@Param("id")Long id, @Param("updateTime")Date updateTime, @Param("runStatus")String runStatus);
}

View File

@ -16,6 +16,7 @@
<result column="tenant_key" property="tenantKey"/>
<result column="back_calc_status" property="backCalcStatus"/>
<result column="lock_salary_item_ids" property="lockSalaryItemIds" typeHandler="com.engine.salary.handle.SalaryListTypeHandler"/>
<result column="run_status" property="runStatus"/>
</resultMap>
<!-- 表字段 -->
@ -38,6 +39,7 @@
, t.lock_salary_item_ids
, t.approval_status
, t.approval_id
, t.run_status
</sql>
<!-- 查询全部 -->
@ -203,6 +205,9 @@
<if test="tenantKey != null">
tenant_key,
</if>
<if test="runStatus != null">
run_status,
</if>
</trim>
<trim prefix="VALUES (" suffix=")" suffixOverrides=",">
<if test="id != null">
@ -241,6 +246,9 @@
<if test="tenantKey != null">
#{tenantKey},
</if>
<if test="runStatus != null">
#{runStatus},
</if>
</trim>
</insert>
@ -289,6 +297,9 @@
<if test="tenantKey != null">
tenant_key,
</if>
<if test="runStatus != null">
run_status,
</if>
</trim>
<trim prefix="VALUES (" suffix=")" suffixOverrides=",">
<if test="id != null">
@ -327,6 +338,9 @@
<if test="tenantKey != null">
#{tenantKey},
</if>
<if test="runStatus != null">
#{runStatus},
</if>
</trim>
</insert>
@ -432,7 +446,8 @@
<update id="updateDate">
UPDATE hrsa_salary_acct_record
SET update_time=#{updateTime}
SET update_time=#{updateTime},
run_status=#{runStatus}
WHERE delete_type = 0
AND id = #{id}
</update>

View File

@ -210,7 +210,7 @@ public interface SalaryAcctRecordService {
List<SalaryAcctRecordPO> listSome(SalaryAcctRecordPO po);
void updateDate(Long id, Date updateTime);
void updateDate(Long id, Date updateTime, String runStatus);
void batSave(SalaryAcctBatParam saveParam);

View File

@ -40,6 +40,7 @@ import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.math.NumberUtils;
import weaver.hrm.User;
import weaver.wechat.util.Utils;
import java.time.YearMonth;
import java.util.*;
@ -310,7 +311,7 @@ public class SalaryAcctRecordServiceImpl extends Service implements SalaryAcctRe
.count();
// 转换成po
SalaryAcctRecordPO salaryAcctRecordPO = SalaryAcctRecordBO.convert2PO(saveParam, salarySobCycleDTO, (int) acctTimes, (long) user.getUID());
SalaryAcctRecordPO salaryAcctRecordPO = SalaryAcctRecordBO.convert2PO(saveParam, salarySobCycleDTO, (int) acctTimes, (long) user.getUID(), Utils.null2String(saveParam.getRunStatus()));
// 保存薪资核算记录
getSalaryAcctRecordMapper().insertIgnoreNull(salaryAcctRecordPO);
// 初始化薪资核算人员
@ -844,8 +845,8 @@ public class SalaryAcctRecordServiceImpl extends Service implements SalaryAcctRe
}
@Override
public void updateDate(Long id, Date updateTime) {
getSalaryAcctRecordMapper().updateDate(id, updateTime);
public void updateDate(Long id, Date updateTime, String runStatus) {
getSalaryAcctRecordMapper().updateDate(id, updateTime, runStatus);
}
@Override

View File

@ -927,7 +927,7 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe
getSalaryAcctProgressService(user).finish(SalaryCacheKey.ACCT_PROGRESS + calculateParam.getSalaryAcctRecordId(), true);
//更新薪资核算记录最后操作日期
getSalaryAcctRecordService(user).updateDate(salaryAcctRecordPO.getId(), new Date());
getSalaryAcctRecordService(user).updateDate(salaryAcctRecordPO.getId(), new Date(), "核算完成");
stopWatch.stop();
log.info(stopWatch.prettyPrint());

View File

@ -141,6 +141,16 @@ public class SalaryAcctController {
return new ResponseResult<Long, Long>(user).run(getSalaryAcctRecordWrapper(user)::reCalculate, param.getSalaryAcctRecordId());
}
//批量保存并核算
@POST
@Path("/batSaveAndAcct")
@Produces(MediaType.APPLICATION_JSON)
public String batSaveAndAcct(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryAcctRecordBatchSaveParam param) {
User user = HrmUserVarify.getUser(request, response);
return new ResponseResult<SalaryAcctRecordBatchSaveParam, List<Long>>(user).run(getSalaryAcctRecordWrapper(user)::batSaveAndAcct, param);
}
//薪资核算
@POST
@Path("/batAccounting")

View File

@ -10,10 +10,7 @@ import com.engine.salary.entity.salaryacct.bo.SalaryAcctRecordBO;
import com.engine.salary.entity.salaryacct.dto.SalaryAcctEmployeeCountDTO;
import com.engine.salary.entity.salaryacct.dto.SalaryAcctRecordFormDTO;
import com.engine.salary.entity.salaryacct.dto.SalaryAcctRecordListDTO;
import com.engine.salary.entity.salaryacct.param.SalaryAcctBatParam;
import com.engine.salary.entity.salaryacct.param.SalaryAcctCalculateParam;
import com.engine.salary.entity.salaryacct.param.SalaryAcctRecordQueryParam;
import com.engine.salary.entity.salaryacct.param.SalaryAcctRecordSaveParam;
import com.engine.salary.entity.salaryacct.param.*;
import com.engine.salary.entity.salaryacct.po.SalaryAcctRecordPO;
import com.engine.salary.entity.salaryacct.po.SalaryAcctSobConfigPO;
import com.engine.salary.entity.salarysob.dto.SalarySobCycleDTO;
@ -424,4 +421,21 @@ public class SalaryAcctRecordWrapper extends Service implements SalaryAcctRecord
getSalaryAcctResultWrapper(user).calculate(calculateParam);
}
}
public List<Long> batSaveAndAcct(SalaryAcctRecordBatchSaveParam saveParam) {
List<Long> ids = saveParam.getSalarySobIds().stream().map(salarySobId -> {
SalaryAcctRecordSaveParam build = SalaryAcctRecordSaveParam.builder()
.salarySobId(salarySobId)
.salaryMonth(SalaryDateUtil.localDate2YearMonth(saveParam.getSalaryMonth()))
.description(saveParam.getDescription())
.runStatus("核算中")
.build();
return save(build);
}).collect(Collectors.toList());
ids.forEach(salaryAcctRecordId -> {
getSalaryAcctResultWrapper(user).calculate(SalaryAcctCalculateParam.builder().salaryAcctRecordId(salaryAcctRecordId).build());
});
return ids;
}
}