From 11304bebed0aaa477752536f6cef44d4b4b2532f Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Wed, 24 Apr 2024 15:55:41 +0800 Subject: [PATCH 01/42] =?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/42] =?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/42] =?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/42] =?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/42] =?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/42] =?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/42] =?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/42] =?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 @@ - SELECT - - FROM hrsa_page_link t - WHERE delete_type = 0 - AND employee_id = #{employeeId} - AND page = #{page} - \ No newline at end of file diff --git a/src/com/engine/salary/mapper/setting/PageListTemplateMapper.xml b/src/com/engine/salary/mapper/setting/PageListTemplateMapper.xml index 3ba245afd..02d015d13 100644 --- a/src/com/engine/salary/mapper/setting/PageListTemplateMapper.xml +++ b/src/com/engine/salary/mapper/setting/PageListTemplateMapper.xml @@ -11,6 +11,7 @@ + @@ -28,6 +29,7 @@ , t.page , t.setting , t.shared_type + , t.system_type , t.tenant_key , t.update_time @@ -78,6 +80,9 @@ AND shared_type = #{sharedType} + + + AND system_type = #{systemType} AND tenant_key = #{tenantKey} @@ -127,6 +132,9 @@ shared_type, + + system_type, + tenant_key, @@ -162,6 +170,9 @@ #{sharedType}, + + #{systemType}, + #{tenantKey}, @@ -183,6 +194,7 @@ page=#{page}, setting=#{setting, jdbcType=ARRAY, typeHandler=com.engine.salary.handle.SalaryListTypeHandler}, shared_type=#{sharedType}, + system_type=#{systemType}, tenant_key=#{tenantKey}, update_time=#{updateTime}, @@ -218,6 +230,9 @@ shared_type=#{sharedType}, + + system_type=#{systemType}, + tenant_key=#{tenantKey}, diff --git a/src/com/engine/salary/report/wrapper/SalaryStatisticsEmployeeWrapper.java b/src/com/engine/salary/report/wrapper/SalaryStatisticsEmployeeWrapper.java index 4f6a71d93..746647841 100644 --- a/src/com/engine/salary/report/wrapper/SalaryStatisticsEmployeeWrapper.java +++ b/src/com/engine/salary/report/wrapper/SalaryStatisticsEmployeeWrapper.java @@ -10,8 +10,6 @@ import com.engine.salary.component.WeaTableColumnGroup; import com.engine.salary.entity.salaryacct.po.SalaryAcctEmployeePO; import com.engine.salary.entity.salaryarchive.dto.SalaryArchiveListDTO; import com.engine.salary.entity.salaryitem.po.SalaryItemPO; -import com.engine.salary.entity.setting.dto.PageListTemplateDTO; -import com.engine.salary.entity.setting.param.PageListSettingQueryParam; import com.engine.salary.enums.salaryitem.SalaryDataTypeEnum; import com.engine.salary.report.common.constant.SalaryConstant; import com.engine.salary.report.entity.bo.SalaryStatisticsReportBO; @@ -184,15 +182,7 @@ public class SalaryStatisticsEmployeeWrapper extends Service { pageInfo.setList(records); pageInfo.setTotal(salaryAcctEmployeePageInfo.getTotal()); - List weaTableColumns; - //显示方案1,显示模板 - if (templateShow) { - weaTableColumns = getSettingService(user).getPageListColumns(SALARY_DETAILS_REPORT.getValue()); - } else { - PageListSettingQueryParam param = PageListSettingQueryParam.builder().page(SALARY_DETAILS_REPORT.getValue()).defaultSetting(0).build(); - PageListTemplateDTO pageListSetting = getSettingService(user).getPageListSetting(param); - weaTableColumns = pageListSetting.getChecked(); - } + List weaTableColumns = getSettingService(user).getPageListColumns(SALARY_DETAILS_REPORT.getValue()); // 结果 resultMap.put("columns", weaTableColumns); diff --git a/src/com/engine/salary/service/SettingService.java b/src/com/engine/salary/service/SettingService.java index 3bc47a569..7bf701910 100644 --- a/src/com/engine/salary/service/SettingService.java +++ b/src/com/engine/salary/service/SettingService.java @@ -8,18 +8,45 @@ import com.engine.salary.entity.setting.po.PageListTemplatePO; import java.util.List; public interface SettingService { + + @Deprecated void savePageListSetting(PageListSettingSaveParam pageListSettingSaveParam); - PageListTemplateDTO getPageListSetting(PageListSettingQueryParam param); + /** + * 获取原有显示列定制配置 + * @param param + * @return + */ + PageListTemplateDTO getDefaultPageListSetting(PageListSettingQueryParam param); + @Deprecated void resetPageListSetting(PageListSettingResetParam param); + /** + * 获取指定模板配置或者指定页面默认配置 + * @param param + * @return + */ PageListTemplateDTO getPageListTemplate(PageListTemplateQueryParam param); + /** + * 获取可选模板列表 + * @param queryParam + * @return + */ List getPageListTemplates(PageListTemplateQueryParam queryParam); + /** + * 保存模板 + * @param param + * @return + */ PageListTemplatePO savePageListTemplate(PageListTemplateSaveParam param); + /** + * 更换模板 + * @param param + */ void changePageListTemplate(PageListTemplateChangeParam param); List getPageListColumns(String page); diff --git a/src/com/engine/salary/service/impl/SettingServiceImpl.java b/src/com/engine/salary/service/impl/SettingServiceImpl.java index 203d36621..eda0c7b1f 100644 --- a/src/com/engine/salary/service/impl/SettingServiceImpl.java +++ b/src/com/engine/salary/service/impl/SettingServiceImpl.java @@ -14,6 +14,8 @@ import com.engine.salary.entity.setting.po.PageLinkPO; import com.engine.salary.entity.setting.po.PageListSettingPO; import com.engine.salary.entity.setting.po.PageListTemplatePO; import com.engine.salary.entity.taxagent.po.TaxAgentPO; +import com.engine.salary.enums.SalaryOnOffEnum; +import com.engine.salary.enums.common.SharedTypeEnum; import com.engine.salary.exception.SalaryRunTimeException; import com.engine.salary.mapper.setting.PageLinkMapper; import com.engine.salary.mapper.setting.PageListSettingMapper; @@ -92,7 +94,7 @@ public class SettingServiceImpl extends Service implements SettingService { } @Override - public PageListTemplateDTO getPageListSetting(PageListSettingQueryParam param) { + public PageListTemplateDTO getDefaultPageListSetting(PageListSettingQueryParam param) { String page = param.getPage(); if (SALARY_DETAILS_REPORT.getValue().equals(page)) { List columns = new ArrayList<>(); @@ -132,23 +134,13 @@ public class SettingServiceImpl extends Service implements SettingService { columns.addAll(collect); - Integer defaultSetting = param.getDefaultSetting(); Map columnMap = SalaryEntityUtil.convert2Map(columns, WeaTableColumn::getColumn); - List checkedList = new ArrayList<>(); - //是否查询默认设置 - PageListSettingPO pageListSettingPO; - if (defaultSetting == 0) { - pageListSettingPO = getPageListSettingMapper().getByPage(page, 0, (long) user.getUID()); - //查不到个人查默认 - if (pageListSettingPO == null) { - pageListSettingPO = getPageListSettingMapper().getByPage(page, 1, null); - } - } else { - pageListSettingPO = getPageListSettingMapper().getByPage(page, 1, null); - } + //默认设置 + PageListSettingPO pageListSettingPO = getPageListSettingMapper().getByPage(page, 1, null); //查询选中的项目 + List checkedList = new ArrayList<>(); if (pageListSettingPO != null) { checkedList = Optional.ofNullable(pageListSettingPO.getSetting()).orElse(new ArrayList<>()).stream().map(s -> columnMap.getOrDefault(s, new WeaTableColumn())).collect(Collectors.toList()); } else { @@ -177,7 +169,6 @@ public class SettingServiceImpl extends Service implements SettingService { @Override public PageListTemplateDTO getPageListTemplate(PageListTemplateQueryParam param) { String page = param.getPage(); - Long id = param.getId(); if (SALARY_DETAILS_REPORT.getValue().equals(page)) { List columns = new ArrayList<>(); columns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(87614, "薪资所属月"), "salaryMonth")); @@ -196,7 +187,7 @@ public class SettingServiceImpl extends Service implements SettingService { } List salaryItemList = getSalaryItemService(user).listAll(); - List collect = salaryItemList.stream().filter(po -> { + List salaryItemCols = salaryItemList.stream().filter(po -> { String name = param.getName(); if (StrUtil.isNotEmpty(name)) { return po.getName() != null && po.getName().contains(name); @@ -214,15 +205,25 @@ public class SettingServiceImpl extends Service implements SettingService { } }).map(item -> new WeaTableColumn("100px", item.getName(), item.getId() + SalaryConstant.DYNAMIC_SUFFIX)).collect(Collectors.toList()); - columns.addAll(collect); + columns.addAll(salaryItemCols); Map columnMap = SalaryEntityUtil.convert2Map(columns, WeaTableColumn::getColumn); - List checkedList = new ArrayList<>(); + List checkedList = columns; + Long id = param.getId(); if (id != null) { + //编辑模板,指定模板id PageListTemplatePO po = getPageListTemplateMapper().getById(id); if (po != null) { checkedList = Optional.ofNullable(po.getSetting()).orElse(new ArrayList<>()).stream().map(s -> columnMap.getOrDefault(s, new WeaTableColumn())).collect(Collectors.toList()); - + } + } else { + //打开选中的模板 + List pageListTemplates = getPageListTemplates(PageListTemplateQueryParam.builder().page(page).build()); + List columnList = pageListTemplates.stream() + .filter(PageListTemplatePO::getChecked).map(PageListTemplatePO::getSetting).findFirst().orElse(new ArrayList<>()) + .stream().map(s -> columnMap.getOrDefault(s, new WeaTableColumn())).collect(Collectors.toList()); + if (CollectionUtil.isNotEmpty(columnList)) { + checkedList = columnList; } } return PageListTemplateDTO.builder().setting(columns).checked(checkedList).build(); @@ -236,14 +237,53 @@ public class SettingServiceImpl extends Service implements SettingService { ValidUtil.doValidator(param); + Date now = new Date(); String page = param.getPage(); + //个人配置模板 PageListTemplatePO build = PageListTemplatePO.builder().page(page).build(); List pos = getPageListTemplateMapper().listSome(build); - //获取当前选择的模板 - PageLinkPO link = getPageLinkMapper().getLink((long) user.getUID(), SALARY_DETAILS_REPORT.getValue()); + //如果查不到不到系统模板,创建系统模板 + PageListTemplatePO systemTemplate = pos.stream().filter(po -> po.getSystemType() != null && po.getSystemType() == 1).findFirst().orElse(null); + if (systemTemplate == null) { + //查询系统默认配置 + PageListTemplateDTO pageListSetting = getDefaultPageListSetting(PageListSettingQueryParam.builder().page(SALARY_DETAILS_REPORT.getValue()).build()); + systemTemplate = PageListTemplatePO.builder() + .id(IdGenerator.generate()) + .page(param.getPage()) + .name("系统模板") + .sharedType(SharedTypeEnum.PUBLIC.getValue()) + .systemType(SalaryOnOffEnum.ON.getValue()) + .setting(pageListSetting.getChecked().stream().map(WeaTableColumn::getColumn).collect(Collectors.toList())) + .creator((long) user.getUID()) + .createTime(now) + .updateTime(now) + .deleteType(0) + .tenantKey(DEFAULT_TENANT_KEY).build(); + getPageListTemplateMapper().insertIgnoreNull(systemTemplate); + pos.add(systemTemplate); + } + + //获取当前选择的模板 + PageLinkPO link = getPageLinkMapper().listSome(PageLinkPO.builder().employeeId((long) user.getUID()).page(SALARY_DETAILS_REPORT.getValue()).build()).stream().findFirst().orElse(null); + if (link == null) { + link = PageLinkPO.builder() + .id(IdGenerator.generate()) + .employeeId((long) user.getUID()) + .page(param.getPage()) + .templateId(systemTemplate.getId()) + .tenantKey(DEFAULT_TENANT_KEY) + .createTime(new Date()) + .updateTime(new Date()) + .creator((long) user.getUID()) + .deleteType(0).build(); + getPageLinkMapper().insertIgnoreNull(link); + } + Long templateId = link.getTemplateId(); + + //权限控制 Collection taxAgentPOS = getTaxAgentService().listAllTaxAgents((long) user.getUID()); List taxIds = SalaryEntityUtil.properties(taxAgentPOS, TaxAgentPO::getId, Collectors.toList()); pos = pos.stream().filter(po -> { @@ -253,7 +293,7 @@ public class SettingServiceImpl extends Service implements SettingService { } return true; }).peek(po -> { - po.setChecked(link != null && po.getId().equals(link.getTemplateId())); + po.setChecked(po.getId().equals(templateId)); }).collect(Collectors.toList()); return pos; } @@ -301,13 +341,7 @@ public class SettingServiceImpl extends Service implements SettingService { @Override public List getPageListColumns(String page) { - PageLinkPO link = getPageLinkMapper().getLink((long) user.getUID(), page); - if (link != null) { - PageListTemplateDTO pageListTemplate = getPageListTemplate(PageListTemplateQueryParam.builder().page(page).id(link.getTemplateId()).build()); - return pageListTemplate.getChecked(); - } else { - PageListTemplateDTO pageListTemplate = getPageListTemplate(PageListTemplateQueryParam.builder().page(page).build()); - return pageListTemplate.getSetting(); - } + PageListTemplateDTO pageListTemplate = getPageListTemplate((PageListTemplateQueryParam.builder().page(page).build())); + return pageListTemplate.getChecked(); } } diff --git a/src/com/engine/salary/wrapper/SalaryCommonWrapper.java b/src/com/engine/salary/wrapper/SalaryCommonWrapper.java index c8182fef1..2cf59dd73 100644 --- a/src/com/engine/salary/wrapper/SalaryCommonWrapper.java +++ b/src/com/engine/salary/wrapper/SalaryCommonWrapper.java @@ -42,7 +42,7 @@ public class SalaryCommonWrapper extends Service { public PageListTemplateDTO getPageListSetting(PageListSettingQueryParam param) { - return getSettingService(user).getPageListSetting(param); + return getSettingService(user).getDefaultPageListSetting(param); } From c80d900339aef95b507783a9849e1a878540f093 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Wed, 4 Dec 2024 09:13:41 +0800 Subject: [PATCH 37/42] =?UTF-8?q?=E6=A8=A1=E6=9D=BF=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../setting/dto/PageListTemplateDTO.java | 54 ++++++++++++++-- .../dto/PageListTemplateDetailDTO.java | 19 ++++++ .../param/PageListTemplateQueryParam.java | 3 +- .../engine/salary/service/SettingService.java | 7 +- .../service/impl/SettingServiceImpl.java | 64 ++++++++++++++++--- .../salary/web/SalaryCommonController.java | 14 +++- .../salary/wrapper/SalaryCommonWrapper.java | 10 ++- 7 files changed, 151 insertions(+), 20 deletions(-) create mode 100644 src/com/engine/salary/entity/setting/dto/PageListTemplateDetailDTO.java diff --git a/src/com/engine/salary/entity/setting/dto/PageListTemplateDTO.java b/src/com/engine/salary/entity/setting/dto/PageListTemplateDTO.java index 763485c8e..6ec53d5bd 100644 --- a/src/com/engine/salary/entity/setting/dto/PageListTemplateDTO.java +++ b/src/com/engine/salary/entity/setting/dto/PageListTemplateDTO.java @@ -1,6 +1,8 @@ package com.engine.salary.entity.setting.dto; -import com.cloudstore.eccom.pc.table.WeaTableColumn; +import com.engine.hrmelog.annotation.ElogTransform; +import com.engine.salary.annotation.TableTitle; +import com.engine.salary.enums.common.SharedTypeEnum; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -8,12 +10,56 @@ import lombok.NoArgsConstructor; import java.util.List; - +/** + * 薪资帐套表 + */ @Data @Builder @NoArgsConstructor @AllArgsConstructor +//hrsa_page_list_template public class PageListTemplateDTO { - private List setting; - private List checked; + + + private Long id; + + + /** + * 模板名称 + */ + @TableTitle(title = "模板名称",dataIndex = "name",key = "name") + private String name; + + /** + * 页面 + */ + private String page; + + /** + * 设置 + */ + private List setting; + + /** + * 是否共享,0否,1是 + * @see SharedTypeEnum + */ + @TableTitle(title = "可见性",dataIndex = "sharedType",key = "sharedType") + private Integer sharedType; + + /** + * 是否系统模板 + */ + @TableTitle(title = "是否系统模板",dataIndex = "systemType",key = "systemType") + private Integer systemType; + + + /** + * 限制 + */ + @ElogTransform(name = "限制") + private List limitIds; + + private Boolean canEdit; + } \ No newline at end of file diff --git a/src/com/engine/salary/entity/setting/dto/PageListTemplateDetailDTO.java b/src/com/engine/salary/entity/setting/dto/PageListTemplateDetailDTO.java new file mode 100644 index 000000000..7826c24ce --- /dev/null +++ b/src/com/engine/salary/entity/setting/dto/PageListTemplateDetailDTO.java @@ -0,0 +1,19 @@ +package com.engine.salary.entity.setting.dto; + +import com.cloudstore.eccom.pc.table.WeaTableColumn; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class PageListTemplateDetailDTO { + private List setting; + private List checked; +} \ No newline at end of file diff --git a/src/com/engine/salary/entity/setting/param/PageListTemplateQueryParam.java b/src/com/engine/salary/entity/setting/param/PageListTemplateQueryParam.java index 61213bbee..4170f5d2a 100644 --- a/src/com/engine/salary/entity/setting/param/PageListTemplateQueryParam.java +++ b/src/com/engine/salary/entity/setting/param/PageListTemplateQueryParam.java @@ -1,5 +1,6 @@ package com.engine.salary.entity.setting.param; +import com.engine.salary.common.BaseQueryParam; import com.engine.salary.util.valid.DataCheck; import lombok.AllArgsConstructor; import lombok.Builder; @@ -13,7 +14,7 @@ import lombok.NoArgsConstructor; @Builder @NoArgsConstructor @AllArgsConstructor -public class PageListTemplateQueryParam { +public class PageListTemplateQueryParam extends BaseQueryParam { private Long id; diff --git a/src/com/engine/salary/service/SettingService.java b/src/com/engine/salary/service/SettingService.java index 7bf701910..51951b942 100644 --- a/src/com/engine/salary/service/SettingService.java +++ b/src/com/engine/salary/service/SettingService.java @@ -2,8 +2,10 @@ package com.engine.salary.service; import com.cloudstore.eccom.pc.table.WeaTableColumn; import com.engine.salary.entity.setting.dto.PageListTemplateDTO; +import com.engine.salary.entity.setting.dto.PageListTemplateDetailDTO; import com.engine.salary.entity.setting.param.*; import com.engine.salary.entity.setting.po.PageListTemplatePO; +import com.engine.salary.util.page.PageInfo; import java.util.List; @@ -17,7 +19,7 @@ public interface SettingService { * @param param * @return */ - PageListTemplateDTO getDefaultPageListSetting(PageListSettingQueryParam param); + PageListTemplateDetailDTO getDefaultPageListSetting(PageListSettingQueryParam param); @Deprecated void resetPageListSetting(PageListSettingResetParam param); @@ -27,7 +29,7 @@ public interface SettingService { * @param param * @return */ - PageListTemplateDTO getPageListTemplate(PageListTemplateQueryParam param); + PageListTemplateDetailDTO getPageListTemplate(PageListTemplateQueryParam param); /** * 获取可选模板列表 @@ -51,4 +53,5 @@ public interface SettingService { List getPageListColumns(String page); + PageInfo getTemplates(PageListTemplateQueryParam param); } diff --git a/src/com/engine/salary/service/impl/SettingServiceImpl.java b/src/com/engine/salary/service/impl/SettingServiceImpl.java index eda0c7b1f..2fec4e809 100644 --- a/src/com/engine/salary/service/impl/SettingServiceImpl.java +++ b/src/com/engine/salary/service/impl/SettingServiceImpl.java @@ -9,6 +9,7 @@ import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; import com.engine.salary.entity.salaryitem.po.SalaryItemPO; import com.engine.salary.entity.setting.dto.PageListTemplateDTO; +import com.engine.salary.entity.setting.dto.PageListTemplateDetailDTO; import com.engine.salary.entity.setting.param.*; import com.engine.salary.entity.setting.po.PageLinkPO; import com.engine.salary.entity.setting.po.PageListSettingPO; @@ -28,6 +29,8 @@ import com.engine.salary.util.SalaryEntityUtil; import com.engine.salary.util.SalaryI18nUtil; import com.engine.salary.util.db.IdGenerator; import com.engine.salary.util.db.MapperProxyFactory; +import com.engine.salary.util.page.PageInfo; +import com.engine.salary.util.page.SalaryPageUtil; import com.engine.salary.util.valid.ValidUtil; import weaver.hrm.User; @@ -94,7 +97,7 @@ public class SettingServiceImpl extends Service implements SettingService { } @Override - public PageListTemplateDTO getDefaultPageListSetting(PageListSettingQueryParam param) { + public PageListTemplateDetailDTO getDefaultPageListSetting(PageListSettingQueryParam param) { String page = param.getPage(); if (SALARY_DETAILS_REPORT.getValue().equals(page)) { List columns = new ArrayList<>(); @@ -146,10 +149,10 @@ public class SettingServiceImpl extends Service implements SettingService { } else { checkedList = columns; } - return PageListTemplateDTO.builder().setting(columns).checked(checkedList).build(); + return PageListTemplateDetailDTO.builder().setting(columns).checked(checkedList).build(); } - return PageListTemplateDTO.builder().setting(new ArrayList<>()).checked(new ArrayList<>()).build(); + return PageListTemplateDetailDTO.builder().setting(new ArrayList<>()).checked(new ArrayList<>()).build(); } @Override @@ -167,7 +170,7 @@ public class SettingServiceImpl extends Service implements SettingService { } @Override - public PageListTemplateDTO getPageListTemplate(PageListTemplateQueryParam param) { + public PageListTemplateDetailDTO getPageListTemplate(PageListTemplateQueryParam param) { String page = param.getPage(); if (SALARY_DETAILS_REPORT.getValue().equals(page)) { List columns = new ArrayList<>(); @@ -226,10 +229,10 @@ public class SettingServiceImpl extends Service implements SettingService { checkedList = columnList; } } - return PageListTemplateDTO.builder().setting(columns).checked(checkedList).build(); + return PageListTemplateDetailDTO.builder().setting(columns).checked(checkedList).build(); } - return PageListTemplateDTO.builder().build(); + return PageListTemplateDetailDTO.builder().build(); } @Override @@ -248,7 +251,7 @@ public class SettingServiceImpl extends Service implements SettingService { PageListTemplatePO systemTemplate = pos.stream().filter(po -> po.getSystemType() != null && po.getSystemType() == 1).findFirst().orElse(null); if (systemTemplate == null) { //查询系统默认配置 - PageListTemplateDTO pageListSetting = getDefaultPageListSetting(PageListSettingQueryParam.builder().page(SALARY_DETAILS_REPORT.getValue()).build()); + PageListTemplateDetailDTO pageListSetting = getDefaultPageListSetting(PageListSettingQueryParam.builder().page(SALARY_DETAILS_REPORT.getValue()).build()); systemTemplate = PageListTemplatePO.builder() .id(IdGenerator.generate()) @@ -306,7 +309,19 @@ public class SettingServiceImpl extends Service implements SettingService { PageListTemplatePO po; if (id == null) { - po = PageListTemplatePO.builder().id(IdGenerator.generate()).page(param.getPage()).name(param.getName()).sharedType(param.getSharedType()).limitIds(param.getLimitIds()).setting(param.getSetting()).creator((long) user.getUID()).createTime(now).updateTime(now).deleteType(0).tenantKey(DEFAULT_TENANT_KEY).build(); + po = PageListTemplatePO.builder() + .id(IdGenerator.generate()) + .page(param.getPage()) + .name(param.getName()) + .sharedType(param.getSharedType()) + .systemType(0) + .limitIds(param.getLimitIds()) + .setting(param.getSetting()) + .creator((long) user.getUID()) + .createTime(now) + .updateTime(now) + .deleteType(0) + .tenantKey(DEFAULT_TENANT_KEY).build(); getPageListTemplateMapper().insertIgnoreNull(po); } else { po = getPageListTemplateMapper().getById(id); @@ -341,7 +356,38 @@ public class SettingServiceImpl extends Service implements SettingService { @Override public List getPageListColumns(String page) { - PageListTemplateDTO pageListTemplate = getPageListTemplate((PageListTemplateQueryParam.builder().page(page).build())); + PageListTemplateDetailDTO pageListTemplate = getPageListTemplate((PageListTemplateQueryParam.builder().page(page).build())); return pageListTemplate.getChecked(); } + + @Override + public PageInfo getTemplates(PageListTemplateQueryParam param) { + PageListTemplatePO build = PageListTemplatePO.builder().page(param.getPage()).build(); + List pos = getPageListTemplateMapper().listSome(build); + + //权限控制 + Collection taxAgentPOS = getTaxAgentService().listAllTaxAgents((long) user.getUID()); + Boolean chief = getTaxAgentService().isChief((long) user.getUID()); + List taxIds = SalaryEntityUtil.properties(taxAgentPOS, TaxAgentPO::getId, Collectors.toList()); + List templateDTOS = pos.stream() + .filter(po -> { + if (po.getSharedType() == 1) { + List limitIds = po.getLimitIds(); + return CollectionUtil.isNotEmpty(limitIds) && CollectionUtil.intersection(limitIds, taxIds).size() != 0; + } + return true; + }).map(po -> PageListTemplateDTO.builder() + .id(po.getId()) + .page(po.getPage()) + .name(po.getName()) + .sharedType(po.getSharedType()) + .systemType(po.getSystemType()) + .limitIds(po.getLimitIds()) + .setting(po.getSetting()) + .canEdit(chief || po.getSystemType() == 0) + .build()) + .collect(Collectors.toList()); + + return SalaryPageUtil.buildPage(param.getCurrent(), param.getPageSize(), templateDTOS, PageListTemplateDTO.class); + } } diff --git a/src/com/engine/salary/web/SalaryCommonController.java b/src/com/engine/salary/web/SalaryCommonController.java index 0895ec79e..0026d451b 100644 --- a/src/com/engine/salary/web/SalaryCommonController.java +++ b/src/com/engine/salary/web/SalaryCommonController.java @@ -2,11 +2,13 @@ package com.engine.salary.web; import com.engine.common.util.ServiceUtil; import com.engine.salary.entity.setting.dto.PageListTemplateDTO; +import com.engine.salary.entity.setting.dto.PageListTemplateDetailDTO; import com.engine.salary.entity.setting.param.*; import com.engine.salary.entity.setting.po.PageListSettingPO; import com.engine.salary.entity.setting.po.PageListTemplatePO; import com.engine.salary.util.ResponseResult; import com.engine.salary.util.SalaryEnumUtil; +import com.engine.salary.util.page.PageInfo; import com.engine.salary.wrapper.SalaryCommonWrapper; import io.swagger.v3.oas.annotations.parameters.RequestBody; import lombok.extern.slf4j.Slf4j; @@ -88,7 +90,7 @@ public class SalaryCommonController { @Produces(MediaType.APPLICATION_JSON) public String getPageListSetting(@Context HttpServletRequest request, @Context HttpServletResponse response,@RequestBody PageListSettingQueryParam param) { User user = HrmUserVarify.getUser(request, response); - return new ResponseResult(user).run(getSalaryCommonWrapper(user)::getPageListSetting, param); + return new ResponseResult(user).run(getSalaryCommonWrapper(user)::getPageListSetting, param); } /** @@ -103,7 +105,7 @@ public class SalaryCommonController { @Produces(MediaType.APPLICATION_JSON) public String getPageListTemplate(@Context HttpServletRequest request, @Context HttpServletResponse response,@RequestBody PageListTemplateQueryParam param) { User user = HrmUserVarify.getUser(request, response); - return new ResponseResult(user).run(getSalaryCommonWrapper(user)::getPageListTemplate, param); + return new ResponseResult(user).run(getSalaryCommonWrapper(user)::getPageListTemplate, param); } /** @@ -121,6 +123,14 @@ public class SalaryCommonController { return new ResponseResult>(user).run(getSalaryCommonWrapper(user)::getPageListTemplates, param); } + @POST + @Path("/pageList/template/pageList") + @Produces(MediaType.APPLICATION_JSON) + public String getTemplates(@Context HttpServletRequest request, @Context HttpServletResponse response,@RequestBody PageListTemplateQueryParam param) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult>(user).run(getSalaryCommonWrapper(user)::getTemplates, param); + } + /** * 页面模板列表 * @param request diff --git a/src/com/engine/salary/wrapper/SalaryCommonWrapper.java b/src/com/engine/salary/wrapper/SalaryCommonWrapper.java index 2cf59dd73..0198b817d 100644 --- a/src/com/engine/salary/wrapper/SalaryCommonWrapper.java +++ b/src/com/engine/salary/wrapper/SalaryCommonWrapper.java @@ -3,12 +3,14 @@ package com.engine.salary.wrapper; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; import com.engine.salary.entity.setting.dto.PageListTemplateDTO; +import com.engine.salary.entity.setting.dto.PageListTemplateDetailDTO; import com.engine.salary.entity.setting.param.*; import com.engine.salary.entity.setting.po.PageListTemplatePO; import com.engine.salary.service.SalaryCacheService; import com.engine.salary.service.SettingService; import com.engine.salary.service.impl.SalaryCacheServiceImpl; import com.engine.salary.service.impl.SettingServiceImpl; +import com.engine.salary.util.page.PageInfo; import weaver.hrm.User; import java.util.List; @@ -41,12 +43,12 @@ public class SalaryCommonWrapper extends Service { } - public PageListTemplateDTO getPageListSetting(PageListSettingQueryParam param) { + public PageListTemplateDetailDTO getPageListSetting(PageListSettingQueryParam param) { return getSettingService(user).getDefaultPageListSetting(param); } - public PageListTemplateDTO getPageListTemplate(PageListTemplateQueryParam param) { + public PageListTemplateDetailDTO getPageListTemplate(PageListTemplateQueryParam param) { return getSettingService(user).getPageListTemplate(param); } @@ -54,6 +56,10 @@ public class SalaryCommonWrapper extends Service { return getSettingService(user).getPageListTemplates(param); } + public PageInfo getTemplates(PageListTemplateQueryParam param) { + return getSettingService(user).getTemplates(param); + } + public PageListTemplatePO savePageListTemplate(PageListTemplateSaveParam param) { return getSettingService(user).savePageListTemplate(param); } From 3e3350bcd66f07462754f1ed8b496b24725e87a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Wed, 4 Dec 2024 10:14:39 +0800 Subject: [PATCH 38/42] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=A8=A1=E6=9D=BF?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../param/PageListTemplateDeleteParam.java | 18 +++++++++++++ .../engine/salary/service/SettingService.java | 2 ++ .../service/impl/SettingServiceImpl.java | 25 +++++++++++++++++++ .../salary/web/SalaryCommonController.java | 9 +++++++ .../salary/wrapper/SalaryCommonWrapper.java | 4 +++ 5 files changed, 58 insertions(+) create mode 100644 src/com/engine/salary/entity/setting/param/PageListTemplateDeleteParam.java diff --git a/src/com/engine/salary/entity/setting/param/PageListTemplateDeleteParam.java b/src/com/engine/salary/entity/setting/param/PageListTemplateDeleteParam.java new file mode 100644 index 000000000..d02ac39b4 --- /dev/null +++ b/src/com/engine/salary/entity/setting/param/PageListTemplateDeleteParam.java @@ -0,0 +1,18 @@ +package com.engine.salary.entity.setting.param; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class PageListTemplateDeleteParam { + private List ids; + +} \ No newline at end of file diff --git a/src/com/engine/salary/service/SettingService.java b/src/com/engine/salary/service/SettingService.java index 51951b942..a859a3393 100644 --- a/src/com/engine/salary/service/SettingService.java +++ b/src/com/engine/salary/service/SettingService.java @@ -54,4 +54,6 @@ public interface SettingService { List getPageListColumns(String page); PageInfo getTemplates(PageListTemplateQueryParam param); + + void deletePageListTemplate(PageListTemplateDeleteParam param); } diff --git a/src/com/engine/salary/service/impl/SettingServiceImpl.java b/src/com/engine/salary/service/impl/SettingServiceImpl.java index 2fec4e809..88818cb9c 100644 --- a/src/com/engine/salary/service/impl/SettingServiceImpl.java +++ b/src/com/engine/salary/service/impl/SettingServiceImpl.java @@ -390,4 +390,29 @@ public class SettingServiceImpl extends Service implements SettingService { return SalaryPageUtil.buildPage(param.getCurrent(), param.getPageSize(), templateDTOS, PageListTemplateDTO.class); } + + @Override + public void deletePageListTemplate(PageListTemplateDeleteParam param) { + List ids = param.getIds(); + + if (CollUtil.isEmpty(ids)) { + throw new SalaryRunTimeException("未选择模板!"); + } + + ids.forEach(id -> { + PageListTemplatePO pageListTemplatePO = getPageListTemplateMapper().getById(id); + if (pageListTemplatePO == null) { + throw new SalaryRunTimeException("模板不存在!"); + } + if (pageListTemplatePO.getSystemType() == 1) { + throw new SalaryRunTimeException("系统模板不允许删除!"); + } + List pageLinkPOS = getPageLinkMapper().listSome(PageLinkPO.builder().templateId(id).build()); + if (CollUtil.isNotEmpty(pageLinkPOS)) { + throw new SalaryRunTimeException(pageListTemplatePO.getName() + "模板正被使用!不允许删除"); + } + }); + + getPageListTemplateMapper().deleteByIds(ids); + } } diff --git a/src/com/engine/salary/web/SalaryCommonController.java b/src/com/engine/salary/web/SalaryCommonController.java index 0026d451b..b7cd6404f 100644 --- a/src/com/engine/salary/web/SalaryCommonController.java +++ b/src/com/engine/salary/web/SalaryCommonController.java @@ -146,6 +146,15 @@ public class SalaryCommonController { return new ResponseResult(user).run(getSalaryCommonWrapper(user)::savePageListTemplate, param); } + @POST + @Path("/pageList/template/delete") + @Produces(MediaType.APPLICATION_JSON) + public String savePageListTemplate(@Context HttpServletRequest request, @Context HttpServletResponse response,@RequestBody PageListTemplateDeleteParam param) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getSalaryCommonWrapper(user)::deletePageListTemplate, param); + } + + /** * 页面模板列表 * @param request diff --git a/src/com/engine/salary/wrapper/SalaryCommonWrapper.java b/src/com/engine/salary/wrapper/SalaryCommonWrapper.java index 0198b817d..d4bebab23 100644 --- a/src/com/engine/salary/wrapper/SalaryCommonWrapper.java +++ b/src/com/engine/salary/wrapper/SalaryCommonWrapper.java @@ -64,6 +64,10 @@ public class SalaryCommonWrapper extends Service { return getSettingService(user).savePageListTemplate(param); } + public void deletePageListTemplate(PageListTemplateDeleteParam param) { + getSettingService(user).deletePageListTemplate(param); + } + public void changePageListTemplate(PageListTemplateChangeParam param) { getSettingService(user).changePageListTemplate(param); } From 051a38d408d357eda3d1b3c246054323e4e1db79 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Wed, 4 Dec 2024 11:46:00 +0800 Subject: [PATCH 39/42] =?UTF-8?q?=E7=A4=BE=E4=BF=9D=E5=92=8C=E8=96=AA?= =?UTF-8?q?=E8=B5=84=E6=A1=A3=E6=A1=88=E6=94=AF=E6=8C=81=E5=AE=9A=E6=97=B6?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E5=A2=9E=E5=91=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salary/service/SIArchivesService.java | 2 + .../service/impl/SIArchivesServiceImpl.java | 5 ++ .../timer/AutoSyncEmpArchiveStartDateJob.java | 46 ++++++++++++++----- 3 files changed, 42 insertions(+), 11 deletions(-) diff --git a/src/com/engine/salary/service/SIArchivesService.java b/src/com/engine/salary/service/SIArchivesService.java index 8e114c756..dd13f472a 100644 --- a/src/com/engine/salary/service/SIArchivesService.java +++ b/src/com/engine/salary/service/SIArchivesService.java @@ -162,4 +162,6 @@ public interface SIArchivesService { List listInsuranceArchivesFundSchemeByIds(List ids); List listInsuranceArchivesOtherSchemeByIds(List ids); + + List listAll(); } diff --git a/src/com/engine/salary/service/impl/SIArchivesServiceImpl.java b/src/com/engine/salary/service/impl/SIArchivesServiceImpl.java index b14d1b74a..fe07b84a8 100644 --- a/src/com/engine/salary/service/impl/SIArchivesServiceImpl.java +++ b/src/com/engine/salary/service/impl/SIArchivesServiceImpl.java @@ -4218,4 +4218,9 @@ public class SIArchivesServiceImpl extends Service implements SIArchivesService partition.forEach(list -> resultList.addAll(getOtherSchemeMapper().getOtherById(list))); return resultList; } + + @Override + public List listAll() { + return getInsuranceBaseInfoMapper().listAll(); + } } diff --git a/src/com/engine/salary/timer/AutoSyncEmpArchiveStartDateJob.java b/src/com/engine/salary/timer/AutoSyncEmpArchiveStartDateJob.java index 1b4c32c84..6c817ed4e 100644 --- a/src/com/engine/salary/timer/AutoSyncEmpArchiveStartDateJob.java +++ b/src/com/engine/salary/timer/AutoSyncEmpArchiveStartDateJob.java @@ -3,12 +3,15 @@ package com.engine.salary.timer; import com.engine.common.util.ServiceUtil; import com.engine.salary.biz.SalaryArchiveBiz; import com.engine.salary.entity.datacollection.DataCollectionEmployee; +import com.engine.salary.entity.salaryarchive.dto.SalaryArchiveListDTO; +import com.engine.salary.entity.salaryarchive.param.SalaryArchiveQueryParam; import com.engine.salary.entity.salaryarchive.po.SalaryArchivePO; import com.engine.salary.entity.siarchives.po.InsuranceArchivesBaseInfoPO; import com.engine.salary.entity.siarchives.po.InsuranceArchivesFundSchemePO; import com.engine.salary.entity.siarchives.po.InsuranceArchivesOtherSchemePO; import com.engine.salary.entity.siarchives.po.InsuranceArchivesSocialSchemePO; import com.engine.salary.enums.salaryarchive.SalaryArchiveListTypeEnum; +import com.engine.salary.enums.salaryarchive.SalaryArchiveStatusEnum; import com.engine.salary.enums.siaccount.EmployeeStatusEnum; import com.engine.salary.mapper.siarchives.FundSchemeMapper; import com.engine.salary.mapper.siarchives.OtherSchemeMapper; @@ -22,14 +25,12 @@ import com.engine.salary.service.impl.SalaryEmployeeServiceImpl; import com.engine.salary.util.SalaryDateUtil; import com.engine.salary.util.SalaryEntityUtil; import com.engine.salary.util.db.MapperProxyFactory; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import weaver.hrm.User; import weaver.interfaces.schedule.BaseCronJob; -import java.util.Collections; -import java.util.Date; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; /** @@ -38,25 +39,28 @@ import java.util.stream.Collectors; * @date 2023/08/14 9:30 * @description 自动同步人员社保福利档案、薪资档案为公司开始日期字段(companystartdate) */ +@Slf4j public class AutoSyncEmpArchiveStartDateJob extends BaseCronJob { private SalaryArchiveService getSalaryArchiveService(User user) { - return ServiceUtil.getService(SalaryArchiveServiceImpl.class,user); + return ServiceUtil.getService(SalaryArchiveServiceImpl.class, user); } private SalaryEmployeeService getSalaryEmployeeService(User user) { - return ServiceUtil.getService(SalaryEmployeeServiceImpl.class,user); + return ServiceUtil.getService(SalaryEmployeeServiceImpl.class, user); } private SIArchivesService getSIArchivesService(User user) { - return ServiceUtil.getService(SIArchivesServiceImpl.class,user); + return ServiceUtil.getService(SIArchivesServiceImpl.class, user); } private String syncInsuranceArchive; - private String syncSalaryArchive; + private String allStayAddToPay; + private String allGotoFixed; + private SalaryArchiveBiz getSalaryArchiveMapper = new SalaryArchiveBiz(); private SocialSchemeMapper getSocialSchemeMapper() { @@ -72,14 +76,13 @@ public class AutoSyncEmpArchiveStartDateJob extends BaseCronJob { } - @Override public void execute() { User user = new User(); user.setUid(1); user.setLoginid("sysadmin"); - if (StringUtils.isBlank(syncInsuranceArchive) || !StringUtils.equals(syncInsuranceArchive,"false")) { + if (StringUtils.isBlank(syncInsuranceArchive) || !StringUtils.equals(syncInsuranceArchive, "false")) { // 同步社保福利档案 // 获取社保、公积金、其他福利中起始缴纳月任意一个为空的社保档案主表po List needSyncInsuranceBaseInfoList = getSIArchivesService(user).listStartDateIsNull(Collections.emptyList()); @@ -125,7 +128,7 @@ public class AutoSyncEmpArchiveStartDateJob extends BaseCronJob { }); } - if (StringUtils.isBlank(syncSalaryArchive) || !StringUtils.equals(syncSalaryArchive,"false")) { + if (StringUtils.isBlank(syncSalaryArchive) || !StringUtils.equals(syncSalaryArchive, "false")) { // 同步薪资档案 // 获取薪资档案起始发薪日为空且是待定薪资的档案 List salaryArchiveList = getSalaryArchiveService(user).listPayStartDateIsNull(SalaryArchiveListTypeEnum.PENDING.getValue()); @@ -154,6 +157,27 @@ public class AutoSyncEmpArchiveStartDateJob extends BaseCronJob { getSalaryArchiveMapper.batchUpdate(needUpdateArchiveList); } + + //一键定薪 + if (StringUtils.isNotBlank(allStayAddToPay) && !StringUtils.equals(allStayAddToPay, "false")) { + List allBaseInfoList = getSIArchivesService(user).listAll(); + List ids = allBaseInfoList.stream() + .filter(f -> f.getRunStatus().equals(EmployeeStatusEnum.STAY_ADD.getValue())) + .map(InsuranceArchivesBaseInfoPO::getId) + .collect(Collectors.toList()); + Map map = getSIArchivesService(user).stayAddToPay(ids); + log.info("社保一键定薪结果:" + map); + } + + if (StringUtils.isNotBlank(allGotoFixed) && !StringUtils.equals(allGotoFixed, "false")) { + SalaryArchiveQueryParam queryParam = SalaryArchiveQueryParam.builder().build(); + queryParam.setRunStatusList(Arrays.asList(SalaryArchiveStatusEnum.PENDING.getValue())); + List salaryArchiveList = getSalaryArchiveService(user).getSalaryArchiveList(queryParam); + List ids = SalaryEntityUtil.properties(salaryArchiveList, SalaryArchiveListDTO::getId, Collectors.toList()); + Map map = getSalaryArchiveService(user).gotoFixed(ids); + log.info("薪资一键定薪结果:" + map); + } + } } From 0114bdeb3f40e74a543c67d1f43114dbfbf7549c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Wed, 4 Dec 2024 17:45:56 +0800 Subject: [PATCH 40/42] =?UTF-8?q?=E7=B3=BB=E7=BB=9F=E6=A8=A1=E6=9D=BF?= =?UTF-8?q?=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../setting/dto/PageListTemplateDTO.java | 12 ++++--- .../entity/setting/po/PageListTemplatePO.java | 2 +- .../salary/enums/common/SharedTypeEnum.java | 15 ++++++-- .../service/impl/SettingServiceImpl.java | 35 ++++++++++++++++--- 4 files changed, 52 insertions(+), 12 deletions(-) diff --git a/src/com/engine/salary/entity/setting/dto/PageListTemplateDTO.java b/src/com/engine/salary/entity/setting/dto/PageListTemplateDTO.java index 6ec53d5bd..d30ad0cc1 100644 --- a/src/com/engine/salary/entity/setting/dto/PageListTemplateDTO.java +++ b/src/com/engine/salary/entity/setting/dto/PageListTemplateDTO.java @@ -1,6 +1,5 @@ package com.engine.salary.entity.setting.dto; -import com.engine.hrmelog.annotation.ElogTransform; import com.engine.salary.annotation.TableTitle; import com.engine.salary.enums.common.SharedTypeEnum; import lombok.AllArgsConstructor; @@ -44,20 +43,25 @@ public class PageListTemplateDTO { * 是否共享,0否,1是 * @see SharedTypeEnum */ - @TableTitle(title = "可见性",dataIndex = "sharedType",key = "sharedType") private Integer sharedType; + @TableTitle(title = "可见性",dataIndex = "sharedTypeName",key = "sharedTypeName") + private String sharedTypeName; + /** * 是否系统模板 */ - @TableTitle(title = "是否系统模板",dataIndex = "systemType",key = "systemType") private Integer systemType; + @TableTitle(title = "是否系统模板",dataIndex = "systemTypeName",key = "systemTypeName") + private String systemTypeName; + + @TableTitle(title = "范围",dataIndex = "systemType",key = "systemType") + private String limits; /** * 限制 */ - @ElogTransform(name = "限制") private List limitIds; private Boolean canEdit; diff --git a/src/com/engine/salary/entity/setting/po/PageListTemplatePO.java b/src/com/engine/salary/entity/setting/po/PageListTemplatePO.java index c6a013da1..1b2f727b4 100644 --- a/src/com/engine/salary/entity/setting/po/PageListTemplatePO.java +++ b/src/com/engine/salary/entity/setting/po/PageListTemplatePO.java @@ -48,7 +48,7 @@ public class PageListTemplatePO { * 是否共享,0否,1是 * @see SharedTypeEnum */ - @ElogTransform(name = "可见性:0公共,1私有") + @ElogTransform(name = "可见性:1私有,0共享") private Integer sharedType; /** diff --git a/src/com/engine/salary/enums/common/SharedTypeEnum.java b/src/com/engine/salary/enums/common/SharedTypeEnum.java index eec98de1d..286962c24 100644 --- a/src/com/engine/salary/enums/common/SharedTypeEnum.java +++ b/src/com/engine/salary/enums/common/SharedTypeEnum.java @@ -2,10 +2,12 @@ package com.engine.salary.enums.common; import com.engine.salary.enums.BaseEnum; +import java.util.Objects; + public enum SharedTypeEnum implements BaseEnum { - PUBLIC(0, "公共", 86568), - PRIVATE(1, "私有", 86569); + PRIVATE(1, "私有", 86569), + PUBLIC(0, "共享", 86568); private Integer value; @@ -34,4 +36,13 @@ public enum SharedTypeEnum implements BaseEnum { public String getDefaultLabel() { return this.defaultLabel; } + + public static SharedTypeEnum parseByValue(Integer value) { + for (SharedTypeEnum enums : SharedTypeEnum.values()) { + if (Objects.equals(enums.getValue(), value)) { + return enums; + } + } + return PUBLIC; + } } diff --git a/src/com/engine/salary/service/impl/SettingServiceImpl.java b/src/com/engine/salary/service/impl/SettingServiceImpl.java index 88818cb9c..2274368d3 100644 --- a/src/com/engine/salary/service/impl/SettingServiceImpl.java +++ b/src/com/engine/salary/service/impl/SettingServiceImpl.java @@ -290,9 +290,19 @@ public class SettingServiceImpl extends Service implements SettingService { Collection taxAgentPOS = getTaxAgentService().listAllTaxAgents((long) user.getUID()); List taxIds = SalaryEntityUtil.properties(taxAgentPOS, TaxAgentPO::getId, Collectors.toList()); pos = pos.stream().filter(po -> { - if (po.getSharedType() == 1) { + SharedTypeEnum sharedTypeEnum = SharedTypeEnum.parseByValue(po.getSharedType()); + //系统模板直接可见 + if(po.getSystemType()==1){ + return true; + } + //私有,只能自己看到 + if (sharedTypeEnum == SharedTypeEnum.PRIVATE) { + return Objects.equals((long) user.getUID(), po.getCreator()); + } + //共享 + if (sharedTypeEnum == SharedTypeEnum.PUBLIC) { List limitIds = po.getLimitIds(); - return CollectionUtil.isNotEmpty(limitIds) && CollectionUtil.intersection(limitIds, taxIds).size() != 0; + return CollectionUtil.isEmpty(limitIds) || CollectionUtil.intersection(limitIds, taxIds).size() != 0; } return true; }).peek(po -> { @@ -371,9 +381,19 @@ public class SettingServiceImpl extends Service implements SettingService { List taxIds = SalaryEntityUtil.properties(taxAgentPOS, TaxAgentPO::getId, Collectors.toList()); List templateDTOS = pos.stream() .filter(po -> { - if (po.getSharedType() == 1) { + SharedTypeEnum sharedTypeEnum = SharedTypeEnum.parseByValue(po.getSharedType()); + //系统模板直接可见 + if(po.getSystemType()==1){ + return true; + } + //私有,只能自己看到 + if (sharedTypeEnum == SharedTypeEnum.PRIVATE) { + return Objects.equals((long) user.getUID(), po.getCreator()); + } + //共享 + if (sharedTypeEnum == SharedTypeEnum.PUBLIC) { List limitIds = po.getLimitIds(); - return CollectionUtil.isNotEmpty(limitIds) && CollectionUtil.intersection(limitIds, taxIds).size() != 0; + return CollectionUtil.isEmpty(limitIds) || CollectionUtil.intersection(limitIds, taxIds).size() != 0; } return true; }).map(po -> PageListTemplateDTO.builder() @@ -382,9 +402,11 @@ public class SettingServiceImpl extends Service implements SettingService { .name(po.getName()) .sharedType(po.getSharedType()) .systemType(po.getSystemType()) + .sharedTypeName(SharedTypeEnum.parseByValue(po.getSharedType()).getDefaultLabel()) + .systemTypeName(po.getSystemType() == 1 ? "系统模板" : "自定义") .limitIds(po.getLimitIds()) .setting(po.getSetting()) - .canEdit(chief || po.getSystemType() == 0) + .canEdit(chief || (Objects.equals((long) user.getUID(), po.getCreator()) && po.getSystemType() == 0)) .build()) .collect(Collectors.toList()); @@ -407,6 +429,9 @@ public class SettingServiceImpl extends Service implements SettingService { if (pageListTemplatePO.getSystemType() == 1) { throw new SalaryRunTimeException("系统模板不允许删除!"); } + if (!Objects.equals((long) user.getUID(), pageListTemplatePO.getCreator())) { + throw new SalaryRunTimeException(pageListTemplatePO.getName() + "模板无权限删除!"); + } List pageLinkPOS = getPageLinkMapper().listSome(PageLinkPO.builder().templateId(id).build()); if (CollUtil.isNotEmpty(pageLinkPOS)) { throw new SalaryRunTimeException(pageListTemplatePO.getName() + "模板正被使用!不允许删除"); From 5fedafc67ee290fc1064c2a4089e77dbf22e52ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Thu, 5 Dec 2024 10:17:12 +0800 Subject: [PATCH 41/42] =?UTF-8?q?=E7=B3=BB=E7=BB=9F=E6=A8=A1=E6=9D=BF?= =?UTF-8?q?=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salary/entity/setting/dto/PageListTemplateDTO.java | 2 +- .../engine/salary/service/impl/SettingServiceImpl.java | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/com/engine/salary/entity/setting/dto/PageListTemplateDTO.java b/src/com/engine/salary/entity/setting/dto/PageListTemplateDTO.java index d30ad0cc1..24570f54a 100644 --- a/src/com/engine/salary/entity/setting/dto/PageListTemplateDTO.java +++ b/src/com/engine/salary/entity/setting/dto/PageListTemplateDTO.java @@ -56,7 +56,7 @@ public class PageListTemplateDTO { @TableTitle(title = "是否系统模板",dataIndex = "systemTypeName",key = "systemTypeName") private String systemTypeName; - @TableTitle(title = "范围",dataIndex = "systemType",key = "systemType") + @TableTitle(title = "范围",dataIndex = "limits",key = "limits") private String limits; /** diff --git a/src/com/engine/salary/service/impl/SettingServiceImpl.java b/src/com/engine/salary/service/impl/SettingServiceImpl.java index 2274368d3..8e421905e 100644 --- a/src/com/engine/salary/service/impl/SettingServiceImpl.java +++ b/src/com/engine/salary/service/impl/SettingServiceImpl.java @@ -289,10 +289,11 @@ public class SettingServiceImpl extends Service implements SettingService { //权限控制 Collection taxAgentPOS = getTaxAgentService().listAllTaxAgents((long) user.getUID()); List taxIds = SalaryEntityUtil.properties(taxAgentPOS, TaxAgentPO::getId, Collectors.toList()); + Boolean chief = getTaxAgentService().isChief((long) user.getUID()); pos = pos.stream().filter(po -> { SharedTypeEnum sharedTypeEnum = SharedTypeEnum.parseByValue(po.getSharedType()); //系统模板直接可见 - if(po.getSystemType()==1){ + if (chief || po.getSystemType() == 1) { return true; } //私有,只能自己看到 @@ -376,6 +377,8 @@ public class SettingServiceImpl extends Service implements SettingService { List pos = getPageListTemplateMapper().listSome(build); //权限控制 + List agentPOList = getTaxAgentService().listAll(); + Map idNameMap = SalaryEntityUtil.convert2Map(agentPOList, TaxAgentPO::getId, TaxAgentPO::getName); Collection taxAgentPOS = getTaxAgentService().listAllTaxAgents((long) user.getUID()); Boolean chief = getTaxAgentService().isChief((long) user.getUID()); List taxIds = SalaryEntityUtil.properties(taxAgentPOS, TaxAgentPO::getId, Collectors.toList()); @@ -383,7 +386,7 @@ public class SettingServiceImpl extends Service implements SettingService { .filter(po -> { SharedTypeEnum sharedTypeEnum = SharedTypeEnum.parseByValue(po.getSharedType()); //系统模板直接可见 - if(po.getSystemType()==1){ + if (chief || po.getSystemType() == 1) { return true; } //私有,只能自己看到 @@ -404,6 +407,7 @@ public class SettingServiceImpl extends Service implements SettingService { .systemType(po.getSystemType()) .sharedTypeName(SharedTypeEnum.parseByValue(po.getSharedType()).getDefaultLabel()) .systemTypeName(po.getSystemType() == 1 ? "系统模板" : "自定义") + .limits(CollUtil.isEmpty(po.getLimitIds()) ? "所有" : Optional.ofNullable(po.getLimitIds()).orElse(new ArrayList<>()).stream().map(id -> idNameMap.getOrDefault(id, "")).collect(Collectors.joining(","))) .limitIds(po.getLimitIds()) .setting(po.getSetting()) .canEdit(chief || (Objects.equals((long) user.getUID(), po.getCreator()) && po.getSystemType() == 0)) From ec0e74a8eb907edec4a0c31f6ebceaa56322186d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Thu, 5 Dec 2024 10:26:37 +0800 Subject: [PATCH 42/42] =?UTF-8?q?=E7=B3=BB=E7=BB=9F=E6=A8=A1=E6=9D=BFbug?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/engine/salary/service/impl/SettingServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/com/engine/salary/service/impl/SettingServiceImpl.java b/src/com/engine/salary/service/impl/SettingServiceImpl.java index 8e421905e..0cea169f8 100644 --- a/src/com/engine/salary/service/impl/SettingServiceImpl.java +++ b/src/com/engine/salary/service/impl/SettingServiceImpl.java @@ -408,7 +408,7 @@ public class SettingServiceImpl extends Service implements SettingService { .sharedTypeName(SharedTypeEnum.parseByValue(po.getSharedType()).getDefaultLabel()) .systemTypeName(po.getSystemType() == 1 ? "系统模板" : "自定义") .limits(CollUtil.isEmpty(po.getLimitIds()) ? "所有" : Optional.ofNullable(po.getLimitIds()).orElse(new ArrayList<>()).stream().map(id -> idNameMap.getOrDefault(id, "")).collect(Collectors.joining(","))) - .limitIds(po.getLimitIds()) + .limitIds(CollUtil.isEmpty(po.getLimitIds()) ? new ArrayList<>() : po.getLimitIds()) .setting(po.getSetting()) .canEdit(chief || (Objects.equals((long) user.getUID(), po.getCreator()) && po.getSystemType() == 0)) .build())