From c1dbe396babfbab396379ca2eb922d27f62947e2 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Wed, 3 Jan 2024 10:50:27 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=87=E4=BC=97=EF=BC=8C=E8=96=AA=E8=B5=84?= =?UTF-8?q?=E6=A0=B8=E7=AE=97=E6=A8=A1=E6=9D=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salaryacct/bo/SalaryAcctResultBO.java | 52 +++++++ .../param/SalaryAcctResultQueryParam.java | 3 + .../param/SalaryAcctTemplateParam.java | 46 ++++++ .../salaryacct/po/SalaryAcctTemplateWzPO.java | 52 +++++++ .../bo/SalarySobItemAggregateBO.java | 2 + .../salarysob/dto/SalarySobItemDTO.java | 10 ++ .../SalaryAcctTemplateWzMapper.java | 63 ++++++++ .../salaryacct/SalaryAcctTemplateWzMapper.xml | 141 ++++++++++++++++++ .../mapper/salarysob/SalarySobItemMapper.xml | 2 + .../service/SalaryAcctExcelService.java | 2 +- .../service/SalaryAcctResultService.java | 10 +- .../impl/SalaryAcctExcelServiceImpl.java | 34 ++++- .../impl/SalaryAcctResultServiceImpl.java | 26 +++- .../salary/web/SalaryAcctController.java | 28 ++++ .../wrapper/SalaryAcctResultWrapper.java | 49 +++++- 15 files changed, 503 insertions(+), 17 deletions(-) create mode 100644 src/com/engine/salary/entity/salaryacct/param/SalaryAcctTemplateParam.java create mode 100644 src/com/engine/salary/entity/salaryacct/po/SalaryAcctTemplateWzPO.java create mode 100644 src/com/engine/salary/mapper/salaryacct/SalaryAcctTemplateWzMapper.java create mode 100644 src/com/engine/salary/mapper/salaryacct/SalaryAcctTemplateWzMapper.xml diff --git a/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctResultBO.java b/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctResultBO.java index 392ac81e6..715996700 100644 --- a/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctResultBO.java +++ b/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctResultBO.java @@ -209,6 +209,58 @@ public class SalaryAcctResultBO { return columns; } + public static List buildTableColumns(SalarySobItemAggregateDTO salarySobItemAggregateDTO, List lockSalaryItemIds, List salaryItemIds) { + List 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 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; + } + /** * 构建核算结果表头-供报表使用 * diff --git a/src/com/engine/salary/entity/salaryacct/param/SalaryAcctResultQueryParam.java b/src/com/engine/salary/entity/salaryacct/param/SalaryAcctResultQueryParam.java index 16637803d..30f53de15 100644 --- a/src/com/engine/salary/entity/salaryacct/param/SalaryAcctResultQueryParam.java +++ b/src/com/engine/salary/entity/salaryacct/param/SalaryAcctResultQueryParam.java @@ -71,6 +71,9 @@ public class SalaryAcctResultQueryParam extends BaseQueryParam { //其他条件 private List otherConditions; + // 模板id + private Long templateId; + @Data @NoArgsConstructor diff --git a/src/com/engine/salary/entity/salaryacct/param/SalaryAcctTemplateParam.java b/src/com/engine/salary/entity/salaryacct/param/SalaryAcctTemplateParam.java new file mode 100644 index 000000000..a6a0c3f3e --- /dev/null +++ b/src/com/engine/salary/entity/salaryacct/param/SalaryAcctTemplateParam.java @@ -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 salaryItemIdList; + + /** + * 是否默认模板 + */ + private Integer isDefault; +} diff --git a/src/com/engine/salary/entity/salaryacct/po/SalaryAcctTemplateWzPO.java b/src/com/engine/salary/entity/salaryacct/po/SalaryAcctTemplateWzPO.java new file mode 100644 index 000000000..6d70c9f1c --- /dev/null +++ b/src/com/engine/salary/entity/salaryacct/po/SalaryAcctTemplateWzPO.java @@ -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 salaryItemIdList; + + /** + * 是否是默认模板 + */ + private Integer isDefault; + + //主键id集合 + private Collection ids; + +} \ No newline at end of file diff --git a/src/com/engine/salary/entity/salarysob/bo/SalarySobItemAggregateBO.java b/src/com/engine/salary/entity/salarysob/bo/SalarySobItemAggregateBO.java index be5bcf6c3..99384ea0c 100644 --- a/src/com/engine/salary/entity/salarysob/bo/SalarySobItemAggregateBO.java +++ b/src/com/engine/salary/entity/salarysob/bo/SalarySobItemAggregateBO.java @@ -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()); } } diff --git a/src/com/engine/salary/entity/salarysob/dto/SalarySobItemDTO.java b/src/com/engine/salary/entity/salarysob/dto/SalarySobItemDTO.java index 81bbc138a..cf25463a9 100644 --- a/src/com/engine/salary/entity/salarysob/dto/SalarySobItemDTO.java +++ b/src/com/engine/salary/entity/salarysob/dto/SalarySobItemDTO.java @@ -109,4 +109,14 @@ public class SalarySobItemDTO { * 保留小数位数 */ private Integer pattern; + + /** + * 在审批流程中显示 + */ + private String showInWorkflow; + + /** + * 在审批流程中展示合计 + */ + private String sumInWorkflow; } diff --git a/src/com/engine/salary/mapper/salaryacct/SalaryAcctTemplateWzMapper.java b/src/com/engine/salary/mapper/salaryacct/SalaryAcctTemplateWzMapper.java new file mode 100644 index 000000000..156d98b53 --- /dev/null +++ b/src/com/engine/salary/mapper/salaryacct/SalaryAcctTemplateWzMapper.java @@ -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 listAll(); + + /** + * 条件查询 + * + * @return 返回集合,没有返回空List + */ + List 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); + + +} diff --git a/src/com/engine/salary/mapper/salaryacct/SalaryAcctTemplateWzMapper.xml b/src/com/engine/salary/mapper/salaryacct/SalaryAcctTemplateWzMapper.xml new file mode 100644 index 000000000..d068369e0 --- /dev/null +++ b/src/com/engine/salary/mapper/salaryacct/SalaryAcctTemplateWzMapper.xml @@ -0,0 +1,141 @@ + + + + + + + + + + + + + + t.id + , t.employee_id + , t.template_name + , t.salary_item_ids + , t.is_default + + + + + + + + + + + + + + + INSERT INTO hrsa_salary_acct_template_wz + + + + id, + + + employee_id, + + + template_name, + + + salary_item_ids, + + + is_default, + + + + + #{id}, + + + #{employeeId}, + + + #{templateName}, + + + #{salaryItemIds}, + + + #{isDefault}, + + + + + + + UPDATE hrsa_salary_acct_template_wz + + employee_id=#{employeeId}, + template_name=#{templateName}, + salary_item_ids=#{salaryItemIds}, + is_default=#{isDefault}, + + WHERE id = #{id} + + + + + + UPDATE hrsa_salary_acct_template_wz + + + employee_id=#{employeeId}, + + + template_name=#{templateName}, + + + salary_item_ids=#{salaryItemIds}, + + + is_default=#{isDefault}, + + + WHERE id = #{id} + + + + \ No newline at end of file diff --git a/src/com/engine/salary/mapper/salarysob/SalarySobItemMapper.xml b/src/com/engine/salary/mapper/salarysob/SalarySobItemMapper.xml index 4e7a1e6ce..dfb86edec 100644 --- a/src/com/engine/salary/mapper/salarysob/SalarySobItemMapper.xml +++ b/src/com/engine/salary/mapper/salarysob/SalarySobItemMapper.xml @@ -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 diff --git a/src/com/engine/salary/service/SalaryAcctExcelService.java b/src/com/engine/salary/service/SalaryAcctExcelService.java index 3091d69b9..144fbbc41 100644 --- a/src/com/engine/salary/service/SalaryAcctExcelService.java +++ b/src/com/engine/salary/service/SalaryAcctExcelService.java @@ -56,7 +56,7 @@ public interface SalaryAcctExcelService { * @param salaryAcctRecordPO * @return */ - List listWeaTableColumn(SalaryAcctRecordPO salaryAcctRecordPO); + List listWeaTableColumn(SalaryAcctRecordPO salaryAcctRecordPO, Long templateId); /** * 表头 diff --git a/src/com/engine/salary/service/SalaryAcctResultService.java b/src/com/engine/salary/service/SalaryAcctResultService.java index 91de77bc4..c1ca684a4 100644 --- a/src/com/engine/salary/service/SalaryAcctResultService.java +++ b/src/com/engine/salary/service/SalaryAcctResultService.java @@ -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> listForWorkflow(SalaryAcctResultQueryParam param); Map sumRowForWorkflow(SalaryAcctResultQueryParam param); + + /** + * 保存或新建核算模板 + */ + void saveTemplate(SalaryAcctTemplateParam param); } diff --git a/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java index c0aba107b..b698d823f 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java @@ -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 headerColumnGroup = Lists.newArrayList(); // 查询列表的表头 - List weaTableColumns = listWeaTableColumn(salaryAcctRecordPO); + List weaTableColumns = listWeaTableColumn(salaryAcctRecordPO, null); //判断是否按照自定义字段导出表头 List finalWeaTableColumns = new ArrayList<>(); @@ -376,14 +381,30 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc * @param salaryAcctRecordPO 薪资核算记录 * @return */ - public List listWeaTableColumn(SalaryAcctRecordPO salaryAcctRecordPO) { + public List 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 columnList = SalaryAcctResultBO.buildTableColumns(salarySobItemAggregateDTO, ListUtils.emptyIfNull(salaryAcctRecordPO.getLockSalaryItemIds())); + List columnList; + if (templateId != null && templateId != 0L) { + // 获取核算模板 + SalaryAcctTemplateWzPO SalaryAcctTemplatePO = getSalaryAcctTemplateWzMapper().getById(templateId); + if (SalaryAcctTemplatePO == null) { + throw new SalaryRunTimeException("该模板不存在或已被删除"); + } + List 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 weaTableColumns = listWeaTableColumn(salaryAcctRecordPO); + List weaTableColumns = listWeaTableColumn(salaryAcctRecordPO, null); List finalWeaTableColumns = new ArrayList<>(); for (WeaTableColumnGroup tableColumn : weaTableColumns) { WeaTableColumnGroup columnGroupItem = (WeaTableColumnGroup) tableColumn; @@ -861,7 +882,7 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc // 无分类薪资项目id List noGroupItemIds = salarySobItemAggregateDTO.getItems().stream().map(dto -> String.valueOf(dto.getSalaryItemId())).collect(Collectors.toList()); // 查询列表的表头 - List weaTableColumns = listWeaTableColumn(salaryAcctRecordPO); + List weaTableColumns = listWeaTableColumn(salaryAcctRecordPO, null); List finalWeaTableColumns = new ArrayList<>(); // 查询薪资核算所用的薪资账套的员工信息字段 List salarySobEmpFieldPOS = getSalarySobEmpFieldService(user).listBySalarySobId(salaryAcctRecordPO.getSalarySobId()); @@ -1397,6 +1418,7 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc return result; } + // @Override // public Map exportCheckResult( // SalaryCheckResultExportParam exportParam, diff --git a/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java index dbb86e7d4..78953fb19 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java @@ -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 listBySalaryAcctRecordIds(Collection 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) { // 查询当前的薪资核算人员 diff --git a/src/com/engine/salary/web/SalaryAcctController.java b/src/com/engine/salary/web/SalaryAcctController.java index 1bb154c63..f62634df3 100644 --- a/src/com/engine/salary/web/SalaryAcctController.java +++ b/src/com/engine/salary/web/SalaryAcctController.java @@ -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(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(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>(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(user).run(getSalaryAcctResultWrapper(user)::templateForm, templateId); + } + // **********************************薪资核算结果 end*********************************/ // **********************************检验异常 start*********************************/ diff --git a/src/com/engine/salary/wrapper/SalaryAcctResultWrapper.java b/src/com/engine/salary/wrapper/SalaryAcctResultWrapper.java index 9a59f9e32..fe929d5e5 100644 --- a/src/com/engine/salary/wrapper/SalaryAcctResultWrapper.java +++ b/src/com/engine/salary/wrapper/SalaryAcctResultWrapper.java @@ -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> page = getSalaryAcctResultService(user).listPageByParam(queryParam); // 构建薪资核算结果列表的表头 - List columns = getSalaryAcctExcelService(user).listWeaTableColumn(salaryAcctRecordPO); + List columns = getSalaryAcctExcelService(user).listWeaTableColumn(salaryAcctRecordPO, queryParam.getTemplateId()); Map datas = new HashMap<>(); datas.put("pageInfo", page); @@ -323,6 +328,40 @@ public class SalaryAcctResultWrapper extends Service { return datas; } + /** + * 获取所有的核算模板 + * @return + */ + public Map listTemplate() { + int uid = user.getUID(); + List salaryAcctTemplateWzPOS = getSalaryAcctTemplateWzMapper().listSome(SalaryAcctTemplateWzPO.builder().employeeId(Long.valueOf(uid)).build()); + Map 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 salaryItemIdList = Arrays.stream(PO.getSalaryItemIds().split(",")).map(Long::valueOf).collect(Collectors.toList()); + PO.setSalaryItemIdList(salaryItemIdList); + return PO; + } + /** * 薪资核算-校验