Merge branch 'feature/230702-自定义工资项目展示名' into release/2.9.3.2308.01
This commit is contained in:
commit
7ebb8d6618
|
|
@ -0,0 +1,14 @@
|
|||
CREATE TABLE hrsa_salary_bill_item_name(
|
||||
id NUMBER(38,0) PRIMARY KEY NOT NULL,
|
||||
salary_template_id NUMBER(38,0) NOT NULL,
|
||||
salary_item_id NUMBER(38,0) NOT NULL,
|
||||
salary_item_show_name VARCHAR2(255) NOT NULL,
|
||||
salary_bill_type NUMBER NOT NULL,
|
||||
create_time DATE DEFAULT sysdate,
|
||||
update_time DATE DEFAULT sysdate,
|
||||
creator NUMBER(38,0) NOT NULL,
|
||||
delete_type NUMBER NOT NULL,
|
||||
tenant_key VARCHAR2(255)
|
||||
);
|
||||
/
|
||||
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
CREATE TABLE hrsa_salary_bill_item_name(
|
||||
id NUMBER(38,0) PRIMARY KEY NOT NULL,
|
||||
salary_template_id NUMBER(38,0) NOT NULL,
|
||||
salary_item_id NUMBER(38,0) NOT NULL,
|
||||
salary_item_show_name VARCHAR2(255) NOT NULL,
|
||||
salary_bill_type NUMBER NOT NULL,
|
||||
create_time DATE DEFAULT sysdate,
|
||||
update_time DATE DEFAULT sysdate,
|
||||
creator NUMBER(38,0) NOT NULL,
|
||||
delete_type NUMBER NOT NULL,
|
||||
tenant_key VARCHAR2(255)
|
||||
);
|
||||
/
|
||||
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
CREATE TABLE hrsa_salary_bill_item_name (
|
||||
id bigint PRIMARY KEY,
|
||||
salary_template_id bigint NOT NULL,
|
||||
salary_item_id bigint NOT NULL,
|
||||
salary_item_show_name varchar(255)NOT NULL,
|
||||
salary_bill_type int NOT NULL,
|
||||
creator bigint NOT NULL,
|
||||
create_time datetime NOT NULL ,
|
||||
update_time datetime NOT NULL,
|
||||
delete_type int NOT NULL,
|
||||
tenant_key varchar(10) NOT NULL
|
||||
) ;
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
CREATE TABLE hrsa_salary_bill_item_name(
|
||||
id NUMBER(38,0) PRIMARY KEY NOT NULL,
|
||||
salary_template_id NUMBER(38,0) NOT NULL,
|
||||
salary_item_id NUMBER(38,0) NOT NULL,
|
||||
salary_item_show_name VARCHAR2(255) NOT NULL,
|
||||
salary_bill_type NUMBER NOT NULL,
|
||||
create_time DATE DEFAULT sysdate,
|
||||
update_time DATE DEFAULT sysdate,
|
||||
creator NUMBER(38,0) NOT NULL,
|
||||
delete_type NUMBER NOT NULL,
|
||||
tenant_key VARCHAR2(255)
|
||||
)
|
||||
/
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
CREATE TABLE hrsa_salary_bill_item_name (
|
||||
id bigint PRIMARY KEY,
|
||||
salary_template_id bigint NOT NULL,
|
||||
salary_item_id bigint NOT NULL,
|
||||
salary_item_show_name varchar(255)NOT NULL,
|
||||
salary_bill_type int NOT NULL,
|
||||
creator bigint NOT NULL,
|
||||
create_time TIMESTAMP NOT NULL ,
|
||||
update_time TIMESTAMP NOT NULL,
|
||||
delete_type int NOT NULL,
|
||||
tenant_key varchar(10) NOT NULL
|
||||
) ;
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
CREATE TABLE hrsa_salary_bill_item_name (
|
||||
id bigint PRIMARY KEY,
|
||||
salary_template_id bigint NOT NULL,
|
||||
salary_item_id bigint NOT NULL,
|
||||
salary_item_show_name varchar(255)NOT NULL,
|
||||
salary_bill_type int NOT NULL,
|
||||
creator bigint NOT NULL,
|
||||
create_time datetime NOT NULL ,
|
||||
update_time datetime NOT NULL,
|
||||
delete_type int NOT NULL,
|
||||
tenant_key varchar(10) NOT NULL
|
||||
)
|
||||
GO
|
||||
|
|
@ -77,7 +77,7 @@ public class InitSalaryAction implements Action {
|
|||
|
||||
List errorNotice = (List) map.get("errorNotice");
|
||||
if (CollectionUtils.isNotEmpty(errorNotice)) {
|
||||
log.error("调薪存在异常 requestId:{} ,参数:{}, map:{}", requestInfo.getRequestid(), build, map);
|
||||
log.error("定薪存在异常 requestId:{} ,参数:{}, map:{}", requestInfo.getRequestid(), build, map);
|
||||
List<Map<String, String>> excelComments = (List<Map<String, String>>) map.get("errorNotice");
|
||||
StringBuilder message = new StringBuilder("");
|
||||
for (Map<String, String> comments : excelComments) {
|
||||
|
|
@ -87,7 +87,7 @@ public class InitSalaryAction implements Action {
|
|||
return FAILURE_AND_CONTINUE;
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.error("调薪异常", e);
|
||||
log.error("定薪异常", e);
|
||||
requestInfo.getRequestManager().setMessage(e.getMessage());
|
||||
return FAILURE_AND_CONTINUE;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,30 @@
|
|||
package com.engine.salary.entity.salaryBill.bo;
|
||||
|
||||
import com.engine.salary.entity.salaryBill.dto.SalaryBillItemNameDTO;
|
||||
import com.engine.salary.entity.salaryBill.po.SalaryBillItemNamePO;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @author Harryxzy
|
||||
* @ClassName SalaryBillItemNameBO
|
||||
* @date 2023/07/19 9:19
|
||||
* @description 工资单薪资项目展示名称
|
||||
*/
|
||||
public class SalaryBillItemNameBO {
|
||||
|
||||
public static List<SalaryBillItemNameDTO> convert2ListDTO(List<SalaryBillItemNamePO> SalaryBillItemNamePOList){
|
||||
if (CollectionUtils.isEmpty(SalaryBillItemNamePOList)) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
return SalaryBillItemNamePOList.stream()
|
||||
.map(po -> SalaryBillItemNameDTO.builder()
|
||||
.salaryItemId(po.getSalaryItemId())
|
||||
.salaryItemShowName(po.getSalaryItemShowName())
|
||||
.build())
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
}
|
||||
|
|
@ -120,6 +120,8 @@ public class SalaryTemplateBO {
|
|||
.id(String.valueOf(i.getSalaryItemId()))
|
||||
.salaryItemId(String.valueOf(i.getSalaryItemId()))
|
||||
.name(i.getName())
|
||||
.salaryItemShowName(i.getName())
|
||||
.originName(i.getName())
|
||||
.sortedIndex(i.getSortedIndex())
|
||||
.build());
|
||||
});
|
||||
|
|
|
|||
|
|
@ -0,0 +1,30 @@
|
|||
package com.engine.salary.entity.salaryBill.dto;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* @author Harryxzy
|
||||
* @ClassName SalaryBillItemNameDTO
|
||||
* @date 2023/07/19 9:21
|
||||
* @description 工资单薪资项目展示名称
|
||||
*/
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class SalaryBillItemNameDTO {
|
||||
|
||||
/**
|
||||
* 薪资项目id
|
||||
*/
|
||||
private Long salaryItemId;
|
||||
|
||||
|
||||
/**
|
||||
* 工资单展示名称
|
||||
*/
|
||||
private String salaryItemShowName;
|
||||
}
|
||||
|
|
@ -6,6 +6,7 @@ import lombok.Data;
|
|||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author Harryxzy
|
||||
|
|
@ -26,4 +27,7 @@ public class SalaryTemplateReplenishFormDTO {
|
|||
// 薪资项目设置")
|
||||
private List<SalaryTemplateSalaryItemSetListDTO> replenishSalaryTemplateSalaryItemSet;
|
||||
|
||||
// 工资单项目名称设置
|
||||
private Map<Long, SalaryBillItemNameDTO> salaryBillItemNameSet;
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -26,9 +26,15 @@ public class SalaryTemplateSalaryItemListDTO {
|
|||
// 薪资项目值")
|
||||
private String salaryItemValue;
|
||||
|
||||
// 薪资项目名称")
|
||||
// 模板展示名称 salaryItemShowName+(originName)
|
||||
private String name;
|
||||
|
||||
// 薪资项目修改后展示名称
|
||||
private String salaryItemShowName;
|
||||
|
||||
// 薪资项目名称原始值
|
||||
private String originName;
|
||||
|
||||
// 顺序")
|
||||
private Integer sortedIndex;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -29,4 +29,10 @@ public class SalaryTemplateShowFormDTO {
|
|||
|
||||
// 薪资项目设置")
|
||||
private List<SalaryTemplateSalaryItemSetListDTO> salaryTemplateSalaryItemSet;
|
||||
|
||||
// 补发工资薪资项目设置")
|
||||
private List<SalaryTemplateSalaryItemSetListDTO> replenishSalaryTemplateSalaryItemSet;
|
||||
|
||||
// 工资单项目名称设置
|
||||
private Map<Long, SalaryBillItemNameDTO> salaryBillItemNameSet;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,46 @@
|
|||
package com.engine.salary.entity.salaryBill.param;
|
||||
|
||||
import lombok.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author Harryxzy
|
||||
* @ClassName SalaryBillItemNameSaveParam
|
||||
* @date 2023/07/19 10:20
|
||||
* @description 设置工资单项目展示名参数
|
||||
*/
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class SalaryBillItemNameSaveParam {
|
||||
/**
|
||||
* 工资单模板id
|
||||
*/
|
||||
private Long salaryTemplateId;
|
||||
|
||||
/**
|
||||
* 工资单类型。0:正常工资单、1:补发工资单
|
||||
*/
|
||||
private Integer salaryBillType;
|
||||
|
||||
private List<itemShowNameSetting> itemShowNameSetting;
|
||||
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public static class itemShowNameSetting {
|
||||
/**
|
||||
* 薪资项目id
|
||||
*/
|
||||
private Long salaryItemId;
|
||||
|
||||
/**
|
||||
* 工资单展示名称
|
||||
*/
|
||||
private String salaryItemShowName;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -23,4 +23,9 @@ public class SalaryBillSalaryGroupQueryParam extends BaseQueryParam {
|
|||
* 前端已有的分组id
|
||||
*/
|
||||
private List<String> existSalaryGroupIds;
|
||||
|
||||
/**
|
||||
* 工资单模板id
|
||||
*/
|
||||
private Long salaryTemplateId;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -19,4 +19,6 @@ public class SalaryBillSalaryItemQueryParam extends BaseQueryParam {
|
|||
private Boolean isReplenish;
|
||||
|
||||
private List<String> existSalaryItemIds;
|
||||
|
||||
private Long salaryTemplateId;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -104,6 +104,8 @@ public class SalaryTemplateSaveParam {
|
|||
*/
|
||||
private String feedbackUrl;
|
||||
|
||||
List<SalaryBillItemNameSaveParam> salaryBillItemNameSetting;
|
||||
|
||||
public static void checkParam(SalaryTemplateSaveParam saveParam) {
|
||||
if (saveParam.getSalarySobId() == null) {
|
||||
throw new SalaryRunTimeException("薪资账套表的主键id必传;");
|
||||
|
|
|
|||
|
|
@ -0,0 +1,71 @@
|
|||
package com.engine.salary.entity.salaryBill.po;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* @author Harryxzy
|
||||
* @ClassName SalaryBillItemName
|
||||
* @date 2023/07/18 15:55
|
||||
* @description 工资单薪资项目展示名称
|
||||
*/
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class SalaryBillItemNamePO {
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 薪资项目id
|
||||
*/
|
||||
private Long salaryItemId;
|
||||
|
||||
/**
|
||||
* 薪资项目展示名称
|
||||
*/
|
||||
private String salaryItemShowName;
|
||||
|
||||
/**
|
||||
* 工资单模板id
|
||||
*/
|
||||
private Long salaryTemplateId;
|
||||
|
||||
/**
|
||||
* 工资单类型。0:正常工资单、1:补发工资单
|
||||
*/
|
||||
private Integer salaryBillType;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Date createTime;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private Date updateTime;
|
||||
|
||||
/**
|
||||
* 创建人
|
||||
*/
|
||||
private Long creator;
|
||||
|
||||
/**
|
||||
* 是否已删除。0:未删除、1:已删除
|
||||
*/
|
||||
private Integer deleteType;
|
||||
|
||||
/**
|
||||
* 租户ID
|
||||
*/
|
||||
private String tenantKey;
|
||||
|
||||
//主键id集合
|
||||
private Collection<Long> ids;
|
||||
}
|
||||
|
|
@ -0,0 +1,102 @@
|
|||
package com.engine.salary.mapper.salarybill;
|
||||
|
||||
import com.engine.salary.entity.salaryBill.po.SalaryBillItemNamePO;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author Harryxzy
|
||||
* @ClassName SalaryBillItemNameMapper
|
||||
* @date 2023/07/18 15:58
|
||||
* @description 工资单薪资项目展示名
|
||||
*/
|
||||
public interface SalaryBillItemNameMapper {
|
||||
/**
|
||||
* 查询所有记录
|
||||
*
|
||||
* @return 返回集合,没有返回空List
|
||||
*/
|
||||
List<SalaryBillItemNamePO> listAll();
|
||||
|
||||
/**
|
||||
* 条件查询
|
||||
*
|
||||
* @return 返回集合,没有返回空List
|
||||
*/
|
||||
List<SalaryBillItemNamePO> listSome(SalaryBillItemNamePO salaryBillItemNamePO);
|
||||
|
||||
|
||||
/**
|
||||
* 根据主键查询
|
||||
*
|
||||
* @param id 主键
|
||||
* @return 返回记录,没有返回null
|
||||
*/
|
||||
SalaryBillItemNamePO getById(Long id);
|
||||
|
||||
/**
|
||||
* 新增,忽略null字段
|
||||
*
|
||||
* @param salaryBillItemNamePO 新增的记录
|
||||
* @return 返回影响行数
|
||||
*/
|
||||
int insertIgnoreNull(SalaryBillItemNamePO salaryBillItemNamePO);
|
||||
|
||||
/**
|
||||
* 修改,修改所有字段
|
||||
*
|
||||
* @param salaryBillItemNamePO 修改的记录
|
||||
* @return 返回影响行数
|
||||
*/
|
||||
int update(SalaryBillItemNamePO salaryBillItemNamePO);
|
||||
|
||||
/**
|
||||
* 修改,忽略null字段
|
||||
*
|
||||
* @param salaryBillItemNamePO 修改的记录
|
||||
* @return 返回影响行数
|
||||
*/
|
||||
int updateIgnoreNull(SalaryBillItemNamePO salaryBillItemNamePO);
|
||||
|
||||
/**
|
||||
* 删除记录
|
||||
*
|
||||
* @param id 待删除的记录id
|
||||
* @return 返回影响行数
|
||||
*/
|
||||
int delete(Long id);
|
||||
|
||||
/**
|
||||
* 批量更新
|
||||
* @param salaryBillItemNamePO
|
||||
*/
|
||||
void batchUpdate(@Param("collection") List<SalaryBillItemNamePO> salaryBillItemNamePO);
|
||||
|
||||
/**
|
||||
* 批量插入
|
||||
* @param salaryBillItemNamePO
|
||||
*/
|
||||
void batchInsert(@Param("collection") List<SalaryBillItemNamePO> salaryBillItemNamePO);
|
||||
|
||||
/**
|
||||
* 根据薪资项目、模板id、模板类型批量删除
|
||||
* @param salaryItemIds
|
||||
* @param salaryTemplateId
|
||||
* @param salaryBillType
|
||||
*/
|
||||
void deleteByItemIdsAndTemplateId(@Param("salaryItemIds") List<Long> salaryItemIds, @Param("salaryTemplateId") Long salaryTemplateId, @Param("salaryBillType") Integer salaryBillType);
|
||||
|
||||
/**
|
||||
* 根据idList删除
|
||||
* @param ids
|
||||
*/
|
||||
void deleteByIds(@Param("collection") List<Long> ids);
|
||||
|
||||
/**
|
||||
* 根据模板id删除
|
||||
* @param ids
|
||||
*/
|
||||
void deleteByTemplateIds(@Param("collection") Collection<Long> ids);
|
||||
}
|
||||
|
|
@ -0,0 +1,344 @@
|
|||
<?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.salarybill.SalaryBillItemNameMapper">
|
||||
<resultMap id="BaseResultMap" type="com.engine.salary.entity.salaryBill.po.SalaryBillItemNamePO">
|
||||
<result column="id" property="id" />
|
||||
<result column="salary_item_id" property="salaryItemId" />
|
||||
<result column="salary_item_show_name" property="salaryItemShowName" />
|
||||
<result column="salary_template_id" property="salaryTemplateId" />
|
||||
<result column="delete_type" property="deleteType" />
|
||||
<result column="creator" property="creator" />
|
||||
<result column="create_time" property="createTime" />
|
||||
<result column="update_time" property="updateTime" />
|
||||
<result column="tenant_key" property="tenantKey" />
|
||||
</resultMap>
|
||||
|
||||
<!-- 表字段 -->
|
||||
<sql id="baseColumns">
|
||||
t.id
|
||||
, t.salary_item_id
|
||||
, t.salary_item_show_name
|
||||
, t.salary_template_id
|
||||
, t.salary_bill_type
|
||||
, t.delete_type
|
||||
, t.creator
|
||||
, t.create_time
|
||||
, t.update_time
|
||||
, t.tenant_key
|
||||
</sql>
|
||||
|
||||
<!-- 查询全部 -->
|
||||
<select id="listAll" resultMap="BaseResultMap">
|
||||
SELECT
|
||||
<include refid="baseColumns" />
|
||||
FROM hrsa_salary_bill_item_name t
|
||||
WHERE delete_type = 0
|
||||
</select>
|
||||
|
||||
<!-- 根据主键获取单条记录 -->
|
||||
<select id="getById" resultMap="BaseResultMap" parameterType="Long">
|
||||
SELECT
|
||||
<include refid="baseColumns" />
|
||||
FROM hrsa_salary_bill_item_name t
|
||||
WHERE id = #{id} AND delete_type = 0
|
||||
</select>
|
||||
|
||||
<!-- 条件查询 -->
|
||||
<select id="listSome" resultMap="BaseResultMap" parameterType="com.engine.salary.entity.salaryBill.po.SalaryBillItemNamePO">
|
||||
SELECT
|
||||
<include refid="baseColumns" />
|
||||
FROM hrsa_salary_bill_item_name t
|
||||
WHERE delete_type = 0
|
||||
<if test="id != null">
|
||||
AND id = #{id}
|
||||
</if>
|
||||
<if test="salaryItemId != null">
|
||||
AND salary_item_id = #{salaryItemId}
|
||||
</if>
|
||||
<if test="salaryItemShowName != null">
|
||||
AND salary_item_show_name = #{salaryItemShowName}
|
||||
</if>
|
||||
<if test="salaryTemplateId != null">
|
||||
AND salary_template_id = #{salaryTemplateId}
|
||||
</if>
|
||||
<if test="salaryBillType != null">
|
||||
AND salary_bill_type = #{salaryBillType}
|
||||
</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.salaryBill.po.SalaryBillItemNamePO">
|
||||
INSERT INTO hrsa_salary_bill_item_name
|
||||
<trim prefix="(" suffix=")" suffixOverrides=",">
|
||||
|
||||
<if test="id != null">
|
||||
id,
|
||||
</if>
|
||||
<if test="salaryItemId != null">
|
||||
salary_item_id,
|
||||
</if>
|
||||
<if test="salaryItemShowName != null">
|
||||
salary_item_show_name,
|
||||
</if>
|
||||
<if test="salaryTemplateId != null">
|
||||
salary_template_id,
|
||||
</if>
|
||||
<if test="salaryBillType != null">
|
||||
salary_bill_type,
|
||||
</if>
|
||||
<if test="creator != null">
|
||||
creator,
|
||||
</if>
|
||||
<if test="createTime != null">
|
||||
create_time,
|
||||
</if>
|
||||
<if test="updateTime != null">
|
||||
update_time,
|
||||
</if>
|
||||
<if test="deleteType != null">
|
||||
delete_type,
|
||||
</if>
|
||||
<if test="tenantKey != null">
|
||||
tenant_key,
|
||||
</if>
|
||||
</trim>
|
||||
<trim prefix="VALUES (" suffix=")" suffixOverrides=",">
|
||||
<if test="id != null" >
|
||||
#{id},
|
||||
</if>
|
||||
<if test="salaryItemId != null" >
|
||||
#{salaryItemId},
|
||||
</if>
|
||||
<if test="salaryItemShowName != null" >
|
||||
#{salaryItemShowName},
|
||||
</if>
|
||||
<if test="salaryTemplateId != null" >
|
||||
#{salaryTemplateId},
|
||||
</if>
|
||||
<if test="salaryBillType != null" >
|
||||
#{salaryBillType},
|
||||
</if>
|
||||
<if test="creator != null">
|
||||
#{creator},
|
||||
</if>
|
||||
<if test="createTime != null">
|
||||
#{createTime},
|
||||
</if>
|
||||
<if test="updateTime != null">
|
||||
#{updateTime},
|
||||
</if>
|
||||
<if test="deleteType != null">
|
||||
#{deleteType},
|
||||
</if>
|
||||
<if test="tenantKey != null">
|
||||
#{tenantKey},
|
||||
</if>
|
||||
</trim>
|
||||
</insert>
|
||||
|
||||
<insert id="batchInsert">
|
||||
INSERT INTO hrsa_salary_bill_item_name (
|
||||
id,
|
||||
salary_template_id,
|
||||
salary_item_id,
|
||||
salary_item_show_name,
|
||||
salary_bill_type,
|
||||
creator,
|
||||
create_time,
|
||||
update_time,
|
||||
delete_type,
|
||||
tenant_key
|
||||
)
|
||||
VALUES
|
||||
<foreach collection="collection" item="item" separator=",">
|
||||
(
|
||||
#{item.id},
|
||||
#{item.salaryTemplateId},
|
||||
#{item.salaryItemId},
|
||||
#{item.salaryItemShowName},
|
||||
#{item.salaryBillType},
|
||||
#{item.creator},
|
||||
#{item.createTime},
|
||||
#{item.updateTime},
|
||||
#{item.deleteType},
|
||||
#{item.tenantKey}
|
||||
)
|
||||
</foreach>
|
||||
</insert>
|
||||
<insert id="batchInsert" databaseId="oracle">
|
||||
INSERT INTO hrsa_salary_bill_item_name (
|
||||
id,
|
||||
salary_template_id,
|
||||
salary_item_id,
|
||||
salary_item_show_name,
|
||||
salary_bill_type,
|
||||
creator,
|
||||
create_time,
|
||||
update_time,
|
||||
delete_type,
|
||||
tenant_key
|
||||
)
|
||||
<foreach collection="collection" item="item" separator="union all">
|
||||
select
|
||||
#{item.id,jdbcType=DOUBLE},
|
||||
#{item.salaryTemplateId,jdbcType=DOUBLE},
|
||||
#{item.salaryItemId,jdbcType=DOUBLE},
|
||||
#{item.salaryItemShowName,jdbcType=VARCHAR},
|
||||
#{item.salaryBillType,jdbcType=INTEGER},
|
||||
#{item.creator,jdbcType=DOUBLE},
|
||||
#{item.createTime,jdbcType=DATE},
|
||||
#{item.updateTime,jdbcType=DATE},
|
||||
#{item.deleteType,jdbcType=INTEGER},
|
||||
#{item.tenantKey,jdbcType=VARCHAR}
|
||||
from dual
|
||||
</foreach>
|
||||
</insert>
|
||||
<insert id="batchInsert" databaseId="sqlserver">
|
||||
<foreach collection="collection" item="item" separator=";">
|
||||
INSERT INTO hrsa_salary_bill_item_name (
|
||||
id,
|
||||
salary_template_id,
|
||||
salary_item_id,
|
||||
salary_item_show_name,
|
||||
salary_bill_type,
|
||||
creator,
|
||||
create_time,
|
||||
update_time,
|
||||
delete_type,
|
||||
tenant_key
|
||||
)
|
||||
VALUES
|
||||
(
|
||||
#{item.id},
|
||||
#{item.salaryTemplateId},
|
||||
#{item.salaryItemId},
|
||||
#{item.salaryItemShowName},
|
||||
#{item.salaryBillType},
|
||||
#{item.creator},
|
||||
#{item.createTime},
|
||||
#{item.updateTime},
|
||||
#{item.deleteType},
|
||||
#{item.tenantKey}
|
||||
)
|
||||
</foreach>
|
||||
</insert>
|
||||
|
||||
<!-- 更新,更新全部字段 -->
|
||||
<update id="update" parameterType="com.engine.salary.entity.salaryBill.po.SalaryBillItemNamePO">
|
||||
UPDATE hrsa_salary_bill_item_name
|
||||
<set>
|
||||
salary_item_id=#{salaryItemId},
|
||||
salary_item_show_name=#{salaryItemShowName},
|
||||
salary_template_id=#{salaryTemplateId},
|
||||
salary_bill_type=#{salaryBillType},
|
||||
creator=#{creator},
|
||||
create_time={createTime},
|
||||
update_time=#{updateTime},
|
||||
tenant_key=#{tenantKey}
|
||||
</set>
|
||||
WHERE id = #{id} AND delete_type = 0
|
||||
</update>
|
||||
|
||||
|
||||
<!-- 更新不为NULL的字段 -->
|
||||
<update id="updateIgnoreNull" parameterType="com.engine.salary.entity.salaryBill.po.SalaryBillItemNamePO">
|
||||
UPDATE hrsa_salary_bill_item_name
|
||||
<set>
|
||||
<if test="salaryItemId != null" >
|
||||
salary_item_id=#{salaryItemId},
|
||||
</if>
|
||||
<if test="salaryItemShowName != null" >
|
||||
salary_item_show_name=#{salaryItemShowName},
|
||||
</if>
|
||||
<if test="salaryTemplateId != null" >
|
||||
salary_template_id=#{salaryTemplateId},
|
||||
</if>
|
||||
<if test="salaryBillType != null" >
|
||||
salary_bill_type=#{salaryBillType},
|
||||
</if>
|
||||
<if test="creator != null" >
|
||||
creator=#{creator},
|
||||
</if>
|
||||
<if test="create_time != null" >
|
||||
create_time=#{createTime},
|
||||
</if>
|
||||
<if test="updateTime != null" >
|
||||
update_time=#{updateTime},
|
||||
</if>
|
||||
<if test="tenantKey != null" >
|
||||
tenant_key=#{tenantKey},
|
||||
</if>
|
||||
</set>
|
||||
WHERE id = #{id} AND delete_type = 0
|
||||
</update>
|
||||
|
||||
<update id="batchUpdate">
|
||||
UPDATE hrsa_salary_bill_item_name
|
||||
<trim prefix="set" suffixOverrides=",">
|
||||
<trim prefix="salary_item_show_name = case" suffix="end,">
|
||||
<foreach collection="collection" item="item" index="index">
|
||||
WHEN id = #{item.id} THEN #{item.salaryItemShowName}
|
||||
</foreach>
|
||||
</trim>
|
||||
<trim prefix="update_time = case" suffix="end,">
|
||||
<foreach collection="collection" item="item" index="index">
|
||||
WHEN id = #{item.id} THEN #{item.updateTime}
|
||||
</foreach>
|
||||
</trim>
|
||||
</trim>
|
||||
WHERE delete_type = 0
|
||||
AND id IN
|
||||
<foreach collection="collection" item="item" open="(" close=")" separator=",">
|
||||
#{item.id}
|
||||
</foreach>
|
||||
</update>
|
||||
|
||||
|
||||
<!-- 根据主键删除记录 -->
|
||||
<delete id="delete" parameterType="com.engine.salary.entity.salaryBill.po.SalaryBillItemNamePO">
|
||||
UPDATE hrsa_salary_bill_item_name
|
||||
SET delete_type=1
|
||||
WHERE id = #{id} AND delete_type = 0
|
||||
</delete>
|
||||
|
||||
<delete id="deleteByItemIdsAndTemplateId">
|
||||
UPDATE hrsa_salary_bill_item_name
|
||||
SET delete_type=1
|
||||
WHERE delete_type = 0
|
||||
AND salary_template_id = #{salaryTemplateId}
|
||||
AND salary_bill_type = #{salaryBillType}
|
||||
AND salary_item_id IN
|
||||
<foreach collection="salaryItemIds" item="itemId" open="(" close=")" separator=",">
|
||||
#{itemId}
|
||||
</foreach>
|
||||
</delete>
|
||||
|
||||
<delete id="deleteByIds">
|
||||
UPDATE hrsa_salary_bill_item_name
|
||||
SET delete_type=1
|
||||
WHERE delete_type = 0
|
||||
AND id IN
|
||||
<foreach collection="collection" item="id" open="(" close=")" separator=",">
|
||||
#{id}
|
||||
</foreach>
|
||||
</delete>
|
||||
<delete id="deleteByTemplateIds">
|
||||
UPDATE hrsa_salary_bill_item_name
|
||||
SET delete_type=1
|
||||
WHERE delete_type = 0
|
||||
AND salary_template_id IN
|
||||
<foreach collection="collection" item="id" open="(" close=")" separator=",">
|
||||
#{id}
|
||||
</foreach>
|
||||
</delete>
|
||||
|
||||
|
||||
</mapper>
|
||||
|
|
@ -0,0 +1,100 @@
|
|||
package com.engine.salary.service;
|
||||
|
||||
import com.engine.salary.entity.salaryBill.param.SalaryBillItemNameSaveParam;
|
||||
import com.engine.salary.entity.salaryBill.po.SalaryBillItemNamePO;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author Harryxzy
|
||||
* @ClassName SalaryBillItemNameService
|
||||
* @date 2023/07/18 16:15
|
||||
* @description 工资单薪资项目展示名称
|
||||
*/
|
||||
public interface SalaryBillItemNameService {
|
||||
/**
|
||||
* 查询所有记录
|
||||
*
|
||||
* @return 返回集合,没有返回空List
|
||||
*/
|
||||
List<SalaryBillItemNamePO> listAll();
|
||||
|
||||
|
||||
/**
|
||||
* 根据主键查询
|
||||
*
|
||||
* @param id 主键
|
||||
* @return 返回记录,没有返回null
|
||||
*/
|
||||
SalaryBillItemNamePO getById(Long id);
|
||||
|
||||
/**
|
||||
* 新增,忽略null字段
|
||||
*
|
||||
* @param salaryBillItemNamePO 新增的记录
|
||||
* @return 返回影响行数
|
||||
*/
|
||||
int insertIgnoreNull(SalaryBillItemNamePO salaryBillItemNamePO);
|
||||
|
||||
/**
|
||||
* 修改,修改所有字段
|
||||
*
|
||||
* @param salaryBillItemNamePO 修改的记录
|
||||
* @return 返回影响行数
|
||||
*/
|
||||
int update(SalaryBillItemNamePO salaryBillItemNamePO);
|
||||
|
||||
/**
|
||||
* 修改,忽略null字段
|
||||
*
|
||||
* @param salaryBillItemNamePO 修改的记录
|
||||
* @return 返回影响行数
|
||||
*/
|
||||
int updateIgnoreNull(SalaryBillItemNamePO salaryBillItemNamePO);
|
||||
|
||||
/**
|
||||
* 删除记录
|
||||
*
|
||||
* @param id 待删除的记录id
|
||||
* @return 返回影响行数
|
||||
*/
|
||||
int delete(Long id);
|
||||
|
||||
/**
|
||||
* 根据工资单模板id和工资单类型获取 设置的项目名称信息
|
||||
* @param build
|
||||
* @return
|
||||
*/
|
||||
List<SalaryBillItemNamePO> ListByTemplateAndType(SalaryBillItemNamePO build);
|
||||
|
||||
/**
|
||||
* 设置工资单薪资项目显示名
|
||||
* @param saveList
|
||||
*/
|
||||
void saveItemShowName(List<SalaryBillItemNameSaveParam> saveList);
|
||||
|
||||
/**
|
||||
* 批量更新
|
||||
* @param needUpdateList
|
||||
*/
|
||||
void batchUpdate(List<SalaryBillItemNamePO> needUpdateList);
|
||||
|
||||
/**
|
||||
* 批量插入
|
||||
* @param needInsertList
|
||||
*/
|
||||
void batchInsert(List<SalaryBillItemNamePO> needInsertList);
|
||||
|
||||
/**
|
||||
* 根据id批量删除
|
||||
* @param needDeleteIds
|
||||
*/
|
||||
void deleteByIds(List<Long> needDeleteIds);
|
||||
|
||||
/**
|
||||
* 根据工资单模板id删除
|
||||
* @param ids
|
||||
*/
|
||||
void deleteByTemplateIds(Collection<Long> ids);
|
||||
}
|
||||
|
|
@ -97,7 +97,7 @@ public interface SalaryTemplateService {
|
|||
* @param salarySobId
|
||||
* @return
|
||||
*/
|
||||
List<SalaryTemplateSalaryItemSetListDTO> getSalaryItemSetContainHide(Long salarySobId, boolean isReplenish);
|
||||
List<SalaryTemplateSalaryItemSetListDTO> getSalaryItemSetContainHide(Long salarySobId, Long salaryTemplateId, boolean isReplenish);
|
||||
|
||||
/**
|
||||
* 获取默认工资单模板
|
||||
|
|
|
|||
|
|
@ -0,0 +1,182 @@
|
|||
package com.engine.salary.service.impl;
|
||||
|
||||
import com.api.formmode.mybatis.util.SqlProxyHandle;
|
||||
import com.engine.common.util.ServiceUtil;
|
||||
import com.engine.core.impl.Service;
|
||||
import com.engine.salary.constant.SalaryDefaultTenantConstant;
|
||||
import com.engine.salary.entity.salaryBill.param.SalaryBillItemNameSaveParam;
|
||||
import com.engine.salary.entity.salaryBill.po.SalaryBillItemNamePO;
|
||||
import com.engine.salary.entity.salaryBill.po.SalaryTemplatePO;
|
||||
import com.engine.salary.exception.SalaryRunTimeException;
|
||||
import com.engine.salary.mapper.salarybill.SalaryBillItemNameMapper;
|
||||
import com.engine.salary.service.SalaryBillItemNameService;
|
||||
import com.engine.salary.service.SalaryItemService;
|
||||
import com.engine.salary.service.SalaryTemplateService;
|
||||
import com.engine.salary.util.SalaryEntityUtil;
|
||||
import com.google.common.collect.Lists;
|
||||
import dm.jdbc.util.IdGenerator;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.apache.commons.lang.math.NumberUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import weaver.hrm.User;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @author Harryxzy
|
||||
* @ClassName SalaryBillItemNameServiceImpl
|
||||
* @date 2023/07/18 16:17
|
||||
* @description
|
||||
*/
|
||||
public class SalaryBillItemNameServiceImpl extends Service implements SalaryBillItemNameService {
|
||||
|
||||
private SalaryBillItemNameMapper getSalaryBillItemNameMapper() {
|
||||
return SqlProxyHandle.getProxy(SalaryBillItemNameMapper.class);
|
||||
}
|
||||
|
||||
private SalaryItemService getSalaryItemService(User user) {
|
||||
return ServiceUtil.getService(SalaryItemServiceImpl.class, user);
|
||||
}
|
||||
|
||||
private SalaryTemplateService getSalaryTemplateService(User user) {
|
||||
return ServiceUtil.getService(SalaryTemplateServiceImpl.class, user);
|
||||
}
|
||||
@Override
|
||||
public List<SalaryBillItemNamePO> listAll() {
|
||||
return getSalaryBillItemNameMapper().listAll();
|
||||
}
|
||||
|
||||
@Override
|
||||
public SalaryBillItemNamePO getById(Long id) {
|
||||
return getSalaryBillItemNameMapper().getById(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int insertIgnoreNull(SalaryBillItemNamePO salaryBillItemNamePO) {
|
||||
return getSalaryBillItemNameMapper().insertIgnoreNull(salaryBillItemNamePO);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int update(SalaryBillItemNamePO salaryBillItemNamePO) {
|
||||
return getSalaryBillItemNameMapper().update(salaryBillItemNamePO);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int updateIgnoreNull(SalaryBillItemNamePO salaryBillItemNamePO) {
|
||||
return getSalaryBillItemNameMapper().updateIgnoreNull(salaryBillItemNamePO);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int delete(Long id) {
|
||||
return getSalaryBillItemNameMapper().delete(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<SalaryBillItemNamePO> ListByTemplateAndType(SalaryBillItemNamePO param) {
|
||||
return getSalaryBillItemNameMapper().listSome(param);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void saveItemShowName(List<SalaryBillItemNameSaveParam> saveList) {
|
||||
saveList= saveList.stream().filter(param -> !Objects.isNull(param.getSalaryTemplateId()) && CollectionUtils.isNotEmpty(param.getItemShowNameSetting())).collect(Collectors.toList());
|
||||
if(CollectionUtils.isEmpty(saveList))
|
||||
return;
|
||||
List<Long> templateIdList = saveList.stream().map(SalaryBillItemNameSaveParam::getSalaryTemplateId).distinct().collect(Collectors.toList());
|
||||
if(CollectionUtils.isEmpty(templateIdList) || templateIdList.size()>1){
|
||||
throw new SalaryRunTimeException("工资单模板id为空,或存在多个工资单模板id");
|
||||
}
|
||||
Long salaryTemplateId = templateIdList.get(0);
|
||||
SalaryTemplatePO salaryTemplatePO = getSalaryTemplateService(user).getById(salaryTemplateId);
|
||||
if(Objects.isNull(salaryTemplatePO)){
|
||||
throw new SalaryRunTimeException("工资单模板不存在或已被删除");
|
||||
}
|
||||
List<SalaryBillItemNamePO> needInsertList = new ArrayList<>();
|
||||
List<SalaryBillItemNamePO> needUpdateList = new ArrayList<>();
|
||||
Date now = new Date();
|
||||
// 根据模板类型分组
|
||||
Map<Integer, List<SalaryBillItemNameSaveParam.itemShowNameSetting>> saveMap = SalaryEntityUtil.convert2Map(saveList, SalaryBillItemNameSaveParam::getSalaryBillType, SalaryBillItemNameSaveParam::getItemShowNameSetting);
|
||||
|
||||
for(Map.Entry<Integer, List<SalaryBillItemNameSaveParam.itemShowNameSetting>> entry : saveMap.entrySet()){
|
||||
// 获取已经设置的展示名
|
||||
List<SalaryBillItemNamePO> billItemNameList = ListByTemplateAndType(SalaryBillItemNamePO.builder().salaryTemplateId(salaryTemplateId).salaryBillType(entry.getKey()).build());
|
||||
Map<Long, SalaryBillItemNamePO> billItemNameMap = SalaryEntityUtil.convert2Map(billItemNameList, SalaryBillItemNamePO::getSalaryItemId);
|
||||
List<Long> needDeleteItemIdList = new ArrayList<>();
|
||||
|
||||
entry.getValue().stream().forEach(setting -> {
|
||||
if(StringUtils.isBlank(setting.getSalaryItemShowName())){
|
||||
// 显示名为空则删除设置
|
||||
needDeleteItemIdList.add(setting.getSalaryItemId());
|
||||
}else{
|
||||
if(billItemNameMap.containsKey(setting.getSalaryItemId())){
|
||||
// 更新
|
||||
SalaryBillItemNamePO po = billItemNameMap.get(setting.getSalaryItemId());
|
||||
po.setSalaryItemShowName(setting.getSalaryItemShowName());
|
||||
po.setUpdateTime(now);
|
||||
needUpdateList.add(po);
|
||||
}else{
|
||||
// 新增
|
||||
needInsertList.add(SalaryBillItemNamePO.builder()
|
||||
.id(IdGenerator.generate())
|
||||
.salaryItemId(setting.getSalaryItemId())
|
||||
.salaryItemShowName(setting.getSalaryItemShowName())
|
||||
.salaryTemplateId(salaryTemplateId)
|
||||
.salaryBillType(entry.getKey())
|
||||
.createTime(now)
|
||||
.updateTime(now)
|
||||
.creator(Long.valueOf(user.getUID()))
|
||||
.deleteType(NumberUtils.INTEGER_ZERO)
|
||||
.tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY)
|
||||
.build());
|
||||
}
|
||||
}
|
||||
});
|
||||
// 删除
|
||||
batchDeleteByItemIdsAndTemplateId(needDeleteItemIdList, salaryTemplateId, entry.getKey());
|
||||
}
|
||||
// 入库
|
||||
batchUpdate(needUpdateList);
|
||||
batchInsert(needInsertList);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void batchUpdate(List<SalaryBillItemNamePO> needUpdateList) {
|
||||
if(CollectionUtils.isEmpty(needUpdateList)){
|
||||
return;
|
||||
}
|
||||
List<List<SalaryBillItemNamePO>> partition = Lists.partition(needUpdateList, 500);
|
||||
partition.forEach(getSalaryBillItemNameMapper()::batchUpdate);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void batchInsert(List<SalaryBillItemNamePO> needInsertList) {
|
||||
if(CollectionUtils.isEmpty(needInsertList)){
|
||||
return;
|
||||
}
|
||||
List<List<SalaryBillItemNamePO>> partition = Lists.partition(needInsertList, 500);
|
||||
partition.forEach(getSalaryBillItemNameMapper()::batchInsert);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteByIds(List<Long> needDeleteIds) {
|
||||
if(CollectionUtils.isEmpty(needDeleteIds)){
|
||||
return;
|
||||
}
|
||||
List<List<Long>> partition = Lists.partition(needDeleteIds, 1000);
|
||||
partition.forEach(getSalaryBillItemNameMapper()::deleteByIds);
|
||||
}
|
||||
|
||||
public void batchDeleteByItemIdsAndTemplateId(List<Long> salaryItemIds, Long salaryTemplateId, Integer salaryBillType) {
|
||||
if(CollectionUtils.isEmpty(salaryItemIds) || Objects.isNull(salaryTemplateId) || Objects.isNull(salaryBillType))
|
||||
return;
|
||||
getSalaryBillItemNameMapper().deleteByItemIdsAndTemplateId(salaryItemIds, salaryTemplateId, salaryBillType);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteByTemplateIds(Collection<Long> ids) {
|
||||
if(CollectionUtils.isEmpty(ids)){
|
||||
return;
|
||||
}
|
||||
getSalaryBillItemNameMapper().deleteByTemplateIds(ids);
|
||||
}
|
||||
}
|
||||
|
|
@ -7,11 +7,13 @@ import com.engine.salary.biz.SalarySobBiz;
|
|||
import com.engine.salary.biz.SalaryTemplateBiz;
|
||||
import com.engine.salary.entity.salaryBill.bo.SalaryTemplateBO;
|
||||
import com.engine.salary.entity.salaryBill.dto.SalaryTemplateListDTO;
|
||||
import com.engine.salary.entity.salaryBill.dto.SalaryTemplateSalaryItemListDTO;
|
||||
import com.engine.salary.entity.salaryBill.dto.SalaryTemplateSalaryItemSetListDTO;
|
||||
import com.engine.salary.entity.salaryBill.param.SalaryTemplateCopyParam;
|
||||
import com.engine.salary.entity.salaryBill.param.SalaryTemplateDefaultUseParam;
|
||||
import com.engine.salary.entity.salaryBill.param.SalaryTemplateQueryParam;
|
||||
import com.engine.salary.entity.salaryBill.param.SalaryTemplateSaveParam;
|
||||
import com.engine.salary.entity.salaryBill.po.SalaryBillItemNamePO;
|
||||
import com.engine.salary.entity.salaryBill.po.SalaryTemplatePO;
|
||||
import com.engine.salary.entity.salarysob.dto.SalarySobItemAggregateDTO;
|
||||
import com.engine.salary.entity.salarysob.dto.SalarySobItemDTO;
|
||||
|
|
@ -25,7 +27,9 @@ import com.engine.salary.util.SalaryEntityUtil;
|
|||
import com.engine.salary.util.page.PageInfo;
|
||||
import com.engine.salary.util.page.SalaryPageUtil;
|
||||
import com.mzlion.core.utils.BeanUtils;
|
||||
import dm.jdbc.util.IdGenerator;
|
||||
import org.apache.commons.collections.CollectionUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.commons.lang3.math.NumberUtils;
|
||||
import weaver.hrm.User;
|
||||
|
||||
|
|
@ -59,6 +63,10 @@ public class SalaryTemplateServiceImpl extends Service implements SalaryTemplate
|
|||
return ServiceUtil.getService(SalarySobItemHideServiceImpl.class, user);
|
||||
}
|
||||
|
||||
private SalaryBillItemNameService getSalaryBillItemNameService(User user) {
|
||||
return ServiceUtil.getService(SalaryBillItemNameServiceImpl.class, user);
|
||||
}
|
||||
|
||||
@Override
|
||||
public SalaryTemplatePO getById(Long id) {
|
||||
return mapper.getById(id);
|
||||
|
|
@ -138,6 +146,10 @@ public class SalaryTemplateServiceImpl extends Service implements SalaryTemplate
|
|||
salaryTemplate.setSalaryItemZeroStatus(saveParam.getSalaryItemZeroStatus()?1:0);
|
||||
salaryTemplate.setAutoSendCycleType(saveParam.getAutoSendCycleType());
|
||||
mapper.insert(salaryTemplate);
|
||||
|
||||
// 存储工资单项目自定义名称信息
|
||||
saveParam.getSalaryBillItemNameSetting().stream().forEach(set -> set.setSalaryTemplateId(salaryTemplate.getId()));
|
||||
getSalaryBillItemNameService(user).saveItemShowName(saveParam.getSalaryBillItemNameSetting());
|
||||
// 记录日志
|
||||
// SalaryLoggerUtil.recordAddSingleLog(salaryTemplateLoggerTemplate,
|
||||
// salaryTemplate.getId(),
|
||||
|
|
@ -204,6 +216,24 @@ public class SalaryTemplateServiceImpl extends Service implements SalaryTemplate
|
|||
salaryTemplateNew.setSalaryItemSetting(saveParam.getSalaryItemSetting() != null ? JSONUtil.toJsonStr(saveParam.getSalaryItemSetting()) : "");
|
||||
salaryTemplateNew.setReplenishSalaryItemSetting(saveParam.getReplenishSalaryItemSetting() != null ? JSONUtil.toJsonStr(saveParam.getReplenishSalaryItemSetting()) : "");
|
||||
mapper.updateById(salaryTemplateNew);
|
||||
|
||||
// 保存自定义工资单项目名称信息
|
||||
getSalaryBillItemNameService(user).saveItemShowName(saveParam.getSalaryBillItemNameSetting());
|
||||
// 模板中没有的薪资项目需要同步删除显示名称表
|
||||
List<SalaryBillItemNamePO> billItemNameList = getSalaryBillItemNameService(user).ListByTemplateAndType(SalaryBillItemNamePO.builder().salaryTemplateId(saveParam.getId()).build());
|
||||
Map<Integer, List<SalaryBillItemNamePO>> billItemNameMap = SalaryEntityUtil.group2Map(billItemNameList, SalaryBillItemNamePO::getSalaryBillType);
|
||||
List<SalaryTemplateSalaryItemListDTO> saveItemList = saveParam.getSalaryItemSetting().stream().map(SalaryTemplateSalaryItemSetListDTO::getItems).flatMap(Collection::stream).collect(Collectors.toList());
|
||||
Set<String> saveItemIdList = SalaryEntityUtil.properties(saveItemList, SalaryTemplateSalaryItemListDTO::getSalaryItemId);
|
||||
// 正常工资单模板中删除的薪资项目
|
||||
List<Long> needDeleteIds = billItemNameMap.getOrDefault(NumberUtils.INTEGER_ZERO, Collections.emptyList()).stream().filter(salaryBillItemNamepo -> !saveItemIdList.contains(salaryBillItemNamepo.getSalaryItemId().toString()))
|
||||
.map(SalaryBillItemNamePO::getId).collect(Collectors.toList());
|
||||
// 补发工资单模板中删除的薪资项目
|
||||
List<SalaryTemplateSalaryItemListDTO> replenishItemList = saveParam.getReplenishSalaryItemSetting().stream().map(SalaryTemplateSalaryItemSetListDTO::getItems).flatMap(Collection::stream).collect(Collectors.toList());
|
||||
Set<String> saveReplenishItemIdList = SalaryEntityUtil.properties(replenishItemList, SalaryTemplateSalaryItemListDTO::getSalaryItemId);
|
||||
needDeleteIds.addAll(billItemNameMap.getOrDefault(NumberUtils.INTEGER_ONE, Collections.emptyList()).stream().filter(salaryBillItemNamepo -> !saveReplenishItemIdList.contains(salaryBillItemNamepo.getSalaryItemId().toString()))
|
||||
.map(SalaryBillItemNamePO::getId).collect(Collectors.toList()));
|
||||
getSalaryBillItemNameService(user).deleteByIds(needDeleteIds);
|
||||
|
||||
// 记录日志
|
||||
// SalaryLoggerUtil.recordUpdateSingleLog(salaryTemplateLoggerTemplate,
|
||||
// salaryTemplate.getId(),
|
||||
|
|
@ -238,6 +268,21 @@ public class SalaryTemplateServiceImpl extends Service implements SalaryTemplate
|
|||
salaryTemplateNew.setName(copyParam.getName());
|
||||
salaryTemplateNew.setUseType(SalaryTemplateWhetherEnum.FALSE.getValue());
|
||||
mapper.insert(salaryTemplateNew);
|
||||
|
||||
// 复制工资单自定义名称信息
|
||||
List<SalaryBillItemNamePO> billItemNamePOList = getSalaryBillItemNameService(user).ListByTemplateAndType(SalaryBillItemNamePO.builder().salaryTemplateId(copyParam.getId()).build());
|
||||
if(CollectionUtils.isNotEmpty(billItemNamePOList)){
|
||||
Date now = new Date();
|
||||
List<SalaryBillItemNamePO> needInsertList = billItemNamePOList.stream().map(po -> {
|
||||
SalaryBillItemNamePO newSalaryBillItemNamePO = new SalaryBillItemNamePO();
|
||||
BeanUtils.copyProperties(po, newSalaryBillItemNamePO);
|
||||
newSalaryBillItemNamePO.setId(IdGenerator.generate());
|
||||
newSalaryBillItemNamePO.setUpdateTime(now);
|
||||
newSalaryBillItemNamePO.setSalaryTemplateId(salaryTemplateNew.getId());
|
||||
return newSalaryBillItemNamePO;
|
||||
}).collect(Collectors.toList());
|
||||
getSalaryBillItemNameService(user).batchInsert(needInsertList);
|
||||
}
|
||||
// 记录日志
|
||||
// SalaryLoggerUtil.recordAddSingleLog(salaryTemplateLoggerTemplate,
|
||||
// salaryTemplateNew.getId(),
|
||||
|
|
@ -260,6 +305,8 @@ public class SalaryTemplateServiceImpl extends Service implements SalaryTemplate
|
|||
}
|
||||
// TODO 正在使用的记录不允许删除
|
||||
mapper.deleteByIds(ids);
|
||||
// 删除工资单重命名表
|
||||
getSalaryBillItemNameService(user).deleteByTemplateIds(ids);
|
||||
// 记录日志
|
||||
// salaryTemplates.forEach(e -> SalaryLoggerUtil.recordDeleteSingleLog(salaryTemplateLoggerTemplate,
|
||||
// e.getId(),
|
||||
|
|
@ -308,9 +355,31 @@ public class SalaryTemplateServiceImpl extends Service implements SalaryTemplate
|
|||
}
|
||||
|
||||
@Override
|
||||
public List<SalaryTemplateSalaryItemSetListDTO> getSalaryItemSetContainHide(Long salarySobId, boolean isReplenish) {
|
||||
public List<SalaryTemplateSalaryItemSetListDTO> getSalaryItemSetContainHide(Long salarySobId, Long salaryTemplateId, boolean isReplenish) {
|
||||
SalarySobItemAggregateDTO salarySobItemAggregate = getSalarySobItemService(user).getAggregateBySalarySobId(salarySobId);
|
||||
return SalaryTemplateBO.convertSalarySobItemAggregateToSalaryItemSet(salarySobItemAggregate, new Long(user.getUID()), isReplenish);
|
||||
// 获取工资单薪资项目展示名信息
|
||||
List<SalaryBillItemNamePO> billItemNameList = getSalaryBillItemNameService(user).ListByTemplateAndType(
|
||||
SalaryBillItemNamePO.builder().salaryTemplateId(salaryTemplateId)
|
||||
.salaryBillType(isReplenish ? 1 : 0)
|
||||
.build());
|
||||
Map<Long, String> itemShowNameMap = SalaryEntityUtil.convert2Map(billItemNameList, SalaryBillItemNamePO::getSalaryItemId, SalaryBillItemNamePO::getSalaryItemShowName);
|
||||
|
||||
List<SalaryTemplateSalaryItemSetListDTO> salaryTemplateSalaryItemSetListDTOS = SalaryTemplateBO.convertSalarySobItemAggregateToSalaryItemSet(salarySobItemAggregate, new Long(user.getUID()), isReplenish);
|
||||
salaryTemplateSalaryItemSetListDTOS.stream()
|
||||
.filter(data -> !StringUtils.equals(data.getGroupId(), "111111111111111111"))
|
||||
.forEach(data -> {
|
||||
data.getItems().forEach(item -> {
|
||||
Long salaryItemId = Long.valueOf(item.getSalaryItemId());
|
||||
if(itemShowNameMap.containsKey(salaryItemId)){
|
||||
item.setSalaryItemShowName(itemShowNameMap.get(salaryItemId));
|
||||
item.setName(itemShowNameMap.get(salaryItemId) + "(" + item.getOriginName() +")");
|
||||
}else{
|
||||
item.setSalaryItemShowName(item.getOriginName());
|
||||
item.setName(item.getOriginName());
|
||||
}
|
||||
});
|
||||
});
|
||||
return salaryTemplateSalaryItemSetListDTOS;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -98,6 +98,19 @@ public class SalaryBillController {
|
|||
return new ResponseResult<Long, SalaryTemplateShowFormDTO>(user).run(getSalaryTemplateWrapper(user)::getShowForm, id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置工资单模板薪资项显示名称
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@POST
|
||||
@Path("/template/saveItemShowName")
|
||||
@Produces(MediaType.APPLICATION_JSON)
|
||||
public String saveItemShowName(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody List<SalaryBillItemNameSaveParam> param) {
|
||||
User user = HrmUserVarify.getUser(request, response);
|
||||
return new ResponseResult<List<SalaryBillItemNameSaveParam>, String>(user).run(getSalaryTemplateWrapper(user)::saveItemShowName, param);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取薪资项目设置
|
||||
*
|
||||
|
|
|
|||
|
|
@ -2,8 +2,10 @@ package com.engine.salary.wrapper;
|
|||
|
||||
import com.engine.common.util.ServiceUtil;
|
||||
import com.engine.core.impl.Service;
|
||||
import com.engine.salary.entity.salaryBill.bo.SalaryBillItemNameBO;
|
||||
import com.engine.salary.entity.salaryBill.dto.*;
|
||||
import com.engine.salary.entity.salaryBill.param.*;
|
||||
import com.engine.salary.entity.salaryBill.po.SalaryBillItemNamePO;
|
||||
import com.engine.salary.entity.salaryBill.po.SalaryTemplatePO;
|
||||
import com.engine.salary.entity.salaryitem.po.SalaryItemPO;
|
||||
import com.engine.salary.entity.salarysob.po.SalarySobBackItemPO;
|
||||
|
|
@ -65,6 +67,10 @@ public class SalaryTemplateWrapper extends Service {
|
|||
return ServiceUtil.getService(SalaryBillBaseSetServiceImpl.class, user);
|
||||
}
|
||||
|
||||
private SalaryBillItemNameService getSalaryBillItemNameService(User user) {
|
||||
return ServiceUtil.getService(SalaryBillItemNameServiceImpl.class, user);
|
||||
}
|
||||
|
||||
/**
|
||||
* 工资单模板列表
|
||||
*
|
||||
|
|
@ -239,6 +245,11 @@ public class SalaryTemplateWrapper extends Service {
|
|||
if (StringUtils.isNotEmpty(po.getSalaryItemSetting())) {
|
||||
salaryTemplateShowSetData = JsonUtil.parseList(po.getSalaryItemSetting(), SalaryTemplateSalaryItemSetListDTO.class);
|
||||
}
|
||||
// 补发薪资项目设置,前端保存时需要使用
|
||||
List<SalaryTemplateSalaryItemSetListDTO> replenishSalaryTemplateSalaryItemSet = new ArrayList<>();
|
||||
if (StringUtils.isNotEmpty(po.getReplenishSalaryItemSetting())) {
|
||||
replenishSalaryTemplateSalaryItemSet = JsonUtil.parseList(po.getReplenishSalaryItemSetting(), SalaryTemplateSalaryItemSetListDTO.class);
|
||||
}
|
||||
|
||||
//同步项目名称
|
||||
List<SalaryItemPO> itemPOS = getSalaryItemService(user).listAll();
|
||||
|
|
@ -247,12 +258,35 @@ public class SalaryTemplateWrapper extends Service {
|
|||
// List<SalarySobItemGroupPO> groupPOS = getSalarySobItemGroupService(user).listBySalarySobId(po.getSalarySobId());
|
||||
// Map<Long, String> groupIdNameMap = SalaryEntityUtil.convert2Map(groupPOS, SalarySobItemGroupPO::getId, SalarySobItemGroupPO::getName);
|
||||
|
||||
// 获取工资单薪资项目展示名信息
|
||||
Map<Long, String> itemShowNameMap;
|
||||
Map<Long, SalaryBillItemNameDTO> salaryBillItemNameDTOMap = Collections.emptyMap();
|
||||
if (id != null){
|
||||
List<SalaryBillItemNamePO> billItemNameList = getSalaryBillItemNameService(user).ListByTemplateAndType(SalaryBillItemNamePO.builder().salaryTemplateId(id).salaryBillType(0).build());
|
||||
itemShowNameMap = SalaryEntityUtil.convert2Map(billItemNameList, SalaryBillItemNamePO::getSalaryItemId, SalaryBillItemNamePO::getSalaryItemShowName);
|
||||
// 获取薪资项目信息
|
||||
List<SalaryBillItemNameDTO> salaryBillItemNameDTOS = SalaryBillItemNameBO.convert2ListDTO(billItemNameList);
|
||||
salaryBillItemNameDTOMap = SalaryEntityUtil.convert2Map(salaryBillItemNameDTOS, SalaryBillItemNameDTO::getSalaryItemId);
|
||||
} else {
|
||||
itemShowNameMap = Collections.emptyMap();
|
||||
}
|
||||
|
||||
if (CollectionUtils.isNotEmpty(salaryTemplateShowSetData)) {
|
||||
salaryTemplateShowSetData.stream()
|
||||
//排除人员消息
|
||||
.filter(data -> !StringUtils.equals(data.getGroupId(), "111111111111111111"))
|
||||
.forEach(data -> {
|
||||
data.getItems().forEach(item -> item.setName(itemIdNameMap.getOrDefault(Long.valueOf(item.getSalaryItemId()), item.getName())));
|
||||
data.getItems().forEach(item -> {
|
||||
Long salaryItemId = Long.valueOf(item.getSalaryItemId());
|
||||
item.setOriginName(itemIdNameMap.getOrDefault(salaryItemId, item.getName()));
|
||||
if(itemShowNameMap.containsKey(salaryItemId)){
|
||||
item.setSalaryItemShowName(itemShowNameMap.get(salaryItemId));
|
||||
item.setName(itemShowNameMap.get(salaryItemId) + "(" + itemIdNameMap.getOrDefault(salaryItemId, item.getName()) +")");
|
||||
}else{
|
||||
item.setSalaryItemShowName(itemIdNameMap.getOrDefault(salaryItemId, item.getName()));
|
||||
item.setName(itemIdNameMap.getOrDefault(salaryItemId, item.getName()));
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
|
|
@ -262,6 +296,8 @@ public class SalaryTemplateWrapper extends Service {
|
|||
.vars(Arrays.stream(SalaryTemplateVarEnum.values()).map(SalaryTemplateVarEnum::getValue).collect(Collectors.toList()))
|
||||
.salaryTemplateShowSet(salaryTemplateShowSet)
|
||||
.salaryTemplateSalaryItemSet(salaryTemplateShowSetData)
|
||||
.replenishSalaryTemplateSalaryItemSet(replenishSalaryTemplateSalaryItemSet)
|
||||
.salaryBillItemNameSet(salaryBillItemNameDTOMap)
|
||||
.build();
|
||||
}
|
||||
|
||||
|
|
@ -388,6 +424,8 @@ public class SalaryTemplateWrapper extends Service {
|
|||
|
||||
// 补发薪资项目设置
|
||||
List<SalaryTemplateSalaryItemSetListDTO> replenishSalaryItemSetting;
|
||||
// 补发薪资项目显示名称
|
||||
Map<Long, SalaryBillItemNameDTO> salaryBillItemNameDTOMap = new HashMap<>();
|
||||
if (id != null) {
|
||||
SalaryTemplatePO po = getSalaryTemplateService(user).getById(id);
|
||||
if (po == null) {
|
||||
|
|
@ -399,13 +437,30 @@ public class SalaryTemplateWrapper extends Service {
|
|||
// 同步补发薪资项目名称
|
||||
List<SalaryItemPO> itemPOS = getSalaryItemService(user).listAll();
|
||||
Map<Long, String> itemIdNameMap = SalaryEntityUtil.convert2Map(itemPOS, SalaryItemPO::getId, SalaryItemPO::getName);
|
||||
// 获取工资单薪资项目展示名信息
|
||||
List<SalaryBillItemNamePO> billItemNameList = getSalaryBillItemNameService(user).ListByTemplateAndType(SalaryBillItemNamePO.builder().salaryTemplateId(id).salaryBillType(1).build());
|
||||
Map<Long, String> itemShowNameMap = SalaryEntityUtil.convert2Map(billItemNameList, SalaryBillItemNamePO::getSalaryItemId, SalaryBillItemNamePO::getSalaryItemShowName);
|
||||
// 获取薪资项目信息
|
||||
List<SalaryBillItemNameDTO> salaryBillItemNameDTOS = SalaryBillItemNameBO.convert2ListDTO(billItemNameList);
|
||||
salaryBillItemNameDTOMap = SalaryEntityUtil.convert2Map(salaryBillItemNameDTOS, SalaryBillItemNameDTO::getSalaryItemId);
|
||||
|
||||
if (CollectionUtils.isNotEmpty(replenishSalaryItemSetting)) {
|
||||
replenishSalaryItemSetting.stream()
|
||||
//排除人员消息
|
||||
.filter(data -> !StringUtils.equals(data.getGroupId(), "111111111111111111"))
|
||||
.forEach(data -> {
|
||||
data.getItems().forEach(item -> item.setName(itemIdNameMap.getOrDefault(Long.valueOf(item.getSalaryItemId()), item.getName())));
|
||||
});
|
||||
.filter(data -> !StringUtils.equals(data.getGroupId(), "111111111111111111"))
|
||||
.forEach(data -> {
|
||||
data.getItems().forEach(item -> {
|
||||
Long salaryItemId = Long.valueOf(item.getSalaryItemId());
|
||||
item.setOriginName(itemIdNameMap.getOrDefault(salaryItemId, item.getName()));
|
||||
if(itemShowNameMap.containsKey(salaryItemId)){
|
||||
item.setSalaryItemShowName(itemShowNameMap.get(salaryItemId));
|
||||
item.setName(itemShowNameMap.get(salaryItemId) + "(" + itemIdNameMap.getOrDefault(salaryItemId, item.getName()) + ")");
|
||||
}else{
|
||||
item.setSalaryItemShowName(itemIdNameMap.getOrDefault(salaryItemId, item.getName()));
|
||||
item.setName(itemIdNameMap.getOrDefault(salaryItemId, item.getName()));
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
} else {
|
||||
replenishSalaryItemSetting = getReplenishSalaryItemSet(replenishFormQueryParam.getSalarySobId());
|
||||
|
|
@ -417,6 +472,7 @@ public class SalaryTemplateWrapper extends Service {
|
|||
return SalaryTemplateReplenishFormDTO.builder()
|
||||
.id(id)
|
||||
.replenishSalaryTemplateSalaryItemSet(replenishSalaryItemSetting)
|
||||
.salaryBillItemNameSet(salaryBillItemNameDTOMap)
|
||||
.build();
|
||||
}
|
||||
|
||||
|
|
@ -430,7 +486,7 @@ public class SalaryTemplateWrapper extends Service {
|
|||
Boolean isReplenish = Optional.ofNullable(param.getIsReplenish())
|
||||
.orElse(false);
|
||||
List<SalaryTemplateSalaryItemSetListDTO> salaryItemSet
|
||||
= getSalaryTemplateService(user).getSalaryItemSetContainHide(param.getSalarySobId(), isReplenish);
|
||||
= getSalaryTemplateService(user).getSalaryItemSetContainHide(param.getSalarySobId(), param.getSalaryTemplateId(), isReplenish);
|
||||
Long groupId = param.getGroupId();
|
||||
return salaryItemSet.stream()
|
||||
.filter(s -> Objects.equals(s.getGroupId(), groupId + ""))
|
||||
|
|
@ -452,11 +508,15 @@ public class SalaryTemplateWrapper extends Service {
|
|||
public List<SalaryTemplateSalaryItemSetListDTO> getSalaryGroupSet(SalaryBillSalaryGroupQueryParam param) {
|
||||
Boolean isReplenish = Optional.ofNullable(param.getIsReplenish())
|
||||
.orElse(false);
|
||||
return getSalaryTemplateService(user).getSalaryItemSetContainHide(param.getSalarySobId(), isReplenish)
|
||||
return getSalaryTemplateService(user).getSalaryItemSetContainHide(param.getSalarySobId(), param.getSalaryTemplateId(), isReplenish)
|
||||
.stream()
|
||||
.filter(group -> !Optional.ofNullable(param.getExistSalaryGroupIds()).orElse(Collections.emptyList())
|
||||
.contains(group.getGroupId())
|
||||
)
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
public void saveItemShowName(List<SalaryBillItemNameSaveParam> saveList) {
|
||||
getSalaryBillItemNameService(user).saveItemShowName(saveList);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue