薪资核算结果编辑导入 记录

This commit is contained in:
Harryxzy 2023-05-15 10:28:17 +08:00
parent eaaf6359af
commit 4ff15ca651
10 changed files with 840 additions and 12 deletions

View File

@ -0,0 +1,40 @@
package com.engine.salary.entity.salaryacct.bo;
import com.engine.salary.entity.salaryacct.po.SalaryAcctResultLogPO;
import com.engine.salary.entity.salaryacct.po.SalaryAcctResultPO;
import com.engine.salary.enums.salaryaccounting.SalaryAcctResultDataSourceEnum;
import dm.jdbc.util.IdGenerator;
import org.apache.commons.lang3.math.NumberUtils;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
* @author Harryxzy
* @date 2023/05/12 16:54
* @description
*/
public class SalaryAcctResultLogBO {
public static List<SalaryAcctResultLogPO> buildSalaryAcctResultLog(List<SalaryAcctResultPO> salaryAcctResultList, Long uid, SalaryAcctResultDataSourceEnum datasource){
Date now = new Date();
List<SalaryAcctResultLogPO> needInsertList = new ArrayList<>();
salaryAcctResultList.stream().forEach(PO -> {
needInsertList.add(SalaryAcctResultLogPO.builder()
.id(IdGenerator.generate())
.datasource(datasource.getValue())
.salaryAcctRecordId(PO.getSalaryAcctRecordId())
.salaryAcctResultId(PO.getId())
.salaryAcctEmpId(PO.getSalaryAcctEmpId())
.salaryItemId(PO.getSalaryItemId())
.employeeId(PO.getEmployeeId())
.operator(uid)
.operateTime(now)
.deleteType(NumberUtils.INTEGER_ZERO)
.updateTime(now)
.build());
});
return needInsertList;
}
}

View File

@ -0,0 +1,73 @@
package com.engine.salary.entity.salaryacct.param;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
/**
* @author Harryxzy
* @date 2023/05/12 15:14
* @description 薪资核算结果来源
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class SalaryAcctResultLogQueryParam {
/**
* 主键id
*/
private Long id;
/**
* 数据来源:1:手动编辑2导入
*/
private Integer datasource;
/**
* 薪资核算记录id
*/
private Long salaryAcctRecordId;
/**
* 薪资核算结果id
*/
private Long salaryAcctResultId;
/**
* 薪资核算人员id
*/
private Long salaryAcctEmpId;
/**
* 薪资项目id
*/
private Long salaryItemId;
/**
* 人员id
*/
private Long employeeId;
/**
* 操作人
*/
private Long operator;
/**
* 操作时间
*/
private Date operateTime;
/**
* 是否已删除0未删除1已删除
*/
private Integer deleteType;
}

View File

@ -0,0 +1,75 @@
package com.engine.salary.entity.salaryacct.po;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
/**
* @author Harryxzy
* @date 2023/05/12 15:14
* @description 薪资核算结果来源
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class SalaryAcctResultLogPO {
/**
* 主键id
*/
private Long id;
/**
* 数据来源:1:手动编辑2导入
*/
private Integer datasource;
/**
* 薪资核算记录id
*/
private Long salaryAcctRecordId;
/**
* 薪资核算结果id
*/
private Long salaryAcctResultId;
/**
* 薪资核算人员id
*/
private Long salaryAcctEmpId;
/**
* 薪资项目id
*/
private Long salaryItemId;
/**
* 人员id
*/
private Long employeeId;
/**
* 操作人
*/
private Long operator;
/**
* 操作时间
*/
private Date operateTime;
/**
* 是否已删除0未删除1已删除
*/
private Integer deleteType;
private Date updateTime;
}

View File

