薪资核算导出模板

This commit is contained in:
Harryxzy 2024-03-26 17:04:56 +08:00
parent 25c2e2f1c1
commit 1c40ed0ecd
8 changed files with 569 additions and 1 deletions

View File

@ -0,0 +1,44 @@
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.List;
/**
* @ClassName SalaryAcctResultTemplatePO
* @author Harryxzy
* @date 2024/3/26 15:08
* @description 薪资核算导出模板
*/
@AllArgsConstructor
@NoArgsConstructor
@Builder
@Data
public class SalaryAcctResultTemplateSaveParam{
/**
* 主键id
*/
private Long id;
/**
* 薪资账套id
*/
@DataCheck(require = true, message= "薪资账套id不能为空")
private Long salarySobId;
/**
* 薪资项目id
*/
private List<Long> salaryItemIds;
/**
* 模板名称
*/
@DataCheck(require = true, message= "模板名称不能为空")
private String templateName;
}

View File

@ -0,0 +1,54 @@
package com.engine.salary.entity.salaryacct.po;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Collection;
import java.util.Date;
/**
* @ClassName SalaryAcctResultTemplatePO
* @author Harryxzy
* @date 2024/3/26 15:08
* @description 薪资核算导出模板
*/
@AllArgsConstructor
@NoArgsConstructor
@Builder
@Data
public class SalaryAcctResultTemplatePO {
/**
* 主键id
*/
private Long id;
/**
* 模板名称
*/
private String templateName;
/**
* 薪资账套id
*/
private Long salarySobId;
/**
* 薪资项目id
*/
private String salaryItemIds;
private Long creator;
private Date updateTime;
private Date createTime;
private Integer deleteType;
private String tenantKey;
//主键id集合
private Collection<Long> ids;
}

View File

