From 11304bebed0aaa477752536f6cef44d4b4b2532f Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Wed, 24 Apr 2024 15:55:41 +0800 Subject: [PATCH 01/20] =?UTF-8?q?=E8=96=AA=E8=B5=84=E5=AE=A1=E6=89=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../updateSalaryApprovalStatusAction.java | 78 +++++++ .../salaryacct/po/SalaryAcctRecordPO.java | 10 + .../param/SalaryItemSearchParam.java | 3 + .../entity/salarysob/bo/SalaryApprovalBO.java | 91 ++++++++ .../salarysob/dto/SalaryApprovalDTO.java | 76 ++++++ .../param/ApprovalRequestSaveParam.java | 27 +++ .../param/SalaryApprovalQueryParam.java | 24 ++ .../salarysob/po/SalaryApprovalRulePO.java | 67 ++++++ .../salaryacct/SalaryAcctRecordMapper.xml | 6 + .../salarysob/SalaryApprovalRuleMapper.java | 72 ++++++ .../salarysob/SalaryApprovalRuleMapper.xml | 216 ++++++++++++++++++ .../service/SalaryApprovalRuleService.java | 104 +++++++++ .../impl/SalaryApprovalRuleServiceImpl.java | 201 ++++++++++++++++ .../salary/web/SalarySobController.java | 84 +++++++ .../salary/wrapper/SalaryApprovalWrapper.java | 146 ++++++++++++ .../salary/wrapper/SalarySobItemWrapper.java | 1 + 16 files changed, 1206 insertions(+) create mode 100644 src/com/engine/salary/action/updateSalaryApprovalStatusAction.java create mode 100644 src/com/engine/salary/entity/salarysob/bo/SalaryApprovalBO.java create mode 100644 src/com/engine/salary/entity/salarysob/dto/SalaryApprovalDTO.java create mode 100644 src/com/engine/salary/entity/salarysob/param/ApprovalRequestSaveParam.java create mode 100644 src/com/engine/salary/entity/salarysob/param/SalaryApprovalQueryParam.java create mode 100644 src/com/engine/salary/entity/salarysob/po/SalaryApprovalRulePO.java create mode 100644 src/com/engine/salary/mapper/salarysob/SalaryApprovalRuleMapper.java create mode 100644 src/com/engine/salary/mapper/salarysob/SalaryApprovalRuleMapper.xml create mode 100644 src/com/engine/salary/service/SalaryApprovalRuleService.java create mode 100644 src/com/engine/salary/service/impl/SalaryApprovalRuleServiceImpl.java create mode 100644 src/com/engine/salary/wrapper/SalaryApprovalWrapper.java diff --git a/src/com/engine/salary/action/updateSalaryApprovalStatusAction.java b/src/com/engine/salary/action/updateSalaryApprovalStatusAction.java new file mode 100644 index 000000000..14e613881 --- /dev/null +++ b/src/com/engine/salary/action/updateSalaryApprovalStatusAction.java @@ -0,0 +1,78 @@ +package com.engine.salary.action; + +import cn.hutool.core.util.NumberUtil; +import com.engine.common.util.ServiceUtil; +import com.engine.salary.entity.salaryacct.po.SalaryAcctRecordPO; +import com.engine.salary.mapper.salaryacct.SalaryAcctRecordMapper; +import com.engine.salary.service.SalaryAcctRecordService; +import com.engine.salary.service.impl.SalaryAcctRecordServiceImpl; +import com.engine.salary.util.db.MapperProxyFactory; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import weaver.general.Util; +import weaver.hrm.User; +import weaver.interfaces.workflow.action.Action; +import weaver.soa.workflow.request.Property; +import weaver.soa.workflow.request.RequestInfo; + +import java.util.Arrays; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * @ClassName updateSalaryApprovalStatusAction + * @author Harryxzy + * @date 2024/4/24 15:44 + * @description 跟新薪资核算审批状态 + */ +@Slf4j +public class updateSalaryApprovalStatusAction implements Action { + + private SalaryAcctRecordService getSalaryAcctRecordService(User user) { + return ServiceUtil.getService(SalaryAcctRecordServiceImpl.class, user); + } + + private SalaryAcctRecordMapper getSalaryAcctRecordMapper() { + return MapperProxyFactory.getProxy(SalaryAcctRecordMapper.class); + } + + + // 记录薪资核算记录id的字段 + private String salaryAcctRecordIdField; + + // 修改为对应的状态 + private String status; + + @Override + public String execute(RequestInfo requestInfo) { + try { + if (StringUtils.isEmpty(salaryAcctRecordIdField)) { + requestInfo.getRequestManager().setMessage("薪资核算记录id字段不能为空"); + return FAILURE_AND_CONTINUE; + } + Property[] properties = requestInfo.getMainTableInfo().getProperty(); + Map fieldMap = Arrays.stream(properties).collect(Collectors.toMap(Property::getName, + property -> Util.null2String(property.getValue()))); + String salaryAcctRecordId = fieldMap.get(salaryAcctRecordIdField); + if (!NumberUtil.isNumber(salaryAcctRecordId)) { + requestInfo.getRequestManager().setMessage("核算记录id不为数字"); + return FAILURE_AND_CONTINUE; + } + User user = new User(); + user.setUid(1); + user.setLoginid("sysadmin"); + SalaryAcctRecordPO salaryAcctRecordPO = getSalaryAcctRecordService(user).getById(Long.valueOf(salaryAcctRecordId)); + if (salaryAcctRecordPO == null) { + requestInfo.getRequestManager().setMessage("核算记录不存在或已被删除"); + return FAILURE_AND_CONTINUE; + } + salaryAcctRecordPO.setApprovalStatus(status); + getSalaryAcctRecordMapper().updateIgnoreNull(salaryAcctRecordPO); + } catch (Exception e) { + log.error("审批状态更新失败", e); + requestInfo.getRequestManager().setMessage(e.getMessage()); + return FAILURE_AND_CONTINUE; + } + return SUCCESS; + } +} diff --git a/src/com/engine/salary/entity/salaryacct/po/SalaryAcctRecordPO.java b/src/com/engine/salary/entity/salaryacct/po/SalaryAcctRecordPO.java index d2f089f21..c4a5e8d78 100644 --- a/src/com/engine/salary/entity/salaryacct/po/SalaryAcctRecordPO.java +++ b/src/com/engine/salary/entity/salaryacct/po/SalaryAcctRecordPO.java @@ -123,6 +123,16 @@ public class SalaryAcctRecordPO { @ElogTransform( name = "更新时间" ) private Date updateTime; + /** + * 审批流程id + */ + private String approvalId; + + /** + * 审批状态 + */ + private String approvalStatus; + /** * 锁定的薪资项目 */ diff --git a/src/com/engine/salary/entity/salaryitem/param/SalaryItemSearchParam.java b/src/com/engine/salary/entity/salaryitem/param/SalaryItemSearchParam.java index 32e088f1e..e0c63f108 100644 --- a/src/com/engine/salary/entity/salaryitem/param/SalaryItemSearchParam.java +++ b/src/com/engine/salary/entity/salaryitem/param/SalaryItemSearchParam.java @@ -25,6 +25,9 @@ import java.util.Collection; @AllArgsConstructor public class SalaryItemSearchParam extends BaseQueryParam { + // 账套id + private Long salarySobId; + //名称 private String name; diff --git a/src/com/engine/salary/entity/salarysob/bo/SalaryApprovalBO.java b/src/com/engine/salary/entity/salarysob/bo/SalaryApprovalBO.java new file mode 100644 index 000000000..f8657019c --- /dev/null +++ b/src/com/engine/salary/entity/salarysob/bo/SalaryApprovalBO.java @@ -0,0 +1,91 @@ +package com.engine.salary.entity.salarysob.bo; + +import com.engine.salary.entity.salaryitem.po.SalaryItemPO; +import com.engine.salary.entity.salarysob.dto.SalaryApprovalDTO; +import com.engine.salary.entity.salarysob.dto.SalarySobItemAggregateDTO; +import com.engine.salary.entity.salarysob.dto.SalarySobItemDTO; +import com.engine.salary.entity.salarysob.dto.SalarySobItemGroupDTO; +import com.engine.salary.entity.salarysob.po.SalaryApprovalRulePO; +import com.engine.salary.util.JsonUtil; +import com.engine.salary.util.SalaryEntityUtil; +import org.apache.commons.lang.StringUtils; +import weaver.hrm.User; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Map; + +/** + * @author Harryxzy + * @ClassName SalaryApprovalBO + * @date 2024/04/23 17:47 + * @description 薪资账套的薪资审批 + */ +public class SalaryApprovalBO { + + public static SalaryApprovalDTO convert2DTO(SalaryApprovalRulePO salaryApprovalRulePO, List salaryItemList) { + if (salaryApprovalRulePO == null) { + return new SalaryApprovalDTO(); + } + Map salaryItemNameMap = SalaryEntityUtil.convert2Map(salaryItemList, SalaryItemPO::getId, SalaryItemPO::getName); + List approvalItemGroups = JsonUtil.parseList(salaryApprovalRulePO.getApprovalGroupSetting(), SalaryApprovalDTO.approvalItemGroup.class); + for (SalaryApprovalDTO.approvalItemGroup group : approvalItemGroups) { + for(SalaryApprovalDTO.approvalItem item : group.getApprovalItems()) { + item.setSalaryItemName(salaryItemNameMap.getOrDefault(item.getSalaryItemId(), "")); + } + } + + return SalaryApprovalDTO.builder() + .id(salaryApprovalRulePO.getId()) + .salarySobId(salaryApprovalRulePO.getSalarySobId()) + .isOpenApproval(salaryApprovalRulePO.getOpenApproval().equals(1)) + .approvalWorkflowUrl(StringUtils.isBlank(salaryApprovalRulePO.getWorkflowUrl()) ? "" : salaryApprovalRulePO.getWorkflowUrl()) + .approvalItemGroup(approvalItemGroups) + .build(); + + } + + /** + * 将账套薪资项目设置转换成审批中的项目设置信息 + * @param aggregateBySalarySobId + */ + public static String sobItemAggregate2approvalGroupSetting(SalarySobItemAggregateDTO aggregateBySalarySobId) { + List groupList = new ArrayList<>(); + // 薪资项目分组 + List itemGroups = aggregateBySalarySobId.getItemGroups(); + for (SalarySobItemGroupDTO sobItemGroupDTO: itemGroups) { + SalaryApprovalDTO.approvalItemGroup approvalGroup = new SalaryApprovalDTO.approvalItemGroup(); + approvalGroup.setGroupName(sobItemGroupDTO.getName()); + approvalGroup.setSorted(sobItemGroupDTO.getSortedIndex()); + List approvalItemList = new ArrayList<>(); + for (SalarySobItemDTO groupItem : sobItemGroupDTO.getItems()) { + SalaryApprovalDTO.approvalItem approvalItem = new SalaryApprovalDTO.approvalItem(); + approvalItem.setSalaryItemId(groupItem.getSalaryItemId()); + approvalItem.setSalaryItemName(groupItem.getName()); + approvalItem.setSorted(groupItem.getSortedIndex()); + approvalItemList.add(approvalItem); + } + approvalGroup.setApprovalItems(approvalItemList); + groupList.add(approvalGroup); + } + // 未分类 + List items = aggregateBySalarySobId.getItems(); + List approvalItemList2 = new ArrayList<>(); + for (SalarySobItemDTO groupItem : items) { + SalaryApprovalDTO.approvalItem approvalItem = new SalaryApprovalDTO.approvalItem(); + approvalItem.setSalaryItemId(groupItem.getSalaryItemId()); + approvalItem.setSalaryItemName(groupItem.getName()); + approvalItem.setSorted(groupItem.getSortedIndex()); + approvalItemList2.add(approvalItem); + } + SalaryApprovalDTO.approvalItemGroup approvalGroup = new SalaryApprovalDTO.approvalItemGroup(); + approvalGroup.setGroupName("未分类"); + approvalGroup.setSorted(groupList.size()); + approvalGroup.setApprovalItems(approvalItemList2); + groupList.add(approvalGroup); + return JsonUtil.toJsonString(groupList); + } + + +} diff --git a/src/com/engine/salary/entity/salarysob/dto/SalaryApprovalDTO.java b/src/com/engine/salary/entity/salarysob/dto/SalaryApprovalDTO.java new file mode 100644 index 000000000..41511ec6b --- /dev/null +++ b/src/com/engine/salary/entity/salarysob/dto/SalaryApprovalDTO.java @@ -0,0 +1,76 @@ +package com.engine.salary.entity.salarysob.dto; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +/** + * 薪资审批设置列表 + *

Copyright: Copyright (c) 2024

+ *

Company: 泛微软件

+ * + * @author xuzhuoyan + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class SalaryApprovalDTO { + + // 主键id + private Long id; + + // 薪资账套id + private Long salarySobId; + + // 是否开启审批 + private Boolean isOpenApproval; + + // 审批流程地址 + private String approvalWorkflowUrl; + + // 审批项目信息 + private List approvalItemGroup; + + /** + * 审批项目信息分组形式 + */ + @Data + @Builder + @NoArgsConstructor + @AllArgsConstructor + public static class approvalItemGroup { + + // 分组名称 + private String groupName; + + // 项目信息 + private List approvalItems; + + // 排序 + private Integer sorted; + } + + /** + * 审批薪资项目 + */ + @Data + @Builder + @NoArgsConstructor + @AllArgsConstructor + public static class approvalItem { + // 薪资项目id + private Long salaryItemId; + + // 薪资项目名称 + private String salaryItemName; + + // 排序 + private Integer sorted; + + } +} diff --git a/src/com/engine/salary/entity/salarysob/param/ApprovalRequestSaveParam.java b/src/com/engine/salary/entity/salarysob/param/ApprovalRequestSaveParam.java new file mode 100644 index 000000000..e3ef6882d --- /dev/null +++ b/src/com/engine/salary/entity/salarysob/param/ApprovalRequestSaveParam.java @@ -0,0 +1,27 @@ +package com.engine.salary.entity.salarysob.param; + +import com.engine.salary.util.valid.DataCheck; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @ClassName SalaryApprovalQueryParam + * @author Harryxzy + * @date 2024/4/23 15:05 + * @description 薪资审批流程id保存参数 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class ApprovalRequestSaveParam { + + // 流程id + @DataCheck(require = true, message = "流程id不能为空") + private String requestId; + + // 核算记录id + private Long salaryAcctRecordId; +} diff --git a/src/com/engine/salary/entity/salarysob/param/SalaryApprovalQueryParam.java b/src/com/engine/salary/entity/salarysob/param/SalaryApprovalQueryParam.java new file mode 100644 index 000000000..770bb7933 --- /dev/null +++ b/src/com/engine/salary/entity/salarysob/param/SalaryApprovalQueryParam.java @@ -0,0 +1,24 @@ +package com.engine.salary.entity.salarysob.param; + +import com.engine.salary.util.valid.DataCheck; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @ClassName SalaryApprovalQueryParam + * @author Harryxzy + * @date 2024/4/23 15:05 + * @description 薪资审批设置查询参数 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class SalaryApprovalQueryParam { + + // 薪资账套id + @DataCheck(require = true, message = "薪资账套的ID不允许为空") + private Long salarySobId; +} diff --git a/src/com/engine/salary/entity/salarysob/po/SalaryApprovalRulePO.java b/src/com/engine/salary/entity/salarysob/po/SalaryApprovalRulePO.java new file mode 100644 index 000000000..1b1473aab --- /dev/null +++ b/src/com/engine/salary/entity/salarysob/po/SalaryApprovalRulePO.java @@ -0,0 +1,67 @@ +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 SalaryApprovalRulePO + * @date 2024/04/23 17:31 + * @description 薪资核算审批规则 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class SalaryApprovalRulePO { + /** + * 主键id + */ + private Long id; + + /** + * 薪资账套id + */ + private Long salarySobId; + + /** + * 是否开启工资单审批 + */ + private Integer openApproval; + + /** + * 审批薪资项目设置 + */ + private String approvalGroupSetting; + + /** + * 审批流程地址 + */ + private String workflowUrl; + + /** + * 创建时间 + */ + private Date createTime; + + /** + * 创建人id + */ + private Long creator; + + private Integer deleteType; + + /** + * 修改时间 + */ + private Date updateTime; + + //主键id集合 + private Collection ids; + +} \ No newline at end of file diff --git a/src/com/engine/salary/mapper/salaryacct/SalaryAcctRecordMapper.xml b/src/com/engine/salary/mapper/salaryacct/SalaryAcctRecordMapper.xml index 4266b9277..e7632d824 100644 --- a/src/com/engine/salary/mapper/salaryacct/SalaryAcctRecordMapper.xml +++ b/src/com/engine/salary/mapper/salaryacct/SalaryAcctRecordMapper.xml @@ -388,6 +388,12 @@ back_calc_status=#{backCalcStatus}, + + approval_id=#{approvalId}, + + + approval_status=#{approvalStatus}, + WHERE id = #{id} AND delete_type = 0 diff --git a/src/com/engine/salary/mapper/salarysob/SalaryApprovalRuleMapper.java b/src/com/engine/salary/mapper/salarysob/SalaryApprovalRuleMapper.java new file mode 100644 index 000000000..0aea946f8 --- /dev/null +++ b/src/com/engine/salary/mapper/salarysob/SalaryApprovalRuleMapper.java @@ -0,0 +1,72 @@ +package com.engine.salary.mapper.salarysob; + +import com.engine.salary.entity.salarysob.po.SalaryApprovalRulePO; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @author Harryxzy + * @ClassName SalaryApprovalRuleMapper + * @date 2024/04/23 17:36 + * @description + */ +public interface SalaryApprovalRuleMapper { + + /** + * 查询所有记录 + * + * @return 返回集合,没有返回空List + */ + List listAll(); + + /** + * 条件查询 + * + * @return 返回集合,没有返回空List + */ + List listSome(SalaryApprovalRulePO salaryApprovalRule); + + + /** + * 根据主键查询 + * + * @param id 主键 + * @return 返回记录,没有返回null + */ + SalaryApprovalRulePO getById(Long id); + + /** + * 新增,忽略null字段 + * + * @param salaryApprovalRule 新增的记录 + * @return 返回影响行数 + */ + int insertIgnoreNull(SalaryApprovalRulePO salaryApprovalRule); + + /** + * 修改,修改所有字段 + * + * @param salaryApprovalRule 修改的记录 + * @return 返回影响行数 + */ + int update(SalaryApprovalRulePO salaryApprovalRule); + + /** + * 修改,忽略null字段 + * + * @param salaryApprovalRule 修改的记录 + * @return 返回影响行数 + */ + int updateIgnoreNull(SalaryApprovalRulePO salaryApprovalRule); + + /** + * 删除记录 + * + * @param salaryApprovalRule 待删除的记录 + * @return 返回影响行数 + */ + int delete(SalaryApprovalRulePO salaryApprovalRule); + + void deleteBySalarySobId(@Param("salarySobId") Long salarySobId); +} diff --git a/src/com/engine/salary/mapper/salarysob/SalaryApprovalRuleMapper.xml b/src/com/engine/salary/mapper/salarysob/SalaryApprovalRuleMapper.xml new file mode 100644 index 000000000..d64853c48 --- /dev/null +++ b/src/com/engine/salary/mapper/salarysob/SalaryApprovalRuleMapper.xml @@ -0,0 +1,216 @@ + + + + + + + + + + + + + + + + + + t.approval_group_setting + , t.create_time + , t.creator + , t.delete_type + , t.id + , t.open_approval + , t.salary_sob_id + , t.update_time + , t.workflow_url + + + + + + + + + + + + + + + INSERT INTO hrsa_salary_approval_rule + + + + approval_group_setting, + + + create_time, + + + creator, + + + delete_type, + + + id, + + + open_approval, + + + salary_sob_id, + + + update_time, + + + workflow_url, + + + + + #{approvalGroupSetting}, + + + #{createTime}, + + + #{creator}, + + + #{deleteType}, + + + #{id}, + + + #{openApproval}, + + + #{salarySobId}, + + + #{updateTime}, + + + #{workflowUrl}, + + + + + + + UPDATE hrsa_salary_approval_rule + + approval_group_setting=#{approvalGroupSetting}, + create_time=#{createTime}, + creator=#{creator}, + delete_type=#{deleteType}, + open_approval=#{openApproval}, + salary_sob_id=#{salarySobId}, + update_time=#{updateTime}, + workflow_url=#{workflowUrl}, + + WHERE id = #{id} AND delete_type = 0 + + + + + + UPDATE hrsa_salary_approval_rule + + + approval_group_setting=#{approvalGroupSetting}, + + + create_time=#{createTime}, + + + creator=#{creator}, + + + delete_type=#{deleteType}, + + + open_approval=#{openApproval}, + + + salary_sob_id=#{salarySobId}, + + + update_time=#{updateTime}, + + + workflow_url=#{workflowUrl}, + + + WHERE id = #{id} AND delete_type = 0 + + + + + + UPDATE hrsa_salary_approval_rule + SET delete_type=1 + WHERE id = #{id} AND delete_type = 0 + + + + UPDATE hrsa_salary_approval_rule + SET delete_type=1 + WHERE salary_sob_id = #{salarySobId} AND delete_type = 0 + + + + \ No newline at end of file diff --git a/src/com/engine/salary/service/SalaryApprovalRuleService.java b/src/com/engine/salary/service/SalaryApprovalRuleService.java new file mode 100644 index 000000000..55c7f1dd5 --- /dev/null +++ b/src/com/engine/salary/service/SalaryApprovalRuleService.java @@ -0,0 +1,104 @@ +package com.engine.salary.service; + +import com.engine.salary.entity.salaryitem.param.SalaryItemSearchParam; +import com.engine.salary.entity.salaryitem.po.SalaryItemPO; +import com.engine.salary.entity.salarysob.dto.SalaryApprovalDTO; +import com.engine.salary.entity.salarysob.param.ApprovalRequestSaveParam; +import com.engine.salary.entity.salarysob.param.SalaryApprovalQueryParam; +import com.engine.salary.entity.salarysob.po.SalaryApprovalRulePO; + +import java.util.List; + +/** + * @author Harryxzy + * @ClassName SalaryApprovalRuleService + * @date 2024/04/23 17:33 + * @description 薪资核算审批规则 + */ +public interface SalaryApprovalRuleService { + + /** + * 查询所有记录 + * + * @return 返回集合,没有返回空List + */ + List listAll(); + + + /** + * 根据主键查询 + * + * @param id 主键 + * @return 返回记录,没有返回null + */ + SalaryApprovalRulePO getById(Long id); + + + /** + * 新增,忽略null字段 + * + * @param salaryApprovalRule 新增的记录 + * @return 返回影响行数 + */ + int insertIgnoreNull(SalaryApprovalRulePO salaryApprovalRule); + + /** + * 修改,修改所有字段 + * + * @param salaryApprovalRule 修改的记录 + * @return 返回影响行数 + */ + int update(SalaryApprovalRulePO salaryApprovalRule); + + /** + * 修改,忽略null字段 + * + * @param salaryApprovalRule 修改的记录 + * @return 返回影响行数 + */ + int updateIgnoreNull(SalaryApprovalRulePO salaryApprovalRule); + + /** + * 删除记录 + * + * @param salaryApprovalRule 待删除的记录 + * @return 返回影响行数 + */ + int delete(SalaryApprovalRulePO salaryApprovalRule); + + /** + * 根据账套id查询审批设置 + * @param salarySobId + * @return + */ + SalaryApprovalRulePO getBySalarySobId(Long salarySobId); + + /** + * 根据薪资账套id删除 + * @param salarySobId + */ + void deleteBySalarySobId(Long salarySobId); + + /** + * 薪资账套的薪资审批规则 + * @param queryParam + * @return + */ + SalaryApprovalDTO salaryApprovalForm(SalaryApprovalQueryParam queryParam); + + /** + * 保存薪资账套的薪资审批规则 + * @param salaryApprovalDTO + */ + void saveSalaryApprovalForm(SalaryApprovalDTO salaryApprovalDTO); + + List listSalaryApprovalItem(SalaryItemSearchParam queryParam); + + SalaryApprovalDTO getApprovalInfoByRecordId(Long salaryAcctRecordId); + + /** + * 保存审批流程id + * @param saveParam + */ + void saveApprovalRequestId(ApprovalRequestSaveParam saveParam); +} diff --git a/src/com/engine/salary/service/impl/SalaryApprovalRuleServiceImpl.java b/src/com/engine/salary/service/impl/SalaryApprovalRuleServiceImpl.java new file mode 100644 index 000000000..c13aedff6 --- /dev/null +++ b/src/com/engine/salary/service/impl/SalaryApprovalRuleServiceImpl.java @@ -0,0 +1,201 @@ +package com.engine.salary.service.impl; + +import com.engine.common.util.ServiceUtil; +import com.engine.core.impl.Service; +import com.engine.salary.entity.salaryacct.po.SalaryAcctRecordPO; +import com.engine.salary.entity.salaryitem.param.SalaryItemSearchParam; +import com.engine.salary.entity.salaryitem.po.SalaryItemPO; +import com.engine.salary.entity.salarysob.bo.SalaryApprovalBO; +import com.engine.salary.entity.salarysob.dto.SalaryApprovalDTO; +import com.engine.salary.entity.salarysob.dto.SalarySobItemAggregateDTO; +import com.engine.salary.entity.salarysob.param.ApprovalRequestSaveParam; +import com.engine.salary.entity.salarysob.param.SalaryApprovalQueryParam; +import com.engine.salary.entity.salarysob.po.SalaryApprovalRulePO; +import com.engine.salary.entity.salarysob.po.SalarySobItemPO; +import com.engine.salary.entity.salarysob.po.SalarySobPO; +import com.engine.salary.exception.SalaryRunTimeException; +import com.engine.salary.mapper.salaryacct.SalaryAcctRecordMapper; +import com.engine.salary.mapper.salarysob.SalaryApprovalRuleMapper; +import com.engine.salary.service.*; +import com.engine.salary.util.JsonUtil; +import com.engine.salary.util.db.IdGenerator; +import com.engine.salary.util.db.MapperProxyFactory; +import com.engine.salary.util.valid.ValidUtil; +import org.apache.commons.collections.CollectionUtils; +import weaver.hrm.User; + +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +/** + * @author Harryxzy + * @ClassName SalaryApprovalRuleServiceImpl + * @date 2024/04/23 17:35 + * @description + */ +public class SalaryApprovalRuleServiceImpl extends Service implements SalaryApprovalRuleService { + + private SalaryApprovalRuleMapper getSalaryApprovalRuleMapper() { + return MapperProxyFactory.getProxy(SalaryApprovalRuleMapper.class); + } + + private SalaryAcctRecordMapper getSalaryAcctRecordMapper() { + return MapperProxyFactory.getProxy(SalaryAcctRecordMapper.class); + } + + private SalaryItemService getSalaryItemService(User user) { + return ServiceUtil.getService(SalaryItemServiceImpl.class, user); + } + + private SalarySobItemService getSalarySobItemService(User user) { + return ServiceUtil.getService(SalarySobItemServiceImpl.class, user); + } + + private SalarySobService getSalarySobService(User user) { + return ServiceUtil.getService(SalarySobServiceImpl.class, user); + } + + private SalaryAcctRecordService getSalaryAcctRecordService(User user) { + return ServiceUtil.getService(SalaryAcctRecordServiceImpl.class, user); + } + + @Override + public List listAll() { + return getSalaryApprovalRuleMapper().listAll(); + } + + @Override + public SalaryApprovalRulePO getById(Long id) { + return getSalaryApprovalRuleMapper().getById(id); + } + + @Override + public int insertIgnoreNull(SalaryApprovalRulePO po) { + return getSalaryApprovalRuleMapper().insertIgnoreNull(po); + } + + @Override + public int update(SalaryApprovalRulePO salaryApprovalRule) { + return getSalaryApprovalRuleMapper().update(salaryApprovalRule); + } + + @Override + public int updateIgnoreNull(SalaryApprovalRulePO salaryApprovalRule) { + return getSalaryApprovalRuleMapper().updateIgnoreNull(salaryApprovalRule); + } + + @Override + public int delete(SalaryApprovalRulePO salaryApprovalRule) { + return getSalaryApprovalRuleMapper().delete(salaryApprovalRule); + } + + @Override + public SalaryApprovalRulePO getBySalarySobId(Long salarySobId) { + if(salarySobId == null) { + return null; + } + List salaryApprovalRulePOS = getSalaryApprovalRuleMapper().listSome(SalaryApprovalRulePO.builder().salarySobId(salarySobId).build()); + if (CollectionUtils.isNotEmpty(salaryApprovalRulePOS) && salaryApprovalRulePOS.size() == 1) { + return salaryApprovalRulePOS.get(0); + } + return null; + } + + @Override + public void deleteBySalarySobId(Long salarySobId) { + if (salarySobId == null) { + return; + } + getSalaryApprovalRuleMapper().deleteBySalarySobId(salarySobId); + } + + @Override + public SalaryApprovalDTO salaryApprovalForm(SalaryApprovalQueryParam queryParam) { + // 查询薪资审批设置 + SalaryApprovalRulePO approvalRulePO = getBySalarySobId(queryParam.getSalarySobId()); + if (approvalRulePO == null) { + // 没有审批设置信息,创建默认设置信息 + Date now = new Date(); + approvalRulePO = SalaryApprovalRulePO.builder() + .id(IdGenerator.generate()) + .salarySobId(queryParam.getSalarySobId()) + .openApproval(0) + .createTime(now) + .updateTime(now) + .creator(Long.valueOf(user.getUID())) + .deleteType(0) + .build(); + // 获取账套的薪资项目设置信息 + SalarySobItemAggregateDTO aggregateBySalarySobId = getSalarySobItemService(user).getAggregateBySalarySobId(queryParam.getSalarySobId()); + String setting = SalaryApprovalBO.sobItemAggregate2approvalGroupSetting(aggregateBySalarySobId); + approvalRulePO.setApprovalGroupSetting(setting); + insertIgnoreNull(approvalRulePO); + } + if (approvalRulePO.getOpenApproval().equals(0)) { + // 未开启审批功能 + return SalaryApprovalDTO.builder().isOpenApproval(false).build(); + } + + List salaryItemList = getSalaryItemService(user).listAll(); + return SalaryApprovalBO.convert2DTO(approvalRulePO, salaryItemList); + } + + @Override + public void saveSalaryApprovalForm(SalaryApprovalDTO salaryApprovalDTO) { + SalarySobPO salarySobPO = getSalarySobService(user).getById(salaryApprovalDTO.getSalarySobId()); + if (salarySobPO == null) { + throw new RuntimeException("薪资账套不存在"); + } + // 删除原来的 + deleteBySalarySobId(salaryApprovalDTO.getSalarySobId()); + // 保存最新的 + Date now = new Date(); + SalaryApprovalRulePO po = SalaryApprovalRulePO.builder() + .id(IdGenerator.generate()) + .salarySobId(salaryApprovalDTO.getSalarySobId()) + .openApproval(salaryApprovalDTO.getIsOpenApproval() ? 1 : 0) + .approvalGroupSetting(JsonUtil.toJsonString(salaryApprovalDTO.getApprovalItemGroup())) + .createTime(now) + .updateTime(now) + .creator(Long.valueOf(user.getUID())) + .deleteType(0) + .build(); + insertIgnoreNull(po); + } + + @Override + public List listSalaryApprovalItem(SalaryItemSearchParam queryParam) { + List salarySobItemPOS = getSalarySobItemService(user).listBySalarySobId(queryParam.getSalarySobId()); + List salaryItemIds = salarySobItemPOS.stream() + .filter(po -> !queryParam.getExcludeIds().contains(po.getSalaryItemId())) + .map(SalarySobItemPO::getSalaryItemId) + .collect(Collectors.toList()); + List salaryItemPOList = getSalaryItemService(user).listByIds(salaryItemIds); + return salaryItemPOList; + } + + @Override + public SalaryApprovalDTO getApprovalInfoByRecordId(Long salaryAcctRecordId) { + SalaryAcctRecordPO acctRecordPO = getSalaryAcctRecordService(user).getById(salaryAcctRecordId); + if (acctRecordPO == null) { + throw new SalaryRunTimeException("薪资核算记录不存在或已被删除"); + } + SalaryApprovalRulePO approvalRulePO = getBySalarySobId(acctRecordPO.getSalarySobId()); + + List salaryItemList = getSalaryItemService(user).listAll(); + return SalaryApprovalBO.convert2DTO(approvalRulePO, salaryItemList); + } + + @Override + public void saveApprovalRequestId(ApprovalRequestSaveParam saveParam) { + ValidUtil.doValidator(saveParam); + // 获取核算记录信息 + SalaryAcctRecordPO salaryAcctRecordPO = getSalaryAcctRecordService(user).getById(saveParam.getSalaryAcctRecordId()); + if (salaryAcctRecordPO == null) { + throw new SalaryRunTimeException("薪资核素记录不存在或已被删除"); + } + salaryAcctRecordPO.setApprovalId(saveParam.getRequestId()); + getSalaryAcctRecordMapper().updateIgnoreNull(salaryAcctRecordPO); + } +} diff --git a/src/com/engine/salary/web/SalarySobController.java b/src/com/engine/salary/web/SalarySobController.java index 505d0a051..54168f25c 100644 --- a/src/com/engine/salary/web/SalarySobController.java +++ b/src/com/engine/salary/web/SalarySobController.java @@ -2,8 +2,10 @@ package com.engine.salary.web; import com.engine.common.util.ServiceUtil; import com.engine.salary.entity.SalarySobExtRangePO; +import com.engine.salary.entity.salaryacct.param.SalaryAcctResultQueryParam; import com.engine.salary.entity.salaryitem.dto.SalaryItemSobListDTO; import com.engine.salary.entity.salaryitem.param.SalaryItemSearchParam; +import com.engine.salary.entity.salaryitem.po.SalaryItemPO; import com.engine.salary.entity.salarysob.dto.*; import com.engine.salary.entity.salarysob.param.*; import com.engine.salary.entity.salarysob.po.SalarySobItemGroupPO; @@ -72,6 +74,10 @@ public class SalarySobController { return ServiceUtil.getService(SalarySobBackItemWrapper.class, user); } + private SalaryApprovalWrapper getSalaryApprovalWrapper(User user) { + return ServiceUtil.getService(SalaryApprovalWrapper.class, user); + } + /**********************************薪资账套 start*********************************/ /** @@ -559,4 +565,82 @@ public class SalarySobController { /**********************************校验规则 end*********************************/ + /**********************************薪资审批规则 start*********************************/ + + /** + * 薪资审批规则表单 + */ + @POST + @Path("/salaryApproval/getForm") + @Produces(MediaType.APPLICATION_JSON) + public String salaryApprovalForm(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryApprovalQueryParam queryParam) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getSalaryApprovalWrapper(user)::salaryApprovalForm, queryParam); + } + + /** + * 保存薪资审批规则表单 + */ + @POST + @Path("/salaryApproval/saveForm") + @Produces(MediaType.APPLICATION_JSON) + public String saveSalaryApprovalForm(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryApprovalDTO saveParam) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getSalaryApprovalWrapper(user)::saveSalaryApprovalForm, saveParam); + } + + /** + * 薪资审批可选薪资项目 + */ + @POST + @Path("/salaryApproval/listSalaryItem") + @Produces(MediaType.APPLICATION_JSON) + public String listSalaryApprovalItem(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryItemSearchParam queryParam) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult>(user).run(getSalaryApprovalWrapper(user)::listSalaryApprovalItem, queryParam); + } + + /** + * 根据核算记录id获取审批信息 + */ + @GET + @Path("/salaryApproval/getApprovalInfoByRecordId") + @Produces(MediaType.APPLICATION_JSON) + public String getApprovalInfo(@Context HttpServletRequest request, @Context HttpServletResponse response, @QueryParam(value = "salaryAcctRecordId")Long salaryAcctRecordId ) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getSalaryApprovalWrapper(user)::getApprovalInfoByRecordId, salaryAcctRecordId); + } + + /** + * 获取审批时薪资核算结果 + * @param request + * @param response + * @param param + * @return + */ + @POST + @Path("/salaryApproval/acctresult/list") + @Produces(MediaType.APPLICATION_JSON) + public String listSalaryApprovalAcctResult(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryAcctResultQueryParam param) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult>(user).run(getSalaryApprovalWrapper(user)::listSalaryApprovalAcctResult, param); + } + + /** + * 保存审批流程id + * @param request + * @param response + * @param param + * @return + */ + @POST + @Path("/salaryApproval/saveRequestId") + @Produces(MediaType.APPLICATION_JSON) + public String saveApprovalRequestId(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody ApprovalRequestSaveParam param) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getSalaryApprovalWrapper(user)::saveApprovalRequestId, param); + } + + /**********************************薪资审批规则 start*********************************/ + } diff --git a/src/com/engine/salary/wrapper/SalaryApprovalWrapper.java b/src/com/engine/salary/wrapper/SalaryApprovalWrapper.java new file mode 100644 index 000000000..ac2c340f2 --- /dev/null +++ b/src/com/engine/salary/wrapper/SalaryApprovalWrapper.java @@ -0,0 +1,146 @@ +package com.engine.salary.wrapper; + +import com.engine.common.util.ServiceUtil; +import com.engine.core.impl.Service; +import com.engine.salary.component.WeaTableColumnGroup; +import com.engine.salary.entity.salaryacct.param.SalaryAcctResultQueryParam; +import com.engine.salary.entity.salaryacct.po.SalaryAcctRecordPO; +import com.engine.salary.entity.salaryitem.param.SalaryItemSearchParam; +import com.engine.salary.entity.salaryitem.po.SalaryItemPO; +import com.engine.salary.entity.salarysob.bo.SalarySobItemAggregateBO; +import com.engine.salary.entity.salarysob.dto.SalaryApprovalDTO; +import com.engine.salary.entity.salarysob.dto.SalarySobEmpFieldDTO; +import com.engine.salary.entity.salarysob.param.ApprovalRequestSaveParam; +import com.engine.salary.entity.salarysob.param.SalaryApprovalQueryParam; +import com.engine.salary.entity.salarysob.po.SalarySobEmpFieldPO; +import com.engine.salary.enums.salaryaccounting.LockStatusEnum; +import com.engine.salary.exception.SalaryRunTimeException; +import com.engine.salary.service.*; +import com.engine.salary.service.impl.*; +import com.engine.salary.util.SalaryEntityUtil; +import com.engine.salary.util.SalaryI18nUtil; +import com.engine.salary.util.page.PageInfo; +import com.engine.salary.util.page.SalaryPageUtil; +import com.engine.salary.util.valid.ValidUtil; +import com.google.common.collect.Lists; +import org.apache.commons.collections4.CollectionUtils; +import weaver.hrm.User; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; + +/** + * 薪资账套的薪资审批 + *

Copyright: Copyright (c) 2024

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +public class SalaryApprovalWrapper extends Service { + + private SalaryApprovalRuleService getSalaryApprovalRuleService(User user) { + return ServiceUtil.getService(SalaryApprovalRuleServiceImpl.class, user); + } + + private SalaryAcctRecordService getSalaryAcctRecordService(User user) { + return ServiceUtil.getService(SalaryAcctRecordServiceImpl.class, user); + } + + private SalaryAcctResultService getSalaryAcctResultService(User user) { + return ServiceUtil.getService(SalaryAcctResultServiceImpl.class, user); + } + + private SalarySobEmpFieldService getSalarySobEmpFieldService(User user) { + return ServiceUtil.getService(SalarySobEmpFieldServiceImpl.class, user); + } + + private SalaryItemService getSalaryItemService(User user) { + return ServiceUtil.getService(SalaryItemServiceImpl.class, user); + } + + /** + * 薪资账套的薪资审批规则 + * + * @param queryParam 查询参数 + * @return + */ + public SalaryApprovalDTO salaryApprovalForm(SalaryApprovalQueryParam queryParam) { + ValidUtil.doValidator(queryParam); + return getSalaryApprovalRuleService(user).salaryApprovalForm(queryParam); + } + + /** + * 保存薪资账套的薪资审批规则 + * + * @param salaryApprovalDTO + * + */ + public void saveSalaryApprovalForm(SalaryApprovalDTO salaryApprovalDTO) { + getSalaryApprovalRuleService(user).saveSalaryApprovalForm(salaryApprovalDTO); + } + + public List listSalaryApprovalItem(SalaryItemSearchParam queryParam) { + return getSalaryApprovalRuleService(user).listSalaryApprovalItem(queryParam); + } + + public SalaryApprovalDTO getApprovalInfoByRecordId(Long salaryAcctRecordId) { + return getSalaryApprovalRuleService(user).getApprovalInfoByRecordId(salaryAcctRecordId); + } + + public Map listSalaryApprovalAcctResult(SalaryAcctResultQueryParam queryParam) { + ValidUtil.doValidator(queryParam); + // 审批信息 + SalaryApprovalDTO approvalInfoByRecordId = getSalaryApprovalRuleService(user).getApprovalInfoByRecordId(queryParam.getSalaryAcctRecordId()); + + // 查询薪资核算记录 + SalaryAcctRecordPO salaryAcctRecordPO = getSalaryAcctRecordService(user).getById(queryParam.getSalaryAcctRecordId()); + if (Objects.isNull(salaryAcctRecordPO)) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98747, "薪资核算记录不存在或已被删除")); + } + + // 查询薪资核算结果(分页) + PageInfo> page = getSalaryAcctResultService(user).listPageByParam(queryParam); + + // 构建薪资核算结果审批列表的表头 + List columns = Lists.newArrayList(); + // 查询薪资账套的员工信息字段 + List salarySobEmpFieldPOS = getSalarySobEmpFieldService(user).listBySalarySobId(salaryAcctRecordPO.getSalarySobId()); + List salarySobEmpFieldDTOS = new SalarySobItemAggregateBO().buildEmpField(salarySobEmpFieldPOS); + // 获取薪资项目信息 + List salaryItemPOS = getSalaryItemService(user).listAll(); + Map salaryItemWidthMap = SalaryEntityUtil.convert2Map(salaryItemPOS, SalaryItemPO::getId, SalaryItemPO::getWidth); + // 员工信息字段 + for (SalarySobEmpFieldDTO salarySobEmpFieldDTO : salarySobEmpFieldDTOS) { + columns.add(new WeaTableColumnGroup(SalaryPageUtil.selfAdaption(salarySobEmpFieldDTO.getFieldName(), 0), salarySobEmpFieldDTO.getFieldName(), salarySobEmpFieldDTO.getFieldId())); + } + // 薪资项目分组下的薪资项目 + for (SalaryApprovalDTO.approvalItemGroup groupDTO : approvalInfoByRecordId.getApprovalItemGroup()) { + if (CollectionUtils.isEmpty(groupDTO.getApprovalItems())) { + continue; + } + List childrenColumns = Lists.newArrayList(); + for (SalaryApprovalDTO.approvalItem approvalItemDTO : groupDTO.getApprovalItems()) { + childrenColumns.add(new WeaTableColumnGroup(SalaryPageUtil.selfAdaption(approvalItemDTO.getSalaryItemName(), salaryItemWidthMap.getOrDefault(approvalItemDTO.getSalaryItemId(), 0) == null ? 0 : salaryItemWidthMap.getOrDefault(approvalItemDTO.getSalaryItemId(), 0)), approvalItemDTO.getSalaryItemName(), "" + approvalItemDTO.getSalaryItemId(), LockStatusEnum.UNLOCK.getValue())); + } + WeaTableColumnGroup weaTableColumnWapper = new WeaTableColumnGroup(SalaryPageUtil.selfAdaption(groupDTO.getGroupName(), 0), groupDTO.getGroupName(), groupDTO.getGroupName(), childrenColumns); + columns.add(weaTableColumnWapper); + } + + Map datas = new HashMap<>(); + datas.put("pageInfo", page); + datas.put("columns", columns); + + return datas; + } + + /** + * 保存审批流程id + * @param saveParam + */ + public void saveApprovalRequestId(ApprovalRequestSaveParam saveParam) { + getSalaryApprovalRuleService(user).saveApprovalRequestId(saveParam); + } +} diff --git a/src/com/engine/salary/wrapper/SalarySobItemWrapper.java b/src/com/engine/salary/wrapper/SalarySobItemWrapper.java index 1fbe0e0e0..96bdc90db 100644 --- a/src/com/engine/salary/wrapper/SalarySobItemWrapper.java +++ b/src/com/engine/salary/wrapper/SalarySobItemWrapper.java @@ -177,4 +177,5 @@ public class SalarySobItemWrapper extends Service { public SalarySobItemFormDTO getSalaryItemForm(SalarySobItemPO param) { return getSalarySobItemService(user).getSalaryItemForm(param); } + } From f46a18fa2743dc9d11a3129ef171f6f8905a9233 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Thu, 25 Apr 2024 09:39:28 +0800 Subject: [PATCH 02/20] =?UTF-8?q?=E8=96=AA=E8=B5=84=E5=AE=A1=E6=89=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salary/service/impl/SalaryApprovalRuleServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/com/engine/salary/service/impl/SalaryApprovalRuleServiceImpl.java b/src/com/engine/salary/service/impl/SalaryApprovalRuleServiceImpl.java index c13aedff6..94853582b 100644 --- a/src/com/engine/salary/service/impl/SalaryApprovalRuleServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryApprovalRuleServiceImpl.java @@ -134,7 +134,7 @@ public class SalaryApprovalRuleServiceImpl extends Service implements SalaryAppr } if (approvalRulePO.getOpenApproval().equals(0)) { // 未开启审批功能 - return SalaryApprovalDTO.builder().isOpenApproval(false).build(); + return SalaryApprovalDTO.builder().id(approvalRulePO.getId()).isOpenApproval(false).build(); } List salaryItemList = getSalaryItemService(user).listAll(); From 34fe103055b51735ba28a060f7fc4df030545239 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Thu, 25 Apr 2024 15:30:25 +0800 Subject: [PATCH 03/20] =?UTF-8?q?=E5=B7=A5=E8=B5=84=E5=8D=95=E5=AE=A1?= =?UTF-8?q?=E6=89=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salary/service/SalaryApprovalRuleService.java | 3 +++ .../service/impl/SalaryApprovalRuleServiceImpl.java | 11 +++++++---- .../salary/service/impl/SalarySobServiceImpl.java | 6 ++++++ 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/src/com/engine/salary/service/SalaryApprovalRuleService.java b/src/com/engine/salary/service/SalaryApprovalRuleService.java index 55c7f1dd5..85d5e5b2c 100644 --- a/src/com/engine/salary/service/SalaryApprovalRuleService.java +++ b/src/com/engine/salary/service/SalaryApprovalRuleService.java @@ -7,6 +7,7 @@ import com.engine.salary.entity.salarysob.param.ApprovalRequestSaveParam; import com.engine.salary.entity.salarysob.param.SalaryApprovalQueryParam; import com.engine.salary.entity.salarysob.po.SalaryApprovalRulePO; +import java.util.Collection; import java.util.List; /** @@ -101,4 +102,6 @@ public interface SalaryApprovalRuleService { * @param saveParam */ void saveApprovalRequestId(ApprovalRequestSaveParam saveParam); + + void deleteBySalarySobIds(Collection ids); } diff --git a/src/com/engine/salary/service/impl/SalaryApprovalRuleServiceImpl.java b/src/com/engine/salary/service/impl/SalaryApprovalRuleServiceImpl.java index 94853582b..060bb500e 100644 --- a/src/com/engine/salary/service/impl/SalaryApprovalRuleServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryApprovalRuleServiceImpl.java @@ -24,6 +24,7 @@ import com.engine.salary.util.valid.ValidUtil; import org.apache.commons.collections.CollectionUtils; import weaver.hrm.User; +import java.util.Collection; import java.util.Date; import java.util.List; import java.util.stream.Collectors; @@ -132,10 +133,6 @@ public class SalaryApprovalRuleServiceImpl extends Service implements SalaryAppr approvalRulePO.setApprovalGroupSetting(setting); insertIgnoreNull(approvalRulePO); } - if (approvalRulePO.getOpenApproval().equals(0)) { - // 未开启审批功能 - return SalaryApprovalDTO.builder().id(approvalRulePO.getId()).isOpenApproval(false).build(); - } List salaryItemList = getSalaryItemService(user).listAll(); return SalaryApprovalBO.convert2DTO(approvalRulePO, salaryItemList); @@ -156,6 +153,7 @@ public class SalaryApprovalRuleServiceImpl extends Service implements SalaryAppr .salarySobId(salaryApprovalDTO.getSalarySobId()) .openApproval(salaryApprovalDTO.getIsOpenApproval() ? 1 : 0) .approvalGroupSetting(JsonUtil.toJsonString(salaryApprovalDTO.getApprovalItemGroup())) + .workflowUrl(salaryApprovalDTO.getApprovalWorkflowUrl()) .createTime(now) .updateTime(now) .creator(Long.valueOf(user.getUID())) @@ -198,4 +196,9 @@ public class SalaryApprovalRuleServiceImpl extends Service implements SalaryAppr salaryAcctRecordPO.setApprovalId(saveParam.getRequestId()); getSalaryAcctRecordMapper().updateIgnoreNull(salaryAcctRecordPO); } + + @Override + public void deleteBySalarySobIds(Collection ids) { + ids.stream().forEach(this::deleteBySalarySobId); + } } diff --git a/src/com/engine/salary/service/impl/SalarySobServiceImpl.java b/src/com/engine/salary/service/impl/SalarySobServiceImpl.java index b8cf6acdb..b9ef5594d 100644 --- a/src/com/engine/salary/service/impl/SalarySobServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalarySobServiceImpl.java @@ -135,6 +135,10 @@ public class SalarySobServiceImpl extends Service implements SalarySobService { return ServiceUtil.getService(SalarySysConfServiceImpl.class, user); } + private SalaryApprovalRuleService getSalaryApprovalRuleService(User user) { + return ServiceUtil.getService(SalaryApprovalRuleServiceImpl.class, user); + } + @Override public SalarySobPO getById(Long id) { return salarySobMapper.getById(id); @@ -630,6 +634,8 @@ public class SalarySobServiceImpl extends Service implements SalarySobService { getSalarySobBackItemService(user).deleteBySalarySobIds(ids); // 删除薪资账套的校验规则 getSalarySobCheckRuleService(user).deleteBySalarySobIds(ids); + // 删除薪资审批规则 + getSalaryApprovalRuleService(user).deleteBySalarySobIds(ids); // 记录日志 salarySobPOS.forEach(salarySobPO -> { LoggerContext loggerContext = new LoggerContext<>(); From 8ff315b34168ca5f900e86cdbb385dc3024e6f53 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Thu, 25 Apr 2024 17:24:47 +0800 Subject: [PATCH 04/20] =?UTF-8?q?=E5=B7=A5=E8=B5=84=E5=8D=95=E5=AE=A1?= =?UTF-8?q?=E6=89=B9sql?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resource/sqlupgrade/DM/sql202404251103.sql | 19 +++++++++++++++++++ resource/sqlupgrade/GS/sql202404251103.sql | 19 +++++++++++++++++++ resource/sqlupgrade/JC/sql202404251103.sql | 19 +++++++++++++++++++ resource/sqlupgrade/Mysql/sql202404251103.sql | 16 ++++++++++++++++ .../sqlupgrade/Oracle/sql202404251103.sql | 18 ++++++++++++++++++ resource/sqlupgrade/PG/sql202404251103.sql | 18 ++++++++++++++++++ .../sqlupgrade/SQLServer/sql202404251103.sql | 19 +++++++++++++++++++ resource/sqlupgrade/ST/sql202404251103.sql | 19 +++++++++++++++++++ 8 files changed, 147 insertions(+) create mode 100644 resource/sqlupgrade/DM/sql202404251103.sql create mode 100644 resource/sqlupgrade/GS/sql202404251103.sql create mode 100644 resource/sqlupgrade/JC/sql202404251103.sql create mode 100644 resource/sqlupgrade/Mysql/sql202404251103.sql create mode 100644 resource/sqlupgrade/Oracle/sql202404251103.sql create mode 100644 resource/sqlupgrade/PG/sql202404251103.sql create mode 100644 resource/sqlupgrade/SQLServer/sql202404251103.sql create mode 100644 resource/sqlupgrade/ST/sql202404251103.sql diff --git a/resource/sqlupgrade/DM/sql202404251103.sql b/resource/sqlupgrade/DM/sql202404251103.sql new file mode 100644 index 000000000..42204eed9 --- /dev/null +++ b/resource/sqlupgrade/DM/sql202404251103.sql @@ -0,0 +1,19 @@ +CREATE TABLE hrsa_salary_approval_rule ( + id NUMBER(38,0) primary key, + salary_sob_id NUMBER(38,0), + open_approval NUMBER, + approval_group_setting clob, + workflow_url varchar2(500) DEFAULT NULL, + delete_type NUMBER, + create_time DATE default sysdate, + update_time DATE default sysdate, + creator NUMBER(38,0) +); +/ + +alter table hrsa_salary_acct_record add approval_id varchar2(50); +/ + +alter table hrsa_salary_acct_record add approval_status varchar2(50); +/ + diff --git a/resource/sqlupgrade/GS/sql202404251103.sql b/resource/sqlupgrade/GS/sql202404251103.sql new file mode 100644 index 000000000..42204eed9 --- /dev/null +++ b/resource/sqlupgrade/GS/sql202404251103.sql @@ -0,0 +1,19 @@ +CREATE TABLE hrsa_salary_approval_rule ( + id NUMBER(38,0) primary key, + salary_sob_id NUMBER(38,0), + open_approval NUMBER, + approval_group_setting clob, + workflow_url varchar2(500) DEFAULT NULL, + delete_type NUMBER, + create_time DATE default sysdate, + update_time DATE default sysdate, + creator NUMBER(38,0) +); +/ + +alter table hrsa_salary_acct_record add approval_id varchar2(50); +/ + +alter table hrsa_salary_acct_record add approval_status varchar2(50); +/ + diff --git a/resource/sqlupgrade/JC/sql202404251103.sql b/resource/sqlupgrade/JC/sql202404251103.sql new file mode 100644 index 000000000..42204eed9 --- /dev/null +++ b/resource/sqlupgrade/JC/sql202404251103.sql @@ -0,0 +1,19 @@ +CREATE TABLE hrsa_salary_approval_rule ( + id NUMBER(38,0) primary key, + salary_sob_id NUMBER(38,0), + open_approval NUMBER, + approval_group_setting clob, + workflow_url varchar2(500) DEFAULT NULL, + delete_type NUMBER, + create_time DATE default sysdate, + update_time DATE default sysdate, + creator NUMBER(38,0) +); +/ + +alter table hrsa_salary_acct_record add approval_id varchar2(50); +/ + +alter table hrsa_salary_acct_record add approval_status varchar2(50); +/ + diff --git a/resource/sqlupgrade/Mysql/sql202404251103.sql b/resource/sqlupgrade/Mysql/sql202404251103.sql new file mode 100644 index 000000000..61d412db9 --- /dev/null +++ b/resource/sqlupgrade/Mysql/sql202404251103.sql @@ -0,0 +1,16 @@ +CREATE TABLE hrsa_salary_approval_rule ( + id bigint NOT NULL, + salary_sob_id bigint NOT NULL, + open_approval int NOT NULL, + approval_group_setting text NULL, + workflow_url varchar(500) NULL DEFAULT NULL, + delete_type int NOT NULL, + create_time datetime NOT NULL , + update_time datetime NOT NULL, + creator bigint NOT NULL, + PRIMARY KEY (id) +); + +alter table hrsa_salary_acct_record add approval_id varchar(50); + +alter table hrsa_salary_acct_record add approval_status varchar(50); \ No newline at end of file diff --git a/resource/sqlupgrade/Oracle/sql202404251103.sql b/resource/sqlupgrade/Oracle/sql202404251103.sql new file mode 100644 index 000000000..ed864ec3e --- /dev/null +++ b/resource/sqlupgrade/Oracle/sql202404251103.sql @@ -0,0 +1,18 @@ +CREATE TABLE hrsa_salary_approval_rule ( + id NUMBER(38,0) primary key, + salary_sob_id NUMBER(38,0), + open_approval NUMBER, + approval_group_setting clob, + workflow_url varchar2(500) DEFAULT NULL, + delete_type NUMBER, + create_time DATE default sysdate, + update_time DATE default sysdate, + creator NUMBER(38,0) +) +/ + +alter table hrsa_salary_acct_record add approval_id varchar2(50) +/ + +alter table hrsa_salary_acct_record add approval_status varchar2(50) +/ \ No newline at end of file diff --git a/resource/sqlupgrade/PG/sql202404251103.sql b/resource/sqlupgrade/PG/sql202404251103.sql new file mode 100644 index 000000000..66ff0a56e --- /dev/null +++ b/resource/sqlupgrade/PG/sql202404251103.sql @@ -0,0 +1,18 @@ +CREATE TABLE hrsa_salary_approval_rule ( + id bigint primary key, + salary_sob_id bigint, + open_approval int, + approval_group_setting text, + workflow_url varchar(500) DEFAULT NULL, + delete_type int, + create_time timestamp, + update_time timestamp, + creator bigint +) +/ + +alter table hrsa_salary_acct_record add approval_id varchar(50) +/ + +alter table hrsa_salary_acct_record add approval_status varchar(50) +/ \ No newline at end of file diff --git a/resource/sqlupgrade/SQLServer/sql202404251103.sql b/resource/sqlupgrade/SQLServer/sql202404251103.sql new file mode 100644 index 000000000..ba5e60f8c --- /dev/null +++ b/resource/sqlupgrade/SQLServer/sql202404251103.sql @@ -0,0 +1,19 @@ +CREATE TABLE hrsa_salary_approval_rule ( + id bigint NOT NULL, + salary_sob_id bigint NOT NULL, + open_approval int NOT NULL, + approval_group_setting text NULL, + workflow_url varchar(500)NULL DEFAULT NULL, + delete_type int NOT NULL, + create_time datetime NOT NULL , + update_time datetime NOT NULL, + creator bigint NOT NULL, + PRIMARY KEY (id) +) +GO + +alter table hrsa_salary_acct_record add approval_id varchar(50) +GO + +alter table hrsa_salary_acct_record add approval_status varchar(50) +GO \ No newline at end of file diff --git a/resource/sqlupgrade/ST/sql202404251103.sql b/resource/sqlupgrade/ST/sql202404251103.sql new file mode 100644 index 000000000..42204eed9 --- /dev/null +++ b/resource/sqlupgrade/ST/sql202404251103.sql @@ -0,0 +1,19 @@ +CREATE TABLE hrsa_salary_approval_rule ( + id NUMBER(38,0) primary key, + salary_sob_id NUMBER(38,0), + open_approval NUMBER, + approval_group_setting clob, + workflow_url varchar2(500) DEFAULT NULL, + delete_type NUMBER, + create_time DATE default sysdate, + update_time DATE default sysdate, + creator NUMBER(38,0) +); +/ + +alter table hrsa_salary_acct_record add approval_id varchar2(50); +/ + +alter table hrsa_salary_acct_record add approval_status varchar2(50); +/ + From 4f391a2159ecd3b61654d8561de345bb543a2afa Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Fri, 26 Apr 2024 11:24:47 +0800 Subject: [PATCH 05/20] =?UTF-8?q?=E5=B7=A5=E8=B5=84=E5=8D=95=E5=AE=A1?= =?UTF-8?q?=E6=89=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salaryacct/bo/SalaryAcctRecordBO.java | 1 + .../dto/SalaryAcctRecordListDTO.java | 3 +++ .../salarysob/po/SalaryApprovalRulePO.java | 3 +++ .../salaryacct/SalaryAcctRecordMapper.xml | 3 ++- .../salarysob/SalaryApprovalRuleMapper.xml | 6 +++++ .../service/SalaryApprovalRuleService.java | 2 ++ .../impl/SalaryApprovalRuleServiceImpl.java | 9 ++++++++ src/com/engine/salary/util/page/PageInfo.java | 5 +++++ .../wrapper/SalaryAcctRecordWrapper.java | 15 +++++++++++++ .../salary/wrapper/SalaryApprovalWrapper.java | 22 +++++++++++++++++++ 10 files changed, 68 insertions(+), 1 deletion(-) diff --git a/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctRecordBO.java b/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctRecordBO.java index e0fad94bd..55a69af74 100644 --- a/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctRecordBO.java +++ b/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctRecordBO.java @@ -96,6 +96,7 @@ public class SalaryAcctRecordBO { .accountantName(usernameMap.getOrDefault(salaryAcctRecordPO.getCreator(), StringUtils.EMPTY)) .updateTime(SalaryDateUtil.getFormatLocalDateTime(salaryAcctRecordPO.getUpdateTime())) .description(salaryAcctRecordPO.getDescription()) + .approvalStatus(salaryAcctRecordPO.getApprovalStatus()) .operate(btnList) .build(); }).collect(Collectors.toList()); diff --git a/src/com/engine/salary/entity/salaryacct/dto/SalaryAcctRecordListDTO.java b/src/com/engine/salary/entity/salaryacct/dto/SalaryAcctRecordListDTO.java index 61a8cd3bc..edc4d99dd 100644 --- a/src/com/engine/salary/entity/salaryacct/dto/SalaryAcctRecordListDTO.java +++ b/src/com/engine/salary/entity/salaryacct/dto/SalaryAcctRecordListDTO.java @@ -73,6 +73,9 @@ public class SalaryAcctRecordListDTO { @TableTitle(title = "备注", dataIndex = "description", key = "description") private String description; + @TableTitle(title = "审批状态", dataIndex = "approvalStatus", key = "approvalStatus") + private String approvalStatus; + @TableTitle(title = "操作", dataIndex = "operate", key = "operate") private List operate; } diff --git a/src/com/engine/salary/entity/salarysob/po/SalaryApprovalRulePO.java b/src/com/engine/salary/entity/salarysob/po/SalaryApprovalRulePO.java index 1b1473aab..8683696a4 100644 --- a/src/com/engine/salary/entity/salarysob/po/SalaryApprovalRulePO.java +++ b/src/com/engine/salary/entity/salarysob/po/SalaryApprovalRulePO.java @@ -64,4 +64,7 @@ public class SalaryApprovalRulePO { //主键id集合 private Collection ids; + //薪资账套id集合 + private Collection salarySobIds; + } \ No newline at end of file diff --git a/src/com/engine/salary/mapper/salaryacct/SalaryAcctRecordMapper.xml b/src/com/engine/salary/mapper/salaryacct/SalaryAcctRecordMapper.xml index e7632d824..8131f7759 100644 --- a/src/com/engine/salary/mapper/salaryacct/SalaryAcctRecordMapper.xml +++ b/src/com/engine/salary/mapper/salaryacct/SalaryAcctRecordMapper.xml @@ -35,7 +35,8 @@ , t.delete_type , t.tenant_key , t.back_calc_status - ,t.lock_salary_item_ids + , t.lock_salary_item_ids + , t.approval_status diff --git a/src/com/engine/salary/mapper/salarysob/SalaryApprovalRuleMapper.xml b/src/com/engine/salary/mapper/salarysob/SalaryApprovalRuleMapper.xml index d64853c48..9d21ed200 100644 --- a/src/com/engine/salary/mapper/salarysob/SalaryApprovalRuleMapper.xml +++ b/src/com/engine/salary/mapper/salarysob/SalaryApprovalRuleMapper.xml @@ -81,6 +81,12 @@ #{id} + + AND salary_sob_id IN + + #{salarySobId} + + ORDER BY id DESC diff --git a/src/com/engine/salary/service/SalaryApprovalRuleService.java b/src/com/engine/salary/service/SalaryApprovalRuleService.java index 85d5e5b2c..7798a7800 100644 --- a/src/com/engine/salary/service/SalaryApprovalRuleService.java +++ b/src/com/engine/salary/service/SalaryApprovalRuleService.java @@ -104,4 +104,6 @@ public interface SalaryApprovalRuleService { void saveApprovalRequestId(ApprovalRequestSaveParam saveParam); void deleteBySalarySobIds(Collection ids); + + List listBySalarySobIds(Collection salarySobIds); } diff --git a/src/com/engine/salary/service/impl/SalaryApprovalRuleServiceImpl.java b/src/com/engine/salary/service/impl/SalaryApprovalRuleServiceImpl.java index 060bb500e..b1d00588b 100644 --- a/src/com/engine/salary/service/impl/SalaryApprovalRuleServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryApprovalRuleServiceImpl.java @@ -25,6 +25,7 @@ import org.apache.commons.collections.CollectionUtils; import weaver.hrm.User; import java.util.Collection; +import java.util.Collections; import java.util.Date; import java.util.List; import java.util.stream.Collectors; @@ -201,4 +202,12 @@ public class SalaryApprovalRuleServiceImpl extends Service implements SalaryAppr public void deleteBySalarySobIds(Collection ids) { ids.stream().forEach(this::deleteBySalarySobId); } + + @Override + public List listBySalarySobIds(Collection salarySobIds) { + if (CollectionUtils.isEmpty(salarySobIds)) { + return Collections.emptyList(); + } + return getSalaryApprovalRuleMapper().listSome(SalaryApprovalRulePO.builder().salarySobIds(salarySobIds).build()); + } } diff --git a/src/com/engine/salary/util/page/PageInfo.java b/src/com/engine/salary/util/page/PageInfo.java index da8313a78..9547fb686 100644 --- a/src/com/engine/salary/util/page/PageInfo.java +++ b/src/com/engine/salary/util/page/PageInfo.java @@ -17,6 +17,11 @@ public class PageInfo extends com.engine.salary.component.PageInfo { this.columns.addAll(columns); } + public void clearAndSetColumns(List columns) { + this.columns.clear(); + this.columns.addAll(columns); + } + List columns = new ArrayList<>(); List dataSource = new ArrayList<>(); diff --git a/src/com/engine/salary/wrapper/SalaryAcctRecordWrapper.java b/src/com/engine/salary/wrapper/SalaryAcctRecordWrapper.java index b3d7d06e3..a42f6d5cf 100644 --- a/src/com/engine/salary/wrapper/SalaryAcctRecordWrapper.java +++ b/src/com/engine/salary/wrapper/SalaryAcctRecordWrapper.java @@ -12,6 +12,7 @@ import com.engine.salary.entity.salaryacct.param.SalaryAcctRecordQueryParam; 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.SalaryApprovalRulePO; import com.engine.salary.entity.salarysob.po.SalarySobPO; import com.engine.salary.entity.taxagent.po.TaxAgentPO; import com.engine.salary.exception.SalaryRunTimeException; @@ -21,6 +22,7 @@ import com.engine.salary.util.SalaryDateUtil; import com.engine.salary.util.SalaryEntityUtil; import com.engine.salary.util.SalaryI18nUtil; import com.engine.salary.util.SalarySobUtil; +import com.engine.salary.util.page.Column; import com.engine.salary.util.page.PageInfo; import com.engine.salary.wrapper.proxy.SalaryAcctRecordWrapperProxy; import org.apache.commons.collections4.CollectionUtils; @@ -68,6 +70,10 @@ public class SalaryAcctRecordWrapper extends Service implements SalaryAcctRecord return ServiceUtil.getService(TaxAgentServiceImpl.class, user); } + private SalaryApprovalRuleService getSalaryApprovalRuleService(User user) { + return ServiceUtil.getService(SalaryApprovalRuleServiceImpl.class, user); + } + // private ComInfoCache comInfoCache; public PageInfo listPage(SalaryAcctRecordQueryParam queryParam) { @@ -87,6 +93,9 @@ public class SalaryAcctRecordWrapper extends Service implements SalaryAcctRecord // 查询薪资账套 Set salarySobIds = SalaryEntityUtil.properties(list, SalaryAcctRecordPO::getSalarySobId); List salarySobPOS = getSalarySobService(user).listByIds(salarySobIds); + // 获取这些账套中是否有开启薪资审批的 + List salaryApprovalRules = getSalaryApprovalRuleService(user).listBySalarySobIds(salarySobIds); + Optional existApproval = salaryApprovalRules.stream().filter(po -> po.getOpenApproval().equals(1)).findFirst(); // 查询薪资核算记录的创建人员的人员信息 List employeeIds = SalaryEntityUtil.properties(list, SalaryAcctRecordPO::getCreator, Collectors.toList()); List employeeComInfos = getSalaryEmployeeService(user).getEmployeeByIdsAll(employeeIds); @@ -102,6 +111,12 @@ public class SalaryAcctRecordWrapper extends Service implements SalaryAcctRecord // 转换成列表dto List salaryAcctRecordListDTOS = SalaryAcctRecordBO.convert2ListDTO(list, salarySobPOS, employeeComInfos, salaryAcctEmployeeCountDTOS, salarySendCheckResult, taxAgentPOS); dtoPage.setList(salaryAcctRecordListDTOS); + if (!existApproval.isPresent()) { + // 没有开启审批的 + List columnList = dtoPage.getColumns().stream().filter(col -> !col.getKey().equals("approvalStatus")).collect(Collectors.toList()); + dtoPage.clearAndSetColumns(columnList); + } + } // WeaTable weaTable = SalaryFormatUtil.getInstance().buildTable(SalaryAcctRecordListDTO.class, dtoPage); // 只有未归档时可以"核算"、"删除"、"归档" diff --git a/src/com/engine/salary/wrapper/SalaryApprovalWrapper.java b/src/com/engine/salary/wrapper/SalaryApprovalWrapper.java index ac2c340f2..57c4e8227 100644 --- a/src/com/engine/salary/wrapper/SalaryApprovalWrapper.java +++ b/src/com/engine/salary/wrapper/SalaryApprovalWrapper.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.component.WeaTableColumnGroup; @@ -15,8 +16,10 @@ import com.engine.salary.entity.salarysob.param.SalaryApprovalQueryParam; import com.engine.salary.entity.salarysob.po.SalarySobEmpFieldPO; import com.engine.salary.enums.salaryaccounting.LockStatusEnum; import com.engine.salary.exception.SalaryRunTimeException; +import com.engine.salary.mapper.sys.SalarySysConfMapper; import com.engine.salary.service.*; import com.engine.salary.service.impl.*; +import com.engine.salary.sys.entity.po.SalarySysConfPO; import com.engine.salary.util.SalaryEntityUtil; import com.engine.salary.util.SalaryI18nUtil; import com.engine.salary.util.page.PageInfo; @@ -24,6 +27,7 @@ import com.engine.salary.util.page.SalaryPageUtil; import com.engine.salary.util.valid.ValidUtil; import com.google.common.collect.Lists; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.math.NumberUtils; import weaver.hrm.User; import java.util.HashMap; @@ -31,6 +35,8 @@ import java.util.List; import java.util.Map; import java.util.Objects; +import static com.engine.salary.sys.constant.SalarySysConstant.SALARY_ACCT_FIXED_COLUMNS; + /** * 薪资账套的薪资审批 *

Copyright: Copyright (c) 2024

@@ -61,6 +67,10 @@ public class SalaryApprovalWrapper extends Service { return ServiceUtil.getService(SalaryItemServiceImpl.class, user); } + private SalarySysConfMapper getSalarySysConfMapper() { + return SqlProxyHandle.getProxy(SalarySysConfMapper.class); + } + /** * 薪资账套的薪资审批规则 * @@ -129,6 +139,18 @@ public class SalaryApprovalWrapper extends Service { columns.add(weaTableColumnWapper); } + // 获取固定列头数 + SalarySysConfPO salaryAcctFixedColumns = getSalarySysConfMapper().getOneByCode(SALARY_ACCT_FIXED_COLUMNS); + if (salaryAcctFixedColumns != null) { + int fixedNum = NumberUtils.isCreatable(salaryAcctFixedColumns.getConfValue()) ? Integer.valueOf(salaryAcctFixedColumns.getConfValue()) : 3; + if (fixedNum == 0) { + fixedNum = 3; + } + for (int i = 0; i < fixedNum; i++) { + columns.get(i).setFixed("left"); + } + } + Map datas = new HashMap<>(); datas.put("pageInfo", page); datas.put("columns", columns); From d7de02696dc503bc4a1d04e128efb0792527e350 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Sun, 28 Apr 2024 16:58:33 +0800 Subject: [PATCH 06/20] =?UTF-8?q?=E5=B7=A5=E8=B5=84=E5=8D=95=E5=AE=A1?= =?UTF-8?q?=E6=89=B9=EF=BC=8C=E5=A2=9E=E5=8A=A0=E8=A7=84=E5=88=99=E9=85=8D?= =?UTF-8?q?=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salaryacct/bo/SalaryAcctRecordBO.java | 17 +++++++--- .../salaryacct/SalaryAcctRecordMapper.xml | 1 + .../sys/constant/SalarySysConstant.java | 23 ++++++++++++++ .../wrapper/SalaryAcctRecordWrapper.java | 31 +++++++++++++++---- 4 files changed, 62 insertions(+), 10 deletions(-) diff --git a/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctRecordBO.java b/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctRecordBO.java index 55a69af74..ad98f4ad7 100644 --- a/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctRecordBO.java +++ b/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctRecordBO.java @@ -47,7 +47,10 @@ public class SalaryAcctRecordBO { List employeeComInfos, List salaryAcctEmployeeCountDTOS, List salarySendCheckResult, - List taxAgentPOS) { + List taxAgentPOS, + List needApprovalSalarySobIds, + boolean approvalCanFile, + boolean approvalCanReCalc) { if (CollectionUtils.isEmpty(salaryAcctRecordPOS)) { return Collections.emptyList(); } @@ -69,16 +72,22 @@ public class SalaryAcctRecordBO { if(!Objects.equals(salaryAcctRecordPO.getBackCalcStatus(),NumberUtils.INTEGER_ONE)){ btnList.add(new WeaTableOperate("删除", null, "1")); } - btnList.add(new WeaTableOperate("归档", null, "2")); + if (approvalCanFile || !needApprovalSalarySobIds.contains(salaryAcctRecordPO.getSalarySobId())) { + 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 (approvalCanReCalc || !needApprovalSalarySobIds.contains(salaryAcctRecordPO.getSalarySobId())) { + btnList.add(new WeaTableOperate("重新核算", null, "4")); + } if(salaryAcctRecordPO.getBackCalcStatus() == null || salaryAcctRecordPO.getBackCalcStatus() == NumberUtils.INTEGER_ZERO) { btnList.add(new WeaTableOperate("回算", null, "5")); } } else { btnList.add(new WeaTableOperate("查看", null, "3")); - btnList.add(new WeaTableOperate("重新核算", null, "4")); + if (approvalCanReCalc || !needApprovalSalarySobIds.contains(salaryAcctRecordPO.getSalarySobId())) { + btnList.add(new WeaTableOperate("重新核算", null, "4")); + } } return SalaryAcctRecordListDTO.builder() .id(salaryAcctRecordPO.getId()) diff --git a/src/com/engine/salary/mapper/salaryacct/SalaryAcctRecordMapper.xml b/src/com/engine/salary/mapper/salaryacct/SalaryAcctRecordMapper.xml index 8131f7759..00507de99 100644 --- a/src/com/engine/salary/mapper/salaryacct/SalaryAcctRecordMapper.xml +++ b/src/com/engine/salary/mapper/salaryacct/SalaryAcctRecordMapper.xml @@ -37,6 +37,7 @@ , t.back_calc_status , t.lock_salary_item_ids , t.approval_status + , t.approval_id diff --git a/src/com/engine/salary/sys/constant/SalarySysConstant.java b/src/com/engine/salary/sys/constant/SalarySysConstant.java index ff055b89e..02fcf2590 100644 --- a/src/com/engine/salary/sys/constant/SalarySysConstant.java +++ b/src/com/engine/salary/sys/constant/SalarySysConstant.java @@ -145,4 +145,27 @@ public class SalarySysConstant { * 我的薪资福利工资单个税扣缴义务人显示状态 */ public static final String TAX_AGENT_SHOW_STATUS = "taxAgentShowStatus"; + + + /** + * 开启核算记录审批功能 + */ + public static final String SALARY_APPROVAL_STATUS = "SALARY_APPROVAL_STATUS"; + + /** + * 开启审批的核算记录允许手动归档 + */ + public static final String APPROVAL_CAN_MANUAL_FILE_STATUS = "APPROVAL_CAN_MANUAL_FILE_STATUS"; + + + /** + * 开启审批的核算记录允许重新核算 + */ + public static final String APPROVAL_CAN_RE_CALC_STATUS = "APPROVAL_CAN_RE_CALC_STATUS"; + + + /** + * 审批流程发起后允许修改核算数据 + */ + public static final String APPROVAL_CAN_EDIT_RESULT_STATUS = "APPROVAL_CAN_EDIT_RESULT_STATUS"; } diff --git a/src/com/engine/salary/wrapper/SalaryAcctRecordWrapper.java b/src/com/engine/salary/wrapper/SalaryAcctRecordWrapper.java index a42f6d5cf..0e95a70b7 100644 --- a/src/com/engine/salary/wrapper/SalaryAcctRecordWrapper.java +++ b/src/com/engine/salary/wrapper/SalaryAcctRecordWrapper.java @@ -18,6 +18,10 @@ import com.engine.salary.entity.taxagent.po.TaxAgentPO; import com.engine.salary.exception.SalaryRunTimeException; import com.engine.salary.service.*; import com.engine.salary.service.impl.*; +import com.engine.salary.sys.constant.SalarySysConstant; +import com.engine.salary.sys.entity.po.SalarySysConfPO; +import com.engine.salary.sys.service.SalarySysConfService; +import com.engine.salary.sys.service.impl.SalarySysConfServiceImpl; import com.engine.salary.util.SalaryDateUtil; import com.engine.salary.util.SalaryEntityUtil; import com.engine.salary.util.SalaryI18nUtil; @@ -74,6 +78,10 @@ public class SalaryAcctRecordWrapper extends Service implements SalaryAcctRecord return ServiceUtil.getService(SalaryApprovalRuleServiceImpl.class, user); } + private SalarySysConfService getSalarySysConfService(User user) { + return ServiceUtil.getService(SalarySysConfServiceImpl.class, user); + } + // private ComInfoCache comInfoCache; public PageInfo listPage(SalaryAcctRecordQueryParam queryParam) { @@ -93,9 +101,14 @@ public class SalaryAcctRecordWrapper extends Service implements SalaryAcctRecord // 查询薪资账套 Set salarySobIds = SalaryEntityUtil.properties(list, SalaryAcctRecordPO::getSalarySobId); List salarySobPOS = getSalarySobService(user).listByIds(salarySobIds); - // 获取这些账套中是否有开启薪资审批的 - List salaryApprovalRules = getSalaryApprovalRuleService(user).listBySalarySobIds(salarySobIds); - Optional existApproval = salaryApprovalRules.stream().filter(po -> po.getOpenApproval().equals(1)).findFirst(); + // 规则设置中是否开启薪资审批按钮,默认关闭 + SalarySysConfPO salaryApprovalStatusConf = getSalarySysConfService(user).getOneByCode(SalarySysConstant.SALARY_APPROVAL_STATUS); + List needApprovalSalarySobIds = new ArrayList<>(); + if (salaryApprovalStatusConf != null && salaryApprovalStatusConf.getConfValue().equals("1")) { + // 开启了薪资审批,获取这开启审批的账套id + List salaryApprovalRules = getSalaryApprovalRuleService(user).listBySalarySobIds(salarySobIds); + needApprovalSalarySobIds = salaryApprovalRules.stream().filter(po -> po.getOpenApproval().equals(1)).map(SalaryApprovalRulePO::getSalarySobId).collect(Collectors.toList()); + } // 查询薪资核算记录的创建人员的人员信息 List employeeIds = SalaryEntityUtil.properties(list, SalaryAcctRecordPO::getCreator, Collectors.toList()); List employeeComInfos = getSalaryEmployeeService(user).getEmployeeByIdsAll(employeeIds); @@ -108,15 +121,21 @@ public class SalaryAcctRecordWrapper extends Service implements SalaryAcctRecord Set taxAgentIds = SalaryEntityUtil.properties(salarySobPOS, SalarySobPO::getTaxAgentId); List taxAgentPOS = getTaxAgentService(user).listByIds(taxAgentIds); + // 获取 开启审批的核算记录允许重新核算设置,默认开启 + SalarySysConfPO approvalCanReCalcFileStatusPO = getSalarySysConfService(user).getOneByCode(SalarySysConstant.APPROVAL_CAN_RE_CALC_STATUS); + boolean approvalCanReCalc = approvalCanReCalcFileStatusPO == null ? true : approvalCanReCalcFileStatusPO.getConfValue().equals("1"); + // 获取 开启审批的核算记录允许手动归档,默认开启 + SalarySysConfPO approvalCanManualFileStatusPO = getSalarySysConfService(user).getOneByCode(SalarySysConstant.APPROVAL_CAN_MANUAL_FILE_STATUS); + boolean approvalCanFile = approvalCanManualFileStatusPO == null ? true : approvalCanManualFileStatusPO.getConfValue().equals("1"); // 转换成列表dto - List salaryAcctRecordListDTOS = SalaryAcctRecordBO.convert2ListDTO(list, salarySobPOS, employeeComInfos, salaryAcctEmployeeCountDTOS, salarySendCheckResult, taxAgentPOS); + List salaryAcctRecordListDTOS = SalaryAcctRecordBO.convert2ListDTO(list, salarySobPOS, employeeComInfos, salaryAcctEmployeeCountDTOS, salarySendCheckResult, taxAgentPOS, needApprovalSalarySobIds, approvalCanFile, approvalCanReCalc); dtoPage.setList(salaryAcctRecordListDTOS); - if (!existApproval.isPresent()) { + // 规则设置中是否开启审批功能,默认关闭 + if (CollectionUtils.isEmpty(needApprovalSalarySobIds)) { // 没有开启审批的 List columnList = dtoPage.getColumns().stream().filter(col -> !col.getKey().equals("approvalStatus")).collect(Collectors.toList()); dtoPage.clearAndSetColumns(columnList); } - } // WeaTable weaTable = SalaryFormatUtil.getInstance().buildTable(SalaryAcctRecordListDTO.class, dtoPage); // 只有未归档时可以"核算"、"删除"、"归档" From 1800c02e58a50f5cc41cfaf85f681411531484cd Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Mon, 29 Apr 2024 16:08:18 +0800 Subject: [PATCH 07/20] =?UTF-8?q?=E7=9B=9B=E5=A8=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salarysob/dto/SalaryApprovalDTO.java | 2 + .../service/SalaryApprovalRuleService.java | 8 ++++ .../impl/SalaryAcctExcelServiceImpl.java | 10 +++++ .../impl/SalaryAcctResultServiceImpl.java | 10 +++++ .../impl/SalaryApprovalRuleServiceImpl.java | 37 ++++++++++++++++++- .../wrapper/SalaryAcctRecordWrapper.java | 17 +++++---- .../wrapper/SalaryAcctResultWrapper.java | 10 +++++ 7 files changed, 86 insertions(+), 8 deletions(-) diff --git a/src/com/engine/salary/entity/salarysob/dto/SalaryApprovalDTO.java b/src/com/engine/salary/entity/salarysob/dto/SalaryApprovalDTO.java index 41511ec6b..143d98fca 100644 --- a/src/com/engine/salary/entity/salarysob/dto/SalaryApprovalDTO.java +++ b/src/com/engine/salary/entity/salarysob/dto/SalaryApprovalDTO.java @@ -36,6 +36,8 @@ public class SalaryApprovalDTO { // 审批项目信息 private List approvalItemGroup; + private Boolean canEdit; + /** * 审批项目信息分组形式 */ diff --git a/src/com/engine/salary/service/SalaryApprovalRuleService.java b/src/com/engine/salary/service/SalaryApprovalRuleService.java index 7798a7800..21caa1c1d 100644 --- a/src/com/engine/salary/service/SalaryApprovalRuleService.java +++ b/src/com/engine/salary/service/SalaryApprovalRuleService.java @@ -1,5 +1,6 @@ package com.engine.salary.service; +import com.engine.salary.entity.salaryacct.po.SalaryAcctRecordPO; import com.engine.salary.entity.salaryitem.param.SalaryItemSearchParam; import com.engine.salary.entity.salaryitem.po.SalaryItemPO; import com.engine.salary.entity.salarysob.dto.SalaryApprovalDTO; @@ -97,6 +98,13 @@ public interface SalaryApprovalRuleService { SalaryApprovalDTO getApprovalInfoByRecordId(Long salaryAcctRecordId); + /** + * 获取该核算记录是否可以编辑、核算 + * @param salaryAcctRecordPO + * @return + */ + boolean getRecordIsCanEdit(SalaryAcctRecordPO salaryAcctRecordPO); + /** * 保存审批流程id * @param saveParam diff --git a/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java index c9956d1ab..5ea87c86a 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java @@ -158,6 +158,10 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc return ServiceUtil.getService(SalaryAcctResultTemplateServiceImpl.class, user); } + private SalaryApprovalRuleService getSalaryApprovalRuleService(User user) { + return ServiceUtil.getService(SalaryApprovalRuleServiceImpl.class, user); + } + @Override public XSSFWorkbook exportSalaryAcctEmployee(SalaryAcctEmployeeQueryParam queryParam) { ValidUtil.doValidator(queryParam); @@ -1011,6 +1015,12 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc if (salaryAcctRecordPO == null) { throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98747, "薪资核算记录不存在或已被删除")); } + + // 校验是否可以编辑 + boolean recordIsCanEdit = getSalaryApprovalRuleService(user).getRecordIsCanEdit(salaryAcctRecordPO); + if (StringUtils.equals("importSalaryAcctResult", importType) && !recordIsCanEdit) { + throw new SalaryRunTimeException("该核算记录已经发起审批,无法编辑或核算,请先删除审批流程"); + } // 薪资账套下的薪资项目副本 List salarySobItemPOS = getSalarySobItemService(user).listBySalarySobId(salaryAcctRecordPO.getSalarySobId()); // 薪资项目 diff --git a/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java index 246b6a6f4..e84f6b342 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java @@ -188,6 +188,10 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe return ServiceUtil.getService(TaxAgentAdminServiceImpl.class, user); } + private SalaryApprovalRuleService getSalaryApprovalRuleService(User user) { + return ServiceUtil.getService(SalaryApprovalRuleServiceImpl.class, user); + } + private SalaryCheckResultService salaryCheckResultService; @@ -593,6 +597,12 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe if (Objects.isNull(salaryAcctEmployeePO)) { throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98831, "薪资核算人员不存在或已被删除")); } + // 校验是否可以编辑 + SalaryAcctRecordPO salaryAcctRecordPO = getSalaryAcctRecordService(user).getById(salaryAcctEmployeePO.getSalaryAcctRecordId()); + boolean recordIsCanEdit = getSalaryApprovalRuleService(user).getRecordIsCanEdit(salaryAcctRecordPO); + if (!recordIsCanEdit) { + throw new SalaryRunTimeException("该核算记录已经发起审批,无法编辑或核算,请先删除审批流程"); + } // 查询原来的薪资核算结果 List salaryAcctResultPOSOld = getSalaryAcctResultMapper().listSome(SalaryAcctResultPO.builder().salaryAcctEmpId(saveParam.getSalaryAcctEmpId()).build()); // 解密 diff --git a/src/com/engine/salary/service/impl/SalaryApprovalRuleServiceImpl.java b/src/com/engine/salary/service/impl/SalaryApprovalRuleServiceImpl.java index b1d00588b..648a08b79 100644 --- a/src/com/engine/salary/service/impl/SalaryApprovalRuleServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryApprovalRuleServiceImpl.java @@ -17,11 +17,17 @@ import com.engine.salary.exception.SalaryRunTimeException; import com.engine.salary.mapper.salaryacct.SalaryAcctRecordMapper; import com.engine.salary.mapper.salarysob.SalaryApprovalRuleMapper; import com.engine.salary.service.*; +import com.engine.salary.sys.constant.SalarySysConstant; +import com.engine.salary.sys.entity.po.SalarySysConfPO; +import com.engine.salary.sys.service.SalarySysConfService; +import com.engine.salary.sys.service.impl.SalarySysConfServiceImpl; import com.engine.salary.util.JsonUtil; import com.engine.salary.util.db.IdGenerator; import com.engine.salary.util.db.MapperProxyFactory; import com.engine.salary.util.valid.ValidUtil; import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import weaver.conn.RecordSet; import weaver.hrm.User; import java.util.Collection; @@ -62,6 +68,10 @@ public class SalaryApprovalRuleServiceImpl extends Service implements SalaryAppr return ServiceUtil.getService(SalaryAcctRecordServiceImpl.class, user); } + private SalarySysConfService getSalarySysConfService(User user) { + return ServiceUtil.getService(SalarySysConfServiceImpl.class, user); + } + @Override public List listAll() { return getSalaryApprovalRuleMapper().listAll(); @@ -183,7 +193,32 @@ public class SalaryApprovalRuleServiceImpl extends Service implements SalaryAppr SalaryApprovalRulePO approvalRulePO = getBySalarySobId(acctRecordPO.getSalarySobId()); List salaryItemList = getSalaryItemService(user).listAll(); - return SalaryApprovalBO.convert2DTO(approvalRulePO, salaryItemList); + SalaryApprovalDTO salaryApprovalDTO = SalaryApprovalBO.convert2DTO(approvalRulePO, salaryItemList); + // 查询是否可以核算、编辑(默认开启) + salaryApprovalDTO.setCanEdit(getRecordIsCanEdit(acctRecordPO)); + return salaryApprovalDTO; + } + + public boolean getRecordIsCanEdit(SalaryAcctRecordPO acctRecordPO) { + // 审批总开关,默认关闭 + SalarySysConfPO approvalStatus = getSalarySysConfService(user).getOneByCode(SalarySysConstant.SALARY_APPROVAL_STATUS); + if (approvalStatus == null || approvalStatus.getConfValue().equals("0")) { + return true; + } + // 查询是否可以核算、编辑(默认开启) + SalarySysConfPO canEdit = getSalarySysConfService(user).getOneByCode(SalarySysConstant.APPROVAL_CAN_EDIT_RESULT_STATUS); + if (canEdit == null || canEdit.getConfValue().equals("1")) { + return true; + } else { + // 发起审批后不能核损,判断流程id是否存在 + if (StringUtils.isBlank(acctRecordPO.getApprovalId())) { + return true; + } else { + RecordSet rs = new RecordSet(); + rs.execute("SELECT * FROM workflow_requestbase where REQUESTID =" + acctRecordPO.getApprovalId()); + return !rs.next(); + } + } } @Override diff --git a/src/com/engine/salary/wrapper/SalaryAcctRecordWrapper.java b/src/com/engine/salary/wrapper/SalaryAcctRecordWrapper.java index 0e95a70b7..7b4780c4a 100644 --- a/src/com/engine/salary/wrapper/SalaryAcctRecordWrapper.java +++ b/src/com/engine/salary/wrapper/SalaryAcctRecordWrapper.java @@ -104,10 +104,20 @@ public class SalaryAcctRecordWrapper extends Service implements SalaryAcctRecord // 规则设置中是否开启薪资审批按钮,默认关闭 SalarySysConfPO salaryApprovalStatusConf = getSalarySysConfService(user).getOneByCode(SalarySysConstant.SALARY_APPROVAL_STATUS); List needApprovalSalarySobIds = new ArrayList<>(); + // 默认可以重新核算、可以手动归档 + boolean approvalCanReCalc = true; + boolean approvalCanFile = true; if (salaryApprovalStatusConf != null && salaryApprovalStatusConf.getConfValue().equals("1")) { // 开启了薪资审批,获取这开启审批的账套id List salaryApprovalRules = getSalaryApprovalRuleService(user).listBySalarySobIds(salarySobIds); needApprovalSalarySobIds = salaryApprovalRules.stream().filter(po -> po.getOpenApproval().equals(1)).map(SalaryApprovalRulePO::getSalarySobId).collect(Collectors.toList()); + + // 获取 开启审批的核算记录允许重新核算设置,默认开启 + SalarySysConfPO approvalCanReCalcFileStatusPO = getSalarySysConfService(user).getOneByCode(SalarySysConstant.APPROVAL_CAN_RE_CALC_STATUS); + approvalCanReCalc = approvalCanReCalcFileStatusPO == null ? true : approvalCanReCalcFileStatusPO.getConfValue().equals("1"); + // 获取 开启审批的核算记录允许手动归档,默认开启 + SalarySysConfPO approvalCanManualFileStatusPO = getSalarySysConfService(user).getOneByCode(SalarySysConstant.APPROVAL_CAN_MANUAL_FILE_STATUS); + approvalCanFile = approvalCanManualFileStatusPO == null ? true : approvalCanManualFileStatusPO.getConfValue().equals("1"); } // 查询薪资核算记录的创建人员的人员信息 List employeeIds = SalaryEntityUtil.properties(list, SalaryAcctRecordPO::getCreator, Collectors.toList()); @@ -120,13 +130,6 @@ public class SalaryAcctRecordWrapper extends Service implements SalaryAcctRecord Set taxAgentIds = SalaryEntityUtil.properties(salarySobPOS, SalarySobPO::getTaxAgentId); List taxAgentPOS = getTaxAgentService(user).listByIds(taxAgentIds); - - // 获取 开启审批的核算记录允许重新核算设置,默认开启 - SalarySysConfPO approvalCanReCalcFileStatusPO = getSalarySysConfService(user).getOneByCode(SalarySysConstant.APPROVAL_CAN_RE_CALC_STATUS); - boolean approvalCanReCalc = approvalCanReCalcFileStatusPO == null ? true : approvalCanReCalcFileStatusPO.getConfValue().equals("1"); - // 获取 开启审批的核算记录允许手动归档,默认开启 - SalarySysConfPO approvalCanManualFileStatusPO = getSalarySysConfService(user).getOneByCode(SalarySysConstant.APPROVAL_CAN_MANUAL_FILE_STATUS); - boolean approvalCanFile = approvalCanManualFileStatusPO == null ? true : approvalCanManualFileStatusPO.getConfValue().equals("1"); // 转换成列表dto List salaryAcctRecordListDTOS = SalaryAcctRecordBO.convert2ListDTO(list, salarySobPOS, employeeComInfos, salaryAcctEmployeeCountDTOS, salarySendCheckResult, taxAgentPOS, needApprovalSalarySobIds, approvalCanFile, approvalCanReCalc); dtoPage.setList(salaryAcctRecordListDTOS); diff --git a/src/com/engine/salary/wrapper/SalaryAcctResultWrapper.java b/src/com/engine/salary/wrapper/SalaryAcctResultWrapper.java index cae703b1c..55bb97092 100644 --- a/src/com/engine/salary/wrapper/SalaryAcctResultWrapper.java +++ b/src/com/engine/salary/wrapper/SalaryAcctResultWrapper.java @@ -75,6 +75,10 @@ public class SalaryAcctResultWrapper extends Service implements SalaryAcctResult return ServiceUtil.getService(SalarySysConfServiceImpl.class, user); } + private SalaryApprovalRuleService getSalaryApprovalRuleService(User user) { + return ServiceUtil.getService(SalaryApprovalRuleServiceImpl.class, user); + } + /** * 薪资核算列表 * @@ -211,6 +215,12 @@ public class SalaryAcctResultWrapper extends Service implements SalaryAcctResult List emps = getSalaryEmployeeService(user).listAllForReport(); calculateParam.setEmps(SalaryEntityUtil.convert2Map(emps, DataCollectionEmployee::getEmployeeId)); + // 校验是否可以编辑 + SalaryAcctRecordPO salaryAcctRecordPO = getSalaryAcctRecordService(user).getById(calculateParam.getSalaryAcctRecordId()); + boolean recordIsCanEdit = getSalaryApprovalRuleService(user).getRecordIsCanEdit(salaryAcctRecordPO); + if (!recordIsCanEdit) { + throw new SalaryRunTimeException("该核算记录已经发起审批,无法编辑或核算,请先删除审批流程"); + } //当前登陆人员 DataCollectionEmployee simpleEmployee = new DataCollectionEmployee(); simpleEmployee.setEmployeeId((long) user.getUID()); From d3050117d1090052fd60e2508b3071735786706d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Tue, 15 Oct 2024 14:24:37 +0800 Subject: [PATCH 08/20] =?UTF-8?q?=E6=94=AF=E6=8C=81=E6=AC=A1=E8=B4=A6?= =?UTF-8?q?=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DataCollectionEmployee.java | 3 ++ .../salary/mapper/InsuranceExportMapper.xml | 18 +++++----- .../mapper/archive/SalaryArchiveMapper.xml | 6 ++-- .../archive/SalaryArchiveTaxAgentMapper.xml | 6 ++-- .../datacollection/AddUpDeductionMapper.xml | 12 +++---- .../datacollection/AddUpSituationMapper.xml | 8 ++--- .../datacollection/AttendQuoteDataMapper.xml | 6 ++-- .../mapper/datacollection/EmployMapper.xml | 34 +++++++++++++------ .../datacollection/OtherDeductionMapper.xml | 4 +-- .../SpecialAddDeductionMapper.xml | 6 ++-- .../datacollection/VariableArchiveMapper.xml | 6 ++-- .../salaryacct/SalaryAcctEmployeeMapper.xml | 9 +++-- .../mapper/salarysob/SalarySobRangeMapper.xml | 2 +- .../InsuranceAccountDetailMapper.xml | 10 +++--- .../mapper/siarchives/SocialSchemeMapper.xml | 1 - 15 files changed, 73 insertions(+), 58 deletions(-) diff --git a/src/com/engine/salary/entity/datacollection/DataCollectionEmployee.java b/src/com/engine/salary/entity/datacollection/DataCollectionEmployee.java index a4ce08bb3..38eb1c8c7 100644 --- a/src/com/engine/salary/entity/datacollection/DataCollectionEmployee.java +++ b/src/com/engine/salary/entity/datacollection/DataCollectionEmployee.java @@ -114,6 +114,9 @@ public class DataCollectionEmployee { @SalaryFormulaVar(defaultLabel = "证件号码", labelId = 98624, dataType = "string") private String idNo; + //主次账号 0/null:主账号 1:次账号 + private Integer accountType; + //是否是系统管理员 private Boolean isAdmin; diff --git a/src/com/engine/salary/mapper/InsuranceExportMapper.xml b/src/com/engine/salary/mapper/InsuranceExportMapper.xml index dbe86d9f6..0803f7892 100644 --- a/src/com/engine/salary/mapper/InsuranceExportMapper.xml +++ b/src/com/engine/salary/mapper/InsuranceExportMapper.xml @@ -21,7 +21,7 @@ LEFT JOIN hrmdepartment d ON d.id = e.departmentid LEFT JOIN hrmsubcompany c ON c.id = e.subcompanyid1 where e.status not in (7) - and (e.accounttype is null or e.accounttype = 0) + ORDER BY ${param.orderRule.orderRule} ${param.orderRule.ascOrDesc} @@ -47,7 +47,7 @@ LEFT JOIN hrmdepartment d ON d.id = e.departmentid LEFT JOIN hrmsubcompany c ON c.id = e.subcompanyid1 where e.status not in (7) - and (e.accounttype is null or e.accounttype = 0) + ORDER BY ${param.orderRule.orderRule} ${param.orderRule.ascOrDesc} @@ -73,7 +73,7 @@ LEFT JOIN hrmdepartment d ON d.id = e.departmentid LEFT JOIN hrmsubcompany c ON c.id = e.subcompanyid1 where e.status not in (7) - and (e.accounttype is null or e.accounttype = 0) + ORDER BY ${param.orderRule.orderRule} ${param.orderRule.ascOrDesc} @@ -90,7 +90,7 @@ LEFT JOIN hrmresource e ON e.ID = a.employee_id LEFT JOIN hrmdepartment d ON d.id = e.departmentid where e.status not in (7) - and (e.accounttype is null or e.accounttype = 0) + @@ -139,7 +139,7 @@ LEFT JOIN hrmdepartment d ON d.id = e.departmentid LEFT JOIN hrmsubcompany c ON c.id = e.subcompanyid1 where e.status not in (7) - and (e.accounttype is null or e.accounttype = 0) + ORDER BY ${param.orderRule.orderRule} ${param.orderRule.ascOrDesc} @@ -166,7 +166,7 @@ LEFT JOIN hrmdepartment d ON d.id = e.departmentid LEFT JOIN hrmsubcompany c ON c.id = e.subcompanyid1 where e.status not in (7) - and (e.accounttype is null or e.accounttype = 0) + ORDER BY ${param.orderRule.orderRule} ${param.orderRule.ascOrDesc} @@ -193,7 +193,7 @@ LEFT JOIN hrmdepartment d ON d.id = e.departmentid LEFT JOIN hrmsubcompany c ON c.id = e.subcompanyid1 where e.status not in (7) - and (e.accounttype is null or e.accounttype = 0) + ORDER BY ${param.orderRule.orderRule} ${param.orderRule.ascOrDesc} diff --git a/src/com/engine/salary/mapper/archive/SalaryArchiveMapper.xml b/src/com/engine/salary/mapper/archive/SalaryArchiveMapper.xml index 259cb45d1..212354488 100644 --- a/src/com/engine/salary/mapper/archive/SalaryArchiveMapper.xml +++ b/src/com/engine/salary/mapper/archive/SalaryArchiveMapper.xml @@ -118,7 +118,7 @@ WHERE t.delete_type = 0 and t.employee_type is null and e.status not in (7) - and (e.accounttype is null or e.accounttype = 0) + AND t.id IN @@ -222,7 +222,7 @@ WHERE t.delete_type = 0 and t.employee_type is null and e.status not in (7) - and (e.accounttype is null or e.accounttype = 0) + AND t.id IN @@ -323,7 +323,7 @@ WHERE t.delete_type = 0 and t.employee_type is null and e.status not in (7) - and (e.accounttype is null or e.accounttype = 0) + AND t.id IN diff --git a/src/com/engine/salary/mapper/archive/SalaryArchiveTaxAgentMapper.xml b/src/com/engine/salary/mapper/archive/SalaryArchiveTaxAgentMapper.xml index 900888f9c..3639039e2 100644 --- a/src/com/engine/salary/mapper/archive/SalaryArchiveTaxAgentMapper.xml +++ b/src/com/engine/salary/mapper/archive/SalaryArchiveTaxAgentMapper.xml @@ -556,7 +556,7 @@ WHERE t1.delete_type = 0 AND e.status != '7' - and (e.accounttype is null or e.accounttype = 0) + AND ( @@ -580,7 +580,7 @@ WHERE t1.delete_type = 0 AND e.status != '7' - and (e.accounttype is null or e.accounttype = 0) + AND ( e.lastname like '%'||#{param.keyword}||'%' @@ -602,7 +602,7 @@ WHERE t1.delete_type = 0 AND e.status != '7' - and (e.accounttype is null or e.accounttype = 0) + AND ( e.lastname like '%'+#{param.keyword}+'%' diff --git a/src/com/engine/salary/mapper/datacollection/AddUpDeductionMapper.xml b/src/com/engine/salary/mapper/datacollection/AddUpDeductionMapper.xml index ebd2b723f..5393e4363 100644 --- a/src/com/engine/salary/mapper/datacollection/AddUpDeductionMapper.xml +++ b/src/com/engine/salary/mapper/datacollection/AddUpDeductionMapper.xml @@ -96,7 +96,7 @@ from hrmresource e left join hrmdepartment d on e.departmentid = d.id where e.status not in (7) - and (e.accounttype is null or e.accounttype = 0) + @@ -326,7 +326,7 @@ WHERE t1.delete_type = 0 AND t2.delete_type = 0 AND e.status not in (7) - and (e.accounttype is null or e.accounttype = 0) + @@ -347,7 +347,7 @@ WHERE t1.delete_type = 0 AND t2.delete_type = 0 AND e.status not in (7) - and (e.accounttype is null or e.accounttype = 0) + @@ -367,7 +367,7 @@ WHERE t1.delete_type = 0 AND t2.delete_type = 0 AND e.status not in (7) - and (e.accounttype is null or e.accounttype = 0) + @@ -649,7 +649,7 @@ WHERE t1.delete_type = 0 AND t2.delete_type = 0 AND e.status not in (7) - and (e.accounttype is null or e.accounttype = 0) + ORDER BY t1.declare_month DESC @@ -664,7 +664,7 @@ WHERE t1.delete_type = 0 AND t2.delete_type = 0 AND e.status not in (7) - and (e.accounttype is null or e.accounttype = 0) + and tax_agent_id in diff --git a/src/com/engine/salary/mapper/datacollection/AddUpSituationMapper.xml b/src/com/engine/salary/mapper/datacollection/AddUpSituationMapper.xml index 1a4e58158..2b5c45519 100644 --- a/src/com/engine/salary/mapper/datacollection/AddUpSituationMapper.xml +++ b/src/com/engine/salary/mapper/datacollection/AddUpSituationMapper.xml @@ -336,7 +336,7 @@ t1.delete_type = 0 AND t2.delete_type = 0 AND e.status not in (7) - and (e.accounttype is null or e.accounttype = 0) + @@ -360,7 +360,7 @@ t1.delete_type = 0 AND t2.delete_type = 0 AND e.status not in (7) - and (e.accounttype is null or e.accounttype = 0) + @@ -384,7 +384,7 @@ t1.delete_type = 0 AND t2.delete_type = 0 AND e.status not in (7) - and (e.accounttype is null or e.accounttype = 0) + @@ -405,7 +405,7 @@ t1.delete_type = 0 AND t2.delete_type = 0 AND e.status not in (7) - and (e.accounttype is null or e.accounttype = 0) + ORDER BY t1.tax_year_month DESC diff --git a/src/com/engine/salary/mapper/datacollection/AttendQuoteDataMapper.xml b/src/com/engine/salary/mapper/datacollection/AttendQuoteDataMapper.xml index 234d990b3..ca51de22a 100644 --- a/src/com/engine/salary/mapper/datacollection/AttendQuoteDataMapper.xml +++ b/src/com/engine/salary/mapper/datacollection/AttendQuoteDataMapper.xml @@ -261,7 +261,7 @@ WHERE t1.delete_type = 0 AND e.status not in (7) - and (e.accounttype is null or e.accounttype = 0) + @@ -279,7 +279,7 @@ WHERE t1.delete_type = 0 AND e.status not in (7) - and (e.accounttype is null or e.accounttype = 0) + @@ -297,7 +297,7 @@ WHERE t1.delete_type = 0 AND e.status not in (7) - and (e.accounttype is null or e.accounttype = 0) + diff --git a/src/com/engine/salary/mapper/datacollection/EmployMapper.xml b/src/com/engine/salary/mapper/datacollection/EmployMapper.xml index ae903a6a7..149522857 100644 --- a/src/com/engine/salary/mapper/datacollection/EmployMapper.xml +++ b/src/com/engine/salary/mapper/datacollection/EmployMapper.xml @@ -10,11 +10,12 @@ e.mobile, e.workcode, e.certificatenum as idNo, + e.accounttype as accountType, 'false' as extEmp from hrmresource e left join hrmdepartment d on e.departmentid = d.id where e.status not in (7) - and (e.accounttype is null or e.accounttype = 0) + @@ -278,6 +286,7 @@ e.certificatenum as idNo, e.companystartdate as companystartdate, e.mobile as mobile, + e.accounttype as accountType, e.subcompanyid1 as subcompanyid, d.departmentname as departmentName, d.id as departmentId, @@ -287,7 +296,6 @@ left join hrmdepartment d on e.departmentid = d.id left join hrmjobtitles c on e.jobtitle = c.id where e.status not in (7) - and (e.accounttype is null or e.accounttype = 0) @@ -319,6 +328,7 @@ e.mobile as mobile, e.departmentid as departmentId, e.subcompanyid1 as subcompanyid, + e.accounttype as accountType, e.costcenterid as costcenterId, e.locationid as locationId, e.jobtitle as jobtitleId, @@ -327,7 +337,7 @@ from hrmresource e left join hrmdepartment d on e.departmentid = d.id where e.status not in (7) - and (e.accounttype is null or e.accounttype = 0) + @@ -480,6 +490,7 @@ e.workcode as workcode, e.companystartdate as companystartdate, e.mobile as mobile, + e.accounttype as accountType, e.enddate as dismissdate from hrmresource e where e.status in (4,5,6) @@ -557,11 +568,12 @@ c.jobtitlename as jobtitleName, c.id as jobtitleId, e.companystartdate as companystartdate, + e.accounttype as accountType, e.mobile as mobile from hrmresource e left join hrmdepartment d on e.departmentid = d.id left join hrmjobtitles c on e.jobtitle = c.id - WHERE e.status not in (7) and (e.accounttype is null or e.accounttype = 0) + WHERE e.status not in (7) AND e.subcompanyid1 IN @@ -580,6 +592,7 @@ resultType="com.engine.salary.entity.datacollection.DataCollectionEmployee"> select e.RESOURCEID as employeeId, e.SUBCOMPANYID as subcompanyid, + h.accounttype as accountType, e.DEPARTMENTID as departmentId from hrmresourcevirtual e left join hrmresource h on e.RESOURCEID=h.id @@ -597,6 +610,7 @@ select e.RESOURCEID as employeeId, e.SUBCOMPANYID as subcompanyid, + h.accounttype as accountType, e.DEPARTMENTID as departmentId from hrmresourcevirtual e left join hrmresource h on e.RESOURCEID=h.id diff --git a/src/com/engine/salary/mapper/datacollection/OtherDeductionMapper.xml b/src/com/engine/salary/mapper/datacollection/OtherDeductionMapper.xml index 0afae02a2..f21fed4a1 100644 --- a/src/com/engine/salary/mapper/datacollection/OtherDeductionMapper.xml +++ b/src/com/engine/salary/mapper/datacollection/OtherDeductionMapper.xml @@ -280,7 +280,7 @@ WHERE t1.delete_type = 0 AND t2.delete_type = 0 AND e.status not in (7) - and (e.accounttype is null or e.accounttype = 0) + @@ -299,7 +299,7 @@ WHERE t1.delete_type = 0 AND t2.delete_type = 0 AND e.status not in (7) - and (e.accounttype is null or e.accounttype = 0) + ORDER BY t1.declare_month DESC diff --git a/src/com/engine/salary/mapper/datacollection/SpecialAddDeductionMapper.xml b/src/com/engine/salary/mapper/datacollection/SpecialAddDeductionMapper.xml index ce701f1d9..442fe485e 100644 --- a/src/com/engine/salary/mapper/datacollection/SpecialAddDeductionMapper.xml +++ b/src/com/engine/salary/mapper/datacollection/SpecialAddDeductionMapper.xml @@ -619,7 +619,7 @@ WHERE t1.delete_type = 0 AND t2.delete_type = 0 AND e.status not in (7) - and (e.accounttype is null or e.accounttype = 0) + ORDER BY t1.create_time desc @@ -633,7 +633,7 @@ WHERE t1.delete_type = 0 AND t2.delete_type = 0 AND e.status not in (7) - and (e.accounttype is null or e.accounttype = 0) + AND t1.tax_agent_id IN @@ -653,7 +653,7 @@ WHERE t1.delete_type = 0 AND t2.delete_type = 0 AND e.status not in (7) - and (e.accounttype is null or e.accounttype = 0) + order by ${param.orderRule.orderRule} ${param.orderRule.ascOrDesc} diff --git a/src/com/engine/salary/mapper/datacollection/VariableArchiveMapper.xml b/src/com/engine/salary/mapper/datacollection/VariableArchiveMapper.xml index c6352fa2f..9462ea707 100644 --- a/src/com/engine/salary/mapper/datacollection/VariableArchiveMapper.xml +++ b/src/com/engine/salary/mapper/datacollection/VariableArchiveMapper.xml @@ -116,7 +116,7 @@ LEFT JOIN hrsa_tax_agent a ON t.tax_agent_id = a.id WHERE t.delete_type = 0 and e.status not in (7) - and (e.accounttype is null or e.accounttype = 0) + AND t.tax_agent_id IN @@ -173,7 +173,7 @@ LEFT JOIN hrsa_tax_agent a ON t.tax_agent_id = a.id WHERE t.delete_type = 0 and e.status not in (7) - and (e.accounttype is null or e.accounttype = 0) + AND t.tax_agent_id IN @@ -230,7 +230,7 @@ LEFT JOIN hrsa_tax_agent a ON t.tax_agent_id = a.id WHERE t.delete_type = 0 and e.status not in (7) - and (e.accounttype is null or e.accounttype = 0) + AND t.tax_agent_id IN diff --git a/src/com/engine/salary/mapper/salaryacct/SalaryAcctEmployeeMapper.xml b/src/com/engine/salary/mapper/salaryacct/SalaryAcctEmployeeMapper.xml index 86781c4d3..48483a038 100644 --- a/src/com/engine/salary/mapper/salaryacct/SalaryAcctEmployeeMapper.xml +++ b/src/com/engine/salary/mapper/salaryacct/SalaryAcctEmployeeMapper.xml @@ -262,7 +262,6 @@ AND employee_id IN ( SELECT id FROM hrmresource em WHERE em.status not in (7) - and (em.accounttype is null or em.accounttype = 0) AND em.lastname LIKE '%'||#{param.employeeName}||'%' @@ -343,7 +342,7 @@ AND employee_id IN ( SELECT id FROM hrmresource em WHERE em.status not in (7) - and (em.accounttype is null or em.accounttype = 0) + AND em.lastname LIKE '%'+#{param.employeeName}+'%' @@ -616,7 +615,7 @@ AND t.employee_id IN ( SELECT id FROM hrmresource em WHERE em.status not in (7) - and (em.accounttype is null or em.accounttype = 0) + AND em.lastname LIKE CONCAT('%',#{param.employeeName},'%') @@ -692,7 +691,7 @@ AND t.employee_id IN ( SELECT id FROM hrmresource em WHERE em.status not in (7) - and (em.accounttype is null or em.accounttype = 0) + AND em.lastname LIKE '%'||#{param.employeeName}||'%' @@ -766,7 +765,7 @@ AND t.employee_id IN ( SELECT id FROM hrmresource em WHERE em.status not in (7) - and (em.accounttype is null or em.accounttype = 0) + AND em.lastname LIKE '%'+#{param.employeeName}+'%' diff --git a/src/com/engine/salary/mapper/salarysob/SalarySobRangeMapper.xml b/src/com/engine/salary/mapper/salarysob/SalarySobRangeMapper.xml index d46406ff5..e05bdf60f 100644 --- a/src/com/engine/salary/mapper/salarysob/SalarySobRangeMapper.xml +++ b/src/com/engine/salary/mapper/salarysob/SalarySobRangeMapper.xml @@ -434,7 +434,7 @@