@ -0,0 +1,56 @@
package com.engine.salary.enums.salaryaccounting;
import com.engine.salary.enums.BaseEnum;
import java.util.Objects;
/**
* 薪资核算结果的数据来源
* <p>Copyright: Copyright (c) 2022</p>
* <p>Company: 泛微软件</p>
*
* @author qiantao
* @version 1.0
**/
public enum SalaryAcctResultDataSourceEnum implements BaseEnum<Integer> {
EDIT(1, "手动编辑", 91870),
IMPORT(2, "导入", 91862)
;
private int value;
private String defaultLabel;
private int labelId;
SalaryAcctResultDataSourceEnum(int value, String defaultLabel, int labelId) {
this.value = value;
this.defaultLabel = defaultLabel;
this.labelId = labelId;
}
@Override
public Integer getValue() {
return value;
}
@Override
public Integer getLabelId() {
return labelId;
}
@Override
public String getDefaultLabel() {
return defaultLabel;
}
public static SalaryAcctResultDataSourceEnum parseByValue(Integer value) {
for (SalaryAcctResultDataSourceEnum SalaryAcctResultDataSourceEnum : SalaryAcctResultDataSourceEnum.values()) {
if (Objects.equals(SalaryAcctResultDataSourceEnum.getValue(), value)) {
return SalaryAcctResultDataSourceEnum;
}
}
return null;
}
}

View File

@ -0,0 +1,81 @@
package com.engine.salary.mapper.salaryacct;
import com.engine.salary.entity.salaryacct.param.SalaryAcctResultLogQueryParam;
import com.engine.salary.entity.salaryacct.po.SalaryAcctResultLogPO;
import org.apache.ibatis.annotations.Param;
import java.util.Collection;
import java.util.Date;
import java.util.List;
/**
* @author Harryxzy
* @date 2023/05/12 15:21
* @description
*/
public interface SalaryAcctResultLogMapper {
/**
* 查询所有记录
*
* @return 返回集合没有返回空List
*/
List<SalaryAcctResultLogPO> listAll();
/**
* 条件查询
*
* @return 返回集合没有返回空List
*/
List<SalaryAcctResultLogPO> listSome(SalaryAcctResultLogQueryParam queryParam);
/**
* 根据主键查询
*
* @param id 主键
* @return 返回记录没有返回null
*/
SalaryAcctResultLogPO getById(Long id);
/**
* 新增忽略null字段
*
* @param salaryAcctResultLog 新增的记录
* @return 返回影响行数
*/
int insertIgnoreNull(SalaryAcctResultLogPO salaryAcctResultLog);
/**
* 修改修改所有字段
*
* @param salaryAcctResultLog 修改的记录
* @return 返回影响行数
*/
int update(SalaryAcctResultLogPO salaryAcctResultLog);
/**
* 修改忽略null字段
*
* @param salaryAcctResultLog 修改的记录
* @return 返回影响行数
*/
int updateIgnoreNull(SalaryAcctResultLogPO salaryAcctResultLog);
/**
* 删除记录
*
* @param salaryAcctResultLog 待删除的记录
* @return 返回影响行数
*/
int delete(SalaryAcctResultLogPO salaryAcctResultLog);
void batchInsert(List<SalaryAcctResultLogPO> SalaryAcctResultLogList);
/**
* 根据薪资核算人员删除数据,除了已经锁定的值
* @param salaryAcctEmployeeIds
* @param lockSalaryItemIds
*/
void deleteBySalaryAcctEmpIdExceptItemIds(@Param("salaryAcctEmployeeIds") Collection<Long> salaryAcctEmployeeIds,
@Param("exceptItems") Collection<Long> lockSalaryItemIds, @Param("updateTime") Date updateTime);
}

View File

