万众,薪资核算模板

This commit is contained in:
Harryxzy 2024-01-03 10:50:27 +08:00
parent 1ba00091df
commit c1dbe396ba
15 changed files with 503 additions and 17 deletions

View File

@ -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;
}
/**
* 构建核算结果表头-供报表使用
*

View File

@ -71,6 +71,9 @@ public class SalaryAcctResultQueryParam extends BaseQueryParam {
//其他条件
private List<OtherCondition> otherConditions;
// 模板id
private Long templateId;
@Data
@NoArgsConstructor

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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());
}
}

View File

@ -109,4 +109,14 @@ public class SalarySobItemDTO {
* 保留小数位数
*/
private Integer pattern;
/**
* 在审批流程中显示
*/
private String showInWorkflow;
/**
* 在审批流程中展示合计
*/
private String sumInWorkflow;
}

View File

@ -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);
}

View File

@ -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>

View File

@ -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

View File

@ -56,7 +56,7 @@ public interface SalaryAcctExcelService {
* @param salaryAcctRecordPO
* @return
*/
List<WeaTableColumnGroup> listWeaTableColumn(SalaryAcctRecordPO salaryAcctRecordPO);
List<WeaTableColumnGroup> listWeaTableColumn(SalaryAcctRecordPO salaryAcctRecordPO, Long templateId);
/**
* 表头

View File

@ -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);
}

View File

@ -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,

View File

@ -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) {
// 查询当前的薪资核算人员

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.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*********************************/

View File

@ -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;
}
/**
* 薪资核算-校验