@ -0,0 +1,210 @@
<?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.SalaryAcctResultTemplateMapper">
<resultMap id="BaseResultMap" type="com.engine.salary.entity.salaryacct.po.SalaryAcctResultTemplatePO">
<result column="create_time" property="createTime" />
<result column="creator" property="creator" />
<result column="delete_type" property="deleteType" />
<result column="id" property="id" />
<result column="salary_item_ids" property="salaryItemIds" />
<result column="salary_sob_id" property="salarySobId" />
<result column="template_name" property="templateName" />
<result column="tenant_key" property="tenantKey" />
<result column="update_time" property="updateTime" />
</resultMap>
<!-- 表字段 -->
<sql id="baseColumns">
t.create_time
, t.creator
, t.delete_type
, t.id
, t.salary_item_ids
, t.salary_sob_id
, t.template_name
, t.tenant_key
, t.update_time
</sql>
<!-- 查询全部 -->
<select id="listAll" resultMap="BaseResultMap">
SELECT
<include refid="baseColumns" />
FROM hrsa_salary_acct_result_template t
WHERE delete_type = 0
</select>
<!-- 根据主键获取单条记录 -->
<select id="getById" resultMap="BaseResultMap" parameterType="Long">
SELECT
<include refid="baseColumns" />
FROM hrsa_salary_acct_result_template t
WHERE id = #{id} AND delete_type = 0
</select>
<!-- 条件查询 -->
<select id="listSome" resultMap="BaseResultMap" parameterType="com.engine.salary.entity.salaryacct.po.SalaryAcctResultTemplatePO">
SELECT
<include refid="baseColumns" />
FROM hrsa_salary_acct_result_template t
WHERE delete_type = 0
<if test="createTime != null">
AND create_time = #{createTime}
</if>
<if test="creator != null">
AND creator = #{creator}
</if>
<if test="deleteType != null">
AND delete_type = #{deleteType}
</if>
<if test="id != null">
AND id = #{id}
</if>
<if test="salaryItemIds != null">
AND salary_item_ids = #{salaryItemIds}
</if>
<if test="salarySobId != null">
AND salary_sob_id = #{salarySobId}
</if>
<if test="templateName != null">
AND template_name = #{templateName}
</if>
<if test="tenantKey != null">
AND tenant_key = #{tenantKey}
</if>
<if test="updateTime != null">
AND update_time = #{updateTime}
</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.SalaryAcctResultTemplatePO">
INSERT INTO hrsa_salary_acct_result_template
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="createTime != null">
create_time,
</if>
<if test="creator != null">
creator,
</if>
<if test="deleteType != null">
delete_type,
</if>
<if test="id != null">
id,
</if>
<if test="salaryItemIds != null">
salary_item_ids,
</if>
<if test="salarySobId != null">
salary_sob_id,
</if>
<if test="templateName != null">
template_name,
</if>
<if test="tenantKey != null">
tenant_key,
</if>
<if test="updateTime != null">
update_time,
</if>
</trim>
<trim prefix="VALUES (" suffix=")" suffixOverrides=",">
<if test="createTime != null" >
#{createTime},
</if>
<if test="creator != null" >
#{creator},
</if>
<if test="deleteType != null" >
#{deleteType},
</if>
<if test="id != null" >
#{id},
</if>
<if test="salaryItemIds != null" >
#{salaryItemIds},
</if>
<if test="salarySobId != null" >
#{salarySobId},
</if>
<if test="templateName != null" >
#{templateName},
</if>
<if test="tenantKey != null" >
#{tenantKey},
</if>
<if test="updateTime != null" >
#{updateTime},
</if>
</trim>
</insert>
<!-- 更新,更新全部字段 -->
<update id="update" parameterType="com.engine.salary.entity.salaryacct.po.SalaryAcctResultTemplatePO">
UPDATE hrsa_salary_acct_result_template
<set>
create_time=#{createTime},
creator=#{creator},
delete_type=#{deleteType},
salary_item_ids=#{salaryItemIds},
salary_sob_id=#{salarySobId},
template_name=#{templateName},
tenant_key=#{tenantKey},
update_time=#{updateTime},
</set>
WHERE id = #{id} AND delete_type = 0
</update>
<!-- 更新不为NULL的字段 -->
<update id="updateIgnoreNull" parameterType="com.engine.salary.entity.salaryacct.po.SalaryAcctResultTemplatePO">
UPDATE hrsa_salary_acct_result_template
<set>
<if test="createTime != null" >
create_time=#{createTime},
</if>
<if test="creator != null" >
creator=#{creator},
</if>
<if test="deleteType != null" >
delete_type=#{deleteType},
</if>
<if test="salaryItemIds != null" >
salary_item_ids=#{salaryItemIds},
</if>
<if test="salarySobId != null" >
salary_sob_id=#{salarySobId},
</if>
<if test="templateName != null" >
template_name=#{templateName},
</if>
<if test="tenantKey != null" >
tenant_key=#{tenantKey},
</if>
<if test="updateTime != null" >
update_time=#{updateTime},
</if>
</set>
WHERE id = #{id} AND delete_type = 0
</update>
<!-- 根据主键删除记录 -->
<delete id="delete" parameterType="com.engine.salary.entity.salaryacct.po.SalaryAcctResultTemplatePO">
UPDATE hrsa_salary_acct_result_template
SET delete_type=1
WHERE id = #{id} AND delete_type = 0
</delete>
</mapper>

View File