@ -0,0 +1,306 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.engine.salary.mapper.salaryacct.SalaryAcctResultLogMapper">
<resultMap id="BaseResultMap" type="com.engine.salary.entity.salaryacct.po.SalaryAcctResultLogPO">
<result column="datasource" property="datasource" />
<result column="delete_type" property="deleteType" />
<result column="employee_id" property="employeeId" />
<result column="id" property="id" />
<result column="operate_time" property="operateTime" />
<result column="operator" property="operator" />
<result column="salary_acct_emp_id" property="salaryAcctEmpId" />
<result column="salary_acct_record_id" property="salaryAcctRecordId" />
<result column="salary_acct_result_id" property="salaryAcctResultId" />
<result column="salary_item_id" property="salaryItemId" />
</resultMap>
<!-- 表字段 -->
<sql id="baseColumns">
t.datasource
, t.delete_type
, t.employee_id
, t.id
, t.operate_time
, t.operator
, t.salary_acct_emp_id
, t.salary_acct_record_id
, t.salary_acct_result_id
, t.salary_item_id
</sql>
<!-- 查询全部 -->
<select id="listAll" resultMap="BaseResultMap">
SELECT
<include refid="baseColumns" />
FROM hrsa_salary_acct_result_log t
WHERE delete_type = 0
</select>
<!-- 根据主键获取单条记录 -->
<select id="getById" resultMap="BaseResultMap" parameterType="Long">
SELECT
<include refid="baseColumns" />
FROM hrsa_salary_acct_result_log t
WHERE id = #{id} AND delete_type = 0
</select>
<!-- 条件查询 -->
<select id="listSome" resultMap="BaseResultMap" parameterType="com.engine.salary.entity.salaryacct.param.SalaryAcctResultLogQueryParam">
SELECT
<include refid="baseColumns" />
FROM hrsa_salary_acct_result_log t
WHERE delete_type = 0
<if test="datasource != null">
AND datasource = #{datasource}
</if>
<if test="deleteType != null">
AND delete_type = #{deleteType}
</if>
<if test="employeeId != null">
AND employee_id = #{employeeId}
</if>
<if test="id != null">
AND id = #{id}
</if>
<if test="operateTime != null">
AND operate_time = #{operateTime}
</if>
<if test="operator != null">
AND operator = #{operator}
</if>
<if test="salaryAcctEmpId != null">
AND salary_acct_emp_id = #{salaryAcctEmpId}
</if>
<if test="salaryAcctRecordId != null">
AND salary_acct_record_id = #{salaryAcctRecordId}
</if>
<if test="salaryAcctResultId != null">
AND salary_acct_result_id = #{salaryAcctResultId}
</if>
<if test="salaryItemId != null">
AND salary_item_id = #{salaryItemId}
</if>
<if test="ids != null and ids.size()>0">
AND id IN
<foreach collection="ids" open="(" item="id" separator="," close=")">
#{id}
</foreach>
</if>
ORDER BY id DESC
</select>
<!-- 插入不为NULL的字段 -->
<insert id="insertIgnoreNull" parameterType="com.engine.salary.entity.salaryacct.po.SalaryAcctResultLogPO">
INSERT INTO hrsa_salary_acct_result_log
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="datasource != null">
datasource,
</if>
<if test="deleteType != null">
delete_type,
</if>
<if test="employeeId != null">
employee_id,
</if>
<if test="id != null">
id,
</if>
<if test="operateTime != null">
operate_time,
</if>
<if test="operator != null">
operator,
</if>
<if test="salaryAcctEmpId != null">
salary_acct_emp_id,
</if>
<if test="salaryAcctRecordId != null">
salary_acct_record_id,
</if>
<if test="salaryAcctResultId != null">
salary_acct_result_id,
</if>
<if test="salaryItemId != null">
salary_item_id,
</if>
</trim>
<trim prefix="VALUES (" suffix=")" suffixOverrides=",">
<if test="datasource != null" >
#{datasource},
</if>
<if test="deleteType != null" >
#{deleteType},
</if>
<if test="employeeId != null" >
#{employeeId},
</if>
<if test="id != null" >
#{id},
</if>
<if test="operateTime != null" >
#{operateTime},
</if>
<if test="operator != null" >
#{operator},
</if>
<if test="salaryAcctEmpId != null" >
#{salaryAcctEmpId},
</if>
<if test="salaryAcctRecordId != null" >
#{salaryAcctRecordId},
</if>
<if test="salaryAcctResultId != null" >
#{salaryAcctResultId},
</if>
<if test="salaryItemId != null" >
#{salaryItemId},
</if>
</trim>
</insert>
<insert id="batchInsert">
INSERT INTO hrsa_salary_acct_result_log(id, datasource, salary_acct_record_id, salary_acct_result_id, salary_acct_emp_id,
salary_item_id, employee_id, operator, operate_time, delete_type, update_time)
VALUES
<foreach collection="collection" separator="," item="item">
(
#{item.id},
#{item.datasource},
#{item.salaryAcctRecordId},
#{item.salaryAcctResultId},
#{item.salaryAcctEmpId},
#{item.salaryItemId},
#{item.employeeId},
#{item.operator},
#{item.operateTime},
#{item.deleteType},
#{item.updateTime}
)
</foreach>
</insert>
<insert id="batchInsert" databaseId="oracle">
INSERT INTO hrsa_salary_acct_result_log(id, datasource, salary_acct_record_id, salary_acct_result_id, salary_acct_emp_id,
salary_item_id, employee_id, operator, operate_time, delete_type, update_time)
<foreach collection="collection" separator="union all" item="item">
select
#{item.id,jdbcType=DOUBLE},
#{item.datasource,jdbcType=INTEGER},
#{item.salaryAcctRecordId,jdbcType=DOUBLE},
#{item.salaryAcctResultId,jdbcType=DOUBLE},
#{item.salaryAcctEmpId,jdbcType=DOUBLE},
#{item.salaryItemId,jdbcType=DOUBLE},
#{item.employeeId,jdbcType=DOUBLE},
#{item.operator,jdbcType=,jdbcType=DOUBLE},
#{item.operateTime,jdbcType=DATE},
#{item.deleteType,jdbcType=INTEGER},
#{item.updateTime,jdbcType=DATE}
from dual
</foreach>
</insert>
<insert id="batchInsert" databaseId="sqlserver">
<foreach collection="collection" separator=";" item="item">
INSERT INTO hrsa_salary_acct_result_log(id, datasource, salary_acct_record_id, salary_acct_result_id, salary_acct_emp_id,
salary_item_id, employee_id, operator, operate_time, delete_type, update_time)
VALUES
(
#{item.id},
#{item.datasource},
#{item.salaryAcctRecordId},
#{item.salaryAcctResultId},
#{item.salaryAcctEmpId},
#{item.salaryItemId},
#{item.employeeId},
#{item.operator},
#{item.operateTime},
#{item.deleteType},
#{item.updateTime}
)
</foreach>
</insert>
<!-- 更新,更新全部字段 -->
<update id="update" parameterType="com.engine.salary.entity.salaryacct.po.SalaryAcctResultLogPO">
UPDATE hrsa_salary_acct_result_log
<set>
datasource=#{datasource},
delete_type=#{deleteType},
employee_id=#{employeeId},
operate_time=#{operateTime},
operator=#{operator},
salary_acct_emp_id=#{salaryAcctEmpId},
salary_acct_record_id=#{salaryAcctRecordId},
salary_acct_result_id=#{salaryAcctResultId},
salary_item_id=#{salaryItemId},
</set>
WHERE id = #{id} AND delete_type = 0
</update>
<!-- 更新不为NULL的字段 -->
<update id="updateIgnoreNull" parameterType="com.engine.salary.entity.salaryacct.po.SalaryAcctResultLogPO">
UPDATE hrsa_salary_acct_result_log
<set>
<if test="datasource != null" >
datasource=#{datasource},
</if>
<if test="deleteType != null" >
delete_type=#{deleteType},
</if>
<if test="employeeId != null" >
employee_id=#{employeeId},
</if>
<if test="operateTime != null" >
operate_time=#{operateTime},
</if>
<if test="operator != null" >
operator=#{operator},
</if>
<if test="salaryAcctEmpId != null" >
salary_acct_emp_id=#{salaryAcctEmpId},
</if>
<if test="salaryAcctRecordId != null" >
salary_acct_record_id=#{salaryAcctRecordId},
</if>
<if test="salaryAcctResultId != null" >
salary_acct_result_id=#{salaryAcctResultId},
</if>
<if test="salaryItemId != null" >
salary_item_id=#{salaryItemId},
</if>
</set>
WHERE id = #{id} AND delete_type = 0
</update>
<!-- 根据主键删除记录 -->
<update id="delete" parameterType="com.engine.salary.entity.salaryacct.po.SalaryAcctResultLogPO">
UPDATE hrsa_salary_acct_result_log
SET delete_type=1
WHERE id = #{id} AND delete_type = 0
</update>
<update id="deleteBySalaryAcctEmpIdExceptItemIds">
UPDATE hrsa_salary_acct_result_log
SET delete_type=1, update_time = #{updateTime}
WHERE delete_type = 0
<if test="salaryAcctEmployeeIds != null and salaryAcctEmployeeIds.size()>0">
AND salary_acct_emp_id IN
<foreach collection="salaryAcctEmployeeIds" open="(" item="acctEmpId" separator="," close=")">
#{acctEmpId}
</foreach>
</if>
<if test="exceptItems != null and exceptItems.size()>0">
AND salary_item_id NOT IN
<foreach collection="exceptItems" open="(" item="itemId" separator="," close=")">
#{itemId}
</foreach>
</if>
</update>
</mapper>

