From e6b4b4c4daae5ba2728e6dd488318cee6a2cd62f Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Tue, 29 Aug 2023 10:08:18 +0800 Subject: [PATCH] =?UTF-8?q?=E6=98=82=E7=AB=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salaryacct/bo/SalaryAcctRecordBO.java | 22 +- .../dto/SalaryAcctRecordListDTO.java | 2 + .../salaryacct/po/SalaryAcctRecordPO.java | 10 + .../entity/salarysob/bo/SalarySobBO.java | 4 +- .../entity/salarysob/bo/SalarySobItemBO.java | 35 +- .../salarysob/dto/SalarySobBasicFormDTO.java | 10 + .../param/SalarySobBasicSaveParam.java | 11 + .../param/SalarySobItemSaveParam.java | 8 +- .../entity/salarysob/po/SalarySobPO.java | 8 + .../salarysob/po/WorkflowItemHidePO.java | 54 ++++ .../ApprovalWorkflowStatusEnum.java | 57 ++++ .../salaryacct/SalaryAcctRecordMapper.xml | 4 +- .../mapper/salarysob/SalarySobMapper.xml | 26 ++ .../salarysob/WorkflowItemHideMapper.java | 84 +++++ .../salarysob/WorkflowItemHideMapper.xml | 306 ++++++++++++++++++ .../service/WorkflowItemHideService.java | 77 +++++ .../impl/SalarySobItemServiceImpl.java | 41 ++- .../service/impl/SalarySobServiceImpl.java | 7 + .../impl/WorkflowItemHideServiceImpl.java | 81 +++++ .../wrapper/SalaryAcctRecordWrapper.java | 23 +- 20 files changed, 847 insertions(+), 23 deletions(-) create mode 100644 src/com/engine/salary/entity/salarysob/po/WorkflowItemHidePO.java create mode 100644 src/com/engine/salary/enums/salaryaccounting/ApprovalWorkflowStatusEnum.java create mode 100644 src/com/engine/salary/mapper/salarysob/WorkflowItemHideMapper.java create mode 100644 src/com/engine/salary/mapper/salarysob/WorkflowItemHideMapper.xml create mode 100644 src/com/engine/salary/service/WorkflowItemHideService.java create mode 100644 src/com/engine/salary/service/impl/WorkflowItemHideServiceImpl.java diff --git a/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctRecordBO.java b/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctRecordBO.java index 26c0b86ba..11780b812 100644 --- a/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctRecordBO.java +++ b/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctRecordBO.java @@ -10,6 +10,7 @@ import com.engine.salary.entity.salaryacct.param.SalaryAcctRecordSaveParam; import com.engine.salary.entity.salaryacct.po.SalaryAcctRecordPO; import com.engine.salary.entity.salarysob.dto.SalarySobCycleDTO; import com.engine.salary.entity.salarysob.po.SalarySobPO; +import com.engine.salary.enums.salaryaccounting.ApprovalWorkflowStatusEnum; import com.engine.salary.enums.salaryaccounting.SalaryAcctRecordStatusEnum; import com.engine.salary.util.SalaryDateUtil; import com.engine.salary.util.SalaryEntityUtil; @@ -45,7 +46,8 @@ public class SalaryAcctRecordBO { List salarySobs, List employeeComInfos, List salaryAcctEmployeeCountDTOS, - List salarySendCheckResult) { + List salarySendCheckResult, + Map workflowStatusMap) { if (CollectionUtils.isEmpty(salaryAcctRecordPOS)) { return Collections.emptyList(); } @@ -57,6 +59,15 @@ public class SalaryAcctRecordBO { .map(salaryAcctRecordPO -> { SalarySobPO salarySobPO = salarySobMap.get(salaryAcctRecordPO.getSalarySobId()); SalaryAcctRecordStatusEnum salaryAcctRecordStatusEnum = SalaryAcctRecordStatusEnum.parseByValue(salaryAcctRecordPO.getStatus()); + // 获取审批流程状态 + ApprovalWorkflowStatusEnum workflowStatusEnum; + if (StringUtils.isBlank(salaryAcctRecordPO.getApprovalRequestId()) || StringUtils.isBlank(workflowStatusMap.get(salaryAcctRecordPO.getApprovalRequestId())) ) { + workflowStatusEnum = ApprovalWorkflowStatusEnum.UNAPPROVED; + } else if (StringUtils.equals(workflowStatusMap.get(salaryAcctRecordPO.getApprovalRequestId()),"3")) { + workflowStatusEnum = ApprovalWorkflowStatusEnum.APPROVED; + } else { + workflowStatusEnum = ApprovalWorkflowStatusEnum.UNDER_APPROVAL; + } // 只有未归档时可以"核算"、"删除"、"归档" // 归档后、工资单全部发放以后可以"查看"、"重新核算"、"回算" // 归档后、申报后可以"查看"、"重新核算" @@ -70,11 +81,15 @@ public class SalaryAcctRecordBO { btnList.add(new WeaTableOperate("归档", null, "2")); } else if (SalaryAcctRecordStatusEnum.ARCHIVED == salaryAcctRecordStatusEnum && ( salarySendMap.get(salaryAcctRecordPO.getId()) ==Boolean.TRUE ) ){ btnList.add(new WeaTableOperate("查看", null, "3")); - btnList.add(new WeaTableOperate("重新核算", null, "4")); + if (workflowStatusEnum != ApprovalWorkflowStatusEnum.APPROVED) { + btnList.add(new WeaTableOperate("重新核算", null, "4")); + } btnList.add(new WeaTableOperate("回算", null, "5")); } else { btnList.add(new WeaTableOperate("查看", null, "3")); - btnList.add(new WeaTableOperate("重新核算", null, "4")); + if (workflowStatusEnum != ApprovalWorkflowStatusEnum.APPROVED) { + btnList.add(new WeaTableOperate("重新核算", null, "4")); + } } return SalaryAcctRecordListDTO.builder() .id(salaryAcctRecordPO.getId()) @@ -84,6 +99,7 @@ public class SalaryAcctRecordBO { .status(Optional.ofNullable(salaryAcctRecordStatusEnum) .map(o -> SalaryI18nUtil.getI18nLabel(o.getLabelId(), o.getDefaultLabel())) .orElse(StringUtils.EMPTY)) + .workflowStatus(workflowStatusEnum.getDefaultLabel()) .acctTimes(salaryAcctRecordPO.getAcctTimes()) .acctTimesViable(salaryAcctRecordPO.getAcctTimes() >= 1) .backCalcStatus(salaryAcctRecordPO.getBackCalcStatus() == null ? 0 : salaryAcctRecordPO.getBackCalcStatus()) diff --git a/src/com/engine/salary/entity/salaryacct/dto/SalaryAcctRecordListDTO.java b/src/com/engine/salary/entity/salaryacct/dto/SalaryAcctRecordListDTO.java index 59b4440eb..728b758d3 100644 --- a/src/com/engine/salary/entity/salaryacct/dto/SalaryAcctRecordListDTO.java +++ b/src/com/engine/salary/entity/salaryacct/dto/SalaryAcctRecordListDTO.java @@ -57,6 +57,8 @@ public class SalaryAcctRecordListDTO { @TableTitle(title = "状态", dataIndex = "status", key = "status") private String status; + @TableTitle(title = "流程状态", dataIndex = "workflowStatus", key = "workflowStatus") + private String workflowStatus; @TableTitle(title = "核算人数", dataIndex = "employeeSize", key = "employeeSize") private Long employeeSize; diff --git a/src/com/engine/salary/entity/salaryacct/po/SalaryAcctRecordPO.java b/src/com/engine/salary/entity/salaryacct/po/SalaryAcctRecordPO.java index 9587048ee..03fb8de74 100644 --- a/src/com/engine/salary/entity/salaryacct/po/SalaryAcctRecordPO.java +++ b/src/com/engine/salary/entity/salaryacct/po/SalaryAcctRecordPO.java @@ -113,6 +113,16 @@ public class SalaryAcctRecordPO { */ private List lockSalaryItemIds; + /** + * 审核流程请求id + */ + private String approvalRequestId; + + /** + * 审核流程id + */ + private String approvalWorkflowId; + //查询条件------------------------------- Collection ids; diff --git a/src/com/engine/salary/entity/salarysob/bo/SalarySobBO.java b/src/com/engine/salary/entity/salarysob/bo/SalarySobBO.java index e84a890ee..3cd373ba4 100644 --- a/src/com/engine/salary/entity/salarysob/bo/SalarySobBO.java +++ b/src/com/engine/salary/entity/salarysob/bo/SalarySobBO.java @@ -143,7 +143,9 @@ public class SalarySobBO { .setAttendCycleFromDay(salarySobPO.getAttendCycleFromDay()) .setSocialSecurityCycleType(salarySobPO.getSocialSecurityCycleType()) .setTaxAgentId(salarySobPO.getTaxAgentId()) - .setDescription(salarySobPO.getDescription()); + .setDescription(salarySobPO.getDescription()) + .setApprovalUrl(salarySobPO.getApprovalUrl()) + .setApprovalWorkflowId(salarySobPO.getApprovalWorkflowId()); } } diff --git a/src/com/engine/salary/entity/salarysob/bo/SalarySobItemBO.java b/src/com/engine/salary/entity/salarysob/bo/SalarySobItemBO.java index 3e2513908..bda9796d8 100644 --- a/src/com/engine/salary/entity/salarysob/bo/SalarySobItemBO.java +++ b/src/com/engine/salary/entity/salarysob/bo/SalarySobItemBO.java @@ -7,6 +7,7 @@ import com.engine.salary.enums.sicategory.DeleteTypeEnum; import com.engine.salary.util.SalaryEntityUtil; import com.google.common.collect.Lists; import com.google.common.collect.Maps; +import com.mzlion.core.utils.BeanUtils; import dm.jdbc.util.IdGenerator; import lombok.Data; import lombok.experimental.Accessors; @@ -69,6 +70,8 @@ public class SalarySobItemBO { Date now = new Date(); // 需要保存的隐藏项目 List needInsertItemHides = new ArrayList<>(); + // 需要保存的隐藏项目 + List needInsertWorkflowItemHides = new ArrayList<>(); // 处理薪资账套默认的薪资项目分类 Map salarySobItemGroupIdMap = Maps.newHashMapWithExpectedSize(salarySobDefaultItemGroupPOS.size()); List salarySobItemGroups = Lists.newArrayListWithExpectedSize(salarySobDefaultItemGroupPOS.size()); @@ -129,18 +132,21 @@ public class SalarySobItemBO { .build()); // 保存薪资项目隐藏信息 - needInsertItemHides.add(SalarySobItemHidePO.builder() + SalarySobItemHidePO salarySobItemHidePO = SalarySobItemHidePO.builder() .id(IdGenerator.generate()) .salarySobId(salarySobId) .salaryItemId(salaryItemPO.getId()) .isGroup(0) - .itemHide(Long.valueOf(salaryItemPO.getHideDefault()== null ? 0 : salaryItemPO.getHideDefault())) + .itemHide(Long.valueOf(salaryItemPO.getHideDefault() == null ? 0 : salaryItemPO.getHideDefault())) .creator(employeeId) .createTime(now) .updateTime(now) .deleteType(NumberUtils.INTEGER_ZERO) .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) - .build()); + .build(); + needInsertItemHides.add(salarySobItemHidePO); + // 保存薪资项目是否在审批流程中展示(默认不隐藏) + needInsertWorkflowItemHides.add(getWorkflowItemHidePO(salarySobItemHidePO, 0L)); } // 处理薪资账套默认的自定义薪资项目(开启了"默认使用") for (int i = 0; i < defaultSalaryItemPOS.size(); i++) { @@ -168,7 +174,7 @@ public class SalarySobItemBO { .deleteType(NumberUtils.INTEGER_ZERO) .build()); // 保存薪资项目隐藏信息 - needInsertItemHides.add(SalarySobItemHidePO.builder() + SalarySobItemHidePO salarySobItemHidePO = SalarySobItemHidePO.builder() .id(IdGenerator.generate()) .salarySobId(salarySobId) .salaryItemId(salaryItemPO.getId()) @@ -179,7 +185,10 @@ public class SalarySobItemBO { .updateTime(now) .deleteType(NumberUtils.INTEGER_ZERO) .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) - .build()); + .build(); + needInsertItemHides.add(salarySobItemHidePO); + // 保存薪资项目是否在审批流程中展示(默认不隐藏) + needInsertWorkflowItemHides.add(getWorkflowItemHidePO(salarySobItemHidePO, 0L)); } // 薪资账套默认的回算薪资项目 @@ -207,7 +216,16 @@ public class SalarySobItemBO { } return new Result().setNeedInsertSalarySobItems(salarySobItems).setNeedInsertSalarySobItemGroups(salarySobItemGroups) - .setNeedInsertSalarySobBackItems(salarySobBackItems).setNeedInsertItemHides(needInsertItemHides); + .setNeedInsertSalarySobBackItems(salarySobBackItems).setNeedInsertItemHides(needInsertItemHides) + .setNeedInsertWorkflowItemHides(needInsertWorkflowItemHides); + } + + public static WorkflowItemHidePO getWorkflowItemHidePO(SalarySobItemHidePO salarySobItemHidePO, Long hideInApprovalWorkflow) { + WorkflowItemHidePO workflowItemHidePO = new WorkflowItemHidePO(); + BeanUtils.copyProperties(salarySobItemHidePO, workflowItemHidePO); + workflowItemHidePO.setId(IdGenerator.generate()); + workflowItemHidePO.setItemHide(hideInApprovalWorkflow); + return workflowItemHidePO; } @Data @@ -233,5 +251,10 @@ public class SalarySobItemBO { * 需要保存的薪资项目隐藏信息 */ List needInsertItemHides; + + /** + * 需要保存的薪资项目在审批流程中的隐藏信息 + */ + List needInsertWorkflowItemHides; } } diff --git a/src/com/engine/salary/entity/salarysob/dto/SalarySobBasicFormDTO.java b/src/com/engine/salary/entity/salarysob/dto/SalarySobBasicFormDTO.java index 131668372..668f0ab6c 100644 --- a/src/com/engine/salary/entity/salarysob/dto/SalarySobBasicFormDTO.java +++ b/src/com/engine/salary/entity/salarysob/dto/SalarySobBasicFormDTO.java @@ -94,6 +94,16 @@ public class SalarySobBasicFormDTO { */ private Boolean canEdit; + /** + * 审批流程地址 + */ + private String approvalUrl; + + /** + * 审批流程id + */ + private String approvalWorkflowId; + /** * 薪资账套详情-薪资周期/考勤周期 * diff --git a/src/com/engine/salary/entity/salarysob/param/SalarySobBasicSaveParam.java b/src/com/engine/salary/entity/salarysob/param/SalarySobBasicSaveParam.java index bd86de4d6..988d144b3 100644 --- a/src/com/engine/salary/entity/salarysob/param/SalarySobBasicSaveParam.java +++ b/src/com/engine/salary/entity/salarysob/param/SalarySobBasicSaveParam.java @@ -96,4 +96,15 @@ public class SalarySobBasicSaveParam { */ @DataCheck(max = 80, message = "备注不能超过80个字符") private String description; + + /** + * 审批流程地址 + */ + @DataCheck(max = 200, message = "审批流程地址不能超过200字符") + private String approvalUrl; + + /** + * 审批流程id + */ + private String approvalWorkflowId; } diff --git a/src/com/engine/salary/entity/salarysob/param/SalarySobItemSaveParam.java b/src/com/engine/salary/entity/salarysob/param/SalarySobItemSaveParam.java index e19856374..77ad119c3 100644 --- a/src/com/engine/salary/entity/salarysob/param/SalarySobItemSaveParam.java +++ b/src/com/engine/salary/entity/salarysob/param/SalarySobItemSaveParam.java @@ -73,9 +73,12 @@ public class SalarySobItemSaveParam { //公式") private Long formulaId; - //该分类是否隐藏(0不隐藏,1隐藏) + //该项目是否隐藏(0不隐藏,1隐藏) private Long itemHide; + //该项目是否在审批时隐藏(0不隐藏,1隐藏) + private Long hideInApprovalWorkflow; + private Boolean canDelete; /** @@ -116,5 +119,8 @@ public class SalarySobItemSaveParam { //该分类是否隐藏(0不隐藏,1隐藏) private Long itemHide; + + //该分类是否在审批时隐藏(0不隐藏,1隐藏) + private Long hideInApprovalWorkflow; } } diff --git a/src/com/engine/salary/entity/salarysob/po/SalarySobPO.java b/src/com/engine/salary/entity/salarysob/po/SalarySobPO.java index 921fad01c..48721d560 100644 --- a/src/com/engine/salary/entity/salarysob/po/SalarySobPO.java +++ b/src/com/engine/salary/entity/salarysob/po/SalarySobPO.java @@ -69,6 +69,14 @@ public class SalarySobPO { * 描述 */ private String description; + /** + * 审批流程地址 + */ + private String approvalUrl; + /** + * 审批流程id + */ + private String approvalWorkflowId; /** * 创建人 */ diff --git a/src/com/engine/salary/entity/salarysob/po/WorkflowItemHidePO.java b/src/com/engine/salary/entity/salarysob/po/WorkflowItemHidePO.java new file mode 100644 index 000000000..2fb0f2991 --- /dev/null +++ b/src/com/engine/salary/entity/salarysob/po/WorkflowItemHidePO.java @@ -0,0 +1,54 @@ +package com.engine.salary.entity.salarysob.po; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Collection; +import java.util.Date; + +/** + * @author Harryxzy + * @ClassName workflowItemHidePO + * @date 2023/08/28 11:38 + * @description 在审批流程中隐藏的薪资项目 +*/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class WorkflowItemHidePO { + private Long id; + + // 账套id + private Long salarySobId; + + // 薪资项目id + private Long salaryItemId; + + // 是否是项目组(0不是 1是) + private Integer isGroup; + + // 是否隐藏(0不隐藏 1隐藏) + private Long itemHide; + + // 创建人 + private Long creator; + + // 是否已删除。0:未删除、1:已删除 + private Integer deleteType; + + // 租户 + private String tenantKey; + + // 创建时间 + private Date createTime; + + // 更新时间 + private Date updateTime; + + //主键id集合 + private Collection ids; + +} diff --git a/src/com/engine/salary/enums/salaryaccounting/ApprovalWorkflowStatusEnum.java b/src/com/engine/salary/enums/salaryaccounting/ApprovalWorkflowStatusEnum.java new file mode 100644 index 000000000..19669b7d1 --- /dev/null +++ b/src/com/engine/salary/enums/salaryaccounting/ApprovalWorkflowStatusEnum.java @@ -0,0 +1,57 @@ +package com.engine.salary.enums.salaryaccounting; + +import com.engine.salary.enums.BaseEnum; + +import java.util.Objects; + +/** + * 审批流程的状态 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +public enum ApprovalWorkflowStatusEnum implements BaseEnum { + + UNAPPROVED(1, "未审批", 0), + UNDER_APPROVAL(2, "审批中", 0), + APPROVED(3, "已审批", 0), + ; + + private int value; + + private String defaultLabel; + + private int labelId; + + ApprovalWorkflowStatusEnum(int value, String defaultLabel, int labelId) { + this.value = value; + this.defaultLabel = defaultLabel; + this.labelId = labelId; + } + + @Override + public Integer getValue() { + return value; + } + + @Override + public Integer getLabelId() { + return labelId; + } + + @Override + public String getDefaultLabel() { + return defaultLabel; + } + + public static ApprovalWorkflowStatusEnum parseByValue(Integer value) { + for (ApprovalWorkflowStatusEnum salaryAcctRecordStatusEnum : ApprovalWorkflowStatusEnum.values()) { + if (Objects.equals(salaryAcctRecordStatusEnum.getValue(), value)) { + return salaryAcctRecordStatusEnum; + } + } + return null; + } +} diff --git a/src/com/engine/salary/mapper/salaryacct/SalaryAcctRecordMapper.xml b/src/com/engine/salary/mapper/salaryacct/SalaryAcctRecordMapper.xml index 4266b9277..cb76292dd 100644 --- a/src/com/engine/salary/mapper/salaryacct/SalaryAcctRecordMapper.xml +++ b/src/com/engine/salary/mapper/salaryacct/SalaryAcctRecordMapper.xml @@ -35,7 +35,9 @@ , t.delete_type , t.tenant_key , t.back_calc_status - ,t.lock_salary_item_ids + , t.lock_salary_item_ids + , t.approval_request_id + , t.approval_workflow_id diff --git a/src/com/engine/salary/mapper/salarysob/SalarySobMapper.xml b/src/com/engine/salary/mapper/salarysob/SalarySobMapper.xml index 8c89c191b..72a17f154 100644 --- a/src/com/engine/salary/mapper/salarysob/SalarySobMapper.xml +++ b/src/com/engine/salary/mapper/salarysob/SalarySobMapper.xml @@ -42,6 +42,8 @@ , t.delete_type , t.tenant_key , t.tax_agent_id + , t.approval_url + , t.approval_workflow_id @@ -189,6 +191,12 @@ tax_agent_id, + + approval_url, + + + approval_workflow_id, + @@ -242,6 +250,12 @@ #{taxAgentId}, + + #{approvalUrl}, + + + #{approvalWorkflowId}, + @@ -306,6 +320,12 @@ tax_agent_id, + + approval_url, + + + approval_workflow_id, + @@ -359,6 +379,12 @@ #{taxAgentId}, + + #{approvalUrl}, + + + #{approvalWorkflowId}, + diff --git a/src/com/engine/salary/mapper/salarysob/WorkflowItemHideMapper.java b/src/com/engine/salary/mapper/salarysob/WorkflowItemHideMapper.java new file mode 100644 index 000000000..34d9a5228 --- /dev/null +++ b/src/com/engine/salary/mapper/salarysob/WorkflowItemHideMapper.java @@ -0,0 +1,84 @@ +package com.engine.salary.mapper.salarysob; + +import com.engine.salary.entity.salarysob.po.WorkflowItemHidePO; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @author Harryxzy + * @ClassName SalarySobItemHideWorkflowMapper + * @date 2023/08/28 11:42 + * @description 薪资项目在审批流程中隐藏 + */ +public interface WorkflowItemHideMapper { + + /** + * 查询所有记录 + * + * @return 返回集合,没有返回空List + */ + List listAll(); + + /** + * 条件查询 + * + * @return 返回集合,没有返回空List + */ + List listSome(WorkflowItemHidePO salarySobItemHideWorkflow); + + + /** + * 根据主键查询 + * + * @param id 主键 + * @return 返回记录,没有返回null + */ + WorkflowItemHidePO getById(Long id); + + /** + * 新增,忽略null字段 + * + * @param salarySobItemHideWorkflow 新增的记录 + * @return 返回影响行数 + */ + int insertIgnoreNull(WorkflowItemHidePO salarySobItemHideWorkflow); + + /** + * 修改,修改所有字段 + * + * @param salarySobItemHideWorkflow 修改的记录 + * @return 返回影响行数 + */ + int update(WorkflowItemHidePO salarySobItemHideWorkflow); + + /** + * 修改,忽略null字段 + * + * @param salarySobItemHideWorkflow 修改的记录 + * @return 返回影响行数 + */ + int updateIgnoreNull(WorkflowItemHidePO salarySobItemHideWorkflow); + + /** + * 删除记录 + * + * @param salarySobItemHideWorkflow 待删除的记录 + * @return 返回影响行数 + */ + int delete(WorkflowItemHidePO salarySobItemHideWorkflow); + + /** + * 根据薪资账套id删除记录 + * + * @param salarySobIds 薪资账套id + * @return 返回影响行数 + */ + void deleteBySalarySobIds(@Param("salarySobIds") List salarySobIds); + + /** + * 批量插入 + * @param workflowItemHidePOS + */ + void batchInsert(List workflowItemHidePOS); +} \ No newline at end of file diff --git a/src/com/engine/salary/mapper/salarysob/WorkflowItemHideMapper.xml b/src/com/engine/salary/mapper/salarysob/WorkflowItemHideMapper.xml new file mode 100644 index 000000000..884d2e6c0 --- /dev/null +++ b/src/com/engine/salary/mapper/salarysob/WorkflowItemHideMapper.xml @@ -0,0 +1,306 @@ + + + + + + + + + + + + + + + + + + + t.id + , t.salary_sob_id + , t.salary_item_id + , t.is_group + , t.item_hide + , t.creator + , t.delete_type + , t.tenant_key + , t.create_time + , t.update_time + + + + + + + + + + + + + + + INSERT INTO hrsa_workflow_item_hide + + + + id, + + + salary_sob_id, + + + salary_item_id, + + + is_group, + + + item_hide, + + + creator, + + + delete_type, + + + tenant_key, + + + create_time, + + + update_time, + + + + + #{id}, + + + #{salarySobId}, + + + #{salaryItemId}, + + + #{isGroup}, + + + #{itemHide}, + + + #{creator}, + + + #{deleteType}, + + + #{tenantKey}, + + + #{createTime}, + + + #{updateTime}, + + + + + + INSERT INTO hrsa_workflow_item_hide ( + id, + salary_sob_id, + salary_item_id, + is_group, + item_hide, + creator, + delete_type, + tenant_key, + create_time, + update_time + ) + VALUES + + ( + #{item.id}, + #{item.salarySobId}, + #{item.salaryItemId}, + #{item.isGroup}, + #{item.itemHide}, + #{item.creator}, + #{item.tenantKey}, + #{item.createTime}, + #{item.updateTime}, + 0 + ) + + + + + insert into hrsa_workflow_item_hide (id,salary_sob_id,salary_item_id,is_group,item_hide, + creator,tenant_key,create_time,update_time,delete_type) + + select + #{item.id,jdbcType=DOUBLE}, + #{item.salarySobId,jdbcType=DOUBLE}, + #{item.salaryItemId,jdbcType=DOUBLE}, + #{item.isGroup,jdbcType=INTEGER}, + #{item.itemHide,jdbcType=INTEGER}, + #{item.creator,jdbcType=DOUBLE}, + #{item.tenantKey,jdbcType=VARCHAR}, + #{item.createTime,jdbcType=DATE}, + #{item.updateTime,jdbcType=DATE}, + 0 + from dual + + + + + + insert into hrsa_workflow_item_hide (id,salary_sob_id,salary_item_id,is_group,item_hide, + creator,tenant_key,create_time,update_time,delete_type) + VALUES + ( + #{item.id}, + #{item.salarySobId}, + #{item.salaryItemId}, + #{item.isGroup}, + #{item.itemHide}, + #{item.creator}, + #{item.tenantKey}, + #{item.createTime}, + #{item.updateTime}, + 0 + ) + + + + + + UPDATE hrsa_workflow_item_hide + + salary_sob_id=#{salarySobId}, + salary_item_id=#{salaryItemId}, + is_group=#{isGroup}, + item_hide=#{itemHide}, + creator=#{creator}, + delete_type=#{deleteType}, + tenant_key=#{tenantKey}, + create_time=#{createTime}, + update_time=#{updateTime}, + + WHERE id = #{id} AND delete_type = 0 + + + + + + UPDATE hrsa_workflow_item_hide + + + salary_sob_id=#{salarySobId}, + + + salary_item_id=#{salaryItemId}, + + + is_group=#{isGroup}, + + + item_hide=#{itemHide}, + + + creator=#{creator}, + + + delete_type=#{deleteType}, + + + tenant_key=#{tenantKey}, + + + create_time=#{createTime}, + + + update_time=#{updateTime}, + + + WHERE id = #{id} AND delete_type = 0 + + + + + + UPDATE hrsa_workflow_item_hide + SET delete_type=1 + WHERE id = #{id} AND delete_type = 0 + + + + UPDATE hrsa_workflow_item_hide + SET delete_type=1 + WHERE delete_type = 0 + + AND salary_sob_id IN + + #{id} + + + + + + \ No newline at end of file diff --git a/src/com/engine/salary/service/WorkflowItemHideService.java b/src/com/engine/salary/service/WorkflowItemHideService.java new file mode 100644 index 000000000..9bdc0ee0e --- /dev/null +++ b/src/com/engine/salary/service/WorkflowItemHideService.java @@ -0,0 +1,77 @@ +package com.engine.salary.service; + +import com.engine.salary.entity.salarysob.po.WorkflowItemHidePO; + +import java.util.List; + +/** + * @author Harryxzy + * @ClassName SalarySobItemHideWorkflowService + * @date 2023/08/28 11:45 + * @description + */ +public interface WorkflowItemHideService { + + /** + * 查询所有记录 + * + * @return 返回集合,没有返回空List + */ + List listAll(); + + List listSome(WorkflowItemHidePO po); + + + /** + * 根据主键查询 + * + * @param id 主键 + * @return 返回记录,没有返回null + */ + WorkflowItemHidePO getById(Long id); + + + /** + * 新增,忽略null字段 + * + * @param salarySobItemHideWorkflow 新增的记录 + * @return 返回影响行数 + */ + int insertIgnoreNull(WorkflowItemHidePO salarySobItemHideWorkflow); + + /** + * 修改,修改所有字段 + * + * @param salarySobItemHideWorkflow 修改的记录 + * @return 返回影响行数 + */ + int update(WorkflowItemHidePO salarySobItemHideWorkflow); + + /** + * 修改,忽略null字段 + * + * @param salarySobItemHideWorkflow 修改的记录 + * @return 返回影响行数 + */ + int updateIgnoreNull(WorkflowItemHidePO salarySobItemHideWorkflow); + + /** + * 删除记录 + * + * @param salarySobItemHideWorkflow 待删除的记录 + * @return 返回影响行数 + */ + int delete(WorkflowItemHidePO salarySobItemHideWorkflow); + + /** + * 根据薪资账套id删除 + * @param singletonList + */ + void deleteBySalarySobIds(List singletonList); + + /** + * 批量插入 + * @param needInsertWorkflowItemHide + */ + void batchInsert(List needInsertWorkflowItemHide); +} diff --git a/src/com/engine/salary/service/impl/SalarySobItemServiceImpl.java b/src/com/engine/salary/service/impl/SalarySobItemServiceImpl.java index 169b54bb8..12ef3a8f8 100644 --- a/src/com/engine/salary/service/impl/SalarySobItemServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalarySobItemServiceImpl.java @@ -10,6 +10,7 @@ import com.engine.salary.constant.SalaryDefaultTenantConstant; import com.engine.salary.entity.salaryformula.ExpressFormula; import com.engine.salary.entity.salaryitem.po.SalaryItemPO; import com.engine.salary.entity.salarysob.bo.SalarySobItemAggregateBO; +import com.engine.salary.entity.salarysob.bo.SalarySobItemBO; import com.engine.salary.entity.salarysob.dto.SalarySobItemAggregateDTO; import com.engine.salary.entity.salarysob.dto.SalarySobItemFormDTO; import com.engine.salary.entity.salarysob.param.SalarySobItemSaveParam; @@ -89,9 +90,14 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe return (SalarySobBackItemService) ServiceUtil.getService(SalarySobBackItemServiceImpl.class, user); } + private WorkflowItemHideService getWorkflowItemHideService(User user) { + return (WorkflowItemHideService) ServiceUtil.getService(WorkflowItemHideServiceImpl.class, user); + } + private SalarySobDefaultItemMapper getSalarySobDefaultItemMapper() { return MapperProxyFactory.getProxy(SalarySobDefaultItemMapper.class); } + // private LoggerTemplate salarySobLoggerTemplate; @Override @@ -319,9 +325,11 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe // getSalarySobItemGroupService(user).deleteBySalarySobIds(Collections.singleton(salarySobId)); // 删除薪资项目是否显示 deleteItemShowBySalarySobIds(Collections.singleton(salarySobId)); - + // 删除薪资项目是否在审批时隐藏 + getWorkflowItemHideService(user).deleteBySalarySobIds(Collections.singletonList(salarySobId)); } + /** * 保存项目信息 * @@ -354,6 +362,8 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe // 需要保存的隐藏项目 List needInsertItemShow = new ArrayList<>(); + // 需要保存的审批流程中隐藏的项目 + List needInsertWorkflowItemHide = new ArrayList<>(); //先保存项目分类获,取分类id Collection salarySobItems = new ArrayList<>(); @@ -390,7 +400,6 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) .build(); needInsertItemShow.add(salarySobGroupItemHidePO); -// salarySobItemMapper.InsertItemShow(salarySobGroupItemHidePO); for (SalarySobItemSaveParam.SalarySobItemParam itemParam : itemGroupParam.getItems()) { @@ -428,13 +437,13 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe .deleteType(NumberUtils.INTEGER_ZERO) .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) .build(); -// salarySobItemMapper.InsertItemShow(salarySobItemHidePO); needInsertItemShow.add(salarySobItemHidePO); + // 保存薪资项目是否在审批流程中展示 + needInsertWorkflowItemHide.add(SalarySobItemBO.getWorkflowItemHidePO(salarySobItemHidePO, itemParam.getHideInApprovalWorkflow())); } } - //更新分组 for (SalarySobItemSaveParam.SalarySobItemGroupParam itemGroupParam : needUpdateGroup) { Long groupId = itemGroupParam.getId(); @@ -508,6 +517,9 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) .build(); needInsertItemShow.add(salarySobItemHidePO); + + // 保存薪资项目是否在审批流程中展示 + needInsertWorkflowItemHide.add(SalarySobItemBO.getWorkflowItemHidePO(salarySobItemHidePO, itemParam.getHideInApprovalWorkflow())); } //更新 for (SalarySobItemSaveParam.SalarySobItemParam itemParam : needUpdateItems) { @@ -528,7 +540,7 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe getSalarySobItemMapper().updateIgnoreNull(salarySobItemPO); // 保存薪资项目是否展示 Long salarySobItemShowId = IdGenerator.generate(); - needInsertItemShow.add(SalarySobItemHidePO.builder() + SalarySobItemHidePO salarySobItemHidePO = SalarySobItemHidePO.builder() .id(salarySobItemShowId) .salarySobId(salarySobId) .salaryItemId(itemParam.getSalaryItemId()) @@ -539,9 +551,12 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe .updateTime(now) .deleteType(NumberUtils.INTEGER_ZERO) .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) - .build()); - } + .build(); + needInsertItemShow.add(salarySobItemHidePO); + // 保存薪资项目是否在审批流程中展示 + needInsertWorkflowItemHide.add(SalarySobItemBO.getWorkflowItemHidePO(salarySobItemHidePO, itemParam.getHideInApprovalWorkflow())); + } //删除 salarySobItemMapper.deleteByIds(needDeleteItemIds); @@ -597,8 +612,10 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe .deleteType(NumberUtils.INTEGER_ZERO) .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) .build(); -// salarySobItemMapper.InsertItemShow(salarySobItemHidePO); needInsertItemShow.add(salarySobItemHidePO); + + // 保存薪资项目是否在审批流程中展示 + needInsertWorkflowItemHide.add(SalarySobItemBO.getWorkflowItemHidePO(salarySobItemHidePO, itemParam.getHideInApprovalWorkflow())); } for (SalarySobItemSaveParam.SalarySobItemParam itemParam : needUpdateItems) { @@ -629,8 +646,9 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe .deleteType(NumberUtils.INTEGER_ZERO) .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) .build(); -// salarySobItemMapper.InsertItemShow(salarySobItemHidePO); needInsertItemShow.add(salarySobItemHidePO); + // 保存薪资项目是否在审批流程中展示 + needInsertWorkflowItemHide.add(SalarySobItemBO.getWorkflowItemHidePO(salarySobItemHidePO, itemParam.getHideInApprovalWorkflow())); } if (CollectionUtils.isNotEmpty(needDeleteItemIds)) { @@ -642,8 +660,13 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe // 保存薪资账套的薪资项目隐藏信息 batchSaveShow(needInsertItemShow); + + // 保存薪资账套的薪资项目是否在审批流程中隐藏 + getWorkflowItemHideService(user).batchInsert(needInsertWorkflowItemHide); } + + private SalaryItemPO checkItemExists(Long salaryItemId, Map salaryItemsMap) { SalaryItemPO salaryItemPO = salaryItemsMap.get(salaryItemId); if (ObjectUtils.isEmpty(salaryItemPO)){ diff --git a/src/com/engine/salary/service/impl/SalarySobServiceImpl.java b/src/com/engine/salary/service/impl/SalarySobServiceImpl.java index 0a851f5db..8e26fc09c 100644 --- a/src/com/engine/salary/service/impl/SalarySobServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalarySobServiceImpl.java @@ -131,6 +131,10 @@ public class SalarySobServiceImpl extends Service implements SalarySobService { return ServiceUtil.getService(SalarySysConfServiceImpl.class, user); } + private WorkflowItemHideService getWorkflowItemHideService(User user) { + return ServiceUtil.getService(WorkflowItemHideServiceImpl.class, user); + } + @Override public SalarySobPO getById(Long id) { return salarySobMapper.getById(id); @@ -385,6 +389,9 @@ public class SalarySobServiceImpl extends Service implements SalarySobService { .values()); salarySobItemService.batchInsertItemShow(list); } + if (CollectionUtils.isNotEmpty(result.getNeedInsertWorkflowItemHides())) { + getWorkflowItemHideService(user).batchInsert(result.getNeedInsertWorkflowItemHides()); + } } /** diff --git a/src/com/engine/salary/service/impl/WorkflowItemHideServiceImpl.java b/src/com/engine/salary/service/impl/WorkflowItemHideServiceImpl.java new file mode 100644 index 000000000..ac6974010 --- /dev/null +++ b/src/com/engine/salary/service/impl/WorkflowItemHideServiceImpl.java @@ -0,0 +1,81 @@ +package com.engine.salary.service.impl; + +import com.engine.core.impl.Service; +import com.engine.salary.entity.salarysob.po.WorkflowItemHidePO; +import com.engine.salary.mapper.salarysob.WorkflowItemHideMapper; +import com.engine.salary.service.WorkflowItemHideService; +import com.engine.salary.util.db.MapperProxyFactory; +import com.google.common.collect.Lists; +import org.apache.commons.collections4.CollectionUtils; + +import java.util.ArrayList; +import java.util.List; +import java.util.function.Function; +import java.util.stream.Collectors; + +/** + * @author Harryxzy + * @ClassName SalarySobItemHideWorkflowServiceImpl + * @date 2023/08/28 11:47 + * @description + */ +public class WorkflowItemHideServiceImpl extends Service implements WorkflowItemHideService { + + private WorkflowItemHideMapper getWorkflowItemHideMapper() { + return MapperProxyFactory.getProxy(WorkflowItemHideMapper.class); + } + @Override + public List listAll() { + return getWorkflowItemHideMapper().listAll(); + } + + @Override + public List listSome(WorkflowItemHidePO po) { + return getWorkflowItemHideMapper().listSome(po); + } + + @Override + public WorkflowItemHidePO getById(Long id) { + return getWorkflowItemHideMapper().getById(id); + } + + @Override + public int insertIgnoreNull(WorkflowItemHidePO salarySobItemHideWorkflow) { + return getWorkflowItemHideMapper().insertIgnoreNull(salarySobItemHideWorkflow); + } + + @Override + public int update(WorkflowItemHidePO salarySobItemHideWorkflow) { + return getWorkflowItemHideMapper().update(salarySobItemHideWorkflow); + } + + @Override + public int updateIgnoreNull(WorkflowItemHidePO salarySobItemHideWorkflow) { + return getWorkflowItemHideMapper().updateIgnoreNull(salarySobItemHideWorkflow); + } + + @Override + public int delete(WorkflowItemHidePO salarySobItemHideWorkflow) { + return getWorkflowItemHideMapper().delete(salarySobItemHideWorkflow); + } + + @Override + public void deleteBySalarySobIds(List salarySobIds) { + if (CollectionUtils.isNotEmpty(salarySobIds)) { + List> partition = Lists.partition(salarySobIds, 1000); + partition.forEach(getWorkflowItemHideMapper()::deleteBySalarySobIds); + } + } + + @Override + public void batchInsert(List insertList) { + if (CollectionUtils.isNotEmpty(insertList)) { + //前端可能传重复数据,去重 + List list = new ArrayList<>(insertList.stream() + .collect(Collectors.toMap(WorkflowItemHidePO::getSalaryItemId, Function.identity(), (oldValue, newValue) -> oldValue)) + .values()); + List> partition = Lists.partition(insertList, 1000); + partition.forEach(getWorkflowItemHideMapper()::batchInsert); + } + } +} diff --git a/src/com/engine/salary/wrapper/SalaryAcctRecordWrapper.java b/src/com/engine/salary/wrapper/SalaryAcctRecordWrapper.java index 9c17eaf78..a05caaa91 100644 --- a/src/com/engine/salary/wrapper/SalaryAcctRecordWrapper.java +++ b/src/com/engine/salary/wrapper/SalaryAcctRecordWrapper.java @@ -23,12 +23,15 @@ import com.engine.salary.util.SalarySobUtil; import com.engine.salary.util.page.PageInfo; import com.engine.salary.wrapper.proxy.SalaryAcctRecordWrapperProxy; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.math.NumberUtils; +import weaver.conn.RecordSet; import weaver.hrm.User; import java.util.*; import java.util.stream.Collectors; + /** * 薪资核算记录 *

Copyright: Copyright (c) 2022

@@ -90,9 +93,12 @@ public class SalaryAcctRecordWrapper extends Service implements SalaryAcctRecord List salaryAcctEmployeeCountDTOS = getSalaryAcctEmployeeService(user).countBySalaryAcctRecordId(salaryAcctRecordIds); // 查询工资单的查询情况 List salarySendCheckResult = getSalarySendService(user).getSalarySendCheckResult(salaryAcctRecordIds); - + // TODO查询审批流程状态 + Set requestIds = SalaryEntityUtil.properties(list, SalaryAcctRecordPO::getApprovalRequestId); + // 获取流程状态 key:流程请求id value:流程状态 + Map workflowStatusMap = getWorkflowStatusMap(requestIds); // 转换成列表dto - List salaryAcctRecordListDTOS = SalaryAcctRecordBO.convert2ListDTO(list, salarySobPOS, employeeComInfos, salaryAcctEmployeeCountDTOS, salarySendCheckResult); + List salaryAcctRecordListDTOS = SalaryAcctRecordBO.convert2ListDTO(list, salarySobPOS, employeeComInfos, salaryAcctEmployeeCountDTOS, salarySendCheckResult, workflowStatusMap); dtoPage.setList(salaryAcctRecordListDTOS); } // WeaTable weaTable = SalaryFormatUtil.getInstance().buildTable(SalaryAcctRecordListDTO.class, dtoPage); @@ -116,6 +122,19 @@ public class SalaryAcctRecordWrapper extends Service implements SalaryAcctRecord return dtoPage; } + private Map getWorkflowStatusMap(Set requestIds) { + Map resut = new HashMap<>(); + RecordSet rs = new RecordSet(); + String sql = "select requestid,currentnodetype from workflow_requestbase where requestid in (" + StringUtils.join(requestIds,",") + ")"; + rs.execute(sql); + while (rs.next()) { + int requestid = rs.getInt("requestid"); + String currentnodetype = rs.getString("currentnodetype"); + resut.put(String.valueOf(requestid), currentnodetype); + } + return resut; + } + /** * @description 处理历史数据给薪资项目都增加个默认排序 * @return null