@ -4,6 +4,7 @@ import com.engine.salary.component.WeaTableColumnGroup;
import com.engine.salary.entity.salaryacct.dto.SalaryAcctImportFieldDTO;
import com.engine.salary.entity.salaryacct.param.*;
import com.engine.salary.entity.salaryacct.po.SalaryAcctRecordPO;
import com.engine.salary.entity.salaryacct.po.SalaryAcctResultTemplatePO;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.util.List;
@ -120,6 +121,30 @@ public interface SalaryAcctExcelService {
void cacheExportField(List<Long> salaryItems);
/**
* 保存导出模板
* @param saveParam
*/
void saveExportTemplate(SalaryAcctResultTemplateSaveParam saveParam);
/**
* 删除导出模板
* @param templateId
*/
void deleteExportTemplate(Long templateId);
/**
* 获取导出模板详细信息
* @param templateId
*/
Map<String, Object> getExportTemplateForm(Long templateId);
/**
* 根据账套id获取导出模板列表
* @param salarySobId
*/
List<SalaryAcctResultTemplatePO> exportTemplateList(Long salarySobId);
//
// /**
// * 薪资核算结果校验异常导出

View File

@ -0,0 +1,70 @@
package com.engine.salary.service;
import com.engine.salary.entity.salaryacct.po.SalaryAcctResultTemplatePO;
import java.util.List;
/**
* @author Harryxzy
* @ClassName SalaryAcctResultTemplateService
* @date 2024/03/26 15:28
* @description
*/
public interface SalaryAcctResultTemplateService {
/**
* 查询所有记录
*
* @return 返回集合没有返回空List
*/
List <SalaryAcctResultTemplatePO> listAll();
/**
* 根据主键查询
*
* @param id 主键
* @return 返回记录没有返回null
*/
SalaryAcctResultTemplatePO getById(Long id);
/**
* 新增忽略null字段
*
* @param salaryAcctResultTemplate 新增的记录
* @return 返回影响行数
*/
int insertIgnoreNull(SalaryAcctResultTemplatePO salaryAcctResultTemplate);
/**
* 修改修改所有字段
*
* @param salaryAcctResultTemplate 修改的记录
* @return 返回影响行数
*/
int update(SalaryAcctResultTemplatePO salaryAcctResultTemplate);
/**
* 修改忽略null字段
*
* @param salaryAcctResultTemplate 修改的记录
* @return 返回影响行数
*/
int updateIgnoreNull(SalaryAcctResultTemplatePO salaryAcctResultTemplate);
/**
* 删除记录
*
* @param id 待删除的记录
* @return 返回影响行数
*/
int deleteById(Long id);
/**
* 根据账套id获取
* @param salarySobId
* @return
*/
List<SalaryAcctResultTemplatePO> listBySalarySobId(Long salarySobId);
}

View File

@ -4,11 +4,11 @@ import com.api.formmode.mybatis.util.SqlProxyHandle;
import com.cloudstore.dev.api.util.Util_DataCache;
import com.engine.common.util.ServiceUtil;
import com.engine.core.impl.Service;
import com.engine.hrmelog.entity.dto.LoggerContext;
import com.engine.salary.component.WeaTableColumnGroup;
import com.engine.salary.config.SalaryElogConfig;
import com.engine.salary.constant.SalaryDefaultTenantConstant;
import com.engine.salary.constant.SalaryItemConstant;
import com.engine.hrmelog.entity.dto.LoggerContext;
import com.engine.salary.entity.datacollection.DataCollectionEmployee;
import com.engine.salary.entity.report.po.SalaryAcctResultReportPO;
import com.engine.salary.entity.salaryacct.bo.SalaryAcctEmployeeBO;
@ -150,6 +150,10 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc
return ServiceUtil.getService(SalarySobItemWrapper.class, user);
}
private SalaryAcctResultTemplateService getSalaryAcctResultTemplateService(User user) {
return ServiceUtil.getService(SalaryAcctResultTemplateServiceImpl.class, user);
}
@Override
public XSSFWorkbook exportSalaryAcctEmployee(SalaryAcctEmployeeQueryParam queryParam) {
ValidUtil.doValidator(queryParam);
@ -1432,6 +1436,66 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc
}
/**
* 保存导出模板
* @param saveParam
*/
@Override
public void saveExportTemplate(SalaryAcctResultTemplateSaveParam saveParam) {
ValidUtil.doValidator(saveParam);
List<SalaryAcctResultTemplatePO> templateBySobId = getSalaryAcctResultTemplateService(user).listBySalarySobId(saveParam.getSalarySobId());
if (saveParam.getId() != null) {
Optional<SalaryAcctResultTemplatePO> saveNameOptional = templateBySobId.stream().filter(po -> po.getTemplateName().equals(saveParam.getTemplateName()) && !po.getId().equals(saveParam.getId())).findFirst();
if (saveNameOptional.isPresent()) {
throw new SalaryRunTimeException("该账套中已经存在同名模板,请重新设置后保存");
}
// 更新
SalaryAcctResultTemplatePO salaryAcctResultTemplatePO = getSalaryAcctResultTemplateService(user).getById(saveParam.getId());
if (salaryAcctResultTemplatePO == null) {
throw new SalaryRunTimeException("模板不存在,或已被删除");
}
salaryAcctResultTemplatePO.setSalaryItemIds(StringUtils.join(saveParam.getSalaryItemIds(), ","));
salaryAcctResultTemplatePO.setTemplateName(saveParam.getTemplateName());
getSalaryAcctResultTemplateService(user).update(salaryAcctResultTemplatePO);
} else {
Optional<SalaryAcctResultTemplatePO> saveNameOptional = templateBySobId.stream().filter(po -> po.getTemplateName().equals(saveParam.getTemplateName())).findFirst();
if (saveNameOptional.isPresent()) {
throw new SalaryRunTimeException("该账套中已经存在同名模板,请重新设置后保存");
}
// 新建
getSalaryAcctResultTemplateService(user).insertIgnoreNull(SalaryAcctResultTemplatePO.builder()
.id(IdGenerator.generate())
.salarySobId(saveParam.getSalarySobId())
.salaryItemIds(StringUtils.join(saveParam.getSalaryItemIds(), ","))
.templateName(saveParam.getTemplateName())
.creator(Long.valueOf(user.getUID()))
.createTime(new Date())
.deleteType(0)
.build());
}
}
@Override
public void deleteExportTemplate(Long templateId) {
getSalaryAcctResultTemplateService(user).deleteById(templateId);
}
@Override
public Map<String, Object> getExportTemplateForm(Long templateId) {
SalaryAcctResultTemplatePO salaryAcctResultTemplatePO = getSalaryAcctResultTemplateService(user).getById(templateId);
if (salaryAcctResultTemplatePO == null) {
throw new SalaryRunTimeException("模板不存在或已被删除");
}
Map<String, Object> resultMap = new HashMap<>();
resultMap.put("checkItems", StringUtils.split(salaryAcctResultTemplatePO.getSalaryItemIds(), ","));
return resultMap;
}
@Override
public List<SalaryAcctResultTemplatePO> exportTemplateList(Long salarySobId) {
return getSalaryAcctResultTemplateService(user).listBySalarySobId(salarySobId);
}
// @Override
// public Map<String, Object> exportCheckResult(
// SalaryCheckResultExportParam exportParam,