View File

@ -0,0 +1,72 @@
package com.engine.salary.service;
import com.engine.salary.entity.salaryacct.po.SalaryAcctResultLogPO;
import java.util.Collection;
import java.util.List;
/**
* @author Harryxzy
* @date 2023/05/12 15:27
* @description 薪资核算结果数据来源
*/
public interface SalaryAcctResultLogService {
/**
* 查询所有记录
*
* @return 返回集合没有返回空List
*/
List<SalaryAcctResultLogPO> listAll();
/**
* 根据主键查询
*
* @param id 主键
* @return 返回记录没有返回null
*/
SalaryAcctResultLogPO getById(Long id);
/**
* 新增忽略null字段
*
* @param salaryAcctResultLog 新增的记录
* @return 返回影响行数
*/
int insertIgnoreNull(SalaryAcctResultLogPO salaryAcctResultLog);
/**
* 修改修改所有字段
*
* @param salaryAcctResultLog 修改的记录
* @return 返回影响行数
*/
int update(SalaryAcctResultLogPO salaryAcctResultLog);
/**
* 修改忽略null字段
*
* @param salaryAcctResultLog 修改的记录
* @return 返回影响行数
*/
int updateIgnoreNull(SalaryAcctResultLogPO salaryAcctResultLog);
/**
* 删除记录
*
* @param salaryAcctResultLog 待删除的记录
* @return 返回影响行数
*/
int delete(SalaryAcctResultLogPO salaryAcctResultLog);
void batchInsert(List<SalaryAcctResultLogPO> salaryAcctResultLogList);
/**
* 根据薪资核算人员删除数据除了已经锁定的值
* @param salaryAcctEmployeeIds
* @param lockSalaryItemIds
*/
void deleteBySalaryAcctEmpIdExceptItemIds(Collection<Long> salaryAcctEmployeeIds, Collection<Long> lockSalaryItemIds);
}

