万众,薪资核算模板
This commit is contained in:
parent
1ba00091df
commit
c1dbe396ba
|
|
@ -209,6 +209,58 @@ public class SalaryAcctResultBO {
|
|||
return columns;
|
||||
}
|
||||
|
||||
public static List<WeaTableColumnGroup> buildTableColumns(SalarySobItemAggregateDTO salarySobItemAggregateDTO, List<Long> lockSalaryItemIds, List<Long> salaryItemIds) {
|
||||
List<WeaTableColumnGroup> columns = Lists.newArrayList();
|
||||
// 员工信息字段
|
||||
for (SalarySobEmpFieldDTO salarySobEmpFieldDTO : salarySobItemAggregateDTO.getEmpFields()) {
|
||||
columns.add(new WeaTableColumnGroup(SalaryPageUtil.selfAdaption(salarySobEmpFieldDTO.getFieldName()), salarySobEmpFieldDTO.getFieldName(), salarySobEmpFieldDTO.getFieldId()));
|
||||
}
|
||||
// 薪资项目分组下的薪资项目
|
||||
for (SalarySobItemGroupDTO salarySobItemGroupDTO : salarySobItemAggregateDTO.getItemGroups()) {
|
||||
if (CollectionUtils.isEmpty(salarySobItemGroupDTO.getItems())) {
|
||||
continue;
|
||||
}
|
||||
List<WeaTableColumnGroup> childrenColumns = Lists.newArrayList();
|
||||
for (SalarySobItemDTO salarySobItemDTO : salarySobItemGroupDTO.getItems()) {
|
||||
if (!salaryItemIds.contains(salarySobItemDTO.getSalaryItemId())) {
|
||||
continue;
|
||||
}
|
||||
if (lockSalaryItemIds.contains(salarySobItemDTO.getSalaryItemId())) {
|
||||
childrenColumns.add(new WeaTableColumnGroup(SalaryPageUtil.selfAdaption(salarySobItemDTO.getName()), salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.LOCK.getValue(), salarySobItemDTO.getPattern()));
|
||||
} else {
|
||||
childrenColumns.add(new WeaTableColumnGroup(SalaryPageUtil.selfAdaption(salarySobItemDTO.getName()), salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.UNLOCK.getValue(), salarySobItemDTO.getPattern()));
|
||||
}
|
||||
}
|
||||
WeaTableColumnGroup weaTableColumnWapper = new WeaTableColumnGroup(SalaryPageUtil.selfAdaption(salarySobItemGroupDTO.getName()), salarySobItemGroupDTO.getName(), String.valueOf(salarySobItemGroupDTO.getId()), childrenColumns);
|
||||
columns.add(weaTableColumnWapper);
|
||||
}
|
||||
// 没有分类的薪资项目
|
||||
for (SalarySobItemDTO salarySobItemDTO : salarySobItemAggregateDTO.getItems()) {
|
||||
if (!salaryItemIds.contains(salarySobItemDTO.getSalaryItemId())) {
|
||||
continue;
|
||||
}
|
||||
if (lockSalaryItemIds.contains(salarySobItemDTO.getSalaryItemId())) {
|
||||
columns.add(new WeaTableColumnGroup(SalaryPageUtil.selfAdaption(salarySobItemDTO.getName()), salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.LOCK.getValue(), salarySobItemDTO.getPattern()));
|
||||
} else {
|
||||
columns.add(new WeaTableColumnGroup(SalaryPageUtil.selfAdaption(salarySobItemDTO.getName()), salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.UNLOCK.getValue(), salarySobItemDTO.getPattern()));
|
||||
}
|
||||
|
||||
}
|
||||
// 回算的薪资项目
|
||||
for (SalarySobItemDTO salarySobItemDTO : salarySobItemAggregateDTO.getBackCalcItems()) {
|
||||
if (!salaryItemIds.contains(salarySobItemDTO.getSalaryItemId())) {
|
||||
continue;
|
||||
}
|
||||
if (lockSalaryItemIds.contains(salarySobItemDTO.getSalaryItemId())) {
|
||||
columns.add(new WeaTableColumnGroup(SalaryPageUtil.selfAdaption(salarySobItemDTO.getName()), salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.LOCK.getValue(), salarySobItemDTO.getPattern()));
|
||||
} else {
|
||||
columns.add(new WeaTableColumnGroup(SalaryPageUtil.selfAdaption(salarySobItemDTO.getName()), salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.UNLOCK.getValue(), salarySobItemDTO.getPattern()));
|
||||
}
|
||||
|
||||
}
|
||||
return columns;
|
||||
}
|
||||
|
||||
/**
|
||||
* 构建核算结果表头-供报表使用
|
||||
*
|
||||
|
|
|
|||
|
|
@ -71,6 +71,9 @@ public class SalaryAcctResultQueryParam extends BaseQueryParam {
|
|||
//其他条件
|
||||
private List<OtherCondition> otherConditions;
|
||||
|
||||
// 模板id
|
||||
private Long templateId;
|
||||
|
||||
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
|
|
|
|||
|
|
@ -0,0 +1,46 @@
|
|||
package com.engine.salary.entity.salaryacct.param;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author Harryxzy
|
||||
* @ClassName SalaryAcctTemplateParam
|
||||
* @date 2024/01/02 18:29
|
||||
* @description 薪资核算模板参数
|
||||
*/
|
||||
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class SalaryAcctTemplateParam {
|
||||
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 员工id
|
||||
*/
|
||||
private Long employeeId;
|
||||
|
||||
/**
|
||||
* 模板名称
|
||||
*/
|
||||
private String templateName;
|
||||
|
||||
/**
|
||||
* 薪资项目id
|
||||
*/
|
||||
private String salaryItemIds;
|
||||
|
||||
private List<Long> salaryItemIdList;
|
||||
|
||||
/**
|
||||
* 是否默认模板
|
||||
*/
|
||||
private Integer isDefault;
|
||||
}
|
||||
|
|
@ -0,0 +1,52 @@
|
|||
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.List;
|
||||
|
||||
/**
|
||||
* @author Harryxzy
|
||||
* @ClassName SalaryAcctTemplateWzPO
|
||||
* @date 2024/01/02 17:31
|
||||
* @description
|
||||
*/
|
||||
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class SalaryAcctTemplateWzPO {
|
||||
private Long id;
|
||||
/**
|
||||
* 员工id
|
||||
*/
|
||||
private Long employeeId;
|
||||
|
||||
/**
|
||||
* 模板名称
|
||||
*/
|
||||
private String templateName;
|
||||
|
||||
/**
|
||||
* 薪资项目idList
|
||||
*/
|
||||
private String salaryItemIds;
|
||||
|
||||
/**
|
||||
* 薪资项目idList
|
||||
*/
|
||||
private List<Long> salaryItemIdList;
|
||||
|
||||
/**
|
||||
* 是否是默认模板
|
||||
*/
|
||||
private Integer isDefault;
|
||||
|
||||
//主键id集合
|
||||
private Collection<Long> ids;
|
||||
|
||||
}
|
||||
|
|
@ -143,6 +143,8 @@ public class SalarySobItemAggregateBO {
|
|||
.sortedIndex(salarySobItemPO.getSortedIndex())
|
||||
.canEdit(openFormulaForcedEditing || Objects.equals(salaryItemPO.getCanEdit(), 1))
|
||||
.canDelete(openFormulaForcedEditing || salaryItemPO.getCanDelete() == null || Objects.equals(salaryItemPO.getCanDelete(), 1))
|
||||
.showInWorkflow(salarySobItemPO.getShowInWorkflow() == null ? "0" : salarySobItemPO.getShowInWorkflow().toString())
|
||||
.sumInWorkflow(salarySobItemPO.getSumInWorkflow() == null ? "0" : salarySobItemPO.getSumInWorkflow().toString())
|
||||
.build());
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -109,4 +109,14 @@ public class SalarySobItemDTO {
|
|||
* 保留小数位数
|
||||
*/
|
||||
private Integer pattern;
|
||||
|
||||
/**
|
||||
* 在审批流程中显示
|
||||
*/
|
||||
private String showInWorkflow;
|
||||
|
||||
/**
|
||||
* 在审批流程中展示合计
|
||||
*/
|
||||
private String sumInWorkflow;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,63 @@
|
|||
package com.engine.salary.mapper.salaryacct;
|
||||
|
||||
import com.engine.salary.entity.salaryacct.po.SalaryAcctTemplateWzPO;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author Harryxzy
|
||||
* @ClassName SalaryAcctTemplateWzMapper
|
||||
* @date 2024/01/02 17:32
|
||||
* @description
|
||||
*/
|
||||
public interface SalaryAcctTemplateWzMapper {
|
||||
|
||||
/**
|
||||
* 查询所有记录
|
||||
*
|
||||
* @return 返回集合,没有返回空List
|
||||
*/
|
||||
List<SalaryAcctTemplateWzPO> listAll();
|
||||
|
||||
/**
|
||||
* 条件查询
|
||||
*
|
||||
* @return 返回集合,没有返回空List
|
||||
*/
|
||||
List<SalaryAcctTemplateWzPO> listSome(SalaryAcctTemplateWzPO salaryAcctTemplateWz);
|
||||
|
||||
|
||||
/**
|
||||
* 根据主键查询
|
||||
*
|
||||
* @param id 主键
|
||||
* @return 返回记录,没有返回null
|
||||
*/
|
||||
SalaryAcctTemplateWzPO getById(Long id);
|
||||
|
||||
/**
|
||||
* 新增,忽略null字段
|
||||
*
|
||||
* @param salaryAcctTemplateWz 新增的记录
|
||||
* @return 返回影响行数
|
||||
*/
|
||||
int insertIgnoreNull(SalaryAcctTemplateWzPO salaryAcctTemplateWz);
|
||||
|
||||
/**
|
||||
* 修改,修改所有字段
|
||||
*
|
||||
* @param salaryAcctTemplateWz 修改的记录
|
||||
* @return 返回影响行数
|
||||
*/
|
||||
int update(SalaryAcctTemplateWzPO salaryAcctTemplateWz);
|
||||
|
||||
/**
|
||||
* 修改,忽略null字段
|
||||
*
|
||||
* @param salaryAcctTemplateWz 修改的记录
|
||||
* @return 返回影响行数
|
||||
*/
|
||||
int updateIgnoreNull(SalaryAcctTemplateWzPO salaryAcctTemplateWz);
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,141 @@
|
|||
<?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.SalaryAcctTemplateWzMapper">
|
||||
<resultMap id="BaseResultMap" type="com.engine.salary.entity.salaryacct.po.SalaryAcctTemplateWzPO">
|
||||
<result column="id" property="id" />
|
||||
<result column="employee_id" property="employeeId" />
|
||||
<result column="template_name" property="templateName" />
|
||||
<result column="salary_item_ids" property="salaryItemIds" />
|
||||
<result column="is_default" property="isDefault" />
|
||||
</resultMap>
|
||||
|
||||
<!-- 表字段 -->
|
||||
<sql id="baseColumns">
|
||||
t.id
|
||||
, t.employee_id
|
||||
, t.template_name
|
||||
, t.salary_item_ids
|
||||
, t.is_default
|
||||
</sql>
|
||||
|
||||
<!-- 查询全部 -->
|
||||
<select id="listAll" resultMap="BaseResultMap">
|
||||
SELECT
|
||||
<include refid="baseColumns" />
|
||||
FROM hrsa_salary_acct_template_wz t
|
||||
</select>
|
||||
|
||||
<!-- 根据主键获取单条记录 -->
|
||||
<select id="getById" resultMap="BaseResultMap" parameterType="Long">
|
||||
SELECT
|
||||
<include refid="baseColumns" />
|
||||
FROM hrsa_salary_acct_template_wz t
|
||||
WHERE id = #{id}
|
||||
</select>
|
||||
|
||||
<!-- 条件查询 -->
|
||||
<select id="listSome" resultMap="BaseResultMap" parameterType="com.engine.salary.entity.salaryacct.po.SalaryAcctTemplateWzPO">
|
||||
SELECT
|
||||
<include refid="baseColumns" />
|
||||
FROM hrsa_salary_acct_template_wz t
|
||||
WHERE 1 = 1
|
||||
<if test="id != null">
|
||||
AND id = #{id}
|
||||
</if>
|
||||
<if test="employeeId != null">
|
||||
AND employee_id = #{employeeId}
|
||||
</if>
|
||||
<if test="templateName != null">
|
||||
AND template_name = #{templateName}
|
||||
</if>
|
||||
<if test="salaryItemIds != null">
|
||||
AND salary_item_ids = #{salaryItemIds}
|
||||
</if>
|
||||
<if test="isDefault != null">
|
||||
AND is_default = #{isDefault}
|
||||
</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.SalaryAcctTemplateWzPO">
|
||||
INSERT INTO hrsa_salary_acct_template_wz
|
||||
<trim prefix="(" suffix=")" suffixOverrides=",">
|
||||
|
||||
<if test="id != null">
|
||||
id,
|
||||
</if>
|
||||
<if test="employeeId != null">
|
||||
employee_id,
|
||||
</if>
|
||||
<if test="templateName != null">
|
||||
template_name,
|
||||
</if>
|
||||
<if test="salaryItemIds != null">
|
||||
salary_item_ids,
|
||||
</if>
|
||||
<if test="isDefault != null">
|
||||
is_default,
|
||||
</if>
|
||||
</trim>
|
||||
<trim prefix="VALUES (" suffix=")" suffixOverrides=",">
|
||||
<if test="id != null" >
|
||||
#{id},
|
||||
</if>
|
||||
<if test="employeeId != null" >
|
||||
#{employeeId},
|
||||
</if>
|
||||
<if test="templateName != null" >
|
||||
#{templateName},
|
||||
</if>
|
||||
<if test="salaryItemIds != null" >
|
||||
#{salaryItemIds},
|
||||
</if>
|
||||
<if test="isDefault != null" >
|
||||
#{isDefault},
|
||||
</if>
|
||||
</trim>
|
||||
</insert>
|
||||
|
||||
<!-- 更新,更新全部字段 -->
|
||||
<update id="update" parameterType="com.engine.salary.entity.salaryacct.po.SalaryAcctTemplateWzPO">
|
||||
UPDATE hrsa_salary_acct_template_wz
|
||||
<set>
|
||||
employee_id=#{employeeId},
|
||||
template_name=#{templateName},
|
||||
salary_item_ids=#{salaryItemIds},
|
||||
is_default=#{isDefault},
|
||||
</set>
|
||||
WHERE id = #{id}
|
||||
</update>
|
||||
|
||||
|
||||
<!-- 更新不为NULL的字段 -->
|
||||
<update id="updateIgnoreNull" parameterType="com.engine.salary.entity.salaryacct.po.SalaryAcctTemplateWzPO">
|
||||
UPDATE hrsa_salary_acct_template_wz
|
||||
<set>
|
||||
<if test="employeeId != null" >
|
||||
employee_id=#{employeeId},
|
||||
</if>
|
||||
<if test="templateName != null" >
|
||||
template_name=#{templateName},
|
||||
</if>
|
||||
<if test="salaryItemIds != null" >
|
||||
salary_item_ids=#{salaryItemIds},
|
||||
</if>
|
||||
<if test="isDefault != null" >
|
||||
is_default=#{isDefault},
|
||||
</if>
|
||||
</set>
|
||||
WHERE id = #{id}
|
||||
</update>
|
||||
|
||||
|
||||
</mapper>
|
||||
|
|
@ -171,6 +171,8 @@
|
|||
, t.value_type
|
||||
,t.can_delete
|
||||
,h.item_hide
|
||||
, t.show_in_workflow
|
||||
, t.sum_in_workflow
|
||||
FROM hrsa_salary_sob_item t
|
||||
LEFT JOIN hrsa_salary_item_hide h ON t.salary_item_id=h.salary_item_id and t.salary_sob_id = h.salary_sob_id
|
||||
WHERE t.delete_type = 0
|
||||
|
|
|
|||
|
|
@ -56,7 +56,7 @@ public interface SalaryAcctExcelService {
|
|||
* @param salaryAcctRecordPO
|
||||
* @return
|
||||
*/
|
||||
List<WeaTableColumnGroup> listWeaTableColumn(SalaryAcctRecordPO salaryAcctRecordPO);
|
||||
List<WeaTableColumnGroup> listWeaTableColumn(SalaryAcctRecordPO salaryAcctRecordPO, Long templateId);
|
||||
|
||||
/**
|
||||
* 表头
|
||||
|
|
|
|||
|
|
@ -4,10 +4,7 @@ import com.engine.salary.entity.datacollection.DataCollectionEmployee;
|
|||
import com.engine.salary.entity.salaryacct.dto.ConsolidatedTaxDetailDTO;
|
||||
import com.engine.salary.entity.salaryacct.dto.SalaryAcctResultDetailDTO;
|
||||
import com.engine.salary.entity.salaryacct.dto.SalaryAcctResultListColumnDTO;
|
||||
import com.engine.salary.entity.salaryacct.param.SalaryAcctCalculateParam;
|
||||
import com.engine.salary.entity.salaryacct.param.SalaryAcctResultQueryParam;
|
||||
import com.engine.salary.entity.salaryacct.param.SalaryAcctResultSaveParam;
|
||||
import com.engine.salary.entity.salaryacct.param.SalaryAcctResultUpdateLockStatusParam;
|
||||
import com.engine.salary.entity.salaryacct.param.*;
|
||||
import com.engine.salary.entity.salaryacct.po.SalaryAcctResultPO;
|
||||
import com.engine.salary.util.page.PageInfo;
|
||||
|
||||
|
|
@ -211,4 +208,9 @@ public interface SalaryAcctResultService {
|
|||
PageInfo<Map<String, Object>> listForWorkflow(SalaryAcctResultQueryParam param);
|
||||
|
||||
Map<String, Object> sumRowForWorkflow(SalaryAcctResultQueryParam param);
|
||||
|
||||
/**
|
||||
* 保存或新建核算模板
|
||||
*/
|
||||
void saveTemplate(SalaryAcctTemplateParam param);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -30,6 +30,7 @@ import com.engine.salary.enums.salaryaccounting.LockStatusEnum;
|
|||
import com.engine.salary.enums.salaryaccounting.SalaryAcctResultDataSourceEnum;
|
||||
import com.engine.salary.enums.salaryitem.SalaryDataTypeEnum;
|
||||
import com.engine.salary.exception.SalaryRunTimeException;
|
||||
import com.engine.salary.mapper.salaryacct.SalaryAcctTemplateWzMapper;
|
||||
import com.engine.salary.mapper.sys.SalarySysConfMapper;
|
||||
import com.engine.salary.service.*;
|
||||
import com.engine.salary.sys.constant.SalarySysConstant;
|
||||
|
|
@ -145,6 +146,10 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc
|
|||
return ServiceUtil.getService(SalarySobItemWrapper.class, user);
|
||||
}
|
||||
|
||||
private SalaryAcctTemplateWzMapper getSalaryAcctTemplateWzMapper() {
|
||||
return SqlProxyHandle.getProxy(SalaryAcctTemplateWzMapper.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public XSSFWorkbook exportSalaryAcctEmployee(SalaryAcctEmployeeQueryParam queryParam) {
|
||||
ValidUtil.doValidator(queryParam);
|
||||
|
|
@ -286,7 +291,7 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc
|
|||
// excel导出的表头
|
||||
List<WeaTableColumnGroup> headerColumnGroup = Lists.newArrayList();
|
||||
// 查询列表的表头
|
||||
List<WeaTableColumnGroup> weaTableColumns = listWeaTableColumn(salaryAcctRecordPO);
|
||||
List<WeaTableColumnGroup> weaTableColumns = listWeaTableColumn(salaryAcctRecordPO, null);
|
||||
|
||||
//判断是否按照自定义字段导出表头
|
||||
List<WeaTableColumnGroup> finalWeaTableColumns = new ArrayList<>();
|
||||
|
|
@ -376,14 +381,30 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc
|
|||
* @param salaryAcctRecordPO 薪资核算记录
|
||||
* @return
|
||||
*/
|
||||
public List<WeaTableColumnGroup> listWeaTableColumn(SalaryAcctRecordPO salaryAcctRecordPO) {
|
||||
public List<WeaTableColumnGroup> listWeaTableColumn(SalaryAcctRecordPO salaryAcctRecordPO, Long templateId) {
|
||||
// 是否是回算
|
||||
SalaryAcctRecordPO byId = getSalaryAcctRecordService(user).getById(salaryAcctRecordPO.getId());
|
||||
boolean isBackCalc = Objects.equals(byId.getBackCalcStatus(), 1);
|
||||
// 查询薪资账套下的薪资项目+员工信息字段
|
||||
SalarySobItemAggregateDTO salarySobItemAggregateDTO = getSalarySobItemService(user).getAggregateWithItemHideBySalarySobId(salaryAcctRecordPO.getSalarySobId(),isBackCalc);
|
||||
// 构建薪资核算结果列表表头
|
||||
List<WeaTableColumnGroup> columnList = SalaryAcctResultBO.buildTableColumns(salarySobItemAggregateDTO, ListUtils.emptyIfNull(salaryAcctRecordPO.getLockSalaryItemIds()));
|
||||
List<WeaTableColumnGroup> columnList;
|
||||
if (templateId != null && templateId != 0L) {
|
||||
// 获取核算模板
|
||||
SalaryAcctTemplateWzPO SalaryAcctTemplatePO = getSalaryAcctTemplateWzMapper().getById(templateId);
|
||||
if (SalaryAcctTemplatePO == null) {
|
||||
throw new SalaryRunTimeException("该模板不存在或已被删除");
|
||||
}
|
||||
List<Long> salaryItemsIds = Arrays.stream(SalaryAcctTemplatePO.getSalaryItemIds().split(",")).map(Long::valueOf).collect(Collectors.toList());
|
||||
// 构建薪资核算结果列表表头
|
||||
if (CollectionUtils.isNotEmpty(salaryItemsIds)) {
|
||||
columnList = SalaryAcctResultBO.buildTableColumns(salarySobItemAggregateDTO, ListUtils.emptyIfNull(salaryAcctRecordPO.getLockSalaryItemIds()), salaryItemsIds);
|
||||
} else {
|
||||
columnList = SalaryAcctResultBO.buildTableColumns(salarySobItemAggregateDTO, ListUtils.emptyIfNull(salaryAcctRecordPO.getLockSalaryItemIds()));
|
||||
}
|
||||
} else {
|
||||
// 构建薪资核算结果列表表头
|
||||
columnList = SalaryAcctResultBO.buildTableColumns(salarySobItemAggregateDTO, ListUtils.emptyIfNull(salaryAcctRecordPO.getLockSalaryItemIds()));
|
||||
}
|
||||
// 获取固定列头数
|
||||
SalarySysConfPO salaryAcctFixedColumns = getSalarySysConfMapper().getOneByCode(SALARY_ACCT_FIXED_COLUMNS);
|
||||
if (ObjectUtils.isNotEmpty(salaryAcctFixedColumns)) {
|
||||
|
|
@ -688,7 +709,7 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc
|
|||
headerRangeList.add("taxAgentName");
|
||||
headerRangeList.add("departmentName");
|
||||
// 查询列表的表头
|
||||
List<WeaTableColumnGroup> weaTableColumns = listWeaTableColumn(salaryAcctRecordPO);
|
||||
List<WeaTableColumnGroup> weaTableColumns = listWeaTableColumn(salaryAcctRecordPO, null);
|
||||
List<WeaTableColumnGroup> finalWeaTableColumns = new ArrayList<>();
|
||||
for (WeaTableColumnGroup tableColumn : weaTableColumns) {
|
||||
WeaTableColumnGroup columnGroupItem = (WeaTableColumnGroup) tableColumn;
|
||||
|
|
@ -861,7 +882,7 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc
|
|||
// 无分类薪资项目id
|
||||
List<String> noGroupItemIds = salarySobItemAggregateDTO.getItems().stream().map(dto -> String.valueOf(dto.getSalaryItemId())).collect(Collectors.toList());
|
||||
// 查询列表的表头
|
||||
List<WeaTableColumnGroup> weaTableColumns = listWeaTableColumn(salaryAcctRecordPO);
|
||||
List<WeaTableColumnGroup> weaTableColumns = listWeaTableColumn(salaryAcctRecordPO, null);
|
||||
List<Object> finalWeaTableColumns = new ArrayList<>();
|
||||
// 查询薪资核算所用的薪资账套的员工信息字段
|
||||
List<SalarySobEmpFieldPO> salarySobEmpFieldPOS = getSalarySobEmpFieldService(user).listBySalarySobId(salaryAcctRecordPO.getSalarySobId());
|
||||
|
|
@ -1397,6 +1418,7 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc
|
|||
|
||||
return result;
|
||||
}
|
||||
|
||||
// @Override
|
||||
// public Map<String, Object> exportCheckResult(
|
||||
// SalaryCheckResultExportParam exportParam,
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
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.cache.SalaryCacheKey;
|
||||
|
|
@ -23,8 +24,8 @@ import com.engine.salary.entity.salarysob.po.*;
|
|||
import com.engine.salary.entity.taxagent.po.TaxAgentAdminPO;
|
||||
import com.engine.salary.entity.taxagent.po.TaxAgentPO;
|
||||
import com.engine.salary.enums.SalaryValueTypeEnum;
|
||||
import com.engine.salary.enums.common.FilterEnum;
|
||||
import com.engine.salary.enums.UserStatusEnum;
|
||||
import com.engine.salary.enums.common.FilterEnum;
|
||||
import com.engine.salary.enums.salaryaccounting.LockStatusEnum;
|
||||
import com.engine.salary.enums.salaryaccounting.SalaryAcctRecordStatusEnum;
|
||||
import com.engine.salary.enums.salaryaccounting.SalaryAcctResultDataSourceEnum;
|
||||
|
|
@ -32,6 +33,7 @@ import com.engine.salary.enums.salaryitem.SalaryDataTypeEnum;
|
|||
import com.engine.salary.enums.salarysob.IncomeCategoryEnum;
|
||||
import com.engine.salary.exception.SalaryRunTimeException;
|
||||
import com.engine.salary.mapper.salaryacct.SalaryAcctResultMapper;
|
||||
import com.engine.salary.mapper.salaryacct.SalaryAcctTemplateWzMapper;
|
||||
import com.engine.salary.report.service.SalaryStatisticsReportService;
|
||||
import com.engine.salary.report.service.impl.SalaryStatisticsReportServiceImpl;
|
||||
import com.engine.salary.service.*;
|
||||
|
|
@ -52,6 +54,7 @@ import com.google.common.collect.Sets;
|
|||
import com.weaver.util.threadPool.ThreadPoolUtil;
|
||||
import com.weaver.util.threadPool.constant.ModulePoolEnum;
|
||||
import com.weaver.util.threadPool.entity.LocalRunnable;
|
||||
import dm.jdbc.util.IdGenerator;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.apache.commons.collections4.MapUtils;
|
||||
|
|
@ -194,6 +197,10 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe
|
|||
|
||||
private SalaryCheckResultService salaryCheckResultService;
|
||||
|
||||
private SalaryAcctTemplateWzMapper getSalaryAcctTemplateWzMapper() {
|
||||
return SqlProxyHandle.getProxy(SalaryAcctTemplateWzMapper.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<SalaryAcctResultPO> listBySalaryAcctRecordIds(Collection<Long> salaryAcctRecordIds) {
|
||||
if (CollectionUtils.isEmpty(salaryAcctRecordIds)) {
|
||||
|
|
@ -619,6 +626,23 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe
|
|||
return map;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void saveTemplate(SalaryAcctTemplateParam param) {
|
||||
SalaryAcctTemplateWzPO PO = new SalaryAcctTemplateWzPO();
|
||||
String salaryItemIds = StringUtils.join(param.getSalaryItemIdList(), ",");
|
||||
PO.setSalaryItemIds(salaryItemIds);
|
||||
PO.setEmployeeId(Long.valueOf(user.getUID()));
|
||||
PO.setTemplateName(param.getTemplateName());
|
||||
PO.setIsDefault(param.getIsDefault());
|
||||
if (param.getId() != null) {
|
||||
PO.setId(param.getId());
|
||||
getSalaryAcctTemplateWzMapper().updateIgnoreNull(PO);
|
||||
} else {
|
||||
PO.setId(IdGenerator.generate());
|
||||
getSalaryAcctTemplateWzMapper().insertIgnoreNull(PO);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public ConsolidatedTaxDetailDTO getConsolidatedTaxDetail(Long salaryAcctEmployeeId) {
|
||||
// 查询当前的薪资核算人员
|
||||
|
|
|
|||
|
|
@ -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.SalaryAcctTemplateWzPO;
|
||||
import com.engine.salary.entity.salarysob.dto.SalarySobCycleDTO;
|
||||
import com.engine.salary.enums.salarysob.SalaryEmployeeStatusEnum;
|
||||
import com.engine.salary.service.SalaryAcctExcelService;
|
||||
|
|
@ -647,6 +648,33 @@ public class SalaryAcctController {
|
|||
return new ResponseResult<SalaryAcctResultQueryParam, String>(user).run(getSalaryAcctResultWrapper(user)::wzSaveWorkflow, param);
|
||||
}
|
||||
|
||||
// 保存核算模板
|
||||
@POST
|
||||
@Path("/acctresult/saveTemplate")
|
||||
@Produces(MediaType.APPLICATION_JSON)
|
||||
public String saveTemplate(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryAcctTemplateParam param) {
|
||||
User user = HrmUserVarify.getUser(request, response);
|
||||
return new ResponseResult<SalaryAcctTemplateParam, String>(user).run(getSalaryAcctResultWrapper(user)::saveTemplate, param);
|
||||
}
|
||||
|
||||
// 获取所有的核算模板
|
||||
@GET
|
||||
@Path("/acctresult/listTemplate")
|
||||
@Produces(MediaType.APPLICATION_JSON)
|
||||
public String listTemplate(@Context HttpServletRequest request, @Context HttpServletResponse response) {
|
||||
User user = HrmUserVarify.getUser(request, response);
|
||||
return new ResponseResult<String, Map<String, Long>>(user).run(getSalaryAcctResultWrapper(user)::listTemplate);
|
||||
}
|
||||
|
||||
// 获取单个模板信息
|
||||
@GET
|
||||
@Path("/acctresult/templateForm")
|
||||
@Produces(MediaType.APPLICATION_JSON)
|
||||
public String templateForm(@Context HttpServletRequest request, @Context HttpServletResponse response, @QueryParam(value = "templateId")Long templateId) {
|
||||
User user = HrmUserVarify.getUser(request, response);
|
||||
return new ResponseResult<Long, SalaryAcctTemplateWzPO>(user).run(getSalaryAcctResultWrapper(user)::templateForm, templateId);
|
||||
}
|
||||
|
||||
// **********************************薪资核算结果 end*********************************/
|
||||
|
||||
// **********************************检验异常 start*********************************/
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
package com.engine.salary.wrapper;
|
||||
|
||||
import com.api.formmode.mybatis.util.SqlProxyHandle;
|
||||
import com.engine.common.util.ServiceUtil;
|
||||
import com.engine.core.impl.Service;
|
||||
import com.engine.salary.cache.SalaryCacheKey;
|
||||
|
|
@ -9,14 +10,13 @@ import com.engine.salary.entity.progress.ProgressDTO;
|
|||
import com.engine.salary.entity.salaryacct.dto.ConsolidatedTaxDetailDTO;
|
||||
import com.engine.salary.entity.salaryacct.dto.SalaryAcctResultDetailDTO;
|
||||
import com.engine.salary.entity.salaryacct.dto.SalaryAcctResultListColumnDTO;
|
||||
import com.engine.salary.entity.salaryacct.param.SalaryAcctCalculateParam;
|
||||
import com.engine.salary.entity.salaryacct.param.SalaryAcctResultQueryParam;
|
||||
import com.engine.salary.entity.salaryacct.param.SalaryAcctResultSaveParam;
|
||||
import com.engine.salary.entity.salaryacct.param.SalaryAcctResultUpdateLockStatusParam;
|
||||
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.SalaryAcctTemplateWzPO;
|
||||
import com.engine.salary.exception.SalaryRunTimeException;
|
||||
import com.engine.salary.mapper.salaryacct.SalaryAcctTemplateWzMapper;
|
||||
import com.engine.salary.service.*;
|
||||
import com.engine.salary.service.impl.*;
|
||||
import com.engine.salary.sys.service.SalarySysConfService;
|
||||
|
|
@ -32,6 +32,7 @@ import weaver.hrm.User;
|
|||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 薪资核算结果
|
||||
|
|
@ -91,6 +92,10 @@ public class SalaryAcctResultWrapper extends Service {
|
|||
return (SalaryAcctEmployeeWZService) ServiceUtil.getService(SalaryAcctEmployeeWZServiceImpl.class, user);
|
||||
}
|
||||
|
||||
private SalaryAcctTemplateWzMapper getSalaryAcctTemplateWzMapper() {
|
||||
return SqlProxyHandle.getProxy(SalaryAcctTemplateWzMapper.class);
|
||||
}
|
||||
|
||||
/**
|
||||
* 薪资核算列表
|
||||
*
|
||||
|
|
@ -109,7 +114,7 @@ public class SalaryAcctResultWrapper extends Service {
|
|||
PageInfo<Map<String, Object>> page = getSalaryAcctResultService(user).listPageByParam(queryParam);
|
||||
|
||||
// 构建薪资核算结果列表的表头
|
||||
List<WeaTableColumnGroup> columns = getSalaryAcctExcelService(user).listWeaTableColumn(salaryAcctRecordPO);
|
||||
List<WeaTableColumnGroup> columns = getSalaryAcctExcelService(user).listWeaTableColumn(salaryAcctRecordPO, queryParam.getTemplateId());
|
||||
|
||||
Map<String, Object> datas = new HashMap<>();
|
||||
datas.put("pageInfo", page);
|
||||
|
|
@ -323,6 +328,40 @@ public class SalaryAcctResultWrapper extends Service {
|
|||
return datas;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取所有的核算模板
|
||||
* @return
|
||||
*/
|
||||
public Map<String, Long> listTemplate() {
|
||||
int uid = user.getUID();
|
||||
List<SalaryAcctTemplateWzPO> salaryAcctTemplateWzPOS = getSalaryAcctTemplateWzMapper().listSome(SalaryAcctTemplateWzPO.builder().employeeId(Long.valueOf(uid)).build());
|
||||
Map<String, Long> resultMap = new HashMap<>();
|
||||
salaryAcctTemplateWzPOS.stream().forEach(po -> {
|
||||
resultMap.put(po.getTemplateName(), po.getId());
|
||||
});
|
||||
return resultMap;
|
||||
}
|
||||
|
||||
/**
|
||||
* 新建或保存核算模板
|
||||
* @return
|
||||
*/
|
||||
public void saveTemplate(SalaryAcctTemplateParam param) {
|
||||
getSalaryAcctResultService(user).saveTemplate(param);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据模板id获取模板信息
|
||||
* @param templateId
|
||||
* @return
|
||||
*/
|
||||
public SalaryAcctTemplateWzPO templateForm(Long templateId) {
|
||||
SalaryAcctTemplateWzPO PO = getSalaryAcctTemplateWzMapper().getById(templateId);
|
||||
List<Long> salaryItemIdList = Arrays.stream(PO.getSalaryItemIds().split(",")).map(Long::valueOf).collect(Collectors.toList());
|
||||
PO.setSalaryItemIdList(salaryItemIdList);
|
||||
return PO;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 薪资核算-校验
|
||||
|
|
|
|||
Loading…
Reference in New Issue