View File

@ -0,0 +1,63 @@
package com.engine.salary.service.impl;
import com.engine.core.impl.Service;
import com.engine.salary.entity.salaryacct.po.SalaryAcctResultTemplatePO;
import com.engine.salary.mapper.salaryacct.SalaryAcctResultTemplateMapper;
import com.engine.salary.service.SalaryAcctResultTemplateService;
import com.engine.salary.util.db.MapperProxyFactory;
import java.util.Collections;
import java.util.List;
/**
* @author Harryxzy
* @ClassName SalaryAcctResultTemplateServiceImpl
* @date 2024/03/26 15:30
* @description
*/
public class SalaryAcctResultTemplateServiceImpl extends Service implements SalaryAcctResultTemplateService {
private SalaryAcctResultTemplateMapper getSalaryAcctResultTemplateMapper() {
return MapperProxyFactory.getProxy(SalaryAcctResultTemplateMapper.class);
}
@Override
public List<SalaryAcctResultTemplatePO> listAll() {
return getSalaryAcctResultTemplateMapper().listAll();
}
@Override
public SalaryAcctResultTemplatePO getById(Long id) {
return getSalaryAcctResultTemplateMapper().getById(id);
}
@Override
public int insertIgnoreNull(SalaryAcctResultTemplatePO salaryAcctResultTemplate) {
return getSalaryAcctResultTemplateMapper().insertIgnoreNull(salaryAcctResultTemplate);
}
@Override
public int update(SalaryAcctResultTemplatePO salaryAcctResultTemplate) {
return getSalaryAcctResultTemplateMapper().update(salaryAcctResultTemplate);
}
@Override
public int updateIgnoreNull(SalaryAcctResultTemplatePO salaryAcctResultTemplate) {
return getSalaryAcctResultTemplateMapper().updateIgnoreNull(salaryAcctResultTemplate);
}
@Override
public int deleteById(Long id) {
if (id == null) {
return 0;
}
return getSalaryAcctResultTemplateMapper().deleteById(id);
}
@Override
public List<SalaryAcctResultTemplatePO> listBySalarySobId(Long salarySobId) {
if (salarySobId == null) {
return Collections.emptyList();
}
return getSalaryAcctResultTemplateMapper().listSome(SalaryAcctResultTemplatePO.builder().salarySobId(salarySobId).build());
}
}