View File

@ -11,14 +11,12 @@ import com.engine.salary.entity.datacollection.DataCollectionEmployee;
import com.engine.salary.entity.report.po.SalaryAcctResultReportPO;
import com.engine.salary.entity.salaryacct.bo.SalaryAcctEmployeeBO;
import com.engine.salary.entity.salaryacct.bo.SalaryAcctResultBO;
import com.engine.salary.entity.salaryacct.bo.SalaryAcctResultLogBO;
import com.engine.salary.entity.salaryacct.dto.SalaryAccEmployeeListDTO;
import com.engine.salary.entity.salaryacct.dto.SalaryAcctImportFieldDTO;
import com.engine.salary.entity.salaryacct.dto.SalaryComparisonResultListDTO;
import com.engine.salary.entity.salaryacct.param.*;
import com.engine.salary.entity.salaryacct.po.ExcelAcctResultPO;
import com.engine.salary.entity.salaryacct.po.SalaryAcctEmployeePO;
import com.engine.salary.entity.salaryacct.po.SalaryAcctRecordPO;
import com.engine.salary.entity.salaryacct.po.SalaryAcctResultPO;
import com.engine.salary.entity.salaryacct.po.*;
import com.engine.salary.entity.salaryitem.po.SalaryItemPO;
import com.engine.salary.entity.salarysob.dto.SalarySobItemAggregateDTO;
import com.engine.salary.entity.salarysob.dto.SalarySobItemDTO;
@ -28,6 +26,7 @@ import com.engine.salary.entity.salarysob.po.SalarySobItemPO;
import com.engine.salary.entity.taxagent.po.TaxAgentPO;
import com.engine.salary.enums.SalaryValueTypeEnum;
import com.engine.salary.enums.UserStatusEnum;
import com.engine.salary.enums.salaryaccounting.SalaryAcctResultDataSourceEnum;
import com.engine.salary.exception.SalaryRunTimeException;
import com.engine.salary.mapper.sys.SalarySysConfMapper;
import com.engine.salary.service.*;
@ -136,6 +135,10 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc
return ServiceUtil.getService(SalarySysConfServiceImpl.class, user);
}
private SalaryAcctResultLogService getSalaryAcctResultLogService(User user) {
return ServiceUtil.getService(SalaryAcctResultLogServiceImpl.class, user);
}
@Override
public XSSFWorkbook exportSalaryAcctEmployee(SalaryAcctEmployeeQueryParam queryParam) {
ValidUtil.doValidator(queryParam);
@ -1014,6 +1017,12 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc
// 处理导入薪资项的回算值
handleOriginResultValue(deleteResults, salaryAcctResults);
getSalaryAcctResultService(user).batchSave(salaryAcctResults);
// 存储薪资核算结果数据来源日志
new Thread() {
public void run() {
handleSalaryAcctResultLog(salaryAcctResults);
}
}.start();
//报表
getSalaryAcctReportService(user).batchSave(salaryAcctReports);
}
@ -1035,6 +1044,22 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc
return apidatas;
}
/**
* 存储薪资核算结果数据来源日志
* @param salaryAcctResults
*/
private void handleSalaryAcctResultLog(List<SalaryAcctResultPO> salaryAcctResults) {
Set<Long> salaryAcctEmpIds = salaryAcctResults.stream().map(SalaryAcctResultPO::getSalaryAcctEmpId).collect(Collectors.toSet());
Set<Long> salaryItemIds = salaryAcctResults.stream().map(SalaryAcctResultPO::getSalaryItemId).collect(Collectors.toSet());
// 查询导入的薪资核算结果
List<SalaryAcctResultPO> salaryAcctResultList = getSalaryAcctResultService(user).listByAcctEmployeeIdsAndSalaryItemIds(salaryAcctEmpIds, salaryItemIds);
Long uid = Long.valueOf(user.getUID());
List<SalaryAcctResultLogPO> needInsertList = SalaryAcctResultLogBO.buildSalaryAcctResultLog(salaryAcctResultList, uid, SalaryAcctResultDataSourceEnum.IMPORT);
if(CollectionUtils.isNotEmpty(needInsertList)){
getSalaryAcctResultLogService(user).batchInsert(needInsertList);
}
}
/**
* @description
* @return void

View File

@ -0,0 +1,66 @@
package com.engine.salary.service.impl;
import com.engine.core.impl.Service;
import com.engine.salary.entity.salaryacct.po.SalaryAcctResultLogPO;
import com.engine.salary.mapper.salaryacct.SalaryAcctResultLogMapper;
import com.engine.salary.service.SalaryAcctResultLogService;
import com.engine.salary.util.db.MapperProxyFactory;
import com.google.common.collect.Lists;
import java.util.Collection;
import java.util.Date;
import java.util.List;
/**
* @author Harryxzy
* @date 2023/05/12 15:29
* @description
*/
public class SalaryAcctResultLogServiceImpl extends Service implements SalaryAcctResultLogService {
private SalaryAcctResultLogMapper getSalaryAcctResultLogMapper() {
return MapperProxyFactory.getProxy(SalaryAcctResultLogMapper.class);
}
@Override
public List<SalaryAcctResultLogPO> listAll() {
return getSalaryAcctResultLogMapper().listAll();
}
@Override
public SalaryAcctResultLogPO getById(Long id) {
return getSalaryAcctResultLogMapper().getById(id);
}
@Override
public int insertIgnoreNull(SalaryAcctResultLogPO salaryAcctResultLog) {
return getSalaryAcctResultLogMapper().insertIgnoreNull(salaryAcctResultLog);
}
@Override
public int update(SalaryAcctResultLogPO salaryAcctResultLog) {
return getSalaryAcctResultLogMapper().update(salaryAcctResultLog);
}
@Override
public int updateIgnoreNull(SalaryAcctResultLogPO salaryAcctResultLog) {
return getSalaryAcctResultLogMapper().updateIgnoreNull(salaryAcctResultLog);
}
@Override
public int delete(SalaryAcctResultLogPO salaryAcctResultLog) {
return getSalaryAcctResultLogMapper().delete(salaryAcctResultLog);
}
@Override
public void batchInsert(List<SalaryAcctResultLogPO> salaryAcctResultLogList) {
List<List<SalaryAcctResultLogPO>> partition = Lists.partition(salaryAcctResultLogList, 50);
partition.forEach(getSalaryAcctResultLogMapper()::batchInsert);
}
@Override
public void deleteBySalaryAcctEmpIdExceptItemIds(Collection<Long> salaryAcctEmployeeIds, Collection<Long> lockSalaryItemIds) {
getSalaryAcctResultLogMapper().deleteBySalaryAcctEmpIdExceptItemIds(salaryAcctEmployeeIds,lockSalaryItemIds, new Date());
}
}