View File

@ -3,6 +3,7 @@ package com.engine.salary.web;
import com.engine.common.util.ServiceUtil;
import com.engine.salary.entity.salaryacct.dto.*;
import com.engine.salary.entity.salaryacct.param.*;
import com.engine.salary.entity.salaryacct.po.SalaryAcctResultTemplatePO;
import com.engine.salary.entity.salarysob.dto.SalarySobCycleDTO;
import com.engine.salary.enums.salarysob.SalaryEmployeeStatusEnum;
import com.engine.salary.service.SalaryAcctExcelService;
@ -565,6 +566,43 @@ public class SalaryAcctController {
return new ResponseResult<List<Long>, String>(user).run(getSalaryAcctExcelService(user)::cacheExportField, param.getSalaryItems());
}
// 保存导出模板
@POST
@Path("/acctresult/saveExportTemplate")
@Produces(MediaType.APPLICATION_JSON)
public String saveExportTemplate(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryAcctResultTemplateSaveParam param) {
User user = HrmUserVarify.getUser(request, response);
return new ResponseResult<SalaryAcctResultTemplateSaveParam, String>(user).run(getSalaryAcctExcelService(user)::saveExportTemplate, param);
}
// 删除导出模板
@POST
@Path("/acctresult/deleteExportTemplate")
@Produces(MediaType.APPLICATION_JSON)
public String deleteExportTemplate(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryAcctResultTemplateSaveParam param) {
User user = HrmUserVarify.getUser(request, response);
return new ResponseResult<Long, String>(user).run(getSalaryAcctExcelService(user)::deleteExportTemplate, param.getId());
}
// 获取导出模板详细信息
@POST
@Path("/acctresult/getExportTemplateForm")
@Produces(MediaType.APPLICATION_JSON)
public String getExportTemplateForm(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryAcctResultTemplateSaveParam param) {
User user = HrmUserVarify.getUser(request, response);
return new ResponseResult<Long, Map<String, Object>>(user).run(getSalaryAcctExcelService(user)::getExportTemplateForm, param.getId());
}
// 获取导出模列表
@POST
@Path("/acctresult/exportTemplateList")
@Produces(MediaType.APPLICATION_JSON)
public String exportTemplateList(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryAcctResultTemplateSaveParam param) {
User user = HrmUserVarify.getUser(request, response);
return new ResponseResult<Long, List<SalaryAcctResultTemplatePO>>(user).run(getSalaryAcctExcelService(user)::exportTemplateList, param.getSalarySobId());
}
//导出导入模板
@GET
@Path("/acctresult/importtemplate/export")