View File

@ -9,19 +9,13 @@ import com.engine.salary.entity.datacollection.DataCollectionEmployee;
import com.engine.salary.entity.datacollection.dto.AttendQuoteFieldListDTO;
import com.engine.salary.entity.report.bo.SalaryAcctResultReportBO;
import com.engine.salary.entity.report.po.SalaryAcctResultReportPO;
import com.engine.salary.entity.salaryacct.bo.SalaryAcctCalculateBO;
import com.engine.salary.entity.salaryacct.bo.SalaryAcctCalculatePriorityBO;
import com.engine.salary.entity.salaryacct.bo.SalaryAcctFormulaBO;
import com.engine.salary.entity.salaryacct.bo.SalaryAcctResultBO;
import com.engine.salary.entity.salaryacct.bo.*;
import com.engine.salary.entity.salaryacct.dto.ConsolidatedTaxDetailDTO;
import com.engine.salary.entity.salaryacct.dto.SalaryAcctProgressDTO;
import com.engine.salary.entity.salaryacct.dto.SalaryAcctResultDetailDTO;
import com.engine.salary.entity.salaryacct.dto.SalaryAcctResultListColumnDTO;
import com.engine.salary.entity.salaryacct.param.*;
import com.engine.salary.entity.salaryacct.po.SalaryAcctEmployeePO;
import com.engine.salary.entity.salaryacct.po.SalaryAcctRecordPO;
import com.engine.salary.entity.salaryacct.po.SalaryAcctResultPO;
import com.engine.salary.entity.salaryacct.po.SalaryAcctResultTempPO;
import com.engine.salary.entity.salaryacct.po.*;
import com.engine.salary.entity.salaryformula.ExpressFormula;
import com.engine.salary.entity.salaryitem.po.SalaryItemPO;
import com.engine.salary.entity.salarysob.dto.*;
@ -30,6 +24,7 @@ import com.engine.salary.entity.taxagent.po.TaxAgentPO;
import com.engine.salary.enums.SalaryValueTypeEnum;
import com.engine.salary.enums.salaryaccounting.LockStatusEnum;
import com.engine.salary.enums.salaryaccounting.SalaryAcctRecordStatusEnum;
import com.engine.salary.enums.salaryaccounting.SalaryAcctResultDataSourceEnum;
import com.engine.salary.enums.salaryitem.SalaryDataTypeEnum;
import com.engine.salary.enums.salarysob.IncomeCategoryEnum;
import com.engine.salary.exception.SalaryRunTimeException;
@ -156,6 +151,10 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe
return ServiceUtil.getService(SalarySobBackItemServiceImpl.class, user);
}
private SalaryAcctResultLogService getSalaryAcctResultLogService(User user) {
return ServiceUtil.getService(SalaryAcctResultLogServiceImpl.class, user);
}
private SalaryCheckResultService salaryCheckResultService;
@ -550,6 +549,9 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe
getSalaryAcctReportService(user).batchSave(salaryAcctResultReportPOS);
}
// 存储薪资核算结果数据来源日志
saveSalaryAcctResultLog(salaryAcctResultPOSOld,salaryAcctResultPOS);
// 查询操作日志的targetName
// String targetName = getSalaryAcctRecordService(user).getLogTargetNameById(salaryAcctEmployeePO.getSalaryAcctRecordId());
// 查询人员信息
@ -568,6 +570,25 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe
// salaryAcctRecordLoggerTemplate.write(loggerContext);
}
/**
* 存储薪资核算结果数据来源日志
* @param salaryAcctResultPOSOld
* @param salaryAcctResultPOS
*/
private void saveSalaryAcctResultLog(List<SalaryAcctResultPO> salaryAcctResultPOSOld, List<SalaryAcctResultPO> salaryAcctResultPOS) {
// 对比核算结果提取修改了哪些薪资项目
List<SalaryAcctResultPO> editItems = new ArrayList<>();
Map<Long, SalaryAcctResultPO> oldResutMap = SalaryEntityUtil.convert2Map(salaryAcctResultPOSOld, SalaryAcctResultPO::getSalaryItemId);
salaryAcctResultPOS.stream().forEach(PO -> {
String oldValue = oldResutMap.get(PO.getSalaryItemId()).getResultValue();
if(!StringUtils.equals(oldValue,PO.getResultValue())){
editItems.add(PO);
}
});
List<SalaryAcctResultLogPO> needInsertList = SalaryAcctResultLogBO.buildSalaryAcctResultLog(editItems, Long.valueOf(user.getUID()), SalaryAcctResultDataSourceEnum.EDIT);
getSalaryAcctResultLogService(user).batchInsert(needInsertList);
}
@Override
public void batchSave(Collection<SalaryAcctResultPO> salaryAcctResultPOS) {
@ -730,6 +751,19 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe
// salaryCheckResultService.check(salaryAcctCheckParam, true, simpleEmployee);
// Thread.sleep(10);
getSalaryAcctProgressService(user).finish(SalaryCacheKey.ACCT_PROGRESS + calculateParam.getSalaryAcctRecordId(), true);
// 存储薪资核算数据来源日志
new Thread() {
public void run() {
List<Long> exceptItemIds = new ArrayList<>();
List<Long> salaryAcctEmployeeIds = salaryAcctEmployeePOS.stream().map(SalaryAcctEmployeePO::getId).collect(Collectors.toList());
exceptItemIds.addAll(lockSalaryItemIds);
exceptItemIds.addAll(salaryItemPOS.stream().filter(PO -> Objects.equals(PO.getValueType(), NumberUtils.INTEGER_ONE) &&
Objects.equals(PO.getUseInEmployeeSalary(),0))
.map(SalaryItemPO::getId).collect(Collectors.toList()) );
getSalaryAcctResultLogService(user).deleteBySalaryAcctEmpIdExceptItemIds(salaryAcctEmployeeIds, exceptItemIds);
}
}.start();
// 记录日志
// 查询操作日志的targetName
// String targetName = getSalaryAcctRecordService(user).getLogTargetNameById(calculateParam.getSalaryAcctRecordId());