From 11304bebed0aaa477752536f6cef44d4b4b2532f Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Wed, 24 Apr 2024 15:55:41 +0800 Subject: [PATCH 001/218] =?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 002/218] =?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 003/218] =?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 004/218] =?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 005/218] =?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 006/218] =?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 007/218] =?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 75fb15928a735b590f70cce7e020d5d320e1c469 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Fri, 9 Aug 2024 10:21:40 +0800 Subject: [PATCH 008/218] =?UTF-8?q?=E6=B5=AE=E5=8A=A8=E8=96=AA=E9=85=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resource/sqlupgrade/DM/sql202408090103.sql | 42 ++ resource/sqlupgrade/GS/sql202408090103.sql | 42 ++ resource/sqlupgrade/JC/sql202408090103.sql | 42 ++ resource/sqlupgrade/Mysql/sql202408090103.sql | 43 ++ .../sqlupgrade/Oracle/sql202408090103.sql | 42 ++ resource/sqlupgrade/PG/sql202408090103.sql | 38 ++ .../sqlupgrade/SQLServer/sql202408090103.sql | 41 ++ resource/sqlupgrade/ST/sql202408090103.sql | 42 ++ .../salary/web/VariableArchiveController.java | 8 + .../salary/web/VariableItemController.java | 8 + .../salary/constant/SalaryItemConstant.java | 5 + .../datacollection/bo/VariableArchiveBO.java | 279 +++++++++ .../bo/VariableArchiveExcelBO.java | 297 +++++++++ .../dto/VariableArchiveItemDTO.java | 33 + .../dto/VariableArchiveListDTO.java | 87 +++ .../dto/VariableItemListDTO.java | 37 ++ .../VariableArchiveImportHandleParam.java | 98 +++ .../param/VariableArchiveQueryParam.java | 47 ++ .../param/VariableArchiveSaveParam.java | 35 ++ .../param/VariableItemQueryParam.java | 31 + .../param/VariableItemSaveParam.java | 41 ++ .../po/VariableArchiveItemPO.java | 76 +++ .../datacollection/po/VariableArchivePO.java | 49 ++ .../datacollection/po/VariableItemPO.java | 58 ++ .../salaryacct/bo/CalculateFormulaVarBO.java | 37 +- .../salaryacct/bo/SalaryAcctCalculateBO.java | 6 + .../SalaryFormulaReferenceEnum.java | 1 + .../VariableArchiveItemMapper.java | 87 +++ .../VariableArchiveItemMapper.xml | 349 +++++++++++ .../datacollection/VariableArchiveMapper.java | 81 +++ .../datacollection/VariableArchiveMapper.xml | 366 +++++++++++ .../datacollection/VariableItemMapper.java | 68 +++ .../datacollection/VariableItemMapper.xml | 210 +++++++ .../service/VariableArchiveItemService.java | 35 ++ .../service/VariableArchiveService.java | 72 +++ .../salary/service/VariableItemService.java | 66 ++ .../service/impl/RemoteExcelServiceImpl.java | 24 + .../impl/SalaryAcctCalculateServiceImpl.java | 13 +- .../impl/SalaryAcctResultServiceImpl.java | 7 + .../service/impl/SalaryItemServiceImpl.java | 1 + .../impl/VariableArchiveItemServiceImpl.java | 73 +++ .../impl/VariableArchiveServiceImpl.java | 567 ++++++++++++++++++ .../service/impl/VariableItemServiceImpl.java | 245 ++++++++ .../salary/web/VariableArchiveController.java | 276 +++++++++ .../salary/web/VariableItemController.java | 324 ++++++++++ .../wrapper/VariableArchiveWrapper.java | 190 ++++++ .../salary/wrapper/VariableItemWrapper.java | 75 +++ 47 files changed, 4692 insertions(+), 2 deletions(-) create mode 100644 resource/sqlupgrade/DM/sql202408090103.sql create mode 100644 resource/sqlupgrade/GS/sql202408090103.sql create mode 100644 resource/sqlupgrade/JC/sql202408090103.sql create mode 100644 resource/sqlupgrade/Mysql/sql202408090103.sql create mode 100644 resource/sqlupgrade/Oracle/sql202408090103.sql create mode 100644 resource/sqlupgrade/PG/sql202408090103.sql create mode 100644 resource/sqlupgrade/SQLServer/sql202408090103.sql create mode 100644 resource/sqlupgrade/ST/sql202408090103.sql create mode 100644 src/com/api/salary/web/VariableArchiveController.java create mode 100644 src/com/api/salary/web/VariableItemController.java create mode 100644 src/com/engine/salary/entity/datacollection/bo/VariableArchiveBO.java create mode 100644 src/com/engine/salary/entity/datacollection/bo/VariableArchiveExcelBO.java create mode 100644 src/com/engine/salary/entity/datacollection/dto/VariableArchiveItemDTO.java create mode 100644 src/com/engine/salary/entity/datacollection/dto/VariableArchiveListDTO.java create mode 100644 src/com/engine/salary/entity/datacollection/dto/VariableItemListDTO.java create mode 100644 src/com/engine/salary/entity/datacollection/param/VariableArchiveImportHandleParam.java create mode 100644 src/com/engine/salary/entity/datacollection/param/VariableArchiveQueryParam.java create mode 100644 src/com/engine/salary/entity/datacollection/param/VariableArchiveSaveParam.java create mode 100644 src/com/engine/salary/entity/datacollection/param/VariableItemQueryParam.java create mode 100644 src/com/engine/salary/entity/datacollection/param/VariableItemSaveParam.java create mode 100644 src/com/engine/salary/entity/datacollection/po/VariableArchiveItemPO.java create mode 100644 src/com/engine/salary/entity/datacollection/po/VariableArchivePO.java create mode 100644 src/com/engine/salary/entity/datacollection/po/VariableItemPO.java create mode 100644 src/com/engine/salary/mapper/datacollection/VariableArchiveItemMapper.java create mode 100644 src/com/engine/salary/mapper/datacollection/VariableArchiveItemMapper.xml create mode 100644 src/com/engine/salary/mapper/datacollection/VariableArchiveMapper.java create mode 100644 src/com/engine/salary/mapper/datacollection/VariableArchiveMapper.xml create mode 100644 src/com/engine/salary/mapper/datacollection/VariableItemMapper.java create mode 100644 src/com/engine/salary/mapper/datacollection/VariableItemMapper.xml create mode 100644 src/com/engine/salary/service/VariableArchiveItemService.java create mode 100644 src/com/engine/salary/service/VariableArchiveService.java create mode 100644 src/com/engine/salary/service/VariableItemService.java create mode 100644 src/com/engine/salary/service/impl/VariableArchiveItemServiceImpl.java create mode 100644 src/com/engine/salary/service/impl/VariableArchiveServiceImpl.java create mode 100644 src/com/engine/salary/service/impl/VariableItemServiceImpl.java create mode 100644 src/com/engine/salary/web/VariableArchiveController.java create mode 100644 src/com/engine/salary/web/VariableItemController.java create mode 100644 src/com/engine/salary/wrapper/VariableArchiveWrapper.java create mode 100644 src/com/engine/salary/wrapper/VariableItemWrapper.java diff --git a/resource/sqlupgrade/DM/sql202408090103.sql b/resource/sqlupgrade/DM/sql202408090103.sql new file mode 100644 index 000000000..c7f9f1c64 --- /dev/null +++ b/resource/sqlupgrade/DM/sql202408090103.sql @@ -0,0 +1,42 @@ +CREATE TABLE hrsa_variable_archive ( + id NUMBER(38,0) NOT NULL, + employee_id NUMBER(38,0) NULL , + salary_month DATE NULL, + create_time DATE NOT NULL, + update_time DATE NOT NULL, + creator NUMBER(38,0) NOT NULL, + delete_type int NOT NULL, + tenant_key varchar2(10) NULL, + PRIMARY KEY (id) +); +/ + +CREATE TABLE hrsa_variable_archive_item ( + id NUMBER(38,0) NOT NULL, + employee_id NUMBER(38,0) NOT NULL, + variable_archive_id NUMBER(38,0) NOT NULL, + variable_item_id NUMBER(38,0) NOT NULL, + item_value varchar2(255) NULL , + create_time DATE NOT NULL , + update_time DATE NOT NULL, + creator NUMBER(38,0) NOT NULL, + delete_type int NOT NULL , + tenant_key varchar2(10) NULL, + PRIMARY KEY (id) +); +/ + +CREATE TABLE hrsa_variable_item ( + id NUMBER(38,0) NOT NULL , + name varchar2(255) NOT NULL , + code varchar2(255) NOT NULL, + data_type varchar2(20) NULL, + create_time DATE NOT NULL, + update_time DATE NOT NULL, + creator NUMBER(38,0) NOT NULL, + delete_type int NOT NULL, + tenant_key varchar2(10) NULL , + PRIMARY KEY (id) +); +/ + diff --git a/resource/sqlupgrade/GS/sql202408090103.sql b/resource/sqlupgrade/GS/sql202408090103.sql new file mode 100644 index 000000000..c7f9f1c64 --- /dev/null +++ b/resource/sqlupgrade/GS/sql202408090103.sql @@ -0,0 +1,42 @@ +CREATE TABLE hrsa_variable_archive ( + id NUMBER(38,0) NOT NULL, + employee_id NUMBER(38,0) NULL , + salary_month DATE NULL, + create_time DATE NOT NULL, + update_time DATE NOT NULL, + creator NUMBER(38,0) NOT NULL, + delete_type int NOT NULL, + tenant_key varchar2(10) NULL, + PRIMARY KEY (id) +); +/ + +CREATE TABLE hrsa_variable_archive_item ( + id NUMBER(38,0) NOT NULL, + employee_id NUMBER(38,0) NOT NULL, + variable_archive_id NUMBER(38,0) NOT NULL, + variable_item_id NUMBER(38,0) NOT NULL, + item_value varchar2(255) NULL , + create_time DATE NOT NULL , + update_time DATE NOT NULL, + creator NUMBER(38,0) NOT NULL, + delete_type int NOT NULL , + tenant_key varchar2(10) NULL, + PRIMARY KEY (id) +); +/ + +CREATE TABLE hrsa_variable_item ( + id NUMBER(38,0) NOT NULL , + name varchar2(255) NOT NULL , + code varchar2(255) NOT NULL, + data_type varchar2(20) NULL, + create_time DATE NOT NULL, + update_time DATE NOT NULL, + creator NUMBER(38,0) NOT NULL, + delete_type int NOT NULL, + tenant_key varchar2(10) NULL , + PRIMARY KEY (id) +); +/ + diff --git a/resource/sqlupgrade/JC/sql202408090103.sql b/resource/sqlupgrade/JC/sql202408090103.sql new file mode 100644 index 000000000..c7f9f1c64 --- /dev/null +++ b/resource/sqlupgrade/JC/sql202408090103.sql @@ -0,0 +1,42 @@ +CREATE TABLE hrsa_variable_archive ( + id NUMBER(38,0) NOT NULL, + employee_id NUMBER(38,0) NULL , + salary_month DATE NULL, + create_time DATE NOT NULL, + update_time DATE NOT NULL, + creator NUMBER(38,0) NOT NULL, + delete_type int NOT NULL, + tenant_key varchar2(10) NULL, + PRIMARY KEY (id) +); +/ + +CREATE TABLE hrsa_variable_archive_item ( + id NUMBER(38,0) NOT NULL, + employee_id NUMBER(38,0) NOT NULL, + variable_archive_id NUMBER(38,0) NOT NULL, + variable_item_id NUMBER(38,0) NOT NULL, + item_value varchar2(255) NULL , + create_time DATE NOT NULL , + update_time DATE NOT NULL, + creator NUMBER(38,0) NOT NULL, + delete_type int NOT NULL , + tenant_key varchar2(10) NULL, + PRIMARY KEY (id) +); +/ + +CREATE TABLE hrsa_variable_item ( + id NUMBER(38,0) NOT NULL , + name varchar2(255) NOT NULL , + code varchar2(255) NOT NULL, + data_type varchar2(20) NULL, + create_time DATE NOT NULL, + update_time DATE NOT NULL, + creator NUMBER(38,0) NOT NULL, + delete_type int NOT NULL, + tenant_key varchar2(10) NULL , + PRIMARY KEY (id) +); +/ + diff --git a/resource/sqlupgrade/Mysql/sql202408090103.sql b/resource/sqlupgrade/Mysql/sql202408090103.sql new file mode 100644 index 000000000..e4640368e --- /dev/null +++ b/resource/sqlupgrade/Mysql/sql202408090103.sql @@ -0,0 +1,43 @@ +CREATE TABLE hrsa_variable_archive ( + id bigint NOT NULL, + employee_id bigint NULL , + salary_month datetime NULL, + create_time datetime NOT NULL, + update_time datetime NOT NULL, + creator bigint NOT NULL, + delete_type int NOT NULL, + tenant_key varchar(10) NULL, + PRIMARY KEY (id) +) +; + + + +CREATE TABLE hrsa_variable_archive_item ( + id bigint NOT NULL, + employee_id bigint NOT NULL, + variable_archive_id bigint NOT NULL, + variable_item_id bigint NOT NULL, + item_value varchar(255) NULL , + create_time datetime NOT NULL , + update_time datetime NOT NULL, + creator bigint NOT NULL, + delete_type int NOT NULL , + tenant_key varchar(10) NULL, + PRIMARY KEY (id) +) ; + + + +CREATE TABLE hrsa_variable_item ( + id bigint NOT NULL, + name varchar(255) NOT NULL, + code varchar(255) NOT NULL, + data_type varchar(20) NULL, + create_time datetime NOT NULL, + update_time datetime NOT NULL, + creator bigint NOT NULL, + delete_type int NOT NULL, + tenant_key varchar(10) NULL, + PRIMARY KEY (id) +); diff --git a/resource/sqlupgrade/Oracle/sql202408090103.sql b/resource/sqlupgrade/Oracle/sql202408090103.sql new file mode 100644 index 000000000..bac09a209 --- /dev/null +++ b/resource/sqlupgrade/Oracle/sql202408090103.sql @@ -0,0 +1,42 @@ +CREATE TABLE hrsa_variable_archive ( + id NUMBER(38,0) NOT NULL, + employee_id NUMBER(38,0) NULL , + salary_month DATE NULL, + create_time DATE NOT NULL, + update_time DATE NOT NULL, + creator NUMBER(38,0) NOT NULL, + delete_type int NOT NULL, + tenant_key varchar2(10) NULL, + PRIMARY KEY (id) +) +/ + +CREATE TABLE hrsa_variable_archive_item ( + id NUMBER(38,0) NOT NULL, + employee_id NUMBER(38,0) NOT NULL, + variable_archive_id NUMBER(38,0) NOT NULL, + variable_item_id NUMBER(38,0) NOT NULL, + item_value varchar2(255) NULL , + create_time DATE NOT NULL , + update_time DATE NOT NULL, + creator NUMBER(38,0) NOT NULL, + delete_type int NOT NULL , + tenant_key varchar2(10) NULL, + PRIMARY KEY (id) +) +/ + + +CREATE TABLE hrsa_variable_item ( + id NUMBER(38,0) NOT NULL , + name varchar2(255) NOT NULL , + code varchar2(255) NOT NULL, + data_type varchar2(20) NULL, + create_time DATE NOT NULL, + update_time DATE NOT NULL, + creator NUMBER(38,0) NOT NULL, + delete_type int NOT NULL, + tenant_key varchar2(10) NULL , + PRIMARY KEY (id) +) +/ \ No newline at end of file diff --git a/resource/sqlupgrade/PG/sql202408090103.sql b/resource/sqlupgrade/PG/sql202408090103.sql new file mode 100644 index 000000000..fa8d111f1 --- /dev/null +++ b/resource/sqlupgrade/PG/sql202408090103.sql @@ -0,0 +1,38 @@ +CREATE TABLE hrsa_variable_archive_item ( + id bigint NOT NULL, + employee_id bigint NOT NULL, + variable_archive_id bigint NOT NULL, + variable_item_id bigint NOT NULL, + item_value varchar(255) NULL, + create_time timestamp NOT NULL, + update_time timestamp NOT NULL, + creator bigint NOT NULL, + delete_type int NOT NULL, + tenant_key varchar(10) NULL, + PRIMARY KEY (id) +) ; + +CREATE TABLE hrsa_variable_archive ( + id bigint NOT NULL, + employee_id bigint NULL, + salary_month timestamp NULL , + create_time timestamp NOT NULL, + update_time timestamp NOT NULL, + creator bigint NOT NULL, + delete_type int NOT NULL, + tenant_key varchar(10) NULL, + PRIMARY KEY (id) +); + +CREATE TABLE hrsa_variable_item ( + id bigint NOT NULL, + name varchar(255) NOT NULL, + code varchar(255) NOT NULL, + data_type varchar(20)NULL , + create_time timestamp NOT NULL, + update_time timestamp NOT NULL, + creator bigint NOT NULL, + delete_type int NOT NULL, + tenant_key varchar(10) NULL, + PRIMARY KEY (id) +); \ No newline at end of file diff --git a/resource/sqlupgrade/SQLServer/sql202408090103.sql b/resource/sqlupgrade/SQLServer/sql202408090103.sql new file mode 100644 index 000000000..d6c193e59 --- /dev/null +++ b/resource/sqlupgrade/SQLServer/sql202408090103.sql @@ -0,0 +1,41 @@ +CREATE TABLE hrsa_variable_archive_item ( + id bigint NOT NULL, + employee_id bigint NOT NULL, + variable_archive_id bigint NOT NULL, + variable_item_id bigint NOT NULL, + item_value varchar(255) NULL, + create_time datetime NOT NULL, + update_time datetime NOT NULL, + creator bigint NOT NULL, + delete_type int NOT NULL, + tenant_key varchar(10) NULL, + PRIMARY KEY (id) +) +GO + +CREATE TABLE hrsa_variable_archive ( + id bigint NOT NULL, + employee_id bigint NULL, + salary_month datetime NULL , + create_time datetime NOT NULL, + update_time datetime NOT NULL, + creator bigint NOT NULL, + delete_type int NOT NULL, + tenant_key varchar(10) NULL, + PRIMARY KEY (id) +) +GO + +CREATE TABLE hrsa_variable_item ( + id bigint NOT NULL, + name varchar(255) NOT NULL, + code varchar(255) NOT NULL, + data_type varchar(20)NULL , + create_time datetime NOT NULL, + update_time datetime NOT NULL, + creator bigint NOT NULL, + delete_type int NOT NULL, + tenant_key varchar(10) NULL, + PRIMARY KEY (id) +) +GO \ No newline at end of file diff --git a/resource/sqlupgrade/ST/sql202408090103.sql b/resource/sqlupgrade/ST/sql202408090103.sql new file mode 100644 index 000000000..c7f9f1c64 --- /dev/null +++ b/resource/sqlupgrade/ST/sql202408090103.sql @@ -0,0 +1,42 @@ +CREATE TABLE hrsa_variable_archive ( + id NUMBER(38,0) NOT NULL, + employee_id NUMBER(38,0) NULL , + salary_month DATE NULL, + create_time DATE NOT NULL, + update_time DATE NOT NULL, + creator NUMBER(38,0) NOT NULL, + delete_type int NOT NULL, + tenant_key varchar2(10) NULL, + PRIMARY KEY (id) +); +/ + +CREATE TABLE hrsa_variable_archive_item ( + id NUMBER(38,0) NOT NULL, + employee_id NUMBER(38,0) NOT NULL, + variable_archive_id NUMBER(38,0) NOT NULL, + variable_item_id NUMBER(38,0) NOT NULL, + item_value varchar2(255) NULL , + create_time DATE NOT NULL , + update_time DATE NOT NULL, + creator NUMBER(38,0) NOT NULL, + delete_type int NOT NULL , + tenant_key varchar2(10) NULL, + PRIMARY KEY (id) +); +/ + +CREATE TABLE hrsa_variable_item ( + id NUMBER(38,0) NOT NULL , + name varchar2(255) NOT NULL , + code varchar2(255) NOT NULL, + data_type varchar2(20) NULL, + create_time DATE NOT NULL, + update_time DATE NOT NULL, + creator NUMBER(38,0) NOT NULL, + delete_type int NOT NULL, + tenant_key varchar2(10) NULL , + PRIMARY KEY (id) +); +/ + diff --git a/src/com/api/salary/web/VariableArchiveController.java b/src/com/api/salary/web/VariableArchiveController.java new file mode 100644 index 000000000..ccf82cd89 --- /dev/null +++ b/src/com/api/salary/web/VariableArchiveController.java @@ -0,0 +1,8 @@ +package com.api.salary.web; + +import javax.ws.rs.Path; + +@Path("/bs/hrmsalary/variableSalary") +public class VariableArchiveController extends com.engine.salary.web.VariableArchiveController { + +} diff --git a/src/com/api/salary/web/VariableItemController.java b/src/com/api/salary/web/VariableItemController.java new file mode 100644 index 000000000..6c3063aea --- /dev/null +++ b/src/com/api/salary/web/VariableItemController.java @@ -0,0 +1,8 @@ +package com.api.salary.web; + +import javax.ws.rs.Path; + +@Path("/bs/hrmsalary/variableSalaryItem") +public class VariableItemController extends com.engine.salary.web.VariableItemController { + +} diff --git a/src/com/engine/salary/constant/SalaryItemConstant.java b/src/com/engine/salary/constant/SalaryItemConstant.java index 217f1d4ea..58840b5f3 100644 --- a/src/com/engine/salary/constant/SalaryItemConstant.java +++ b/src/com/engine/salary/constant/SalaryItemConstant.java @@ -15,6 +15,11 @@ public class SalaryItemConstant { */ public static final String DYNAMIC_SUFFIX = "_salaryItem"; + /** + * 列表中浮动薪资项目动态列后缀标识 + */ + public static final String VARIABLE_ITEM_DYNAMIC_SUFFIX = "_variableItem"; + /** * 薪资核算导入缓存表头字段key */ diff --git a/src/com/engine/salary/entity/datacollection/bo/VariableArchiveBO.java b/src/com/engine/salary/entity/datacollection/bo/VariableArchiveBO.java new file mode 100644 index 000000000..92f09ec15 --- /dev/null +++ b/src/com/engine/salary/entity/datacollection/bo/VariableArchiveBO.java @@ -0,0 +1,279 @@ +package com.engine.salary.entity.datacollection.bo; + +import com.cloudstore.eccom.constant.WeaBoolAttr; +import com.cloudstore.eccom.pc.table.WeaTableColumn; +import com.engine.salary.constant.SalaryItemConstant; +import com.engine.salary.entity.datacollection.po.VariableItemPO; +import com.engine.salary.util.SalaryI18nUtil; + +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 浮动薪资档案 + * @Author: xzy + */ +public class VariableArchiveBO { + + @Override + public String toString() { + return "SalaryArchiveBO{}"; + } + + + + /** + * 构建表格动态列 + * + * @param variableItems + */ + public static List buildVariableArchiveTable(List variableItems) { + // 表格表头 + List columns = new ArrayList<>(); + WeaTableColumn idColumn = new WeaTableColumn("100px", "id", "id"); + idColumn.setIsPrimarykey(WeaBoolAttr.TRUE); + idColumn.setDisplay(WeaBoolAttr.FALSE); + columns.add(idColumn); + WeaTableColumn employeeIdColumn = new WeaTableColumn("100px", "人员信息表的主键id", "employeeId"); + employeeIdColumn.setDisplay(WeaBoolAttr.FALSE); + columns.add(employeeIdColumn); + columns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(85429, "姓名"), "username")); + columns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(86185, "部门"), "departmentName")); + columns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(86186, "手机号"), "mobile")); + columns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(86185, "工号"), "workcode")); + columns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(86186, "证件号码"), "idNo")); + columns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(86187, "入职日期"), "companystartdate")); + for (VariableItemPO variableItem : variableItems) { + columns.add(new WeaTableColumn("100px", variableItem.getName(), variableItem.getId() + SalaryItemConstant.VARIABLE_ITEM_DYNAMIC_SUFFIX)); + } + + return columns; + } + +// /** +// * 构建薪资档案数据 +// * +// * @param salaryArchiveList +// * @param salaryArchiveItemDataList +// * @param localDateRange +// * @param allEmployeeIds +// * @param isOnlyTaxAgent +// * @return +// */ +// public static List buildSalaryArchiveData(List salaryArchiveList, +// List salaryArchiveItemDataList, +// LocalDateRange localDateRange, +// List allEmployeeIds, +// boolean isOnlyTaxAgent) { +// // 开始日期 +// Date start = localDateRange.getFromDate(); +// // 结束日期 +// Date end = localDateRange.getEndDate(); +// +// List list = new ArrayList<>(); +// allEmployeeIds.forEach(e -> { +// // 同一个人的档案数据 +// List salaryArchives = salaryArchiveList.stream().filter(f -> f.getEmployeeId().equals(e)).collect(Collectors.toList()); +// List salaryArchiveIds = salaryArchives.stream().map(SalaryArchivePO::getId).collect(Collectors.toList()); +// // 同一个人的薪资项目调整历史数据 +// List salaryArchiveItems = salaryArchiveItemDataList.stream().filter(d -> salaryArchiveIds.contains(d.getSalaryArchiveId())).collect(Collectors.toList()); +// List salaryArchiveItemIds = salaryArchiveItems.stream().map(SalaryArchiveItemPO::getSalaryItemId).distinct().collect(Collectors.toList()); +// +// SalaryArchiveDataDTO salaryArchiveData = new SalaryArchiveDataDTO(); +// salaryArchiveData.setEmployeeId(e); +// List taxAgents = new ArrayList<>(); +// // 按个税扣缴义务人生效日期时间段切割 +// for (SalaryArchivePO salaryArchive : salaryArchives) { +// Date fromDate = salaryArchive.getPayStartDate(); +// Date endDate = salaryArchive.getPayEndDate(); +// // 起始发薪日不为空,且不能比结束日期晚,最后发薪日可空可不空,但是如果不为空,就不能比开始日期早,且起始发薪日不能晚于最后发薪日 +// boolean isEnable = fromDate != null && !fromDate.after(end) && (endDate == null || (!fromDate.after(endDate) && !endDate.before(start))); +// if (isEnable) { +// SalaryArchiveTaxAgentDataDTO taxAgent = new SalaryArchiveTaxAgentDataDTO(); +// taxAgent.setTaxAgentId(salaryArchive.getTaxAgentId()); +// // taxAgent.setIncomeCategory(salaryArchive.getIncomeCategory()); +// // taxAgent.setSalarySobIds(salaryArchiveSobList.stream().filter(sob->sob.getSalaryArchiveId().equals(salaryArchive.getId())).map(SalaryArchiveSobPO::getSalarySobId).distinct().collect(Collectors.toList())); +// taxAgent.setEffectiveDateRange(LocalDateRange.builder().fromDate((fromDate.before(start) ? start : fromDate)).endDate(endDate == null || endDate.after(end) ? end : endDate).build()); +// // 薪资项目数据按个税扣缴义务人切割 +// if (!isOnlyTaxAgent) { +// // 开始日期 +// Date startItem = taxAgent.getEffectiveDateRange().getFromDate(); +// // 结束日期 +// Date endItem = taxAgent.getEffectiveDateRange().getEndDate(); +// Date endTempItem = endItem; +// List salaryItemValues = new ArrayList<>(); +// for (Long salaryArchiveItemId : salaryArchiveItemIds) { +// boolean flag = false; +// for (SalaryArchiveItemPO salaryArchiveItem : salaryArchiveItems) { +// if (!salaryArchiveItemId.equals(salaryArchiveItem.getSalaryItemId()) || !salaryArchiveItem.getSalaryArchiveId().equals(salaryArchive.getId())) { +// continue; +// } +// Date fromDateItem = salaryArchiveItem.getEffectiveTime(); +// if (fromDateItem.after(endTempItem) || endTempItem.before(startItem)) { +// continue; +// } +// if (endTempItem.equals(startItem) && flag) { +// continue; +// } +// SalaryArchiveItemDataDTO salaryArchiveItemData = new SalaryArchiveItemDataDTO(); +// salaryArchiveItemData.setEffectiveDateRange(LocalDateRange.builder().fromDate((fromDateItem.before(startItem) ? startItem : fromDateItem)).endDate(endTempItem).build()); +// salaryArchiveItemData.setSalaryItemId(salaryArchiveItem.getSalaryItemId()); +// salaryArchiveItemData.setValue(salaryArchiveItem.getItemValue()); +// salaryItemValues.add(salaryArchiveItemData); +// flag = true; +// endTempItem = fromDateItem; +// } +// endTempItem = endItem; +// } +// taxAgent.setSalaryItemValues(salaryItemValues); +// } +// taxAgents.add(taxAgent); +// } +// } +// salaryArchiveData.setTaxAgents(taxAgents); +// list.add(salaryArchiveData); +// }); +// +// return list; +// } +// +// /** +// * 构建增量数据 +// * +// * @param taxAgentEmpChangeList +// * @param salaryArchiveList +// * @param salaryArchiveItemList +// * @param currentEmployeeId +// */ +// public static ChangeData buildChangeData(List taxAgentEmpChangeList, List salaryArchiveList, List salaryArchiveItemList, Long currentEmployeeId) { +// List changeIds = taxAgentEmpChangeList.stream().map(TaxAgentEmpChangePO::getId).collect(Collectors.toList()); +// // 根据个税扣缴义务人和人员以及增量类型分组 +// Map changeTypeMap = taxAgentEmpChangeList.stream().collect(Collectors.groupingBy(change -> change.getTaxAgentId() + "-" + change.getEmployeeId() + "-" + change.getChangeType(), Collectors.counting())); +// // 顺序倒转 +// Collections.reverse(taxAgentEmpChangeList); +// // 去重 +// taxAgentEmpChangeList = taxAgentEmpChangeList.stream() +// .collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(f -> f.getTaxAgentId() + "-" + f.getEmployeeId()))), ArrayList::new)); +// List taxAgentEmpChanges = taxAgentEmpChangeList +// .stream() +// // 不相等则保留,否则忽略 +// .filter(change -> !Objects.equals(changeTypeMap.get(change.getTaxAgentId() + "-" + change.getEmployeeId() + "-" + TaxAgentEmpChangeTypeEnum.ADD.getValue()) +// , changeTypeMap.get(change.getTaxAgentId() + "-" + change.getEmployeeId() + "-" + TaxAgentEmpChangeTypeEnum.DEL.getValue()))) +// .collect(Collectors.toList()); +// +// Date now = new Date(); +// Date today = new Date(); +// List stopStatus = Arrays.asList(SalaryArchiveStatusEnum.STOP_FROM_PENDING.getValue(), SalaryArchiveStatusEnum.STOP_FROM_SUSPEND.getValue()); +// List salaryArchiveAddTodoList = Lists.newArrayList(); +// List salaryArchiveUpdateTodoList = Lists.newArrayList(); +// List salaryArchiveItemAddTodos = Lists.newArrayList(); +// +// Map salaryArchiveListMap = SalaryEntityUtil.convert2Map(salaryArchiveList, k -> k.getTaxAgentId() + "-" + k.getEmployeeId()); +// taxAgentEmpChanges.forEach(change -> { +// SalaryArchivePO salaryArchive = salaryArchiveListMap.get(change.getTaxAgentId() + "-" + change.getEmployeeId()); +// // 如果是新增 说明:如果没有档案,则新增,如果有档案而且是停薪,就挪到待定薪中,以个税扣缴义务人和人员id判断唯一 +// if (change.getChangeType() == TaxAgentEmpChangeTypeEnum.ADD.getValue()) { +// if (salaryArchive != null) { +// // 停薪中跳回待定薪:从a调动到b又调动到a,或者是删除待办后再覆盖 +// if (stopStatus.contains(salaryArchive.getRunStatus())) { +// // 跳回待定薪 +// salaryArchive.setRunStatus(SalaryArchiveStatusEnum.PENDING.getValue()); +// if (salaryArchive.getRunStatus().equals(SalaryArchiveStatusEnum.STOP_FROM_SUSPEND.getValue())) { +// salaryArchive.setPayStartDate(today); +// salaryArchive.setPayEndDate(null); +// } +// salaryArchiveUpdateTodoList.add(salaryArchive); +// // 待停薪到停薪的就要复制最新的薪资项目 +// if (salaryArchive.getRunStatus().equals(SalaryArchiveStatusEnum.STOP_FROM_SUSPEND.getValue())) { +// // 拷贝最新的薪资项目数据 +// List salaryArchiveItemValuelList = salaryArchiveItemList.stream().filter(i -> i.getSalaryArchiveId().equals(salaryArchive.getId())).collect(Collectors.toList()); +// salaryArchiveItemValuelList.forEach(i -> { +// salaryArchiveItemAddTodos.add(SalaryArchiveItemPO.builder() +// .id(IdGenerator.generate()) +// .salaryArchiveId(salaryArchive.getId()) +// .employeeId(salaryArchive.getEmployeeId()) +// .effectiveTime(today) +// .adjustReason(SalaryArchiveItemAdjustReasonEnum.INIT.getValue()) +// .salaryItemId(i.getSalaryItemId()) +// .itemValue(i.getItemValue()) +// .description("") +// // 不用设置操作人 +// .operateTime(now) +// .createTime(now) +// .updateTime(now) +// .creator(currentEmployeeId) +// .deleteType(NumberUtils.INTEGER_ZERO) +// .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) +// .build()); +// }); +// } +// } +// } else { +// salaryArchiveAddTodoList.add(SalaryArchivePO.builder() +// .id(IdGenerator.generate()) +// .employeeId(change.getEmployeeId()) +// .taxAgentId(change.getTaxAgentId()) +// .employeeType(change.getEmployeeType()) +// .runStatus(SalaryArchiveStatusEnum.PENDING.getValue()) +// // .incomeCategory(IncomeCategoryEnum.WAGES_AND_SALARIES.getValue()) +// // .modifier(0L) +// .createTime(now) +// .updateTime(now) +// .creator(currentEmployeeId) +// .deleteType(NumberUtils.INTEGER_ZERO) +// .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) +// .build()); +// } +// // 如果是删除 说明:如果有档案并且是在定薪列表才处理,没档案不用管 +// } else if (change.getChangeType() == TaxAgentEmpChangeTypeEnum.DEL.getValue()) { +// if (salaryArchive != null) { +// if (salaryArchive.getRunStatus().equals(SalaryArchiveStatusEnum.FIXED.getValue())) { +// // 跳到待停薪 +// salaryArchive.setRunStatus(SalaryArchiveStatusEnum.SUSPEND.getValue()); +// // salaryArchive.setPayEndDate(today); +// salaryArchiveUpdateTodoList.add(salaryArchive); +// } else if (salaryArchive.getRunStatus().equals(SalaryArchiveStatusEnum.PENDING.getValue())) { +// // 跳到停薪 +// salaryArchive.setRunStatus(SalaryArchiveStatusEnum.STOP_FROM_PENDING.getValue()); +// salaryArchiveUpdateTodoList.add(salaryArchive); +// } +// } +// } +// }); +// +// return ChangeData.builder() +// .salaryArchiveAddTodoList(salaryArchiveAddTodoList) +// .salaryArchiveUpdateTodoList(salaryArchiveUpdateTodoList) +// .salaryArchiveItemAddTodos(salaryArchiveItemAddTodos) +// .changeIds(changeIds) +// .build(); +// } +// +// @Data +// @Builder +// @NoArgsConstructor +// @AllArgsConstructor +// public static class ChangeData { +// +// /** +// * 批量修改薪资档案 +// */ +// private List salaryArchiveAddTodoList; +// +// /** +// * 批量新增薪资档案 +// */ +// private List salaryArchiveUpdateTodoList; +// +// /** +// * 落库处理薪资项目 +// */ +// private List salaryArchiveItemAddTodos; +// +// /** +// * 删除增量数据 +// */ +// private List changeIds; +// } + +} diff --git a/src/com/engine/salary/entity/datacollection/bo/VariableArchiveExcelBO.java b/src/com/engine/salary/entity/datacollection/bo/VariableArchiveExcelBO.java new file mode 100644 index 000000000..2644c4236 --- /dev/null +++ b/src/com/engine/salary/entity/datacollection/bo/VariableArchiveExcelBO.java @@ -0,0 +1,297 @@ +package com.engine.salary.entity.datacollection.bo; + +import com.engine.core.impl.Service; +import com.engine.salary.constant.SalaryArchiveConstant; +import com.engine.salary.constant.SalaryDefaultTenantConstant; +import com.engine.salary.entity.datacollection.DataCollectionEmployee; +import com.engine.salary.entity.datacollection.param.VariableArchiveImportHandleParam; +import com.engine.salary.entity.datacollection.po.VariableArchiveItemPO; +import com.engine.salary.entity.datacollection.po.VariableArchivePO; +import com.engine.salary.entity.datacollection.po.VariableItemPO; +import com.engine.salary.enums.UserStatusEnum; +import com.engine.salary.enums.salaryarchive.SalaryArchiveFieldTypeEnum; +import com.engine.salary.util.SalaryI18nUtil; +import com.engine.salary.util.db.IdGenerator; +import com.google.common.base.Joiner; +import com.google.common.collect.Lists; +import com.google.common.collect.Maps; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.apache.commons.lang3.math.NumberUtils; +import weaver.general.Util; +import weaver.hrm.User; + +import java.util.*; +import java.util.regex.Pattern; +import java.util.stream.Collectors; + +/** + * @Description: 浮动薪资档案-excel + * @Author: xzy + * @Date: 2024-08-08 10:51 + */ +public class VariableArchiveExcelBO extends Service { + + public static String userNameI18n; + public static String departmentI18n; + public static String jobNumI18n; + public static String hrStatusI18n; + public static String repeatMsg; + public static String taxAgentI18n; + public static String taxAgentRangeMsg; + public static String empRepeatMsg; + + public static String notEmptyI18n; + + public static String incomeCategoryI18n; + public static String salarySobI18n; + public static String effectiveTimeI18n; + public static String payStartDateI18n; + public static String payEndDateI18n; + public static String adjustReasonI18n; + public static String listTypeErrMsg; + public static String taxAgentNoExist; + public static String incomeCategoryNoExist; + public static String currSalarySobI18n; + public static String noExist; + public static String effectiveTimeErr; + public static String adjustReasonNoExist; + public static String dateErr; + public static String payStartUnableAfterEnd; + + public static String salaryItemNoBeforeCurrentEffectiveTime; + public static String salaryItemAdjustNoSame; + public static String salaryItemAdjustNoSameIneffective; + + public static String salaryArchiveErr; + public static String numberErr; + + /** + * 初始化i18n + */ + public static void initI18n() { + userNameI18n = SalaryI18nUtil.getI18nLabel(85429, "姓名"); + departmentI18n = SalaryI18nUtil.getI18nLabel(86185, "部门"); + jobNumI18n = SalaryI18nUtil.getI18nLabel(86317, "工号"); + hrStatusI18n = SalaryI18nUtil.getI18nLabel(109332, "人事状态"); + repeatMsg = "[" + Joiner.on(",").join(new List[]{Arrays.asList(userNameI18n, departmentI18n, jobNumI18n, hrStatusI18n)}) + "]"; + taxAgentI18n = SalaryI18nUtil.getI18nLabel(86184, "个税扣缴义务人"); + taxAgentRangeMsg = SalaryI18nUtil.getI18nLabel(132633, "该员工不在该个税扣缴义务人的人员范围中") + "," + SalaryI18nUtil.getI18nLabel(127308, "请检查") + repeatMsg; + empRepeatMsg = SalaryI18nUtil.getI18nLabel(121899, "员工信息重复,请检查") + repeatMsg; + + notEmptyI18n = SalaryI18nUtil.getI18nLabel(100577, "不能为空"); + + incomeCategoryI18n = SalaryI18nUtil.getI18nLabel(121908, "收入所得项目"); + salarySobI18n = SalaryI18nUtil.getI18nLabel(87889, "薪资账套"); + effectiveTimeI18n = SalaryI18nUtil.getI18nLabel(85904, "生效日期"); + payStartDateI18n = SalaryI18nUtil.getI18nLabel(109527, "起始发薪日期"); + payEndDateI18n = SalaryI18nUtil.getI18nLabel(109329, "最后发薪日期"); + adjustReasonI18n = SalaryI18nUtil.getI18nLabel(85431, "调整原因"); + + listTypeErrMsg = SalaryI18nUtil.getI18nLabel(115527, "该条数据不符合当前列表导入要求或其他列表存在该档案,不可导入"); + + taxAgentNoExist = SalaryI18nUtil.getI18nLabel(100545, "个税扣缴义务人不存在"); + incomeCategoryNoExist = SalaryI18nUtil.getI18nLabel(121923, "收入所得项目不存在"); + + currSalarySobI18n = SalaryI18nUtil.getI18nLabel(127213, "该收入所得项目"); + noExist = SalaryI18nUtil.getI18nLabel(127236, "不存在"); + + effectiveTimeErr = SalaryI18nUtil.getI18nLabel(102497, "生效日期错误或格式不正确,正确格式示例为'2022-01-01'、'2022/1/1'"); + adjustReasonNoExist = SalaryI18nUtil.getI18nLabel(100591, "调整原因不存在"); + + dateErr = SalaryI18nUtil.getI18nLabel(109819, "日期错误或格式不正确,正确格式示例为'2022-01-01'、'2022/1/1'"); + + payStartUnableAfterEnd = SalaryI18nUtil.getI18nLabel(109214, "起始发薪日期不可晚于最后发薪日"); + + salaryItemNoBeforeCurrentEffectiveTime = SalaryI18nUtil.getI18nLabel(100429, "生效日期不可早于当前已生效的调整日期"); + salaryItemAdjustNoSame = SalaryI18nUtil.getI18nLabel(100432, "调整前后不可相同"); + salaryItemAdjustNoSameIneffective = SalaryI18nUtil.getI18nLabel(100434, "与未生效的调整后不可相同"); + + salaryArchiveErr = SalaryI18nUtil.getI18nLabel(101723, "该员工的薪资档案记录有误,请检查"); + numberErr = SalaryI18nUtil.getI18nLabel(100581, "请输入数字"); + + } + + + /** + * 校验单行数据 + * + * @param map + * @param headers + * @param excelComments + * @param errorCount + * @param importHandleParam + * @return + */ + public static boolean singleRowCheck(List allTodoVariableArchives, + Map map, + List headers, + List> excelComments, + int errorCount, + VariableArchiveImportHandleParam importHandleParam, + User user) { + + boolean isError = false; + String rowindex = "第" + map.get("index") + "行"; + // 1.姓名 + String userName = Optional.ofNullable(map.get(userNameI18n)).orElse("").toString(); + String deparmentName = Optional.ofNullable(map.get(departmentI18n)).orElse("").toString(); + String mobileName = Optional.ofNullable(map.get("手机号")).orElse("").toString(); + String workcode = Optional.ofNullable(map.get("工号")).orElse("").toString(); + String idNo = Optional.ofNullable(map.get("证件号码")).orElse("").toString(); + + String validType = importHandleParam.getEmpValidType(); + List emps = new ArrayList<>(); + if ("0".equals(validType)) { + //“0”代表姓名+部门+手机号的匹配原则,“1”代表工号为唯一匹配原则 + emps = importHandleParam.getEmployees().stream().filter(e -> + (StringUtils.isBlank(userName) || Objects.equals(e.getUsername(), userName)) + && (StringUtils.isBlank(deparmentName) || Objects.equals(e.getDepartmentName(), deparmentName)) + && (StringUtils.isBlank(mobileName) || Objects.equals(e.getMobile(), mobileName))).collect(Collectors.toList()); + } else if ("1".equals(validType)) { + emps = importHandleParam.getEmployees().stream().filter(e -> (StringUtils.isBlank(workcode) || Objects.equals(e.getWorkcode(), workcode))) + .collect(Collectors.toList()); + } + else if ("2".equals(validType)) { + emps = importHandleParam.getEmployees().stream().filter(e -> (StringUtils.isBlank(idNo) || Objects.equals(e.getIdNo(), idNo))) + .collect(Collectors.toList()); + } + + List employeeSameIds = new ArrayList<>(); + if (CollectionUtils.isNotEmpty(emps) && emps.size() > 1) { + employeeSameIds = emps.stream().filter(e -> UserStatusEnum.getNormalStatus().contains(e.getStatus())).map(DataCollectionEmployee::getEmployeeId).collect(Collectors.toList()); + } + if (CollectionUtils.isNotEmpty(emps) && emps.size() == 1) { + employeeSameIds = emps.stream().map(DataCollectionEmployee::getEmployeeId).collect(Collectors.toList()); + } + Long employeeId = CollectionUtils.isNotEmpty(employeeSameIds) && employeeSameIds.size() == 1 && employeeSameIds.get(0) > 0 ? employeeSameIds.get(0) : null; + + if (employeeId == null) { + Map errorMessageMap = Maps.newHashMap(); + errorMessageMap.put("message", rowindex + "查找人员失败,请确定姓名、部门、手机号正确且唯一"); + excelComments.add(errorMessageMap); + isError = true; + return isError; + } + + // 用于初始化导入数据校验 + map.put("employeeId", employeeId); + if (allTodoVariableArchives.contains(employeeId.toString())) { + Map errorMessageMap = Maps.newHashMap(); + errorMessageMap.put("message", rowindex + "存在重复数据"); + excelComments.add(errorMessageMap); + isError = true; + return isError; + } else { + allTodoVariableArchives.add(employeeId.toString()); + } + + // 构建薪资档案 + VariableArchivePO finalVariableArchive = buildVariableArchive(employeeId, importHandleParam); + map.put("variableArchiveId", finalVariableArchive.getId()); + List needDelArchiveItemIds = new ArrayList<>(); + for (int j = 0; j < headers.size(); j++) { + String header = headers.get(j); + Object key = header; + if (key == null) { + continue; + } + String cellVal = Optional.ofNullable(map.get(key.toString())).orElse("").toString(); + + + boolean isNotEmpty = StringUtils.isNotEmpty(cellVal); + // 1.姓名列处理 + if (isNotEmpty && userNameI18n.equals(key.toString())) { + if (CollectionUtils.isEmpty(employeeSameIds) || employeeSameIds.size() > 1) { + Map errorMessageMap = Maps.newHashMap(); + errorMessageMap.put("message", rowindex + header + empRepeatMsg); + excelComments.add(errorMessageMap); + isError = true; + } + } else { + // 浮动薪资项目数据 + if (!isError) { + Optional optionalVariableItem = importHandleParam.getVariableItems().stream().filter(e -> Util.formatMultiLang(e.getName(), String.valueOf(user.getLanguage())).equals(key)).findFirst(); + + if (optionalVariableItem.isPresent()) { + VariableItemPO variableItemPO = optionalVariableItem.get(); + // 数值类型判断 + boolean isNotNumber = variableItemPO.getDataType().equals(SalaryArchiveFieldTypeEnum.NUMBER.getValue()) && StringUtils.isNotEmpty(cellVal) && !Pattern.matches(SalaryArchiveConstant.NUMBER_REGEX, cellVal); + if (isNotNumber) { + Map errorMessageMap = Maps.newHashMap(); + errorMessageMap.put("message", rowindex + key + numberErr); + excelComments.add(errorMessageMap); + isError = true; + } + Long variableItemId = variableItemPO.getId(); + // 已生效 + List effectiveList = Optional.ofNullable(importHandleParam.getEffectiveItemListMap().get(finalVariableArchive.getId() + "-" + variableItemId)).orElse(Lists.newArrayList()); + // 先删除后新增 + needDelArchiveItemIds.addAll(effectiveList.stream().map(VariableArchiveItemPO::getId).collect(Collectors.toList())); + + // 导入时不需要处理的项目 + boolean isInitNull = CollectionUtils.isEmpty(effectiveList) && StringUtils.isEmpty(cellVal); + if (!isError && !isInitNull && StringUtils.isNotBlank(cellVal)) { + importHandleParam.getVariableArchiveItemSaves().add(VariableArchiveItemPO.builder() + .id(IdGenerator.generate()) + .employeeId(finalVariableArchive.getEmployeeId()) + .variableArchiveId(finalVariableArchive.getId()) + .variableItemId(variableItemId) + .itemValue(cellVal) + .creator(importHandleParam.getCurrentEmployeeId()) + .createTime(importHandleParam.getNowTime()) + .updateTime(importHandleParam.getNowTime()) + .deleteType(NumberUtils.INTEGER_ZERO) + .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) + .build()); + } + } + } + } + } + + // 如果当前校验行没问题,修改起始发薪日期和最终发薪日期等 + if (isError) { + // 将前面添加好的数据给过滤掉 + importHandleParam.setVariableArchiveSaves(importHandleParam.getVariableArchiveSaves().stream().filter(f -> !finalVariableArchive.getId().equals(f.getId())).collect(Collectors.toList())); + importHandleParam.setVariableArchiveItemSaves(importHandleParam.getVariableArchiveItemSaves().stream().filter(f -> !finalVariableArchive.getId().equals(f.getVariableArchiveId())).collect(Collectors.toList())); + } else { + importHandleParam.getVariableArchiveItemDelSalaryItemIds().addAll(needDelArchiveItemIds); + } + + return isError; + } + + + /** + * 构建浮动薪资档案对象 + * + * @param employeeId + * @param importHandleParam + * @return + */ + public static VariableArchivePO buildVariableArchive(Long employeeId, VariableArchiveImportHandleParam importHandleParam) { + VariableArchivePO variableArchivePO = importHandleParam.getVariableArchivesMap().get(employeeId); + if (variableArchivePO == null) { + // 新增浮动档案 + variableArchivePO = VariableArchivePO.builder() + .id(IdGenerator.generate()) + .employeeId(employeeId) + .salaryMonth(importHandleParam.getSalaryMonthDate()) + .createTime(importHandleParam.getNowTime()) + .updateTime(importHandleParam.getNowTime()) + .creator(importHandleParam.getCurrentEmployeeId()) + .deleteType(NumberUtils.INTEGER_ZERO) + .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) + .build(); + importHandleParam.getVariableArchiveSaves().add(variableArchivePO); + } + return variableArchivePO; + } + + + @Override + public String toString() { + return "SalaryArchiveExcelBO{}"; + } +} diff --git a/src/com/engine/salary/entity/datacollection/dto/VariableArchiveItemDTO.java b/src/com/engine/salary/entity/datacollection/dto/VariableArchiveItemDTO.java new file mode 100644 index 000000000..f672cf27b --- /dev/null +++ b/src/com/engine/salary/entity/datacollection/dto/VariableArchiveItemDTO.java @@ -0,0 +1,33 @@ +package com.engine.salary.entity.datacollection.dto; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 浮动薪酬档案明细 + *

Copyright: Copyright (c) 2024

+ *

Company: 泛微软件

+ * + * @author xzy + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class VariableArchiveItemDTO { + + private Long id; + + /** + * 浮动项目id + */ + private Long variableItemId; + + /** + * 浮动值 + */ + private String itemValue; +} diff --git a/src/com/engine/salary/entity/datacollection/dto/VariableArchiveListDTO.java b/src/com/engine/salary/entity/datacollection/dto/VariableArchiveListDTO.java new file mode 100644 index 000000000..7851c3cb2 --- /dev/null +++ b/src/com/engine/salary/entity/datacollection/dto/VariableArchiveListDTO.java @@ -0,0 +1,87 @@ +package com.engine.salary.entity.datacollection.dto; + +import com.cloudstore.eccom.pc.table.WeaTableType; +import com.engine.salary.annotation.I18n; +import com.engine.salary.annotation.SalaryTable; +import com.engine.salary.annotation.TableTitle; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; + +/** + * 浮动薪资档案列表 + *

Copyright: Copyright (c) 2024

+ *

Company: 泛微软件

+ * + * @author xzy + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@SalaryTable(pageId = "bd985583-f84j-p2aj-p288-2hw3hosy6r6,", tableType = WeaTableType.CHECKBOX) +public class VariableArchiveListDTO { + + @TableTitle(title = "id", dataIndex = "id", key = "id") + private Long id; + + @TableTitle(title = "人员信息表的主键id", dataIndex = "employeeId", key = "employeeId") + private Long employeeId; + + private Date salaryMonth; + + /** + * 姓名 + */ + @TableTitle(title = "姓名", dataIndex = "username", key = "username") + @I18n + private String username; + + /** + * 分部 + */ + @TableTitle(title = "分部", dataIndex = "subcompanyName", key = "subcompanyName") + @I18n + private String subcompanyName; + + /** + * 部门 + */ + @TableTitle(title = "部门", dataIndex = "departmentName", key = "departmentName") + @I18n + private String departmentName; + + /** + * 电话 + */ + @TableTitle(title = "电话", dataIndex = "mobile", key = "mobile") + private String mobile; + + + /** + * 工号 + */ + @TableTitle(title = "工号", dataIndex = "workcode", key = "workcode") + private String workcode; + + /** + * 证件号码 + */ + @TableTitle(title = "证件号码", dataIndex = "idNo", key = "idNo") + private String idNo; + + /** + * 入职日期 + */ + private String companystartdate; + + /** + * 离职日期 + */ + private String dismissdate; + +} diff --git a/src/com/engine/salary/entity/datacollection/dto/VariableItemListDTO.java b/src/com/engine/salary/entity/datacollection/dto/VariableItemListDTO.java new file mode 100644 index 000000000..dc38ca99b --- /dev/null +++ b/src/com/engine/salary/entity/datacollection/dto/VariableItemListDTO.java @@ -0,0 +1,37 @@ +package com.engine.salary.entity.datacollection.dto; + +import com.engine.salary.annotation.TableTitle; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 浮动薪资项目列表 + *

Copyright: Copyright (c) 2024

+ *

Company: 泛微软件

+ * + * @author xzy + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class VariableItemListDTO { + + @TableTitle(title = "id", dataIndex = "id", key = "id") + private Long id; + + @TableTitle(title = "项目名称", dataIndex = "name", key = "name") + private String name; + + @TableTitle(title = "字段类型", dataIndex = "dataType", key = "dataType") + private String dataType; + + /** + * 是否可删除 + */ + private boolean canDelete; + +} diff --git a/src/com/engine/salary/entity/datacollection/param/VariableArchiveImportHandleParam.java b/src/com/engine/salary/entity/datacollection/param/VariableArchiveImportHandleParam.java new file mode 100644 index 000000000..4b3622869 --- /dev/null +++ b/src/com/engine/salary/entity/datacollection/param/VariableArchiveImportHandleParam.java @@ -0,0 +1,98 @@ +package com.engine.salary.entity.datacollection.param; + +import com.engine.salary.entity.datacollection.DataCollectionEmployee; +import com.engine.salary.entity.datacollection.po.VariableArchiveItemPO; +import com.engine.salary.entity.datacollection.po.VariableArchivePO; +import com.engine.salary.entity.datacollection.po.VariableItemPO; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Collection; +import java.util.Date; +import java.util.List; +import java.util.Map; + +/** + * 数据采集-浮动薪酬导入参数 + *

Copyright: Copyright (c) 2024

+ *

Company: 泛微软件

+ * + * @author xzy + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class VariableArchiveImportHandleParam { + + // 上传文件id + String imageId; + + // 薪资所属月 + String salaryMonth; + + Date salaryMonthDate; + + // --------------------------- + Long currentEmployeeId; + + String tenantKey; + + /** + * 人员验证方式 + */ + String empValidType; + + /** + * 获取租户下所有的人员 + */ + List employees; + + /** + * 获取所有可被引用的浮动薪资项目 + */ + List variableItems; + + /** + * 查询已有的浮动薪资档案基本数据 + */ + Map variableArchivesMap; + + /** + * 浮动薪资项目id + */ + Collection variableItemIds; + + /** + * 查询已生效的浮动薪资项目数据 + */ + Map> effectiveItemListMap; + + /** + * 当前时间 + */ + Date nowTime = new Date(); + + /** + * 当天 + */ + Date today = new Date(); + + /** + * 待保存浮动薪资档案 + */ + List variableArchiveSaves; + + /** + * 待保存浮动薪资档案-浮动薪资项目 + */ + List variableArchiveItemSaves; + + /** + * 待删除浮动薪资档案-浮动薪资项目 + */ + List variableArchiveItemDelSalaryItemIds; +} diff --git a/src/com/engine/salary/entity/datacollection/param/VariableArchiveQueryParam.java b/src/com/engine/salary/entity/datacollection/param/VariableArchiveQueryParam.java new file mode 100644 index 000000000..e7296d645 --- /dev/null +++ b/src/com/engine/salary/entity/datacollection/param/VariableArchiveQueryParam.java @@ -0,0 +1,47 @@ +package com.engine.salary.entity.datacollection.param; + +import com.engine.salary.common.BaseQueryParam; +import com.engine.salary.util.valid.DataCheck; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Collection; +import java.util.Date; +import java.util.List; + + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +//数据采集-浮动薪酬查询参数 +public class VariableArchiveQueryParam extends BaseQueryParam { + + // 主键id + private Collection ids; + + // 主键id + private Long id; + + // 薪资年月 + @DataCheck(require = true,message = "薪资所属月不能为空") + private String salaryMonth; + + private Date salaryMonthDate; + + // 姓名 + private String username; + + // 部门id + private List departmentIds; + + // 工号 + private String workcode; + + // 下载模板是否带数据 + private boolean hasData; + + private List employeeIds; +} diff --git a/src/com/engine/salary/entity/datacollection/param/VariableArchiveSaveParam.java b/src/com/engine/salary/entity/datacollection/param/VariableArchiveSaveParam.java new file mode 100644 index 000000000..e94448ffd --- /dev/null +++ b/src/com/engine/salary/entity/datacollection/param/VariableArchiveSaveParam.java @@ -0,0 +1,35 @@ +package com.engine.salary.entity.datacollection.param; + +import com.engine.salary.entity.datacollection.dto.VariableArchiveItemDTO; +import com.engine.salary.util.valid.DataCheck; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; +import java.util.List; + + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +//数据采集-浮动薪酬档案保存参数 +public class VariableArchiveSaveParam { + + // 主键id + private Long id; + + // 薪资年月 + @DataCheck(require = true,message = "薪资所属月不能为空") + private String salaryMonth; + + private Date salaryMonthDate; + + // 人员id + private Long employeeId; + + // 浮动值 + private List itemValueList; +} diff --git a/src/com/engine/salary/entity/datacollection/param/VariableItemQueryParam.java b/src/com/engine/salary/entity/datacollection/param/VariableItemQueryParam.java new file mode 100644 index 000000000..a2dcc0b0b --- /dev/null +++ b/src/com/engine/salary/entity/datacollection/param/VariableItemQueryParam.java @@ -0,0 +1,31 @@ +package com.engine.salary.entity.datacollection.param; + +import com.engine.salary.common.BaseQueryParam; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +// 浮动薪酬项目查询参数 +public class VariableItemQueryParam extends BaseQueryParam { + + /** + * 浮动薪酬项目名称 + */ + private String itemName; + + + private Long id; + + /** + * 项目ids + */ + private List itemIds; +} diff --git a/src/com/engine/salary/entity/datacollection/param/VariableItemSaveParam.java b/src/com/engine/salary/entity/datacollection/param/VariableItemSaveParam.java new file mode 100644 index 000000000..4b82aaef3 --- /dev/null +++ b/src/com/engine/salary/entity/datacollection/param/VariableItemSaveParam.java @@ -0,0 +1,41 @@ +package com.engine.salary.entity.datacollection.param; + +import com.engine.salary.enums.salaryitem.SalaryDataTypeEnum; +import com.engine.salary.util.valid.DataCheck; +import com.engine.salary.util.valid.RuntimeTypeEnum; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + *

Copyright: Copyright (c) 2024

+ *

Company: 泛微软件

+ * + * @author xzy + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class VariableItemSaveParam { + + //主键id + @JsonSerialize(using = ToStringSerializer.class) + @DataCheck(require = true, runtime = {RuntimeTypeEnum.UPDATE}, message = "id不允许为空") + private Long id; + + //名称 + @DataCheck(require = true, max = 40, message = "名称不允许为空,名称不能超过40个字符") + private String name; + + /** + * 字段类型 + * @see SalaryDataTypeEnum + */ + @DataCheck(require = true, message = "字段类型不允许为空") + private String dataType; +} diff --git a/src/com/engine/salary/entity/datacollection/po/VariableArchiveItemPO.java b/src/com/engine/salary/entity/datacollection/po/VariableArchiveItemPO.java new file mode 100644 index 000000000..52e9772e4 --- /dev/null +++ b/src/com/engine/salary/entity/datacollection/po/VariableArchiveItemPO.java @@ -0,0 +1,76 @@ +package com.engine.salary.entity.datacollection.po; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Collection; +import java.util.Date; + +/** + * @author Harryxzy + * @ClassName VariableArchiveItemPO + * @date 2024/08/07 9:15 + * @description 浮动薪酬档案明细 + */ + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class VariableArchiveItemPO { + + private Long id; + + /** + * 员工id + */ + private Long employeeId; + + /** + * 浮动薪资档案主键id + */ + private Long variableArchiveId; + + /** + * 浮动项目id + */ + private Long variableItemId; + + /** + * 浮动值 + */ + private String itemValue; + + /** + * 创建时间 + */ + private Date createTime; + + /** + * 更新时间 + */ + private Date updateTime; + + /** + * 创建人 + */ + private Long creator; + + /** + * 是否已删除。0:未删除、1:已删除 + */ + private Integer deleteType; + + /** + * 租户ID + */ + private String tenantKey; + + + //主键id集合 + private Collection ids; + private Collection variableArchiveIds; + +} diff --git a/src/com/engine/salary/entity/datacollection/po/VariableArchivePO.java b/src/com/engine/salary/entity/datacollection/po/VariableArchivePO.java new file mode 100644 index 000000000..b3735be89 --- /dev/null +++ b/src/com/engine/salary/entity/datacollection/po/VariableArchivePO.java @@ -0,0 +1,49 @@ +package com.engine.salary.entity.datacollection.po; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Collection; +import java.util.Date; + +/** + * @author Harryxzy + * @ClassName VariableArchivePO + * @date 2024/08/07 9:16 + * @description 浮动薪酬档案 + */ + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class VariableArchivePO { + + private Long id; + + /** + * 人员id + */ + private Long employeeId; + + /** + * 薪资月份 + */ + private Date salaryMonth; + + private Date createTime; + + private Date updateTime; + + private Long creator; + + private Integer deleteType; + + private String tenantKey; + + //主键id集合 + private Collection ids; + +} diff --git a/src/com/engine/salary/entity/datacollection/po/VariableItemPO.java b/src/com/engine/salary/entity/datacollection/po/VariableItemPO.java new file mode 100644 index 000000000..78cfa8136 --- /dev/null +++ b/src/com/engine/salary/entity/datacollection/po/VariableItemPO.java @@ -0,0 +1,58 @@ +package com.engine.salary.entity.datacollection.po; + +import com.engine.salary.enums.salaryitem.SalaryDataTypeEnum; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Collection; +import java.util.Date; + +/** + * @author Harryxzy + * @ClassName VariableItemPO + * @date 2024/08/07 9:14 + * @description 浮动薪酬项目 + */ + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class VariableItemPO { + + /** + * 浮动项目id + */ + private Long id; + + /** + * 浮动项目名称 + */ + private String name; + + private String code; + + /** + * 字段类型。string:字符、number:数字 + * + * @see SalaryDataTypeEnum + */ + private String dataType; + + private Date createTime; + + private Date updateTime; + + private Long creator; + + private Integer deleteType; + + private String tenantKey; + + + //主键id集合 + private Collection ids; + +} diff --git a/src/com/engine/salary/entity/salaryacct/bo/CalculateFormulaVarBO.java b/src/com/engine/salary/entity/salaryacct/bo/CalculateFormulaVarBO.java index 44575341b..5035085ac 100644 --- a/src/com/engine/salary/entity/salaryacct/bo/CalculateFormulaVarBO.java +++ b/src/com/engine/salary/entity/salaryacct/bo/CalculateFormulaVarBO.java @@ -4,6 +4,7 @@ import cn.hutool.core.util.NumberUtil; import com.engine.salary.annotation.SalaryFormulaVar; import com.engine.salary.common.LocalDateRange; import com.engine.salary.constant.SalaryFormulaFieldConstant; +import com.engine.salary.constant.SalaryItemConstant; import com.engine.salary.entity.datacollection.AddUpDeduction; import com.engine.salary.entity.datacollection.AddUpSituation; import com.engine.salary.entity.datacollection.DataCollectionEmployee; @@ -95,6 +96,11 @@ public class CalculateFormulaVarBO { */ private List salaryAcctResultPOS; + /** + * 浮动薪资档案 + */ + private List> variableArchiveList; + public CalculateFormulaVarBO(List simpleEmployees, List salaryArchiveData, List addUpSituationPOS, @@ -102,7 +108,8 @@ public class CalculateFormulaVarBO { List otherDeductionPOS, List> welfareData, List attendQuoteDataDTOS, - List salaryAcctResultPOS) { + List salaryAcctResultPOS, + List> variableArchiveList) { this.simpleEmployees = simpleEmployees; this.salaryArchiveData = salaryArchiveData; this.addUpSituationPOS = addUpSituationPOS; @@ -111,6 +118,7 @@ public class CalculateFormulaVarBO { this.welfareData = welfareData; this.attendQuoteDataDTOS = attendQuoteDataDTOS; this.salaryAcctResultPOS = salaryAcctResultPOS; + this.variableArchiveList = variableArchiveList; } /** @@ -125,6 +133,8 @@ public class CalculateFormulaVarBO { handleSalaryAcctResult(salaryAcctCalculateBO, resultMap); // 处理薪资档案 handleSalaryArchiveData(salaryAcctCalculateBO, resultMap); + // 处理浮动薪资档案 + handleVariableArchiveData(salaryAcctCalculateBO, resultMap); // 处理往期累计情况 handleAddUpSituation(resultMap); // 处理累计专项附加扣除 @@ -242,6 +252,31 @@ public class CalculateFormulaVarBO { } } + private void handleVariableArchiveData(SalaryAcctCalculateBO salaryAcctCalculateBO, Map> resultMap) { + // 浮动薪资可选字段 + Map> tempMap = Maps.newHashMapWithExpectedSize(variableArchiveList.size()); + variableArchiveList.forEach(map -> { + Long key = Long.valueOf(map.get("employeeId").toString()); + List formulaVarValues = tempMap.computeIfAbsent(key, k -> Lists.newArrayList()); + formulaVarValues.addAll(salaryAcctCalculateBO.getVariableItems().stream().map(field -> { + String fieldId = SalaryFormulaReferenceEnum.VARIABLE_ITEM.getValue() + + SalaryFormulaFieldConstant.FIELD_ID_SEPARATOR + + field.getCode(); + + + String value = map.getOrDefault(field.getId() + SalaryItemConstant.VARIABLE_ITEM_DYNAMIC_SUFFIX, StringUtils.EMPTY) == null ? StringUtils.EMPTY + : map.getOrDefault(field.getId() + SalaryItemConstant.VARIABLE_ITEM_DYNAMIC_SUFFIX, StringUtils.EMPTY).toString(); + return new FormulaVarValue().setFieldId(fieldId).setFieldValue(value); + }).collect(Collectors.toList())); + }); + // 填充到返回结果集中 + for (SalaryAcctEmployeePO salaryAcctEmployeePO : salaryAcctCalculateBO.getSalaryAcctEmployeePOS()) { + List formulaVarValues = resultMap.computeIfAbsent(salaryAcctEmployeePO.getEmployeeId() + "_" + salaryAcctEmployeePO.getTaxAgentId(), + k -> Lists.newArrayList()); + formulaVarValues.addAll(tempMap.getOrDefault(salaryAcctEmployeePO.getEmployeeId(), Collections.emptyList())); + } + } + /** * 根据调薪计薪规则处理薪资档案的调薪,转换成公式编辑器中的变量 * diff --git a/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctCalculateBO.java b/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctCalculateBO.java index 22af2b674..afba2a327 100644 --- a/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctCalculateBO.java +++ b/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctCalculateBO.java @@ -1,6 +1,7 @@ package com.engine.salary.entity.salaryacct.bo; import com.engine.salary.entity.datacollection.dto.AttendQuoteFieldListDTO; +import com.engine.salary.entity.datacollection.po.VariableItemPO; import com.engine.salary.entity.salaryacct.po.SalaryAcctEmployeePO; import com.engine.salary.entity.salaryacct.po.SalaryAcctRecordPO; import com.engine.salary.entity.salaryacct.po.SalaryAcctResultPO; @@ -125,6 +126,11 @@ public class SalaryAcctCalculateBO { */ private TaxDeclarationFunctionEnum taxDeclarationFunction; + /** + * 浮动薪资字段 + */ + private List variableItems; + @Data @AllArgsConstructor public static class Result { diff --git a/src/com/engine/salary/enums/salaryformula/SalaryFormulaReferenceEnum.java b/src/com/engine/salary/enums/salaryformula/SalaryFormulaReferenceEnum.java index 8cf79c880..da3b76213 100644 --- a/src/com/engine/salary/enums/salaryformula/SalaryFormulaReferenceEnum.java +++ b/src/com/engine/salary/enums/salaryformula/SalaryFormulaReferenceEnum.java @@ -26,6 +26,7 @@ public enum SalaryFormulaReferenceEnum implements BaseEnum { OTHER_DEDUCTION("otherDeduction", "其他免税扣除", 93849), SALARY_ACCT_EMPLOYEE("salaryAcctEmployee", "核算基本信息", 85368), SALARY_CYCLE("SalaryCycle", "核算日期", 85368), + VARIABLE_ITEM("variableItem", "浮动薪资项目", 0), ISSUED("ISSUED", "已发", 0); private String value; diff --git a/src/com/engine/salary/mapper/datacollection/VariableArchiveItemMapper.java b/src/com/engine/salary/mapper/datacollection/VariableArchiveItemMapper.java new file mode 100644 index 000000000..3b2e89f34 --- /dev/null +++ b/src/com/engine/salary/mapper/datacollection/VariableArchiveItemMapper.java @@ -0,0 +1,87 @@ +package com.engine.salary.mapper.datacollection; + +import com.engine.salary.entity.datacollection.po.VariableArchiveItemPO; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @author Harryxzy + * @ClassName VariableArchiveItemMapper + * @date 2024/08/07 9:22 + * @description 浮动薪酬档案明细 + */ +public interface VariableArchiveItemMapper { + /** + * 查询所有记录 + * + * @return 返回集合,没有返回空List + */ + List listAll(); + + /** + * 条件查询 + * + * @return 返回集合,没有返回空List + */ + List listSome(@Param("param") VariableArchiveItemPO variableArchiveItem); + + + /** + * 根据主键查询 + * + * @param id 主键 + * @return 返回记录,没有返回null + */ + VariableArchiveItemPO getById(Long id); + + /** + * 新增,忽略null字段 + * + * @param variableArchiveItem 新增的记录 + * @return 返回影响行数 + */ + int insertIgnoreNull(VariableArchiveItemPO variableArchiveItem); + + /** + * 修改,修改所有字段 + * + * @param variableArchiveItem 修改的记录 + * @return 返回影响行数 + */ + int update(VariableArchiveItemPO variableArchiveItem); + + /** + * 修改,忽略null字段 + * + * @param variableArchiveItem 修改的记录 + * @return 返回影响行数 + */ + int updateIgnoreNull(VariableArchiveItemPO variableArchiveItem); + + /** + * 删除记录 + * + * @param variableArchiveItem 待删除的记录 + * @return 返回影响行数 + */ + int delete(VariableArchiveItemPO variableArchiveItem); + + /** + * 查询浮动薪酬档案中已使用的浮动薪资项目 + * + * @return + */ + List listUsingItems(); + + /** + * + * @param insertList + * @return + */ + int batchInsert(@Param("collection") List insertList); + + void deleteByIds(@Param("collection")List part); + + void deleteByArchiveIds(@Param("collection")List part); +} diff --git a/src/com/engine/salary/mapper/datacollection/VariableArchiveItemMapper.xml b/src/com/engine/salary/mapper/datacollection/VariableArchiveItemMapper.xml new file mode 100644 index 000000000..6c6c83c84 --- /dev/null +++ b/src/com/engine/salary/mapper/datacollection/VariableArchiveItemMapper.xml @@ -0,0 +1,349 @@ + + + + + + + + + + + + + + + + + + + t.id + , t.employee_id + , t.variable_archive_id + , t.variable_item_id + , t.item_value + , t.create_time + , t.update_time + , t.creator + , t.delete_type + , t.tenant_key + + + + + + + + + + + + + + + + + INSERT INTO hrsa_variable_archive_item + + + + id, + + + employee_id, + + + variable_archive_id, + + + variable_item_id, + + + item_value, + + + create_time, + + + update_time, + + + creator, + + + delete_type, + + + tenant_key, + + + + + #{id}, + + + #{employeeId}, + + + #{variableArchiveId}, + + + #{variableItemId}, + + + #{itemValue}, + + + #{createTime}, + + + #{updateTime}, + + + #{creator}, + + + #{deleteType}, + + + #{tenantKey}, + + + + + + INSERT INTO hrsa_variable_archive_item ( + id + , employee_id + , variable_archive_id + , variable_item_id + , item_value + , create_time + , update_time + , creator + , delete_type + , tenant_key + ) + VALUES + + ( + #{item.id}, + #{item.employeeId}, + #{item.variableArchiveId}, + #{item.variableItemId}, + #{item.itemValue}, + #{item.createTime}, + #{item.updateTime}, + #{item.creator}, + #{item.deleteType}, + #{item.tenantKey} + ) + + + + INSERT INTO hrsa_variable_archive_item ( + id + , employee_id + , variable_archive_id + , variable_item_id + , item_value + , create_time + , update_time + , creator + , delete_type + , tenant_key + ) + + + select + #{item.id,jdbcType=DOUBLE}, + #{item.employeeId,jdbcType=DOUBLE}, + #{item.variableArchiveId,jdbcType=DOUBLE}, + #{item.variableItemId,jdbcType=DOUBLE}, + #{item.itemValue,jdbcType=VARCHAR}, + #{item.createTime,jdbcType=DATE}, + #{item.updateTime,jdbcType=DATE}, + #{item.creator,jdbcType=DOUBLE}, + #{item.deleteType,jdbcType=INTEGER}, + #{item.tenantKey,jdbcType=VARCHAR} + from dual + + + + + INSERT INTO hrsa_variable_archive_item ( + id + , employee_id + , variable_archive_id + , variable_item_id + , item_value + , create_time + , update_time + , creator + , delete_type + , tenant_key + ) + VALUES + ( + #{item.id}, + #{item.employeeId}, + #{item.variableArchiveId}, + #{item.variableItemId}, + #{item.itemValue}, + #{item.createTime}, + #{item.updateTime}, + #{item.creator}, + #{item.deleteType}, + #{item.tenantKey} + ) + + + + + + UPDATE hrsa_variable_archive_item + + employee_id=#{employeeId}, + variable_archive_id=#{variableArchiveId}, + variable_item_id=#{variableItemId}, + item_value=#{itemValue}, + create_time=#{createTime}, + update_time=#{updateTime}, + creator=#{creator}, + delete_type=#{deleteType}, + tenant_key=#{tenantKey}, + + WHERE id = #{id} AND delete_type = 0 + + + + + + UPDATE hrsa_variable_archive_item + + + employee_id=#{employeeId}, + + + variable_archive_id=#{variableArchiveId}, + + + variable_item_id=#{variableItemId}, + + + item_value=#{itemValue}, + + + create_time=#{createTime}, + + + update_time=#{updateTime}, + + + creator=#{creator}, + + + delete_type=#{deleteType}, + + + tenant_key=#{tenantKey}, + + + WHERE id = #{id} AND delete_type = 0 + + + + + + UPDATE hrsa_variable_archive_item + SET delete_type=1 + WHERE id = #{id} AND delete_type = 0 + + + + UPDATE hrsa_variable_archive_item + SET delete_type=1 + WHERE delete_type = 0 + + AND id IN + + #{id} + + + + + + UPDATE hrsa_variable_archive_item + SET delete_type=1 + WHERE delete_type = 0 + + AND variable_archive_id IN + + #{id} + + + + + + \ No newline at end of file diff --git a/src/com/engine/salary/mapper/datacollection/VariableArchiveMapper.java b/src/com/engine/salary/mapper/datacollection/VariableArchiveMapper.java new file mode 100644 index 000000000..635c22d98 --- /dev/null +++ b/src/com/engine/salary/mapper/datacollection/VariableArchiveMapper.java @@ -0,0 +1,81 @@ +package com.engine.salary.mapper.datacollection; + +import com.engine.salary.entity.datacollection.dto.VariableArchiveListDTO; +import com.engine.salary.entity.datacollection.param.VariableArchiveQueryParam; +import com.engine.salary.entity.datacollection.po.VariableArchivePO; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @author Harryxzy + * @ClassName VariableArchiveMapper + * @date 2024/08/07 9:18 + * @description 浮动薪酬档案 + */ +public interface VariableArchiveMapper { + /** + * 查询所有记录 + * + * @return 返回集合,没有返回空List + */ + List listAll(); + + /** + * 条件查询 + * + * @return 返回集合,没有返回空List + */ + List listSome(VariableArchivePO variableArchive); + + + /** + * 根据主键查询 + * + * @param id 主键 + * @return 返回记录,没有返回null + */ + VariableArchivePO getById(Long id); + + /** + * 新增,忽略null字段 + * + * @param variableArchive 新增的记录 + * @return 返回影响行数 + */ + int insertIgnoreNull(VariableArchivePO variableArchive); + + /** + * 修改,修改所有字段 + * + * @param variableArchive 修改的记录 + * @return 返回影响行数 + */ + int update(VariableArchivePO variableArchive); + + /** + * 修改,忽略null字段 + * + * @param variableArchive 修改的记录 + * @return 返回影响行数 + */ + int updateIgnoreNull(VariableArchivePO variableArchive); + + /** + * 删除记录 + * + * @param variableArchive 待删除的记录 + * @return 返回影响行数 + */ + int delete(VariableArchivePO variableArchive); + + /** + * 删除记录 + * + * @param variableArchiveIds 待删除的记录id + * @return 返回影响行数 + */ + int deleteByIds(@Param("ids")List variableArchiveIds); + + List list(@Param("param")VariableArchiveQueryParam queryParam); +} diff --git a/src/com/engine/salary/mapper/datacollection/VariableArchiveMapper.xml b/src/com/engine/salary/mapper/datacollection/VariableArchiveMapper.xml new file mode 100644 index 000000000..ff279f29c --- /dev/null +++ b/src/com/engine/salary/mapper/datacollection/VariableArchiveMapper.xml @@ -0,0 +1,366 @@ + + + + + + + + + + + + + + + + + t.id + , t.employee_id + , t.salary_month + , t.create_time + , t.update_time + , t.creator + , t.delete_type + , t.tenant_key + + + + + + + + + + + + + + t.id + , t.employee_id + , t.salary_month + , t.create_time + , t.update_time + , t.creator + , t.delete_type + , e.mobile + , e.workcode + , e.certificatenum as idNo + , e.lastname as username + , e.certificatenum as idNo + , e.companystartdate as companystartdate + , e.enddate as dismissdate + , d.departmentname AS departmentName + , c.subcompanyname AS subcompanyName + + + + + + + + + + INSERT INTO hrsa_variable_archive + + + + id, + + + employee_id, + + + salary_month, + + + create_time, + + + update_time, + + + creator, + + + delete_type, + + + tenant_key, + + + + + #{id}, + + + #{employeeId}, + + + #{salaryMonth}, + + + #{createTime}, + + + #{updateTime}, + + + #{creator}, + + + #{deleteType}, + + + #{tenantKey}, + + + + + + + + + UPDATE hrsa_variable_archive + + employee_id=#{employeeId}, + salary_month=#{salaryMonth}, + create_time=#{createTime}, + update_time=#{updateTime}, + creator=#{creator}, + delete_type=#{deleteType}, + tenant_key=#{tenantKey}, + + WHERE id = #{id} AND delete_type = 0 + + + + + + UPDATE hrsa_variable_archive + + + employee_id=#{employeeId}, + + + salary_month=#{salaryMonth}, + + + create_time=#{createTime}, + + + update_time=#{updateTime}, + + + creator=#{creator}, + + + delete_type=#{deleteType}, + + + tenant_key=#{tenantKey}, + + + WHERE id = #{id} AND delete_type = 0 + + + + + + UPDATE hrsa_variable_archive + SET delete_type=1 + WHERE id = #{id} AND delete_type = 0 + + + + UPDATE hrsa_variable_archive + SET delete_type=1 + WHERE delete_type = 0 + AND id IN + + #{id} + + + + + \ No newline at end of file diff --git a/src/com/engine/salary/mapper/datacollection/VariableItemMapper.java b/src/com/engine/salary/mapper/datacollection/VariableItemMapper.java new file mode 100644 index 000000000..a886e64c3 --- /dev/null +++ b/src/com/engine/salary/mapper/datacollection/VariableItemMapper.java @@ -0,0 +1,68 @@ +package com.engine.salary.mapper.datacollection; + +import com.engine.salary.entity.datacollection.po.VariableItemPO; + +import java.util.List; + +/** + * @author Harryxzy + * @ClassName VariableItemMapper + * @date 2024/08/07 9:26 + * @description 浮动薪酬项目 + */ +public interface VariableItemMapper { + /** + * 查询所有记录 + * + * @return 返回集合,没有返回空List + */ + List listAll(); + + /** + * 条件查询 + * + * @return 返回集合,没有返回空List + */ + List listSome(VariableItemPO variableItem); + + + /** + * 根据主键查询 + * + * @param id 主键 + * @return 返回记录,没有返回null + */ + VariableItemPO getById(Long id); + + /** + * 新增,忽略null字段 + * + * @param variableItem 新增的记录 + * @return 返回影响行数 + */ + int insertIgnoreNull(VariableItemPO variableItem); + + /** + * 修改,修改所有字段 + * + * @param variableItem 修改的记录 + * @return 返回影响行数 + */ + int update(VariableItemPO variableItem); + + /** + * 修改,忽略null字段 + * + * @param variableItem 修改的记录 + * @return 返回影响行数 + */ + int updateIgnoreNull(VariableItemPO variableItem); + + /** + * 删除记录 + * + * @param variableItem 待删除的记录 + * @return 返回影响行数 + */ + int delete(VariableItemPO variableItem); +} diff --git a/src/com/engine/salary/mapper/datacollection/VariableItemMapper.xml b/src/com/engine/salary/mapper/datacollection/VariableItemMapper.xml new file mode 100644 index 000000000..f7b634091 --- /dev/null +++ b/src/com/engine/salary/mapper/datacollection/VariableItemMapper.xml @@ -0,0 +1,210 @@ + + + + + + + + + + + + + + + + + + t.id + , t.name + , t.code + , t.data_type + , t.create_time + , t.update_time + , t.creator + , t.delete_type + , t.tenant_key + + + + + + + + + + + + + + + INSERT INTO hrsa_variable_item + + + + id, + + + name, + + + code, + + + data_type, + + + create_time, + + + update_time, + + + creator, + + + delete_type, + + + tenant_key, + + + + + #{id}, + + + #{name}, + + + #{code}, + + + #{dataType}, + + + #{createTime}, + + + #{updateTime}, + + + #{creator}, + + + #{deleteType}, + + + #{tenantKey}, + + + + + + + UPDATE hrsa_variable_item + + name=#{name}, + code=#{code}, + data_type=#{dataType}, + create_time=#{createTime}, + update_time=#{updateTime}, + creator=#{creator}, + delete_type=#{deleteType}, + tenant_key=#{tenantKey}, + + WHERE id = #{id} AND delete_type = 0 + + + + + + UPDATE hrsa_variable_item + + + name=#{name}, + + + code=#{code}, + + + data_type=#{dataType}, + + + create_time=#{createTime}, + + + update_time=#{updateTime}, + + + creator=#{creator}, + + + delete_type=#{deleteType}, + + + tenant_key=#{tenantKey}, + + + WHERE id = #{id} AND delete_type = 0 + + + + + + UPDATE hrsa_variable_item + SET delete_type=1 + WHERE id = #{id} AND delete_type = 0 + + + + \ No newline at end of file diff --git a/src/com/engine/salary/service/VariableArchiveItemService.java b/src/com/engine/salary/service/VariableArchiveItemService.java new file mode 100644 index 000000000..fd9dcee4e --- /dev/null +++ b/src/com/engine/salary/service/VariableArchiveItemService.java @@ -0,0 +1,35 @@ +package com.engine.salary.service; + +import com.engine.salary.entity.datacollection.po.VariableArchiveItemPO; + +import java.util.List; + +/** + * @author Harryxzy + * @ClassName VariableArchiveItemService + * @date 2024/08/07 9:29 + * @description 浮动薪资档案明细值 + */ +public interface VariableArchiveItemService { + + /** + * 根据浮动薪资档案id获取 + * + * @param variableArchiveIds + * @return + */ + List listByVariableArchiveIds(List variableArchiveIds); + + /** + * 查询浮动薪酬档案中已使用的浮动薪资项目 + * + * @return + */ + List listUsingItems(); + + int batchInsert(List variableArchiveItemList); + + void deleteByIds(List variableArchiveItemIds); + + void deleteByArchiveIds(List variableArchiveIds); +} diff --git a/src/com/engine/salary/service/VariableArchiveService.java b/src/com/engine/salary/service/VariableArchiveService.java new file mode 100644 index 000000000..0360b892f --- /dev/null +++ b/src/com/engine/salary/service/VariableArchiveService.java @@ -0,0 +1,72 @@ +package com.engine.salary.service; + +import com.engine.salary.entity.datacollection.dto.VariableArchiveListDTO; +import com.engine.salary.entity.datacollection.dto.VariableItemListDTO; +import com.engine.salary.entity.datacollection.param.VariableArchiveImportHandleParam; +import com.engine.salary.entity.datacollection.param.VariableArchiveQueryParam; +import com.engine.salary.entity.datacollection.param.VariableArchiveSaveParam; +import com.engine.salary.util.page.PageInfo; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; + +import java.time.YearMonth; +import java.util.Collection; +import java.util.List; +import java.util.Map; + +/** + * 数据采集-浮动薪酬 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author xzy + * @version 1.0 + **/ +public interface VariableArchiveService { + + /** + * 查询浮动薪酬档案(分页) + * + * @param queryParam + * @return + */ + PageInfo listPage(VariableArchiveQueryParam queryParam); + + List list(VariableArchiveQueryParam queryParam); + + /** + * 构建浮动薪资档案数据 + * + * @param variableArchives + * @return + */ + List> buildVariableArchiveData(Collection variableArchives); + + /** + * 创建浮动薪酬档案 + * + * @param saveParam + */ + void createData(VariableArchiveSaveParam saveParam); + + /** + * 浮动薪资档案明细 + * + * @param queryParam + * @return + */ + Map getDetail(VariableArchiveQueryParam queryParam); + + List getCreateForm(); + + XSSFWorkbook downloadTemplate(VariableArchiveQueryParam param); + + Map preview(VariableArchiveImportHandleParam importParam); + + Map importData(VariableArchiveImportHandleParam importParam); + + XSSFWorkbook export(VariableArchiveQueryParam param); + + void deleteSelectVariableArchive(Collection deleteIds); + + List> listBySalaryMonthAndEmployeeIds(YearMonth salaryMonth, List employeeIds); +} diff --git a/src/com/engine/salary/service/VariableItemService.java b/src/com/engine/salary/service/VariableItemService.java new file mode 100644 index 000000000..ef2dade37 --- /dev/null +++ b/src/com/engine/salary/service/VariableItemService.java @@ -0,0 +1,66 @@ +package com.engine.salary.service; + +import com.engine.salary.entity.datacollection.dto.VariableItemListDTO; +import com.engine.salary.entity.datacollection.param.VariableItemQueryParam; +import com.engine.salary.entity.datacollection.param.VariableItemSaveParam; +import com.engine.salary.entity.datacollection.po.VariableItemPO; +import com.engine.salary.util.page.PageInfo; + +import java.util.List; + +/** + * @author Harryxzy + * @ClassName VariableItemService + * @date 2024/08/07 9:30 + * @description 浮动薪酬项目 + */ +public interface VariableItemService { + + VariableItemPO getById(Long id); + + List listByIds(List ids); + + /** + * 获取所有的浮动薪酬项目 + * + * @return + */ + List listAll(); + + /** + * 获取浮动薪资项目列表(分页) + * + * @param queryParam + * @return + */ + PageInfo listPage(VariableItemQueryParam queryParam); + + /** + * 新建浮动薪酬项目 + * + * @param saveParam + */ + Integer save(VariableItemSaveParam saveParam); + + /** + * 更新浮动薪酬项目 + * + * @param saveParam + */ + VariableItemPO update(VariableItemSaveParam saveParam); + + /** + * 删除浮动薪资项目 + * + * @param itemIds + */ + void deleteItems(List itemIds); + + /** + * 浮动薪酬项目详细信息 + * + * @param id + * @return + */ + VariableItemListDTO getDetail(Long id); +} diff --git a/src/com/engine/salary/service/impl/RemoteExcelServiceImpl.java b/src/com/engine/salary/service/impl/RemoteExcelServiceImpl.java index 57a098cca..b0424ad47 100644 --- a/src/com/engine/salary/service/impl/RemoteExcelServiceImpl.java +++ b/src/com/engine/salary/service/impl/RemoteExcelServiceImpl.java @@ -10,6 +10,7 @@ import com.engine.salary.entity.datacollection.DataCollectionEmployee; import com.engine.salary.entity.datacollection.dto.AttendQuoteFieldListDTO; import com.engine.salary.entity.datacollection.param.AttendQuoteFieldQueryParam; import com.engine.salary.entity.datacollection.po.OtherDeductionPO; +import com.engine.salary.entity.datacollection.po.VariableItemPO; import com.engine.salary.entity.salaryacct.po.SalaryAcctEmployeePO; import com.engine.salary.entity.salaryformula.dto.SalaryFormulaTaxRateDTO; import com.engine.salary.entity.salaryformula.po.FormulaVar; @@ -77,6 +78,10 @@ public class RemoteExcelServiceImpl extends Service implements RemoteExcelServic return (SalarySobItemService) ServiceUtil.getService(SalarySobItemServiceImpl.class, user); } + private VariableItemService getVariableItemService(User user) { + return ServiceUtil.getService(VariableItemServiceImpl.class, user); + } + // @Override // public ExcelResult aggregation(AggFunc func, String sourceId, String fieldId, List filterFormDataList, Map extendParam, // DataCollectionEmployee employee) { @@ -166,6 +171,9 @@ public class RemoteExcelServiceImpl extends Service implements RemoteExcelServic case SALARY_CYCLE: vars = convert2FormulaVar(SalarySobCycleDTO.class, referenceEnum.getValue() + ""); break; + case VARIABLE_ITEM: + vars = variableArchives2FormulaVar(referenceEnum, extendParam); + break; default: break; } @@ -251,6 +259,8 @@ public class RemoteExcelServiceImpl extends Service implements RemoteExcelServic convert2FormulaVar(SalaryAcctEmployeePO.class, SalarySQLReferenceEnum.SALARY_ACCT_EMPLOYEE.getValue() + "")); result.put(SalarySQLReferenceEnum.SALARY_CYCLE.getDefaultLabel(), convert2FormulaVar(SalarySobCycleDTO.class, SalarySQLReferenceEnum.SALARY_CYCLE.getValue() + "")); + result.put(SalaryFormulaReferenceEnum.VARIABLE_ITEM.getDefaultLabel(), + variableArchives2FormulaVar(SalaryFormulaReferenceEnum.VARIABLE_ITEM, null)); return result; } return result; @@ -402,6 +412,20 @@ public class RemoteExcelServiceImpl extends Service implements RemoteExcelServic }).collect(Collectors.toList()); } + private List variableArchives2FormulaVar(SalaryFormulaReferenceEnum referenceEnum, Map extendParam) { + List variableItems; + variableItems = getVariableItemService(user).listAll(); + return variableItems.stream() + .map(e -> { + FormulaVar formulaVar = new FormulaVar(); + formulaVar.setFieldId(referenceEnum.getValue() + SalaryFormulaFieldConstant.FIELD_ID_SEPARATOR + e.getCode()); + formulaVar.setName(e.getName()); + formulaVar.setSource("" + referenceEnum.getValue()); + formulaVar.setFieldType(e.getDataType()); + return formulaVar; + }).collect(Collectors.toList()); + } + private List convert2FormulaVar(Class clazz, String formId) { Field[] declaredFields = clazz.getDeclaredFields(); List formulaVars = Lists.newArrayListWithExpectedSize(declaredFields.length); diff --git a/src/com/engine/salary/service/impl/SalaryAcctCalculateServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctCalculateServiceImpl.java index 09927a388..727d9b13b 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctCalculateServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctCalculateServiceImpl.java @@ -110,6 +110,10 @@ public class SalaryAcctCalculateServiceImpl extends Service implements SalaryAcc return ServiceUtil.getService(SalaryAcctEmployeeServiceImpl.class, user); } + private VariableArchiveService getVariableArchiveService(User user) { + return ServiceUtil.getService(VariableArchiveServiceImpl.class, user); + } + @Override public void calculate(SalaryAcctCalculateBO salaryAcctCalculateBO, DataCollectionEmployee simpleEmployee, List salarySobBackItems) { StopWatch sw = new StopWatch("核算耗时明细,id:" + salaryAcctCalculateBO.getSalaryAcctRecordPO().getId() + ""); @@ -158,6 +162,10 @@ public class SalaryAcctCalculateServiceImpl extends Service implements SalaryAcc List salaryAcctEmployeeIds = SalaryEntityUtil.properties(salaryAcctCalculateBO.getSalaryAcctEmployeePOS(), SalaryAcctEmployeePO::getId, Collectors.toList()); List salaryAcctResultPOS = getSalaryAcctResultService(user).listBySalaryAcctEmployeeIds(salaryAcctEmployeeIds); sw.stop(); + // 查询浮动薪资 + sw.start("查询浮动薪资"); + List> variableArchiveList = getVariableArchiveService(user).listBySalaryMonthAndEmployeeIds(salarySobCycleDTO.getSalaryMonth(), employeeIds); + sw.stop(); // 薪资回算时回算前的核算结果 (没有回算项) sw.start("查询薪资回算时回算前的核算结果"); Map> collect = salaryAcctResultPOS.stream().collect(Collectors.groupingBy(k -> k.getEmployeeId() + "-" + k.getTaxAgentId() + "-" + k.getSalaryItemId())); @@ -181,7 +189,7 @@ public class SalaryAcctCalculateServiceImpl extends Service implements SalaryAcc sw.stop(); // 10、转换成公式编辑器中的变量 sw.start("转换成公式编辑器中的变量"); - CalculateFormulaVarBO calculateFormulaVarBO = new CalculateFormulaVarBO(simpleEmployees, salaryArchiveData, addUpSituationPOS, addUpDeductionPOS, otherDeductionPOS, welfareData, attendQuoteDataDTOS, salaryAcctResultPOS); + CalculateFormulaVarBO calculateFormulaVarBO = new CalculateFormulaVarBO(simpleEmployees, salaryArchiveData, addUpSituationPOS, addUpDeductionPOS, otherDeductionPOS, welfareData, attendQuoteDataDTOS, salaryAcctResultPOS, variableArchiveList); Map> formulaVarMap = calculateFormulaVarBO.convert2FormulaVar(salaryAcctCalculateBO); sw.stop(); sw.start("数据结构准备"); @@ -211,6 +219,9 @@ public class SalaryAcctCalculateServiceImpl extends Service implements SalaryAcc for (List salaryItemIds : salaryAcctCalculateBO.getSalaryItemIdWithPriorityList()) { // 同一运算优先级下的薪资项目逐个独立运算 for (Long salaryItemId : salaryItemIds) { + if (salaryItemId.equals(1723115683903L)) { + System.out.println("d"); + } String resultValue; SalaryItemPO salaryItemPO = salaryItemMap.get(salaryItemId); ExpressFormula expressFormula; diff --git a/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java index 36f19b6f6..60d81063f 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java @@ -11,6 +11,7 @@ import com.engine.salary.constant.SalaryDefaultTenantConstant; import com.engine.salary.encrypt.EncryptUtil; import com.engine.salary.entity.datacollection.DataCollectionEmployee; import com.engine.salary.entity.datacollection.dto.AttendQuoteFieldListDTO; +import com.engine.salary.entity.datacollection.po.VariableItemPO; import com.engine.salary.entity.hrm.DeptInfo; import com.engine.salary.entity.hrm.JobCallInfo; import com.engine.salary.entity.hrm.PositionInfo; @@ -191,6 +192,10 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe return ServiceUtil.getService(TaxAgentAdminServiceImpl.class, user); } + private VariableItemService getVariableItemService(User user) { + return ServiceUtil.getService(VariableItemServiceImpl.class, user); + } + private SalaryCheckResultService salaryCheckResultService; private SalaryAcctSobConfigService getSalaryAcctSobConfigService(User user) { @@ -803,6 +808,7 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe Map welfareColumns = getSIAccountService(user).welfareColumns(); // 7、查询考勤引用的所有字段 List attendQuoteFieldListDTOS = getAttendQuoteFieldService(user).listAll(); + List variableItemPOS = getVariableItemService(user).listAll(); // 8、查询公式详情 Set formulaIds = SalaryEntityUtil.properties(salarySobItemPOS, SalarySobItemPO::getFormulaId); @@ -877,6 +883,7 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe .setChildMonitor(childMonitor) .setResults(calculateResults) .setCalculateKey(calculateKey) + .setVariableItems(variableItemPOS) .setTaxDeclarationFunction(taxDeclarationFunction); List finalSalarySobBackItems = salarySobBackItems; LocalRunnable localRunnable = new LocalRunnable() { diff --git a/src/com/engine/salary/service/impl/SalaryItemServiceImpl.java b/src/com/engine/salary/service/impl/SalaryItemServiceImpl.java index a63bec4e6..798ff8146 100644 --- a/src/com/engine/salary/service/impl/SalaryItemServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryItemServiceImpl.java @@ -407,6 +407,7 @@ public class SalaryItemServiceImpl extends Service implements SalaryItemService List formulaVars = getSalaryFormulaService(user).listVarByFormulaIds(usingFormulaIds); List itemCode = formulaVars.stream() .map(FormulaVar::getFieldId) + .map(v -> v.replaceAll("variableItem_", "")) .map(v -> v.replaceAll("salaryItem_", "")) .map(v -> v.replaceAll("salaryArchives_", "")) .map(v -> v.replaceAll("ISSUED_", "")) diff --git a/src/com/engine/salary/service/impl/VariableArchiveItemServiceImpl.java b/src/com/engine/salary/service/impl/VariableArchiveItemServiceImpl.java new file mode 100644 index 000000000..15332c159 --- /dev/null +++ b/src/com/engine/salary/service/impl/VariableArchiveItemServiceImpl.java @@ -0,0 +1,73 @@ +package com.engine.salary.service.impl; + +import com.engine.core.impl.Service; +import com.engine.salary.entity.datacollection.po.VariableArchiveItemPO; +import com.engine.salary.mapper.datacollection.VariableArchiveItemMapper; +import com.engine.salary.service.VariableArchiveItemService; +import com.engine.salary.util.db.MapperProxyFactory; +import com.google.common.collect.Lists; +import org.apache.commons.collections4.CollectionUtils; + +import java.util.Collections; +import java.util.List; + +/** + * @author Harryxzy + * @ClassName VariableArchiveItemServiceImpl + * @date 2024/08/07 9:29 + * @description 浮动薪酬档案明细 + */ +public class VariableArchiveItemServiceImpl extends Service implements VariableArchiveItemService { + + private VariableArchiveItemMapper getVariableArchiveItemMapper(){ + return MapperProxyFactory.getProxy(VariableArchiveItemMapper.class); + } + + /** + * 根据浮动薪资档案id获取 + * + * @param variableArchiveIds + * @return + */ + @Override + public List listByVariableArchiveIds(List variableArchiveIds) { + if (CollectionUtils.isEmpty(variableArchiveIds)) { + return Collections.emptyList(); + } + return getVariableArchiveItemMapper().listSome(VariableArchiveItemPO.builder().variableArchiveIds(variableArchiveIds).build()); + } + + /** + * 查询浮动薪酬档案中已使用的浮动薪资项目 + * + * @return + */ + @Override + public List listUsingItems() { + return getVariableArchiveItemMapper().listUsingItems(); + } + + @Override + public int batchInsert(List insertList) { + return getVariableArchiveItemMapper().batchInsert(insertList); + } + + @Override + public void deleteByArchiveIds(List variableArchiveIds) { + if (CollectionUtils.isEmpty(variableArchiveIds)) { + return; + } + List> partition = Lists.partition(variableArchiveIds, 500); + partition.forEach(part -> getVariableArchiveItemMapper().deleteByArchiveIds(part)); + } + + @Override + public void deleteByIds(List variableArchiveItemIds) { + if (CollectionUtils.isEmpty(variableArchiveItemIds)) { + return; + } + List> partition = Lists.partition(variableArchiveItemIds, 500); + partition.forEach(part -> getVariableArchiveItemMapper().deleteByIds(part)); + + } +} diff --git a/src/com/engine/salary/service/impl/VariableArchiveServiceImpl.java b/src/com/engine/salary/service/impl/VariableArchiveServiceImpl.java new file mode 100644 index 000000000..801e7ad7e --- /dev/null +++ b/src/com/engine/salary/service/impl/VariableArchiveServiceImpl.java @@ -0,0 +1,567 @@ +package com.engine.salary.service.impl; + +import com.cloudstore.eccom.pc.table.WeaTableColumn; +import com.engine.common.util.ServiceUtil; +import com.engine.core.impl.Service; +import com.engine.salary.constant.SalaryDefaultTenantConstant; +import com.engine.salary.constant.SalaryItemConstant; +import com.engine.salary.entity.datacollection.bo.VariableArchiveBO; +import com.engine.salary.entity.datacollection.bo.VariableArchiveExcelBO; +import com.engine.salary.entity.datacollection.dto.VariableArchiveListDTO; +import com.engine.salary.entity.datacollection.dto.VariableItemListDTO; +import com.engine.salary.entity.datacollection.param.VariableArchiveImportHandleParam; +import com.engine.salary.entity.datacollection.param.VariableArchiveQueryParam; +import com.engine.salary.entity.datacollection.param.VariableArchiveSaveParam; +import com.engine.salary.entity.datacollection.po.VariableArchiveItemPO; +import com.engine.salary.entity.datacollection.po.VariableArchivePO; +import com.engine.salary.entity.datacollection.po.VariableItemPO; +import com.engine.salary.entity.salaryarchive.dto.SalaryArchiveInitImportDTO; +import com.engine.salary.entity.taxagent.po.TaxAgentPO; +import com.engine.salary.enums.datacollection.UseEmployeeTypeEnum; +import com.engine.salary.exception.SalaryRunTimeException; +import com.engine.salary.mapper.datacollection.VariableArchiveMapper; +import com.engine.salary.service.*; +import com.engine.salary.sys.entity.vo.OrderRuleVO; +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; +import com.engine.salary.util.db.IdGenerator; +import com.engine.salary.util.db.MapperProxyFactory; +import com.engine.salary.util.excel.ExcelComment; +import com.engine.salary.util.excel.ExcelParseHelper; +import com.engine.salary.util.excel.ExcelSupport; +import com.engine.salary.util.excel.ExcelUtilPlus; +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 com.google.common.collect.Maps; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.BooleanUtils; +import org.apache.commons.lang3.StringUtils; +import org.apache.commons.lang3.math.NumberUtils; +import org.apache.poi.ss.usermodel.Sheet; +import org.apache.poi.util.IOUtils; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import weaver.file.ImageFileManager; +import weaver.general.Util; +import weaver.hrm.User; + +import java.io.InputStream; +import java.time.YearMonth; +import java.util.*; +import java.util.stream.Collectors; + +import static com.engine.salary.util.excel.ExcelSupport.EXCEL_TYPE_XLSX; + +/** + * @author Harryxzy + * @ClassName VariableArchiveServiceImpl + * @date 2024/08/06 17:40 + * @description 浮动薪酬档案 + */ +public class VariableArchiveServiceImpl extends Service implements VariableArchiveService { + + private VariableArchiveMapper getVariableArchiveMapper(){ + return MapperProxyFactory.getProxy(VariableArchiveMapper.class); + } + + private TaxAgentService getTaxAgentService(User user) { + return ServiceUtil.getService(TaxAgentServiceImpl.class, user); + } + + public SalarySysConfService getSalarySysConfService(User user) { + return ServiceUtil.getService(SalarySysConfServiceImpl.class, user); + } + + private VariableArchiveItemService getVariableArchiveItemService(User user) { + return ServiceUtil.getService(VariableArchiveItemServiceImpl.class, user); + } + + private VariableItemService getVariableItemService(User user) { + return ServiceUtil.getService(VariableItemServiceImpl.class, user); + } + + private SalaryEmployeeService getSalaryEmployeeService(User user) { + return (SalaryEmployeeService) ServiceUtil.getService(SalaryEmployeeServiceImpl.class, user); + } + + private int deleteByIds(List deleteIds) { + if (CollectionUtils.isEmpty(deleteIds)) { + return 0; + } + return getVariableArchiveMapper().deleteByIds(deleteIds); + } + + /** + * 浮动薪酬档案列表 + * @param queryParam + * @return + */ + @Override + public PageInfo listPage(VariableArchiveQueryParam queryParam) { + List variableArchiveList = list(queryParam); + return SalaryPageUtil.buildPage(queryParam.getCurrent(), queryParam.getPageSize(), variableArchiveList, VariableArchiveListDTO.class); + } + + @Override + public List list(VariableArchiveQueryParam queryParam) { + ValidUtil.doValidator(queryParam); + Long employeeId = Long.valueOf(user.getUID()); + // 判断是否是“总管理员” + Boolean isChief = getTaxAgentService(user).isChief(employeeId); + // 是否开启分权 + Boolean openDevolution = getTaxAgentService(user).isOpenDevolution(); + Collection taxAgentPOS = getTaxAgentService(user).listAllTaxAgentsAsAdmin(employeeId); + if (BooleanUtils.isTrue(openDevolution) && !isChief && CollectionUtils.isEmpty(taxAgentPOS)) { + // 无权限 + return Collections.emptyList(); + } + + // 浮动薪酬档案列表 + if (Objects.nonNull(queryParam.getSalaryMonth())) { + queryParam.setSalaryMonthDate(SalaryDateUtil.dateStrToLocalYearMonth(queryParam.getSalaryMonth())); + } + //排序配置 + OrderRuleVO orderRule = getSalarySysConfService(user).orderRule(); + queryParam.setOrderRule(orderRule); + return getVariableArchiveMapper().list(queryParam); + } + + /** + * 构建浮动薪资档案数据 + * + * @param variableArchives + * @return + */ + @Override + public List> buildVariableArchiveData(Collection variableArchives) { + if (CollectionUtils.isEmpty(variableArchives)) { + // 无数据 + } + List variableArchiveIds = variableArchives.stream().map(VariableArchiveListDTO::getId).collect(Collectors.toList()); + // 获取浮动薪资档案所对应的浮动薪资项目数据 + List variableArchiveItemList= getVariableArchiveItemService(user).listByVariableArchiveIds(variableArchiveIds); + Map> variableArchiveItemMap = SalaryEntityUtil.group2Map(variableArchiveItemList, VariableArchiveItemPO::getVariableArchiveId); + List> variableArchiveItemData = variableArchives.stream().map(m -> { + Map map = Maps.newHashMap(); + map.put("variableArchiveId", m.getId()); + List variableArchiveItemValuelList = variableArchiveItemMap.getOrDefault(m.getId(), Collections.emptyList()); + variableArchiveItemValuelList.forEach(i -> { + map.put(i.getVariableItemId() + SalaryItemConstant.VARIABLE_ITEM_DYNAMIC_SUFFIX, i.getItemValue()); + }); + return map; + }).collect(Collectors.toList()); + + + // 组装数据 + List> listMaps = new ArrayList<>(); + variableArchives.forEach(e -> { + Map map = new LinkedHashMap<>(); + map.put("id", e.getId()); + map.put("username", e.getUsername()); + map.put("salaryMonth", SalaryDateUtil.getFormatYearMonth(e.getSalaryMonth())); + map.put("employeeId", e.getEmployeeId()); + map.put("subcompanyName", e.getSubcompanyName()); + map.put("departmentName", e.getDepartmentName()); + map.put("mobile", e.getMobile()); + map.put("workcode", e.getWorkcode()); + map.put("idNo", e.getIdNo()); + map.put("companystartdate", e.getCompanystartdate()); + map.put("dismissdate", e.getDismissdate()); + + // 浮动薪资项目动态 + Optional> optionalItem = variableArchiveItemData.stream().filter(f -> f.get("variableArchiveId").toString().equals(e.getId().toString())).findFirst(); + optionalItem.ifPresent(map::putAll); + + listMaps.add(map); + }); + return listMaps; + } + + /** + * 创建浮动薪酬档案 + * + * @param saveParam + */ + @Override + public void createData(VariableArchiveSaveParam saveParam) { + ValidUtil.doValidator(saveParam); + saveParam.setSalaryMonthDate(SalaryDateUtil.dateStrToLocalYearMonth(saveParam.getSalaryMonth())); + List variableArchivePOList = getVariableArchiveMapper().listSome(VariableArchivePO.builder().salaryMonth(saveParam.getSalaryMonthDate()).employeeId(saveParam.getEmployeeId()).build()); + if (CollectionUtils.isNotEmpty(variableArchivePOList)) { + // 先删除原有档案 + List variableArchiveIds = variableArchivePOList.stream().map(VariableArchivePO::getId).collect(Collectors.toList()); + getVariableArchiveMapper().deleteByIds(variableArchiveIds); + } + + // 保存浮动薪资档案信息 + Date now = new Date(); + VariableArchivePO variableArchivePO = VariableArchivePO.builder() + .id(IdGenerator.generate()) + .employeeId(saveParam.getEmployeeId()) + .salaryMonth(saveParam.getSalaryMonthDate()) + .creator(Long.valueOf(user.getUID())) + .createTime(now) + .updateTime(now) + .deleteType(NumberUtils.INTEGER_ZERO) + .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) + .build(); + getVariableArchiveMapper().insertIgnoreNull(variableArchivePO); + + // 保存浮动薪资档案详细信息 + List variableArchiveItemList = new ArrayList<>(); + saveParam.getItemValueList().forEach(e -> { + variableArchiveItemList.add(VariableArchiveItemPO.builder() + .id(IdGenerator.generate()) + .employeeId(saveParam.getEmployeeId()) + .variableArchiveId(variableArchivePO.getId()) + .variableItemId(e.getVariableItemId()) + .itemValue(e.getItemValue()) + .creator(Long.valueOf(user.getUID())) + .createTime(now) + .updateTime(now) + .deleteType(NumberUtils.INTEGER_ZERO) + .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) + .build()); + }); + + if (CollectionUtils.isNotEmpty(variableArchiveItemList)) { + getVariableArchiveItemService(user).batchInsert(variableArchiveItemList); + } + } + + /** + * 浮动薪资档案明细 + * + * @param queryParam + * @return + */ + @Override + public Map getDetail(VariableArchiveQueryParam queryParam) { + if (queryParam.getId() == null) { + return Collections.emptyMap(); + } + + List variableArchiveList = getVariableArchiveMapper().list(queryParam); + + // 获取所有浮动薪酬项目 + List variableItems = getVariableItemService(user).listAll(); + + //整合所有的显示列(固定列+薪资项目动态列) + List> listMaps = buildVariableArchiveData(variableArchiveList); + Map resultMap = listMaps.get(0); + + //动态列组装 + List columns = VariableArchiveBO.buildVariableArchiveTable(variableItems); + + columns.add(0,new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(85429, "薪资所属月"), "salaryMonth")); + + Map datas = new HashMap<>(); + datas.put("data", resultMap); + datas.put("column", columns); + return datas; + } + + @Override + public List getCreateForm() { + List variableItemPOS = getVariableItemService(user).listAll(); + List variableItemDTOList = variableItemPOS.stream() + .map(po -> VariableItemListDTO.builder() + .id(po.getId()) + .name(po.getName()) + .build()) + .collect(Collectors.toList()); + return variableItemDTOList; + } + + @Override + public XSSFWorkbook downloadTemplate(VariableArchiveQueryParam param) { + // 名称 + String nameI18n = SalaryI18nUtil.getI18nLabel(0, "浮动薪酬导入模板"); + + // 获取所有可被引用的薪资项目 + List variableItems = getVariableItemService(user).listAll(); + List header = Lists.newArrayList(); + header.add(SalaryI18nUtil.getI18nLabel(85429, "姓名")); + header.add(SalaryI18nUtil.getI18nLabel(86185, "部门")); + header.add(SalaryI18nUtil.getI18nLabel(86186, "手机号")); + header.add(SalaryI18nUtil.getI18nLabel(1933, "工号")); + header.add(SalaryI18nUtil.getI18nLabel(86186, "证件号码")); + header.add(SalaryI18nUtil.getI18nLabel(86187, "入职日期")); + for (VariableItemPO variableItem : variableItems) { + header.add(variableItem.getName()); + } + + // 2.表头 + List> rows = new ArrayList<>(); + rows.add(header); + // 获取档案信息 + List variableArchiveList = list(param); + + if (param.isHasData()) { + List> listMaps = buildVariableArchiveData(variableArchiveList); + // 组装数据 + listMaps.forEach(e -> { + List row = new ArrayList<>(); + row.add(e.get("username").toString()); + row.add(Optional.ofNullable(e.get("departmentName")).orElse("").toString()); + row.add(e.get("mobile") == null ? "" : e.get("mobile").toString()); + row.add(Optional.ofNullable(e.get("workcode")).orElse("").toString()); + row.add(Util.null2String(e.get("idNo"))); + row.add(Util.null2String(e.get("companystartdate"))); + + // 薪资项目数据 + for (VariableItemPO variableItem : variableItems) { + row.add(e.containsKey(variableItem.getId() + SalaryItemConstant.VARIABLE_ITEM_DYNAMIC_SUFFIX) ? (e.get(variableItem.getId() + SalaryItemConstant.VARIABLE_ITEM_DYNAMIC_SUFFIX) == null ? "" + : e.get(variableItem.getId() + SalaryItemConstant.VARIABLE_ITEM_DYNAMIC_SUFFIX).toString()) : ""); + } + rows.add(row); + }); + } + + + // 4.注释 + List excelComments = Lists.newArrayList(); + + return ExcelUtilPlus.genWorkbookV2(rows, nameI18n, excelComments); + } + + @Override + public Map preview(VariableArchiveImportHandleParam importParam) { + Map apidatas = new HashMap(); + + //excel文件id + String imageId = Util.null2String(importParam.getImageId()); + + InputStream fileInputStream = null; + try { + fileInputStream = ImageFileManager.getInputStreamById(Integer.parseInt(imageId)); + Sheet sheet = ExcelSupport.parseFile(fileInputStream, 0, EXCEL_TYPE_XLSX); + apidatas.put("headers", ExcelSupport.getSheetHeader(sheet, 0)); + apidatas.put("list", ExcelParseHelper.parse2List(sheet, 1, 0)); + return apidatas; + } finally { + IOUtils.closeQuietly(fileInputStream); + } + } + + @Override + public Map importData(VariableArchiveImportHandleParam importParam) { + // 初始化国际化标签 + VariableArchiveExcelBO.initI18n(); + // 校验参数 + checkImportParam(importParam); + String imageId = importParam.getImageId(); + // 构建导入处理参数 + importParam = buildImportHandleParam(importParam); + // 导入有重复 + List allTodoVariableArchives = Lists.newArrayList(); + + InputStream fileInputStream = null; + try { + fileInputStream = ImageFileManager.getInputStreamById(Integer.parseInt(imageId)); + Sheet sheet = ExcelSupport.parseFile(fileInputStream, 0, EXCEL_TYPE_XLSX); + int total = 0; + //excel数据 + List> data = ExcelParseHelper.parse2Map(sheet, 1); + if (data != null) { + total += data.size(); + } + + int index = 0; + int successCount = 0; + int errorCount = 0; + // 用于(初始化导入)的相同employeeId时的处理 + List initImportData = Lists.newArrayList(); + + List headers = ExcelSupport.getSheetHeader(sheet, 0); + + // 错误提示 + List> excelComments = new ArrayList<>(); + // 错误sheet数据 + List> errorData = new ArrayList<>(); + + Map map; + for (int i = 0; i < data.size(); i++) { + index += 1; + map = data.get(i); + map.put("index", i + 2); + // 3.校验行内容 + boolean isError = VariableArchiveExcelBO.singleRowCheck(allTodoVariableArchives, map, headers, excelComments, errorCount, importParam, user); + if (isError) { + errorCount += 1; + // 添加错误数据 + errorData.add(map); + } else { + successCount += 1; + } + } + + // 4.数据入库处理 + handleImportData(importParam); + + Map apidatas = new HashMap<>(); + + apidatas.put("successCount", successCount); + apidatas.put("errorCount", errorCount); + apidatas.put("errorNotice", excelComments); + return apidatas; + } finally { + IOUtils.closeQuietly(fileInputStream); + } + } + + private void checkImportParam(VariableArchiveImportHandleParam importParam) { + //excel文件id + String imageId = Util.null2String(importParam.getImageId()); + //税款所属期 + String salaryMonthStr = Util.null2String(importParam.getSalaryMonth()); + if (StringUtils.isBlank(imageId)) { + throw new SalaryRunTimeException("文件不存在"); + } + if (StringUtils.isBlank(salaryMonthStr)) { + throw new SalaryRunTimeException("薪资所属月为空"); + } + } + + /** + * 构建导入处理参数 + * + * @param param + * @return + */ + private VariableArchiveImportHandleParam buildImportHandleParam(VariableArchiveImportHandleParam param) { + // 获取所有可被引用的浮动薪资项目 + List variableItems = getVariableItemService(user).listAll(); + Collection variableItemIds = variableItems.stream().map(VariableItemPO::getId).collect(Collectors.toList()); + List variableArchiveList = getVariableArchiveMapper().listSome(VariableArchivePO.builder().salaryMonth(SalaryDateUtil.dateStrToLocalYearMonth(param.getSalaryMonth())).build()); + + List variableArchiveIds = variableArchiveList.stream().map(VariableArchivePO::getId).collect(Collectors.toList()); + Map variableArchivesMap = SalaryEntityUtil.convert2Map(variableArchiveList, k -> k.getEmployeeId()); + + // 获取浮动薪资档案明细数据 + List variableArchiveItemPOS = getVariableArchiveItemService(user).listByVariableArchiveIds(variableArchiveIds); + Map> variableArchiveItemMap = SalaryEntityUtil.group2Map(variableArchiveItemPOS, k -> k.getVariableArchiveId() + "-" + k.getVariableItemId()); + + return VariableArchiveImportHandleParam.builder() + .imageId(param.getImageId()) + .salaryMonth(param.getSalaryMonth()) + .salaryMonthDate(SalaryDateUtil.dateStrToLocalYearMonth(param.getSalaryMonth())) + .currentEmployeeId((long) user.getUID()) + .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) + //人员定位方式 + .empValidType(getSalaryEmployeeService(user).empValidType()) + // 获取租户下所有的人员 + .employees(getSalaryEmployeeService(user).listAll(UseEmployeeTypeEnum.ORG)) + // 浮动薪资项目 + .variableItems(variableItems) + // 查询已有的浮动薪资档案基本数据 + .variableArchivesMap(variableArchivesMap) + // 浮动薪资项目id + .variableItemIds(variableItemIds) + // 查询已生效的浮动薪资项目数据 + .effectiveItemListMap(variableArchiveItemMap) + // 当前时间 + .nowTime(new Date()) + // 当天 + .today(new Date()) + // 待保存浮动薪资档案 + .variableArchiveSaves(Lists.newArrayList()) + // 待保存浮动薪资档案-浮动薪资项目 + .variableArchiveItemSaves(Lists.newArrayList()) + // 待删除浮动薪资档案-浮动薪资项目 + .variableArchiveItemDelSalaryItemIds(Lists.newArrayList()) + .build(); + } + + + private void handleImportData(VariableArchiveImportHandleParam importHandleParam) { + List variableArchiveSaves = importHandleParam.getVariableArchiveSaves(); + List variableArchiveItemSaves = importHandleParam.getVariableArchiveItemSaves(); + List variableArchiveItemDelSalaryItemIds = importHandleParam.getVariableArchiveItemDelSalaryItemIds(); + + // 新增档案 + if (CollectionUtils.isNotEmpty(variableArchiveSaves)) { + variableArchiveSaves.stream().forEach(getVariableArchiveMapper()::insertIgnoreNull); + } + // 薪资档案-薪资项目 + if (CollectionUtils.isNotEmpty(variableArchiveItemDelSalaryItemIds)) { + getVariableArchiveItemService(user).deleteByIds(variableArchiveItemDelSalaryItemIds); + } + // 薪资档案-薪资项目 + if (CollectionUtils.isNotEmpty(variableArchiveItemSaves)) { + getVariableArchiveItemService(user).batchInsert(variableArchiveItemSaves); + } + } + + @Override + public XSSFWorkbook export(VariableArchiveQueryParam param) { + // 名称 + String nameI18n = SalaryI18nUtil.getI18nLabel(0, "浮动薪酬"); + + // 获取所有可被引用的薪资项目 + List variableItems = getVariableItemService(user).listAll(); + List header = Lists.newArrayList(); + header.add(SalaryI18nUtil.getI18nLabel(85429, "姓名")); + header.add(SalaryI18nUtil.getI18nLabel(86185, "部门")); + header.add(SalaryI18nUtil.getI18nLabel(86186, "手机号")); + header.add(SalaryI18nUtil.getI18nLabel(1933, "工号")); + header.add(SalaryI18nUtil.getI18nLabel(86186, "证件号码")); + header.add(SalaryI18nUtil.getI18nLabel(86187, "入职日期")); + for (VariableItemPO variableItem : variableItems) { + header.add(variableItem.getName()); + } + + // 2.表头 + List> rows = new ArrayList<>(); + rows.add(header); + // 获取档案信息 + List variableArchiveList = list(param); + List> listMaps = buildVariableArchiveData(variableArchiveList); + // 组装数据 + listMaps.forEach(e -> { + List row = new ArrayList<>(); + row.add(e.get("username").toString()); + row.add(Optional.ofNullable(e.get("departmentName")).orElse("").toString()); + row.add(e.get("mobile") == null ? "" : e.get("mobile").toString()); + row.add(Optional.ofNullable(e.get("workcode")).orElse("").toString()); + row.add(Util.null2String(e.get("idNo"))); + row.add(Util.null2String(e.get("companystartdate"))); + + // 薪资项目数据 + for (VariableItemPO variableItem : variableItems) { + row.add(e.containsKey(variableItem.getId() + SalaryItemConstant.VARIABLE_ITEM_DYNAMIC_SUFFIX) ? (e.get(variableItem.getId() + SalaryItemConstant.VARIABLE_ITEM_DYNAMIC_SUFFIX) == null ? "" + : e.get(variableItem.getId() + SalaryItemConstant.VARIABLE_ITEM_DYNAMIC_SUFFIX).toString()) : ""); + } + rows.add(row); + }); + + // 4.注释 + List excelComments = Lists.newArrayList(); + + return ExcelUtilPlus.genWorkbookV2(rows, nameI18n, excelComments); + } + + @Override + public void deleteSelectVariableArchive(Collection deleteIds) { + if (CollectionUtils.isEmpty(deleteIds)) { + return; + } + List variableArchivePOList = getVariableArchiveMapper().listSome(VariableArchivePO.builder().ids(deleteIds).build()); + List archiveIds = variableArchivePOList.stream().map(VariableArchivePO::getId).collect(Collectors.toList()); + deleteByIds(archiveIds); + // 删除明细 + getVariableArchiveItemService(user).deleteByArchiveIds(archiveIds); + + } + + @Override + public List> listBySalaryMonthAndEmployeeIds(YearMonth salaryMonth, List employeeIds) { + VariableArchiveQueryParam queryParam = VariableArchiveQueryParam.builder().employeeIds(employeeIds).salaryMonth(SalaryDateUtil.getFormatYearMonth(salaryMonth)).salaryMonthDate(SalaryDateUtil.toDate(salaryMonth,1)).build(); + List variableArchiveListDTO = list(queryParam); + return buildVariableArchiveData(variableArchiveListDTO); + } +} diff --git a/src/com/engine/salary/service/impl/VariableItemServiceImpl.java b/src/com/engine/salary/service/impl/VariableItemServiceImpl.java new file mode 100644 index 000000000..b7b197ebc --- /dev/null +++ b/src/com/engine/salary/service/impl/VariableItemServiceImpl.java @@ -0,0 +1,245 @@ +package com.engine.salary.service.impl; + +import com.engine.common.util.ServiceUtil; +import com.engine.core.impl.Service; +import com.engine.salary.constant.SalaryDefaultTenantConstant; +import com.engine.salary.entity.datacollection.dto.VariableItemListDTO; +import com.engine.salary.entity.datacollection.param.VariableItemQueryParam; +import com.engine.salary.entity.datacollection.param.VariableItemSaveParam; +import com.engine.salary.entity.datacollection.po.VariableItemPO; +import com.engine.salary.entity.salaryformula.po.FormulaPO; +import com.engine.salary.entity.salaryformula.po.FormulaVar; +import com.engine.salary.enums.salaryitem.SalaryDataTypeEnum; +import com.engine.salary.exception.SalaryRunTimeException; +import com.engine.salary.mapper.datacollection.VariableItemMapper; +import com.engine.salary.service.SalaryFormulaService; +import com.engine.salary.service.SalaryItemService; +import com.engine.salary.service.VariableArchiveItemService; +import com.engine.salary.service.VariableItemService; +import com.engine.salary.util.SalaryEntityUtil; +import com.engine.salary.util.SalaryI18nUtil; +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.RuntimeTypeEnum; +import com.engine.salary.util.valid.ValidUtil; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.apache.commons.lang3.math.NumberUtils; +import org.springframework.beans.BeanUtils; +import weaver.conn.util.IdGenerator; +import weaver.hrm.User; + +import java.util.Collections; +import java.util.Date; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; + +/** + * @author Harryxzy + * @ClassName VariableItemServiceImpl + * @date 2024/08/07 9:31 + * @description 浮动薪酬项目 + */ +public class VariableItemServiceImpl extends Service implements VariableItemService { + + private VariableItemMapper getVariableItemMapper(){ + return MapperProxyFactory.getProxy(VariableItemMapper.class); + } + + private SalaryFormulaService getSalaryFormulaService(User user) { + return ServiceUtil.getService(SalaryFormulaServiceImpl.class, user); + } + + private SalaryItemService getSalaryItemService(User user) { + return ServiceUtil.getService(SalaryItemServiceImpl.class, user); + } + + private VariableArchiveItemService getVariableArchiveItemService(User user) { + return ServiceUtil.getService(VariableArchiveItemServiceImpl.class, user); + } + + @Override + public VariableItemPO getById(Long id) { + if (id == null) { + return null; + } + return getVariableItemMapper().getById(id); + } + + @Override + public List listByIds(List ids) { + if (CollectionUtils.isEmpty(ids)) { + return Collections.emptyList(); + } + return getVariableItemMapper().listSome(VariableItemPO.builder().ids(ids).build()); + } + + /** + * 获取浮动薪酬项目 + * @return + */ + @Override + public List listAll() { + return getVariableItemMapper().listAll(); + } + + /** + * 获取浮动薪资项目列表(分页) + * + * @param queryParam + * @return + */ + @Override + public PageInfo listPage(VariableItemQueryParam queryParam) { + List variableItemPOS = listAll(); + if (StringUtils.isNotBlank(queryParam.getItemName())) { + variableItemPOS = variableItemPOS.stream().filter(po -> po.getName().contains(queryParam.getItemName())).collect(Collectors.toList()); + } + // 查询不可删除的code、id + SalaryItemServiceImpl.UsingItem usingItem = getSalaryItemService(user).getUsingItem(); + List usingCodes = usingItem.getUsingCodes(); + List usingVariableItemIds = getVariableArchiveItemService(user).listUsingItems(); + + List variableItemDTOList = variableItemPOS.stream() + .map(po -> VariableItemListDTO.builder() + .id(po.getId()) + .name(po.getName()) + .dataType(SalaryDataTypeEnum.parseByValue(po.getDataType()).getDefaultLabel()) + .canDelete( !(usingCodes.contains(po.getCode()) || usingVariableItemIds.contains(po.getId())) ) + .build()) + .collect(Collectors.toList()); + return SalaryPageUtil.buildPage(queryParam.getCurrent(), queryParam.getPageSize(), variableItemDTOList, VariableItemListDTO.class); + } + + private List listByName(String name) { + return getVariableItemMapper().listSome(VariableItemPO.builder().name(name).build()); + } + + @Override + public Integer save(VariableItemSaveParam saveParam) { + // 名称不能和已有的自定义薪资项目重名 + List variableItemPOS = listByName(saveParam.getName()); + if (CollectionUtils.isNotEmpty(variableItemPOS)) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(0, "项目名称已存在,请重新命名")); + } + Date now = new Date(); + long id = com.engine.salary.util.db.IdGenerator.generate(); + VariableItemPO variableItemPO = VariableItemPO.builder() + .id(id) + .name(saveParam.getName()) + .code(IdGenerator.getUUID()) + .dataType(saveParam.getDataType()) + .creator(Long.valueOf(user.getUID())) + .deleteType(NumberUtils.INTEGER_ZERO) + .createTime(now) + .updateTime(now) + .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) + .build(); + return getVariableItemMapper().insertIgnoreNull(variableItemPO); + + } + + @Override + public VariableItemPO update(VariableItemSaveParam saveParam) { + ValidUtil.doValidator(saveParam, RuntimeTypeEnum.UPDATE); + // 查询薪资项目,判断薪资项目是否存在 + VariableItemPO variableItemPO = getById(saveParam.getId()); + if (Objects.isNull(variableItemPO)) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(0, "参数错误,项目不存在或已被删除")); + } + // 名称不能和已有的自定义薪资项目重名 + List variableItemPOS = listByName(saveParam.getName()); + boolean nameExist = variableItemPOS.stream().anyMatch(e -> !Objects.equals(saveParam.getId(), e.getId())); + if (nameExist) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98326, "项目名称已存在,请重新命名")); + } + + // 更新薪资项目 + VariableItemPO newVariableItemPO = new VariableItemPO(); + BeanUtils.copyProperties(variableItemPO, newVariableItemPO); + newVariableItemPO.setName(saveParam.getName()); + newVariableItemPO.setDataType(saveParam.getDataType()); + newVariableItemPO.setUpdateTime(new Date()); + getVariableItemMapper().update(newVariableItemPO); + + //改名后更新公式 + String oldName = variableItemPO.getName(); + String newName = saveParam.getName(); + if (!StringUtils.equals(oldName, newName)) { + String itemPrefix = "variableItem_"; + String fieldNamePrefix = "{浮动薪资项目.%s}"; + changeName(variableItemPO, oldName, newName, itemPrefix, fieldNamePrefix); + } + return variableItemPO; + } + + private void changeName(VariableItemPO variableItemPO, String oldName, String newName, String itemPrefix, String fieldNamePrefix) { + String code = itemPrefix + variableItemPO.getCode(); + Date now = new Date(); + List formulaVars = getSalaryFormulaService(user).listByCode(code); + formulaVars.forEach(v -> { + FormulaVar formulaVar = FormulaVar.builder() + .id(v.getId()) + .name(newName) + .fieldName(String.format(fieldNamePrefix, newName)) + .updateTime(now) + .build(); + getSalaryFormulaService(user).updateVar(formulaVar); + }); + + List formulaIds = SalaryEntityUtil.properties(formulaVars, FormulaVar::getFormulaId, Collectors.toList()); + List formulaPOS = getSalaryFormulaService(user).listByIds(formulaIds); + formulaPOS.forEach(f -> { + String formula = f.getFormula(); + formula = formula.replace(String.format(fieldNamePrefix, oldName), String.format(fieldNamePrefix, newName)); + FormulaPO formulaPO = FormulaPO.builder() + .id(f.getId()) + .formula(formula) + .updateTime(now) + .build(); + getSalaryFormulaService(user).update(formulaPO); + }); + } + + @Override + public void deleteItems(List itemIds) { + if (CollectionUtils.isEmpty(itemIds)) { + return; + } + + SalaryItemServiceImpl.UsingItem usingItem = getSalaryItemService(user).getUsingItem(); + List usingCodes = usingItem.getUsingCodes(); + + // 查询薪资项目 + List variableItemPOS = listByIds(itemIds); + if (CollectionUtils.isEmpty(variableItemPOS)) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(0, "参数错误,浮动薪资项目不存在或已被删除")); + } + List codes = SalaryEntityUtil.properties(variableItemPOS, VariableItemPO::getCode, Collectors.toList()); + if (CollectionUtils.containsAny(usingCodes, codes)) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(0, "公式正在使用该浮动薪资项目,不允许删除")); + } + // 查询浮动薪酬档案中已使用的浮动薪资项目 + List usingVariableItemIds = getVariableArchiveItemService(user).listUsingItems(); + if (CollectionUtils.containsAny(usingVariableItemIds, itemIds)) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(0, "浮动薪资档案中正在使用该薪资项目,不允许删除")); + } + itemIds.stream().forEach(id -> getVariableItemMapper().delete(VariableItemPO.builder().id(id).build())); + ; + } + + @Override + public VariableItemListDTO getDetail(Long id) { + if (id == null) { + return null; + } + VariableItemPO variableItemPO = getVariableItemMapper().getById(id); + return VariableItemListDTO.builder() + .id(variableItemPO.getId()) + .name(variableItemPO.getName()) + .dataType(variableItemPO.getDataType()) + .build(); + } +} diff --git a/src/com/engine/salary/web/VariableArchiveController.java b/src/com/engine/salary/web/VariableArchiveController.java new file mode 100644 index 000000000..217ba9699 --- /dev/null +++ b/src/com/engine/salary/web/VariableArchiveController.java @@ -0,0 +1,276 @@ +package com.engine.salary.web; + +import com.engine.common.util.ServiceUtil; +import com.engine.salary.entity.datacollection.dto.VariableItemListDTO; +import com.engine.salary.entity.datacollection.param.VariableArchiveImportHandleParam; +import com.engine.salary.entity.datacollection.param.VariableArchiveQueryParam; +import com.engine.salary.entity.datacollection.param.VariableArchiveSaveParam; +import com.engine.salary.util.ResponseResult; +import com.engine.salary.util.SalaryDateUtil; +import com.engine.salary.wrapper.VariableArchiveWrapper; +import io.swagger.v3.oas.annotations.parameters.RequestBody; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang3.math.NumberUtils; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import weaver.hrm.HrmUserVarify; +import weaver.hrm.User; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.ws.rs.GET; +import javax.ws.rs.POST; +import javax.ws.rs.Path; +import javax.ws.rs.Produces; +import javax.ws.rs.core.Context; +import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.Response; +import javax.ws.rs.core.StreamingOutput; +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; +import java.time.LocalDate; +import java.util.Arrays; +import java.util.Collection; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * 数据采集-浮动薪酬 + *

Copyright: Copyright (c) 2024

+ *

Company: 泛微软件

+ * + * @author xzy + * @version 1.0 + **/ +@Slf4j +public class VariableArchiveController { + + private VariableArchiveWrapper getVariableArchiveWrapper(User user) { + return ServiceUtil.getService(VariableArchiveWrapper.class, user); + } + + /** + * 浮动薪酬列表 + * + * @param request + * @param response + * @param queryParam + * @return + */ + @POST + @Path("/list") + @Produces(MediaType.APPLICATION_JSON) + public String list(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody VariableArchiveQueryParam queryParam) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult>(user).run(getVariableArchiveWrapper(user)::list, queryParam); + } + + /** + * 浮动薪酬明细 + * + * @param request + * @param response + * @param queryParam + * @return + */ + @POST + @Path("/getDetail") + @Produces(MediaType.APPLICATION_JSON) + public String getDetail(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody VariableArchiveQueryParam queryParam) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult>(user).run(getVariableArchiveWrapper(user)::getDetail, queryParam); + } + + /** + * 获取创建浮动薪酬档案时项目信息 + * + * @param request + * @param response + * @return + */ + @POST + @Path("/getCreateForm") + @Produces(MediaType.APPLICATION_JSON) + public String getCreateForm(@Context HttpServletRequest request, @Context HttpServletResponse response) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult>(user).run(getVariableArchiveWrapper(user)::getCreateForm); + } + + /** + * 创建浮动薪酬档案 + * + * @param request + * @param response + * @param saveParam + * @return + */ + @POST + @Path("/createData") + @Produces(MediaType.APPLICATION_JSON) + public String createData(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody VariableArchiveSaveParam saveParam) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getVariableArchiveWrapper(user)::createData, saveParam); + } + + + @GET + @Path("/downloadTemplate") + @Produces(MediaType.APPLICATION_OCTET_STREAM) + public Response downloadTemplate(@Context HttpServletRequest request, @Context HttpServletResponse response) { + try { + User user = HrmUserVarify.getUser(request, response); + VariableArchiveQueryParam param = buildParam(request); + + XSSFWorkbook workbook = getVariableArchiveWrapper(user).downloadTemplate(param); + String fileName = "浮动薪酬导入模板" + LocalDate.now(); + try { + fileName = URLEncoder.encode(fileName + ".xlsx", "UTF-8"); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + + StreamingOutput output = outputStream -> { + workbook.write(outputStream); + outputStream.flush(); + }; + response.setContentType("application/octet-stream"); + return Response.ok(output).header("Content-disposition", "attachment;filename=" + fileName).header("Cache-Control", "no-cache").build(); + + } catch (Exception e) { + log.error("浮动薪酬导入模板异常", e); + throw e; + } + } + + + /** + * 导出 + * + * @param + * @return + */ + @GET + @Path("/export") + @Produces(MediaType.APPLICATION_OCTET_STREAM) + public Response export(@Context HttpServletRequest request, @Context HttpServletResponse response) { + try { + User user = HrmUserVarify.getUser(request, response); + VariableArchiveQueryParam param = buildParam(request); + + XSSFWorkbook workbook = getVariableArchiveWrapper(user).export(param); + + String fileName = null; + try { + fileName = URLEncoder.encode("浮动薪酬" + LocalDate.now() + ".xlsx", "UTF-8"); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + + StreamingOutput output = outputStream -> { + workbook.write(outputStream); + outputStream.flush(); + }; + + response.setContentType("application/octet-stream"); + return Response.ok(output) + .header("Content-disposition", "attachment;filename=" + fileName) + .header("Cache-Control", "no-cache").build(); + } catch (Exception e) { + log.error("浮动薪酬导出异常", e); + throw e; + } + } + + + + private VariableArchiveQueryParam buildParam(HttpServletRequest request) { + VariableArchiveQueryParam param = new VariableArchiveQueryParam(); + + String salaryMonthStr = request.getParameter("salaryMonth"); + if (StringUtils.isNotBlank(salaryMonthStr)) { + param.setSalaryMonth(salaryMonthStr); + param.setSalaryMonthDate(SalaryDateUtil.dateStrToLocalYearMonth(salaryMonthStr)); + } + String username = request.getParameter("username"); + if (StringUtils.isNotBlank(username)) { + param.setUsername(username); + } + + String departmentIdStr = request.getParameter("departmentIds"); + if (StringUtils.isNotBlank(departmentIdStr)) { + List departmentIds = Arrays.stream(departmentIdStr.split(",")).filter(NumberUtils::isCreatable).map(Long::valueOf).collect(Collectors.toList()); + param.setDepartmentIds(departmentIds); + } + String workcode = request.getParameter("workcode"); + if (StringUtils.isNotBlank(workcode)) { + param.setWorkcode(workcode); + } + + String hasData = request.getParameter("hasData"); + if (StringUtils.isNotBlank(hasData)) { + param.setHasData(hasData.equals("true")); + } + return param; + } + + @POST + @Path("/preview") + @Produces(MediaType.APPLICATION_JSON) + public String preview(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody VariableArchiveImportHandleParam importParam) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult>(user).run(getVariableArchiveWrapper(user)::preview, importParam); + } + + @POST + @Path("/importData") + @Produces(MediaType.APPLICATION_JSON) + public String importAddUpDeduction(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody VariableArchiveImportHandleParam importParam) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult>(user).run(getVariableArchiveWrapper(user)::importData, importParam); + } + + + /** + * @description 删除 + * @return String + * @author Harryxzy + * @date 2024/08/08 14:41 + */ + @POST + @Path("/deleteSelectData") + @Produces(MediaType.APPLICATION_JSON) + public String deleteSelectVariableArchive(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody VariableArchiveQueryParam variableArchiveQueryParam) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult, String>(user).run(getVariableArchiveWrapper(user)::deleteSelectVariableArchive, variableArchiveQueryParam.getIds()); + } + + // /** + // * @description 获取其他免税扣除数据 + // * @return String + // * @author Harryxzy + // * @date 2022/10/31 13:42 + // */ + // @POST + // @Path("/getData") + // @Produces(MediaType.APPLICATION_JSON) + // public String getOtherDeduction(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody OtherDeductionParam otherDeductionParam) { + // User user = HrmUserVarify.getUser(request, response); + // return new ResponseResult(user).run(getOtherDeductionWrapper(user)::getOtherDeduction, otherDeductionParam); + // } + // + // /** + // * @description 删除所选其他免税扣除 + // * @return String + // * @author Harryxzy + // * @date 2022/10/27 14:41 + // */ + // @POST + // @Path("/deleteSelectData") + // @Produces(MediaType.APPLICATION_JSON) + // public String deleteSelectOtherDeduction(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody AddUpDeductionRecordDeleteParam otherDeductionDeleteParam) { + // User user = HrmUserVarify.getUser(request, response); + // return new ResponseResult>(user).run(getOtherDeductionWrapper(user)::deleteSelectData, otherDeductionDeleteParam); + // } + +} diff --git a/src/com/engine/salary/web/VariableItemController.java b/src/com/engine/salary/web/VariableItemController.java new file mode 100644 index 000000000..70146a585 --- /dev/null +++ b/src/com/engine/salary/web/VariableItemController.java @@ -0,0 +1,324 @@ +package com.engine.salary.web; + +import com.engine.common.util.ServiceUtil; +import com.engine.salary.entity.datacollection.dto.VariableItemListDTO; +import com.engine.salary.entity.datacollection.param.VariableItemQueryParam; +import com.engine.salary.entity.datacollection.param.VariableItemSaveParam; +import com.engine.salary.util.ResponseResult; +import com.engine.salary.util.page.PageInfo; +import com.engine.salary.wrapper.VariableItemWrapper; +import io.swagger.v3.oas.annotations.parameters.RequestBody; +import lombok.extern.slf4j.Slf4j; +import weaver.hrm.HrmUserVarify; +import weaver.hrm.User; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.ws.rs.POST; +import javax.ws.rs.Path; +import javax.ws.rs.Produces; +import javax.ws.rs.core.Context; +import javax.ws.rs.core.MediaType; +import java.util.List; + +/** + * 数据采集-浮动薪酬项目 + *

Copyright: Copyright (c) 2024

+ *

Company: 泛微软件

+ * + * @author xzy + * @version 1.0 + **/ +@Slf4j +public class VariableItemController { + + private VariableItemWrapper getVariableItemWrapper(User user) { + return ServiceUtil.getService(VariableItemWrapper.class, user); + } + + /** + * 浮动薪酬项目列表 + * + * @return + */ + @POST + @Path("/listPage") + @Produces(MediaType.APPLICATION_JSON) + public String listPage(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody VariableItemQueryParam queryParam) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult>(user).run(getVariableItemWrapper(user)::listPage, queryParam); + } + + + /** + * 浮动薪酬项目详细信息 + * + * @return + */ + @POST + @Path("/getDetail") + @Produces(MediaType.APPLICATION_JSON) + public String getDetail(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody VariableItemQueryParam queryParam) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getVariableItemWrapper(user)::getDetail, queryParam.getId()); + } + + + /** + * 保存浮动薪资项目 + * + * @param request + * @param response + * @param saveParam + * @return + */ + @POST + @Path("/save") + @Produces(MediaType.APPLICATION_JSON) + public String saveVariableItem(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody VariableItemSaveParam saveParam) { + User user = HrmUserVarify.getUser(request, response); + if (saveParam.getId() == null || saveParam.getId() <= 0) { + return new ResponseResult(request, response, user).run(getVariableItemWrapper(user)::save, saveParam); + } else { + return new ResponseResult(request, response, user).run(getVariableItemWrapper(user)::update, saveParam); + } + } + + + + /** + * 删除浮动薪资项目 + * + * @param request + * @param response + * @param param + * @return + */ + @POST + @Path("/delete") + @Produces(MediaType.APPLICATION_JSON) + public String deleteItem(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody VariableItemQueryParam param) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult, String>(request, response, user).run(getVariableItemWrapper(user)::deleteItems, param.getItemIds()); + } + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + // @GET + // @Path("/downloadTemplate") + // @Produces(MediaType.APPLICATION_OCTET_STREAM) + // public Response getAll(@Context HttpServletRequest request, @Context HttpServletResponse response) { + // try { + // User user = HrmUserVarify.getUser(request, response); + // OtherDeductionQueryParam param = buildParam(request); + // + // XSSFWorkbook workbook = getOtherDeductionWrapper(user).downloadTemplate(param); + // String fileName = "其他免税扣除导入模板" + LocalDate.now(); + // try { + // fileName = URLEncoder.encode(fileName + ".xlsx", "UTF-8"); + // } catch (UnsupportedEncodingException e) { + // e.printStackTrace(); + // } + // + // StreamingOutput output = outputStream -> { + // workbook.write(outputStream); + // outputStream.flush(); + // }; + // response.setContentType("application/octet-stream"); + // return Response.ok(output).header("Content-disposition", "attachment;filename=" + fileName).header("Cache-Control", "no-cache").build(); + // + // } catch (Exception e) { + // log.error("其他免税扣除导入模板异常", e); + // throw e; + // } + // } + // + // + // /** + // * 导出 + // * + // * @param + // * @return + // */ + // @GET + // @Path("/export") + // @Produces(MediaType.APPLICATION_OCTET_STREAM) + // public Response export(@Context HttpServletRequest request, @Context HttpServletResponse response) { + // try { + // User user = HrmUserVarify.getUser(request, response); + // + // OtherDeductionQueryParam param = buildParam(request); + // + // XSSFWorkbook workbook = getOtherDeductionWrapper(user).export(param); + // + // String fileName = null; + // try { + // fileName = URLEncoder.encode("其他免税扣除" + LocalDate.now() + ".xlsx", "UTF-8"); + // } catch (UnsupportedEncodingException e) { + // e.printStackTrace(); + // } + // + // StreamingOutput output = outputStream -> { + // workbook.write(outputStream); + // outputStream.flush(); + // }; + // + // response.setContentType("application/octet-stream"); + // return Response.ok(output) + // .header("Content-disposition", "attachment;filename=" + fileName) + // .header("Cache-Control", "no-cache").build(); + // } catch (Exception e) { + // log.error("其他免税扣除导出异常", e); + // throw e; + // } + // } + // + // + // + // + // @Nullable + // private OtherDeductionQueryParam buildParam(HttpServletRequest request) { + // OtherDeductionQueryParam param = new OtherDeductionQueryParam(); + // String ids = request.getParameter("ids"); + // if (StringUtils.isNotBlank(ids)) { + // param.setIds(Arrays.stream(ids.split(",")).map(Long::valueOf).collect(Collectors.toList())); + // } + // String keyword = request.getParameter("keyword"); + // if (StringUtils.isNotBlank(keyword)) { + // param.setKeyword(keyword); + // } + // String id = request.getParameter("id"); + // if (StringUtils.isNotBlank(id)) { + // param.setId(Long.valueOf(id)); + // } + // String declareMonth = request.getParameter("declareMonth"); + // if (StringUtils.isNotBlank(declareMonth)) { + // param.setDeclareMonth(Arrays.stream(declareMonth.split(",")).map(e -> e + "-01 00:00:00").collect(Collectors.toList())); + // param.setDeclareMonthDate(Arrays.stream(declareMonth.split(",")).map(e -> e + "-01 00:00:00").map(SalaryDateUtil::dateStrToLocalTime).collect(Collectors.toList())); + // } + // + // String username = request.getParameter("username"); + // if (StringUtils.isNotBlank(username)) { + // param.setUsername(username); + // } + // String employeeId = request.getParameter("employeeId"); + // if (StringUtils.isNotBlank(employeeId)) { + // param.setEmployeeId(Long.valueOf(employeeId)); + // } + // String taxAgentId = request.getParameter("taxAgentId"); + // if (StringUtils.isNotBlank(taxAgentId)) { + // param.setTaxAgentId(Long.valueOf(taxAgentId)); + // } + // String departmentIds = request.getParameter("departmentIds"); + // if (StringUtils.isNotBlank(departmentIds)) { + // param.setDepartmentIds(Arrays.stream(departmentIds.split(",")).map(Long::valueOf).collect(Collectors.toList())); + // } + // String jobNum = request.getParameter("jobNum"); + // if (StringUtils.isNotBlank(jobNum)) { + // param.setJobNum(jobNum); + // } + // String idNo = request.getParameter("idNo"); + // if (StringUtils.isNotBlank(idNo)) { + // param.setIdNo(idNo); + // } + // String hiredate = request.getParameter("hiredate"); + // if (StringUtils.isNotBlank(hiredate)) { + // SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); + // List dates = Arrays.stream(hiredate.split(",")).map(d -> { + // try { + // return format.parse(d); + // } catch (ParseException e) { + // e.printStackTrace(); + // } + // return null; + // }).collect(Collectors.toList()); + // param.setHiredate(dates); + // } + // String mobile = request.getParameter("mobile"); + // if (StringUtils.isNotBlank(mobile)) { + // param.setMobile(mobile); + // } + // String otherTaxExemptDeductionId = request.getParameter("otherTaxExemptDeductionId"); + // if (StringUtils.isNotBlank(otherTaxExemptDeductionId)) { + // param.setOtherTaxExemptDeductionId(Long.valueOf(otherTaxExemptDeductionId)); + // } + // + // String hasData = request.getParameter("hasData"); + // if (StringUtils.isNotBlank(hasData)) { + // param.setHasData("true".equals(hasData)); + // } + // return param; + // } + // + // @POST + // @Path("/preview") + // @Produces(MediaType.APPLICATION_JSON) + // public String preview(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody OtherDeductionImportParam importParam) { + // User user = HrmUserVarify.getUser(request, response); + // return new ResponseResult>(user).run(getOtherDeductionWrapper(user)::preview, importParam); + // } + // + // @POST + // @Path("/importData") + // @Produces(MediaType.APPLICATION_JSON) + // public String importAddUpDeduction(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody OtherDeductionImportParam importParam) { + // User user = HrmUserVarify.getUser(request, response); + // return new ResponseResult>(user).run(getOtherDeductionWrapper(user)::importData, importParam); + // } + // + // /** + // * @description 获取其他免税扣除数据 + // * @return String + // * @author Harryxzy + // * @date 2022/10/31 13:42 + // */ + // @POST + // @Path("/getData") + // @Produces(MediaType.APPLICATION_JSON) + // public String getOtherDeduction(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody OtherDeductionParam otherDeductionParam) { + // User user = HrmUserVarify.getUser(request, response); + // return new ResponseResult(user).run(getOtherDeductionWrapper(user)::getOtherDeduction, otherDeductionParam); + // } + // + // /** + // * @description 删除所选其他免税扣除 + // * @return String + // * @author Harryxzy + // * @date 2022/10/27 14:41 + // */ + // @POST + // @Path("/deleteSelectData") + // @Produces(MediaType.APPLICATION_JSON) + // public String deleteSelectOtherDeduction(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody AddUpDeductionRecordDeleteParam otherDeductionDeleteParam) { + // User user = HrmUserVarify.getUser(request, response); + // return new ResponseResult>(user).run(getOtherDeductionWrapper(user)::deleteSelectData, otherDeductionDeleteParam); + // } + +} diff --git a/src/com/engine/salary/wrapper/VariableArchiveWrapper.java b/src/com/engine/salary/wrapper/VariableArchiveWrapper.java new file mode 100644 index 000000000..5a3108980 --- /dev/null +++ b/src/com/engine/salary/wrapper/VariableArchiveWrapper.java @@ -0,0 +1,190 @@ +package com.engine.salary.wrapper; + +import com.cloudstore.eccom.pc.table.WeaTableColumn; +import com.cloudstore.eccom.result.WeaResultMsg; +import com.engine.common.util.ServiceUtil; +import com.engine.core.impl.Service; +import com.engine.salary.component.SalaryWeaTable; +import com.engine.salary.entity.datacollection.bo.VariableArchiveBO; +import com.engine.salary.entity.datacollection.dto.VariableArchiveListDTO; +import com.engine.salary.entity.datacollection.dto.VariableItemListDTO; +import com.engine.salary.entity.datacollection.param.VariableArchiveImportHandleParam; +import com.engine.salary.entity.datacollection.param.VariableArchiveQueryParam; +import com.engine.salary.entity.datacollection.param.VariableArchiveSaveParam; +import com.engine.salary.entity.datacollection.po.VariableItemPO; +import com.engine.salary.service.VariableArchiveService; +import com.engine.salary.service.VariableItemService; +import com.engine.salary.service.impl.VariableArchiveServiceImpl; +import com.engine.salary.service.impl.VariableItemServiceImpl; +import com.engine.salary.util.page.PageInfo; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import weaver.hrm.User; + +import java.util.Collection; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @Description: 浮动薪酬 + * @Author: xzy + * @Date: 2024/8/6 17:39 + */ +@Slf4j +public class VariableArchiveWrapper extends Service { + private VariableArchiveService getVariableArchiveService(User user) { + return ServiceUtil.getService(VariableArchiveServiceImpl.class, user); + } + + private VariableItemService getVariableItemService(User user) { + return ServiceUtil.getService(VariableItemServiceImpl.class, user); + } + + /** + * 数据采集-浮动薪酬列表(分页) + * + * @param queryParam + * @return + */ + public Map list(VariableArchiveQueryParam queryParam) { + + //薪资档案列表 + PageInfo pageInfo = getVariableArchiveService(user).listPage(queryParam); + Collection salaryArchives = pageInfo.getList(); + + // 获取所有浮动薪酬项目 + List variableItems = getVariableItemService(user).listAll(); + + //整合所有的显示列(固定列+薪资项目动态列) + List> listMaps = getVariableArchiveService(user).buildVariableArchiveData(salaryArchives); + + PageInfo> pageInfos = new PageInfo>(listMaps); + pageInfos.setTotal(pageInfo.getTotal()); + pageInfos.setPageNum(pageInfo.getPageNum()); + pageInfos.setPageSize(pageInfo.getPageSize()); + + //动态列组装 + List columns = VariableArchiveBO.buildVariableArchiveTable(variableItems); + + SalaryWeaTable table = new SalaryWeaTable(user, VariableArchiveListDTO.class); + table.setColumns(columns); + WeaResultMsg result = new WeaResultMsg(false); + result.putAll(table.makeDataResult()); + result.success(); + + Map datas = new HashMap<>(); + datas.put("pageInfo", pageInfos); + datas.put("dataKey", result.getResultMap()); + + return datas; + } + + /** + * 创建浮动薪酬档案 + * + * @param saveParam + */ + public void createData(VariableArchiveSaveParam saveParam) { + getVariableArchiveService(user).createData(saveParam); + } + + /** + * 浮动薪酬档案明细 + * + * @param queryParam + * @return + */ + public Map getDetail(VariableArchiveQueryParam queryParam) { + return getVariableArchiveService(user).getDetail(queryParam); + } + + public List getCreateForm() { + return getVariableArchiveService(user).getCreateForm(); + } + + public XSSFWorkbook downloadTemplate(VariableArchiveQueryParam param) { + return getVariableArchiveService(user).downloadTemplate(param); + } + + public Map preview(VariableArchiveImportHandleParam importParam) { + return getVariableArchiveService(user).preview(importParam); + } + + public Map importData(VariableArchiveImportHandleParam importParam) { + return getVariableArchiveService(user).importData(importParam); + } + + public XSSFWorkbook export(VariableArchiveQueryParam param) { + return getVariableArchiveService(user).export(param); + } + + public void deleteSelectVariableArchive(Collection deleteIds) { + getVariableArchiveService(user).deleteSelectVariableArchive(deleteIds); + } + + + // /** + // * 导出-其他免税扣除列表 + // * + // * @param queryParam + // * @return + // */ + // public XSSFWorkbook export(OtherDeductionQueryParam queryParam) { + // return getOtherDeductionService(user).export(queryParam); + // } + // + // /** + // * 下载导入模板 + // * + // * @param queryParam + // * @return + // */ + // public XSSFWorkbook downloadTemplate(OtherDeductionQueryParam queryParam) { + // return getOtherDeductionService(user).downloadTemplate(queryParam); + // } + // + // /** + // * 预览 + // */ + // public Map preview(OtherDeductionImportParam importParam) { + // return getOtherDeductionService(user).preview(importParam); + // } + // + // /** + // * 导入数据 + // */ + // public Map importData(OtherDeductionImportParam importParam) { + // return getOtherDeductionService(user).importData(importParam); + // } + // + // /** + // * 编辑数据 + // */ + // public void editData(OtherDeductionParam otherDeductionParam) { + // getOtherDeductionService(user).editData(otherDeductionParam); + // } + // + // + // /** + // * 新增数据 + // */ + // public void createData(OtherDeductionParam otherDeductionParam) { + // getOtherDeductionService(user).createData(otherDeductionParam); + // } + // + // /** + // * 删除所选数据 + // */ + // public void deleteSelectData(AddUpDeductionRecordDeleteParam deleteParam) { + // getOtherDeductionService(user).deleteSelectData(deleteParam); + // } + // + // + // /** + // * 获取数据 + // */ + // public OtherDeductionRecordDTO getOtherDeduction(OtherDeductionParam otherDeductionParam) { + // return getOtherDeductionService(user).getOtherDeduction(otherDeductionParam); + // } +} diff --git a/src/com/engine/salary/wrapper/VariableItemWrapper.java b/src/com/engine/salary/wrapper/VariableItemWrapper.java new file mode 100644 index 000000000..92119e90f --- /dev/null +++ b/src/com/engine/salary/wrapper/VariableItemWrapper.java @@ -0,0 +1,75 @@ +package com.engine.salary.wrapper; + + +import com.engine.common.util.ServiceUtil; +import com.engine.core.impl.Service; +import com.engine.salary.entity.datacollection.dto.VariableItemListDTO; +import com.engine.salary.entity.datacollection.param.VariableItemQueryParam; +import com.engine.salary.entity.datacollection.param.VariableItemSaveParam; +import com.engine.salary.service.VariableItemService; +import com.engine.salary.service.impl.VariableItemServiceImpl; +import com.engine.salary.util.page.PageInfo; +import com.engine.salary.util.valid.ValidUtil; +import lombok.extern.slf4j.Slf4j; +import weaver.hrm.User; + +import java.util.List; + +/** + * @Description: 浮动薪酬项目 + * @Author: xzy + * @Date: 2024/8/6 17:39 + */ +@Slf4j +public class VariableItemWrapper extends Service { + private VariableItemService getVariableItemService(User user) { + return ServiceUtil.getService(VariableItemServiceImpl.class, user); + } + + /** + * 获取所有的浮动薪酬项目 + * + * @param queryParam + */ + public PageInfo listPage(VariableItemQueryParam queryParam) { + return getVariableItemService(user).listPage(queryParam); + } + + /** + * 新建浮动薪酬项目 + * + * @param saveParam + */ + public void save(VariableItemSaveParam saveParam) { + ValidUtil.doValidator(saveParam); + getVariableItemService(user).save(saveParam); + } + + /** + * 更新浮动薪酬项目 + * + * @param saveParam + */ + public void update(VariableItemSaveParam saveParam) { + ValidUtil.doValidator(saveParam); + getVariableItemService(user).update(saveParam); + } + + /** + * 删除浮动薪资项目 + * + * @param itemIds + */ + public void deleteItems(List itemIds) { + getVariableItemService(user).deleteItems(itemIds); + } + + /** + * 浮动薪酬项目详细信息 + * + * @param id + */ + public VariableItemListDTO getDetail(Long id) { + return getVariableItemService(user).getDetail(id); + } +} From 5055a4801a598982fa455dafbf501fc3aed7b422 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Mon, 12 Aug 2024 16:36:27 +0800 Subject: [PATCH 009/218] =?UTF-8?q?=E6=B5=AE=E5=8A=A8=E8=96=AA=E9=85=AC?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=B9=89=E5=8A=A1=E4=BA=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../datacollection/bo/VariableArchiveBO.java | 1 + .../bo/VariableArchiveExcelBO.java | 28 ++++++++-- .../dto/VariableArchiveListDTO.java | 12 +++++ .../VariableArchiveImportHandleParam.java | 8 ++- .../param/VariableArchiveQueryParam.java | 3 ++ .../param/VariableArchiveSaveParam.java | 3 ++ .../datacollection/po/VariableArchivePO.java | 2 + .../salaryacct/bo/CalculateFormulaVarBO.java | 20 +++---- .../datacollection/VariableArchiveMapper.xml | 52 +++++++++++++++++-- .../service/VariableArchiveService.java | 2 +- .../impl/SalaryAcctCalculateServiceImpl.java | 5 +- .../impl/VariableArchiveServiceImpl.java | 39 +++++++++++--- 12 files changed, 141 insertions(+), 34 deletions(-) diff --git a/src/com/engine/salary/entity/datacollection/bo/VariableArchiveBO.java b/src/com/engine/salary/entity/datacollection/bo/VariableArchiveBO.java index 92f09ec15..b4f2778d7 100644 --- a/src/com/engine/salary/entity/datacollection/bo/VariableArchiveBO.java +++ b/src/com/engine/salary/entity/datacollection/bo/VariableArchiveBO.java @@ -37,6 +37,7 @@ public class VariableArchiveBO { WeaTableColumn employeeIdColumn = new WeaTableColumn("100px", "人员信息表的主键id", "employeeId"); employeeIdColumn.setDisplay(WeaBoolAttr.FALSE); columns.add(employeeIdColumn); + columns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(85429, "个税扣缴义务人"), "taxAgentName")); columns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(85429, "姓名"), "username")); columns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(86185, "部门"), "departmentName")); columns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(86186, "手机号"), "mobile")); diff --git a/src/com/engine/salary/entity/datacollection/bo/VariableArchiveExcelBO.java b/src/com/engine/salary/entity/datacollection/bo/VariableArchiveExcelBO.java index 2644c4236..313ddc1d4 100644 --- a/src/com/engine/salary/entity/datacollection/bo/VariableArchiveExcelBO.java +++ b/src/com/engine/salary/entity/datacollection/bo/VariableArchiveExcelBO.java @@ -8,6 +8,7 @@ import com.engine.salary.entity.datacollection.param.VariableArchiveImportHandle import com.engine.salary.entity.datacollection.po.VariableArchiveItemPO; import com.engine.salary.entity.datacollection.po.VariableArchivePO; import com.engine.salary.entity.datacollection.po.VariableItemPO; +import com.engine.salary.entity.taxagent.dto.TaxAgentManageRangeEmployeeDTO; import com.engine.salary.enums.UserStatusEnum; import com.engine.salary.enums.salaryarchive.SalaryArchiveFieldTypeEnum; import com.engine.salary.util.SalaryI18nUtil; @@ -174,20 +175,35 @@ public class VariableArchiveExcelBO extends Service { return isError; } + // 个税扣缴义务人 + String taxAgentCellVal = Optional.ofNullable(map.get(taxAgentI18n)).orElse("").toString(); + map.put("taxAgent", taxAgentCellVal); + Optional optionalTaxAgent = importHandleParam.getTaxAgentList().stream().filter(m -> m.getTaxAgentName().equals(taxAgentCellVal)).findFirst(); + if (!optionalTaxAgent.isPresent()) { + Map errorMessageMap = Maps.newHashMap(); + errorMessageMap.put("message", rowindex + "个税扣缴义务人不存在,或不在权限范围内"); + excelComments.add(errorMessageMap); + isError = true; + return isError; + } + Long taxAgentId = optionalTaxAgent.get().getTaxAgentId(); + map.put("taxAgentId", taxAgentId); + // 用于初始化导入数据校验 map.put("employeeId", employeeId); - if (allTodoVariableArchives.contains(employeeId.toString())) { + String repeatKey = optionalTaxAgent.get().getTaxAgentId() + "-" + employeeId.toString(); + if (allTodoVariableArchives.contains(repeatKey)) { Map errorMessageMap = Maps.newHashMap(); errorMessageMap.put("message", rowindex + "存在重复数据"); excelComments.add(errorMessageMap); isError = true; return isError; } else { - allTodoVariableArchives.add(employeeId.toString()); + allTodoVariableArchives.add(repeatKey); } // 构建薪资档案 - VariableArchivePO finalVariableArchive = buildVariableArchive(employeeId, importHandleParam); + VariableArchivePO finalVariableArchive = buildVariableArchive(employeeId, taxAgentId, importHandleParam); map.put("variableArchiveId", finalVariableArchive.getId()); List needDelArchiveItemIds = new ArrayList<>(); for (int j = 0; j < headers.size(); j++) { @@ -267,16 +283,18 @@ public class VariableArchiveExcelBO extends Service { * 构建浮动薪资档案对象 * * @param employeeId + * @param taxAgentId * @param importHandleParam * @return */ - public static VariableArchivePO buildVariableArchive(Long employeeId, VariableArchiveImportHandleParam importHandleParam) { - VariableArchivePO variableArchivePO = importHandleParam.getVariableArchivesMap().get(employeeId); + public static VariableArchivePO buildVariableArchive(Long employeeId, Long taxAgentId, VariableArchiveImportHandleParam importHandleParam) { + VariableArchivePO variableArchivePO = importHandleParam.getVariableArchivesMap().get(taxAgentId + "-" + employeeId); if (variableArchivePO == null) { // 新增浮动档案 variableArchivePO = VariableArchivePO.builder() .id(IdGenerator.generate()) .employeeId(employeeId) + .taxAgentId(taxAgentId) .salaryMonth(importHandleParam.getSalaryMonthDate()) .createTime(importHandleParam.getNowTime()) .updateTime(importHandleParam.getNowTime()) diff --git a/src/com/engine/salary/entity/datacollection/dto/VariableArchiveListDTO.java b/src/com/engine/salary/entity/datacollection/dto/VariableArchiveListDTO.java index 7851c3cb2..de5c0fd22 100644 --- a/src/com/engine/salary/entity/datacollection/dto/VariableArchiveListDTO.java +++ b/src/com/engine/salary/entity/datacollection/dto/VariableArchiveListDTO.java @@ -34,6 +34,18 @@ public class VariableArchiveListDTO { private Date salaryMonth; + /** + * 个税扣缴义务人 + */ + @TableTitle(title = "个税扣缴义务人", dataIndex = "taxAgentName", key = "taxAgentName") + @I18n + private String taxAgentName; + + /** + * 个税扣缴义务人id + */ + private String taxAgentId; + /** * 姓名 */ diff --git a/src/com/engine/salary/entity/datacollection/param/VariableArchiveImportHandleParam.java b/src/com/engine/salary/entity/datacollection/param/VariableArchiveImportHandleParam.java index 4b3622869..ab12ad1a0 100644 --- a/src/com/engine/salary/entity/datacollection/param/VariableArchiveImportHandleParam.java +++ b/src/com/engine/salary/entity/datacollection/param/VariableArchiveImportHandleParam.java @@ -4,6 +4,7 @@ import com.engine.salary.entity.datacollection.DataCollectionEmployee; import com.engine.salary.entity.datacollection.po.VariableArchiveItemPO; import com.engine.salary.entity.datacollection.po.VariableArchivePO; import com.engine.salary.entity.datacollection.po.VariableItemPO; +import com.engine.salary.entity.taxagent.dto.TaxAgentManageRangeEmployeeDTO; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -59,7 +60,7 @@ public class VariableArchiveImportHandleParam { /** * 查询已有的浮动薪资档案基本数据 */ - Map variableArchivesMap; + Map variableArchivesMap; /** * 浮动薪资项目id @@ -71,6 +72,11 @@ public class VariableArchiveImportHandleParam { */ Map> effectiveItemListMap; + /** + * 获取所有个税扣缴义务人 + */ + Collection taxAgentList; + /** * 当前时间 */ diff --git a/src/com/engine/salary/entity/datacollection/param/VariableArchiveQueryParam.java b/src/com/engine/salary/entity/datacollection/param/VariableArchiveQueryParam.java index e7296d645..76066cea8 100644 --- a/src/com/engine/salary/entity/datacollection/param/VariableArchiveQueryParam.java +++ b/src/com/engine/salary/entity/datacollection/param/VariableArchiveQueryParam.java @@ -25,6 +25,9 @@ public class VariableArchiveQueryParam extends BaseQueryParam { // 主键id private Long id; + // 个税扣缴义务人 + private List taxAgentIds; + // 薪资年月 @DataCheck(require = true,message = "薪资所属月不能为空") private String salaryMonth; diff --git a/src/com/engine/salary/entity/datacollection/param/VariableArchiveSaveParam.java b/src/com/engine/salary/entity/datacollection/param/VariableArchiveSaveParam.java index e94448ffd..60e82cf91 100644 --- a/src/com/engine/salary/entity/datacollection/param/VariableArchiveSaveParam.java +++ b/src/com/engine/salary/entity/datacollection/param/VariableArchiveSaveParam.java @@ -25,6 +25,9 @@ public class VariableArchiveSaveParam { @DataCheck(require = true,message = "薪资所属月不能为空") private String salaryMonth; + @DataCheck(require = true,message = "义务人id不能为空") + private Long taxAgentIds; + private Date salaryMonthDate; // 人员id diff --git a/src/com/engine/salary/entity/datacollection/po/VariableArchivePO.java b/src/com/engine/salary/entity/datacollection/po/VariableArchivePO.java index b3735be89..c078f7dbc 100644 --- a/src/com/engine/salary/entity/datacollection/po/VariableArchivePO.java +++ b/src/com/engine/salary/entity/datacollection/po/VariableArchivePO.java @@ -28,6 +28,8 @@ public class VariableArchivePO { */ private Long employeeId; + private Long taxAgentId; + /** * 薪资月份 */ diff --git a/src/com/engine/salary/entity/salaryacct/bo/CalculateFormulaVarBO.java b/src/com/engine/salary/entity/salaryacct/bo/CalculateFormulaVarBO.java index 5035085ac..b341f162d 100644 --- a/src/com/engine/salary/entity/salaryacct/bo/CalculateFormulaVarBO.java +++ b/src/com/engine/salary/entity/salaryacct/bo/CalculateFormulaVarBO.java @@ -253,27 +253,23 @@ public class CalculateFormulaVarBO { } private void handleVariableArchiveData(SalaryAcctCalculateBO salaryAcctCalculateBO, Map> resultMap) { - // 浮动薪资可选字段 - Map> tempMap = Maps.newHashMapWithExpectedSize(variableArchiveList.size()); - variableArchiveList.forEach(map -> { - Long key = Long.valueOf(map.get("employeeId").toString()); - List formulaVarValues = tempMap.computeIfAbsent(key, k -> Lists.newArrayList()); + Map> variableArchiveMap = SalaryEntityUtil.convert2Map(variableArchiveList, map -> map.getOrDefault("taxAgentIds", "").toString() + "-" + map.getOrDefault("employeeId", "").toString()); + // 填充到返回结果集中 + for (SalaryAcctEmployeePO salaryAcctEmployeePO : salaryAcctCalculateBO.getSalaryAcctEmployeePOS()) { + List formulaVarValues = resultMap.computeIfAbsent(salaryAcctEmployeePO.getEmployeeId() + "_" + salaryAcctEmployeePO.getTaxAgentId(), + k -> Lists.newArrayList()); + + String key = salaryAcctEmployeePO.getTaxAgentId().toString() + "-" + salaryAcctEmployeePO.getEmployeeId().toString(); + Map map = variableArchiveMap.getOrDefault(key, Collections.emptyMap()); formulaVarValues.addAll(salaryAcctCalculateBO.getVariableItems().stream().map(field -> { String fieldId = SalaryFormulaReferenceEnum.VARIABLE_ITEM.getValue() + SalaryFormulaFieldConstant.FIELD_ID_SEPARATOR + field.getCode(); - String value = map.getOrDefault(field.getId() + SalaryItemConstant.VARIABLE_ITEM_DYNAMIC_SUFFIX, StringUtils.EMPTY) == null ? StringUtils.EMPTY : map.getOrDefault(field.getId() + SalaryItemConstant.VARIABLE_ITEM_DYNAMIC_SUFFIX, StringUtils.EMPTY).toString(); return new FormulaVarValue().setFieldId(fieldId).setFieldValue(value); }).collect(Collectors.toList())); - }); - // 填充到返回结果集中 - for (SalaryAcctEmployeePO salaryAcctEmployeePO : salaryAcctCalculateBO.getSalaryAcctEmployeePOS()) { - List formulaVarValues = resultMap.computeIfAbsent(salaryAcctEmployeePO.getEmployeeId() + "_" + salaryAcctEmployeePO.getTaxAgentId(), - k -> Lists.newArrayList()); - formulaVarValues.addAll(tempMap.getOrDefault(salaryAcctEmployeePO.getEmployeeId(), Collections.emptyList())); } } diff --git a/src/com/engine/salary/mapper/datacollection/VariableArchiveMapper.xml b/src/com/engine/salary/mapper/datacollection/VariableArchiveMapper.xml index ff279f29c..c6352fa2f 100644 --- a/src/com/engine/salary/mapper/datacollection/VariableArchiveMapper.xml +++ b/src/com/engine/salary/mapper/datacollection/VariableArchiveMapper.xml @@ -16,6 +16,7 @@ t.id , t.employee_id + , t.tax_agent_id , t.salary_month , t.create_time , t.update_time @@ -52,6 +53,9 @@ AND employee_id = #{employeeId} + + AND tax_agent_id = #{taxAgentId} + AND salary_month = #{salaryMonth} @@ -83,6 +87,7 @@ t.id , t.employee_id + , t.tax_agent_id , t.salary_month , t.create_time , t.update_time @@ -97,6 +102,8 @@ , e.enddate as dismissdate , d.departmentname AS departmentName , c.subcompanyname AS subcompanyName + , a.name AS taxAgentName + , a.id AS taxAgentId + + update hrsa_fund_archives diff --git a/src/com/engine/salary/mapper/siarchives/OtherSchemeMapper.java b/src/com/engine/salary/mapper/siarchives/OtherSchemeMapper.java index 6ad9fbe78..fff3bbd3b 100644 --- a/src/com/engine/salary/mapper/siarchives/OtherSchemeMapper.java +++ b/src/com/engine/salary/mapper/siarchives/OtherSchemeMapper.java @@ -105,4 +105,6 @@ public interface OtherSchemeMapper { * @param endTime */ void updateEndTime(@Param("id")Long id, @Param("endTime")String endTime); + + List listBySchemeId(@Param("schemeId") Long schemeId, @Param("runStatuses") List runStatuses); } diff --git a/src/com/engine/salary/mapper/siarchives/OtherSchemeMapper.xml b/src/com/engine/salary/mapper/siarchives/OtherSchemeMapper.xml index 7885d7358..2a55be2f2 100644 --- a/src/com/engine/salary/mapper/siarchives/OtherSchemeMapper.xml +++ b/src/com/engine/salary/mapper/siarchives/OtherSchemeMapper.xml @@ -258,6 +258,22 @@ WHERE delete_type = 0 + + update hrsa_other_archives diff --git a/src/com/engine/salary/mapper/siarchives/SocialSchemeMapper.java b/src/com/engine/salary/mapper/siarchives/SocialSchemeMapper.java index 6e3e97982..246cb5c78 100644 --- a/src/com/engine/salary/mapper/siarchives/SocialSchemeMapper.java +++ b/src/com/engine/salary/mapper/siarchives/SocialSchemeMapper.java @@ -136,4 +136,6 @@ public interface SocialSchemeMapper { * @param endTime */ void updateEndTime(@Param("id")Long id, @Param("endTime")String endTime); + + List listBySchemeId(@Param("schemeId")Long schemeId, @Param("runStatuses")List runStatus); } diff --git a/src/com/engine/salary/mapper/siarchives/SocialSchemeMapper.xml b/src/com/engine/salary/mapper/siarchives/SocialSchemeMapper.xml index 1dba6c07f..9041bde36 100644 --- a/src/com/engine/salary/mapper/siarchives/SocialSchemeMapper.xml +++ b/src/com/engine/salary/mapper/siarchives/SocialSchemeMapper.xml @@ -919,6 +919,22 @@ WHERE delete_type = 0 + + update hrsa_social_archives diff --git a/src/com/engine/salary/service/SISchemeService.java b/src/com/engine/salary/service/SISchemeService.java index e465d2740..86eb024ee 100644 --- a/src/com/engine/salary/service/SISchemeService.java +++ b/src/com/engine/salary/service/SISchemeService.java @@ -27,7 +27,7 @@ public interface SISchemeService { Map insertScheme(Map params); - Map update(Map params); + String update(Map params); Map delete(Map params); diff --git a/src/com/engine/salary/service/impl/SISchemeServiceImpl.java b/src/com/engine/salary/service/impl/SISchemeServiceImpl.java index d63bdcd24..349c2fee0 100644 --- a/src/com/engine/salary/service/impl/SISchemeServiceImpl.java +++ b/src/com/engine/salary/service/impl/SISchemeServiceImpl.java @@ -7,10 +7,10 @@ import com.cloudstore.eccom.pc.table.WeaTableColumn; import com.cloudstore.eccom.result.WeaResultMsg; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; +import com.engine.hrmelog.entity.dto.LoggerContext; import com.engine.salary.component.SalaryWeaTable; import com.engine.salary.config.SalaryElogConfig; import com.engine.salary.constant.SalaryDefaultTenantConstant; -import com.engine.hrmelog.entity.dto.LoggerContext; import com.engine.salary.encrypt.EncryptUtil; import com.engine.salary.entity.datacollection.DataCollectionEmployee; import com.engine.salary.entity.siarchives.param.InsuranceArchivesListParam; @@ -84,6 +84,7 @@ import java.io.InputStream; import java.math.BigDecimal; import java.util.*; import java.util.function.Function; +import java.util.regex.Matcher; import java.util.regex.Pattern; import java.util.stream.Collectors; @@ -211,13 +212,12 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { } @Override - public Map update(Map params) { + public String update(Map params) { // return commandExecutor.execute(new SISchemeUpdateCmd(params, user)); Map apidatas = new HashMap(16); InsuranceSchemeReqParam insuranceSchemeReqParam = (InsuranceSchemeReqParam) params.get("insuranceSchemeReqParam"); // siSchemeBiz.update(insuranceSchemeReqParam, (long) user.getUID()); - update(insuranceSchemeReqParam, (long) user.getUID()); - return apidatas; + return update(insuranceSchemeReqParam, (long) user.getUID()); } @Override @@ -2484,7 +2484,7 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { * @param updateParam * @param employeeId */ - public void update(InsuranceSchemeReqParam updateParam, long employeeId) { + public String update(InsuranceSchemeReqParam updateParam, long employeeId) { //查询是否存在福利方案 InsuranceSchemePO insuranceSchemePO = getById(updateParam.getInsuranceScheme().getId()); if (Objects.isNull(insuranceSchemePO)) { @@ -2521,12 +2521,29 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { //记录主表操作日志 loggerContext.setNewValues(insuranceSchemePO1); SalaryElogConfig.siSchemeLoggerTemplate.write(loggerContext); + // 查询原本的福利明细信息 + List oldInsuranceSchemeDetails = getInsuranceSchemeDetailMapper().queryInsuranceSchemeDetailList(updateParam.getInsuranceScheme().getId(), IsPaymentEnum.YES.getValue()); + // 本次福利明细 + List insuranceSchemeDetailPOS = InsuranceSchemeBO.convertToInsuranceSchemeDetailPoList(updateParam.getInsuranceSchemeDetailList(), employeeId, insuranceSchemePO.getId()); + + StringBuilder baseLimitStrBuilder = new StringBuilder(); + if (updateParam.getValidate() || updateParam.getChangeData()) { + // 查询本次修改了哪些类型的上下限 + List schemeDetailChangeLimitList = getChanceLimitSchemeDetailList(oldInsuranceSchemeDetails, insuranceSchemeDetailPOS); + // 对于不满足上下限的基数进行自动调整 + autoAdjustBaseByLimit(updateParam, schemeDetailChangeLimitList, insuranceSchemePO, baseLimitStrBuilder); + if (updateParam.getValidate() && StringUtils.isNotBlank(baseLimitStrBuilder.toString())) { + // 是校验且存在校验不通过的档案,返回前端确认 + return baseLimitStrBuilder.toString(); + } + } + //更新福利方案明细表 先删后插 getInsuranceSchemeDetailMapper().batchDeleteByPrimaryIds(Collections.singleton(updateParam.getInsuranceScheme().getId())); //更新明细表 - List insuranceSchemeDetailPOS = InsuranceSchemeBO.convertToInsuranceSchemeDetailPoList(updateParam.getInsuranceSchemeDetailList(), employeeId, insuranceSchemePO.getId()); encryptUtil.encryptList(insuranceSchemeDetailPOS, InsuranceSchemeDetailPO.class); insuranceSchemeDetailPOS.forEach(getInsuranceSchemeDetailMapper()::insert); + //记录明细表操作日志 encryptUtil.decryptList(insuranceSchemeDetailPOS, InsuranceSchemeDetailPO.class); LoggerContext insuranceSchemeDetailContext = new LoggerContext<>(); @@ -2538,7 +2555,214 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { insuranceSchemeDetailContext.setOperatedesc(SalaryI18nUtil.getI18nLabel(0, "福利方案明细")); insuranceSchemeDetailPOS.forEach(insuranceSchemeDetailContext::setNewValues); SalaryElogConfig.siSchemeLoggerTemplate.write(insuranceSchemeDetailContext); + return "success"; + } + /** + * 对于不满足上下限的基数进行自动调整 + * @param schemeDetailChangeLimitList + * @param insuranceSchemePO + */ + private void autoAdjustBaseByLimit(InsuranceSchemeReqParam updateParam, List schemeDetailChangeLimitList, InsuranceSchemePO insuranceSchemePO, StringBuilder baseLimitStrBuilder) { + Map> insuranceSchemeDetailMap = SalaryEntityUtil.group2Map(schemeDetailChangeLimitList, InsuranceSchemeDetailPO::getPaymentScope); + List personChangeDeatilList = insuranceSchemeDetailMap.getOrDefault(PaymentScopeEnum.SCOPE_PERSON.getValue(), Collections.emptyList()); + List companyChangeDetailList = insuranceSchemeDetailMap.getOrDefault(PaymentScopeEnum.SCOPE_COMPANY.getValue(), Collections.emptyList()); + List runStatus = Arrays.asList(EmployeeStatusEnum.STAY_DEL.getValue(), EmployeeStatusEnum.PAYING.getValue(), EmployeeStatusEnum.STAY_DEL.getValue()); + // 获取该方案下的社保福利档案 + Integer welfareType = insuranceSchemePO.getWelfareType(); + if (welfareType.equals(WelfareTypeEnum.SOCIAL_SECURITY.getValue())) { + List needUpdateSocialArchiveList = new ArrayList<>(); + List insuranceArchivesSocialSchemePOS = getSocialSchemeMapper().listBySchemeId(insuranceSchemePO.getId(), runStatus); + encryptUtil.decryptList(insuranceArchivesSocialSchemePOS, InsuranceArchivesSocialSchemePO.class); + // 获取人员信息 + List empIds = insuranceArchivesSocialSchemePOS.stream().map(InsuranceArchivesSocialSchemePO::getEmployeeId).collect(Collectors.toList()); + List employeeList = getSalaryEmployeeService(user).listByIds(empIds); + Map employeeMap = SalaryEntityUtil.convert2Map(employeeList, DataCollectionEmployee::getEmployeeId); + // 社保 + insuranceArchivesSocialSchemePOS.forEach(archive -> { + Boolean[] changeFlag = {false}; + // 个人调整 + String socialPaymentBaseString = archive.getSocialPaymentBaseString(); + if (CollectionUtils.isNotEmpty(personChangeDeatilList)) { + socialPaymentBaseString = adaptWelBaseLimit(socialPaymentBaseString, personChangeDeatilList, changeFlag); + } + // 公司调整 + String socialPaymentComBaseString = archive.getSocialPaymentComBaseString(); + if (CollectionUtils.isNotEmpty(companyChangeDetailList)) { + socialPaymentComBaseString = adaptWelBaseLimit(socialPaymentComBaseString, companyChangeDetailList, changeFlag); + } + if (changeFlag[0]) { + DataCollectionEmployee employee = employeeMap.get(archive.getEmployeeId()); + baseLimitStrBuilder.append(employee == null ? archive.getEmployeeId() : employee.getUsername() + "\n"); + archive.setSocialPaymentBaseString(socialPaymentBaseString); + archive.setSocialPaymentComBaseString(socialPaymentComBaseString); + needUpdateSocialArchiveList.add(archive); + if (updateParam.getChangeData() && CollectionUtils.isNotEmpty(needUpdateSocialArchiveList)) { + // 更新 + encryptUtil.encrypt(archive, InsuranceArchivesSocialSchemePO.class); + getSocialSchemeMapper().updateById(archive); + } + } + }); + } else if (welfareType.equals(WelfareTypeEnum.ACCUMULATION_FUND.getValue())) { + List needUpdateFundArchiveList = new ArrayList<>(); + List insuranceArchivesFundSchemePOS = getFundSchemeMapper().listBySchemeId(insuranceSchemePO.getId(), runStatus); + encryptUtil.decryptList(insuranceArchivesFundSchemePOS, InsuranceArchivesFundSchemePO.class); + // 获取人员信息 + List empIds = insuranceArchivesFundSchemePOS.stream().map(InsuranceArchivesFundSchemePO::getEmployeeId).collect(Collectors.toList()); + List employeeList = getSalaryEmployeeService(user).listByIds(empIds); + Map employeeMap = SalaryEntityUtil.convert2Map(employeeList, DataCollectionEmployee::getEmployeeId); + // 公积金 + insuranceArchivesFundSchemePOS.forEach(archive -> { + Boolean[] changeFlag = {false}; + // 个人调整 + String fundPaymentBaseString = archive.getFundPaymentBaseString(); + if (CollectionUtils.isNotEmpty(personChangeDeatilList)) { + fundPaymentBaseString = adaptWelBaseLimit(fundPaymentBaseString, personChangeDeatilList, changeFlag); + } + // 公司调整 + String fundPaymentComBaseString = archive.getFundPaymentComBaseString(); + if (CollectionUtils.isNotEmpty(companyChangeDetailList)) { + fundPaymentComBaseString = adaptWelBaseLimit(fundPaymentComBaseString, companyChangeDetailList, changeFlag); + } + if (changeFlag[0]) { + DataCollectionEmployee employee = employeeMap.get(archive.getEmployeeId()); + baseLimitStrBuilder.append(employee == null ? archive.getEmployeeId() : employee.getUsername() + "\n"); + archive.setFundPaymentBaseString(fundPaymentBaseString); + archive.setFundPaymentComBaseString(fundPaymentComBaseString); + needUpdateFundArchiveList.add(archive); + if (updateParam.getChangeData() && CollectionUtils.isNotEmpty(needUpdateFundArchiveList)) { + // 更新 + encryptUtil.encrypt(archive, InsuranceArchivesFundSchemePO.class); + getFundSchemeMapper().updateById(archive); + } + } + }); + } else if (welfareType.equals(WelfareTypeEnum.OTHER.getValue())) { + List insuranceArchivesOtherSchemePOS = getOtherSchemeMapper().listBySchemeId(insuranceSchemePO.getId(), runStatus); + encryptUtil.decryptList(insuranceArchivesOtherSchemePOS, InsuranceArchivesOtherSchemePO.class); + List needUpdateOtherArchiveList = new ArrayList<>(); + // 获取人员信息 + List empIds = insuranceArchivesOtherSchemePOS.stream().map(InsuranceArchivesOtherSchemePO::getEmployeeId).collect(Collectors.toList()); + List employeeList = getSalaryEmployeeService(user).listByIds(empIds); + Map employeeMap = SalaryEntityUtil.convert2Map(employeeList, DataCollectionEmployee::getEmployeeId); + // 企业年金或其他福利 + insuranceArchivesOtherSchemePOS.forEach(archive -> { + Boolean[] changeFlag = {false}; + // 个人调整 + String otherPaymentBaseString = archive.getOtherPaymentBaseString(); + if (CollectionUtils.isNotEmpty(personChangeDeatilList)) { + otherPaymentBaseString = adaptWelBaseLimit(otherPaymentBaseString, personChangeDeatilList, changeFlag); + } + // 公司调整的 + String otherPaymentComBaseString = archive.getOtherPaymentComBaseString(); + if (CollectionUtils.isNotEmpty(companyChangeDetailList)) { + otherPaymentComBaseString = adaptWelBaseLimit(otherPaymentComBaseString, companyChangeDetailList, changeFlag); + } + if (changeFlag[0]) { + DataCollectionEmployee employee = employeeMap.get(archive.getEmployeeId()); + baseLimitStrBuilder.append(employee == null ? archive.getEmployeeId() : employee.getUsername() + "\n"); + archive.setOtherPaymentBaseString(otherPaymentBaseString); + archive.setOtherPaymentComBaseString(otherPaymentComBaseString); + needUpdateOtherArchiveList.add(archive); + if (updateParam.getChangeData() && CollectionUtils.isNotEmpty(needUpdateOtherArchiveList)) { + // 更新 + encryptUtil.encrypt(archive, InsuranceArchivesOtherSchemePO.class); + getOtherSchemeMapper().updateById(archive); + } + } + }); + } + } + + public String adaptWelBaseLimit(String paymentBaseString, List insuranceSchemeDetailPOList, Boolean[] changeFlag) { + + if (paymentBaseString == null) { + return null; + } + Map paymentBaseJson = JSON.parseObject(paymentBaseString, new HashMap().getClass()); + if (paymentBaseJson == null) { + return null; + } + Map insuranceSchemeDetailPOMap = SalaryEntityUtil.convert2Map(insuranceSchemeDetailPOList, InsuranceSchemeDetailPO::getInsuranceId); + List insuranceIdList = insuranceSchemeDetailPOList.stream().map(po -> po.getInsuranceId().toString()).collect(Collectors.toList()); + + for (Map.Entry entry : paymentBaseJson.entrySet()) { + + //判断福利值是否为空/数字 + if (entry.getValue() == null || entry.getValue().length() == 0) { + continue; + } else if (!isNumeric(entry.getValue())) { + log.info("福利值非数字!"); + continue; + // throw new SalaryRunTimeException("福利值非数字"); + } + + if (!insuranceIdList.contains(entry.getKey())) { + // 没有修改上下限 + continue; + } + InsuranceSchemeDetailPO insuranceSchemeDetailPO = insuranceSchemeDetailPOMap.get(Long.valueOf(entry.getKey())); + if (insuranceSchemeDetailPO != null) { + + encryptUtil.decrypt(insuranceSchemeDetailPO, InsuranceSchemeDetailPO.class); + String lowerLimit = "0.000".equals(insuranceSchemeDetailPO.getLowerLimit()) ? null : insuranceSchemeDetailPO.getLowerLimit(); + String upperLimit = "0.000".equals(insuranceSchemeDetailPO.getUpperLimit()) ? null : insuranceSchemeDetailPO.getUpperLimit(); + if (lowerLimit != null && lowerLimit.length() > 0 && Double.parseDouble(entry.getValue()) < Double.parseDouble(lowerLimit)) { + //数值低于对应福利明细下限 + entry.setValue(lowerLimit); + changeFlag[0] = true; + } + if (upperLimit != null && upperLimit.length() > 0 && Double.parseDouble(entry.getValue()) > Double.parseDouble(upperLimit)) { + //数值高于对应福利明细上限 + entry.setValue(upperLimit); + changeFlag[0] = true; + } + } + } + return JSON.toJSONString(paymentBaseJson); + } + + /** + * 判断字符串是否为整数或者小数或者负数 + */ + public static boolean isNumeric(String str){ + + Pattern pattern = Pattern.compile("^-?\\d+(\\.\\d+)?$"); + Matcher isNum = pattern.matcher(str); + if (!isNum.matches()) { + return false; + } + return true; + + } + + /** + * 获取修改了哪些明细项的上限和下限 + * @param oldInsuranceSchemeDetails + * @param newInsuranceSchemeDetails + * @return + */ + private List getChanceLimitSchemeDetailList(List oldInsuranceSchemeDetails, List newInsuranceSchemeDetails) { + List schemeDetailChangeLimitList = new ArrayList<>(); + // key: 福利项id-缴纳范围 + Map oldInsuranceSchemeDetailMap = SalaryEntityUtil.convert2Map(oldInsuranceSchemeDetails, d -> d.getInsuranceId() + "-" + d.getPaymentScope()); + newInsuranceSchemeDetails.stream() + .filter(detail -> detail.getIsPayment().equals(NumberUtils.INTEGER_ONE)) + .forEach(detail -> { + boolean changeFlag = false; + InsuranceSchemeDetailPO oldInsuranceSchemeDetailPO = oldInsuranceSchemeDetailMap.get(detail.getInsuranceId() + "-" + detail.getPaymentScope()); + if (!oldInsuranceSchemeDetailPO.getUpperLimit().equals(detail.getUpperLimit())) { + changeFlag = true; + } + if (!oldInsuranceSchemeDetailPO.getLowerLimit().equals(detail.getLowerLimit())) { + changeFlag = true; + } + if (changeFlag) { + schemeDetailChangeLimitList.add(detail); + } + }); + return schemeDetailChangeLimitList; } public int checkBeforeDeleteSocialscheme(Map params) { diff --git a/src/com/engine/salary/web/SISchemeController.java b/src/com/engine/salary/web/SISchemeController.java index bcf226914..89772a896 100644 --- a/src/com/engine/salary/web/SISchemeController.java +++ b/src/com/engine/salary/web/SISchemeController.java @@ -133,7 +133,7 @@ public class SISchemeController { User user = HrmUserVarify.getUser(request, response); Map map = ParamUtil.request2Map(request); map.put("insuranceSchemeReqParam", insuranceSchemeReqParam); - return new ResponseResult, Map>(user).run(getService(user)::update, map); + return new ResponseResult,String>(user).run(getService(user)::update, map); } /** From 984e544503f943b5139dc4978b7b1ee803179bb7 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Mon, 19 Aug 2024 16:27:56 +0800 Subject: [PATCH 018/218] =?UTF-8?q?=E7=A4=BE=E4=BF=9D=E6=96=B9=E6=A1=88?= =?UTF-8?q?=E4=B8=8A=E4=B8=8B=E9=99=90=E8=87=AA=E5=8A=A8=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E5=9F=BA=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salary/service/impl/SISchemeServiceImpl.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/com/engine/salary/service/impl/SISchemeServiceImpl.java b/src/com/engine/salary/service/impl/SISchemeServiceImpl.java index 349c2fee0..b2c68d3a1 100644 --- a/src/com/engine/salary/service/impl/SISchemeServiceImpl.java +++ b/src/com/engine/salary/service/impl/SISchemeServiceImpl.java @@ -2752,11 +2752,15 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { .forEach(detail -> { boolean changeFlag = false; InsuranceSchemeDetailPO oldInsuranceSchemeDetailPO = oldInsuranceSchemeDetailMap.get(detail.getInsuranceId() + "-" + detail.getPaymentScope()); - if (!oldInsuranceSchemeDetailPO.getUpperLimit().equals(detail.getUpperLimit())) { - changeFlag = true; - } - if (!oldInsuranceSchemeDetailPO.getLowerLimit().equals(detail.getLowerLimit())) { + if (oldInsuranceSchemeDetailPO == null) { changeFlag = true; + } else { + if (!oldInsuranceSchemeDetailPO.getUpperLimit().equals(detail.getUpperLimit())) { + changeFlag = true; + } + if (!oldInsuranceSchemeDetailPO.getLowerLimit().equals(detail.getLowerLimit())) { + changeFlag = true; + } } if (changeFlag) { schemeDetailChangeLimitList.add(detail); From eb5cf04622c780e741048267aec6e17289bb5d04 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Wed, 28 Aug 2024 11:02:46 +0800 Subject: [PATCH 019/218] fix --- .../engine/salary/mapper/siarchives/FundSchemeMapper.xml | 2 +- .../engine/salary/mapper/siarchives/OtherSchemeMapper.xml | 2 +- src/com/engine/salary/service/impl/SISchemeServiceImpl.java | 6 ++++++ 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/com/engine/salary/mapper/siarchives/FundSchemeMapper.xml b/src/com/engine/salary/mapper/siarchives/FundSchemeMapper.xml index d6089636a..bb3e6b558 100644 --- a/src/com/engine/salary/mapper/siarchives/FundSchemeMapper.xml +++ b/src/com/engine/salary/mapper/siarchives/FundSchemeMapper.xml @@ -281,7 +281,7 @@ FROM hrsa_fund_archives t left join hrsa_insurance_base_info i on i.fund_archives_id = t.id - WHERE delete_type = 0 + WHERE t.delete_type = 0 AND fund_scheme_id = #{fundSchemeId} AND i.run_status IN diff --git a/src/com/engine/salary/mapper/siarchives/OtherSchemeMapper.xml b/src/com/engine/salary/mapper/siarchives/OtherSchemeMapper.xml index 2a55be2f2..26db75504 100644 --- a/src/com/engine/salary/mapper/siarchives/OtherSchemeMapper.xml +++ b/src/com/engine/salary/mapper/siarchives/OtherSchemeMapper.xml @@ -264,7 +264,7 @@ FROM hrsa_other_archives t left join hrsa_insurance_base_info i on i.other_archives_id = t.id - WHERE delete_type = 0 + WHERE t.delete_type = 0 AND other_scheme_id = #{schemeId} AND i.run_status IN diff --git a/src/com/engine/salary/service/impl/SISchemeServiceImpl.java b/src/com/engine/salary/service/impl/SISchemeServiceImpl.java index b2c68d3a1..699094813 100644 --- a/src/com/engine/salary/service/impl/SISchemeServiceImpl.java +++ b/src/com/engine/salary/service/impl/SISchemeServiceImpl.java @@ -2687,6 +2687,12 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { Map insuranceSchemeDetailPOMap = SalaryEntityUtil.convert2Map(insuranceSchemeDetailPOList, InsuranceSchemeDetailPO::getInsuranceId); List insuranceIdList = insuranceSchemeDetailPOList.stream().map(po -> po.getInsuranceId().toString()).collect(Collectors.toList()); + Set paymentInsuranceIdList = paymentBaseJson.keySet(); + List needAddInsuranceIds = insuranceIdList.stream().filter(insuranceId -> !paymentInsuranceIdList.contains(insuranceId)).collect(Collectors.toList()); + needAddInsuranceIds.stream().forEach(insuranceId -> { + paymentBaseJson.put(insuranceId, "0.00"); + }); + for (Map.Entry entry : paymentBaseJson.entrySet()) { //判断福利值是否为空/数字 From e3200f79325719d51cdd384596bc8a0ef444fd13 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Fri, 30 Aug 2024 13:35:17 +0800 Subject: [PATCH 020/218] =?UTF-8?q?fix=E6=8A=A5=E8=A1=A8=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E9=80=8F=E8=A7=86=20bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/SalaryStatisticsReportServiceImpl.java | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/com/engine/salary/report/service/impl/SalaryStatisticsReportServiceImpl.java b/src/com/engine/salary/report/service/impl/SalaryStatisticsReportServiceImpl.java index b75c5c413..962e3b135 100644 --- a/src/com/engine/salary/report/service/impl/SalaryStatisticsReportServiceImpl.java +++ b/src/com/engine/salary/report/service/impl/SalaryStatisticsReportServiceImpl.java @@ -445,8 +445,18 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary // 获取报表统计薪资项目 List salaryItemIds = salaryStatisticsItemPOS.stream().filter(item -> StringUtils.isNotBlank(item.getItemValue())).map(p -> p.getItemValue().split(",")).flatMap(Arrays::stream).map(Long::valueOf).collect(Collectors.toList()); // 参数转换 - param.setSalaryStartMonth(SalaryDateUtil.getFormatYearMonth(reportPO.getSalaryStartMonth())); - param.setSalaryEndMonth(SalaryDateUtil.getFormatYearMonth(reportPO.getSalaryEndMonth())); + String salaryStartMonth = param.getSalaryStartMonth(); + if (salaryStartMonth == null) { + param.setSalaryStartMonth(SalaryDateUtil.getFormatYearMonth(reportPO.getSalaryStartMonth())); + } else { + param.setSalaryStartMonth(SalaryDateUtil.getFormatYearMonth(SalaryDateUtil.dateStrToLocalDate(salaryStartMonth))); + } + String salaryEndMonth = param.getSalaryEndMonth(); + if (salaryEndMonth == null) { + param.setSalaryEndMonth(SalaryDateUtil.getFormatYearMonth(reportPO.getSalaryEndMonth())); + } else { + param.setSalaryEndMonth(SalaryDateUtil.getFormatYearMonth(SalaryDateUtil.dateStrToLocalDate(salaryEndMonth))); + } String key = "id"; if (reportPO.getTaxAgentSetting() != null) { param.setTaxAgent(((List) JSON.parseArray(reportPO.getTaxAgentSetting(), Map.class)).stream().map(m -> Long.valueOf(m.get(key).toString())).collect(Collectors.toList())); From fedaf50187eb10fb4c83b01a2171aac10b05f3ba Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Mon, 2 Sep 2024 14:45:03 +0800 Subject: [PATCH 021/218] =?UTF-8?q?=E8=BF=94=E8=81=98=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/engine/salary/action/RehireAction.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/com/engine/salary/action/RehireAction.java b/src/com/engine/salary/action/RehireAction.java index ac236b54a..a2410578c 100644 --- a/src/com/engine/salary/action/RehireAction.java +++ b/src/com/engine/salary/action/RehireAction.java @@ -107,7 +107,7 @@ public class RehireAction implements Action { Long taxAgentId = taxAgentPOS.get(0).getId(); Long employeeId = Long.valueOf(empIdStr); List salaryArchivePOS = getSalaryArchiveService(user).listSome(SalaryArchivePO.builder().taxAgentId(taxAgentId).employeeId(employeeId).build()); - if (CollectionUtils.isEmpty(salaryArchivePOS)){ + if (CollectionUtils.isEmpty(salaryArchivePOS) || salaryArchivePOS.get(0).getRunStatus().equals(SalaryArchiveStatusEnum.PENDING.getValue())){ // 直接走定薪action生成档案 InitSalaryAction initSalaryAction = new InitSalaryAction(); return initSalaryAction.doSalaryArchiveInit(requestInfo, salaryFieldMap); From b7f9a1653c6d0830053abd0c4deb7ece3f2938cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Mon, 2 Sep 2024 17:41:07 +0800 Subject: [PATCH 022/218] =?UTF-8?q?=E7=BA=BF=E7=A8=8B=E6=95=B0=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resource/wiki/扩展功能/hrmSalaryCustom.properties | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/resource/wiki/扩展功能/hrmSalaryCustom.properties b/resource/wiki/扩展功能/hrmSalaryCustom.properties index 6294cc5c3..e23e93c1f 100644 --- a/resource/wiki/扩展功能/hrmSalaryCustom.properties +++ b/resource/wiki/扩展功能/hrmSalaryCustom.properties @@ -1 +1,2 @@ -formulaRunOvertimeThreshold= \ No newline at end of file +formulaRunOvertimeThreshold=100 +personNumberInOneThread = 100 \ No newline at end of file From fa861c71dc1de73fc5b6fb996dab7c0c56ebe267 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Mon, 2 Sep 2024 18:11:00 +0800 Subject: [PATCH 023/218] =?UTF-8?q?=E6=94=AF=E6=8C=81=E8=87=AA=E5=AE=9A?= =?UTF-8?q?=E4=B9=89=E5=8D=95=E4=B8=AA=E7=BA=BF=E7=A8=8B=E5=A4=84=E7=90=86?= =?UTF-8?q?=E4=BA=BA=E5=91=98=E6=95=B0=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salary/service/impl/SalaryAcctResultServiceImpl.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java index 36f19b6f6..4496912a2 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java @@ -68,6 +68,7 @@ import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.math.NumberUtils; import org.springframework.jdbc.datasource.DataSourceTransactionManager; import org.springframework.util.StopWatch; +import weaver.general.BaseBean; import weaver.hrm.User; import java.math.BigDecimal; @@ -847,7 +848,12 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe ProgressDTO initProgress = new ProgressDTO().setTitle(SalaryI18nUtil.getI18nLabel(97515, "核算中")).setTitleLabelId(97515L).setTotalQuantity(salaryAcctEmployeePOS.size() * 2 + 1).setCalculatedQuantity(0).setProgress(BigDecimal.ZERO).setStatus(true).setMessage(StringUtils.EMPTY); getSalaryAcctProgressService(user).initProgress(SalaryCacheKey.ACCT_PROGRESS + calculateParam.getSalaryAcctRecordId(), initProgress); // 12、对薪资核算人员进行拆分 - List> partition = Lists.partition(salaryAcctEmployeePOS, 100); + String personNumberInOneThread = new BaseBean().getPropValue("hrmSalaryCustom", "personNumberInOneThread"); + int size= 100; + if(StringUtils.isNotBlank(personNumberInOneThread)){ + size = Integer.parseInt(personNumberInOneThread); + } + List> partition = Lists.partition(salaryAcctEmployeePOS, size); // 12.1、监控子线程的任务执行 CountDownLatch childMonitor = new CountDownLatch(partition.size()); // 12.2、记录子线程的执行结果 From 882716b10c722bcdc4bc84d9bca8cd704076880b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Thu, 5 Sep 2024 14:13:43 +0800 Subject: [PATCH 024/218] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=A0=B8=E7=AE=97?= =?UTF-8?q?=E7=BB=93=E6=9E=9C=E5=8F=AF=E8=83=BD=E4=B8=BA=E7=A9=BA=E5=B8=A6?= =?UTF-8?q?=E6=9D=A5=E7=9A=84=E5=BD=B1=E5=93=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entity/salaryacct/bo/SalaryAcctConsolidatedTaxBO.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctConsolidatedTaxBO.java b/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctConsolidatedTaxBO.java index 16e46d6ad..d5155f0ae 100644 --- a/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctConsolidatedTaxBO.java +++ b/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctConsolidatedTaxBO.java @@ -59,8 +59,8 @@ public class SalaryAcctConsolidatedTaxBO { || TaxDeclarationDataIndexConstant.ADD_UP_SPE_ADDI_DEDUCTION.equals(salaryItem.getCode())) { return salaryAcctResults.stream() .filter(e -> Objects.equals(e.getSalaryItemId(), salaryItem.getId())) - .map(SalaryAcctResultPO::getResultValue) .findFirst() + .map(SalaryAcctResultPO::getResultValue) .orElse(""); } // 当前累计收入 = 累计值 + 本次收入 + 上几次收入 From 7393d962591b53304d4f47487bf1e6ba7ed835a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Wed, 11 Sep 2024 16:13:49 +0800 Subject: [PATCH 025/218] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E8=B4=A6=E5=A5=97?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E6=8E=A5=E5=8F=A3=E7=BA=A7=E9=94=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/SalaryAcctSobConfigServiceImpl.java | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/com/engine/salary/service/impl/SalaryAcctSobConfigServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctSobConfigServiceImpl.java index 085abe60e..c4ccb325a 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctSobConfigServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctSobConfigServiceImpl.java @@ -18,6 +18,7 @@ import com.engine.salary.util.JsonUtil; import com.engine.salary.util.SalaryEntityUtil; import com.engine.salary.util.SalaryI18nUtil; import com.engine.salary.util.db.MapperProxyFactory; +import org.apache.commons.lang3.StringUtils; import weaver.hrm.User; import java.util.*; @@ -171,14 +172,23 @@ public class SalaryAcctSobConfigServiceImpl extends Service implements SalaryAcc } @Override - public void updateBySalaryAcctRecordId(Long salaryAcctRecordId) { + public synchronized void updateBySalaryAcctRecordId(Long salaryAcctRecordId) { SalaryAcctRecordPO salaryAcctRecord = getSalaryAcctRecordService(user).getById(salaryAcctRecordId); if (salaryAcctRecord == null) { throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(156474, "参数错误,薪资核算记录不存在或已被删除")); } SalaryAcctSobConfigPO salaryAcctSobConfig = initBySalaryAcctRecord(salaryAcctRecord); + + String acctSobConfigFlag = getSalaryCacheService(user).get(SalaryCacheKey.ACCT_SOB_CONFIG + salaryAcctRecordId); + if (acctSobConfigFlag != null && StringUtils.equals(acctSobConfigFlag, "TRUE")) { + return; + } + getSalaryCacheService(user).set(SalaryCacheKey.ACCT_SOB_CONFIG + salaryAcctRecordId, "TRUE"); + deleteBySalaryAcctRecordIds(Collections.singleton(salaryAcctRecordId)); getSalaryAcctSobConfigMapper().insertIgnoreNull(salaryAcctSobConfig); + + getSalaryCacheService(user).set(SalaryCacheKey.ACCT_SOB_CONFIG + salaryAcctRecordId, "FALSE"); } @Override From 54f9c8f056037a92fd54da1c9c0516f07bd6c894 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Wed, 11 Sep 2024 16:15:02 +0800 Subject: [PATCH 026/218] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E8=B4=A6=E5=A5=97?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E6=8E=A5=E5=8F=A3=E7=BA=A7=E9=94=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salary/service/impl/SalaryAcctSobConfigServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/com/engine/salary/service/impl/SalaryAcctSobConfigServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctSobConfigServiceImpl.java index c4ccb325a..61d79ab9e 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctSobConfigServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctSobConfigServiceImpl.java @@ -172,7 +172,7 @@ public class SalaryAcctSobConfigServiceImpl extends Service implements SalaryAcc } @Override - public synchronized void updateBySalaryAcctRecordId(Long salaryAcctRecordId) { + public void updateBySalaryAcctRecordId(Long salaryAcctRecordId) { SalaryAcctRecordPO salaryAcctRecord = getSalaryAcctRecordService(user).getById(salaryAcctRecordId); if (salaryAcctRecord == null) { throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(156474, "参数错误,薪资核算记录不存在或已被删除")); From 8aa34b806cec77862c03543fc468aa3e97de0807 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Thu, 12 Sep 2024 14:50:10 +0800 Subject: [PATCH 027/218] =?UTF-8?q?=E6=97=A5=E5=BF=97=E6=9D=83=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resource/WEB-INF/lib/hrmelog.jar | Bin 137248 -> 137340 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/resource/WEB-INF/lib/hrmelog.jar b/resource/WEB-INF/lib/hrmelog.jar index b1ce56c1141707d25dab68afa9161f218a35d92c..b8a8aec57a748af54222f6450a2b70a2d3ff48ba 100644 GIT binary patch delta 20350 zcmZ6x19W9e)GZv_wsXRct&VNmw!6a<+qP|W$LiQl$F^Rmd@knG4|MhHtdu>{X*njZ)Fk8_7CK8`O zDgO*e!M^+%gp-peD}uo%`hmgy$4#9+1N{$4MR^B>N$q+Ag=!oHYXn?3>rn z3L#H4!$JAqJQ}lb=)wLJL5Z9^@e&X9zq!PZe~6cO(2WfEWq*Pt{uAO~Bvl&>466~3 zh!ygGtl0jihFt%dCZLk1_CSEarz(Pjp*KQNQ2iCl3@`xy6ZhZZ{-Gd3fFU(b(>O!? z3CdIU7q@@_!)c6SX!sjC2kJi@v(b}z`cHa)gCHb2C_|=FL4qMR#xul85pQ7rXY@Zh8)=Mj{|fte+5Yfd&FmrnXcEl(10_P+BR7)U{FRjY zzf@@ZYN$UIXmREFqu{|6<&Ve2zt+%+ByO0gpDF<$p%0|JJAxr4aB}6i*r0Uq6E7?Eks{kCEDg1O}4| zg#?D(*j|qQXAM&SeGmSdXne1r{JV)-T>pcR5x^n-ui*coh^hF<|7@O$Y77F@e?@`( z9~W1mQ#EDc-3S?QEOpPBv==;RT2_+O59N*;4uS#)3@yShK*AZ8N{Zot0cNT9mkO%l z9eH#M?$r;;D!O+b2Gq0a42 zQy~`d?z0XW{0D-X_afx_lM95e{w^bh5Ew9?h|%iJ%=$J08mF5PmSMlP{R#g~ z&a*>I4!Gf7@B2n5-6<2j>2m$}3@!hW4{ zsXeNn8|ilMMX|m@?CdU%>5|#myamqfLQ{RtK$1Tz;JqeX z{H(m*Wcz3z{G5KW|8>Q^uqqPUDc>~(nfNUI3)q@F{U)_5u!XS|U=={B=?DS8ji$`S z_CPF0Vfm{ZRt`Np!_lfE7LdT^+W~NuqfmLrD3x3YT7@M2Ko=0ji+1jo`ChgePe#a# zV#gMrA1<3}Nf*-_j;)_+Nws2A03KsN5Q!){L@^T%JjBqFa;!f(!_YfgU!ZAI!d{OT z0q$_gnc9#+hmv|)l4+oOWDNfn1$EZGn-|Rocv=-S16~wEB@GPZ?g|?UL_b1~6ei@S z`@^|3eo4qK|C2_4(iA(hAUZfZvm|<8_6~(yR#iCZykQw2WTsscy^oz)7`@cem_lxu z$n$JL6xNMN8okuIKoz}^U8y9TIRmE>7(U0wERVjQfm0g}n~_!)E|tNxP6MzpjsTQc z?;yx!Nwt((8Mgr@XM+sTSz#1~xah(YLGj!%iz|+q6B~r2v*lv7RBOf2eU)k%>>QNk4>Q>B>_pb$6_F0adx0qN;jYoDn2Kg1?d+WX<^6O=h;cL8#1RpB}?L)C0r%`?01 zXz{$dRg!B`vF$KFBMd9q>&4N5HrYG&*e)hhJ48;5{4q2AK6hOPyIkR?Z2DE#+jw8q zc8l@;*$TD4pHNbl1PfRHX?{GA#K@LApwVAum)P-iD(WfmbgJqr*{<^jQ>;1yf*wib z__8Q6`o*Ka0a!R^Ojt)=u<%CJOP3BXVl8)+KralGjEP*rhX&9ymTG|ERP5JDfSkpC zBso5E5Z|f!{>F^&NNP#nbHo)!#XBU?-q4EmONQt&z9(hJQI^9b`*j+iL8!{7?8e+cmU1D72%xa*ez>&zxf zQ3q^Ne0ncaU{^6_{>m>wJ$4S-tYt-f!3?-Q|B&V02tlK|pIw6#l0RrUx0c+*-AD@R zkcM6cKBg^!KK#)|8uGE9F1{TzXgL@_bRTQK4NFvU zjz)ZNTB+k$xhpU z?>?yWul_B8U^*Vv2#$%mz|hLKQ=1n21*2W@HZOTA38@LyF;r+3IhwP|l(Dn^bPz)a;$;8lzRFx-+3|w1;4p3@fIO@#sK!Vk=F3DU?H94cD4ujf=cW(2|AM3`~0v zh8`KH{`;9c8nGpBRA<(+iH`PSIw78h>#>i1-}yzzf_}7+JiV3+-RW~%iTFJ31CCOn z>mxCabN3zbiQ@XYX#)}Gj@vUEWB+<{&eo|k(bU^EFP{Sk$wZ8D_uW~$tU9ovjGGoU z!^z#HZ&1~sjMV(4Z;*rb*L-kHCsL%nVBrUFry^D%WMvQS1RqRINY`h?`Z3$jvuCM% zR;P9=+-cFxW`AjOuM%1&mfeIftQT9<3-GfSKT$Q#1lKij|*{@ZmH0LV*4IJ-jr;<~=?l-DF-F zR&<(LJYCdm;Y*i#gq@77JVHq5Z?!_77&sbo{Zti2YdZ6SIU^99BGS&%_-aewC2EWD z@EU0+%Z?+@m&pgTZ>lklK5{6(B@Wy2|BJh*t#3;=BFCrH6Qru|*6GW7h6>@a9X{w{Nf(BWw2r2}gae#=FfsvmY z^9X!+{OFBfI;$6Z>!i8%Pn#>ii_rDg*rl&hm8$(Qv2K0Yn9+!c!|WK*Ty4nvgD|{Y zWce`XfR$DN58Z*IC}Hl+R}+sYO>KOI)WBA<`kNHv89O$U>06j`&T8!jaMfmWNw8Ob z?wSui<0!TaAi>}YkMUqX=R#~m%6JO=Mnc^3C$E!$s4nGXR`H7sy|yBdIpKF&zU@*) z+IhZwI-@sb*Q1sqw^AmgH{eC}LeG{buCa5oj1ZS7KYvF}QH|Hnu@8xa9Z2!z1A<@om z02g?3^DkN;mvC`#;ph-BX}LxTze*XuLd96iczm_24s(RHgl0lsq4s(TWNL zK>ZDU*W83V3JgLoe7$Y)-1+|Py33M|yQb^28B8@vm9?@AsaAf{V-XMkkg+OY2p zG5KMujc`plx_Cp1^vMwfpCV`?PF*-T-BFBub#z)u+}|>Bm7W+O=!Moo?8`Wto0 zRzMha8{J4R3;k&Q3DZFJ7Birf2U{=TWkZ>kZ86^^ni>ZfSpL~qo{Q$NK9Xz4a#=v0cj?zGoo7E`woLB?EUmHYPr?Wyl;N`LvwO%w~~F zZIg8$#n3B}ZdT!OO$YGHr`L>euz+jqOe<0c>}&yRIkAkn*oDm7%yhg7cg-)4X6aUs z8#>SO#!TX&mg9-CkK)B*C-07gV{2v$$Ly0%7-CK0zF|l-wvDH7x1ISTKY$tyCv(fE zmyUUBYA9_V!*0JFjbAI>`CgS3@ah{ZIqrgB#HBAr*QA%=*1+L z9y=3wLG#xvwnR`c|9I@gj@+7<`Oh{Jp!6p5gt*+aglx+wIIeuxXRL*QZk`l=2|GzkO377=`?9#M zqm6FdGDyAroMQ$W>6pA;T7eCcw$?ybExOaB6#3Y~UN>AaZs%qU&7z`W__&@b{Z8)_;^J3=%hPXUA0iMOdK89Qs$AqK+?*(7W3${E)`AN? zXdz!E)EBpe2E9mThyh67)uJ`kEfydwAR8LunG3u)$ef+!EH>-$U2&D@$HakFHWYhM zIt9X+m{nt=y>R?>v3DtEferI<4LgxU9#lqd>rhk*xCb>aid@Rki(kc(mRL97?o7dfqqjrHsDX&)r081jm!!T*zc#{zIZ~b} z7wYm6lC?qgFf2hadG@y9&FeY`%6xx(f@`DJp&43%CIOfLy0*Y>T~f zLw;$)Z@LTX(*^43QSX#ODschYK%C}3q??Y>@J>2GYvcJ^mrEH+O?{nAl{0DF?KDRwyW#*$S_ zFss;ts$VlkwBblKV5P`KFcz6p|+93{1jg)FV7^7^{rL7e^ zy%>H2&Hh$8;gZ!cNt1efN0)sguD2n&@@no8 z$>5MomkeoOrFGTmDiF7e<(t`|m-=m(*Uba_{H$`%dS&SMk#lv2PU_>Z*945dqKAf* zxYvAZlk9B4T?`v=@+ez*Zr|s|w|FhS={V#?U&7@?Ii&>__lpMazGqfEJ!Z&oL3B~; z2h!=8E(<1a0?uW}evQN8de?2qYS-FI(`|(vZ*42Q#*D(Mde%3875nLZ@Ef7*&S-a- z+MO~(;$M2Y0`xvu!SxJT#U7YdY@!=tzck=Ae1EvX1Kc-&bsv?h4(_7>J^Q3gMJ^}C zQni3}pwF&a8nUYLFon_KXlNZRpv(L0BYTX44x`z({Y_q%+~7->k;UAvS_ZGHOqrDP zj{At(OD~L}lr{R=v56+ApTpH{YXF73k<04aI&aa`*wG=$ulZf`&(F@30#A@_-ns(Y zDdaORD;Ebqc(>;w?@^lE#pO%qP!)l~F^hedHgEl|yfJL6K53*KN&JfGK(@lR{G~)8 zItz#`w3CTA8EH3>vicmnGHQ}V8yMA)@ycBD$u6xl-R;^+nE9n*^9=@xFUA;LnCfse zCt(=rcIz?D>CIhu_}0d(LM)7U!aq>kRFw}oM=eQ#c=O6(PHiW_9fzW;5rwX0o>@P9 z>lc|S6U37xcaLu(r!+?VfYE2mzcbH=2SIJyW?#zsl}=*`jw`Fh zvM-Yyj&9_hu{eBJC!8i8xL@!a<-?(F+i&>SXpQkSrr|WcjDG2Q;DfkGSo|)x?(&3R z-C`sT9MU#62zP9Dg~oN|kws`rpQJ5a5+@@JM__+Q3kY0JPiBQfM7FgRv7B5({eU|I zGRR}CQ<1?0Ues^2we8NFB`wAH9THT*<5iBN!lof-Zi8fkgU8-EJH6re(zu!vdnNZJ zqEmsP_8lsP?Ty3wmOJOHEuojthm{?IkNPMKzCHjaF=RLo zEJ_*VuQ)y_kblUBq!X{1N31&HUV@cCpSN=gCU(;a&ILQUgY@g(Fknu+10(zvq_(g- z(Pln1Y54uSoexC0-KK489-)>zEoO3qlMgse|G7hfQ%3@BXiowWrRDx!Qc{^@0-**w z+1R%|f)kSSGW+z;O@yz|N#OZlm8?kEz+@iJ3hgm%um(*%w8(Zq>2$^$%wZYrJQD%c z4ay1=ty8zeaeFh z3tlVJiyK-3QOKl@DxIfOZwU&RD$iXL8j{MCS}&9Xc6in z_#xNSLdfA3GtT@X9K@k4uBg~}b+_sAv-*SfA}0_b%Xz!)r~^yef&|B1V0l__l#)j9 z3{-8c&^KdAx#%_qO>uLfI$=Vy#e7~#L^vcANfrc7YI6#O$>6&c`L=eS|`c} z+fkwwp%m`i-e3Bv@N72Nfu*k8HOA84_{!GG@)#h8B_GDejbh?6wWjKM&0n8{O=%PM z99_hwFB#Vf*yJSU&Lj0dY|Ph-GXwMq%S7DNR4i@zw5K_=Vr2DX!|CYs%_b1a!xPj9 z70rd8B(DcIzxp`UOcP!!IT{gw*OIBKpetfowJ<_%PefTE;+)K}0UtZ+eIzPrO&Di3 z_;3*T%anN{WW24#%A))1>Jtv;n8YJuLIUf5VWac1%p)x~x>-hZCZuqe3=}C@9LUW$ zN&IvpSpU&_$MsGcJ=j_c$|_d>sHDfoOh54RKyE*6!N~a3d)O4d(B7G}!TEBc&-X?KW4pUSfTBIr_r{e z57*m$NLnT%8ZP#R1q04;jIq+`lN~Jc+8(<9E73RTzTHfxL;-AAeB(?vCY_?9M_9KI zb@J0-=VI}+FTACDFk13sj>6;<+MeV0xn-$~Pu-6mF_xsI%D}IS_s07^*-lM^>!f_) zT!cUEe9ni?o|qCXqw|9p^2G4KC{WKc(G zvzHu6b4$(z&iP^dq-DYEdeNr_{X)wAPPmKMUt{HsQ^RsHIY??fs8@sM6KL@!25LcJ zxdTKP!Yx_Vn!^0=JK|hA@B7fDZ?dVm zW3{ebQ8An~+mUX*kOpP9l-}i&wWTnwsni*U>u1wdf=0mdw!*;0G) zk~T>!VlDYvOp)}Ec^a8)AO_9BL)~3*AVG-Q%!4kygK~!^hYlgr@WH@vy5?Ls!N%6% zyl=!&6+Fe!Md5A!bXN_G3n#ZZm3aVonV}N|GD@I-?;PQ} zaF?6jpzDm0o9<0b$kY%#j&`hKWdEHhXm#RF?t0hi(peKdJ(7Ch<~5f=GM1WhDtA-j z!Q&9bAb@;Z>=nOMGnU_{e#Eg{IU+Z`e(KtO^#e8Lwzzii0&Q*<+qkO?Q7syQaJYKMJ!X6a1V$%pZn-pt(QHe$^hjxQ9L@&n*3K?KHK z^~yOWaL#3}Ku~$HTCEgi{KRx55RmBsEfoghB?;r>AnT`rWE+x6_frf9&gFB;hI}wV zLiMWRKv@``vl<~}1ylN_A+hGc(UJsBaWkPa1UDMtjtAi9LtO-DFM-@&p=5!t=7DYm zz<7g2U-6F{AsnzEXASZEf~3c;G3?x?RfqUpH)qHk@qmW0RVeoYygt7D(s7hCR&tH=hFQd6vo+{7RM{qD>lV0 zPL?fqO37B*V*}*`l%P`8 zP@GFPOUXzKqA^LJzDM!Gp$e}D{G93MK$Jn-G1e)sL*$StT*6vjvQ%!Bw)>SdbIQWL zuWo?k?O?8R74DM{mk77oR?P&FIx;=;oMR-X$VcPAieRCrUWY5rq=|%Ww1WW^+b5Yz zA*a0K@?AWhf!hs|!b@7sn!5$a_s?IW3ryoG=HP=Ud9fB%h+NSi+5Ees!{??lCZjPKagI-%?E!ZERkG%_ZNFR`=MwHUKK39IgiM0*IiJuh< z@$hc8_+Fy*4%rh|Zr1$y$&i&w8N^~Co1tgkQ8+b4^NM$;Nl7e}K7@j+$m#MAEs6Z~ z#GX9M?nz}3&8yX)pfqPv?A!|5msUUf(r`AgkEb020Jgy+T+Awp=a+t!H=KQ{P@H{l z-t1qyARGd?MSdi)lnx&Q-8g!2Gq=X~rzcLA;N}2yApFwvCgif42o_FhK`tU7-4&U3 z^AjTH4n5}mHcp1u*5B94!o5OD!74olJqK4X3&fIDF|HtXFw~Tkew6aa&&blkc?LK| zOqLXAB z?KA$4UK84^B)Q>_y`{GVdzl~Mk?ZD%tOc z5ss))E;e}5KhJLM253+&rYDs4W0}yV5L~0zi8iBZ&Sz6z;JK;WfML!8@b?rr^O$b8yY>e^f{ z;EM9v6HR^+LC!334fdgL%9t+g)Wsb!>A}0DNg$Y(B9z$y^!`zrig~7ZC%%Z^4<}{| zU@-I}c2s#mW!a)y>-hvH+{PBOWFQ+8oa`FcR|<0f341=SKM);SK5tVbhv{$0=-$6~ zdWM*oqogTDv+#x`ow2`6$fhwnW=r{AQeCvEY}|9qki@N1ijuWw9>|XbZWk<^X@#+3 znZCkgvOGEud>E1ibVYVQF1-R~66>ITJnpdz?E=!GPZnJ+JV!-aQwsJPpmeLS611pG zG-B5)B}TX#xe}wYy?X@McxjlbjkeS064QS{ZA7(ehEJIS0QKhFmHH}YI? z#GTfn{TzSM6%0U)gpH#0)lZZ_Jm*J&p>K|EZiqBxS7dLJ0bx!)&5jf@2?h(K5 zxpYrtZUEQt}y(tW=7#hTNm0s3abDxFAE3r+qEza(ln&B%2{S_f!Ttq)Sl zCNLSIlxM&CVq-NFPsF89C`2f4ax#2zzqQ$A!`{pV$TWLn_KSuG%U>Z3br)!8w2?oLB?=5^B;Zl|vV%+#WToXRj%$ zqam`VxI{Hz++0E_hDbB`x(q?5sHz-WH`UGuE?I_1cV>PRnjqhrY#O&NnZ(vBmlHfs z1PsPp_GTrO20%26dH`+cFCA1Iecx zCf6*T5A=7&eKeg>@GhH2Y=qJ^n(>d+f#B=tY^rFkQN{6W;pC}H9r8b1zb~$8aw3Al>tH+U&X34D!@TxafoGsk z81MC)(?juRMh8Mb+E6>wz!~HUabRh@osf++olY?CZ;><92R^SPpMf0H?#9yTXU`1Y zC8P`UsVnz0t(?A`U8=^z=i@U<{W1Mr?E2r&!Vgde{Tq99%R1heUYWHPmp2n<{2v%z zxnG9_wl3?CpDoVFKfqr#9UsDvfIR}}*-O|3@UP0IjkTg*f2w5lcVU$_IEcpi(3v-0 z_M<&GI1#=oy(PX=*js#};x92=7~&m6?1)?&Y#+t`&iRaW$?$c5*_rrqTXL&42FR9kX*mT? z(ArU2820EayX8YL_k105``utDxg*zvlF@l>{FQg{3Y`GiId>P+w_(>!An3uyox|0H z+Y#+GXw8!Y$Foj>IeD}u-~n*vA?s6-^>JQB_ljUgOK34LCNQMRGPywV0I5wQ#TB@_ zoC@QT&#e^sRyvQYIPBiw03;3m3XOg|hdKSs%aq_V^?^9DquQjZRt_V~@#_DAxvXe1 zkN$3$p>@gJB<0&bYnqj;e@5jxn$Z7MDPlNa>Rp?CX3cAJ+A`aN1ZrJkM*oHdl>k zpjz=B+~O2<@?$+i*gm#o0=}jMIQ+P)YNJ6s79v?p`B^tDeZbEMGa#msb-mG!k#+n( zw-da+*`axdVeqCq!dmLm8PM{WL&Xn!!BxwwUFQern7;C}7FLp(y;1v2IxpLrvmdPi z#Q?^KrH&ru#7Un$feQW0U;5ER4<^W#jm+4tE6C?bylpi@0+Q72c4a5Zfo%5s|13fQoNcLhTQlB=f*EE zV{ArWdt1pPzvUm2^1dwfvTzU&o}ctb)bawT$cIwYt-YJ-N$%B&D~Nw`)x*_R&Uj!C!tu{z;YRsHVdMtFQ?<^;l?#a3Q-`SUa(Qs*Sa zpA<-YQf3BCKpLiTc!?;j>yE?nCE6OWsX0|YoeEK){r<#sqhG;S$dY2GHU(|I75}Py z#d*P%l%(o#QBnQ{)VPqS3W#WEl4uPfUVTKpXW8LH3lReW_`z$ut6Oc$EmF(9dqDaYP2RfZexPZZAxnocuj=& zq*5xoL)nEL*bQ71Vc1pXg>Gr}fLi zH4>dQCRlDrdlIA#d!Oz#RE;$!1$*(F*h+FCx6&xG$>LW{syyWEg_pY`qcm87VC3wj zOR^PQErHdam{^6W_0TV6F|*STE9Z0{p7-8o0`4i_Mqice3+|OqOV;Z>%!+@Hym7!c zb71S`S}@FsUvkBUV=bowAnwR)Z%YhQb3&5XJjtKK&)!f~+( z?5MAg`jKY##vnB&Dx~0&t=+|4{cwclMjb

4oTK#N$|s!Pf>BLbQJ8jg}2LRSJiA zdHg(X%29vi;`O1x$1@J4bfz+e%@LAYsABOPgm#Eh6M2JuNa%6KMG(9B)8oy|hKP!q zh>C!a9Q^}8z8PawMEc`uLCEwP&m=k@c!T46NB`r6Nvd=2i1`XoG;aIx4SHF2y*`@> z8*?hU?7}|4)tA+EuUQb;m+o$_**|s@N#u#J?BOEl`i+4ryY^S7Gdsi+UfH1y>95NW zu{R>k!OP&+XP+x3gHWAu&+q;Yej3lRcT@Ddo8W7!1C@Cv3(?aW%H>(zs##UE!G_!JXMAu^+=Ot3_&5i8<30 zOFJk6z($RRAWdy{=SQ>Kw1sp<^1 zei`|A@VL*uNzjC)wLRYx8DZD%HC`ldS+Xi*P>FVB&8y7%*uJ6-h%HaZhr{W_slYms zZB}y3Kdh2sK`3_Qk;5!k=fb|{DLw!uL1!3pXoH`YcK8hCKeN=zq9Dq77uzNh!iB_B zIFv-^oF{qb=TF8ss83{yPZ@~dtMlM2p2=1;ZNdv(nl9wZKNXb+Y!|2%d(y@5SGj{u zWod*8K^I3MBQ)hT%y&3JVLk~h{^fwFi zyIy_<|BJw~rV{&bu1rJhbG!BZ!_0)a_-Tp9M?ecELbUHye7;!r=54M z>trTPh&)x*UI-;bUnh?FFfGTLvL9IdN)EAZIX*1{Qv$lV7Q{7EyF(eFr?=lF=6KUe z?Ug7DH%Wgc0lz70c+q~xDq(918meeV3Ri>}kVb8pZpSIJm!%M*u_w>2&p|?Wv~t_l zn@O+r$8h^39rzigCbJQJK{c~U!GwGhO3qJx;#j^vkpJ{nPhftC3yl`rXFo;crvAXC ztF4|lT7uE!x*@(YxoXd{^*~nOV~XranDcJF`z&{L_|Ny3IPk=q5lgnoP~y>8Pv}7e zHb20xI9jr4IX2;(G(^fBT^ypvP!rj3^qJl}H}uOaAlq zHSh_=(d?XG7N@Fw}j;BV?&B9xAc!yRcS;AtXE>Ip^tBKZITws za_C|&-vs4(T&DF(!&qk5HYnik@gG4FI@_|jui}6U1}y9Mvz;UOT3`S)PG%~y1x{wf z>*DV!oQwLb zeGfo@=)ODVonUJx0@}cS9H0iIRug7Py1#Mc3SdZD#Q)wLm( zf%mF*&7qgD`!mye|KxCJEk(ZmgRs!$Vq+kAyO^!y)(1`B}x{NfoNcIrHWg4@~?`bE+%064}8~8HoXQpf-uhVk$>QJe- zy9;vk7*4M%zbsNV`jW~Ynaoc3AJU5-QN&-yLBr4V<}jp9YH58AAQ-(;9@QR)8Jc}+2V?1IqWY8 zwl=o^ceAs#LB+T7qa(crkqsz102OXK#dNukoCg=Y$;HTIRvYkb2wmh}_Fs={fqnwj z{eB!efO_kYeSZnm$0Rs^guWS71Q>QgErk#^nm*BW4YgQ{0kmCOWrIMZ`U7)HXeVoJ-qCApxqf9$+ zN+M>+fT#EDPS{Cvk{#|Knh{|mMOB6cV<=GW-upo?YynLy$?HXOe(vwe1hvCdz62Vqk7%<3!n0{Sl>691amA#aiKj;eT5Spog0hvd|mo*7ASyzsLUCV6;Pph1S00v18%><0)8=(btSK^0Ps0 zhx4KADexSnUCHgzBsUzK;0s6&CGJ#m)?;!2a!NvM5|V&C;L2)tq&6x14eEGjwRqAX zW#kPVnEtCfzT7+2^>&>F@qO9#PH#1AqoMkUZnb=_P5B7nTmCQNafM&!hV;5U3WKU- zvi?lO!WKG;utEZ=xLIyY*~lsuIxdD_j3um0X~?BF+b8r6_(j*K)+)H58doZckTzu* zLp0+fXP(sCl;*-!ozhHZ(PsfTIe<8=9cDTgCJEr^uDhmM780zvw!m zuC5hiy}20BiDM@F4-Z<$t+sZ3jJk#Ri4nS~$ECa}yepYby$QSvn5b^)QwE1n%#|}1 z%>ggv(IMsYu!Dqrve9aTrUk=?rAF}K2{XyDDkbJ#Gcl=iBUvlX^FBJkCehLVHDI(! z^?&WlP98dERwVfJ7+<(`Ct{w4HwZ(>d?4mrVyuIcR{BcQSBz19SILyX5%6irP;ZGK z{4E9QMo{RyIn)Qoc#o2AqVwQ)U)%J@*PX!d4$z+|=6*-zeewH%tYYeR!O713-Ot0` z%X~L!4aV5TlZZ`A2W`?2c_R#r+^ffRHjgLoizl6;l_mjVfbNCyOvJhIoUTBCvl7TT zf{G18n^Tx_(MEfj2}FC6oZT&p78tc27T%6lG2-Z!9OuaVCVmn3nIY5FCgBYL@cQeR z_cAxIx+d%8m7c-*m~rBewD-~6aHUbY7{;7|YK-Z&$m4-Vc$y^roN5GuyIH7J=Edda+ct7fi!IxP zJF+vF?u=R#@|*kS^wN2S5zKKC+(X zu2RFkVn<$^*g}KDD+B3O0PH~M`MuIc`xfw|?RMUC2sHE|rCNp%^zwdiN04~z~h>Y-EBKGNCV3#y0E|BF?2RA^HxOZt_Xb1!U zS9<&mfZW7f$z0rAd{9fwE>p&|I< zxD!C!b-0|D18>5T`-VHOVOn#xl~m4=oyDuuaaF3A>+6%j%+`jDZF}p6JHD2K1Mf=t zt0EG%e{Ep12yp&~Cm|%dDWl`?Mhni1A4BXAL|)(-vepg65kMix_Bc@A z86=Aun(Py*7ls>0d?e8@ix0PClvI%>RJfWxWZ9WZmqMaP*aMC}ncOIt-k*1mxVziDBH2LFGbz$#kM9tF z)UN#@`=yUc&}7S_98krj9FE|}_K5k`5l+tVlroYkwCf30rC7!Q?qj9cO7!_5>%2hD z#6ueK4)D&neSY1UP~LR2jC{cqr@w0t)0&vLS70k}#6Q4}J`W=VU%+_aAe5`So^Mx# zprjE&zg(byMC54V&I*;z|64N8h@r_gd$ByrGR1fO^2DEKe452c!_2mz8D&MH9ZQe* z(&0@a@Y~k+s0v;is1V2`Re{R%CtR9J-l=lew7@3ns1%#C6r21`=h+$n^r=uAQ4K+r z`m13j^7nCv?~Xvz-Q)SEqYSOwk2vU|tL`+sFf_Y(T75h5kb}70NW3na3#9mDn<|1C zj^^ci&+Vp~-J_q}uDT=Lq1A;Pzr6yk45)Vq)NvJJbbedl|O zX+TcNaz(LkSg4MmfpS%sa4k#Yn$2dX6L08Mn{ZrB&a|dXX5{Cejm>#ZHxZf$Vt#naT2K`=qH{9m zE*yTHUG~E|ci~fL8sxf)!+{<&6s6=V!vqcv>6j3BOGZ(NG5^xYIj_#l^}ad~sbed7 zuCSbN0RJ4_ZzLr7AmgD4L_iAH#DjfnQ?mQ+C>glZVxsH_8KbZg$)aSF5sX5@-124VIZ)w20UnQ_F&xu$-kj+)UKHw31f5)$fHTv~hJC@iCx}``9}Mxyt?TrTc1!Ur>TC0xv|@;qTK6b*_(n z^(QZ@=&xI7RIB>a?u@bz4?~}Bw->=qUWViLTThJENV(C2OZ56CIRtvK*)yP``BuwG zn0xtpDsi#ua{kY~4*CM=a0#*?Z1`y`AO#izC#OUn*!E*(G5gk6lB$EwUtEDH-{>aq z*{4_CE%SXilr0BgXl5nwqXeng#Oz?uq^kDaN(Q>ZYWR)ci&L(HSE9o1W<$sIYv*1V zmXGBujRzo0Mv6R&jR+~tEpfwHBXx0WqWT*n5;Alo7*=_tM;)~mlF9faA_5?U`+?JX0zrc>ebdC%{k=zw2ofDa zt&o%PI!69$P#U8W#z=7~E3(?wtXAbdeod-`Sg?>f#zZ7v_DOF+tY~UA+y%+#RmWWm zlnnA8Oriz2)L)&*Jd5|Ozqp+S&JoDcD2fony)kJR=-1!xhNTbAg7T|^@9)m3qv(L7aWOPC*hv7UVZKSP;i9~i=C5{Vr z@e=6n!5Ck+{s0961_`>&xaOaA{8<8_;=zM1eHWwYCS-`gu}T}2T+gLeG(2Pp^Voa) zC(cy!>8r3bZ1%CaunqpdKCV3+s{D@XjCl3Aw|{!rZNpLPQ_TbP2M^plc%uiphrkP{H`rKUv8{RE=5 zM*3#ysdMp9xgUpX7hSY(?-cBQwIflH)HrJE(G^r}VuGlg&AM4i{>eRKK5?ih`0Cy~wjX`dahH>914@^!Mvydt+~siabSc~M zdX{!oF8fznmq6^DLDJ@jE;ae%9znD`qng&m-9=o=ks8+eCiC9-gA?a0lQd>^B~Z^D zW!urr9~7*}h$WQz7+&shH#AskNtXy;d3#VzPrj^-IXD=0V?z)UBOM5lhkD9v$76qC z-IJ`4yQb7VdHbF>UfbBo`fW~1LEC}N^W@#qfo1a4`mjBycfrmJ&XUduVyDvNSq)Mr{#2PRC{D}Rdx;8&ab>Bvc>Bvf0(!ZaQ0?Ni)fuNniG8? zNK~3zsnB$r72R6JcV9rQ;P2;2#r)rMMG;X?BQ7-6E>51cT^r+6JeIXqx0-d(XO?<| zk4HODvo%R&TRw8joUXashIEu1`jt0J!1QA`^0GU7ow6>+dr7x2V+OUDNzc13zDRem z9L-9z9M3Gyt9z|I^qvtjY`_#QOe`tR5%y^hhA~Fujvj{)k3emY;*|+4MzM{IwpQMH zMxWE#O)jm*HEE>fVU5d+>ZBB&gcnA0v7tw$HA^<9SxNjGzu?{f_I&QE>z*y~TuN%% z773$~!t1Q`59zt?%}wA^pE$=FIyzrC+QGDHa7~-turV!PlF(>qYymX+%7!j`8(;?9dg@MasPC(GCpWIIoE`~^C)dejmjF08e3Ik$@k4G ziKPA$rqvsfVrz5Z0ik!_D&b07iv`S)YRBrJ*LUvb*I19QOqMfG4;lQiY?qXCLn|?! zrJE`1UqX2}>!+rMBI{oBaRd7ZMBGXJkS#CEO}&*I!jzHSzR$A#!f&pDo(7{~VPfT? z@6nzZ%DtMJ;6T0pfUArRiKcc(%Myg6Yb$PaXB_D0 zmzLWUq&QUWy?yuia~ps0;0x1p!;x=)k>}Qp{HL|vYkrdTzU3qBX< zPy9!()^+8>hKl_C1sN7~87^(thlUm&7X9)h^4ZN%SNWHABbLHc!OJy+IlF_;CsFH; zcb*UomN>l?B0j6Nv=t5n{|I*kiOELr>#5Q`Dmf60uZP;Jlt;w4z{oa&N?QecPDc4q zWyP)34BJM*Re6?B&`Gr(3v4zS(8R|ms23EIQ7W`pU^~fRwwPgzdO&#-aSQ`3*MhPp z%6Lu^O28Z_z*xM&9R2V)lv8;@QWelp1u+UBi?cSOOHE))xc^849FeiWbxn)^QVq$o)nQhv(u=|dA?Lt?xkO>MZur|(c6 zYzS9<*#RYIup=K)4h&a*RPPx3>yyQlp-|KY3zne)5O+m}E`(OU40VN;jT~JG8`~>K z*Fo!%9Q_hn4r8bQS|`TPP-yjkvb@L9_0U&3j)p)>M={~sq(FnA@3sOBR9V?9umKwT zL6E9`_EX>vL32^?C2XmZ1Wd336hQeWtQiG<5Mm1ObfrWTrh?=F9HP3!hcLlj0$>Ai zv>8BMdHW1?L9A^CP)}z?0O1gqP5|oZx(O2*%QQd)jFxJEiJ3IShVH@u0a#1 z_rcKuVK9133-_rSO4r9nAZUXHFyN#O5};M3JprccfP>JNuLGh~Y4|csusK8kpHpl# zaboZy;zR=qBJhP-{v`DZmCINLeWRp_(L!}6>eTB_jKS8!qpJ2!8{&n|=m9I3c3*D- zVy!=M6YvQssK)5;hnSq@!1iF($qLH|B zj*4Vz1NZKv5czlmBbo@poko(6<6Yp~OUS?k%rjO_!NhixfjM-aRl2V-lx`E%N%Iu1 z07G(RD9U^?gr87mFceC`L+3V5hVb)=$yRRl^ls-k)_epp_d}3*(|X|~O~4JXF$zAG z>JikV;!JrZst~rL1f~4XbW7%D6_}w2@*Do+Ok;e6B~!sdRoS2Y6IW(25abztpif`H z>PwItKMUC^Xqg9-a|P#0nSmg7)A*d4KSA{|b~CES{eQQMIW2e1eVAKD17tW^9SxuC zsM@`O4oEq4bqCuRAzN2yAc(Ing5ax~^4aSNQ^2`OKu39K8>tqek8HLU;0sv{5X5>K!MA-7 zUuy*Bs-PVG!hs4c1WBU&d(CtDA#|28V8aL2)flg6F`{(Su~=hZsABl$cz^`|_W=@U kfOkBtSg0CWZ49hf|9%Q4W+ertVbn@`QKfa9d0HT6}!y!UIVt#>zh5hnBwWWOg!}te<0UCjWqcjN-Wd2v_Kazj(R&a3a zCVXNJsQ=Bv`M-_h{nt}68bvxJI0CR50vw|Wnv&+f;@PN;ApUxe2mc#j0|}1YG)LzO z`4{Fd{}*m@XP*2|@(1)^#F=gVugm{Zr#PxYHwANa68}qV5>;LM>n-J!L{k%OPwcNLWVvEBrr!csZ{Bt?EB3mx5XZ^Y3o|zm|@_oE{j52u|39 z^n>L;bExWq7~3l6e(WXxGP(d)D*R7p#e+K@s#?-Sptte+xLpfP(tS{4;5g zTvYM-`PP23k-L@q@0Gd5a`PIHo%iLt@Vy#N%&mq}?>baYUE$cT347tbfe9z~yX==4 z=0JqL7+|LoAH!x)xpP3)$wqR46UUGIZPsMqWM zv)vf;Q_L(6gH6QtohI&6%go5yzibq+^1_1unKuepeqoOLl*Sb<@$FkQYfHIt8Nlp~ zcK#3pSbr3|+<4pvFlWp@Q)qt)hH`^r4jm0#3SA17z>v*ywiRFWMp2}+>n@|#&vI4^ z*rHSAOgax{{RAT+kCT3lkoPX%Q6VQ1Ks8h}w=PVRH;-my#ID&YMEV@1^LOMmX!eNq ze003QltCLr9!GI$rf%e#M~lMF<(${SFyNdAXkd(y8cD@dyK>DdV)$f@(>y|D(Jo1P zDPpR)B$$6>oys!#*%b09#h*&(zvL2kMIq$b7S>TmbIpIl7~>yt$-1>G6yd_nj|zGu zE{+<=;x)vO;ABfZKK1gwTp4CPH*Tkvwl*!MR+<~8RZO)uZKhUQlB}Q}wJub^Fymqa zC}Ggpn0BkB+L;DZQ`?#*Q&VGHr*N@JVW@GjDPokN?y3*+b7lut0 z8Rv&>)IIqN_$4spxm-%AXBUP+%r3|PW?uiz1eAtY;uBStlaArnc4loS7cdnMvRW9I zBsKlZ;N14z`a!A;^eKaVRhLY)>N)RtHT~=09og83UA^k!F|4IaIbge-zG8*lsY?xY z?PBO)Ll*UgukWU)s%ufqFEpO{1Iyqo@p?TjmuzZBuV?{%MkqgQuV}8v@r7Z4uJ2BX zOHOMSm$3T55T{|`-8{ZX($`*@gAjv#L;S5C&Q3p-s9m!j>g%BitP4)hsL^yg`>;{w z#kCUruCEx+c9-yRFv?m{Fq{qBOvIQdHt*Jjzf61u#nC@#ECpdRz^P7~gCG`*dKp1n6(g)IY>VD1T64+n0^GQBHgoV%iYibyFMW zKgTTnly7D>d;-U*>lz{0R|I;?cPmzSS(olC5Bp_#8)1-G?@K897e^&<-9=F=&x$M# zpJcs=V;I@)Gbmop4XCzigC%QXA%utMoC7}Tp7=+E%hrC9R`Ba;K{w8`{4Q(0YKYKy98KMS6am6x@ZIZBd>Mkl%*pc);ffDtB zY)`>Uk3SvwWtqFzYY^@^DQl!6swT6q2Puqo!0tCU9Kud%K=|Xoz zDMQ&66`bxDPFlBHhw7xXlVoBT@-pggDTkQ*AXciEl@xqU{iolx_N2nLO$4?Kg$1mI z-{K)5eqp&en^Q9#MPt)YxrpPQrtO8bEbobys3fups1qTrpdhSjhQkisTH^}1$y`9R zB(V*g=CCUH+vbz;1FZD(g_SYzhzgVz_N@ngBw|`gwR7X^V_GPCN8aJ7@lBU2RVOS| zr$gBW!y_QKV#Cc{nMfXMaqK4PXg3v-p(CxPVu&ty<2GyMYJ?TK;agTzWMEX6%9g^3 zZ8qZLh547m@+?W4F&0#qCc3S;Wi6|F;;ic23$%lB5P65!08>}5lHAWEq2&=IWZ_9n zmhuH>UcA<(W@?;EmFYx!&G!5)>Sa!9Yv0o^D3IAbS2m5M)LZ1~5}@giO%O(ymjtbu zc&YMhzHcDv`dc@eQ2Cw3AuNUAs#9tQ!Z&`c2t7A$wpQZQ)#8LFIf6F!M|IhaX4SNj z@@OwWhbj@)24Gf`iW*2IB{vjK416yPJ#5*wmN0ep9>;4I58x2QMGCEqm=W6#rXH{& ziQMgj=F2gmo`VEaA8J<@`f8?NM`{Rd;F`U9lm0cSYiXUKq6U$foXK>L_c7R!ehG2C zxnH>1Dr|e!9_vzA_NH63xU* zyK#UbE&4#T-00gex0)V|xr&-PxuBh++R&)FQ90Q$B>5;eJ^4~td=GMrgJ{v`e&siX z@b$ywbHI5>lSKP()un3zv|ryF)GV6y2U5_hFVZWsD@)L}!VkY8Ye=84;=0me6jwk} z7iYAyk!cf@$Nj+7kF8|mF=0CI+FT#U+9>^Cvhab$N{=4ZbQY{QCTl7(hbskrFBkxs zsIpEZS?3G$6AthW4Xn#i9Oe6>4e3(2(Z_O2egSx)R;$HmPHLm0k43Iq3n6Q;RMbfE z)gVifFHttpEq0ab7M~+-OtbQfs~{LvwVzW_r$QQweTO7f7obzFsm|l=iK+zkTdaLW zu3i^ip;~#MQf?_Ymn*Tes9_%)7R(}PtNAJW8HHa+4=RKwgFuhl-+l9k!*@QUOhl&> zMh8HU_3phuUcTrxqb_{N#FNfi^PT09O^ouE_o=<)Bn!O0Au|8A8vY~!VNK-F8AX;p zI4_QItPHZjZRJVYwo{|lWN>IQr5R(!nWoCBYZ{>2mAteLA0H~4OFCe!pOh!EV|egk zm9&~7^AkaT7vo>>LkC4a5eG4ZPZKRLPykR$7SZil;AD;>moy@rx6Bpnbj~s9thXf- zt+2QkrNe`l(@K|@p6gKACX`EU%`q@>N(QD8OWIXH>XHZ2mlf7J-_fCiJ4E1wl2Z9GKdcHyZdz8 zc?V9jxj(EGJTxO2Qc5+E6}$~HgEw_5%n+ti zFQW>1IrNg%WnUwi7WzyDf&ja`t{Gkqjj2LguZbUVtM`^AOF`3RJT7ysNsF)H)9wk!+`!IuLk3Zy@=FU z+&(SEpaQ2$S?%ASYr(c`^@q{CUf$ zcC11y#)$~s4@=Eey`SujX37*BS5@k}2BnF=W8yXlb^M4m^wN(nJP z~IQ=|8T#fygAqcwwR;8iri9PC>0&=)5TMKkn* zAt|WSz5dywH4znuaKfiajrweXj;l;zr9{3n7u~&L3bRaM*&^$4SB?-LSw@8r++$Qc zwwP+dJ>hYmVF)m^y3(givsLZ21M==nAm$@uvaN+lq(O95rn==D6!69JGi zO`VsN0vC-4!fSq^1yz@qsbi^e3M?&wf@Dct!ZWj+Pq&=D-O z=uJ|mV30JwTsrTOwZRWsc@Mtuo-kr9d3|Z?R$g_Txw-EN#plCggSXza_ zPN84&fyv69kUW^6gv&)aP>3!ziDsrA@9oT)+y;0}+H?wr^^=GHPq5Q2J3CNR z$(>)C)6V7=&*|!P3)q;u$MDQFhNeTlP%d%F;4cn+FxkuowbSb|uRJ@hFr-!v6s{jm$wDXuW5a!zgi06{tU{(WhQVf(O z6M&CvMxI4fIWsDD>ln#hRKK2hE-TQ zUV-yRBP^Xf3D)X?k-HpYK3*<|oR?Xmkg%H!$0nJLCE&3K-L^^lb}G?b>Z+}^uyI~mAg7U*R>F(G&_4?s01ZdsMab%fP{1W+D_V*UQcV5G*GXd!*61mQ>FqK8 z7WniK4L9d|jzkBS&PDS)yWh>Cd&y*BYTrhP3Xw;`XxxCaJ)swdeEO11KfCw!XMJ) zf5W!*EPD8a>qlFFh6xLB_ZaDZGG}Y+Mq`tdj4H9Z%@$BlD-g4Rv+=n$Mx-Lq7ywF{ ze`HX4>)w?EXlIQS#;;yye(p8Ndum_LJ2Vg8FKI84Gd*Ff7AQ4 zFxMq9r1coufG&jGuTTDX_|$YO0jmye4Gh1%y&&C7ueUfY9L?Ng8*I}%aU6J%9m#jZ zJ(Zi-WEPK|5?SPo3zWOeQtsg*W!5950nzI%2TPZJ(yv0i2~9HRi~&ElruO zh!izEC9ROmeLP8Zwp|`_cLbd`;t8Do+&7F80qsF9pxpMAAKuAz%hwDw$9YiQy-S(DI8g71+d!BuZ{cVW;QGZAdoXF`r*zpo;$ip! z3Peo~nwxwjM-gL%#;?6_e%pL-fOeg*HXgT=Ul!jRyNR4sek-}Q12D^{i%=spwX9{)ILBPs7^(#!`7yUFL4c^mhvK1b@gjADExV2Ku> zh(sS)=5GjO8OLe3lP3h%RIM#4t%g&PK%@H$|B82DZ7EJOI? zDV&E#Y>q5`#_Zy21zi&IPiBb-kRZgg;;t94)qZ7%$|$9dMlpgLoyz7`Eq1kD{S`6|ydE877N>7cHD%<0u>>d(bts`$> z!{w?daq+MX@61kda~_CJVemMk_k8rYOd56pWN)p@Y-yt9>^IVx6Fp(EhoP88q#pvI%2*MWm&Jkty=RdSS#f+q$Q zs8eM4`&|#r&c>gbzJAU`x+(jh(WmoYCKU_MoP~`qCC;~ z`{@NGV~(G1;ZgkM(&~G$k@W7Y3<7oms(K!YN1UA-r$Z+7E?*0hj@g(a#y98BPkBs@ zkfpxuveI#}xLI+{N4o&=&W`OfU0zv%sp5-M1>7=f)iD*vS9A$vM^qXu)_I5$WW@<7 z&g$+KTrrr^wdgtJU8y&dh(%WFB8=R*e?!& z*A8)F7fp1jjL2@pbT)<~Qa!c{X9D?uLUgelPQK1HhM*JecnHL*`6&`f&@Wb;g2zru8!MLYWKXf0VuqHoo>Eqqj7 z${Ms3G*@27YC|=LPTLf(mlXJ%PaYOr@>NDqdh)w74T0lZZ9|s1^D*Rh$b^(l?O?#fynMx9~>pcqsJx0LHt z#>5JVBY;*$_G&IG;4DVU5EICj*%~W@ZDkS&nYV}aazzH9+J=P7ndFRPG(xMYLMFXq z9}7@BGTC?>B^EQ&Gg*3Xv^6Y%R2#lO2Ie5n6DZnE%QQn5?ucX3IP=1{l>I3QV{v-h zwG#?F#~-VuhB|_p6|yY>Dbl%_&%9$KKhi}So-ngUi+PFz%yy5YEy=r8>#k0!#zwvR~}DIbb^Y#TfxzcwsXv zV{4ZL_|XW89&+P*?exu_8(K@)Gd7XoL(9^;squ~KYb)A-Y}r$fRb|SOi4h!n5y2MO zrM?i;IsK`%f=TluNc?CTlj_EiJO}4VFOSzB@5(1yb7CW|ffchq4^A%L*?YxLv{V^8 z)DRWRJ;l5Y>&w**>ctKiSU1i=1{hO(M`OGz3(nq#5d0i0ql+fwte34SLF<#}#>Fuz z54-a1vJ&iox=-DL`J;giPdgocMr8v7;z1kN$#02G5nROj>@amOL?C}`u+hT)0wz0S zgfIQ_UZJ-J-)~3k;e@{pZK9&~-{vN@foX4>^_SUynTNesaTbg;o>dwvLzw^K4h1&^ z!pm5Qqqe6LP+R7U$#p2ah@(H? zmyLzhAvwp2m@#<*bAGsx9mnXYU}b{jut?$fdJ&D_A4-0AZ*MBj&A@$V!e@!+D<;wm zRIqL>mhET-$a#m%ke z9ZmTnMkm4i@z2~g;~8)vVPBj zqAe6)>JC8O4oLFiQx`}og!}X2`3_>9!l;>$DukFg!>!u2C&Ks6PB5555O zA>DTMGZ3@}1lz$X_ms+mU<#0lgI?>Q&i9xi2WjTM>lV{m2%>ahc`~Kr6CTjeQ8B+ zXwMJDYGOb=4sWQ2=}I;T3l3nPGSO@g!>fI+O(XsYx~+a_|{k zGpf$-x@+MnRN6frfwP8mDXp)AnBJIOFU4>uhSY_}X0<=w)ugvplQ`m7BoYM($0RuD zAR059bB9?lfApX!&g5NL<6R+-@2Wr2Mtw_KuF1J{r0E))xb|p#Q!fOGK(x5PV8QOL z5agvzftZ)m2Pe%+%diPafma>O!R7)U;=nq|BAb%>LbN?!EU%=GM7OP)rVGVh0)cPlCgNt9JIA?`Z9_awbT%t1a!!H^KDn1h#v``f<;L zna(8okQc^$f?rk#eA|gjT!;kCIofE{8x(Cl4#k)@ris-q{rW9mAZ&#S(xB{Avf4<8 zR>=fNXu=ujxG?`f$jM~_l6#->ufiB<{01jlufwjDT9K&eCl2mT`y}Z7R265{Ui`9z z%oGrBLfox+#V|-h=y=)GRIZ#N~=X7t9xnr2|dHI(A|z^}YmHG%4e(;C{KrM&4!xMjZl{;WLG{d0W? zrkccmd~|3`&R)6zuznfhCNa2QY}15wFKJg}7CjtZwL~>~KD^}G!k?m3p_-0NC8}e| zgih+1z7=IbDR)I`!{V+iXMK^!3MplS;=Tis^9iP>AnS__*r=h3FLtBq3)Ek1L2PUN zF}hEzW*n_F2Cn8hXtCWnD4kKKSsGsP`z$h%^832~MCr=w(=e%Zg zApBBObILEl?-&0^o{pri$MW6w+1TY`sLs8uLD(G?5DX);gePMfzrXY1_oK&{e#C8B z#eI4QS!VAGc{8H!5l*>KPqlMbAy4NvsV1#ylQS5^`}gdHghV)zJ?Iak(=UCr;t!}g z)UHobPs!xXfFea}nJ0EfL4^`SGKWf7NxudNY9ouf%*WVKdbtX0PPGNbo$LIHfV;si`;1eSt&nd=`J6T@wH&&YnOl)mgM z`A^&L($;IR2+CW&IJIR8v33=5%vA#;wxnTU2fn}70X@EHIUF$@bZZlSmjO*F;*0p$ z+fp++ZqhkKjP?@0A)X4@yjP9Q@oQzq{v10VdgY6CXEblRB`RbO7XKE_WXx2Kj!bx~?zLIbTExV+LIkg^!hBOZ)*)K8N*gLIFKWg>c-518`$T+z3~F5I zwxe}G2N2lyvnTi0b4OaO$L65#%cdzt&dfmF+vdX8k{9>obHdP)3_67H%11(s$cZrc zbAw}{Hndp|JG~CfDc^6&9rRIey);+I?plP~Qw<0hmMI(1dkhDATDb1h_dhUYV5;ocuQ<>>qr_R+ zrPHXw95LLF=wSsRwe~2_UBn}2(<;73C{JPzsvA{Og;E=6)dd&%JKnGtE-_QM*0EjY z0LE6tAC1>&#?0DEsWg!2X3IdZtA*voM3#A8zHceY1g*=8b2wDFuB%CzEzz_#q08HD z6+-X~jjz7qsp7DXk#`@X-rGCHyY?_X4%>Q5N~$L{F*RSIG98tq9`Ljs;6t8Qq}v^^ zid855{3teqL?fP+2K&PK;2x4QKk*AAaH7wo6%!WzTcunX7^Bsmc@?Zoid-r<6+nEx^aeN9JH#drozhq#`xI!(tv}4N- zU=Y9bQyKc8z-}NJhPsq-;d+y;w)n()uFo}Pc+>Eo48-WG-x)D%)#C>d1I{e`jvDOq zE)!a3Dsm?HXOGaC581cH4Eqz(wQlWw7;b29j&jW@Zpe*J#>P>6;@`8pQUrX6J6&Iq zb8-0ZeUge;ZuWSip53Ppdk7zVoMcj;T^Nr7h;Z%#;{{$t#|->YuX^p7-Gc&HGXf-) z`0b#!*2XgA%)qRz1|0{M0ArJ3eeoWadHG?*2h}fYWf^h<9r)wI64^s>9K1mR@vJzy zcwCnVa(86~kpUCE;p%}L3WYavq9+%|m~ZI;Fm#0!>$#Qch~b1!LcgY-3o*-m2jg5# zmb&nnVn2;-;AiDfo*+849aSI>(u7J6E}_;Ema<=e#Evhk0L2!;fU>C;5L1OXrPaF${1J+}lPciVW`9~%o-i*#A)-_g-D3f{<+YXa9 zvva^WMDqrb7d_4#m`!{(sE#+Da@-^5r{^AT&Lq76RI+02yQSNaS2jbJL#=YfK+KMV zp>c)m39&1*MqQg3piUYEV2olN)L?#EkF!pH;<}ZWSg1eUtMo+Enen#A@wG*q*z@}V z9Mu-ydY;qM(})}Bg={r!?R9KIG;E4=Cg|79vFy1K z?A5v;I->mr;U)Ook1+CS@?eWzDKmy?Br?85arCe>E8ZZuOfa!4I>AKN8gzass{0W; z(3oZ^c!I}a4`40r?;5%FMd(h@i=wF>)}%05=d-X>7W-Xn*1Q$+qMQYH81ksG0j`Sr8dM;b2f4lG(#dj0UHRh!&4e!7*| zz*4{|#F#Lyan!*|@9C)Jhiug?vHl105A#XWZ}7kNHZo5FO3{Aw)KvgN{Zyt!TwTlf zJ9Zz_>HueiyK9ceU@xpgbbEA+@_unY4f?di6Slu|Uq z$*G+$EPh4>>=x$CBTH2q7P>+A829C`(B3om1os*_X6*(~@6g`4_fEJLb=-s58)PF2 zHBx%5eJaXMz&?wAMq2htUHkT1s}yuqvGleV{@zyOAdRDG1t;;1AHi-w-*DL8?FwEh zAU`7On8>bFYp+_hs)S$EBnFXsR~1=^ z5em@@(p=mQ?AEK|u8f)kY#-F}b`5LL4m8cfhD%*HMDV*(`GFnj z!EaY3ki?PgVizh>P7iGFM1kl4;J3Y-yR-KI z;(d}^{tq&dT)^ zaC>oNOSnOsdLh|Y{U~eCy1{C@4cJHSHQJ;R6{O8rBX3`$4t)V8?qelUZlfvPb<7PT zCou+MT3;iyts9FRULS@AD!#xQAC8WyOX~S{Wcy!Mq zD16|=29k!KF|N}VkPv)E+LViPR%-ruTS7zLOKn+XcUUaM8ROfLO=*W)nvE~YWBQTa z3A}Hwmpz4l1NMD)(Lsb6{A%HmQCl%_;L)A%=PM?3{{wkl;L4^avZP z=;0`63c{htJbwV-G-WtzpB9hlYk#s!$w6LwlD&6Jbn%cqGAQNb94&n6fIa4szd>{= zxWzpV#rj+1?4B6+&nnYAirAwB+Mip9{GZm*KkhUI7n@;Zit1H=F{=9R?B3|T2SoJU z=uo_u={y>w4tpe8cqNWBdD~rde{U0e7v5fZq&_yC;tXX0-0>YsznD-w4hk_xF?*Fa zm)838670#WZv+rJs}yK~4%v z0W%F1RYRExaNIA>wyOIm*(0<<^(6a>{#NWC6`Qygk5cPGicgP+} zL~d)bVwZ@uq<~6L$w2>WxG8QeW)MP84A}Ya5CS_dVR0P2P@@R`TswgqXHozra~8 zrKZF-Kv~tIvL0X7uhooSQD&A*KkR&s+iRc2oJukgu{15C-FYz21b;ZyYeKsOpN&pi zt#tS%)0ND=gNr#S%2tJ6ZpJKRDTp1CA1n{q?icE*y=m?>7FEuQH-0|J-*&Btcfzep z;)v7MDy*jHhYnh_cwjfZ{l9?naZ))T~L}NwSiaPUgtNz;pSH;bh*I%!yH&lh8xA=Y3}7u z04ZZ{tl~74apOaehR|J*7%^4{vG)1B zm8*ltMr^(1^ik@f33e%5F#MSu!)}K00WVV3QaT+mR8d_z(d`iyQGPmFE+iLJD-8!D zf2tL#t;p_3^(cu=PoibkX7*J)`>f5gN2H%})~2^H6Pgl6G+PXN#s1v$9=Z$|if{cQ z#e4wQXQ`mS)`|Ry=qXa#S*6a>9*1L65kZt-X^qmUIWoEHzpZ9aC63m1L+WpN1`txn z^hHrC-8Re9@kKEy{z;fPz0IXq;Qmy(V5M~10Jt+eSJg(|nD#TXVL$H_@F6LAPOqom z){+VX7U<~3(h&s)k@$!xl(2GEEOmafpu43O!B(@ewOFiygV?|)_8(jVU->NRAEl3_0zxVfj;R&??@_wkqW@x}2gw{he2|&nV3-u6Yl~@NM z+Bk3&#|bqFn^{_@tu!}*v8{|tR=dn`MU*mnv>8_jpviB!FnWwNEwSz*D*aZa-HWo) z$%bTn@Y&ZnXPZ(pW!!q+4r%4z0UO&R_eEQNmEQ$mu}BEq(H};y8W(#LjYjbpS9)V8 zCbi{jb|b|M3s^^YBLJhGcd74$H|c~$H9pYn(MX0;_A$I={lm}S8P@1L>pAbZ9-^GI zt?rl@Fn1aP_x-pP-Xp?B5-vIKF!Y!|rfRVTK#KcTt3pGCnCVO6-=R}`as1~{ ze$Ge{N63OOc_^xgAzn@kYY2*p zj9!c}IfCqH_YUbn zdKzN&N_!sX5kBS(_iGe>PfR$=*X)lmlSq=UnawRc3zh#n28I#+=jbqS)GO;nP%wcH z$-f)rlB@hAWEUq4G$S+62H!M0HbevO2LIFY%pcK&y2Qr8vaoL5IztYN0Oy=lqcj#U zVXo3YW{MD%JfE4MR%$6QpPnZP<7PXh0<^-4=i>fvv~b7&&xi~`-h`G|4?H#bA=$DC zJ;$((VkNd76n!=^#?$4a;IK}Fctp%kIW=+^Xq_+7J2Z$?k1}cBAISTg)sJ^ka8ZEq z9PBrd4$JYic6|6Nr11PBfUC$FAs+x%HIslnih0P>_!Ku6zAeKQjABGIj*ylX!s^p} zFCKHGlIg0{K(UxaXN66ZBoh6_RWjFdoIk{ZXYjj%48_G)w0p2j+01ykY2`0^MZ~ZI z0T4;{+SgF0-Ru``kU*QxllhtmVK$>?Tp;$>9A*%);61H1g@C9Pz=zWv2%3}e4E<=t z$RQON5(HskPna2ZOb0QPpyiiyNZY&#R?UC@DDKW=SihA5?c z3x1l+GGL_qD;sC9#b_+*sD@m1r_HlLJaQTV!blec7Uni= zf$$>B8DJe4^6`U!sI!a&TmRTL03Ok11xNJ92jx58UD+NB9)KD9WNZx?8oOAxR6%#Z zvz&R{IM*45cF4eJuKyejHKoKc7lQ=qSqyepyO(|gSx#nV4LipPrj>=Ih2<=x1+B3TY){+G2fnTO)Z!2YkLx4lu5UY{i zVzS`u>dF(~fL+@w=F~GvBx;~%bV|!cQ3)C#bKdE?~OFmk0{OoQ&7p zOCM1xe~P%B)K{DVgn%REWX+Iop#V9s_p9yljKj4(EFkO&CGrF$E)=KC@_6~wBD z94yC&YkP>QO&T$n>58jQ8!;ru2d+7lRB=nq!QUIoC_vTE?9ZuNil8h0F^`JZW7CyR*V%geJuzIH5PAvZ`9$fRWFAvFqI}cZnc>aH z`o;!;ka6&4&#NUYf7&dlO|?#(!OJVaw!vuy{#1YSM&2+B)L0C;QpXwb;EfL`idR=N zCVfkWSrQgb4(NwTgn-i1R;EKl@gEM)Hd?+keI3=}Qn1SOPyby>O;W%!=OtbZxvgjKg>34TIVZZgQ1o zsxmeZy}#iQeIpt(Xx%aD*nz!HN8`Z9r;V~`;B;i%vIe8)A7>Vr81hDuEm}4zvoifV zK0=T;{BvYkG}Ssr{XQQLuh2(c8fk~mscU?eLo?nwclEHg+gaD^$SV!Y@uUm>z|j`4 zp2YJJMdTx}bu;etR00hsd6-{=dNHXgyN-jVjKUOth+yKJ}o=cwsh^YEz%tu%m8 zT7B@3p0R&7)hHOu2rp|mTJOE11IT|aC>v#Tq5as-l#65S?)>+3JvFJ{Lw{hxShzcC z-{u_1T}7>_Ouk7ueXNb7P?>lK5;MVdd@p}f!1`*tXyv1Wfu$9UF$g(BAC?Z#?(ceN zIu4ZI)%L+hOe>Sf6ojZeQuS8;0e3Umq@AoEj=kwqt#89HW7)ep zay4XRIa)ll=oYKp#hILXEpnv-Xc`WPBx=Dc8d9x~+er!d3)~#0OeSPWh1lIHsRZI6gxXadaKYM_tSf z3T_|F=rwfwr|I!6A?K*Lf31(JJC~<4460PAg_>qYf~TShm@Ze?@hYI}70R6cD?8Yn zz47Fi$lTZRZytvZ?MyrIO>QvWN4ayFwL$T&HT(J`5IqhN*dQwkDa+VI@_^<6Sa)%? z<#5uZVV~~x<~5cQy##GQiG_awHwAgXqekP;lV)Ld&)>=TpgHkH^9BEf`uJpymgz&j zky-^U%lm0lFSUzt3q63$wF1zB=*+TQc!YJCE_8&u!30^^k~B-G!l!qMI=qv_OCj-D ztWh7v=00#d6-5-LgSc}NW?mZr`+Fk7B+(yIdR&GqG;qj&xDPSydBoLi6Kp{)Tb99r zx~3T=QL}Q0yucWk3GX4v zmR94ffj~U5>dB1gSfbSw0MEz~_j?U&fqgOc+eii61HYOtF>4*zQ(GxC4-FTWs$yJo z-zW2MCR@k3vVNK{%)PsJH)VyHRtHvQJ5uHgCHozn`TnByk`M&cJ*eGD^=%{e+=-*I zZ>Ibs8tc?pf(0-F4+oW43VkfPfAZj~R%03a|oNh1V*5TACQZKmLQ5CCR zZ+Q3>fpfe+0yEHQ=-0ggr@e^sdlw>&GrhZpu584LHM>F8qc)HBAjLcFp$;I!><616 zGM-?iYIv9hcJNjdB}M#TXO7`{I^Whh^3~~vddk8;~P<=N6GWx>iW`jXt3QqFFklIVug-!i1|!mqBEt;{}mx=cN2s zujsEAD#Rp#eEq;8??8CfWSFhB3wwmH4CCaP0a-xnqf%pu7rMyS;Vz{Il_dQdo__^9 z!C1x#l_9QU4v;pmBj_s3bqH6(o_EoFs6smp_ono~H4ih+-o0tj_th-t|CDj<@lfS$ z{QQ1q$e0Ub292@wW@$vZC6^*gp9pT&zer z*JK*!SXtKb?DB}lu?+`YFUeu);bD3~V$`&!O)c5F$?Umf&-b3B{du`$RGK6n?9a68 zIB|CO@`w62*~^Z4pZMwNjVta_>4W-`9CCP0_|b#$cWat6X83ko{QcXO-xr>CeAE*5 z?Mr6T*w&F3vzzw3s_5xT$V(me;EX=Re!r(`ooXpERr{`T5@G% zg^bhRxW3a)o_yhQQI%meKBN8&N1`aYMk+jBHD|18v=klQUNB=xczq35QVy8}%?S72 zy@lT0XSQG(u$Zx+&>UVIig{+0JLD=lAGkN2am|r-&6JjR%3n6N(YIK z>uxlc5YO;8r-SctBM+o(cxSHve07R{Q1;b%vr?KCXU8zM9I6e-=F?mjdft88O>@~} zR%qo@VY%0AaEkpZ&*&XuZF~B@SGn*Y{`Qofgcl?|VWu(vixi%I*B(35UoG1{bI>Nbu2{A&Pb!HD7rhA%d4U&} zN(ypgZph4M#?Otm2$dS!#$U({`A#Yd?i9-WFWIy5q|s5Gl1|=C2bM$O*HU|#KWXn} z8@M{^y`)C*(nHI^q1ZoEw!D$hvekFA@3JVpgddMSw&*t-M{(94_X9RKS+RnDKKG(5 zuWdVHM{DEpDNAb2ed7Jo!fJ1iYS!Y*D{Jfywe&gXdi3VqH8yb=c3QOCqwjR{<=D!sgC)4`3q|%-LNsW7u!CU0LUC1gZj`+^GuGHtbvq8qZ z+L(f@_HX~ZSGt_J`KTz(?XE#oX8aA`%=nv*wTWwfZ-;iZn@{9*U0&(vJWDS_NZ<$J zg+%(GkjUU?=C(0vbK5j)BR3yucintGBKPq>D{YQ%X_6dqxbm-GUkW_Jap}6^H2o8C9*rGK){mSOyLs^=c)#F}9xst< zjrk3p3LRT!^_G)&t{so9xQ$nNz3#_bog3Q=s%)cTt&Q*8d#=@W=9YI%<$-|5|9QWy ztlF^fziZ(esd*&N;HS*@M+2-+#U3n|{?(g-4|~MbeY07=dGC?#O|8V$)%i^k_&|$Z zQr*o0n{~ETSb)*BzM+-L)2e2~M%bDe*5b76f1VThXR@=>VCEW^st3Y__@G024qje< zXTz+%ph0KHv3h?$y`Bq~ITqra0owj<`^su>-dEAOK^t|BM?Nev(I=o+Kb&J(!L-ZT>+dXL zuQ#X?R7gs0$-K7>3r6lq62w8-`AjE#dJ&%2p}*K*NNequrLWHiT^&l;pjBDn)9|7s zV^?mDbqis7n-kahmr*q1n~a41wrztuWe@5{`HRz6+$d_BliMgtHgG#6E)DG+_V{9{ zpVpL-2A%VCFAVF-!LZ4)IYc@OxFFpTr3%Pd7GM&GbRnN)uz@vA1rV-WV2`XgE|`PJ zl&}kt&x3Sgn;ztm9bDj#$cHIi92G#WG6d8wPL*OOhv({#ll!?)lW^ujT@sjpSS^IA zBM1s*5P4jvNB(9G#ZSgv`^0zzLNimW==&;gbw_B%>Jk zjccEbH>*!(odadUNmb3r^m=d?@rcknU@j6#Ss)&->hTEBiC{hykj;01S|3NLo1+?D zgW)bYEknvNcm*@4-N*n=5 z+lC-VKoH{Tj*fq|gzqSrk9-G4fsd*N@n{qTBg^&!2uIcrAAlHH-5K9!qU#=-!iHx1_Yh*luA*j5B0R_ZT07WQz7l7diXaUe0`79v} zL{>7S;+0PuL7@WT9fVdNhY%3%8gLfk#c4oPnYgDhUXie&!SU(#(VztJdT4NbI#0Sf zBA*UdBb2TQ)iY^Q?JCujh-ytWZ<-by-$#lT{05;NN}sB~9yZmVWD2xJK+Y7n6i(OhLXOZ5V~ZsBL&5Um-(1w1T1DRj3YJhIl19YM*KmmP~39s{VqQ>e;R^sY0q= zge+hDKJwA5N4L9fG8JK%c_4;aPNLTB zLe#Kiz#-0XAybw5$1vL+Z8QusVPTlnB))qg;x`lmuI^I5&(?iipPFv_Swx}kCENOQ zO2zUdpTj~7Yo=Zv){`>#7c0YD(F!+F`-e?+O3w@;sUEP1YdrM|88tGHy!F= zqDRP>I;_z8&IF7)wH655t;BR2CScT|H8N8^%Bj}7d{Z?rjIZ_iDvKX}PHZ%Q=-onOP!_Cjn}F3&9@VbdSd5JrVAwqPd2N2r z1U_}b(Tj%gFr;!-_aZF85SppdOzgsN;s;FjMoHxpb<|4$ZQ_|S19*$v)TN(^mhNr@ S1t5_KF@h$VC*D&nVgCaoNidE8 From 3d21fd250f482bf7bd3529a647b781262100bf95 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Thu, 12 Sep 2024 16:22:32 +0800 Subject: [PATCH 028/218] =?UTF-8?q?=E5=B7=A5=E8=B5=84=E5=8D=95=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E6=96=87=E6=9C=AC=E5=8F=98=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../engine/salary/service/impl/SalaryBillServiceImpl.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/com/engine/salary/service/impl/SalaryBillServiceImpl.java b/src/com/engine/salary/service/impl/SalaryBillServiceImpl.java index 060f15cb2..4df8aa8f2 100644 --- a/src/com/engine/salary/service/impl/SalaryBillServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryBillServiceImpl.java @@ -54,6 +54,7 @@ import weaver.hrm.User; import java.io.File; import java.lang.reflect.InvocationTargetException; import java.math.BigDecimal; +import java.text.SimpleDateFormat; import java.util.*; import java.util.concurrent.atomic.AtomicInteger; import java.util.stream.Collectors; @@ -377,9 +378,7 @@ public class SalaryBillServiceImpl extends Service implements SalaryBillService String remarkI18n = SalaryI18nUtil.getI18nLabel(140036, "发放说明"); if (StringUtils.isNotEmpty(salaryTemplate.getTextContent())) { - String yearI18n = SalaryI18nUtil.getI18nLabel(100325, "年"); - String monthI18n = SalaryI18nUtil.getI18nLabel(100326, "月"); - salaryTemplate.setTextContent(salaryTemplate.getTextContent().replace("${salaryMonth}", salaryMonth.getYear() + yearI18n + salaryMonth.getMonth() + monthI18n)); + salaryTemplate.setTextContent(salaryTemplate.getTextContent().replace("${salaryMonth}", new SimpleDateFormat("yyyy年MM月").format(salaryMonth))); } // 工资单水印设置 From d70e63e787ae53eac6365687f631a496f303419b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Thu, 12 Sep 2024 17:07:52 +0800 Subject: [PATCH 029/218] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=B7=A5=E8=B5=84?= =?UTF-8?q?=E5=8D=95=E4=BF=9D=E5=AD=98=E5=BC=82=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapper/salaryitem/SalaryItemMapper.xml | 70 +++++++++---------- 1 file changed, 35 insertions(+), 35 deletions(-) diff --git a/src/com/engine/salary/mapper/salaryitem/SalaryItemMapper.xml b/src/com/engine/salary/mapper/salaryitem/SalaryItemMapper.xml index 21df577c4..693e9f222 100644 --- a/src/com/engine/salary/mapper/salaryitem/SalaryItemMapper.xml +++ b/src/com/engine/salary/mapper/salaryitem/SalaryItemMapper.xml @@ -409,12 +409,12 @@ update_time, creator, delete_type, tenant_key, data_type, shared_type, tax_agent_ids) VALUES - (#{item_id},#{item_name}, #{item_code}, #{item_systemType}, #{item_sysSalaryItemId}, - #{item_useDefault}, #{item_useInEmployeeSalary}, #{item_roundingMode}, - #{item_pattern}, - #{item_valueType}, #{item_formulaId}, #{item_description}, #{item_canEdit}, - #{item_createTime}, #{item_updateTime}, #{item_creator}, 0, #{item_tenantKey}, #{item_dataType}, - #{item_sharedType}, #{item_taxAgentIds}) + (#{item.id},#{item.name}, #{item.code}, #{item.systemType}, #{item.sysSalaryItemId}, + #{item.useDefault}, #{item.useInEmployeeSalary}, #{item.roundingMode}, + #{item.pattern}, + #{item.valueType}, #{item.formulaId}, #{item.description}, #{item.canEdit}, + #{item.createTime}, #{item.updateTime}, #{item.creator}, 0, #{item.tenantKey}, #{item.dataType}, + #{item.sharedType}, #{item.taxAgentIds}) @@ -425,27 +425,27 @@ select - #{item_id,jdbcType=DOUBLE}, - #{item_name,jdbcType=VARCHAR}, - #{item_code,jdbcType=VARCHAR}, - #{item_systemType,jdbcType=INTEGER}, - #{item_sysSalaryItemId,jdbcType=DOUBLE}, - #{item_useDefault,jdbcType=INTEGER}, - #{item_useInEmployeeSalary,jdbcType=INTEGER}, - #{item_roundingMode,jdbcType=INTEGER}, - #{item_pattern,jdbcType=INTEGER}, - #{item_valueType,jdbcType=INTEGER}, - #{item_formulaId,jdbcType=DOUBLE}, - #{item_description,jdbcType=VARCHAR}, - #{item_canEdit,jdbcType=INTEGER}, - #{item_createTime,jdbcType=DATE}, - #{item_updateTime,jdbcType=DATE}, - #{item_creator,jdbcType=DOUBLE}, + #{item.id,jdbcType=DOUBLE}, + #{item.name,jdbcType=VARCHAR}, + #{item.code,jdbcType=VARCHAR}, + #{item.systemType,jdbcType=INTEGER}, + #{item.sysSalaryItemId,jdbcType=DOUBLE}, + #{item.useDefault,jdbcType=INTEGER}, + #{item.useInEmployeeSalary,jdbcType=INTEGER}, + #{item.roundingMode,jdbcType=INTEGER}, + #{item.pattern,jdbcType=INTEGER}, + #{item.valueType,jdbcType=INTEGER}, + #{item.formulaId,jdbcType=DOUBLE}, + #{item.description,jdbcType=VARCHAR}, + #{item.canEdit,jdbcType=INTEGER}, + #{item.createTime,jdbcType=DATE}, + #{item.updateTime,jdbcType=DATE}, + #{item.creator,jdbcType=DOUBLE}, 0, - #{item_tenantKey,jdbcType=VARCHAR}, - #{item_dataType,jdbcType=VARCHAR}, - #{item_sharedType,jdbcType=INTEGER}, - #{item_taxAgentIds,jdbcType=VARCHAR} + #{item.tenantKey,jdbcType=VARCHAR}, + #{item.dataType,jdbcType=VARCHAR}, + #{item.sharedType,jdbcType=INTEGER}, + #{item.taxAgentIds,jdbcType=VARCHAR} from dual @@ -456,12 +456,12 @@ rounding_mode, pattern, value_type, formula_id, description, can_edit, create_time, update_time, creator, delete_type, tenant_key, data_type, shared_type, tax_agent_ids) VALUES - (#{item_id},#{item_name}, #{item_code}, #{item_systemType}, #{item_sysSalaryItemId}, - #{item_useDefault}, #{item_useInEmployeeSalary}, #{item_roundingMode}, - #{item_pattern}, - #{item_valueType}, #{item_formulaId}, #{item_description}, #{item_canEdit}, - #{item_createTime}, #{item_updateTime}, #{item_creator}, 0, #{item_tenantKey}, #{item_dataType}, - #{item_sharedType}, #{item_taxAgentIds}) + (#{item.id},#{item.name}, #{item.code}, #{item.systemType}, #{item.sysSalaryItemId}, + #{item.useDefault}, #{item.useInEmployeeSalary}, #{item.roundingMode}, + #{item.pattern}, + #{item.valueType}, #{item.formulaId}, #{item.description}, #{item.canEdit}, + #{item.createTime}, #{item.updateTime}, #{item.creator}, 0, #{item.tenantKey}, #{item.dataType}, + #{item.sharedType}, #{item.taxAgentIds}) @@ -479,8 +479,8 @@ - - when id=#{item_id} then #{item_sortedIndex} + + when id=#{item.id} then #{item.sortedIndex} @@ -488,7 +488,7 @@ where id in - #{item_id} + #{item.id} From c212a2782f35f4ff413da57618249c8fddd01348 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Fri, 13 Sep 2024 14:54:52 +0800 Subject: [PATCH 030/218] =?UTF-8?q?=E8=96=AA=E9=85=AC=E7=BB=9F=E8=AE=A1?= =?UTF-8?q?=E6=8A=A5=E8=A1=A8=E5=A2=9E=E5=8A=A0=E5=B2=97=E4=BD=8D=E7=AD=9B?= =?UTF-8?q?=E9=80=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/SalaryAcctEmployeeServiceImpl.java | 27 ++++++++++--------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/src/com/engine/salary/service/impl/SalaryAcctEmployeeServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctEmployeeServiceImpl.java index 621b2b068..7ca1a1f4d 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctEmployeeServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctEmployeeServiceImpl.java @@ -712,19 +712,20 @@ public class SalaryAcctEmployeeServiceImpl extends Service implements SalaryAcct // } // list = list.stream().filter(po -> employeeIdsByGradeFilter.contains(po.getEmployeeId())).collect(Collectors.toList()); // } -// // 岗位过滤 -// if (CollectionUtils.isNotEmpty(param.getPosition())) { -// Set employeeIdsByPostionFilter = new HashSet<>(); -// simpleEmployeeList.forEach(simpleEmployee -> { -// if (simpleEmployee.getPosition() != null && param.getPosition().contains(simpleEmployee.getPosition().getId())) { -// employeeIdsByPostionFilter.add(simpleEmployee.getEmployeeId()); -// } -// }); -// if (CollectionUtils.isEmpty(employeeIdsByPostionFilter)) { -// return Lists.newArrayList(); -// } -// list = list.stream().filter(po -> employeeIdsByPostionFilter.contains(po.getEmployeeId())).collect(Collectors.toList()); -// } + // 岗位过滤 + List position = param.getPosition(); + if (CollectionUtils.isNotEmpty(position)) { + // Set employeeIdsByPostionFilter = new HashSet<>(); + // simpleEmployeeList.forEach(simpleEmployee -> { + // if (simpleEmployee.getPosition() != null && param.getPosition().contains(simpleEmployee.getPosition().getId())) { + // employeeIdsByPostionFilter.add(simpleEmployee.getEmployeeId()); + // } + // }); + // if (CollectionUtils.isEmpty(employeeIdsByPostionFilter)) { + // return Lists.newArrayList(); + // } + employeeList = employeeList.stream().filter(emp -> position.contains(emp.getJobtitleId())).collect(Collectors.toList()); + } // 人事状态过滤 if (CollectionUtils.isNotEmpty(param.getStatus())) { Set employeeIdsByStatus = new HashSet<>(); From 31d2994a9ac2e16c381974f01b9a164a1b4f073b Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Sat, 14 Sep 2024 10:30:32 +0800 Subject: [PATCH 031/218] =?UTF-8?q?=E6=B5=AE=E5=8A=A8=E8=96=AA=E9=85=AC?= =?UTF-8?q?=E5=A4=9A=E8=AF=AD=E8=A8=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/VariableArchiveServiceImpl.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/com/engine/salary/service/impl/VariableArchiveServiceImpl.java b/src/com/engine/salary/service/impl/VariableArchiveServiceImpl.java index 0018859a9..b008273c6 100644 --- a/src/com/engine/salary/service/impl/VariableArchiveServiceImpl.java +++ b/src/com/engine/salary/service/impl/VariableArchiveServiceImpl.java @@ -134,7 +134,13 @@ public class VariableArchiveServiceImpl extends Service implements VariableArchi //排序配置 OrderRuleVO orderRule = getSalarySysConfService(user).orderRule(); queryParam.setOrderRule(orderRule); - return getVariableArchiveMapper().list(queryParam); + return listDTO(queryParam); + } + + public List listDTO(VariableArchiveQueryParam queryParam) { + List list = getVariableArchiveMapper().list(queryParam); + SalaryI18nUtil.i18nList(list); + return list; } /** @@ -256,7 +262,7 @@ public class VariableArchiveServiceImpl extends Service implements VariableArchi return Collections.emptyMap(); } - List variableArchiveList = getVariableArchiveMapper().list(queryParam); + List variableArchiveList = listDTO(queryParam); // 获取所有浮动薪酬项目 List variableItems = getVariableItemService(user).listAll(); From eefd4d1795052991150d0b585c5e50a661e0b7be Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Sat, 14 Sep 2024 15:33:31 +0800 Subject: [PATCH 032/218] =?UTF-8?q?=E6=8A=A5=E8=A1=A8=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E5=B2=97=E4=BD=8D=E7=AD=9B=E9=80=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salary/report/entity/bo/SalaryStatisticsReportBO.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/com/engine/salary/report/entity/bo/SalaryStatisticsReportBO.java b/src/com/engine/salary/report/entity/bo/SalaryStatisticsReportBO.java index 59abb699b..9ad7fb2fc 100644 --- a/src/com/engine/salary/report/entity/bo/SalaryStatisticsReportBO.java +++ b/src/com/engine/salary/report/entity/bo/SalaryStatisticsReportBO.java @@ -129,7 +129,9 @@ public class SalaryStatisticsReportBO { param.setDepart(((List) JSON.parseArray(po.getDepartSetting(), Map.class)).stream().map(m -> Long.valueOf(m.get(key).toString())).collect(Collectors.toList())); } // param.setGrade(((List) JSON.parseArray(po.getGradeSetting(), Map.class)).stream().map(m -> Long.valueOf(m.get(key).toString())).collect(Collectors.toList())); -// param.setPosition(((List) JSON.parseArray(po.getPositionSetting(), Map.class)).stream().map(m -> Long.valueOf(m.get(key).toString())).collect(Collectors.toList())); + if (po.getPositionSetting() != null) { + param.setPosition(((List) JSON.parseArray(po.getPositionSetting(), Map.class)).stream().map(m -> Long.valueOf(m.get(key).toString())).collect(Collectors.toList())); + } if (po.getStatusSetting() != null) { param.setStatus(((List) JSON.parseArray(po.getStatusSetting(), Map.class)).stream().map(m -> m.get(key).toString()).collect(Collectors.toList())); } From 09042321d1ec8313fba4b957ca31584d5cdad19c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Wed, 18 Sep 2024 15:59:36 +0800 Subject: [PATCH 033/218] =?UTF-8?q?1=E3=80=81=E6=94=AF=E6=8C=81=E8=8E=B7?= =?UTF-8?q?=E5=8F=96=E7=8F=AD=E6=AC=A1=E4=BF=A1=E6=81=AF=202=E3=80=81?= =?UTF-8?q?=E5=AF=BC=E5=87=BA=E8=80=83=E5=8B=A4=E5=8A=9F=E8=83=BD=E4=BC=98?= =?UTF-8?q?=E5=8C=96=EF=BC=8Cexcel=E5=88=97=E5=92=8C=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E6=98=BE=E7=A4=BA=E4=BF=9D=E6=8C=81=E4=B8=80=E8=87=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../datacollection/bo/AttendQuoteDataBO.java | 4 ++ .../AttendQuoteFieldMapper.java | 6 +++ .../datacollection/AttendQuoteFieldMapper.xml | 4 ++ .../remote/attend/entity/Attend4Salary.java | 5 +++ .../impl/RemoteAttend4SalaryServiceImpl.java | 34 ++++++++++++++-- .../impl/AttendQuoteDataServiceImpl.java | 40 ++++++++++++++----- 6 files changed, 79 insertions(+), 14 deletions(-) diff --git a/src/com/engine/salary/entity/datacollection/bo/AttendQuoteDataBO.java b/src/com/engine/salary/entity/datacollection/bo/AttendQuoteDataBO.java index 144ed4c0e..5b67306ca 100644 --- a/src/com/engine/salary/entity/datacollection/bo/AttendQuoteDataBO.java +++ b/src/com/engine/salary/entity/datacollection/bo/AttendQuoteDataBO.java @@ -36,6 +36,10 @@ public class AttendQuoteDataBO { continue; } String key = field.getCode(); + //兼容出勤班次的key + if(key.startsWith("attendanceSerial_")){ + key = key.replace("attendanceSerial_", ""); + } if (m.containsKey(key)) { Map map = new LinkedHashMap<>(); map.put("employeeId", m.get("resourceId")); diff --git a/src/com/engine/salary/mapper/datacollection/AttendQuoteFieldMapper.java b/src/com/engine/salary/mapper/datacollection/AttendQuoteFieldMapper.java index 9392a59f0..01a4f6be6 100644 --- a/src/com/engine/salary/mapper/datacollection/AttendQuoteFieldMapper.java +++ b/src/com/engine/salary/mapper/datacollection/AttendQuoteFieldMapper.java @@ -104,4 +104,10 @@ public interface AttendQuoteFieldMapper { * @return */ List listSome(@Param("param") AttendQuoteFieldPO param); + + /** + * 获取出勤班次 + * @return + */ + List getAttendanceSerials(); } \ No newline at end of file diff --git a/src/com/engine/salary/mapper/datacollection/AttendQuoteFieldMapper.xml b/src/com/engine/salary/mapper/datacollection/AttendQuoteFieldMapper.xml index 4c1ae10ee..38ad1cf90 100644 --- a/src/com/engine/salary/mapper/datacollection/AttendQuoteFieldMapper.xml +++ b/src/com/engine/salary/mapper/datacollection/AttendQuoteFieldMapper.xml @@ -486,4 +486,8 @@ + + \ No newline at end of file diff --git a/src/com/engine/salary/remote/attend/entity/Attend4Salary.java b/src/com/engine/salary/remote/attend/entity/Attend4Salary.java index 701d82f69..39703a559 100644 --- a/src/com/engine/salary/remote/attend/entity/Attend4Salary.java +++ b/src/com/engine/salary/remote/attend/entity/Attend4Salary.java @@ -26,4 +26,9 @@ public class Attend4Salary { private List onlyEmpIds; private Map extendParam; + + /** + * 出勤班次 + */ + private String attendanceSerial; } diff --git a/src/com/engine/salary/remote/attend/service/impl/RemoteAttend4SalaryServiceImpl.java b/src/com/engine/salary/remote/attend/service/impl/RemoteAttend4SalaryServiceImpl.java index 99553f193..95e1618ac 100644 --- a/src/com/engine/salary/remote/attend/service/impl/RemoteAttend4SalaryServiceImpl.java +++ b/src/com/engine/salary/remote/attend/service/impl/RemoteAttend4SalaryServiceImpl.java @@ -4,12 +4,15 @@ import com.alibaba.druid.support.json.JSONUtils; import com.alibaba.fastjson.JSONObject; import com.engine.core.impl.Service; import com.engine.kq.cmd.report.GetKQReportCmd; +import com.engine.salary.mapper.datacollection.AttendQuoteFieldMapper; import com.engine.salary.remote.attend.cmd.GetSearchListCmd; import com.engine.salary.remote.attend.entity.Attend4Salary; import com.engine.salary.remote.attend.service.RemoteAttend4SalaryService; import com.engine.salary.util.SalaryDateUtil; import com.engine.salary.util.SalaryEntityUtil; +import com.engine.salary.util.db.MapperProxyFactory; import com.engine.salary.util.valid.ValidUtil; +import com.google.common.base.Joiner; import com.google.common.collect.Maps; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; @@ -26,15 +29,22 @@ import java.util.stream.Collectors; public class RemoteAttend4SalaryServiceImpl extends Service implements RemoteAttend4SalaryService { private final Boolean isLog = "true".equals(new BaseBean().getPropValue("hrmSalary", "log")); + private AttendQuoteFieldMapper getAttendQuoteFieldMapper() { + return MapperProxyFactory.getProxy(AttendQuoteFieldMapper.class); + } + @Override public List> getColumns() { + + //兼容获取班次信息字段 + List attendanceSerials = getAttendQuoteFieldMapper().getAttendanceSerials(); + String attendanceSerial = Joiner.on(",").join((Iterable) attendanceSerials); + Map paramsMap = new HashMap(); -// paramsMap.put("pageIndex", 1); -// paramsMap.put("pageSize", 10); paramsMap.put("typeselect", "3"); paramsMap.put("viewScope", "0"); paramsMap.put("isNoAccount", "1"); - paramsMap.put("attendanceSerial", ""); + paramsMap.put("attendanceSerial", attendanceSerial); paramsMap.put("isFromMyAttendance", "1"); Map temp = new HashMap(); temp.put("data", JSONObject.toJSONString(paramsMap)); @@ -60,6 +70,21 @@ public class RemoteAttend4SalaryServiceImpl extends Service implements RemoteAtt }); } } + //出勤班次 + else if (dataIndex.equals("attendanceSerial") && column.get("children") != null) { + List list = (List) column.get("children"); + if (CollectionUtils.isNotEmpty(list)) { + list.stream() + .filter(leave -> leave.get("dataIndex") != null && StringUtils.isNotBlank(leave.get("dataIndex").toString())) + .forEach(leave -> { + Map map = Maps.newHashMapWithExpectedSize(2); + map.put("code", "attendanceSerial_" + leave.get("dataIndex").toString()); + String unit = "".equals(leave.get("unit").toString()) ? "" : "(" + leave.get("unit").toString() + ")"; + map.put("name", Util.null2String(column.get("title")) + "-" + leave.get("title") + unit); + columns.add(map); + }); + } + } //加班 else if (dataIndex.equals("overtime") && column.get("children") != null) { List list = (List) column.get("children"); @@ -121,7 +146,8 @@ public class RemoteAttend4SalaryServiceImpl extends Service implements RemoteAtt List resourceIds = attend4Salary.getOnlyEmpIds().stream().map(String::valueOf).collect(Collectors.toList()); paramsMap.put("resourceId", String.join(",", resourceIds)); paramsMap.put("isNoAccount", "1"); - paramsMap.put("attendanceSerial", ""); + //班次 + paramsMap.put("attendanceSerial", attend4Salary.getAttendanceSerial()); paramsMap.put("isFromMyAttendance", "1"); Map temp = new HashMap(); temp.put("data", JSONObject.toJSONString(paramsMap)); diff --git a/src/com/engine/salary/service/impl/AttendQuoteDataServiceImpl.java b/src/com/engine/salary/service/impl/AttendQuoteDataServiceImpl.java index 1771b6c09..750f11ec2 100644 --- a/src/com/engine/salary/service/impl/AttendQuoteDataServiceImpl.java +++ b/src/com/engine/salary/service/impl/AttendQuoteDataServiceImpl.java @@ -70,6 +70,7 @@ import org.apache.poi.util.IOUtils; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import weaver.file.ImageFileManager; import weaver.general.BaseBean; +import weaver.general.Util; import weaver.hrm.User; import weaver.wechat.util.Utils; @@ -131,7 +132,6 @@ public class AttendQuoteDataServiceImpl extends Service implements AttendQuoteDa } - private RemoteAttend4SalaryService getRemoteAttend4SalaryService(User user) { return ServiceUtil.getService(RemoteAttend4SalaryServiceImpl.class, user); } @@ -250,6 +250,16 @@ public class AttendQuoteDataServiceImpl extends Service implements AttendQuoteDa // 获取最终结果 List> listMaps = getListMaps(attendQuoteDataBases); + + //当前引用的值 + List effectiveColumns = listMaps.stream() + .map(Map::keySet) + .max(Comparator.comparingInt(Set::size)) + .orElse(new HashSet<>()) + .stream() + .map(key -> key.split("_")[0]) + .collect(Collectors.toList()); + // 1.工作簿名称 String sheetName = SalaryI18nUtil.getI18nLabel(93931, "考勤数据"); List header = new ArrayList<>(); @@ -258,10 +268,16 @@ public class AttendQuoteDataServiceImpl extends Service implements AttendQuoteDa header.add(SalaryI18nUtil.getI18nLabel(86186, "手机号")); header.add(SalaryI18nUtil.getI18nLabel(86317, "工号")); // 动态列 + List effectiveFields = new ArrayList<>(); if (CollectionUtils.isNotEmpty(listMaps)) { - for (AttendQuoteFieldPO attendQuoteField : attendQuoteFields) { - header.add(attendQuoteField.getFieldName()); - } + effectiveFields = attendQuoteFields.stream() + .filter(attendQuoteField -> effectiveColumns.contains(Util.null2String(attendQuoteField.getId()))) + .collect(Collectors.toList()); + + effectiveFields.forEach(attendQuoteField -> { + header.add(attendQuoteField.getFieldName()); + } + ); } List> rows = new ArrayList<>(); @@ -276,7 +292,7 @@ public class AttendQuoteDataServiceImpl extends Service implements AttendQuoteDa row.add(dto.get("jobNum")); // 动态列 - for (AttendQuoteFieldPO attendQuoteField : attendQuoteFields) { + for (AttendQuoteFieldPO attendQuoteField : effectiveFields) { Object o = dto.get(attendQuoteField.getId().toString() + "_attendQuoteData"); try { if (o != null && NumberUtil.isNumber(o.toString())) { @@ -509,13 +525,17 @@ public class AttendQuoteDataServiceImpl extends Service implements AttendQuoteDa attend4Salary.setBeginDate(attendCycleRange.getFromDate()); attend4Salary.setEndDate(attendCycleRange.getEndDate()); attend4Salary.setOnlyEmpIds(part); + //班次信息 + String attendanceSerial = attendQuoteFields.stream() + .filter(f -> f.getCode() != null && f.getCode().startsWith("attendanceSerial_")) + .map(f -> f.getCode().replace("attendanceSerial_", "")) + .collect(Collectors.joining(",")); + attend4Salary.setAttendanceSerial(attendanceSerial); + List> attendResult = getRemoteAttend4SalaryService(user).getDatas(attend4Salary); AttendQuoteDataBO.buildAttendDataFromRemote(attendResult, attendQuoteFields, attendQuoteSyncData); -// attend4Salary.setUnit("day"); -// attendResult = remoteAttend4SalaryService.getWorkTimeSummary(attend4Salary); -// log.info("考勤数据[按天]:{}", JSONUtils.toJSONString(attendResult.getData())); -// AttendQuoteDataBO.buildAttendDataFromRemote("day", attendResult.getData(), attendQuoteFields, attendQuoteSyncData); + } } catch (Exception e) { log.error("salaryAttend获取考勤数据错误失败:{}", String.format("参数:%s,错误信息:%s", JSONObject.toJSONString(attend4Salary), e.getMessage()), e); @@ -663,7 +683,7 @@ public class AttendQuoteDataServiceImpl extends Service implements AttendQuoteDa String confValue = (salarySysConfPO != null && salarySysConfPO.getConfValue() != null && !"".equals(salarySysConfPO.getConfValue())) ? salarySysConfPO.getConfValue() : "0"; // 获取租户下所有的人员 - List employees = getSalaryEmployeeService(user).listAll(UseEmployeeTypeEnum.ALL); + List employees = getSalaryEmployeeService(user).listAll(UseEmployeeTypeEnum.ALL); // 获取已设置的可同步的考勤字段 List attendQuoteFields = getAttendQuoteSetFields(AttendQuoteSourceTypeEnum.IMPORT); // 生成获取考勤引用 From 58012fe1e16d8ee37a52a8227b3022e2ebb65cb2 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Wed, 18 Sep 2024 16:44:02 +0800 Subject: [PATCH 034/218] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E7=A4=BE=E4=BF=9D?= =?UTF-8?q?=E7=A6=8F=E5=88=A9=E6=A1=A3=E6=A1=88=E8=A1=A5=E7=BC=B4=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salary/service/impl/SIBalanceServiceImpl.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/com/engine/salary/service/impl/SIBalanceServiceImpl.java b/src/com/engine/salary/service/impl/SIBalanceServiceImpl.java index bb0c776b3..4b7750224 100644 --- a/src/com/engine/salary/service/impl/SIBalanceServiceImpl.java +++ b/src/com/engine/salary/service/impl/SIBalanceServiceImpl.java @@ -172,7 +172,9 @@ public class SIBalanceServiceImpl extends Service implements SIBalanceService { Map socialComMap = JSON.parseObject(socialSchemePO.getSocialPaymentComBaseString(), new HashMap().getClass()); List socialIds = new ArrayList<>(); socialIds.addAll(socialMap.keySet()); - socialIds.addAll(socialComMap.keySet()); + if (socialComMap != null) { + socialIds.addAll(socialComMap.keySet()); + } socialIds = socialIds.stream().distinct().collect(Collectors.toList()); //查询该福利方案下开启缴纳的福利项 List insuranceIdAndScopeList = payInsuranceIdAndScopeList(socialSchemePO.getSocialSchemeId()); @@ -213,7 +215,9 @@ public class SIBalanceServiceImpl extends Service implements SIBalanceService { Map fundComMap = JSON.parseObject(fundSchemePO.getFundPaymentComBaseString(), new HashMap().getClass()); List fundIds = new ArrayList<>(); fundIds.addAll(fundMap.keySet()); - fundIds.addAll(fundComMap.keySet()); + if (fundComMap != null) { + fundIds.addAll(fundComMap.keySet()); + } fundIds = fundIds.stream().distinct().collect(Collectors.toList()); //查询该福利方案下开启缴纳的福利项 List insuranceIdAndScopeList = payInsuranceIdAndScopeList(fundSchemePO.getFundSchemeId()); @@ -254,7 +258,9 @@ public class SIBalanceServiceImpl extends Service implements SIBalanceService { Map otherComMap = JSON.parseObject(otherSchemePO.getOtherPaymentComBaseString(), new HashMap().getClass()); List otherIds = new ArrayList<>(); otherIds.addAll(otherMap.keySet()); - otherIds.addAll(otherComMap.keySet()); + if (otherComMap != null) { + otherIds.addAll(otherComMap.keySet()); + } otherIds = otherIds.stream().distinct().collect(Collectors.toList()); //查询该福利方案下开启缴纳的福利项 List insuranceIdAndScopeList = payInsuranceIdAndScopeList(otherSchemePO.getOtherSchemeId()); From 3420c364480895fadaa2261db647c1b412bee896 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Wed, 18 Sep 2024 18:10:30 +0800 Subject: [PATCH 035/218] =?UTF-8?q?=E4=BA=BA=E5=91=98id=E5=8A=A0=E5=AF=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../engine/salary/encrypt/AESEncryptUtil.java | 27 +++++++++++++++++++ .../entity/salaryBill/bo/SalaryBillBO.java | 5 ++-- .../sys/constant/SalarySysConstant.java | 5 ++++ .../engine/salary/util/SalaryTokenUtil.java | 7 ++++- .../salary/web/SalaryBillController.java | 15 +++-------- .../salary/wrapper/SalarySendWrapper.java | 2 +- 6 files changed, 45 insertions(+), 16 deletions(-) diff --git a/src/com/engine/salary/encrypt/AESEncryptUtil.java b/src/com/engine/salary/encrypt/AESEncryptUtil.java index 4ec7f60de..99d68d106 100644 --- a/src/com/engine/salary/encrypt/AESEncryptUtil.java +++ b/src/com/engine/salary/encrypt/AESEncryptUtil.java @@ -20,6 +20,8 @@ public class AESEncryptUtil { static String aesEncryptScrect = bb.getPropValue("hrmSalary", "AESEncryptScrect"); + static String aes4SalaryBillEncryptScrect = "OETEP8JBA1C8IH721C1513AE82IFPE5"; + /** * AES加密 * @@ -34,6 +36,31 @@ public class AESEncryptUtil { return source; } + /** + * 工资单推送-员工id加密 + * @param source + * @return + */ + public static String encrypt4SalaryBill(String source) { + //防止初始化老数据时二次加密 + if (StringUtils.isNotBlank(source) && !source.startsWith(SalarySysConstant.SALARY_BILL_PRE_SIGN_ENCRYPT)) { + return SalarySysConstant.SALARY_BILL_PRE_SIGN_ENCRYPT + AES.encrypt(source, aes4SalaryBillEncryptScrect); + } + return source; + } + + public static String decrypt4SalaryBill(String encryptStr) { + if (StringUtils.isNotBlank(encryptStr)) { + if (encryptStr.startsWith(SalarySysConstant.SALARY_BILL_PRE_SIGN_ENCRYPT)) { + encryptStr = encryptStr.substring(4, encryptStr.length()); + return AES.decrypt(encryptStr, aes4SalaryBillEncryptScrect); + } else { + return ""; + } + } + return encryptStr; + } + /** * AES解密 diff --git a/src/com/engine/salary/entity/salaryBill/bo/SalaryBillBO.java b/src/com/engine/salary/entity/salaryBill/bo/SalaryBillBO.java index 1bdae5dda..940c01ea6 100644 --- a/src/com/engine/salary/entity/salaryBill/bo/SalaryBillBO.java +++ b/src/com/engine/salary/entity/salaryBill/bo/SalaryBillBO.java @@ -9,6 +9,7 @@ import com.engine.salary.constant.HrmSalaryPayrollConf; import com.engine.salary.constant.SalaryArchiveConstant; import com.engine.salary.constant.SalaryBillConstant; import com.engine.salary.constant.SalaryTemplateSalaryItemSetGroupConstant; +import com.engine.salary.encrypt.AESEncryptUtil; import com.engine.salary.entity.datacollection.DataCollectionEmployee; import com.engine.salary.entity.salaryBill.dto.*; import com.engine.salary.entity.salaryBill.po.SalaryTemplatePO; @@ -246,9 +247,9 @@ public class SalaryBillBO { String title = billTitle; // 标题 String context = "点击查看详情"; // 内容 // PC端链接 - String linkUrl = weaver.general.GCONST.getContextPath() + "/spa/hrmSalary/static/index.html#/main/hrmSalary/mobilepayroll?id=" + id + "&recipient=" + employeeId; + String linkUrl = weaver.general.GCONST.getContextPath() + "/spa/hrmSalary/static/index.html#/main/hrmSalary/mobilepayroll?id=" + id + "&recipient=" + AESEncryptUtil.encrypt4SalaryBill(employeeId.toString()); // 移动端链接 - String linkMobileUrl = weaver.general.GCONST.getContextPath() + "/spa/hrmSalary/static/index.html#/main/hrmSalary/mobilepayroll?type=phone&id=" + id + "&recipient=" + employeeId; + String linkMobileUrl = weaver.general.GCONST.getContextPath() + "/spa/hrmSalary/static/index.html#/main/hrmSalary/mobilepayroll?type=phone&id=" + id + "&recipient=" + AESEncryptUtil.encrypt4SalaryBill(employeeId.toString()); try { MessageBean messageBean = Util_Message.createMessage(messageType, userIdList, title, context, linkUrl, linkMobileUrl); messageBean.setCreater(Integer.parseInt(salaryBillSendParam.getSendUser().getUID() + ""));// 创建人id diff --git a/src/com/engine/salary/sys/constant/SalarySysConstant.java b/src/com/engine/salary/sys/constant/SalarySysConstant.java index ff055b89e..5e79aaa16 100644 --- a/src/com/engine/salary/sys/constant/SalarySysConstant.java +++ b/src/com/engine/salary/sys/constant/SalarySysConstant.java @@ -45,6 +45,11 @@ public class SalarySysConstant { * 加密后前缀 */ public static final String PRE_SIGN_ENCRYPT = "AES_"; + + /** + * 工资单员工加密后前缀 + */ + public static final String SALARY_BILL_PRE_SIGN_ENCRYPT = "HSE_"; /** * 锁的key */ diff --git a/src/com/engine/salary/util/SalaryTokenUtil.java b/src/com/engine/salary/util/SalaryTokenUtil.java index 68446cf30..efde5ce91 100644 --- a/src/com/engine/salary/util/SalaryTokenUtil.java +++ b/src/com/engine/salary/util/SalaryTokenUtil.java @@ -2,6 +2,7 @@ package com.engine.salary.util; import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.TypeReference; +import com.engine.salary.encrypt.AESEncryptUtil; import com.engine.salary.exception.SalaryRunTimeException; import com.engine.salary.util.db.IdGenerator; import org.apache.commons.lang3.StringUtils; @@ -76,8 +77,12 @@ public class SalaryTokenUtil { * * @return */ - public static Map GetToken(Long uid) { + public static Map GetToken(String uid) { + uid = AESEncryptUtil.decrypt4SalaryBill(uid); Map heads = new HashMap<>(); + if (StringUtils.isBlank(uid)) { + return heads; + } BaseBean baseBean = new BaseBean(); RecordSet rs = new RecordSet(); Map resultMap = new HashMap<>(); diff --git a/src/com/engine/salary/web/SalaryBillController.java b/src/com/engine/salary/web/SalaryBillController.java index 94a2ea915..6507ee1f4 100644 --- a/src/com/engine/salary/web/SalaryBillController.java +++ b/src/com/engine/salary/web/SalaryBillController.java @@ -645,9 +645,9 @@ public class SalaryBillController { @GET @Path("/getToken") @Produces(MediaType.APPLICATION_JSON) - public String getToken(@Context HttpServletRequest request, @Context HttpServletResponse response, @QueryParam(value = "uid") Long uid) { + public String getToken(@Context HttpServletRequest request, @Context HttpServletResponse response, @QueryParam(value = "uid") String uid) { User user = HrmUserVarify.getUser(request, response); - return new ResponseResult>(user).run(getSalarySendWrapper(user)::getToken, uid); + return new ResponseResult>(user).run(getSalarySendWrapper(user)::getToken, uid); } /** @@ -675,16 +675,7 @@ public class SalaryBillController { @Produces(MediaType.APPLICATION_JSON) public String mySalaryBill(@Context HttpServletRequest request, @Context HttpServletResponse response, @QueryParam(value = "salaryInfoId") Long salaryInfoId) { User user = null; - String recipient = request.getParameter("recipient"); - String em_auth_userid = request.getParameter("em_auth_userid"); - log.info("salary recipient: {} em_auth_userid: {}", recipient, em_auth_userid); - if (StringUtils.isNotBlank(recipient) && NumberUtils.isCreatable(recipient)) { - user = new User(Integer.parseInt(recipient)); - } else if (StringUtils.isNotBlank(em_auth_userid) && NumberUtils.isCreatable(em_auth_userid)) { - user = new User(Integer.parseInt(em_auth_userid)); - } else { - user = HrmUserVarify.getUser(request, response); - } + user = HrmUserVarify.getUser(request, response); return new ResponseResult>(user).run(getSalarySendWrapper(user)::mySalaryBill, salaryInfoId); } diff --git a/src/com/engine/salary/wrapper/SalarySendWrapper.java b/src/com/engine/salary/wrapper/SalarySendWrapper.java index 0fccfecd0..179481841 100644 --- a/src/com/engine/salary/wrapper/SalarySendWrapper.java +++ b/src/com/engine/salary/wrapper/SalarySendWrapper.java @@ -744,7 +744,7 @@ public class SalarySendWrapper extends Service implements SalarySendWrapperProxy return getSalaryBillService(user).exportPdf(param); } - public Map getToken(Long uid) { + public Map getToken(String uid) { return SalaryTokenUtil.GetToken( uid); } From a59448e4543ea8f0c58005ce364ae9b57160a848 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Wed, 18 Sep 2024 18:24:08 +0800 Subject: [PATCH 036/218] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=BA=BA=E5=8A=9B?= =?UTF-8?q?=E8=B5=84=E6=BA=90=E5=88=A0=E9=99=A4=E6=95=B0=E6=8D=AE=E5=BD=B1?= =?UTF-8?q?=E5=93=8D=E5=88=97=E8=A1=A8=E5=B1=95=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/engine/salary/wrapper/SalaryArchiveItemWrapper.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/com/engine/salary/wrapper/SalaryArchiveItemWrapper.java b/src/com/engine/salary/wrapper/SalaryArchiveItemWrapper.java index 17d1d9f53..50b6d10a5 100644 --- a/src/com/engine/salary/wrapper/SalaryArchiveItemWrapper.java +++ b/src/com/engine/salary/wrapper/SalaryArchiveItemWrapper.java @@ -256,7 +256,10 @@ public class SalaryArchiveItemWrapper extends Service implements SalaryArchiveIt List listResult = getSalaryArchiveItemService(user).salaryItemAdjustRecordList(queryParam, salaryItemIds); listResult = listResult.stream() .filter(r -> { - DataCollectionEmployee employee = employeeMap.getOrDefault(r.getEmployeeId(), new DataCollectionEmployee()); + DataCollectionEmployee employee = employeeMap.get(r.getEmployeeId()); + if (employee == null) { + return false; + } String username = queryParam.getUsername(); List departmentIds = queryParam.getDepartmentIds(); List positionIds = queryParam.getPositionIds(); From 91863b901f76ab645004e849be967b0f90e75070 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Thu, 19 Sep 2024 14:17:47 +0800 Subject: [PATCH 037/218] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=A0=B8=E7=AE=97?= =?UTF-8?q?=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/SalaryAcctCalculateServiceImpl.java | 1 + .../salary/service/impl/SalaryAcctResultServiceImpl.java | 7 ++++--- src/com/engine/salary/wrapper/SalaryAcctResultWrapper.java | 1 + 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/com/engine/salary/service/impl/SalaryAcctCalculateServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctCalculateServiceImpl.java index 6685a0d9f..c7cce5da7 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctCalculateServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctCalculateServiceImpl.java @@ -116,6 +116,7 @@ public class SalaryAcctCalculateServiceImpl extends Service implements SalaryAcc @Override public void calculate(SalaryAcctCalculateBO salaryAcctCalculateBO, DataCollectionEmployee simpleEmployee, List salarySobBackItems) { + log.info("开始核算V3 {}", salaryAcctCalculateBO); StopWatch sw = new StopWatch("核算耗时明细,id:" + salaryAcctCalculateBO.getSalaryAcctRecordPO().getId() + ""); Date now = new Date(); try { diff --git a/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java index d942cdcc9..8019268ee 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java @@ -768,8 +768,9 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe @Override public void calculate(SalaryAcctCalculateParam calculateParam, DataCollectionEmployee simpleEmployee) { - StopWatch stopWatch = new StopWatch("总核算耗时,id:" + calculateParam.getSalaryAcctRecordId()); try { + log.info("开始核算V2 {}", calculateParam); + StopWatch stopWatch = new StopWatch("总核算耗时,id:" + calculateParam.getSalaryAcctRecordId()); stopWatch.start("数据准备"); // 1、查询薪资核算记录 SalaryAcctRecordPO salaryAcctRecordPO = getSalaryAcctRecordService(user).getById(calculateParam.getSalaryAcctRecordId()); @@ -855,8 +856,8 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe getSalaryAcctProgressService(user).initProgress(SalaryCacheKey.ACCT_PROGRESS + calculateParam.getSalaryAcctRecordId(), initProgress); // 12、对薪资核算人员进行拆分 String personNumberInOneThread = new BaseBean().getPropValue("hrmSalaryCustom", "personNumberInOneThread"); - int size= 100; - if(StringUtils.isNotBlank(personNumberInOneThread)){ + int size = 100; + if (StringUtils.isNotBlank(personNumberInOneThread)) { size = Integer.parseInt(personNumberInOneThread); } List> partition = Lists.partition(salaryAcctEmployeePOS, size); diff --git a/src/com/engine/salary/wrapper/SalaryAcctResultWrapper.java b/src/com/engine/salary/wrapper/SalaryAcctResultWrapper.java index cae703b1c..b53499bf5 100644 --- a/src/com/engine/salary/wrapper/SalaryAcctResultWrapper.java +++ b/src/com/engine/salary/wrapper/SalaryAcctResultWrapper.java @@ -219,6 +219,7 @@ public class SalaryAcctResultWrapper extends Service implements SalaryAcctResult // 检查是否正在核算中 ProgressDTO salaryAcctProgressDTO = getSalaryAcctProgressService(user).getProgress(SalaryCacheKey.ACCT_PROGRESS + calculateParam.getSalaryAcctRecordId()); if (Objects.nonNull(salaryAcctProgressDTO) && salaryAcctProgressDTO.isStatus() && Optional.ofNullable(salaryAcctProgressDTO.getProgress()).orElse(BigDecimal.ZERO).compareTo(BigDecimal.ONE) < 0) { + log.warn("正在核算中,无法再次执行"+calculateParam.getSalaryAcctRecordId()); return; } // 初始化进度 From db064863b2ea2278b24750883911b613a8e0c804 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Thu, 19 Sep 2024 14:19:26 +0800 Subject: [PATCH 038/218] =?UTF-8?q?=E7=89=88=E6=9C=AC=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resource/WEB-INF/prop/hrmSalary.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resource/WEB-INF/prop/hrmSalary.properties b/resource/WEB-INF/prop/hrmSalary.properties index 5c9223804..beede61ad 100644 --- a/resource/WEB-INF/prop/hrmSalary.properties +++ b/resource/WEB-INF/prop/hrmSalary.properties @@ -1,5 +1,5 @@ log=false defaultCloseNonStandard149=true AESEncryptScrect=990EB004A1C862721C1513AE90038C9E -version=2.15.1.2407.01 +version=2.15.2.2409.01 openFormulaForcedEditing=false \ No newline at end of file From dc3dfc2d6bb51affc05bfe98c69aa3f94622a374 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Fri, 20 Sep 2024 11:41:44 +0800 Subject: [PATCH 039/218] =?UTF-8?q?=E5=8E=BB=E9=99=A4=E8=84=B1=E6=95=8F?= =?UTF-8?q?=E6=8A=A5=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entity/salaryacct/param/SalaryAcctCalculateParam.java | 7 ------- .../salary/service/impl/SalaryAcctResultServiceImpl.java | 7 ------- src/com/engine/salary/wrapper/SalaryAcctResultWrapper.java | 5 ----- 3 files changed, 19 deletions(-) diff --git a/src/com/engine/salary/entity/salaryacct/param/SalaryAcctCalculateParam.java b/src/com/engine/salary/entity/salaryacct/param/SalaryAcctCalculateParam.java index b09c535ce..52c3b7f13 100644 --- a/src/com/engine/salary/entity/salaryacct/param/SalaryAcctCalculateParam.java +++ b/src/com/engine/salary/entity/salaryacct/param/SalaryAcctCalculateParam.java @@ -1,6 +1,5 @@ package com.engine.salary.entity.salaryacct.param; -import com.engine.salary.entity.datacollection.DataCollectionEmployee; import com.engine.salary.util.valid.DataCheck; import lombok.AllArgsConstructor; import lombok.Builder; @@ -8,7 +7,6 @@ import lombok.Data; import lombok.NoArgsConstructor; import java.util.Collection; -import java.util.Map; /** * 薪资核算的参数 @@ -29,9 +27,4 @@ public class SalaryAcctCalculateParam { @DataCheck(require = true,message = "参数错误,薪资核算记录ID不能为空") private Long salaryAcctRecordId; - - /** - * 人员信息,报表使用 - */ - private Map emps; } diff --git a/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java index 8019268ee..61320e5e3 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java @@ -976,13 +976,6 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe List salaryAcctResultPOS = SalaryAcctResultBO.convert2ResultPO(salaryAcctResultTempPOS); batchSave(salaryAcctResultPOS); sw.stop(); - new Thread() { - public void run() { - //保存核算报表数据 - List salaryAcctResultReportPOS = SalaryAcctResultReportBO.convert2ReportPO(salaryAcctResultTempPOS, calculateParam.getEmps()); - getSalaryAcctReportService(user).batchSave(salaryAcctResultReportPOS); - } - }.start(); // 删除薪资核算临时存储表中的数据 sw.start("处理核算数据,删除薪资核算临时存储表中的数据"); getSalaryAcctResultTempService(user).deleteByCalculateKey(calculateKey); diff --git a/src/com/engine/salary/wrapper/SalaryAcctResultWrapper.java b/src/com/engine/salary/wrapper/SalaryAcctResultWrapper.java index b53499bf5..094602f01 100644 --- a/src/com/engine/salary/wrapper/SalaryAcctResultWrapper.java +++ b/src/com/engine/salary/wrapper/SalaryAcctResultWrapper.java @@ -16,7 +16,6 @@ import com.engine.salary.service.*; import com.engine.salary.service.impl.*; import com.engine.salary.sys.service.SalarySysConfService; import com.engine.salary.sys.service.impl.SalarySysConfServiceImpl; -import com.engine.salary.util.SalaryEntityUtil; import com.engine.salary.util.SalaryI18nUtil; import com.engine.salary.util.page.PageInfo; import com.engine.salary.util.valid.ValidUtil; @@ -207,10 +206,6 @@ public class SalaryAcctResultWrapper extends Service implements SalaryAcctResult public void calculate(SalaryAcctCalculateParam calculateParam) { log.info("开始核算V1{}", calculateParam); - //报表参数 - List emps = getSalaryEmployeeService(user).listAllForReport(); - calculateParam.setEmps(SalaryEntityUtil.convert2Map(emps, DataCollectionEmployee::getEmployeeId)); - //当前登陆人员 DataCollectionEmployee simpleEmployee = new DataCollectionEmployee(); simpleEmployee.setEmployeeId((long) user.getUID()); From 164a97a8e0f199a3bcdcd6cd415f3f5d230c4154 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Mon, 23 Sep 2024 11:10:25 +0800 Subject: [PATCH 040/218] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=A4=A7=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E9=87=8F=EF=BC=8C=E9=87=8D=E6=96=B0=E6=A0=B8=E7=AE=97?= =?UTF-8?q?=E6=8A=A5=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salary/service/impl/AddUpSituationServiceImpl.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/com/engine/salary/service/impl/AddUpSituationServiceImpl.java b/src/com/engine/salary/service/impl/AddUpSituationServiceImpl.java index be0924a5d..e2976bbaf 100644 --- a/src/com/engine/salary/service/impl/AddUpSituationServiceImpl.java +++ b/src/com/engine/salary/service/impl/AddUpSituationServiceImpl.java @@ -253,9 +253,10 @@ public class AddUpSituationServiceImpl extends Service implements AddUpSituation AddUpSituationBiz biz = new AddUpSituationBiz(); List addUpSituations = biz.listSome(AddUpSituation.builder().taxAgentId(taxAgentId).taxYearMonth(taxCycle).build()); - Set addUpSituationIds = SalaryEntityUtil.properties(addUpSituations, AddUpSituation::getId); + List addUpSituationIds = SalaryEntityUtil.properties(addUpSituations, AddUpSituation::getId, Collectors.toList()); if (CollectionUtils.isNotEmpty(addUpSituationIds)) { - getAddUpSituationMapper().deleteByIds(addUpSituationIds); + List> partition = Lists.partition(addUpSituationIds, 100); + partition.forEach(getAddUpSituationMapper()::deleteByIds); } return Boolean.TRUE; @@ -611,7 +612,7 @@ public class AddUpSituationServiceImpl extends Service implements AddUpSituation String idNo = dto.getIdNo(); //筛选导入人员信息可以在人力资源池中匹配到的人员信息 - List employeeSameIds = getSalaryEmployeeService(user).matchImportEmployee(confValue, employees, userName, deparmentName, mobile, workcode, idNo,null); + List employeeSameIds = getSalaryEmployeeService(user).matchImportEmployee(confValue, employees, userName, deparmentName, mobile, workcode, idNo, null); //当人员信息导入筛选的全局配置为"0"时,姓名才是必填项 if (StringUtils.isBlank(userName) && "0".equals(confValue)) { From 17ef5a3c2b07c0d7f2dc66e02dda4c0c22cd6917 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Tue, 24 Sep 2024 13:19:20 +0800 Subject: [PATCH 041/218] =?UTF-8?q?=E6=B5=AE=E5=8A=A8=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E8=8F=9C=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resource/sqlupgrade/DM/sql202409130201.sql | 24 +++++++++++++++++++ resource/sqlupgrade/DM/sql202409130302.sql | 15 ++++++++++++ resource/sqlupgrade/GS/sql202409130201.sql | 24 +++++++++++++++++++ resource/sqlupgrade/GS/sql202409130302.sql | 15 ++++++++++++ resource/sqlupgrade/JC/sql202409130201.sql | 24 +++++++++++++++++++ resource/sqlupgrade/JC/sql202409130302.sql | 15 ++++++++++++ resource/sqlupgrade/Mysql/sql202409130201.sql | 16 +++++++++++++ resource/sqlupgrade/Mysql/sql202409130302.sql | 10 ++++++++ .../sqlupgrade/Oracle/sql202409130201.sql | 16 +++++++++++++ .../sqlupgrade/Oracle/sql202409130302.sql | 10 ++++++++ resource/sqlupgrade/PG/sql202409130201.sql | 16 +++++++++++++ resource/sqlupgrade/PG/sql202409130302.sql | 10 ++++++++ .../sqlupgrade/SQLServer/sql202409130201.sql | 16 +++++++++++++ .../sqlupgrade/SQLServer/sql202409130302.sql | 10 ++++++++ resource/sqlupgrade/ST/sql202409130201.sql | 24 +++++++++++++++++++ resource/sqlupgrade/ST/sql202409130302.sql | 15 ++++++++++++ 16 files changed, 260 insertions(+) create mode 100644 resource/sqlupgrade/DM/sql202409130201.sql create mode 100644 resource/sqlupgrade/DM/sql202409130302.sql create mode 100644 resource/sqlupgrade/GS/sql202409130201.sql create mode 100644 resource/sqlupgrade/GS/sql202409130302.sql create mode 100644 resource/sqlupgrade/JC/sql202409130201.sql create mode 100644 resource/sqlupgrade/JC/sql202409130302.sql create mode 100644 resource/sqlupgrade/Mysql/sql202409130201.sql create mode 100644 resource/sqlupgrade/Mysql/sql202409130302.sql create mode 100644 resource/sqlupgrade/Oracle/sql202409130201.sql create mode 100644 resource/sqlupgrade/Oracle/sql202409130302.sql create mode 100644 resource/sqlupgrade/PG/sql202409130201.sql create mode 100644 resource/sqlupgrade/PG/sql202409130302.sql create mode 100644 resource/sqlupgrade/SQLServer/sql202409130201.sql create mode 100644 resource/sqlupgrade/SQLServer/sql202409130302.sql create mode 100644 resource/sqlupgrade/ST/sql202409130201.sql create mode 100644 resource/sqlupgrade/ST/sql202409130302.sql diff --git a/resource/sqlupgrade/DM/sql202409130201.sql b/resource/sqlupgrade/DM/sql202409130201.sql new file mode 100644 index 000000000..ee19534ed --- /dev/null +++ b/resource/sqlupgrade/DM/sql202409130201.sql @@ -0,0 +1,24 @@ +delete from HtmlLabelIndex where id = 548025 and ( trim(indexdesc) is null ) ; +/ + +insert into HtmlLabelIndex(id,indexdesc) select 548025,'' from HtmlLabelIndex where not exists (select id from HtmlLabelIndex where id = 548025 and ( trim(indexdesc) is not null )) and rownum = 1 ; +/ + +delete from HtmlLabelInfo where indexid = 548025 and languageid=7 and ( trim(labelname) is null ) ; +/ + +insert into HtmlLabelInfo(indexid,labelname,languageid) select * from (select 548025 as indexid ,'' as content,7 as languageid from HtmlLabelInfo) t where not exists (select indexid,languageid from HtmlLabelInfo where indexid = 548025 and languageid=7 and ( trim(labelname) is not null )) and rownum = 1 ; +/ + +delete from HtmlLabelInfo where indexid = 548025 and languageid=8 and ( trim(labelname) is null or length(labelname)!=lengthb(labelname) ) ; +/ + +insert into HtmlLabelInfo(indexid,labelname,languageid) select * from (select 548025 as indexid ,'Floating Data' as content,8 as languageid from HtmlLabelInfo) t where not exists (select indexid,languageid from HtmlLabelInfo where indexid = 548025 and languageid=8 and ( trim(labelname) is not null and length(labelname)=lengthb(labelname) )) and rownum = 1 ; +/ + +delete from HtmlLabelInfo where indexid = 548025 and languageid=9 and ( trim(labelname) is null ) ; +/ + +insert into HtmlLabelInfo(indexid,labelname,languageid) select * from (select 548025 as indexid ,'Ӕ' as content,9 as languageid from HtmlLabelInfo) t where not exists (select indexid,languageid from HtmlLabelInfo where indexid = 548025 and languageid=9 and ( trim(labelname) is not null )) and rownum = 1 ; +/ + diff --git a/resource/sqlupgrade/DM/sql202409130302.sql b/resource/sqlupgrade/DM/sql202409130302.sql new file mode 100644 index 000000000..f9f4f825d --- /dev/null +++ b/resource/sqlupgrade/DM/sql202409130302.sql @@ -0,0 +1,15 @@ +Delete from LeftMenuInfo where id=100219; +/ + +Delete from LeftMenuConfig where infoid=100219; +/ + +call LMConfig_U_ByInfoInsert (2,100126,0); +/ + +call LMInfo_Insert (100219,548025,'','',2,100126,7,2); +/ + +update LeftMenuInfo set mobxrouteurl = '',iconClassName = '',fullrouteurl='/spa/hrmSalary/static/index.html#/main/hrmSalary/variableSalary' where id = 100219; +/ + diff --git a/resource/sqlupgrade/GS/sql202409130201.sql b/resource/sqlupgrade/GS/sql202409130201.sql new file mode 100644 index 000000000..ee19534ed --- /dev/null +++ b/resource/sqlupgrade/GS/sql202409130201.sql @@ -0,0 +1,24 @@ +delete from HtmlLabelIndex where id = 548025 and ( trim(indexdesc) is null ) ; +/ + +insert into HtmlLabelIndex(id,indexdesc) select 548025,'' from HtmlLabelIndex where not exists (select id from HtmlLabelIndex where id = 548025 and ( trim(indexdesc) is not null )) and rownum = 1 ; +/ + +delete from HtmlLabelInfo where indexid = 548025 and languageid=7 and ( trim(labelname) is null ) ; +/ + +insert into HtmlLabelInfo(indexid,labelname,languageid) select * from (select 548025 as indexid ,'' as content,7 as languageid from HtmlLabelInfo) t where not exists (select indexid,languageid from HtmlLabelInfo where indexid = 548025 and languageid=7 and ( trim(labelname) is not null )) and rownum = 1 ; +/ + +delete from HtmlLabelInfo where indexid = 548025 and languageid=8 and ( trim(labelname) is null or length(labelname)!=lengthb(labelname) ) ; +/ + +insert into HtmlLabelInfo(indexid,labelname,languageid) select * from (select 548025 as indexid ,'Floating Data' as content,8 as languageid from HtmlLabelInfo) t where not exists (select indexid,languageid from HtmlLabelInfo where indexid = 548025 and languageid=8 and ( trim(labelname) is not null and length(labelname)=lengthb(labelname) )) and rownum = 1 ; +/ + +delete from HtmlLabelInfo where indexid = 548025 and languageid=9 and ( trim(labelname) is null ) ; +/ + +insert into HtmlLabelInfo(indexid,labelname,languageid) select * from (select 548025 as indexid ,'Ӕ' as content,9 as languageid from HtmlLabelInfo) t where not exists (select indexid,languageid from HtmlLabelInfo where indexid = 548025 and languageid=9 and ( trim(labelname) is not null )) and rownum = 1 ; +/ + diff --git a/resource/sqlupgrade/GS/sql202409130302.sql b/resource/sqlupgrade/GS/sql202409130302.sql new file mode 100644 index 000000000..f9f4f825d --- /dev/null +++ b/resource/sqlupgrade/GS/sql202409130302.sql @@ -0,0 +1,15 @@ +Delete from LeftMenuInfo where id=100219; +/ + +Delete from LeftMenuConfig where infoid=100219; +/ + +call LMConfig_U_ByInfoInsert (2,100126,0); +/ + +call LMInfo_Insert (100219,548025,'','',2,100126,7,2); +/ + +update LeftMenuInfo set mobxrouteurl = '',iconClassName = '',fullrouteurl='/spa/hrmSalary/static/index.html#/main/hrmSalary/variableSalary' where id = 100219; +/ + diff --git a/resource/sqlupgrade/JC/sql202409130201.sql b/resource/sqlupgrade/JC/sql202409130201.sql new file mode 100644 index 000000000..ee19534ed --- /dev/null +++ b/resource/sqlupgrade/JC/sql202409130201.sql @@ -0,0 +1,24 @@ +delete from HtmlLabelIndex where id = 548025 and ( trim(indexdesc) is null ) ; +/ + +insert into HtmlLabelIndex(id,indexdesc) select 548025,'' from HtmlLabelIndex where not exists (select id from HtmlLabelIndex where id = 548025 and ( trim(indexdesc) is not null )) and rownum = 1 ; +/ + +delete from HtmlLabelInfo where indexid = 548025 and languageid=7 and ( trim(labelname) is null ) ; +/ + +insert into HtmlLabelInfo(indexid,labelname,languageid) select * from (select 548025 as indexid ,'' as content,7 as languageid from HtmlLabelInfo) t where not exists (select indexid,languageid from HtmlLabelInfo where indexid = 548025 and languageid=7 and ( trim(labelname) is not null )) and rownum = 1 ; +/ + +delete from HtmlLabelInfo where indexid = 548025 and languageid=8 and ( trim(labelname) is null or length(labelname)!=lengthb(labelname) ) ; +/ + +insert into HtmlLabelInfo(indexid,labelname,languageid) select * from (select 548025 as indexid ,'Floating Data' as content,8 as languageid from HtmlLabelInfo) t where not exists (select indexid,languageid from HtmlLabelInfo where indexid = 548025 and languageid=8 and ( trim(labelname) is not null and length(labelname)=lengthb(labelname) )) and rownum = 1 ; +/ + +delete from HtmlLabelInfo where indexid = 548025 and languageid=9 and ( trim(labelname) is null ) ; +/ + +insert into HtmlLabelInfo(indexid,labelname,languageid) select * from (select 548025 as indexid ,'Ӕ' as content,9 as languageid from HtmlLabelInfo) t where not exists (select indexid,languageid from HtmlLabelInfo where indexid = 548025 and languageid=9 and ( trim(labelname) is not null )) and rownum = 1 ; +/ + diff --git a/resource/sqlupgrade/JC/sql202409130302.sql b/resource/sqlupgrade/JC/sql202409130302.sql new file mode 100644 index 000000000..f9f4f825d --- /dev/null +++ b/resource/sqlupgrade/JC/sql202409130302.sql @@ -0,0 +1,15 @@ +Delete from LeftMenuInfo where id=100219; +/ + +Delete from LeftMenuConfig where infoid=100219; +/ + +call LMConfig_U_ByInfoInsert (2,100126,0); +/ + +call LMInfo_Insert (100219,548025,'','',2,100126,7,2); +/ + +update LeftMenuInfo set mobxrouteurl = '',iconClassName = '',fullrouteurl='/spa/hrmSalary/static/index.html#/main/hrmSalary/variableSalary' where id = 100219; +/ + diff --git a/resource/sqlupgrade/Mysql/sql202409130201.sql b/resource/sqlupgrade/Mysql/sql202409130201.sql new file mode 100644 index 000000000..50f416219 --- /dev/null +++ b/resource/sqlupgrade/Mysql/sql202409130201.sql @@ -0,0 +1,16 @@ +delete from HtmlLabelIndex where id = 548025 and ( indexdesc is null or indexdesc = '' ) +; +insert into HtmlLabelIndex(id,indexdesc) select 548025,'' from HtmlLabelIndex where not exists (select id from HtmlLabelIndex where id = 548025 and ( indexdesc is not null and indexdesc <> '' )) limit 1 +; +delete from HtmlLabelInfo where indexid = 548025 and languageid=7 and ( labelname is null or labelname = '' ) +; +insert into HtmlLabelInfo(indexid,labelname,languageid) select * from (select 548025 as indexid ,'' as content,7 as languageid from HtmlLabelInfo) t where not exists (select indexid,languageid from HtmlLabelInfo where indexid = 548025 and languageid=7 and ( labelname is not null and labelname <> '' )) limit 1 +; +delete from HtmlLabelInfo where indexid = 548025 and languageid=8 and ( labelname is null or labelname = '' or length(labelname)!=char_length(labelname) ) +; +insert into HtmlLabelInfo(indexid,labelname,languageid) select * from (select 548025 as indexid ,'Floating Data' as content,8 as languageid from HtmlLabelInfo) t where not exists (select indexid,languageid from HtmlLabelInfo where indexid = 548025 and languageid=8 and ( labelname is not null and labelname <> '' and length(labelname)=char_length(labelname) )) limit 1 +; +delete from HtmlLabelInfo where indexid = 548025 and languageid=9 and ( labelname is null or labelname = '' ) +; +insert into HtmlLabelInfo(indexid,labelname,languageid) select * from (select 548025 as indexid ,'Ӕ' as content,9 as languageid from HtmlLabelInfo) t where not exists (select indexid,languageid from HtmlLabelInfo where indexid = 548025 and languageid=9 and ( labelname is not null and labelname <> '' )) limit 1 +; diff --git a/resource/sqlupgrade/Mysql/sql202409130302.sql b/resource/sqlupgrade/Mysql/sql202409130302.sql new file mode 100644 index 000000000..e53f1a601 --- /dev/null +++ b/resource/sqlupgrade/Mysql/sql202409130302.sql @@ -0,0 +1,10 @@ +Delete from LeftMenuInfo where id=100219 +; +Delete from LeftMenuConfig where infoid=100219 +; +call LMConfig_U_ByInfoInsert (2,100126,0) +; +call LMInfo_Insert (100219,548025,'','',2,100126,7,2) +; +update LeftMenuInfo set mobxrouteurl = '',iconClassName = '',fullrouteurl='/spa/hrmSalary/static/index.html#/main/hrmSalary/variableSalary' where id = 100219 +; \ No newline at end of file diff --git a/resource/sqlupgrade/Oracle/sql202409130201.sql b/resource/sqlupgrade/Oracle/sql202409130201.sql new file mode 100644 index 000000000..1462f878d --- /dev/null +++ b/resource/sqlupgrade/Oracle/sql202409130201.sql @@ -0,0 +1,16 @@ +delete from HtmlLabelIndex where id = 548025 and ( trim(indexdesc) is null ) +/ +insert into HtmlLabelIndex(id,indexdesc) select 548025,'' from HtmlLabelIndex where not exists (select id from HtmlLabelIndex where id = 548025 and ( trim(indexdesc) is not null )) and rownum = 1 +/ +delete from HtmlLabelInfo where indexid = 548025 and languageid=7 and ( trim(labelname) is null ) +/ +insert into HtmlLabelInfo(indexid,labelname,languageid) select * from (select 548025 as indexid ,'' as content,7 as languageid from HtmlLabelInfo) t where not exists (select indexid,languageid from HtmlLabelInfo where indexid = 548025 and languageid=7 and ( trim(labelname) is not null )) and rownum = 1 +/ +delete from HtmlLabelInfo where indexid = 548025 and languageid=8 and ( trim(labelname) is null or length(labelname)!=lengthb(labelname) ) +/ +insert into HtmlLabelInfo(indexid,labelname,languageid) select * from (select 548025 as indexid ,'Floating Data' as content,8 as languageid from HtmlLabelInfo) t where not exists (select indexid,languageid from HtmlLabelInfo where indexid = 548025 and languageid=8 and ( trim(labelname) is not null and length(labelname)=lengthb(labelname) )) and rownum = 1 +/ +delete from HtmlLabelInfo where indexid = 548025 and languageid=9 and ( trim(labelname) is null ) +/ +insert into HtmlLabelInfo(indexid,labelname,languageid) select * from (select 548025 as indexid ,'Ӕ' as content,9 as languageid from HtmlLabelInfo) t where not exists (select indexid,languageid from HtmlLabelInfo where indexid = 548025 and languageid=9 and ( trim(labelname) is not null )) and rownum = 1 +/ \ No newline at end of file diff --git a/resource/sqlupgrade/Oracle/sql202409130302.sql b/resource/sqlupgrade/Oracle/sql202409130302.sql new file mode 100644 index 000000000..aa1c20a30 --- /dev/null +++ b/resource/sqlupgrade/Oracle/sql202409130302.sql @@ -0,0 +1,10 @@ +Delete from LeftMenuInfo where id=100219 +/ +Delete from LeftMenuConfig where infoid=100219 +/ +call LMConfig_U_ByInfoInsert (2,100126,0) +/ +call LMInfo_Insert (100219,548025,'','',2,100126,7,2) +/ +update LeftMenuInfo set mobxrouteurl = '',iconClassName = '',fullrouteurl='/spa/hrmSalary/static/index.html#/main/hrmSalary/variableSalary' where id = 100219 +/ \ No newline at end of file diff --git a/resource/sqlupgrade/PG/sql202409130201.sql b/resource/sqlupgrade/PG/sql202409130201.sql new file mode 100644 index 000000000..acb55b3a0 --- /dev/null +++ b/resource/sqlupgrade/PG/sql202409130201.sql @@ -0,0 +1,16 @@ +delete from HtmlLabelIndex where id = 548025 and ( indexdesc is null or indexdesc = '' ) ; +/ +insert into HtmlLabelIndex(id,indexdesc) select 548025,'' from HtmlLabelIndex where not exists (select id from HtmlLabelIndex where id = 548025 and ( indexdesc is not null and indexdesc <> '' )) limit 1 ; +/ +delete from HtmlLabelInfo where indexid = 548025 and languageid=7 and ( labelname is null or labelname = '' ) ; +/ +insert into HtmlLabelInfo(indexid,labelname,languageid) select * from (select 548025 as indexid ,'' as content,7 as languageid from HtmlLabelInfo) t where not exists (select indexid,languageid from HtmlLabelInfo where indexid = 548025 and languageid=7 and ( labelname is not null and labelname <> '' )) limit 1 ; +/ +delete from HtmlLabelInfo where indexid = 548025 and languageid=8 and ( labelname is null or labelname = '' or length(labelname)!=octet_length(labelname) ) ; +/ +insert into HtmlLabelInfo(indexid,labelname,languageid) select * from (select 548025 as indexid ,'Floating Data' as content,8 as languageid from HtmlLabelInfo) t where not exists (select indexid,languageid from HtmlLabelInfo where indexid = 548025 and languageid=8 and ( labelname is not null and labelname <> '' and length(labelname)=octet_length(labelname) )) limit 1 ; +/ +delete from HtmlLabelInfo where indexid = 548025 and languageid=9 and ( labelname is null or labelname = '' ) ; +/ +insert into HtmlLabelInfo(indexid,labelname,languageid) select * from (select 548025 as indexid ,'Ӕ' as content,9 as languageid from HtmlLabelInfo) t where not exists (select indexid,languageid from HtmlLabelInfo where indexid = 548025 and languageid=9 and ( labelname is not null and labelname <> '' )) limit 1 ; +/ \ No newline at end of file diff --git a/resource/sqlupgrade/PG/sql202409130302.sql b/resource/sqlupgrade/PG/sql202409130302.sql new file mode 100644 index 000000000..70a52cf80 --- /dev/null +++ b/resource/sqlupgrade/PG/sql202409130302.sql @@ -0,0 +1,10 @@ +Delete from LeftMenuInfo where id=100219 +; +Delete from LeftMenuConfig where infoid=100219 +; +select LMConfig_U_ByInfoInsert (2,100126,0) +; +select LMInfo_Insert (100219,548025,'','',2,100126,7,2) +; +update LeftMenuInfo set mobxrouteurl = '',iconClassName = '',fullrouteurl='/spa/hrmSalary/static/index.html#/main/hrmSalary/variableSalary' where id = 100219 +; \ No newline at end of file diff --git a/resource/sqlupgrade/SQLServer/sql202409130201.sql b/resource/sqlupgrade/SQLServer/sql202409130201.sql new file mode 100644 index 000000000..a60fae14e --- /dev/null +++ b/resource/sqlupgrade/SQLServer/sql202409130201.sql @@ -0,0 +1,16 @@ +delete from HtmlLabelIndex where id = 548025 and ( indexdesc is null or indexdesc = '' ) +GO +insert into HtmlLabelIndex(id,indexdesc) select top 1 548025,'' from HtmlLabelIndex where not exists (select id from HtmlLabelIndex where id = 548025 and ( indexdesc is not null and indexdesc <> '' )) +GO +delete from HtmlLabelInfo where indexid = 548025 and languageid=7 and ( labelname is null or labelname = '' ) +GO +insert into HtmlLabelInfo(indexid,labelname,languageid) select * from (select top 1 548025 as indexid ,'' as content,7 as languageid from HtmlLabelInfo) t where not exists (select indexid,languageid from HtmlLabelInfo where indexid = 548025 and languageid=7 and ( labelname is not null and labelname <> '' )) +GO +delete from HtmlLabelInfo where indexid = 548025 and languageid=8 and ( labelname is null or labelname = '' or labelname like '%[߹-]%' ) +GO +insert into HtmlLabelInfo(indexid,labelname,languageid) select * from (select top 1 548025 as indexid ,'Floating Data' as content,8 as languageid from HtmlLabelInfo) t where not exists (select indexid,languageid from HtmlLabelInfo where indexid = 548025 and languageid=8 and ( labelname is not null and labelname <> '' and labelname not like '%[߹-]%' )) +GO +delete from HtmlLabelInfo where indexid = 548025 and languageid=9 and ( labelname is null or labelname = '' ) +GO +insert into HtmlLabelInfo(indexid,labelname,languageid) select * from (select top 1 548025 as indexid ,'Ӕ' as content,9 as languageid from HtmlLabelInfo) t where not exists (select indexid,languageid from HtmlLabelInfo where indexid = 548025 and languageid=9 and ( labelname is not null and labelname <> '' )) +GO \ No newline at end of file diff --git a/resource/sqlupgrade/SQLServer/sql202409130302.sql b/resource/sqlupgrade/SQLServer/sql202409130302.sql new file mode 100644 index 000000000..81608c0b6 --- /dev/null +++ b/resource/sqlupgrade/SQLServer/sql202409130302.sql @@ -0,0 +1,10 @@ +Delete from LeftMenuInfo where id=100219 +GO +Delete from LeftMenuConfig where infoid=100219 +GO +EXECUTE LMConfig_U_ByInfoInsert 2,100126,0 +GO +EXECUTE LMInfo_Insert 100219,548025,'','',2,100126,7,2 +GO +update LeftMenuInfo set mobxrouteurl = '',iconClassName = '',fullrouteurl='/spa/hrmSalary/static/index.html#/main/hrmSalary/variableSalary' where id = 100219 +GO \ No newline at end of file diff --git a/resource/sqlupgrade/ST/sql202409130201.sql b/resource/sqlupgrade/ST/sql202409130201.sql new file mode 100644 index 000000000..ee19534ed --- /dev/null +++ b/resource/sqlupgrade/ST/sql202409130201.sql @@ -0,0 +1,24 @@ +delete from HtmlLabelIndex where id = 548025 and ( trim(indexdesc) is null ) ; +/ + +insert into HtmlLabelIndex(id,indexdesc) select 548025,'' from HtmlLabelIndex where not exists (select id from HtmlLabelIndex where id = 548025 and ( trim(indexdesc) is not null )) and rownum = 1 ; +/ + +delete from HtmlLabelInfo where indexid = 548025 and languageid=7 and ( trim(labelname) is null ) ; +/ + +insert into HtmlLabelInfo(indexid,labelname,languageid) select * from (select 548025 as indexid ,'' as content,7 as languageid from HtmlLabelInfo) t where not exists (select indexid,languageid from HtmlLabelInfo where indexid = 548025 and languageid=7 and ( trim(labelname) is not null )) and rownum = 1 ; +/ + +delete from HtmlLabelInfo where indexid = 548025 and languageid=8 and ( trim(labelname) is null or length(labelname)!=lengthb(labelname) ) ; +/ + +insert into HtmlLabelInfo(indexid,labelname,languageid) select * from (select 548025 as indexid ,'Floating Data' as content,8 as languageid from HtmlLabelInfo) t where not exists (select indexid,languageid from HtmlLabelInfo where indexid = 548025 and languageid=8 and ( trim(labelname) is not null and length(labelname)=lengthb(labelname) )) and rownum = 1 ; +/ + +delete from HtmlLabelInfo where indexid = 548025 and languageid=9 and ( trim(labelname) is null ) ; +/ + +insert into HtmlLabelInfo(indexid,labelname,languageid) select * from (select 548025 as indexid ,'Ӕ' as content,9 as languageid from HtmlLabelInfo) t where not exists (select indexid,languageid from HtmlLabelInfo where indexid = 548025 and languageid=9 and ( trim(labelname) is not null )) and rownum = 1 ; +/ + diff --git a/resource/sqlupgrade/ST/sql202409130302.sql b/resource/sqlupgrade/ST/sql202409130302.sql new file mode 100644 index 000000000..f9f4f825d --- /dev/null +++ b/resource/sqlupgrade/ST/sql202409130302.sql @@ -0,0 +1,15 @@ +Delete from LeftMenuInfo where id=100219; +/ + +Delete from LeftMenuConfig where infoid=100219; +/ + +call LMConfig_U_ByInfoInsert (2,100126,0); +/ + +call LMInfo_Insert (100219,548025,'','',2,100126,7,2); +/ + +update LeftMenuInfo set mobxrouteurl = '',iconClassName = '',fullrouteurl='/spa/hrmSalary/static/index.html#/main/hrmSalary/variableSalary' where id = 100219; +/ + From 6f10ac4ab236f7d13182ff7aa65a783afbafcfb7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Tue, 24 Sep 2024 19:04:57 +0800 Subject: [PATCH 042/218] =?UTF-8?q?=E5=8F=96=E6=B6=88=E9=9D=9E=E7=B3=BB?= =?UTF-8?q?=E7=BB=9F=E4=BA=BA=E5=91=98=E8=8F=9C=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resource/sqlupgrade/DM/sql202303130202.sql | 14 -------------- resource/sqlupgrade/GS/sql202303130202.sql | 14 -------------- resource/sqlupgrade/JC/sql202303130202.sql | 14 -------------- resource/sqlupgrade/Mysql/sql202303130202.sql | 10 ---------- resource/sqlupgrade/Oracle/sql202303130202.sql | 10 ---------- resource/sqlupgrade/PG/sql202303130202.sql | 10 ---------- resource/sqlupgrade/SQLServer/sql202303130202.sql | 10 ---------- resource/sqlupgrade/ST/sql202303130202.sql | 14 -------------- 8 files changed, 96 deletions(-) delete mode 100644 resource/sqlupgrade/DM/sql202303130202.sql delete mode 100644 resource/sqlupgrade/GS/sql202303130202.sql delete mode 100644 resource/sqlupgrade/JC/sql202303130202.sql delete mode 100644 resource/sqlupgrade/Mysql/sql202303130202.sql delete mode 100644 resource/sqlupgrade/Oracle/sql202303130202.sql delete mode 100644 resource/sqlupgrade/PG/sql202303130202.sql delete mode 100644 resource/sqlupgrade/SQLServer/sql202303130202.sql delete mode 100644 resource/sqlupgrade/ST/sql202303130202.sql diff --git a/resource/sqlupgrade/DM/sql202303130202.sql b/resource/sqlupgrade/DM/sql202303130202.sql deleted file mode 100644 index 9038f9cd1..000000000 --- a/resource/sqlupgrade/DM/sql202303130202.sql +++ /dev/null @@ -1,14 +0,0 @@ -Delete from LeftMenuInfo where id=100186; -/ - -Delete from LeftMenuConfig where infoid=100186; -/ - -call LMConfig_U_ByInfoInsert (2,100118,9); -/ - -call LMInfo_Insert (100186,541290,'','',2,100118,9,18); -/ - -update LeftMenuInfo set mobxrouteurl = '',iconClassName = '',fullrouteurl='/spa/hrmSalary/static/index.html#/main/hrmSalary/externalPersonManage' where id = 100186; -/ \ No newline at end of file diff --git a/resource/sqlupgrade/GS/sql202303130202.sql b/resource/sqlupgrade/GS/sql202303130202.sql deleted file mode 100644 index 9038f9cd1..000000000 --- a/resource/sqlupgrade/GS/sql202303130202.sql +++ /dev/null @@ -1,14 +0,0 @@ -Delete from LeftMenuInfo where id=100186; -/ - -Delete from LeftMenuConfig where infoid=100186; -/ - -call LMConfig_U_ByInfoInsert (2,100118,9); -/ - -call LMInfo_Insert (100186,541290,'','',2,100118,9,18); -/ - -update LeftMenuInfo set mobxrouteurl = '',iconClassName = '',fullrouteurl='/spa/hrmSalary/static/index.html#/main/hrmSalary/externalPersonManage' where id = 100186; -/ \ No newline at end of file diff --git a/resource/sqlupgrade/JC/sql202303130202.sql b/resource/sqlupgrade/JC/sql202303130202.sql deleted file mode 100644 index 9038f9cd1..000000000 --- a/resource/sqlupgrade/JC/sql202303130202.sql +++ /dev/null @@ -1,14 +0,0 @@ -Delete from LeftMenuInfo where id=100186; -/ - -Delete from LeftMenuConfig where infoid=100186; -/ - -call LMConfig_U_ByInfoInsert (2,100118,9); -/ - -call LMInfo_Insert (100186,541290,'','',2,100118,9,18); -/ - -update LeftMenuInfo set mobxrouteurl = '',iconClassName = '',fullrouteurl='/spa/hrmSalary/static/index.html#/main/hrmSalary/externalPersonManage' where id = 100186; -/ \ No newline at end of file diff --git a/resource/sqlupgrade/Mysql/sql202303130202.sql b/resource/sqlupgrade/Mysql/sql202303130202.sql deleted file mode 100644 index 81f96bbd2..000000000 --- a/resource/sqlupgrade/Mysql/sql202303130202.sql +++ /dev/null @@ -1,10 +0,0 @@ -Delete from LeftMenuInfo where id=100186 -; -Delete from LeftMenuConfig where infoid=100186 -; -call LMConfig_U_ByInfoInsert (2,100118,9) -; -call LMInfo_Insert (100186,541290,'','',2,100118,9,18) -; -update LeftMenuInfo set mobxrouteurl = '',iconClassName = '',fullrouteurl='/spa/hrmSalary/static/index.html#/main/hrmSalary/externalPersonManage' where id = 100186 -; \ No newline at end of file diff --git a/resource/sqlupgrade/Oracle/sql202303130202.sql b/resource/sqlupgrade/Oracle/sql202303130202.sql deleted file mode 100644 index d6b3c8be5..000000000 --- a/resource/sqlupgrade/Oracle/sql202303130202.sql +++ /dev/null @@ -1,10 +0,0 @@ -Delete from LeftMenuInfo where id=100186 -/ -Delete from LeftMenuConfig where infoid=100186 -/ -call LMConfig_U_ByInfoInsert (2,100118,9) -/ -call LMInfo_Insert (100186,541290,'','',2,100118,9,18) -/ -update LeftMenuInfo set mobxrouteurl = '',iconClassName = '',fullrouteurl='/spa/hrmSalary/static/index.html#/main/hrmSalary/externalPersonManage' where id = 100186 -/ \ No newline at end of file diff --git a/resource/sqlupgrade/PG/sql202303130202.sql b/resource/sqlupgrade/PG/sql202303130202.sql deleted file mode 100644 index c6ed8b220..000000000 --- a/resource/sqlupgrade/PG/sql202303130202.sql +++ /dev/null @@ -1,10 +0,0 @@ -Delete from LeftMenuInfo where id=100186; -/ -Delete from LeftMenuConfig where infoid=100186; -/ -select LMConfig_U_ByInfoInsert (2,100118,9); -/ -select LMInfo_Insert (100186,541290,'','',2,100118,9,18); -/ -update LeftMenuInfo set mobxrouteurl = '',iconClassName = '',fullrouteurl='/spa/hrmSalary/static/index.html#/main/hrmSalary/externalPersonManage' where id = 100186; -/ \ No newline at end of file diff --git a/resource/sqlupgrade/SQLServer/sql202303130202.sql b/resource/sqlupgrade/SQLServer/sql202303130202.sql deleted file mode 100644 index 9b7bbe305..000000000 --- a/resource/sqlupgrade/SQLServer/sql202303130202.sql +++ /dev/null @@ -1,10 +0,0 @@ -Delete from LeftMenuInfo where id=100186 -GO -Delete from LeftMenuConfig where infoid=100186 -GO -EXECUTE LMConfig_U_ByInfoInsert 2,100118,9 -GO -EXECUTE LMInfo_Insert 100186,541290,'','',2,100118,9,18 -GO -update LeftMenuInfo set mobxrouteurl = '',iconClassName = '',fullrouteurl='/spa/hrmSalary/static/index.html#/main/hrmSalary/externalPersonManage' where id = 100186 -GO \ No newline at end of file diff --git a/resource/sqlupgrade/ST/sql202303130202.sql b/resource/sqlupgrade/ST/sql202303130202.sql deleted file mode 100644 index 9038f9cd1..000000000 --- a/resource/sqlupgrade/ST/sql202303130202.sql +++ /dev/null @@ -1,14 +0,0 @@ -Delete from LeftMenuInfo where id=100186; -/ - -Delete from LeftMenuConfig where infoid=100186; -/ - -call LMConfig_U_ByInfoInsert (2,100118,9); -/ - -call LMInfo_Insert (100186,541290,'','',2,100118,9,18); -/ - -update LeftMenuInfo set mobxrouteurl = '',iconClassName = '',fullrouteurl='/spa/hrmSalary/static/index.html#/main/hrmSalary/externalPersonManage' where id = 100186; -/ \ No newline at end of file From ff200e25861e1f19c3dc51e2504e4c220eb8d741 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Wed, 25 Sep 2024 11:45:36 +0800 Subject: [PATCH 043/218] =?UTF-8?q?=E6=A0=B8=E7=AE=97=E7=A1=AE=E8=AE=A4?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E7=BB=84=E7=BB=87=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salary/entity/salaryacct/bo/SalaryAcctEmployeeBO.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctEmployeeBO.java b/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctEmployeeBO.java index 26e2b2670..c0c2dfa53 100644 --- a/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctEmployeeBO.java +++ b/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctEmployeeBO.java @@ -63,9 +63,9 @@ public class SalaryAcctEmployeeBO { .employeeName(simpleEmployee.getUsername()) .taxAgentId(e.getTaxAgentId()) .taxAgentName(taxAgentNameMap.getOrDefault(e.getTaxAgentId(), StringUtils.EMPTY)) - .departmentId(simpleEmployee.getDepartmentId()) - .departmentName(simpleEmployee.getDepartmentName()) - .status(UserStatusEnum.getDefaultLabelByValue(NumberUtils.toInt(simpleEmployee.getStatus()))) + .departmentId(e.getDepartmentId()) + .departmentName(e.getDepartmentName()) + .status(UserStatusEnum.getDefaultLabelByValue(NumberUtils.toInt(e.getStatus()))) .mobile(simpleEmployee.getMobile()) .jobNum(simpleEmployee.getWorkcode()) .hireDate(simpleEmployee.getCompanystartdate()) From 9f7fe00303bf3335acc7b1b25aa6bbbe8715e443 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Wed, 25 Sep 2024 13:38:45 +0800 Subject: [PATCH 044/218] =?UTF-8?q?=E7=A9=BF=E9=80=8F=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=E5=BF=AB=E7=85=A7=E7=BB=84=E7=BB=87=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../report/service/impl/SalaryStatisticsReportServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/com/engine/salary/report/service/impl/SalaryStatisticsReportServiceImpl.java b/src/com/engine/salary/report/service/impl/SalaryStatisticsReportServiceImpl.java index 962e3b135..42a65d485 100644 --- a/src/com/engine/salary/report/service/impl/SalaryStatisticsReportServiceImpl.java +++ b/src/com/engine/salary/report/service/impl/SalaryStatisticsReportServiceImpl.java @@ -616,7 +616,7 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary DataCollectionEmployee emp = employeeMap.get(se.getEmployeeId()); resultMap.put("id", se.getId().toString()); resultMap.put("userName", emp == null ? "" : emp.getUsername()); - resultMap.put("departmentName", emp == null ? "" : emp.getDepartmentName()); + resultMap.put("departmentName", se.getDepartmentName()); resultMap.put("salaryMonth", SalaryDateUtil.getFormatYearMonth(se.getSalaryMonth())); resultMap.put("taxAgent", taxAgentMap.get(se.getTaxAgentId())); resultMap.put("salarySob", SalarySobMap.get(se.getSalarySobId())); From b732430562e1bb813f498121f14742c215f954ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Wed, 25 Sep 2024 15:40:36 +0800 Subject: [PATCH 045/218] =?UTF-8?q?=E6=94=AF=E6=8C=81=E6=A0=B9=E6=8D=AE?= =?UTF-8?q?=E5=B7=A5=E5=8F=B7=E6=8E=92=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/engine/salary/sys/enums/OrderRuleEnum.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/com/engine/salary/sys/enums/OrderRuleEnum.java b/src/com/engine/salary/sys/enums/OrderRuleEnum.java index 560cc51a8..2d60f13bf 100644 --- a/src/com/engine/salary/sys/enums/OrderRuleEnum.java +++ b/src/com/engine/salary/sys/enums/OrderRuleEnum.java @@ -18,7 +18,8 @@ public enum OrderRuleEnum implements BaseEnum { LASTNAME("e.lastName", "人员名称", 1), DEPTNAME("d.departmentname", "部门名称", 1), SUBCOMNAME("c.subcompanyname", "分部名称", 1), - SHOWORDEROFDEPTTREE("d.showOrderOfTree", "组织", 1); + SHOWORDEROFDEPTTREE("d.showOrderOfTree", "组织", 1), + WORKCODE("e.workcode", "工号", 1); private String value; From 7d0ebd1cdca90a718200dd88cc8d88ff194d95d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Thu, 26 Sep 2024 17:00:59 +0800 Subject: [PATCH 046/218] =?UTF-8?q?=E7=B2=BE=E7=AE=80=E7=89=88=E5=B8=B8?= =?UTF-8?q?=E7=94=A8=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resource/wiki/常用查询.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/resource/wiki/常用查询.md b/resource/wiki/常用查询.md index 13ba2242f..71f4f51a6 100644 --- a/resource/wiki/常用查询.md +++ b/resource/wiki/常用查询.md @@ -10,6 +10,14 @@ left join hrsa_tax_agent agent on agent.id=sob.tax_agent_id and agent.delete_typ left join hrmresource e on e.id= result.employee_id +select e.lastname, record.salary_month as 薪资月, item.name as 薪资项 ,result.result_value as 值 +from hrsa_salary_acct_record record +left join hrsa_salary_acct_result result on record.id = result.salary_acct_record_id and result.delete_type = 0 and record.delete_type = 0 +left join hrsa_salary_item item on result.salary_item_id = item.id and item.delete_type = 0 +left join hrmresource e on e.id= result.employee_id +where item.name = '工资薪金合计' + + # 获取档案信息 select i.item_value from hrsa_salary_archive_item i From ecd99537faa2214f94a43935911ca937361b5d81 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Fri, 27 Sep 2024 11:04:44 +0800 Subject: [PATCH 047/218] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=B5=AE=E5=8A=A8?= =?UTF-8?q?=E6=95=B0=E6=8D=AEnull?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/VariableArchiveServiceImpl.java | 33 ++++++++++--------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/src/com/engine/salary/service/impl/VariableArchiveServiceImpl.java b/src/com/engine/salary/service/impl/VariableArchiveServiceImpl.java index b008273c6..af4c29ef5 100644 --- a/src/com/engine/salary/service/impl/VariableArchiveServiceImpl.java +++ b/src/com/engine/salary/service/impl/VariableArchiveServiceImpl.java @@ -1,5 +1,6 @@ package com.engine.salary.service.impl; +import cn.hutool.core.collection.CollectionUtil; import com.cloudstore.eccom.pc.table.WeaTableColumn; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; @@ -220,7 +221,7 @@ public class VariableArchiveServiceImpl extends Service implements VariableArchi .employeeId(saveParam.getEmployeeId()) .taxAgentId(saveParam.getTaxAgentIds()) .salaryMonth(saveParam.getSalaryMonthDate()) - .creator(Long.valueOf(user.getUID())) + .creator((long) user.getUID()) .createTime(now) .updateTime(now) .deleteType(NumberUtils.INTEGER_ZERO) @@ -230,20 +231,22 @@ public class VariableArchiveServiceImpl extends Service implements VariableArchi // 保存浮动薪资档案详细信息 List variableArchiveItemList = new ArrayList<>(); - saveParam.getItemValueList().forEach(e -> { - variableArchiveItemList.add(VariableArchiveItemPO.builder() - .id(IdGenerator.generate()) - .employeeId(saveParam.getEmployeeId()) - .variableArchiveId(variableArchivePO.getId()) - .variableItemId(e.getVariableItemId()) - .itemValue(e.getItemValue()) - .creator(Long.valueOf(user.getUID())) - .createTime(now) - .updateTime(now) - .deleteType(NumberUtils.INTEGER_ZERO) - .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) - .build()); - }); + if(CollectionUtil.isNotEmpty(saveParam.getItemValueList())){ + saveParam.getItemValueList().forEach(e -> { + variableArchiveItemList.add(VariableArchiveItemPO.builder() + .id(IdGenerator.generate()) + .employeeId(saveParam.getEmployeeId()) + .variableArchiveId(variableArchivePO.getId()) + .variableItemId(e.getVariableItemId()) + .itemValue(e.getItemValue()) + .creator((long) user.getUID()) + .createTime(now) + .updateTime(now) + .deleteType(NumberUtils.INTEGER_ZERO) + .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) + .build()); + }); + } if (CollectionUtils.isNotEmpty(variableArchiveItemList)) { getVariableArchiveItemService(user).batchInsert(variableArchiveItemList); From 0852094cb17066b2d149bf736f08c68e252328d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Fri, 27 Sep 2024 11:13:00 +0800 Subject: [PATCH 048/218] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=B5=AE=E5=8A=A8?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E6=89=A3=E7=BC=B4=E4=B9=89=E5=8A=A1=E4=BA=BA?= =?UTF-8?q?id=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entity/datacollection/dto/VariableArchiveListDTO.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/com/engine/salary/entity/datacollection/dto/VariableArchiveListDTO.java b/src/com/engine/salary/entity/datacollection/dto/VariableArchiveListDTO.java index de5c0fd22..6d5905390 100644 --- a/src/com/engine/salary/entity/datacollection/dto/VariableArchiveListDTO.java +++ b/src/com/engine/salary/entity/datacollection/dto/VariableArchiveListDTO.java @@ -44,7 +44,7 @@ public class VariableArchiveListDTO { /** * 个税扣缴义务人id */ - private String taxAgentId; + private Long taxAgentId; /** * 姓名 From 4db0fdc6997319c3572915eaed29945a9957c97b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Fri, 27 Sep 2024 17:18:07 +0800 Subject: [PATCH 049/218] =?UTF-8?q?SQL=20=E4=BD=BF=E7=94=A8mybatis?= =?UTF-8?q?=E6=89=A7=E8=A1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salary/mapper/InsuranceExportMapper.java | 6 ------ src/com/engine/salary/mapper/SQLMapper.java | 18 ++++++++++++++++++ src/com/engine/salary/mapper/SQLMapper.xml | 7 +++++++ .../service/impl/FormulaRunServiceImpl.java | 11 +++++++++++ 4 files changed, 36 insertions(+), 6 deletions(-) create mode 100644 src/com/engine/salary/mapper/SQLMapper.java create mode 100644 src/com/engine/salary/mapper/SQLMapper.xml diff --git a/src/com/engine/salary/mapper/InsuranceExportMapper.java b/src/com/engine/salary/mapper/InsuranceExportMapper.java index 2464c49de..b4ef25f66 100644 --- a/src/com/engine/salary/mapper/InsuranceExportMapper.java +++ b/src/com/engine/salary/mapper/InsuranceExportMapper.java @@ -8,12 +8,6 @@ import org.apache.ibatis.annotations.Param; import java.util.List; -/** - * @Author weaver_cl - * - * @Date 2022/4/18 - * @Version V1.0 - **/ public interface InsuranceExportMapper { List exportExcelAccount(@Param("param") InsuranceComparisonResultQueryParam param); diff --git a/src/com/engine/salary/mapper/SQLMapper.java b/src/com/engine/salary/mapper/SQLMapper.java new file mode 100644 index 000000000..4d998fa88 --- /dev/null +++ b/src/com/engine/salary/mapper/SQLMapper.java @@ -0,0 +1,18 @@ +package com.engine.salary.mapper; + +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * SQLMapper + *

Copyright: Copyright (c) 2024

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +public interface SQLMapper { + List runSQL(@Param("sql") String sql); +} diff --git a/src/com/engine/salary/mapper/SQLMapper.xml b/src/com/engine/salary/mapper/SQLMapper.xml new file mode 100644 index 000000000..bba76972c --- /dev/null +++ b/src/com/engine/salary/mapper/SQLMapper.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/src/com/engine/salary/service/impl/FormulaRunServiceImpl.java b/src/com/engine/salary/service/impl/FormulaRunServiceImpl.java index 2b76af128..07c5ae633 100644 --- a/src/com/engine/salary/service/impl/FormulaRunServiceImpl.java +++ b/src/com/engine/salary/service/impl/FormulaRunServiceImpl.java @@ -9,9 +9,11 @@ import com.engine.salary.enums.salaryformula.ReferenceTypeEnum; import com.engine.salary.formlua.core.QlExpress; import com.engine.salary.formlua.entity.parameter.DataType; import com.engine.salary.formlua.entity.standard.ExcelResult; +import com.engine.salary.mapper.SQLMapper; import com.engine.salary.service.FormulaRunService; import com.engine.salary.sys.enums.OpenEnum; import com.engine.salary.util.JsonUtil; +import com.engine.salary.util.db.MapperProxyFactory; import com.ql.util.express.DefaultContext; import com.ql.util.express.ExpressRunner; import lombok.extern.slf4j.Slf4j; @@ -41,6 +43,9 @@ public class FormulaRunServiceImpl extends Service implements FormulaRunService QlExpress express = new QlExpress(); + private SQLMapper getSQLMapper(){ + return MapperProxyFactory.getProxy(SQLMapper.class); + } @Override public ExcelResult run(ExpressFormula expressFormula, List formulaVars, DataCollectionEmployee simpleEmployee) { @@ -123,6 +128,12 @@ public class FormulaRunServiceImpl extends Service implements FormulaRunService } } } else { + +// List list = getSQLMapper().runSQL(sql); +// if(CollectionUtil.isNotEmpty(list)){ +// result = Util.null2String(list.get(0).get(sqlReturnKey)); +// } + RecordSet rs = new RecordSet(); if (rs.execute(sql)) { if (rs.next()) { From 93d2980ad8d50587d6a54c8e8c3dd471f9b09f41 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Sun, 29 Sep 2024 10:37:38 +0800 Subject: [PATCH 050/218] =?UTF-8?q?=E5=88=B7=E6=96=B0=E6=A0=B8=E7=AE=97?= =?UTF-8?q?=E4=BA=BA=E5=91=98=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/SalaryAcctEmployeeServiceImpl.java | 76 +++++++++++-------- .../salary/web/SalaryAcctController.java | 6 +- .../wrapper/SalaryAcctEmployeeWrapper.java | 4 +- 3 files changed, 51 insertions(+), 35 deletions(-) diff --git a/src/com/engine/salary/service/impl/SalaryAcctEmployeeServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctEmployeeServiceImpl.java index 7ca1a1f4d..a36f2dd57 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctEmployeeServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctEmployeeServiceImpl.java @@ -5,9 +5,9 @@ import cn.hutool.core.date.DateUtil; import com.api.formmode.mybatis.util.SqlProxyHandle; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; +import com.engine.hrmelog.entity.dto.LoggerContext; import com.engine.salary.config.SalaryElogConfig; import com.engine.salary.constant.SalaryDefaultTenantConstant; -import com.engine.hrmelog.entity.dto.LoggerContext; import com.engine.salary.entity.datacollection.DataCollectionEmployee; import com.engine.salary.entity.salaryacct.bo.SalaryAcctEmployeeBO; import com.engine.salary.entity.salaryacct.dto.SalaryAcctEmployeeCountDTO; @@ -444,6 +444,11 @@ public class SalaryAcctEmployeeServiceImpl extends Service implements SalaryAcct @Override public void deleteByIds(Collection ids) { + + if (CollectionUtils.isEmpty(ids)) { + return; + } + // 删除薪资核算人员 getSalaryAcctEmployeeMapper().deleteByIds(ids); // 删除薪资核算人员对应的薪资核算结果 @@ -547,36 +552,47 @@ public class SalaryAcctEmployeeServiceImpl extends Service implements SalaryAcct @Override public void refresh(Long salaryAcctRecordId) { - // 查询薪资核算人员 - List salaryAcctEmployeePOS = listBySalaryAcctRecordId(salaryAcctRecordId); - if (CollectionUtils.isEmpty(salaryAcctEmployeePOS)) { - return; - } - List employeeIds = SalaryEntityUtil.properties(salaryAcctEmployeePOS, SalaryAcctEmployeePO::getEmployeeId, Collectors.toList()); // 查询薪资核算记录 SalaryAcctRecordPO salaryAcctRecordPO = getSalaryAcctRecordService(user).getById(salaryAcctRecordId); if (Objects.isNull(salaryAcctRecordPO)) { throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98747, "薪资核算记录不存在或已被删除")); } + + // 根据薪资账套查询人员 + List salaryEmployees = getSalaryEmployeeService(user).listBySalarySobId(salaryAcctRecordPO.getSalarySobId()); + if (CollectionUtils.isEmpty(salaryEmployees)) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98747, "未查询到账套下关联人员")); + } + + // 根据薪资账套查询薪资周期 + SalarySobCycleDTO salarySobCycleDTO = getSalarySobService(user).getSalarySobCycle(salaryAcctRecordPO.getSalarySobId(), SalaryDateUtil.localDate2YearMonth(salaryAcctRecordPO.getSalaryMonth())); + //查询账套对应的扣缴义务人 SalarySobPO salarySobPO = getSalarySobService(user).getById(salaryAcctRecordPO.getSalarySobId()); - //过滤掉不属于当前账套扣缴义务人的人员 Long taxAgentId = salarySobPO.getTaxAgentId(); - // 查询薪资核算记录所用的帐套的薪资周期 - SalarySobCycleDTO salarySobCycleDTO = getSalarySobService(user).getSalarySobCycle(salaryAcctRecordPO.getSalarySobId(), SalaryDateUtil.localDate2YearMonth(salaryAcctRecordPO.getSalaryMonth())); // 查询薪资档案,获取人员的个税扣缴义务人 + List employeeIds = SalaryEntityUtil.properties(salaryEmployees, DataCollectionEmployee::getEmployeeId, Collectors.toList()); List salaryArchiveDataDTOS = getSalaryArchiveService(user).getSalaryArchiveTaxAgentData(salarySobCycleDTO.getSalaryCycle(), employeeIds, taxAgentId); - List employees = getSalaryEmployeeService(user).getEmployeeByIdsAll(employeeIds); // 转换成薪资核算人员po - List newSalaryAcctEmployeePOS = SalaryAcctEmployeeBO.convert2Employee(employees, salaryAcctRecordPO, salaryArchiveDataDTOS, (long) user.getUID()); - newSalaryAcctEmployeePOS = newSalaryAcctEmployeePOS.stream().filter(po -> Objects.equals(taxAgentId, po.getTaxAgentId())).collect(Collectors.toList()); - // 删除以前的薪资核算人员 - getSalaryAcctEmployeeMapper().deleteBySalaryAcctRecordIds(Collections.singleton(salaryAcctRecordId)); - // 插入新的薪资核算人员 - if (CollectionUtils.isNotEmpty(newSalaryAcctEmployeePOS)) { - batchSave(newSalaryAcctEmployeePOS); - } + List newEmps = SalaryAcctEmployeeBO.convert2Employee(salaryEmployees, salaryAcctRecordPO, salaryArchiveDataDTOS, (long) user.getUID()); + //过滤掉不属于当前账套扣缴义务人的人员 + newEmps = newEmps.stream().filter(po -> Objects.equals(taxAgentId, po.getTaxAgentId())).collect(Collectors.toList()); + Map newEmpMap = SalaryEntityUtil.convert2Map(newEmps, e -> e.getTaxAgentId() + "_" + e.getEmployeeId()); + + + // 查询薪资核算人员 + List oldEmps = listBySalaryAcctRecordId(salaryAcctRecordId); + Map oldEmpMap = SalaryEntityUtil.convert2Map(oldEmps, e -> e.getTaxAgentId() + "_" + e.getEmployeeId()); + + //新增 + List addEmps = newEmps.stream().filter(po -> !oldEmpMap.containsKey(po.getTaxAgentId() + "_" + po.getEmployeeId())).collect(Collectors.toList()); + + //删除 + List delIds = oldEmps.stream().filter(po -> !newEmpMap.containsKey(po.getTaxAgentId() + "_" + po.getEmployeeId())).map(SalaryAcctEmployeePO::getId).collect(Collectors.toList()); + + deleteByIds(delIds); + batchSave(addEmps); } @@ -712,20 +728,20 @@ public class SalaryAcctEmployeeServiceImpl extends Service implements SalaryAcct // } // list = list.stream().filter(po -> employeeIdsByGradeFilter.contains(po.getEmployeeId())).collect(Collectors.toList()); // } - // 岗位过滤 + // 岗位过滤 List position = param.getPosition(); if (CollectionUtils.isNotEmpty(position)) { - // Set employeeIdsByPostionFilter = new HashSet<>(); - // simpleEmployeeList.forEach(simpleEmployee -> { - // if (simpleEmployee.getPosition() != null && param.getPosition().contains(simpleEmployee.getPosition().getId())) { - // employeeIdsByPostionFilter.add(simpleEmployee.getEmployeeId()); - // } - // }); - // if (CollectionUtils.isEmpty(employeeIdsByPostionFilter)) { - // return Lists.newArrayList(); - // } + // Set employeeIdsByPostionFilter = new HashSet<>(); + // simpleEmployeeList.forEach(simpleEmployee -> { + // if (simpleEmployee.getPosition() != null && param.getPosition().contains(simpleEmployee.getPosition().getId())) { + // employeeIdsByPostionFilter.add(simpleEmployee.getEmployeeId()); + // } + // }); + // if (CollectionUtils.isEmpty(employeeIdsByPostionFilter)) { + // return Lists.newArrayList(); + // } employeeList = employeeList.stream().filter(emp -> position.contains(emp.getJobtitleId())).collect(Collectors.toList()); - } + } // 人事状态过滤 if (CollectionUtils.isNotEmpty(param.getStatus())) { Set employeeIdsByStatus = new HashSet<>(); diff --git a/src/com/engine/salary/web/SalaryAcctController.java b/src/com/engine/salary/web/SalaryAcctController.java index 571884aa5..49fba1129 100644 --- a/src/com/engine/salary/web/SalaryAcctController.java +++ b/src/com/engine/salary/web/SalaryAcctController.java @@ -247,13 +247,13 @@ public class SalaryAcctController { return new ResponseResult(user).run(getSalaryAcctEmployeeWrapper(user)::checkTaxAgent, param.getSalaryAcctRecordId()); } - //刷新薪资核算人员的个税扣缴义务人 + //刷新薪资核算人员 @POST - @Path("/acctemployee/refreshTaxAgent") + @Path("/acctemployee/refresh") @Produces(MediaType.APPLICATION_JSON) public String refreshTaxAgent(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryAcctEmpRefreshTaxAgentParam param) { User user = HrmUserVarify.getUser(request, response); - return new ResponseResult(user).run(getSalaryAcctEmployeeWrapper(user)::refreshTaxAgent, param.getSalaryAcctRecordId()); + return new ResponseResult(user).run(getSalaryAcctEmployeeWrapper(user)::refresh, param.getSalaryAcctRecordId()); } //从环比上月减少添加薪资核算人员 diff --git a/src/com/engine/salary/wrapper/SalaryAcctEmployeeWrapper.java b/src/com/engine/salary/wrapper/SalaryAcctEmployeeWrapper.java index 095935fd5..c0d207d45 100644 --- a/src/com/engine/salary/wrapper/SalaryAcctEmployeeWrapper.java +++ b/src/com/engine/salary/wrapper/SalaryAcctEmployeeWrapper.java @@ -184,11 +184,11 @@ public class SalaryAcctEmployeeWrapper extends Service { } /** - * 刷新个税扣缴义务人 + * 刷新核算人员 * * @param salaryAcctRecordId 薪资核算记录的id */ - public void refreshTaxAgent(Long salaryAcctRecordId) { + public void refresh(Long salaryAcctRecordId) { getSalaryAcctEmployeeService(user).refresh(salaryAcctRecordId); } From b4050e4ee850de70bcadbae3556671810023ff80 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Sun, 29 Sep 2024 16:58:41 +0800 Subject: [PATCH 051/218] =?UTF-8?q?=E6=8A=A5=E8=A1=A8=E5=BF=AB=E7=85=A7?= =?UTF-8?q?=E6=90=9C=E7=B4=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SalaryStatisticsReportServiceImpl.java | 184 +++++++++++------- .../SalaryStatisticsReportWrapper.java | 44 ++--- .../impl/SalaryAcctEmployeeServiceImpl.java | 109 ++++------- .../sys/constant/SalarySysConstant.java | 11 ++ 4 files changed, 187 insertions(+), 161 deletions(-) diff --git a/src/com/engine/salary/report/service/impl/SalaryStatisticsReportServiceImpl.java b/src/com/engine/salary/report/service/impl/SalaryStatisticsReportServiceImpl.java index 42a65d485..ab16db7cc 100644 --- a/src/com/engine/salary/report/service/impl/SalaryStatisticsReportServiceImpl.java +++ b/src/com/engine/salary/report/service/impl/SalaryStatisticsReportServiceImpl.java @@ -54,6 +54,8 @@ import weaver.wechat.util.Utils; import java.util.*; import java.util.stream.Collectors; +import static com.engine.salary.sys.constant.SalarySysConstant.REPORT_ORGANIZATIN_TYPE; + /** * 薪酬统计报表 *

Copyright: Copyright (c) 2022

@@ -71,6 +73,7 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary public static final String LAST_INFO = "lastInfoList"; public static final String SAME_INFO = "sameInfoList"; + private boolean isRealOrg = "1".equals(getSalaryCacheService(user).get(REPORT_ORGANIZATIN_TYPE)); private SalaryStatisticsReportMapper getSalaryStatisticsReportMapper() { return MapperProxyFactory.getProxy(SalaryStatisticsReportMapper.class); @@ -197,16 +200,16 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary this.getSalaryStatisticsReportMapper().updateIgnoreNull(poNew); // 记录日志 - LoggerContext loggerContext = new LoggerContext<>(); - loggerContext.setUser(user); - loggerContext.setTargetId(String.valueOf(poNew.getId())); - loggerContext.setTargetName(poNew.getReportName()); - loggerContext.setOperateType(OperateTypeEnum.UPDATE.getValue()); - loggerContext.setOperateTypeName(SalaryI18nUtil.getI18nLabel( 0, "更新报表")); - loggerContext.setOperatedesc(SalaryI18nUtil.getI18nLabel( 0, "更新报表")); - loggerContext.setOldValues(po); - loggerContext.setNewValues(poNew); - SalaryElogConfig.salaryStatReportLoggerTemplate.write(loggerContext); + LoggerContext loggerContext = new LoggerContext<>(); + loggerContext.setUser(user); + loggerContext.setTargetId(String.valueOf(poNew.getId())); + loggerContext.setTargetName(poNew.getReportName()); + loggerContext.setOperateType(OperateTypeEnum.UPDATE.getValue()); + loggerContext.setOperateTypeName(SalaryI18nUtil.getI18nLabel(0, "更新报表")); + loggerContext.setOperatedesc(SalaryI18nUtil.getI18nLabel(0, "更新报表")); + loggerContext.setOldValues(po); + loggerContext.setNewValues(poNew); + SalaryElogConfig.salaryStatReportLoggerTemplate.write(loggerContext); } else { List list = listByName(saveParam.getReportName()); if (CollectionUtils.isNotEmpty(list)) { @@ -217,15 +220,15 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary getSalaryStatisticsReportMapper().insertIgnoreNull(poNew); // 记录日志 - LoggerContext loggerContext = new LoggerContext<>(); - loggerContext.setUser(user); - loggerContext.setTargetId(String.valueOf(poNew.getId())); - loggerContext.setTargetName(poNew.getReportName()); - loggerContext.setOperateType(OperateTypeEnum.ADD.getValue()); - loggerContext.setOperateTypeName(SalaryI18nUtil.getI18nLabel( 0, "新增报表")); - loggerContext.setOperatedesc(SalaryI18nUtil.getI18nLabel( 0, "新增报表")); - loggerContext.setNewValues(poNew); - SalaryElogConfig.salaryStatReportLoggerTemplate.write(loggerContext); + LoggerContext loggerContext = new LoggerContext<>(); + loggerContext.setUser(user); + loggerContext.setTargetId(String.valueOf(poNew.getId())); + loggerContext.setTargetName(poNew.getReportName()); + loggerContext.setOperateType(OperateTypeEnum.ADD.getValue()); + loggerContext.setOperateTypeName(SalaryI18nUtil.getI18nLabel(0, "新增报表")); + loggerContext.setOperatedesc(SalaryI18nUtil.getI18nLabel(0, "新增报表")); + loggerContext.setNewValues(poNew); + SalaryElogConfig.salaryStatReportLoggerTemplate.write(loggerContext); } return StringUtils.EMPTY; } @@ -305,16 +308,16 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary getSalaryStatisticsItemService(user).saveOrUpdateBatch(salaryStatisticsItemList); //记录日志 - LoggerContext loggerContext = new LoggerContext<>(); - loggerContext.setUser(user); - loggerContext.setTargetId(String.valueOf(po.getId())); - loggerContext.setTargetName(po.getReportName()); - loggerContext.setOperateType(OperateTypeEnum.UPDATE.getValue()); - loggerContext.setOperateTypeName(SalaryI18nUtil.getI18nLabel( 0, "更新报表")); - loggerContext.setOperatedesc(SalaryI18nUtil.getI18nLabel(0, "更新报表")); - loggerContext.setOldValues(oldPO); - loggerContext.setNewValues(po); - SalaryElogConfig.salaryStatReportLoggerTemplate.write(loggerContext); + LoggerContext loggerContext = new LoggerContext<>(); + loggerContext.setUser(user); + loggerContext.setTargetId(String.valueOf(po.getId())); + loggerContext.setTargetName(po.getReportName()); + loggerContext.setOperateType(OperateTypeEnum.UPDATE.getValue()); + loggerContext.setOperateTypeName(SalaryI18nUtil.getI18nLabel(0, "更新报表")); + loggerContext.setOperatedesc(SalaryI18nUtil.getI18nLabel(0, "更新报表")); + loggerContext.setOldValues(oldPO); + loggerContext.setNewValues(po); + SalaryElogConfig.salaryStatReportLoggerTemplate.write(loggerContext); return StringUtils.EMPTY; } @@ -333,17 +336,17 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary getSalaryStatisticsReportMapper().deleteByIds(deleteIds); //删除薪资项 getSalaryStatisticsItemService(user).deleteByReportIds(deleteIds); - list.forEach(e -> { - // 记录日志 - LoggerContext loggerContext = new LoggerContext<>(); - loggerContext.setUser(user); - loggerContext.setTargetId(String.valueOf(e.getId())); - loggerContext.setTargetName(e.getReportName()); - loggerContext.setOperateType(OperateTypeEnum.DELETE.getValue()); - loggerContext.setOperateTypeName(SalaryI18nUtil.getI18nLabel( 0, "删除报表")); - loggerContext.setOperatedesc(SalaryI18nUtil.getI18nLabel( 0, "删除报表") + e.getReportName()); - SalaryElogConfig.salaryStatReportLoggerTemplate.write(loggerContext); - }); + list.forEach(e -> { + // 记录日志 + LoggerContext loggerContext = new LoggerContext<>(); + loggerContext.setUser(user); + loggerContext.setTargetId(String.valueOf(e.getId())); + loggerContext.setTargetName(e.getReportName()); + loggerContext.setOperateType(OperateTypeEnum.DELETE.getValue()); + loggerContext.setOperateTypeName(SalaryI18nUtil.getI18nLabel(0, "删除报表")); + loggerContext.setOperatedesc(SalaryI18nUtil.getI18nLabel(0, "删除报表") + e.getReportName()); + SalaryElogConfig.salaryStatReportLoggerTemplate.write(loggerContext); + }); } Map resultMap = new HashMap<>(2); @@ -396,8 +399,8 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary loggerContext.setTargetId(String.valueOf(po.getId())); loggerContext.setTargetName(po.getReportName()); loggerContext.setOperateType(OperateTypeEnum.ADD.getValue()); - loggerContext.setOperateTypeName(SalaryI18nUtil.getI18nLabel( 0, "新增报表")); - loggerContext.setOperatedesc(SalaryI18nUtil.getI18nLabel( 0, "新增报表")); + loggerContext.setOperateTypeName(SalaryI18nUtil.getI18nLabel(0, "新增报表")); + loggerContext.setOperatedesc(SalaryI18nUtil.getI18nLabel(0, "新增报表")); loggerContext.setNewValues(po); SalaryElogConfig.salaryStatReportLoggerTemplate.write(loggerContext); } @@ -479,7 +482,15 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary List salaryAcctEmployeeList = getSalaryAcctEmployeeService(user).listBySalaryStatisticsReportParam(queryParam); // 设置dimensionValue为维度值 - SalaryStatisticsReportDataDTO salaryStatisticsReportData = SalaryStatisticsReportDataDTO.builder().list(salaryAcctEmployeeList).lastList(Collections.emptyList()).sameList(Collections.emptyList()).salaryStatisticsItemList(salaryStatisticsItemPOS).employeeId((long) user.getUID()).tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY).dimensionValue(param.getDimensionValue()).build(); + SalaryStatisticsReportDataDTO salaryStatisticsReportData = SalaryStatisticsReportDataDTO.builder() + .list(salaryAcctEmployeeList) + .lastList(Collections.emptyList()) + .sameList(Collections.emptyList()) + .salaryStatisticsItemList(salaryStatisticsItemPOS) + .employeeId((long) user.getUID()) + .dimensionValue(param.getDimensionValue()) + .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) + .build(); Map> resultMap = new HashMap<>(); List salaryAcctEmployeeIds = salaryAcctEmployeeList.stream().map(SalaryAcctEmployeePO::getId).collect(Collectors.toList()); @@ -848,44 +859,78 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary Map lastEmpIdDepartIdMap = new HashMap<>(); Map sameEmpIdDepartIdMap = new HashMap<>(); Map departIdNameMap = new HashMap<>(); - simpleEmployeeList.forEach(employee -> { - if (employee.getDepartmentName() != null && employee.getDepartmentId() != null) { - departIdNameMap.put(employee.getDepartmentId(), employee.getDepartmentName()); - departIds.add(employee.getDepartmentId()); - empIdDepartIdMap.put(employee.getEmployeeId(), employee.getDepartmentId()); - } - }); - lastSimpleEmployeeList.forEach(employee -> { - if (employee.getDepartmentName() != null && employee.getDepartmentId() != null) { - lastEmpIdDepartIdMap.put(employee.getEmployeeId(), employee.getDepartmentId()); - } - }); - sameSimpleEmployeeList.forEach(employee -> { - if (employee.getDepartmentName() != null && employee.getDepartmentId() != null) { - sameEmpIdDepartIdMap.put(employee.getEmployeeId(), employee.getDepartmentId()); - } - }); + if (isRealOrg) { + simpleEmployeeList.forEach(employee -> { + if (employee.getDepartmentName() != null && employee.getDepartmentId() != null) { + departIdNameMap.put(employee.getDepartmentId(), employee.getDepartmentName()); + departIds.add(employee.getDepartmentId()); + empIdDepartIdMap.put(employee.getEmployeeId(), employee.getDepartmentId()); + } + }); + lastSimpleEmployeeList.forEach(employee -> { + if (employee.getDepartmentName() != null && employee.getDepartmentId() != null) { + lastEmpIdDepartIdMap.put(employee.getEmployeeId(), employee.getDepartmentId()); + } + }); + sameSimpleEmployeeList.forEach(employee -> { + if (employee.getDepartmentName() != null && employee.getDepartmentId() != null) { + sameEmpIdDepartIdMap.put(employee.getEmployeeId(), employee.getDepartmentId()); + } + }); + } else { + data.getList().forEach(employee -> { + if (employee.getDepartmentName() != null && employee.getDepartmentId() != null) { + departIdNameMap.put(employee.getDepartmentId(), employee.getDepartmentName()); + departIds.add(employee.getDepartmentId()); + empIdDepartIdMap.put(employee.getEmployeeId(), employee.getDepartmentId()); + } + }); + data.getLastList().forEach(employee -> { + if (employee.getDepartmentName() != null && employee.getDepartmentId() != null) { + lastEmpIdDepartIdMap.put(employee.getEmployeeId(), employee.getDepartmentId()); + } + }); + data.getSameList().forEach(employee -> { + if (employee.getDepartmentName() != null && employee.getDepartmentId() != null) { + sameEmpIdDepartIdMap.put(employee.getEmployeeId(), employee.getDepartmentId()); + } + }); + } String dimensionValue = data.getDimensionValue(); departIds.forEach(departId -> { if (dimensionValue == null) { - List departEmployeePOS = data.getList().stream().filter(po -> Objects.equals(empIdDepartIdMap.get(po.getEmployeeId()), departId)).collect(Collectors.toList()); - List lastDepartEmployeePOS = data.getLastList().stream().filter(po -> Objects.equals(lastEmpIdDepartIdMap.get(po.getEmployeeId()), departId)).collect(Collectors.toList()); - List sameDepartEmployeePOS = data.getSameList().stream().filter(po -> Objects.equals(sameEmpIdDepartIdMap.get(po.getEmployeeId()), departId)).collect(Collectors.toList()); + List departEmployeePOS = data.getList().stream().filter(po -> Objects.equals(po.getDepartmentId(), departId)).collect(Collectors.toList()); + List lastDepartEmployeePOS = data.getLastList().stream().filter(po -> Objects.equals(po.getDepartmentId(), departId)).collect(Collectors.toList()); + List sameDepartEmployeePOS = data.getSameList().stream().filter(po -> Objects.equals(po.getDepartmentId(), departId)).collect(Collectors.toList()); + if (isRealOrg) { + departEmployeePOS = data.getList().stream().filter(po -> Objects.equals(empIdDepartIdMap.get(po.getEmployeeId()), departId)).collect(Collectors.toList()); + lastDepartEmployeePOS = data.getLastList().stream().filter(po -> Objects.equals(lastEmpIdDepartIdMap.get(po.getEmployeeId()), departId)).collect(Collectors.toList()); + sameDepartEmployeePOS = data.getSameList().stream().filter(po -> Objects.equals(sameEmpIdDepartIdMap.get(po.getEmployeeId()), departId)).collect(Collectors.toList()); + } Map temp = new HashMap<>(); temp.put(DM, departIdNameMap.get(departId)); temp.putAll(SalaryStatisticsReportBO.calculateItem(departEmployeePOS, lastDepartEmployeePOS, sameDepartEmployeePOS, salaryAcctResultValueMap, data.getSalaryStatisticsItemList())); records.add(temp); } else if (StringUtils.equals(dimensionValue, departIdNameMap.get(departId))) { - List departEmployeePOS = data.getList().stream().filter(po -> Objects.equals(empIdDepartIdMap.get(po.getEmployeeId()), departId)).collect(Collectors.toList()); + List departEmployeePOS = data.getList().stream().filter(po -> Objects.equals(po.getDepartmentId(), departId)).collect(Collectors.toList()); + if (isRealOrg) { + data.getList().stream().filter(po -> Objects.equals(empIdDepartIdMap.get(po.getEmployeeId()), departId)).collect(Collectors.toList()); + } data.setListByDimensionValue(departEmployeePOS); } }); if (dimensionValue == null) { - List noGroupingList = data.getList().stream().filter(po -> empIdDepartIdMap.get(po.getEmployeeId()) == null).collect(Collectors.toList()); - List lastNoGroupingList = data.getLastList().stream().filter(po -> lastEmpIdDepartIdMap.get(po.getEmployeeId()) == null).collect(Collectors.toList()); - List sameNoGroupingList = data.getSameList().stream().filter(po -> lastEmpIdDepartIdMap.get(po.getEmployeeId()) == null).collect(Collectors.toList()); + List noGroupingList = data.getList().stream().filter(po -> po.getDepartmentId() == null).collect(Collectors.toList()); + List lastNoGroupingList = data.getLastList().stream().filter(po -> po.getDepartmentId() == null).collect(Collectors.toList()); + List sameNoGroupingList = data.getSameList().stream().filter(po -> po.getDepartmentId() == null).collect(Collectors.toList()); + if (isRealOrg) { + noGroupingList = data.getList().stream().filter(po -> empIdDepartIdMap.get(po.getEmployeeId()) == null).collect(Collectors.toList()); + lastNoGroupingList = data.getLastList().stream().filter(po -> lastEmpIdDepartIdMap.get(po.getEmployeeId()) == null).collect(Collectors.toList()); + sameNoGroupingList = data.getSameList().stream().filter(po -> lastEmpIdDepartIdMap.get(po.getEmployeeId()) == null).collect(Collectors.toList()); + + } if (CollectionUtils.isNotEmpty(noGroupingList)) { Map noGrouping = new HashMap<>(); noGrouping.put(DM, SalaryI18nUtil.getI18nLabel(153462, "无分组")); @@ -893,7 +938,10 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary records.add(noGrouping); } } else if (StringUtils.equals(dimensionValue, "无分组")) { - List noGroupingList = data.getList().stream().filter(po -> empIdDepartIdMap.get(po.getEmployeeId()) == null).collect(Collectors.toList()); + List noGroupingList = data.getList().stream().filter(po -> po.getDepartmentId() == null).collect(Collectors.toList()); + if(isRealOrg){ + noGroupingList = data.getList().stream().filter(po -> empIdDepartIdMap.get(po.getEmployeeId()) == null).collect(Collectors.toList()); + } data.setListByDimensionValue(noGroupingList); } diff --git a/src/com/engine/salary/report/wrapper/SalaryStatisticsReportWrapper.java b/src/com/engine/salary/report/wrapper/SalaryStatisticsReportWrapper.java index 22fb6261f..7556b7bf8 100644 --- a/src/com/engine/salary/report/wrapper/SalaryStatisticsReportWrapper.java +++ b/src/com/engine/salary/report/wrapper/SalaryStatisticsReportWrapper.java @@ -332,28 +332,28 @@ public class SalaryStatisticsReportWrapper extends Service { if (empDimensionOptional.isPresent()) { empDimensionId = empDimensionOptional.get(); } - if (StringUtils.isNotBlank(salaryReportIds) && salaryReportIds.contains(id + "")) { - //报表中缓存的条件 - salaryReportConditions = Utils.null2String(getSalaryCacheService(user).get(SalaryCacheKey.SALARY_REPORT_CONDITIONS + id)); - if (StringUtils.isNotBlank(salaryReportConditions) && salaryReportConditions.contains(paramMd5)) { - Map result = getSalaryCacheService(user).get(SalaryCacheKey.SALARY_REPORT_DATA + id + "_" + paramMd5); - if (param.getDimensionId().equals(empDimensionId)) { - // 人员维度需要分页 - Map finalResultMap = new HashMap<>(); - PageInfo> pageInfo = (PageInfo>) result.get("pageInfo"); - PageInfo> finalPageInfo = SalaryPageUtil.buildPage(param.getCurrent(), param.getPageSize()); - finalPageInfo.setTotal(pageInfo.getList().size()); - finalPageInfo.setList(SalaryPageUtil.subList(param.getCurrent(), param.getPageSize(), pageInfo.getList())); - finalResultMap.put("pageInfo", finalPageInfo); - finalResultMap.put("columns", result.get("columns")); - finalResultMap.put("countResult", result.get("countResult")); - finalResultMap.put("reportId", id); - return finalResultMap; - } - - return result; - } - } +// if (StringUtils.isNotBlank(salaryReportIds) && salaryReportIds.contains(id + "")) { +// //报表中缓存的条件 +// salaryReportConditions = Utils.null2String(getSalaryCacheService(user).get(SalaryCacheKey.SALARY_REPORT_CONDITIONS + id)); +// if (StringUtils.isNotBlank(salaryReportConditions) && salaryReportConditions.contains(paramMd5)) { +// Map result = getSalaryCacheService(user).get(SalaryCacheKey.SALARY_REPORT_DATA + id + "_" + paramMd5); +// if (param.getDimensionId().equals(empDimensionId)) { +// // 人员维度需要分页 +// Map finalResultMap = new HashMap<>(); +// PageInfo> pageInfo = (PageInfo>) result.get("pageInfo"); +// PageInfo> finalPageInfo = SalaryPageUtil.buildPage(param.getCurrent(), param.getPageSize()); +// finalPageInfo.setTotal(pageInfo.getList().size()); +// finalPageInfo.setList(SalaryPageUtil.subList(param.getCurrent(), param.getPageSize(), pageInfo.getList())); +// finalResultMap.put("pageInfo", finalPageInfo); +// finalResultMap.put("columns", result.get("columns")); +// finalResultMap.put("countResult", result.get("countResult")); +// finalResultMap.put("reportId", id); +// return finalResultMap; +// } +// +// return result; +// } +// } // 列表data diff --git a/src/com/engine/salary/service/impl/SalaryAcctEmployeeServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctEmployeeServiceImpl.java index a36f2dd57..0dce7dbda 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctEmployeeServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctEmployeeServiceImpl.java @@ -47,6 +47,8 @@ import weaver.hrm.User; import java.util.*; import java.util.stream.Collectors; +import static com.engine.salary.sys.constant.SalarySysConstant.REPORT_ORGANIZATIN_TYPE; + /** * 薪资核算人员 *

Copyright: Copyright (c) 2022

@@ -102,6 +104,11 @@ public class SalaryAcctEmployeeServiceImpl extends Service implements SalaryAcct return ServiceUtil.getService(SalarySysConfServiceImpl.class, user); } + private SalaryCacheService getSalaryCacheService(User user) { + return ServiceUtil.getService(SalaryCacheServiceImpl.class, user); + } + + private boolean isRealOrg = "1".equals(getSalaryCacheService(user).get(REPORT_ORGANIZATIN_TYPE)); @Override public List countBySalaryAcctRecordId(Collection salaryAcctRecordIds) { @@ -656,11 +663,6 @@ public class SalaryAcctEmployeeServiceImpl extends Service implements SalaryAcct lambdaQueryChainWrapper.setSalaryMonths(yearMonths); } - // 收入所得项目 -// if (CollectionUtils.isNotEmpty(param.getIncomeCategory())) { -// lambdaQueryChainWrapper.in(SalaryAcctEmployeePO::getIncomeCategory, param.getIncomeCategory().stream().map(Object::toString).collect(Collectors.toList())); -// } - //排除未归档数据 List salaryAcctRecordPOS = getSalaryAcctRecordService(user).listAll(); List salaryAcctRecordIds = salaryAcctRecordPOS.stream() @@ -690,70 +692,47 @@ public class SalaryAcctEmployeeServiceImpl extends Service implements SalaryAcct // 获取分部信息 List subCompanyIds = param.getSubCompany(); if (CollectionUtils.isNotEmpty(subCompanyIds)) { -// SubCompanyComInfo subCompanyComInfo = new SubCompanyComInfo(); -// List allSubcompanyIds = new ArrayList<>(); -// for (Long subCompanyId : subCompanyIds) { -// String organizationIds = Util.null2String(subCompanyId); -// String allChildSubcompanyId = subCompanyComInfo.getAllChildSubcompanyId(subCompanyId.toString(), organizationIds); -// allSubcompanyIds.addAll(Arrays.asList(allChildSubcompanyId.split(","))); -// } - employeeList = employeeList.stream().filter(emp -> subCompanyIds.contains(emp.getSubcompanyid())).collect(Collectors.toList()); + if (isRealOrg) { + employeeList = employeeList.stream().filter(emp -> subCompanyIds.contains(emp.getSubcompanyid())).collect(Collectors.toList()); + } else { + list.stream().filter(emp -> subCompanyIds.contains(emp.getSubcompanyId())).collect(Collectors.toList()); + } } // 部门过滤 List depart = param.getDepart(); if (CollectionUtils.isNotEmpty(depart)) { -// List allDepartIds = new ArrayList<>(); -// for (Long subDepartId : depart) { -// String ids = Util.null2String(subDepartId); -// try { -// String allDepartId = DepartmentComInfo.getAllChildDepartId(subDepartId.toString(), ids); -// allDepartIds.addAll(Arrays.asList(allDepartId.toString().split(","))); -// } catch (Exception e) { -// log.error("获取子部门失败", e); -// } -// } - employeeList = employeeList.stream().filter(emp -> depart.contains(emp.getDepartmentId())).collect(Collectors.toList()); + if (isRealOrg) { + employeeList = employeeList.stream().filter(emp -> depart.contains(emp.getDepartmentId())).collect(Collectors.toList()); + } else { + list = list.stream().filter(emp -> depart.contains(emp.getDepartmentId())).collect(Collectors.toList()); + } } - // 职级过滤 -// if (CollectionUtils.isNotEmpty(param.getGrade())) { -// Set employeeIdsByGradeFilter = new HashSet<>(); -// simpleEmployeeList.forEach(simpleEmployee -> { -// if (simpleEmployee.getGrade() != null && param.getGrade().contains(simpleEmployee.getGrade().getId())) { -// employeeIdsByGradeFilter.add(simpleEmployee.getEmployeeId()); -// } -// }); -// if (CollectionUtils.isEmpty(employeeIdsByGradeFilter)) { -// return Lists.newArrayList(); -// } -// list = list.stream().filter(po -> employeeIdsByGradeFilter.contains(po.getEmployeeId())).collect(Collectors.toList()); -// } // 岗位过滤 List position = param.getPosition(); if (CollectionUtils.isNotEmpty(position)) { - // Set employeeIdsByPostionFilter = new HashSet<>(); - // simpleEmployeeList.forEach(simpleEmployee -> { - // if (simpleEmployee.getPosition() != null && param.getPosition().contains(simpleEmployee.getPosition().getId())) { - // employeeIdsByPostionFilter.add(simpleEmployee.getEmployeeId()); - // } - // }); - // if (CollectionUtils.isEmpty(employeeIdsByPostionFilter)) { - // return Lists.newArrayList(); - // } - employeeList = employeeList.stream().filter(emp -> position.contains(emp.getJobtitleId())).collect(Collectors.toList()); + if (isRealOrg) { + employeeList = employeeList.stream().filter(emp -> position.contains(emp.getJobtitleId())).collect(Collectors.toList()); + } else { + list = list.stream().filter(emp -> position.contains(emp.getJobtitleId())).collect(Collectors.toList()); + } } // 人事状态过滤 if (CollectionUtils.isNotEmpty(param.getStatus())) { - Set employeeIdsByStatus = new HashSet<>(); - employeeList.forEach(simpleEmployee -> { - if (simpleEmployee.getStatus() != null && param.getStatus().contains(simpleEmployee.getStatus())) { - employeeIdsByStatus.add(simpleEmployee.getEmployeeId()); + if (isRealOrg) { + Set employeeIdsByStatus = new HashSet<>(); + employeeList.forEach(simpleEmployee -> { + if (simpleEmployee.getStatus() != null && param.getStatus().contains(simpleEmployee.getStatus())) { + employeeIdsByStatus.add(simpleEmployee.getEmployeeId()); + } + }); + if (CollectionUtils.isEmpty(employeeIdsByStatus)) { + return Lists.newArrayList(); } - }); - if (CollectionUtils.isEmpty(employeeIdsByStatus)) { - return Lists.newArrayList(); + list = list.stream().filter(po -> employeeIdsByStatus.contains(po.getEmployeeId())).collect(Collectors.toList()); + } else { + list = list.stream().filter(po -> po.getStatus() != null && param.getStatus().contains(po.getStatus())).collect(Collectors.toList()); } - list = list.stream().filter(po -> employeeIdsByStatus.contains(po.getEmployeeId())).collect(Collectors.toList()); } // 入职日期 if (CollectionUtils.isNotEmpty(param.getHiredate())) { @@ -769,27 +748,15 @@ public class SalaryAcctEmployeeServiceImpl extends Service implements SalaryAcct } list = list.stream().filter(po -> employeeIdsByHiredate.contains(po.getEmployeeId())).collect(Collectors.toList()); } -// // 离职日期 todo -// if (CollectionUtils.isNotEmpty(param.getLeavedate())) { -// Set employeeIdsByLeavedate = new HashSet<>(); -// simpleEmployeeList.forEach(simpleEmployee -> { -// -// if (simpleEmployee.get() != null && ) { -// employeeIdsByLeavedate.add(simpleEmployee.getEmployeeId()); -// } -// }); -// if (CollectionUtils.isEmpty(employeeIdsByLeavedate)) { -// return Lists.newArrayList(); -// } -// list = list.stream().filter(po -> employeeIdsByLeavedate.contains(po.getEmployeeId())).collect(Collectors.toList()); -// } // 人员 if (CollectionUtils.isNotEmpty(param.getEmployee())) { list = list.stream().filter(po -> param.getEmployee().contains(po.getEmployeeId())).collect(Collectors.toList()); } - Set empIds = SalaryEntityUtil.properties(employeeList, DataCollectionEmployee::getEmployeeId); - list = list.stream().filter(po -> empIds.contains(po.getEmployeeId())).collect(Collectors.toList()); + if(isRealOrg){ + Set empIds = SalaryEntityUtil.properties(employeeList, DataCollectionEmployee::getEmployeeId); + list = list.stream().filter(po -> empIds.contains(po.getEmployeeId())).collect(Collectors.toList()); + } return list; } diff --git a/src/com/engine/salary/sys/constant/SalarySysConstant.java b/src/com/engine/salary/sys/constant/SalarySysConstant.java index ff055b89e..443cd4fd5 100644 --- a/src/com/engine/salary/sys/constant/SalarySysConstant.java +++ b/src/com/engine/salary/sys/constant/SalarySysConstant.java @@ -145,4 +145,15 @@ public class SalarySysConstant { * 我的薪资福利工资单个税扣缴义务人显示状态 */ public static final String TAX_AGENT_SHOW_STATUS = "taxAgentShowStatus"; + + + /** + * 报表是否开启缓存,0:关闭 1:开启 + */ + public static final String REPORT_CACHE = "REPORT_CACHE"; + + /** + * 报表组织类型,null/0 :核算快照信息 1:实时组织信息 + */ + public static final String REPORT_ORGANIZATIN_TYPE = "REPORT_ORGANIZATIN_TYPE"; } From 13f085420824942fe466020df94731484c227a81 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Sun, 29 Sep 2024 17:02:59 +0800 Subject: [PATCH 052/218] =?UTF-8?q?=E6=8A=A5=E8=A1=A8=E7=BC=93=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SalaryStatisticsReportWrapper.java | 44 +++++++++---------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/src/com/engine/salary/report/wrapper/SalaryStatisticsReportWrapper.java b/src/com/engine/salary/report/wrapper/SalaryStatisticsReportWrapper.java index 7556b7bf8..22fb6261f 100644 --- a/src/com/engine/salary/report/wrapper/SalaryStatisticsReportWrapper.java +++ b/src/com/engine/salary/report/wrapper/SalaryStatisticsReportWrapper.java @@ -332,28 +332,28 @@ public class SalaryStatisticsReportWrapper extends Service { if (empDimensionOptional.isPresent()) { empDimensionId = empDimensionOptional.get(); } -// if (StringUtils.isNotBlank(salaryReportIds) && salaryReportIds.contains(id + "")) { -// //报表中缓存的条件 -// salaryReportConditions = Utils.null2String(getSalaryCacheService(user).get(SalaryCacheKey.SALARY_REPORT_CONDITIONS + id)); -// if (StringUtils.isNotBlank(salaryReportConditions) && salaryReportConditions.contains(paramMd5)) { -// Map result = getSalaryCacheService(user).get(SalaryCacheKey.SALARY_REPORT_DATA + id + "_" + paramMd5); -// if (param.getDimensionId().equals(empDimensionId)) { -// // 人员维度需要分页 -// Map finalResultMap = new HashMap<>(); -// PageInfo> pageInfo = (PageInfo>) result.get("pageInfo"); -// PageInfo> finalPageInfo = SalaryPageUtil.buildPage(param.getCurrent(), param.getPageSize()); -// finalPageInfo.setTotal(pageInfo.getList().size()); -// finalPageInfo.setList(SalaryPageUtil.subList(param.getCurrent(), param.getPageSize(), pageInfo.getList())); -// finalResultMap.put("pageInfo", finalPageInfo); -// finalResultMap.put("columns", result.get("columns")); -// finalResultMap.put("countResult", result.get("countResult")); -// finalResultMap.put("reportId", id); -// return finalResultMap; -// } -// -// return result; -// } -// } + if (StringUtils.isNotBlank(salaryReportIds) && salaryReportIds.contains(id + "")) { + //报表中缓存的条件 + salaryReportConditions = Utils.null2String(getSalaryCacheService(user).get(SalaryCacheKey.SALARY_REPORT_CONDITIONS + id)); + if (StringUtils.isNotBlank(salaryReportConditions) && salaryReportConditions.contains(paramMd5)) { + Map result = getSalaryCacheService(user).get(SalaryCacheKey.SALARY_REPORT_DATA + id + "_" + paramMd5); + if (param.getDimensionId().equals(empDimensionId)) { + // 人员维度需要分页 + Map finalResultMap = new HashMap<>(); + PageInfo> pageInfo = (PageInfo>) result.get("pageInfo"); + PageInfo> finalPageInfo = SalaryPageUtil.buildPage(param.getCurrent(), param.getPageSize()); + finalPageInfo.setTotal(pageInfo.getList().size()); + finalPageInfo.setList(SalaryPageUtil.subList(param.getCurrent(), param.getPageSize(), pageInfo.getList())); + finalResultMap.put("pageInfo", finalPageInfo); + finalResultMap.put("columns", result.get("columns")); + finalResultMap.put("countResult", result.get("countResult")); + finalResultMap.put("reportId", id); + return finalResultMap; + } + + return result; + } + } // 列表data From 8c0bad80232807239452bf6d4109228e5d5adc29 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Mon, 30 Sep 2024 10:37:27 +0800 Subject: [PATCH 053/218] =?UTF-8?q?=E6=8A=A5=E8=A1=A8=E5=BF=AB=E7=85=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SalaryStatisticsReportServiceImpl.java | 77 ++++++++++++++----- 1 file changed, 58 insertions(+), 19 deletions(-) diff --git a/src/com/engine/salary/report/service/impl/SalaryStatisticsReportServiceImpl.java b/src/com/engine/salary/report/service/impl/SalaryStatisticsReportServiceImpl.java index ab16db7cc..ecceda7a9 100644 --- a/src/com/engine/salary/report/service/impl/SalaryStatisticsReportServiceImpl.java +++ b/src/com/engine/salary/report/service/impl/SalaryStatisticsReportServiceImpl.java @@ -796,38 +796,74 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary Map subComIdNameMap = new HashMap<>(); Map lastEmpIdSubComMap = new HashMap<>(); Map sameEmpIdSubComMap = new HashMap<>(); - comInfoMap.forEach((k, v) -> { - subComIdNameMap.put(v.getSubcompanyid(), v.getSubcompanyName()); - empIdSubComMap.put(k, v.getSubcompanyid()); - subComIds.add(v.getSubcompanyid()); - }); - lastComInfoMap.forEach((k, v) -> { - lastEmpIdSubComMap.put(k, v.getSubcompanyid()); - }); - sameComInfoMap.forEach((k, v) -> { - sameEmpIdSubComMap.put(k, v.getSubcompanyid()); - }); + + if (isRealOrg) { + comInfoMap.forEach((k, v) -> { + subComIdNameMap.put(v.getSubcompanyid(), v.getSubcompanyName()); + empIdSubComMap.put(k, v.getSubcompanyid()); + subComIds.add(v.getSubcompanyid()); + }); + lastComInfoMap.forEach((k, v) -> { + lastEmpIdSubComMap.put(k, v.getSubcompanyid()); + }); + sameComInfoMap.forEach((k, v) -> { + sameEmpIdSubComMap.put(k, v.getSubcompanyid()); + }); + } else { + data.getList().forEach(employee -> { + if (employee.getSubcompanyId() != null && employee.getSubcompanyId() != null) { + subComIdNameMap.put(employee.getSubcompanyId(), employee.getSubcompanyName()); + subComIds.add(employee.getDepartmentId()); + empIdSubComMap.put(employee.getEmployeeId(), employee.getSubcompanyId()); + } + }); + data.getLastList().forEach(employee -> { + if (employee.getSubcompanyId() != null && employee.getSubcompanyId() != null) { + lastEmpIdSubComMap.put(employee.getEmployeeId(), employee.getSubcompanyId()); + } + }); + data.getSameList().forEach(employee -> { + if (employee.getSubcompanyId() != null && employee.getSubcompanyId() != null) { + sameEmpIdSubComMap.put(employee.getEmployeeId(), employee.getSubcompanyId()); + } + }); + } + String dimensionValue = data.getDimensionValue(); subComIds.forEach(subComId -> { if (dimensionValue == null) { - List subComEmployeePOS = data.getList().stream().filter(po -> Objects.equals(empIdSubComMap.get(po.getEmployeeId()), subComId)).collect(Collectors.toList()); - List lastSubComEmployeePOS = data.getLastList().stream().filter(po -> Objects.equals(lastEmpIdSubComMap.get(po.getEmployeeId()), subComId)).collect(Collectors.toList()); - List sameSubComEmployeePOS = data.getSameList().stream().filter(po -> Objects.equals(sameEmpIdSubComMap.get(po.getEmployeeId()), subComId)).collect(Collectors.toList()); + List subComEmployeePOS = data.getList().stream().filter(po -> Objects.equals(po.getSubcompanyId(), subComId)).collect(Collectors.toList()); + List lastSubComEmployeePOS = data.getLastList().stream().filter(po -> Objects.equals(po.getSubcompanyId(), subComId)).collect(Collectors.toList()); + List sameSubComEmployeePOS = data.getSameList().stream().filter(po -> Objects.equals(po.getSubcompanyId(), subComId)).collect(Collectors.toList()); + if (isRealOrg) { + subComEmployeePOS = data.getList().stream().filter(po -> Objects.equals(empIdSubComMap.get(po.getEmployeeId()), subComId)).collect(Collectors.toList()); + lastSubComEmployeePOS = data.getLastList().stream().filter(po -> Objects.equals(lastEmpIdSubComMap.get(po.getEmployeeId()), subComId)).collect(Collectors.toList()); + sameSubComEmployeePOS = data.getSameList().stream().filter(po -> Objects.equals(sameEmpIdSubComMap.get(po.getEmployeeId()), subComId)).collect(Collectors.toList()); + } Map temp = new HashMap<>(); temp.put(DM, subComIdNameMap.get(subComId)); temp.putAll(SalaryStatisticsReportBO.calculateItem(subComEmployeePOS, lastSubComEmployeePOS, sameSubComEmployeePOS, salaryAcctResultValueMap, data.getSalaryStatisticsItemList())); records.add(temp); } else if (StringUtils.equals(dimensionValue, subComIdNameMap.get(subComId))) { - List subComEmployeePOS = data.getList().stream().filter(po -> Objects.equals(empIdSubComMap.get(po.getEmployeeId()), subComId)).collect(Collectors.toList()); + List subComEmployeePOS = data.getList().stream().filter(po -> Objects.equals(po.getSubcompanyId(), subComId)).collect(Collectors.toList()); + if (isRealOrg) { + subComEmployeePOS = data.getList().stream().filter(po -> Objects.equals(empIdSubComMap.get(po.getEmployeeId()), subComId)).collect(Collectors.toList()); + } data.setListByDimensionValue(subComEmployeePOS); } }); if (dimensionValue == null) { - List noGroupingList = data.getList().stream().filter(po -> empIdSubComMap.get(po.getEmployeeId()) == null).collect(Collectors.toList()); - List lastNoGroupingList = data.getLastList().stream().filter(po -> lastEmpIdSubComMap.get(po.getEmployeeId()) == null).collect(Collectors.toList()); - List sameNoGroupingList = data.getSameList().stream().filter(po -> sameEmpIdSubComMap.get(po.getEmployeeId()) == null).collect(Collectors.toList()); + List noGroupingList = data.getList().stream().filter(po -> po.getSubcompanyId() == null).collect(Collectors.toList()); + List lastNoGroupingList = data.getLastList().stream().filter(po -> po.getSubcompanyId() == null).collect(Collectors.toList()); + List sameNoGroupingList = data.getSameList().stream().filter(po -> po.getSubcompanyId() == null).collect(Collectors.toList()); + if (isRealOrg) { + noGroupingList = data.getList().stream().filter(po -> empIdSubComMap.get(po.getEmployeeId()) == null).collect(Collectors.toList()); + lastNoGroupingList = data.getLastList().stream().filter(po -> lastEmpIdSubComMap.get(po.getEmployeeId()) == null).collect(Collectors.toList()); + sameNoGroupingList = data.getSameList().stream().filter(po -> sameEmpIdSubComMap.get(po.getEmployeeId()) == null).collect(Collectors.toList()); + } + if (CollectionUtils.isNotEmpty(noGroupingList)) { Map noGrouping = new HashMap<>(); noGrouping.put(DM, SalaryI18nUtil.getI18nLabel(153462, "无分组")); @@ -836,6 +872,9 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary } } else if (StringUtils.equals(dimensionValue, "无分组")) { List noGroupingList = data.getList().stream().filter(po -> empIdSubComMap.get(po.getEmployeeId()) == null).collect(Collectors.toList()); + if (isRealOrg) { + noGroupingList = data.getList().stream().filter(po -> po.getSubcompanyId() == null).collect(Collectors.toList()); + } data.setListByDimensionValue(noGroupingList); } @@ -939,7 +978,7 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary } } else if (StringUtils.equals(dimensionValue, "无分组")) { List noGroupingList = data.getList().stream().filter(po -> po.getDepartmentId() == null).collect(Collectors.toList()); - if(isRealOrg){ + if (isRealOrg) { noGroupingList = data.getList().stream().filter(po -> empIdDepartIdMap.get(po.getEmployeeId()) == null).collect(Collectors.toList()); } data.setListByDimensionValue(noGroupingList); From ff44ddd8b11536de2a809aed86175fa059d77a02 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Tue, 8 Oct 2024 14:19:02 +0800 Subject: [PATCH 054/218] =?UTF-8?q?=E5=91=98=E5=B7=A5=E6=98=8E=E7=BB=86?= =?UTF-8?q?=E6=8E=92=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../param/SalaryAcctEmployeeQueryParam.java | 5 ++ .../salaryacct/SalaryAcctEmployeeMapper.xml | 48 +++++++++++++++++-- .../SalaryStatisticsEmployeeServiceImpl.java | 19 +++----- 3 files changed, 56 insertions(+), 16 deletions(-) diff --git a/src/com/engine/salary/entity/salaryacct/param/SalaryAcctEmployeeQueryParam.java b/src/com/engine/salary/entity/salaryacct/param/SalaryAcctEmployeeQueryParam.java index 2d532855e..977f1572e 100644 --- a/src/com/engine/salary/entity/salaryacct/param/SalaryAcctEmployeeQueryParam.java +++ b/src/com/engine/salary/entity/salaryacct/param/SalaryAcctEmployeeQueryParam.java @@ -7,7 +7,9 @@ import com.engine.salary.util.valid.DataCheck; import lombok.*; import java.util.Collection; +import java.util.Date; import java.util.List; +import java.util.Set; /** * 薪资核算人员列表查询条件 @@ -59,4 +61,7 @@ public class SalaryAcctEmployeeQueryParam extends BaseQueryParam { private List ids; private String workcode; + + private List taxAgentIds; + private Set salaryMonths; } diff --git a/src/com/engine/salary/mapper/salaryacct/SalaryAcctEmployeeMapper.xml b/src/com/engine/salary/mapper/salaryacct/SalaryAcctEmployeeMapper.xml index 28f8e7779..86781c4d3 100644 --- a/src/com/engine/salary/mapper/salaryacct/SalaryAcctEmployeeMapper.xml +++ b/src/com/engine/salary/mapper/salaryacct/SalaryAcctEmployeeMapper.xml @@ -521,7 +521,6 @@ LEFT JOIN hrmdepartment d ON d.id = e.departmentid LEFT JOIN hrmsubcompany c ON c.id = e.subcompanyid1 WHERE delete_type = 0 - AND salary_acct_record_id = #{param.salaryAcctRecordId} @@ -538,7 +537,6 @@ LEFT JOIN hrmdepartment d ON d.id = e.departmentid LEFT JOIN hrmsubcompany c ON c.id = e.subcompanyid1 WHERE delete_type = 0 - AND salary_acct_record_id = #{param.salaryAcctRecordId} @@ -555,7 +553,6 @@ LEFT JOIN hrmdepartment d ON d.id = e.departmentid LEFT JOIN hrmsubcompany c ON c.id = e.subcompanyid1 WHERE delete_type = 0 - AND salary_acct_record_id = #{param.salaryAcctRecordId} @@ -564,6 +561,9 @@ + + AND t.salary_acct_record_id = #{param.salaryAcctRecordId} + AND t.id IN @@ -573,6 +573,18 @@ AND t.tax_agent_id = #{param.taxAgentId} + + AND t.tax_agent_id IN + + #{taxAgentId} + + + + AND t.salary_month IN + + #{salaryMonth} + + -- 分部 AND t.subcompany_id IN @@ -625,6 +637,9 @@ + + AND t.salary_acct_record_id = #{param.salaryAcctRecordId} + AND t.id IN @@ -634,6 +649,18 @@ AND t.tax_agent_id = #{param.taxAgentId} + + AND t.tax_agent_id IN + + #{taxAgentId} + + + + AND t.salary_month IN + + #{salaryMonth} + + -- 分部 AND t.subcompany_id IN @@ -684,6 +711,9 @@ + + AND t.salary_acct_record_id = #{param.salaryAcctRecordId} + AND t.id IN @@ -693,6 +723,18 @@ AND t.tax_agent_id = #{param.taxAgentId} + + AND t.tax_agent_id IN + + #{taxAgentId} + + + + AND t.salary_month IN + + #{salaryMonth} + + -- 分部 AND t.subcompany_id IN diff --git a/src/com/engine/salary/report/service/impl/SalaryStatisticsEmployeeServiceImpl.java b/src/com/engine/salary/report/service/impl/SalaryStatisticsEmployeeServiceImpl.java index 3a6e00071..2e7663392 100644 --- a/src/com/engine/salary/report/service/impl/SalaryStatisticsEmployeeServiceImpl.java +++ b/src/com/engine/salary/report/service/impl/SalaryStatisticsEmployeeServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.util.NumberUtil; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; import com.engine.salary.entity.datacollection.DataCollectionEmployee; +import com.engine.salary.entity.salaryacct.param.SalaryAcctEmployeeQueryParam; import com.engine.salary.entity.salaryacct.po.SalaryAcctEmployeePO; import com.engine.salary.entity.salaryacct.po.SalaryAcctRecordPO; import com.engine.salary.entity.salaryacct.po.SalaryAcctResultPO; @@ -33,7 +34,6 @@ import com.engine.salary.util.page.PageInfo; import com.engine.salary.util.page.SalaryPageUtil; import com.google.common.collect.Lists; import com.google.common.collect.Maps; -import com.google.common.collect.Sets; import com.wbi.util.Util; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; @@ -108,7 +108,8 @@ public class SalaryStatisticsEmployeeServiceImpl extends Service implements Sala .collect(Collectors.toSet()); // 查询薪资核算人员 - List salaryAcctEmployeeList = getSalaryAcctEmployeeService(user).listByTaxAgentAndSalaryMonth(taxAgentIds, salaryMonths); + SalaryAcctEmployeeQueryParam salaryAcctEmployeeQueryParam = SalaryAcctEmployeeQueryParam.builder().salaryMonths(salaryMonths).taxAgentIds(taxAgentIds).build(); + List salaryAcctEmployeeList = getSalaryAcctEmployeeService(user).listByParam(salaryAcctEmployeeQueryParam); if (CollectionUtils.isEmpty(salaryAcctEmployeeList)) { return page; } @@ -119,15 +120,8 @@ public class SalaryStatisticsEmployeeServiceImpl extends Service implements Sala // // 外部人员id // Set extEmployeeIds = Sets.newHashSet(); // 内部人员id - Set innerEmployeeIds = Sets.newHashSet(); - for (SalaryAcctEmployeePO sae : salaryAcctEmployeeList) { -// if (EmployeeTypeEnum.EXT_EMPLOYEE.getValue().equals(sae.getEmployeeType())) { -// extEmployeeIds.add(sae.getEmployeeId()); -// } else if (EmployeeTypeEnum.ORGANIZATION.getValue().equals(sae.getEmployeeType())) { -// innerEmployeeIds.add(sae.getEmployeeId()); -// } - innerEmployeeIds.add(sae.getEmployeeId()); - } + Set innerEmployeeIds = salaryAcctEmployeeList.stream().map(SalaryAcctEmployeePO::getEmployeeId).collect(Collectors.toCollection(LinkedHashSet::new)); + // 3.关键字搜索参数 if (StringUtils.isNotEmpty(queryParam.getKeyword())) { // if (CollectionUtils.isNotEmpty(extEmployeeIds)) { @@ -158,10 +152,9 @@ public class SalaryStatisticsEmployeeServiceImpl extends Service implements Sala } } - List innerEmployeeIdList = innerEmployeeIds.stream().sorted(Comparator.comparing(e -> e)).collect(Collectors.toList()); // List extEmployeeIdList = extEmployeeIds.stream().sorted(Comparator.comparing(e -> e)).collect(Collectors.toList()); // 排序,内部员工优先 - list = innerEmployeeIdList.stream().map(e -> SalaryStatisticsEmployeeListDTO.builder() + list = innerEmployeeIds.stream().map(e -> SalaryStatisticsEmployeeListDTO.builder() .id(e) // .employeeType(EmployeeTypeEnum.ORGANIZATION.getValue()) .build()).collect(Collectors.toList()); From edb07052b5a1151a640148fdf78bf1b7a222b8fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Tue, 8 Oct 2024 14:36:18 +0800 Subject: [PATCH 055/218] =?UTF-8?q?=E5=91=98=E5=B7=A5=E6=98=8E=E7=BB=86?= =?UTF-8?q?=E6=8E=92=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/engine/salary/sys/constant/SalarySysConstant.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/com/engine/salary/sys/constant/SalarySysConstant.java b/src/com/engine/salary/sys/constant/SalarySysConstant.java index 443cd4fd5..6f35124c3 100644 --- a/src/com/engine/salary/sys/constant/SalarySysConstant.java +++ b/src/com/engine/salary/sys/constant/SalarySysConstant.java @@ -153,7 +153,7 @@ public class SalarySysConstant { public static final String REPORT_CACHE = "REPORT_CACHE"; /** - * 报表组织类型,null/0 :核算快照信息 1:实时组织信息 + * 报表组织类型,null/0 :核算时组织信息 1:实时组织信息 */ public static final String REPORT_ORGANIZATIN_TYPE = "REPORT_ORGANIZATIN_TYPE"; } From ff5419f2bb1a1431cfd97a8ad634ebc9f8d00da3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Tue, 8 Oct 2024 15:45:12 +0800 Subject: [PATCH 056/218] =?UTF-8?q?=E8=96=AA=E8=B5=84=E6=98=8E=E7=BB=86?= =?UTF-8?q?=E6=8E=92=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/SalaryStatisticsEmployeeServiceImpl.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/com/engine/salary/report/service/impl/SalaryStatisticsEmployeeServiceImpl.java b/src/com/engine/salary/report/service/impl/SalaryStatisticsEmployeeServiceImpl.java index 2e7663392..3ec96c6dc 100644 --- a/src/com/engine/salary/report/service/impl/SalaryStatisticsEmployeeServiceImpl.java +++ b/src/com/engine/salary/report/service/impl/SalaryStatisticsEmployeeServiceImpl.java @@ -315,7 +315,8 @@ public class SalaryStatisticsEmployeeServiceImpl extends Service implements Sala .collect(Collectors.toSet()); // 查询薪资核算人员 - List salaryAcctEmployeeList = getSalaryAcctEmployeeService(user).listByTaxAgentAndSalaryMonth(taxAgentIds, salaryMonths); + SalaryAcctEmployeeQueryParam salaryAcctEmployeeQueryParam = SalaryAcctEmployeeQueryParam.builder().salaryMonths(salaryMonths).taxAgentIds(taxAgentIds).build(); + List salaryAcctEmployeeList = getSalaryAcctEmployeeService(user).listByParam(salaryAcctEmployeeQueryParam); if (CollectionUtils.isNotEmpty(queryParam.getSubCompanyIds()) || CollectionUtils.isNotEmpty(queryParam.getDepartmentIds()) || StringUtils.isNotBlank(queryParam.getKeyword())) { // 根据分部、部门筛选 List employeeList = getSalaryEmployeeService(user).listBySubCompanyOrDepartment(queryParam.getSubCompanyIds(), queryParam.getDepartmentIds()); @@ -336,8 +337,7 @@ public class SalaryStatisticsEmployeeServiceImpl extends Service implements Sala if (CollectionUtils.isNotEmpty(queryParam.getIds())) { salaryAcctEmployeeList = salaryAcctEmployeeList.stream().filter(emp -> queryParam.getIds().contains(emp.getId())).collect(Collectors.toList()); } - salaryAcctEmployeeList = salaryAcctEmployeeList.stream().sorted(Comparator.comparing(SalaryAcctEmployeePO::getSalaryMonth)).collect(Collectors.toList()); - Collections.reverse(salaryAcctEmployeeList); + salaryAcctEmployeeList = salaryAcctEmployeeList.stream().sorted(Comparator.comparing(SalaryAcctEmployeePO::getSalaryMonth).reversed()).collect(Collectors.toList()); PageInfo SalaryAcctEmployeePageInfo = SalaryPageUtil.buildPage(queryParam.getCurrent(), queryParam.getPageSize(), salaryAcctEmployeeList); if (queryParam.isExport()) { SalaryAcctEmployeePageInfo.setList(salaryAcctEmployeeList); From 61dee5d3a122d1f3ddb1d3b2d85b38a823de81d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Tue, 8 Oct 2024 15:48:33 +0800 Subject: [PATCH 057/218] =?UTF-8?q?=E8=96=AA=E8=B5=84=E6=98=8E=E7=BB=86?= =?UTF-8?q?=E6=8E=92=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/SalaryStatisticsEmployeeServiceImpl.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/com/engine/salary/report/service/impl/SalaryStatisticsEmployeeServiceImpl.java b/src/com/engine/salary/report/service/impl/SalaryStatisticsEmployeeServiceImpl.java index 3ec96c6dc..57a8d103d 100644 --- a/src/com/engine/salary/report/service/impl/SalaryStatisticsEmployeeServiceImpl.java +++ b/src/com/engine/salary/report/service/impl/SalaryStatisticsEmployeeServiceImpl.java @@ -288,9 +288,6 @@ public class SalaryStatisticsEmployeeServiceImpl extends Service implements Sala @Override public PageInfo listSalaryAcctEmp(SalaryStatisticsEmployeeSalaryQueryParam queryParam) { - List list = Collections.emptyList(); - PageInfo page = SalaryPageUtil.buildPage(queryParam.getCurrent(), queryParam.getPageSize(), list, SalaryStatisticsEmployeeListDTO.class); - // 1.分权处理, 首先获取个税扣缴义务人参数 Collection taxAgentViews = getTaxAgentService(user).listAllTaxAgents((long) user.getUID()); List taxAgentIds = Objects.isNull(taxAgentViews) ? Lists.newArrayList() : taxAgentViews.stream().map(TaxAgentPO::getId).collect(Collectors.toList()); From 752de1fa8efe22d8f8c18b5b0690f7333274225e Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Wed, 9 Oct 2024 10:57:23 +0800 Subject: [PATCH 058/218] =?UTF-8?q?=E7=A4=BE=E4=BF=9D=E7=A6=8F=E5=88=A9?= =?UTF-8?q?=E5=8F=B0=E8=B4=A6=E4=BA=BA=E5=91=98=E4=BF=A1=E6=81=AF=E5=BF=AB?= =?UTF-8?q?=E7=85=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resource/sqlupgrade/DM/sql202410090103.sql | 54 ++++++++ resource/sqlupgrade/DM/sql202410090203.sql | 70 ++++++++++ resource/sqlupgrade/GS/sql202410090103.sql | 54 ++++++++ resource/sqlupgrade/GS/sql202410090203.sql | 70 ++++++++++ resource/sqlupgrade/JC/sql202410090103.sql | 54 ++++++++ resource/sqlupgrade/JC/sql202410090203.sql | 70 ++++++++++ resource/sqlupgrade/Mysql/sql202410090103.sql | 22 ++++ resource/sqlupgrade/Mysql/sql202410090203.sql | 29 ++++ .../sqlupgrade/Oracle/sql202410090103.sql | 37 ++++++ .../sqlupgrade/Oracle/sql202410090203.sql | 69 ++++++++++ resource/sqlupgrade/PG/sql202410090103.sql | 54 ++++++++ resource/sqlupgrade/PG/sql202410090203.sql | 68 ++++++++++ .../sqlupgrade/SQLServer/sql202410090103.sql | 23 ++++ .../sqlupgrade/SQLServer/sql202410090203.sql | 31 +++++ resource/sqlupgrade/ST/sql202410090103.sql | 54 ++++++++ resource/sqlupgrade/ST/sql202410090203.sql | 70 ++++++++++ .../param/InsuranceAccountDetailParam.java | 2 + .../param/SupplementAccountBaseParam.java | 11 ++ .../siaccount/po/InsuranceAccountBatchPO.java | 10 +- .../po/InsuranceAccountDetailPO.java | 10 ++ .../po/InsuranceAccountDetailTempPO.java | 11 ++ .../entity/siexport/po/AccountExportPO.java | 4 + .../salary/mapper/InsuranceExportMapper.xml | 27 +++- .../InsuranceAccountDetailMapper.xml | 124 +++++++++++++++++- .../siaccount/SIAccountDetailTempMapper.xml | 51 ++++++- .../salary/service/RecordsBuildService.java | 2 +- .../salary/service/SIExportService.java | 2 +- .../service/impl/RecordsBuildServiceImpl.java | 22 +++- .../service/impl/SIAccountServiceImpl.java | 113 ++++++++++++++-- .../service/impl/SIBalanceServiceImpl.java | 20 +++ .../service/impl/SICategoryServiceImpl.java | 2 +- .../service/impl/SIExportServiceImpl.java | 13 +- .../service/impl/SIRecessionServiceImpl.java | 30 ++++- 33 files changed, 1241 insertions(+), 42 deletions(-) create mode 100644 resource/sqlupgrade/DM/sql202410090103.sql create mode 100644 resource/sqlupgrade/DM/sql202410090203.sql create mode 100644 resource/sqlupgrade/GS/sql202410090103.sql create mode 100644 resource/sqlupgrade/GS/sql202410090203.sql create mode 100644 resource/sqlupgrade/JC/sql202410090103.sql create mode 100644 resource/sqlupgrade/JC/sql202410090203.sql create mode 100644 resource/sqlupgrade/Mysql/sql202410090103.sql create mode 100644 resource/sqlupgrade/Mysql/sql202410090203.sql create mode 100644 resource/sqlupgrade/Oracle/sql202410090103.sql create mode 100644 resource/sqlupgrade/Oracle/sql202410090203.sql create mode 100644 resource/sqlupgrade/PG/sql202410090103.sql create mode 100644 resource/sqlupgrade/PG/sql202410090203.sql create mode 100644 resource/sqlupgrade/SQLServer/sql202410090103.sql create mode 100644 resource/sqlupgrade/SQLServer/sql202410090203.sql create mode 100644 resource/sqlupgrade/ST/sql202410090103.sql create mode 100644 resource/sqlupgrade/ST/sql202410090203.sql diff --git a/resource/sqlupgrade/DM/sql202410090103.sql b/resource/sqlupgrade/DM/sql202410090103.sql new file mode 100644 index 000000000..69ba04c00 --- /dev/null +++ b/resource/sqlupgrade/DM/sql202410090103.sql @@ -0,0 +1,54 @@ +alter table hrsa_bill_detail_temp add subcompany_name varchar2(200) NULL; +/ + +alter table hrsa_bill_detail_temp add subcompany_id NUMBER null; +/ + +alter table hrsa_bill_detail_temp add department_name varchar2(200) NULL; +/ + +alter table hrsa_bill_detail_temp add department_id NUMBER null; +/ + +alter table hrsa_bill_detail_temp add jobtitle_name varchar2(200) NULL; +/ + +alter table hrsa_bill_detail_temp add jobtitle_id NUMBER NULL; +/ + +alter table hrsa_bill_detail_temp add jobcall varchar2(200) NULL; +/ + +alter table hrsa_bill_detail_temp add jobcall_id NUMBER NULL; +/ + +alter table hrsa_bill_detail_temp add status varchar2(200) NULL; +/ + +alter table hrsa_bill_detail add subcompany_name varchar2(200) NULL; +/ + +alter table hrsa_bill_detail add subcompany_id NUMBER null; +/ + +alter table hrsa_bill_detail add department_name varchar2(200) NULL; +/ + +alter table hrsa_bill_detail add department_id NUMBER null; +/ + +alter table hrsa_bill_detail add jobtitle_name varchar2(200) NULL; +/ + +alter table hrsa_bill_detail add jobtitle_id NUMBER NULL; +/ + +alter table hrsa_bill_detail add jobcall varchar2(200) NULL; +/ + +alter table hrsa_bill_detail add jobcall_id NUMBER NULL; +/ + +alter table hrsa_bill_detail add status varchar2(200) NULL; +/ + diff --git a/resource/sqlupgrade/DM/sql202410090203.sql b/resource/sqlupgrade/DM/sql202410090203.sql new file mode 100644 index 000000000..32c3a6712 --- /dev/null +++ b/resource/sqlupgrade/DM/sql202410090203.sql @@ -0,0 +1,70 @@ +update hrsa_bill_detail a +set +( + department_id , + department_name, + subcompany_id , + subcompany_name, + jobtitle_id , + jobtitle_name , + jobcall_id, + jobcall, + status +) + = +( + select + b.departmentId, + b.departmentName, + b.subcompanyid, + b.subcompanyName, + b.jobtitleId, + b.jobtitleName, + b.jobcallId, + b.jobcall, + b.status from + ( + select + e.id as employeeId, + d.departmentname as departmentName, + d.id as departmentId, + sc.SUBCOMPANYNAME as subcompanyName, + sc.id as subcompanyid, + c.jobtitlename as jobtitleName, + c.id as jobtitleId, + e.status as status, + e.jobcall as jobcallId, + job.name as jobcall + from hrmresource e + left join hrmdepartment d on e.departmentid = d.id + left join hrmjobtitles c on e.jobtitle = c.id + left join HrmSubCompany sc on e.SUBCOMPANYID1=sc.id + left join hrmjobcall job on e.jobcall=job.id + where e.status not in (7) and (e.accounttype is null or e.accounttype = 0) + ) b + where a.employee_id = b.employeeId +) +where a.delete_type=0 and + exists (select 1 from ( + select + e.id as employeeId, + d.departmentname as departmentName, + d.id as departmentId, + sc.SUBCOMPANYNAME as subcompanyName, + sc.id as subcompanyid, + c.jobtitlename as jobtitleName, + c.id as jobtitleId, + e.status as status, + e.jobcall as jobcallId, + job.name as jobcall + from hrmresource e + left join hrmdepartment d on e.departmentid = d.id + left join hrmjobtitles c on e.jobtitle = c.id + left join HrmSubCompany sc on e.SUBCOMPANYID1=sc.id + left join hrmjobcall job on e.jobcall=job.id + where e.status not in (7) and (e.accounttype is null or e.accounttype = 0) + ) b + where a.employee_id = b.employeeId + ); +/ + diff --git a/resource/sqlupgrade/GS/sql202410090103.sql b/resource/sqlupgrade/GS/sql202410090103.sql new file mode 100644 index 000000000..69ba04c00 --- /dev/null +++ b/resource/sqlupgrade/GS/sql202410090103.sql @@ -0,0 +1,54 @@ +alter table hrsa_bill_detail_temp add subcompany_name varchar2(200) NULL; +/ + +alter table hrsa_bill_detail_temp add subcompany_id NUMBER null; +/ + +alter table hrsa_bill_detail_temp add department_name varchar2(200) NULL; +/ + +alter table hrsa_bill_detail_temp add department_id NUMBER null; +/ + +alter table hrsa_bill_detail_temp add jobtitle_name varchar2(200) NULL; +/ + +alter table hrsa_bill_detail_temp add jobtitle_id NUMBER NULL; +/ + +alter table hrsa_bill_detail_temp add jobcall varchar2(200) NULL; +/ + +alter table hrsa_bill_detail_temp add jobcall_id NUMBER NULL; +/ + +alter table hrsa_bill_detail_temp add status varchar2(200) NULL; +/ + +alter table hrsa_bill_detail add subcompany_name varchar2(200) NULL; +/ + +alter table hrsa_bill_detail add subcompany_id NUMBER null; +/ + +alter table hrsa_bill_detail add department_name varchar2(200) NULL; +/ + +alter table hrsa_bill_detail add department_id NUMBER null; +/ + +alter table hrsa_bill_detail add jobtitle_name varchar2(200) NULL; +/ + +alter table hrsa_bill_detail add jobtitle_id NUMBER NULL; +/ + +alter table hrsa_bill_detail add jobcall varchar2(200) NULL; +/ + +alter table hrsa_bill_detail add jobcall_id NUMBER NULL; +/ + +alter table hrsa_bill_detail add status varchar2(200) NULL; +/ + diff --git a/resource/sqlupgrade/GS/sql202410090203.sql b/resource/sqlupgrade/GS/sql202410090203.sql new file mode 100644 index 000000000..32c3a6712 --- /dev/null +++ b/resource/sqlupgrade/GS/sql202410090203.sql @@ -0,0 +1,70 @@ +update hrsa_bill_detail a +set +( + department_id , + department_name, + subcompany_id , + subcompany_name, + jobtitle_id , + jobtitle_name , + jobcall_id, + jobcall, + status +) + = +( + select + b.departmentId, + b.departmentName, + b.subcompanyid, + b.subcompanyName, + b.jobtitleId, + b.jobtitleName, + b.jobcallId, + b.jobcall, + b.status from + ( + select + e.id as employeeId, + d.departmentname as departmentName, + d.id as departmentId, + sc.SUBCOMPANYNAME as subcompanyName, + sc.id as subcompanyid, + c.jobtitlename as jobtitleName, + c.id as jobtitleId, + e.status as status, + e.jobcall as jobcallId, + job.name as jobcall + from hrmresource e + left join hrmdepartment d on e.departmentid = d.id + left join hrmjobtitles c on e.jobtitle = c.id + left join HrmSubCompany sc on e.SUBCOMPANYID1=sc.id + left join hrmjobcall job on e.jobcall=job.id + where e.status not in (7) and (e.accounttype is null or e.accounttype = 0) + ) b + where a.employee_id = b.employeeId +) +where a.delete_type=0 and + exists (select 1 from ( + select + e.id as employeeId, + d.departmentname as departmentName, + d.id as departmentId, + sc.SUBCOMPANYNAME as subcompanyName, + sc.id as subcompanyid, + c.jobtitlename as jobtitleName, + c.id as jobtitleId, + e.status as status, + e.jobcall as jobcallId, + job.name as jobcall + from hrmresource e + left join hrmdepartment d on e.departmentid = d.id + left join hrmjobtitles c on e.jobtitle = c.id + left join HrmSubCompany sc on e.SUBCOMPANYID1=sc.id + left join hrmjobcall job on e.jobcall=job.id + where e.status not in (7) and (e.accounttype is null or e.accounttype = 0) + ) b + where a.employee_id = b.employeeId + ); +/ + diff --git a/resource/sqlupgrade/JC/sql202410090103.sql b/resource/sqlupgrade/JC/sql202410090103.sql new file mode 100644 index 000000000..69ba04c00 --- /dev/null +++ b/resource/sqlupgrade/JC/sql202410090103.sql @@ -0,0 +1,54 @@ +alter table hrsa_bill_detail_temp add subcompany_name varchar2(200) NULL; +/ + +alter table hrsa_bill_detail_temp add subcompany_id NUMBER null; +/ + +alter table hrsa_bill_detail_temp add department_name varchar2(200) NULL; +/ + +alter table hrsa_bill_detail_temp add department_id NUMBER null; +/ + +alter table hrsa_bill_detail_temp add jobtitle_name varchar2(200) NULL; +/ + +alter table hrsa_bill_detail_temp add jobtitle_id NUMBER NULL; +/ + +alter table hrsa_bill_detail_temp add jobcall varchar2(200) NULL; +/ + +alter table hrsa_bill_detail_temp add jobcall_id NUMBER NULL; +/ + +alter table hrsa_bill_detail_temp add status varchar2(200) NULL; +/ + +alter table hrsa_bill_detail add subcompany_name varchar2(200) NULL; +/ + +alter table hrsa_bill_detail add subcompany_id NUMBER null; +/ + +alter table hrsa_bill_detail add department_name varchar2(200) NULL; +/ + +alter table hrsa_bill_detail add department_id NUMBER null; +/ + +alter table hrsa_bill_detail add jobtitle_name varchar2(200) NULL; +/ + +alter table hrsa_bill_detail add jobtitle_id NUMBER NULL; +/ + +alter table hrsa_bill_detail add jobcall varchar2(200) NULL; +/ + +alter table hrsa_bill_detail add jobcall_id NUMBER NULL; +/ + +alter table hrsa_bill_detail add status varchar2(200) NULL; +/ + diff --git a/resource/sqlupgrade/JC/sql202410090203.sql b/resource/sqlupgrade/JC/sql202410090203.sql new file mode 100644 index 000000000..32c3a6712 --- /dev/null +++ b/resource/sqlupgrade/JC/sql202410090203.sql @@ -0,0 +1,70 @@ +update hrsa_bill_detail a +set +( + department_id , + department_name, + subcompany_id , + subcompany_name, + jobtitle_id , + jobtitle_name , + jobcall_id, + jobcall, + status +) + = +( + select + b.departmentId, + b.departmentName, + b.subcompanyid, + b.subcompanyName, + b.jobtitleId, + b.jobtitleName, + b.jobcallId, + b.jobcall, + b.status from + ( + select + e.id as employeeId, + d.departmentname as departmentName, + d.id as departmentId, + sc.SUBCOMPANYNAME as subcompanyName, + sc.id as subcompanyid, + c.jobtitlename as jobtitleName, + c.id as jobtitleId, + e.status as status, + e.jobcall as jobcallId, + job.name as jobcall + from hrmresource e + left join hrmdepartment d on e.departmentid = d.id + left join hrmjobtitles c on e.jobtitle = c.id + left join HrmSubCompany sc on e.SUBCOMPANYID1=sc.id + left join hrmjobcall job on e.jobcall=job.id + where e.status not in (7) and (e.accounttype is null or e.accounttype = 0) + ) b + where a.employee_id = b.employeeId +) +where a.delete_type=0 and + exists (select 1 from ( + select + e.id as employeeId, + d.departmentname as departmentName, + d.id as departmentId, + sc.SUBCOMPANYNAME as subcompanyName, + sc.id as subcompanyid, + c.jobtitlename as jobtitleName, + c.id as jobtitleId, + e.status as status, + e.jobcall as jobcallId, + job.name as jobcall + from hrmresource e + left join hrmdepartment d on e.departmentid = d.id + left join hrmjobtitles c on e.jobtitle = c.id + left join HrmSubCompany sc on e.SUBCOMPANYID1=sc.id + left join hrmjobcall job on e.jobcall=job.id + where e.status not in (7) and (e.accounttype is null or e.accounttype = 0) + ) b + where a.employee_id = b.employeeId + ); +/ + diff --git a/resource/sqlupgrade/Mysql/sql202410090103.sql b/resource/sqlupgrade/Mysql/sql202410090103.sql new file mode 100644 index 000000000..a7bb9b4d8 --- /dev/null +++ b/resource/sqlupgrade/Mysql/sql202410090103.sql @@ -0,0 +1,22 @@ +ALTER TABLE hrsa_bill_detail_temp +ADD COLUMN subcompany_name text , +ADD COLUMN subcompany_id bigint(0), +ADD COLUMN department_name text , +ADD COLUMN department_id bigint(0), +ADD COLUMN jobtitle_name text , +ADD COLUMN jobtitle_id bigint(0) , +ADD COLUMN jobcall text , +ADD COLUMN jobcall_id bigint(0), +ADD COLUMN status text ; + + +ALTER TABLE hrsa_bill_detail +ADD COLUMN subcompany_name text , +ADD COLUMN subcompany_id bigint(0), +ADD COLUMN department_name text , +ADD COLUMN department_id bigint(0), +ADD COLUMN jobtitle_name text , +ADD COLUMN jobtitle_id bigint(0) , +ADD COLUMN jobcall text , +ADD COLUMN jobcall_id bigint(0), +ADD COLUMN status text ; \ No newline at end of file diff --git a/resource/sqlupgrade/Mysql/sql202410090203.sql b/resource/sqlupgrade/Mysql/sql202410090203.sql new file mode 100644 index 000000000..0b58cbde8 --- /dev/null +++ b/resource/sqlupgrade/Mysql/sql202410090203.sql @@ -0,0 +1,29 @@ +update hrsa_bill_detail a INNER JOIN ( + select e.id as employeeId, + d.departmentname as departmentName, + d.id as departmentId, + sc.SUBCOMPANYNAME as subcompanyName, + sc.id as subcompanyid, + c.jobtitlename as jobtitleName, + c.id as jobtitleId, + e.status as status, + e.jobcall as jobcallId, + job.name as jobcall + from hrmresource e + left join hrmdepartment d on e.departmentid = d.id + left join hrmjobtitles c on e.jobtitle = c.id + left join HrmSubCompany sc on e.SUBCOMPANYID1=sc.id + left join hrmjobcall job on e.jobcall=job.id + where e.status not in (7) and (e.accounttype is null or e.accounttype = 0) + ) as b +on a.employee_id = b.employeeId + set a.department_id = b.departmentId, + a.department_name = b.departmentName, + a.subcompany_id = b.subcompanyid, + a.subcompany_name = b.subcompanyName, + a.jobtitle_id = b.jobtitleId, + a.jobtitle_name = b.jobtitleName, + a.jobcall_id = b.jobcallId, + a.jobcall = b.jobcall, + a.status = b.status +where a.delete_type=0; \ No newline at end of file diff --git a/resource/sqlupgrade/Oracle/sql202410090103.sql b/resource/sqlupgrade/Oracle/sql202410090103.sql new file mode 100644 index 000000000..c4c7780d7 --- /dev/null +++ b/resource/sqlupgrade/Oracle/sql202410090103.sql @@ -0,0 +1,37 @@ +alter table hrsa_bill_detail_temp add subcompany_name varchar2(200) NULL +/ +alter table hrsa_bill_detail_temp add subcompany_id NUMBER null +/ +alter table hrsa_bill_detail_temp add department_name varchar2(200) NULL +/ +alter table hrsa_bill_detail_temp add department_id NUMBER null +/ +alter table hrsa_bill_detail_temp add jobtitle_name varchar2(200) NULL +/ +alter table hrsa_bill_detail_temp add jobtitle_id NUMBER NULL +/ +alter table hrsa_bill_detail_temp add jobcall varchar2(200) NULL +/ +alter table hrsa_bill_detail_temp add jobcall_id NUMBER NULL +/ +alter table hrsa_bill_detail_temp add status varchar2(200) NULL +/ + +alter table hrsa_bill_detail add subcompany_name varchar2(200) NULL +/ +alter table hrsa_bill_detail add subcompany_id NUMBER null +/ +alter table hrsa_bill_detail add department_name varchar2(200) NULL +/ +alter table hrsa_bill_detail add department_id NUMBER null +/ +alter table hrsa_bill_detail add jobtitle_name varchar2(200) NULL +/ +alter table hrsa_bill_detail add jobtitle_id NUMBER NULL +/ +alter table hrsa_bill_detail add jobcall varchar2(200) NULL +/ +alter table hrsa_bill_detail add jobcall_id NUMBER NULL +/ +alter table hrsa_bill_detail add status varchar2(200) NULL +/ \ No newline at end of file diff --git a/resource/sqlupgrade/Oracle/sql202410090203.sql b/resource/sqlupgrade/Oracle/sql202410090203.sql new file mode 100644 index 000000000..27f8f43c6 --- /dev/null +++ b/resource/sqlupgrade/Oracle/sql202410090203.sql @@ -0,0 +1,69 @@ +update hrsa_bill_detail a +set +( + department_id , + department_name, + subcompany_id , + subcompany_name, + jobtitle_id , + jobtitle_name , + jobcall_id, + jobcall, + status +) + = +( + select + b.departmentId, + b.departmentName, + b.subcompanyid, + b.subcompanyName, + b.jobtitleId, + b.jobtitleName, + b.jobcallId, + b.jobcall, + b.status from + ( + select + e.id as employeeId, + d.departmentname as departmentName, + d.id as departmentId, + sc.SUBCOMPANYNAME as subcompanyName, + sc.id as subcompanyid, + c.jobtitlename as jobtitleName, + c.id as jobtitleId, + e.status as status, + e.jobcall as jobcallId, + job.name as jobcall + from hrmresource e + left join hrmdepartment d on e.departmentid = d.id + left join hrmjobtitles c on e.jobtitle = c.id + left join HrmSubCompany sc on e.SUBCOMPANYID1=sc.id + left join hrmjobcall job on e.jobcall=job.id + where e.status not in (7) and (e.accounttype is null or e.accounttype = 0) + ) b + where a.employee_id = b.employeeId +) +where a.delete_type=0 and + exists (select 1 from ( + select + e.id as employeeId, + d.departmentname as departmentName, + d.id as departmentId, + sc.SUBCOMPANYNAME as subcompanyName, + sc.id as subcompanyid, + c.jobtitlename as jobtitleName, + c.id as jobtitleId, + e.status as status, + e.jobcall as jobcallId, + job.name as jobcall + from hrmresource e + left join hrmdepartment d on e.departmentid = d.id + left join hrmjobtitles c on e.jobtitle = c.id + left join HrmSubCompany sc on e.SUBCOMPANYID1=sc.id + left join hrmjobcall job on e.jobcall=job.id + where e.status not in (7) and (e.accounttype is null or e.accounttype = 0) + ) b + where a.employee_id = b.employeeId + ) +/ \ No newline at end of file diff --git a/resource/sqlupgrade/PG/sql202410090103.sql b/resource/sqlupgrade/PG/sql202410090103.sql new file mode 100644 index 000000000..b1954e9d6 --- /dev/null +++ b/resource/sqlupgrade/PG/sql202410090103.sql @@ -0,0 +1,54 @@ +alter table hrsa_bill_detail_temp add subcompany_name varchar2(200) NULL; +/ + +alter table hrsa_bill_detail_temp add subcompany_id NUMBER null; +/ + +alter table hrsa_bill_detail_temp add department_name varchar2(200) NULL; +/ + +alter table hrsa_bill_detail_temp add department_id NUMBER null; +/ + +alter table hrsa_bill_detail_temp add jobtitle_name varchar2(200) NULL; +/ + +alter table hrsa_bill_detail_temp add jobtitle_id NUMBER NULL; +/ + +alter table hrsa_bill_detail_temp add jobcall varchar2(200) NULL; +/ + +alter table hrsa_bill_detail_temp add jobcall_id NUMBER NULL; +/ + +alter table hrsa_bill_detail_temp add status varchar2(200) NULL; +/ + + +alter table hrsa_bill_detail add subcompany_name varchar2(200) NULL; +/ + +alter table hrsa_bill_detail add subcompany_id NUMBER null; +/ + +alter table hrsa_bill_detail add department_name varchar2(200) NULL; +/ + +alter table hrsa_bill_detail add department_id NUMBER null; +/ + +alter table hrsa_bill_detail add jobtitle_name varchar2(200) NULL; +/ + +alter table hrsa_bill_detail add jobtitle_id NUMBER NULL; +/ + +alter table hrsa_bill_detail add jobcall varchar2(200) NULL; +/ + +alter table hrsa_bill_detail add jobcall_id NUMBER NULL; +/ + +alter table hrsa_bill_detail add status varchar2(200) NULL; +/ \ No newline at end of file diff --git a/resource/sqlupgrade/PG/sql202410090203.sql b/resource/sqlupgrade/PG/sql202410090203.sql new file mode 100644 index 000000000..1c23bc156 --- /dev/null +++ b/resource/sqlupgrade/PG/sql202410090203.sql @@ -0,0 +1,68 @@ +update hrsa_bill_detail a +set +( + department_id , + department_name, + subcompany_id , + subcompany_name, + jobtitle_id , + jobtitle_name , + jobcall_id, + jobcall, + status +) + = +( + select + b.departmentId, + b.departmentName, + b.subcompanyid, + b.subcompanyName, + b.jobtitleId, + b.jobtitleName, + b.jobcallId, + b.jobcall, + b.status from + ( + select + e.id as employeeId, + d.departmentname as departmentName, + d.id as departmentId, + sc.SUBCOMPANYNAME as subcompanyName, + sc.id as subcompanyid, + c.jobtitlename as jobtitleName, + c.id as jobtitleId, + e.status as status, + e.jobcall as jobcallId, + job.name as jobcall + from hrmresource e + left join hrmdepartment d on e.departmentid = d.id + left join hrmjobtitles c on e.jobtitle = c.id + left join HrmSubCompany sc on e.SUBCOMPANYID1=sc.id + left join hrmjobcall job on e.jobcall=job.id + where e.status not in (7) and (e.accounttype is null or e.accounttype = 0) + ) b + where a.employee_id = b.employeeId +) +where a.delete_type=0 and + exists (select 1 from ( + select + e.id as employeeId, + d.departmentname as departmentName, + d.id as departmentId, + sc.SUBCOMPANYNAME as subcompanyName, + sc.id as subcompanyid, + c.jobtitlename as jobtitleName, + c.id as jobtitleId, + e.status as status, + e.jobcall as jobcallId, + job.name as jobcall + from hrmresource e + left join hrmdepartment d on e.departmentid = d.id + left join hrmjobtitles c on e.jobtitle = c.id + left join HrmSubCompany sc on e.SUBCOMPANYID1=sc.id + left join hrmjobcall job on e.jobcall=job.id + where e.status not in (7) and (e.accounttype is null or e.accounttype = 0) + ) b + where a.employee_id = b.employeeId + ); \ No newline at end of file diff --git a/resource/sqlupgrade/SQLServer/sql202410090103.sql b/resource/sqlupgrade/SQLServer/sql202410090103.sql new file mode 100644 index 000000000..08a49b2d1 --- /dev/null +++ b/resource/sqlupgrade/SQLServer/sql202410090103.sql @@ -0,0 +1,23 @@ +ALTER TABLE hrsa_bill_detail_temp +ADD subcompany_name varchar(200), +subcompany_id bigint, +department_name varchar(200), +department_id bigint, +jobtitle_name varchar(200), +jobtitle_id bigint, +jobcall varchar(200), +jobcall_id bigint, +status varchar(200) +GO + +ALTER TABLE hrsa_bill_detail +ADD subcompany_name varchar(200), +subcompany_id bigint, +department_name varchar(200), +department_id bigint, +jobtitle_name varchar(200), +jobtitle_id bigint, +jobcall varchar(200), +jobcall_id bigint, +status varchar(200) +GO \ No newline at end of file diff --git a/resource/sqlupgrade/SQLServer/sql202410090203.sql b/resource/sqlupgrade/SQLServer/sql202410090203.sql new file mode 100644 index 000000000..979d152c9 --- /dev/null +++ b/resource/sqlupgrade/SQLServer/sql202410090203.sql @@ -0,0 +1,31 @@ +UPDATE hrsa_bill_detail +set department_id = b.departmentId, + department_name = b.departmentName, + subcompany_id = b.subcompanyid, + subcompany_name = b.subcompanyName, + jobtitle_id = b.jobtitleId, + jobtitle_name = b.jobtitleName, + jobcall_id = b.jobcallId, + jobcall = b.jobcall, + status = b.status +FROM hrsa_salary_acct_emp a INNER JOIN ( + select e.id as employeeId, + d.departmentname as departmentName, + d.id as departmentId, + sc.SUBCOMPANYNAME as subcompanyName, + sc.id as subcompanyid, + c.jobtitlename as jobtitleName, + c.id as jobtitleId, + e.status as status, + e.jobcall as jobcallId, + job.name as jobcall + from hrmresource e + left join hrmdepartment d on e.departmentid = d.id + left join hrmjobtitles c on e.jobtitle = c.id + left join HrmSubCompany sc on e.SUBCOMPANYID1=sc.id + left join hrmjobcall job on e.jobcall=job.id + where e.status not in (7) and (e.accounttype is null or e.accounttype = 0) + ) as b +on a.employee_id = b.employeeId +WHERE a.delete_type=0 +GO \ No newline at end of file diff --git a/resource/sqlupgrade/ST/sql202410090103.sql b/resource/sqlupgrade/ST/sql202410090103.sql new file mode 100644 index 000000000..69ba04c00 --- /dev/null +++ b/resource/sqlupgrade/ST/sql202410090103.sql @@ -0,0 +1,54 @@ +alter table hrsa_bill_detail_temp add subcompany_name varchar2(200) NULL; +/ + +alter table hrsa_bill_detail_temp add subcompany_id NUMBER null; +/ + +alter table hrsa_bill_detail_temp add department_name varchar2(200) NULL; +/ + +alter table hrsa_bill_detail_temp add department_id NUMBER null; +/ + +alter table hrsa_bill_detail_temp add jobtitle_name varchar2(200) NULL; +/ + +alter table hrsa_bill_detail_temp add jobtitle_id NUMBER NULL; +/ + +alter table hrsa_bill_detail_temp add jobcall varchar2(200) NULL; +/ + +alter table hrsa_bill_detail_temp add jobcall_id NUMBER NULL; +/ + +alter table hrsa_bill_detail_temp add status varchar2(200) NULL; +/ + +alter table hrsa_bill_detail add subcompany_name varchar2(200) NULL; +/ + +alter table hrsa_bill_detail add subcompany_id NUMBER null; +/ + +alter table hrsa_bill_detail add department_name varchar2(200) NULL; +/ + +alter table hrsa_bill_detail add department_id NUMBER null; +/ + +alter table hrsa_bill_detail add jobtitle_name varchar2(200) NULL; +/ + +alter table hrsa_bill_detail add jobtitle_id NUMBER NULL; +/ + +alter table hrsa_bill_detail add jobcall varchar2(200) NULL; +/ + +alter table hrsa_bill_detail add jobcall_id NUMBER NULL; +/ + +alter table hrsa_bill_detail add status varchar2(200) NULL; +/ + diff --git a/resource/sqlupgrade/ST/sql202410090203.sql b/resource/sqlupgrade/ST/sql202410090203.sql new file mode 100644 index 000000000..32c3a6712 --- /dev/null +++ b/resource/sqlupgrade/ST/sql202410090203.sql @@ -0,0 +1,70 @@ +update hrsa_bill_detail a +set +( + department_id , + department_name, + subcompany_id , + subcompany_name, + jobtitle_id , + jobtitle_name , + jobcall_id, + jobcall, + status +) + = +( + select + b.departmentId, + b.departmentName, + b.subcompanyid, + b.subcompanyName, + b.jobtitleId, + b.jobtitleName, + b.jobcallId, + b.jobcall, + b.status from + ( + select + e.id as employeeId, + d.departmentname as departmentName, + d.id as departmentId, + sc.SUBCOMPANYNAME as subcompanyName, + sc.id as subcompanyid, + c.jobtitlename as jobtitleName, + c.id as jobtitleId, + e.status as status, + e.jobcall as jobcallId, + job.name as jobcall + from hrmresource e + left join hrmdepartment d on e.departmentid = d.id + left join hrmjobtitles c on e.jobtitle = c.id + left join HrmSubCompany sc on e.SUBCOMPANYID1=sc.id + left join hrmjobcall job on e.jobcall=job.id + where e.status not in (7) and (e.accounttype is null or e.accounttype = 0) + ) b + where a.employee_id = b.employeeId +) +where a.delete_type=0 and + exists (select 1 from ( + select + e.id as employeeId, + d.departmentname as departmentName, + d.id as departmentId, + sc.SUBCOMPANYNAME as subcompanyName, + sc.id as subcompanyid, + c.jobtitlename as jobtitleName, + c.id as jobtitleId, + e.status as status, + e.jobcall as jobcallId, + job.name as jobcall + from hrmresource e + left join hrmdepartment d on e.departmentid = d.id + left join hrmjobtitles c on e.jobtitle = c.id + left join HrmSubCompany sc on e.SUBCOMPANYID1=sc.id + left join hrmjobcall job on e.jobcall=job.id + where e.status not in (7) and (e.accounttype is null or e.accounttype = 0) + ) b + where a.employee_id = b.employeeId + ); +/ + diff --git a/src/com/engine/salary/entity/siaccount/param/InsuranceAccountDetailParam.java b/src/com/engine/salary/entity/siaccount/param/InsuranceAccountDetailParam.java index b8e56f090..d348af32b 100644 --- a/src/com/engine/salary/entity/siaccount/param/InsuranceAccountDetailParam.java +++ b/src/com/engine/salary/entity/siaccount/param/InsuranceAccountDetailParam.java @@ -44,6 +44,8 @@ public class InsuranceAccountDetailParam extends BaseQueryParam { private String workcode; private List departmentIds; + private List fixedDepartmentIds; private List subCompanyIds; + private List fixedSubCompanyIds; } diff --git a/src/com/engine/salary/entity/siaccount/param/SupplementAccountBaseParam.java b/src/com/engine/salary/entity/siaccount/param/SupplementAccountBaseParam.java index 0125705dd..7b42531c7 100644 --- a/src/com/engine/salary/entity/siaccount/param/SupplementAccountBaseParam.java +++ b/src/com/engine/salary/entity/siaccount/param/SupplementAccountBaseParam.java @@ -87,4 +87,15 @@ public class SupplementAccountBaseParam { * 补缴类型 */ private String supplementType; + + + private String subcompanyName; + private Long subcompanyId; + private String departmentName; + private Long departmentId; + private String jobtitleName; + private Long jobtitleId; + private String jobcall; + private Long jobcallId; + private String status; } diff --git a/src/com/engine/salary/entity/siaccount/po/InsuranceAccountBatchPO.java b/src/com/engine/salary/entity/siaccount/po/InsuranceAccountBatchPO.java index 362815eef..310bd8e17 100644 --- a/src/com/engine/salary/entity/siaccount/po/InsuranceAccountBatchPO.java +++ b/src/com/engine/salary/entity/siaccount/po/InsuranceAccountBatchPO.java @@ -129,5 +129,13 @@ public class InsuranceAccountBatchPO { @ElogTransform(name = "个税扣缴义务人id") private Long paymentOrganization; - + private String subcompanyName; + private Long subcompanyId; + private String departmentName; + private Long departmentId; + private String jobtitleName; + private Long jobtitleId; + private String jobcall; + private Long jobcallId; + private String status; } diff --git a/src/com/engine/salary/entity/siaccount/po/InsuranceAccountDetailPO.java b/src/com/engine/salary/entity/siaccount/po/InsuranceAccountDetailPO.java index aadf8b4bb..310009f9c 100644 --- a/src/com/engine/salary/entity/siaccount/po/InsuranceAccountDetailPO.java +++ b/src/com/engine/salary/entity/siaccount/po/InsuranceAccountDetailPO.java @@ -328,4 +328,14 @@ public class InsuranceAccountDetailPO { */ @ElogTransform(name = "个税扣缴义务人") private Long paymentOrganization; + + private String subcompanyName; + private Long subcompanyId; + private String departmentName; + private Long departmentId; + private String jobtitleName; + private Long jobtitleId; + private String jobcall; + private Long jobcallId; + private String status; } diff --git a/src/com/engine/salary/entity/siaccount/po/InsuranceAccountDetailTempPO.java b/src/com/engine/salary/entity/siaccount/po/InsuranceAccountDetailTempPO.java index dc8c1c2c0..8d6d5254f 100644 --- a/src/com/engine/salary/entity/siaccount/po/InsuranceAccountDetailTempPO.java +++ b/src/com/engine/salary/entity/siaccount/po/InsuranceAccountDetailTempPO.java @@ -275,4 +275,15 @@ public class InsuranceAccountDetailTempPO { * 个税扣缴义务人 */ private Long paymentOrganization; + + + private String subcompanyName; + private Long subcompanyId; + private String departmentName; + private Long departmentId; + private String jobtitleName; + private Long jobtitleId; + private String jobcall; + private Long jobcallId; + private String status; } diff --git a/src/com/engine/salary/entity/siexport/po/AccountExportPO.java b/src/com/engine/salary/entity/siexport/po/AccountExportPO.java index 73c82c82e..cb7324228 100644 --- a/src/com/engine/salary/entity/siexport/po/AccountExportPO.java +++ b/src/com/engine/salary/entity/siexport/po/AccountExportPO.java @@ -22,8 +22,12 @@ public class AccountExportPO extends InsuranceAccountDetailPO { @I18n private String departmentName; + @I18n + private String fixedDepartmentName; + private Integer userStatus; + private Integer fixedUserStatus; private String workcode; } diff --git a/src/com/engine/salary/mapper/InsuranceExportMapper.xml b/src/com/engine/salary/mapper/InsuranceExportMapper.xml index dbe86d9f6..f12ae2d49 100644 --- a/src/com/engine/salary/mapper/InsuranceExportMapper.xml +++ b/src/com/engine/salary/mapper/InsuranceExportMapper.xml @@ -3,6 +3,8 @@ SELECT a.*, + a.department_name AS fixedDepartmentName, + a.status AS fixedUserStatus, e.lastname AS userName, e.MOBILE AS telephone, d.departmentname AS departmentName, @@ -147,6 +155,8 @@ SELECT a.*, + a.department_name AS fixedDepartmentName, + a.status AS fixedUserStatus, e.username AS userName, e.mobile AS telephone, d.departmentname AS departmentName, @@ -223,6 +237,8 @@ SELECT - a.*,e.username AS userName,e.mobile AS telephone,d.departmentname AS departmentName,e.status AS userStatus,e.workcode AS workcode + a.*,a.department_name AS fixedDepartmentName,a.status AS fixedUserStatus, + e.username AS userName,e.mobile AS telephone,d.departmentname AS departmentName,e.status AS userStatus,e.workcode AS workcode FROM( SELECT * from hrsa_excel_bill_detail WHERE delete_type = 0 AND bill_month = #{param.billMonth} AND payment_status = #{param.paymentStatus} AND payment_organization = #{param.paymentOrganization} @@ -277,7 +296,8 @@ @@ -117,6 +128,9 @@ update_time, + + type, + @@ -146,6 +160,9 @@ #{updateTime}, + + #{type}, + @@ -161,6 +178,7 @@ template_name=#{templateName}, tenant_key=#{tenantKey}, update_time=#{updateTime}, + type=#{type}, WHERE id = #{id} AND delete_type = 0 @@ -194,6 +212,9 @@ update_time=#{updateTime}, + + type=#{type}, + WHERE id = #{id} AND delete_type = 0 diff --git a/src/com/engine/salary/service/SalaryAcctExcelService.java b/src/com/engine/salary/service/SalaryAcctExcelService.java index 44aed9df9..e23815ba3 100644 --- a/src/com/engine/salary/service/SalaryAcctExcelService.java +++ b/src/com/engine/salary/service/SalaryAcctExcelService.java @@ -117,7 +117,7 @@ public interface SalaryAcctExcelService { ExcelPreviewDTO previewImportSalaryAcctResult(SalaryAcctImportParam param); - void cacheImportField(List salaryItems); + void cacheImportField(SalaryAcctResultTemplateSaveParam param); void cacheExportField(List salaryItems); diff --git a/src/com/engine/salary/service/SalaryAcctResultTemplateService.java b/src/com/engine/salary/service/SalaryAcctResultTemplateService.java index 7696cb4bf..a2b4c9c4a 100644 --- a/src/com/engine/salary/service/SalaryAcctResultTemplateService.java +++ b/src/com/engine/salary/service/SalaryAcctResultTemplateService.java @@ -75,5 +75,5 @@ public interface SalaryAcctResultTemplateService { * @param salarySobId * @return */ - List listBySalarySobId(Long salarySobId); + List listBySalarySobId(Long salarySobId,List types); } diff --git a/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java index 01aee1e36..aef1bb7c3 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java @@ -591,11 +591,12 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc // .build()) // .collect(Collectors.toList()); // 缓存勾选 - String cacheKey = user.getUID() + SalaryItemConstant.RESULT_IMPORT_FIELD_SIGN; - String cacheValue = (String) Util_DataCache.getObjVal(cacheKey); - List checkItems = JsonUtil.parseList(cacheValue, Long.class) == null ? new ArrayList<>() : JsonUtil.parseList(cacheValue, Long.class); - // 转换成dto -// return SalaryAcctImportFieldDTO.builder().formulaItems(formulaItems).sqlItems(sqlItems).inputItems(inputItems).checkItems(checkItems).build(); + List checkItems = new ArrayList<>(); + List salaryAcctResultTemplatePOS = getSalaryAcctResultTemplateService(user).listBySalarySobId(salaryAcctRecordPO.getSalarySobId(), Arrays.asList(2)); + if (CollectionUtils.isNotEmpty(salaryAcctResultTemplatePOS)) { + String items = salaryAcctResultTemplatePOS.get(0).getSalaryItemIds(); + checkItems = Arrays.stream(items.split(",")).map(Long::valueOf).collect(Collectors.toList()); + } return SalaryAcctImportFieldDTO.builder().itemsByGroup(itemsByGroup).checkItems(checkItems).build(); } @@ -667,18 +668,22 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc @Override public XSSFWorkbook exportImportTemplate(SalaryAcctImportTemplateParam param) { -// ValidUtil.doValidator(param); - // 从缓存中获取所选的薪资项目 - String cacheKey = user.getUID() + SalaryItemConstant.RESULT_IMPORT_FIELD_SIGN; - String cacheValue = (String) Util_DataCache.getObjVal(cacheKey); - List checkItems = JsonUtil.parseList(cacheValue, Long.class) == null ? new ArrayList<>() : JsonUtil.parseList(cacheValue, Long.class); + + // 查询薪资核算记录 + SalaryAcctRecordPO salaryAcctRecordPO = getSalaryAcctRecordService(user).getById(param.getSalaryAcctRecordId()); + if (Objects.isNull(salaryAcctRecordPO)) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98747, "薪资核算记录不存在或已被删除")); + } + + List checkItems = new ArrayList<>(); + List salaryAcctResultTemplatePOS = getSalaryAcctResultTemplateService(user).listBySalarySobId(salaryAcctRecordPO.getSalarySobId(), Arrays.asList(2)); + if (CollectionUtils.isNotEmpty(salaryAcctResultTemplatePOS)) { + String items = salaryAcctResultTemplatePOS.get(0).getSalaryItemIds(); + checkItems = Arrays.stream(items.split(",")).map(Long::valueOf).collect(Collectors.toList()); + } + // 必须选择导入模板所需的薪资项目 if (CollectionUtils.isEmpty(checkItems)) { - // 获取所有可以选择的薪资项目 - SalaryAcctRecordPO salaryAcctRecordPO = getSalaryAcctRecordService(user).getById(param.getSalaryAcctRecordId()); - if (Objects.isNull(salaryAcctRecordPO)) { - throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98747, "薪资核算记录不存在或已被删除")); - } // 查询薪资核算记录所用的薪资账套的薪资项目副本 List salarySobItems = getSalarySobItemService(user).listBySalarySobId(salaryAcctRecordPO.getSalarySobId()); List salaryItemIds = SalaryEntityUtil.properties(salarySobItems, SalarySobItemPO::getSalaryItemId, Collectors.toList()); @@ -688,11 +693,7 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc checkItems = salaryItemIds; } param.setSalaryItemIds(checkItems); - // 查询薪资核算记录 - SalaryAcctRecordPO salaryAcctRecordPO = getSalaryAcctRecordService(user).getById(param.getSalaryAcctRecordId()); - if (Objects.isNull(salaryAcctRecordPO)) { - throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98747, "薪资核算记录不存在或已被删除")); - } + // // 模板表头(默认必带"个税扣缴义务人"、"姓名") // List headerList = Lists.newArrayList(SalaryI18nUtil.getI18nLabel(85429, "姓名"), // "部门", @@ -976,9 +977,32 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc } @Override - public void cacheImportField(List salaryItems) { - String cacheKey = user.getUID() + SalaryItemConstant.RESULT_IMPORT_FIELD_SIGN; - Util_DataCache.setObjVal(cacheKey, JsonUtil.toJsonString(salaryItems)); + public void cacheImportField(SalaryAcctResultTemplateSaveParam saveParam) { + Long salaryAcctRecordId = saveParam.getSalaryAcctRecordId(); + SalaryAcctRecordPO salaryAcctRecordPO = getSalaryAcctRecordService(user).getById(salaryAcctRecordId); + if (salaryAcctRecordPO == null) { + throw new SalaryRunTimeException("薪资核算记录不存在"); + } + + List salaryAcctResultTemplatePOS = getSalaryAcctResultTemplateService(user).listBySalarySobId(salaryAcctRecordPO.getSalarySobId(), Collections.singletonList(2)); + if (CollectionUtils.isNotEmpty(salaryAcctResultTemplatePOS)) { + salaryAcctResultTemplatePOS.forEach(templatePO -> getSalaryAcctResultTemplateService(user).deleteById(templatePO.getId())); + } + + Date now = new Date(); + SalaryAcctResultTemplatePO templatePO = SalaryAcctResultTemplatePO.builder() + .id(IdGenerator.generate()) + .type(2) + .salarySobId(salaryAcctRecordPO.getSalarySobId()) + .salaryItemIds(StringUtils.join(saveParam.getSalaryItemIds(), ",")) + .templateName("") + .creator((long) user.getUID()) + .createTime(now) + .updateTime(now) + .deleteType(0) + .build(); + getSalaryAcctResultTemplateService(user).insertIgnoreNull(templatePO); + } @Override @@ -1467,7 +1491,7 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc throw new SalaryRunTimeException("薪资核算记录不存在"); } saveParam.setSalarySobId(salaryAcctRecordPO.getSalarySobId()); - List templateBySobId = getSalaryAcctResultTemplateService(user).listBySalarySobId(saveParam.getSalarySobId()); + List templateBySobId = getSalaryAcctResultTemplateService(user).listBySalarySobId(saveParam.getSalarySobId(), Arrays.asList(0, 1)); if (saveParam.getId() != null) { Optional saveNameOptional = templateBySobId.stream().filter(po -> po.getTemplateName().equals(saveParam.getTemplateName()) && !po.getId().equals(saveParam.getId())).findFirst(); if (saveNameOptional.isPresent()) { @@ -1480,6 +1504,7 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc } salaryAcctResultTemplatePO.setSalaryItemIds(StringUtils.join(saveParam.getSalaryItemIds(), ",")); salaryAcctResultTemplatePO.setTemplateName(saveParam.getTemplateName()); + salaryAcctResultTemplatePO.setType(0); salaryAcctResultTemplatePO.setUpdateTime(new Date()); getSalaryAcctResultTemplateService(user).update(salaryAcctResultTemplatePO); } else { @@ -1489,16 +1514,18 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc } // 新建 Date now = new Date(); - getSalaryAcctResultTemplateService(user).insertIgnoreNull(SalaryAcctResultTemplatePO.builder() + SalaryAcctResultTemplatePO templatePO = SalaryAcctResultTemplatePO.builder() .id(IdGenerator.generate()) + .type(0) .salarySobId(saveParam.getSalarySobId()) .salaryItemIds(StringUtils.join(saveParam.getSalaryItemIds(), ",")) .templateName(saveParam.getTemplateName()) - .creator(Long.valueOf(user.getUID())) + .creator((long) user.getUID()) .createTime(now) .updateTime(now) .deleteType(0) - .build()); + .build(); + getSalaryAcctResultTemplateService(user).insertIgnoreNull(templatePO); } } @@ -1525,7 +1552,7 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc if (salaryAcctRecordPO == null) { throw new SalaryRunTimeException("薪资核算记录为空"); } - List salaryAcctResultTemplatePOS = getSalaryAcctResultTemplateService(user).listBySalarySobId(salaryAcctRecordPO.getSalarySobId()); + List salaryAcctResultTemplatePOS = getSalaryAcctResultTemplateService(user).listBySalarySobId(salaryAcctRecordPO.getSalarySobId(), Arrays.asList(0, 1)); if (StringUtils.isNotBlank(param.getTemplateName())) { salaryAcctResultTemplatePOS = salaryAcctResultTemplatePOS.stream().filter(po -> po.getTemplateName().contains(param.getTemplateName())).collect(Collectors.toList()); } diff --git a/src/com/engine/salary/service/impl/SalaryAcctResultTemplateServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctResultTemplateServiceImpl.java index c79f314f8..219d971f6 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctResultTemplateServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctResultTemplateServiceImpl.java @@ -63,10 +63,10 @@ public class SalaryAcctResultTemplateServiceImpl extends Service implements Sala } @Override - public List listBySalarySobId(Long salarySobId) { + public List listBySalarySobId(Long salarySobId,List types) { if (salarySobId == null) { return Collections.emptyList(); } - return getSalaryAcctResultTemplateMapper().listSome(SalaryAcctResultTemplatePO.builder().salarySobId(salarySobId).build()); + return getSalaryAcctResultTemplateMapper().listSome(SalaryAcctResultTemplatePO.builder().salarySobId(salarySobId).types(types).build()); } } diff --git a/src/com/engine/salary/web/SalaryAcctController.java b/src/com/engine/salary/web/SalaryAcctController.java index 49fba1129..c8739df1d 100644 --- a/src/com/engine/salary/web/SalaryAcctController.java +++ b/src/com/engine/salary/web/SalaryAcctController.java @@ -167,7 +167,7 @@ public class SalaryAcctController { @GET @Path("/compareSobConfig") @Produces(MediaType.APPLICATION_JSON) - public String compareSobConfig(@Context HttpServletRequest request, @Context HttpServletResponse response,@QueryParam(value = "id") Long id) { + public String compareSobConfig(@Context HttpServletRequest request, @Context HttpServletResponse response, @QueryParam(value = "id") Long id) { User user = HrmUserVarify.getUser(request, response); return new ResponseResult(user).run(getSalaryAcctRecordWrapper(user)::compareSobConfig, id); } @@ -181,7 +181,7 @@ public class SalaryAcctController { @GET @Path("/updateSobConfig") @Produces(MediaType.APPLICATION_JSON) - public String updateSobConfig(@Context HttpServletRequest request, @Context HttpServletResponse response,@QueryParam(value = "id") Long id) { + public String updateSobConfig(@Context HttpServletRequest request, @Context HttpServletResponse response, @QueryParam(value = "id") Long id) { User user = HrmUserVarify.getUser(request, response); return new ResponseResult(user).run(getSalaryAcctRecordWrapper(user)::updateSobConfig, id); } @@ -583,9 +583,9 @@ public class SalaryAcctController { @POST @Path("/acctresult/cacheImportField") @Produces(MediaType.APPLICATION_JSON) - public String cacheImportField(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryAcctImportParam param) { + public String cacheImportField(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryAcctResultTemplateSaveParam param) { User user = HrmUserVarify.getUser(request, response); - return new ResponseResult, String>(user).run(getSalaryAcctExcelService(user)::cacheImportField, param.getSalaryItems()); + return new ResponseResult(user).run(getSalaryAcctExcelService(user)::cacheImportField, param); } // 薪资核算导出字段缓存 @@ -630,7 +630,7 @@ public class SalaryAcctController { @Produces(MediaType.APPLICATION_JSON) public String exportTemplateList(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryAcctResultTemplateSaveParam param) { User user = HrmUserVarify.getUser(request, response); - return new ResponseResult>(user).run(getSalaryAcctExcelService(user)::exportTemplateList, param); + return new ResponseResult>(user).run(getSalaryAcctExcelService(user)::exportTemplateList, param); } From da4e908a7de8be3f65e98b5fd7fcc1197b0d8275 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Thu, 10 Oct 2024 14:16:57 +0800 Subject: [PATCH 063/218] =?UTF-8?q?=E6=A8=A1=E6=9D=BFsql?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resource/sqlupgrade/DM/sql202410100103.sql | 8 ++++++++ resource/sqlupgrade/GS/sql202410100103.sql | 8 ++++++++ resource/sqlupgrade/JC/sql202410100103.sql | 8 ++++++++ resource/sqlupgrade/Mysql/sql202410100103.sql | 3 +++ resource/sqlupgrade/Oracle/sql202410100103.sql | 7 +++++++ resource/sqlupgrade/PG/sql202410100103.sql | 3 +++ resource/sqlupgrade/SQLServer/sql202410100103.sql | 5 +++++ resource/sqlupgrade/ST/sql202410100103.sql | 8 ++++++++ 8 files changed, 50 insertions(+) create mode 100644 resource/sqlupgrade/DM/sql202410100103.sql create mode 100644 resource/sqlupgrade/GS/sql202410100103.sql create mode 100644 resource/sqlupgrade/JC/sql202410100103.sql create mode 100644 resource/sqlupgrade/Mysql/sql202410100103.sql create mode 100644 resource/sqlupgrade/Oracle/sql202410100103.sql create mode 100644 resource/sqlupgrade/PG/sql202410100103.sql create mode 100644 resource/sqlupgrade/SQLServer/sql202410100103.sql create mode 100644 resource/sqlupgrade/ST/sql202410100103.sql diff --git a/resource/sqlupgrade/DM/sql202410100103.sql b/resource/sqlupgrade/DM/sql202410100103.sql new file mode 100644 index 000000000..4d36ef44a --- /dev/null +++ b/resource/sqlupgrade/DM/sql202410100103.sql @@ -0,0 +1,8 @@ +ALTER TABLE hrsa_acct_result_template ADD ( + type number NULL +); +/ + +update hrsa_acct_result_template set type = 0; +/ + diff --git a/resource/sqlupgrade/GS/sql202410100103.sql b/resource/sqlupgrade/GS/sql202410100103.sql new file mode 100644 index 000000000..4d36ef44a --- /dev/null +++ b/resource/sqlupgrade/GS/sql202410100103.sql @@ -0,0 +1,8 @@ +ALTER TABLE hrsa_acct_result_template ADD ( + type number NULL +); +/ + +update hrsa_acct_result_template set type = 0; +/ + diff --git a/resource/sqlupgrade/JC/sql202410100103.sql b/resource/sqlupgrade/JC/sql202410100103.sql new file mode 100644 index 000000000..4d36ef44a --- /dev/null +++ b/resource/sqlupgrade/JC/sql202410100103.sql @@ -0,0 +1,8 @@ +ALTER TABLE hrsa_acct_result_template ADD ( + type number NULL +); +/ + +update hrsa_acct_result_template set type = 0; +/ + diff --git a/resource/sqlupgrade/Mysql/sql202410100103.sql b/resource/sqlupgrade/Mysql/sql202410100103.sql new file mode 100644 index 000000000..5b645e3f6 --- /dev/null +++ b/resource/sqlupgrade/Mysql/sql202410100103.sql @@ -0,0 +1,3 @@ +ALTER TABLE hrsa_acct_result_template ADD COLUMN type int(0) NULL ; + +update hrsa_acct_result_template set type = 0; diff --git a/resource/sqlupgrade/Oracle/sql202410100103.sql b/resource/sqlupgrade/Oracle/sql202410100103.sql new file mode 100644 index 000000000..90d5981fd --- /dev/null +++ b/resource/sqlupgrade/Oracle/sql202410100103.sql @@ -0,0 +1,7 @@ +ALTER TABLE hrsa_acct_result_template ADD ( + type number NULL +) +/ + +update hrsa_acct_result_template set type = 0 +/ \ No newline at end of file diff --git a/resource/sqlupgrade/PG/sql202410100103.sql b/resource/sqlupgrade/PG/sql202410100103.sql new file mode 100644 index 000000000..2deb5e3a5 --- /dev/null +++ b/resource/sqlupgrade/PG/sql202410100103.sql @@ -0,0 +1,3 @@ +alter table hrsa_acct_result_template add type int null ; + +update hrsa_acct_result_template set type = 0; \ No newline at end of file diff --git a/resource/sqlupgrade/SQLServer/sql202410100103.sql b/resource/sqlupgrade/SQLServer/sql202410100103.sql new file mode 100644 index 000000000..f2820af3a --- /dev/null +++ b/resource/sqlupgrade/SQLServer/sql202410100103.sql @@ -0,0 +1,5 @@ +ALTER TABLE hrsa_acct_result_template ADD type int NULL +GO + +update hrsa_acct_result_template set type = 0 +GO \ No newline at end of file diff --git a/resource/sqlupgrade/ST/sql202410100103.sql b/resource/sqlupgrade/ST/sql202410100103.sql new file mode 100644 index 000000000..4d36ef44a --- /dev/null +++ b/resource/sqlupgrade/ST/sql202410100103.sql @@ -0,0 +1,8 @@ +ALTER TABLE hrsa_acct_result_template ADD ( + type number NULL +); +/ + +update hrsa_acct_result_template set type = 0; +/ + From 8d8fc5c15d9045ad4241fbd72dcec6688d688f71 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Fri, 11 Oct 2024 10:17:35 +0800 Subject: [PATCH 064/218] =?UTF-8?q?=E7=A4=BE=E4=BF=9D=E5=8F=B0=E8=B4=A6?= =?UTF-8?q?=E4=BA=BA=E5=91=98=E4=BF=A1=E6=81=AF=E5=BF=AB=E7=85=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salary/mapper/InsuranceExportMapper.xml | 6 ++-- .../InsuranceAccountDetailMapper.xml | 28 +++++++++++++------ 2 files changed, 22 insertions(+), 12 deletions(-) diff --git a/src/com/engine/salary/mapper/InsuranceExportMapper.xml b/src/com/engine/salary/mapper/InsuranceExportMapper.xml index f12ae2d49..cc4934057 100644 --- a/src/com/engine/salary/mapper/InsuranceExportMapper.xml +++ b/src/com/engine/salary/mapper/InsuranceExportMapper.xml @@ -284,7 +284,7 @@ + SELECT + + FROM hrsa_page_list_setting t + WHERE delete_type = 0 + + + + + + + + + + + + INSERT INTO hrsa_page_list_setting + + + + create_time, + + + creator, + + + delete_type, + + + page, + + + setting, + + + tenant_key, + + + update_time, + + + + + #{createTime}, + + + #{creator}, + + + #{deleteType}, + + + #{page}, + + + #{setting}, + + + #{tenantKey}, + + + #{updateTime}, + + + + + + + + UPDATE hrsa_page_list_setting + + create_time=#{createTime}, + creator=#{creator}, + delete_type=#{deleteType}, + page=#{page}, + setting=#{setting}, + tenant_key=#{tenantKey}, + update_time=#{updateTime}, + + WHERE id = #{id} AND delete_type = 0 + + + + + + UPDATE hrsa_page_list_setting + + + create_time=#{createTime}, + + + creator=#{creator}, + + + delete_type=#{deleteType}, + + + page=#{page}, + + + setting=#{setting}, + + + tenant_key=#{tenantKey}, + + + update_time=#{updateTime}, + + + WHERE id = #{id} AND delete_type = 0 + + + + + + UPDATE hrsa_page_list_setting + SET delete_type=1 + WHERE id = #{id} + AND delete_type = 0 + + + + UPDATE hrsa_page_list_setting + SET delete_type = 1 + WHERE delete_type = 0 + AND id IN + + #{id} + + + + + + + \ No newline at end of file diff --git a/src/com/engine/salary/report/service/impl/SalaryStatisticsEmployeeServiceImpl.java b/src/com/engine/salary/report/service/impl/SalaryStatisticsEmployeeServiceImpl.java index 5728f0886..635134b5f 100644 --- a/src/com/engine/salary/report/service/impl/SalaryStatisticsEmployeeServiceImpl.java +++ b/src/com/engine/salary/report/service/impl/SalaryStatisticsEmployeeServiceImpl.java @@ -25,10 +25,7 @@ import com.engine.salary.report.entity.param.SalaryStatisticsEmployeeSalaryQuery import com.engine.salary.report.service.SalaryStatisticsEmployeeService; import com.engine.salary.service.*; import com.engine.salary.service.impl.*; -import com.engine.salary.util.SalaryAssert; -import com.engine.salary.util.SalaryDateUtil; -import com.engine.salary.util.SalaryEntityUtil; -import com.engine.salary.util.SalaryI18nUtil; +import com.engine.salary.util.*; import com.engine.salary.util.db.MapperProxyFactory; import com.engine.salary.util.page.PageInfo; import com.engine.salary.util.page.SalaryPageUtil; @@ -89,6 +86,10 @@ public class SalaryStatisticsEmployeeServiceImpl extends Service implements Sala return ServiceUtil.getService(SalaryEmployeeServiceImpl.class, user); } + private SettingService getSettingService(User user) { + return ServiceUtil.getService(SettingServiceImpl.class, user); + } + @Override public PageInfo listPage(SalaryStatisticsEmployeeQueryParam queryParam) { List list = Collections.emptyList(); @@ -270,7 +271,7 @@ public class SalaryStatisticsEmployeeServiceImpl extends Service implements Sala map.put("id", se.getId().toString()); map.put("salaryMonth", SalaryDateUtil.getFormatYearMonth(se.getSalaryMonth())); map.put("taxAgent", taxAgentMap.get(se.getTaxAgentId())); - map.put("salarySob",SalarySobMap.get(se.getSalarySobId())); + map.put("salarySob", SalarySobMap.get(se.getSalarySobId())); map.put("acctTimes", salaryAcctRecordMap.get(se.getSalaryAcctRecordId())); map.put("userName", Util.null2String(emp.getUsername())); map.put("subCompany", Util.null2String(emp.getSubcompanyName())); @@ -302,10 +303,10 @@ public class SalaryStatisticsEmployeeServiceImpl extends Service implements Sala // 2.年月参数处理,注意:薪资所属月居然是用字符串存储的,无法通过sql between处理 List dataParam = new ArrayList<>(); if (StringUtils.isNotBlank(queryParam.getStartDateStr())) { - dataParam.add(SalaryDateUtil.dateStrToLocalTime(queryParam.getStartDateStr()+ "-01 00:00:00")); + dataParam.add(SalaryDateUtil.dateStrToLocalTime(queryParam.getStartDateStr() + "-01 00:00:00")); } if (StringUtils.isNotBlank(queryParam.getEndDateStr())) { - dataParam.add(SalaryDateUtil.dateStrToLocalTime(queryParam.getEndDateStr()+ "-01 00:00:00")); + dataParam.add(SalaryDateUtil.dateStrToLocalTime(queryParam.getEndDateStr() + "-01 00:00:00")); } Set salaryMonths = SalaryStatisticsEmployeeBO.getSalaryMonths(null, dataParam) .stream() @@ -319,13 +320,13 @@ public class SalaryStatisticsEmployeeServiceImpl extends Service implements Sala // 根据分部、部门筛选 List employeeList = getSalaryEmployeeService(user).listBySubCompanyOrDepartment(queryParam.getSubCompanyIds(), queryParam.getDepartmentIds()); // 根据关键词过滤 - if(StringUtils.isNotBlank(queryParam.getKeyword())) { + if (StringUtils.isNotBlank(queryParam.getKeyword())) { employeeList = employeeList.stream() .filter(e -> (e.getUsername().contains(queryParam.getKeyword()) || (StringUtils.isNotEmpty(e.getWorkcode()) && e.getWorkcode().contains(queryParam.getKeyword())))) .collect(Collectors.toList()); } List employeeIds = employeeList.stream().map(DataCollectionEmployee::getEmployeeId).collect(Collectors.toList()); - salaryAcctEmployeeList = salaryAcctEmployeeList.stream().filter( acctEmp -> employeeIds.contains(acctEmp.getEmployeeId())).collect(Collectors.toList()); + salaryAcctEmployeeList = salaryAcctEmployeeList.stream().filter(acctEmp -> employeeIds.contains(acctEmp.getEmployeeId())).collect(Collectors.toList()); } if (CollectionUtils.isEmpty(salaryAcctEmployeeList)) { return new PageInfo<>(); @@ -358,23 +359,25 @@ public class SalaryStatisticsEmployeeServiceImpl extends Service implements Sala List salaryAcctResultValues = getSalaryAcctResultService(user).listBySalaryAcctEmployeeIds(salaryAcctEmployeeIds); // 3.获取薪资项目 - List salaryItemList = getSalaryItemService(user).listAll(); - salaryItemList = salaryItemList.stream() - .sorted(new Comparator() { - @Override - public int compare(SalaryItemPO o1, SalaryItemPO o2) { - if (o1.getSortedIndex() == null && o2.getSortedIndex() == null) { - Integer systemType1 = o1.getSystemType() == null ? 0 : o1.getSystemType(); - Integer systemType2 = o2.getSystemType() == null ? 0 : o2.getSystemType(); - return systemType1.compareTo(systemType2); - } else { - Integer sortedIndex1 = o1.getSortedIndex() == null ? 0 : o1.getSortedIndex(); - Integer sortedIndex2 = o2.getSortedIndex() == null ? 0 : o2.getSortedIndex(); - return sortedIndex2.compareTo(sortedIndex1); - } - } - }) - .collect(Collectors.toList()); + Map setting = getSettingService(user).getPageListSetting("salary_details_report"); + List checked = setting.get("checked") != null ? JsonUtil.parseList(setting.get("checked"), Long.class) : new ArrayList<>(); + List salaryItemList = getSalaryItemService(user).listByIds(checked); +// salaryItemList = salaryItemList.stream() +// .sorted(new Comparator() { +// @Override +// public int compare(SalaryItemPO o1, SalaryItemPO o2) { +// if (o1.getSortedIndex() == null && o2.getSortedIndex() == null) { +// Integer systemType1 = o1.getSystemType() == null ? 0 : o1.getSystemType(); +// Integer systemType2 = o2.getSystemType() == null ? 0 : o2.getSystemType(); +// return systemType1.compareTo(systemType2); +// } else { +// Integer sortedIndex1 = o1.getSortedIndex() == null ? 0 : o1.getSortedIndex(); +// Integer sortedIndex2 = o2.getSortedIndex() == null ? 0 : o2.getSortedIndex(); +// return sortedIndex2.compareTo(sortedIndex1); +// } +// } +// }) +// .collect(Collectors.toList()); return SalaryStatisticsEmployeeDetailResultDTO.builder() .salaryAcctEmployeeList(salaryAcctEmployeeList) diff --git a/src/com/engine/salary/report/web/SalaryStatisticsEmployeeController.java b/src/com/engine/salary/report/web/SalaryStatisticsEmployeeController.java index b4e668513..4fa4ae64a 100644 --- a/src/com/engine/salary/report/web/SalaryStatisticsEmployeeController.java +++ b/src/com/engine/salary/report/web/SalaryStatisticsEmployeeController.java @@ -73,7 +73,7 @@ public class SalaryStatisticsEmployeeController { } /** - * 员工薪资列表 + * 薪资明细 * * @param queryParam * @return diff --git a/src/com/engine/salary/report/wrapper/SalaryStatisticsEmployeeWrapper.java b/src/com/engine/salary/report/wrapper/SalaryStatisticsEmployeeWrapper.java index 646600f08..63e0863cf 100644 --- a/src/com/engine/salary/report/wrapper/SalaryStatisticsEmployeeWrapper.java +++ b/src/com/engine/salary/report/wrapper/SalaryStatisticsEmployeeWrapper.java @@ -229,6 +229,9 @@ public class SalaryStatisticsEmployeeWrapper extends Service { // 获取发薪人员 PageInfo salaryAcctEmployeePageInfo = getSalaryStatisticsEmployeeService(user).listSalaryAcctEmp(queryParam); List employeePOS = salaryAcctEmployeePageInfo.getList(); + if (CollectionUtils.isEmpty(employeePOS)){ + return resultMap; + } Map sumResultMap = Maps.newHashMap(); diff --git a/src/com/engine/salary/service/SettingService.java b/src/com/engine/salary/service/SettingService.java new file mode 100644 index 000000000..7b4f1d9bc --- /dev/null +++ b/src/com/engine/salary/service/SettingService.java @@ -0,0 +1,11 @@ +package com.engine.salary.service; + +import com.engine.salary.entity.setting.param.PageListSettingSaveParam; + +import java.util.Map; + +public interface SettingService { + void savePageListSetting(PageListSettingSaveParam pageListSettingSaveParam); + + Map getPageListSetting(String page); +} diff --git a/src/com/engine/salary/service/impl/SettingServiceImpl.java b/src/com/engine/salary/service/impl/SettingServiceImpl.java new file mode 100644 index 000000000..66b13c126 --- /dev/null +++ b/src/com/engine/salary/service/impl/SettingServiceImpl.java @@ -0,0 +1,102 @@ +package com.engine.salary.service.impl; + +import cn.hutool.core.util.StrUtil; +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.param.PageListSettingSaveParam; +import com.engine.salary.entity.setting.po.PageListSettingPO; +import com.engine.salary.mapper.setting.PageListSettingMapper; +import com.engine.salary.service.SalaryItemService; +import com.engine.salary.service.SalarySobService; +import com.engine.salary.service.SettingService; +import com.engine.salary.util.JsonUtil; +import com.engine.salary.util.db.IdGenerator; +import com.engine.salary.util.db.MapperProxyFactory; +import weaver.hrm.User; + +import java.util.*; +import java.util.stream.Collectors; + +import static com.engine.salary.constant.SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY; + +/** + * 薪资核算 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +public class SettingServiceImpl extends Service implements SettingService { + + private PageListSettingMapper getPageListSettingMapper() { + return MapperProxyFactory.getProxy(PageListSettingMapper.class); + } + + private SalarySobService getSalarySobService(User user) { + return ServiceUtil.getService(SalarySobServiceImpl.class, user); + } + + private SalaryItemService getSalaryItemService(User user) { + return ServiceUtil.getService(SalaryItemServiceImpl.class, user); + } + + @Override + public void savePageListSetting(PageListSettingSaveParam pageListSettingSaveParam) { + Date now = new Date(); + + PageListSettingPO pageListSettingPO = getPageListSettingMapper().getByPage(pageListSettingSaveParam.getPage()); + if (pageListSettingPO != null) { + pageListSettingPO.setSetting(JsonUtil.toJsonString(pageListSettingSaveParam.getSetting())); + pageListSettingPO.setUpdateTime(now); + getPageListSettingMapper().updateIgnoreNull(pageListSettingPO); + } else { + pageListSettingPO = PageListSettingPO.builder() + .id(IdGenerator.generate()) + .page(pageListSettingSaveParam.getPage()) + .setting(JsonUtil.toJsonString(pageListSettingSaveParam.getSetting())) + .creator((long) user.getUID()) + .createTime(now) + .updateTime(now) + .deleteType(0) + .tenantKey(DEFAULT_TENANT_KEY) + .build(); + getPageListSettingMapper().insertIgnoreNull(pageListSettingPO); + } + } + + @Override + public Map getPageListSetting(String page) { + + Map result = new HashMap(); + PageListSettingPO pageListSettingPO = getPageListSettingMapper().getByPage(page); + if ("salary_details_report".equals(page)) { + List salaryItemList = getSalaryItemService(user).listAll(); + salaryItemList = salaryItemList.stream() + .sorted(new Comparator() { + @Override + public int compare(SalaryItemPO o1, SalaryItemPO o2) { + if (o1.getSortedIndex() == null && o2.getSortedIndex() == null) { + Integer systemType1 = o1.getSystemType() == null ? 0 : o1.getSystemType(); + Integer systemType2 = o2.getSystemType() == null ? 0 : o2.getSystemType(); + return systemType1.compareTo(systemType2); + } else { + Integer sortedIndex1 = o1.getSortedIndex() == null ? 0 : o1.getSortedIndex(); + Integer sortedIndex2 = o2.getSortedIndex() == null ? 0 : o2.getSortedIndex(); + return sortedIndex2.compareTo(sortedIndex1); + } + } + }) + .collect(Collectors.toList()); + result.put("setting", salaryItemList); + if (pageListSettingPO != null && StrUtil.isNotEmpty(pageListSettingPO.getSetting())) { + result.put("checked", JsonUtil.parseList(pageListSettingPO.getSetting(), Long.class)); + } else { + List collect = salaryItemList.stream().map(SalaryItemPO::getId).collect(Collectors.toList()); + result.put("checked", collect); + } + } + return result; + } +} diff --git a/src/com/engine/salary/web/SalaryCommonController.java b/src/com/engine/salary/web/SalaryCommonController.java index 7f1637a5c..2f7e87d6e 100644 --- a/src/com/engine/salary/web/SalaryCommonController.java +++ b/src/com/engine/salary/web/SalaryCommonController.java @@ -1,19 +1,18 @@ package com.engine.salary.web; import com.engine.common.util.ServiceUtil; +import com.engine.salary.entity.setting.param.PageListSettingSaveParam; import com.engine.salary.util.ResponseResult; import com.engine.salary.util.SalaryEnumUtil; import com.engine.salary.wrapper.SalaryCommonWrapper; +import io.swagger.v3.oas.annotations.parameters.RequestBody; import lombok.extern.slf4j.Slf4j; import weaver.hrm.HrmUserVarify; import weaver.hrm.User; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import javax.ws.rs.GET; -import javax.ws.rs.Path; -import javax.ws.rs.Produces; -import javax.ws.rs.QueryParam; +import javax.ws.rs.*; import javax.ws.rs.core.Context; import javax.ws.rs.core.MediaType; import java.util.List; @@ -52,4 +51,25 @@ public class SalaryCommonController { } + /** + * 页面模板设置 + * + * @param param + * @return + */ + @POST + @Path("/pageList/save/setting") + @Produces(MediaType.APPLICATION_JSON) + public String savePageListSetting(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody PageListSettingSaveParam param) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getSalaryCommonWrapper(user)::savePageListSetting, param); + } + + @GET + @Path("/pageList/get/setting") + @Produces(MediaType.APPLICATION_JSON) + public String getPageListSetting(@Context HttpServletRequest request, @Context HttpServletResponse response, @QueryParam(value = "page") String page) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getSalaryCommonWrapper(user)::getPageListSetting, page); + } } diff --git a/src/com/engine/salary/wrapper/SalaryCommonWrapper.java b/src/com/engine/salary/wrapper/SalaryCommonWrapper.java index 982c1e5e9..cbeefbb42 100644 --- a/src/com/engine/salary/wrapper/SalaryCommonWrapper.java +++ b/src/com/engine/salary/wrapper/SalaryCommonWrapper.java @@ -2,10 +2,15 @@ package com.engine.salary.wrapper; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; +import com.engine.salary.entity.setting.param.PageListSettingSaveParam; 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 weaver.hrm.User; +import java.util.Map; + public class SalaryCommonWrapper extends Service { @@ -13,6 +18,10 @@ public class SalaryCommonWrapper extends Service { return ServiceUtil.getService(SalaryCacheServiceImpl.class, user); } + private SettingService getSettingService(User user) { + return ServiceUtil.getService(SettingServiceImpl.class, user); + } + public Object getCacheInfo(String key) { return getSalaryCacheService(user).get(key); } @@ -20,4 +29,13 @@ public class SalaryCommonWrapper extends Service { public void removeCache(String key) { getSalaryCacheService(user).remove(key); } + + public void savePageListSetting(PageListSettingSaveParam pageListSettingSaveParam) { + getSettingService(user).savePageListSetting(pageListSettingSaveParam); + } + + + public Map getPageListSetting(String page) { + return getSettingService(user).getPageListSetting(page); + } } From b6c7a7f2bd9a856bbe2ab697680e0d9e52825796 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Fri, 11 Oct 2024 17:04:13 +0800 Subject: [PATCH 068/218] =?UTF-8?q?=E8=87=AA=E5=AE=9A=E4=B9=89=E5=88=97?= =?UTF-8?q?=E5=85=A8=E5=B1=80=E8=AE=BE=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../param/PageListSettingQueryParam.java | 22 +++++++++++++ .../SalaryStatisticsEmployeeServiceImpl.java | 4 ++- .../engine/salary/service/SettingService.java | 3 +- .../service/impl/SettingServiceImpl.java | 33 +++++++++++-------- .../salary/web/SalaryCommonController.java | 7 ++-- .../salary/wrapper/SalaryCommonWrapper.java | 5 +-- 6 files changed, 53 insertions(+), 21 deletions(-) create mode 100644 src/com/engine/salary/entity/setting/param/PageListSettingQueryParam.java diff --git a/src/com/engine/salary/entity/setting/param/PageListSettingQueryParam.java b/src/com/engine/salary/entity/setting/param/PageListSettingQueryParam.java new file mode 100644 index 000000000..0de49c816 --- /dev/null +++ b/src/com/engine/salary/entity/setting/param/PageListSettingQueryParam.java @@ -0,0 +1,22 @@ +package com.engine.salary.entity.setting.param; + +import com.engine.salary.util.valid.DataCheck; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 薪资帐套表 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class PageListSettingQueryParam { + + @DataCheck(require = true,message = "请选择页面") + private String page; + + private String name; +} \ No newline at end of file diff --git a/src/com/engine/salary/report/service/impl/SalaryStatisticsEmployeeServiceImpl.java b/src/com/engine/salary/report/service/impl/SalaryStatisticsEmployeeServiceImpl.java index 635134b5f..dfab42262 100644 --- a/src/com/engine/salary/report/service/impl/SalaryStatisticsEmployeeServiceImpl.java +++ b/src/com/engine/salary/report/service/impl/SalaryStatisticsEmployeeServiceImpl.java @@ -10,6 +10,7 @@ import com.engine.salary.entity.salaryacct.po.SalaryAcctRecordPO; import com.engine.salary.entity.salaryacct.po.SalaryAcctResultPO; import com.engine.salary.entity.salaryitem.po.SalaryItemPO; import com.engine.salary.entity.salarysob.po.SalarySobPO; +import com.engine.salary.entity.setting.param.PageListSettingQueryParam; import com.engine.salary.entity.taxagent.po.TaxAgentPO; import com.engine.salary.enums.UserStatusEnum; import com.engine.salary.enums.datacollection.UseEmployeeTypeEnum; @@ -359,7 +360,8 @@ public class SalaryStatisticsEmployeeServiceImpl extends Service implements Sala List salaryAcctResultValues = getSalaryAcctResultService(user).listBySalaryAcctEmployeeIds(salaryAcctEmployeeIds); // 3.获取薪资项目 - Map setting = getSettingService(user).getPageListSetting("salary_details_report"); + PageListSettingQueryParam param = PageListSettingQueryParam.builder().page("salary_details_report").build(); + Map setting = getSettingService(user).getPageListSetting(param); List checked = setting.get("checked") != null ? JsonUtil.parseList(setting.get("checked"), Long.class) : new ArrayList<>(); List salaryItemList = getSalaryItemService(user).listByIds(checked); // salaryItemList = salaryItemList.stream() diff --git a/src/com/engine/salary/service/SettingService.java b/src/com/engine/salary/service/SettingService.java index 7b4f1d9bc..27b7e679e 100644 --- a/src/com/engine/salary/service/SettingService.java +++ b/src/com/engine/salary/service/SettingService.java @@ -1,5 +1,6 @@ package com.engine.salary.service; +import com.engine.salary.entity.setting.param.PageListSettingQueryParam; import com.engine.salary.entity.setting.param.PageListSettingSaveParam; import java.util.Map; @@ -7,5 +8,5 @@ import java.util.Map; public interface SettingService { void savePageListSetting(PageListSettingSaveParam pageListSettingSaveParam); - Map getPageListSetting(String page); + Map getPageListSetting(PageListSettingQueryParam param); } diff --git a/src/com/engine/salary/service/impl/SettingServiceImpl.java b/src/com/engine/salary/service/impl/SettingServiceImpl.java index 66b13c126..9f52b7ea8 100644 --- a/src/com/engine/salary/service/impl/SettingServiceImpl.java +++ b/src/com/engine/salary/service/impl/SettingServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.util.StrUtil; 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.param.PageListSettingQueryParam; import com.engine.salary.entity.setting.param.PageListSettingSaveParam; import com.engine.salary.entity.setting.po.PageListSettingPO; import com.engine.salary.mapper.setting.PageListSettingMapper; @@ -67,25 +68,29 @@ public class SettingServiceImpl extends Service implements SettingService { } @Override - public Map getPageListSetting(String page) { - + public Map getPageListSetting(PageListSettingQueryParam param) { + String page = param.getPage(); Map result = new HashMap(); PageListSettingPO pageListSettingPO = getPageListSettingMapper().getByPage(page); if ("salary_details_report".equals(page)) { List salaryItemList = getSalaryItemService(user).listAll(); salaryItemList = salaryItemList.stream() - .sorted(new Comparator() { - @Override - public int compare(SalaryItemPO o1, SalaryItemPO o2) { - if (o1.getSortedIndex() == null && o2.getSortedIndex() == null) { - Integer systemType1 = o1.getSystemType() == null ? 0 : o1.getSystemType(); - Integer systemType2 = o2.getSystemType() == null ? 0 : o2.getSystemType(); - return systemType1.compareTo(systemType2); - } else { - Integer sortedIndex1 = o1.getSortedIndex() == null ? 0 : o1.getSortedIndex(); - Integer sortedIndex2 = o2.getSortedIndex() == null ? 0 : o2.getSortedIndex(); - return sortedIndex2.compareTo(sortedIndex1); - } + .filter(po -> { + String name = param.getName(); + if (StrUtil.isNotEmpty(name)) { + return po.getName() != null && po.getName().contains(name); + } + return true; + }) + .sorted((o1, o2) -> { + if (o1.getSortedIndex() == null && o2.getSortedIndex() == null) { + Integer systemType1 = o1.getSystemType() == null ? 0 : o1.getSystemType(); + Integer systemType2 = o2.getSystemType() == null ? 0 : o2.getSystemType(); + return systemType1.compareTo(systemType2); + } else { + Integer sortedIndex1 = o1.getSortedIndex() == null ? 0 : o1.getSortedIndex(); + Integer sortedIndex2 = o2.getSortedIndex() == null ? 0 : o2.getSortedIndex(); + return sortedIndex2.compareTo(sortedIndex1); } }) .collect(Collectors.toList()); diff --git a/src/com/engine/salary/web/SalaryCommonController.java b/src/com/engine/salary/web/SalaryCommonController.java index 2f7e87d6e..d28dc0d86 100644 --- a/src/com/engine/salary/web/SalaryCommonController.java +++ b/src/com/engine/salary/web/SalaryCommonController.java @@ -1,6 +1,7 @@ package com.engine.salary.web; import com.engine.common.util.ServiceUtil; +import com.engine.salary.entity.setting.param.PageListSettingQueryParam; import com.engine.salary.entity.setting.param.PageListSettingSaveParam; import com.engine.salary.util.ResponseResult; import com.engine.salary.util.SalaryEnumUtil; @@ -65,11 +66,11 @@ public class SalaryCommonController { return new ResponseResult(user).run(getSalaryCommonWrapper(user)::savePageListSetting, param); } - @GET + @POST @Path("/pageList/get/setting") @Produces(MediaType.APPLICATION_JSON) - public String getPageListSetting(@Context HttpServletRequest request, @Context HttpServletResponse response, @QueryParam(value = "page") String page) { + 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, page); + return new ResponseResult(user).run(getSalaryCommonWrapper(user)::getPageListSetting, param); } } diff --git a/src/com/engine/salary/wrapper/SalaryCommonWrapper.java b/src/com/engine/salary/wrapper/SalaryCommonWrapper.java index cbeefbb42..e66e09121 100644 --- a/src/com/engine/salary/wrapper/SalaryCommonWrapper.java +++ b/src/com/engine/salary/wrapper/SalaryCommonWrapper.java @@ -2,6 +2,7 @@ package com.engine.salary.wrapper; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; +import com.engine.salary.entity.setting.param.PageListSettingQueryParam; import com.engine.salary.entity.setting.param.PageListSettingSaveParam; import com.engine.salary.service.SalaryCacheService; import com.engine.salary.service.SettingService; @@ -35,7 +36,7 @@ public class SalaryCommonWrapper extends Service { } - public Map getPageListSetting(String page) { - return getSettingService(user).getPageListSetting(page); + public Map getPageListSetting(PageListSettingQueryParam param) { + return getSettingService(user).getPageListSetting(param); } } From 4c4b6ab57d9ea0db10c2462b0e82cd2b5690b31f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Fri, 11 Oct 2024 17:14:14 +0800 Subject: [PATCH 069/218] =?UTF-8?q?=E5=AF=BC=E5=85=A5=E5=AD=97=E6=AE=B5?= =?UTF-8?q?=E6=8C=81=E4=B9=85=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salary/service/impl/SalaryAcctExcelServiceImpl.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java index aef1bb7c3..138f173c9 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java @@ -1,6 +1,7 @@ package com.engine.salary.service.impl; import cn.hutool.core.util.NumberUtil; +import cn.hutool.core.util.StrUtil; import com.api.formmode.mybatis.util.SqlProxyHandle; import com.cloudstore.dev.api.util.Util_DataCache; import com.engine.common.util.ServiceUtil; @@ -459,7 +460,7 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc SalaryAcctRecordPO byId = getSalaryAcctRecordService(user).getById(salaryAcctRecordPO.getId()); boolean isBackCalc = Objects.equals(byId.getBackCalcStatus(), 1); // 查询薪资账套下的薪资项目+员工信息字段 - SalarySobItemAggregateDTO salarySobItemAggregateDTO = getSalarySobItemService(user).getAggregateWithItemHideBySalarySobId(salaryAcctRecordPO.getId(),salaryAcctRecordPO.getSalarySobId(), isBackCalc); + SalarySobItemAggregateDTO salarySobItemAggregateDTO = getSalarySobItemService(user).getAggregateWithItemHideBySalarySobId(salaryAcctRecordPO.getId(), salaryAcctRecordPO.getSalarySobId(), isBackCalc); // 构建薪资核算结果列表表头 List columnList = SalaryAcctResultBO.buildTableColumns(salarySobItemAggregateDTO, ListUtils.emptyIfNull(salaryAcctRecordPO.getLockSalaryItemIds())); // 获取固定列头数 @@ -595,7 +596,7 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc List salaryAcctResultTemplatePOS = getSalaryAcctResultTemplateService(user).listBySalarySobId(salaryAcctRecordPO.getSalarySobId(), Arrays.asList(2)); if (CollectionUtils.isNotEmpty(salaryAcctResultTemplatePOS)) { String items = salaryAcctResultTemplatePOS.get(0).getSalaryItemIds(); - checkItems = Arrays.stream(items.split(",")).map(Long::valueOf).collect(Collectors.toList()); + checkItems = StrUtil.isNotEmpty(items) ? Arrays.stream(items.split(",")).map(Long::valueOf).collect(Collectors.toList()) : new ArrayList<>(); } return SalaryAcctImportFieldDTO.builder().itemsByGroup(itemsByGroup).checkItems(checkItems).build(); } @@ -891,7 +892,7 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc // headerList.add("手机号"); // headerList.add("工号"); // 查询薪资账套下的薪资项目 - SalarySobItemAggregateDTO salarySobItemAggregateDTO = getSalarySobItemService(user).getAggregateByRecordId(exportParam.getSalaryAcctRecordId(),true); + SalarySobItemAggregateDTO salarySobItemAggregateDTO = getSalarySobItemService(user).getAggregateByRecordId(exportParam.getSalaryAcctRecordId(), true); // // 员工信息 // for (SalarySobEmpFieldDTO item : salarySobItemAggregateDTO.getEmpFields()) { @@ -1169,7 +1170,7 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc //salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(102838, "姓名不能为空"), i, i, j, j); } else { //筛选导入人员信息可以在人力资源池中匹配到的人员信息 - List employeeSameIds = getSalaryEmployeeService(user).matchImportEmployee(confValue, salaryEmployees, dataValue, deparmentName, mobile, workcode,idNo, null); + List employeeSameIds = getSalaryEmployeeService(user).matchImportEmployee(confValue, salaryEmployees, dataValue, deparmentName, mobile, workcode, idNo, null); if (CollectionUtils.isEmpty(employeeSameIds)) { isError = true; From 3a224170f15caeefa130bb1dc128b3662e50947c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Fri, 11 Oct 2024 17:17:07 +0800 Subject: [PATCH 070/218] =?UTF-8?q?=E5=AF=BC=E5=85=A5=E5=AD=97=E6=AE=B5?= =?UTF-8?q?=E6=8C=81=E4=B9=85=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../engine/salary/service/impl/SalaryAcctExcelServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java index 138f173c9..75b63245c 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java @@ -680,7 +680,7 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc List salaryAcctResultTemplatePOS = getSalaryAcctResultTemplateService(user).listBySalarySobId(salaryAcctRecordPO.getSalarySobId(), Arrays.asList(2)); if (CollectionUtils.isNotEmpty(salaryAcctResultTemplatePOS)) { String items = salaryAcctResultTemplatePOS.get(0).getSalaryItemIds(); - checkItems = Arrays.stream(items.split(",")).map(Long::valueOf).collect(Collectors.toList()); + checkItems = StrUtil.isNotEmpty(items) ? Arrays.stream(items.split(",")).map(Long::valueOf).collect(Collectors.toList()) : new ArrayList<>(); } // 必须选择导入模板所需的薪资项目 From a0bc3b545278b034e5f94dbf9041b4f6f4bd9666 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Fri, 11 Oct 2024 17:32:02 +0800 Subject: [PATCH 071/218] =?UTF-8?q?=E8=AE=B0=E5=BD=95=E6=A0=B8=E7=AE=97?= =?UTF-8?q?=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/SalaryAcctExcelServiceImpl.java | 25 +++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java index 75b63245c..c7f3be70b 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java @@ -71,6 +71,7 @@ import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.util.IOUtils; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.springframework.beans.BeanUtils; +import org.springframework.util.StopWatch; import weaver.file.ImageFileManager; import weaver.hrm.User; @@ -1036,6 +1037,8 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc } private Map batchImport(SalaryAcctImportParam param, String importType) { + StopWatch stopWatch = new StopWatch("导入核算数据"); + stopWatch.start("数据准备"); Map apidatas = new HashMap(); ValidUtil.doValidator(param); Date now = new Date(); @@ -1053,27 +1056,38 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc if (salaryAcctRecordPO == null) { throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98747, "薪资核算记录不存在或已被删除")); } + stopWatch.stop(); // 薪资账套下的薪资项目副本 + stopWatch.start("薪资账套下的薪资项目副本"); List salarySobItemPOS = getSalarySobItemService(user).listBySalarySobId(salaryAcctRecordPO.getSalarySobId()); // 薪资项目 Set salaryItemIds = SalaryEntityUtil.properties(salarySobItemPOS, SalarySobItemPO::getSalaryItemId); List salaryItems = getSalaryItemService(user).listByIds(salaryItemIds); Map salaryItemMap = SalaryEntityUtil.convert2Map(salaryItems, SalaryItemPO::getName, SalaryItemPO::getId); + stopWatch.stop(); // 薪资核算确认的人员 + stopWatch.start("薪资核算确认的人员"); List salaryAcctEmployees = getSalaryAcctEmployeeService(user).listBySalaryAcctRecordId(salaryAcctRecordId); Map salaryAcctEmployeeMap = SalaryEntityUtil.convert2Map(salaryAcctEmployees, e -> e.getEmployeeId() + "-" + e.getTaxAgentId()); + stopWatch.stop(); // 租户下所有的人员 + stopWatch.start("薪资核算确认的人员"); List salaryEmployees = getSalaryEmployeeService(user).listAllForReport(); Map salaryEmployeeMap = SalaryEntityUtil.convert2Map(salaryEmployees, DataCollectionEmployee::getUsername, DataCollectionEmployee::getEmployeeId); Map emps = SalaryEntityUtil.convert2Map(salaryEmployees, DataCollectionEmployee::getEmployeeId); + stopWatch.stop(); // 租户下所有的个税扣缴义务人 + stopWatch.start("租户下所有的个税扣缴义务人"); List taxAgents = getTaxAgentService(user).listAll(); Map taxAgentNameMap = SalaryEntityUtil.convert2Map(taxAgents, TaxAgentPO::getName, TaxAgentPO::getId); + stopWatch.stop(); // 薪资核算人员信息字段 + stopWatch.start("薪资核算人员信息字段"); List salarySobEmpFieldPOS = getSalarySobEmpFieldService(user).listBySalarySobId(salaryAcctRecordPO.getSalarySobId()); List salarySobEmpFields = SalaryEntityUtil.properties(new SalarySobItemAggregateBO().buildEmpField(salarySobEmpFieldPOS), SalarySobEmpFieldDTO::getFieldName, Collectors.toList()); List excludeFields = Arrays.asList("个税扣缴义务人", "部门", "姓名"); salarySobEmpFields = salarySobEmpFields.stream().filter(field -> !excludeFields.contains(field)).collect(Collectors.toList()); + stopWatch.stop(); // 索引(用于计算进度) int index = 0; // 失败的数量 @@ -1103,10 +1117,10 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc fileInputStream = ImageFileManager.getInputStreamById(Integer.parseInt(param.getImageId())); - + stopWatch.start("解析文件"); Workbook workbook = ExcelSupport.parseFile(fileInputStream, EXCEL_TYPE_XLSX); Sheet sheet = workbook.getSheetAt(0); - + stopWatch.stop(); // 错误提示信息 List excelComments = Lists.newArrayList(); @@ -1136,6 +1150,7 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc if (CollectionUtils.isEmpty(data)) { throw new RuntimeException("无数据"); } + stopWatch.start("解析数据"); for (int i = 0; i < data.size(); i++) { String row = "第" + (i + 3) + "行"; @@ -1365,10 +1380,12 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc } successCount++; } + stopWatch.stop(); // 如果sheet包含错误数据 // if (CollectionUtils.isNotEmpty(errorDatas)) { // salaryBatchService.createErrorExcelSheet(headers, errorDatas, excelSheet.getName(), excelComments, errorExcelSheets); // } + stopWatch.start("插入数据"); if (StringUtils.equals("importExcelAcctResult", importType)) { getSalaryComparisonResultService(user).deleteBySalaryAcctRecordIds(Collections.singleton(salaryAcctRecordId)); if (CollectionUtils.isNotEmpty(excelAcctResults)) { @@ -1421,6 +1438,8 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc getSalaryAcctEmployeeService(user).batchSave(newSalaryAcctEmployees); } } + stopWatch.stop(); + stopWatch.start("锁定数据"); SalarySysConfPO autoLock = getSalarySysConfService(user).getOneByCode(SalarySysConstant.EDIT_IMPORT_AUTO_LOCK); if (autoLock != null && StringUtils.equals(autoLock.getConfValue(), "1")) { // 导入的列都自动锁定 @@ -1430,6 +1449,8 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc .lockStatus(LockStatusEnum.LOCK).build(); getSalaryAcctResultService(user).updateLockStatusByParam(updateLockStatusParam); } + stopWatch.stop(); + log.info(stopWatch.prettyPrint()); apidatas.put("successCount", successCount); apidatas.put("errorCount", failCount); From 265ca2a54ec063a0d8e2b383ed865522d3f455cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Fri, 11 Oct 2024 18:02:52 +0800 Subject: [PATCH 072/218] =?UTF-8?q?=E9=BB=98=E8=AE=A4=E5=B1=95=E7=A4=BA?= =?UTF-8?q?=E6=89=80=E6=9C=89=E8=96=AA=E8=B5=84=E6=98=8E=E7=BB=86=E5=88=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SalaryStatisticsEmployeeServiceImpl.java | 26 ++++++++++--------- 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/src/com/engine/salary/report/service/impl/SalaryStatisticsEmployeeServiceImpl.java b/src/com/engine/salary/report/service/impl/SalaryStatisticsEmployeeServiceImpl.java index 5728f0886..93a369d7a 100644 --- a/src/com/engine/salary/report/service/impl/SalaryStatisticsEmployeeServiceImpl.java +++ b/src/com/engine/salary/report/service/impl/SalaryStatisticsEmployeeServiceImpl.java @@ -345,18 +345,6 @@ public class SalaryStatisticsEmployeeServiceImpl extends Service implements Sala @Override public SalaryStatisticsEmployeeDetailResultDTO getDetailSalaryAcctResultByAcctEmp(List salaryAcctEmployeeList) { - if (CollectionUtils.isEmpty(salaryAcctEmployeeList)) { - return SalaryStatisticsEmployeeDetailResultDTO.builder() - .salaryAcctEmployeeList(Collections.emptyList()) - .salaryAcctResultValueList(Collections.emptyList()) - .salaryItemList(Collections.emptyList()) - .build(); - } - - // 获取核算结果数据 - List salaryAcctEmployeeIds = salaryAcctEmployeeList.stream().map(SalaryAcctEmployeePO::getId).collect(Collectors.toList()); - List salaryAcctResultValues = getSalaryAcctResultService(user).listBySalaryAcctEmployeeIds(salaryAcctEmployeeIds); - // 3.获取薪资项目 List salaryItemList = getSalaryItemService(user).listAll(); salaryItemList = salaryItemList.stream() @@ -376,6 +364,20 @@ public class SalaryStatisticsEmployeeServiceImpl extends Service implements Sala }) .collect(Collectors.toList()); + if (CollectionUtils.isEmpty(salaryAcctEmployeeList)) { + return SalaryStatisticsEmployeeDetailResultDTO.builder() + .salaryAcctEmployeeList(Collections.emptyList()) + .salaryAcctResultValueList(Collections.emptyList()) + .salaryItemList(salaryItemList) + .build(); + } + + // 获取核算结果数据 + List salaryAcctEmployeeIds = salaryAcctEmployeeList.stream().map(SalaryAcctEmployeePO::getId).collect(Collectors.toList()); + List salaryAcctResultValues = getSalaryAcctResultService(user).listBySalaryAcctEmployeeIds(salaryAcctEmployeeIds); + + + return SalaryStatisticsEmployeeDetailResultDTO.builder() .salaryAcctEmployeeList(salaryAcctEmployeeList) .salaryAcctResultValueList(salaryAcctResultValues) From c2093995667f984321380480daad9041a935c671 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Sat, 12 Oct 2024 09:38:08 +0800 Subject: [PATCH 073/218] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=A8=A1=E6=9D=BF?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE=E4=B8=BB=E9=94=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salary/mapper/setting/PageListSettingMapper.xml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/com/engine/salary/mapper/setting/PageListSettingMapper.xml b/src/com/engine/salary/mapper/setting/PageListSettingMapper.xml index df06cf162..644707567 100644 --- a/src/com/engine/salary/mapper/setting/PageListSettingMapper.xml +++ b/src/com/engine/salary/mapper/setting/PageListSettingMapper.xml @@ -58,6 +58,9 @@ AND delete_type = #{deleteType} + + AND id = #{id} + AND page = #{page} @@ -94,6 +97,9 @@ delete_type, + + id, + page, @@ -117,6 +123,9 @@ #{deleteType}, + + #{id}, + #{page}, From 49cbb7a7cc91c88d1a4d284c3bacfe105d31d3e1 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Mon, 14 Oct 2024 10:38:30 +0800 Subject: [PATCH 074/218] =?UTF-8?q?=E6=B5=AE=E5=8A=A8=E8=96=AA=E9=85=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../po/VariableArchiveItemPO.java | 2 + .../service/VariableArchiveService.java | 2 + .../impl/VariableArchiveItemServiceImpl.java | 6 ++- .../impl/VariableArchiveServiceImpl.java | 40 +++++++++++++++++-- .../salary/web/VariableArchiveController.java | 16 ++++++++ .../wrapper/VariableArchiveWrapper.java | 4 ++ 6 files changed, 66 insertions(+), 4 deletions(-) diff --git a/src/com/engine/salary/entity/datacollection/po/VariableArchiveItemPO.java b/src/com/engine/salary/entity/datacollection/po/VariableArchiveItemPO.java index 52e9772e4..cd211f2d3 100644 --- a/src/com/engine/salary/entity/datacollection/po/VariableArchiveItemPO.java +++ b/src/com/engine/salary/entity/datacollection/po/VariableArchiveItemPO.java @@ -1,5 +1,6 @@ package com.engine.salary.entity.datacollection.po; +import com.engine.salary.annotation.Encrypt; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -41,6 +42,7 @@ public class VariableArchiveItemPO { /** * 浮动值 */ + @Encrypt private String itemValue; /** diff --git a/src/com/engine/salary/service/VariableArchiveService.java b/src/com/engine/salary/service/VariableArchiveService.java index f82fcc031..4579eba6a 100644 --- a/src/com/engine/salary/service/VariableArchiveService.java +++ b/src/com/engine/salary/service/VariableArchiveService.java @@ -70,4 +70,6 @@ public interface VariableArchiveService { void deleteSelectVariableArchive(Collection deleteIds); List> listBySalaryMonthAndEmployeeIds(YearMonth salaryMonth, List employeeIds, Long taxAgentId); + + void updateData(VariableArchiveSaveParam updateParam); } diff --git a/src/com/engine/salary/service/impl/VariableArchiveItemServiceImpl.java b/src/com/engine/salary/service/impl/VariableArchiveItemServiceImpl.java index bdba34b1a..7e5cacec5 100644 --- a/src/com/engine/salary/service/impl/VariableArchiveItemServiceImpl.java +++ b/src/com/engine/salary/service/impl/VariableArchiveItemServiceImpl.java @@ -1,6 +1,7 @@ package com.engine.salary.service.impl; import com.engine.core.impl.Service; +import com.engine.salary.encrypt.EncryptUtil; import com.engine.salary.entity.datacollection.po.VariableArchiveItemPO; import com.engine.salary.mapper.datacollection.VariableArchiveItemMapper; import com.engine.salary.service.VariableArchiveItemService; @@ -18,6 +19,7 @@ import java.util.List; * @description 浮动薪酬档案明细 */ public class VariableArchiveItemServiceImpl extends Service implements VariableArchiveItemService { + private EncryptUtil encryptUtil = new EncryptUtil(); private VariableArchiveItemMapper getVariableArchiveItemMapper(){ return MapperProxyFactory.getProxy(VariableArchiveItemMapper.class); @@ -34,7 +36,8 @@ public class VariableArchiveItemServiceImpl extends Service implements VariableA if (CollectionUtils.isEmpty(variableArchiveIds)) { return Collections.emptyList(); } - return getVariableArchiveItemMapper().listSome(VariableArchiveItemPO.builder().variableArchiveIds(variableArchiveIds).build()); + List variableArchiveItemPOS = getVariableArchiveItemMapper().listSome(VariableArchiveItemPO.builder().variableArchiveIds(variableArchiveIds).build()); + return encryptUtil.decryptList(variableArchiveItemPOS, VariableArchiveItemPO.class); } /** @@ -52,6 +55,7 @@ public class VariableArchiveItemServiceImpl extends Service implements VariableA if (CollectionUtils.isEmpty(insertList)) { return 0; } + encryptUtil.encryptList(insertList, VariableArchiveItemPO.class); List> partition = Lists.partition(insertList, 50); partition.forEach(part -> getVariableArchiveItemMapper().batchInsert(part)); return 0; diff --git a/src/com/engine/salary/service/impl/VariableArchiveServiceImpl.java b/src/com/engine/salary/service/impl/VariableArchiveServiceImpl.java index b008273c6..6faa540bb 100644 --- a/src/com/engine/salary/service/impl/VariableArchiveServiceImpl.java +++ b/src/com/engine/salary/service/impl/VariableArchiveServiceImpl.java @@ -151,9 +151,6 @@ public class VariableArchiveServiceImpl extends Service implements VariableArchi */ @Override public List> buildVariableArchiveData(Collection variableArchives) { - if (CollectionUtils.isEmpty(variableArchives)) { - // 无数据 - } List variableArchiveIds = variableArchives.stream().map(VariableArchiveListDTO::getId).collect(Collectors.toList()); // 获取浮动薪资档案所对应的浮动薪资项目数据 List variableArchiveItemList = getVariableArchiveItemService(user).listByVariableArchiveIds(variableArchiveIds); @@ -599,4 +596,41 @@ public class VariableArchiveServiceImpl extends Service implements VariableArchi List variableArchiveListDTO = list(queryParam); return buildVariableArchiveData(variableArchiveListDTO); } + + @Override + public void updateData(VariableArchiveSaveParam updateParam) { + if (updateParam.getId() == null) { + throw new SalaryRunTimeException("参数错误"); + } + // 获取浮动薪酬档案 + VariableArchivePO variableArchivePO = getVariableArchiveMapper().getById(updateParam.getId()); + if (variableArchivePO == null) { + throw new SalaryRunTimeException("浮动薪酬档案不存在或已被删除"); + } + + // 删除原有的浮动薪酬档案明细 + getVariableArchiveItemService(user).deleteByArchiveIds(Collections.singletonList(updateParam.getId())); + + // 保存浮动薪资档案详细信息 + List variableArchiveItemList = new ArrayList<>(); + Date now = new Date(); + updateParam.getItemValueList().forEach(e -> { + variableArchiveItemList.add(VariableArchiveItemPO.builder() + .id(IdGenerator.generate()) + .employeeId(updateParam.getEmployeeId()) + .variableArchiveId(variableArchivePO.getId()) + .variableItemId(e.getVariableItemId()) + .itemValue(e.getItemValue()) + .creator(Long.valueOf(user.getUID())) + .createTime(now) + .updateTime(now) + .deleteType(NumberUtils.INTEGER_ZERO) + .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) + .build()); + }); + + if (CollectionUtils.isNotEmpty(variableArchiveItemList)) { + getVariableArchiveItemService(user).batchInsert(variableArchiveItemList); + } + } } diff --git a/src/com/engine/salary/web/VariableArchiveController.java b/src/com/engine/salary/web/VariableArchiveController.java index c0eb2de43..1afce5c88 100644 --- a/src/com/engine/salary/web/VariableArchiveController.java +++ b/src/com/engine/salary/web/VariableArchiveController.java @@ -114,6 +114,22 @@ public class VariableArchiveController { return new ResponseResult(user).run(getVariableArchiveWrapper(user)::createData, saveParam); } + /** + * 编辑浮动薪酬档案 + * + * @param request + * @param response + * @param updateParam + * @return + */ + @POST + @Path("/updateData") + @Produces(MediaType.APPLICATION_JSON) + public String updateData(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody VariableArchiveSaveParam updateParam) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getVariableArchiveWrapper(user)::updateData, updateParam); + } + @GET @Path("/downloadTemplate") diff --git a/src/com/engine/salary/wrapper/VariableArchiveWrapper.java b/src/com/engine/salary/wrapper/VariableArchiveWrapper.java index b26df0cba..a1a1bcb54 100644 --- a/src/com/engine/salary/wrapper/VariableArchiveWrapper.java +++ b/src/com/engine/salary/wrapper/VariableArchiveWrapper.java @@ -123,4 +123,8 @@ public class VariableArchiveWrapper extends Service { public void deleteSelectVariableArchive(Collection deleteIds) { getVariableArchiveService(user).deleteSelectVariableArchive(deleteIds); } + + public void updateData(VariableArchiveSaveParam updateParam) { + getVariableArchiveService(user).updateData(updateParam); + } } From 3ac5da2b314785e83c63307deaa174426f3a3859 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Mon, 14 Oct 2024 14:34:46 +0800 Subject: [PATCH 075/218] =?UTF-8?q?=E7=A4=BE=E4=BF=9D=E5=8F=B0=E8=B4=A6sql?= =?UTF-8?q?server=202100bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/engine/salary/biz/SIAccountBiz.java | 2 +- src/com/engine/salary/service/impl/SIAccountServiceImpl.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/com/engine/salary/biz/SIAccountBiz.java b/src/com/engine/salary/biz/SIAccountBiz.java index 46abbf098..9b2bbb180 100644 --- a/src/com/engine/salary/biz/SIAccountBiz.java +++ b/src/com/engine/salary/biz/SIAccountBiz.java @@ -517,7 +517,7 @@ public class SIAccountBiz extends Service { //临时表数据入库 if (CollectionUtils.isNotEmpty(list)) { encryptUtil.encryptList(list, InsuranceAccountDetailTempPO.class); - List> lists = splitList(list, 40); + List> lists = splitList(list, 20); lists.forEach(subList -> { getSIAccountDetailTempMapper().batchSaveAccountTempDetails(subList); }); diff --git a/src/com/engine/salary/service/impl/SIAccountServiceImpl.java b/src/com/engine/salary/service/impl/SIAccountServiceImpl.java index 8ef9cf75d..fb49c291a 100644 --- a/src/com/engine/salary/service/impl/SIAccountServiceImpl.java +++ b/src/com/engine/salary/service/impl/SIAccountServiceImpl.java @@ -5129,7 +5129,7 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { //临时表数据入库 if (CollectionUtils.isNotEmpty(list)) { encryptUtil.encryptList(list, InsuranceAccountDetailTempPO.class); - List> lists = splitList(list, 40); + List> lists = splitList(list, 20); lists.forEach(subList -> { getSIAccountDetailTempMapper().batchSaveAccountTempDetails(subList); }); From dbd1b574e00e644bc83ab681bd29f5a6f340ae80 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Mon, 14 Oct 2024 15:05:22 +0800 Subject: [PATCH 076/218] =?UTF-8?q?=E6=B5=AE=E5=8A=A8=E8=96=AA=E9=85=AC?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/VariableArchiveService.java | 2 +- .../impl/VariableArchiveServiceImpl.java | 2 +- .../salary/web/VariableArchiveController.java | 23 +++++-------------- .../wrapper/VariableArchiveWrapper.java | 2 +- 4 files changed, 9 insertions(+), 20 deletions(-) diff --git a/src/com/engine/salary/service/VariableArchiveService.java b/src/com/engine/salary/service/VariableArchiveService.java index 4579eba6a..280a4064d 100644 --- a/src/com/engine/salary/service/VariableArchiveService.java +++ b/src/com/engine/salary/service/VariableArchiveService.java @@ -40,7 +40,7 @@ public interface VariableArchiveService { * @param variableArchives * @return */ - List> buildVariableArchiveData(Collection variableArchives); + List> buildVariableArchiveData(List variableArchives); /** * 创建浮动薪酬档案 diff --git a/src/com/engine/salary/service/impl/VariableArchiveServiceImpl.java b/src/com/engine/salary/service/impl/VariableArchiveServiceImpl.java index 6faa540bb..389c08788 100644 --- a/src/com/engine/salary/service/impl/VariableArchiveServiceImpl.java +++ b/src/com/engine/salary/service/impl/VariableArchiveServiceImpl.java @@ -150,7 +150,7 @@ public class VariableArchiveServiceImpl extends Service implements VariableArchi * @return */ @Override - public List> buildVariableArchiveData(Collection variableArchives) { + public List> buildVariableArchiveData(List variableArchives) { List variableArchiveIds = variableArchives.stream().map(VariableArchiveListDTO::getId).collect(Collectors.toList()); // 获取浮动薪资档案所对应的浮动薪资项目数据 List variableArchiveItemList = getVariableArchiveItemService(user).listByVariableArchiveIds(variableArchiveIds); diff --git a/src/com/engine/salary/web/VariableArchiveController.java b/src/com/engine/salary/web/VariableArchiveController.java index 1afce5c88..f179c9683 100644 --- a/src/com/engine/salary/web/VariableArchiveController.java +++ b/src/com/engine/salary/web/VariableArchiveController.java @@ -111,23 +111,12 @@ public class VariableArchiveController { @Produces(MediaType.APPLICATION_JSON) public String createData(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody VariableArchiveSaveParam saveParam) { User user = HrmUserVarify.getUser(request, response); - return new ResponseResult(user).run(getVariableArchiveWrapper(user)::createData, saveParam); - } - - /** - * 编辑浮动薪酬档案 - * - * @param request - * @param response - * @param updateParam - * @return - */ - @POST - @Path("/updateData") - @Produces(MediaType.APPLICATION_JSON) - public String updateData(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody VariableArchiveSaveParam updateParam) { - User user = HrmUserVarify.getUser(request, response); - return new ResponseResult(user).run(getVariableArchiveWrapper(user)::updateData, updateParam); + if (saveParam.getId() == null) { + return new ResponseResult(user).run(getVariableArchiveWrapper(user)::createData, saveParam); + } else { + // 更新 + return new ResponseResult(user).run(getVariableArchiveWrapper(user)::updateData, saveParam); + } } diff --git a/src/com/engine/salary/wrapper/VariableArchiveWrapper.java b/src/com/engine/salary/wrapper/VariableArchiveWrapper.java index a1a1bcb54..61f9dcc86 100644 --- a/src/com/engine/salary/wrapper/VariableArchiveWrapper.java +++ b/src/com/engine/salary/wrapper/VariableArchiveWrapper.java @@ -52,7 +52,7 @@ public class VariableArchiveWrapper extends Service { //薪资档案列表 PageInfo pageInfo = getVariableArchiveService(user).listPage(queryParam); - Collection salaryArchives = pageInfo.getList(); + List salaryArchives = pageInfo.getList(); // 获取所有浮动薪酬项目 List variableItems = getVariableItemService(user).listAll(); 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 077/218] =?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 @@ diff --git a/src/com/engine/salary/report/service/impl/SalaryStatisticsReportServiceImpl.java b/src/com/engine/salary/report/service/impl/SalaryStatisticsReportServiceImpl.java index 8886cfa6f..5ee5edea8 100644 --- a/src/com/engine/salary/report/service/impl/SalaryStatisticsReportServiceImpl.java +++ b/src/com/engine/salary/report/service/impl/SalaryStatisticsReportServiceImpl.java @@ -1192,9 +1192,9 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary // List accountDetailPOList = data.getList().stream().filter(po -> pageEmployeeIds.contains(po.getEmployeeId())).collect(Collectors.toList()); List> records = new ArrayList<>(); List accountDetailPOList = data.getList(); - Map> employeeListMap = accountDetailPOList.stream().collect(Collectors.groupingBy(SalaryAcctEmployeePO::getEmployeeId)); - Map> lastEmployeeListMap = data.getLastList().stream().collect(Collectors.groupingBy(SalaryAcctEmployeePO::getEmployeeId)); - Map> sameEmployeeListMap = data.getSameList().stream().collect(Collectors.groupingBy(SalaryAcctEmployeePO::getEmployeeId)); + Map> employeeListMap = accountDetailPOList.stream().collect(Collectors.groupingBy(SalaryAcctEmployeePO::getEmployeeId, LinkedHashMap::new, Collectors.toList())); + Map> lastEmployeeListMap = data.getLastList().stream().collect(Collectors.groupingBy(SalaryAcctEmployeePO::getEmployeeId, LinkedHashMap::new, Collectors.toList())); + Map> sameEmployeeListMap = data.getSameList().stream().collect(Collectors.groupingBy(SalaryAcctEmployeePO::getEmployeeId, LinkedHashMap::new, Collectors.toList())); List empIds = accountDetailPOList.stream().map(SalaryAcctEmployeePO::getEmployeeId).distinct().collect(Collectors.toList()); Map employeeByIdMap = getSalaryEmployeeService(user).getEmployeeByIdsAll(empIds).stream().collect(Collectors.toMap(DataCollectionEmployee::getEmployeeId, o -> o)); diff --git a/src/com/engine/salary/service/impl/SalaryAcctEmployeeServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctEmployeeServiceImpl.java index ee0ddc70a..90391abd4 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctEmployeeServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctEmployeeServiceImpl.java @@ -612,7 +612,10 @@ public class SalaryAcctEmployeeServiceImpl extends Service implements SalaryAcct @Override public List listBySalaryStatisticsReportParam(SalaryStatisticsReportDataQueryParam param) { - SalaryAcctEmployeePO lambdaQueryChainWrapper = SalaryAcctEmployeePO.builder().build(); + //排序配置 + OrderRuleVO orderRule = getSalarySysConfService(user).orderRule(); + SalaryAcctEmployeeQueryParam lambdaQueryChainWrapper = new SalaryAcctEmployeeQueryParam(); + lambdaQueryChainWrapper.setOrderRule(orderRule); // 个税扣缴义务人 // Collection taxAgentList = getTaxAgentService(user).listAllTaxAgents((long) user.getUID()); @@ -681,12 +684,11 @@ public class SalaryAcctEmployeeServiceImpl extends Service implements SalaryAcct if (CollectionUtils.isNotEmpty(salaryAcctRecordIds)) { //分片查询 List> partition = Lists.partition(salaryAcctRecordIds, 500); - List empList = new ArrayList<>(); - partition.forEach(part -> { - lambdaQueryChainWrapper.setSalaryAcctRecordIds(salaryAcctRecordIds); - empList.addAll(getSalaryAcctEmployeeMapper().listSome(lambdaQueryChainWrapper)); - }); - list = empList; + for (List part : partition) { + lambdaQueryChainWrapper.setSalaryAcctRecordIds(part); + List pos = getSalaryAcctEmployeeMapper().list(lambdaQueryChainWrapper); + list.addAll(pos); + } } if (CollectionUtils.isEmpty(list)) { From 2499d543d8faf1c16eaec2cad237c50f618e62b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Mon, 28 Oct 2024 15:11:31 +0800 Subject: [PATCH 111/218] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E4=B8=BB=E6=AC=A1?= =?UTF-8?q?=E8=B4=A6=E5=8F=B7=E6=A1=A3=E6=A1=88=E5=BC=82=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../engine/salary/service/impl/SalaryArchiveServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/com/engine/salary/service/impl/SalaryArchiveServiceImpl.java b/src/com/engine/salary/service/impl/SalaryArchiveServiceImpl.java index 12bfa528c..9a238fc78 100644 --- a/src/com/engine/salary/service/impl/SalaryArchiveServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryArchiveServiceImpl.java @@ -497,7 +497,7 @@ public class SalaryArchiveServiceImpl extends Service implements SalaryArchiveSe map.put("username", e.getUsername()); map.put("employeeId", e.getEmployeeId()); if (openSecondaryAccount) { - map.put("accountType", 1 == e.getAccountType() ? "次账号" : "主账户"); + map.put("accountType", e.getAccountType() == null || e.getAccountType() == 0 ? "主账号" : "次账号"); } // Optional> optionalTaxAgent = taxAgentData.stream().filter(f -> f.get("salaryArchiveId").toString().equals(e.getId().toString())).findFirst(); From 455550836e60fc88cf03abfd6ac6d0797003f899 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Mon, 28 Oct 2024 15:46:29 +0800 Subject: [PATCH 112/218] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E8=B4=A6=E5=A5=97?= =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E8=BF=87=E5=A4=9A=EF=BC=8C=E5=BF=AB=E7=85=A7?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/SalaryAcctSobConfigServiceImpl.java | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/com/engine/salary/service/impl/SalaryAcctSobConfigServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctSobConfigServiceImpl.java index 61d79ab9e..8eba89c7a 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctSobConfigServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctSobConfigServiceImpl.java @@ -172,7 +172,7 @@ public class SalaryAcctSobConfigServiceImpl extends Service implements SalaryAcc } @Override - public void updateBySalaryAcctRecordId(Long salaryAcctRecordId) { + public void updateBySalaryAcctRecordId(Long salaryAcctRecordId) { SalaryAcctRecordPO salaryAcctRecord = getSalaryAcctRecordService(user).getById(salaryAcctRecordId); if (salaryAcctRecord == null) { throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(156474, "参数错误,薪资核算记录不存在或已被删除")); @@ -185,10 +185,12 @@ public class SalaryAcctSobConfigServiceImpl extends Service implements SalaryAcc } getSalaryCacheService(user).set(SalaryCacheKey.ACCT_SOB_CONFIG + salaryAcctRecordId, "TRUE"); - deleteBySalaryAcctRecordIds(Collections.singleton(salaryAcctRecordId)); - getSalaryAcctSobConfigMapper().insertIgnoreNull(salaryAcctSobConfig); - - getSalaryCacheService(user).set(SalaryCacheKey.ACCT_SOB_CONFIG + salaryAcctRecordId, "FALSE"); + try { + deleteBySalaryAcctRecordIds(Collections.singleton(salaryAcctRecordId)); + getSalaryAcctSobConfigMapper().insertIgnoreNull(salaryAcctSobConfig); + } finally { + getSalaryCacheService(user).set(SalaryCacheKey.ACCT_SOB_CONFIG + salaryAcctRecordId, "FALSE"); + } } @Override From d21258596a720edb1b0cfe7a1de30d9e0839b901 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Wed, 30 Oct 2024 17:10:32 +0800 Subject: [PATCH 113/218] =?UTF-8?q?=E6=89=A3=E7=BC=B4=E4=B9=89=E5=8A=A1?= =?UTF-8?q?=E4=BA=BA=E6=96=B0=E5=8A=A0=E5=85=A5=E4=BA=BA=E5=91=98=EF=BC=8C?= =?UTF-8?q?=E4=B8=8D=E4=BC=9A=E4=BF=AE=E6=94=B9=E5=8E=86=E5=8F=B2=E6=A1=A3?= =?UTF-8?q?=E6=A1=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salaryarchive/bo/SalaryArchiveBO.java | 73 ++++++++++--------- 1 file changed, 37 insertions(+), 36 deletions(-) diff --git a/src/com/engine/salary/entity/salaryarchive/bo/SalaryArchiveBO.java b/src/com/engine/salary/entity/salaryarchive/bo/SalaryArchiveBO.java index fabbfd1b0..2855c40d6 100644 --- a/src/com/engine/salary/entity/salaryarchive/bo/SalaryArchiveBO.java +++ b/src/com/engine/salary/entity/salaryarchive/bo/SalaryArchiveBO.java @@ -12,13 +12,12 @@ import com.engine.salary.entity.salaryarchive.po.SalaryArchiveItemPO; import com.engine.salary.entity.salaryarchive.po.SalaryArchivePO; import com.engine.salary.entity.salaryitem.po.SalaryItemPO; import com.engine.salary.entity.taxagent.po.TaxAgentEmpChangePO; -import com.engine.salary.enums.salaryarchive.SalaryArchiveItemAdjustReasonEnum; import com.engine.salary.enums.salaryarchive.SalaryArchiveStatusEnum; import com.engine.salary.enums.taxagent.TaxAgentEmpChangeTypeEnum; import com.engine.salary.util.SalaryEntityUtil; import com.engine.salary.util.SalaryI18nUtil; -import com.google.common.collect.Lists; import com.engine.salary.util.db.IdGenerator; +import com.google.common.collect.Lists; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -285,40 +284,42 @@ public class SalaryArchiveBO { // 如果是新增 说明:如果没有档案,则新增,如果有档案而且是停薪,就挪到待定薪中,以个税扣缴义务人和人员id判断唯一 if (change.getChangeType() == TaxAgentEmpChangeTypeEnum.ADD.getValue()) { if (salaryArchive != null) { - // 停薪中跳回待定薪:从a调动到b又调动到a,或者是删除待办后再覆盖 - if (stopStatus.contains(salaryArchive.getRunStatus())) { - // 跳回待定薪 - salaryArchive.setRunStatus(SalaryArchiveStatusEnum.PENDING.getValue()); - if (salaryArchive.getRunStatus().equals(SalaryArchiveStatusEnum.STOP_FROM_SUSPEND.getValue())) { - salaryArchive.setPayStartDate(today); - salaryArchive.setPayEndDate(null); - } - salaryArchiveUpdateTodoList.add(salaryArchive); - // 待停薪到停薪的就要复制最新的薪资项目 - if (salaryArchive.getRunStatus().equals(SalaryArchiveStatusEnum.STOP_FROM_SUSPEND.getValue())) { - // 拷贝最新的薪资项目数据 - List salaryArchiveItemValuelList = salaryArchiveItemList.stream().filter(i -> i.getSalaryArchiveId().equals(salaryArchive.getId())).collect(Collectors.toList()); - salaryArchiveItemValuelList.forEach(i -> { - salaryArchiveItemAddTodos.add(SalaryArchiveItemPO.builder() - .id(IdGenerator.generate()) - .salaryArchiveId(salaryArchive.getId()) - .employeeId(salaryArchive.getEmployeeId()) - .effectiveTime(today) - .adjustReason(SalaryArchiveItemAdjustReasonEnum.INIT.getValue()) - .salaryItemId(i.getSalaryItemId()) - .itemValue(i.getItemValue()) - .description("") - // 不用设置操作人 - .operateTime(now) - .createTime(now) - .updateTime(now) - .creator(currentEmployeeId) - .deleteType(NumberUtils.INTEGER_ZERO) - .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) - .build()); - }); - } - } + //存在历史档案不做处理 + +// // 停薪中跳回待定薪:从a调动到b又调动到a,或者是删除待办后再覆盖 +// if (stopStatus.contains(salaryArchive.getRunStatus())) { +// // 跳回待定薪 +// salaryArchive.setRunStatus(SalaryArchiveStatusEnum.PENDING.getValue()); +// if (salaryArchive.getRunStatus().equals(SalaryArchiveStatusEnum.STOP_FROM_SUSPEND.getValue())) { +// salaryArchive.setPayStartDate(today); +// salaryArchive.setPayEndDate(null); +// } +// salaryArchiveUpdateTodoList.add(salaryArchive); +// // 待停薪到停薪的就要复制最新的薪资项目 +// if (salaryArchive.getRunStatus().equals(SalaryArchiveStatusEnum.STOP_FROM_SUSPEND.getValue())) { +// // 拷贝最新的薪资项目数据 +// List salaryArchiveItemValuelList = salaryArchiveItemList.stream().filter(i -> i.getSalaryArchiveId().equals(salaryArchive.getId())).collect(Collectors.toList()); +// salaryArchiveItemValuelList.forEach(i -> { +// salaryArchiveItemAddTodos.add(SalaryArchiveItemPO.builder() +// .id(IdGenerator.generate()) +// .salaryArchiveId(salaryArchive.getId()) +// .employeeId(salaryArchive.getEmployeeId()) +// .effectiveTime(today) +// .adjustReason(SalaryArchiveItemAdjustReasonEnum.INIT.getValue()) +// .salaryItemId(i.getSalaryItemId()) +// .itemValue(i.getItemValue()) +// .description("") +// // 不用设置操作人 +// .operateTime(now) +// .createTime(now) +// .updateTime(now) +// .creator(currentEmployeeId) +// .deleteType(NumberUtils.INTEGER_ZERO) +// .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) +// .build()); +// }); +// } +// } } else { salaryArchiveAddTodoList.add(SalaryArchivePO.builder() .id(IdGenerator.generate()) From ad48063ca99698d59d4d17df5c9f3d3486df58ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Thu, 31 Oct 2024 16:56:32 +0800 Subject: [PATCH 114/218] =?UTF-8?q?=E6=89=A3=E7=BC=B4=E4=B9=89=E5=8A=A1?= =?UTF-8?q?=E4=BA=BA=E5=92=8C=E8=B4=A6=E5=A5=97=E7=9A=84=E4=BA=BA=E5=91=98?= =?UTF-8?q?=E8=8C=83=E5=9B=B4=E6=94=AF=E6=8C=81=E7=BC=96=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resource/wiki/人员生成不了档案.sql | 6 +- .../param/SalarySobRangeSaveParam.java | 4 + .../param/TaxAgentManageRangeSaveParam.java | 2 + .../salary/service/SalarySobRangeService.java | 1 + .../service/TaxAgentManageRangeService.java | 2 +- .../impl/SalarySobRangeServiceImpl.java | 40 +++++- .../impl/TaxAgentManageRangeServiceImpl.java | 136 +++++++++++++----- .../salary/web/SalarySobController.java | 11 ++ .../engine/salary/web/TaxAgentController.java | 8 ++ .../salary/wrapper/SalarySobRangeWrapper.java | 30 ++++ .../salary/wrapper/TaxAgentWrapper.java | 34 +++++ 11 files changed, 238 insertions(+), 36 deletions(-) diff --git a/resource/wiki/人员生成不了档案.sql b/resource/wiki/人员生成不了档案.sql index 75b03ff39..7060a660e 100644 --- a/resource/wiki/人员生成不了档案.sql +++ b/resource/wiki/人员生成不了档案.sql @@ -1,5 +1,9 @@ select id from hrsa_tax_agent_emp -where tax_agent_id =扣缴义务人id and delete_type = 0 and employee_id not in (select employee_id from hrsa_salary_archive where tax_agent_id =扣缴义务人id and delete_type = 0) +where tax_agent_id =扣缴义务人id +and delete_type = 0 +and employee_id not in +(select employee_id from hrsa_salary_archive +where tax_agent_id =扣缴义务人id and delete_type = 0) update hrsa_tax_agent_emp set delete_type = 3 diff --git a/src/com/engine/salary/entity/salarysob/param/SalarySobRangeSaveParam.java b/src/com/engine/salary/entity/salarysob/param/SalarySobRangeSaveParam.java index a1a33e2f4..aadd43306 100644 --- a/src/com/engine/salary/entity/salarysob/param/SalarySobRangeSaveParam.java +++ b/src/com/engine/salary/entity/salarysob/param/SalarySobRangeSaveParam.java @@ -4,6 +4,7 @@ import com.engine.hrmelog.annotation.ElogTransform; import com.engine.salary.enums.salarysob.SalaryEmployeeStatusEnum; import com.engine.salary.enums.salarysob.TargetTypeEnum; import com.engine.salary.util.valid.DataCheck; +import com.engine.salary.util.valid.RuntimeTypeEnum; import com.engine.salary.util.valid.ValidTypeEnum; import lombok.Data; @@ -22,6 +23,9 @@ import java.util.List; //薪资账套人员范围保存参数") public class SalarySobRangeSaveParam { + @DataCheck(require = true, message = "ID不允许为空",runtime = {RuntimeTypeEnum.UPDATE}) + private Long id; + //薪资账套的id @DataCheck(require = true, message = "薪资账套的ID不允许为空") @ElogTransform( name = "薪资账套id" ) diff --git a/src/com/engine/salary/entity/taxagent/param/TaxAgentManageRangeSaveParam.java b/src/com/engine/salary/entity/taxagent/param/TaxAgentManageRangeSaveParam.java index 2a8ff4587..2f4c4f749 100644 --- a/src/com/engine/salary/entity/taxagent/param/TaxAgentManageRangeSaveParam.java +++ b/src/com/engine/salary/entity/taxagent/param/TaxAgentManageRangeSaveParam.java @@ -20,6 +20,8 @@ import java.util.List; @Data public class TaxAgentManageRangeSaveParam { + private Long id; + /** * 只能选择 关联人员范围/从范围中排除 */ diff --git a/src/com/engine/salary/service/SalarySobRangeService.java b/src/com/engine/salary/service/SalarySobRangeService.java index 3bfb8172a..bf1f2848e 100644 --- a/src/com/engine/salary/service/SalarySobRangeService.java +++ b/src/com/engine/salary/service/SalarySobRangeService.java @@ -62,6 +62,7 @@ public interface SalarySobRangeService { * @param saveParam 保存参数 */ void save(SalarySobRangeSaveParam saveParam); + void edit(SalarySobRangeSaveParam param); /** * 根据主键id删除薪资账套的人员范围 diff --git a/src/com/engine/salary/service/TaxAgentManageRangeService.java b/src/com/engine/salary/service/TaxAgentManageRangeService.java index 00cc7eb76..0de8a4562 100644 --- a/src/com/engine/salary/service/TaxAgentManageRangeService.java +++ b/src/com/engine/salary/service/TaxAgentManageRangeService.java @@ -52,7 +52,7 @@ public interface TaxAgentManageRangeService { * @param saveParam 保存参数 */ void save(TaxAgentRangeSaveParam saveParam); - + void edit(TaxAgentRangeSaveParam param); /** * 根据主键id删除管理范围 diff --git a/src/com/engine/salary/service/impl/SalarySobRangeServiceImpl.java b/src/com/engine/salary/service/impl/SalarySobRangeServiceImpl.java index 0a4b06cb4..185964526 100644 --- a/src/com/engine/salary/service/impl/SalarySobRangeServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalarySobRangeServiceImpl.java @@ -4,10 +4,10 @@ import com.api.formmode.mybatis.util.SqlProxyHandle; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; import com.engine.hrm.biz.OrganizationShowSetBiz; +import com.engine.hrmelog.entity.dto.LoggerContext; import com.engine.salary.biz.SalarySobRangeBiz; import com.engine.salary.biz.SpecialAddDeductionBiz; import com.engine.salary.config.SalaryElogConfig; -import com.engine.hrmelog.entity.dto.LoggerContext; import com.engine.salary.entity.datacollection.DataCollectionEmployee; import com.engine.salary.entity.hrm.DeptInfo; import com.engine.salary.entity.hrm.PositionInfo; @@ -41,6 +41,7 @@ import com.engine.salary.util.excel.ExcelParseHelper; import com.engine.salary.util.excel.ExcelUtil; import com.engine.salary.util.page.PageInfo; import com.engine.salary.util.page.SalaryPageUtil; +import com.engine.salary.util.valid.RuntimeTypeEnum; import com.engine.salary.util.valid.ValidUtil; import com.google.common.collect.Lists; import com.google.common.collect.Maps; @@ -198,6 +199,43 @@ public class SalarySobRangeServiceImpl extends Service implements SalarySobRange SalaryElogConfig.salarySobLoggerTemplate.write(loggerContext); } + @Override + public void edit(SalarySobRangeSaveParam param) { + ValidUtil.doValidator(param, RuntimeTypeEnum.UPDATE); + + // 查询薪资账套 + SalarySobPO salarySobPO = getSalarySobService(user).getById(param.getSalarySobId()); + if (Objects.isNull(salarySobPO)) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98379, "参数错误,薪资账套不存在或者已被删除")); + } + + deleteByIds(Collections.singleton(param.getId())); + + // 查询已有的人员范围 + List salarySobRangePOS = listBySalarySobIdAndIncludeType(param.getSalarySobId(), param.getIncludeType()); + // 处理一下本次的保存参数(如果原来添加过对应的人员(/部门/岗位),那么本次不需要新增,只需要更新) + SalarySobRangeSaveBO.Result result = SalarySobRangeSaveBO.handle(salarySobRangePOS, param, (long) user.getUID(), false); + // 保存 + if (CollectionUtils.isNotEmpty(result.getNeedInsertSalarySobRanges())) { + salarySobRangeBiz.batchInsert(result.getNeedInsertSalarySobRanges()); + } + if (CollectionUtils.isNotEmpty(result.getNeedUpdateSalarySobRanges())) { + result.getNeedUpdateSalarySobRanges().forEach(e -> salarySobRangeBiz.updateById(e)); + } + //记录日志 + String operateTypeName = Objects.equals(param.getIncludeType(), 1) ? + SalaryI18nUtil.getI18nLabel(0, "关联人员范围新增对象") : SalaryI18nUtil.getI18nLabel(0, "从范围中排除新增对象"); + LoggerContext loggerContext = new LoggerContext<>(); + loggerContext.setUser(user); + loggerContext.setTargetId("" + salarySobPO.getId()); + loggerContext.setTargetName(salarySobPO.getName()); + loggerContext.setOperateType(OperateTypeEnum.UPDATE.getValue()); + loggerContext.setOperateTypeName(operateTypeName); + loggerContext.setOperatedesc(operateTypeName); + loggerContext.setNewValues(param); + SalaryElogConfig.salarySobLoggerTemplate.write(loggerContext); + } + @Override public void deleteByIds(Collection ids) { // 查询薪资账套的人员范围 diff --git a/src/com/engine/salary/service/impl/TaxAgentManageRangeServiceImpl.java b/src/com/engine/salary/service/impl/TaxAgentManageRangeServiceImpl.java index b21ece557..a466622b5 100644 --- a/src/com/engine/salary/service/impl/TaxAgentManageRangeServiceImpl.java +++ b/src/com/engine/salary/service/impl/TaxAgentManageRangeServiceImpl.java @@ -338,39 +338,7 @@ public class TaxAgentManageRangeServiceImpl extends Service implements TaxAgentM @Override public void save(TaxAgentRangeSaveParam saveParam) { - if (saveParam == null) { - throw new SalaryRunTimeException("参数错误"); - } - - if (Objects.isNull(saveParam.getTaxAgentId())) { - throw new SalaryRunTimeException("个税扣缴义务人的id不允许为空"); - } - - if (saveParam.getIncludeType() != 0 && saveParam.getIncludeType() != 1) { - throw new SalaryRunTimeException("只能选择 关联人员范围/从范围中排除"); - } - - if (CollectionUtils.isEmpty(saveParam.getEmployeeStatus())) { - throw new SalaryRunTimeException("员工状态不允许为空"); - } - - if (CollectionUtils.isNotEmpty(saveParam.getTargetParams())) { - saveParam.getTargetParams().forEach(target -> { - if (target.getTargetType() == null) { - throw new SalaryRunTimeException("对象类型不能为空"); - } - if (target.getTargetType() == TargetTypeEnum.SQL) { - if (target.getTarget() == null) { - throw new SalaryRunTimeException("sql不能为空"); - } - target.setTargetId(0L); - } else { - if (target.getTargetId() == null) { - throw new SalaryRunTimeException("对象不能为空"); - } - } - }); - } + checkParam(saveParam); // 查询个税扣缴义务人 TaxAgentPO taxAgent = getTaxAgentService(user).getById(saveParam.getTaxAgentId()); @@ -427,6 +395,108 @@ public class TaxAgentManageRangeServiceImpl extends Service implements TaxAgentM } + private void checkParam(TaxAgentRangeSaveParam saveParam) { + if (saveParam == null) { + throw new SalaryRunTimeException("参数错误"); + } + + if (Objects.isNull(saveParam.getTaxAgentId())) { + throw new SalaryRunTimeException("个税扣缴义务人的id不允许为空"); + } + + if (saveParam.getIncludeType() != 0 && saveParam.getIncludeType() != 1) { + throw new SalaryRunTimeException("只能选择 关联人员范围/从范围中排除"); + } + + if (CollectionUtils.isEmpty(saveParam.getEmployeeStatus())) { + throw new SalaryRunTimeException("员工状态不允许为空"); + } + + if (CollectionUtils.isNotEmpty(saveParam.getTargetParams())) { + saveParam.getTargetParams().forEach(target -> { + if (target.getTargetType() == null) { + throw new SalaryRunTimeException("对象类型不能为空"); + } + if (target.getTargetType() == TargetTypeEnum.SQL) { + if (target.getTarget() == null) { + throw new SalaryRunTimeException("sql不能为空"); + } + target.setTargetId(0L); + } else { + if (target.getTargetId() == null) { + throw new SalaryRunTimeException("对象不能为空"); + } + } + }); + } + } + + @Override + public void edit(TaxAgentRangeSaveParam param) { + checkParam(param); + + if (param.getId() == null) { + throw new SalaryRunTimeException("id不能为空"); + } + + // 查询个税扣缴义务人 + TaxAgentPO taxAgent = getTaxAgentService(user).getById(param.getTaxAgentId()); + if (Objects.isNull(taxAgent)) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(108605, "参数错误,个税扣缴义务人不存在或不在权限范围内")); + } + + //删除原有的管理范围 + getTaxAgentManageRangeMapper().deleteByIds(Collections.singleton(param.getId())); + + // 查询已有的管理范围 + List taxAgentManageAllRanges = listByTaxAgentId(param.getTaxAgentId()); + + List taxAgentManageRanges = taxAgentManageAllRanges.stream().filter(f -> f.getIncludeType().equals(param.getIncludeType())).collect(Collectors.toList()); + List oldManageList = new ArrayList<>(); + taxAgentManageRanges.stream().forEach(p -> { + TaxAgentManageRangePO target = new TaxAgentManageRangePO(); + BeanUtils.copyProperties(p, target); + oldManageList.add(target); + }); + // 处理一下本次的保存参数(如果原来添加过对应的人员(/部门/岗位),那么本次不需要新增,只需要更新) + TaxAgentBO.Result result = TaxAgentBO.handleTaxAgentRange(taxAgentManageRanges, param, taxAgent.getId(), (long) user.getUID(), false); + + /* 检查当前个税扣缴义务人的所有人员范围与所有分管理员的管理范围===========================start */ + List allRanges = Lists.newArrayList(taxAgentManageAllRanges); + allRanges.addAll(result.getNeedInsertTaxAgentManageRanges()); + allRanges.addAll(result.getNeedUpdateTaxAgentManageRanges()); + // 去重 + allRanges = allRanges.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(f -> f.getTaxAgentId() + "." + f.getRangeType() + "." + f.getTargetType() + "." + f.getTargetId() + "." + f.getEmployeeStatus() + "." + f.getIncludeType()))), ArrayList::new)); + + List salaryEmployees = getSalaryEmployeeService().listAll(UseEmployeeTypeEnum.ALL); + List allSalaryEmployees = this.getManageRangeSalaryEmployees(param.getTaxAgentId(), allRanges, salaryEmployees); + + /* 检查当前个税扣缴义务人的所有人员范围与所有分管理员的管理范围===========================end */ + if (CollectionUtils.isNotEmpty(result.getNeedInsertTaxAgentManageRanges())) { + result.getNeedInsertTaxAgentManageRanges().forEach(range -> { + getTaxAgentManageRangeMapper().insertIgnoreNull(range); + // 记录操作日志 + String name = taxAgent.getName() + "_" + TargetTypeEnum.parseByValue(range.getTargetType()).getDefaultLabel() + "_" + range.getTargetId(); + SalaryLoggerUtil.recordAddSingleLog(SalaryElogConfig.taxAgentLoggerTemplate, range.getTaxAgentId(), name, SalaryI18nUtil.getI18nLabel(0, "新增人员范围"), SalaryI18nUtil.getI18nLabel(0, "新增人员范围") + name, range, user); + }); + + } + if (CollectionUtils.isNotEmpty(result.getNeedUpdateTaxAgentManageRanges())) { + Map oldMap = SalaryEntityUtil.convert2Map(oldManageList, TaxAgentManageRangePO::getId); + result.getNeedUpdateTaxAgentManageRanges().forEach(range -> { + getTaxAgentManageRangeMapper().updateIgnoreNull(range); + // 记录操作日志 + TaxAgentManageRangePO oldPO = oldMap.getOrDefault(range.getId(), TaxAgentManageRangePO.builder().build()); + String name = taxAgent.getName() + "_" + TargetTypeEnum.parseByValue(range.getTargetType()).getDefaultLabel() + "_" + range.getTargetId(); + SalaryLoggerUtil.recordUpdateSingleLog(SalaryElogConfig.taxAgentLoggerTemplate, range.getTaxAgentId(), name, SalaryI18nUtil.getI18nLabel(0, "更新人员范围"), SalaryI18nUtil.getI18nLabel(0, "更新人员范围") + name, oldPO, range, user); + }); + + } + + /* 同步本地人员范围的关联人员=========================== */ + syncLocalEmp(param.getTaxAgentId(), allSalaryEmployees, param.isSync()); + } + private void syncLocalEmp(Long taxAgentId, List allSalaryEmployees, boolean isSync) { if (isSync) { syncLocalEmpRange(taxAgentId, allSalaryEmployees, (long) user.getUID()); diff --git a/src/com/engine/salary/web/SalarySobController.java b/src/com/engine/salary/web/SalarySobController.java index cfb78aefd..018541dea 100644 --- a/src/com/engine/salary/web/SalarySobController.java +++ b/src/com/engine/salary/web/SalarySobController.java @@ -248,6 +248,17 @@ public class SalarySobController { return new ResponseResult(user).run(getSalarySobRangeWrapper(user)::save, saveParam); } + /** + * 保存薪资账套人员范围 + */ + @POST + @Path("/range/edit") + @Produces(MediaType.APPLICATION_JSON) + public String editSalarySobRange(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalarySobRangeSaveParam saveParam) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getSalarySobRangeWrapper(user)::edit, saveParam); + } + /** * 删除薪资账套人员范围 */ diff --git a/src/com/engine/salary/web/TaxAgentController.java b/src/com/engine/salary/web/TaxAgentController.java index 7aee3ea8b..1cdc8dd4e 100644 --- a/src/com/engine/salary/web/TaxAgentController.java +++ b/src/com/engine/salary/web/TaxAgentController.java @@ -255,6 +255,14 @@ public class TaxAgentController { return new ResponseResult(user).run(getTaxAgentWrapper(user)::saveRange, saveParam); } + //保存人员范围 + @POST + @Path("/range/edit") + @Produces(MediaType.APPLICATION_JSON) + public String editRange(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody TaxAgentRangeSaveParam param) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getTaxAgentWrapper(user)::editRange, param); + } //删除人员范围 diff --git a/src/com/engine/salary/wrapper/SalarySobRangeWrapper.java b/src/com/engine/salary/wrapper/SalarySobRangeWrapper.java index 7d201108c..1ae272efc 100644 --- a/src/com/engine/salary/wrapper/SalarySobRangeWrapper.java +++ b/src/com/engine/salary/wrapper/SalarySobRangeWrapper.java @@ -104,6 +104,36 @@ public class SalarySobRangeWrapper extends Service { getSalarySobRangeService(user).save(saveParam); } + + public void edit(SalarySobRangeSaveParam param) { + Optional.ofNullable(param.getTargetParams()).orElse(new ArrayList<>()) + .forEach(targetParam -> { + if (StrUtil.isNotBlank(targetParam.getTarget())) { + targetParam.setTarget(targetParam.getTarget() + .replace("select", "select") + .replace("SELECT", "SELECT") + .replace("join", "join") + .replace("JOIN", "JOIN") + .replace("and", "and") + .replace("AND", "AND") + .replace("or", "or") + .replace("OR", "OR") + .replace("in", "in") + .replace("IN", "IN") + .replace("like", "like") + .replace("LIKE", "LIKE") + .replace("exists", "exists") + .replace("EXISTS", "EXISTS") + .replace("between", "between") + .replace("BETWEEN", "BETWEEN") + .replace("union", "union") + .replace("UNION", "UNION")); + } + }); + + getSalarySobRangeService(user).edit(param); + } + /** * 保存 * diff --git a/src/com/engine/salary/wrapper/TaxAgentWrapper.java b/src/com/engine/salary/wrapper/TaxAgentWrapper.java index 213091fab..d3ae590e6 100644 --- a/src/com/engine/salary/wrapper/TaxAgentWrapper.java +++ b/src/com/engine/salary/wrapper/TaxAgentWrapper.java @@ -375,6 +375,40 @@ public class TaxAgentWrapper extends Service { } + public String editRange(TaxAgentRangeSaveParam param) { + //将select因XSS过滤造成的异常字符转换回来 + + Optional.ofNullable(param.getTargetParams()).orElse(new ArrayList<>()) + .forEach(targetParam -> { + if (StrUtil.isNotBlank(targetParam.getTarget())) { + targetParam.setTarget(targetParam.getTarget() + .replace("select", "select") + .replace("SELECT", "SELECT") + .replace("join", "join") + .replace("JOIN", "JOIN") + .replace("and", "and") + .replace("AND", "AND") + .replace("or", "or") + .replace("OR", "OR") + .replace("in", "in") + .replace("IN", "IN") + .replace("like", "like") + .replace("LIKE", "LIKE") + .replace("exists", "exists") + .replace("EXISTS", "EXISTS") + .replace("between", "between") + .replace("BETWEEN", "BETWEEN") + .replace("union", "union") + .replace("UNION", "UNION")); + } + }); + + + getTaxAgentManageRangeService(user).edit(param); + return StringUtils.EMPTY; + } + + /** * 删除管理范围 * From 391fa6ebd95969468cdd0f803ff8c4397bfb46a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Fri, 1 Nov 2024 10:04:15 +0800 Subject: [PATCH 115/218] =?UTF-8?q?=E6=89=A3=E7=BC=B4=E4=B9=89=E5=8A=A1?= =?UTF-8?q?=E4=BA=BA=E5=92=8C=E8=B4=A6=E5=A5=97=E7=9A=84=E4=BA=BA=E5=91=98?= =?UTF-8?q?=E7=9A=84=E4=BA=BA=E5=91=98=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salary/entity/salarysob/bo/SalarySobRangeBO.java | 1 + .../entity/salarysob/dto/SalarySobRangeListDTO.java | 2 ++ src/com/engine/salary/entity/taxagent/bo/TaxAgentBO.java | 9 +++++++++ .../entity/taxagent/dto/TaxAgentManageRangeListDTO.java | 2 ++ 4 files changed, 14 insertions(+) diff --git a/src/com/engine/salary/entity/salarysob/bo/SalarySobRangeBO.java b/src/com/engine/salary/entity/salarysob/bo/SalarySobRangeBO.java index 6b3f41896..91650430b 100644 --- a/src/com/engine/salary/entity/salarysob/bo/SalarySobRangeBO.java +++ b/src/com/engine/salary/entity/salarysob/bo/SalarySobRangeBO.java @@ -125,6 +125,7 @@ public class SalarySobRangeBO { .target(salarySobRangePO.getTarget()) .targetName(buildTargetName(salarySobRangePO, employeeComInfoMap, departmentComInfoMap, subCompanyComInfoMap, positionComInfoMap)) .employeeStatus(employeeStatusesStr) + .status(salarySobRangePO.getEmployeeStatuses()) .build(); }) .collect(Collectors.toList()); diff --git a/src/com/engine/salary/entity/salarysob/dto/SalarySobRangeListDTO.java b/src/com/engine/salary/entity/salarysob/dto/SalarySobRangeListDTO.java index b5060f113..ea63898c1 100644 --- a/src/com/engine/salary/entity/salarysob/dto/SalarySobRangeListDTO.java +++ b/src/com/engine/salary/entity/salarysob/dto/SalarySobRangeListDTO.java @@ -54,4 +54,6 @@ public class SalarySobRangeListDTO { @SalaryTableColumn(text = "员工状态", width = "10%", column = "employeeStatus") @TableTitle(title = "员工状态", dataIndex = "employeeStatus", key = "employeeStatus") private String employeeStatus; + + private String status; } diff --git a/src/com/engine/salary/entity/taxagent/bo/TaxAgentBO.java b/src/com/engine/salary/entity/taxagent/bo/TaxAgentBO.java index cd1ed7b36..caf20dca6 100644 --- a/src/com/engine/salary/entity/taxagent/bo/TaxAgentBO.java +++ b/src/com/engine/salary/entity/taxagent/bo/TaxAgentBO.java @@ -301,6 +301,7 @@ public class TaxAgentBO { .target(taxAgentManageRange.getTarget()) .targetName(buildTargetName(taxAgentManageRange, employeeComInfoMap, departmentComInfoMap, subDepartmentComInfoMap, positionComInfoMap)) .employeeStatus(buildEmployeeStatus(hrmStatusNameMap, taxAgentManageRange.getEmployeeStatus())) + .status(buildStatus(taxAgentManageRange.getEmployeeStatus())) .build(); }) .collect(Collectors.toList()); @@ -316,6 +317,14 @@ public class TaxAgentBO { .collect(Collectors.joining(",")); } + private static String buildStatus( String employeeStatus) { + List employeeStatusList = JsonUtil.parseList(employeeStatus, String.class); + if (CollectionUtils.isEmpty(employeeStatusList)) { + return StringUtils.EMPTY; + } + return String.join(",", employeeStatusList); + } + /** * 构建对象名 * diff --git a/src/com/engine/salary/entity/taxagent/dto/TaxAgentManageRangeListDTO.java b/src/com/engine/salary/entity/taxagent/dto/TaxAgentManageRangeListDTO.java index d87bf0a3b..db8f3411f 100644 --- a/src/com/engine/salary/entity/taxagent/dto/TaxAgentManageRangeListDTO.java +++ b/src/com/engine/salary/entity/taxagent/dto/TaxAgentManageRangeListDTO.java @@ -59,4 +59,6 @@ public class TaxAgentManageRangeListDTO { ) @TableTitle(title ="员工状态",key = "employeeStatus",dataIndex = "employeeStatus") private String employeeStatus; + + private String status; } From 7fd0f95802c0e6c70ebae4d9e94fde8db1f13b8a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Fri, 1 Nov 2024 14:27:47 +0800 Subject: [PATCH 116/218] =?UTF-8?q?=E6=89=A3=E7=BC=B4=E4=B9=89=E5=8A=A1?= =?UTF-8?q?=E4=BA=BA=E5=92=8C=E8=B4=A6=E5=A5=97=E7=9A=84=E4=BA=BA=E5=91=98?= =?UTF-8?q?=E7=9A=84=E4=BA=BA=E5=91=98=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entity/salarysob/bo/SalarySobRangeBO.java | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/com/engine/salary/entity/salarysob/bo/SalarySobRangeBO.java b/src/com/engine/salary/entity/salarysob/bo/SalarySobRangeBO.java index 91650430b..ff4f3b076 100644 --- a/src/com/engine/salary/entity/salarysob/bo/SalarySobRangeBO.java +++ b/src/com/engine/salary/entity/salarysob/bo/SalarySobRangeBO.java @@ -125,7 +125,7 @@ public class SalarySobRangeBO { .target(salarySobRangePO.getTarget()) .targetName(buildTargetName(salarySobRangePO, employeeComInfoMap, departmentComInfoMap, subCompanyComInfoMap, positionComInfoMap)) .employeeStatus(employeeStatusesStr) - .status(salarySobRangePO.getEmployeeStatuses()) + .status(parseByStatuses(salarySobRangePO.getEmployeeStatuses())) .build(); }) .collect(Collectors.toList()); @@ -151,6 +151,20 @@ public class SalarySobRangeBO { return sb.toString(); } + private static String parseByStatuses(String employeeStatuses) { + String[] split = employeeStatuses.split(","); + List enumsList = Arrays.asList(split).stream().map(item -> Integer.valueOf(item)).collect(Collectors.toList()); + List salaryEmployeeStatusEnums = SalaryEmployeeStatusEnum.parseByValues(enumsList); + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < salaryEmployeeStatusEnums.size(); i++) { + sb.append(salaryEmployeeStatusEnums.get(i)); + if (i + 1 != salaryEmployeeStatusEnums.size()) { + sb.append(","); + } + } + return sb.toString(); + } + /** * 解析薪资账套人员范围中对象的名称(可能是人员名称、部门名称、岗位名称……) * From e9b347c07ce67e431c0efec01587ae017339865f Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Fri, 1 Nov 2024 16:03:51 +0800 Subject: [PATCH 117/218] =?UTF-8?q?=E5=89=8D=E7=AB=AF=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E8=96=AA=E8=B5=84=E5=AE=A1=E6=89=B9=E6=8C=89=E9=92=AE=E7=9A=84?= =?UTF-8?q?=E6=98=BE=E9=9A=90=E6=8E=A7=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/engine/salary/sys/constant/SalarySysConstant.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/com/engine/salary/sys/constant/SalarySysConstant.java b/src/com/engine/salary/sys/constant/SalarySysConstant.java index 02fcf2590..4141cc043 100644 --- a/src/com/engine/salary/sys/constant/SalarySysConstant.java +++ b/src/com/engine/salary/sys/constant/SalarySysConstant.java @@ -147,6 +147,11 @@ public class SalarySysConstant { public static final String TAX_AGENT_SHOW_STATUS = "taxAgentShowStatus"; + /** + * 展示薪资核算审批设置按钮 + */ + public static final String SHOW_SALARY_ACCT_APPROVAL = "SHOW_SALARY_ACCT_APPROVAL"; + /** * 开启核算记录审批功能 */ From e3d5ca78f4c66877bcce997d1e9a2d13932a37f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Mon, 4 Nov 2024 10:53:21 +0800 Subject: [PATCH 118/218] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=B4=A6=E5=A5=97?= =?UTF-8?q?=E7=8A=B6=E6=80=81=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entity/salarysob/bo/SalarySobRangeBO.java | 31 +------------------ .../salarysob/dto/SalarySobRangeListDTO.java | 2 +- 2 files changed, 2 insertions(+), 31 deletions(-) diff --git a/src/com/engine/salary/entity/salarysob/bo/SalarySobRangeBO.java b/src/com/engine/salary/entity/salarysob/bo/SalarySobRangeBO.java index ff4f3b076..743555800 100644 --- a/src/com/engine/salary/entity/salarysob/bo/SalarySobRangeBO.java +++ b/src/com/engine/salary/entity/salarysob/bo/SalarySobRangeBO.java @@ -57,35 +57,6 @@ public class SalarySobRangeBO { resultParams.add(queryParam); }); return resultParams; - - -// Map> rangeMap = SalaryEntityUtil.group2Map(salarySobRanges, SalarySobRangePO::getTargetType); -// List resultParams = Lists.newArrayListWithExpectedSize(rangeMap.size()); -// rangeMap.forEach((targetType, salarySobRangePOS) -> { -// List employeeStatus = salarySobRangePOS.stream() -// .map(e -> SalaryEmployeeStatusEnum.parseByValue(e.getEmployeeStatus())) -// .filter(Objects::nonNull) -// .map(e -> e.name().toLowerCase()) -// .distinct() -// .collect(Collectors.toList()); -// if (employeeStatus.contains(SalaryEmployeeStatusEnum.ALL.name().toLowerCase())) { -// employeeStatus = Collections.emptyList(); -// } -// if (employeeStatus.contains(SalaryEmployeeStatusEnum.NORMAL.name().toLowerCase())) { -// employeeStatus = UserStatusEnum.getNormalStatus(); -// } -// if (employeeStatus.contains(SalaryEmployeeStatusEnum.UNAVAILABLE.name().toLowerCase())) { -// employeeStatus = UserStatusEnum.getUnavailableStatus(); -// } -// TargetTypeEnum targetTypeEnum = TargetTypeEnum.parseByValue(targetType); -// SalarySobRangeEmpQueryParam queryParam = SalarySobRangeEmpQueryParam.builder() -// .targetType(Optional.ofNullable(targetTypeEnum).map(TargetTypeEnum::name).orElse(StringUtils.EMPTY)) -// .targetIds(SalaryEntityUtil.properties(salarySobRangePOS, SalarySobRangePO::getTargetId)) -// .employeeStatus(employeeStatus) -// .build(); -// resultParams.add(queryParam); -// }); -// return resultParams; } /** @@ -117,7 +88,7 @@ public class SalarySobRangeBO { return SalarySobRangeListDTO.builder() .id(salarySobRangePO.getId()) .salarySobId(salarySobRangePO.getSalarySobId()) - .targetType(targetTypeEnum != null ? targetTypeEnum.getValue() : -1) + .targetType(targetTypeEnum) .targetTypeName(Optional.ofNullable(targetTypeEnum) .map(e -> SalaryI18nUtil.getI18nLabel(e.getLabelId(), e.getDefaultLabel())) .orElse(StringUtils.EMPTY)) diff --git a/src/com/engine/salary/entity/salarysob/dto/SalarySobRangeListDTO.java b/src/com/engine/salary/entity/salarysob/dto/SalarySobRangeListDTO.java index ea63898c1..1d6d234dc 100644 --- a/src/com/engine/salary/entity/salarysob/dto/SalarySobRangeListDTO.java +++ b/src/com/engine/salary/entity/salarysob/dto/SalarySobRangeListDTO.java @@ -37,7 +37,7 @@ public class SalarySobRangeListDTO { * * @see TargetTypeEnum */ - private Integer targetType; + private TargetTypeEnum targetType; @SalaryTableColumn(text = "对象类型", width = "10%", column = "targetTypeName") @TableTitle(title = "对象类型", dataIndex = "targetTypeName", key = "targetTypeName") From ea06150dc53c4d82b5e546581bd323c13f4f31e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Mon, 4 Nov 2024 15:06:27 +0800 Subject: [PATCH 119/218] =?UTF-8?q?=E5=8F=96=E6=B6=88=E7=A4=BE=E4=BF=9D?= =?UTF-8?q?=E5=8F=B0=E8=B4=A6=E9=87=8D=E6=96=B0=E6=A0=B8=E7=AE=97=E9=99=90?= =?UTF-8?q?=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salary/service/impl/SIAccountServiceImpl.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/com/engine/salary/service/impl/SIAccountServiceImpl.java b/src/com/engine/salary/service/impl/SIAccountServiceImpl.java index fb49c291a..cafeb921a 100644 --- a/src/com/engine/salary/service/impl/SIAccountServiceImpl.java +++ b/src/com/engine/salary/service/impl/SIAccountServiceImpl.java @@ -1551,11 +1551,11 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { public void socialSecurityBenefitsRecalculate(InsuranceAccountBatchPO param) { //fixme 重新核算的校验逻辑 1、先取台账对应扣缴义务人下的所有账套 2、取账套下所有核算记录 3、判断核算记录有没有使用对应月份的福利台账 // int num = getSiAccountBiz(user).checkIfBusinessaccounting(param); - int num = checkIfBusinessAccounting(param); - //表示已经被核算过不能重新核算 - if (num > 0) { - throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(0, "已被薪酬核算给核算过,无法重新核算!")); - } +// int num = checkIfBusinessAccounting(param); +// //表示已经被核算过不能重新核算 +// if (num > 0) { +// throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(0, "已被薪酬核算给核算过,无法重新核算!")); +// } param.setBillStatus(0); // getSiAccountBiz(user).updateById(param); updateById(param); From 4cd0fbfe3007c46a89efd5e44d6537b96f8ec630 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Mon, 4 Nov 2024 19:49:46 +0800 Subject: [PATCH 120/218] =?UTF-8?q?=E6=8A=A5=E8=A1=A8=E6=A8=A1=E6=9D=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../setting/dto/PageListSettingDTO.java | 4 +- .../setting/dto/PageListTemplateDTO.java | 19 +++++ .../param/PageListTemplateQueryParam.java | 22 ++++++ .../param/PageListTemplateSaveParam.java | 38 ++++++++++ .../entity/setting/po/PageListSettingPO.java | 12 ++++ .../setting/PageListSettingPageEnum.java | 39 +++++++++++ .../mapper/setting/PageListSettingMapper.java | 2 + .../mapper/setting/PageListSettingMapper.xml | 48 +++++++++++-- .../SalaryStatisticsEmployeeServiceImpl.java | 4 +- .../engine/salary/service/SettingService.java | 8 +++ .../service/impl/SettingServiceImpl.java | 70 ++++++++++++++++++- .../salary/web/SalaryCommonController.java | 40 +++++++++++ .../salary/wrapper/SalaryCommonWrapper.java | 12 ++++ 13 files changed, 309 insertions(+), 9 deletions(-) create mode 100644 src/com/engine/salary/entity/setting/dto/PageListTemplateDTO.java create mode 100644 src/com/engine/salary/entity/setting/param/PageListTemplateQueryParam.java create mode 100644 src/com/engine/salary/entity/setting/param/PageListTemplateSaveParam.java create mode 100644 src/com/engine/salary/enums/setting/PageListSettingPageEnum.java diff --git a/src/com/engine/salary/entity/setting/dto/PageListSettingDTO.java b/src/com/engine/salary/entity/setting/dto/PageListSettingDTO.java index afe2de81c..56648ec45 100644 --- a/src/com/engine/salary/entity/setting/dto/PageListSettingDTO.java +++ b/src/com/engine/salary/entity/setting/dto/PageListSettingDTO.java @@ -5,9 +5,7 @@ import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; -/** - * 薪资帐套表 - */ + @Data @Builder @NoArgsConstructor diff --git a/src/com/engine/salary/entity/setting/dto/PageListTemplateDTO.java b/src/com/engine/salary/entity/setting/dto/PageListTemplateDTO.java new file mode 100644 index 000000000..15f47fa0d --- /dev/null +++ b/src/com/engine/salary/entity/setting/dto/PageListTemplateDTO.java @@ -0,0 +1,19 @@ +package com.engine.salary.entity.setting.dto; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class PageListTemplateDTO { + + private Long id; + + private String name; + +} \ 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 new file mode 100644 index 000000000..b939ac6f1 --- /dev/null +++ b/src/com/engine/salary/entity/setting/param/PageListTemplateQueryParam.java @@ -0,0 +1,22 @@ +package com.engine.salary.entity.setting.param; + +import com.engine.salary.util.valid.DataCheck; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 薪资帐套表 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class PageListTemplateQueryParam { + + @DataCheck(require = true,message = "请选择页面") + private String page; + + private String name; +} \ No newline at end of file diff --git a/src/com/engine/salary/entity/setting/param/PageListTemplateSaveParam.java b/src/com/engine/salary/entity/setting/param/PageListTemplateSaveParam.java new file mode 100644 index 000000000..2c5cd996c --- /dev/null +++ b/src/com/engine/salary/entity/setting/param/PageListTemplateSaveParam.java @@ -0,0 +1,38 @@ +package com.engine.salary.entity.setting.param; + +import com.engine.salary.util.valid.DataCheck; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +/** + * 薪资帐套表 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class PageListTemplateSaveParam { + private Long id; + + /** + * 页面,0:薪资明细 + */ + @DataCheck(require = true,message = "请选择页面") + private String page; + + /** + * 模板名称 + */ + @DataCheck(require = true,message = "请选择模板名称") + private String name; + + /** + * 设置 + */ + @DataCheck(require = true,message = "请选择设置") + private List setting; +} \ No newline at end of file diff --git a/src/com/engine/salary/entity/setting/po/PageListSettingPO.java b/src/com/engine/salary/entity/setting/po/PageListSettingPO.java index 59b7f2ea1..ae7b83bf9 100644 --- a/src/com/engine/salary/entity/setting/po/PageListSettingPO.java +++ b/src/com/engine/salary/entity/setting/po/PageListSettingPO.java @@ -22,6 +22,18 @@ public class PageListSettingPO { @ElogTransform(name = "") private Long id; + /** + * 是否模板:0否,1是 + */ + @ElogTransform(name = "是否模板") + private Integer template; + + /** + * 模板名称 + */ + @ElogTransform(name = "模板名称") + private String name; + /** * 页面,0:薪资明细 */ diff --git a/src/com/engine/salary/enums/setting/PageListSettingPageEnum.java b/src/com/engine/salary/enums/setting/PageListSettingPageEnum.java new file mode 100644 index 000000000..49110ae17 --- /dev/null +++ b/src/com/engine/salary/enums/setting/PageListSettingPageEnum.java @@ -0,0 +1,39 @@ +package com.engine.salary.enums.setting; + +import com.engine.salary.enums.BaseEnum; + +/** + * 人员类型 + */ +public enum PageListSettingPageEnum implements BaseEnum { + + SALARY_DETAILS_REPORT("salary_details_report", "薪资明细报表", 109125) + ; + + private String value; + + private String defaultLabel; + + private int labelId; + + PageListSettingPageEnum(String value, String defaultLabel, int labelId) { + this.value = value; + this.defaultLabel = defaultLabel; + this.labelId = labelId; + } + + @Override + public String getValue() { + return value; + } + + @Override + public Integer getLabelId() { + return labelId; + } + + @Override + public String getDefaultLabel() { + return defaultLabel; + } +} diff --git a/src/com/engine/salary/mapper/setting/PageListSettingMapper.java b/src/com/engine/salary/mapper/setting/PageListSettingMapper.java index 9c2ce51f8..5fc974dc1 100644 --- a/src/com/engine/salary/mapper/setting/PageListSettingMapper.java +++ b/src/com/engine/salary/mapper/setting/PageListSettingMapper.java @@ -70,4 +70,6 @@ public interface PageListSettingMapper { void deleteByIds(@Param("ids") Collection ids); PageListSettingPO getByPage(String page); + + List getTemplatesByPage(String page); } \ No newline at end of file diff --git a/src/com/engine/salary/mapper/setting/PageListSettingMapper.xml b/src/com/engine/salary/mapper/setting/PageListSettingMapper.xml index 644707567..a9a656b76 100644 --- a/src/com/engine/salary/mapper/setting/PageListSettingMapper.xml +++ b/src/com/engine/salary/mapper/setting/PageListSettingMapper.xml @@ -2,14 +2,16 @@ - - - + + - + + + + @@ -21,6 +23,8 @@ , t.delete_type , t.id , t.page + , t.name + , t.template , t.setting , t.tenant_key , t.update_time @@ -64,6 +68,12 @@ AND page = #{page} + + AND name = #{name} + + + AND template = #{template} + AND setting = #{setting} @@ -103,6 +113,12 @@ page, + + name, + + + template, + setting, @@ -129,6 +145,12 @@ #{page}, + + #{name}, + + + #{template}, + #{setting}, @@ -150,6 +172,8 @@ creator=#{creator}, delete_type=#{deleteType}, page=#{page}, + name=#{name}, + template=#{template}, setting=#{setting}, tenant_key=#{tenantKey}, update_time=#{updateTime}, @@ -174,6 +198,12 @@ page=#{page}, + + name=#{name}, + + + template=#{template}, + setting=#{setting}, @@ -211,6 +241,16 @@ FROM hrsa_page_list_setting t WHERE delete_type = 0 + and template = 0 + and page = #{page} + + + diff --git a/src/com/engine/salary/report/service/impl/SalaryStatisticsEmployeeServiceImpl.java b/src/com/engine/salary/report/service/impl/SalaryStatisticsEmployeeServiceImpl.java index c030d038e..1da1b84b6 100644 --- a/src/com/engine/salary/report/service/impl/SalaryStatisticsEmployeeServiceImpl.java +++ b/src/com/engine/salary/report/service/impl/SalaryStatisticsEmployeeServiceImpl.java @@ -41,6 +41,8 @@ import weaver.hrm.User; import java.util.*; import java.util.stream.Collectors; +import static com.engine.salary.enums.setting.PageListSettingPageEnum.SALARY_DETAILS_REPORT; + /** * 薪酬统计员工明细 *

Copyright: Copyright (c) 2022

@@ -348,7 +350,7 @@ public class SalaryStatisticsEmployeeServiceImpl extends Service implements Sala @Override public SalaryStatisticsEmployeeDetailResultDTO getDetailSalaryAcctResultByAcctEmp(List salaryAcctEmployeeList) { // 3.获取薪资项目 - PageListSettingQueryParam param = PageListSettingQueryParam.builder().page("salary_details_report").build(); + PageListSettingQueryParam param = PageListSettingQueryParam.builder().page(SALARY_DETAILS_REPORT.getValue()).build(); Map setting = getSettingService(user).getPageListSetting(param); List checked = setting.get("checked") != null ? JsonUtil.parseList(setting.get("checked"), Long.class) : new ArrayList<>(); List salaryItemList = getSalaryItemService(user).listByIds(checked); diff --git a/src/com/engine/salary/service/SettingService.java b/src/com/engine/salary/service/SettingService.java index 27b7e679e..1a5be79a8 100644 --- a/src/com/engine/salary/service/SettingService.java +++ b/src/com/engine/salary/service/SettingService.java @@ -2,11 +2,19 @@ package com.engine.salary.service; import com.engine.salary.entity.setting.param.PageListSettingQueryParam; import com.engine.salary.entity.setting.param.PageListSettingSaveParam; +import com.engine.salary.entity.setting.param.PageListTemplateQueryParam; +import com.engine.salary.entity.setting.param.PageListTemplateSaveParam; +import com.engine.salary.entity.setting.po.PageListSettingPO; +import java.util.List; import java.util.Map; public interface SettingService { void savePageListSetting(PageListSettingSaveParam pageListSettingSaveParam); Map getPageListSetting(PageListSettingQueryParam param); + + List getPageListTemplates(PageListTemplateQueryParam queryParam); + + PageListSettingPO savePageListTemplate(PageListTemplateSaveParam param); } diff --git a/src/com/engine/salary/service/impl/SettingServiceImpl.java b/src/com/engine/salary/service/impl/SettingServiceImpl.java index 9f52b7ea8..039786acf 100644 --- a/src/com/engine/salary/service/impl/SettingServiceImpl.java +++ b/src/com/engine/salary/service/impl/SettingServiceImpl.java @@ -6,7 +6,11 @@ import com.engine.core.impl.Service; import com.engine.salary.entity.salaryitem.po.SalaryItemPO; import com.engine.salary.entity.setting.param.PageListSettingQueryParam; import com.engine.salary.entity.setting.param.PageListSettingSaveParam; +import com.engine.salary.entity.setting.param.PageListTemplateQueryParam; +import com.engine.salary.entity.setting.param.PageListTemplateSaveParam; import com.engine.salary.entity.setting.po.PageListSettingPO; +import com.engine.salary.enums.SalaryOnOffEnum; +import com.engine.salary.exception.SalaryRunTimeException; import com.engine.salary.mapper.setting.PageListSettingMapper; import com.engine.salary.service.SalaryItemService; import com.engine.salary.service.SalarySobService; @@ -14,12 +18,14 @@ import com.engine.salary.service.SettingService; 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 weaver.hrm.User; import java.util.*; import java.util.stream.Collectors; import static com.engine.salary.constant.SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY; +import static com.engine.salary.enums.setting.PageListSettingPageEnum.SALARY_DETAILS_REPORT; /** * 薪资核算 @@ -55,6 +61,8 @@ public class SettingServiceImpl extends Service implements SettingService { } else { pageListSettingPO = PageListSettingPO.builder() .id(IdGenerator.generate()) + .name("系统默认模板") + .template(SalaryOnOffEnum.OFF.getValue()) .page(pageListSettingSaveParam.getPage()) .setting(JsonUtil.toJsonString(pageListSettingSaveParam.getSetting())) .creator((long) user.getUID()) @@ -72,7 +80,7 @@ public class SettingServiceImpl extends Service implements SettingService { String page = param.getPage(); Map result = new HashMap(); PageListSettingPO pageListSettingPO = getPageListSettingMapper().getByPage(page); - if ("salary_details_report".equals(page)) { + if (SALARY_DETAILS_REPORT.getValue().equals(page)) { List salaryItemList = getSalaryItemService(user).listAll(); salaryItemList = salaryItemList.stream() .filter(po -> { @@ -104,4 +112,64 @@ public class SettingServiceImpl extends Service implements SettingService { } return result; } + + @Override + public List getPageListTemplates(PageListTemplateQueryParam param) { + + ValidUtil.doValidator(param); + + String page = param.getPage(); + + List settingPOS = new ArrayList<>(); + //系统默认模板 + PageListSettingPO settingPO = getPageListSettingMapper().getByPage(page); + if (settingPO != null) { + settingPOS.add(settingPO); + } + + List pos = getPageListSettingMapper().getTemplatesByPage(page); + settingPOS.addAll(pos); + + String name = param.getName(); + if (StrUtil.isNotBlank(name)) { + settingPOS = settingPOS.stream().filter(po -> po.getName() != null && po.getName().contains(name)).collect(Collectors.toList()); + } + + return settingPOS; + } + + @Override + public PageListSettingPO savePageListTemplate(PageListTemplateSaveParam param) { + ValidUtil.doValidator(param); + Date now = new Date(); + Long id = param.getId(); + + PageListSettingPO po; + if (id == null) { + po = PageListSettingPO.builder() + .id(IdGenerator.generate()) + .template(SalaryOnOffEnum.ON.getValue()) + .name(param.getName()) + .page(param.getPage()) + .setting(JsonUtil.toJsonString(param.getSetting())) + .creator((long) user.getUID()) + .createTime(now) + .updateTime(now) + .deleteType(0) + .tenantKey(DEFAULT_TENANT_KEY) + .build(); + getPageListSettingMapper().insertIgnoreNull(po); + } else { + po = getPageListSettingMapper().getById(id); + if (po == null) { + throw new SalaryRunTimeException("模板不存在!"); + } + po.setName(param.getName()); + po.setSetting(JsonUtil.toJsonString(param.getSetting())); + po.setUpdateTime(now); + getPageListSettingMapper().updateIgnoreNull(po); + } + + return po; + } } diff --git a/src/com/engine/salary/web/SalaryCommonController.java b/src/com/engine/salary/web/SalaryCommonController.java index d28dc0d86..43eb418d1 100644 --- a/src/com/engine/salary/web/SalaryCommonController.java +++ b/src/com/engine/salary/web/SalaryCommonController.java @@ -3,6 +3,9 @@ package com.engine.salary.web; import com.engine.common.util.ServiceUtil; import com.engine.salary.entity.setting.param.PageListSettingQueryParam; import com.engine.salary.entity.setting.param.PageListSettingSaveParam; +import com.engine.salary.entity.setting.param.PageListTemplateQueryParam; +import com.engine.salary.entity.setting.param.PageListTemplateSaveParam; +import com.engine.salary.entity.setting.po.PageListSettingPO; import com.engine.salary.util.ResponseResult; import com.engine.salary.util.SalaryEnumUtil; import com.engine.salary.wrapper.SalaryCommonWrapper; @@ -66,6 +69,13 @@ public class SalaryCommonController { return new ResponseResult(user).run(getSalaryCommonWrapper(user)::savePageListSetting, param); } + /** + * 页面默认值 + * @param request + * @param response + * @param param + * @return + */ @POST @Path("/pageList/get/setting") @Produces(MediaType.APPLICATION_JSON) @@ -73,4 +83,34 @@ public class SalaryCommonController { User user = HrmUserVarify.getUser(request, response); return new ResponseResult(user).run(getSalaryCommonWrapper(user)::getPageListSetting, param); } + + /** + * 页面模板列表 + * @param request + * @param response + * @param param + * @return + */ + @POST + @Path("/pageList/template/list") + @Produces(MediaType.APPLICATION_JSON) + public String getPageListTemplates(@Context HttpServletRequest request, @Context HttpServletResponse response,@RequestBody PageListTemplateQueryParam param) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult>(user).run(getSalaryCommonWrapper(user)::getPageListTemplates, param); + } + + /** + * 页面模板列表 + * @param request + * @param response + * @param param + * @return + */ + @POST + @Path("/pageList/template/save") + @Produces(MediaType.APPLICATION_JSON) + public String savePageListTemplate(@Context HttpServletRequest request, @Context HttpServletResponse response,@RequestBody PageListTemplateSaveParam param) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getSalaryCommonWrapper(user)::savePageListTemplate, param); + } } diff --git a/src/com/engine/salary/wrapper/SalaryCommonWrapper.java b/src/com/engine/salary/wrapper/SalaryCommonWrapper.java index e66e09121..428ad2d0d 100644 --- a/src/com/engine/salary/wrapper/SalaryCommonWrapper.java +++ b/src/com/engine/salary/wrapper/SalaryCommonWrapper.java @@ -4,12 +4,16 @@ import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; import com.engine.salary.entity.setting.param.PageListSettingQueryParam; import com.engine.salary.entity.setting.param.PageListSettingSaveParam; +import com.engine.salary.entity.setting.param.PageListTemplateQueryParam; +import com.engine.salary.entity.setting.param.PageListTemplateSaveParam; +import com.engine.salary.entity.setting.po.PageListSettingPO; 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 weaver.hrm.User; +import java.util.List; import java.util.Map; @@ -39,4 +43,12 @@ public class SalaryCommonWrapper extends Service { public Map getPageListSetting(PageListSettingQueryParam param) { return getSettingService(user).getPageListSetting(param); } + + public List getPageListTemplates(PageListTemplateQueryParam queryParam) { + return getSettingService(user).getPageListTemplates(queryParam); + } + + public PageListSettingPO savePageListTemplate(PageListTemplateSaveParam param) { + return getSettingService(user).savePageListTemplate(param); + } } From cb6738734aaa2190cdd2d1612c8f896f93834fd0 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Tue, 5 Nov 2024 11:04:21 +0800 Subject: [PATCH 121/218] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E7=A4=BE=E4=BF=9D?= =?UTF-8?q?=E7=A6=8F=E5=88=A9=E6=A1=A3=E6=A1=88=E5=AF=BC=E5=87=BA=EF=BC=8C?= =?UTF-8?q?=E4=B8=80=E4=B8=AA=E4=BA=BA=E5=9C=A8=E5=A4=9A=E4=B8=AA=E4=B9=89?= =?UTF-8?q?=E5=8A=A1=E4=BA=BA=E4=B8=8B=20=E5=AF=BC=E5=87=BAbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/engine/salary/service/impl/SISchemeServiceImpl.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/com/engine/salary/service/impl/SISchemeServiceImpl.java b/src/com/engine/salary/service/impl/SISchemeServiceImpl.java index 699094813..504142ea9 100644 --- a/src/com/engine/salary/service/impl/SISchemeServiceImpl.java +++ b/src/com/engine/salary/service/impl/SISchemeServiceImpl.java @@ -742,6 +742,8 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { List socialByEmployeeId = getSIArchivesService(user).getSocialByEmployeeIds(new ArrayList() {{ add(item.getEmployeeId()); }}); + // 过滤义务人 + socialByEmployeeId = socialByEmployeeId.stream().filter(s -> s.getPaymentOrganization().equals(item.getPaymentOrganization())).collect(Collectors.toList()); encryptUtil.decryptList(socialByEmployeeId, InsuranceArchivesSocialSchemePO.class); InsuranceArchivesSocialSchemePO socialItem = null; if (socialByEmployeeId.size() > 0) { @@ -752,6 +754,8 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { List fundByEmployeeId = getSIArchivesService(user).getFundByEmployeeIds(new ArrayList() {{ add(item.getEmployeeId()); }}); + // 过滤义务人 + fundByEmployeeId = fundByEmployeeId.stream().filter(f -> f.getPaymentOrganization().equals(item.getPaymentOrganization())).collect(Collectors.toList()); encryptUtil.decryptList(fundByEmployeeId, InsuranceArchivesFundSchemePO.class); if (fundByEmployeeId.size() > 0) { @@ -762,6 +766,7 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { List otherByEmployeeId = getSIArchivesService(user).getOtherByEmployeeIds(new ArrayList() {{ add(item.getEmployeeId()); }}); + otherByEmployeeId = otherByEmployeeId.stream().filter(o -> o.getPaymentOrganization().equals(item.getPaymentOrganization())).collect(Collectors.toList()); encryptUtil.decryptList(otherByEmployeeId, InsuranceArchivesOtherSchemePO.class); if (otherByEmployeeId.size() > 0) { otherItem = otherByEmployeeId.get(0); From 13012b739ed8864d855f5fb819311bf7929693cc Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Tue, 5 Nov 2024 16:22:48 +0800 Subject: [PATCH 122/218] =?UTF-8?q?=E5=AE=9A=E8=96=AAaction=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E9=85=8D=E7=BD=AE=E7=95=99=E5=9C=A8=E5=BE=85=E5=AE=9A?= =?UTF-8?q?=E8=96=AA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/engine/salary/action/InitSalaryAction.java | 7 +++++++ .../entity/salaryarchive/bo/SalaryArchiveExcelBO.java | 3 ++- .../param/SalaryArchiveImportActionParam.java | 5 +++++ .../param/SalaryArchiveImportHandleParam.java | 5 +++++ .../salary/service/impl/SalaryArchiveExcelServiceImpl.java | 2 +- 5 files changed, 20 insertions(+), 2 deletions(-) diff --git a/src/com/engine/salary/action/InitSalaryAction.java b/src/com/engine/salary/action/InitSalaryAction.java index 3593dcb9b..d280f49ab 100644 --- a/src/com/engine/salary/action/InitSalaryAction.java +++ b/src/com/engine/salary/action/InitSalaryAction.java @@ -52,6 +52,9 @@ public class InitSalaryAction implements Action { private String tableName; + private String archiveStatus; + + public String getTableName() { return tableName; } @@ -132,6 +135,10 @@ public class InitSalaryAction implements Action { .importDatas(importData) .build(); + if (StringUtils.isNotBlank(archiveStatus) && archiveStatus.equals(SalaryArchiveStatusEnum.PENDING.getValue())) { + build.setKeepStatus(true); + } + //操作人 String uid = importDataMap.getOrDefault("操作人", "1").toString(); Map map = getSalaryArchiveWrapper(new User(Integer.parseInt(uid))).importSalaryArchiveInit(build); diff --git a/src/com/engine/salary/entity/salaryarchive/bo/SalaryArchiveExcelBO.java b/src/com/engine/salary/entity/salaryarchive/bo/SalaryArchiveExcelBO.java index 58eaabcad..4aee55819 100644 --- a/src/com/engine/salary/entity/salaryarchive/bo/SalaryArchiveExcelBO.java +++ b/src/com/engine/salary/entity/salaryarchive/bo/SalaryArchiveExcelBO.java @@ -760,7 +760,8 @@ public class SalaryArchiveExcelBO extends Service { // 待停薪导入 || ((sa.getRunStatus().equals(SalaryArchiveStatusEnum.FIXED.getValue()) || sa.getRunStatus().equals(SalaryArchiveStatusEnum.SUSPEND.getValue())) && importHandleParam.isSuspendList()); if (isEnabled) { - if (importHandleParam.isInit()) { + if (importHandleParam.isInit() && + (importHandleParam.getKeepStatus() == null || importHandleParam.getKeepStatus().equals(Boolean.FALSE))) { sa.setRunStatus(SalaryArchiveStatusEnum.FIXED.getValue()); } // sa.setModifier(importHandleParam.getCurrentEmployeeId()); diff --git a/src/com/engine/salary/entity/salaryarchive/param/SalaryArchiveImportActionParam.java b/src/com/engine/salary/entity/salaryarchive/param/SalaryArchiveImportActionParam.java index 06dc670c6..0f8e3a602 100644 --- a/src/com/engine/salary/entity/salaryarchive/param/SalaryArchiveImportActionParam.java +++ b/src/com/engine/salary/entity/salaryarchive/param/SalaryArchiveImportActionParam.java @@ -42,4 +42,9 @@ public class SalaryArchiveImportActionParam { * 说明 */ private String description; + + /** + * 档案状态是否保持不变 + */ + private Boolean keepStatus; } diff --git a/src/com/engine/salary/entity/salaryarchive/param/SalaryArchiveImportHandleParam.java b/src/com/engine/salary/entity/salaryarchive/param/SalaryArchiveImportHandleParam.java index a9bd77eb5..155cba89c 100644 --- a/src/com/engine/salary/entity/salaryarchive/param/SalaryArchiveImportHandleParam.java +++ b/src/com/engine/salary/entity/salaryarchive/param/SalaryArchiveImportHandleParam.java @@ -172,4 +172,9 @@ public class SalaryArchiveImportHandleParam { * 薪资档案-账套关联 */ List salaryArchiveSobSaves; + + /** + * 薪资档案状态是否保持不变 + */ + Boolean keepStatus; } diff --git a/src/com/engine/salary/service/impl/SalaryArchiveExcelServiceImpl.java b/src/com/engine/salary/service/impl/SalaryArchiveExcelServiceImpl.java index acc81e362..1ee9bc1d6 100644 --- a/src/com/engine/salary/service/impl/SalaryArchiveExcelServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryArchiveExcelServiceImpl.java @@ -546,7 +546,7 @@ public class SalaryArchiveExcelServiceImpl extends Service implements SalaryArch // 构建导入需要的数据 SalaryArchiveImportHandleParam importHandleParam = buildImportHandleParam(SalaryArchiveImportHandleParam.builder().isProcess(true).listType(param.getListType()).importType(param.getImportType()).description(param.getDescription()).build()); - + importHandleParam.setKeepStatus(param.getKeepStatus()); int total = 0; //excel数据 From 5953c2b938060bd42c3230cf94da57f1f66a9e3e Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Wed, 6 Nov 2024 13:37:03 +0800 Subject: [PATCH 123/218] =?UTF-8?q?=E8=96=AA=E9=85=ACtoken=E5=8A=A0?= =?UTF-8?q?=E8=A7=A3=E5=AF=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entity/salaryBill/bo/SalaryBillBO.java | 4 +-- .../param/SalaryBillGetTokenParam.java | 26 +++++++++++++++++++ .../engine/salary/util/SalaryTokenUtil.java | 14 +++++++--- .../salary/web/SalaryBillController.java | 6 ++--- .../salary/wrapper/SalarySendWrapper.java | 4 +-- 5 files changed, 44 insertions(+), 10 deletions(-) create mode 100644 src/com/engine/salary/entity/salaryBill/param/SalaryBillGetTokenParam.java diff --git a/src/com/engine/salary/entity/salaryBill/bo/SalaryBillBO.java b/src/com/engine/salary/entity/salaryBill/bo/SalaryBillBO.java index bce1d0d58..499b3fa15 100644 --- a/src/com/engine/salary/entity/salaryBill/bo/SalaryBillBO.java +++ b/src/com/engine/salary/entity/salaryBill/bo/SalaryBillBO.java @@ -249,9 +249,9 @@ public class SalaryBillBO { String title = billTitle; // 标题 String context = "点击查看详情"; // 内容 // PC端链接 - String linkUrl = weaver.general.GCONST.getContextPath() + "/spa/hrmSalary/static/index.html#/main/hrmSalary/mobilepayroll?id=" + id + "&recipient=" + AESEncryptUtil.encrypt4SalaryBill(employeeId.toString()); + String linkUrl = weaver.general.GCONST.getContextPath() + "/spa/hrmSalary/static/index.html#/main/hrmSalary/mobilepayroll?id=" + id + "&salaryCode=" + AESEncryptUtil.encrypt4SalaryBill(employeeId.toString()); // 移动端链接 - String linkMobileUrl = weaver.general.GCONST.getContextPath() + "/spa/hrmSalary/static/index.html#/main/hrmSalary/mobilepayroll?type=phone&id=" + id + "&recipient=" + AESEncryptUtil.encrypt4SalaryBill(employeeId.toString()); + String linkMobileUrl = weaver.general.GCONST.getContextPath() + "/spa/hrmSalary/static/index.html#/main/hrmSalary/mobilepayroll?type=phone&id=" + id + "&salaryCode=" + AESEncryptUtil.encrypt4SalaryBill(employeeId.toString()); try { MessageBean messageBean = Util_Message.createMessage(messageType, userIdList, title, context, linkUrl, linkMobileUrl); messageBean.setCreater(Integer.parseInt(salaryBillSendParam.getSendUser().getUID() + ""));// 创建人id diff --git a/src/com/engine/salary/entity/salaryBill/param/SalaryBillGetTokenParam.java b/src/com/engine/salary/entity/salaryBill/param/SalaryBillGetTokenParam.java new file mode 100644 index 000000000..2ab5be248 --- /dev/null +++ b/src/com/engine/salary/entity/salaryBill/param/SalaryBillGetTokenParam.java @@ -0,0 +1,26 @@ +package com.engine.salary.entity.salaryBill.param; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @ClassName SalaryBillGetTokenParam + * @author Harryxzy + * @date 2024/11/6 9:59 + * @description 第三方获取token参数 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class SalaryBillGetTokenParam { + + // 新 + private String salaryCode; + + // 老 未加密 + private String recipient; + +} diff --git a/src/com/engine/salary/util/SalaryTokenUtil.java b/src/com/engine/salary/util/SalaryTokenUtil.java index efde5ce91..ec31793d6 100644 --- a/src/com/engine/salary/util/SalaryTokenUtil.java +++ b/src/com/engine/salary/util/SalaryTokenUtil.java @@ -3,6 +3,7 @@ package com.engine.salary.util; import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.TypeReference; import com.engine.salary.encrypt.AESEncryptUtil; +import com.engine.salary.entity.salaryBill.param.SalaryBillGetTokenParam; import com.engine.salary.exception.SalaryRunTimeException; import com.engine.salary.util.db.IdGenerator; import org.apache.commons.lang3.StringUtils; @@ -77,8 +78,13 @@ public class SalaryTokenUtil { * * @return */ - public static Map GetToken(String uid) { - uid = AESEncryptUtil.decrypt4SalaryBill(uid); + public static Map GetToken(SalaryBillGetTokenParam param) { + String uid = ""; + if (StringUtils.isNotBlank(param.getSalaryCode())) { + uid = AESEncryptUtil.decrypt4SalaryBill(param.getSalaryCode()); + } else { + uid = param.getRecipient(); + } Map heads = new HashMap<>(); if (StringUtils.isBlank(uid)) { return heads; @@ -101,10 +107,12 @@ public class SalaryTokenUtil { String sql= " SELECT conf_value FROM hrsa_salary_sys_conf t WHERE delete_type = 0 AND conf_key = 'SALARY_TOKEN_SECRET'"; rs.execute(sql); String secret = ""; - if (rs.next() && StringUtils.isNotEmpty(rs.getString("conf_value"))) { + if (rs.next() && StringUtils.isNotBlank(rs.getString("conf_value"))) { // 从数据库中拿secret secret = rs.getString("conf_value"); } else { + sql= " update hrsa_salary_sys_conf set delete_type=1 WHERE delete_type = 0 AND conf_key in( 'SALARY_TOKEN_SECRET', 'SALARY_TOKEN_SPK')"; + rs.execute(sql); // 注册获取secret // 获取当前异构系统RSA加密的公钥 String cpk = new RSA().getRSA_PUB(); diff --git a/src/com/engine/salary/web/SalaryBillController.java b/src/com/engine/salary/web/SalaryBillController.java index 6507ee1f4..64437a579 100644 --- a/src/com/engine/salary/web/SalaryBillController.java +++ b/src/com/engine/salary/web/SalaryBillController.java @@ -642,12 +642,12 @@ public class SalaryBillController { * @param * @return */ - @GET + @POST @Path("/getToken") @Produces(MediaType.APPLICATION_JSON) - public String getToken(@Context HttpServletRequest request, @Context HttpServletResponse response, @QueryParam(value = "uid") String uid) { + public String getToken(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryBillGetTokenParam param) { User user = HrmUserVarify.getUser(request, response); - return new ResponseResult>(user).run(getSalarySendWrapper(user)::getToken, uid); + return new ResponseResult>(user).run(getSalarySendWrapper(user)::getToken, param); } /** diff --git a/src/com/engine/salary/wrapper/SalarySendWrapper.java b/src/com/engine/salary/wrapper/SalarySendWrapper.java index 179481841..8bbba561c 100644 --- a/src/com/engine/salary/wrapper/SalarySendWrapper.java +++ b/src/com/engine/salary/wrapper/SalarySendWrapper.java @@ -744,8 +744,8 @@ public class SalarySendWrapper extends Service implements SalarySendWrapperProxy return getSalaryBillService(user).exportPdf(param); } - public Map getToken(String uid) { - return SalaryTokenUtil.GetToken( uid); + public Map getToken(SalaryBillGetTokenParam param) { + return SalaryTokenUtil.GetToken(param); } public String genPdfBeforeExport(SalaryExportPdfParam salaryExportPdfParam) { From 15fe5044e82cb9087998c925638870a8fa2218df Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Thu, 7 Nov 2024 15:19:11 +0800 Subject: [PATCH 124/218] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=85=88=E5=8A=A0?= =?UTF-8?q?=E9=94=81=20=E5=86=8D=E6=A0=B8=E7=AE=97=E6=97=B6=E6=8A=A5?= =?UTF-8?q?=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salary/service/impl/SalaryAcctCalculateServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/com/engine/salary/service/impl/SalaryAcctCalculateServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctCalculateServiceImpl.java index ee7588545..7544d9ec0 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctCalculateServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctCalculateServiceImpl.java @@ -289,7 +289,7 @@ public class SalaryAcctCalculateServiceImpl extends Service implements SalaryAcc .setTaxAgentId(salaryAcctEmployeePO.getTaxAgentId()) .setSalarySobId(salaryAcctEmployeePO.getSalarySobId()) .setSalaryItemId(salaryItemPO.getId()) - .setResultValue(resultValue) + .setResultValue(resultValue == null ? StringUtils.EMPTY : resultValue) .setOriginResultValue(salaryAcctResultPOMap.get(salaryAcctEmployeePO.getEmployeeId() + "-" + salaryAcctEmployeePO.getTaxAgentId() + "-" + salaryItemId) == null ? StringUtils.EMPTY : salaryAcctResultPOMap.get(salaryAcctEmployeePO.getEmployeeId() + "-" + salaryAcctEmployeePO.getTaxAgentId() + "-" + salaryItemId)) .setCalculateKey(salaryAcctCalculateBO.getCalculateKey()) From e537ffaa5a452775a40c480b75b1fab14939393d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Thu, 7 Nov 2024 17:45:17 +0800 Subject: [PATCH 125/218] =?UTF-8?q?=E8=96=AA=E8=B5=84=E6=98=8E=E7=BB=86?= =?UTF-8?q?=E6=98=BE=E7=A4=BA=E6=A8=A1=E6=9D=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sqlupgrade/DM/sql202411060203.sql | 30 +++ sqlupgrade/GS/sql202411060203.sql | 30 +++ sqlupgrade/JC/sql202411060203.sql | 30 +++ sqlupgrade/Mysql/sql202411060203.sql | 28 ++ sqlupgrade/Oracle/sql202411060203.sql | 29 ++ sqlupgrade/PG/sql202411060203.sql | 27 ++ sqlupgrade/SQLServer/sql202411060203.sql | 29 ++ sqlupgrade/ST/sql202411060203.sql | 30 +++ .../setting/dto/PageListTemplateDTO.java | 9 +- .../param/PageListColumnsQueryParam.java | 21 ++ .../param/PageListTemplateChangeParam.java | 31 +++ .../param/PageListTemplateQueryParam.java | 5 + .../param/PageListTemplateSaveParam.java | 7 +- .../salary/entity/setting/po/PageLinkPO.java | 70 +++++ .../entity/setting/po/PageListSettingPO.java | 18 +- .../entity/setting/po/PageListTemplatePO.java | 94 +++++++ .../salary/mapper/setting/PageLinkMapper.java | 74 ++++++ .../salary/mapper/setting/PageLinkMapper.xml | 232 ++++++++++++++++ .../mapper/setting/PageListSettingMapper.java | 2 + .../mapper/setting/PageListSettingMapper.xml | 43 +-- .../setting/PageListTemplateMapper.java | 73 +++++ .../mapper/setting/PageListTemplateMapper.xml | 251 ++++++++++++++++++ .../SalaryStatisticsEmployeeServiceImpl.java | 107 -------- .../SalaryStatisticsEmployeeWrapper.java | 40 ++- .../engine/salary/service/SettingService.java | 23 +- .../service/impl/SettingServiceImpl.java | 197 +++++++++++--- .../sys/constant/SalarySysConstant.java | 5 + .../salary/web/SalaryCommonController.java | 41 ++- .../salary/wrapper/SalaryCommonWrapper.java | 24 +- 29 files changed, 1363 insertions(+), 237 deletions(-) create mode 100644 sqlupgrade/DM/sql202411060203.sql create mode 100644 sqlupgrade/GS/sql202411060203.sql create mode 100644 sqlupgrade/JC/sql202411060203.sql create mode 100644 sqlupgrade/Mysql/sql202411060203.sql create mode 100644 sqlupgrade/Oracle/sql202411060203.sql create mode 100644 sqlupgrade/PG/sql202411060203.sql create mode 100644 sqlupgrade/SQLServer/sql202411060203.sql create mode 100644 sqlupgrade/ST/sql202411060203.sql create mode 100644 src/com/engine/salary/entity/setting/param/PageListColumnsQueryParam.java create mode 100644 src/com/engine/salary/entity/setting/param/PageListTemplateChangeParam.java create mode 100644 src/com/engine/salary/entity/setting/po/PageLinkPO.java create mode 100644 src/com/engine/salary/entity/setting/po/PageListTemplatePO.java create mode 100644 src/com/engine/salary/mapper/setting/PageLinkMapper.java create mode 100644 src/com/engine/salary/mapper/setting/PageLinkMapper.xml create mode 100644 src/com/engine/salary/mapper/setting/PageListTemplateMapper.java create mode 100644 src/com/engine/salary/mapper/setting/PageListTemplateMapper.xml diff --git a/sqlupgrade/DM/sql202411060203.sql b/sqlupgrade/DM/sql202411060203.sql new file mode 100644 index 000000000..de7d06e71 --- /dev/null +++ b/sqlupgrade/DM/sql202411060203.sql @@ -0,0 +1,30 @@ +CREATE TABLE hrsa_page_link +( + id NUMBER(38,0) primary key NOT NULL, + employee_id NUMBER(38,0), + page varchar2(200), + page_setting_id NUMBER(38,0), + creator NUMBER(38,0), + create_time date, + update_time date, + delete_type number, + tenant_key varchar2(10) +); +/ + +CREATE TABLE hrsa_page_list_template +( + id NUMBER(38,0) primary key NOT NULL, + name varchar2(200), + page varchar2(200), + shared_type number, + limit_ids varchar2(2000), + setting CLOB, + creator NUMBER(38,0), + create_time date, + update_time date, + delete_type number, + tenant_key varchar2(10) +); +/ + diff --git a/sqlupgrade/GS/sql202411060203.sql b/sqlupgrade/GS/sql202411060203.sql new file mode 100644 index 000000000..de7d06e71 --- /dev/null +++ b/sqlupgrade/GS/sql202411060203.sql @@ -0,0 +1,30 @@ +CREATE TABLE hrsa_page_link +( + id NUMBER(38,0) primary key NOT NULL, + employee_id NUMBER(38,0), + page varchar2(200), + page_setting_id NUMBER(38,0), + creator NUMBER(38,0), + create_time date, + update_time date, + delete_type number, + tenant_key varchar2(10) +); +/ + +CREATE TABLE hrsa_page_list_template +( + id NUMBER(38,0) primary key NOT NULL, + name varchar2(200), + page varchar2(200), + shared_type number, + limit_ids varchar2(2000), + setting CLOB, + creator NUMBER(38,0), + create_time date, + update_time date, + delete_type number, + tenant_key varchar2(10) +); +/ + diff --git a/sqlupgrade/JC/sql202411060203.sql b/sqlupgrade/JC/sql202411060203.sql new file mode 100644 index 000000000..de7d06e71 --- /dev/null +++ b/sqlupgrade/JC/sql202411060203.sql @@ -0,0 +1,30 @@ +CREATE TABLE hrsa_page_link +( + id NUMBER(38,0) primary key NOT NULL, + employee_id NUMBER(38,0), + page varchar2(200), + page_setting_id NUMBER(38,0), + creator NUMBER(38,0), + create_time date, + update_time date, + delete_type number, + tenant_key varchar2(10) +); +/ + +CREATE TABLE hrsa_page_list_template +( + id NUMBER(38,0) primary key NOT NULL, + name varchar2(200), + page varchar2(200), + shared_type number, + limit_ids varchar2(2000), + setting CLOB, + creator NUMBER(38,0), + create_time date, + update_time date, + delete_type number, + tenant_key varchar2(10) +); +/ + diff --git a/sqlupgrade/Mysql/sql202411060203.sql b/sqlupgrade/Mysql/sql202411060203.sql new file mode 100644 index 000000000..d6431564c --- /dev/null +++ b/sqlupgrade/Mysql/sql202411060203.sql @@ -0,0 +1,28 @@ +CREATE TABLE hrsa_page_link +( + id bigint(0) NOT NULL, + employee_id bigint(0), + page varchar(200), + page_setting_id bigint(0), + creator bigint(0), + create_time datetime(0), + update_time datetime(0), + delete_type int(0), + tenant_key varchar(10), + PRIMARY KEY (id) USING BTREE +); + +CREATE TABLE hrsa_page_list_template ( +id bigint(0) NOT NULL, +name varchar(200), +page varchar(200), +shared_type int(0), +limit_ids varchar(2000), +setting text, +creator bigint(0), +create_time datetime(0), +update_time datetime(0), +delete_type int(0), +tenant_key varchar(10), +PRIMARY KEY (id) USING BTREE +); diff --git a/sqlupgrade/Oracle/sql202411060203.sql b/sqlupgrade/Oracle/sql202411060203.sql new file mode 100644 index 000000000..065125f8c --- /dev/null +++ b/sqlupgrade/Oracle/sql202411060203.sql @@ -0,0 +1,29 @@ +CREATE TABLE hrsa_page_link +( + id NUMBER(38,0) primary key NOT NULL, + employee_id NUMBER(38,0), + page varchar2(200), + page_setting_id NUMBER(38,0), + creator NUMBER(38,0), + create_time date, + update_time date, + delete_type number, + tenant_key varchar2(10) +) +/ + +CREATE TABLE hrsa_page_list_template +( + id NUMBER(38,0) primary key NOT NULL, + name varchar2(200), + page varchar2(200), + shared_type number, + limit_ids varchar2(2000), + setting CLOB, + creator NUMBER(38,0), + create_time date, + update_time date, + delete_type number, + tenant_key varchar2(10) +) +/ \ No newline at end of file diff --git a/sqlupgrade/PG/sql202411060203.sql b/sqlupgrade/PG/sql202411060203.sql new file mode 100644 index 000000000..981b8955d --- /dev/null +++ b/sqlupgrade/PG/sql202411060203.sql @@ -0,0 +1,27 @@ +create table hrsa_page_link +( + id bigint primary key, + employee_id bigint, + page varchar(200), + page_setting_id bigint, + creator bigint, + create_time timestamp, + update_time timestamp, + delete_type int, + tenant_key varchar(10) +); + +create table hrsa_page_list_template +( + id bigint primary key, + name varchar(200), + page varchar(200), + shared_type int, + limit_ids varchar(2000), + setting text, + creator bigint, + create_time timestamp, + update_time timestamp, + delete_type int, + tenant_key varchar(10) +); \ No newline at end of file diff --git a/sqlupgrade/SQLServer/sql202411060203.sql b/sqlupgrade/SQLServer/sql202411060203.sql new file mode 100644 index 000000000..c81f2ab3f --- /dev/null +++ b/sqlupgrade/SQLServer/sql202411060203.sql @@ -0,0 +1,29 @@ +create table hrsa_page_link +( + id bigint primary key, + employee_id bigint, + page varchar(200), + page_setting_id bigint, + creator bigint, + create_time datetime, + update_time datetime, + delete_type int, + tenant_key varchar(10) +) +GO + +create table hrsa_page_list_template +( + id bigint primary key, + name varchar(200), + page varchar(200), + shared_type int, + limit_ids varchar(2000), + setting text, + creator bigint, + create_time datetime, + update_time datetime, + delete_type int, + tenant_key varchar(10) +) +GO \ No newline at end of file diff --git a/sqlupgrade/ST/sql202411060203.sql b/sqlupgrade/ST/sql202411060203.sql new file mode 100644 index 000000000..de7d06e71 --- /dev/null +++ b/sqlupgrade/ST/sql202411060203.sql @@ -0,0 +1,30 @@ +CREATE TABLE hrsa_page_link +( + id NUMBER(38,0) primary key NOT NULL, + employee_id NUMBER(38,0), + page varchar2(200), + page_setting_id NUMBER(38,0), + creator NUMBER(38,0), + create_time date, + update_time date, + delete_type number, + tenant_key varchar2(10) +); +/ + +CREATE TABLE hrsa_page_list_template +( + id NUMBER(38,0) primary key NOT NULL, + name varchar2(200), + page varchar2(200), + shared_type number, + limit_ids varchar2(2000), + setting CLOB, + creator NUMBER(38,0), + create_time date, + update_time date, + delete_type number, + tenant_key varchar2(10) +); +/ + diff --git a/src/com/engine/salary/entity/setting/dto/PageListTemplateDTO.java b/src/com/engine/salary/entity/setting/dto/PageListTemplateDTO.java index 15f47fa0d..c79352ed9 100644 --- a/src/com/engine/salary/entity/setting/dto/PageListTemplateDTO.java +++ b/src/com/engine/salary/entity/setting/dto/PageListTemplateDTO.java @@ -1,19 +1,20 @@ 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 PageListTemplateDTO { - - private Long id; - - private String name; + private List setting; + private List checked; } \ No newline at end of file diff --git a/src/com/engine/salary/entity/setting/param/PageListColumnsQueryParam.java b/src/com/engine/salary/entity/setting/param/PageListColumnsQueryParam.java new file mode 100644 index 000000000..5f8072d19 --- /dev/null +++ b/src/com/engine/salary/entity/setting/param/PageListColumnsQueryParam.java @@ -0,0 +1,21 @@ +package com.engine.salary.entity.setting.param; + +import com.engine.salary.util.valid.DataCheck; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 薪资帐套表 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class PageListColumnsQueryParam { + + @DataCheck(require = true,message = "请选择页面") + private String page; + +} \ No newline at end of file diff --git a/src/com/engine/salary/entity/setting/param/PageListTemplateChangeParam.java b/src/com/engine/salary/entity/setting/param/PageListTemplateChangeParam.java new file mode 100644 index 000000000..3f8d05fd3 --- /dev/null +++ b/src/com/engine/salary/entity/setting/param/PageListTemplateChangeParam.java @@ -0,0 +1,31 @@ +package com.engine.salary.entity.setting.param; + +import com.engine.salary.util.valid.DataCheck; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 薪资帐套表 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class PageListTemplateChangeParam { + + /** + * 页面,0:薪资明细 + */ + @DataCheck(require = true,message = "请选择页面") + private String page; + + /** + * 模板id + */ + @DataCheck(require = true,message = "请选择模板") + private Long templateId; + + +} \ 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 b939ac6f1..61213bbee 100644 --- a/src/com/engine/salary/entity/setting/param/PageListTemplateQueryParam.java +++ b/src/com/engine/salary/entity/setting/param/PageListTemplateQueryParam.java @@ -15,8 +15,13 @@ import lombok.NoArgsConstructor; @AllArgsConstructor public class PageListTemplateQueryParam { + private Long id; + @DataCheck(require = true,message = "请选择页面") private String page; + /** + * 字段name + */ private String name; } \ No newline at end of file diff --git a/src/com/engine/salary/entity/setting/param/PageListTemplateSaveParam.java b/src/com/engine/salary/entity/setting/param/PageListTemplateSaveParam.java index 2c5cd996c..1ef45247a 100644 --- a/src/com/engine/salary/entity/setting/param/PageListTemplateSaveParam.java +++ b/src/com/engine/salary/entity/setting/param/PageListTemplateSaveParam.java @@ -30,9 +30,14 @@ public class PageListTemplateSaveParam { @DataCheck(require = true,message = "请选择模板名称") private String name; + @DataCheck(require = true,message = "请选择共享类型") + private Integer sharedType; + + private List limitIds; + /** * 设置 */ @DataCheck(require = true,message = "请选择设置") - private List setting; + private List setting; } \ No newline at end of file diff --git a/src/com/engine/salary/entity/setting/po/PageLinkPO.java b/src/com/engine/salary/entity/setting/po/PageLinkPO.java new file mode 100644 index 000000000..7037abe77 --- /dev/null +++ b/src/com/engine/salary/entity/setting/po/PageLinkPO.java @@ -0,0 +1,70 @@ +package com.engine.salary.entity.setting.po; + +import com.engine.hrmelog.annotation.ElogTransform; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Collection; +import java.util.Date; + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class PageLinkPO { + + @ElogTransform(name = "id") + private Long id; + + @ElogTransform(name = "人员id") + private Long employeeId; + + /** + * 页面 + */ + @ElogTransform(name = "页面") + private String page; + + /** + * 页面模板id + */ + @ElogTransform(name = "页面模板id") + private Long templateId; + + /** + * 租户ID + */ + @ElogTransform(name = "租户ID") + private String tenantKey; + + /** + * 更新时间 + */ + @ElogTransform(name = "更新时间") + private Date updateTime; + /** + * 创建时间 + */ + @ElogTransform(name = "创建时间") + private Date createTime; + + /** + * 创建人 + */ + @ElogTransform(name = "创建人") + private Long creator; + + + /** + * 是否已删除。0:未删除、1:已删除 + */ + @ElogTransform(name = "是否已删除。0:未删除、1:已删除") + private Integer deleteType; + + + //主键id集合 + private Collection ids; + +} \ No newline at end of file diff --git a/src/com/engine/salary/entity/setting/po/PageListSettingPO.java b/src/com/engine/salary/entity/setting/po/PageListSettingPO.java index ae7b83bf9..8b24728f6 100644 --- a/src/com/engine/salary/entity/setting/po/PageListSettingPO.java +++ b/src/com/engine/salary/entity/setting/po/PageListSettingPO.java @@ -8,6 +8,7 @@ import lombok.NoArgsConstructor; import java.util.Collection; import java.util.Date; +import java.util.List; /** * 薪资帐套表 @@ -18,22 +19,9 @@ import java.util.Date; @AllArgsConstructor public class PageListSettingPO { - - @ElogTransform(name = "") + @ElogTransform(name = "id") private Long id; - /** - * 是否模板:0否,1是 - */ - @ElogTransform(name = "是否模板") - private Integer template; - - /** - * 模板名称 - */ - @ElogTransform(name = "模板名称") - private String name; - /** * 页面,0:薪资明细 */ @@ -44,7 +32,7 @@ public class PageListSettingPO { * 设置 */ @ElogTransform(name = "设置") - private String setting; + private List setting; /** diff --git a/src/com/engine/salary/entity/setting/po/PageListTemplatePO.java b/src/com/engine/salary/entity/setting/po/PageListTemplatePO.java new file mode 100644 index 000000000..8177534c1 --- /dev/null +++ b/src/com/engine/salary/entity/setting/po/PageListTemplatePO.java @@ -0,0 +1,94 @@ +package com.engine.salary.entity.setting.po; + +import com.engine.hrmelog.annotation.ElogTransform; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Collection; +import java.util.Date; +import java.util.List; + +/** + * 薪资帐套表 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class PageListTemplatePO { + + + @ElogTransform(name = "id") + private Long id; + + + /** + * 模板名称 + */ + @ElogTransform(name = "模板名称") + private String name; + + /** + * 页面 + */ + @ElogTransform(name = "页面") + private String page; + + /** + * 设置 + */ + @ElogTransform(name = "设置") + private List setting; + + /** + * 是否共享,0否,1是 + */ + @ElogTransform(name = "是否共享,0否,1是") + private Integer sharedType; + + + /** + * 限制 + */ + @ElogTransform(name = "限制") + private List limitIds; + + /** + * 租户ID + */ + @ElogTransform(name = "租户ID") + private String tenantKey; + + /** + * 更新时间 + */ + @ElogTransform(name = "更新时间") + private Date updateTime; + + /** + * 创建时间 + */ + @ElogTransform(name = "创建时间") + private Date createTime; + + /** + * 创建人 + */ + @ElogTransform(name = "创建人") + private Long creator; + + /** + * 是否已删除。0:未删除、1:已删除 + */ + @ElogTransform(name = "是否已删除。0:未删除、1:已删除") + private Integer deleteType; + + + //主键id集合 + private Collection ids; + + private Boolean checked; + +} \ No newline at end of file diff --git a/src/com/engine/salary/mapper/setting/PageLinkMapper.java b/src/com/engine/salary/mapper/setting/PageLinkMapper.java new file mode 100644 index 000000000..a15e69330 --- /dev/null +++ b/src/com/engine/salary/mapper/setting/PageLinkMapper.java @@ -0,0 +1,74 @@ +package com.engine.salary.mapper.setting; + +import com.engine.salary.entity.setting.po.PageLinkPO; +import org.apache.ibatis.annotations.Param; + +import java.util.Collection; +import java.util.List; + +public interface PageLinkMapper { + + /** + * 查询所有记录 + * + * @return 返回集合,没有返回空List + */ + List listAll(); + + /** + * 条件查询 + * + * @return 返回集合,没有返回空List + */ + List listSome(PageLinkPO pageLink); + + + /** + * 根据主键查询 + * + * @param id 主键 + * @return 返回记录,没有返回null + */ + PageLinkPO getById(Long id); + + /** + * 新增,忽略null字段 + * + * @param pageLink 新增的记录 + * @return 返回影响行数 + */ + int insertIgnoreNull(PageLinkPO pageLink); + + + /** + * 修改,修改所有字段 + * + * @param pageLink 修改的记录 + * @return 返回影响行数 + */ + int update(PageLinkPO pageLink); + + /** + * 修改,忽略null字段 + * + * @param pageLink 修改的记录 + * @return 返回影响行数 + */ + int updateIgnoreNull(PageLinkPO pageLink); + + /** + * 删除记录 + * + * @param pageLink 待删除的记录 + * @return 返回影响行数 + */ + int delete(PageLinkPO pageLink); + + /** + * 批量删除记录 + * @param ids 主键id集合 + */ + void deleteByIds(@Param("ids") Collection ids); + + PageLinkPO getLink(@Param("employeeId")Long employeeId, @Param("page")String page); +} \ No newline at end of file diff --git a/src/com/engine/salary/mapper/setting/PageLinkMapper.xml b/src/com/engine/salary/mapper/setting/PageLinkMapper.xml new file mode 100644 index 000000000..7e5d1856c --- /dev/null +++ b/src/com/engine/salary/mapper/setting/PageLinkMapper.xml @@ -0,0 +1,232 @@ + + + + + + + + + + + + + + + + + + t + . + create_time + , t.creator + , t.delete_type + , t.employee_id + , t.id + , t.page + , t.template_id + , t.tenant_key + , t.update_time + + + + + + + + + + + + + + + INSERT INTO hrsa_page_link + + + + create_time, + + + creator, + + + delete_type, + + + employee_id, + + + id, + + + page, + + + template_id, + + + tenant_key, + + + update_time, + + + + + #{createTime}, + + + #{creator}, + + + #{deleteType}, + + + #{employeeId}, + + + #{id}, + + + #{page}, + + + #{templateId}, + + + #{tenantKey}, + + + #{updateTime}, + + + + + + + + UPDATE hrsa_page_link + + create_time=#{createTime}, + creator=#{creator}, + delete_type=#{deleteType}, + employee_id=#{employeeId}, + page=#{page}, + template_id=#{templateId}, + tenant_key=#{tenantKey}, + update_time=#{updateTime}, + + WHERE id = #{id} AND delete_type = 0 + + + + + + UPDATE hrsa_page_link + + + create_time=#{createTime}, + + + creator=#{creator}, + + + delete_type=#{deleteType}, + + + employee_id=#{employeeId}, + + + page=#{page}, + + + template_id=#{templateId}, + + + tenant_key=#{tenantKey}, + + + update_time=#{updateTime}, + + + WHERE id = #{id} AND delete_type = 0 + + + + + + UPDATE hrsa_page_link + SET delete_type=1 + WHERE id = #{id} + AND delete_type = 0 + + + + UPDATE hrsa_page_link + SET delete_type = 1 + WHERE delete_type = 0 + AND id IN + + #{id} + + + + + + \ No newline at end of file diff --git a/src/com/engine/salary/mapper/setting/PageListSettingMapper.java b/src/com/engine/salary/mapper/setting/PageListSettingMapper.java index 5fc974dc1..d45faa161 100644 --- a/src/com/engine/salary/mapper/setting/PageListSettingMapper.java +++ b/src/com/engine/salary/mapper/setting/PageListSettingMapper.java @@ -69,7 +69,9 @@ public interface PageListSettingMapper { */ void deleteByIds(@Param("ids") Collection ids); + //获取页面默认配置 PageListSettingPO getByPage(String page); + //获取页面配置模板 List getTemplatesByPage(String page); } \ No newline at end of file diff --git a/src/com/engine/salary/mapper/setting/PageListSettingMapper.xml b/src/com/engine/salary/mapper/setting/PageListSettingMapper.xml index a9a656b76..f52abe207 100644 --- a/src/com/engine/salary/mapper/setting/PageListSettingMapper.xml +++ b/src/com/engine/salary/mapper/setting/PageListSettingMapper.xml @@ -4,9 +4,7 @@ - - - + @@ -23,8 +21,6 @@ , t.delete_type , t.id , t.page - , t.name - , t.template , t.setting , t.tenant_key , t.update_time @@ -68,15 +64,6 @@ AND page = #{page} - - AND name = #{name} - - - AND template = #{template} - - - AND setting = #{setting} - AND tenant_key = #{tenantKey} @@ -113,12 +100,6 @@ page, - - name, - - - template, - setting, @@ -145,14 +126,8 @@ #{page}, - - #{name}, - - - #{template}, - - #{setting}, + #{setting, jdbcType=ARRAY, typeHandler=com.engine.salary.handle.SalaryListTypeHandler}, #{tenantKey}, @@ -172,9 +147,7 @@ creator=#{creator}, delete_type=#{deleteType}, page=#{page}, - name=#{name}, - template=#{template}, - setting=#{setting}, + setting=#{setting, jdbcType=ARRAY, typeHandler=com.engine.salary.handle.SalaryListTypeHandler}, tenant_key=#{tenantKey}, update_time=#{updateTime}, @@ -198,14 +171,8 @@ page=#{page}, - - name=#{name}, - - - template=#{template}, - - setting=#{setting}, + setting=#{setting, jdbcType=ARRAY, typeHandler=com.engine.salary.handle.SalaryListTypeHandler}, tenant_key=#{tenantKey}, @@ -241,7 +208,6 @@ FROM hrsa_page_list_setting t WHERE delete_type = 0 - and template = 0 and page = #{page} @@ -250,7 +216,6 @@ FROM hrsa_page_list_setting t WHERE delete_type = 0 - and template = 1 and page = #{page} diff --git a/src/com/engine/salary/mapper/setting/PageListTemplateMapper.java b/src/com/engine/salary/mapper/setting/PageListTemplateMapper.java new file mode 100644 index 000000000..b729cd64e --- /dev/null +++ b/src/com/engine/salary/mapper/setting/PageListTemplateMapper.java @@ -0,0 +1,73 @@ +package com.engine.salary.mapper.setting; + +import com.engine.salary.entity.setting.po.PageListTemplatePO; +import org.apache.ibatis.annotations.Param; + +import java.util.Collection; +import java.util.List; + +public interface PageListTemplateMapper { + + /** + * 查询所有记录 + * + * @return 返回集合,没有返回空List + */ + List listAll(); + + /** + * 条件查询 + * + * @return 返回集合,没有返回空List + */ + List listSome(PageListTemplatePO pageListTemplate); + + + /** + * 根据主键查询 + * + * @param id 主键 + * @return 返回记录,没有返回null + */ + PageListTemplatePO getById(Long id); + + /** + * 新增,忽略null字段 + * + * @param pageListTemplate 新增的记录 + * @return 返回影响行数 + */ + int insertIgnoreNull(PageListTemplatePO pageListTemplate); + + + /** + * 修改,修改所有字段 + * + * @param pageListTemplate 修改的记录 + * @return 返回影响行数 + */ + int update(PageListTemplatePO pageListTemplate); + + /** + * 修改,忽略null字段 + * + * @param pageListTemplate 修改的记录 + * @return 返回影响行数 + */ + int updateIgnoreNull(PageListTemplatePO pageListTemplate); + + /** + * 删除记录 + * + * @param pageListTemplate 待删除的记录 + * @return 返回影响行数 + */ + int delete(PageListTemplatePO pageListTemplate); + + /** + * 批量删除记录 + * @param ids 主键id集合 + */ + void deleteByIds(@Param("ids") Collection ids); + +} \ 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 new file mode 100644 index 000000000..80704b199 --- /dev/null +++ b/src/com/engine/salary/mapper/setting/PageListTemplateMapper.xml @@ -0,0 +1,251 @@ + + + + + + + + + + + + + + + + + + + + t + . + create_time + , t.creator + , t.delete_type + , t.id + , t.limit_ids + , t.name + , t.page + , t.setting + , t.shared_type + , t.tenant_key + , t.update_time + + + + + + + + + + + + + + + INSERT INTO hrsa_page_list_template + + + + create_time, + + + creator, + + + delete_type, + + + id, + + + limit_ids, + + + name, + + + page, + + + setting, + + + shared_type, + + + tenant_key, + + + update_time, + + + + + #{createTime}, + + + #{creator}, + + + #{deleteType}, + + + #{id}, + + + #{limitIds, jdbcType=ARRAY, typeHandler=com.engine.salary.handle.SalaryListTypeHandler}, + + + #{name}, + + + #{page}, + + + #{setting , jdbcType=ARRAY, typeHandler=com.engine.salary.handle.SalaryListTypeHandler}, + + + #{sharedType}, + + + #{tenantKey}, + + + #{updateTime}, + + + + + + + UPDATE hrsa_page_list_template + + create_time=#{createTime}, + creator=#{creator}, + delete_type=#{deleteType}, + limit_ids=#{limitIds, jdbcType=ARRAY, typeHandler=com.engine.salary.handle.SalaryListTypeHandler}, + name=#{name}, + page=#{page}, + setting=#{setting, jdbcType=ARRAY, typeHandler=com.engine.salary.handle.SalaryListTypeHandler}, + shared_type=#{sharedType}, + tenant_key=#{tenantKey}, + update_time=#{updateTime}, + + WHERE id = #{id} AND delete_type = 0 + + + + + + UPDATE hrsa_page_list_template + + + create_time=#{createTime}, + + + creator=#{creator}, + + + delete_type=#{deleteType}, + + + limit_ids=#{limitIds, jdbcType=ARRAY, typeHandler=com.engine.salary.handle.SalaryListTypeHandler}, + + + name=#{name}, + + + page=#{page}, + + + setting=#{setting, jdbcType=ARRAY, typeHandler=com.engine.salary.handle.SalaryListTypeHandler}, + + + shared_type=#{sharedType}, + + + tenant_key=#{tenantKey}, + + + update_time=#{updateTime}, + + + WHERE id = #{id} AND delete_type = 0 + + + + + + UPDATE hrsa_page_list_template + SET delete_type=1 + WHERE id = #{id} + AND delete_type = 0 + + + + UPDATE hrsa_page_list_template + SET delete_type = 1 + WHERE delete_type = 0 + AND id IN + + #{id} + + + + + \ No newline at end of file diff --git a/src/com/engine/salary/report/service/impl/SalaryStatisticsEmployeeServiceImpl.java b/src/com/engine/salary/report/service/impl/SalaryStatisticsEmployeeServiceImpl.java index 1da1b84b6..5737baf97 100644 --- a/src/com/engine/salary/report/service/impl/SalaryStatisticsEmployeeServiceImpl.java +++ b/src/com/engine/salary/report/service/impl/SalaryStatisticsEmployeeServiceImpl.java @@ -354,23 +354,6 @@ public class SalaryStatisticsEmployeeServiceImpl extends Service implements Sala Map setting = getSettingService(user).getPageListSetting(param); List checked = setting.get("checked") != null ? JsonUtil.parseList(setting.get("checked"), Long.class) : new ArrayList<>(); List salaryItemList = getSalaryItemService(user).listByIds(checked); -// salaryItemList = salaryItemList.stream() -// .sorted(new Comparator() { -// @Override -// public int compare(SalaryItemPO o1, SalaryItemPO o2) { -// if (o1.getSortedIndex() == null && o2.getSortedIndex() == null) { -// Integer systemType1 = o1.getSystemType() == null ? 0 : o1.getSystemType(); -// Integer systemType2 = o2.getSystemType() == null ? 0 : o2.getSystemType(); -// return systemType1.compareTo(systemType2); -// } else { -// Integer sortedIndex1 = o1.getSortedIndex() == null ? 0 : o1.getSortedIndex(); -// Integer sortedIndex2 = o2.getSortedIndex() == null ? 0 : o2.getSortedIndex(); -// return sortedIndex2.compareTo(sortedIndex1); -// } -// } -// }) -// .collect(Collectors.toList()); - if (CollectionUtils.isEmpty(salaryAcctEmployeeList)) { return SalaryStatisticsEmployeeDetailResultDTO.builder() .salaryAcctEmployeeList(Collections.emptyList()) @@ -383,100 +366,10 @@ public class SalaryStatisticsEmployeeServiceImpl extends Service implements Sala List salaryAcctEmployeeIds = salaryAcctEmployeeList.stream().map(SalaryAcctEmployeePO::getId).collect(Collectors.toList()); List salaryAcctResultValues = getSalaryAcctResultService(user).listBySalaryAcctEmployeeIds(salaryAcctEmployeeIds); - - return SalaryStatisticsEmployeeDetailResultDTO.builder() .salaryAcctEmployeeList(salaryAcctEmployeeList) .salaryAcctResultValueList(salaryAcctResultValues) .salaryItemList(salaryItemList) .build(); } - - - // @Override -// public void exportDetailList(Map map, SalaryStatisticsEmployeeDetailQueryParam queryParam) { -// DataCollectionEmployee employee = getSalaryEmployeeService(user).getEmployeeById(queryParam.getEmployeeId()); -// // 获取核算数据 -// SalaryStatisticsEmployeeDetailResultDTO salaryStatisticsEmployeeDetailResult; -// if (Objects.isNull(employee)) { -// salaryStatisticsEmployeeDetailResult = SalaryStatisticsEmployeeDetailResultDTO.builder() -// .salaryAcctEmployeeList(Lists.newArrayList()) -// .salaryAcctResultValueList(Lists.newArrayList()) -// .salaryItemList(Lists.newArrayList()) -// .build(); -// } else { -// salaryStatisticsEmployeeDetailResult = this.getDetailSalaryAcctResult(queryParam); -// } -// -// String nameI18n = (StringUtils.isEmpty(employee.getUsername()) ? "" : "[" + employee.getUsername() + "]") + SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 177855, "薪资明细表"); -// -// List sheetList = new ArrayList<>(); -// ExcelSheetData excelSheetData = new ExcelSheetData(); -// // 1.工作簿名称 -// excelSheetData.setSheetName(nameI18n); -// List headerList = Lists.newArrayList(); -// headerList.add(SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 87614, "薪资所属月")); -// headerList.add(SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 86184, "个税扣缴义务人")); -// headerList.add(SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 121908, "收入所得项目")); -// salaryStatisticsEmployeeDetailResult.getSalaryItemList().forEach(item -> headerList.add(item.getName())); -// // 2.表头 -// excelSheetData.setHeaders(Collections.singletonList(headerList.toArray(new String[]{}))); -// -// List taxAgentList = getTaxAgentService(user).listAll(tenantKey); -// Map taxAgentMap = SalaryEntityUtil.convert2Map(taxAgentList, TaxAgentPO::getId, TaxAgentPO::getName); -// -// Map> acctResultValueMap = SalaryEntityUtil.convert2Map(salaryStatisticsEmployeeDetailResult.getSalaryAcctResultValueList(), SalaryAcctResultPO::getSalaryAcctEmployeeId, SalaryAcctResultPO::getResultValue); -// -// // 组装数据 -// List> rows = new ArrayList<>(); -// for (SalaryAcctEmployeePO se : salaryStatisticsEmployeeDetailResult.getSalaryAcctEmployeeList()) { -// if (CollectionUtils.isNotEmpty(queryParam.getIds()) && !queryParam.getIds().contains(se.getId())) { -// continue; -// } -// List row = new ArrayList<>(); -// row.add(se.getSalaryMonth()); -// row.add(taxAgentMap.get(se.getTaxAgentId())); -// IncomeCategoryEnum incomeCategoryEnum = IncomeCategoryEnum.parseByValue(Integer.parseInt(se.getIncomeCategory())); -// row.add(Objects.isNull(incomeCategoryEnum) ? "" : SalaryI18nUtil.getI18nLabel(incomeCategoryEnum.getLabelId(), incomeCategoryEnum.getDefaultLabel())); -// // 薪资项目 -// Map resultValueMap = Optional.ofNullable(acctResultValueMap.get(se.getId())).orElse(Maps.newHashMap()); -// salaryStatisticsEmployeeDetailResult.getSalaryItemList().forEach(item -> row.add(Optional.ofNullable(resultValueMap.get(item.getId().toString())).orElse(""))); -// -// rows.add(row); -// } -// if (CollectionUtils.isNotEmpty(rows)) { -// List countRow = new ArrayList<>(); -// countRow.add(SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 93278, "合计")); -// countRow.add("-"); -// countRow.add("-"); -// -// for (int i = 3; i < headerList.size(); i++) { -// BigDecimal sumBigDecimal = new BigDecimal(SalaryStatisticsReportBO.D_ZERO); -// for (List row : rows) { -// sumBigDecimal = sumBigDecimal.add(new BigDecimal(StringUtils.isEmpty(row.get(i).toString()) ? SalaryStatisticsReportBO.ZERO : row.get(i).toString())); -// } -// countRow.add(sumBigDecimal.toString()); -// } -// rows.add(countRow); -// } -// -// // 3.表数据 -// excelSheetData.setRows(rows); -// -// sheetList.add(excelSheetData); -// -// salaryBatchService.simpleExportExcel(ExportExcelInfo.builder() -//// .sharePassword(queryParam.getSharePassword()) -// .bizId(map.get("biz").toString()) -// .flag(true) -// .userId(employeeId) -// .eteamsId(map.get("eteamsId").toString()) -// .tenantKey(tenantKey) -// .operator(map.get("username").toString()) -// .module(map.get("module").toString()) -// .fileName(nameI18n + ReportTimeUtil.getFormatLocalDateTime(LocalDateTime.now())) -// .handlerName("exportSalaryStatisticsEmployeeDetailList") -// .dataType(nameI18n) -// .function("exportSalaryStatisticsEmployeeDetailList").build(), sheetList); -// } } diff --git a/src/com/engine/salary/report/wrapper/SalaryStatisticsEmployeeWrapper.java b/src/com/engine/salary/report/wrapper/SalaryStatisticsEmployeeWrapper.java index 63e0863cf..de4c32dd1 100644 --- a/src/com/engine/salary/report/wrapper/SalaryStatisticsEmployeeWrapper.java +++ b/src/com/engine/salary/report/wrapper/SalaryStatisticsEmployeeWrapper.java @@ -23,7 +23,11 @@ import com.engine.salary.report.service.SalaryStatisticsEmployeeService; import com.engine.salary.report.service.impl.SalaryStatisticsEmployeeServiceImpl; import com.engine.salary.report.util.ReportDataUtil; import com.engine.salary.service.SalaryItemService; +import com.engine.salary.service.SettingService; import com.engine.salary.service.impl.SalaryItemServiceImpl; +import com.engine.salary.service.impl.SettingServiceImpl; +import com.engine.salary.sys.service.SalarySysConfService; +import com.engine.salary.sys.service.impl.SalarySysConfServiceImpl; import com.engine.salary.util.SalaryEntityUtil; import com.engine.salary.util.SalaryI18nUtil; import com.engine.salary.util.excel.ExcelUtilPlus; @@ -46,6 +50,9 @@ import java.util.Map; import java.util.Objects; import java.util.stream.Collectors; +import static com.engine.salary.enums.setting.PageListSettingPageEnum.SALARY_DETAILS_REPORT; +import static com.engine.salary.sys.constant.SalarySysConstant.SALARY_DETAILS_REPORT_SHOW_TYPE; + /** * 薪酬统计员工明细 *

Copyright: Copyright (c) 2022

@@ -64,6 +71,17 @@ public class SalaryStatisticsEmployeeWrapper extends Service { return ServiceUtil.getService(SalaryItemServiceImpl.class, user); } + private SettingService getSettingService(User user) { + return ServiceUtil.getService(SettingServiceImpl.class, user); + } + + private SalarySysConfService getSalarySysConfService(User user) { + return ServiceUtil.getService(SalarySysConfServiceImpl.class, user); + } + + //是否模板显示 + private final boolean templateShow = "1".equals(getSalarySysConfService(user).getValueByCode(SALARY_DETAILS_REPORT_SHOW_TYPE)); + /** * 员工列表 * @@ -189,12 +207,18 @@ public class SalaryStatisticsEmployeeWrapper extends Service { } pageInfo.setTotal(salaryAcctEmployeePageInfo.getTotal()); - // 列表columns - List weaTableColumns = buildDetailTableColumns(salaryStatisticsEmployeeDetailResult, true); + List weaTableColumns; + //显示方案1,显示模板 + if (templateShow) { + weaTableColumns = getSettingService(user).getPageListColumns(SALARY_DETAILS_REPORT.getValue()); + } else { + // 显示方案0,显示定制列,默认方式 + weaTableColumns = buildDetailTableColumns(salaryStatisticsEmployeeDetailResult, true); + } // 结果 + resultMap.put("columns", weaTableColumns); if (queryParam.isExport()) { - resultMap.put("columns", weaTableColumns); resultMap.put("salaryItems", salaryStatisticsEmployeeDetailResult.getSalaryItemList()); resultMap.put("countResult", countResultMap); } else { @@ -229,7 +253,7 @@ public class SalaryStatisticsEmployeeWrapper extends Service { // 获取发薪人员 PageInfo salaryAcctEmployeePageInfo = getSalaryStatisticsEmployeeService(user).listSalaryAcctEmp(queryParam); List employeePOS = salaryAcctEmployeePageInfo.getList(); - if (CollectionUtils.isEmpty(employeePOS)){ + if (CollectionUtils.isEmpty(employeePOS)) { return resultMap; } @@ -274,9 +298,9 @@ public class SalaryStatisticsEmployeeWrapper extends Service { queryParam.setCurrent(1); queryParam.setExport(true); Map resultMap = salaryList(queryParam); - List columns = (List)resultMap.get("columns"); + List columns = (List) resultMap.get("columns"); List> resultList = ((PageInfo>) resultMap.get("pageInfo")).getList(); - Map countResult = (Map)resultMap.get("countResult"); + Map countResult = (Map) resultMap.get("countResult"); Map columnMap = SalaryEntityUtil.convert2Map(columns, WeaTableColumn::getColumn); // 获取薪资项目保留小数位数 @@ -299,7 +323,7 @@ public class SalaryStatisticsEmployeeWrapper extends Service { for (Map valueMap : resultList) { List list = new ArrayList<>(); for (Object column : finalColumns) { - WeaTableColumnGroup col = (WeaTableColumnGroup)column; + WeaTableColumnGroup col = (WeaTableColumnGroup) column; if (col.getDataType().equals(SalaryDataTypeEnum.NUMBER.getValue())) { try { list.add(new BigDecimal(Util.null2String(valueMap.get(col.getColumn())))); @@ -316,7 +340,7 @@ public class SalaryStatisticsEmployeeWrapper extends Service { List sumRow = new ArrayList<>(); sumRow.add("总计"); for (int i = 1; i < finalColumns.size(); i++) { - WeaTableColumnGroup weaTableColumnGroup = (WeaTableColumnGroup)finalColumns.get(i); + WeaTableColumnGroup weaTableColumnGroup = (WeaTableColumnGroup) finalColumns.get(i); if (weaTableColumnGroup.getDataType().equals(SalaryDataTypeEnum.NUMBER.getValue())) { try { sumRow.add(new BigDecimal(Util.null2String(countResult.get(weaTableColumnGroup.getColumn())))); diff --git a/src/com/engine/salary/service/SettingService.java b/src/com/engine/salary/service/SettingService.java index 1a5be79a8..aa6526b02 100644 --- a/src/com/engine/salary/service/SettingService.java +++ b/src/com/engine/salary/service/SettingService.java @@ -1,20 +1,25 @@ package com.engine.salary.service; -import com.engine.salary.entity.setting.param.PageListSettingQueryParam; -import com.engine.salary.entity.setting.param.PageListSettingSaveParam; -import com.engine.salary.entity.setting.param.PageListTemplateQueryParam; -import com.engine.salary.entity.setting.param.PageListTemplateSaveParam; -import com.engine.salary.entity.setting.po.PageListSettingPO; +import com.cloudstore.eccom.pc.table.WeaTableColumn; +import com.engine.salary.entity.setting.dto.PageListTemplateDTO; +import com.engine.salary.entity.setting.param.*; +import com.engine.salary.entity.setting.po.PageListTemplatePO; import java.util.List; import java.util.Map; public interface SettingService { - void savePageListSetting(PageListSettingSaveParam pageListSettingSaveParam); + void savePageListSetting(PageListSettingSaveParam pageListSettingSaveParam); - Map getPageListSetting(PageListSettingQueryParam param); + Map getPageListSetting(PageListSettingQueryParam param); - List getPageListTemplates(PageListTemplateQueryParam queryParam); + PageListTemplateDTO getPageListTemplate(PageListTemplateQueryParam param); - PageListSettingPO savePageListTemplate(PageListTemplateSaveParam param); + List getPageListTemplates(PageListTemplateQueryParam queryParam); + + PageListTemplatePO savePageListTemplate(PageListTemplateSaveParam 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 039786acf..207faa365 100644 --- a/src/com/engine/salary/service/impl/SettingServiceImpl.java +++ b/src/com/engine/salary/service/impl/SettingServiceImpl.java @@ -1,21 +1,29 @@ package com.engine.salary.service.impl; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.StrUtil; +import com.cloudstore.eccom.constant.WeaBoolAttr; +import com.cloudstore.eccom.pc.table.WeaTableColumn; 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.param.PageListSettingQueryParam; -import com.engine.salary.entity.setting.param.PageListSettingSaveParam; -import com.engine.salary.entity.setting.param.PageListTemplateQueryParam; -import com.engine.salary.entity.setting.param.PageListTemplateSaveParam; +import com.engine.salary.entity.setting.dto.PageListTemplateDTO; +import com.engine.salary.entity.setting.param.*; +import com.engine.salary.entity.setting.po.PageLinkPO; import com.engine.salary.entity.setting.po.PageListSettingPO; -import com.engine.salary.enums.SalaryOnOffEnum; +import com.engine.salary.entity.setting.po.PageListTemplatePO; +import com.engine.salary.entity.taxagent.po.TaxAgentPO; import com.engine.salary.exception.SalaryRunTimeException; +import com.engine.salary.mapper.setting.PageLinkMapper; import com.engine.salary.mapper.setting.PageListSettingMapper; +import com.engine.salary.mapper.setting.PageListTemplateMapper; +import com.engine.salary.report.common.constant.SalaryConstant; import com.engine.salary.service.SalaryItemService; -import com.engine.salary.service.SalarySobService; import com.engine.salary.service.SettingService; -import com.engine.salary.util.JsonUtil; +import com.engine.salary.service.TaxAgentService; +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.valid.ValidUtil; @@ -41,30 +49,36 @@ public class SettingServiceImpl extends Service implements SettingService { return MapperProxyFactory.getProxy(PageListSettingMapper.class); } - private SalarySobService getSalarySobService(User user) { - return ServiceUtil.getService(SalarySobServiceImpl.class, user); + private PageListTemplateMapper getPageListTemplateMapper() { + return MapperProxyFactory.getProxy(PageListTemplateMapper.class); + } + + private PageLinkMapper getPageLinkMapper() { + return MapperProxyFactory.getProxy(PageLinkMapper.class); } private SalaryItemService getSalaryItemService(User user) { return ServiceUtil.getService(SalaryItemServiceImpl.class, user); } + private TaxAgentService getTaxAgentService() { + return ServiceUtil.getService(TaxAgentServiceImpl.class, user); + } + @Override public void savePageListSetting(PageListSettingSaveParam pageListSettingSaveParam) { Date now = new Date(); PageListSettingPO pageListSettingPO = getPageListSettingMapper().getByPage(pageListSettingSaveParam.getPage()); if (pageListSettingPO != null) { - pageListSettingPO.setSetting(JsonUtil.toJsonString(pageListSettingSaveParam.getSetting())); + pageListSettingPO.setSetting(pageListSettingSaveParam.getSetting()); pageListSettingPO.setUpdateTime(now); getPageListSettingMapper().updateIgnoreNull(pageListSettingPO); } else { pageListSettingPO = PageListSettingPO.builder() .id(IdGenerator.generate()) - .name("系统默认模板") - .template(SalaryOnOffEnum.OFF.getValue()) .page(pageListSettingSaveParam.getPage()) - .setting(JsonUtil.toJsonString(pageListSettingSaveParam.getSetting())) + .setting(pageListSettingSaveParam.getSetting()) .creator((long) user.getUID()) .createTime(now) .updateTime(now) @@ -103,8 +117,8 @@ public class SettingServiceImpl extends Service implements SettingService { }) .collect(Collectors.toList()); result.put("setting", salaryItemList); - if (pageListSettingPO != null && StrUtil.isNotEmpty(pageListSettingPO.getSetting())) { - result.put("checked", JsonUtil.parseList(pageListSettingPO.getSetting(), Long.class)); + if (pageListSettingPO != null && CollUtil.isNotEmpty(pageListSettingPO.getSetting())) { + result.put("checked", pageListSettingPO.getSetting()); } else { List collect = salaryItemList.stream().map(SalaryItemPO::getId).collect(Collectors.toList()); result.put("checked", collect); @@ -114,62 +128,165 @@ public class SettingServiceImpl extends Service implements SettingService { } @Override - public List getPageListTemplates(PageListTemplateQueryParam param) { + 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")); + columns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(86184, "个税扣缴义务人"), "taxAgent")); + columns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(86184, "账套"), "salarySob")); + columns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(0, "姓名"), "userName")); + columns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(0, "分部"), "subCompany")); + columns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(0, "部门"), "department")); + columns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(0, "岗位"), "jobTitle")); + columns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(0, "员工状态"), "status")); + columns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(0, "工号"), "workCode")); + columns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(0, "入职日期"), "companystartdate")); + columns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(86184, "次数"), "acctTimes").setDisplay(WeaBoolAttr.FALSE)); + if (StrUtil.isNotBlank(param.getName())) { + columns = columns.stream().filter(column -> column.getText().contains(param.getName())).collect(Collectors.toList()); + } + + List salaryItemList = getSalaryItemService(user).listAll(); + List collect = salaryItemList.stream() + .filter(po -> { + String name = param.getName(); + if (StrUtil.isNotEmpty(name)) { + return po.getName() != null && po.getName().contains(name); + } + return true; + }) + .sorted((o1, o2) -> { + if (o1.getSortedIndex() == null && o2.getSortedIndex() == null) { + Integer systemType1 = o1.getSystemType() == null ? 0 : o1.getSystemType(); + Integer systemType2 = o2.getSystemType() == null ? 0 : o2.getSystemType(); + return systemType1.compareTo(systemType2); + } else { + Integer sortedIndex1 = o1.getSortedIndex() == null ? 0 : o1.getSortedIndex(); + Integer sortedIndex2 = o2.getSortedIndex() == null ? 0 : o2.getSortedIndex(); + return sortedIndex2.compareTo(sortedIndex1); + } + }) + .map(item -> new WeaTableColumn("100px", item.getName(), item.getId() + SalaryConstant.DYNAMIC_SUFFIX)) + .collect(Collectors.toList()); + + columns.addAll(collect); + + Map columnMap = SalaryEntityUtil.convert2Map(columns, WeaTableColumn::getColumn); + List checkedList = new ArrayList<>(); + if (id != null) { + 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()); + + } + } + return PageListTemplateDTO.builder().setting(columns).checked(checkedList).build(); + } + + return PageListTemplateDTO.builder().build(); + } + + @Override + public List getPageListTemplates(PageListTemplateQueryParam param) { ValidUtil.doValidator(param); String page = param.getPage(); - List settingPOS = new ArrayList<>(); - //系统默认模板 - PageListSettingPO settingPO = getPageListSettingMapper().getByPage(page); - if (settingPO != null) { - settingPOS.add(settingPO); - } + PageListTemplatePO build = PageListTemplatePO.builder().page(page).build(); + List pos = getPageListTemplateMapper().listSome(build); - List pos = getPageListSettingMapper().getTemplatesByPage(page); - settingPOS.addAll(pos); + //获取当前选择的模板 + PageLinkPO link = getPageLinkMapper().getLink((long) user.getUID(), SALARY_DETAILS_REPORT.getValue()); - String name = param.getName(); - if (StrUtil.isNotBlank(name)) { - settingPOS = settingPOS.stream().filter(po -> po.getName() != null && po.getName().contains(name)).collect(Collectors.toList()); - } - - return settingPOS; + Collection taxAgentPOS = getTaxAgentService().listAllTaxAgents((long) user.getUID()); + List taxIds = SalaryEntityUtil.properties(taxAgentPOS, TaxAgentPO::getId, Collectors.toList()); + pos = pos.stream() + .filter(po -> po.getSharedType() != 1 || CollectionUtil.intersection(po.getLimitIds(), taxIds).size() != 0) + .peek(po -> { + po.setChecked(link != null && po.getId().equals(link.getTemplateId())); + }) + .collect(Collectors.toList()); + return pos; } @Override - public PageListSettingPO savePageListTemplate(PageListTemplateSaveParam param) { + public PageListTemplatePO savePageListTemplate(PageListTemplateSaveParam param) { ValidUtil.doValidator(param); Date now = new Date(); Long id = param.getId(); - PageListSettingPO po; + PageListTemplatePO po; if (id == null) { - po = PageListSettingPO.builder() + po = PageListTemplatePO.builder() .id(IdGenerator.generate()) - .template(SalaryOnOffEnum.ON.getValue()) - .name(param.getName()) .page(param.getPage()) - .setting(JsonUtil.toJsonString(param.getSetting())) + .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(); - getPageListSettingMapper().insertIgnoreNull(po); + getPageListTemplateMapper().insertIgnoreNull(po); } else { - po = getPageListSettingMapper().getById(id); + po = getPageListTemplateMapper().getById(id); if (po == null) { throw new SalaryRunTimeException("模板不存在!"); } po.setName(param.getName()); - po.setSetting(JsonUtil.toJsonString(param.getSetting())); + po.setSharedType(param.getSharedType()); + po.setLimitIds(param.getLimitIds()); + po.setSetting(param.getSetting()); po.setUpdateTime(now); - getPageListSettingMapper().updateIgnoreNull(po); + getPageListTemplateMapper().updateIgnoreNull(po); } return po; } + + @Override + public void changePageListTemplate(PageListTemplateChangeParam param) { + + ValidUtil.doValidator(param); + + List pageLinkPOS = getPageLinkMapper().listSome(PageLinkPO.builder().employeeId((long) user.getUID()).page(param.getPage()).build()); + if (CollUtil.isNotEmpty(pageLinkPOS)) { + Set ids = SalaryEntityUtil.properties(pageLinkPOS, PageLinkPO::getId); + getPageLinkMapper().deleteByIds(ids); + } + PageLinkPO pageLinkPO = PageLinkPO.builder() + .id(IdGenerator.generate()) + .employeeId((long) user.getUID()) + .page(param.getPage()) + .templateId(param.getTemplateId()) + .tenantKey(DEFAULT_TENANT_KEY) + .createTime(new Date()) + .updateTime(new Date()) + .creator((long) user.getUID()) + .deleteType(0) + .build(); + + getPageLinkMapper().insertIgnoreNull(pageLinkPO); + } + + @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(); + } + } } diff --git a/src/com/engine/salary/sys/constant/SalarySysConstant.java b/src/com/engine/salary/sys/constant/SalarySysConstant.java index ee89c5974..70bdecb64 100644 --- a/src/com/engine/salary/sys/constant/SalarySysConstant.java +++ b/src/com/engine/salary/sys/constant/SalarySysConstant.java @@ -166,4 +166,9 @@ public class SalarySysConstant { * 报表组织类型,null/0 :核算时组织信息 1:实时组织信息 */ public static final String REPORT_ORGANIZATIN_TYPE = "REPORT_ORGANIZATIN_TYPE"; + + /** + * 薪资明细页面显示类型 + */ + public static final String SALARY_DETAILS_REPORT_SHOW_TYPE = "SALARY_DETAILS_REPORT_SHOW_TYPE"; } diff --git a/src/com/engine/salary/web/SalaryCommonController.java b/src/com/engine/salary/web/SalaryCommonController.java index 43eb418d1..28155c729 100644 --- a/src/com/engine/salary/web/SalaryCommonController.java +++ b/src/com/engine/salary/web/SalaryCommonController.java @@ -1,11 +1,10 @@ package com.engine.salary.web; import com.engine.common.util.ServiceUtil; -import com.engine.salary.entity.setting.param.PageListSettingQueryParam; -import com.engine.salary.entity.setting.param.PageListSettingSaveParam; -import com.engine.salary.entity.setting.param.PageListTemplateQueryParam; -import com.engine.salary.entity.setting.param.PageListTemplateSaveParam; +import com.engine.salary.entity.setting.dto.PageListTemplateDTO; +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.wrapper.SalaryCommonWrapper; @@ -84,6 +83,21 @@ public class SalaryCommonController { return new ResponseResult(user).run(getSalaryCommonWrapper(user)::getPageListSetting, param); } + /** + * 页面模板表单 + * @param request + * @param response + * @param param + * @return + */ + @POST + @Path("/pageList/template/get") + @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); + } + /** * 页面模板列表 * @param request @@ -96,7 +110,7 @@ public class SalaryCommonController { @Produces(MediaType.APPLICATION_JSON) public String getPageListTemplates(@Context HttpServletRequest request, @Context HttpServletResponse response,@RequestBody PageListTemplateQueryParam param) { User user = HrmUserVarify.getUser(request, response); - return new ResponseResult>(user).run(getSalaryCommonWrapper(user)::getPageListTemplates, param); + return new ResponseResult>(user).run(getSalaryCommonWrapper(user)::getPageListTemplates, param); } /** @@ -111,6 +125,21 @@ public class SalaryCommonController { @Produces(MediaType.APPLICATION_JSON) public String savePageListTemplate(@Context HttpServletRequest request, @Context HttpServletResponse response,@RequestBody PageListTemplateSaveParam param) { User user = HrmUserVarify.getUser(request, response); - return new ResponseResult(user).run(getSalaryCommonWrapper(user)::savePageListTemplate, param); + return new ResponseResult(user).run(getSalaryCommonWrapper(user)::savePageListTemplate, param); + } + + /** + * 页面模板列表 + * @param request + * @param response + * @param param + * @return + */ + @POST + @Path("/pageList/template/change") + @Produces(MediaType.APPLICATION_JSON) + public String changeTemplate(@Context HttpServletRequest request, @Context HttpServletResponse response,@RequestBody PageListTemplateChangeParam param) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getSalaryCommonWrapper(user)::changePageListTemplate, param); } } diff --git a/src/com/engine/salary/wrapper/SalaryCommonWrapper.java b/src/com/engine/salary/wrapper/SalaryCommonWrapper.java index 428ad2d0d..7719c6d5a 100644 --- a/src/com/engine/salary/wrapper/SalaryCommonWrapper.java +++ b/src/com/engine/salary/wrapper/SalaryCommonWrapper.java @@ -2,11 +2,9 @@ package com.engine.salary.wrapper; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; -import com.engine.salary.entity.setting.param.PageListSettingQueryParam; -import com.engine.salary.entity.setting.param.PageListSettingSaveParam; -import com.engine.salary.entity.setting.param.PageListTemplateQueryParam; -import com.engine.salary.entity.setting.param.PageListTemplateSaveParam; -import com.engine.salary.entity.setting.po.PageListSettingPO; +import com.engine.salary.entity.setting.dto.PageListTemplateDTO; +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; @@ -44,11 +42,21 @@ public class SalaryCommonWrapper extends Service { return getSettingService(user).getPageListSetting(param); } - public List getPageListTemplates(PageListTemplateQueryParam queryParam) { - return getSettingService(user).getPageListTemplates(queryParam); + + public PageListTemplateDTO getPageListTemplate(PageListTemplateQueryParam param) { + return getSettingService(user).getPageListTemplate(param); } - public PageListSettingPO savePageListTemplate(PageListTemplateSaveParam param) { + public List getPageListTemplates(PageListTemplateQueryParam param) { + return getSettingService(user).getPageListTemplates(param); + } + + public PageListTemplatePO savePageListTemplate(PageListTemplateSaveParam param) { return getSettingService(user).savePageListTemplate(param); } + + public void changePageListTemplate(PageListTemplateChangeParam param) { + getSettingService(user).changePageListTemplate(param); + } + } From a2f8803e76b3cbd4cc83a4dc3824a6486ecc33c2 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Fri, 8 Nov 2024 16:08:49 +0800 Subject: [PATCH 126/218] =?UTF-8?q?=E8=96=AA=E8=B5=84=E6=A1=A3=E6=A1=88?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E8=B0=83=E8=96=AA=E6=97=B6=E9=97=B4=20?= =?UTF-8?q?=E7=AD=9B=E9=80=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../param/SalaryArchiveQueryParam.java | 6 +++++ .../archive/SalaryArchiveItemMapper.java | 2 ++ .../archive/SalaryArchiveItemMapper.xml | 22 +++++++++++++++++++ .../service/SalaryArchiveItemService.java | 10 +++++++++ .../impl/SalaryArchiveItemServiceImpl.java | 13 +++++++++++ .../impl/SalaryArchiveServiceImpl.java | 10 +++++++++ 6 files changed, 63 insertions(+) diff --git a/src/com/engine/salary/entity/salaryarchive/param/SalaryArchiveQueryParam.java b/src/com/engine/salary/entity/salaryarchive/param/SalaryArchiveQueryParam.java index fd36884d3..bbbd2cc80 100644 --- a/src/com/engine/salary/entity/salaryarchive/param/SalaryArchiveQueryParam.java +++ b/src/com/engine/salary/entity/salaryarchive/param/SalaryArchiveQueryParam.java @@ -112,4 +112,10 @@ public class SalaryArchiveQueryParam extends BaseQueryParam { // 最后发薪日期止 private Date payEndDateEndDate; + // 调薪起始日期 + private Date adjustSalaryStartDate; + + // 调薪结束日期 + private Date adjustSalaryEndDate; + } diff --git a/src/com/engine/salary/mapper/archive/SalaryArchiveItemMapper.java b/src/com/engine/salary/mapper/archive/SalaryArchiveItemMapper.java index 78e83be7b..f3105e794 100644 --- a/src/com/engine/salary/mapper/archive/SalaryArchiveItemMapper.java +++ b/src/com/engine/salary/mapper/archive/SalaryArchiveItemMapper.java @@ -1,5 +1,6 @@ package com.engine.salary.mapper.archive; +import com.engine.salary.common.LocalDateRange; import com.engine.salary.entity.salaryarchive.dto.SalaryItemAdjustRecordListDTO; import com.engine.salary.entity.salaryarchive.param.SalaryArchiveItemQueryParam; import com.engine.salary.entity.salaryarchive.param.SalaryItemAdjustRecordQueryParam; @@ -97,4 +98,5 @@ public interface SalaryArchiveItemMapper { int batchUpdate(@Param("collection") List pos); + List listByArchiveIdAndEffectiveTime(@Param("salaryArchivesIds")List salaryArchiveIds, @Param("effectiveRange")LocalDateRange dateRange); } \ No newline at end of file diff --git a/src/com/engine/salary/mapper/archive/SalaryArchiveItemMapper.xml b/src/com/engine/salary/mapper/archive/SalaryArchiveItemMapper.xml index ff6f3ee20..d0830bad3 100644 --- a/src/com/engine/salary/mapper/archive/SalaryArchiveItemMapper.xml +++ b/src/com/engine/salary/mapper/archive/SalaryArchiveItemMapper.xml @@ -1071,6 +1071,28 @@ ORDER BY t.effective_time DESC + + UPDATE hrsa_salary_archive_item diff --git a/src/com/engine/salary/service/SalaryArchiveItemService.java b/src/com/engine/salary/service/SalaryArchiveItemService.java index 9d9081bd8..6e22d49ba 100644 --- a/src/com/engine/salary/service/SalaryArchiveItemService.java +++ b/src/com/engine/salary/service/SalaryArchiveItemService.java @@ -1,5 +1,6 @@ package com.engine.salary.service; +import com.engine.salary.common.LocalDateRange; import com.engine.salary.entity.salaryarchive.config.ArchiveFieldConfig; import com.engine.salary.entity.salaryarchive.dto.SalaryItemAdjustRecordListDTO; import com.engine.salary.entity.salaryarchive.param.SalaryArchiveItemSaveParam; @@ -163,4 +164,13 @@ public interface SalaryArchiveItemService { ArchiveFieldConfig getConfig(); UploadConfigResponse.Result parseConfig(ArchiveFieldConfig config); + + /** + * 根据薪资档案id和生效日期范围获取数据 + * + * @param salaryArchiveIds + * @param dateRange + * @return + */ + List listByArchiveIdAndEffectiveTime(List salaryArchiveIds, LocalDateRange dateRange); } diff --git a/src/com/engine/salary/service/impl/SalaryArchiveItemServiceImpl.java b/src/com/engine/salary/service/impl/SalaryArchiveItemServiceImpl.java index 01b94c051..13e413ec7 100644 --- a/src/com/engine/salary/service/impl/SalaryArchiveItemServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryArchiveItemServiceImpl.java @@ -7,6 +7,7 @@ import com.engine.core.impl.Service; import com.engine.salary.biz.SalaryArchiveBiz; import com.engine.salary.biz.SalaryArchiveItemBiz; import com.engine.salary.biz.SalaryItemBiz; +import com.engine.salary.common.LocalDateRange; import com.engine.salary.config.SalaryElogConfig; import com.engine.salary.constant.SalaryDefaultTenantConstant; import com.engine.salary.entity.datacollection.DataCollectionEmployee; @@ -807,4 +808,16 @@ public class SalaryArchiveItemServiceImpl extends Service implements SalaryArchi return result; } + @Override + public List listByArchiveIdAndEffectiveTime(List salaryArchiveIds, LocalDateRange dateRange) { + if (CollectionUtils.isEmpty(salaryArchiveIds)) { + return Collections.emptyList(); + } + List resultList = new ArrayList<>(); + List> partition = Lists.partition(salaryArchiveIds, 1000); + partition.forEach(part -> { + resultList.addAll(getSalaryArchiveItemMapper().listByArchiveIdAndEffectiveTime(salaryArchiveIds, dateRange)); + }); + return resultList; + } } diff --git a/src/com/engine/salary/service/impl/SalaryArchiveServiceImpl.java b/src/com/engine/salary/service/impl/SalaryArchiveServiceImpl.java index 5165b6c50..0220ea480 100644 --- a/src/com/engine/salary/service/impl/SalaryArchiveServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryArchiveServiceImpl.java @@ -185,6 +185,16 @@ public class SalaryArchiveServiceImpl extends Service implements SalaryArchiveSe } List list = getSalaryArchiveMapper().list(queryParam); + + // 过滤调薪日期 + if (queryParam.getAdjustSalaryStartDate() != null || queryParam.getAdjustSalaryEndDate() != null) { + List salaryArchiveIds = list.stream().map(SalaryArchiveListDTO::getId).collect(Collectors.toList()); + LocalDateRange dateRange = LocalDateRange.builder().fromDate(queryParam.getAdjustSalaryStartDate()).endDate(queryParam.getAdjustSalaryEndDate()).build(); + List salaryArchiveItemPOList = getSalaryArchiveItemService(user).listByArchiveIdAndEffectiveTime(salaryArchiveIds, dateRange); + List archiveIds = salaryArchiveItemPOList.stream().map(SalaryArchiveItemPO::getSalaryArchiveId).distinct().collect(Collectors.toList()); + list = list.stream().filter(dto -> archiveIds.contains(dto.getId())).collect(Collectors.toList()); + } + return SalaryI18nUtil.i18nList(list); } From 7e235e112af7daf692c24169efdb95c872f2e61e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Fri, 8 Nov 2024 16:20:30 +0800 Subject: [PATCH 127/218] =?UTF-8?q?=E5=A4=84=E7=90=86=E6=A0=B8=E7=AE=97?= =?UTF-8?q?=E7=BB=93=E6=9E=9Cnull=E6=8F=92=E5=85=A5=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salary/service/impl/SalaryAcctCalculateServiceImpl.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/com/engine/salary/service/impl/SalaryAcctCalculateServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctCalculateServiceImpl.java index 7544d9ec0..d4563d8d2 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctCalculateServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctCalculateServiceImpl.java @@ -274,7 +274,7 @@ public class SalaryAcctCalculateServiceImpl extends Service implements SalaryAcc //是否锁定 if (lockItems != null && lockItems.contains(salaryItemId)) { - resultValue = empItemValueMap.get(salaryAcctEmployeePOId + "_" + salaryItemId); + resultValue = empItemValueMap.getOrDefault(salaryAcctEmployeePOId + "_" + salaryItemId, StringUtils.EMPTY); } // 将已经计算过的薪资项目的值转换成公式变量的值添加到集合中 String key = SalaryFormulaReferenceEnum.SALARY_ITEM.getValue() + SalaryFormulaFieldConstant.FIELD_ID_SEPARATOR + salaryItemPO.getCode(); @@ -289,7 +289,7 @@ public class SalaryAcctCalculateServiceImpl extends Service implements SalaryAcc .setTaxAgentId(salaryAcctEmployeePO.getTaxAgentId()) .setSalarySobId(salaryAcctEmployeePO.getSalarySobId()) .setSalaryItemId(salaryItemPO.getId()) - .setResultValue(resultValue == null ? StringUtils.EMPTY : resultValue) + .setResultValue(resultValue) .setOriginResultValue(salaryAcctResultPOMap.get(salaryAcctEmployeePO.getEmployeeId() + "-" + salaryAcctEmployeePO.getTaxAgentId() + "-" + salaryItemId) == null ? StringUtils.EMPTY : salaryAcctResultPOMap.get(salaryAcctEmployeePO.getEmployeeId() + "-" + salaryAcctEmployeePO.getTaxAgentId() + "-" + salaryItemId)) .setCalculateKey(salaryAcctCalculateBO.getCalculateKey()) From 058e7dcb3c0f74c6c9d40487d58a5a02c11c507a Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Fri, 8 Nov 2024 16:29:06 +0800 Subject: [PATCH 128/218] =?UTF-8?q?=E8=96=AA=E8=B5=84=E6=A1=A3=E6=A1=88?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E8=B0=83=E8=96=AA=E6=97=B6=E9=97=B4=20?= =?UTF-8?q?=E7=AD=9B=E9=80=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salary/web/SalaryArchiveController.java | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/com/engine/salary/web/SalaryArchiveController.java b/src/com/engine/salary/web/SalaryArchiveController.java index 0fbe3797c..8bb205be2 100644 --- a/src/com/engine/salary/web/SalaryArchiveController.java +++ b/src/com/engine/salary/web/SalaryArchiveController.java @@ -539,6 +539,30 @@ public class SalaryArchiveController { if (StringUtils.isNotBlank(extSalaryArchiveList)) { param.setExtSalaryArchiveList("true".equals(extSalaryArchiveList)); } + String payStartDateStartDateStr = request.getParameter("payStartDateStartDateStr"); + if (StringUtils.isNotBlank(payStartDateStartDateStr) && SalaryDateUtil.checkDay(payStartDateStartDateStr)) { + param.setPayStartDateStartDate(SalaryDateUtil.stringToDate(payStartDateStartDateStr)); + } + String payStartDateEndDateStr = request.getParameter("payStartDateEndDateStr"); + if (StringUtils.isNotBlank(payStartDateEndDateStr) && SalaryDateUtil.checkDay(payStartDateEndDateStr)) { + param.setPayStartDateEndDate(SalaryDateUtil.stringToDate(payStartDateEndDateStr)); + } + String payEndDateStartDateStr = request.getParameter("payEndDateStartDateStr"); + if (StringUtils.isNotBlank(payEndDateStartDateStr) && SalaryDateUtil.checkDay(payEndDateStartDateStr)) { + param.setPayEndDateStartDate(SalaryDateUtil.stringToDate(payEndDateStartDateStr)); + } + String payEndDateEndDateStr = request.getParameter("payEndDateEndDateStr"); + if (StringUtils.isNotBlank(payEndDateEndDateStr) && SalaryDateUtil.checkDay(payEndDateEndDateStr)) { + param.setPayEndDateEndDate(SalaryDateUtil.stringToDate(payEndDateEndDateStr)); + } + String adjustSalaryStartDateStr = request.getParameter("adjustSalaryStartDate"); + if (StringUtils.isNotBlank(adjustSalaryStartDateStr) && SalaryDateUtil.checkDay(adjustSalaryStartDateStr)) { + param.setAdjustSalaryStartDate(SalaryDateUtil.stringToDate(adjustSalaryStartDateStr)); + } + String adjustSalaryEndDate = request.getParameter("adjustSalaryEndDate"); + if (StringUtils.isNotBlank(adjustSalaryEndDate) && SalaryDateUtil.checkDay(adjustSalaryEndDate)) { + param.setAdjustSalaryEndDate(SalaryDateUtil.stringToDate(adjustSalaryEndDate)); + } return param; } From 7aa3d12d4f7bddffb487b0120358ec41b9509dfd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Fri, 8 Nov 2024 17:00:42 +0800 Subject: [PATCH 129/218] =?UTF-8?q?=E6=A8=A1=E6=9D=BFsql?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- {sqlupgrade => resource/sqlupgrade}/DM/sql202411060203.sql | 2 +- {sqlupgrade => resource/sqlupgrade}/GS/sql202411060203.sql | 2 +- {sqlupgrade => resource/sqlupgrade}/JC/sql202411060203.sql | 2 +- {sqlupgrade => resource/sqlupgrade}/Mysql/sql202411060203.sql | 2 +- {sqlupgrade => resource/sqlupgrade}/Oracle/sql202411060203.sql | 2 +- {sqlupgrade => resource/sqlupgrade}/PG/sql202411060203.sql | 2 +- .../sqlupgrade}/SQLServer/sql202411060203.sql | 2 +- {sqlupgrade => resource/sqlupgrade}/ST/sql202411060203.sql | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) rename {sqlupgrade => resource/sqlupgrade}/DM/sql202411060203.sql (95%) rename {sqlupgrade => resource/sqlupgrade}/GS/sql202411060203.sql (95%) rename {sqlupgrade => resource/sqlupgrade}/JC/sql202411060203.sql (95%) rename {sqlupgrade => resource/sqlupgrade}/Mysql/sql202411060203.sql (95%) rename {sqlupgrade => resource/sqlupgrade}/Oracle/sql202411060203.sql (95%) rename {sqlupgrade => resource/sqlupgrade}/PG/sql202411060203.sql (95%) rename {sqlupgrade => resource/sqlupgrade}/SQLServer/sql202411060203.sql (95%) rename {sqlupgrade => resource/sqlupgrade}/ST/sql202411060203.sql (95%) diff --git a/sqlupgrade/DM/sql202411060203.sql b/resource/sqlupgrade/DM/sql202411060203.sql similarity index 95% rename from sqlupgrade/DM/sql202411060203.sql rename to resource/sqlupgrade/DM/sql202411060203.sql index de7d06e71..d19f32161 100644 --- a/sqlupgrade/DM/sql202411060203.sql +++ b/resource/sqlupgrade/DM/sql202411060203.sql @@ -3,7 +3,7 @@ CREATE TABLE hrsa_page_link id NUMBER(38,0) primary key NOT NULL, employee_id NUMBER(38,0), page varchar2(200), - page_setting_id NUMBER(38,0), + template_id NUMBER(38,0), creator NUMBER(38,0), create_time date, update_time date, diff --git a/sqlupgrade/GS/sql202411060203.sql b/resource/sqlupgrade/GS/sql202411060203.sql similarity index 95% rename from sqlupgrade/GS/sql202411060203.sql rename to resource/sqlupgrade/GS/sql202411060203.sql index de7d06e71..d19f32161 100644 --- a/sqlupgrade/GS/sql202411060203.sql +++ b/resource/sqlupgrade/GS/sql202411060203.sql @@ -3,7 +3,7 @@ CREATE TABLE hrsa_page_link id NUMBER(38,0) primary key NOT NULL, employee_id NUMBER(38,0), page varchar2(200), - page_setting_id NUMBER(38,0), + template_id NUMBER(38,0), creator NUMBER(38,0), create_time date, update_time date, diff --git a/sqlupgrade/JC/sql202411060203.sql b/resource/sqlupgrade/JC/sql202411060203.sql similarity index 95% rename from sqlupgrade/JC/sql202411060203.sql rename to resource/sqlupgrade/JC/sql202411060203.sql index de7d06e71..d19f32161 100644 --- a/sqlupgrade/JC/sql202411060203.sql +++ b/resource/sqlupgrade/JC/sql202411060203.sql @@ -3,7 +3,7 @@ CREATE TABLE hrsa_page_link id NUMBER(38,0) primary key NOT NULL, employee_id NUMBER(38,0), page varchar2(200), - page_setting_id NUMBER(38,0), + template_id NUMBER(38,0), creator NUMBER(38,0), create_time date, update_time date, diff --git a/sqlupgrade/Mysql/sql202411060203.sql b/resource/sqlupgrade/Mysql/sql202411060203.sql similarity index 95% rename from sqlupgrade/Mysql/sql202411060203.sql rename to resource/sqlupgrade/Mysql/sql202411060203.sql index d6431564c..57144b7ee 100644 --- a/sqlupgrade/Mysql/sql202411060203.sql +++ b/resource/sqlupgrade/Mysql/sql202411060203.sql @@ -3,7 +3,7 @@ CREATE TABLE hrsa_page_link id bigint(0) NOT NULL, employee_id bigint(0), page varchar(200), - page_setting_id bigint(0), + template_id bigint(0), creator bigint(0), create_time datetime(0), update_time datetime(0), diff --git a/sqlupgrade/Oracle/sql202411060203.sql b/resource/sqlupgrade/Oracle/sql202411060203.sql similarity index 95% rename from sqlupgrade/Oracle/sql202411060203.sql rename to resource/sqlupgrade/Oracle/sql202411060203.sql index 065125f8c..0bd5a59a9 100644 --- a/sqlupgrade/Oracle/sql202411060203.sql +++ b/resource/sqlupgrade/Oracle/sql202411060203.sql @@ -3,7 +3,7 @@ CREATE TABLE hrsa_page_link id NUMBER(38,0) primary key NOT NULL, employee_id NUMBER(38,0), page varchar2(200), - page_setting_id NUMBER(38,0), + template_id NUMBER(38,0), creator NUMBER(38,0), create_time date, update_time date, diff --git a/sqlupgrade/PG/sql202411060203.sql b/resource/sqlupgrade/PG/sql202411060203.sql similarity index 95% rename from sqlupgrade/PG/sql202411060203.sql rename to resource/sqlupgrade/PG/sql202411060203.sql index 981b8955d..21dae6b98 100644 --- a/sqlupgrade/PG/sql202411060203.sql +++ b/resource/sqlupgrade/PG/sql202411060203.sql @@ -3,7 +3,7 @@ create table hrsa_page_link id bigint primary key, employee_id bigint, page varchar(200), - page_setting_id bigint, + template_id bigint, creator bigint, create_time timestamp, update_time timestamp, diff --git a/sqlupgrade/SQLServer/sql202411060203.sql b/resource/sqlupgrade/SQLServer/sql202411060203.sql similarity index 95% rename from sqlupgrade/SQLServer/sql202411060203.sql rename to resource/sqlupgrade/SQLServer/sql202411060203.sql index c81f2ab3f..d901127a1 100644 --- a/sqlupgrade/SQLServer/sql202411060203.sql +++ b/resource/sqlupgrade/SQLServer/sql202411060203.sql @@ -3,7 +3,7 @@ create table hrsa_page_link id bigint primary key, employee_id bigint, page varchar(200), - page_setting_id bigint, + template_id bigint, creator bigint, create_time datetime, update_time datetime, diff --git a/sqlupgrade/ST/sql202411060203.sql b/resource/sqlupgrade/ST/sql202411060203.sql similarity index 95% rename from sqlupgrade/ST/sql202411060203.sql rename to resource/sqlupgrade/ST/sql202411060203.sql index de7d06e71..d19f32161 100644 --- a/sqlupgrade/ST/sql202411060203.sql +++ b/resource/sqlupgrade/ST/sql202411060203.sql @@ -3,7 +3,7 @@ CREATE TABLE hrsa_page_link id NUMBER(38,0) primary key NOT NULL, employee_id NUMBER(38,0), page varchar2(200), - page_setting_id NUMBER(38,0), + template_id NUMBER(38,0), creator NUMBER(38,0), create_time date, update_time date, From ce80905ad0f8b8a14b3c30e7a015381ab1631385 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Mon, 11 Nov 2024 09:59:27 +0800 Subject: [PATCH 130/218] =?UTF-8?q?=E8=96=AA=E8=B5=84=E6=98=8E=E7=BB=86?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SalaryStatisticsEmployeeWrapper.java | 41 ++++++++----------- 1 file changed, 16 insertions(+), 25 deletions(-) diff --git a/src/com/engine/salary/report/wrapper/SalaryStatisticsEmployeeWrapper.java b/src/com/engine/salary/report/wrapper/SalaryStatisticsEmployeeWrapper.java index de4c32dd1..0b7a3f87a 100644 --- a/src/com/engine/salary/report/wrapper/SalaryStatisticsEmployeeWrapper.java +++ b/src/com/engine/salary/report/wrapper/SalaryStatisticsEmployeeWrapper.java @@ -180,31 +180,8 @@ public class SalaryStatisticsEmployeeWrapper extends Service { SalaryStatisticsEmployeeDetailResultDTO salaryStatisticsEmployeeDetailResult = getSalaryStatisticsEmployeeService(user).getDetailSalaryAcctResultByAcctEmp(salaryAcctEmployeePageInfo.getList()); List> records = getSalaryStatisticsEmployeeService(user).listDetailPage(salaryStatisticsEmployeeDetailResult, null); - Map countResultMap = Maps.newHashMap(); - if (CollectionUtils.isNotEmpty(records)) { - List salaryItems = salaryStatisticsEmployeeDetailResult.getSalaryItemList(); - for (SalaryItemPO item : salaryItems) { - BigDecimal sumBigDecimal = new BigDecimal(SalaryStatisticsReportBO.ZERO); - String itemKey = item.getId() + SalaryConstant.DYNAMIC_SUFFIX; - for (Map record : records) { - if (record.containsKey(itemKey)) { - if (Objects.nonNull(record.get(itemKey)) && StringUtils.isNotEmpty(record.get(itemKey).toString()) && NumberUtils.isCreatable(record.get(itemKey).toString())) { - sumBigDecimal = sumBigDecimal.add(new BigDecimal(record.get(itemKey).toString())); - record.put(itemKey, record.get(itemKey).toString()); - } - } - } - // 薪资项目合计 - if (queryParam.isExport()) { - countResultMap.put(itemKey, sumBigDecimal.toString()); - } - } - } PageInfo> pageInfo = SalaryPageUtil.buildPage(queryParam.getCurrent(), queryParam.getPageSize()); pageInfo.setList(records); - if (queryParam.isExport()) { - pageInfo.setList(records); - } pageInfo.setTotal(salaryAcctEmployeePageInfo.getTotal()); List weaTableColumns; @@ -219,6 +196,20 @@ public class SalaryStatisticsEmployeeWrapper extends Service { // 结果 resultMap.put("columns", weaTableColumns); if (queryParam.isExport()) { + Map countResultMap = Maps.newHashMap(); + List salaryItems = salaryStatisticsEmployeeDetailResult.getSalaryItemList(); + if (CollectionUtils.isNotEmpty(records)) { + for (SalaryItemPO item : salaryItems) { + BigDecimal sumBigDecimal = new BigDecimal(SalaryStatisticsReportBO.ZERO); + String itemKey = item.getId() + SalaryConstant.DYNAMIC_SUFFIX; + for (Map record : records) { + if (Objects.nonNull(record.get(itemKey)) && NumberUtils.isCreatable(record.get(itemKey).toString())) { + sumBigDecimal = sumBigDecimal.add(new BigDecimal(record.get(itemKey).toString())); + } + } + countResultMap.put(itemKey, sumBigDecimal.toString()); + } + } resultMap.put("salaryItems", salaryStatisticsEmployeeDetailResult.getSalaryItemList()); resultMap.put("countResult", countResultMap); } else { @@ -275,7 +266,7 @@ public class SalaryStatisticsEmployeeWrapper extends Service { String itemKey = item.getId() + SalaryConstant.DYNAMIC_SUFFIX; for (Map record : records) { if (record.containsKey(itemKey)) { - if (Objects.nonNull(record.get(itemKey)) && StringUtils.isNotEmpty(record.get(itemKey).toString()) && NumberUtils.isCreatable(record.get(itemKey).toString())) { + if (Objects.nonNull(record.get(itemKey)) && NumberUtils.isCreatable(record.get(itemKey).toString())) { sumBigDecimal = sumBigDecimal.add(new BigDecimal(record.get(itemKey).toString())); } } @@ -313,7 +304,7 @@ public class SalaryStatisticsEmployeeWrapper extends Service { SalaryItemPO salaryItemPO = salaryItemMap.get(column.getColumn()); Integer pattern = salaryItemPO == null ? 0 : salaryItemPO.getPattern(); String dataType = salaryItemPO == null ? SalaryDataTypeEnum.STRING.getValue() : salaryItemPO.getDataType(); - finalColumns.add(new WeaTableColumnGroup("100px", column.getText(), column.getColumn(), "false", pattern, dataType)); + finalColumns.add(new WeaTableColumnGroup("100px", Util.formatMultiLang(column.getText()), column.getColumn(), "false", pattern, dataType)); } }); List> rowList = new ArrayList<>(); From 553764da860aad0b07c6453b9ecd4caca140328b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Mon, 11 Nov 2024 10:51:59 +0800 Subject: [PATCH 131/218] =?UTF-8?q?=E6=A8=A1=E6=9D=BFsql?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/SalaryStatisticsEmployeeServiceImpl.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/com/engine/salary/report/service/impl/SalaryStatisticsEmployeeServiceImpl.java b/src/com/engine/salary/report/service/impl/SalaryStatisticsEmployeeServiceImpl.java index 5737baf97..813b0e867 100644 --- a/src/com/engine/salary/report/service/impl/SalaryStatisticsEmployeeServiceImpl.java +++ b/src/com/engine/salary/report/service/impl/SalaryStatisticsEmployeeServiceImpl.java @@ -340,11 +340,11 @@ public class SalaryStatisticsEmployeeServiceImpl extends Service implements Sala salaryAcctEmployeeList = salaryAcctEmployeeList.stream().filter(emp -> queryParam.getIds().contains(emp.getId())).collect(Collectors.toList()); } salaryAcctEmployeeList = salaryAcctEmployeeList.stream().sorted(Comparator.comparing(SalaryAcctEmployeePO::getSalaryMonth).reversed()).collect(Collectors.toList()); - PageInfo SalaryAcctEmployeePageInfo = SalaryPageUtil.buildPage(queryParam.getCurrent(), queryParam.getPageSize(), salaryAcctEmployeeList); + PageInfo salaryAcctEmployeePageInfo = SalaryPageUtil.buildPage(queryParam.getCurrent(), queryParam.getPageSize(), salaryAcctEmployeeList); if (queryParam.isExport()) { - SalaryAcctEmployeePageInfo.setList(salaryAcctEmployeeList); + salaryAcctEmployeePageInfo.setList(salaryAcctEmployeeList); } - return SalaryAcctEmployeePageInfo; + return salaryAcctEmployeePageInfo; } @Override From 95abadfb0d74e6d473ecc9778b6e4d6db6ebe56e Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Mon, 11 Nov 2024 14:06:15 +0800 Subject: [PATCH 132/218] =?UTF-8?q?=E7=A4=BE=E4=BF=9D=E7=A6=8F=E5=88=A9?= =?UTF-8?q?=E5=8F=B0=E8=B4=A6=E6=B7=BB=E5=8A=A0=E4=BA=BA=E5=91=98bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/SIRepairServiceImpl.java | 90 ++++++++++++++----- 1 file changed, 70 insertions(+), 20 deletions(-) diff --git a/src/com/engine/salary/service/impl/SIRepairServiceImpl.java b/src/com/engine/salary/service/impl/SIRepairServiceImpl.java index 270fbb143..9ce45ed5a 100644 --- a/src/com/engine/salary/service/impl/SIRepairServiceImpl.java +++ b/src/com/engine/salary/service/impl/SIRepairServiceImpl.java @@ -223,13 +223,18 @@ public class SIRepairServiceImpl extends Service implements SIRepairService { List> resultList = new ArrayList<>(); if (projects.contains(ProjectTypeEnum.ALL.getValue())) { - if (socialSchemePO != null && StringUtils.isNotBlank(socialSchemePO.getSocialPaymentBaseString())) { + if (socialSchemePO != null && (StringUtils.isNotBlank(socialSchemePO.getSocialPaymentBaseString()) || StringUtils.isNotBlank(socialSchemePO.getSocialPaymentComBaseString()))) { Map socialMap = JSON.parseObject(socialSchemePO.getSocialPaymentBaseString(), new HashMap().getClass()); + Map socialComMap = JSON.parseObject(socialSchemePO.getSocialPaymentComBaseString(), new HashMap().getClass()); + List socialIds = new ArrayList<>(); + socialIds.addAll(socialMap.keySet()); + socialIds.addAll(socialComMap.keySet()); + socialIds = socialIds.stream().distinct().collect(Collectors.toList()); //查询该福利方案下开启缴纳的福利项 List insuranceIdAndScopeList = payInsuranceIdAndScopeList(socialSchemePO.getSocialSchemeId()); List insuranceSchemeDetailPOS = getInsuranceSchemeDetailMapper().listBySchemeIds(Collections.singletonList(socialSchemePO.getSocialSchemeId())); Map schemeValidNumMap = SalaryEntityUtil.convert2Map(insuranceSchemeDetailPOS, po -> po.getInsuranceId() + "-" + po.getPaymentScope(), InsuranceSchemeDetailPO::getValidNum); - socialMap.forEach((k, v) -> { + socialIds.forEach(k -> { String welfareTypeName = welfareTypeMap.get(Long.valueOf(k)) != null && welfareTypeMap.get(Long.valueOf(k)) == 1 ? "社保" : (welfareTypeMap.get(Long.valueOf(k)) != null && welfareTypeMap.get(Long.valueOf(k)) == 2 ? "公积金" : "企业年金及其它福利" ); String welfareTypeSign = welfareTypeMap.get(Long.valueOf(k)) != null && welfareTypeMap.get(Long.valueOf(k)) == 1 ? "social" : (welfareTypeMap.get(Long.valueOf(k)) != null && welfareTypeMap.get(Long.valueOf(k)) == 2 ? "fund" : "other" ); if (insuranceIdAndScopeList.contains(k + "-" + PaymentScopeEnum.SCOPE_COMPANY.getValue())) { @@ -257,13 +262,18 @@ public class SIRepairServiceImpl extends Service implements SIRepairService { }); } - if (fundSchemePO != null && StringUtils.isNotBlank(fundSchemePO.getFundPaymentBaseString())) { + if (fundSchemePO != null && (StringUtils.isNotBlank(fundSchemePO.getFundPaymentBaseString()) || StringUtils.isNotBlank(fundSchemePO.getFundPaymentComBaseString()))) { Map fundMap = JSON.parseObject(fundSchemePO.getFundPaymentBaseString(), new HashMap().getClass()); + Map fundComMap = JSON.parseObject(fundSchemePO.getFundPaymentComBaseString(), new HashMap().getClass()); + List fundIds = new ArrayList<>(); + fundIds.addAll(fundMap.keySet()); + fundIds.addAll(fundComMap.keySet()); + fundIds = fundIds.stream().distinct().collect(Collectors.toList()); //查询该福利方案下开启缴纳的福利项 List insuranceIdAndScopeList = payInsuranceIdAndScopeList(fundSchemePO.getFundSchemeId()); List insuranceSchemeDetailPOS = getInsuranceSchemeDetailMapper().listBySchemeIds(Collections.singletonList(fundSchemePO.getFundSchemeId())); Map schemeValidNumMap = SalaryEntityUtil.convert2Map(insuranceSchemeDetailPOS, po -> po.getInsuranceId() + "-" + po.getPaymentScope(), InsuranceSchemeDetailPO::getValidNum); - fundMap.forEach((k, v) -> { + fundIds.forEach(k -> { String welfareTypeName = welfareTypeMap.get(Long.valueOf(k)) != null && welfareTypeMap.get(Long.valueOf(k)) == 1 ? "社保" : (welfareTypeMap.get(Long.valueOf(k)) != null && welfareTypeMap.get(Long.valueOf(k)) == 2 ? "公积金" : "企业年金及其它福利" ); String welfareTypeSign = welfareTypeMap.get(Long.valueOf(k)) != null && welfareTypeMap.get(Long.valueOf(k)) == 1 ? "social" : (welfareTypeMap.get(Long.valueOf(k)) != null && welfareTypeMap.get(Long.valueOf(k)) == 2 ? "fund" : "other" ); if (insuranceIdAndScopeList.contains(k + "-" + PaymentScopeEnum.SCOPE_COMPANY.getValue())) { @@ -291,13 +301,18 @@ public class SIRepairServiceImpl extends Service implements SIRepairService { }); } - if (otherSchemePO != null && StringUtils.isNotBlank(otherSchemePO.getOtherPaymentBaseString())) { + if (otherSchemePO != null && (StringUtils.isNotBlank(otherSchemePO.getOtherPaymentBaseString()) || StringUtils.isNotBlank(otherSchemePO.getOtherPaymentComBaseString()))) { Map otherMap = JSON.parseObject(otherSchemePO.getOtherPaymentBaseString(), new HashMap().getClass()); + Map otherComMap = JSON.parseObject(otherSchemePO.getOtherPaymentComBaseString(), new HashMap().getClass()); + List otherIds = new ArrayList<>(); + otherIds.addAll(otherMap.keySet()); + otherIds.addAll(otherComMap.keySet()); + otherIds = otherIds.stream().distinct().collect(Collectors.toList()); //查询该福利方案下开启缴纳的福利项 List insuranceIdAndScopeList = payInsuranceIdAndScopeList(otherSchemePO.getOtherSchemeId()); List insuranceSchemeDetailPOS = getInsuranceSchemeDetailMapper().listBySchemeIds(Collections.singletonList(otherSchemePO.getOtherSchemeId())); Map schemeValidNumMap = SalaryEntityUtil.convert2Map(insuranceSchemeDetailPOS, po -> po.getInsuranceId() + "-" + po.getPaymentScope(), InsuranceSchemeDetailPO::getValidNum); - otherMap.forEach((k, v) -> { + otherIds.forEach(k -> { String welfareTypeName = welfareTypeMap.get(Long.valueOf(k)) == 1 ? "社保" : (welfareTypeMap.get(Long.valueOf(k)) == 2 ? "公积金" : "企业年金及其它福利" ); String welfareTypeSign = welfareTypeMap.get(Long.valueOf(k)) == 1 ? "social" : (welfareTypeMap.get(Long.valueOf(k)) == 2 ? "fund" : "other" ); if (insuranceIdAndScopeList.contains(k + "-" + PaymentScopeEnum.SCOPE_COMPANY.getValue())) { @@ -327,13 +342,18 @@ public class SIRepairServiceImpl extends Service implements SIRepairService { return resultList; } if (projects.contains(ProjectTypeEnum.SOCIAL.getValue())) { - if (socialSchemePO != null && StringUtils.isNotBlank(socialSchemePO.getSocialPaymentBaseString())) { + if (socialSchemePO != null && (StringUtils.isNotBlank(socialSchemePO.getSocialPaymentBaseString()) || StringUtils.isNotBlank(socialSchemePO.getSocialPaymentComBaseString()))) { Map socialMap = JSON.parseObject(socialSchemePO.getSocialPaymentBaseString(), new HashMap().getClass()); + Map socialComMap = JSON.parseObject(socialSchemePO.getSocialPaymentComBaseString(), new HashMap().getClass()); + List socialIds = new ArrayList<>(); + socialIds.addAll(socialMap.keySet()); + socialIds.addAll(socialComMap.keySet()); + socialIds = socialIds.stream().distinct().collect(Collectors.toList()); //查询该福利方案下开启缴纳的福利项 List insuranceIdAndScopeList = payInsuranceIdAndScopeList(socialSchemePO.getSocialSchemeId()); List insuranceSchemeDetailPOS = getInsuranceSchemeDetailMapper().listBySchemeIds(Collections.singletonList(socialSchemePO.getSocialSchemeId())); Map schemeValidNumMap = SalaryEntityUtil.convert2Map(insuranceSchemeDetailPOS, po -> po.getInsuranceId() + "-" + po.getPaymentScope(), InsuranceSchemeDetailPO::getValidNum); - socialMap.forEach((k, v) -> { + socialIds.forEach(k -> { String welfareTypeName = welfareTypeMap.get(Long.valueOf(k)) != null && welfareTypeMap.get(Long.valueOf(k)) == 1 ? "社保" : (welfareTypeMap.get(Long.valueOf(k)) != null && welfareTypeMap.get(Long.valueOf(k)) == 2 ? "公积金" : "企业年金及其它福利" ); String welfareTypeSign = welfareTypeMap.get(Long.valueOf(k)) != null && welfareTypeMap.get(Long.valueOf(k)) == 1 ? "social" : (welfareTypeMap.get(Long.valueOf(k)) != null && welfareTypeMap.get(Long.valueOf(k)) == 2 ? "fund" : "other" ); if (insuranceIdAndScopeList.contains(k + "-" + PaymentScopeEnum.SCOPE_COMPANY.getValue())) { @@ -365,15 +385,22 @@ public class SIRepairServiceImpl extends Service implements SIRepairService { if ((!projects.contains(ProjectTypeEnum.SOCIAL.getValue())) && (projects.contains(ProjectTypeEnum.ENDOWMENT_INSURANCE.getValue())) && (projects.contains(ProjectTypeEnum.MEDICAL_INSURANCE.getValue()))) { - if (socialSchemePO != null && StringUtils.isNotBlank(socialSchemePO.getSocialPaymentBaseString())) { + if (socialSchemePO != null && (StringUtils.isNotBlank(socialSchemePO.getSocialPaymentBaseString()) || StringUtils.isNotBlank(socialSchemePO.getSocialPaymentComBaseString()))) { Map socialMap = JSON.parseObject(socialSchemePO.getSocialPaymentBaseString(), new HashMap().getClass()); socialMap = socialMap.entrySet().stream().filter(e -> "9001".equals(e.getKey()) || "9002".equals(e.getKey())) .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)); + Map socialComMap = JSON.parseObject(socialSchemePO.getSocialPaymentComBaseString(), new HashMap().getClass()); + socialComMap = socialComMap.entrySet().stream().filter(e -> "9001".equals(e.getKey()) || "9002".equals(e.getKey())) + .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)); + List socialIds = new ArrayList<>(); + socialIds.addAll(socialMap.keySet()); + socialIds.addAll(socialComMap.keySet()); + socialIds = socialIds.stream().distinct().collect(Collectors.toList()); //查询该福利方案下开启缴纳的福利项 List insuranceIdAndScopeList = payInsuranceIdAndScopeList(socialSchemePO.getSocialSchemeId()); List insuranceSchemeDetailPOS = getInsuranceSchemeDetailMapper().listBySchemeIds(Collections.singletonList(socialSchemePO.getSocialSchemeId())); Map schemeValidNumMap = SalaryEntityUtil.convert2Map(insuranceSchemeDetailPOS, po -> po.getInsuranceId() + "-" + po.getPaymentScope(), InsuranceSchemeDetailPO::getValidNum); - socialMap.forEach((k, v) -> { + socialIds.forEach( k -> { String welfareTypeName = welfareTypeMap.get(Long.valueOf(k)) != null && welfareTypeMap.get(Long.valueOf(k)) == 1 ? "社保" : (welfareTypeMap.get(Long.valueOf(k)) != null && welfareTypeMap.get(Long.valueOf(k)) == 2 ? "公积金" : "企业年金及其它福利" ); String welfareTypeSign = welfareTypeMap.get(Long.valueOf(k)) != null && welfareTypeMap.get(Long.valueOf(k)) == 1 ? "social" : (welfareTypeMap.get(Long.valueOf(k)) != null && welfareTypeMap.get(Long.valueOf(k)) == 2 ? "fund" : "other" ); if (insuranceIdAndScopeList.contains(k + "-" + PaymentScopeEnum.SCOPE_COMPANY.getValue())) { @@ -405,15 +432,23 @@ public class SIRepairServiceImpl extends Service implements SIRepairService { if ((!projects.contains(ProjectTypeEnum.SOCIAL.getValue())) && (projects.contains(ProjectTypeEnum.ENDOWMENT_INSURANCE.getValue())) && (!projects.contains(ProjectTypeEnum.MEDICAL_INSURANCE.getValue()))) { - if (socialSchemePO != null && StringUtils.isNotBlank(socialSchemePO.getSocialPaymentBaseString())) { + if (socialSchemePO != null && (StringUtils.isNotBlank(socialSchemePO.getSocialPaymentBaseString()) || StringUtils.isNotBlank(socialSchemePO.getSocialPaymentComBaseString()))) { Map socialMap = JSON.parseObject(socialSchemePO.getSocialPaymentBaseString(), new HashMap().getClass()); socialMap = socialMap.entrySet().stream().filter(e -> "9001".equals(e.getKey())) .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)); + + Map socialComMap = JSON.parseObject(socialSchemePO.getSocialPaymentComBaseString(), new HashMap().getClass()); + socialComMap = socialComMap.entrySet().stream().filter(e -> "9001".equals(e.getKey())) + .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)); + List socialIds = new ArrayList<>(); + socialIds.addAll(socialMap.keySet()); + socialIds.addAll(socialComMap.keySet()); + socialIds = socialIds.stream().distinct().collect(Collectors.toList()); //查询该福利方案下开启缴纳的福利项 List insuranceIdAndScopeList = payInsuranceIdAndScopeList(socialSchemePO.getSocialSchemeId()); List insuranceSchemeDetailPOS = getInsuranceSchemeDetailMapper().listBySchemeIds(Collections.singletonList(socialSchemePO.getSocialSchemeId())); Map schemeValidNumMap = SalaryEntityUtil.convert2Map(insuranceSchemeDetailPOS, po -> po.getInsuranceId() + "-" + po.getPaymentScope(), InsuranceSchemeDetailPO::getValidNum); - socialMap.forEach((k, v) -> { + socialIds.forEach(k -> { String welfareTypeName = welfareTypeMap.get(Long.valueOf(k)) != null && welfareTypeMap.get(Long.valueOf(k)) == 1 ? "社保" : (welfareTypeMap.get(Long.valueOf(k)) != null && welfareTypeMap.get(Long.valueOf(k)) == 2 ? "公积金" : "企业年金及其它福利" ); String welfareTypeSign = welfareTypeMap.get(Long.valueOf(k)) != null && welfareTypeMap.get(Long.valueOf(k)) == 1 ? "social" : (welfareTypeMap.get(Long.valueOf(k)) != null && welfareTypeMap.get(Long.valueOf(k)) == 2 ? "fund" : "other" ); if (insuranceIdAndScopeList.contains(k + "-" + PaymentScopeEnum.SCOPE_COMPANY.getValue())) { @@ -445,15 +480,22 @@ public class SIRepairServiceImpl extends Service implements SIRepairService { if ((!projects.contains(ProjectTypeEnum.SOCIAL.getValue())) && (!projects.contains(ProjectTypeEnum.ENDOWMENT_INSURANCE.getValue())) && (projects.contains(ProjectTypeEnum.MEDICAL_INSURANCE.getValue()))) { - if (socialSchemePO != null && StringUtils.isNotBlank(socialSchemePO.getSocialPaymentBaseString())) { + if (socialSchemePO != null && (StringUtils.isNotBlank(socialSchemePO.getSocialPaymentBaseString()) || StringUtils.isNotBlank(socialSchemePO.getSocialPaymentComBaseString()))) { Map socialMap = JSON.parseObject(socialSchemePO.getSocialPaymentBaseString(), new HashMap().getClass()); socialMap = socialMap.entrySet().stream().filter(e -> "9002".equals(e.getKey())) .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)); + Map socialComMap = JSON.parseObject(socialSchemePO.getSocialPaymentComBaseString(), new HashMap().getClass()); + socialComMap = socialComMap.entrySet().stream().filter(e -> "9002".equals(e.getKey())) + .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)); + List socialIds = new ArrayList<>(); + socialIds.addAll(socialMap.keySet()); + socialIds.addAll(socialComMap.keySet()); + socialIds = socialIds.stream().distinct().collect(Collectors.toList()); //查询该福利方案下开启缴纳的福利项 List insuranceIdAndScopeList = payInsuranceIdAndScopeList(socialSchemePO.getSocialSchemeId()); List insuranceSchemeDetailPOS = getInsuranceSchemeDetailMapper().listBySchemeIds(Collections.singletonList(socialSchemePO.getSocialSchemeId())); Map schemeValidNumMap = SalaryEntityUtil.convert2Map(insuranceSchemeDetailPOS, po -> po.getInsuranceId() + "-" + po.getPaymentScope(), InsuranceSchemeDetailPO::getValidNum); - socialMap.forEach((k, v) -> { + socialIds.forEach(k -> { String welfareTypeName = welfareTypeMap.get(Long.valueOf(k)) != null && welfareTypeMap.get(Long.valueOf(k)) == 1 ? "社保" : (welfareTypeMap.get(Long.valueOf(k)) != null && welfareTypeMap.get(Long.valueOf(k)) == 2 ? "公积金" : "企业年金及其它福利" ); String welfareTypeSign = welfareTypeMap.get(Long.valueOf(k)) != null && welfareTypeMap.get(Long.valueOf(k)) == 1 ? "social" : (welfareTypeMap.get(Long.valueOf(k)) != null && welfareTypeMap.get(Long.valueOf(k)) == 2 ? "fund" : "other" ); if (insuranceIdAndScopeList.contains(k + "-" + PaymentScopeEnum.SCOPE_COMPANY.getValue())) { @@ -483,14 +525,18 @@ public class SIRepairServiceImpl extends Service implements SIRepairService { } } if (projects.contains(ProjectTypeEnum.FUND.getValue())) { - if (fundSchemePO != null && StringUtils.isNotBlank(fundSchemePO.getFundPaymentBaseString())) { + if (fundSchemePO != null && (StringUtils.isNotBlank(fundSchemePO.getFundPaymentBaseString()) || StringUtils.isNotBlank(fundSchemePO.getFundPaymentComBaseString()))) { Map fundMap = JSON.parseObject(fundSchemePO.getFundPaymentBaseString(), new HashMap().getClass()); + Map fundComMap = JSON.parseObject(fundSchemePO.getFundPaymentComBaseString(), new HashMap().getClass()); + List fundIds = new ArrayList<>(); + fundIds.addAll(fundMap.keySet()); + fundIds.addAll(fundComMap.keySet()); + fundIds = fundIds.stream().distinct().collect(Collectors.toList()); //查询该福利方案下开启缴纳的福利项 List insuranceIdAndScopeList = payInsuranceIdAndScopeList(fundSchemePO.getFundSchemeId()); List insuranceSchemeDetailPOS = getInsuranceSchemeDetailMapper().listBySchemeIds(Collections.singletonList(fundSchemePO.getFundSchemeId())); Map schemeValidNumMap = SalaryEntityUtil.convert2Map(insuranceSchemeDetailPOS, po -> po.getInsuranceId() + "-" + po.getPaymentScope(), InsuranceSchemeDetailPO::getValidNum); - - fundMap.forEach((k, v) -> { + fundIds.forEach(k -> { String welfareTypeName = welfareTypeMap.get(Long.valueOf(k)) != null && welfareTypeMap.get(Long.valueOf(k)) == 1 ? "社保" : (welfareTypeMap.get(Long.valueOf(k)) != null && welfareTypeMap.get(Long.valueOf(k)) == 2 ? "公积金" : "企业年金及其它福利" ); String welfareTypeSign = welfareTypeMap.get(Long.valueOf(k)) != null && welfareTypeMap.get(Long.valueOf(k)) == 1 ? "social" : (welfareTypeMap.get(Long.valueOf(k)) != null && welfareTypeMap.get(Long.valueOf(k)) == 2 ? "fund" : "other" ); if (insuranceIdAndScopeList.contains(k + "-" + PaymentScopeEnum.SCOPE_COMPANY.getValue())) { @@ -520,14 +566,18 @@ public class SIRepairServiceImpl extends Service implements SIRepairService { } } if (projects.contains(ProjectTypeEnum.OTHER.getValue())) { - if (otherSchemePO != null && StringUtils.isNotBlank(otherSchemePO.getOtherPaymentBaseString())) { + if (otherSchemePO != null && (StringUtils.isNotBlank(otherSchemePO.getOtherPaymentBaseString()) || StringUtils.isNotBlank(otherSchemePO.getOtherPaymentComBaseString()))) { Map otherMap = JSON.parseObject(otherSchemePO.getOtherPaymentBaseString(), new HashMap().getClass()); + Map otherComMap = JSON.parseObject(otherSchemePO.getOtherPaymentComBaseString(), new HashMap().getClass()); + List otherIds = new ArrayList<>(); + otherIds.addAll(otherMap.keySet()); + otherIds.addAll(otherComMap.keySet()); + otherIds = otherIds.stream().distinct().collect(Collectors.toList()); //查询该福利方案下开启缴纳的福利项 List insuranceIdAndScopeList = payInsuranceIdAndScopeList(otherSchemePO.getOtherSchemeId()); List insuranceSchemeDetailPOS = getInsuranceSchemeDetailMapper().listBySchemeIds(Collections.singletonList(otherSchemePO.getOtherSchemeId())); Map schemeValidNumMap = SalaryEntityUtil.convert2Map(insuranceSchemeDetailPOS, po -> po.getInsuranceId() + "-" + po.getPaymentScope(), InsuranceSchemeDetailPO::getValidNum); - - otherMap.forEach((k, v) -> { + otherIds.forEach(k -> { String welfareTypeName = welfareTypeMap.get(Long.valueOf(k)) != null && welfareTypeMap.get(Long.valueOf(k)) == 1 ? "社保" : (welfareTypeMap.get(Long.valueOf(k)) != null && welfareTypeMap.get(Long.valueOf(k)) == 2 ? "公积金" : "企业年金及其它福利" ); String welfareTypeSign = welfareTypeMap.get(Long.valueOf(k)) != null && welfareTypeMap.get(Long.valueOf(k)) == 1 ? "social" : (welfareTypeMap.get(Long.valueOf(k)) != null && welfareTypeMap.get(Long.valueOf(k)) == 2 ? "fund" : "other" ); if (insuranceIdAndScopeList.contains(k + "-" + PaymentScopeEnum.SCOPE_COMPANY.getValue())) { From 02de1e444458308db9dc62ae115a06c12ac35501 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Mon, 11 Nov 2024 15:02:21 +0800 Subject: [PATCH 133/218] =?UTF-8?q?=E5=B7=A5=E8=B5=84=E5=8D=95=E5=8F=91?= =?UTF-8?q?=E6=94=BE=E9=A2=84=E8=A7=88=EF=BC=8C=E5=85=BC=E5=AE=B9=E5=BE=88?= =?UTF-8?q?=E6=97=A9=E4=B9=8B=E5=89=8D=E6=96=B0=E5=BB=BA=E7=9A=84=E5=B7=A5?= =?UTF-8?q?=E8=B5=84=E5=8D=95=E6=A8=A1=E6=9D=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/engine/salary/service/impl/SalarySendServiceImpl.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/com/engine/salary/service/impl/SalarySendServiceImpl.java b/src/com/engine/salary/service/impl/SalarySendServiceImpl.java index 066e89b8d..c4bf99093 100644 --- a/src/com/engine/salary/service/impl/SalarySendServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalarySendServiceImpl.java @@ -1920,7 +1920,7 @@ public class SalarySendServiceImpl extends Service implements SalarySendService map.put("salaryAcctResult", salaryAcctResultS); // 工资单确认按钮 - if (NumberUtils.compare(salaryTemplate.getAckFeedbackStatus(), 1) == 0) { + if (salaryTemplate.getAckFeedbackStatus() != null && NumberUtils.compare(salaryTemplate.getAckFeedbackStatus(), 1) == 0) { // 开启了工资单确认 Integer ackStatus = salarySendInfo.getBillConfirmStatus(); if (ackStatus == null || ackStatus != BillConfimStatusEnum.CONFIRMED.getValue()) { @@ -1935,7 +1935,7 @@ public class SalarySendServiceImpl extends Service implements SalarySendService // 工资单反馈 - if (NumberUtils.compare(salaryTemplate.getFeedbackStatus(), 1) == 0) { + if (salaryTemplate.getFeedbackStatus() != null && NumberUtils.compare(salaryTemplate.getFeedbackStatus(), 1) == 0) { // 开启了工资单反馈按钮 Integer confirmStatus = salarySendInfo.getBillConfirmStatus(); map.put("showFeedback", "1"); From 99274b95ec6fa9f7eb1070fe1b345c717e9c34f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Mon, 11 Nov 2024 16:58:16 +0800 Subject: [PATCH 134/218] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=89=93=E5=8D=B0?= =?UTF-8?q?=E6=A8=A1=E6=9D=BF=E5=88=97=E8=A1=A8=E4=B8=8D=E6=98=BE=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salary/service/impl/SettingServiceImpl.java | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/com/engine/salary/service/impl/SettingServiceImpl.java b/src/com/engine/salary/service/impl/SettingServiceImpl.java index 207faa365..ba35bea51 100644 --- a/src/com/engine/salary/service/impl/SettingServiceImpl.java +++ b/src/com/engine/salary/service/impl/SettingServiceImpl.java @@ -205,9 +205,19 @@ public class SettingServiceImpl extends Service implements SettingService { PageLinkPO link = getPageLinkMapper().getLink((long) user.getUID(), SALARY_DETAILS_REPORT.getValue()); Collection taxAgentPOS = getTaxAgentService().listAllTaxAgents((long) user.getUID()); - List taxIds = SalaryEntityUtil.properties(taxAgentPOS, TaxAgentPO::getId, Collectors.toList()); + List taxIds = SalaryEntityUtil.properties(taxAgentPOS, po -> po.getId().toString(), Collectors.toList()); pos = pos.stream() - .filter(po -> po.getSharedType() != 1 || CollectionUtil.intersection(po.getLimitIds(), taxIds).size() != 0) + .filter(po -> { + if (po.getSharedType() == 1) { + List limitIds = po.getLimitIds(); + List collect = new ArrayList<>(); + for (int i = 0; i < limitIds.size(); i++) { + collect.add(limitIds.get(i).toString()); + } + return CollectionUtil.isNotEmpty(limitIds) && CollectionUtil.intersection(collect, taxIds).size() != 0; + } + return true; + }) .peek(po -> { po.setChecked(link != null && po.getId().equals(link.getTemplateId())); }) @@ -284,7 +294,7 @@ public class SettingServiceImpl extends Service implements SettingService { if (link != null) { PageListTemplateDTO pageListTemplate = getPageListTemplate(PageListTemplateQueryParam.builder().page(page).id(link.getTemplateId()).build()); return pageListTemplate.getChecked(); - }else { + } else { PageListTemplateDTO pageListTemplate = getPageListTemplate(PageListTemplateQueryParam.builder().page(page).build()); return pageListTemplate.getSetting(); } From 4601d5ec818b39c93ca626beef8bfd503d139157 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Mon, 11 Nov 2024 18:03:31 +0800 Subject: [PATCH 135/218] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=89=93=E5=8D=B0?= =?UTF-8?q?=E6=A8=A1=E6=9D=BF=E5=88=97=E8=A1=A8=E4=B8=8D=E6=98=BE=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/engine/salary/service/impl/SettingServiceImpl.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/com/engine/salary/service/impl/SettingServiceImpl.java b/src/com/engine/salary/service/impl/SettingServiceImpl.java index ba35bea51..5c75551bc 100644 --- a/src/com/engine/salary/service/impl/SettingServiceImpl.java +++ b/src/com/engine/salary/service/impl/SettingServiceImpl.java @@ -209,8 +209,8 @@ public class SettingServiceImpl extends Service implements SettingService { pos = pos.stream() .filter(po -> { if (po.getSharedType() == 1) { - List limitIds = po.getLimitIds(); - List collect = new ArrayList<>(); + List limitIds = po.getLimitIds(); + List collect = new ArrayList<>(); for (int i = 0; i < limitIds.size(); i++) { collect.add(limitIds.get(i).toString()); } From 0e3a5320a425acaf63ecff874476c49ead36831d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Tue, 12 Nov 2024 11:31:47 +0800 Subject: [PATCH 136/218] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=A0=B8=E7=AE=97?= =?UTF-8?q?=E7=BB=93=E6=9E=9C=E7=8A=B6=E6=80=81=E7=BC=96=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salary/entity/salaryacct/po/SalaryAcctEmployeePO.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/com/engine/salary/entity/salaryacct/po/SalaryAcctEmployeePO.java b/src/com/engine/salary/entity/salaryacct/po/SalaryAcctEmployeePO.java index bd5a19575..87a2fb029 100644 --- a/src/com/engine/salary/entity/salaryacct/po/SalaryAcctEmployeePO.java +++ b/src/com/engine/salary/entity/salaryacct/po/SalaryAcctEmployeePO.java @@ -150,7 +150,7 @@ public class SalaryAcctEmployeePO { /** * 状态 */ - @SalaryFormulaVar(defaultLabel = "状态", labelId = 86321, dataType = "string") + @SalaryFormulaVar(defaultLabel = "状态编码", labelId = 86321, dataType = "string") private String status; //锁定的项目 From c88c8acf904439fcb5269bd3829c723b252e65ce Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Tue, 12 Nov 2024 14:44:44 +0800 Subject: [PATCH 137/218] =?UTF-8?q?=E8=96=AA=E8=B5=84=E6=A1=A3=E6=A1=88?= =?UTF-8?q?=E6=90=9C=E7=B4=A22100=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salary/service/impl/SalaryArchiveItemServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/com/engine/salary/service/impl/SalaryArchiveItemServiceImpl.java b/src/com/engine/salary/service/impl/SalaryArchiveItemServiceImpl.java index 13e413ec7..431b56170 100644 --- a/src/com/engine/salary/service/impl/SalaryArchiveItemServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryArchiveItemServiceImpl.java @@ -816,7 +816,7 @@ public class SalaryArchiveItemServiceImpl extends Service implements SalaryArchi List resultList = new ArrayList<>(); List> partition = Lists.partition(salaryArchiveIds, 1000); partition.forEach(part -> { - resultList.addAll(getSalaryArchiveItemMapper().listByArchiveIdAndEffectiveTime(salaryArchiveIds, dateRange)); + resultList.addAll(getSalaryArchiveItemMapper().listByArchiveIdAndEffectiveTime(part, dateRange)); }); return resultList; } From e42e95090529228c61be0ba48057751f4a09c2aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Tue, 12 Nov 2024 15:34:51 +0800 Subject: [PATCH 138/218] =?UTF-8?q?fix=E8=96=AA=E8=B5=84=E6=98=8E=E7=BB=86?= =?UTF-8?q?=E6=8A=A5=E8=A1=A8=E6=90=9C=E7=B4=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salary/report/wrapper/SalaryStatisticsEmployeeWrapper.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/com/engine/salary/report/wrapper/SalaryStatisticsEmployeeWrapper.java b/src/com/engine/salary/report/wrapper/SalaryStatisticsEmployeeWrapper.java index 0b7a3f87a..e140ed0fd 100644 --- a/src/com/engine/salary/report/wrapper/SalaryStatisticsEmployeeWrapper.java +++ b/src/com/engine/salary/report/wrapper/SalaryStatisticsEmployeeWrapper.java @@ -237,6 +237,8 @@ public class SalaryStatisticsEmployeeWrapper extends Service { */ public Map salaryListSum(SalaryStatisticsEmployeeSalaryQueryParam queryParam) { Map resultMap = Maps.newHashMap(); + Map sumResultMap = Maps.newHashMap(); + resultMap.put("sumRow", sumResultMap); if (StringUtils.isBlank(queryParam.getStartDateStr()) || StringUtils.isBlank(queryParam.getEndDateStr())) { return resultMap; } @@ -248,7 +250,6 @@ public class SalaryStatisticsEmployeeWrapper extends Service { return resultMap; } - Map sumResultMap = Maps.newHashMap(); List> empParts = Lists.partition(employeePOS, 500); From e4071edab6b8ccfa38913c1a751fc383327889a5 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Tue, 12 Nov 2024 16:21:56 +0800 Subject: [PATCH 139/218] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E7=A4=BE=E4=BF=9D?= =?UTF-8?q?=E7=A6=8F=E5=88=A9=E5=8F=B0=E8=B4=A6=E6=B7=BB=E5=8A=A0=E4=BA=BA?= =?UTF-8?q?=E5=91=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/SIRepairServiceImpl.java | 36 +++++++++---------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/src/com/engine/salary/service/impl/SIRepairServiceImpl.java b/src/com/engine/salary/service/impl/SIRepairServiceImpl.java index 9ce45ed5a..64758d625 100644 --- a/src/com/engine/salary/service/impl/SIRepairServiceImpl.java +++ b/src/com/engine/salary/service/impl/SIRepairServiceImpl.java @@ -227,8 +227,8 @@ public class SIRepairServiceImpl extends Service implements SIRepairService { Map socialMap = JSON.parseObject(socialSchemePO.getSocialPaymentBaseString(), new HashMap().getClass()); Map socialComMap = JSON.parseObject(socialSchemePO.getSocialPaymentComBaseString(), new HashMap().getClass()); List socialIds = new ArrayList<>(); - socialIds.addAll(socialMap.keySet()); - socialIds.addAll(socialComMap.keySet()); + socialIds.addAll(socialMap == null ? Collections.emptyList() : socialMap.keySet()); + socialIds.addAll(socialComMap == null ? Collections.emptyList() : socialComMap.keySet()); socialIds = socialIds.stream().distinct().collect(Collectors.toList()); //查询该福利方案下开启缴纳的福利项 List insuranceIdAndScopeList = payInsuranceIdAndScopeList(socialSchemePO.getSocialSchemeId()); @@ -266,8 +266,8 @@ public class SIRepairServiceImpl extends Service implements SIRepairService { Map fundMap = JSON.parseObject(fundSchemePO.getFundPaymentBaseString(), new HashMap().getClass()); Map fundComMap = JSON.parseObject(fundSchemePO.getFundPaymentComBaseString(), new HashMap().getClass()); List fundIds = new ArrayList<>(); - fundIds.addAll(fundMap.keySet()); - fundIds.addAll(fundComMap.keySet()); + fundIds.addAll(fundMap == null ? Collections.emptyList() : fundMap.keySet()); + fundIds.addAll(fundComMap == null ? Collections.emptyList() : fundComMap.keySet()); fundIds = fundIds.stream().distinct().collect(Collectors.toList()); //查询该福利方案下开启缴纳的福利项 List insuranceIdAndScopeList = payInsuranceIdAndScopeList(fundSchemePO.getFundSchemeId()); @@ -305,8 +305,8 @@ public class SIRepairServiceImpl extends Service implements SIRepairService { Map otherMap = JSON.parseObject(otherSchemePO.getOtherPaymentBaseString(), new HashMap().getClass()); Map otherComMap = JSON.parseObject(otherSchemePO.getOtherPaymentComBaseString(), new HashMap().getClass()); List otherIds = new ArrayList<>(); - otherIds.addAll(otherMap.keySet()); - otherIds.addAll(otherComMap.keySet()); + otherIds.addAll(otherMap == null ? Collections.emptyList() : otherMap.keySet()); + otherIds.addAll(otherComMap == null ? Collections.emptyList() : otherComMap.keySet()); otherIds = otherIds.stream().distinct().collect(Collectors.toList()); //查询该福利方案下开启缴纳的福利项 List insuranceIdAndScopeList = payInsuranceIdAndScopeList(otherSchemePO.getOtherSchemeId()); @@ -346,8 +346,8 @@ public class SIRepairServiceImpl extends Service implements SIRepairService { Map socialMap = JSON.parseObject(socialSchemePO.getSocialPaymentBaseString(), new HashMap().getClass()); Map socialComMap = JSON.parseObject(socialSchemePO.getSocialPaymentComBaseString(), new HashMap().getClass()); List socialIds = new ArrayList<>(); - socialIds.addAll(socialMap.keySet()); - socialIds.addAll(socialComMap.keySet()); + socialIds.addAll(socialMap == null ? Collections.emptyList() : socialMap.keySet()); + socialIds.addAll(socialComMap == null ? Collections.emptyList() : socialComMap.keySet()); socialIds = socialIds.stream().distinct().collect(Collectors.toList()); //查询该福利方案下开启缴纳的福利项 List insuranceIdAndScopeList = payInsuranceIdAndScopeList(socialSchemePO.getSocialSchemeId()); @@ -393,8 +393,8 @@ public class SIRepairServiceImpl extends Service implements SIRepairService { socialComMap = socialComMap.entrySet().stream().filter(e -> "9001".equals(e.getKey()) || "9002".equals(e.getKey())) .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)); List socialIds = new ArrayList<>(); - socialIds.addAll(socialMap.keySet()); - socialIds.addAll(socialComMap.keySet()); + socialIds.addAll(socialMap == null ? Collections.emptyList() : socialMap.keySet()); + socialIds.addAll(socialComMap == null ? Collections.emptyList() : socialMap.keySet()); socialIds = socialIds.stream().distinct().collect(Collectors.toList()); //查询该福利方案下开启缴纳的福利项 List insuranceIdAndScopeList = payInsuranceIdAndScopeList(socialSchemePO.getSocialSchemeId()); @@ -441,8 +441,8 @@ public class SIRepairServiceImpl extends Service implements SIRepairService { socialComMap = socialComMap.entrySet().stream().filter(e -> "9001".equals(e.getKey())) .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)); List socialIds = new ArrayList<>(); - socialIds.addAll(socialMap.keySet()); - socialIds.addAll(socialComMap.keySet()); + socialIds.addAll(socialMap == null ? Collections.emptyList() : socialMap.keySet()); + socialIds.addAll(socialComMap == null ? Collections.emptyList() :socialComMap.keySet()); socialIds = socialIds.stream().distinct().collect(Collectors.toList()); //查询该福利方案下开启缴纳的福利项 List insuranceIdAndScopeList = payInsuranceIdAndScopeList(socialSchemePO.getSocialSchemeId()); @@ -488,8 +488,8 @@ public class SIRepairServiceImpl extends Service implements SIRepairService { socialComMap = socialComMap.entrySet().stream().filter(e -> "9002".equals(e.getKey())) .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)); List socialIds = new ArrayList<>(); - socialIds.addAll(socialMap.keySet()); - socialIds.addAll(socialComMap.keySet()); + socialIds.addAll(socialMap == null ? Collections.emptyList() : socialMap.keySet()); + socialIds.addAll(socialComMap == null ? Collections.emptyList() : socialComMap.keySet()); socialIds = socialIds.stream().distinct().collect(Collectors.toList()); //查询该福利方案下开启缴纳的福利项 List insuranceIdAndScopeList = payInsuranceIdAndScopeList(socialSchemePO.getSocialSchemeId()); @@ -529,8 +529,8 @@ public class SIRepairServiceImpl extends Service implements SIRepairService { Map fundMap = JSON.parseObject(fundSchemePO.getFundPaymentBaseString(), new HashMap().getClass()); Map fundComMap = JSON.parseObject(fundSchemePO.getFundPaymentComBaseString(), new HashMap().getClass()); List fundIds = new ArrayList<>(); - fundIds.addAll(fundMap.keySet()); - fundIds.addAll(fundComMap.keySet()); + fundIds.addAll(fundMap == null ? Collections.emptyList() : fundMap.keySet()); + fundIds.addAll(fundComMap == null ? Collections.emptyList() : fundComMap.keySet()); fundIds = fundIds.stream().distinct().collect(Collectors.toList()); //查询该福利方案下开启缴纳的福利项 List insuranceIdAndScopeList = payInsuranceIdAndScopeList(fundSchemePO.getFundSchemeId()); @@ -570,8 +570,8 @@ public class SIRepairServiceImpl extends Service implements SIRepairService { Map otherMap = JSON.parseObject(otherSchemePO.getOtherPaymentBaseString(), new HashMap().getClass()); Map otherComMap = JSON.parseObject(otherSchemePO.getOtherPaymentComBaseString(), new HashMap().getClass()); List otherIds = new ArrayList<>(); - otherIds.addAll(otherMap.keySet()); - otherIds.addAll(otherComMap.keySet()); + otherIds.addAll(otherMap == null ? Collections.emptyList() : otherMap.keySet()); + otherIds.addAll(otherComMap == null ? Collections.emptyList() : otherComMap.keySet()); otherIds = otherIds.stream().distinct().collect(Collectors.toList()); //查询该福利方案下开启缴纳的福利项 List insuranceIdAndScopeList = payInsuranceIdAndScopeList(otherSchemePO.getOtherSchemeId()); From 5a18ccf57b6eaac470c42e925e5d0bb95428e1c7 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Tue, 12 Nov 2024 17:06:41 +0800 Subject: [PATCH 140/218] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=B2=A1=E6=9C=89?= =?UTF-8?q?=E6=A1=A3=E6=A1=88=E7=9A=84=E4=BA=BA=EF=BC=8C=E5=AE=9A=E8=96=AA?= =?UTF-8?q?action=E7=8A=B6=E6=80=81=E4=BF=9D=E6=8C=81=E4=B8=8D=E5=8F=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salary/entity/salaryarchive/bo/SalaryArchiveExcelBO.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/com/engine/salary/entity/salaryarchive/bo/SalaryArchiveExcelBO.java b/src/com/engine/salary/entity/salaryarchive/bo/SalaryArchiveExcelBO.java index 4aee55819..06458ffeb 100644 --- a/src/com/engine/salary/entity/salaryarchive/bo/SalaryArchiveExcelBO.java +++ b/src/com/engine/salary/entity/salaryarchive/bo/SalaryArchiveExcelBO.java @@ -783,6 +783,11 @@ public class SalaryArchiveExcelBO extends Service { .deleteType(NumberUtils.INTEGER_ZERO) .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) .build(); + // 定薪action 保持状态为待定薪 + if (importHandleParam.isInit() && + (importHandleParam.getKeepStatus() != null && importHandleParam.getKeepStatus().equals(Boolean.TRUE))) { + salaryArchive.setRunStatus(SalaryArchiveStatusEnum.PENDING.getValue()); + } importHandleParam.getSalaryArchiveSaves().add(salaryArchive); } return salaryArchive; From ce1312d6057b3bd3ededc34ac1bcb47e4baf151f Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Tue, 12 Nov 2024 17:08:59 +0800 Subject: [PATCH 141/218] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=B2=A1=E6=9C=89?= =?UTF-8?q?=E6=A1=A3=E6=A1=88=E7=9A=84=E4=BA=BA=EF=BC=8C=E5=AE=9A=E8=96=AA?= =?UTF-8?q?action=E7=8A=B6=E6=80=81=E4=BF=9D=E6=8C=81=E4=B8=8D=E5=8F=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salary/entity/salaryarchive/bo/SalaryArchiveExcelBO.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/com/engine/salary/entity/salaryarchive/bo/SalaryArchiveExcelBO.java b/src/com/engine/salary/entity/salaryarchive/bo/SalaryArchiveExcelBO.java index 06458ffeb..d32117615 100644 --- a/src/com/engine/salary/entity/salaryarchive/bo/SalaryArchiveExcelBO.java +++ b/src/com/engine/salary/entity/salaryarchive/bo/SalaryArchiveExcelBO.java @@ -784,8 +784,7 @@ public class SalaryArchiveExcelBO extends Service { .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) .build(); // 定薪action 保持状态为待定薪 - if (importHandleParam.isInit() && - (importHandleParam.getKeepStatus() != null && importHandleParam.getKeepStatus().equals(Boolean.TRUE))) { + if (importHandleParam.isInit() && importHandleParam.getKeepStatus() != null && importHandleParam.getKeepStatus().equals(Boolean.TRUE)) { salaryArchive.setRunStatus(SalaryArchiveStatusEnum.PENDING.getValue()); } importHandleParam.getSalaryArchiveSaves().add(salaryArchive); From 9ff0612f592fd0e46f4e72429127300e7f7f281c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Wed, 13 Nov 2024 09:59:13 +0800 Subject: [PATCH 142/218] =?UTF-8?q?sql=E7=BC=BA=E5=A4=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resource/wiki/常用查询.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/resource/wiki/常用查询.md b/resource/wiki/常用查询.md index 71f4f51a6..637ebc08f 100644 --- a/resource/wiki/常用查询.md +++ b/resource/wiki/常用查询.md @@ -25,5 +25,5 @@ where item.name = '工资薪金合计' left join hrsa_salary_item c on c.id=i.salary_item_id left join hrsa_tax_agent t on a.tax_agent_id=t.id where a.delete_type=0 and i.delete_type=0 and t.delete_type=0 and c.delete_type=0 - and a.employee_id=人员id and t.name=扣缴义务人名称 - c.name='基本工资' order by effective_time desc \ No newline at end of file + and a.employee_id=人员id and t.name=扣缴义务人名称 + and c.name='基本工资' order by effective_time desc \ No newline at end of file From cd182a24b7d91a3755e54d79f5a790218547451c Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Thu, 14 Nov 2024 09:13:23 +0800 Subject: [PATCH 143/218] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E5=86=B2=E7=AA=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/engine/salary/wrapper/SalaryAcctResultWrapper.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/com/engine/salary/wrapper/SalaryAcctResultWrapper.java b/src/com/engine/salary/wrapper/SalaryAcctResultWrapper.java index 1cbc5814d..5bd00b417 100644 --- a/src/com/engine/salary/wrapper/SalaryAcctResultWrapper.java +++ b/src/com/engine/salary/wrapper/SalaryAcctResultWrapper.java @@ -215,9 +215,6 @@ public class SalaryAcctResultWrapper extends Service implements SalaryAcctResult public void calculate(SalaryAcctCalculateParam calculateParam) { log.info("开始核算V1{}", calculateParam); - //报表参数 - List emps = getSalaryEmployeeService(user).listAllForReport(); - calculateParam.setEmps(SalaryEntityUtil.convert2Map(emps, DataCollectionEmployee::getEmployeeId)); // 校验是否可以编辑 SalaryAcctRecordPO salaryAcctRecordPO = getSalaryAcctRecordService(user).getById(calculateParam.getSalaryAcctRecordId()); From 00271f3a4b18e7547c09f3a7480cf08642238a06 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Thu, 14 Nov 2024 09:23:44 +0800 Subject: [PATCH 144/218] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E5=86=B2=E7=AA=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/engine/salary/wrapper/SalaryApprovalWrapper.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/com/engine/salary/wrapper/SalaryApprovalWrapper.java b/src/com/engine/salary/wrapper/SalaryApprovalWrapper.java index 57c4e8227..81c6b10ce 100644 --- a/src/com/engine/salary/wrapper/SalaryApprovalWrapper.java +++ b/src/com/engine/salary/wrapper/SalaryApprovalWrapper.java @@ -133,7 +133,7 @@ public class SalaryApprovalWrapper extends Service { } 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())); + 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().toString())); } WeaTableColumnGroup weaTableColumnWapper = new WeaTableColumnGroup(SalaryPageUtil.selfAdaption(groupDTO.getGroupName(), 0), groupDTO.getGroupName(), groupDTO.getGroupName(), childrenColumns); columns.add(weaTableColumnWapper); From 618dbd17d89c739d37b943e880405fcb855e445d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Tue, 19 Nov 2024 09:48:13 +0800 Subject: [PATCH 145/218] =?UTF-8?q?fix=E9=BB=98=E8=AE=A4=E5=80=BC=E5=88=97?= =?UTF-8?q?=E8=A1=A8=E9=87=8D=E5=A4=8Dbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../engine/salary/entity/setting/po/PageListSettingPO.java | 4 +--- src/com/engine/salary/service/impl/SettingServiceImpl.java | 5 +++-- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/src/com/engine/salary/entity/setting/po/PageListSettingPO.java b/src/com/engine/salary/entity/setting/po/PageListSettingPO.java index 8b24728f6..c27bec6a3 100644 --- a/src/com/engine/salary/entity/setting/po/PageListSettingPO.java +++ b/src/com/engine/salary/entity/setting/po/PageListSettingPO.java @@ -10,13 +10,11 @@ import java.util.Collection; import java.util.Date; import java.util.List; -/** - * 薪资帐套表 - */ @Data @Builder @NoArgsConstructor @AllArgsConstructor +//hrsa_page_list_setting public class PageListSettingPO { @ElogTransform(name = "id") diff --git a/src/com/engine/salary/service/impl/SettingServiceImpl.java b/src/com/engine/salary/service/impl/SettingServiceImpl.java index 5c75551bc..485f6e24e 100644 --- a/src/com/engine/salary/service/impl/SettingServiceImpl.java +++ b/src/com/engine/salary/service/impl/SettingServiceImpl.java @@ -70,15 +70,16 @@ public class SettingServiceImpl extends Service implements SettingService { Date now = new Date(); PageListSettingPO pageListSettingPO = getPageListSettingMapper().getByPage(pageListSettingSaveParam.getPage()); + List checked = pageListSettingSaveParam.getSetting().stream().distinct().collect(Collectors.toList()); if (pageListSettingPO != null) { - pageListSettingPO.setSetting(pageListSettingSaveParam.getSetting()); + pageListSettingPO.setSetting(checked); pageListSettingPO.setUpdateTime(now); getPageListSettingMapper().updateIgnoreNull(pageListSettingPO); } else { pageListSettingPO = PageListSettingPO.builder() .id(IdGenerator.generate()) .page(pageListSettingSaveParam.getPage()) - .setting(pageListSettingSaveParam.getSetting()) + .setting(checked) .creator((long) user.getUID()) .createTime(now) .updateTime(now) From 05c09958416b411cba05ea295a22cf348ddab5b8 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Tue, 19 Nov 2024 10:02:33 +0800 Subject: [PATCH 146/218] =?UTF-8?q?=E5=B7=A5=E8=B5=84=E5=8D=95=E5=AF=BC?= =?UTF-8?q?=E5=87=BA=E5=A2=9E=E5=8A=A0=E6=9F=A5=E7=9C=8B=E3=80=81=E7=A1=AE?= =?UTF-8?q?=E8=AE=A4=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/SalarySendServiceImpl.java | 33 +++++++++++++++---- 1 file changed, 27 insertions(+), 6 deletions(-) diff --git a/src/com/engine/salary/service/impl/SalarySendServiceImpl.java b/src/com/engine/salary/service/impl/SalarySendServiceImpl.java index ba083a1cb..6bce71730 100644 --- a/src/com/engine/salary/service/impl/SalarySendServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalarySendServiceImpl.java @@ -1464,6 +1464,9 @@ public class SalarySendServiceImpl extends Service implements SalarySendService @Override public XSSFWorkbook exportInfoList(SalarySendInfoQueryParam queryParam) { + // 校验 + SalarySendInfoQueryParam.checkParam(queryParam); + // 1.工作簿名称 String sheetName = SalaryI18nUtil.getI18nLabel(100528, "工资单发放信息"); List header = new ArrayList<>(); @@ -1473,14 +1476,24 @@ public class SalarySendServiceImpl extends Service implements SalarySendService header.add(SalaryI18nUtil.getI18nLabel(86186, "手机号")); header.add(SalaryI18nUtil.getI18nLabel(86317, "工号")); header.add(SalaryI18nUtil.getI18nLabel(86317, "发送状态")); - + SalarySendPO salarySendPO = getById(queryParam.getSalarySendId()); + if (salarySendPO == null) { + throw new SalaryRunTimeException("工资单不存在"); + } + List salaryTemplates = getSalaryTemplateService(user).getDefaultTemplates(Collections.singletonList(salarySendPO.getSalarySobId())); + if (CollectionUtils.isEmpty(salaryTemplates)) { + throw new SalaryRunTimeException("请先设置工资单模板"); + } + Integer ackFeedbackStatus = salaryTemplates.get(0).getAckFeedbackStatus(); + Integer feedbackStatus = salaryTemplates.get(0).getFeedbackStatus(); + if ((ackFeedbackStatus != null && NumberUtils.compare(ackFeedbackStatus, 1) == 0) + || (feedbackStatus != null && NumberUtils.compare(feedbackStatus, 1) == 0)) { + header.add(SalaryI18nUtil.getI18nLabel(0, "查看状态")); + header.add(SalaryI18nUtil.getI18nLabel(0, "确认状态")); + } List> rows = new ArrayList<>(); // 2.表头 rows.add(header); - - // 校验 - SalarySendInfoQueryParam.checkParam(queryParam); - // 获取行数据 //排序配置 OrderRuleVO orderRule = getSalarySysConfService(user).orderRule(); @@ -1491,7 +1504,10 @@ public class SalarySendServiceImpl extends Service implements SalarySendService list.forEach(e -> { // 发放状态 e.setSendStatus(SalarySendStatusEnum.getDefaultLabelByValue(Integer.valueOf(e.getSendStatus()))); - + // 查看状态 + e.setBillReadStatus(NumberUtils.isCreatable(e.getBillReadStatus()) ? BillReadStatusEnum.getDefaultLabelByValue(Integer.valueOf(e.getBillReadStatus())) : ""); + // 确认状态 + e.setBillConfirmStatus(NumberUtils.isCreatable(e.getBillConfirmStatus()) ? BillConfimStatusEnum.getDefaultLabelByValue(Integer.valueOf(e.getBillConfirmStatus())) : ""); //外部人员 if (Objects.equals(e.getEmployeeType(), 1)) { List employees = idEmpMap.getOrDefault(e.getEmployeeId(), new ArrayList<>()); @@ -1515,6 +1531,11 @@ public class SalarySendServiceImpl extends Service implements SalarySendService row.add(dto.getMobile()); row.add(dto.getJobNum()); row.add(dto.getSendStatus()); + if ((ackFeedbackStatus != null && NumberUtils.compare(ackFeedbackStatus, 1) == 0) + || (feedbackStatus != null && NumberUtils.compare(feedbackStatus, 1) == 0)) { + row.add(dto.getBillReadStatus()); + row.add(dto.getBillConfirmStatus()); + } rows.add(row); } From ba3e635e1facf33c027b42766a60cd2a1dd1fd30 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Tue, 19 Nov 2024 11:12:39 +0800 Subject: [PATCH 147/218] =?UTF-8?q?=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resource/WEB-INF/prop/hrmSalary.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resource/WEB-INF/prop/hrmSalary.properties b/resource/WEB-INF/prop/hrmSalary.properties index 73a128f3e..60b4e6089 100644 --- a/resource/WEB-INF/prop/hrmSalary.properties +++ b/resource/WEB-INF/prop/hrmSalary.properties @@ -1,5 +1,5 @@ log=false defaultCloseNonStandard149=true AESEncryptScrect=990EB004A1C862721C1513AE90038C9E -version=2.16.1.2410.01 +version=2.17.1.2411.01 openFormulaForcedEditing=false \ No newline at end of file From 94c8d82f083732bcbbb252b3826b8234c8e9a31e Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Tue, 19 Nov 2024 13:35:25 +0800 Subject: [PATCH 148/218] =?UTF-8?q?action=20=E5=A2=9E=E5=8A=A0enableField?= =?UTF-8?q?=E5=AD=97=E6=AE=B5=E5=80=BCwei?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../action/BatEditSalaryExcelAction.java | 17 ++++++++++++++ .../action/CheckBatEditSalaryExcelAction.java | 17 ++++++++++++++ .../action/CheckEditSIArchiveAction.java | 17 ++++++++++++++ .../salary/action/CheckEditSalaryAction.java | 18 ++++++++++++++- .../salary/action/CheckInitSalaryAction.java | 16 ++++++++++++++ .../CheckStayAddToPaySIArchiveAction.java | 18 +++++++++++++++ .../CheckStayDelToStopSIArchiveAction.java | 17 ++++++++++++++ .../salary/action/CheckStopSalaryAction.java | 16 ++++++++++++++ .../action/CopyToPaySIArchiveAction.java | 22 ++++++++++++++++++- .../salary/action/EditSIArchiveAction.java | 17 ++++++++++++++ .../salary/action/EditSalaryAction.java | 18 ++++++++++++++- .../action/EditToPaySIArchiveAction.java | 17 ++++++++++++++ .../action/EditToStopSIArchiveAction.java | 17 ++++++++++++++ .../salary/action/InitSalaryAction.java | 16 ++++++++++++++ .../engine/salary/action/RehireAction.java | 17 ++++++++++++++ .../salary/action/SendSalaryAction.java | 18 +++++++++++++++ .../action/StayAddToPaySIArchiveAction.java | 17 ++++++++++++++ .../action/StayDelToStopSIArchiveAction.java | 17 ++++++++++++++ .../salary/action/StopSalaryAction.java | 16 ++++++++++++++ .../action/UpdateSISchemeDetailAction.java | 20 +++++++++++++++++ 20 files changed, 345 insertions(+), 3 deletions(-) diff --git a/src/com/engine/salary/action/BatEditSalaryExcelAction.java b/src/com/engine/salary/action/BatEditSalaryExcelAction.java index adddc2de9..adc1f7160 100644 --- a/src/com/engine/salary/action/BatEditSalaryExcelAction.java +++ b/src/com/engine/salary/action/BatEditSalaryExcelAction.java @@ -7,6 +7,7 @@ import com.engine.salary.enums.salaryarchive.SalaryArchiveListTypeEnum; import com.engine.salary.service.SalaryArchiveExcelService; import com.engine.salary.service.impl.SalaryArchiveExcelServiceImpl; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; import weaver.conn.RecordSet; import weaver.general.Util; import weaver.hrm.User; @@ -45,6 +46,17 @@ public class BatEditSalaryExcelAction implements Action { this.operatorField = operatorField; } + // 是否执行action的字段, 0代表不执行,其余代表执行 + private String enableField; + + public String getEnableField() { + return enableField; + } + + public void setEnableField(String enableField) { + this.enableField = enableField; + } + @Override public String execute(RequestInfo requestInfo) { try { @@ -53,6 +65,11 @@ public class BatEditSalaryExcelAction implements Action { Map fieldMap = Arrays.stream(properties).collect(Collectors.toMap(Property::getName, property -> Util.null2String(property.getValue()))); + String enable = fieldMap.get(enableField); + if (StringUtils.isNotBlank(enable) && enable.equals("0")) { + // 不执行action + return SUCCESS; + } String docId = fieldMap.get(batSalaryExcelField); RecordSet rs = new RecordSet(); diff --git a/src/com/engine/salary/action/CheckBatEditSalaryExcelAction.java b/src/com/engine/salary/action/CheckBatEditSalaryExcelAction.java index 408b2fa7f..0378e8b62 100644 --- a/src/com/engine/salary/action/CheckBatEditSalaryExcelAction.java +++ b/src/com/engine/salary/action/CheckBatEditSalaryExcelAction.java @@ -7,6 +7,7 @@ import com.engine.salary.enums.salaryarchive.SalaryArchiveListTypeEnum; import com.engine.salary.service.SalaryArchiveExcelService; import com.engine.salary.service.impl.SalaryArchiveExcelServiceImpl; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; import weaver.conn.RecordSet; import weaver.general.Util; import weaver.hrm.User; @@ -46,6 +47,17 @@ public class CheckBatEditSalaryExcelAction implements Action { this.operatorField = operatorField; } + // 是否执行action的字段, 0代表不执行,其余代表执行 + private String enableField; + + public String getEnableField() { + return enableField; + } + + public void setEnableField(String enableField) { + this.enableField = enableField; + } + @Override public String execute(RequestInfo requestInfo) { try { @@ -53,6 +65,11 @@ public class CheckBatEditSalaryExcelAction implements Action { Map fieldMap = Arrays.stream(properties).collect(Collectors.toMap(Property::getName, property -> Util.null2String(property.getValue()))); + String enable = fieldMap.get(enableField); + if (StringUtils.isNotBlank(enable) && enable.equals("0")) { + // 不执行action + return SUCCESS; + } String docId = fieldMap.get(batSalaryExcelField); RecordSet rs = new RecordSet(); diff --git a/src/com/engine/salary/action/CheckEditSIArchiveAction.java b/src/com/engine/salary/action/CheckEditSIArchiveAction.java index f4f8d9165..2a0bbccb7 100644 --- a/src/com/engine/salary/action/CheckEditSIArchiveAction.java +++ b/src/com/engine/salary/action/CheckEditSIArchiveAction.java @@ -7,6 +7,7 @@ import com.engine.salary.service.impl.SISchemeServiceImpl; import com.engine.salary.util.SalaryEntityUtil; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; import weaver.conn.RecordSet; import weaver.general.Util; import weaver.hrm.User; @@ -42,6 +43,17 @@ public class CheckEditSIArchiveAction implements Action { this.tableName = tableName; } + // 是否执行action的字段, 0代表不执行,其余代表执行 + private String enableField; + + public String getEnableField() { + return enableField; + } + + public void setEnableField(String enableField) { + this.enableField = enableField; + } + @Override public String execute(RequestInfo requestInfo) { try { @@ -49,6 +61,11 @@ public class CheckEditSIArchiveAction implements Action { Map fieldMap = Arrays.stream(properties).collect(Collectors.toMap(Property::getName, property -> Util.null2String(property.getValue()))); + String enable = fieldMap.get(enableField); + if (StringUtils.isNotBlank(enable) && enable.equals("0")) { + // 不执行action + return SUCCESS; + } RecordSet rs = new RecordSet(); String queryImageId = "select salaryname,processfield from " + tableName + " where workflowid = ?"; diff --git a/src/com/engine/salary/action/CheckEditSalaryAction.java b/src/com/engine/salary/action/CheckEditSalaryAction.java index 7cee919f3..f8c2dcb75 100644 --- a/src/com/engine/salary/action/CheckEditSalaryAction.java +++ b/src/com/engine/salary/action/CheckEditSalaryAction.java @@ -6,6 +6,7 @@ import com.engine.salary.util.SalaryEntityUtil; import com.engine.salary.wrapper.SalaryArchiveWrapper; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; import weaver.conn.RecordSet; import weaver.general.Util; import weaver.hrm.User; @@ -38,6 +39,17 @@ public class CheckEditSalaryAction implements Action { this.tableName = tableName; } + // 是否执行action的字段, 0代表不执行,其余代表执行 + private String enableField; + + public String getEnableField() { + return enableField; + } + + public void setEnableField(String enableField) { + this.enableField = enableField; + } + @Override public String execute(RequestInfo requestInfo) { try { @@ -46,7 +58,11 @@ public class CheckEditSalaryAction implements Action { Map fieldMap = Arrays.stream(properties).collect(Collectors.toMap(Property::getName, property -> Util.null2String(property.getValue()))); - + String enable = fieldMap.get(enableField); + if (StringUtils.isNotBlank(enable) && enable.equals("0")) { + // 不执行action + return SUCCESS; + } RecordSet rs = new RecordSet(); String queryImageId = "select salaryname,processfield from " + tableName + " where workflowid = ?"; diff --git a/src/com/engine/salary/action/CheckInitSalaryAction.java b/src/com/engine/salary/action/CheckInitSalaryAction.java index 34dd5782a..157ecab8a 100644 --- a/src/com/engine/salary/action/CheckInitSalaryAction.java +++ b/src/com/engine/salary/action/CheckInitSalaryAction.java @@ -60,6 +60,17 @@ public class CheckInitSalaryAction implements Action { this.tableName = tableName; } + // 是否执行action的字段, 0代表不执行,其余代表执行 + private String enableField; + + public String getEnableField() { + return enableField; + } + + public void setEnableField(String enableField) { + this.enableField = enableField; + } + @Override public String execute(RequestInfo requestInfo) { try { @@ -68,6 +79,11 @@ public class CheckInitSalaryAction implements Action { Map fieldMap = Arrays.stream(properties).collect(Collectors.toMap(Property::getName, property -> Util.null2String(property.getValue()))); + String enable = fieldMap.get(enableField); + if (StringUtils.isNotBlank(enable) && enable.equals("0")) { + // 不执行action + return SUCCESS; + } RecordSet rs = new RecordSet(); diff --git a/src/com/engine/salary/action/CheckStayAddToPaySIArchiveAction.java b/src/com/engine/salary/action/CheckStayAddToPaySIArchiveAction.java index 786d4c863..6adfa8299 100644 --- a/src/com/engine/salary/action/CheckStayAddToPaySIArchiveAction.java +++ b/src/com/engine/salary/action/CheckStayAddToPaySIArchiveAction.java @@ -9,6 +9,7 @@ import com.engine.salary.util.SalaryEntityUtil; import com.engine.salary.util.db.MapperProxyFactory; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; import weaver.conn.RecordSet; import weaver.general.Util; import weaver.hrm.User; @@ -49,6 +50,17 @@ public class CheckStayAddToPaySIArchiveAction implements Action { this.tableName = tableName; } + // 是否执行action的字段, 0代表不执行,其余代表执行 + private String enableField; + + public String getEnableField() { + return enableField; + } + + public void setEnableField(String enableField) { + this.enableField = enableField; + } + @Override public String execute(RequestInfo requestInfo) { try { @@ -57,6 +69,12 @@ public class CheckStayAddToPaySIArchiveAction implements Action { Map fieldMap = Arrays.stream(properties).collect(Collectors.toMap(Property::getName, property -> Util.null2String(property.getValue()))); + String enable = fieldMap.get(enableField); + if (StringUtils.isNotBlank(enable) && enable.equals("0")) { + // 不执行action + return SUCCESS; + } + RecordSet rs = new RecordSet(); String queryImageId = "select salaryname,processfield from " + tableName + " where workflowid = ?"; diff --git a/src/com/engine/salary/action/CheckStayDelToStopSIArchiveAction.java b/src/com/engine/salary/action/CheckStayDelToStopSIArchiveAction.java index a89df0ad4..ef816fbd8 100644 --- a/src/com/engine/salary/action/CheckStayDelToStopSIArchiveAction.java +++ b/src/com/engine/salary/action/CheckStayDelToStopSIArchiveAction.java @@ -9,6 +9,7 @@ import com.engine.salary.util.SalaryEntityUtil; import com.engine.salary.util.db.MapperProxyFactory; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; import weaver.conn.RecordSet; import weaver.general.Util; import weaver.hrm.User; @@ -49,6 +50,17 @@ public class CheckStayDelToStopSIArchiveAction implements Action { this.tableName = tableName; } + // 是否执行action的字段, 0代表不执行,其余代表执行 + private String enableField; + + public String getEnableField() { + return enableField; + } + + public void setEnableField(String enableField) { + this.enableField = enableField; + } + @Override public String execute(RequestInfo requestInfo) { try { @@ -57,6 +69,11 @@ public class CheckStayDelToStopSIArchiveAction implements Action { Map fieldMap = Arrays.stream(properties).collect(Collectors.toMap(Property::getName, property -> Util.null2String(property.getValue()))); + String enable = fieldMap.get(enableField); + if (StringUtils.isNotBlank(enable) && enable.equals("0")) { + // 不执行action + return SUCCESS; + } RecordSet rs = new RecordSet(); String queryImageId = "select salaryname,processfield from " + tableName + " where workflowid = ?"; diff --git a/src/com/engine/salary/action/CheckStopSalaryAction.java b/src/com/engine/salary/action/CheckStopSalaryAction.java index f4cdc0fb2..78b3c0a7c 100644 --- a/src/com/engine/salary/action/CheckStopSalaryAction.java +++ b/src/com/engine/salary/action/CheckStopSalaryAction.java @@ -54,6 +54,17 @@ public class CheckStopSalaryAction implements Action { this.tableName = tableName; } + // 是否执行action的字段, 0代表不执行,其余代表执行 + private String enableField; + + public String getEnableField() { + return enableField; + } + + public void setEnableField(String enableField) { + this.enableField = enableField; + } + @Override public String execute(RequestInfo requestInfo) { try { @@ -62,6 +73,11 @@ public class CheckStopSalaryAction implements Action { Map fieldMap = Arrays.stream(properties).collect(Collectors.toMap(Property::getName, property -> Util.null2String(property.getValue()))); + String enable = fieldMap.get(enableField); + if (StringUtils.isNotBlank(enable) && enable.equals("0")) { + // 不执行action + return SUCCESS; + } RecordSet rs = new RecordSet(); String queryImageId = "select salaryname,processfield from " + tableName + " where workflowid = ?"; diff --git a/src/com/engine/salary/action/CopyToPaySIArchiveAction.java b/src/com/engine/salary/action/CopyToPaySIArchiveAction.java index 2fcfb6596..8f0421c71 100644 --- a/src/com/engine/salary/action/CopyToPaySIArchiveAction.java +++ b/src/com/engine/salary/action/CopyToPaySIArchiveAction.java @@ -11,6 +11,7 @@ import com.engine.salary.util.SalaryEntityUtil; import com.engine.salary.util.db.MapperProxyFactory; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; import weaver.conn.RecordSet; import weaver.general.Util; import weaver.hrm.User; @@ -18,7 +19,10 @@ import weaver.interfaces.workflow.action.Action; import weaver.soa.workflow.request.Property; import weaver.soa.workflow.request.RequestInfo; -import java.util.*; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Map; import java.util.stream.Collectors; /** @@ -47,6 +51,17 @@ public class CopyToPaySIArchiveAction implements Action { this.tableName = tableName; } + // 是否执行action的字段, 0代表不执行,其余代表执行 + private String enableField; + + public String getEnableField() { + return enableField; + } + + public void setEnableField(String enableField) { + this.enableField = enableField; + } + @Override public String execute(RequestInfo requestInfo) { try { @@ -54,6 +69,11 @@ public class CopyToPaySIArchiveAction implements Action { Map fieldMap = Arrays.stream(properties).collect(Collectors.toMap(Property::getName, property -> Util.null2String(property.getValue()))); + String enable = fieldMap.get(enableField); + if (StringUtils.isNotBlank(enable) && enable.equals("0")) { + // 不执行action + return SUCCESS; + } RecordSet rs = new RecordSet(); String queryImageId = "select salaryname,processfield from " + tableName + " where workflowid = ?"; diff --git a/src/com/engine/salary/action/EditSIArchiveAction.java b/src/com/engine/salary/action/EditSIArchiveAction.java index 22dda2d3e..4cb6eb505 100644 --- a/src/com/engine/salary/action/EditSIArchiveAction.java +++ b/src/com/engine/salary/action/EditSIArchiveAction.java @@ -7,6 +7,7 @@ import com.engine.salary.service.impl.SISchemeServiceImpl; import com.engine.salary.util.SalaryEntityUtil; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; import weaver.conn.RecordSet; import weaver.general.Util; import weaver.hrm.User; @@ -41,6 +42,17 @@ public class EditSIArchiveAction implements Action { this.tableName = tableName; } + // 是否执行action的字段, 0代表不执行,其余代表执行 + private String enableField; + + public String getEnableField() { + return enableField; + } + + public void setEnableField(String enableField) { + this.enableField = enableField; + } + @Override public String execute(RequestInfo requestInfo) { try { @@ -48,6 +60,11 @@ public class EditSIArchiveAction implements Action { Map fieldMap = Arrays.stream(properties).collect(Collectors.toMap(Property::getName, property -> Util.null2String(property.getValue()))); + String enable = fieldMap.get(enableField); + if (StringUtils.isNotBlank(enable) && enable.equals("0")) { + // 不执行action + return SUCCESS; + } RecordSet rs = new RecordSet(); String queryImageId = "select salaryname,processfield from " + tableName + " where workflowid = ?"; diff --git a/src/com/engine/salary/action/EditSalaryAction.java b/src/com/engine/salary/action/EditSalaryAction.java index eed5d1648..3c8dd5446 100644 --- a/src/com/engine/salary/action/EditSalaryAction.java +++ b/src/com/engine/salary/action/EditSalaryAction.java @@ -6,6 +6,7 @@ import com.engine.salary.util.SalaryEntityUtil; import com.engine.salary.wrapper.SalaryArchiveWrapper; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; import weaver.conn.RecordSet; import weaver.general.Util; import weaver.hrm.User; @@ -38,6 +39,17 @@ public class EditSalaryAction implements Action { this.tableName = tableName; } + // 是否执行action的字段, 0代表不执行,其余代表执行 + private String enableField; + + public String getEnableField() { + return enableField; + } + + public void setEnableField(String enableField) { + this.enableField = enableField; + } + @Override public String execute(RequestInfo requestInfo) { try { @@ -46,7 +58,11 @@ public class EditSalaryAction implements Action { Map fieldMap = Arrays.stream(properties).collect(Collectors.toMap(Property::getName, property -> Util.null2String(property.getValue()))); - + String enable = fieldMap.get(enableField); + if (StringUtils.isNotBlank(enable) && enable.equals("0")) { + // 不执行action + return SUCCESS; + } RecordSet rs = new RecordSet(); String queryImageId = "select salaryname,processfield from " + tableName + " where workflowid = ?"; diff --git a/src/com/engine/salary/action/EditToPaySIArchiveAction.java b/src/com/engine/salary/action/EditToPaySIArchiveAction.java index c736f9698..31259e94a 100644 --- a/src/com/engine/salary/action/EditToPaySIArchiveAction.java +++ b/src/com/engine/salary/action/EditToPaySIArchiveAction.java @@ -15,6 +15,7 @@ import com.engine.salary.util.SalaryEntityUtil; import com.engine.salary.util.db.MapperProxyFactory; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; import weaver.conn.RecordSet; import weaver.general.Util; import weaver.hrm.User; @@ -59,6 +60,17 @@ public class EditToPaySIArchiveAction implements Action { this.tableName = tableName; } + // 是否执行action的字段, 0代表不执行,其余代表执行 + private String enableField; + + public String getEnableField() { + return enableField; + } + + public void setEnableField(String enableField) { + this.enableField = enableField; + } + @Override public String execute(RequestInfo requestInfo) { try { @@ -66,6 +78,11 @@ public class EditToPaySIArchiveAction implements Action { Map fieldMap = Arrays.stream(properties).collect(Collectors.toMap(Property::getName, property -> Util.null2String(property.getValue()))); + String enable = fieldMap.get(enableField); + if (StringUtils.isNotBlank(enable) && enable.equals("0")) { + // 不执行action + return SUCCESS; + } RecordSet rs = new RecordSet(); String queryImageId = "select salaryname,processfield from " + tableName + " where workflowid = ?"; diff --git a/src/com/engine/salary/action/EditToStopSIArchiveAction.java b/src/com/engine/salary/action/EditToStopSIArchiveAction.java index 80b16ab93..1f2a612fd 100644 --- a/src/com/engine/salary/action/EditToStopSIArchiveAction.java +++ b/src/com/engine/salary/action/EditToStopSIArchiveAction.java @@ -15,6 +15,7 @@ import com.engine.salary.util.SalaryEntityUtil; import com.engine.salary.util.db.MapperProxyFactory; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; import weaver.conn.RecordSet; import weaver.general.Util; import weaver.hrm.User; @@ -59,6 +60,17 @@ public class EditToStopSIArchiveAction implements Action { this.tableName = tableName; } + // 是否执行action的字段, 0代表不执行,其余代表执行 + private String enableField; + + public String getEnableField() { + return enableField; + } + + public void setEnableField(String enableField) { + this.enableField = enableField; + } + @Override public String execute(RequestInfo requestInfo) { try { @@ -66,6 +78,11 @@ public class EditToStopSIArchiveAction implements Action { Map fieldMap = Arrays.stream(properties).collect(Collectors.toMap(Property::getName, property -> Util.null2String(property.getValue()))); + String enable = fieldMap.get(enableField); + if (StringUtils.isNotBlank(enable) && enable.equals("0")) { + // 不执行action + return SUCCESS; + } RecordSet rs = new RecordSet(); String queryImageId = "select salaryname,processfield from " + tableName + " where workflowid = ?"; diff --git a/src/com/engine/salary/action/InitSalaryAction.java b/src/com/engine/salary/action/InitSalaryAction.java index d280f49ab..af3ab875e 100644 --- a/src/com/engine/salary/action/InitSalaryAction.java +++ b/src/com/engine/salary/action/InitSalaryAction.java @@ -63,6 +63,17 @@ public class InitSalaryAction implements Action { this.tableName = tableName; } + // 是否执行action的字段, 0代表不执行,其余代表执行 + private String enableField; + + public String getEnableField() { + return enableField; + } + + public void setEnableField(String enableField) { + this.enableField = enableField; + } + @Override public String execute(RequestInfo requestInfo) { try { @@ -70,6 +81,11 @@ public class InitSalaryAction implements Action { Map fieldMap = Arrays.stream(properties).collect(Collectors.toMap(Property::getName, property -> Util.null2String(property.getValue()))); + String enable = fieldMap.get(enableField); + if (StringUtils.isNotBlank(enable) && enable.equals("0")) { + // 不执行action + return SUCCESS; + } RecordSet rs = new RecordSet(); String queryImageId = "select salaryname,processfield from " + tableName + " where workflowid = ?"; diff --git a/src/com/engine/salary/action/RehireAction.java b/src/com/engine/salary/action/RehireAction.java index a2410578c..f0ac107f3 100644 --- a/src/com/engine/salary/action/RehireAction.java +++ b/src/com/engine/salary/action/RehireAction.java @@ -70,6 +70,17 @@ public class RehireAction implements Action { this.tableName = tableName; } + // 是否执行action的字段, 0代表不执行,其余代表执行 + private String enableField; + + public String getEnableField() { + return enableField; + } + + public void setEnableField(String enableField) { + this.enableField = enableField; + } + @Override public String execute(RequestInfo requestInfo) { try { @@ -78,6 +89,12 @@ public class RehireAction implements Action { Map fieldMap = Arrays.stream(properties).collect(Collectors.toMap(Property::getName, property -> Util.null2String(property.getValue()))); + String enable = fieldMap.get(enableField); + if (StringUtils.isNotBlank(enable) && enable.equals("0")) { + // 不执行action + return SUCCESS; + } + RecordSet rs = new RecordSet(); String queryImageId = "select salaryname,processfield from " + tableName + " where workflowid = ?"; diff --git a/src/com/engine/salary/action/SendSalaryAction.java b/src/com/engine/salary/action/SendSalaryAction.java index f0f3ef154..39705e5c2 100644 --- a/src/com/engine/salary/action/SendSalaryAction.java +++ b/src/com/engine/salary/action/SendSalaryAction.java @@ -65,12 +65,30 @@ public class SendSalaryAction implements Action { */ private String sendBy; + // 是否执行action的字段, 0代表不执行,其余代表执行 + private String enableField; + + public String getEnableField() { + return enableField; + } + + public void setEnableField(String enableField) { + this.enableField = enableField; + } + @Override public String execute(RequestInfo requestInfo) { Property[] properties = requestInfo.getMainTableInfo().getProperty(); Map fieldMap = Arrays.stream(properties).collect(Collectors.toMap(Property::getName, property -> Util.null2String(property.getValue()))); + + String enable = fieldMap.get(enableField); + if (StringUtils.isNotBlank(enable) && enable.equals("0")) { + // 不执行action + return SUCCESS; + } + String idStr = fieldMap.get(idFieldName); if (StringUtils.isBlank(idStr)) { requestInfo.getRequestManager().setMessage("核算记录id或工资单id不能为空"); diff --git a/src/com/engine/salary/action/StayAddToPaySIArchiveAction.java b/src/com/engine/salary/action/StayAddToPaySIArchiveAction.java index c0bc0c0b0..371bdd8ee 100644 --- a/src/com/engine/salary/action/StayAddToPaySIArchiveAction.java +++ b/src/com/engine/salary/action/StayAddToPaySIArchiveAction.java @@ -12,6 +12,7 @@ import com.engine.salary.util.SalaryEntityUtil; import com.engine.salary.util.db.MapperProxyFactory; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; import weaver.conn.RecordSet; import weaver.general.Util; import weaver.hrm.User; @@ -54,6 +55,17 @@ public class StayAddToPaySIArchiveAction implements Action { this.tableName = tableName; } + // 是否执行action的字段, 0代表不执行,其余代表执行 + private String enableField; + + public String getEnableField() { + return enableField; + } + + public void setEnableField(String enableField) { + this.enableField = enableField; + } + @Override public String execute(RequestInfo requestInfo) { try { @@ -62,6 +74,11 @@ public class StayAddToPaySIArchiveAction implements Action { Map fieldMap = Arrays.stream(properties).collect(Collectors.toMap(Property::getName, property -> Util.null2String(property.getValue()))); + String enable = fieldMap.get(enableField); + if (StringUtils.isNotBlank(enable) && enable.equals("0")) { + // 不执行action + return SUCCESS; + } RecordSet rs = new RecordSet(); String queryImageId = "select salaryname,processfield from " + tableName + " where workflowid = ?"; diff --git a/src/com/engine/salary/action/StayDelToStopSIArchiveAction.java b/src/com/engine/salary/action/StayDelToStopSIArchiveAction.java index 339fad1bb..b715b9eea 100644 --- a/src/com/engine/salary/action/StayDelToStopSIArchiveAction.java +++ b/src/com/engine/salary/action/StayDelToStopSIArchiveAction.java @@ -14,6 +14,7 @@ import com.engine.salary.util.SalaryEntityUtil; import com.engine.salary.util.db.MapperProxyFactory; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; import weaver.conn.RecordSet; import weaver.general.Util; import weaver.hrm.User; @@ -55,6 +56,17 @@ public class StayDelToStopSIArchiveAction implements Action { this.tableName = tableName; } + // 是否执行action的字段, 0代表不执行,其余代表执行 + private String enableField; + + public String getEnableField() { + return enableField; + } + + public void setEnableField(String enableField) { + this.enableField = enableField; + } + @Override public String execute(RequestInfo requestInfo) { try { @@ -63,6 +75,11 @@ public class StayDelToStopSIArchiveAction implements Action { Map fieldMap = Arrays.stream(properties).collect(Collectors.toMap(Property::getName, property -> Util.null2String(property.getValue()))); + String enable = fieldMap.get(enableField); + if (StringUtils.isNotBlank(enable) && enable.equals("0")) { + // 不执行action + return SUCCESS; + } RecordSet rs = new RecordSet(); String queryImageId = "select salaryname,processfield from " + tableName + " where workflowid = ?"; diff --git a/src/com/engine/salary/action/StopSalaryAction.java b/src/com/engine/salary/action/StopSalaryAction.java index 7eafe84bb..6433e4e95 100644 --- a/src/com/engine/salary/action/StopSalaryAction.java +++ b/src/com/engine/salary/action/StopSalaryAction.java @@ -60,6 +60,17 @@ public class StopSalaryAction implements Action { this.tableName = tableName; } + // 是否执行action的字段, 0代表不执行,其余代表执行 + private String enableField; + + public String getEnableField() { + return enableField; + } + + public void setEnableField(String enableField) { + this.enableField = enableField; + } + @Override public String execute(RequestInfo requestInfo) { try { @@ -68,6 +79,11 @@ public class StopSalaryAction implements Action { Map fieldMap = Arrays.stream(properties).collect(Collectors.toMap(Property::getName, property -> Util.null2String(property.getValue()))); + String enable = fieldMap.get(enableField); + if (StringUtils.isNotBlank(enable) && enable.equals("0")) { + // 不执行action + return SUCCESS; + } RecordSet rs = new RecordSet(); diff --git a/src/com/engine/salary/action/UpdateSISchemeDetailAction.java b/src/com/engine/salary/action/UpdateSISchemeDetailAction.java index 0d406455a..91c93c377 100644 --- a/src/com/engine/salary/action/UpdateSISchemeDetailAction.java +++ b/src/com/engine/salary/action/UpdateSISchemeDetailAction.java @@ -55,12 +55,32 @@ public class UpdateSISchemeDetailAction implements Action { this.tableName = tableName; } + // 是否执行action的字段, 0代表不执行,其余代表执行 + private String enableField; + + public String getEnableField() { + return enableField; + } + + public void setEnableField(String enableField) { + this.enableField = enableField; + } + @Override public String execute(RequestInfo requestInfo) { try { RequestManager requestManager = requestInfo.getRequestManager(); User user = requestManager.getUser(); + Property[] properties = requestInfo.getMainTableInfo().getProperty(); + Map fieldMap = Arrays.stream(properties).collect(Collectors.toMap(Property::getName, + property -> Util.null2String(property.getValue()))); + String enable = fieldMap.get(enableField); + if (StringUtils.isNotBlank(enable) && enable.equals("0")) { + // 不执行action + return SUCCESS; + } + DetailTable[] detailTables = requestInfo.getDetailTableInfo().getDetailTable(); List> detailList = new ArrayList<>(); if (detailTables.length > 0) { From b3c2047a3d4478a748a35d2092c0f4083493e3c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Tue, 19 Nov 2024 15:07:42 +0800 Subject: [PATCH 149/218] =?UTF-8?q?=E6=B8=AF=E6=BE=B3=E9=80=9A=E8=A1=8C?= =?UTF-8?q?=E8=AF=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/engine/salary/enums/employeedeclare/CardTypeEnum.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/com/engine/salary/enums/employeedeclare/CardTypeEnum.java b/src/com/engine/salary/enums/employeedeclare/CardTypeEnum.java index 4b0af0325..6fb7bee15 100644 --- a/src/com/engine/salary/enums/employeedeclare/CardTypeEnum.java +++ b/src/com/engine/salary/enums/employeedeclare/CardTypeEnum.java @@ -16,7 +16,8 @@ import java.util.Objects; public enum CardTypeEnum implements BaseEnum { RESIDENT_IDENTITY_CARDS(0, "居民身份证", 105564), - FOREIGN_PASSPORT(1, "外国护照", 105564); + FOREIGN_PASSPORT(1, "外国护照", 105564), + HM_PASSPORT(2, "港澳居民来往内地通行证", 105564); CardTypeEnum(int value, String defaultLabel, int labelId) { this.value = value; From 199fe67374234aab6784f0f6349ec1303b04e3bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Tue, 19 Nov 2024 16:44:08 +0800 Subject: [PATCH 150/218] =?UTF-8?q?=E9=80=82=E9=85=8D=E6=B8=AF=E6=BE=B3?= =?UTF-8?q?=E5=8F=B0=E9=80=9A=E8=A1=8C=E8=AF=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bo/EmployeeDeclareRefresh.java | 11 ++++++ .../salaryacct/bo/SalaryCalcTaxRequest.java | 2 +- .../enums/employeedeclare/CardTypeEnum.java | 3 +- .../salary/util/valid/SalaryCardUtil.java | 39 ++++++++++++++++++- .../wrapper/EmployeeDeclareWrapper.java | 3 +- 5 files changed, 53 insertions(+), 5 deletions(-) diff --git a/src/com/engine/salary/entity/employeedeclare/bo/EmployeeDeclareRefresh.java b/src/com/engine/salary/entity/employeedeclare/bo/EmployeeDeclareRefresh.java index 484103c3a..72191b404 100644 --- a/src/com/engine/salary/entity/employeedeclare/bo/EmployeeDeclareRefresh.java +++ b/src/com/engine/salary/entity/employeedeclare/bo/EmployeeDeclareRefresh.java @@ -105,7 +105,18 @@ public class EmployeeDeclareRefresh { String idNum = hrmEmployeeComInfo.getIdNo() != null ? hrmEmployeeComInfo.getIdNo().toUpperCase() : ""; CardTypeEnum cardType = CardTypeEnum.RESIDENT_IDENTITY_CARDS; if (!SalaryCardUtil.checkIdNum(idNum)) { + //默认外国护照 cardType = CardTypeEnum.FOREIGN_PASSPORT; + + //港澳通行证 + if (SalaryCardUtil.checkHMPassportIdNum(idNum)) { + cardType = CardTypeEnum.HM_PASSPORT; + } + + //台湾通行证 + if (SalaryCardUtil.checkTPassportIdNum(idNum)) { + cardType = CardTypeEnum.T_PASSPORT; + } } EmployeeDeclarePO employeeDeclare = initEmployeeDeclare(dto.getTaxAgentId(), dto.getTaxCycle(), employeeId); employeeDeclare.setEmployeeId(hrmEmployeeComInfo.getEmployeeId()); diff --git a/src/com/engine/salary/entity/salaryacct/bo/SalaryCalcTaxRequest.java b/src/com/engine/salary/entity/salaryacct/bo/SalaryCalcTaxRequest.java index 69c78a14c..7e836152a 100644 --- a/src/com/engine/salary/entity/salaryacct/bo/SalaryCalcTaxRequest.java +++ b/src/com/engine/salary/entity/salaryacct/bo/SalaryCalcTaxRequest.java @@ -233,7 +233,7 @@ public class SalaryCalcTaxRequest { // 姓名 requestParam.put("xm", employeeDeclare.getEmployeeName()); // 证件类型 - requestParam.put("zzlx", CardTypeEnum.RESIDENT_IDENTITY_CARDS.getDefaultLabel()); + requestParam.put("zzlx", CardTypeEnum.getByValue(employeeDeclare.getCardType()).getDefaultLabel()); // 证件号码 requestParam.put("zzhm", employeeDeclare.getCardNum()); // 所得项目 diff --git a/src/com/engine/salary/enums/employeedeclare/CardTypeEnum.java b/src/com/engine/salary/enums/employeedeclare/CardTypeEnum.java index 6fb7bee15..095d3b155 100644 --- a/src/com/engine/salary/enums/employeedeclare/CardTypeEnum.java +++ b/src/com/engine/salary/enums/employeedeclare/CardTypeEnum.java @@ -17,7 +17,8 @@ public enum CardTypeEnum implements BaseEnum { RESIDENT_IDENTITY_CARDS(0, "居民身份证", 105564), FOREIGN_PASSPORT(1, "外国护照", 105564), - HM_PASSPORT(2, "港澳居民来往内地通行证", 105564); + HM_PASSPORT(2, "港澳居民来往内地通行证", 105564), + T_PASSPORT(3, "台湾居民来往大陆通行证", 105564); CardTypeEnum(int value, String defaultLabel, int labelId) { this.value = value; diff --git a/src/com/engine/salary/util/valid/SalaryCardUtil.java b/src/com/engine/salary/util/valid/SalaryCardUtil.java index d0dc2bf9e..fbd76bc2e 100644 --- a/src/com/engine/salary/util/valid/SalaryCardUtil.java +++ b/src/com/engine/salary/util/valid/SalaryCardUtil.java @@ -133,7 +133,6 @@ public class SalaryCardUtil { return validate18Idcard(idcard); } return false; - } /** @@ -471,4 +470,42 @@ public class SalaryCardUtil { } return a; } + + /** + * 验证港澳通行证 + * + * @param idcard + * 身份证 + * @return 合法返回true,否则返回false + */ + public static boolean checkHMPassportIdNum(String idcard) { + + if (idcard == null || "".equals(idcard)) { + return false; + } + + if (idcard.length() == 9) { + return true; + } + + return false; + } + + /** + * 验证台湾通行证 + * @param idcard + * @return + */ + public static boolean checkTPassportIdNum(String idcard) { + + if (idcard == null || "".equals(idcard)) { + return false; + } + + if (idcard.length() == 8) { + return true; + } + + return false; + } } diff --git a/src/com/engine/salary/wrapper/EmployeeDeclareWrapper.java b/src/com/engine/salary/wrapper/EmployeeDeclareWrapper.java index cdfe83d18..fca9ed934 100644 --- a/src/com/engine/salary/wrapper/EmployeeDeclareWrapper.java +++ b/src/com/engine/salary/wrapper/EmployeeDeclareWrapper.java @@ -98,9 +98,8 @@ public class EmployeeDeclareWrapper extends Service { taxAgents = taxAgents.stream().filter(e -> StringUtils.contains(e.getName(), queryParam.getTaxAgentName())).collect(Collectors.toList()); } // 分页 - List taxAgentPOS = SalaryPageUtil.subList(queryParam.getCurrent(), queryParam.getPageSize(), taxAgents); List dtoList = Lists.newArrayList(); - for (TaxAgentPO taxAgent : taxAgentPOS) { + for (TaxAgentPO taxAgent : taxAgents) { TaxAgentDeclareListDTO dto = new TaxAgentDeclareListDTO().setId(taxAgent.getId()).setTaxAgentName(taxAgent.getName()); dtoList.add(dto); } From 04fb5edaded1c5ec456c270477a5835a8a44b50b Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Wed, 20 Nov 2024 11:28:14 +0800 Subject: [PATCH 151/218] =?UTF-8?q?=E6=B5=AE=E5=8A=A8=E8=96=AA=E9=85=AC?= =?UTF-8?q?=E5=AD=97=E7=AC=A6=E3=80=81=E6=95=B0=E5=80=BC=E9=99=90=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salary/service/impl/VariableArchiveServiceImpl.java | 4 ++-- src/com/engine/salary/wrapper/VariableArchiveWrapper.java | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/com/engine/salary/service/impl/VariableArchiveServiceImpl.java b/src/com/engine/salary/service/impl/VariableArchiveServiceImpl.java index 82b727009..06218ebc9 100644 --- a/src/com/engine/salary/service/impl/VariableArchiveServiceImpl.java +++ b/src/com/engine/salary/service/impl/VariableArchiveServiceImpl.java @@ -20,6 +20,7 @@ import com.engine.salary.entity.salaryarchive.dto.SalaryArchiveInitImportDTO; import com.engine.salary.entity.taxagent.dto.TaxAgentManageRangeEmployeeDTO; import com.engine.salary.entity.taxagent.po.TaxAgentPO; import com.engine.salary.enums.datacollection.UseEmployeeTypeEnum; +import com.engine.salary.enums.salaryitem.SalaryDataTypeEnum; import com.engine.salary.exception.SalaryRunTimeException; import com.engine.salary.mapper.datacollection.VariableArchiveMapper; import com.engine.salary.service.*; @@ -272,8 +273,6 @@ public class VariableArchiveServiceImpl extends Service implements VariableArchi //动态列组装 List columns = VariableArchiveBO.buildVariableArchiveTable(variableItems); - columns.add(0, new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(85429, "薪资所属月"), "salaryMonth")); - Map datas = new HashMap<>(); datas.put("data", resultMap); datas.put("column", columns); @@ -287,6 +286,7 @@ public class VariableArchiveServiceImpl extends Service implements VariableArchi .map(po -> VariableItemListDTO.builder() .id(po.getId()) .name(po.getName()) + .dataType(SalaryDataTypeEnum.parseByValue(po.getDataType()).getValue()) .build()) .collect(Collectors.toList()); return variableItemDTOList; diff --git a/src/com/engine/salary/wrapper/VariableArchiveWrapper.java b/src/com/engine/salary/wrapper/VariableArchiveWrapper.java index 61f9dcc86..927fa299a 100644 --- a/src/com/engine/salary/wrapper/VariableArchiveWrapper.java +++ b/src/com/engine/salary/wrapper/VariableArchiveWrapper.java @@ -50,14 +50,14 @@ public class VariableArchiveWrapper extends Service { */ public Map list(VariableArchiveQueryParam queryParam) { - //薪资档案列表 + // 薪资档案列表 PageInfo pageInfo = getVariableArchiveService(user).listPage(queryParam); List salaryArchives = pageInfo.getList(); // 获取所有浮动薪酬项目 List variableItems = getVariableItemService(user).listAll(); - //整合所有的显示列(固定列+薪资项目动态列) + // 整合所有的显示列(固定列+薪资项目动态列) List> listMaps = getVariableArchiveService(user).buildVariableArchiveData(salaryArchives); PageInfo> pageInfos = new PageInfo>(listMaps); From de5a00f588410a31f31245a66126bc87dea8261d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Mon, 25 Nov 2024 16:04:19 +0800 Subject: [PATCH 152/218] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=BB=98=E8=AE=A4?= =?UTF-8?q?=E5=88=97=E8=AE=BE=E7=BD=AE=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resource/sqlupgrade/DM/sql202411250103.sql | 5 ++ resource/sqlupgrade/GS/sql202411250103.sql | 5 ++ resource/sqlupgrade/JC/sql202411250103.sql | 5 ++ resource/sqlupgrade/Mysql/sql202411250103.sql | 1 + .../sqlupgrade/Oracle/sql202411250103.sql | 4 ++ resource/sqlupgrade/PG/sql202411250103.sql | 1 + .../sqlupgrade/SQLServer/sql202411250103.sql | 2 + resource/sqlupgrade/ST/sql202411250103.sql | 5 ++ .../param/PageListSettingQueryParam.java | 2 + .../param/PageListSettingSaveParam.java | 8 ++- .../entity/setting/po/PageListSettingPO.java | 7 ++- .../mapper/setting/PageListSettingMapper.java | 2 +- .../mapper/setting/PageListSettingMapper.xml | 16 +++++ .../SalaryStatisticsEmployeeServiceImpl.java | 29 ++++++--- .../SalaryStatisticsEmployeeWrapper.java | 7 ++- .../engine/salary/service/SettingService.java | 3 +- .../service/impl/SettingServiceImpl.java | 60 +++++++++++++++---- .../salary/web/SalaryCommonController.java | 2 +- .../salary/wrapper/SalaryCommonWrapper.java | 3 +- 19 files changed, 136 insertions(+), 31 deletions(-) create mode 100644 resource/sqlupgrade/DM/sql202411250103.sql create mode 100644 resource/sqlupgrade/GS/sql202411250103.sql create mode 100644 resource/sqlupgrade/JC/sql202411250103.sql create mode 100644 resource/sqlupgrade/Mysql/sql202411250103.sql create mode 100644 resource/sqlupgrade/Oracle/sql202411250103.sql create mode 100644 resource/sqlupgrade/PG/sql202411250103.sql create mode 100644 resource/sqlupgrade/SQLServer/sql202411250103.sql create mode 100644 resource/sqlupgrade/ST/sql202411250103.sql diff --git a/resource/sqlupgrade/DM/sql202411250103.sql b/resource/sqlupgrade/DM/sql202411250103.sql new file mode 100644 index 000000000..9a56df46d --- /dev/null +++ b/resource/sqlupgrade/DM/sql202411250103.sql @@ -0,0 +1,5 @@ +ALTER TABLE hrsa_page_list_setting add ( + default_setting number +); +/ + diff --git a/resource/sqlupgrade/GS/sql202411250103.sql b/resource/sqlupgrade/GS/sql202411250103.sql new file mode 100644 index 000000000..9a56df46d --- /dev/null +++ b/resource/sqlupgrade/GS/sql202411250103.sql @@ -0,0 +1,5 @@ +ALTER TABLE hrsa_page_list_setting add ( + default_setting number +); +/ + diff --git a/resource/sqlupgrade/JC/sql202411250103.sql b/resource/sqlupgrade/JC/sql202411250103.sql new file mode 100644 index 000000000..9a56df46d --- /dev/null +++ b/resource/sqlupgrade/JC/sql202411250103.sql @@ -0,0 +1,5 @@ +ALTER TABLE hrsa_page_list_setting add ( + default_setting number +); +/ + diff --git a/resource/sqlupgrade/Mysql/sql202411250103.sql b/resource/sqlupgrade/Mysql/sql202411250103.sql new file mode 100644 index 000000000..0a79e673f --- /dev/null +++ b/resource/sqlupgrade/Mysql/sql202411250103.sql @@ -0,0 +1 @@ +ALTER TABLE hrsa_page_list_setting ADD COLUMN default_setting int; \ No newline at end of file diff --git a/resource/sqlupgrade/Oracle/sql202411250103.sql b/resource/sqlupgrade/Oracle/sql202411250103.sql new file mode 100644 index 000000000..81ccb980d --- /dev/null +++ b/resource/sqlupgrade/Oracle/sql202411250103.sql @@ -0,0 +1,4 @@ +ALTER TABLE hrsa_page_list_setting add ( + default_setting number +) +/ \ No newline at end of file diff --git a/resource/sqlupgrade/PG/sql202411250103.sql b/resource/sqlupgrade/PG/sql202411250103.sql new file mode 100644 index 000000000..def09e4e2 --- /dev/null +++ b/resource/sqlupgrade/PG/sql202411250103.sql @@ -0,0 +1 @@ +ALTER TABLE hrsa_page_list_setting ADD COLUMN default_setting int ; \ No newline at end of file diff --git a/resource/sqlupgrade/SQLServer/sql202411250103.sql b/resource/sqlupgrade/SQLServer/sql202411250103.sql new file mode 100644 index 000000000..017545023 --- /dev/null +++ b/resource/sqlupgrade/SQLServer/sql202411250103.sql @@ -0,0 +1,2 @@ +ALTER TABLE hrsa_page_list_setting ADD default_setting int NULL +GO \ No newline at end of file diff --git a/resource/sqlupgrade/ST/sql202411250103.sql b/resource/sqlupgrade/ST/sql202411250103.sql new file mode 100644 index 000000000..9a56df46d --- /dev/null +++ b/resource/sqlupgrade/ST/sql202411250103.sql @@ -0,0 +1,5 @@ +ALTER TABLE hrsa_page_list_setting add ( + default_setting number +); +/ + diff --git a/src/com/engine/salary/entity/setting/param/PageListSettingQueryParam.java b/src/com/engine/salary/entity/setting/param/PageListSettingQueryParam.java index 0de49c816..b00d55c5d 100644 --- a/src/com/engine/salary/entity/setting/param/PageListSettingQueryParam.java +++ b/src/com/engine/salary/entity/setting/param/PageListSettingQueryParam.java @@ -19,4 +19,6 @@ public class PageListSettingQueryParam { private String page; private String name; + + private Integer defaultSetting; } \ No newline at end of file diff --git a/src/com/engine/salary/entity/setting/param/PageListSettingSaveParam.java b/src/com/engine/salary/entity/setting/param/PageListSettingSaveParam.java index bd97950e7..e164d4889 100644 --- a/src/com/engine/salary/entity/setting/param/PageListSettingSaveParam.java +++ b/src/com/engine/salary/entity/setting/param/PageListSettingSaveParam.java @@ -17,6 +17,12 @@ import java.util.List; @AllArgsConstructor public class PageListSettingSaveParam { + /** + * 默认设置 + */ + @DataCheck(require = true,message = "是否为默认设置") + private Integer defaultSetting; + /** * 页面,0:薪资明细 */ @@ -27,5 +33,5 @@ public class PageListSettingSaveParam { * 设置 */ @DataCheck(require = true,message = "请选择设置") - private List setting; + private List setting; } \ No newline at end of file diff --git a/src/com/engine/salary/entity/setting/po/PageListSettingPO.java b/src/com/engine/salary/entity/setting/po/PageListSettingPO.java index c27bec6a3..5d706166a 100644 --- a/src/com/engine/salary/entity/setting/po/PageListSettingPO.java +++ b/src/com/engine/salary/entity/setting/po/PageListSettingPO.java @@ -30,7 +30,12 @@ public class PageListSettingPO { * 设置 */ @ElogTransform(name = "设置") - private List setting; + private List setting; + + /** + * 默认设置 + */ + private Integer defaultSetting; /** diff --git a/src/com/engine/salary/mapper/setting/PageListSettingMapper.java b/src/com/engine/salary/mapper/setting/PageListSettingMapper.java index d45faa161..ef466c2a7 100644 --- a/src/com/engine/salary/mapper/setting/PageListSettingMapper.java +++ b/src/com/engine/salary/mapper/setting/PageListSettingMapper.java @@ -70,7 +70,7 @@ public interface PageListSettingMapper { void deleteByIds(@Param("ids") Collection ids); //获取页面默认配置 - PageListSettingPO getByPage(String page); + PageListSettingPO getByPage(@Param("page") String page, @Param("defaultSetting") Integer defaultSetting); //获取页面配置模板 List getTemplatesByPage(String page); diff --git a/src/com/engine/salary/mapper/setting/PageListSettingMapper.xml b/src/com/engine/salary/mapper/setting/PageListSettingMapper.xml index f52abe207..d2234f231 100644 --- a/src/com/engine/salary/mapper/setting/PageListSettingMapper.xml +++ b/src/com/engine/salary/mapper/setting/PageListSettingMapper.xml @@ -10,6 +10,7 @@ + @@ -24,6 +25,7 @@ , t.setting , t.tenant_key , t.update_time + , t.default_setting @@ -70,6 +72,9 @@ AND update_time = #{updateTime} + + AND default_setting = #{defaultSetting} + AND id IN @@ -109,6 +114,9 @@ update_time, + + default_setting, + @@ -135,6 +143,9 @@ #{updateTime}, + + #{defaultSetting}, + @@ -150,6 +161,7 @@ setting=#{setting, jdbcType=ARRAY, typeHandler=com.engine.salary.handle.SalaryListTypeHandler}, tenant_key=#{tenantKey}, update_time=#{updateTime}, + default_setting=#{defaultSetting}, WHERE id = #{id} AND delete_type = 0 @@ -180,6 +192,9 @@ update_time=#{updateTime}, + + default_setting=#{defaultSetting}, + WHERE id = #{id} AND delete_type = 0 @@ -209,6 +224,7 @@ FROM hrsa_page_list_setting t WHERE delete_type = 0 and page = #{page} + and default_setting = #{defaultSetting} - 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 c3b71201a41799331b1e8f23da5ab003d8d17c19 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Tue, 3 Dec 2024 16:39:02 +0800 Subject: [PATCH 160/218] =?UTF-8?q?=E7=BB=84=E7=BB=87=E5=BF=AB=E7=85=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salary/entity/hrm/po/HrmSnapshotPO.java | 428 +++++ .../salary/mapper/hrm/HrmSnapshotMapper.java | 90 + .../salary/mapper/hrm/HrmSnapshotMapper.xml | 1616 +++++++++++++++++ .../engine/salary/timer/HrmSnapshotJob.java | 51 + 4 files changed, 2185 insertions(+) create mode 100644 src/com/engine/salary/entity/hrm/po/HrmSnapshotPO.java create mode 100644 src/com/engine/salary/mapper/hrm/HrmSnapshotMapper.java create mode 100644 src/com/engine/salary/mapper/hrm/HrmSnapshotMapper.xml create mode 100644 src/com/engine/salary/timer/HrmSnapshotJob.java diff --git a/src/com/engine/salary/entity/hrm/po/HrmSnapshotPO.java b/src/com/engine/salary/entity/hrm/po/HrmSnapshotPO.java new file mode 100644 index 000000000..2dc410de5 --- /dev/null +++ b/src/com/engine/salary/entity/hrm/po/HrmSnapshotPO.java @@ -0,0 +1,428 @@ +package com.engine.salary.entity.hrm.po; + +import com.engine.hrmelog.annotation.ElogTransform; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.math.BigDecimal; +import java.util.Collection; +import java.util.Date; + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class HrmSnapshotPO { + + @ElogTransform(name = "id") + private Long id; + + /** + * 快照时间 + */ + @ElogTransform(name = "快照时间") + private Date snapshotTime; + + + /** + * 人员id + */ + @ElogTransform(name = "人员id") + private Long employeeId; + + /** + * 姓名 + */ + @ElogTransform(name = "姓名") + private String lastname; + + + /** + * 工资帐号1 + */ + @ElogTransform(name = "工资帐号1") + private String accountid1; + + /** + * 工资账号户名 + */ + @ElogTransform(name = "工资账号户名") + private String accountname; + + /** + * 帐号类型 + */ + @ElogTransform(name = "帐号类型") + private Integer accounttype; + + /** + * 公积金帐号 + */ + @ElogTransform(name = "公积金帐号") + private String accumfundaccount; + + /** + * 助理 + */ + @ElogTransform(name = "助理") + private Integer assistantid; + + /** + * 工资银行1 + */ + @ElogTransform(name = "工资银行1") + private Integer bankid1; + + /** + * 所属主帐号 + */ + @ElogTransform(name = "所属主帐号") + private Integer belongto; + + /** + * 入团时间 + */ + @ElogTransform(name = "入团时间") + private String bememberdate; + + /** + * 入党时间 + */ + @ElogTransform(name = "入党时间") + private String bepartydate; + + /** + * 生日 + */ + @ElogTransform(name = "生日") + private String birthday; + + /** + * 出生地 + */ + @ElogTransform(name = "出生地") + private String birthplace; + + /** + * 身份证号码 + */ + @ElogTransform(name = "身份证号码") + private String certificatenum; + + /** + * 公司开始日期 + */ + @ElogTransform(name = "公司开始日期") + private String companystartdate; + + /** + * 公司年限 + */ + @ElogTransform(name = "公司年限") + private BigDecimal companyworkyear; + + /** + * 所属成本中心 + */ + @ElogTransform(name = "所属成本中心") + private Integer costcenterid; + + /** + * 国家id + */ + @ElogTransform(name = "国家id") + private Integer countryid; + + /** + * 学位 + */ + @ElogTransform(name = "学位") + private String degree; + + /** + * 所属部门 + */ + @ElogTransform(name = "所属部门") + private Integer departmentid; + + /** + * 部门名称 + */ + @ElogTransform(name = "部门名称") + private String departmentname; + + /** + * 学历 + */ + @ElogTransform(name = "学历") + private Integer educationlevel; + + /** + * 电子邮件 + */ + @ElogTransform(name = "电子邮件") + private String email; + + + /** + * 合同结束日期 + */ + @ElogTransform(name = "合同结束日期") + private String enddate; + + /** + * 分机 + */ + @ElogTransform(name = "分机") + private String extphone; + + /** + * 传真 + */ + @ElogTransform(name = "传真") + private String fax; + + /** + * 民族 + */ + @ElogTransform(name = "民族") + private String folk; + + /** + * 健康状况 + */ + @ElogTransform(name = "健康状况") + private String healthinfo; + + /** + * 家庭住址 + */ + @ElogTransform(name = "家庭住址") + private String homeaddress; + + + /** + * 是否为工会会员 + */ + @ElogTransform(name = "是否为工会会员") + private String islabouunion; + + /** + * 职责描述 + */ + @ElogTransform(name = "职责描述") + private String jobactivitydesc; + + /** + * 职称 + */ + @ElogTransform(name = "职称") + private Integer jobcall; + + /** + * 工作级别 + */ + @ElogTransform(name = "工作级别") + private Integer joblevel; + + /** + * 岗位 + */ + @ElogTransform(name = "岗位") + private Integer jobtitle; + + /** + * 岗位名称 + */ + @ElogTransform(name = "岗位名称") + private String jobtitlename; + + /** + * 最后登陆日期 + */ + @ElogTransform(name = "最后登陆日期") + private String lastlogindate; + + /** + * 工作地点 + */ + @ElogTransform(name = "工作地点") + private Integer locationid; + + /** + * 系统登陆帐号 + */ + @ElogTransform(name = "系统登陆帐号") + private String loginid; + + /** + * 经理 + */ + @ElogTransform(name = "经理") + private Integer managerid; + + /** + * 所有上级 + */ + @ElogTransform(name = "所有上级") + private String managerstr; + + /** + * 婚姻状况 + */ + @ElogTransform(name = "婚姻状况") + private String maritalstatus; + + /** + * 手机 + */ + @ElogTransform(name = "手机") + private String mobile; + + /** + * 其他电话 + */ + @ElogTransform(name = "其他电话") + private String mobilecall; + + /** + * 国籍 + */ + @ElogTransform(name = "国籍") + private Integer nationality; + + /** + * 籍贯 + */ + @ElogTransform(name = "籍贯") + private String nativeplace; + + /** + * 政治面貌 + */ + @ElogTransform(name = "政治面貌") + private String policy; + + /** + * 试用期结束日期 + */ + @ElogTransform(name = "试用期结束日期") + private String probationenddate; + + /** + * 户口 + */ + @ElogTransform(name = "户口") + private String regresidentplace; + + /** + * 居住地电话 + */ + @ElogTransform(name = "居住地电话") + private String residentphone; + + /** + * 居住地 + */ + @ElogTransform(name = "居住地") + private String residentplace; + + /** + * 居住地邮编 + */ + @ElogTransform(name = "居住地邮编") + private String residentpostcode; + + /** + * 用户类别 + */ + @ElogTransform(name = "用户类别") + private String resourcetype; + + /** + * 安全级别 + */ + @ElogTransform(name = "安全级别") + private Integer seclevel; + + /** + * 性别 + */ + @ElogTransform(name = "性别") + private String sex; + + + + /** + * 合同开始日期 + */ + @ElogTransform(name = "合同开始日期") + private String startdate; + + /** + * 0:试用
1:正式
2:临时
3:试用延期
4:解聘
5:离职
6:退休
7:无效 + */ + @ElogTransform(name = " 0:试用
1:正式
2:临时
3:试用延期
4:解聘
5:离职
6:退休
7:无效") + private Integer status; + + /** + * 所属分部1 + */ + @ElogTransform(name = "所属分部1") + private Integer subcompanyid1; + + /** + * 分部名称 + */ + @ElogTransform(name = "分部名称") + private String subcompanyname; + + /** + * 电话 + */ + @ElogTransform(name = "电话") + private String telephone; + + /** + * 暂住证号码 + */ + @ElogTransform(name = "暂住证号码") + private String tempresidentnumber; + + /** + * 用工性质 + */ + @ElogTransform(name = "用工性质") + private Integer usekind; + + /** + * 编号 + */ + @ElogTransform(name = "编号") + private String workcode; + + /** + * 办公室 + */ + @ElogTransform(name = "办公室") + private String workroom; + + /** + * 工作开始日期 + */ + @ElogTransform(name = "工作开始日期") + private String workstartdate; + + /** + * 工作年限 + */ + @ElogTransform(name = "工作年限") + private BigDecimal workyear; + + + //主键id集合 + private Collection ids; + +} \ No newline at end of file diff --git a/src/com/engine/salary/mapper/hrm/HrmSnapshotMapper.java b/src/com/engine/salary/mapper/hrm/HrmSnapshotMapper.java new file mode 100644 index 000000000..077e96d70 --- /dev/null +++ b/src/com/engine/salary/mapper/hrm/HrmSnapshotMapper.java @@ -0,0 +1,90 @@ +package com.engine.salary.mapper.hrm; + +import com.engine.salary.entity.hrm.po.HrmSnapshotPO; +import org.apache.ibatis.annotations.Param; + +import java.util.Collection; +import java.util.Date; +import java.util.List; + +public interface HrmSnapshotMapper { + + /** + * 查询所有记录 + * + * @return 返回集合,没有返回空List + */ + List listAll(); + + /** + * 条件查询 + * + * @return 返回集合,没有返回空List + */ + List listSome(HrmSnapshotPO hrmSnapshot); + + + /** + * 根据主键查询 + * + * @param id 主键 + * @return 返回记录,没有返回null + */ + HrmSnapshotPO getById(Long id); + + /** + * 新增,忽略null字段 + * + * @param hrmSnapshot 新增的记录 + * @return 返回影响行数 + */ + int insertIgnoreNull(HrmSnapshotPO hrmSnapshot); + + /** + * 批量插入 + * + * @param hrmSnapshot + */ + void batchInsert(@Param("collection") List hrmSnapshot); + + /** + * 修改,修改所有字段 + * + * @param hrmSnapshot 修改的记录 + * @return 返回影响行数 + */ + int update(HrmSnapshotPO hrmSnapshot); + + /** + * 修改,忽略null字段 + * + * @param hrmSnapshot 修改的记录 + * @return 返回影响行数 + */ + int updateIgnoreNull(HrmSnapshotPO hrmSnapshot); + + /** + * 删除记录 + * + * @param hrmSnapshot 待删除的记录 + * @return 返回影响行数 + */ + int delete(HrmSnapshotPO hrmSnapshot); + + /** + * 批量删除记录 + * + * @param ids 主键id集合 + */ + void deleteByIds(@Param("ids") Collection ids); + + void deleteBySnapshotTime(Date snapshotTime); + + /** + * 查询所有记录 + * + * @return 返回集合,没有返回空List + */ + List currentEmpData(); + +} \ No newline at end of file diff --git a/src/com/engine/salary/mapper/hrm/HrmSnapshotMapper.xml b/src/com/engine/salary/mapper/hrm/HrmSnapshotMapper.xml new file mode 100644 index 000000000..4ceb64c7a --- /dev/null +++ b/src/com/engine/salary/mapper/hrm/HrmSnapshotMapper.xml @@ -0,0 +1,1616 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + t + . + ACCOUNTID1 + , t.ACCOUNTNAME + , t.ACCOUNTTYPE + , t.ACCUMFUNDACCOUNT + , t.ASSISTANTID + , t.BANKID1 + , t.BELONGTO + , t.BEMEMBERDATE + , t.BEPARTYDATE + , t.BIRTHDAY + , t.BIRTHPLACE + , t.CERTIFICATENUM + , t.companystartdate + , t.companyworkyear + , t.COSTCENTERID + , t.COUNTRYID + , t.DEGREE + , t.DEPARTMENTID + , t.DEPARTMENTNAME + , t.EDUCATIONLEVEL + , t.EMAIL + , t.employee_id + , t.ENDDATE + , t.EXTPHONE + , t.FAX + , t.FOLK + , t.HEALTHINFO + , t.HOMEADDRESS + , t.ID + , t.ISLABOUUNION + , t.JOBACTIVITYDESC + , t.JOBCALL + , t.JOBLEVEL + , t.JOBTITLE + , t.JOBTITLENAME + , t.LASTLOGINDATE + , t.LASTNAME + , t.LOCATIONID + , t.loginid + , t.MANAGERID + , t.MANAGERSTR + , t.MARITALSTATUS + , t.MOBILE + , t.MOBILECALL + , t.NATIONALITY + , t.NATIVEPLACE + , t.POLICY + , t.PROBATIONENDDATE + , t.REGRESIDENTPLACE + , t.RESIDENTPHONE + , t.RESIDENTPLACE + , t.RESIDENTPOSTCODE + , t.RESOURCETYPE + , t.SECLEVEL + , t.SEX + , t.snapshot_time + , t.STARTDATE + , t.STATUS + , t.SUBCOMPANYID1 + , t.SUBCOMPANYNAME + , t.TELEPHONE + , t.TEMPRESIDENTNUMBER + , t.USEKIND + , t.WORKCODE + , t.WORKROOM + , t.workstartdate + , t.workyear + + + + + + + + + + + + + + + INSERT INTO hrsa_hrm_snapshot + + + + ACCOUNTID1, + + + ACCOUNTNAME, + + + ACCOUNTTYPE, + + + ACCUMFUNDACCOUNT, + + + ASSISTANTID, + + + BANKID1, + + + BELONGTO, + + + BEMEMBERDATE, + + + BEPARTYDATE, + + + BIRTHDAY, + + + BIRTHPLACE, + + + CERTIFICATENUM, + + + companystartdate, + + + companyworkyear, + + + COSTCENTERID, + + + COUNTRYID, + + + DEGREE, + + + DEPARTMENTID, + + + DEPARTMENTNAME, + + + EDUCATIONLEVEL, + + + EMAIL, + + + employee_id, + + + ENDDATE, + + + EXTPHONE, + + + FAX, + + + FOLK, + + + HEALTHINFO, + + + HOMEADDRESS, + + + ID, + + + ISLABOUUNION, + + + JOBACTIVITYDESC, + + + JOBCALL, + + + JOBLEVEL, + + + JOBTITLE, + + + JOBTITLENAME, + + + LASTLOGINDATE, + + + LASTNAME, + + + LOCATIONID, + + + loginid, + + + MANAGERID, + + + MANAGERSTR, + + + MARITALSTATUS, + + + MOBILE, + + + MOBILECALL, + + + NATIONALITY, + + + NATIVEPLACE, + + + POLICY, + + + PROBATIONENDDATE, + + + REGRESIDENTPLACE, + + + RESIDENTPHONE, + + + RESIDENTPLACE, + + + RESIDENTPOSTCODE, + + + RESOURCETYPE, + + + SECLEVEL, + + + SEX, + + + snapshot_time, + + + STARTDATE, + + + STATUS, + + + SUBCOMPANYID1, + + + SUBCOMPANYNAME, + + + TELEPHONE, + + + TEMPRESIDENTNUMBER, + + + USEKIND, + + + WORKCODE, + + + WORKROOM, + + + workstartdate, + + + workyear, + + + + + #{accountid1}, + + + #{accountname}, + + + #{accounttype}, + + + #{accumfundaccount}, + + + #{assistantid}, + + + #{bankid1}, + + + #{belongto}, + + + #{bememberdate}, + + + #{bepartydate}, + + + #{birthday}, + + + #{birthplace}, + + + #{certificatenum}, + + + #{companystartdate}, + + + #{companyworkyear}, + + + #{costcenterid}, + + + #{countryid}, + + + #{degree}, + + + #{departmentid}, + + + #{departmentname}, + + + #{educationlevel}, + + + #{email}, + + + #{employeeId}, + + + #{enddate}, + + + #{extphone}, + + + #{fax}, + + + #{folk}, + + + #{healthinfo}, + + + #{homeaddress}, + + + #{id}, + + + #{islabouunion}, + + + #{jobactivitydesc}, + + + #{jobcall}, + + + #{joblevel}, + + + #{jobtitle}, + + + #{jobtitlename}, + + + #{lastlogindate}, + + + #{lastname}, + + + #{locationid}, + + + #{loginid}, + + + #{managerid}, + + + #{managerstr}, + + + #{maritalstatus}, + + + #{mobile}, + + + #{mobilecall}, + + + #{nationality}, + + + #{nativeplace}, + + + #{policy}, + + + #{probationenddate}, + + + #{regresidentplace}, + + + #{residentphone}, + + + #{residentplace}, + + + #{residentpostcode}, + + + #{resourcetype}, + + + #{seclevel}, + + + #{sex}, + + + #{snapshotTime}, + + + #{startdate}, + + + #{status}, + + + #{subcompanyid1}, + + + #{subcompanyname}, + + + #{telephone}, + + + #{tempresidentnumber}, + + + #{usekind}, + + + #{workcode}, + + + #{workroom}, + + + #{workstartdate}, + + + #{workyear}, + + + + + + + + INSERT INTO hrsa_hrm_snapshot + ( + ACCOUNTID1, + ACCOUNTNAME, + ACCOUNTTYPE, + ACCUMFUNDACCOUNT, + ASSISTANTID, + BANKID1, + BELONGTO, + BEMEMBERDATE, + BEPARTYDATE, + BIRTHDAY, + BIRTHPLACE, + CERTIFICATENUM, + companystartdate, + companyworkyear, + COSTCENTERID, + COUNTRYID, + DEGREE, + DEPARTMENTID, + DEPARTMENTNAME, + EDUCATIONLEVEL, + EMAIL, + employee_id, + ENDDATE, + EXTPHONE, + FAX, + FOLK, + HEALTHINFO, + HOMEADDRESS, + ID, + ISLABOUUNION, + JOBACTIVITYDESC, + JOBCALL, + JOBLEVEL, + JOBTITLE, + JOBTITLENAME, + LASTLOGINDATE, + LASTNAME, + LOCATIONID, + loginid, + MANAGERID, + MANAGERSTR, + MARITALSTATUS, + MOBILE, + MOBILECALL, + NATIONALITY, + NATIVEPLACE, + POLICY, + PROBATIONENDDATE, + REGRESIDENTPLACE, + RESIDENTPHONE, + RESIDENTPLACE, + RESIDENTPOSTCODE, + RESOURCETYPE, + SECLEVEL, + SEX, + snapshot_time, + STARTDATE, + STATUS, + SUBCOMPANYID1, + SUBCOMPANYNAME, + TELEPHONE, + TEMPRESIDENTNUMBER, + USEKIND, + WORKCODE, + WORKROOM, + workstartdate, + workyear, + ) + VALUES + + + ( + #{item.accountid1}, + #{item.accountname}, + #{item.accounttype}, + #{item.accumfundaccount}, + #{item.assistantid}, + #{item.bankid1}, + #{item.belongto}, + #{item.bememberdate}, + #{item.bepartydate}, + #{item.birthday}, + #{item.birthplace}, + #{item.certificatenum}, + #{item.companystartdate}, + #{item.companyworkyear}, + #{item.costcenterid}, + #{item.countryid}, + #{item.degree}, + #{item.departmentid}, + #{item.departmentname}, + #{item.educationlevel}, + #{item.email}, + #{item.employeeId}, + #{item.enddate}, + #{item.extphone}, + #{item.fax}, + #{item.folk}, + #{item.healthinfo}, + #{item.homeaddress}, + #{item.id}, + #{item.islabouunion}, + #{item.jobactivitydesc}, + #{item.jobcall}, + #{item.joblevel}, + #{item.jobtitle}, + #{item.jobtitlename}, + #{item.lastlogindate}, + #{item.lastname}, + #{item.locationid}, + #{item.loginid}, + #{item.managerid}, + #{item.managerstr}, + #{item.maritalstatus}, + #{item.mobile}, + #{item.mobilecall}, + #{item.nationality}, + #{item.nativeplace}, + #{item.policy}, + #{item.probationenddate}, + #{item.regresidentplace}, + #{item.residentphone}, + #{item.residentplace}, + #{item.residentpostcode}, + #{item.resourcetype}, + #{item.seclevel}, + #{item.sex}, + #{item.snapshotTime}, + #{item.startdate}, + #{item.status}, + #{item.subcompanyid1}, + #{item.subcompanyname}, + #{item.telephone}, + #{item.tempresidentnumber}, + #{item.usekind}, + #{item.workcode}, + #{item.workroom}, + #{item.workstartdate}, + #{item.workyear}, + ) + + + + + + + INSERT INTO hrsa_hrm_snapshot ( + ACCOUNTID1, + ACCOUNTNAME, + ACCOUNTTYPE, + ACCUMFUNDACCOUNT, + ASSISTANTID, + BANKID1, + BELONGTO, + BEMEMBERDATE, + BEPARTYDATE, + BIRTHDAY, + BIRTHPLACE, + CERTIFICATENUM, + companystartdate, + companyworkyear, + COSTCENTERID, + COUNTRYID, + DEGREE, + DEPARTMENTID, + DEPARTMENTNAME, + EDUCATIONLEVEL, + EMAIL, + employee_id, + ENDDATE, + EXTPHONE, + FAX, + FOLK, + HEALTHINFO, + HOMEADDRESS, + ID, + ISLABOUUNION, + JOBACTIVITYDESC, + JOBCALL, + JOBLEVEL, + JOBTITLE, + JOBTITLENAME, + LASTLOGINDATE, + LASTNAME, + LOCATIONID, + loginid, + MANAGERID, + MANAGERSTR, + MARITALSTATUS, + MOBILE, + MOBILECALL, + NATIONALITY, + NATIVEPLACE, + POLICY, + PROBATIONENDDATE, + REGRESIDENTPLACE, + RESIDENTPHONE, + RESIDENTPLACE, + RESIDENTPOSTCODE, + RESOURCETYPE, + SECLEVEL, + SEX, + snapshot_time, + STARTDATE, + STATUS, + SUBCOMPANYID1, + SUBCOMPANYNAME, + TELEPHONE, + TEMPRESIDENTNUMBER, + USEKIND, + WORKCODE, + WORKROOM, + workstartdate, + workyear, + ) + + + select + #{item.accountid1,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, + #{item.accountname,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, + #{item.accounttype,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, + #{item.accumfundaccount,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, + #{item.assistantid,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, + #{item.bankid1,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, + #{item.belongto,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, + #{item.bememberdate,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, + #{item.bepartydate,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, + #{item.birthday,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, + #{item.birthplace,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, + #{item.certificatenum,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, + #{item.companystartdate,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, + #{item.companyworkyear,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, + #{item.costcenterid,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, + #{item.countryid,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, + #{item.degree,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, + #{item.departmentid,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, + #{item.departmentname,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, + #{item.educationlevel,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, + #{item.email,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, + #{item.employeeId,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, + #{item.enddate,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, + #{item.extphone,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, + #{item.fax,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, + #{item.folk,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, + #{item.healthinfo,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, + #{item.homeaddress,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, + #{item.id,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, + #{item.islabouunion,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, + #{item.jobactivitydesc,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, + #{item.jobcall,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, + #{item.joblevel,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, + #{item.jobtitle,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, + #{item.jobtitlename,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, + #{item.lastlogindate,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, + #{item.lastname,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, + #{item.locationid,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, + #{item.loginid,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, + #{item.managerid,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, + #{item.managerstr,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, + #{item.maritalstatus,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, + #{item.mobile,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, + #{item.mobilecall,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, + #{item.nationality,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, + #{item.nativeplace,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, + #{item.policy,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, + #{item.probationenddate,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, + #{item.regresidentplace,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, + #{item.residentphone,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, + #{item.residentplace,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, + #{item.residentpostcode,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, + #{item.resourcetype,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, + #{item.seclevel,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, + #{item.sex,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, + #{item.snapshotTime,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, + #{item.startdate,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, + #{item.status,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, + #{item.subcompanyid1,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, + #{item.subcompanyname,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, + #{item.telephone,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, + #{item.tempresidentnumber,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, + #{item.usekind,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, + #{item.workcode,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, + #{item.workroom,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, + #{item.workstartdate,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, + #{item.workyear,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, + from dual + + + + + + + INSERT INTO hrsa_hrm_snapshot ( + ACCOUNTID1, + ACCOUNTNAME, + ACCOUNTTYPE, + ACCUMFUNDACCOUNT, + ASSISTANTID, + BANKID1, + BELONGTO, + BEMEMBERDATE, + BEPARTYDATE, + BIRTHDAY, + BIRTHPLACE, + CERTIFICATENUM, + companystartdate, + companyworkyear, + COSTCENTERID, + COUNTRYID, + DEGREE, + DEPARTMENTID, + DEPARTMENTNAME, + EDUCATIONLEVEL, + EMAIL, + employee_id, + ENDDATE, + EXTPHONE, + FAX, + FOLK, + HEALTHINFO, + HOMEADDRESS, + ID, + ISLABOUUNION, + JOBACTIVITYDESC, + JOBCALL, + JOBLEVEL, + JOBTITLE, + JOBTITLENAME, + LASTLOGINDATE, + LASTNAME, + LOCATIONID, + loginid, + MANAGERID, + MANAGERSTR, + MARITALSTATUS, + MOBILE, + MOBILECALL, + NATIONALITY, + NATIVEPLACE, + POLICY, + PROBATIONENDDATE, + REGRESIDENTPLACE, + RESIDENTPHONE, + RESIDENTPLACE, + RESIDENTPOSTCODE, + RESOURCETYPE, + SECLEVEL, + SEX, + snapshot_time, + STARTDATE, + STATUS, + SUBCOMPANYID1, + SUBCOMPANYNAME, + TELEPHONE, + TEMPRESIDENTNUMBER, + USEKIND, + WORKCODE, + WORKROOM, + workstartdate, + workyear, + ) + VALUES + ( + #{item.accountid1}, + #{item.accountname}, + #{item.accounttype}, + #{item.accumfundaccount}, + #{item.assistantid}, + #{item.bankid1}, + #{item.belongto}, + #{item.bememberdate}, + #{item.bepartydate}, + #{item.birthday}, + #{item.birthplace}, + #{item.certificatenum}, + #{item.companystartdate}, + #{item.companyworkyear}, + #{item.costcenterid}, + #{item.countryid}, + #{item.degree}, + #{item.departmentid}, + #{item.departmentname}, + #{item.educationlevel}, + #{item.email}, + #{item.employeeId}, + #{item.enddate}, + #{item.extphone}, + #{item.fax}, + #{item.folk}, + #{item.healthinfo}, + #{item.homeaddress}, + #{item.id}, + #{item.islabouunion}, + #{item.jobactivitydesc}, + #{item.jobcall}, + #{item.joblevel}, + #{item.jobtitle}, + #{item.jobtitlename}, + #{item.lastlogindate}, + #{item.lastname}, + #{item.locationid}, + #{item.loginid}, + #{item.managerid}, + #{item.managerstr}, + #{item.maritalstatus}, + #{item.mobile}, + #{item.mobilecall}, + #{item.nationality}, + #{item.nativeplace}, + #{item.policy}, + #{item.probationenddate}, + #{item.regresidentplace}, + #{item.residentphone}, + #{item.residentplace}, + #{item.residentpostcode}, + #{item.resourcetype}, + #{item.seclevel}, + #{item.sex}, + #{item.snapshotTime}, + #{item.startdate}, + #{item.status}, + #{item.subcompanyid1}, + #{item.subcompanyname}, + #{item.telephone}, + #{item.tempresidentnumber}, + #{item.usekind}, + #{item.workcode}, + #{item.workroom}, + #{item.workstartdate}, + #{item.workyear}, + ) + + + + + + UPDATE hrsa_hrm_snapshot + + ACCOUNTID1=#{accountid1}, + ACCOUNTNAME=#{accountname}, + ACCOUNTTYPE=#{accounttype}, + ACCUMFUNDACCOUNT=#{accumfundaccount}, + ASSISTANTID=#{assistantid}, + BANKID1=#{bankid1}, + BELONGTO=#{belongto}, + BEMEMBERDATE=#{bememberdate}, + BEPARTYDATE=#{bepartydate}, + BIRTHDAY=#{birthday}, + BIRTHPLACE=#{birthplace}, + CERTIFICATENUM=#{certificatenum}, + companystartdate=#{companystartdate}, + companyworkyear=#{companyworkyear}, + COSTCENTERID=#{costcenterid}, + COUNTRYID=#{countryid}, + DEGREE=#{degree}, + DEPARTMENTID=#{departmentid}, + DEPARTMENTNAME=#{departmentname}, + EDUCATIONLEVEL=#{educationlevel}, + EMAIL=#{email}, + employee_id=#{employeeId}, + ENDDATE=#{enddate}, + EXTPHONE=#{extphone}, + FAX=#{fax}, + FOLK=#{folk}, + HEALTHINFO=#{healthinfo}, + HOMEADDRESS=#{homeaddress}, + ISLABOUUNION=#{islabouunion}, + JOBACTIVITYDESC=#{jobactivitydesc}, + JOBCALL=#{jobcall}, + JOBLEVEL=#{joblevel}, + JOBTITLE=#{jobtitle}, + JOBTITLENAME=#{jobtitlename}, + LASTLOGINDATE=#{lastlogindate}, + LASTNAME=#{lastname}, + LOCATIONID=#{locationid}, + loginid=#{loginid}, + MANAGERID=#{managerid}, + MANAGERSTR=#{managerstr}, + MARITALSTATUS=#{maritalstatus}, + MOBILE=#{mobile}, + MOBILECALL=#{mobilecall}, + NATIONALITY=#{nationality}, + NATIVEPLACE=#{nativeplace}, + POLICY=#{policy}, + PROBATIONENDDATE=#{probationenddate}, + REGRESIDENTPLACE=#{regresidentplace}, + RESIDENTPHONE=#{residentphone}, + RESIDENTPLACE=#{residentplace}, + RESIDENTPOSTCODE=#{residentpostcode}, + RESOURCETYPE=#{resourcetype}, + SECLEVEL=#{seclevel}, + SEX=#{sex}, + snapshot_time=#{snapshotTime}, + STARTDATE=#{startdate}, + STATUS=#{status}, + SUBCOMPANYID1=#{subcompanyid1}, + SUBCOMPANYNAME=#{subcompanyname}, + TELEPHONE=#{telephone}, + TEMPRESIDENTNUMBER=#{tempresidentnumber}, + USEKIND=#{usekind}, + WORKCODE=#{workcode}, + WORKROOM=#{workroom}, + workstartdate=#{workstartdate}, + workyear=#{workyear}, + + WHERE ID = #{id} AND delete_type = 0 + + + + + + UPDATE hrsa_hrm_snapshot + + + ACCOUNTID1=#{accountid1}, + + + ACCOUNTNAME=#{accountname}, + + + ACCOUNTTYPE=#{accounttype}, + + + ACCUMFUNDACCOUNT=#{accumfundaccount}, + + + ASSISTANTID=#{assistantid}, + + + BANKID1=#{bankid1}, + + + BELONGTO=#{belongto}, + + + BEMEMBERDATE=#{bememberdate}, + + + BEPARTYDATE=#{bepartydate}, + + + BIRTHDAY=#{birthday}, + + + BIRTHPLACE=#{birthplace}, + + + CERTIFICATENUM=#{certificatenum}, + + + companystartdate=#{companystartdate}, + + + companyworkyear=#{companyworkyear}, + + + COSTCENTERID=#{costcenterid}, + + + COUNTRYID=#{countryid}, + + + DEGREE=#{degree}, + + + DEPARTMENTID=#{departmentid}, + + + DEPARTMENTNAME=#{departmentname}, + + + EDUCATIONLEVEL=#{educationlevel}, + + + EMAIL=#{email}, + + + employee_id=#{employeeId}, + + + ENDDATE=#{enddate}, + + + EXTPHONE=#{extphone}, + + + FAX=#{fax}, + + + FOLK=#{folk}, + + + HEALTHINFO=#{healthinfo}, + + + HOMEADDRESS=#{homeaddress}, + + + ISLABOUUNION=#{islabouunion}, + + + JOBACTIVITYDESC=#{jobactivitydesc}, + + + JOBCALL=#{jobcall}, + + + JOBLEVEL=#{joblevel}, + + + JOBTITLE=#{jobtitle}, + + + JOBTITLENAME=#{jobtitlename}, + + + LASTLOGINDATE=#{lastlogindate}, + + + LASTNAME=#{lastname}, + + + LOCATIONID=#{locationid}, + + + loginid=#{loginid}, + + + MANAGERID=#{managerid}, + + + MANAGERSTR=#{managerstr}, + + + MARITALSTATUS=#{maritalstatus}, + + + MOBILE=#{mobile}, + + + MOBILECALL=#{mobilecall}, + + + NATIONALITY=#{nationality}, + + + NATIVEPLACE=#{nativeplace}, + + + POLICY=#{policy}, + + + PROBATIONENDDATE=#{probationenddate}, + + + REGRESIDENTPLACE=#{regresidentplace}, + + + RESIDENTPHONE=#{residentphone}, + + + RESIDENTPLACE=#{residentplace}, + + + RESIDENTPOSTCODE=#{residentpostcode}, + + + RESOURCETYPE=#{resourcetype}, + + + SECLEVEL=#{seclevel}, + + + SEX=#{sex}, + + + snapshot_time=#{snapshotTime}, + + + STARTDATE=#{startdate}, + + + STATUS=#{status}, + + + SUBCOMPANYID1=#{subcompanyid1}, + + + SUBCOMPANYNAME=#{subcompanyname}, + + + TELEPHONE=#{telephone}, + + + TEMPRESIDENTNUMBER=#{tempresidentnumber}, + + + USEKIND=#{usekind}, + + + WORKCODE=#{workcode}, + + + WORKROOM=#{workroom}, + + + workstartdate=#{workstartdate}, + + + workyear=#{workyear}, + + + WHERE ID = #{id} AND delete_type = 0 + + + + + + UPDATE hrsa_hrm_snapshot + SET delete_type=1 + WHERE id = #{id} + AND delete_type = 0 + + + + UPDATE hrsa_hrm_snapshot + SET delete_type = 1 + WHERE delete_type = 0 + AND id IN + + #{id} + + + + + delete from hrsa_hrm_snapshot + WHERE snapshot_time = #{snapshotTime} + + + + e + . + ID as employee_id + ,e.loginid + ,e.LASTNAME + ,e.SEX + ,e.BIRTHDAY + ,e.NATIONALITY + ,e.MARITALSTATUS + ,e.TELEPHONE + ,e.MOBILE + ,e.MOBILECALL + ,e.EMAIL + ,e.LOCATIONID + ,e.WORKROOM + ,e.HOMEADDRESS + ,e.RESOURCETYPE + ,e.STARTDATE + ,e.ENDDATE + ,e.JOBTITLE + ,j.JOBTITLENAME + ,e.JOBACTIVITYDESC + ,e.JOBLEVEL + ,e.SECLEVEL + ,e.DEPARTMENTID + ,d.DEPARTMENTNAME + ,e.SUBCOMPANYID1 + ,c.SUBCOMPANYNAME + ,e.COSTCENTERID + ,e.MANAGERID + ,e.ASSISTANTID + ,e.BANKID1 + ,e.ACCOUNTID1 + ,e.LASTLOGINDATE + ,e.CERTIFICATENUM + ,e.NATIVEPLACE + ,e.EDUCATIONLEVEL + ,e.BEMEMBERDATE + ,e.BEPARTYDATE + ,e.WORKCODE + ,e.REGRESIDENTPLACE + ,e.HEALTHINFO + ,e.RESIDENTPLACE + ,e.POLICY + ,e.DEGREE + ,e.USEKIND + ,e.JOBCALL + ,e.ACCUMFUNDACCOUNT + ,e.BIRTHPLACE + ,e.FOLK + ,e.RESIDENTPHONE + ,e.RESIDENTPOSTCODE + ,e.EXTPHONE + ,e.MANAGERSTR + ,e.STATUS + ,e.FAX + ,e.ISLABOUUNION + ,e.TEMPRESIDENTNUMBER + ,e.PROBATIONENDDATE + ,e.COUNTRYID + ,e.ACCOUNTTYPE + ,e.BELONGTO + ,e.ACCOUNTNAME + ,e.companystartdate + ,e.workstartdate + ,e.companyworkyear + ,e.workyear + + + + + \ No newline at end of file diff --git a/src/com/engine/salary/timer/HrmSnapshotJob.java b/src/com/engine/salary/timer/HrmSnapshotJob.java new file mode 100644 index 000000000..5a256371a --- /dev/null +++ b/src/com/engine/salary/timer/HrmSnapshotJob.java @@ -0,0 +1,51 @@ +package com.engine.salary.timer; + +import cn.hutool.core.util.StrUtil; +import com.engine.salary.entity.hrm.po.HrmSnapshotPO; +import com.engine.salary.mapper.hrm.HrmSnapshotMapper; +import com.engine.salary.util.SalaryDateUtil; +import com.engine.salary.util.db.IdGenerator; +import com.engine.salary.util.db.MapperProxyFactory; +import weaver.hrm.User; +import weaver.interfaces.schedule.BaseCronJob; + +import java.time.LocalDate; +import java.util.Date; +import java.util.List; + + +public class HrmSnapshotJob extends BaseCronJob { + + private String appointSnapshotTime; + + private HrmSnapshotMapper getHrmSnapshotMapper() { + return MapperProxyFactory.getProxy(HrmSnapshotMapper.class); + } + + @Override + public void execute() { + User user = new User(); + user.setUid(1); + user.setLoginid("sysadmin"); + + List hrmSnapshotPOS = getHrmSnapshotMapper().currentEmpData(); + + Date snapshotTime = StrUtil.isNotBlank(appointSnapshotTime) && SalaryDateUtil.checkDay(appointSnapshotTime) ? SalaryDateUtil.dateStrToLocalDate(appointSnapshotTime) : SalaryDateUtil.localDateToDate(LocalDate.now()); + + //先删除当日快照 + getHrmSnapshotMapper().deleteBySnapshotTime(snapshotTime); + + hrmSnapshotPOS.forEach(hrmSnapshotPO -> { + + hrmSnapshotPO.setId(IdGenerator.generate()); + hrmSnapshotPO.setSnapshotTime(snapshotTime); + + getHrmSnapshotMapper().insertIgnoreNull(hrmSnapshotPO); + + }); + + + System.out.println(hrmSnapshotPOS); + } + +} 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 161/218] =?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 162/218] =?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 163/218] =?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 85e3d414fe5e3678463f8e64f730545718a9b22b 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 15:41:11 +0800 Subject: [PATCH 164/218] =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E7=BB=84=E7=BB=87?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=E5=BF=AB=E7=85=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salary/mapper/hrm/HrmSnapshotMapper.java | 3 + .../salary/mapper/hrm/HrmSnapshotMapper.xml | 460 +----------------- .../impl/SalaryEmployeeServiceImpl.java | 11 + 3 files changed, 27 insertions(+), 447 deletions(-) diff --git a/src/com/engine/salary/mapper/hrm/HrmSnapshotMapper.java b/src/com/engine/salary/mapper/hrm/HrmSnapshotMapper.java index 077e96d70..b8598f68a 100644 --- a/src/com/engine/salary/mapper/hrm/HrmSnapshotMapper.java +++ b/src/com/engine/salary/mapper/hrm/HrmSnapshotMapper.java @@ -16,6 +16,8 @@ public interface HrmSnapshotMapper { */ List listAll(); + List snapshot(List employeeIds, Date snapshotTime); + /** * 条件查询 * @@ -87,4 +89,5 @@ public interface HrmSnapshotMapper { */ List currentEmpData(); + } \ No newline at end of file diff --git a/src/com/engine/salary/mapper/hrm/HrmSnapshotMapper.xml b/src/com/engine/salary/mapper/hrm/HrmSnapshotMapper.xml index 4ceb64c7a..b2cbfc262 100644 --- a/src/com/engine/salary/mapper/hrm/HrmSnapshotMapper.xml +++ b/src/com/engine/salary/mapper/hrm/HrmSnapshotMapper.xml @@ -58,7 +58,6 @@ - @@ -150,7 +149,14 @@ SELECT FROM hrsa_hrm_snapshot t - WHERE delete_type = 0 + + + + @@ -158,7 +164,7 @@ SELECT FROM hrsa_hrm_snapshot t - WHERE ID = #{id} AND delete_type = 0 + WHERE ID = #{id} @@ -166,7 +172,7 @@ SELECT FROM hrsa_hrm_snapshot t - WHERE delete_type = 0 + WHERE 1=1 AND ACCOUNTID1 = #{accountid1} @@ -790,445 +796,6 @@ - - - - INSERT INTO hrsa_hrm_snapshot - ( - ACCOUNTID1, - ACCOUNTNAME, - ACCOUNTTYPE, - ACCUMFUNDACCOUNT, - ASSISTANTID, - BANKID1, - BELONGTO, - BEMEMBERDATE, - BEPARTYDATE, - BIRTHDAY, - BIRTHPLACE, - CERTIFICATENUM, - companystartdate, - companyworkyear, - COSTCENTERID, - COUNTRYID, - DEGREE, - DEPARTMENTID, - DEPARTMENTNAME, - EDUCATIONLEVEL, - EMAIL, - employee_id, - ENDDATE, - EXTPHONE, - FAX, - FOLK, - HEALTHINFO, - HOMEADDRESS, - ID, - ISLABOUUNION, - JOBACTIVITYDESC, - JOBCALL, - JOBLEVEL, - JOBTITLE, - JOBTITLENAME, - LASTLOGINDATE, - LASTNAME, - LOCATIONID, - loginid, - MANAGERID, - MANAGERSTR, - MARITALSTATUS, - MOBILE, - MOBILECALL, - NATIONALITY, - NATIVEPLACE, - POLICY, - PROBATIONENDDATE, - REGRESIDENTPLACE, - RESIDENTPHONE, - RESIDENTPLACE, - RESIDENTPOSTCODE, - RESOURCETYPE, - SECLEVEL, - SEX, - snapshot_time, - STARTDATE, - STATUS, - SUBCOMPANYID1, - SUBCOMPANYNAME, - TELEPHONE, - TEMPRESIDENTNUMBER, - USEKIND, - WORKCODE, - WORKROOM, - workstartdate, - workyear, - ) - VALUES - - - ( - #{item.accountid1}, - #{item.accountname}, - #{item.accounttype}, - #{item.accumfundaccount}, - #{item.assistantid}, - #{item.bankid1}, - #{item.belongto}, - #{item.bememberdate}, - #{item.bepartydate}, - #{item.birthday}, - #{item.birthplace}, - #{item.certificatenum}, - #{item.companystartdate}, - #{item.companyworkyear}, - #{item.costcenterid}, - #{item.countryid}, - #{item.degree}, - #{item.departmentid}, - #{item.departmentname}, - #{item.educationlevel}, - #{item.email}, - #{item.employeeId}, - #{item.enddate}, - #{item.extphone}, - #{item.fax}, - #{item.folk}, - #{item.healthinfo}, - #{item.homeaddress}, - #{item.id}, - #{item.islabouunion}, - #{item.jobactivitydesc}, - #{item.jobcall}, - #{item.joblevel}, - #{item.jobtitle}, - #{item.jobtitlename}, - #{item.lastlogindate}, - #{item.lastname}, - #{item.locationid}, - #{item.loginid}, - #{item.managerid}, - #{item.managerstr}, - #{item.maritalstatus}, - #{item.mobile}, - #{item.mobilecall}, - #{item.nationality}, - #{item.nativeplace}, - #{item.policy}, - #{item.probationenddate}, - #{item.regresidentplace}, - #{item.residentphone}, - #{item.residentplace}, - #{item.residentpostcode}, - #{item.resourcetype}, - #{item.seclevel}, - #{item.sex}, - #{item.snapshotTime}, - #{item.startdate}, - #{item.status}, - #{item.subcompanyid1}, - #{item.subcompanyname}, - #{item.telephone}, - #{item.tempresidentnumber}, - #{item.usekind}, - #{item.workcode}, - #{item.workroom}, - #{item.workstartdate}, - #{item.workyear}, - ) - - - - - - - INSERT INTO hrsa_hrm_snapshot ( - ACCOUNTID1, - ACCOUNTNAME, - ACCOUNTTYPE, - ACCUMFUNDACCOUNT, - ASSISTANTID, - BANKID1, - BELONGTO, - BEMEMBERDATE, - BEPARTYDATE, - BIRTHDAY, - BIRTHPLACE, - CERTIFICATENUM, - companystartdate, - companyworkyear, - COSTCENTERID, - COUNTRYID, - DEGREE, - DEPARTMENTID, - DEPARTMENTNAME, - EDUCATIONLEVEL, - EMAIL, - employee_id, - ENDDATE, - EXTPHONE, - FAX, - FOLK, - HEALTHINFO, - HOMEADDRESS, - ID, - ISLABOUUNION, - JOBACTIVITYDESC, - JOBCALL, - JOBLEVEL, - JOBTITLE, - JOBTITLENAME, - LASTLOGINDATE, - LASTNAME, - LOCATIONID, - loginid, - MANAGERID, - MANAGERSTR, - MARITALSTATUS, - MOBILE, - MOBILECALL, - NATIONALITY, - NATIVEPLACE, - POLICY, - PROBATIONENDDATE, - REGRESIDENTPLACE, - RESIDENTPHONE, - RESIDENTPLACE, - RESIDENTPOSTCODE, - RESOURCETYPE, - SECLEVEL, - SEX, - snapshot_time, - STARTDATE, - STATUS, - SUBCOMPANYID1, - SUBCOMPANYNAME, - TELEPHONE, - TEMPRESIDENTNUMBER, - USEKIND, - WORKCODE, - WORKROOM, - workstartdate, - workyear, - ) - - - select - #{item.accountid1,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, - #{item.accountname,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, - #{item.accounttype,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, - #{item.accumfundaccount,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, - #{item.assistantid,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, - #{item.bankid1,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, - #{item.belongto,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, - #{item.bememberdate,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, - #{item.bepartydate,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, - #{item.birthday,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, - #{item.birthplace,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, - #{item.certificatenum,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, - #{item.companystartdate,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, - #{item.companyworkyear,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, - #{item.costcenterid,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, - #{item.countryid,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, - #{item.degree,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, - #{item.departmentid,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, - #{item.departmentname,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, - #{item.educationlevel,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, - #{item.email,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, - #{item.employeeId,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, - #{item.enddate,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, - #{item.extphone,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, - #{item.fax,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, - #{item.folk,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, - #{item.healthinfo,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, - #{item.homeaddress,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, - #{item.id,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, - #{item.islabouunion,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, - #{item.jobactivitydesc,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, - #{item.jobcall,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, - #{item.joblevel,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, - #{item.jobtitle,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, - #{item.jobtitlename,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, - #{item.lastlogindate,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, - #{item.lastname,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, - #{item.locationid,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, - #{item.loginid,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, - #{item.managerid,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, - #{item.managerstr,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, - #{item.maritalstatus,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, - #{item.mobile,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, - #{item.mobilecall,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, - #{item.nationality,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, - #{item.nativeplace,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, - #{item.policy,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, - #{item.probationenddate,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, - #{item.regresidentplace,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, - #{item.residentphone,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, - #{item.residentplace,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, - #{item.residentpostcode,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, - #{item.resourcetype,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, - #{item.seclevel,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, - #{item.sex,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, - #{item.snapshotTime,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, - #{item.startdate,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, - #{item.status,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, - #{item.subcompanyid1,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, - #{item.subcompanyname,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, - #{item.telephone,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, - #{item.tempresidentnumber,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, - #{item.usekind,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, - #{item.workcode,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, - #{item.workroom,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, - #{item.workstartdate,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, - #{item.workyear,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, - from dual - - - - - - - INSERT INTO hrsa_hrm_snapshot ( - ACCOUNTID1, - ACCOUNTNAME, - ACCOUNTTYPE, - ACCUMFUNDACCOUNT, - ASSISTANTID, - BANKID1, - BELONGTO, - BEMEMBERDATE, - BEPARTYDATE, - BIRTHDAY, - BIRTHPLACE, - CERTIFICATENUM, - companystartdate, - companyworkyear, - COSTCENTERID, - COUNTRYID, - DEGREE, - DEPARTMENTID, - DEPARTMENTNAME, - EDUCATIONLEVEL, - EMAIL, - employee_id, - ENDDATE, - EXTPHONE, - FAX, - FOLK, - HEALTHINFO, - HOMEADDRESS, - ID, - ISLABOUUNION, - JOBACTIVITYDESC, - JOBCALL, - JOBLEVEL, - JOBTITLE, - JOBTITLENAME, - LASTLOGINDATE, - LASTNAME, - LOCATIONID, - loginid, - MANAGERID, - MANAGERSTR, - MARITALSTATUS, - MOBILE, - MOBILECALL, - NATIONALITY, - NATIVEPLACE, - POLICY, - PROBATIONENDDATE, - REGRESIDENTPLACE, - RESIDENTPHONE, - RESIDENTPLACE, - RESIDENTPOSTCODE, - RESOURCETYPE, - SECLEVEL, - SEX, - snapshot_time, - STARTDATE, - STATUS, - SUBCOMPANYID1, - SUBCOMPANYNAME, - TELEPHONE, - TEMPRESIDENTNUMBER, - USEKIND, - WORKCODE, - WORKROOM, - workstartdate, - workyear, - ) - VALUES - ( - #{item.accountid1}, - #{item.accountname}, - #{item.accounttype}, - #{item.accumfundaccount}, - #{item.assistantid}, - #{item.bankid1}, - #{item.belongto}, - #{item.bememberdate}, - #{item.bepartydate}, - #{item.birthday}, - #{item.birthplace}, - #{item.certificatenum}, - #{item.companystartdate}, - #{item.companyworkyear}, - #{item.costcenterid}, - #{item.countryid}, - #{item.degree}, - #{item.departmentid}, - #{item.departmentname}, - #{item.educationlevel}, - #{item.email}, - #{item.employeeId}, - #{item.enddate}, - #{item.extphone}, - #{item.fax}, - #{item.folk}, - #{item.healthinfo}, - #{item.homeaddress}, - #{item.id}, - #{item.islabouunion}, - #{item.jobactivitydesc}, - #{item.jobcall}, - #{item.joblevel}, - #{item.jobtitle}, - #{item.jobtitlename}, - #{item.lastlogindate}, - #{item.lastname}, - #{item.locationid}, - #{item.loginid}, - #{item.managerid}, - #{item.managerstr}, - #{item.maritalstatus}, - #{item.mobile}, - #{item.mobilecall}, - #{item.nationality}, - #{item.nativeplace}, - #{item.policy}, - #{item.probationenddate}, - #{item.regresidentplace}, - #{item.residentphone}, - #{item.residentplace}, - #{item.residentpostcode}, - #{item.resourcetype}, - #{item.seclevel}, - #{item.sex}, - #{item.snapshotTime}, - #{item.startdate}, - #{item.status}, - #{item.subcompanyid1}, - #{item.subcompanyname}, - #{item.telephone}, - #{item.tempresidentnumber}, - #{item.usekind}, - #{item.workcode}, - #{item.workroom}, - #{item.workstartdate}, - #{item.workyear}, - ) - - - UPDATE hrsa_hrm_snapshot @@ -1300,7 +867,7 @@ workstartdate=#{workstartdate}, workyear=#{workyear}, - WHERE ID = #{id} AND delete_type = 0 + WHERE ID = #{id} @@ -1507,7 +1074,7 @@ workyear=#{workyear},
- WHERE ID = #{id} AND delete_type = 0 + WHERE ID = #{id} @@ -1522,8 +1089,7 @@ UPDATE hrsa_hrm_snapshot SET delete_type = 1 - WHERE delete_type = 0 - AND id IN + WHERE id IN #{id} diff --git a/src/com/engine/salary/service/impl/SalaryEmployeeServiceImpl.java b/src/com/engine/salary/service/impl/SalaryEmployeeServiceImpl.java index 6d6637dc5..42b555cdb 100644 --- a/src/com/engine/salary/service/impl/SalaryEmployeeServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryEmployeeServiceImpl.java @@ -15,6 +15,7 @@ import com.engine.salary.entity.hrm.SubCompanyInfo; import com.engine.salary.entity.hrm.dto.EmployeeInfoExpandDTO; import com.engine.salary.entity.hrm.dto.FieldSetting; import com.engine.salary.entity.hrm.po.ExpandFieldSettingsPO; +import com.engine.salary.entity.hrm.po.HrmSnapshotPO; import com.engine.salary.entity.salarysob.bo.SalarySobRangeBO; import com.engine.salary.entity.salarysob.param.SalarySobRangeEmpQueryParam; import com.engine.salary.entity.salarysob.po.SalarySobRangePO; @@ -23,6 +24,7 @@ import com.engine.salary.enums.datacollection.UseEmployeeTypeEnum; import com.engine.salary.enums.salarysob.TargetTypeEnum; import com.engine.salary.mapper.datacollection.EmployMapper; import com.engine.salary.mapper.hrm.ExpandFieldSettingsMapper; +import com.engine.salary.mapper.hrm.HrmSnapshotMapper; import com.engine.salary.service.ExtEmpService; import com.engine.salary.service.SalaryEmployeeService; import com.engine.salary.service.SalarySobExtRangeService; @@ -33,6 +35,7 @@ import com.engine.salary.sys.service.impl.SalarySysConfServiceImpl; 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.google.common.collect.Lists; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; @@ -60,6 +63,10 @@ public class SalaryEmployeeServiceImpl extends Service implements SalaryEmployee private EmployBiz employBiz = new EmployBiz(); + private HrmSnapshotMapper getHrmSnapshotMapper() { + return MapperProxyFactory.getProxy(HrmSnapshotMapper.class); + } + private EmployMapper getEmployMapper() { return SqlProxyHandle.getProxy(EmployMapper.class); } @@ -612,4 +619,8 @@ public class SalaryEmployeeServiceImpl extends Service implements SalaryEmployee } return SalaryI18nUtil.i18n(getEmployMapper().getJobCallInfoById(jobCallId)); } + + public List snapshot(List employeeIds, Date snapshotTime) { + return getHrmSnapshotMapper().snapshot(employeeIds, snapshotTime); + } } 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 165/218] =?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 166/218] =?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 167/218] =?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()) From de5af5f2c90bddffc9e43b95cb98d49d562a2dbe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Fri, 6 Dec 2024 16:00:05 +0800 Subject: [PATCH 168/218] =?UTF-8?q?=E7=BB=84=E7=BB=87=E5=BF=AB=E7=85=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salary/entity/hrm/po/HrmSnapshotPO.java | 6 ++ .../salaryacct/bo/SalaryAcctEmployeeBO.java | 20 +++--- .../salaryacct/bo/SalaryAcctFormulaBO.java | 6 +- .../salary/mapper/hrm/HrmSnapshotMapper.java | 8 +-- .../salary/mapper/hrm/HrmSnapshotMapper.xml | 19 ++++++ .../salary/service/SalaryEmployeeService.java | 3 + .../impl/SalaryAcctEmployeeServiceImpl.java | 68 ++++++++++++------- .../impl/SalaryEmployeeServiceImpl.java | 48 ++++++++++++- .../engine/salary/timer/HrmSnapshotJob.java | 29 ++++---- 9 files changed, 150 insertions(+), 57 deletions(-) diff --git a/src/com/engine/salary/entity/hrm/po/HrmSnapshotPO.java b/src/com/engine/salary/entity/hrm/po/HrmSnapshotPO.java index 2dc410de5..48411733a 100644 --- a/src/com/engine/salary/entity/hrm/po/HrmSnapshotPO.java +++ b/src/com/engine/salary/entity/hrm/po/HrmSnapshotPO.java @@ -221,6 +221,12 @@ public class HrmSnapshotPO { @ElogTransform(name = "职称") private Integer jobcall; + /** + * 职称名称 + */ + @ElogTransform(name = "职称名称") + private String jobcallname; + /** * 工作级别 */ diff --git a/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctEmployeeBO.java b/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctEmployeeBO.java index a8dbc514e..09505ef25 100644 --- a/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctEmployeeBO.java +++ b/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctEmployeeBO.java @@ -103,16 +103,16 @@ public class SalaryAcctEmployeeBO { .employeeId(emp.getEmployeeId()) .employeeType(emp.isExtEmp() ? 1 : 0) .taxAgentId(taxAgentId) - .departmentId(emp.getDepartmentId()) - .departmentName(emp.getDepartmentName()) - .jobcall(emp.getJobcall()) - .jobcallId(emp.getJobcallId()) - .jobtitleId(emp.getJobtitleId()) - .jobtitleName(emp.getJobtitleName()) - .subcompanyId(emp.getSubcompanyid()) - .subcompanyName(emp.getSubcompanyName()) - .status(emp.getStatus()) - .accountType(emp.getAccountType()) +// .departmentId(emp.getDepartmentId()) +// .departmentName(emp.getDepartmentName()) +// .jobcall(emp.getJobcall()) +// .jobcallId(emp.getJobcallId()) +// .jobtitleId(emp.getJobtitleId()) +// .jobtitleName(emp.getJobtitleName()) +// .subcompanyId(emp.getSubcompanyid()) +// .subcompanyName(emp.getSubcompanyName()) +// .status(emp.getStatus()) +// .accountType(emp.getAccountType()) .creator(employeeId) .createTime(now) .updateTime(now) diff --git a/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctFormulaBO.java b/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctFormulaBO.java index cc19925b2..b3335f05e 100644 --- a/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctFormulaBO.java +++ b/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctFormulaBO.java @@ -6,12 +6,14 @@ import com.engine.salary.entity.salaryformula.dto.SalaryFormulaEmployeeDTO; import com.engine.salary.entity.salaryitem.po.SalaryItemPO; import com.engine.salary.entity.salarysob.po.SalarySobBackItemPO; import com.engine.salary.entity.salarysob.po.SalarySobItemPO; +import com.engine.salary.enums.UserStatusEnum; import com.engine.salary.enums.salaryitem.SalaryDataTypeEnum; import com.engine.salary.util.JsonUtil; import com.engine.salary.util.SalaryEntityUtil; import com.engine.salary.util.SalaryI18nUtil; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; +import weaver.general.Util; import java.math.BigDecimal; import java.util.Collections; @@ -115,8 +117,8 @@ public class SalaryAcctFormulaBO { .mobile(simpleEmployee.getMobile()) .telephone(simpleEmployee.getTelephone()) .sex(sexName) - .status(simpleEmployee.getStatus()) - .statusName(simpleEmployee.getStatusName()) + .status(salaryAcctEmployeePO.getStatus()) + .statusName(UserStatusEnum.getDefaultLabelByValue(new Integer(Util.null2s(salaryAcctEmployeePO.getStatus(), "1")))) .accountType(simpleEmployee.getAccountType()) .accountTypeName(simpleEmployee.getAccountTypeName()) .departmentName(salaryAcctEmployeePO.getDepartmentName()) diff --git a/src/com/engine/salary/mapper/hrm/HrmSnapshotMapper.java b/src/com/engine/salary/mapper/hrm/HrmSnapshotMapper.java index b8598f68a..81082b003 100644 --- a/src/com/engine/salary/mapper/hrm/HrmSnapshotMapper.java +++ b/src/com/engine/salary/mapper/hrm/HrmSnapshotMapper.java @@ -16,7 +16,7 @@ public interface HrmSnapshotMapper { */ List listAll(); - List snapshot(List employeeIds, Date snapshotTime); + List snapshot(@Param("employeeId")Long employeeId, @Param("snapshotTime")Date snapshotTime); /** * 条件查询 @@ -42,12 +42,6 @@ public interface HrmSnapshotMapper { */ int insertIgnoreNull(HrmSnapshotPO hrmSnapshot); - /** - * 批量插入 - * - * @param hrmSnapshot - */ - void batchInsert(@Param("collection") List hrmSnapshot); /** * 修改,修改所有字段 diff --git a/src/com/engine/salary/mapper/hrm/HrmSnapshotMapper.xml b/src/com/engine/salary/mapper/hrm/HrmSnapshotMapper.xml index b2cbfc262..d56a738ea 100644 --- a/src/com/engine/salary/mapper/hrm/HrmSnapshotMapper.xml +++ b/src/com/engine/salary/mapper/hrm/HrmSnapshotMapper.xml @@ -35,6 +35,7 @@ + @@ -107,6 +108,7 @@ , t.ISLABOUUNION , t.JOBACTIVITYDESC , t.JOBCALL + , t.jobcallname , t.JOBLEVEL , t.JOBTITLE , t.JOBTITLENAME @@ -157,6 +159,8 @@ FROM hrsa_hrm_snapshot t WHERE snapshot_time >= #{snapshotTime} + AND employee_id = #{employeeId} + order by snapshot_time @@ -269,6 +273,9 @@ AND JOBCALL = #{jobcall} + + AND jobcallname = #{jobcallname} + AND JOBLEVEL = #{joblevel} @@ -485,6 +492,9 @@ JOBCALL, + + jobcallname, + JOBLEVEL, @@ -688,6 +698,9 @@ #{jobcall}, + + #{jobcallname}, + #{joblevel}, @@ -831,6 +844,7 @@ ISLABOUUNION=#{islabouunion}, JOBACTIVITYDESC=#{jobactivitydesc}, JOBCALL=#{jobcall}, + jobcallname=#{jobcallname}, JOBLEVEL=#{joblevel}, JOBTITLE=#{jobtitle}, JOBTITLENAME=#{jobtitlename}, @@ -968,6 +982,9 @@ JOBCALL=#{jobcall}, + + jobcallname=#{jobcallname}, + JOBLEVEL=#{joblevel}, @@ -1148,6 +1165,7 @@ ,e.DEGREE ,e.USEKIND ,e.JOBCALL + ,job.NAME as jobcallname ,e.ACCUMFUNDACCOUNT ,e.BIRTHPLACE ,e.FOLK @@ -1177,6 +1195,7 @@ left join hrmdepartment d on e.departmentid = d.id left join HrmSubCompany c on e.SUBCOMPANYID1=c.id left join hrmjobtitles j on e.jobtitle = j.id + left join hrmjobcall job on e.jobcall=job.id \ No newline at end of file diff --git a/src/com/engine/salary/service/SalaryEmployeeService.java b/src/com/engine/salary/service/SalaryEmployeeService.java index f3b19a040..e5b25c281 100644 --- a/src/com/engine/salary/service/SalaryEmployeeService.java +++ b/src/com/engine/salary/service/SalaryEmployeeService.java @@ -9,6 +9,7 @@ import com.engine.salary.entity.hrm.dto.EmployeeInfoExpandDTO; import com.engine.salary.entity.salarysob.param.SalarySobRangeEmpQueryParam; import com.engine.salary.enums.datacollection.UseEmployeeTypeEnum; +import java.util.Date; import java.util.List; import java.util.Map; @@ -181,4 +182,6 @@ public interface SalaryEmployeeService { * @return */ JobCallInfo getJobCallInfoById(Long jobCallId); + + List snapshot(List employeeIds, Date snapshotTime); } diff --git a/src/com/engine/salary/service/impl/SalaryAcctEmployeeServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctEmployeeServiceImpl.java index 90391abd4..fbb5851f7 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctEmployeeServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctEmployeeServiceImpl.java @@ -7,7 +7,6 @@ import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; import com.engine.hrmelog.entity.dto.LoggerContext; import com.engine.salary.config.SalaryElogConfig; -import com.engine.salary.constant.SalaryDefaultTenantConstant; import com.engine.salary.entity.datacollection.DataCollectionEmployee; import com.engine.salary.entity.salaryacct.bo.SalaryAcctConfig; import com.engine.salary.entity.salaryacct.bo.SalaryAcctEmployeeBO; @@ -154,24 +153,24 @@ public class SalaryAcctEmployeeServiceImpl extends Service implements SalaryAcct @Override public void addFromReduce(SalaryAcctEmployeeAddParam addParam) { - ValidUtil.doValidator(addParam); - // 查询薪资核算记录 - SalaryAcctRecordPO salaryAcctRecordPO = getSalaryAcctRecordService(user).getById(addParam.getSalaryAcctRecordId()); - if (Objects.isNull(salaryAcctRecordPO)) { - throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98747, "薪资核算记录不存在或已被删除")); - } - // 查询环比减少的薪资核算人员 - List salaryAcctEmployeePOS = listByIds(addParam.getIds()); - if (CollectionUtils.isEmpty(salaryAcctEmployeePOS)) { - throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98830, "薪资核算人员不存在或已被删除")); - } - // 添加薪资核算人员 - Date now = new Date(); - List newSalaryAcctEmployeePOS = salaryAcctEmployeePOS.stream().map(salaryAcctEmployeePO -> new SalaryAcctEmployeePO() - .setSalaryAcctRecordId(salaryAcctRecordPO.getId()).setSalarySobId(salaryAcctRecordPO.getSalarySobId()).setSalaryMonth(salaryAcctRecordPO.getSalaryMonth()).setEmployeeId(salaryAcctEmployeePO.getEmployeeId()).setTaxAgentId(salaryAcctEmployeePO.getTaxAgentId()).setTenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY).setCreateTime(now).setUpdateTime(now).setCreator((long) user.getUID()).setDeleteType(0)).collect(Collectors.toList()); - if (CollectionUtils.isNotEmpty(newSalaryAcctEmployeePOS)) { - batchSave(newSalaryAcctEmployeePOS); - } +// ValidUtil.doValidator(addParam); +// // 查询薪资核算记录 +// SalaryAcctRecordPO salaryAcctRecordPO = getSalaryAcctRecordService(user).getById(addParam.getSalaryAcctRecordId()); +// if (Objects.isNull(salaryAcctRecordPO)) { +// throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98747, "薪资核算记录不存在或已被删除")); +// } +// // 查询环比减少的薪资核算人员 +// List salaryAcctEmployeePOS = listByIds(addParam.getIds()); +// if (CollectionUtils.isEmpty(salaryAcctEmployeePOS)) { +// throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98830, "薪资核算人员不存在或已被删除")); +// } +// // 添加薪资核算人员 +// Date now = new Date(); +// List newSalaryAcctEmployeePOS = salaryAcctEmployeePOS.stream().map(salaryAcctEmployeePO -> new SalaryAcctEmployeePO() +// .setSalaryAcctRecordId(salaryAcctRecordPO.getId()).setSalarySobId(salaryAcctRecordPO.getSalarySobId()).setSalaryMonth(salaryAcctRecordPO.getSalaryMonth()).setEmployeeId(salaryAcctEmployeePO.getEmployeeId()).setTaxAgentId(salaryAcctEmployeePO.getTaxAgentId()).setTenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY).setCreateTime(now).setUpdateTime(now).setCreator((long) user.getUID()).setDeleteType(0)).collect(Collectors.toList()); +// if (CollectionUtils.isNotEmpty(newSalaryAcctEmployeePOS)) { +// batchSave(newSalaryAcctEmployeePOS); +// } } @Override @@ -431,6 +430,9 @@ public class SalaryAcctEmployeeServiceImpl extends Service implements SalaryAcct if (CollectionUtils.isEmpty(salaryAcctEmployeePOS)) { throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98769, "个税扣缴义务人下无该人员档案信息或薪资缴纳日期不在薪资周期内")); } + + //替换快照数据 + shotEmpData(salaryAcctEmployeePOS, salarySobCycleDTO.getSalaryCycleFromDate()); batchSave(salaryAcctEmployeePOS); @@ -447,6 +449,24 @@ public class SalaryAcctEmployeeServiceImpl extends Service implements SalaryAcct SalaryElogConfig.salaryAcctRecordLoggerTemplate.write(loggerContext); } + private void shotEmpData(List salaryAcctEmployeePOS, Date shotTime) { + List employees = SalaryEntityUtil.properties(salaryAcctEmployeePOS, SalaryAcctEmployeePO::getEmployeeId, Collectors.toList()); + List snapshot = getSalaryEmployeeService(user).snapshot(employees, shotTime); + Map shotEmpMap = SalaryEntityUtil.convert2Map(snapshot, DataCollectionEmployee::getEmployeeId); + salaryAcctEmployeePOS.forEach(salaryAcctEmployeePO -> { + DataCollectionEmployee shotEmp = shotEmpMap.getOrDefault(salaryAcctEmployeePO.getEmployeeId(), new DataCollectionEmployee()); + salaryAcctEmployeePO.setDepartmentId(shotEmp.getDepartmentId()); + salaryAcctEmployeePO.setDepartmentName(shotEmp.getDepartmentName()); + salaryAcctEmployeePO.setJobcall(shotEmp.getJobcall()); + salaryAcctEmployeePO.setJobcallId(shotEmp.getJobcallId()); + salaryAcctEmployeePO.setJobtitleId(shotEmp.getJobtitleId()); + salaryAcctEmployeePO.setJobtitleName(shotEmp.getJobtitleName()); + salaryAcctEmployeePO.setSubcompanyId(shotEmp.getSubcompanyid()); + salaryAcctEmployeePO.setSubcompanyName(shotEmp.getSubcompanyName()); + salaryAcctEmployeePO.setStatus(shotEmp.getStatus()); + salaryAcctEmployeePO.setAccountType(shotEmp.getAccountType()); + }); + } @Override public void batchSave(Collection salaryAcctEmployeePOS) { if (CollectionUtils.isEmpty(salaryAcctEmployeePOS)) { @@ -560,6 +580,7 @@ public class SalaryAcctEmployeeServiceImpl extends Service implements SalaryAcct // 保存薪资核算人员 if (CollectionUtils.isNotEmpty(salaryAcctEmployeePOS)) { + shotEmpData(salaryAcctEmployeePOS, salarySobCycleDTO.getSalaryCycleFromDate()); batchSave(salaryAcctEmployeePOS); } } @@ -606,6 +627,7 @@ public class SalaryAcctEmployeeServiceImpl extends Service implements SalaryAcct List delIds = oldEmps.stream().filter(po -> !newEmpMap.containsKey(po.getTaxAgentId() + "_" + po.getEmployeeId())).map(SalaryAcctEmployeePO::getId).collect(Collectors.toList()); deleteByIds(delIds); + shotEmpData(addEmps, salarySobCycleDTO.getSalaryCycleFromDate()); batchSave(addEmps); } @@ -762,7 +784,7 @@ public class SalaryAcctEmployeeServiceImpl extends Service implements SalaryAcct list = list.stream().filter(po -> param.getEmployee().contains(po.getEmployeeId())).collect(Collectors.toList()); } - if(isRealOrg){ + if (isRealOrg) { Set empIds = SalaryEntityUtil.properties(employeeList, DataCollectionEmployee::getEmployeeId); list = list.stream().filter(po -> empIds.contains(po.getEmployeeId())).collect(Collectors.toList()); } @@ -788,16 +810,16 @@ public class SalaryAcctEmployeeServiceImpl extends Service implements SalaryAcct throw new SalaryRunTimeException("锁定状态异常!"); } - if (updateParam.getLockStatus() == LockStatusEnum.LOCK){ + if (updateParam.getLockStatus() == LockStatusEnum.LOCK) { SalaryAcctConfig salaryAcctSobConfig = getSalaryAcctSobConfigService(user).getSalaryAcctConfig(updateParam.getSalaryAcctRecordId()); List salarySobItems = salaryAcctSobConfig.getSalarySobItems(); - List itemIds = SalaryEntityUtil.properties(salarySobItems, SalarySobItemPO::getSalaryItemId,Collectors.toList()); + List itemIds = SalaryEntityUtil.properties(salarySobItems, SalarySobItemPO::getSalaryItemId, Collectors.toList()); salaryAcctEmployees.forEach(salaryAcctEmployeePO -> { salaryAcctEmployeePO.setLockItems(itemIds); lock(salaryAcctEmployeePO); }); - }else { + } else { salaryAcctEmployees.forEach(salaryAcctEmployeePO -> { salaryAcctEmployeePO.setLockItems(new ArrayList<>()); lock(salaryAcctEmployeePO); diff --git a/src/com/engine/salary/service/impl/SalaryEmployeeServiceImpl.java b/src/com/engine/salary/service/impl/SalaryEmployeeServiceImpl.java index 42b555cdb..9dc5673e1 100644 --- a/src/com/engine/salary/service/impl/SalaryEmployeeServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryEmployeeServiceImpl.java @@ -1,5 +1,6 @@ package com.engine.salary.service.impl; +import cn.hutool.core.util.NumberUtil; import com.alibaba.fastjson.JSON; import com.api.formmode.mybatis.util.SqlProxyHandle; import com.engine.common.util.ServiceUtil; @@ -19,6 +20,7 @@ import com.engine.salary.entity.hrm.po.HrmSnapshotPO; import com.engine.salary.entity.salarysob.bo.SalarySobRangeBO; import com.engine.salary.entity.salarysob.param.SalarySobRangeEmpQueryParam; import com.engine.salary.entity.salarysob.po.SalarySobRangePO; +import com.engine.salary.enums.AccountTypeEnum; import com.engine.salary.enums.UserStatusEnum; import com.engine.salary.enums.datacollection.UseEmployeeTypeEnum; import com.engine.salary.enums.salarysob.TargetTypeEnum; @@ -620,7 +622,49 @@ public class SalaryEmployeeServiceImpl extends Service implements SalaryEmployee return SalaryI18nUtil.i18n(getEmployMapper().getJobCallInfoById(jobCallId)); } - public List snapshot(List employeeIds, Date snapshotTime) { - return getHrmSnapshotMapper().snapshot(employeeIds, snapshotTime); + public List snapshot(List employeeIds, Date snapshotTime) { + + List currentEmployees = getEmployeeByIdsAll(employeeIds); + Map currentEmployeeMap = SalaryEntityUtil.convert2Map(currentEmployees, DataCollectionEmployee::getEmployeeId); + + List employees = employeeIds.stream() + .map(employeeId -> { + + List snapshot = getHrmSnapshotMapper().snapshot(employeeId, snapshotTime); + + return snapshot.stream().findFirst().map(hrmSnapshotPO -> DataCollectionEmployee. + builder() + .employeeId(employeeId) + .username(hrmSnapshotPO.getLastname()) + .departmentName(hrmSnapshotPO.getDepartmentname()) + .departmentId(NumberUtil.parseLong(Util.null2String(hrmSnapshotPO.getDepartmentid()))) + .subcompanyName(hrmSnapshotPO.getSubcompanyname()) + .subcompanyid(NumberUtil.parseLong(Util.null2String(hrmSnapshotPO.getSubcompanyid1()))) + .costcenterId(NumberUtil.parseLong(Util.null2String(hrmSnapshotPO.getCostcenterid()))) + .locationId(NumberUtil.parseLong(Util.null2String(hrmSnapshotPO.getLocationid()))) + .jobtitleName(hrmSnapshotPO.getJobtitlename()) + .jobtitleId(NumberUtil.parseLong(Util.null2String(hrmSnapshotPO.getJobtitle()))) + .companystartdate(hrmSnapshotPO.getCompanystartdate()) + .mobile(hrmSnapshotPO.getMobile()) +// .dismissdate() + .status(Util.null2String(hrmSnapshotPO.getStatus())) + .statusName(UserStatusEnum.getDefaultLabelByValue(NumberUtils.toInt(Util.null2String(hrmSnapshotPO.getStatus()), 1))) + .workcode(hrmSnapshotPO.getWorkcode()) + .sex(hrmSnapshotPO.getSex()) + .email(hrmSnapshotPO.getEmail()) + .telephone(hrmSnapshotPO.getTelephone()) + .jobcall(hrmSnapshotPO.getJobcallname()) + .jobcallId(NumberUtil.parseLong(Util.null2String(hrmSnapshotPO.getJobcall()))) + .birthday(hrmSnapshotPO.getBirthday()) + .workYear(hrmSnapshotPO.getWorkyear() == null ? 0.00 : hrmSnapshotPO.getWorkyear().doubleValue()) + .companyWorkYear(hrmSnapshotPO.getCompanyworkyear() == null ? 0.00 : hrmSnapshotPO.getCompanyworkyear().doubleValue()) + .idNo(hrmSnapshotPO.getCertificatenum()) + .accountTypeName(AccountTypeEnum.getDefaultLabelByValue(hrmSnapshotPO.getAccounttype())) + .accountType(hrmSnapshotPO.getAccounttype()) + .build()) + .orElse(currentEmployeeMap.get(employeeId)); + }).collect(Collectors.toList()); + + return SalaryI18nUtil.i18nList(employees); } } diff --git a/src/com/engine/salary/timer/HrmSnapshotJob.java b/src/com/engine/salary/timer/HrmSnapshotJob.java index 5a256371a..ac0a7a091 100644 --- a/src/com/engine/salary/timer/HrmSnapshotJob.java +++ b/src/com/engine/salary/timer/HrmSnapshotJob.java @@ -6,6 +6,7 @@ import com.engine.salary.mapper.hrm.HrmSnapshotMapper; import com.engine.salary.util.SalaryDateUtil; import com.engine.salary.util.db.IdGenerator; import com.engine.salary.util.db.MapperProxyFactory; +import lombok.extern.slf4j.Slf4j; import weaver.hrm.User; import weaver.interfaces.schedule.BaseCronJob; @@ -13,9 +14,10 @@ import java.time.LocalDate; import java.util.Date; import java.util.List; - +@Slf4j public class HrmSnapshotJob extends BaseCronJob { + //指定筷子时间 private String appointSnapshotTime; private HrmSnapshotMapper getHrmSnapshotMapper() { @@ -28,24 +30,25 @@ public class HrmSnapshotJob extends BaseCronJob { user.setUid(1); user.setLoginid("sysadmin"); - List hrmSnapshotPOS = getHrmSnapshotMapper().currentEmpData(); + try { + List hrmSnapshotPOS = getHrmSnapshotMapper().currentEmpData(); - Date snapshotTime = StrUtil.isNotBlank(appointSnapshotTime) && SalaryDateUtil.checkDay(appointSnapshotTime) ? SalaryDateUtil.dateStrToLocalDate(appointSnapshotTime) : SalaryDateUtil.localDateToDate(LocalDate.now()); + Date snapshotTime = StrUtil.isNotBlank(appointSnapshotTime) && SalaryDateUtil.checkDay(appointSnapshotTime) ? SalaryDateUtil.dateStrToLocalDate(appointSnapshotTime) : SalaryDateUtil.localDateToDate(LocalDate.now()); - //先删除当日快照 - getHrmSnapshotMapper().deleteBySnapshotTime(snapshotTime); + //先删除当日快照 + getHrmSnapshotMapper().deleteBySnapshotTime(snapshotTime); - hrmSnapshotPOS.forEach(hrmSnapshotPO -> { + hrmSnapshotPOS.forEach(hrmSnapshotPO -> { - hrmSnapshotPO.setId(IdGenerator.generate()); - hrmSnapshotPO.setSnapshotTime(snapshotTime); + hrmSnapshotPO.setId(IdGenerator.generate()); + hrmSnapshotPO.setSnapshotTime(snapshotTime); - getHrmSnapshotMapper().insertIgnoreNull(hrmSnapshotPO); + getHrmSnapshotMapper().insertIgnoreNull(hrmSnapshotPO); - }); - - - System.out.println(hrmSnapshotPOS); + }); + }catch (Exception e){ + log.error("生成快照失败", e); + } } } From 5b8562edb694301f7146c103654fb8bbeb3ee882 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Fri, 6 Dec 2024 16:00:53 +0800 Subject: [PATCH 169/218] =?UTF-8?q?=E7=BB=84=E7=BB=87=E5=BF=AB=E7=85=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entity/salarysob/bo/SalarySobCycleBO.java | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/com/engine/salary/entity/salarysob/bo/SalarySobCycleBO.java b/src/com/engine/salary/entity/salarysob/bo/SalarySobCycleBO.java index 0111dbece..37a505a31 100644 --- a/src/com/engine/salary/entity/salarysob/bo/SalarySobCycleBO.java +++ b/src/com/engine/salary/entity/salarysob/bo/SalarySobCycleBO.java @@ -4,6 +4,7 @@ import com.engine.salary.common.LocalDateRange; import com.engine.salary.entity.salarysob.dto.SalarySobCycleDTO; import com.engine.salary.entity.salarysob.po.SalarySobPO; import com.engine.salary.enums.SalaryCycleTypeEnum; +import com.engine.salary.util.SalaryDateUtil; import java.time.*; import java.util.Date; @@ -30,7 +31,8 @@ public class SalarySobCycleBO { if (salarySob == null) { return null; } - return SalarySobCycleDTO.builder() + + SalarySobCycleDTO salarySobCycleDTO = SalarySobCycleDTO.builder() .salarySobId(salarySob.getId()) .salaryMonth(salaryMonth) .taxCycle(buildCycle(salaryMonth, salarySob.getTaxCycleType())) @@ -38,6 +40,18 @@ public class SalarySobCycleBO { .salaryCycle(buildCycleDateRange(salaryMonth, salarySob.getSalaryCycleType(), salarySob.getSalaryCycleFromDay())) .attendCycle(buildCycleDateRange(salaryMonth, salarySob.getAttendCycleType(), salarySob.getAttendCycleFromDay())) .build(); + + salarySobCycleDTO.setSalaryDate(SalaryDateUtil.toDate(salarySobCycleDTO.getSalaryMonth(), 1)); + salarySobCycleDTO.setTaxDate(SalaryDateUtil.toDate(salarySobCycleDTO.getTaxCycle(), 1)); + salarySobCycleDTO.setSocialSecurityDate(SalaryDateUtil.toDate(salarySobCycleDTO.getSocialSecurityCycle(), 1)); + LocalDateRange salaryCycle = salarySobCycleDTO.getSalaryCycle(); + salarySobCycleDTO.setSalaryCycleFromDate(salaryCycle.getFromDate()); + salarySobCycleDTO.setSalaryCycleEndDate(salaryCycle.getEndDate()); + LocalDateRange attendCycle = salarySobCycleDTO.getAttendCycle(); + salarySobCycleDTO.setAttendCycleFromDate(attendCycle.getFromDate()); + salarySobCycleDTO.setAttendCycleEndDate(attendCycle.getEndDate()); + + return salarySobCycleDTO; } /** From 0b6a832c4fb2bdebb5a09efd3d6fcdc1a1a66d35 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Fri, 6 Dec 2024 16:05:51 +0800 Subject: [PATCH 170/218] =?UTF-8?q?=E7=BB=84=E7=BB=87=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E6=9B=BF=E6=8D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/SalaryEmployeeServiceImpl.java | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/com/engine/salary/service/impl/SalaryEmployeeServiceImpl.java b/src/com/engine/salary/service/impl/SalaryEmployeeServiceImpl.java index 9dc5673e1..1dedb0bfb 100644 --- a/src/com/engine/salary/service/impl/SalaryEmployeeServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryEmployeeServiceImpl.java @@ -637,13 +637,13 @@ public class SalaryEmployeeServiceImpl extends Service implements SalaryEmployee .employeeId(employeeId) .username(hrmSnapshotPO.getLastname()) .departmentName(hrmSnapshotPO.getDepartmentname()) - .departmentId(NumberUtil.parseLong(Util.null2String(hrmSnapshotPO.getDepartmentid()))) + .departmentId(hrmSnapshotPO.getDepartmentid() == null ? null : NumberUtil.parseLong(Util.null2String(hrmSnapshotPO.getDepartmentid()))) .subcompanyName(hrmSnapshotPO.getSubcompanyname()) - .subcompanyid(NumberUtil.parseLong(Util.null2String(hrmSnapshotPO.getSubcompanyid1()))) - .costcenterId(NumberUtil.parseLong(Util.null2String(hrmSnapshotPO.getCostcenterid()))) - .locationId(NumberUtil.parseLong(Util.null2String(hrmSnapshotPO.getLocationid()))) + .subcompanyid(hrmSnapshotPO.getSubcompanyid1() == null ? null :NumberUtil.parseLong(Util.null2String(hrmSnapshotPO.getSubcompanyid1()))) + .costcenterId(hrmSnapshotPO.getCostcenterid() == null ? null :NumberUtil.parseLong(Util.null2String(hrmSnapshotPO.getCostcenterid()))) + .locationId(hrmSnapshotPO.getLocationid() == null ? null :NumberUtil.parseLong(Util.null2String(hrmSnapshotPO.getLocationid()))) .jobtitleName(hrmSnapshotPO.getJobtitlename()) - .jobtitleId(NumberUtil.parseLong(Util.null2String(hrmSnapshotPO.getJobtitle()))) + .jobtitleId(hrmSnapshotPO.getJobtitle() == null ? null :NumberUtil.parseLong(Util.null2String(hrmSnapshotPO.getJobtitle()))) .companystartdate(hrmSnapshotPO.getCompanystartdate()) .mobile(hrmSnapshotPO.getMobile()) // .dismissdate() @@ -654,10 +654,10 @@ public class SalaryEmployeeServiceImpl extends Service implements SalaryEmployee .email(hrmSnapshotPO.getEmail()) .telephone(hrmSnapshotPO.getTelephone()) .jobcall(hrmSnapshotPO.getJobcallname()) - .jobcallId(NumberUtil.parseLong(Util.null2String(hrmSnapshotPO.getJobcall()))) + .jobcallId(hrmSnapshotPO.getJobcall() == null ? null :NumberUtil.parseLong(Util.null2String(hrmSnapshotPO.getJobcall()))) .birthday(hrmSnapshotPO.getBirthday()) - .workYear(hrmSnapshotPO.getWorkyear() == null ? 0.00 : hrmSnapshotPO.getWorkyear().doubleValue()) - .companyWorkYear(hrmSnapshotPO.getCompanyworkyear() == null ? 0.00 : hrmSnapshotPO.getCompanyworkyear().doubleValue()) + .workYear(hrmSnapshotPO.getWorkyear() == null ? null : hrmSnapshotPO.getWorkyear().doubleValue()) + .companyWorkYear(hrmSnapshotPO.getCompanyworkyear() == null ? null : hrmSnapshotPO.getCompanyworkyear().doubleValue()) .idNo(hrmSnapshotPO.getCertificatenum()) .accountTypeName(AccountTypeEnum.getDefaultLabelByValue(hrmSnapshotPO.getAccounttype())) .accountType(hrmSnapshotPO.getAccounttype()) From 7d346aa4b0853261674dffb20db4490323380021 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Fri, 6 Dec 2024 16:33:52 +0800 Subject: [PATCH 171/218] =?UTF-8?q?fix=E9=9D=9E=E7=B3=BB=E7=BB=9F=E4=BA=BA?= =?UTF-8?q?=E5=91=98=E5=AF=BC=E5=85=A5=E8=96=AA=E8=B5=84=E6=A1=A3=E6=A1=88?= =?UTF-8?q?=E6=97=B6=EF=BC=8Cemployeetype=E4=B8=BAnull?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salary/entity/salaryarchive/bo/SalaryArchiveExcelBO.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/com/engine/salary/entity/salaryarchive/bo/SalaryArchiveExcelBO.java b/src/com/engine/salary/entity/salaryarchive/bo/SalaryArchiveExcelBO.java index d32117615..e368c3d2d 100644 --- a/src/com/engine/salary/entity/salaryarchive/bo/SalaryArchiveExcelBO.java +++ b/src/com/engine/salary/entity/salaryarchive/bo/SalaryArchiveExcelBO.java @@ -782,6 +782,7 @@ public class SalaryArchiveExcelBO extends Service { // .modifier(importHandleParam.getCurrentEmployeeId()) .deleteType(NumberUtils.INTEGER_ZERO) .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) + .employeeType(importHandleParam.isExtEmp() ? 1 : 0) .build(); // 定薪action 保持状态为待定薪 if (importHandleParam.isInit() && importHandleParam.getKeepStatus() != null && importHandleParam.getKeepStatus().equals(Boolean.TRUE)) { From 4100ba1331ec345edf5e8c8da65db06f49afbe79 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Mon, 9 Dec 2024 13:21:25 +0800 Subject: [PATCH 172/218] =?UTF-8?q?=E4=BF=9D=E5=AD=98=E6=A0=B8=E7=AE=97?= =?UTF-8?q?=E4=BA=BA=E5=91=98=E6=97=B6=E5=A2=9E=E5=8A=A0=E5=BF=AB=E7=85=A7?= =?UTF-8?q?=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salaryacct/bo/SalaryAcctEmployeeBO.java | 20 +++---- .../impl/SalaryAcctEmployeeServiceImpl.java | 27 ++++++--- .../sys/constant/SalarySysConstant.java | 10 ++++ .../salary/sys/enums/ShotTimeTypeEnum.java | 57 +++++++++++++++++++ 4 files changed, 97 insertions(+), 17 deletions(-) create mode 100644 src/com/engine/salary/sys/enums/ShotTimeTypeEnum.java diff --git a/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctEmployeeBO.java b/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctEmployeeBO.java index 09505ef25..a8dbc514e 100644 --- a/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctEmployeeBO.java +++ b/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctEmployeeBO.java @@ -103,16 +103,16 @@ public class SalaryAcctEmployeeBO { .employeeId(emp.getEmployeeId()) .employeeType(emp.isExtEmp() ? 1 : 0) .taxAgentId(taxAgentId) -// .departmentId(emp.getDepartmentId()) -// .departmentName(emp.getDepartmentName()) -// .jobcall(emp.getJobcall()) -// .jobcallId(emp.getJobcallId()) -// .jobtitleId(emp.getJobtitleId()) -// .jobtitleName(emp.getJobtitleName()) -// .subcompanyId(emp.getSubcompanyid()) -// .subcompanyName(emp.getSubcompanyName()) -// .status(emp.getStatus()) -// .accountType(emp.getAccountType()) + .departmentId(emp.getDepartmentId()) + .departmentName(emp.getDepartmentName()) + .jobcall(emp.getJobcall()) + .jobcallId(emp.getJobcallId()) + .jobtitleId(emp.getJobtitleId()) + .jobtitleName(emp.getJobtitleName()) + .subcompanyId(emp.getSubcompanyid()) + .subcompanyName(emp.getSubcompanyName()) + .status(emp.getStatus()) + .accountType(emp.getAccountType()) .creator(employeeId) .createTime(now) .updateTime(now) diff --git a/src/com/engine/salary/service/impl/SalaryAcctEmployeeServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctEmployeeServiceImpl.java index fbb5851f7..8f30feb53 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctEmployeeServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctEmployeeServiceImpl.java @@ -27,6 +27,7 @@ import com.engine.salary.mapper.salaryacct.SalaryAcctEmployeeMapper; import com.engine.salary.mapper.sys.SalarySysConfMapper; import com.engine.salary.report.entity.param.SalaryStatisticsReportDataQueryParam; import com.engine.salary.service.*; +import com.engine.salary.sys.constant.SalarySysConstant; import com.engine.salary.sys.entity.vo.OrderRuleVO; import com.engine.salary.sys.service.SalarySysConfService; import com.engine.salary.sys.service.impl.SalarySysConfServiceImpl; @@ -431,9 +432,8 @@ public class SalaryAcctEmployeeServiceImpl extends Service implements SalaryAcct throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98769, "个税扣缴义务人下无该人员档案信息或薪资缴纳日期不在薪资周期内")); } - //替换快照数据 - shotEmpData(salaryAcctEmployeePOS, salarySobCycleDTO.getSalaryCycleFromDate()); - batchSave(salaryAcctEmployeePOS); + //保存核算人员 + saveAcctEmployeePOS(salaryAcctEmployeePOS, salarySobCycleDTO); // 记录日志 @@ -449,6 +449,19 @@ public class SalaryAcctEmployeeServiceImpl extends Service implements SalaryAcct SalaryElogConfig.salaryAcctRecordLoggerTemplate.write(loggerContext); } + private void saveAcctEmployeePOS(List salaryAcctEmployeePOS, SalarySobCycleDTO sobCycle) { + + boolean shotEmpBtn = "1".equals(getSalarySysConfService(user).getValueByCode(SalarySysConstant.SHOT_EMP_BTN)); + + //替换快照数据 + if (shotEmpBtn) { + String valueByCode = getSalarySysConfService(user).getValueByCode(SalarySysConstant.SHOT_EMP_TIME_TYPE); + shotEmpData(salaryAcctEmployeePOS, sobCycle.getSalaryCycleFromDate()); + } + //保存 + batchSave(salaryAcctEmployeePOS); + } + private void shotEmpData(List salaryAcctEmployeePOS, Date shotTime) { List employees = SalaryEntityUtil.properties(salaryAcctEmployeePOS, SalaryAcctEmployeePO::getEmployeeId, Collectors.toList()); List snapshot = getSalaryEmployeeService(user).snapshot(employees, shotTime); @@ -467,6 +480,7 @@ public class SalaryAcctEmployeeServiceImpl extends Service implements SalaryAcct salaryAcctEmployeePO.setAccountType(shotEmp.getAccountType()); }); } + @Override public void batchSave(Collection salaryAcctEmployeePOS) { if (CollectionUtils.isEmpty(salaryAcctEmployeePOS)) { @@ -580,8 +594,7 @@ public class SalaryAcctEmployeeServiceImpl extends Service implements SalaryAcct // 保存薪资核算人员 if (CollectionUtils.isNotEmpty(salaryAcctEmployeePOS)) { - shotEmpData(salaryAcctEmployeePOS, salarySobCycleDTO.getSalaryCycleFromDate()); - batchSave(salaryAcctEmployeePOS); + saveAcctEmployeePOS(salaryAcctEmployeePOS, salarySobCycleDTO); } } @@ -627,8 +640,8 @@ public class SalaryAcctEmployeeServiceImpl extends Service implements SalaryAcct List delIds = oldEmps.stream().filter(po -> !newEmpMap.containsKey(po.getTaxAgentId() + "_" + po.getEmployeeId())).map(SalaryAcctEmployeePO::getId).collect(Collectors.toList()); deleteByIds(delIds); - shotEmpData(addEmps, salarySobCycleDTO.getSalaryCycleFromDate()); - batchSave(addEmps); + + saveAcctEmployeePOS(addEmps, salarySobCycleDTO); } diff --git a/src/com/engine/salary/sys/constant/SalarySysConstant.java b/src/com/engine/salary/sys/constant/SalarySysConstant.java index b5d5384ea..4f5966095 100644 --- a/src/com/engine/salary/sys/constant/SalarySysConstant.java +++ b/src/com/engine/salary/sys/constant/SalarySysConstant.java @@ -204,4 +204,14 @@ public class SalarySysConstant { * 审批流程发起后允许修改核算数据 */ public static final String APPROVAL_CAN_EDIT_RESULT_STATUS = "APPROVAL_CAN_EDIT_RESULT_STATUS"; + + /** + * 是否采用组织快照,0:关闭 1:开启 + */ + public static final String SHOT_EMP_BTN = "SHOT_EMP_BTN"; + + /** + * 快照时间点 + */ + public static final String SHOT_EMP_TIME_TYPE = "SHOT_EMP_TIME_TYPE"; } diff --git a/src/com/engine/salary/sys/enums/ShotTimeTypeEnum.java b/src/com/engine/salary/sys/enums/ShotTimeTypeEnum.java new file mode 100644 index 000000000..a375c2314 --- /dev/null +++ b/src/com/engine/salary/sys/enums/ShotTimeTypeEnum.java @@ -0,0 +1,57 @@ +package com.engine.salary.sys.enums; + +import com.engine.salary.enums.BaseEnum; +import org.apache.commons.lang3.StringUtils; + +/** + * 快照时间点类型 + *

Copyright: Copyright (c) 2024

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +public enum ShotTimeTypeEnum implements BaseEnum { + + salaryFirstDate("salaryFirstDate", "薪资所属月第一天", 1), + salaryLastDate("salaryLastDate", "薪资所属月最后一天", 1), + salaryCycleFromDate("salaryCycleFromDate", "薪资周期起始日期", 1), + salaryCycleEndDate("salaryCycleEndDate", "薪资周期结束日期", 1); + + private String value; + + private String defaultLabel; + + private int labelId; + + + ShotTimeTypeEnum(String value, String defaultLabel, int labelId) { + this.value = value; + this.defaultLabel = defaultLabel; + this.labelId = labelId; + } + + @Override + public String getValue() { + return value; + } + + @Override + public String getDefaultLabel() { + return defaultLabel; + } + + @Override + public Integer getLabelId() { + return labelId; + } + + public static ShotTimeTypeEnum parseByValue(String value) { + for (ShotTimeTypeEnum e : ShotTimeTypeEnum.values()) { + if (StringUtils.equals(e.getValue(), value)) { + return e; + } + } + return salaryCycleFromDate; + } +} From 7c1e314f2ca4a9f9a68ea6fdc234e2468d3bfba5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Mon, 9 Dec 2024 14:20:52 +0800 Subject: [PATCH 173/218] =?UTF-8?q?=E4=BF=9D=E5=AD=98=E6=A0=B8=E7=AE=97?= =?UTF-8?q?=E4=BA=BA=E5=91=98=E6=97=B6=E5=A2=9E=E5=8A=A0=E5=BF=AB=E7=85=A7?= =?UTF-8?q?=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salary/service/impl/SalaryAcctEmployeeServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/com/engine/salary/service/impl/SalaryAcctEmployeeServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctEmployeeServiceImpl.java index 8f30feb53..3932486e6 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctEmployeeServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctEmployeeServiceImpl.java @@ -455,7 +455,7 @@ public class SalaryAcctEmployeeServiceImpl extends Service implements SalaryAcct //替换快照数据 if (shotEmpBtn) { - String valueByCode = getSalarySysConfService(user).getValueByCode(SalarySysConstant.SHOT_EMP_TIME_TYPE); +// String valueByCode = getSalarySysConfService(user).getValueByCode(SalarySysConstant.SHOT_EMP_TIME_TYPE); shotEmpData(salaryAcctEmployeePOS, sobCycle.getSalaryCycleFromDate()); } //保存 From d52e13f09e9c08f1ce4db15a9ab3b0be0b677c76 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Mon, 9 Dec 2024 14:34:57 +0800 Subject: [PATCH 174/218] =?UTF-8?q?=E8=96=AA=E8=B5=84=E6=98=8E=E7=BB=86?= =?UTF-8?q?=E6=8A=A5=E8=A1=A8=E5=A2=9E=E5=8A=A0=E8=AF=81=E4=BB=B6=E5=8F=B7?= =?UTF-8?q?=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../report/service/impl/SalaryStatisticsEmployeeServiceImpl.java | 1 + src/com/engine/salary/service/impl/SettingServiceImpl.java | 1 + 2 files changed, 2 insertions(+) diff --git a/src/com/engine/salary/report/service/impl/SalaryStatisticsEmployeeServiceImpl.java b/src/com/engine/salary/report/service/impl/SalaryStatisticsEmployeeServiceImpl.java index 808c6620e..1b45b4881 100644 --- a/src/com/engine/salary/report/service/impl/SalaryStatisticsEmployeeServiceImpl.java +++ b/src/com/engine/salary/report/service/impl/SalaryStatisticsEmployeeServiceImpl.java @@ -282,6 +282,7 @@ public class SalaryStatisticsEmployeeServiceImpl extends Service implements Sala map.put("jobTitle", Util.null2String(emp.getJobtitleName())); map.put("status", Util.null2String(NumberUtil.isNumber(emp.getStatus()) ? SalaryEmployeeStatusEnum.parseByValue(Integer.valueOf(emp.getStatus())).getDefaultLabel() : null)); map.put("workCode", Util.null2String(emp.getWorkcode())); + map.put("idNo", Util.null2String(emp.getIdNo())); map.put("companystartdate", Util.null2String(emp.getCompanystartdate())); // IncomeCategoryEnum incomeCategoryEnum = IncomeCategoryEnum.parseByValue(Integer.parseInt(se.getIncomeCategory())); diff --git a/src/com/engine/salary/service/impl/SettingServiceImpl.java b/src/com/engine/salary/service/impl/SettingServiceImpl.java index 0cea169f8..16771e0ea 100644 --- a/src/com/engine/salary/service/impl/SettingServiceImpl.java +++ b/src/com/engine/salary/service/impl/SettingServiceImpl.java @@ -183,6 +183,7 @@ public class SettingServiceImpl extends Service implements SettingService { columns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(0, "岗位"), "jobTitle")); columns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(0, "员工状态"), "status")); columns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(0, "工号"), "workCode")); + columns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(0, "证件号码"), "idNo")); columns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(0, "入职日期"), "companystartdate")); columns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(86184, "次数"), "acctTimes").setDisplay(WeaBoolAttr.FALSE)); if (StrUtil.isNotBlank(param.getName())) { From b3dcafa6f12095a81840453a8a3fc684194575ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Mon, 9 Dec 2024 15:12:33 +0800 Subject: [PATCH 175/218] =?UTF-8?q?=E7=89=88=E6=9C=AC=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resource/WEB-INF/prop/hrmSalary.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resource/WEB-INF/prop/hrmSalary.properties b/resource/WEB-INF/prop/hrmSalary.properties index 60b4e6089..f60ec7a4f 100644 --- a/resource/WEB-INF/prop/hrmSalary.properties +++ b/resource/WEB-INF/prop/hrmSalary.properties @@ -1,5 +1,5 @@ log=false defaultCloseNonStandard149=true AESEncryptScrect=990EB004A1C862721C1513AE90038C9E -version=2.17.1.2411.01 +version=2.18.1.2412.01 openFormulaForcedEditing=false \ No newline at end of file From 77f7640a2413b9f3dc499a97bbda53ceaf719db4 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Mon, 9 Dec 2024 17:13:29 +0800 Subject: [PATCH 176/218] =?UTF-8?q?=E7=A4=BE=E4=BF=9D=E5=8F=B0=E8=B4=A6?= =?UTF-8?q?=E8=BF=9B=E5=BA=A6=E6=9D=A1key=E5=A2=9E=E5=8A=A0=E4=B9=89?= =?UTF-8?q?=E5=8A=A1=E4=BA=BAid?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/SIAccountServiceImpl.java | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/com/engine/salary/service/impl/SIAccountServiceImpl.java b/src/com/engine/salary/service/impl/SIAccountServiceImpl.java index cafeb921a..7fb64e893 100644 --- a/src/com/engine/salary/service/impl/SIAccountServiceImpl.java +++ b/src/com/engine/salary/service/impl/SIAccountServiceImpl.java @@ -4915,7 +4915,7 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { public void siAccounting(AccountParam param) { //福利核算进度 - ProgressDTO salaryAcctProgressDTO = getSalaryAcctProgressService(user).getProgress(SalaryCacheKey.ACCT_PROGRESS + param.getBillMonth()); + ProgressDTO salaryAcctProgressDTO = getSalaryAcctProgressService(user).getProgress(SalaryCacheKey.ACCT_PROGRESS + param.getBillMonth() + "_" + param.getPaymentOrganization()); if (salaryAcctProgressDTO != null && salaryAcctProgressDTO.isStatus() && salaryAcctProgressDTO.getProgress().compareTo(BigDecimal.ONE) < 0) { return; } @@ -4998,10 +4998,10 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { .setProgress(BigDecimal.ZERO) .setStatus(true) .setMessage(StringUtils.EMPTY); - getSalaryAcctProgressService(user).initProgress(SalaryCacheKey.ACCT_PROGRESS + param.getBillMonth(), initProgress); + getSalaryAcctProgressService(user).initProgress(SalaryCacheKey.ACCT_PROGRESS + param.getBillMonth() + "_" + param.getPaymentOrganization(), initProgress); if (CollectionUtils.isEmpty(ids)) { - getSalaryAcctProgressService(user).finish(SalaryCacheKey.ACCT_PROGRESS + param.getBillMonth(), true); + getSalaryAcctProgressService(user).finish(SalaryCacheKey.ACCT_PROGRESS + param.getBillMonth() + "_" + param.getPaymentOrganization(), true); return; } @@ -5017,11 +5017,11 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { getSIAccountDetailTempMapper().batchDelByEmpIdsAndMonthAndPayOrg(part, param.getBillMonth(), param.getPaymentOrganization()); }); log.info("更新福利核算进度······"); - getSalaryAcctProgressService(user).finish(SalaryCacheKey.ACCT_PROGRESS + param.getBillMonth(), true); + getSalaryAcctProgressService(user).finish(SalaryCacheKey.ACCT_PROGRESS + param.getBillMonth() + "_" + param.getPaymentOrganization(), true); log.info("福利核算进度完成!"); } catch (Exception e) { log.error("account run fail", e); - getSalaryAcctProgressService(user).fail(SalaryCacheKey.ACCT_PROGRESS + param.getBillMonth(), SalaryI18nUtil.getI18nLabel(0, "福利核算出错") + ": " + e.getMessage()); + getSalaryAcctProgressService(user).fail(SalaryCacheKey.ACCT_PROGRESS + param.getBillMonth() + "_" + param.getPaymentOrganization(), SalaryI18nUtil.getI18nLabel(0, "福利核算出错") + ": " + e.getMessage()); List list = Lists.newArrayList(getInsuranceAccountBatchMapper().getByBillMonth(param.getBillMonth(), param.getPaymentOrganization())); if (CollectionUtils.isNotEmpty(list)) { @@ -5111,11 +5111,11 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { if (count % 50 == 0 || count >= ids.size()) { if (count >= ids.size()) { - getSalaryAcctProgressService(user).updateProgress(SalaryCacheKey.ACCT_PROGRESS + billMonth, BigDecimal.valueOf(0.99), false); - log.info("更新福利核算进度,当前进度为:{}", getSalaryAcctProgressService(user).getProgress(SalaryCacheKey.ACCT_PROGRESS + billMonth)); + getSalaryAcctProgressService(user).updateProgress(SalaryCacheKey.ACCT_PROGRESS + billMonth + "_" + paymentOrganization, BigDecimal.valueOf(0.99), false); + log.info("更新福利核算进度,当前进度为:{}", getSalaryAcctProgressService(user).getProgress(SalaryCacheKey.ACCT_PROGRESS + billMonth + "_" + paymentOrganization)); } else { - getSalaryAcctProgressService(user).getAndAddCalculatedQty(SalaryCacheKey.ACCT_PROGRESS + billMonth, count >= ids.size() ? count % 50 : 50); - log.info("更新福利核算进度,当前进度为:{}", getSalaryAcctProgressService(user).getProgress(SalaryCacheKey.ACCT_PROGRESS + billMonth)); + getSalaryAcctProgressService(user).getAndAddCalculatedQty(SalaryCacheKey.ACCT_PROGRESS + billMonth + "_" + paymentOrganization, count >= ids.size() ? count % 50 : 50); + log.info("更新福利核算进度,当前进度为:{}", getSalaryAcctProgressService(user).getProgress(SalaryCacheKey.ACCT_PROGRESS + billMonth) + "_" + paymentOrganization); } } @@ -5738,7 +5738,7 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { } } catch (Exception e) { log.error("福利核算数据处理失败", e); - getSalaryAcctProgressService(user).fail(SalaryCacheKey.ACCT_PROGRESS + param.getBillMonth(), SalaryI18nUtil.getI18nLabel(0, "福利核算出错") + ": " + e.getMessage()); + getSalaryAcctProgressService(user).fail(SalaryCacheKey.ACCT_PROGRESS + param.getBillMonth() + "_" + param.getPaymentOrganization(), SalaryI18nUtil.getI18nLabel(0, "福利核算出错") + ": " + e.getMessage()); throw e; } } From c872fc69ba782978f0b791c74120a7f6b02df9b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Mon, 9 Dec 2024 17:13:45 +0800 Subject: [PATCH 177/218] =?UTF-8?q?=E5=A4=84=E7=90=86=E5=88=86=E9=A1=B5?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salary/wrapper/SalarySobItemWrapper.java | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/src/com/engine/salary/wrapper/SalarySobItemWrapper.java b/src/com/engine/salary/wrapper/SalarySobItemWrapper.java index e1ed86869..07006c6a4 100644 --- a/src/com/engine/salary/wrapper/SalarySobItemWrapper.java +++ b/src/com/engine/salary/wrapper/SalarySobItemWrapper.java @@ -75,9 +75,7 @@ public class SalarySobItemWrapper extends Service { Integer searchPageSize = queryParam.getPageSize(); Integer searchCurrent = queryParam.getCurrent(); - PageInfo page = getSalaryItemService(user).listPageByParam(queryParam); - - List salaryItemList = page.getList(); + List salaryItemList = getSalaryItemService(user).listByParam(queryParam); Set taxAgentIds = getTaxAgentService(user).listAllTaxAgents((long) user.getUID()) .stream().map(TaxAgentPO::getId) @@ -95,22 +93,23 @@ public class SalarySobItemWrapper extends Service { } }) .collect(Collectors.toList()); - salaryItemList = SalaryPageUtil.buildPage(searchCurrent, searchPageSize, salaryItemList).getList(); + //最终返回的分页对象 PageInfo dtoPage = new PageInfo<>(SalaryItemSobListDTO.class); dtoPage.setPageSize(searchPageSize); dtoPage.setPageNum(searchCurrent); - dtoPage.setTotal(page.getTotal()); - if (CollectionUtils.isNotEmpty(salaryItemList)) { + dtoPage.setTotal(salaryItemList.size()); + List list = SalaryPageUtil.buildPage(searchCurrent, searchPageSize, salaryItemList).getList(); + if (CollectionUtils.isNotEmpty(list)) { // 查询公式 - Set formulaIds = SalaryEntityUtil.properties(salaryItemList, SalaryItemPO::getFormulaId); + Set formulaIds = SalaryEntityUtil.properties(list, SalaryItemPO::getFormulaId); List expressFormulas = getSalaryFormulaService(user).listExpressFormula(formulaIds); // 查询系统薪资项目 - Set sysSalaryItemIds = SalaryEntityUtil.properties(salaryItemList, SalaryItemPO::getSysSalaryItemId); + Set sysSalaryItemIds = SalaryEntityUtil.properties(list, SalaryItemPO::getSysSalaryItemId); List sysSalaryItemPOS = getSysSalaryItemService(user).listByIds(sysSalaryItemIds); // 转换成薪资项目列表dto - dtoPage.setList(SalaryItemBO.convert2itemSobListDTO(salaryItemList, expressFormulas, sysSalaryItemPOS)); + dtoPage.setList(SalaryItemBO.convert2itemSobListDTO(list, expressFormulas, sysSalaryItemPOS)); } return dtoPage; From 89ca47d65e861639da3544b3185cfbf5e1ffd297 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Tue, 10 Dec 2024 09:12:35 +0800 Subject: [PATCH 178/218] =?UTF-8?q?=E8=BF=9B=E5=BA=A6=E6=9D=A1=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/engine/salary/service/impl/SIAccountServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/com/engine/salary/service/impl/SIAccountServiceImpl.java b/src/com/engine/salary/service/impl/SIAccountServiceImpl.java index 7fb64e893..83a8b57f3 100644 --- a/src/com/engine/salary/service/impl/SIAccountServiceImpl.java +++ b/src/com/engine/salary/service/impl/SIAccountServiceImpl.java @@ -5115,7 +5115,7 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { log.info("更新福利核算进度,当前进度为:{}", getSalaryAcctProgressService(user).getProgress(SalaryCacheKey.ACCT_PROGRESS + billMonth + "_" + paymentOrganization)); } else { getSalaryAcctProgressService(user).getAndAddCalculatedQty(SalaryCacheKey.ACCT_PROGRESS + billMonth + "_" + paymentOrganization, count >= ids.size() ? count % 50 : 50); - log.info("更新福利核算进度,当前进度为:{}", getSalaryAcctProgressService(user).getProgress(SalaryCacheKey.ACCT_PROGRESS + billMonth) + "_" + paymentOrganization); + log.info("更新福利核算进度,当前进度为:{}", getSalaryAcctProgressService(user).getProgress(SalaryCacheKey.ACCT_PROGRESS + billMonth + "_" + paymentOrganization)); } } From 1715b58badfb4b3d2510af5ef9980b842ea5ba07 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Tue, 10 Dec 2024 11:00:05 +0800 Subject: [PATCH 179/218] =?UTF-8?q?=E7=A4=BE=E4=BF=9D=E7=A6=8F=E5=88=A9?= =?UTF-8?q?=E5=8F=B0=E8=B4=A6=E8=BF=9B=E5=BA=A6=E6=9D=A1=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/SIAccountServiceImpl.java | 44 ++++++++++++++++--- 1 file changed, 39 insertions(+), 5 deletions(-) diff --git a/src/com/engine/salary/service/impl/SIAccountServiceImpl.java b/src/com/engine/salary/service/impl/SIAccountServiceImpl.java index 83a8b57f3..75ca5f92d 100644 --- a/src/com/engine/salary/service/impl/SIAccountServiceImpl.java +++ b/src/com/engine/salary/service/impl/SIAccountServiceImpl.java @@ -650,6 +650,23 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { AccountParam accountParam = new AccountParam(); accountParam.setBillMonth(param.getBillMonth()); accountParam.setIds(collect); + + //福利核算进度 + ProgressDTO salaryAcctProgressDTO = getSalaryAcctProgressService(user).getProgress(SalaryCacheKey.ACCT_PROGRESS + param.getBillMonth() + "_" + param.getPaymentOrganization()); + if (salaryAcctProgressDTO != null && salaryAcctProgressDTO.isStatus() && salaryAcctProgressDTO.getProgress().compareTo(BigDecimal.ONE) < 0) { + return; + } + // 初始化进度 + ProgressDTO initProgress = new ProgressDTO() + .setTitle(SalaryI18nUtil.getI18nLabel(0, "核算中")) + .setTitleLabelId(97515L) + .setTotalQuantity(2000) + .setCalculatedQuantity(NumberUtils.INTEGER_ZERO) + .setProgress(BigDecimal.ZERO) + .setStatus(true) + .setMessage(StringUtils.EMPTY); + getSalaryAcctProgressService(user).initProgress(SalaryCacheKey.ACCT_PROGRESS + param.getBillMonth() + "_" + param.getPaymentOrganization(), initProgress); + siAccounting(accountParam); } @@ -4891,6 +4908,23 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { // AccountParam selectParam = new AccountParam(); // selectParam.setBillMonth(param.getBillMonth()); // selectParam.setPaymentOrganization(param.getPaymentOrganization()); + + //福利核算进度 + ProgressDTO salaryAcctProgressDTO = getSalaryAcctProgressService(user).getProgress(SalaryCacheKey.ACCT_PROGRESS + param.getBillMonth() + "_" + param.getPaymentOrganization()); + if (salaryAcctProgressDTO != null && salaryAcctProgressDTO.isStatus() && salaryAcctProgressDTO.getProgress().compareTo(BigDecimal.ONE) < 0) { + return String.valueOf(user.getUID()); + } + // 初始化进度 + ProgressDTO initProgress = new ProgressDTO() + .setTitle(SalaryI18nUtil.getI18nLabel(0, "核算中")) + .setTitleLabelId(97515L) + .setTotalQuantity(2000) + .setCalculatedQuantity(NumberUtils.INTEGER_ZERO) + .setProgress(BigDecimal.ZERO) + .setStatus(true) + .setMessage(StringUtils.EMPTY); + getSalaryAcctProgressService(user).initProgress(SalaryCacheKey.ACCT_PROGRESS + param.getBillMonth() + "_" + param.getPaymentOrganization(), initProgress); + ExecutorService taskExecutor = Executors.newCachedThreadPool(); taskExecutor.execute(() -> { siAccounting(param); @@ -4914,11 +4948,11 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { public void siAccounting(AccountParam param) { - //福利核算进度 - ProgressDTO salaryAcctProgressDTO = getSalaryAcctProgressService(user).getProgress(SalaryCacheKey.ACCT_PROGRESS + param.getBillMonth() + "_" + param.getPaymentOrganization()); - if (salaryAcctProgressDTO != null && salaryAcctProgressDTO.isStatus() && salaryAcctProgressDTO.getProgress().compareTo(BigDecimal.ONE) < 0) { - return; - } + // //福利核算进度 + // ProgressDTO salaryAcctProgressDTO = getSalaryAcctProgressService(user).getProgress(SalaryCacheKey.ACCT_PROGRESS + param.getBillMonth() + "_" + param.getPaymentOrganization()); + // if (salaryAcctProgressDTO != null && salaryAcctProgressDTO.isStatus() && salaryAcctProgressDTO.getProgress().compareTo(BigDecimal.ONE) < 0) { + // return; + // } log.info("开始核算,当前操作人为:{}", user.getLastname()); log.info("核算时间:{}, 核算月份:{}, 个税扣缴义务人:{}, 是否首次核算:{}", new Date(), param.getBillMonth(), param.getPaymentOrganization(), param.isFlag()); From b769e762ca1d3e1317bf94ec9b516fb47e30411d Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Tue, 10 Dec 2024 11:50:20 +0800 Subject: [PATCH 180/218] =?UTF-8?q?=E7=A4=BE=E4=BF=9D=E7=A6=8F=E5=88=A9?= =?UTF-8?q?=E5=8F=B0=E8=B4=A6=E9=9D=9E=E7=B3=BB=E7=BB=9F=E4=BA=BA=E5=91=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/engine/salary/service/impl/SIAccountServiceImpl.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/com/engine/salary/service/impl/SIAccountServiceImpl.java b/src/com/engine/salary/service/impl/SIAccountServiceImpl.java index 75ca5f92d..18d48fccd 100644 --- a/src/com/engine/salary/service/impl/SIAccountServiceImpl.java +++ b/src/com/engine/salary/service/impl/SIAccountServiceImpl.java @@ -5077,6 +5077,7 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { if (!isFirstFlag) { // 不是首次核算,需要把社保历史数据取出 historyDetailData.addAll(getInsuranceAccountDetailMapper().list(InsuranceAccountDetailParam.builder().billMonth(billMonth).paymentOrganization(paymentOrganization.toString()).employeeIds(ids).build())); + historyDetailData.addAll(getInsuranceAccountDetailMapper().extList(InsuranceAccountDetailParam.builder().billMonth(billMonth).paymentOrganization(paymentOrganization.toString()).employeeIds(ids).build())); } else { employeeList = getSalaryEmployeeService(user).listByIds(ids); } From b8fdc4dde61c6197e74cbdf52ac185d4b18ac460 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Tue, 10 Dec 2024 16:25:20 +0800 Subject: [PATCH 181/218] =?UTF-8?q?=E9=9A=90=E8=97=8F=E9=A1=B9=E7=9B=AE?= =?UTF-8?q?=E5=AF=BC=E5=85=A5=E5=AF=BC=E5=87=BA=E4=B8=8D=E6=98=BE=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../engine/salary/service/impl/SalaryAcctExcelServiceImpl.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java index 97e872736..ce89f8196 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java @@ -521,6 +521,7 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc // 查询薪资核算记录所用的薪资账套的薪资项目副本 List salarySobItems = config.getSalarySobItems(); + salarySobItems = salarySobItems.stream().filter(salarySobItemPO -> salarySobItemPO.getItemHide() == null || salarySobItemPO.getItemHide() == 0).collect(Collectors.toList()); Set salaryItemIds = SalaryEntityUtil.properties(salarySobItems, SalarySobItemPO::getSalaryItemId); // 查询薪资项目 List salaryItems = getSalaryItemService(user).listByIds(salaryItemIds); @@ -615,6 +616,7 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc // 查询薪资核算记录所用的薪资账套的薪资项目副本 List salarySobItems = salaryAcctConfig.getSalarySobItems(); + salarySobItems = salarySobItems.stream().filter(salarySobItemPO -> salarySobItemPO.getItemHide() == null || salarySobItemPO.getItemHide() == 0).collect(Collectors.toList()); Set salaryItemIds = SalaryEntityUtil.properties(salarySobItems, SalarySobItemPO::getSalaryItemId); // 查询薪资项目 List salaryItems = getSalaryItemService(user).listByIds(salaryItemIds); From bd3b815bcf29db5d4481520d89e581fbcca04fae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Wed, 11 Dec 2024 11:04:42 +0800 Subject: [PATCH 182/218] =?UTF-8?q?=E9=9A=90=E8=97=8F=E9=A1=B9=E7=9B=AE?= =?UTF-8?q?=E5=AF=BC=E5=85=A5=E5=AF=BC=E5=87=BA=E4=B8=8D=E6=98=BE=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../engine/salary/entity/salaryacct/po/SalaryAcctRecordPO.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/com/engine/salary/entity/salaryacct/po/SalaryAcctRecordPO.java b/src/com/engine/salary/entity/salaryacct/po/SalaryAcctRecordPO.java index 65d771bdf..c2b8fd33c 100644 --- a/src/com/engine/salary/entity/salaryacct/po/SalaryAcctRecordPO.java +++ b/src/com/engine/salary/entity/salaryacct/po/SalaryAcctRecordPO.java @@ -77,14 +77,12 @@ public class SalaryAcctRecordPO { * 回算(上次核算的薪资核算记录id) */ @Deprecated -// //备用字段1", ignore = true) private Long superId; /** * 回算(最原始的那次薪资核算记录id) */ @Deprecated -// //备用字段2", ignore = true) private Long rootId; /** From b373f062c7ce335978f10314b4f6d8de825e63b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Wed, 11 Dec 2024 11:07:36 +0800 Subject: [PATCH 183/218] =?UTF-8?q?=E5=A4=84=E7=90=86=E5=86=B2=E7=AA=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salary/wrapper/SalaryCommonWrapper.java | 15 +++------------ 1 file changed, 3 insertions(+), 12 deletions(-) diff --git a/src/com/engine/salary/wrapper/SalaryCommonWrapper.java b/src/com/engine/salary/wrapper/SalaryCommonWrapper.java index 93265ca9f..7a961cb35 100644 --- a/src/com/engine/salary/wrapper/SalaryCommonWrapper.java +++ b/src/com/engine/salary/wrapper/SalaryCommonWrapper.java @@ -5,8 +5,6 @@ import com.engine.core.impl.Service; import com.engine.salary.entity.browser.dto.BrowserDataDTO; import com.engine.salary.entity.browser.param.BrowserDataQueryParam; import com.engine.salary.entity.salaryitem.po.SalaryItemPO; -import com.engine.salary.entity.setting.param.PageListSettingQueryParam; -import com.engine.salary.entity.setting.param.PageListSettingSaveParam; import com.engine.salary.entity.setting.dto.PageListTemplateDTO; import com.engine.salary.entity.setting.dto.PageListTemplateDetailDTO; import com.engine.salary.entity.setting.param.*; @@ -16,17 +14,13 @@ import com.engine.salary.service.SalarySobItemService; import com.engine.salary.service.SettingService; import com.engine.salary.service.impl.SalaryCacheServiceImpl; import com.engine.salary.service.impl.SalarySobItemServiceImpl; +import com.engine.salary.service.impl.SettingServiceImpl; import com.engine.salary.util.JsonUtil; import com.engine.salary.util.page.PageInfo; import com.engine.salary.util.page.SalaryPageUtil; import org.apache.commons.lang3.StringUtils; -import com.engine.salary.service.impl.SettingServiceImpl; -import com.engine.salary.util.page.PageInfo; import weaver.hrm.User; -import java.util.List; -import java.util.Map; - import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -73,9 +67,6 @@ public class SalaryCommonWrapper extends Service { return null; } - - public void savePageListSetting(PageListSettingSaveParam pageListSettingSaveParam) { - getSettingService(user).savePageListSetting(pageListSettingSaveParam); public void savePageListSetting(PageListSettingSaveParam param) { getSettingService(user).savePageListSetting(param); } @@ -91,7 +82,7 @@ public class SalaryCommonWrapper extends Service { public PageListTemplateDetailDTO getPageListTemplate(PageListTemplateQueryParam param) { - return getSettingService(user).getPageListTemplate(param); + return getSettingService(user).getPageListTemplate(param); } public List getPageListTemplates(PageListTemplateQueryParam param) { @@ -107,7 +98,7 @@ public class SalaryCommonWrapper extends Service { } public void deletePageListTemplate(PageListTemplateDeleteParam param) { - getSettingService(user).deletePageListTemplate(param); + getSettingService(user).deletePageListTemplate(param); } public void changePageListTemplate(PageListTemplateChangeParam param) { From 4ddb123b3d56191637714558675fe653b29eeb25 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Wed, 11 Dec 2024 15:22:08 +0800 Subject: [PATCH 184/218] =?UTF-8?q?=E7=A7=BB=E5=8A=A8=E7=AB=AF=E8=8E=B7?= =?UTF-8?q?=E5=8F=96=E5=B7=A5=E8=B5=84=E5=8D=95=E5=88=97=E8=A1=A8=E4=BC=98?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entity/salaryBill/dto/SalaryMySalaryBillListDTO.java | 2 ++ .../engine/salary/service/impl/SalarySendServiceImpl.java | 6 +++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/com/engine/salary/entity/salaryBill/dto/SalaryMySalaryBillListDTO.java b/src/com/engine/salary/entity/salaryBill/dto/SalaryMySalaryBillListDTO.java index 0cce85393..8824004c6 100644 --- a/src/com/engine/salary/entity/salaryBill/dto/SalaryMySalaryBillListDTO.java +++ b/src/com/engine/salary/entity/salaryBill/dto/SalaryMySalaryBillListDTO.java @@ -34,5 +34,7 @@ public class SalaryMySalaryBillListDTO { private Long employeeId; + private String salaryCode; + } diff --git a/src/com/engine/salary/service/impl/SalarySendServiceImpl.java b/src/com/engine/salary/service/impl/SalarySendServiceImpl.java index 6bce71730..0b394d56a 100644 --- a/src/com/engine/salary/service/impl/SalarySendServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalarySendServiceImpl.java @@ -17,6 +17,7 @@ import com.engine.salary.config.SalaryElogConfig; import com.engine.salary.constant.SalaryArchiveConstant; import com.engine.salary.constant.SalaryItemConstant; import com.engine.salary.constant.SalaryTemplateSalaryItemSetGroupConstant; +import com.engine.salary.encrypt.AESEncryptUtil; import com.engine.salary.encrypt.EncryptUtil; import com.engine.salary.entity.datacollection.AddUpSituation; import com.engine.salary.entity.datacollection.DataCollectionEmployee; @@ -822,7 +823,10 @@ public class SalarySendServiceImpl extends Service implements SalarySendService } return true; }) - .peek(dto -> dto.setEmployeeId((long) user.getUID())) + .peek(dto -> { + dto.setEmployeeId((long) user.getUID()); + dto.setSalaryCode(AESEncryptUtil.encrypt4SalaryBill(String.valueOf(user.getUID()))); + }) .collect(Collectors.toList()); PageInfo pageInfo = new PageInfo<>(list, SalaryMySalaryBillListDTO.class); From 83df05b7632b70ec5662662ef2de4ea58f462649 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Thu, 12 Dec 2024 10:18:07 +0800 Subject: [PATCH 185/218] =?UTF-8?q?=E6=8E=A7=E5=88=B6=E4=B8=8B=E8=B4=A6?= =?UTF-8?q?=E5=8F=B7=E7=B1=BB=E5=9E=8B=E6=98=BE=E7=A4=BA=E9=9A=90=E8=97=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entity/salaryarchive/bo/SalaryArchiveBO.java | 6 ++++-- .../salary/wrapper/SalaryArchiveWrapper.java | 14 ++++++++++++-- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/src/com/engine/salary/entity/salaryarchive/bo/SalaryArchiveBO.java b/src/com/engine/salary/entity/salaryarchive/bo/SalaryArchiveBO.java index aa5ae2961..4261d8da2 100644 --- a/src/com/engine/salary/entity/salaryarchive/bo/SalaryArchiveBO.java +++ b/src/com/engine/salary/entity/salaryarchive/bo/SalaryArchiveBO.java @@ -61,7 +61,7 @@ public class SalaryArchiveBO { * * @param salaryItems */ - public static List buildSalaryArchiveTable(List salaryItems) { + public static List buildSalaryArchiveTable(List salaryItems, boolean openSecondaryAccount) { // 表格表头 List columns = new ArrayList<>(); WeaTableColumn idColumn = new WeaTableColumn("100px", "id", "id"); @@ -72,7 +72,9 @@ public class SalaryArchiveBO { employeeIdColumn.setDisplay(WeaBoolAttr.FALSE); columns.add(employeeIdColumn); columns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(85429, "姓名"), "username")); - columns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(85429, "账号类型"), "accountType")); + if (openSecondaryAccount) { + columns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(85429, "账号类型"), "accountType")); + } columns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(86184, "个税扣缴义务人"), "taxAgentName")); columns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(86185, "分部"), "subcompanyName")); columns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(86185, "部门"), "departmentName")); diff --git a/src/com/engine/salary/wrapper/SalaryArchiveWrapper.java b/src/com/engine/salary/wrapper/SalaryArchiveWrapper.java index 22a642feb..85977afe1 100644 --- a/src/com/engine/salary/wrapper/SalaryArchiveWrapper.java +++ b/src/com/engine/salary/wrapper/SalaryArchiveWrapper.java @@ -26,6 +26,8 @@ import com.engine.salary.exception.SalaryRunTimeException; import com.engine.salary.process.salaryArchive.SalaryArchiveProcessQueryParam; import com.engine.salary.service.*; import com.engine.salary.service.impl.*; +import com.engine.salary.sys.service.SalarySysConfService; +import com.engine.salary.sys.service.impl.SalarySysConfServiceImpl; import com.engine.salary.util.SalaryI18nUtil; import com.engine.salary.util.page.PageInfo; import com.google.common.collect.Lists; @@ -38,6 +40,8 @@ import weaver.hrm.User; import java.util.*; import java.util.stream.Collectors; +import static com.engine.salary.sys.constant.SalarySysConstant.OPEN_SECONDARY_ACCOUNT; + /** * 薪资档案 *

Copyright: Copyright (c) 2022

@@ -73,6 +77,12 @@ public class SalaryArchiveWrapper extends Service { return ServiceUtil.getService(SalaryEmployeeServiceImpl.class, user); } + private SalarySysConfService getSalarySysConfService(User user) { + return ServiceUtil.getService(SalarySysConfServiceImpl.class, user); + } + + //主次账号是否开启 + boolean openSecondaryAccount = "1".equals(getSalarySysConfService(user).getValueByCode(OPEN_SECONDARY_ACCOUNT)); /** * 薪资档案列表(分页) @@ -101,7 +111,7 @@ public class SalaryArchiveWrapper extends Service { //动态列组装 - List columns = SalaryArchiveBO.buildSalaryArchiveTable(salaryItems); + List columns = SalaryArchiveBO.buildSalaryArchiveTable(salaryItems, openSecondaryAccount); SalaryWeaTable table = new SalaryWeaTable(user, SalaryArchiveListDTO.class); table.setColumns(columns); @@ -153,7 +163,7 @@ public class SalaryArchiveWrapper extends Service { //动态列组装 - List columns = SalaryArchiveBO.buildSalaryArchiveTable(salaryItems); + List columns = SalaryArchiveBO.buildSalaryArchiveTable(salaryItems, openSecondaryAccount); SalaryWeaTable table = new SalaryWeaTable(user, SalaryArchiveListDTO.class); table.setColumns(columns); From 19a43857037b97494173f192f2f2df2d83c7acb5 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Thu, 12 Dec 2024 15:30:26 +0800 Subject: [PATCH 186/218] =?UTF-8?q?=E7=A4=BE=E4=BF=9D=E5=9F=BA=E6=95=B0?= =?UTF-8?q?=E8=87=AA=E5=8A=A8=E8=B0=83=E6=95=B4=20=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salary/service/impl/SIArchivesServiceImpl.java | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/com/engine/salary/service/impl/SIArchivesServiceImpl.java b/src/com/engine/salary/service/impl/SIArchivesServiceImpl.java index fe07b84a8..87f1cf0ba 100644 --- a/src/com/engine/salary/service/impl/SIArchivesServiceImpl.java +++ b/src/com/engine/salary/service/impl/SIArchivesServiceImpl.java @@ -3278,6 +3278,7 @@ public class SIArchivesServiceImpl extends Service implements SIArchivesService .build(); String combineErrorMsg = ""; + log.info("oldSocialInfoListSize:" + oldSocialInfoList.size()); //组装新数据 if (oldSocialInfoList.size() == 1) { //老数据 @@ -3546,6 +3547,7 @@ public class SIArchivesServiceImpl extends Service implements SIArchivesService return null; } + log.info("自动调整前 基数信息{}", paymentBaseJson); for (Map.Entry entry : paymentBaseJson.entrySet()) { //判断福利值是否为空/数字 @@ -3558,9 +3560,9 @@ public class SIArchivesServiceImpl extends Service implements SIArchivesService //根据福利方案id、险种id、缴纳对象、缴费状态查询明细 List insuranceSchemeDetailPOList = getInsuranceSchemeDetailMapper().getByPI(primaryId, Long.valueOf(entry.getKey())); - log.info("福利方案id: {},, 福利明细项id:{}", primaryId, Long.valueOf(entry.getKey())); + log.info("自动调整 福利方案id: {},, 福利明细项id:{}", primaryId, Long.valueOf(entry.getKey())); if (insuranceSchemeDetailPOList.size() == 0) { - log.info("根据福利方案id、险种id、缴纳对象查询明细为null!福利方案id: {}, 福利明细项id:{}", primaryId, Long.valueOf(entry.getKey())); + log.info("自动调整 根据福利方案id、险种id、缴纳对象查询明细为null!福利方案id: {}, 福利明细项id:{}", primaryId, Long.valueOf(entry.getKey())); throw new SalaryRunTimeException("根据福利方案id、险种id、缴纳对象查询明细为null!福利方案id: "+primaryId+", 福利明细项id:{}"+ Long.valueOf(entry.getKey())); } List isPaymentList = insuranceSchemeDetailPOList.stream() @@ -3574,18 +3576,19 @@ public class SIArchivesServiceImpl extends Service implements SIArchivesService if (lowerLimit != null && lowerLimit.length() > 0 && Double.parseDouble(entry.getValue()) < Double.parseDouble(lowerLimit)) { //数值低于对应福利明细下限 entry.setValue(lowerLimit); + log.info("自动调整 福利方案id: {},, 福利明细项id:{},数值{}低于对应福利明细下限{} ", primaryId, Long.valueOf(entry.getKey()), entry.getValue(), lowerLimit); } if (upperLimit != null && upperLimit.length() > 0 && Double.parseDouble(entry.getValue()) > Double.parseDouble(upperLimit)) { //数值高于对应福利明细上限 entry.setValue(upperLimit); + log.info("自动调整 福利方案id: {},, 福利明细项id:{},数值{}数值高于对应福利明细上限{} ", primaryId, Long.valueOf(entry.getKey()), entry.getValue(), upperLimit); } } else { - log.info("福利明细项属于未缴费状态,不对上下限进行约束"); + log.info("自动调整 福利明细项属于未缴费状态,不对上下限进行约束"); return null; } - - } + log.info("自动调整后 基数信息{}", paymentBaseJson); return JSON.toJSONString(paymentBaseJson); } From 66912f62a4648e040af8528c2754a44b708e94cd Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Thu, 12 Dec 2024 16:16:18 +0800 Subject: [PATCH 187/218] =?UTF-8?q?=E7=A4=BE=E4=BF=9D=E5=9F=BA=E6=95=B0?= =?UTF-8?q?=E8=87=AA=E5=8A=A8=E8=B0=83=E6=95=B4=20=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/engine/salary/service/impl/SIArchivesServiceImpl.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/com/engine/salary/service/impl/SIArchivesServiceImpl.java b/src/com/engine/salary/service/impl/SIArchivesServiceImpl.java index 87f1cf0ba..c29c44ac9 100644 --- a/src/com/engine/salary/service/impl/SIArchivesServiceImpl.java +++ b/src/com/engine/salary/service/impl/SIArchivesServiceImpl.java @@ -3567,6 +3567,7 @@ public class SIArchivesServiceImpl extends Service implements SIArchivesService } List isPaymentList = insuranceSchemeDetailPOList.stream() .filter(f -> f.getIsPayment().equals(IsPaymentEnum.YES.getValue()) && f.getPaymentScope().equals(paymentScope)).collect(Collectors.toList()); + log.info("自动调整 isPaymentList", isPaymentList.size()); if (isPaymentList.size() > 0) { InsuranceSchemeDetailPO insuranceSchemeDetailPO = isPaymentList.get(0); From c13cc9d0a29d9855ab3f87c10624d9e8695d0481 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Thu, 12 Dec 2024 18:24:00 +0800 Subject: [PATCH 188/218] =?UTF-8?q?=E5=A4=84=E7=90=86=E8=96=AA=E8=B5=84?= =?UTF-8?q?=E6=A1=A3=E6=A1=88=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salary/entity/salaryarchive/bo/SalaryArchiveExcelBO.java | 2 +- src/com/engine/salary/mapper/archive/SalaryArchiveMapper.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/com/engine/salary/entity/salaryarchive/bo/SalaryArchiveExcelBO.java b/src/com/engine/salary/entity/salaryarchive/bo/SalaryArchiveExcelBO.java index e368c3d2d..41b6050bb 100644 --- a/src/com/engine/salary/entity/salaryarchive/bo/SalaryArchiveExcelBO.java +++ b/src/com/engine/salary/entity/salaryarchive/bo/SalaryArchiveExcelBO.java @@ -782,7 +782,7 @@ public class SalaryArchiveExcelBO extends Service { // .modifier(importHandleParam.getCurrentEmployeeId()) .deleteType(NumberUtils.INTEGER_ZERO) .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) - .employeeType(importHandleParam.isExtEmp() ? 1 : 0) + .employeeType(importHandleParam.isExtEmp() ? 1 : null) .build(); // 定薪action 保持状态为待定薪 if (importHandleParam.isInit() && importHandleParam.getKeepStatus() != null && importHandleParam.getKeepStatus().equals(Boolean.TRUE)) { diff --git a/src/com/engine/salary/mapper/archive/SalaryArchiveMapper.xml b/src/com/engine/salary/mapper/archive/SalaryArchiveMapper.xml index e9d06ab89..833128372 100644 --- a/src/com/engine/salary/mapper/archive/SalaryArchiveMapper.xml +++ b/src/com/engine/salary/mapper/archive/SalaryArchiveMapper.xml @@ -441,7 +441,7 @@ hrsa_salary_archive t LEFT JOIN hrsa_external_employee e ON e.id = t.employee_id WHERE t.delete_type = 0 - and t.employee_type is not null + and t.employee_type = 1 AND t.id IN From 874de98a91b224c1362113425f261e0bf9f55ab1 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Fri, 13 Dec 2024 16:19:56 +0800 Subject: [PATCH 189/218] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=9F=BA=E6=95=B0?= =?UTF-8?q?=E6=B2=A1=E6=9C=89=E8=87=AA=E5=8A=A8=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../engine/salary/service/impl/SIArchivesServiceImpl.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/com/engine/salary/service/impl/SIArchivesServiceImpl.java b/src/com/engine/salary/service/impl/SIArchivesServiceImpl.java index c29c44ac9..0f44bf523 100644 --- a/src/com/engine/salary/service/impl/SIArchivesServiceImpl.java +++ b/src/com/engine/salary/service/impl/SIArchivesServiceImpl.java @@ -3567,7 +3567,7 @@ public class SIArchivesServiceImpl extends Service implements SIArchivesService } List isPaymentList = insuranceSchemeDetailPOList.stream() .filter(f -> f.getIsPayment().equals(IsPaymentEnum.YES.getValue()) && f.getPaymentScope().equals(paymentScope)).collect(Collectors.toList()); - log.info("自动调整 isPaymentList", isPaymentList.size()); + log.info("自动调整 isPaymentList: {}", isPaymentList.size()); if (isPaymentList.size() > 0) { InsuranceSchemeDetailPO insuranceSchemeDetailPO = isPaymentList.get(0); @@ -3585,8 +3585,7 @@ public class SIArchivesServiceImpl extends Service implements SIArchivesService log.info("自动调整 福利方案id: {},, 福利明细项id:{},数值{}数值高于对应福利明细上限{} ", primaryId, Long.valueOf(entry.getKey()), entry.getValue(), upperLimit); } } else { - log.info("自动调整 福利明细项属于未缴费状态,不对上下限进行约束"); - return null; + log.info("自动调整 福利方案id: {},, 福利明细项id:{}福利明细项属于未缴费状态,不对上下限进行约束", primaryId, Long.valueOf(entry.getKey())); } } log.info("自动调整后 基数信息{}", paymentBaseJson); From ec88fc5b101cf62a4be4b334b61b309d96cb6701 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Fri, 13 Dec 2024 16:29:24 +0800 Subject: [PATCH 190/218] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=9F=BA=E6=95=B0?= =?UTF-8?q?=E6=B2=A1=E6=9C=89=E8=87=AA=E5=8A=A8=E8=B0=83=E6=95=B4=20?= =?UTF-8?q?=E6=97=A5=E5=BF=97=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/engine/salary/service/impl/SIArchivesServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/com/engine/salary/service/impl/SIArchivesServiceImpl.java b/src/com/engine/salary/service/impl/SIArchivesServiceImpl.java index 0f44bf523..6d45abc1f 100644 --- a/src/com/engine/salary/service/impl/SIArchivesServiceImpl.java +++ b/src/com/engine/salary/service/impl/SIArchivesServiceImpl.java @@ -3585,7 +3585,7 @@ public class SIArchivesServiceImpl extends Service implements SIArchivesService log.info("自动调整 福利方案id: {},, 福利明细项id:{},数值{}数值高于对应福利明细上限{} ", primaryId, Long.valueOf(entry.getKey()), entry.getValue(), upperLimit); } } else { - log.info("自动调整 福利方案id: {},, 福利明细项id:{}福利明细项属于未缴费状态,不对上下限进行约束", primaryId, Long.valueOf(entry.getKey())); + log.info("自动调整 福利明细项属于未缴费状态,不对上下限进行约束"); } } log.info("自动调整后 基数信息{}", paymentBaseJson); From 4d90d0d8f05c2bf10f98957d82b66d9da1dfd417 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Mon, 16 Dec 2024 10:38:08 +0800 Subject: [PATCH 191/218] =?UTF-8?q?=E6=94=AF=E6=8C=81=E4=B8=BB=E8=B4=A6?= =?UTF-8?q?=E5=8F=B7=E6=9F=A5=E7=9C=8B=E6=AC=A1=E8=B4=A6=E5=8F=B7=E5=B7=A5?= =?UTF-8?q?=E8=B5=84=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/engine/salary/mapper/SQLMapper.java | 2 + src/com/engine/salary/mapper/SQLMapper.xml | 5 + .../service/impl/SalarySendServiceImpl.java | 101 +++++------------- 3 files changed, 36 insertions(+), 72 deletions(-) diff --git a/src/com/engine/salary/mapper/SQLMapper.java b/src/com/engine/salary/mapper/SQLMapper.java index 4d998fa88..9afff661a 100644 --- a/src/com/engine/salary/mapper/SQLMapper.java +++ b/src/com/engine/salary/mapper/SQLMapper.java @@ -15,4 +15,6 @@ import java.util.Map; **/ public interface SQLMapper { List runSQL(@Param("sql") String sql); + + List listLong(@Param("sql") String sql); } diff --git a/src/com/engine/salary/mapper/SQLMapper.xml b/src/com/engine/salary/mapper/SQLMapper.xml index bba76972c..b487b3f53 100644 --- a/src/com/engine/salary/mapper/SQLMapper.xml +++ b/src/com/engine/salary/mapper/SQLMapper.xml @@ -4,4 +4,9 @@ + + + diff --git a/src/com/engine/salary/service/impl/SalarySendServiceImpl.java b/src/com/engine/salary/service/impl/SalarySendServiceImpl.java index 0b394d56a..30662220c 100644 --- a/src/com/engine/salary/service/impl/SalarySendServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalarySendServiceImpl.java @@ -50,6 +50,7 @@ import com.engine.salary.enums.salarybill.*; import com.engine.salary.enums.salaryitem.SalaryDataTypeEnum; import com.engine.salary.enums.salarysend.SalarySendGrantTypeEnum; import com.engine.salary.exception.SalaryRunTimeException; +import com.engine.salary.mapper.SQLMapper; import com.engine.salary.mapper.salaryacct.SalaryAcctEmployeeMapper; import com.engine.salary.mapper.salaryacct.SalaryAcctRecordMapper; import com.engine.salary.mapper.salaryacct.SalaryAcctResultMapper; @@ -65,6 +66,7 @@ import com.engine.salary.util.SalaryDateUtil; 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.excel.ExcelUtil; import com.engine.salary.util.page.PageInfo; import com.engine.salary.util.page.SalaryPageUtil; @@ -198,6 +200,10 @@ public class SalarySendServiceImpl extends Service implements SalarySendService return ServiceUtil.getService(SalaryBillBaseSetServiceImpl.class, user); } + private SQLMapper getSQLMapper() { + return MapperProxyFactory.getProxy(SQLMapper.class); + } + @Override public SalarySendPO getById(Long salarySendId) { return mapper.getById(salarySendId); @@ -479,9 +485,18 @@ public class SalarySendServiceImpl extends Service implements SalarySendService if (salarySendInfo == null) { throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(100511, "工资单信息不存在")); } + Long employeeId = salarySendInfo.getEmployeeId(); + if (currentEmployeeId.compareTo(employeeId) != 0) { - if (currentEmployeeId.compareTo(salarySendInfo.getEmployeeId()) != 0) { - throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(100511, "当前账号无法查看此工资单")); + //主账号可以查看次账号工资单 + String sql = "select id from Hrmresource a where belongto= " + currentEmployeeId; + List belongtoIds = getSQLMapper().listLong(sql); + if (CollUtil.isNotEmpty(belongtoIds) && belongtoIds.contains(employeeId)) { + //切换user +// this.user = new User(new Integer(employeeId + "")); + } else { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(100511, "当前账号无法查看此工资单")); + } } // 获取默认模板信息 @@ -562,7 +577,7 @@ public class SalarySendServiceImpl extends Service implements SalarySendService // 获取薪资项目数据 Long salaryAcctRecordId = salarySendInfo.getSalaryAcctRecordId(); - List salaryAcctResultPOS = getSalaryAcctResultMapper().listSome(SalaryAcctResultPO.builder().salaryAcctRecordId(salaryAcctRecordId).employeeId(currentEmployeeId).build()); + List salaryAcctResultPOS = getSalaryAcctResultMapper().listSome(SalaryAcctResultPO.builder().salaryAcctRecordId(salaryAcctRecordId).employeeId(employeeId).build()); if (CollUtil.isEmpty(salaryAcctResultPOS)) { throw new SalaryRunTimeException("薪资核算结果不存在!"); } @@ -641,16 +656,16 @@ public class SalarySendServiceImpl extends Service implements SalarySendService } TaxAgentPO taxAgentPO = getTaxAgentService(user).getById(salarySendInfo.getTaxAgentId()); - DataCollectionEmployee simpleEmployee = getSalaryEmployeeService(user).getEmployeeById(salarySendInfo.getEmployeeId()); + DataCollectionEmployee simpleEmployee = getSalaryEmployeeService(user).getEmployeeById(employeeId); SalaryAcctEmployeePO acctEmployeePO = getSalaryAcctEmployeeService(user).getById(salaryAcctResultPOS.get(0).getSalaryAcctEmpId()); SalaryAcctEmployeeBO.copyAcctEmp(simpleEmployee, acctEmployeePO); buildEmployeeInfo(employeeInformation, simpleEmployee, taxAgentPO.getName(), SalaryAcctResultBO.buildEmployeeFieldName()); map.put("employeeInformation", employeeInformation); map.put("salaryGroups", itemSetListDTOS); - salaryTemplate.setTheme(getBillTitle(salaryTemplate.getTheme(), salaryMonth, currentEmployeeId)); + salaryTemplate.setTheme(getBillTitle(salaryTemplate.getTheme(), salaryMonth, employeeId)); // 工资单水印文本型动态变量 == 处理 - handleSalaryWatermark(salaryTemplate, salarySendInfo, currentEmployeeId); + handleSalaryWatermark(salaryTemplate, salarySendInfo, employeeId); map.put("salaryTemplate", salaryTemplate); map.put("salaryAcctResult", salaryAcctResultS); @@ -704,7 +719,7 @@ public class SalarySendServiceImpl extends Service implements SalarySendService MonthTypeEnum monthType = salaryBillViewingLimitSetting.getMonthType(); LocalDate localDate; if (monthType == MonthTypeEnum.SALARY_DATE) { - localDate = LocalDate.now().plusMonths(-salaryBillViewingLimitSetting.getLimitMonth()+1).withDayOfMonth(1); + localDate = LocalDate.now().plusMonths(-salaryBillViewingLimitSetting.getLimitMonth() + 1).withDayOfMonth(1); } else { localDate = LocalDate.now().plusMonths(-salaryBillViewingLimitSetting.getLimitMonth()); } @@ -720,7 +735,7 @@ public class SalarySendServiceImpl extends Service implements SalarySendService * @param salaryTemplate * @param salarySendInfo */ - private void handleSalaryWatermark(SalaryTemplatePO salaryTemplate, SalarySendInfoPO salarySendInfo, Long currentEmployeeId) { + private void handleSalaryWatermark(SalaryTemplatePO salaryTemplate, SalarySendInfoPO salarySendInfo, Long employeeId) { SalaryBillWatermarkDTO salaryBillWatermark = JsonUtil.parseObject(salaryTemplate.getSalaryWatermark(), SalaryBillWatermarkDTO.class); if (Objects.isNull(salaryBillWatermark) || Boolean.FALSE.equals(salaryBillWatermark.getWatermarkStatus())) { return; @@ -734,7 +749,7 @@ public class SalarySendServiceImpl extends Service implements SalarySendService boolean needQueryEmp = (boolean) salaryBillWatermark.getWmSetting().getOrDefault("needQueryEmp", false); DataCollectionEmployee simpleEmployee = null; if (needQueryEmp) { - simpleEmployee = getSalaryEmployeeService(user).getEmployeeById(currentEmployeeId); + simpleEmployee = getSalaryEmployeeService(user).getEmployeeById(employeeId); } String wmText = salaryBillWatermark.getWmSetting().getOrDefault("wmText", StringUtils.EMPTY).toString(); @@ -865,12 +880,12 @@ public class SalarySendServiceImpl extends Service implements SalarySendService * * @param theme * @param salaryMonth - * @param currentEmployeeId + * @param employeeId * @return */ - private String getBillTitle(String theme, Date salaryMonth, Long currentEmployeeId) { + private String getBillTitle(String theme, Date salaryMonth, Long employeeId) { String companyName = ""; - if (currentEmployeeId != null) { + if (employeeId != null) { ResourceComInfo resourceComInfo = null; SubCompanyComInfo subCompanyComInfo = new SubCompanyComInfo(); try { @@ -879,7 +894,7 @@ public class SalarySendServiceImpl extends Service implements SalarySendService } catch (Exception e) { log.error("资源异常", e); } - companyName = subCompanyComInfo.getSubCompanyname(resourceComInfo.getSubCompanyID(currentEmployeeId + "")); + companyName = subCompanyComInfo.getSubCompanyname(resourceComInfo.getSubCompanyID(employeeId + "")); } return theme.replace("${companyName}", companyName) .replace("${salaryMonth}", new SimpleDateFormat("yyyy年MM月").format(salaryMonth)) @@ -934,7 +949,7 @@ public class SalarySendServiceImpl extends Service implements SalarySendService .jobtitleName(simpleEmployee.getJobtitleName()) .jobtitleId(simpleEmployee.getJobtitleId()) .status(simpleEmployee.getStatus() == null ? "" : simpleEmployee.getStatus()) - .statusName(simpleEmployee.getStatus() == null ? "" : UserStatusEnum.parseByValue(new Integer(Util.null2s(simpleEmployee.getStatus(),"1"))).getDefaultLabel()) + .statusName(simpleEmployee.getStatus() == null ? "" : UserStatusEnum.parseByValue(new Integer(Util.null2s(simpleEmployee.getStatus(), "1"))).getDefaultLabel()) .accountTypeName(simpleEmployee.getAccountType() == null ? "" : AccountTypeEnum.parseByValue(simpleEmployee.getAccountType()).getDefaultLabel()) .telephone(StringUtils.isEmpty(simpleEmployee.getTelephone()) ? "" : simpleEmployee.getTelephone()) .username(StringUtils.isEmpty(simpleEmployee.getUsername()) ? "" : simpleEmployee.getUsername()) @@ -1328,64 +1343,6 @@ public class SalarySendServiceImpl extends Service implements SalarySendService } -// /** -// * 发送消息 -// * -// * @param salarySend -// * @param enableSendList -// * @param salaryTemplate -// * @param currentTenantKey -// */ -// private void sendMessage(SalarySendPO salarySend, List> enableSendList, SalaryTemplatePO salaryTemplate, String tenantName, Long currentEmployeeId, String currentTenantKey) { -// if (StringUtils.isNotBlank(salaryTemplate.getBackground())) { -// FileData fileByte = fileDownloadClient.getFileByte(Long.valueOf(salaryTemplate.getBackground()), currentTenantKey); -// String encode = Base64Encoder.encode(fileByte.getData()); -// salaryTemplate.setBackground(encode); -// } -// // 邮箱打开 -// boolean isEmailOpen = salaryTemplate.getEmailStatus().equals(SalaryTemplateWhetherEnum.TRUE.getValue()); -// -// LocalDate salaryMonth = salarySend.getSalaryMonth(); -// String yearI18n = SalaryI18nUtil.getI18nLabel(currentTenantKey, currentEmployeeId, 100325, "年"); -// String monthI18n = SalaryI18nUtil.getI18nLabel(currentTenantKey, currentEmployeeId, 100326, "月"); -// String text = salaryMonth.getYear() + -// yearI18n + -// salaryMonth.getMonth().getValue() + -// monthI18n + -// SalaryI18nUtil.getI18nLabel(currentTenantKey, currentEmployeeId, 100520, "工资待发明细"); -// -// UserEntity sendUser = null; -// // 标题 -// String title = getBillTitle(salaryTemplate.getTheme(), salaryMonth, tenantName, currentEmployeeId, currentTenantKey); -// -// // 获取所有人员信息 -// List ids = enableSendList.stream().map(e->Long.valueOf(e.get("employeeId").toString())).collect(Collectors.toList()); -// List allEmployees = hrmCommonEmployeeService.getEmployeeByIds(ids, currentTenantKey); -// List listDTOS = JSONArray.parseArray(salaryTemplate.getSalaryItemSetting(), SalaryTemplateSalaryItemSetListDTO.class); -// Optional optionalEmployeeInformation = listDTOS.stream().filter(e -> SalaryTemplateSalaryItemSetGroupConstant.EMPLOYEE_INFO_GROUP_ID.equals(e.getGroupId())).findFirst(); -// SalaryTemplateSalaryItemSetListDTO employeeInformation = optionalEmployeeInformation.orElse(null); -// Map employeeField = SalaryAcctResultBO.buildEmployeeFieldName(); -// enableSendList.forEach(e -> { -// Optional optionalSimpleEmployee = allEmployees.stream().filter(f->f.getEmployeeId().equals(Long.valueOf(e.get("employeeId").toString()))).findFirst(); -// if (optionalSimpleEmployee.isPresent()) { -// buildEmployeeInfo(employeeInformation, optionalSimpleEmployee.get(), e.get("taxAgent").toString(), employeeField); -// } -// -// List receivers = Collections.singletonList( -// SalarySendBO.buildUser(Long.valueOf(e.get("employeeId").toString()), e.get("email") == null ? "" : e.get("email").toString(), currentTenantKey)); -// Entity entity = SalarySendBO.buildEntity(e.get("id").toString(), SalaryI18nUtil.getI18nLabel(currentTenantKey, currentEmployeeId, 94626, "工资单")); -// EmailEntity emailInfo = new EmailEntity(); -// // 邮箱打开 -// if (isEmailOpen) { -// String emailContent = SalarySendBO.buildEmailContent(e, employeeInformation, title, salaryTemplate); -// emailInfo = SalarySendBO.buildEmailInfo(text, emailContent, salaryTemplate.getSendEmailId()); -// } -// SendMessageEntity message = SalarySendBO.buildSendMessageEntity(text, sendUser, receivers, entity, emailInfo); -// log.info("开始发送============:{}", JsonUtil.toJsonString(message)); -// // 开始发送 -// log.info("发送结果===:{}", JsonUtil.toJsonString(asyncSystemMessageRest.sendMsg(message))); -// }); -// } @Override public Map withdraw(SalarySendWithdrawParam param) { From 94da3d3a319a38a57b93979a38d328b39df0d44f Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Mon, 16 Dec 2024 17:46:58 +0800 Subject: [PATCH 192/218] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=8A=A5=E8=A1=A8?= =?UTF-8?q?=E5=AF=BC=E5=87=BA=EF=BC=8C=E5=8D=95=E5=85=83=E6=A0=BC=E6=A0=BC?= =?UTF-8?q?=E5=BC=8F=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salary/report/wrapper/SalaryStatisticsReportWrapper.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/com/engine/salary/report/wrapper/SalaryStatisticsReportWrapper.java b/src/com/engine/salary/report/wrapper/SalaryStatisticsReportWrapper.java index c516bb229..9d990ea50 100644 --- a/src/com/engine/salary/report/wrapper/SalaryStatisticsReportWrapper.java +++ b/src/com/engine/salary/report/wrapper/SalaryStatisticsReportWrapper.java @@ -472,7 +472,7 @@ public class SalaryStatisticsReportWrapper extends Service { SalaryStatisticsItemPO salaryStatisticsItemPO = salaryStatisticsItemMap.get(salaryItemId); if (salaryStatisticsItemPO != null) { Optional textItemOptional = Arrays.stream(salaryStatisticsItemPO.getItemValue().split(",")).filter(itemId -> !numberItemIds.contains(itemId)).findFirst(); - row.add((!textItemOptional.isPresent() && NumberUtils.isCreatable(Utils.null2String(map.get(k)))) ? new BigDecimal(Utils.null2String(map.get(k))) : map.getOrDefault(k, StringUtils.EMPTY)); + row.add((!textItemOptional.isPresent() && NumberUtils.isCreatable(Utils.null2String(map.get(k)).replaceAll(",", ""))) ? new BigDecimal(Utils.null2String(map.get(k)).replaceAll(",", "")) : map.getOrDefault(k, StringUtils.EMPTY)); } else { row.add(map.getOrDefault(k, StringUtils.EMPTY)); } From 8c83e8ed6cf92a71e123f7ca0572a4005a5d4a47 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Mon, 16 Dec 2024 17:48:03 +0800 Subject: [PATCH 193/218] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=85=8D=E7=A8=8E?= =?UTF-8?q?=E6=94=B6=E5=85=A5=E3=80=81=E5=95=86=E4=B8=9A=E5=81=A5=E5=BA=B7?= =?UTF-8?q?=E4=BF=9D=E9=99=A9=E3=80=81=E7=A8=8E=E5=BB=B6=E5=85=BB=E8=80=81?= =?UTF-8?q?=E4=BF=9D=E9=99=A9=E3=80=81=E5=87=86=E4=BA=88=E6=89=A3=E9=99=A4?= =?UTF-8?q?=E7=9A=84=E6=8D=90=E8=B5=A0=E9=A2=9D=E3=80=81=E5=87=8F=E5=85=8D?= =?UTF-8?q?=E7=A8=8E=E9=A2=9D=E3=80=81=E5=85=B6=E4=BB=96=E9=99=84=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resource/sqlupgrade/DM/sql202412160303.sql | 122 +++++ resource/sqlupgrade/DM/sql202412160403.sql | 18 + resource/sqlupgrade/GS/sql202412160303.sql | 122 +++++ resource/sqlupgrade/GS/sql202412160403.sql | 18 + resource/sqlupgrade/JC/sql202412160303.sql | 122 +++++ resource/sqlupgrade/JC/sql202412160403.sql | 18 + resource/sqlupgrade/Mysql/sql202412160303.sql | 132 ++++++ resource/sqlupgrade/Mysql/sql202412160403.sql | 12 + .../sqlupgrade/Oracle/sql202412160303.sql | 127 ++++++ .../sqlupgrade/Oracle/sql202412160403.sql | 12 + resource/sqlupgrade/PG/sql202412160303.sql | 125 ++++++ resource/sqlupgrade/PG/sql202412160403.sql | 12 + .../sqlupgrade/SQLServer/sql202412160303.sql | 126 ++++++ .../sqlupgrade/SQLServer/sql202412160403.sql | 12 + resource/sqlupgrade/ST/sql202412160303.sql | 122 +++++ resource/sqlupgrade/ST/sql202412160403.sql | 18 + .../dto/OtherDeductionRecordDTO.java | 1 + .../datacollection/po/DerateDeductionPO.java | 77 ++++ .../po/EndowmentInsurancePO.java | 86 ++++ .../datacollection/po/FreeIncomePO.java | 75 ++++ .../datacollection/po/GrantDonationPO.java | 87 ++++ .../datacollection/po/HealthInsurancePO.java | 81 ++++ .../datacollection/po/OtherDeductionPO.java | 17 + .../po/OtherDerateDeductionPO.java | 74 ++++ .../datacollection/po/PersonalPensionPO.java | 92 ++++ .../bo/TaxDeclarationRequest.java | 2 + .../EnumDeductionDataSource.java | 70 +++ .../EndowmentInsuranceMapper.java | 73 +++ .../EndowmentInsuranceMapper.xml | 360 +++++++++++++++ .../datacollection/FreeIncomeMapper.java | 72 +++ .../datacollection/FreeIncomeMapper.xml | 315 +++++++++++++ .../datacollection/GrantDonationMapper.java | 73 +++ .../datacollection/GrantDonationMapper.xml | 375 ++++++++++++++++ .../datacollection/HealthInsuranceMapper.java | 73 +++ .../datacollection/HealthInsuranceMapper.xml | 345 +++++++++++++++ .../OtherDerateDeductionMapper.java | 79 ++++ .../OtherDerateDeductionMapper.xml | 417 ++++++++++++++++++ 37 files changed, 3962 insertions(+) create mode 100644 resource/sqlupgrade/DM/sql202412160303.sql create mode 100644 resource/sqlupgrade/DM/sql202412160403.sql create mode 100644 resource/sqlupgrade/GS/sql202412160303.sql create mode 100644 resource/sqlupgrade/GS/sql202412160403.sql create mode 100644 resource/sqlupgrade/JC/sql202412160303.sql create mode 100644 resource/sqlupgrade/JC/sql202412160403.sql create mode 100644 resource/sqlupgrade/Mysql/sql202412160303.sql create mode 100644 resource/sqlupgrade/Mysql/sql202412160403.sql create mode 100644 resource/sqlupgrade/Oracle/sql202412160303.sql create mode 100644 resource/sqlupgrade/Oracle/sql202412160403.sql create mode 100644 resource/sqlupgrade/PG/sql202412160303.sql create mode 100644 resource/sqlupgrade/PG/sql202412160403.sql create mode 100644 resource/sqlupgrade/SQLServer/sql202412160303.sql create mode 100644 resource/sqlupgrade/SQLServer/sql202412160403.sql create mode 100644 resource/sqlupgrade/ST/sql202412160303.sql create mode 100644 resource/sqlupgrade/ST/sql202412160403.sql create mode 100644 src/com/engine/salary/entity/datacollection/po/DerateDeductionPO.java create mode 100644 src/com/engine/salary/entity/datacollection/po/EndowmentInsurancePO.java create mode 100644 src/com/engine/salary/entity/datacollection/po/FreeIncomePO.java create mode 100644 src/com/engine/salary/entity/datacollection/po/GrantDonationPO.java create mode 100644 src/com/engine/salary/entity/datacollection/po/HealthInsurancePO.java create mode 100644 src/com/engine/salary/entity/datacollection/po/OtherDerateDeductionPO.java create mode 100644 src/com/engine/salary/entity/datacollection/po/PersonalPensionPO.java create mode 100644 src/com/engine/salary/enums/datacollection/EnumDeductionDataSource.java create mode 100644 src/com/engine/salary/mapper/datacollection/EndowmentInsuranceMapper.java create mode 100644 src/com/engine/salary/mapper/datacollection/EndowmentInsuranceMapper.xml create mode 100644 src/com/engine/salary/mapper/datacollection/FreeIncomeMapper.java create mode 100644 src/com/engine/salary/mapper/datacollection/FreeIncomeMapper.xml create mode 100644 src/com/engine/salary/mapper/datacollection/GrantDonationMapper.java create mode 100644 src/com/engine/salary/mapper/datacollection/GrantDonationMapper.xml create mode 100644 src/com/engine/salary/mapper/datacollection/HealthInsuranceMapper.java create mode 100644 src/com/engine/salary/mapper/datacollection/HealthInsuranceMapper.xml create mode 100644 src/com/engine/salary/mapper/datacollection/OtherDerateDeductionMapper.java create mode 100644 src/com/engine/salary/mapper/datacollection/OtherDerateDeductionMapper.xml diff --git a/resource/sqlupgrade/DM/sql202412160303.sql b/resource/sqlupgrade/DM/sql202412160303.sql new file mode 100644 index 000000000..76dc4c94e --- /dev/null +++ b/resource/sqlupgrade/DM/sql202412160303.sql @@ -0,0 +1,122 @@ +create table hrsa_other_derate_deduction +( + id number primary key , + create_time date, + update_time date, + creator number, + delete_type int default 0, + tenant_key varchar2(10), + main_id number, + tax_year_month date, + employee_id number, + tax_agent_id number, + file_status int, + other_deduction varchar2(50), + remark varchar2(255) +); +/ + +create table hrsa_health_insurance +( + id number primary key , + create_time date, + update_time date, + creator number, + delete_type int default 0, + tenant_key varchar2(10), + main_id number, + tax_year_month date, + employee_id number, + tax_agent_id number, + file_status int, + identification_number varchar2(255), + effective_date date, + year_premium varchar2(50), + month_premium varchar2(50), + current_deduction varchar2(50) +); +/ + +create table hrsa_grant_donation +( + id number primary key , + create_time date, + update_time date, + creator number, + delete_type int default 0, + tenant_key varchar2(10), + main_id number, + tax_year_month date, + employee_id number, + tax_agent_id number, + file_status int, + recipient_name varchar2(255), + tax_code varchar2(255), + donation_number varchar2(255), + donate_date date, + donate_amount varchar2(50), + deduction_proportion varchar2(10), + actual_deduction varchar2(50) +); +/ + +create table hrsa_endowment_insurance +( + id number primary key , + create_time date, + update_time date, + creator number, + delete_type int default 0, + tenant_key varchar2(10), + main_id number, + tax_year_month date, + employee_id number, + tax_agent_id number, + file_status int, + account_number varchar2(255), + check_code varchar2(255), + year_premium varchar2(50), + month_premium varchar2(50), + current_deduction varchar2(50), + deduction_month date +); +/ + +create table hrsa_derate_deduction +( + id number primary key , + create_time date, + update_time date, + creator number, + delete_type int default 0, + tenant_key varchar2(10), + main_id number, + tax_year_month date, + employee_id number, + tax_agent_id number, + file_status int, + derate_item varchar2(255), + derate_property varchar2(255), + derate_amount varchar2(255) +); +/ + +create table hrsa_free_income +( + id number primary key , + create_time date, + update_time date, + creator number, + delete_type int default 0, + tenant_key varchar2(10), + main_id number, + tax_year_month date, + employee_id number, + tax_agent_id number, + file_status int, + free_item varchar2(255), + free_property varchar2(255), + free_amount varchar2(255) +); +/ + diff --git a/resource/sqlupgrade/DM/sql202412160403.sql b/resource/sqlupgrade/DM/sql202412160403.sql new file mode 100644 index 000000000..07a4c3c3b --- /dev/null +++ b/resource/sqlupgrade/DM/sql202412160403.sql @@ -0,0 +1,18 @@ +alter table hrsa_derate_deduction add employee_type int; +/ + +alter table hrsa_endowment_insurance add employee_type int; +/ + +alter table hrsa_free_income add employee_type int; +/ + +alter table hrsa_grant_donation add employee_type int; +/ + +alter table hrsa_health_insurance add employee_type int; +/ + +alter table hrsa_other_derate_deduction add employee_type int; +/ + diff --git a/resource/sqlupgrade/GS/sql202412160303.sql b/resource/sqlupgrade/GS/sql202412160303.sql new file mode 100644 index 000000000..76dc4c94e --- /dev/null +++ b/resource/sqlupgrade/GS/sql202412160303.sql @@ -0,0 +1,122 @@ +create table hrsa_other_derate_deduction +( + id number primary key , + create_time date, + update_time date, + creator number, + delete_type int default 0, + tenant_key varchar2(10), + main_id number, + tax_year_month date, + employee_id number, + tax_agent_id number, + file_status int, + other_deduction varchar2(50), + remark varchar2(255) +); +/ + +create table hrsa_health_insurance +( + id number primary key , + create_time date, + update_time date, + creator number, + delete_type int default 0, + tenant_key varchar2(10), + main_id number, + tax_year_month date, + employee_id number, + tax_agent_id number, + file_status int, + identification_number varchar2(255), + effective_date date, + year_premium varchar2(50), + month_premium varchar2(50), + current_deduction varchar2(50) +); +/ + +create table hrsa_grant_donation +( + id number primary key , + create_time date, + update_time date, + creator number, + delete_type int default 0, + tenant_key varchar2(10), + main_id number, + tax_year_month date, + employee_id number, + tax_agent_id number, + file_status int, + recipient_name varchar2(255), + tax_code varchar2(255), + donation_number varchar2(255), + donate_date date, + donate_amount varchar2(50), + deduction_proportion varchar2(10), + actual_deduction varchar2(50) +); +/ + +create table hrsa_endowment_insurance +( + id number primary key , + create_time date, + update_time date, + creator number, + delete_type int default 0, + tenant_key varchar2(10), + main_id number, + tax_year_month date, + employee_id number, + tax_agent_id number, + file_status int, + account_number varchar2(255), + check_code varchar2(255), + year_premium varchar2(50), + month_premium varchar2(50), + current_deduction varchar2(50), + deduction_month date +); +/ + +create table hrsa_derate_deduction +( + id number primary key , + create_time date, + update_time date, + creator number, + delete_type int default 0, + tenant_key varchar2(10), + main_id number, + tax_year_month date, + employee_id number, + tax_agent_id number, + file_status int, + derate_item varchar2(255), + derate_property varchar2(255), + derate_amount varchar2(255) +); +/ + +create table hrsa_free_income +( + id number primary key , + create_time date, + update_time date, + creator number, + delete_type int default 0, + tenant_key varchar2(10), + main_id number, + tax_year_month date, + employee_id number, + tax_agent_id number, + file_status int, + free_item varchar2(255), + free_property varchar2(255), + free_amount varchar2(255) +); +/ + diff --git a/resource/sqlupgrade/GS/sql202412160403.sql b/resource/sqlupgrade/GS/sql202412160403.sql new file mode 100644 index 000000000..07a4c3c3b --- /dev/null +++ b/resource/sqlupgrade/GS/sql202412160403.sql @@ -0,0 +1,18 @@ +alter table hrsa_derate_deduction add employee_type int; +/ + +alter table hrsa_endowment_insurance add employee_type int; +/ + +alter table hrsa_free_income add employee_type int; +/ + +alter table hrsa_grant_donation add employee_type int; +/ + +alter table hrsa_health_insurance add employee_type int; +/ + +alter table hrsa_other_derate_deduction add employee_type int; +/ + diff --git a/resource/sqlupgrade/JC/sql202412160303.sql b/resource/sqlupgrade/JC/sql202412160303.sql new file mode 100644 index 000000000..76dc4c94e --- /dev/null +++ b/resource/sqlupgrade/JC/sql202412160303.sql @@ -0,0 +1,122 @@ +create table hrsa_other_derate_deduction +( + id number primary key , + create_time date, + update_time date, + creator number, + delete_type int default 0, + tenant_key varchar2(10), + main_id number, + tax_year_month date, + employee_id number, + tax_agent_id number, + file_status int, + other_deduction varchar2(50), + remark varchar2(255) +); +/ + +create table hrsa_health_insurance +( + id number primary key , + create_time date, + update_time date, + creator number, + delete_type int default 0, + tenant_key varchar2(10), + main_id number, + tax_year_month date, + employee_id number, + tax_agent_id number, + file_status int, + identification_number varchar2(255), + effective_date date, + year_premium varchar2(50), + month_premium varchar2(50), + current_deduction varchar2(50) +); +/ + +create table hrsa_grant_donation +( + id number primary key , + create_time date, + update_time date, + creator number, + delete_type int default 0, + tenant_key varchar2(10), + main_id number, + tax_year_month date, + employee_id number, + tax_agent_id number, + file_status int, + recipient_name varchar2(255), + tax_code varchar2(255), + donation_number varchar2(255), + donate_date date, + donate_amount varchar2(50), + deduction_proportion varchar2(10), + actual_deduction varchar2(50) +); +/ + +create table hrsa_endowment_insurance +( + id number primary key , + create_time date, + update_time date, + creator number, + delete_type int default 0, + tenant_key varchar2(10), + main_id number, + tax_year_month date, + employee_id number, + tax_agent_id number, + file_status int, + account_number varchar2(255), + check_code varchar2(255), + year_premium varchar2(50), + month_premium varchar2(50), + current_deduction varchar2(50), + deduction_month date +); +/ + +create table hrsa_derate_deduction +( + id number primary key , + create_time date, + update_time date, + creator number, + delete_type int default 0, + tenant_key varchar2(10), + main_id number, + tax_year_month date, + employee_id number, + tax_agent_id number, + file_status int, + derate_item varchar2(255), + derate_property varchar2(255), + derate_amount varchar2(255) +); +/ + +create table hrsa_free_income +( + id number primary key , + create_time date, + update_time date, + creator number, + delete_type int default 0, + tenant_key varchar2(10), + main_id number, + tax_year_month date, + employee_id number, + tax_agent_id number, + file_status int, + free_item varchar2(255), + free_property varchar2(255), + free_amount varchar2(255) +); +/ + diff --git a/resource/sqlupgrade/JC/sql202412160403.sql b/resource/sqlupgrade/JC/sql202412160403.sql new file mode 100644 index 000000000..07a4c3c3b --- /dev/null +++ b/resource/sqlupgrade/JC/sql202412160403.sql @@ -0,0 +1,18 @@ +alter table hrsa_derate_deduction add employee_type int; +/ + +alter table hrsa_endowment_insurance add employee_type int; +/ + +alter table hrsa_free_income add employee_type int; +/ + +alter table hrsa_grant_donation add employee_type int; +/ + +alter table hrsa_health_insurance add employee_type int; +/ + +alter table hrsa_other_derate_deduction add employee_type int; +/ + diff --git a/resource/sqlupgrade/Mysql/sql202412160303.sql b/resource/sqlupgrade/Mysql/sql202412160303.sql new file mode 100644 index 000000000..c10d7fee8 --- /dev/null +++ b/resource/sqlupgrade/Mysql/sql202412160303.sql @@ -0,0 +1,132 @@ +create table hrsa_other_derate_deduction +( + id bigint primary key comment 'ID' , + create_time datetime comment 'ʱ' , + update_time datetime comment '޸ʱ' , + creator bigint comment 'id' , + delete_type int default 0 comment 'Ƿɾ' , + tenant_key varchar(10) comment '⻧KEY' , + main_id bigint comment 'id' , + tax_year_month date comment '˰' , + employee_id bigint comment 'Աid' , + tax_agent_id bigint comment '˰۽id' , + file_status int comment '鵵״̬ 0δ鵵 1ѹ鵵' , + other_deduction varchar(50) comment '˰' , + remark varchar(255) comment 'ע' +) +; + + +create table hrsa_health_insurance +( + id bigint primary key comment 'ID' , + create_time datetime comment 'ʱ' , + update_time datetime comment '޸ʱ' , + creator bigint comment 'id' , + delete_type int default 0 comment 'Ƿɾ' , + tenant_key varchar(10) comment '⻧KEY' , + main_id bigint comment 'id' , + tax_year_month date comment '˰' , + employee_id bigint comment 'Աid' , + tax_agent_id bigint comment '˰۽id' , + file_status int comment '鵵״̬ 0δ鵵 1ѹ鵵' , + identification_number varchar(255) comment '˰ʶ' , + effective_date date comment 'Ч' , + year_premium varchar(50) comment 'ȱ' , + month_premium varchar(50) comment '¶ȱ' , + current_deduction varchar(50) comment 'ڿ۳' +) +; + + +create table hrsa_grant_donation +( + id bigint primary key comment 'ID' , + create_time datetime comment 'ʱ' , + update_time datetime comment '޸ʱ' , + creator bigint comment 'id' , + delete_type int default 0 comment 'Ƿɾ' , + tenant_key varchar(10) comment '⻧KEY' , + main_id bigint comment 'id' , + tax_year_month date comment '˰' , + employee_id bigint comment 'Աid' , + tax_agent_id bigint comment '˰۽id' , + file_status int comment '鵵״̬ 0δ鵵 1ѹ鵵' , + recipient_name varchar(255) comment 'λ' , + tax_code varchar(255) comment 'λ˰ʶ' , + donation_number varchar(255) comment 'ƾ֤' , + donate_date date comment '' , + donate_amount varchar(50) comment '' , + deduction_proportion varchar(10) comment '۳' , + actual_deduction varchar(50) comment 'ʵʿ۳' +) +; + + + +create table hrsa_endowment_insurance +( + id bigint primary key comment 'ID' , + create_time datetime comment 'ʱ' , + update_time datetime comment '޸ʱ' , + creator bigint comment 'id' , + delete_type int default 0 comment 'Ƿɾ' , + tenant_key varchar(10) comment '⻧KEY' , + main_id bigint comment 'id' , + tax_year_month date comment '˰' , + employee_id bigint comment 'Աid' , + tax_agent_id bigint comment '˰۽id' , + file_status int comment '鵵״̬ 0δ鵵 1ѹ鵵' , + account_number varchar(255) comment '˰˻' , + check_code varchar(255) comment '˰У' , + year_premium varchar(50) comment 'ȱ' , + month_premium varchar(50) comment '¶ȱ' , + current_deduction varchar(50) comment 'ڿ۳' , + deduction_month date comment '۳·' +) +; + + +create table hrsa_derate_deduction +( + id bigint primary key comment 'ID' , + create_time datetime comment 'ʱ' , + update_time datetime comment '޸ʱ' , + creator bigint comment 'id' , + delete_type int default 0 comment 'Ƿɾ' , + tenant_key varchar(10) comment '⻧KEY' , + main_id bigint comment 'id' , + tax_year_month date comment '˰' , + employee_id bigint comment 'Աid' , + tax_agent_id bigint comment '˰۽id' , + file_status int comment '鵵״̬ 0δ鵵 1ѹ鵵' , + derate_item varchar(255) comment '' , + derate_property varchar(255) comment '' , + derate_amount varchar(255) comment '˰' +) +; + + + +create table hrsa_free_income +( + id bigint primary key comment 'ID' , + create_time datetime comment 'ʱ' , + update_time datetime comment '޸ʱ' , + creator bigint comment 'id' , + delete_type int default 0 comment 'Ƿɾ' , + tenant_key varchar(10) comment '⻧KEY' , + main_id bigint comment 'id' , + tax_year_month date comment '˰' , + employee_id bigint comment 'Աid' , + tax_agent_id bigint comment '˰۽id' , + file_status int comment '鵵״̬ 0δ鵵 1ѹ鵵' , + free_item varchar(255) comment '˰' , + free_property varchar(255) comment '˰' , + free_amount varchar(255) comment '˰' +) +; + + + + diff --git a/resource/sqlupgrade/Mysql/sql202412160403.sql b/resource/sqlupgrade/Mysql/sql202412160403.sql new file mode 100644 index 000000000..601430556 --- /dev/null +++ b/resource/sqlupgrade/Mysql/sql202412160403.sql @@ -0,0 +1,12 @@ +alter table hrsa_derate_deduction add employee_type int +; +alter table hrsa_endowment_insurance add employee_type int +; +alter table hrsa_free_income add employee_type int +; +alter table hrsa_grant_donation add employee_type int +; +alter table hrsa_health_insurance add employee_type int +; +alter table hrsa_other_derate_deduction add employee_type int +; diff --git a/resource/sqlupgrade/Oracle/sql202412160303.sql b/resource/sqlupgrade/Oracle/sql202412160303.sql new file mode 100644 index 000000000..e5f509f83 --- /dev/null +++ b/resource/sqlupgrade/Oracle/sql202412160303.sql @@ -0,0 +1,127 @@ +create table hrsa_other_derate_deduction +( + id number primary key , + create_time date, + update_time date, + creator number, + delete_type int default 0, + tenant_key varchar2(10), + main_id number, + tax_year_month date, + employee_id number, + tax_agent_id number, + file_status int, + other_deduction varchar2(50), + remark varchar2(255) +) +/ + + +create table hrsa_health_insurance +( + id number primary key , + create_time date, + update_time date, + creator number, + delete_type int default 0, + tenant_key varchar2(10), + main_id number, + tax_year_month date, + employee_id number, + tax_agent_id number, + file_status int, + identification_number varchar2(255), + effective_date date, + year_premium varchar2(50), + month_premium varchar2(50), + current_deduction varchar2(50) +) +/ + + + +create table hrsa_grant_donation +( + id number primary key , + create_time date, + update_time date, + creator number, + delete_type int default 0, + tenant_key varchar2(10), + main_id number, + tax_year_month date, + employee_id number, + tax_agent_id number, + file_status int, + recipient_name varchar2(255), + tax_code varchar2(255), + donation_number varchar2(255), + donate_date date, + donate_amount varchar2(50), + deduction_proportion varchar2(10), + actual_deduction varchar2(50) +) +/ + + +create table hrsa_endowment_insurance +( + id number primary key , + create_time date, + update_time date, + creator number, + delete_type int default 0, + tenant_key varchar2(10), + main_id number, + tax_year_month date, + employee_id number, + tax_agent_id number, + file_status int, + account_number varchar2(255), + check_code varchar2(255), + year_premium varchar2(50), + month_premium varchar2(50), + current_deduction varchar2(50), + deduction_month date +) +/ + + +create table hrsa_derate_deduction +( + id number primary key , + create_time date, + update_time date, + creator number, + delete_type int default 0, + tenant_key varchar2(10), + main_id number, + tax_year_month date, + employee_id number, + tax_agent_id number, + file_status int, + derate_item varchar2(255), + derate_property varchar2(255), + derate_amount varchar2(255) +) +/ + + +create table hrsa_free_income +( + id number primary key , + create_time date, + update_time date, + creator number, + delete_type int default 0, + tenant_key varchar2(10), + main_id number, + tax_year_month date, + employee_id number, + tax_agent_id number, + file_status int, + free_item varchar2(255), + free_property varchar2(255), + free_amount varchar2(255) +) +/ \ No newline at end of file diff --git a/resource/sqlupgrade/Oracle/sql202412160403.sql b/resource/sqlupgrade/Oracle/sql202412160403.sql new file mode 100644 index 000000000..b17420382 --- /dev/null +++ b/resource/sqlupgrade/Oracle/sql202412160403.sql @@ -0,0 +1,12 @@ +alter table hrsa_derate_deduction add employee_type int +/ +alter table hrsa_endowment_insurance add employee_type int +/ +alter table hrsa_free_income add employee_type int +/ +alter table hrsa_grant_donation add employee_type int +/ +alter table hrsa_health_insurance add employee_type int +/ +alter table hrsa_other_derate_deduction add employee_type int +/ \ No newline at end of file diff --git a/resource/sqlupgrade/PG/sql202412160303.sql b/resource/sqlupgrade/PG/sql202412160303.sql new file mode 100644 index 000000000..214e842a1 --- /dev/null +++ b/resource/sqlupgrade/PG/sql202412160303.sql @@ -0,0 +1,125 @@ +create table hrsa_other_derate_deduction +( + id bigint primary key , + create_time timestamp, + update_time timestamp, + creator bigint, + delete_type int default 0, + tenant_key varchar(10), + main_id bigint, + tax_year_month date, + employee_id bigint, + tax_agent_id bigint, + file_status int, + other_deduction varchar(50), + remark varchar(255) +); +/ + +create table hrsa_health_insurance +( + id bigint primary key , + create_time timestamp, + update_time timestamp, + creator bigint, + delete_type int default 0, + tenant_key varchar(10), + main_id bigint, + tax_year_month date, + employee_id bigint, + tax_agent_id bigint, + file_status int, + identification_number varchar(255), + effective_date date, + year_premium varchar(50), + month_premium varchar(50), + current_deduction varchar(50) +); +/ + + +create table hrsa_grant_donation +( + id bigint primary key , + create_time timestamp, + update_time timestamp, + creator bigint, + delete_type int default 0, + tenant_key varchar(10), + main_id bigint, + tax_year_month date, + employee_id bigint, + tax_agent_id bigint, + file_status int, + recipient_name varchar(255), + tax_code varchar(255), + donation_number varchar(255), + donate_date date, + donate_amount varchar(50), + deduction_proportion varchar(10), + actual_deduction varchar(50) +); +/ + + +create table hrsa_endowment_insurance +( + id bigint primary key , + create_time timestamp, + update_time timestamp, + creator bigint, + delete_type int default 0, + tenant_key varchar(10), + main_id bigint, + tax_year_month date, + employee_id bigint, + tax_agent_id bigint, + file_status int, + account_number varchar(255), + check_code varchar(255), + year_premium varchar(50), + month_premium varchar(50), + current_deduction varchar(50), + deduction_month date +); +/ + + +create table hrsa_derate_deduction +( + id bigint primary key , + create_time timestamp, + update_time timestamp, + creator bigint, + delete_type int default 0, + tenant_key varchar(10), + main_id bigint, + tax_year_month date, + employee_id bigint, + tax_agent_id bigint, + file_status int, + derate_item varchar(255), + derate_property varchar(255), + derate_amount varchar(255) +); +/ + + +create table hrsa_free_income +( + id bigint primary key , + create_time timestamp, + update_time timestamp, + creator bigint, + delete_type int default 0, + tenant_key varchar(10), + main_id bigint, + tax_year_month date, + employee_id bigint, + tax_agent_id bigint, + file_status int, + free_item varchar(255), + free_property varchar(255), + free_amount varchar(255) +); +/ \ No newline at end of file diff --git a/resource/sqlupgrade/PG/sql202412160403.sql b/resource/sqlupgrade/PG/sql202412160403.sql new file mode 100644 index 000000000..89d123c70 --- /dev/null +++ b/resource/sqlupgrade/PG/sql202412160403.sql @@ -0,0 +1,12 @@ +alter table hrsa_derate_deduction add employee_type int; +/ +alter table hrsa_endowment_insurance add employee_type int; +/ +alter table hrsa_free_income add employee_type int; +/ +alter table hrsa_grant_donation add employee_type int; +/ +alter table hrsa_health_insurance add employee_type int; +/ +alter table hrsa_other_derate_deduction add employee_type int; +/ \ No newline at end of file diff --git a/resource/sqlupgrade/SQLServer/sql202412160303.sql b/resource/sqlupgrade/SQLServer/sql202412160303.sql new file mode 100644 index 000000000..de7f1091f --- /dev/null +++ b/resource/sqlupgrade/SQLServer/sql202412160303.sql @@ -0,0 +1,126 @@ +create table hrsa_other_derate_deduction +( + id bigint primary key , + create_time datetime, + update_time datetime, + creator bigint, + delete_type int default 0, + tenant_key nvarchar(10), + main_id bigint, + tax_year_month datetime, + employee_id bigint, + tax_agent_id bigint, + file_status int, + other_deduction nvarchar(50), + remark nvarchar(255) +) +GO + + +create table hrsa_health_insurance +( + id bigint primary key , + create_time datetime, + update_time datetime, + creator bigint, + delete_type int default 0, + tenant_key nvarchar(10), + main_id bigint, + tax_year_month datetime, + employee_id bigint, + tax_agent_id bigint, + file_status int, + identification_number nvarchar(255), + effective_date datetime, + year_premium nvarchar(50), + month_premium nvarchar(50), + current_deduction nvarchar(50) +) +GO + + +create table hrsa_grant_donation +( + id bigint primary key , + create_time datetime, + update_time datetime, + creator bigint, + delete_type int default 0, + tenant_key nvarchar(10), + main_id bigint, + tax_year_month datetime, + employee_id bigint, + tax_agent_id bigint, + file_status int, + recipient_name nvarchar(255), + tax_code nvarchar(255), + donation_number nvarchar(255), + donate_date datetime, + donate_amount nvarchar(50), + deduction_proportion nvarchar(10), + actual_deduction nvarchar(50) +) +GO + + +create table hrsa_endowment_insurance +( + id bigint primary key , + create_time datetime, + update_time datetime, + creator bigint, + delete_type int default 0, + tenant_key nvarchar(10), + main_id bigint, + tax_year_month datetime, + employee_id bigint, + tax_agent_id bigint, + file_status int, + account_number nvarchar(255), + check_code nvarchar(255), + year_premium nvarchar(50), + month_premium nvarchar(50), + current_deduction nvarchar(50), + deduction_month datetime +) +GO + + +create table hrsa_derate_deduction +( + id bigint primary key , + create_time datetime, + update_time datetime, + creator bigint, + delete_type int default 0, + tenant_key nvarchar(10), + main_id bigint, + tax_year_month datetime, + employee_id bigint, + tax_agent_id bigint, + file_status int, + derate_item nvarchar(255), + derate_property nvarchar(255), + derate_amount nvarchar(255) +) +GO + + +create table hrsa_free_income +( + id bigint primary key , + create_time datetime, + update_time datetime, + creator bigint, + delete_type int default 0, + tenant_key nvarchar(10), + main_id bigint, + tax_year_month datetime, + employee_id bigint, + tax_agent_id bigint, + file_status int, + free_item nvarchar(255), + free_property nvarchar(255), + free_amount nvarchar(255) +) +GO \ No newline at end of file diff --git a/resource/sqlupgrade/SQLServer/sql202412160403.sql b/resource/sqlupgrade/SQLServer/sql202412160403.sql new file mode 100644 index 000000000..1ebced6cb --- /dev/null +++ b/resource/sqlupgrade/SQLServer/sql202412160403.sql @@ -0,0 +1,12 @@ +alter table hrsa_derate_deduction add employee_type int +GO +alter table hrsa_endowment_insurance add employee_type int +GO +alter table hrsa_free_income add employee_type int +GO +alter table hrsa_grant_donation add employee_type int +GO +alter table hrsa_health_insurance add employee_type int +GO +alter table hrsa_other_derate_deduction add employee_type int +GO \ No newline at end of file diff --git a/resource/sqlupgrade/ST/sql202412160303.sql b/resource/sqlupgrade/ST/sql202412160303.sql new file mode 100644 index 000000000..76dc4c94e --- /dev/null +++ b/resource/sqlupgrade/ST/sql202412160303.sql @@ -0,0 +1,122 @@ +create table hrsa_other_derate_deduction +( + id number primary key , + create_time date, + update_time date, + creator number, + delete_type int default 0, + tenant_key varchar2(10), + main_id number, + tax_year_month date, + employee_id number, + tax_agent_id number, + file_status int, + other_deduction varchar2(50), + remark varchar2(255) +); +/ + +create table hrsa_health_insurance +( + id number primary key , + create_time date, + update_time date, + creator number, + delete_type int default 0, + tenant_key varchar2(10), + main_id number, + tax_year_month date, + employee_id number, + tax_agent_id number, + file_status int, + identification_number varchar2(255), + effective_date date, + year_premium varchar2(50), + month_premium varchar2(50), + current_deduction varchar2(50) +); +/ + +create table hrsa_grant_donation +( + id number primary key , + create_time date, + update_time date, + creator number, + delete_type int default 0, + tenant_key varchar2(10), + main_id number, + tax_year_month date, + employee_id number, + tax_agent_id number, + file_status int, + recipient_name varchar2(255), + tax_code varchar2(255), + donation_number varchar2(255), + donate_date date, + donate_amount varchar2(50), + deduction_proportion varchar2(10), + actual_deduction varchar2(50) +); +/ + +create table hrsa_endowment_insurance +( + id number primary key , + create_time date, + update_time date, + creator number, + delete_type int default 0, + tenant_key varchar2(10), + main_id number, + tax_year_month date, + employee_id number, + tax_agent_id number, + file_status int, + account_number varchar2(255), + check_code varchar2(255), + year_premium varchar2(50), + month_premium varchar2(50), + current_deduction varchar2(50), + deduction_month date +); +/ + +create table hrsa_derate_deduction +( + id number primary key , + create_time date, + update_time date, + creator number, + delete_type int default 0, + tenant_key varchar2(10), + main_id number, + tax_year_month date, + employee_id number, + tax_agent_id number, + file_status int, + derate_item varchar2(255), + derate_property varchar2(255), + derate_amount varchar2(255) +); +/ + +create table hrsa_free_income +( + id number primary key , + create_time date, + update_time date, + creator number, + delete_type int default 0, + tenant_key varchar2(10), + main_id number, + tax_year_month date, + employee_id number, + tax_agent_id number, + file_status int, + free_item varchar2(255), + free_property varchar2(255), + free_amount varchar2(255) +); +/ + diff --git a/resource/sqlupgrade/ST/sql202412160403.sql b/resource/sqlupgrade/ST/sql202412160403.sql new file mode 100644 index 000000000..07a4c3c3b --- /dev/null +++ b/resource/sqlupgrade/ST/sql202412160403.sql @@ -0,0 +1,18 @@ +alter table hrsa_derate_deduction add employee_type int; +/ + +alter table hrsa_endowment_insurance add employee_type int; +/ + +alter table hrsa_free_income add employee_type int; +/ + +alter table hrsa_grant_donation add employee_type int; +/ + +alter table hrsa_health_insurance add employee_type int; +/ + +alter table hrsa_other_derate_deduction add employee_type int; +/ + diff --git a/src/com/engine/salary/entity/datacollection/dto/OtherDeductionRecordDTO.java b/src/com/engine/salary/entity/datacollection/dto/OtherDeductionRecordDTO.java index 5cdbec166..4bb115d7a 100644 --- a/src/com/engine/salary/entity/datacollection/dto/OtherDeductionRecordDTO.java +++ b/src/com/engine/salary/entity/datacollection/dto/OtherDeductionRecordDTO.java @@ -47,6 +47,7 @@ public class OtherDeductionRecordDTO { @SalaryTableColumn(text = "个税扣缴义务人", width = "10%", column = "taxAgentName") @TableTitle(title = "个税扣缴义务人", dataIndex = "taxAgentName", key = "taxAgentName") private String taxAgentName; + /** * 个税扣缴义务人id */ diff --git a/src/com/engine/salary/entity/datacollection/po/DerateDeductionPO.java b/src/com/engine/salary/entity/datacollection/po/DerateDeductionPO.java new file mode 100644 index 000000000..d27f93e59 --- /dev/null +++ b/src/com/engine/salary/entity/datacollection/po/DerateDeductionPO.java @@ -0,0 +1,77 @@ +package com.engine.salary.entity.datacollection.po; + +import com.engine.hrmelog.annotation.ElogTransform; +import com.engine.salary.enums.datacollection.DataCollectionEmployeeTypeEnum; +import io.swagger.annotations.ApiModel; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; + +/** + * 其他免税扣除-减免税额 + *

Copyright: Copyright (c) 2024

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@ApiModel("其他免税扣除-减免税额") +//hrsa_derate_deduction +@ElogTransform(name = "其他免税扣除-减免税额") +public class DerateDeductionPO{ + @ElogTransform(name = "主键id") + private Long id; + + @ElogTransform(name = "主表数据Id") + private Long mainId; + + @ElogTransform(name = "税款所属期") + private Date taxYearMonth; + + @ElogTransform(name = "人员") + private Long employeeId; + + @ElogTransform(name = "个税扣缴义务人") + private Long taxAgentId; + + @ElogTransform(name = "减免事项") + private String derateItem; + + @ElogTransform(name = "减免性质") + private String derateProperty; + + @ElogTransform(name = "减免金额") + private String derateAmount; + + @ElogTransform(name = "归档状态 0未归档 1已归档") + private Integer fileStatus; + + /** + * 人员类型 + * @see DataCollectionEmployeeTypeEnum + */ + @ElogTransform(name = "人员类型") + private Integer employeeType; + + @ElogTransform(name = "创建时间", ignore = true) + private Date createTime; + + @ElogTransform(name = "更新时间", ignore = true) + private Date updateTime; + + @ElogTransform(name = "创建人", ignore = true) + private Long creator; + + @ElogTransform(name = "是否已删除。0:未删除、1:已删除", ignore = true) + private Integer deleteType; + + @ElogTransform(name = "租户key", ignore = true) + private String tenantKey; +} diff --git a/src/com/engine/salary/entity/datacollection/po/EndowmentInsurancePO.java b/src/com/engine/salary/entity/datacollection/po/EndowmentInsurancePO.java new file mode 100644 index 000000000..1688dbcf9 --- /dev/null +++ b/src/com/engine/salary/entity/datacollection/po/EndowmentInsurancePO.java @@ -0,0 +1,86 @@ +package com.engine.salary.entity.datacollection.po; + +import com.engine.hrmelog.annotation.ElogTransform; +import com.engine.salary.enums.datacollection.DataCollectionEmployeeTypeEnum; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; + +/** + * 其他免税扣除-税延养老保险 + *

Copyright: Copyright (c) 2024

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +//hrsa_endowment_insurance") +@ElogTransform(name = "其他免税扣除-税延养老保险") +public class EndowmentInsurancePO { + + @ElogTransform(name = "主键") + private Long id; + + @ElogTransform(name = "主表数据Id") + private Long mainId; + + @ElogTransform(name = "税款所属期") + private Date taxYearMonth; + + @ElogTransform(name = "人员id") + private Long employeeId; + + @ElogTransform(name = "个税扣缴义务人ID") + private Long taxAgentId; + + @ElogTransform(name = "申报扣除月份") + private Date deductionMonth; + + @ElogTransform(name = "税延养老账户编号") + private String accountNumber; + + @ElogTransform(name = "报税校验码") + private String checkCode; + + @ElogTransform(name = "年度保费") + private String yearPremium; + + @ElogTransform(name = "月度保费") + private String monthPremium; + + @ElogTransform(name = "本期扣除金额") + private String currentDeduction; + + @ElogTransform(name = "归档状态 0未归档 1已归档") + private Integer fileStatus; + + /** + * 人员类型 + * @see DataCollectionEmployeeTypeEnum + */ + @ElogTransform(name = "人员类型") + private Integer employeeType; + + @ElogTransform(name = "创建时间", ignore = true) + private Date createTime; + + @ElogTransform(name = "更新时间", ignore = true) + private Date updateTime; + + @ElogTransform(name = "创建人", ignore = true) + private Long creator; + + @ElogTransform(name = "是否已删除。0:未删除、1:已删除", ignore = true) + private Integer deleteType; + + @ElogTransform(name = "租户key", ignore = true) + private String tenantKey; + +} diff --git a/src/com/engine/salary/entity/datacollection/po/FreeIncomePO.java b/src/com/engine/salary/entity/datacollection/po/FreeIncomePO.java new file mode 100644 index 000000000..59aa0afd6 --- /dev/null +++ b/src/com/engine/salary/entity/datacollection/po/FreeIncomePO.java @@ -0,0 +1,75 @@ +package com.engine.salary.entity.datacollection.po; + +import com.engine.hrmelog.annotation.ElogTransform; +import com.engine.salary.enums.datacollection.DataCollectionEmployeeTypeEnum; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; + +/** + * 其他免税扣除-免税收入表单 + *

Copyright: Copyright (c) 2024

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +//hrsa_free_income +@ElogTransform(name = "其他免税扣除-免税收入") +public class FreeIncomePO { + @ElogTransform(name = "主键id") + private Long id; + + @ElogTransform(name = "主表数据Id") + private Long mainId; + + @ElogTransform(name = "税款所属期") + private Date taxYearMonth; + + @ElogTransform(name = "人员") + private Long employeeId; + + @ElogTransform(name = "个税扣缴义务人") + private Long taxAgentId; + + @ElogTransform(name = "免税事项") + private String freeItem; + + @ElogTransform(name = "免税性质") + private String freeProperty; + + @ElogTransform(name = "免税金额") + private String freeAmount; + + @ElogTransform(name = "归档状态 0未归档 1已归档") + private Integer fileStatus; + + /** + * 人员类型 + * @see DataCollectionEmployeeTypeEnum + */ + @ElogTransform(name = "人员类型") + private Integer employeeType; + + @ElogTransform(name = "创建时间", ignore = true) + private Date createTime; + + @ElogTransform(name = "更新时间", ignore = true) + private Date updateTime; + + @ElogTransform(name = "创建人", ignore = true) + private Long creator; + + @ElogTransform(name = "是否已删除。0:未删除、1:已删除", ignore = true) + private Integer deleteType; + + @ElogTransform(name = "租户key", ignore = true) + private String tenantKey; +} diff --git a/src/com/engine/salary/entity/datacollection/po/GrantDonationPO.java b/src/com/engine/salary/entity/datacollection/po/GrantDonationPO.java new file mode 100644 index 000000000..d85239da4 --- /dev/null +++ b/src/com/engine/salary/entity/datacollection/po/GrantDonationPO.java @@ -0,0 +1,87 @@ +package com.engine.salary.entity.datacollection.po; + +import com.engine.hrmelog.annotation.ElogTransform; +import com.engine.salary.enums.datacollection.DataCollectionEmployeeTypeEnum; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; + +/** + * 其他免税扣除-准予扣除的捐赠额 + * + * @author chengliming + * @date 2023-06-09 15:03:45 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +//hrsa_grant_donation") +@ElogTransform(name = "其他免税扣除-准予扣除的捐赠额") +public class GrantDonationPO { + @ElogTransform(name = "主键id") + private Long id; + + @ElogTransform(name = "主表数据Id") + private Long mainId; + + @ElogTransform(name = "税款所属期") + private Date taxYearMonth; + + @ElogTransform(name = "人员") + private Long employeeId; + + @ElogTransform(name = "个税扣缴义务人") + private Long taxAgentId; + + @ElogTransform(name = "受赠单位名称") + private String recipientName; + + @ElogTransform(name = "受赠单位纳税人识别号") + private String taxCode; + + @ElogTransform(name = "捐赠凭证号") + private String donationNumber; + + @ElogTransform(name = "捐赠日期") + private Date donateDate; + + @ElogTransform(name = "捐赠金额") + private String donateAmount; + + @ElogTransform(name = "扣除比例") + private String deductionProportion; + + @ElogTransform(name = "实际扣除金额") + private String actualDeduction; + + @ElogTransform(name = "归档状态 0未归档 1已归档") + private Integer fileStatus; + + /** + * 人员类型 + * + * @see DataCollectionEmployeeTypeEnum + */ + @ElogTransform(name = "人员类型") + private Integer employeeType; + + @ElogTransform(name = "创建时间", ignore = true) + private Date createTime; + + @ElogTransform(name = "更新时间", ignore = true) + private Date updateTime; + + @ElogTransform(name = "创建人", ignore = true) + private Long creator; + + @ElogTransform(name = "是否已删除。0:未删除、1:已删除", ignore = true) + private Integer deleteType; + + @ElogTransform(name = "租户key", ignore = true) + private String tenantKey; + +} diff --git a/src/com/engine/salary/entity/datacollection/po/HealthInsurancePO.java b/src/com/engine/salary/entity/datacollection/po/HealthInsurancePO.java new file mode 100644 index 000000000..c27dc5061 --- /dev/null +++ b/src/com/engine/salary/entity/datacollection/po/HealthInsurancePO.java @@ -0,0 +1,81 @@ +package com.engine.salary.entity.datacollection.po; + +import com.engine.hrmelog.annotation.ElogTransform; +import com.engine.salary.enums.datacollection.DataCollectionEmployeeTypeEnum; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; + +/** + * 其他免税扣除-商业健康保险表单 + *

Copyright: Copyright (c) 2024

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +//hrsa_health_insurance") +@ElogTransform(name = "其他免税扣除-商业健康保险表单") +public class HealthInsurancePO { + @ElogTransform(name = "主键id") + private Long id; + + @ElogTransform(name = "主表数据Id") + private Long mainId; + + @ElogTransform(name = "税款所属期") + private Date taxYearMonth; + + @ElogTransform(name = "人员") + private Long employeeId; + + @ElogTransform(name = "个税扣缴义务人") + private Long taxAgentId; + + @ElogTransform(name = "税优识别码") + private String identificationNumber; + + @ElogTransform(name = "保单生效日期") + private Date effectiveDate; + + @ElogTransform(name = "年度保费") + private String yearPremium; + + @ElogTransform(name = "月度保费") + private String monthPremium; + + @ElogTransform(name = "本期扣除金额") + private String currentDeduction; + + @ElogTransform(name = "归档状态 0未归档 1已归档") + private Integer fileStatus; + + /** + * 人员类型 + * @see DataCollectionEmployeeTypeEnum + */ + @ElogTransform(name = "人员类型") + private Integer employeeType; + + @ElogTransform(name = "创建时间", ignore = true) + private Date createTime; + + @ElogTransform(name = "更新时间", ignore = true) + private Date updateTime; + + @ElogTransform(name = "创建人", ignore = true) + private Long creator; + + @ElogTransform(name = "是否已删除。0:未删除、1:已删除", ignore = true) + private Integer deleteType; + + @ElogTransform(name = "租户key", ignore = true) + private String tenantKey; +} diff --git a/src/com/engine/salary/entity/datacollection/po/OtherDeductionPO.java b/src/com/engine/salary/entity/datacollection/po/OtherDeductionPO.java index 83f1ec932..a3af82274 100644 --- a/src/com/engine/salary/entity/datacollection/po/OtherDeductionPO.java +++ b/src/com/engine/salary/entity/datacollection/po/OtherDeductionPO.java @@ -46,6 +46,15 @@ public class OtherDeductionPO { @ElogTransform( name ="税款所属期") private Date declareMonth; + /** + * 免税收入 + */ + @ElogTransform(name = "免税收入") + @SalaryFormulaVar(defaultLabel = "免税收入", labelId = 91238, dataType = "number") + @Encrypt + private String freeIncome; + + /** * 商业健康保险 */ @@ -62,6 +71,14 @@ public class OtherDeductionPO { @Encrypt private String taxDelayEndowmentInsurance; + /** + * 减免税额 + */ + @ElogTransform(name = "减免税额") + @SalaryFormulaVar(defaultLabel = "减免税额", labelId = 102810, dataType = "number") + @Encrypt + private String derateDeduction; + /** * 其他 */ diff --git a/src/com/engine/salary/entity/datacollection/po/OtherDerateDeductionPO.java b/src/com/engine/salary/entity/datacollection/po/OtherDerateDeductionPO.java new file mode 100644 index 000000000..0dbcd99e6 --- /dev/null +++ b/src/com/engine/salary/entity/datacollection/po/OtherDerateDeductionPO.java @@ -0,0 +1,74 @@ +package com.engine.salary.entity.datacollection.po; + +import com.engine.hrmelog.annotation.ElogTransform; +import com.engine.salary.enums.datacollection.DataCollectionEmployeeTypeEnum; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.time.LocalDateTime; +import java.util.Date; + +/** + * 其他免税扣除-减免税额 + *

Copyright: Copyright (c) 2024

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +//hrsa_other_derate_deduction +@ElogTransform(name = "其他免税扣除-减免税额") +public class OtherDerateDeductionPO { + @ElogTransform(name = "主键id") + private Long id; + + @ElogTransform(name = "主表数据Id") + private Long mainId; + + @ElogTransform(name = "税款所属期") + private Date taxYearMonth; + + @ElogTransform(name = "人员") + private Long employeeId; + + @ElogTransform(name = "个税扣缴义务人") + private Long taxAgentId; + + @ElogTransform(name = "减免税额") + private String otherDeduction; + + @ElogTransform(name = "备注") + private String remark; + + @ElogTransform(name = "归档状态 0未归档 1已归档") + private Integer fileStatus; + + /** + * 人员类型 + * + * @see DataCollectionEmployeeTypeEnum + */ + @ElogTransform(name = "人员类型") + private Integer employeeType; + + @ElogTransform(name = "创建时间", ignore = true) + private LocalDateTime createTime; + + @ElogTransform(name = "更新时间", ignore = true) + private LocalDateTime updateTime; + + @ElogTransform(name = "创建人", ignore = true) + private Long creator; + + @ElogTransform(name = "是否已删除。0:未删除、1:已删除", ignore = true) + private Integer deleteType; + + @ElogTransform(name = "租户key", ignore = true) + private String tenantKey; +} diff --git a/src/com/engine/salary/entity/datacollection/po/PersonalPensionPO.java b/src/com/engine/salary/entity/datacollection/po/PersonalPensionPO.java new file mode 100644 index 000000000..6af983b1f --- /dev/null +++ b/src/com/engine/salary/entity/datacollection/po/PersonalPensionPO.java @@ -0,0 +1,92 @@ +package com.engine.salary.entity.datacollection.po; + +import com.engine.hrmelog.annotation.ElogTransform; +import com.engine.salary.enums.datacollection.DataCollectionEmployeeTypeEnum; +import com.engine.salary.enums.datacollection.EnumDeductionDataSource; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; + +/** + * 其他免税扣除-个人养老金 + *

Copyright: Copyright (c) 2024

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +//hrsa_personal_pension") +@ElogTransform(name = "其他免税扣除-个人养老金") +public class PersonalPensionPO{ + + @ElogTransform(name = "主键id") + private Long id; + + @ElogTransform(name = "主表数据Id") + private Long mainId; + + @ElogTransform(name = "税款所属期") + private Date taxYearMonth; + + @ElogTransform(name = "缴费月度") + private Date payMonth; + + @ElogTransform(name = "人员") + private Long employeeId; + + @ElogTransform(name = "个税扣缴义务人") + private Long taxAgentId; + + @ElogTransform(name = "凭证类别") + private Integer voucherType; + + @ElogTransform(name = "凭证类别名称") + private String voucherTypeName; + + @ElogTransform(name = "凭证编码") + private String voucherNo; + + @ElogTransform(name = "缴费金额") + private String payAmount; + + @ElogTransform(name = "归档状态 0未归档 1已归档") + private Integer fileStatus; + + /** + * 人员类型 + * @see DataCollectionEmployeeTypeEnum + */ + @ElogTransform(name = "人员类型") + private Integer employeeType; + + /** + * @see EnumDeductionDataSource + */ + @ElogTransform(name = "数据来源") + private Integer dataSource; + + @ElogTransform(name = "采集来源") + private String collectSource; + + @ElogTransform(name = "创建时间", ignore = true) + private Date createTime; + + @ElogTransform(name = "更新时间", ignore = true) + private Date updateTime; + + @ElogTransform(name = "创建人", ignore = true) + private Long creator; + + @ElogTransform(name = "是否已删除。0:未删除、1:已删除", ignore = true) + private Integer deleteType; + + @ElogTransform(name = "租户key", ignore = true) + private String tenantKey; +} diff --git a/src/com/engine/salary/entity/taxdeclaration/bo/TaxDeclarationRequest.java b/src/com/engine/salary/entity/taxdeclaration/bo/TaxDeclarationRequest.java index b64ac8b12..5c2c82770 100644 --- a/src/com/engine/salary/entity/taxdeclaration/bo/TaxDeclarationRequest.java +++ b/src/com/engine/salary/entity/taxdeclaration/bo/TaxDeclarationRequest.java @@ -126,6 +126,8 @@ public class TaxDeclarationRequest { List> employeeRequestParams = listRequestParam.computeIfAbsent("txq", k -> Lists.newArrayList()); employeeRequestParams.add(employeeRequestParam); } + // 其他免税扣除附表 +// buildOtherDeductionDetailParams(taxFreeMap, listRequestParam, employeeDeclare, incomeCategoryEnum, employeeRequestParam); } } diff --git a/src/com/engine/salary/enums/datacollection/EnumDeductionDataSource.java b/src/com/engine/salary/enums/datacollection/EnumDeductionDataSource.java new file mode 100644 index 000000000..cbec3e616 --- /dev/null +++ b/src/com/engine/salary/enums/datacollection/EnumDeductionDataSource.java @@ -0,0 +1,70 @@ +package com.engine.salary.enums.datacollection; + +import java.util.HashMap; +import java.util.Map; + + +/** + * 各类专项扣除数据来源 + *

Copyright: Copyright (c) 2024

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +public enum EnumDeductionDataSource { + /** + * 人工输入 + */ + MANUAL(1, "人工输入", 153339), + /** + * 在线获取 + */ + ONLINE(2, "在线获取", 153340), + /** + * 自动计算 + */ + AUTO_CALC(3, "自动计算", 233727), + ; + + private int value; + + private String defaultLabel; + + private int labelId; + + EnumDeductionDataSource(int value, String defaultLabel, int labelId) { + this.value = value; + this.defaultLabel = defaultLabel; + this.labelId = labelId; + } + + private static final Map VALUE_NAME_MAP; + + static { + final EnumDeductionDataSource[] values = EnumDeductionDataSource.values(); + VALUE_NAME_MAP = new HashMap<>(values.length); + for (EnumDeductionDataSource value : values) { + VALUE_NAME_MAP.put(value.getValue(), value); + } + } + + public Integer getValue() { + return value; + } + + public Integer getLabelId() { + return labelId; + } + + public static EnumDeductionDataSource parseByValue(Integer index) { + if (index == null) { + return null; + } + return VALUE_NAME_MAP.get(index); + } + + public String getDefaultLabel() { + return defaultLabel; + } +} diff --git a/src/com/engine/salary/mapper/datacollection/EndowmentInsuranceMapper.java b/src/com/engine/salary/mapper/datacollection/EndowmentInsuranceMapper.java new file mode 100644 index 000000000..a045a9ee2 --- /dev/null +++ b/src/com/engine/salary/mapper/datacollection/EndowmentInsuranceMapper.java @@ -0,0 +1,73 @@ +package com.engine.salary.mapper.datacollection; + +import com.engine.salary.entity.datacollection.po.EndowmentInsurancePO; +import org.apache.ibatis.annotations.Param; + +import java.util.Collection; +import java.util.List; + +public interface EndowmentInsuranceMapper { + + /** + * 查询所有记录 + * + * @return 返回集合,没有返回空List + */ + List listAll(); + + /** + * 条件查询 + * + * @return 返回集合,没有返回空List + */ + List listSome(EndowmentInsurancePO endowmentInsurance); + + + /** + * 根据主键查询 + * + * @param id 主键 + * @return 返回记录,没有返回null + */ + EndowmentInsurancePO getById(Long id); + + /** + * 新增,忽略null字段 + * + * @param endowmentInsurance 新增的记录 + * @return 返回影响行数 + */ + int insertIgnoreNull(EndowmentInsurancePO endowmentInsurance); + + + /** + * 修改,修改所有字段 + * + * @param endowmentInsurance 修改的记录 + * @return 返回影响行数 + */ + int update(EndowmentInsurancePO endowmentInsurance); + + /** + * 修改,忽略null字段 + * + * @param endowmentInsurance 修改的记录 + * @return 返回影响行数 + */ + int updateIgnoreNull(EndowmentInsurancePO endowmentInsurance); + + /** + * 删除记录 + * + * @param endowmentInsurance 待删除的记录 + * @return 返回影响行数 + */ + int delete(EndowmentInsurancePO endowmentInsurance); + + /** + * 批量删除记录 + * @param ids 主键id集合 + */ + void deleteByIds(@Param("ids") Collection ids); + +} \ No newline at end of file diff --git a/src/com/engine/salary/mapper/datacollection/EndowmentInsuranceMapper.xml b/src/com/engine/salary/mapper/datacollection/EndowmentInsuranceMapper.xml new file mode 100644 index 000000000..277843ea4 --- /dev/null +++ b/src/com/engine/salary/mapper/datacollection/EndowmentInsuranceMapper.xml @@ -0,0 +1,360 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + t + . + account_number + , t.check_code + , t.create_time + , t.creator + , t.current_deduction + , t.deduction_month + , t.delete_type + , t.employee_id + , t.employee_type + , t.file_status + , t.id + , t.main_id + , t.month_premium + , t.tax_agent_id + , t.tax_year_month + , t.tenant_key + , t.update_time + , t.year_premium + + + + + + + + + + + + + + + INSERT INTO hrsa_endowment_insurance + + + + account_number, + + + check_code, + + + create_time, + + + creator, + + + current_deduction, + + + deduction_month, + + + delete_type, + + + employee_id, + + + employee_type, + + + file_status, + + + id, + + + main_id, + + + month_premium, + + + tax_agent_id, + + + tax_year_month, + + + tenant_key, + + + update_time, + + + year_premium, + + + + + #{accountNumber}, + + + #{checkCode}, + + + #{createTime}, + + + #{creator}, + + + #{currentDeduction}, + + + #{deductionMonth}, + + + #{deleteType}, + + + #{employeeId}, + + + #{employeeType}, + + + #{fileStatus}, + + + #{id}, + + + #{mainId}, + + + #{monthPremium}, + + + #{taxAgentId}, + + + #{taxYearMonth}, + + + #{tenantKey}, + + + #{updateTime}, + + + #{yearPremium}, + + + + + + + + UPDATE hrsa_endowment_insurance + + account_number=#{accountNumber}, + check_code=#{checkCode}, + create_time=#{createTime}, + creator=#{creator}, + current_deduction=#{currentDeduction}, + deduction_month=#{deductionMonth}, + delete_type=#{deleteType}, + employee_id=#{employeeId}, + employee_type=#{employeeType}, + file_status=#{fileStatus}, + main_id=#{mainId}, + month_premium=#{monthPremium}, + tax_agent_id=#{taxAgentId}, + tax_year_month=#{taxYearMonth}, + tenant_key=#{tenantKey}, + update_time=#{updateTime}, + year_premium=#{yearPremium}, + + WHERE id = #{id} AND delete_type = 0 + + + + + + UPDATE hrsa_endowment_insurance + + + account_number=#{accountNumber}, + + + check_code=#{checkCode}, + + + create_time=#{createTime}, + + + creator=#{creator}, + + + current_deduction=#{currentDeduction}, + + + deduction_month=#{deductionMonth}, + + + delete_type=#{deleteType}, + + + employee_id=#{employeeId}, + + + employee_type=#{employeeType}, + + + file_status=#{fileStatus}, + + + main_id=#{mainId}, + + + month_premium=#{monthPremium}, + + + tax_agent_id=#{taxAgentId}, + + + tax_year_month=#{taxYearMonth}, + + + tenant_key=#{tenantKey}, + + + update_time=#{updateTime}, + + + year_premium=#{yearPremium}, + + + WHERE id = #{id} AND delete_type = 0 + + + + + + UPDATE hrsa_endowment_insurance + SET delete_type=1 + WHERE id = #{id} + AND delete_type = 0 + + + + UPDATE hrsa_endowment_insurance + SET delete_type = 1 + WHERE delete_type = 0 + AND id IN + + #{id} + + + + + \ No newline at end of file diff --git a/src/com/engine/salary/mapper/datacollection/FreeIncomeMapper.java b/src/com/engine/salary/mapper/datacollection/FreeIncomeMapper.java new file mode 100644 index 000000000..1c7489927 --- /dev/null +++ b/src/com/engine/salary/mapper/datacollection/FreeIncomeMapper.java @@ -0,0 +1,72 @@ +package com.engine.salary.mapper.datacollection; + +import com.engine.salary.entity.datacollection.po.FreeIncomePO; +import org.apache.ibatis.annotations.Param; + +import java.util.Collection; +import java.util.List; + +public interface FreeIncomeMapper { + + /** + * 查询所有记录 + * + * @return 返回集合,没有返回空List + */ + List listAll(); + + /** + * 条件查询 + * + * @return 返回集合,没有返回空List + */ + List listSome(FreeIncomePO freeIncome); + + + /** + * 根据主键查询 + * + * @param id 主键 + * @return 返回记录,没有返回null + */ + FreeIncomePO getById(Long id); + + /** + * 新增,忽略null字段 + * + * @param freeIncome 新增的记录 + * @return 返回影响行数 + */ + int insertIgnoreNull(FreeIncomePO freeIncome); + + /** + * 修改,修改所有字段 + * + * @param freeIncome 修改的记录 + * @return 返回影响行数 + */ + int update(FreeIncomePO freeIncome); + + /** + * 修改,忽略null字段 + * + * @param freeIncome 修改的记录 + * @return 返回影响行数 + */ + int updateIgnoreNull(FreeIncomePO freeIncome); + + /** + * 删除记录 + * + * @param freeIncome 待删除的记录 + * @return 返回影响行数 + */ + int delete(FreeIncomePO freeIncome); + + /** + * 批量删除记录 + * @param ids 主键id集合 + */ + void deleteByIds(@Param("ids") Collection ids); + +} \ No newline at end of file diff --git a/src/com/engine/salary/mapper/datacollection/FreeIncomeMapper.xml b/src/com/engine/salary/mapper/datacollection/FreeIncomeMapper.xml new file mode 100644 index 000000000..e10253fc0 --- /dev/null +++ b/src/com/engine/salary/mapper/datacollection/FreeIncomeMapper.xml @@ -0,0 +1,315 @@ + + + + + + + + + + + + + + + + + + + + + + + + t + . + create_time + , t.creator + , t.delete_type + , t.employee_id + , t.employee_type + , t.file_status + , t.free_amount + , t.free_item + , t.free_property + , t.id + , t.main_id + , t.tax_agent_id + , t.tax_year_month + , t.tenant_key + , t.update_time + + + + + + + + + + + + + + + INSERT INTO hrsa_free_income + + + + create_time, + + + creator, + + + delete_type, + + + employee_id, + + + employee_type, + + + file_status, + + + free_amount, + + + free_item, + + + free_property, + + + id, + + + main_id, + + + tax_agent_id, + + + tax_year_month, + + + tenant_key, + + + update_time, + + + + + #{createTime}, + + + #{creator}, + + + #{deleteType}, + + + #{employeeId}, + + + #{employeeType}, + + + #{fileStatus}, + + + #{freeAmount}, + + + #{freeItem}, + + + #{freeProperty}, + + + #{id}, + + + #{mainId}, + + + #{taxAgentId}, + + + #{taxYearMonth}, + + + #{tenantKey}, + + + #{updateTime}, + + + + + + + + UPDATE hrsa_free_income + + create_time=#{createTime}, + creator=#{creator}, + delete_type=#{deleteType}, + employee_id=#{employeeId}, + employee_type=#{employeeType}, + file_status=#{fileStatus}, + free_amount=#{freeAmount}, + free_item=#{freeItem}, + free_property=#{freeProperty}, + main_id=#{mainId}, + tax_agent_id=#{taxAgentId}, + tax_year_month=#{taxYearMonth}, + tenant_key=#{tenantKey}, + update_time=#{updateTime}, + + WHERE id = #{id} AND delete_type = 0 + + + + + + UPDATE hrsa_free_income + + + create_time=#{createTime}, + + + creator=#{creator}, + + + delete_type=#{deleteType}, + + + employee_id=#{employeeId}, + + + employee_type=#{employeeType}, + + + file_status=#{fileStatus}, + + + free_amount=#{freeAmount}, + + + free_item=#{freeItem}, + + + free_property=#{freeProperty}, + + + main_id=#{mainId}, + + + tax_agent_id=#{taxAgentId}, + + + tax_year_month=#{taxYearMonth}, + + + tenant_key=#{tenantKey}, + + + update_time=#{updateTime}, + + + WHERE id = #{id} AND delete_type = 0 + + + + + + UPDATE hrsa_free_income + SET delete_type=1 + WHERE id = #{id} + AND delete_type = 0 + + + + UPDATE hrsa_free_income + SET delete_type = 1 + WHERE delete_type = 0 + AND id IN + + #{id} + + + + + \ No newline at end of file diff --git a/src/com/engine/salary/mapper/datacollection/GrantDonationMapper.java b/src/com/engine/salary/mapper/datacollection/GrantDonationMapper.java new file mode 100644 index 000000000..5612833de --- /dev/null +++ b/src/com/engine/salary/mapper/datacollection/GrantDonationMapper.java @@ -0,0 +1,73 @@ +package com.engine.salary.mapper.datacollection; + +import com.engine.salary.entity.datacollection.po.GrantDonationPO; +import org.apache.ibatis.annotations.Param; + +import java.util.Collection; +import java.util.List; + +public interface GrantDonationMapper { + + /** + * 查询所有记录 + * + * @return 返回集合,没有返回空List + */ + List listAll(); + + /** + * 条件查询 + * + * @return 返回集合,没有返回空List + */ + List listSome(GrantDonationPO grantDonation); + + + /** + * 根据主键查询 + * + * @param id 主键 + * @return 返回记录,没有返回null + */ + GrantDonationPO getById(Long id); + + /** + * 新增,忽略null字段 + * + * @param grantDonation 新增的记录 + * @return 返回影响行数 + */ + int insertIgnoreNull(GrantDonationPO grantDonation); + + + /** + * 修改,修改所有字段 + * + * @param grantDonation 修改的记录 + * @return 返回影响行数 + */ + int update(GrantDonationPO grantDonation); + + /** + * 修改,忽略null字段 + * + * @param grantDonation 修改的记录 + * @return 返回影响行数 + */ + int updateIgnoreNull(GrantDonationPO grantDonation); + + /** + * 删除记录 + * + * @param grantDonation 待删除的记录 + * @return 返回影响行数 + */ + int delete(GrantDonationPO grantDonation); + + /** + * 批量删除记录 + * @param ids 主键id集合 + */ + void deleteByIds(@Param("ids") Collection ids); + +} \ No newline at end of file diff --git a/src/com/engine/salary/mapper/datacollection/GrantDonationMapper.xml b/src/com/engine/salary/mapper/datacollection/GrantDonationMapper.xml new file mode 100644 index 000000000..2a68136eb --- /dev/null +++ b/src/com/engine/salary/mapper/datacollection/GrantDonationMapper.xml @@ -0,0 +1,375 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + t + . + actual_deduction + , t.create_time + , t.creator + , t.deduction_proportion + , t.delete_type + , t.donate_amount + , t.donate_date + , t.donation_number + , t.employee_id + , t.employee_type + , t.file_status + , t.id + , t.main_id + , t.recipient_name + , t.tax_agent_id + , t.tax_code + , t.tax_year_month + , t.tenant_key + , t.update_time + + + + + + + + + + + + + + + INSERT INTO hrsa_grant_donation + + + + actual_deduction, + + + create_time, + + + creator, + + + deduction_proportion, + + + delete_type, + + + donate_amount, + + + donate_date, + + + donation_number, + + + employee_id, + + + employee_type, + + + file_status, + + + id, + + + main_id, + + + recipient_name, + + + tax_agent_id, + + + tax_code, + + + tax_year_month, + + + tenant_key, + + + update_time, + + + + + #{actualDeduction}, + + + #{createTime}, + + + #{creator}, + + + #{deductionProportion}, + + + #{deleteType}, + + + #{donateAmount}, + + + #{donateDate}, + + + #{donationNumber}, + + + #{employeeId}, + + + #{employeeType}, + + + #{fileStatus}, + + + #{id}, + + + #{mainId}, + + + #{recipientName}, + + + #{taxAgentId}, + + + #{taxCode}, + + + #{taxYearMonth}, + + + #{tenantKey}, + + + #{updateTime}, + + + + + + + + UPDATE hrsa_grant_donation + + actual_deduction=#{actualDeduction}, + create_time=#{createTime}, + creator=#{creator}, + deduction_proportion=#{deductionProportion}, + delete_type=#{deleteType}, + donate_amount=#{donateAmount}, + donate_date=#{donateDate}, + donation_number=#{donationNumber}, + employee_id=#{employeeId}, + employee_type=#{employeeType}, + file_status=#{fileStatus}, + main_id=#{mainId}, + recipient_name=#{recipientName}, + tax_agent_id=#{taxAgentId}, + tax_code=#{taxCode}, + tax_year_month=#{taxYearMonth}, + tenant_key=#{tenantKey}, + update_time=#{updateTime}, + + WHERE id = #{id} AND delete_type = 0 + + + + + + UPDATE hrsa_grant_donation + + + actual_deduction=#{actualDeduction}, + + + create_time=#{createTime}, + + + creator=#{creator}, + + + deduction_proportion=#{deductionProportion}, + + + delete_type=#{deleteType}, + + + donate_amount=#{donateAmount}, + + + donate_date=#{donateDate}, + + + donation_number=#{donationNumber}, + + + employee_id=#{employeeId}, + + + employee_type=#{employeeType}, + + + file_status=#{fileStatus}, + + + main_id=#{mainId}, + + + recipient_name=#{recipientName}, + + + tax_agent_id=#{taxAgentId}, + + + tax_code=#{taxCode}, + + + tax_year_month=#{taxYearMonth}, + + + tenant_key=#{tenantKey}, + + + update_time=#{updateTime}, + + + WHERE id = #{id} AND delete_type = 0 + + + + + + UPDATE hrsa_grant_donation + SET delete_type=1 + WHERE id = #{id} + AND delete_type = 0 + + + + UPDATE hrsa_grant_donation + SET delete_type = 1 + WHERE delete_type = 0 + AND id IN + + #{id} + + + + + \ No newline at end of file diff --git a/src/com/engine/salary/mapper/datacollection/HealthInsuranceMapper.java b/src/com/engine/salary/mapper/datacollection/HealthInsuranceMapper.java new file mode 100644 index 000000000..b382963f2 --- /dev/null +++ b/src/com/engine/salary/mapper/datacollection/HealthInsuranceMapper.java @@ -0,0 +1,73 @@ +package com.engine.salary.mapper.datacollection; + +import com.engine.salary.entity.datacollection.po.HealthInsurancePO; +import org.apache.ibatis.annotations.Param; + +import java.util.Collection; +import java.util.List; + +public interface HealthInsuranceMapper { + + /** + * 查询所有记录 + * + * @return 返回集合,没有返回空List + */ + List listAll(); + + /** + * 条件查询 + * + * @return 返回集合,没有返回空List + */ + List listSome(HealthInsurancePO healthInsurance); + + + /** + * 根据主键查询 + * + * @param id 主键 + * @return 返回记录,没有返回null + */ + HealthInsurancePO getById(Long id); + + /** + * 新增,忽略null字段 + * + * @param healthInsurance 新增的记录 + * @return 返回影响行数 + */ + int insertIgnoreNull(HealthInsurancePO healthInsurance); + + + /** + * 修改,修改所有字段 + * + * @param healthInsurance 修改的记录 + * @return 返回影响行数 + */ + int update(HealthInsurancePO healthInsurance); + + /** + * 修改,忽略null字段 + * + * @param healthInsurance 修改的记录 + * @return 返回影响行数 + */ + int updateIgnoreNull(HealthInsurancePO healthInsurance); + + /** + * 删除记录 + * + * @param healthInsurance 待删除的记录 + * @return 返回影响行数 + */ + int delete(HealthInsurancePO healthInsurance); + + /** + * 批量删除记录 + * @param ids 主键id集合 + */ + void deleteByIds(@Param("ids") Collection ids); + +} \ No newline at end of file diff --git a/src/com/engine/salary/mapper/datacollection/HealthInsuranceMapper.xml b/src/com/engine/salary/mapper/datacollection/HealthInsuranceMapper.xml new file mode 100644 index 000000000..71d4cdde1 --- /dev/null +++ b/src/com/engine/salary/mapper/datacollection/HealthInsuranceMapper.xml @@ -0,0 +1,345 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + t + . + create_time + , t.creator + , t.current_deduction + , t.delete_type + , t.effective_date + , t.employee_id + , t.employee_type + , t.file_status + , t.id + , t.identification_number + , t.main_id + , t.month_premium + , t.tax_agent_id + , t.tax_year_month + , t.tenant_key + , t.update_time + , t.year_premium + + + + + + + + + + + + + + + INSERT INTO hrsa_health_insurance + + + + create_time, + + + creator, + + + current_deduction, + + + delete_type, + + + effective_date, + + + employee_id, + + + employee_type, + + + file_status, + + + id, + + + identification_number, + + + main_id, + + + month_premium, + + + tax_agent_id, + + + tax_year_month, + + + tenant_key, + + + update_time, + + + year_premium, + + + + + #{createTime}, + + + #{creator}, + + + #{currentDeduction}, + + + #{deleteType}, + + + #{effectiveDate}, + + + #{employeeId}, + + + #{employeeType}, + + + #{fileStatus}, + + + #{id}, + + + #{identificationNumber}, + + + #{mainId}, + + + #{monthPremium}, + + + #{taxAgentId}, + + + #{taxYearMonth}, + + + #{tenantKey}, + + + #{updateTime}, + + + #{yearPremium}, + + + + + + + + UPDATE hrsa_health_insurance + + create_time=#{createTime}, + creator=#{creator}, + current_deduction=#{currentDeduction}, + delete_type=#{deleteType}, + effective_date=#{effectiveDate}, + employee_id=#{employeeId}, + employee_type=#{employeeType}, + file_status=#{fileStatus}, + identification_number=#{identificationNumber}, + main_id=#{mainId}, + month_premium=#{monthPremium}, + tax_agent_id=#{taxAgentId}, + tax_year_month=#{taxYearMonth}, + tenant_key=#{tenantKey}, + update_time=#{updateTime}, + year_premium=#{yearPremium}, + + WHERE id = #{id} AND delete_type = 0 + + + + + + UPDATE hrsa_health_insurance + + + create_time=#{createTime}, + + + creator=#{creator}, + + + current_deduction=#{currentDeduction}, + + + delete_type=#{deleteType}, + + + effective_date=#{effectiveDate}, + + + employee_id=#{employeeId}, + + + employee_type=#{employeeType}, + + + file_status=#{fileStatus}, + + + identification_number=#{identificationNumber}, + + + main_id=#{mainId}, + + + month_premium=#{monthPremium}, + + + tax_agent_id=#{taxAgentId}, + + + tax_year_month=#{taxYearMonth}, + + + tenant_key=#{tenantKey}, + + + update_time=#{updateTime}, + + + year_premium=#{yearPremium}, + + + WHERE id = #{id} AND delete_type = 0 + + + + + + UPDATE hrsa_health_insurance + SET delete_type=1 + WHERE id = #{id} + AND delete_type = 0 + + + + UPDATE hrsa_health_insurance + SET delete_type = 1 + WHERE delete_type = 0 + AND id IN + + #{id} + + + + + \ No newline at end of file diff --git a/src/com/engine/salary/mapper/datacollection/OtherDerateDeductionMapper.java b/src/com/engine/salary/mapper/datacollection/OtherDerateDeductionMapper.java new file mode 100644 index 000000000..79ce006b3 --- /dev/null +++ b/src/com/engine/salary/mapper/datacollection/OtherDerateDeductionMapper.java @@ -0,0 +1,79 @@ +package com.engine.salary.mapper.datacollection; + +import com.engine.salary.entity.datacollection.po.OtherDerateDeductionPO; +import org.apache.ibatis.annotations.Param; + +import java.util.Collection; +import java.util.List; + +public interface OtherDerateDeductionMapper { + + /** + * 查询所有记录 + * + * @return 返回集合,没有返回空List + */ + List listAll(); + + /** + * 条件查询 + * + * @return 返回集合,没有返回空List + */ + List listSome(OtherDerateDeductionPO otherDerateDeduction); + + + /** + * 根据主键查询 + * + * @param id 主键 + * @return 返回记录,没有返回null + */ + OtherDerateDeductionPO getById(Long id); + + /** + * 新增,忽略null字段 + * + * @param otherDerateDeduction 新增的记录 + * @return 返回影响行数 + */ + int insertIgnoreNull(OtherDerateDeductionPO otherDerateDeduction); + + /** + * 批量插入 + * + * @param otherDerateDeduction + */ + void batchInsert(@Param("collection") List otherDerateDeduction); + + /** + * 修改,修改所有字段 + * + * @param otherDerateDeduction 修改的记录 + * @return 返回影响行数 + */ + int update(OtherDerateDeductionPO otherDerateDeduction); + + /** + * 修改,忽略null字段 + * + * @param otherDerateDeduction 修改的记录 + * @return 返回影响行数 + */ + int updateIgnoreNull(OtherDerateDeductionPO otherDerateDeduction); + + /** + * 删除记录 + * + * @param otherDerateDeduction 待删除的记录 + * @return 返回影响行数 + */ + int delete(OtherDerateDeductionPO otherDerateDeduction); + + /** + * 批量删除记录 + * @param ids 主键id集合 + */ + void deleteByIds(@Param("ids") Collection ids); + +} \ No newline at end of file diff --git a/src/com/engine/salary/mapper/datacollection/OtherDerateDeductionMapper.xml b/src/com/engine/salary/mapper/datacollection/OtherDerateDeductionMapper.xml new file mode 100644 index 000000000..1d7b0e0be --- /dev/null +++ b/src/com/engine/salary/mapper/datacollection/OtherDerateDeductionMapper.xml @@ -0,0 +1,417 @@ + + + + + + + + + + + + + + + + + + + + + + + t.create_time + , t.creator + , t.delete_type + , t.employee_id + , t.employee_type + , t.file_status + , t.id + , t.main_id + , t.other_deduction + , t.remark + , t.tax_agent_id + , t.tax_year_month + , t.tenant_key + , t.update_time + + + + + + + + + + + + + + + INSERT INTO hrsa_other_derate_deduction + + + + create_time, + + + creator, + + + delete_type, + + + employee_id, + + + employee_type, + + + file_status, + + + id, + + + main_id, + + + other_deduction, + + + remark, + + + tax_agent_id, + + + tax_year_month, + + + tenant_key, + + + update_time, + + + + + #{createTime}, + + + #{creator}, + + + #{deleteType}, + + + #{employeeId}, + + + #{employeeType}, + + + #{fileStatus}, + + + #{id}, + + + #{mainId}, + + + #{otherDeduction}, + + + #{remark}, + + + #{taxAgentId}, + + + #{taxYearMonth}, + + + #{tenantKey}, + + + #{updateTime}, + + + + + + + + INSERT INTO hrsa_other_derate_deduction + ( + create_time, + creator, + delete_type, + employee_id, + employee_type, + file_status, + id, + main_id, + other_deduction, + remark, + tax_agent_id, + tax_year_month, + tenant_key, + update_time, + ) + VALUES + + + ( + #{item.createTime}, + #{item.creator}, + #{item.deleteType}, + #{item.employeeId}, + #{item.employeeType}, + #{item.fileStatus}, + #{item.id}, + #{item.mainId}, + #{item.otherDeduction}, + #{item.remark}, + #{item.taxAgentId}, + #{item.taxYearMonth}, + #{item.tenantKey}, + #{item.updateTime}, + ) + + + + + + + INSERT INTO hrsa_other_derate_deduction ( + create_time, + creator, + delete_type, + employee_id, + employee_type, + file_status, + id, + main_id, + other_deduction, + remark, + tax_agent_id, + tax_year_month, + tenant_key, + update_time, + ) + + + select + #{item.createTime,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, + #{item.creator,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, + #{item.deleteType,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, + #{item.employeeId,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, + #{item.employeeType,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, + #{item.fileStatus,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, + #{item.id,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, + #{item.mainId,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, + #{item.otherDeduction,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, + #{item.remark,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, + #{item.taxAgentId,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, + #{item.taxYearMonth,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, + #{item.tenantKey,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, + #{item.updateTime,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, + from dual + + + + + + + INSERT INTO hrsa_other_derate_deduction ( + create_time, + creator, + delete_type, + employee_id, + employee_type, + file_status, + id, + main_id, + other_deduction, + remark, + tax_agent_id, + tax_year_month, + tenant_key, + update_time, + ) + VALUES + ( + #{item.createTime}, + #{item.creator}, + #{item.deleteType}, + #{item.employeeId}, + #{item.employeeType}, + #{item.fileStatus}, + #{item.id}, + #{item.mainId}, + #{item.otherDeduction}, + #{item.remark}, + #{item.taxAgentId}, + #{item.taxYearMonth}, + #{item.tenantKey}, + #{item.updateTime}, + ) + + + + + + UPDATE hrsa_other_derate_deduction + + create_time=#{createTime}, + creator=#{creator}, + delete_type=#{deleteType}, + employee_id=#{employeeId}, + employee_type=#{employeeType}, + file_status=#{fileStatus}, + main_id=#{mainId}, + other_deduction=#{otherDeduction}, + remark=#{remark}, + tax_agent_id=#{taxAgentId}, + tax_year_month=#{taxYearMonth}, + tenant_key=#{tenantKey}, + update_time=#{updateTime}, + + WHERE id = #{id} AND delete_type = 0 + + + + + + UPDATE hrsa_other_derate_deduction + + + create_time=#{createTime}, + + + creator=#{creator}, + + + delete_type=#{deleteType}, + + + employee_id=#{employeeId}, + + + employee_type=#{employeeType}, + + + file_status=#{fileStatus}, + + + main_id=#{mainId}, + + + other_deduction=#{otherDeduction}, + + + remark=#{remark}, + + + tax_agent_id=#{taxAgentId}, + + + tax_year_month=#{taxYearMonth}, + + + tenant_key=#{tenantKey}, + + + update_time=#{updateTime}, + + + WHERE id = #{id} AND delete_type = 0 + + + + + + UPDATE hrsa_other_derate_deduction + SET delete_type=1 + WHERE id = #{id} AND delete_type = 0 + + + + UPDATE hrsa_other_derate_deduction + SET delete_type = 1 + WHERE delete_type = 0 + AND id IN + + #{id} + + + + + + \ No newline at end of file From d14ac4bda356a43160f1f989028079167d092e28 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Tue, 17 Dec 2024 14:05:05 +0800 Subject: [PATCH 194/218] =?UTF-8?q?=E5=85=8D=E7=A8=8E=E6=94=B6=E5=85=A5?= =?UTF-8?q?=E9=99=84=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dto/OtherDeductionListDTO.java | 26 +- .../dto/OtherDeductionRecordDTO.java | 12 + .../param/OtherDeductionParam.java | 10 + .../datacollection/po/OtherDeductionPO.java | 14 +- .../po/OtherDerateDeductionPO.java | 5 +- .../datacollection/OtherDeductionMapper.xml | 70 +- .../OtherDerateDeductionMapper.xml | 625 +++++++----------- .../impl/OtherDeductionServiceImpl.java | 25 +- .../impl/SalarySysConfServiceImpl.java | 4 + 9 files changed, 381 insertions(+), 410 deletions(-) diff --git a/src/com/engine/salary/entity/datacollection/dto/OtherDeductionListDTO.java b/src/com/engine/salary/entity/datacollection/dto/OtherDeductionListDTO.java index 94f3580d0..abfffc82f 100644 --- a/src/com/engine/salary/entity/datacollection/dto/OtherDeductionListDTO.java +++ b/src/com/engine/salary/entity/datacollection/dto/OtherDeductionListDTO.java @@ -82,35 +82,51 @@ public class OtherDeductionListDTO { @TableTitle(title = "入职日期", dataIndex = "hiredate", key = "hiredate") private String hiredate; - //商业健康保险 + /** + * 免税收入 + */ @ExcelProperty(index = 7) + @SalaryTableColumn(text = "免税收入", width = "10%", column = "freeIncome") + @TableTitle(title = "免税收入", dataIndex = "freeIncome", key = "freeIncome") + private String freeIncome; + + /** + * 减免税额 + */ + @ExcelProperty(index = 8) + @SalaryTableColumn(text = "入职日期", width = "10%", column = "derateDeduction") + @TableTitle(title = "减免税额", dataIndex = "derateDeduction", key = "derateDeduction") + private String derateDeduction; + + //商业健康保险 + @ExcelProperty(index = 9) @SalaryTableColumn(text = "商业健康保险", width = "10%", column = "businessHealthyInsurance") @TableTitle(title = "商业健康保险", dataIndex = "businessHealthyInsurance", key = "businessHealthyInsurance") @Encrypt private String businessHealthyInsurance; //税延养老保险 - @ExcelProperty(index = 8) + @ExcelProperty(index = 10) @SalaryTableColumn(text = "税延养老保险", width = "10%", column = "taxDelayEndowmentInsurance") @TableTitle(title = "税延养老保险", dataIndex = "taxDelayEndowmentInsurance", key = "taxDelayEndowmentInsurance") @Encrypt private String taxDelayEndowmentInsurance; //其他 - @ExcelProperty(index = 9) + @ExcelProperty(index = 11) @SalaryTableColumn(text = "其他", width = "10%", column = "otherDeduction") @TableTitle(title = "其他", dataIndex = "otherDeduction", key = "otherDeduction") @Encrypt private String otherDeduction; //准予扣除的捐赠额 - @ExcelProperty(index = 10) + @ExcelProperty(index = 12) @SalaryTableColumn(text = "准予扣除的捐赠额", width = "10%", column = "deductionAllowedDonation") @TableTitle(title = "准予扣除的捐赠额", dataIndex = "deductionAllowedDonation", key = "deductionAllowedDonation") @Encrypt private String deductionAllowedDonation; - @ExcelProperty(index = 11) + @ExcelProperty(index = 13) @SalaryTableColumn(text = "个人养老金", width = "10%", column = "privatePension") @TableTitle(title = "个人养老金", dataIndex = "privatePension", key = "privatePension") @Encrypt diff --git a/src/com/engine/salary/entity/datacollection/dto/OtherDeductionRecordDTO.java b/src/com/engine/salary/entity/datacollection/dto/OtherDeductionRecordDTO.java index 4bb115d7a..7f5290520 100644 --- a/src/com/engine/salary/entity/datacollection/dto/OtherDeductionRecordDTO.java +++ b/src/com/engine/salary/entity/datacollection/dto/OtherDeductionRecordDTO.java @@ -71,6 +71,18 @@ public class OtherDeductionRecordDTO { @TableTitle(title = "工号", dataIndex = "jobNum", key = "jobNum") private String jobNum; + //免税收入 + @SalaryTableColumn(text = "免税收入", width = "10%", column = "freeIncome") + @TableTitle(title = "免税收入", dataIndex = "freeIncome", key = "freeIncome") + @Encrypt + private String freeIncome; + + //减免税额 + @SalaryTableColumn(text = "减免税额", width = "10%", column = "derateDeduction") + @TableTitle(title = "减免税额", dataIndex = "derateDeduction", key = "derateDeduction") + @Encrypt + private String derateDeduction; + //商业健康保险 @SalaryTableColumn(text = "商业健康保险", width = "10%", column = "businessHealthyInsurance") @TableTitle(title = "商业健康保险", dataIndex = "businessHealthyInsurance", key = "businessHealthyInsurance") diff --git a/src/com/engine/salary/entity/datacollection/param/OtherDeductionParam.java b/src/com/engine/salary/entity/datacollection/param/OtherDeductionParam.java index 06311ed20..d615856f7 100644 --- a/src/com/engine/salary/entity/datacollection/param/OtherDeductionParam.java +++ b/src/com/engine/salary/entity/datacollection/param/OtherDeductionParam.java @@ -44,6 +44,16 @@ public class OtherDeductionParam { // 工号 private String jobNum; + /** + * 免税收入 + */ + private String freeIncome; + + /** + * 减免税额 + */ + private String derateDeduction; + // 商业健康保险 private String businessHealthyInsurance; diff --git a/src/com/engine/salary/entity/datacollection/po/OtherDeductionPO.java b/src/com/engine/salary/entity/datacollection/po/OtherDeductionPO.java index a3af82274..072f078fe 100644 --- a/src/com/engine/salary/entity/datacollection/po/OtherDeductionPO.java +++ b/src/com/engine/salary/entity/datacollection/po/OtherDeductionPO.java @@ -54,6 +54,13 @@ public class OtherDeductionPO { @Encrypt private String freeIncome; + /** + * 减免税额 + */ + @ElogTransform(name = "减免税额") + @SalaryFormulaVar(defaultLabel = "减免税额", labelId = 102810, dataType = "number") + @Encrypt + private String derateDeduction; /** * 商业健康保险 @@ -71,13 +78,6 @@ public class OtherDeductionPO { @Encrypt private String taxDelayEndowmentInsurance; - /** - * 减免税额 - */ - @ElogTransform(name = "减免税额") - @SalaryFormulaVar(defaultLabel = "减免税额", labelId = 102810, dataType = "number") - @Encrypt - private String derateDeduction; /** * 其他 diff --git a/src/com/engine/salary/entity/datacollection/po/OtherDerateDeductionPO.java b/src/com/engine/salary/entity/datacollection/po/OtherDerateDeductionPO.java index 0dbcd99e6..c9f86d3c6 100644 --- a/src/com/engine/salary/entity/datacollection/po/OtherDerateDeductionPO.java +++ b/src/com/engine/salary/entity/datacollection/po/OtherDerateDeductionPO.java @@ -7,7 +7,6 @@ import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; -import java.time.LocalDateTime; import java.util.Date; /** @@ -58,10 +57,10 @@ public class OtherDerateDeductionPO { private Integer employeeType; @ElogTransform(name = "创建时间", ignore = true) - private LocalDateTime createTime; + private Date createTime; @ElogTransform(name = "更新时间", ignore = true) - private LocalDateTime updateTime; + private Date updateTime; @ElogTransform(name = "创建人", ignore = true) private Long creator; diff --git a/src/com/engine/salary/mapper/datacollection/OtherDeductionMapper.xml b/src/com/engine/salary/mapper/datacollection/OtherDeductionMapper.xml index f21fed4a1..03c20d1bb 100644 --- a/src/com/engine/salary/mapper/datacollection/OtherDeductionMapper.xml +++ b/src/com/engine/salary/mapper/datacollection/OtherDeductionMapper.xml @@ -16,6 +16,8 @@ + + @@ -36,6 +38,8 @@ , t.delete_type , t.tenant_key , t.private_pension + , t.free_income + , t.derate_deduction @@ -59,8 +63,6 @@ - - t1 . @@ -80,7 +82,9 @@ t1.tax_delay_endowment_insurance, t1.other_deduction, t1.deduction_allowed_donation, - t1.private_pension + t1.private_pension, + t1.free_income, + t1.derate_deduction @@ -284,7 +288,7 @@ - ORDER BY ${param.orderRule.orderRule} ${param.orderRule.ascOrDesc} + ORDER BY ${param.orderRule.orderRule} ${param.orderRule.ascOrDesc} @@ -310,7 +314,7 @@ FROM hrsa_other_deduction t WHERE delete_type = 0 - and declare_month = #{param.declareMonth} + and declare_month = #{param.declareMonth} AND t.employee_id IN @@ -336,6 +340,8 @@ other_deduction, deduction_allowed_donation, private_pension, + free_income, + derate_deduction, create_time, update_time, creator, @@ -352,6 +358,8 @@ #{item.otherDeduction}, #{item.deductionAllowedDonation}, #{item.privatePension}, + #{item.freeIncome}, + #{item.derateDeduction}, #{item.createTime}, #{item.updateTime}, #{item.creator}, @@ -369,6 +377,8 @@ other_deduction, deduction_allowed_donation, private_pension, + free_income, + derate_deduction, create_time, update_time, creator, @@ -385,6 +395,8 @@ #{item.otherDeduction,jdbcType=VARCHAR}, #{item.deductionAllowedDonation,jdbcType=VARCHAR}, #{item.privatePension,jdbcType=VARCHAR}, + #{item.freeIncome,jdbcType=VARCHAR}, + #{item.derateDeduction,jdbcType=VARCHAR}, #{item.createTime,jdbcType=DATE}, #{item.updateTime,jdbcType=DATE}, #{item.creator,jdbcType=DOUBLE}, @@ -394,21 +406,23 @@ - INSERT INTO hrsa_other_deduction( - employee_id, - tax_agent_id, - declare_month, - business_healthy_insurance, - tax_delay_endowment_insurance, - other_deduction, - deduction_allowed_donation, - private_pension, - create_time, - update_time, - creator, - tenant_key - ) - VALUES + INSERT INTO hrsa_other_deduction( + employee_id, + tax_agent_id, + declare_month, + business_healthy_insurance, + tax_delay_endowment_insurance, + other_deduction, + deduction_allowed_donation, + private_pension, + free_income, + derate_deduction, + create_time, + update_time, + creator, + tenant_key + ) + VALUES ( #{item.employeeId}, #{item.taxAgentId}, @@ -418,6 +432,8 @@ #{item.otherDeduction}, #{item.deductionAllowedDonation}, #{item.privatePension}, + #{item.freeIncome}, + #{item.derateDeduction}, #{item.createTime}, #{item.updateTime}, #{item.creator}, @@ -464,6 +480,20 @@
+ + + + when id=#{item.id} then #{item.freeIncome} + + + + + + + when id=#{item.id} then #{item.derateDeduction} + + + diff --git a/src/com/engine/salary/mapper/datacollection/OtherDerateDeductionMapper.xml b/src/com/engine/salary/mapper/datacollection/OtherDerateDeductionMapper.xml index 1d7b0e0be..25c8ca88c 100644 --- a/src/com/engine/salary/mapper/datacollection/OtherDerateDeductionMapper.xml +++ b/src/com/engine/salary/mapper/datacollection/OtherDerateDeductionMapper.xml @@ -1,26 +1,28 @@ - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - t.create_time + t + . + create_time , t.creator , t.delete_type , t.employee_id @@ -34,378 +36,260 @@ , t.tax_year_month , t.tenant_key , t.update_time - - + + - - + + + - + SELECT + + FROM hrsa_other_derate_deduction t + WHERE id = #{id} AND delete_type = 0 + + - + SELECT + + FROM hrsa_other_derate_deduction t + WHERE delete_type = 0 + + AND create_time = #{createTime} + + + AND creator = #{creator} + + + AND delete_type = #{deleteType} + + + AND employee_id = #{employeeId} + + + AND employee_type = #{employeeType} + + + AND file_status = #{fileStatus} + + + AND id = #{id} + + + AND main_id = #{mainId} + + + AND other_deduction = #{otherDeduction} + + + AND remark = #{remark} + + + AND tax_agent_id = #{taxAgentId} + + + AND tax_year_month = #{taxYearMonth} + + + AND tenant_key = #{tenantKey} + + + AND update_time = #{updateTime} + + AND id IN #{id} ORDER BY id DESC - - - + + + - - INSERT INTO hrsa_other_derate_deduction - - - - create_time, - - - creator, - - - delete_type, - - - employee_id, - - - employee_type, - - - file_status, - - - id, - - - main_id, - - - other_deduction, - - - remark, - - - tax_agent_id, - - - tax_year_month, - - - tenant_key, - - - update_time, - - - - - #{createTime}, - - - #{creator}, - - - #{deleteType}, - - - #{employeeId}, - - - #{employeeType}, - - - #{fileStatus}, - - - #{id}, - - - #{mainId}, - - - #{otherDeduction}, - - - #{remark}, - - - #{taxAgentId}, - - - #{taxYearMonth}, - - - #{tenantKey}, - - - #{updateTime}, - - - - - - - + INSERT INTO hrsa_other_derate_deduction - ( - create_time, - creator, - delete_type, - employee_id, - employee_type, - file_status, - id, - main_id, - other_deduction, - remark, - tax_agent_id, - tax_year_month, - tenant_key, - update_time, - ) - VALUES - - - ( - #{item.createTime}, - #{item.creator}, - #{item.deleteType}, - #{item.employeeId}, - #{item.employeeType}, - #{item.fileStatus}, - #{item.id}, - #{item.mainId}, - #{item.otherDeduction}, - #{item.remark}, - #{item.taxAgentId}, - #{item.taxYearMonth}, - #{item.tenantKey}, - #{item.updateTime}, - ) - - - - - - - INSERT INTO hrsa_other_derate_deduction ( - create_time, - creator, - delete_type, - employee_id, - employee_type, - file_status, - id, - main_id, - other_deduction, - remark, - tax_agent_id, - tax_year_month, - tenant_key, - update_time, - ) + - - select - #{item.createTime,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, - #{item.creator,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, - #{item.deleteType,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, - #{item.employeeId,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, - #{item.employeeType,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, - #{item.fileStatus,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, - #{item.id,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, - #{item.mainId,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, - #{item.otherDeduction,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, - #{item.remark,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, - #{item.taxAgentId,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, - #{item.taxYearMonth,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, - #{item.tenantKey,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, - #{item.updateTime,jdbcType=DOUBLE、DATE、VARCHAR、INTEGER}, - from dual - - - - - - - INSERT INTO hrsa_other_derate_deduction ( - create_time, - creator, - delete_type, - employee_id, - employee_type, - file_status, - id, - main_id, - other_deduction, - remark, - tax_agent_id, - tax_year_month, - tenant_key, - update_time, - ) - VALUES - ( - #{item.createTime}, - #{item.creator}, - #{item.deleteType}, - #{item.employeeId}, - #{item.employeeType}, - #{item.fileStatus}, - #{item.id}, - #{item.mainId}, - #{item.otherDeduction}, - #{item.remark}, - #{item.taxAgentId}, - #{item.taxYearMonth}, - #{item.tenantKey}, - #{item.updateTime}, - ) - + + create_time, + + + creator, + + + delete_type, + + + employee_id, + + + employee_type, + + + file_status, + + + id, + + + main_id, + + + other_deduction, + + + remark, + + + tax_agent_id, + + + tax_year_month, + + + tenant_key, + + + update_time, + + + + + #{createTime}, + + + #{creator}, + + + #{deleteType}, + + + #{employeeId}, + + + #{employeeType}, + + + #{fileStatus}, + + + #{id}, + + + #{mainId}, + + + #{otherDeduction}, + + + #{remark}, + + + #{taxAgentId}, + + + #{taxYearMonth}, + + + #{tenantKey}, + + + #{updateTime}, + + - - - UPDATE hrsa_other_derate_deduction - - create_time=#{createTime}, - creator=#{creator}, - delete_type=#{deleteType}, - employee_id=#{employeeId}, - employee_type=#{employeeType}, - file_status=#{fileStatus}, - main_id=#{mainId}, - other_deduction=#{otherDeduction}, - remark=#{remark}, - tax_agent_id=#{taxAgentId}, - tax_year_month=#{taxYearMonth}, - tenant_key=#{tenantKey}, - update_time=#{updateTime}, - - WHERE id = #{id} AND delete_type = 0 - - - - - - UPDATE hrsa_other_derate_deduction - - - create_time=#{createTime}, - - - creator=#{creator}, - - - delete_type=#{deleteType}, - - - employee_id=#{employeeId}, - - - employee_type=#{employeeType}, - - - file_status=#{fileStatus}, - - - main_id=#{mainId}, - - - other_deduction=#{otherDeduction}, - - - remark=#{remark}, - - - tax_agent_id=#{taxAgentId}, - - - tax_year_month=#{taxYearMonth}, - - - tenant_key=#{tenantKey}, - - - update_time=#{updateTime}, - - - WHERE id = #{id} AND delete_type = 0 + + + + UPDATE hrsa_other_derate_deduction + + create_time=#{createTime}, + creator=#{creator}, + delete_type=#{deleteType}, + employee_id=#{employeeId}, + employee_type=#{employeeType}, + file_status=#{fileStatus}, + main_id=#{mainId}, + other_deduction=#{otherDeduction}, + remark=#{remark}, + tax_agent_id=#{taxAgentId}, + tax_year_month=#{taxYearMonth}, + tenant_key=#{tenantKey}, + update_time=#{updateTime}, + + WHERE id = #{id} AND delete_type = 0 - - - - UPDATE hrsa_other_derate_deduction - SET delete_type=1 - WHERE id = #{id} AND delete_type = 0 - - + + + + UPDATE hrsa_other_derate_deduction + + + create_time=#{createTime}, + + + creator=#{creator}, + + + delete_type=#{deleteType}, + + + employee_id=#{employeeId}, + + + employee_type=#{employeeType}, + + + file_status=#{fileStatus}, + + + main_id=#{mainId}, + + + other_deduction=#{otherDeduction}, + + + remark=#{remark}, + + + tax_agent_id=#{taxAgentId}, + + + tax_year_month=#{taxYearMonth}, + + + tenant_key=#{tenantKey}, + + + update_time=#{updateTime}, + + + WHERE id = #{id} AND delete_type = 0 + + + + + + UPDATE hrsa_other_derate_deduction + SET delete_type=1 + WHERE id = #{id} + AND delete_type = 0 + + UPDATE hrsa_other_derate_deduction SET delete_type = 1 - WHERE delete_type = 0 + WHERE delete_type = 0 AND id IN #{id} @@ -413,5 +297,4 @@ - \ No newline at end of file diff --git a/src/com/engine/salary/service/impl/OtherDeductionServiceImpl.java b/src/com/engine/salary/service/impl/OtherDeductionServiceImpl.java index 8347f1045..44c9f7148 100644 --- a/src/com/engine/salary/service/impl/OtherDeductionServiceImpl.java +++ b/src/com/engine/salary/service/impl/OtherDeductionServiceImpl.java @@ -257,7 +257,7 @@ public class OtherDeductionServiceImpl extends Service implements OtherDeduction List employeeSameIds = new ArrayList<>(); //筛选导入人员信息可以在人力资源池中匹配到的人员信息 - List emps = getSalaryEmployeeService(user).matchImportEmployee(confValue, employees, userName, deparmentName, mobile, workcode, idNo,null); + List emps = getSalaryEmployeeService(user).matchImportEmployee(confValue, employees, userName, deparmentName, mobile, workcode, idNo, null); //含在职和离职,选在职数据 if (CollectionUtils.isNotEmpty(emps) && emps.size() > 1) { employeeSameIds = emps.stream() @@ -327,6 +327,12 @@ public class OtherDeductionServiceImpl extends Service implements OtherDeduction } } + //免税收入 + String freeIncome = dto.getFreeIncome(); + po.setFreeIncome(freeIncome); + //减免税额 + String derateDeduction = dto.getDerateDeduction(); + po.setDerateDeduction(derateDeduction); //商业健康保险 String businessHealthyInsurance = dto.getBusinessHealthyInsurance(); po.setBusinessHealthyInsurance(businessHealthyInsurance); @@ -504,7 +510,7 @@ public class OtherDeductionServiceImpl extends Service implements OtherDeduction private List> getExcelRowList(OtherDeductionQueryParam param, boolean hasData) { long employeeId = user.getUID(); //excel标题 - List title = Arrays.asList("姓名", "个税扣缴义务人", "部门", "手机号", "工号", "证件号码", "入职日期", "商业健康保险", "税延养老保险", "其他", "准予扣除的捐赠额", "个人养老金"); + List title = Arrays.asList("姓名", "个税扣缴义务人", "部门", "手机号", "工号", "证件号码", "入职日期", "免税收入", "减免税额", "商业健康保险", "税延养老保险", "其他", "准予扣除的捐赠额", "个人养老金"); List> rowList = new ArrayList<>(); rowList.add(title); @@ -536,6 +542,8 @@ public class OtherDeductionServiceImpl extends Service implements OtherDeduction cellList.add(Util.null2String(dto.getJobNum())); cellList.add(Util.null2String(dto.getIdNo())); cellList.add(Util.null2String(dto.getHiredate())); + cellList.add(NumberUtil.isNumber(dto.getFreeIncome()) ? new BigDecimal(dto.getFreeIncome()) : Util.null2String(dto.getFreeIncome())); + cellList.add(NumberUtil.isNumber(dto.getDerateDeduction()) ? new BigDecimal(dto.getDerateDeduction()) : Util.null2String(dto.getDerateDeduction())); cellList.add(NumberUtil.isNumber(dto.getBusinessHealthyInsurance()) ? new BigDecimal(dto.getBusinessHealthyInsurance()) : Util.null2String(dto.getBusinessHealthyInsurance())); cellList.add(NumberUtil.isNumber(dto.getTaxDelayEndowmentInsurance()) ? new BigDecimal(dto.getTaxDelayEndowmentInsurance()) : Util.null2String(dto.getTaxDelayEndowmentInsurance())); cellList.add(NumberUtil.isNumber(dto.getOtherDeduction()) ? new BigDecimal(dto.getOtherDeduction()) : Util.null2String(dto.getOtherDeduction())); @@ -603,7 +611,7 @@ public class OtherDeductionServiceImpl extends Service implements OtherDeduction */ private List> getExcelRowDetailList(OtherDeductionQueryParam param) { //excel标题 - List title = Arrays.asList("姓名", "申报月份", "个税扣缴义务人", "部门", "手机号", "工号", "商业健康保险", "税延养老保险", "其他", "准予扣除的捐赠额", "个人养老金"); + List title = Arrays.asList("姓名", "申报月份", "个税扣缴义务人", "部门", "手机号", "工号", "免税收入", "减免税额", "商业健康保险", "税延养老保险", "其他", "准予扣除的捐赠额", "个人养老金"); SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM"); //查询详细信息 @@ -619,6 +627,8 @@ public class OtherDeductionServiceImpl extends Service implements OtherDeduction cellList.add(Util.null2String(dto.getDepartmentName())); cellList.add(Util.null2String(dto.getMobile())); cellList.add(Util.null2String(dto.getJobNum())); + cellList.add(NumberUtil.isNumber(dto.getFreeIncome()) ? new BigDecimal(dto.getFreeIncome()) : Util.null2String(dto.getFreeIncome())); + cellList.add(NumberUtil.isNumber(dto.getDerateDeduction()) ? new BigDecimal(dto.getDerateDeduction()) : Util.null2String(dto.getDerateDeduction())); cellList.add(NumberUtil.isNumber(dto.getBusinessHealthyInsurance()) ? new BigDecimal(dto.getBusinessHealthyInsurance()) : Util.null2String(dto.getBusinessHealthyInsurance())); cellList.add(NumberUtil.isNumber(dto.getTaxDelayEndowmentInsurance()) ? new BigDecimal(dto.getTaxDelayEndowmentInsurance()) : Util.null2String(dto.getTaxDelayEndowmentInsurance())); cellList.add(NumberUtil.isNumber(dto.getOtherDeduction()) ? new BigDecimal(dto.getOtherDeduction()) : Util.null2String(dto.getOtherDeduction())); @@ -674,6 +684,8 @@ public class OtherDeductionServiceImpl extends Service implements OtherDeduction ArrayList updateList = new ArrayList<>(); OtherDeductionPO build = OtherDeductionPO.builder() .id(otherDeductionParam.getId()) + .freeIncome(otherDeductionParam.getFreeIncome()) + .derateDeduction(otherDeductionParam.getDerateDeduction()) .businessHealthyInsurance(otherDeductionParam.getBusinessHealthyInsurance()) .taxDelayEndowmentInsurance(otherDeductionParam.getTaxDelayEndowmentInsurance()) .otherDeduction(otherDeductionParam.getOtherDeduction()) @@ -753,7 +765,12 @@ public class OtherDeductionServiceImpl extends Service implements OtherDeduction throw new SalaryRunTimeException("个税扣缴义务人不存在或不在权限范围内"); } } - + //免税收入 + String freeIncome = otherDeductionParam.getFreeIncome(); + po.setFreeIncome(freeIncome); + //减免税额 + String derateDeduction = otherDeductionParam.getDerateDeduction(); + po.setDerateDeduction(derateDeduction); //商业健康保险 String businessHealthyInsurance = otherDeductionParam.getBusinessHealthyInsurance(); po.setBusinessHealthyInsurance(businessHealthyInsurance); diff --git a/src/com/engine/salary/sys/service/impl/SalarySysConfServiceImpl.java b/src/com/engine/salary/sys/service/impl/SalarySysConfServiceImpl.java index 145a8a72b..e517b6c06 100644 --- a/src/com/engine/salary/sys/service/impl/SalarySysConfServiceImpl.java +++ b/src/com/engine/salary/sys/service/impl/SalarySysConfServiceImpl.java @@ -1060,12 +1060,16 @@ public class SalarySysConfServiceImpl extends Service implements SalarySysConfSe if (CollectionUtils.isNotEmpty(otherDeductionPos)) { otherDeductionPos.forEach(po -> { if (OpenEnum.OFF.getValue().equals(isOpenEncrypt)) { + po.setFreeIncome(AESEncryptUtil.closeEncryptSetting(po.getFreeIncome(), sysConfPo)); + po.setDerateDeduction(AESEncryptUtil.closeEncryptSetting(po.getDerateDeduction(), sysConfPo)); po.setBusinessHealthyInsurance(AESEncryptUtil.closeEncryptSetting(po.getBusinessHealthyInsurance(), sysConfPo)); po.setTaxDelayEndowmentInsurance(AESEncryptUtil.closeEncryptSetting(po.getTaxDelayEndowmentInsurance(), sysConfPo)); po.setOtherDeduction(AESEncryptUtil.closeEncryptSetting(po.getOtherDeduction(), sysConfPo)); po.setDeductionAllowedDonation(AESEncryptUtil.closeEncryptSetting(po.getDeductionAllowedDonation(), sysConfPo)); po.setPrivatePension(AESEncryptUtil.closeEncryptSetting(po.getPrivatePension(), sysConfPo)); } else { + po.setFreeIncome(AESEncryptUtil.encrypt(po.getFreeIncome())); + po.setDerateDeduction(AESEncryptUtil.encrypt(po.getDerateDeduction())); po.setBusinessHealthyInsurance(AESEncryptUtil.encrypt(po.getBusinessHealthyInsurance())); po.setTaxDelayEndowmentInsurance(AESEncryptUtil.encrypt(po.getTaxDelayEndowmentInsurance())); po.setOtherDeduction(AESEncryptUtil.encrypt(po.getOtherDeduction())); From 10266bf73982fc705e7cedace88706cbecca19e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Tue, 17 Dec 2024 15:00:41 +0800 Subject: [PATCH 195/218] =?UTF-8?q?=E5=A4=84=E7=90=86=E7=A6=BB=E8=81=8C?= =?UTF-8?q?=E5=91=98=E5=B7=A5=E6=97=A0=E6=B3=95=E5=AF=BC=E5=85=A5=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salary/service/impl/SalaryAcctExcelServiceImpl.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java index ce89f8196..67aff3ecd 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java @@ -1082,9 +1082,8 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc stopWatch.stop(); // 租户下所有的人员 stopWatch.start("薪资核算确认的人员"); - List salaryEmployees = getSalaryEmployeeService(user).listAllForReport(); - Map salaryEmployeeMap = SalaryEntityUtil.convert2Map(salaryEmployees, DataCollectionEmployee::getUsername, DataCollectionEmployee::getEmployeeId); - Map emps = SalaryEntityUtil.convert2Map(salaryEmployees, DataCollectionEmployee::getEmployeeId); + List employeeIds = SalaryEntityUtil.properties(salaryAcctEmployees, SalaryAcctEmployeePO::getEmployeeId, Collectors.toList()); + List salaryEmployees = getSalaryEmployeeService(user).getEmployeeByIdsAll(employeeIds); stopWatch.stop(); // 租户下所有的个税扣缴义务人 stopWatch.start("租户下所有的个税扣缴义务人"); From bf8f55aaa9a3c74d9d48810305ac791d7adeba9b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Tue, 17 Dec 2024 15:47:49 +0800 Subject: [PATCH 196/218] =?UTF-8?q?=E6=98=AF=E5=90=A6=E5=BC=95=E7=94=A8?= =?UTF-8?q?=E7=8F=AD=E6=AC=A1=E7=BB=99=E5=87=BA=E6=8C=89=E9=92=AE=E9=80=89?= =?UTF-8?q?=E6=8B=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/RemoteAttend4SalaryServiceImpl.java | 25 ++++++++++++++++--- .../sys/constant/SalarySysConstant.java | 3 +++ 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/src/com/engine/salary/remote/attend/service/impl/RemoteAttend4SalaryServiceImpl.java b/src/com/engine/salary/remote/attend/service/impl/RemoteAttend4SalaryServiceImpl.java index eeddfd41d..c54bbf10b 100644 --- a/src/com/engine/salary/remote/attend/service/impl/RemoteAttend4SalaryServiceImpl.java +++ b/src/com/engine/salary/remote/attend/service/impl/RemoteAttend4SalaryServiceImpl.java @@ -2,12 +2,15 @@ package com.engine.salary.remote.attend.service.impl; import com.alibaba.druid.support.json.JSONUtils; import com.alibaba.fastjson.JSONObject; +import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; import com.engine.kq.cmd.report.GetKQReportCmd; import com.engine.salary.mapper.datacollection.AttendQuoteFieldMapper; import com.engine.salary.remote.attend.cmd.GetSearchListCmd; import com.engine.salary.remote.attend.entity.Attend4Salary; import com.engine.salary.remote.attend.service.RemoteAttend4SalaryService; +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.db.MapperProxyFactory; @@ -20,11 +23,14 @@ import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.math.NumberUtils; import weaver.general.BaseBean; import weaver.general.Util; +import weaver.hrm.User; import java.time.LocalDate; import java.util.*; import java.util.stream.Collectors; +import static com.engine.salary.sys.constant.SalarySysConstant.ATTENDANCE_SERIAL_COLLECTION_BTN; + @Slf4j public class RemoteAttend4SalaryServiceImpl extends Service implements RemoteAttend4SalaryService { private final Boolean isLog = "true".equals(new BaseBean().getPropValue("hrmSalary", "log")); @@ -33,12 +39,23 @@ public class RemoteAttend4SalaryServiceImpl extends Service implements RemoteAtt return MapperProxyFactory.getProxy(AttendQuoteFieldMapper.class); } + private SalarySysConfService getSalarySysConfService(User user) { + return ServiceUtil.getService(SalarySysConfServiceImpl.class, user); + } + + //是否采集考勤班次数据 + boolean isCollectAttendanceSerial = "1".equals(getSalarySysConfService(user).getValueByCode(ATTENDANCE_SERIAL_COLLECTION_BTN)); + + @Override public List> getColumns() { - //兼容获取班次信息字段 - List attendanceSerials = getAttendQuoteFieldMapper().getAttendanceSerials(); - String attendanceSerial = Joiner.on(",").join((Iterable) attendanceSerials); + //是否采集考勤班次数据 + String attendanceSerial = ""; + if (isCollectAttendanceSerial) { + List attendanceSerials = getAttendQuoteFieldMapper().getAttendanceSerials(); + attendanceSerial = Joiner.on(",").join((Iterable) attendanceSerials); + } Map paramsMap = new HashMap(); paramsMap.put("typeselect", "3"); @@ -146,7 +163,7 @@ public class RemoteAttend4SalaryServiceImpl extends Service implements RemoteAtt paramsMap.put("resourceId", String.join(",", resourceIds)); paramsMap.put("isNoAccount", "1"); //班次 - paramsMap.put("attendanceSerial", attend4Salary.getAttendanceSerial()); + paramsMap.put("attendanceSerial", isCollectAttendanceSerial ? attend4Salary.getAttendanceSerial() : ""); paramsMap.put("isFromMyAttendance", "1"); Map temp = new HashMap(); temp.put("data", JSONObject.toJSONString(paramsMap)); diff --git a/src/com/engine/salary/sys/constant/SalarySysConstant.java b/src/com/engine/salary/sys/constant/SalarySysConstant.java index 4f5966095..7a3c052be 100644 --- a/src/com/engine/salary/sys/constant/SalarySysConstant.java +++ b/src/com/engine/salary/sys/constant/SalarySysConstant.java @@ -214,4 +214,7 @@ public class SalarySysConstant { * 快照时间点 */ public static final String SHOT_EMP_TIME_TYPE = "SHOT_EMP_TIME_TYPE"; + + //是否采集考勤班次数据,0:关闭 1:开启 + public static final String ATTENDANCE_SERIAL_COLLECTION_BTN = "ATTENDANCE_SERIAL_COLLECTION_BTN"; } From 4a9a001311da0abd6caa7fa84977f0e132223e8b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Thu, 19 Dec 2024 09:53:56 +0800 Subject: [PATCH 197/218] =?UTF-8?q?=E5=87=A0=E4=B8=AA=E9=99=84=E8=A1=A8?= =?UTF-8?q?=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dto/DerateDeductionListDTO.java | 102 ++++++ .../dto/EndowmentInsuranceListDTO.java | 106 ++++++ .../datacollection/dto/FreeIncomeListDTO.java | 100 ++++++ .../dto/GrantDonationListDTO.java | 121 +++++++ .../dto/HealthInsuranceListDTO.java | 108 ++++++ .../dto/OtherDeductionListDTO.java | 36 +- .../dto/OtherDerateDeductionListDTO.java | 95 ++++++ .../param/OtherDeductionImportParam.java | 4 - .../datacollection/po/FreeIncomePO.java | 3 +- .../datacollection/po/OtherDeductionPO.java | 5 + .../po/OtherDerateDeductionPO.java | 4 +- .../enums/datacollection/TaxFreeTypeEnum.java | 62 ++++ .../datacollection/DerateDeductionMapper.java | 73 ++++ .../datacollection/DerateDeductionMapper.xml | 313 ++++++++++++++++++ .../salary/service/OtherDeductionService.java | 14 +- .../TaxDeclarationApiConfigService.java | 6 + .../impl/OtherDeductionServiceImpl.java | 265 ++++++++++++++- .../TaxDeclarationApiConfigServiceImpl.java | 6 + .../salary/wrapper/OtherDeductionWrapper.java | 25 +- 19 files changed, 1403 insertions(+), 45 deletions(-) create mode 100644 src/com/engine/salary/entity/datacollection/dto/DerateDeductionListDTO.java create mode 100644 src/com/engine/salary/entity/datacollection/dto/EndowmentInsuranceListDTO.java create mode 100644 src/com/engine/salary/entity/datacollection/dto/FreeIncomeListDTO.java create mode 100644 src/com/engine/salary/entity/datacollection/dto/GrantDonationListDTO.java create mode 100644 src/com/engine/salary/entity/datacollection/dto/HealthInsuranceListDTO.java create mode 100644 src/com/engine/salary/entity/datacollection/dto/OtherDerateDeductionListDTO.java create mode 100644 src/com/engine/salary/enums/datacollection/TaxFreeTypeEnum.java create mode 100644 src/com/engine/salary/mapper/datacollection/DerateDeductionMapper.java create mode 100644 src/com/engine/salary/mapper/datacollection/DerateDeductionMapper.xml diff --git a/src/com/engine/salary/entity/datacollection/dto/DerateDeductionListDTO.java b/src/com/engine/salary/entity/datacollection/dto/DerateDeductionListDTO.java new file mode 100644 index 000000000..c761c4971 --- /dev/null +++ b/src/com/engine/salary/entity/datacollection/dto/DerateDeductionListDTO.java @@ -0,0 +1,102 @@ +package com.engine.salary.entity.datacollection.dto; + +import com.engine.hrmelog.annotation.ElogTransform; +import com.engine.salary.annotation.I18n; +import com.engine.salary.annotation.TableTitle; +import com.engine.salary.enums.datacollection.DataCollectionEmployeeTypeEnum; +import com.engine.salary.util.excel.ExcelProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; + +/** + * 免税收入 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class DerateDeductionListDTO { + + private Long id; + + private Long mainId; + + + /** + * 个税扣缴义务人id + */ + private Long taxAgentId; + + + private Long employeeId; + /** + * 人员类型 + * + * @see DataCollectionEmployeeTypeEnum + */ + private Integer employeeType; + + @TableTitle(title = "税款所属期", dataIndex = "taxYearMonth", key = "taxYearMonth") + private Date taxYearMonth; + + //姓名 + @TableTitle(title = "姓名", dataIndex = "username", key = "username") + @ExcelProperty(index = 0) + @I18n + private String username; + + //个税扣缴义务人 + @TableTitle(title = "个税扣缴义务人", dataIndex = "taxAgentName", key = "taxAgentName") + @ExcelProperty(index = 1) + private String taxAgentName; + + //部门 + @TableTitle(title = "部门", dataIndex = "departmentName", key = "departmentName") + @ExcelProperty(index = 2) + @I18n + private String departmentName; + + //手机号 + @TableTitle(title = "手机号", dataIndex = "mobile", key = "mobile") + @ExcelProperty(index = 3) + private String mobile; + + //工号 + @TableTitle(title = "工号", dataIndex = "jobNum", key = "jobNum") + @ExcelProperty(index = 4) + private String jobNum; + + //证件号码 + @ExcelProperty(index = 5) + @TableTitle(title = "证件号码", dataIndex = "idNo", key = "idNo") + private String idNo; + + + @ExcelProperty(index = 6) + @TableTitle(title = "减免事项", dataIndex = "derateItem", key = "derateItem") + private String derateItem; + + @ExcelProperty(index = 8) + @TableTitle(title = "减免性质", dataIndex = "derateProperty", key = "derateProperty") + @ElogTransform(name = "减免性质") + private String derateProperty; + + @ExcelProperty(index = 9) + @TableTitle(title = "减免金额", dataIndex = "derateAmount", key = "derateAmount") + @ElogTransform(name = "减免金额") + private String derateAmount; + + + + @TableTitle(title = "操作", dataIndex = "operate", key = "operate") + private String operate; +} diff --git a/src/com/engine/salary/entity/datacollection/dto/EndowmentInsuranceListDTO.java b/src/com/engine/salary/entity/datacollection/dto/EndowmentInsuranceListDTO.java new file mode 100644 index 000000000..cfd7e773d --- /dev/null +++ b/src/com/engine/salary/entity/datacollection/dto/EndowmentInsuranceListDTO.java @@ -0,0 +1,106 @@ +package com.engine.salary.entity.datacollection.dto; + +import com.engine.salary.annotation.I18n; +import com.engine.salary.annotation.TableTitle; +import com.engine.salary.enums.datacollection.DataCollectionEmployeeTypeEnum; +import com.engine.salary.util.excel.ExcelProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; + +/** + * 免税收入 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class EndowmentInsuranceListDTO { + + private Long id; + + private Long mainId; + + + /** + * 个税扣缴义务人id + */ + private Long taxAgentId; + + + private Long employeeId; + /** + * 人员类型 + * + * @see DataCollectionEmployeeTypeEnum + */ + private Integer employeeType; + + @TableTitle(title = "税款所属期", dataIndex = "taxYearMonth", key = "taxYearMonth") + private Date taxYearMonth; + + //姓名 + @TableTitle(title = "姓名", dataIndex = "username", key = "username") + @ExcelProperty(index = 0) + @I18n + private String username; + + //个税扣缴义务人 + @TableTitle(title = "个税扣缴义务人", dataIndex = "taxAgentName", key = "taxAgentName") + @ExcelProperty(index = 1) + private String taxAgentName; + + //部门 + @TableTitle(title = "部门", dataIndex = "departmentName", key = "departmentName") + @ExcelProperty(index = 2) + @I18n + private String departmentName; + + //手机号 + @TableTitle(title = "手机号", dataIndex = "mobile", key = "mobile") + @ExcelProperty(index = 3) + private String mobile; + + //工号 + @TableTitle(title = "工号", dataIndex = "jobNum", key = "jobNum") + @ExcelProperty(index = 4) + private String jobNum; + + //证件号码 + @ExcelProperty(index = 5) + @TableTitle(title = "证件号码", dataIndex = "idNo", key = "idNo") + private String idNo; + + + @ExcelProperty(index = 6) + @TableTitle(title = "税延养老账户编号", dataIndex = "accountNumber", key = "accountNumber") + private String accountNumber; + + @ExcelProperty(index = 7) + @TableTitle(title = "报税校验码", dataIndex = "checkCode", key = "checkCode") + private String checkCode; + + @ExcelProperty(index = 8) + @TableTitle(title = "年度保费", dataIndex = "yearPremium", key = "yearPremium") + private String yearPremium; + + @ExcelProperty(index = 9) + @TableTitle(title = "月度保费", dataIndex = "monthPremium", key = "monthPremium") + private String monthPremium; + + @ExcelProperty(index = 10) + @TableTitle(title = "本期扣除金额", dataIndex = "currentDeduction", key = "currentDeduction") + private String currentDeduction; + + + @TableTitle(title = "操作", dataIndex = "operate", key = "operate") + private String operate; +} diff --git a/src/com/engine/salary/entity/datacollection/dto/FreeIncomeListDTO.java b/src/com/engine/salary/entity/datacollection/dto/FreeIncomeListDTO.java new file mode 100644 index 000000000..a8e132c47 --- /dev/null +++ b/src/com/engine/salary/entity/datacollection/dto/FreeIncomeListDTO.java @@ -0,0 +1,100 @@ +package com.engine.salary.entity.datacollection.dto; + +import com.engine.salary.annotation.Encrypt; +import com.engine.salary.annotation.I18n; +import com.engine.salary.annotation.TableTitle; +import com.engine.salary.enums.datacollection.DataCollectionEmployeeTypeEnum; +import com.engine.salary.util.excel.ExcelProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; + +/** + * 免税收入 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class FreeIncomeListDTO { + + private Long id; + + private Long mainId; + + + /** + * 个税扣缴义务人id + */ + private Long taxAgentId; + + + private Long employeeId; + /** + * 人员类型 + * + * @see DataCollectionEmployeeTypeEnum + */ + private Integer employeeType; + + @TableTitle(title = "税款所属期", dataIndex = "taxYearMonth", key = "taxYearMonth") + private Date taxYearMonth; + + //姓名 + @TableTitle(title = "姓名", dataIndex = "username", key = "username") + @ExcelProperty(index = 0) + @I18n + private String username; + + //个税扣缴义务人 + @TableTitle(title = "个税扣缴义务人", dataIndex = "taxAgentName", key = "taxAgentName") + @ExcelProperty(index = 1) + private String taxAgentName; + + //部门 + @TableTitle(title = "部门", dataIndex = "departmentName", key = "departmentName") + @ExcelProperty(index = 2) + @I18n + private String departmentName; + + //手机号 + @TableTitle(title = "手机号", dataIndex = "mobile", key = "mobile") + @ExcelProperty(index = 3) + private String mobile; + + //工号 + @TableTitle(title = "工号", dataIndex = "jobNum", key = "jobNum") + @ExcelProperty(index = 4) + private String jobNum; + + //证件号码 + @ExcelProperty(index = 5) + @TableTitle(title = "证件号码", dataIndex = "idNo", key = "idNo") + private String idNo; + + + @ExcelProperty(index = 6) + @TableTitle(title = "免税事项", dataIndex = "freeItem", key = "freeItem") + private String freeItem; + + @ExcelProperty(index = 7) + @TableTitle(title = "免税性质", dataIndex = "freeProperty", key = "freeProperty") + private String freeProperty; + + @ExcelProperty(index = 8) + @TableTitle(title = "免税金额", dataIndex = "freeAmount", key = "freeAmount") + @Encrypt + private String freeAmount; + + + @TableTitle(title = "操作", dataIndex = "operate", key = "operate") + private String operate; +} diff --git a/src/com/engine/salary/entity/datacollection/dto/GrantDonationListDTO.java b/src/com/engine/salary/entity/datacollection/dto/GrantDonationListDTO.java new file mode 100644 index 000000000..a6fd88268 --- /dev/null +++ b/src/com/engine/salary/entity/datacollection/dto/GrantDonationListDTO.java @@ -0,0 +1,121 @@ +package com.engine.salary.entity.datacollection.dto; + +import com.engine.salary.annotation.I18n; +import com.engine.salary.annotation.SalaryTableColumn; +import com.engine.salary.annotation.TableTitle; +import com.engine.salary.enums.datacollection.DataCollectionEmployeeTypeEnum; +import com.engine.salary.util.excel.ExcelProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; + +/** + * 准予扣除的捐赠额 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class GrantDonationListDTO { + + private Long id; + + private Long mainId; + + + private Long employeeId; + + /** + * 人员类型 + * + * @see DataCollectionEmployeeTypeEnum + */ + private Integer employeeType; + + @TableTitle(title = "税款所属期", dataIndex = "taxYearMonth", key = "taxYearMonth") + private Date taxYearMonth; + + //姓名 + @SalaryTableColumn(text = "姓名", width = "10%", column = "username") + @TableTitle(title = "姓名", dataIndex = "username", key = "username") + @ExcelProperty(index = 0) + @I18n + private String username; + + //个税扣缴义务人 + @SalaryTableColumn(text = "个税扣缴义务人", width = "10%", column = "taxAgentName") + @TableTitle(title = "个税扣缴义务人", dataIndex = "taxAgentName", key = "taxAgentName") + @ExcelProperty(index = 1) + private String taxAgentName; + + /** + * 个税扣缴义务人id + */ + private Long taxAgentId; + + //部门 + @SalaryTableColumn(text = "部门", width = "10%", column = "departmentName") + @TableTitle(title = "部门", dataIndex = "departmentName", key = "departmentName") + @ExcelProperty(index = 2) + @I18n + private String departmentName; + + //手机号 + @SalaryTableColumn(text = "手机号", width = "10%", column = "mobile") + @TableTitle(title = "手机号", dataIndex = "mobile", key = "mobile") + @ExcelProperty(index = 3) + private String mobile; + + //工号 + @SalaryTableColumn(text = "工号", width = "10%", column = "jobNum") + @TableTitle(title = "工号", dataIndex = "jobNum", key = "jobNum") + @ExcelProperty(index = 4) + private String jobNum; + + //证件号码 + @SalaryTableColumn(text = "证件号码", width = "10%", column = "idNo") + @TableTitle(title = "证件号码", dataIndex = "idNo", key = "idNo") + @ExcelProperty(index = 5) + private String idNo; + + + @ExcelProperty(index = 6) + @TableTitle(title = "受赠单位名称", dataIndex = "recipientName", key = "recipientName") + private String recipientName; + + @ExcelProperty(index = 7) + @TableTitle(title = "受赠单位纳税人识别号", dataIndex = "taxCode", key = "taxCode") + private String taxCode; + + @ExcelProperty(index = 8) + @TableTitle(title = "捐赠凭证号", dataIndex = "donationNumber", key = "donationNumber") + private String donationNumber; + + @ExcelProperty(index = 9) + @TableTitle(title = "捐赠日期", dataIndex = "donateDate", key = "donateDate") + private Date donateDate; + + @ExcelProperty(index = 10) + @TableTitle(title = "捐赠金额", dataIndex = "donateAmount", key = "donateAmount") + private String donateAmount; + + @ExcelProperty(index = 11) + @TableTitle(title = "扣除比例", dataIndex = "deductionProportion", key = "deductionProportion") + private String deductionProportion; + + @ExcelProperty(index = 12) + @TableTitle(title = "实际扣除金额", dataIndex = "actualDeduction", key = "actualDeduction") + private String actualDeduction; + + + @TableTitle(title = "操作", dataIndex = "operate", key = "operate") + private String operate; +} diff --git a/src/com/engine/salary/entity/datacollection/dto/HealthInsuranceListDTO.java b/src/com/engine/salary/entity/datacollection/dto/HealthInsuranceListDTO.java new file mode 100644 index 000000000..5790a528e --- /dev/null +++ b/src/com/engine/salary/entity/datacollection/dto/HealthInsuranceListDTO.java @@ -0,0 +1,108 @@ +package com.engine.salary.entity.datacollection.dto; + +import com.engine.salary.annotation.I18n; +import com.engine.salary.annotation.SalaryTableColumn; +import com.engine.salary.annotation.TableTitle; +import com.engine.salary.enums.datacollection.DataCollectionEmployeeTypeEnum; +import com.engine.salary.util.excel.ExcelProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; + +/** + * 商业健康保险 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class HealthInsuranceListDTO { + + private Long id; + + private Long mainId; + + + private Long employeeId; + + + /** + * 人员类型 + * + * @see DataCollectionEmployeeTypeEnum + */ + private Integer employeeType; + + @TableTitle(title = "税款所属期", dataIndex = "taxYearMonth", key = "taxYearMonth") + private Date taxYearMonth; + + //姓名 + @TableTitle(title = "姓名", dataIndex = "username", key = "username") + @ExcelProperty(index = 0) + @I18n + private String username; + + //个税扣缴义务人 + @TableTitle(title = "个税扣缴义务人", dataIndex = "taxAgentName", key = "taxAgentName") + @ExcelProperty(index = 1) + private String taxAgentName; + + /** + * 个税扣缴义务人id + */ + private Long taxAgentId; + + //部门 + @TableTitle(title = "部门", dataIndex = "departmentName", key = "departmentName") + @ExcelProperty(index = 2) + @I18n + private String departmentName; + + //手机号 + @TableTitle(title = "手机号", dataIndex = "mobile", key = "mobile") + @ExcelProperty(index = 3) + private String mobile; + + //工号 + @TableTitle(title = "工号", dataIndex = "jobNum", key = "jobNum") + @ExcelProperty(index = 4) + private String jobNum; + + //证件号码 + @SalaryTableColumn(text = "证件号码", width = "10%", column = "idNo") + @TableTitle(title = "证件号码", dataIndex = "idNo", key = "idNo") + @ExcelProperty(index = 5) + private String idNo; + + @ExcelProperty(index = 6) + @TableTitle(title = "税优识别码", dataIndex = "identificationNumber", key = "identificationNumber") + private String identificationNumber; + + @ExcelProperty(index = 7) + @TableTitle(title = "保单生效日期", dataIndex = "effectiveDate", key = "effectiveDate") + private Date effectiveDate; + + @ExcelProperty(index = 8) + @TableTitle(title = "年度保费", dataIndex = "yearPremium", key = "yearPremium") + + private String yearPremium; + + @ExcelProperty(index = 9) + @TableTitle(title = "月度保费", dataIndex = "monthPremium", key = "monthPremium") + private String monthPremium; + + @ExcelProperty(index = 10) + @TableTitle(title = "本期扣除金额", dataIndex = "currentDeduction", key = "currentDeduction") + private String currentDeduction; + + @TableTitle(title = "操作", dataIndex = "operate", key = "operate") + private String operate; +} diff --git a/src/com/engine/salary/entity/datacollection/dto/OtherDeductionListDTO.java b/src/com/engine/salary/entity/datacollection/dto/OtherDeductionListDTO.java index abfffc82f..aaa2b4109 100644 --- a/src/com/engine/salary/entity/datacollection/dto/OtherDeductionListDTO.java +++ b/src/com/engine/salary/entity/datacollection/dto/OtherDeductionListDTO.java @@ -90,42 +90,44 @@ public class OtherDeductionListDTO { @TableTitle(title = "免税收入", dataIndex = "freeIncome", key = "freeIncome") private String freeIncome; - /** - * 减免税额 - */ - @ExcelProperty(index = 8) - @SalaryTableColumn(text = "入职日期", width = "10%", column = "derateDeduction") - @TableTitle(title = "减免税额", dataIndex = "derateDeduction", key = "derateDeduction") - private String derateDeduction; + //商业健康保险 - @ExcelProperty(index = 9) + @ExcelProperty(index = 8) @SalaryTableColumn(text = "商业健康保险", width = "10%", column = "businessHealthyInsurance") @TableTitle(title = "商业健康保险", dataIndex = "businessHealthyInsurance", key = "businessHealthyInsurance") @Encrypt private String businessHealthyInsurance; //税延养老保险 - @ExcelProperty(index = 10) + @ExcelProperty(index = 9) @SalaryTableColumn(text = "税延养老保险", width = "10%", column = "taxDelayEndowmentInsurance") @TableTitle(title = "税延养老保险", dataIndex = "taxDelayEndowmentInsurance", key = "taxDelayEndowmentInsurance") @Encrypt private String taxDelayEndowmentInsurance; - //其他 - @ExcelProperty(index = 11) - @SalaryTableColumn(text = "其他", width = "10%", column = "otherDeduction") - @TableTitle(title = "其他", dataIndex = "otherDeduction", key = "otherDeduction") - @Encrypt - private String otherDeduction; - //准予扣除的捐赠额 - @ExcelProperty(index = 12) + @ExcelProperty(index = 10) @SalaryTableColumn(text = "准予扣除的捐赠额", width = "10%", column = "deductionAllowedDonation") @TableTitle(title = "准予扣除的捐赠额", dataIndex = "deductionAllowedDonation", key = "deductionAllowedDonation") @Encrypt private String deductionAllowedDonation; + /** + * 减免税额 + */ + @ExcelProperty(index = 11) + @SalaryTableColumn(text = "减免税额", width = "10%", column = "derateDeduction") + @TableTitle(title = "减免税额", dataIndex = "derateDeduction", key = "derateDeduction") + private String derateDeduction; + + //其他 + @ExcelProperty(index = 12) + @SalaryTableColumn(text = "其他", width = "10%", column = "otherDeduction") + @TableTitle(title = "其他", dataIndex = "otherDeduction", key = "otherDeduction") + @Encrypt + private String otherDeduction; + @ExcelProperty(index = 13) @SalaryTableColumn(text = "个人养老金", width = "10%", column = "privatePension") @TableTitle(title = "个人养老金", dataIndex = "privatePension", key = "privatePension") diff --git a/src/com/engine/salary/entity/datacollection/dto/OtherDerateDeductionListDTO.java b/src/com/engine/salary/entity/datacollection/dto/OtherDerateDeductionListDTO.java new file mode 100644 index 000000000..42cff95a6 --- /dev/null +++ b/src/com/engine/salary/entity/datacollection/dto/OtherDerateDeductionListDTO.java @@ -0,0 +1,95 @@ +package com.engine.salary.entity.datacollection.dto; + +import com.engine.salary.annotation.I18n; +import com.engine.salary.annotation.SalaryTableColumn; +import com.engine.salary.annotation.TableTitle; +import com.engine.salary.enums.datacollection.DataCollectionEmployeeTypeEnum; +import com.engine.salary.util.excel.ExcelProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; + +/** + * 商业健康保险 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class OtherDerateDeductionListDTO { + + private Long id; + + private Long mainId; + + + private Long employeeId; + + + /** + * 人员类型 + * + * @see DataCollectionEmployeeTypeEnum + */ + private Integer employeeType; + + @TableTitle(title = "税款所属期", dataIndex = "taxYearMonth", key = "taxYearMonth") + private Date taxYearMonth; + + //姓名 + @TableTitle(title = "姓名", dataIndex = "username", key = "username") + @ExcelProperty(index = 0) + @I18n + private String username; + + //个税扣缴义务人 + @TableTitle(title = "个税扣缴义务人", dataIndex = "taxAgentName", key = "taxAgentName") + @ExcelProperty(index = 1) + private String taxAgentName; + + /** + * 个税扣缴义务人id + */ + private Long taxAgentId; + + //部门 + @TableTitle(title = "部门", dataIndex = "departmentName", key = "departmentName") + @ExcelProperty(index = 2) + @I18n + private String departmentName; + + //手机号 + @TableTitle(title = "手机号", dataIndex = "mobile", key = "mobile") + @ExcelProperty(index = 3) + private String mobile; + + //工号 + @TableTitle(title = "工号", dataIndex = "jobNum", key = "jobNum") + @ExcelProperty(index = 4) + private String jobNum; + + //证件号码 + @SalaryTableColumn(text = "证件号码", width = "10%", column = "idNo") + @TableTitle(title = "证件号码", dataIndex = "idNo", key = "idNo") + @ExcelProperty(index = 5) + private String idNo; + + @ExcelProperty(index = 6) + @TableTitle(title = "减免税额", dataIndex = "otherDeduction", key = "otherDeduction") + private String otherDeduction; + + @ExcelProperty(index = 7) + @TableTitle(title = "备注", dataIndex = "remark", key = "remark") + private String remark; + + @TableTitle(title = "操作", dataIndex = "operate", key = "operate") + private String operate; +} diff --git a/src/com/engine/salary/entity/datacollection/param/OtherDeductionImportParam.java b/src/com/engine/salary/entity/datacollection/param/OtherDeductionImportParam.java index 3ac3a98c9..509f3f7cc 100644 --- a/src/com/engine/salary/entity/datacollection/param/OtherDeductionImportParam.java +++ b/src/com/engine/salary/entity/datacollection/param/OtherDeductionImportParam.java @@ -24,8 +24,4 @@ public class OtherDeductionImportParam { //税款所属期 String declareMonth; - - //个税扣缴义务人 - String taxAgentId; - } diff --git a/src/com/engine/salary/entity/datacollection/po/FreeIncomePO.java b/src/com/engine/salary/entity/datacollection/po/FreeIncomePO.java index 59aa0afd6..cd017fa54 100644 --- a/src/com/engine/salary/entity/datacollection/po/FreeIncomePO.java +++ b/src/com/engine/salary/entity/datacollection/po/FreeIncomePO.java @@ -23,7 +23,7 @@ import java.util.Date; @AllArgsConstructor //hrsa_free_income @ElogTransform(name = "其他免税扣除-免税收入") -public class FreeIncomePO { +public class FreeIncomePO { @ElogTransform(name = "主键id") private Long id; @@ -53,6 +53,7 @@ public class FreeIncomePO { /** * 人员类型 + * * @see DataCollectionEmployeeTypeEnum */ @ElogTransform(name = "人员类型") diff --git a/src/com/engine/salary/entity/datacollection/po/OtherDeductionPO.java b/src/com/engine/salary/entity/datacollection/po/OtherDeductionPO.java index 072f078fe..2d13dcced 100644 --- a/src/com/engine/salary/entity/datacollection/po/OtherDeductionPO.java +++ b/src/com/engine/salary/entity/datacollection/po/OtherDeductionPO.java @@ -135,4 +135,9 @@ public class OtherDeductionPO { private List employeeIds; private Collection taxAgentIds; + /** + * 减免税额 + */ + private List freeIncomeList; + } \ No newline at end of file diff --git a/src/com/engine/salary/entity/datacollection/po/OtherDerateDeductionPO.java b/src/com/engine/salary/entity/datacollection/po/OtherDerateDeductionPO.java index c9f86d3c6..2396dd973 100644 --- a/src/com/engine/salary/entity/datacollection/po/OtherDerateDeductionPO.java +++ b/src/com/engine/salary/entity/datacollection/po/OtherDerateDeductionPO.java @@ -10,7 +10,7 @@ import lombok.NoArgsConstructor; import java.util.Date; /** - * 其他免税扣除-减免税额 + * 其他免税扣除-其他 *

Copyright: Copyright (c) 2024

*

Company: 泛微软件

* @@ -22,7 +22,7 @@ import java.util.Date; @NoArgsConstructor @AllArgsConstructor //hrsa_other_derate_deduction -@ElogTransform(name = "其他免税扣除-减免税额") +@ElogTransform(name = "其他免税扣除-其他") public class OtherDerateDeductionPO { @ElogTransform(name = "主键id") private Long id; diff --git a/src/com/engine/salary/enums/datacollection/TaxFreeTypeEnum.java b/src/com/engine/salary/enums/datacollection/TaxFreeTypeEnum.java new file mode 100644 index 000000000..1edf03f98 --- /dev/null +++ b/src/com/engine/salary/enums/datacollection/TaxFreeTypeEnum.java @@ -0,0 +1,62 @@ +package com.engine.salary.enums.datacollection; + +import java.util.HashMap; +import java.util.Map; + +/** + * 免税归档状态 + *

Copyright: Copyright (c) 2024

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +public enum TaxFreeTypeEnum { + + FREE_INCOME(32, "免税收入", 105147), + HEALTH_INSURANCE(16, "商业健康保险", 91238), + ENDOWMENT_INSURANCE(8, "税延养老保险", 91239), + GRANT_DONATION(4, "准予扣除的捐赠额", 91240), + DERATE_DEDUCTION(2, "减免税额", 102810), + OTHER_DERATE_DEDUCTION(1, "其他", 84500), + PERSONAL_PENSION(64, "个人养老金", 252256), + ; + + private final Integer value; + + private final String defaultLabel; + + private final Integer labelId; + + private static final Map VALUE_NAME_MAP; + + static { + final TaxFreeTypeEnum[] values = TaxFreeTypeEnum.values(); + VALUE_NAME_MAP = new HashMap<>(values.length); + for (TaxFreeTypeEnum value : values) { + VALUE_NAME_MAP.put(value.name(), value); + } + } + + TaxFreeTypeEnum(int value, String defaultLabel, int labelId) { + this.value = value; + this.defaultLabel = defaultLabel; + this.labelId = labelId; + } + + public String getDefaultLabel() { + return defaultLabel; + } + + public Integer getValue() { + return value; + } + + public Integer getLabelId() { + return labelId; + } + + public static TaxFreeTypeEnum parse(String defaultLabel) { + return VALUE_NAME_MAP.get(defaultLabel); + } +} diff --git a/src/com/engine/salary/mapper/datacollection/DerateDeductionMapper.java b/src/com/engine/salary/mapper/datacollection/DerateDeductionMapper.java new file mode 100644 index 000000000..35ca29ab5 --- /dev/null +++ b/src/com/engine/salary/mapper/datacollection/DerateDeductionMapper.java @@ -0,0 +1,73 @@ +package com.engine.salary.mapper.datacollection; + +import com.engine.salary.entity.datacollection.po.DerateDeductionPO; +import org.apache.ibatis.annotations.Param; + +import java.util.Collection; +import java.util.List; + +public interface DerateDeductionMapper { + + /** + * 查询所有记录 + * + * @return 返回集合,没有返回空List + */ + List listAll(); + + /** + * 条件查询 + * + * @return 返回集合,没有返回空List + */ + List listSome(DerateDeductionPO derateDeduction); + + + /** + * 根据主键查询 + * + * @param id 主键 + * @return 返回记录,没有返回null + */ + DerateDeductionPO getById(Long id); + + /** + * 新增,忽略null字段 + * + * @param derateDeduction 新增的记录 + * @return 返回影响行数 + */ + int insertIgnoreNull(DerateDeductionPO derateDeduction); + + + /** + * 修改,修改所有字段 + * + * @param derateDeduction 修改的记录 + * @return 返回影响行数 + */ + int update(DerateDeductionPO derateDeduction); + + /** + * 修改,忽略null字段 + * + * @param derateDeduction 修改的记录 + * @return 返回影响行数 + */ + int updateIgnoreNull(DerateDeductionPO derateDeduction); + + /** + * 删除记录 + * + * @param derateDeduction 待删除的记录 + * @return 返回影响行数 + */ + int delete(DerateDeductionPO derateDeduction); + + /** + * 批量删除记录 + * @param ids 主键id集合 + */ + void deleteByIds(@Param("ids") Collection ids); + +} \ No newline at end of file diff --git a/src/com/engine/salary/mapper/datacollection/DerateDeductionMapper.xml b/src/com/engine/salary/mapper/datacollection/DerateDeductionMapper.xml new file mode 100644 index 000000000..c6641f0d6 --- /dev/null +++ b/src/com/engine/salary/mapper/datacollection/DerateDeductionMapper.xml @@ -0,0 +1,313 @@ + + + + + + + + + + + + + + + + + + + + + + + + t.create_time + , t.creator + , t.delete_type + , t.derate_amount + , t.derate_item + , t.derate_property + , t.employee_id + , t.employee_type + , t.file_status + , t.id + , t.main_id + , t.tax_agent_id + , t.tax_year_month + , t.tenant_key + , t.update_time + + + + + + + + + + + + + + + INSERT INTO hrsa_derate_deduction + + + + create_time, + + + creator, + + + delete_type, + + + derate_amount, + + + derate_item, + + + derate_property, + + + employee_id, + + + employee_type, + + + file_status, + + + id, + + + main_id, + + + tax_agent_id, + + + tax_year_month, + + + tenant_key, + + + update_time, + + + + + #{createTime}, + + + #{creator}, + + + #{deleteType}, + + + #{derateAmount}, + + + #{derateItem}, + + + #{derateProperty}, + + + #{employeeId}, + + + #{employeeType}, + + + #{fileStatus}, + + + #{id}, + + + #{mainId}, + + + #{taxAgentId}, + + + #{taxYearMonth}, + + + #{tenantKey}, + + + #{updateTime}, + + + + + + + + + UPDATE hrsa_derate_deduction + + create_time=#{createTime}, + creator=#{creator}, + delete_type=#{deleteType}, + derate_amount=#{derateAmount}, + derate_item=#{derateItem}, + derate_property=#{derateProperty}, + employee_id=#{employeeId}, + employee_type=#{employeeType}, + file_status=#{fileStatus}, + main_id=#{mainId}, + tax_agent_id=#{taxAgentId}, + tax_year_month=#{taxYearMonth}, + tenant_key=#{tenantKey}, + update_time=#{updateTime}, + + WHERE id = #{id} AND delete_type = 0 + + + + + + UPDATE hrsa_derate_deduction + + + create_time=#{createTime}, + + + creator=#{creator}, + + + delete_type=#{deleteType}, + + + derate_amount=#{derateAmount}, + + + derate_item=#{derateItem}, + + + derate_property=#{derateProperty}, + + + employee_id=#{employeeId}, + + + employee_type=#{employeeType}, + + + file_status=#{fileStatus}, + + + main_id=#{mainId}, + + + tax_agent_id=#{taxAgentId}, + + + tax_year_month=#{taxYearMonth}, + + + tenant_key=#{tenantKey}, + + + update_time=#{updateTime}, + + + WHERE id = #{id} AND delete_type = 0 + + + + + + UPDATE hrsa_derate_deduction + SET delete_type=1 + WHERE id = #{id} AND delete_type = 0 + + + + UPDATE hrsa_derate_deduction + SET delete_type = 1 + WHERE delete_type = 0 + AND id IN + + #{id} + + + + + + \ No newline at end of file diff --git a/src/com/engine/salary/service/OtherDeductionService.java b/src/com/engine/salary/service/OtherDeductionService.java index e77c70995..854286a0f 100644 --- a/src/com/engine/salary/service/OtherDeductionService.java +++ b/src/com/engine/salary/service/OtherDeductionService.java @@ -65,6 +65,13 @@ public interface OtherDeductionService { */ XSSFWorkbook downloadTemplate(OtherDeductionQueryParam param); + /** + * 下载明细模板 + * @param param + * @return + */ + XSSFWorkbook downloadDetailTemplate(OtherDeductionQueryParam param); + /** * 预览 */ @@ -75,7 +82,12 @@ public interface OtherDeductionService { */ Map importData(OtherDeductionImportParam importParam); - + /** + * 导入明细数据 + * @param importParam + * @return + */ + Map importDetailData(OtherDeductionImportParam importParam); /** * 获取其他免税扣除数据 diff --git a/src/com/engine/salary/service/TaxDeclarationApiConfigService.java b/src/com/engine/salary/service/TaxDeclarationApiConfigService.java index c43db36c9..c239d6339 100644 --- a/src/com/engine/salary/service/TaxDeclarationApiConfigService.java +++ b/src/com/engine/salary/service/TaxDeclarationApiConfigService.java @@ -43,4 +43,10 @@ public interface TaxDeclarationApiConfigService { void enableConfig(TaxDeclarationBillingConfigSaveParam saveParam); void saveConfig(TaxDeclarationBillingConfigSaveParam saveParam); + + /** + * 是否开启智能算薪 + * @return + */ + boolean enableUse(); } diff --git a/src/com/engine/salary/service/impl/OtherDeductionServiceImpl.java b/src/com/engine/salary/service/impl/OtherDeductionServiceImpl.java index 44c9f7148..ac1a306be 100644 --- a/src/com/engine/salary/service/impl/OtherDeductionServiceImpl.java +++ b/src/com/engine/salary/service/impl/OtherDeductionServiceImpl.java @@ -12,17 +12,20 @@ import com.engine.salary.constant.SalaryDefaultTenantConstant; import com.engine.salary.encrypt.EncryptUtil; import com.engine.salary.entity.datacollection.AddUpDeduction; import com.engine.salary.entity.datacollection.DataCollectionEmployee; +import com.engine.salary.entity.datacollection.dto.FreeIncomeListDTO; import com.engine.salary.entity.datacollection.dto.OtherDeductionListDTO; import com.engine.salary.entity.datacollection.dto.OtherDeductionRecordDTO; import com.engine.salary.entity.datacollection.param.*; +import com.engine.salary.entity.datacollection.po.FreeIncomePO; import com.engine.salary.entity.datacollection.po.OtherDeductionPO; import com.engine.salary.entity.salaryacct.po.SalaryAcctEmployeePO; import com.engine.salary.entity.taxagent.dto.TaxAgentManageRangeEmployeeDTO; import com.engine.salary.entity.taxagent.po.TaxAgentPO; import com.engine.salary.enums.OperateTypeEnum; import com.engine.salary.enums.UserStatusEnum; +import com.engine.salary.enums.datacollection.DataCollectionEmployeeTypeEnum; import com.engine.salary.exception.SalaryRunTimeException; -import com.engine.salary.mapper.datacollection.OtherDeductionMapper; +import com.engine.salary.mapper.datacollection.*; import com.engine.salary.mapper.sys.SalarySysConfMapper; import com.engine.salary.service.AddUpDeductionService; import com.engine.salary.service.OtherDeductionService; @@ -96,6 +99,33 @@ public class OtherDeductionServiceImpl extends Service implements OtherDeduction return ServiceUtil.getService(SalarySysConfServiceImpl.class, user); } + + private FreeIncomeMapper getFreeIncomeMapper() { + return MapperProxyFactory.getProxy(FreeIncomeMapper.class); + } + + private HealthInsuranceMapper getHealthInsuranceMapper() { + return MapperProxyFactory.getProxy(HealthInsuranceMapper.class); + } + + private EndowmentInsuranceMapper getEndowmentInsuranceMapper() { + return MapperProxyFactory.getProxy(EndowmentInsuranceMapper.class); + } + + private GrantDonationMapper getGrantDonationMapper() { + return MapperProxyFactory.getProxy(GrantDonationMapper.class); + } + + private DerateDeductionMapper getDerateDeductionMapper() { + return MapperProxyFactory.getProxy(DerateDeductionMapper.class); + } + + + private OtherDerateDeductionMapper getOtherDerateDeductionMapper() { + return MapperProxyFactory.getProxy(OtherDerateDeductionMapper.class); + } + + @Override public OtherDeductionPO getById(Long id) { return getOtherDeductionMapper().getById(id); @@ -200,13 +230,11 @@ public class OtherDeductionServiceImpl extends Service implements OtherDeduction Validate.notBlank(imageId, "imageId为空"); //税款所属期 String declareMonthStr = Util.null2String(importParam.getDeclareMonth()); - //个税扣缴义务人 - String taxAgentId = Util.null2String(importParam.getTaxAgentId()); InputStream fileInputStream = null; try { fileInputStream = ImageFileManager.getInputStreamById(Integer.parseInt(imageId)); - List OtherDeductions = ExcelParseHelper.parse2Map(fileInputStream, OtherDeductionListDTO.class, 0, 1, 12, "OtherDeductionTemplate.xlsx"); + List OtherDeductions = ExcelParseHelper.parse2Map(fileInputStream, OtherDeductionListDTO.class, 0, 1, 14, "OtherDeductionTemplate.xlsx"); int total = OtherDeductions.size(); int index = 0; @@ -308,16 +336,8 @@ public class OtherDeductionServiceImpl extends Service implements OtherDeduction } else { Optional optionalTemp = taxAgentList.stream().filter(m -> m.getTaxAgentName().equals(taxAgentName)).findFirst(); if (optionalTemp.isPresent()) { - if (StringUtils.isNotEmpty(taxAgentId) && !optionalTemp.get().getTaxAgentId().equals(Long.valueOf(taxAgentId))) { - //个税扣缴义务人与导入时选择的不一致 - Map errorMessageMap = Maps.newHashMap(); - errorMessageMap.put("message", rowIndex + "个税扣缴义务人与导入时选择的不一致"); - errorData.add(errorMessageMap); - errorSum += 1; - } else { - po.setTaxAgentId(optionalTemp.get().getTaxAgentId()); - taxAgentEmployees = optionalTemp.get().getEmployeeList(); - } + po.setTaxAgentId(optionalTemp.get().getTaxAgentId()); + taxAgentEmployees = optionalTemp.get().getEmployeeList(); } else { //个税扣缴义务人不存在 Map errorMessageMap = Maps.newHashMap(); @@ -387,6 +407,192 @@ public class OtherDeductionServiceImpl extends Service implements OtherDeduction return apidatas; } + @Override + public Map importDetailData(OtherDeductionImportParam importParam) { + + long currentEmployeeId = user.getUID(); + Map apidatas = new HashMap(); + OtherDeductionBiz OtherDeductionBiz = new OtherDeductionBiz(); + + //查询对于人员信息导入筛选的全局配置 + SalarySysConfPO salarySysConfPO = getSalarySysConfMapper().getOneByCode("matchEmployeeMode"); + String confValue = (salarySysConfPO != null && salarySysConfPO.getConfValue() != null && !"".equals(salarySysConfPO.getConfValue())) ? salarySysConfPO.getConfValue() : "0"; + + //检验参数 + checkImportParam(importParam); + + //excel文件id + String imageId = Util.null2String(importParam.getImageId()); + Validate.notBlank(imageId, "imageId为空"); + //税款所属期 + String declareMonthStr = Util.null2String(importParam.getDeclareMonth()); + + InputStream fileInputStream = null; + + try { + fileInputStream = ImageFileManager.getInputStreamById(Integer.parseInt(imageId)); + + int successCount = 0; + int errorCount = 0; + + //人员信息 + List employees = getSalaryEmployeeService(user).listEmployee(); + // 获取所有个税扣缴义务人 + Collection taxAgentList = getTaxAgentService(user).listTaxAgentAndEmployeeTree(currentEmployeeId); + //税款所属期 + Date declareMonth = SalaryDateUtil.stringToDate(declareMonthStr + "-01"); + // 获取已经核算的数据 + List salaryAcctEmployees = getAddUpDeductionService(user).getAccountedEmployeeData(declareMonthStr); + // 查询已有数据 + List list = getOtherDeductionMapper().listSome(OtherDeductionPO.builder().declareMonth(declareMonth).build()); + + // 错误excel内容 + List errorData = new ArrayList<>(); + + List eligibleData = new ArrayList<>(); + //免税收入 + List freeIncomeList = ExcelParseHelper.parse2Map(fileInputStream, FreeIncomeListDTO.class, 0, 1, 9, "OtherDeductionTemplate.xlsx"); + for (int i = 0; i < freeIncomeList.size(); i++) { + FreeIncomeListDTO dto = freeIncomeList.get(i); + + Date now = new Date(); + //待插入数据库对象 + OtherDeductionPO po = OtherDeductionPO.builder() + .declareMonth(declareMonth) + .freeIncomeList(new ArrayList<>()) + .createTime(now) + .updateTime(now) + .creator((long) user.getUID()) + .tenantKey(DEFAULT_TENANT_KEY) + .build(); + + FreeIncomePO freeIncomePO = FreeIncomePO.builder() + .taxYearMonth(declareMonth) + .fileStatus(1) + .creator((long) user.getUID()) + .createTime(now) + .updateTime(now) + .tenantKey(DEFAULT_TENANT_KEY) + .build(); + + //异常点数量 + int errorSum = 0; + + //行号 + String rowIndex = String.format("第%s行", i + 2); + + //相同的姓名 + String userName = dto.getUsername(); + String deparmentName = dto.getDepartmentName(); + String mobile = dto.getMobile(); + String workcode = dto.getJobNum(); + String idNo = dto.getIdNo(); + List employeeSameIds = new ArrayList<>(); + + //筛选导入人员信息可以在人力资源池中匹配到的人员信息 + List emps = getSalaryEmployeeService(user).matchImportEmployee(confValue, employees, userName, deparmentName, mobile, workcode, idNo, null); + //含在职和离职,选在职数据 + if (CollectionUtils.isNotEmpty(emps) && emps.size() > 1) { + employeeSameIds = emps.stream() + .filter(e -> UserStatusEnum.getNormalStatus().contains(e.getStatus())) + .map(DataCollectionEmployee::getEmployeeId) + .collect(Collectors.toList()); + } + if (CollectionUtils.isNotEmpty(emps) && emps.size() == 1) { + employeeSameIds = emps.stream() + .map(DataCollectionEmployee::getEmployeeId) + .collect(Collectors.toList()); + } + + //当人员信息导入筛选的全局配置为"0"时,姓名才是必填项 + if (StringUtils.isBlank(userName) && "0".equals(confValue)) { + //姓名 不能为空 + //错误消息对象 + Map errorMessageMap = Maps.newHashMap(); + errorMessageMap.put("message", rowIndex + "姓名不能为空"); + errorData.add(errorMessageMap); + errorSum += 1; + } else if (CollectionUtils.isEmpty(employeeSameIds) || employeeSameIds.size() > 1) { + Map errorMessageMap = Maps.newHashMap(); + errorMessageMap.put("message", rowIndex + "员工信息不存在或者存在多个员工"); + errorData.add(errorMessageMap); + errorSum += 1; + } else { + Long employeeId = CollectionUtils.isNotEmpty(employeeSameIds) && employeeSameIds.size() == 1 ? employeeSameIds.get(0) : null; + if (employeeId != null && employeeId > 0) { + po.setEmployeeId(employeeId); + freeIncomePO.setEmployeeId(employeeId); + freeIncomePO.setEmployeeType(DataCollectionEmployeeTypeEnum.ORGANIZATION.getValue()); + } else { + //姓名错误,系统内不存在该姓名 + Map errorMessageMap = Maps.newHashMap(); + errorMessageMap.put("message", rowIndex + "姓名错误,系统内不存在该姓名"); + errorData.add(errorMessageMap); + errorSum += 1; + } + } + + + String taxAgentName = dto.getTaxAgentName(); + if (StringUtils.isBlank(taxAgentName)) { + //个税扣缴义务人不能为空 + Map errorMessageMap = Maps.newHashMap(); + errorMessageMap.put("message", rowIndex + "个税扣缴义务人不能为空"); + errorData.add(errorMessageMap); + errorSum += 1; + } else { + Optional optionalTemp = taxAgentList.stream().filter(m -> m.getTaxAgentName().equals(taxAgentName)).findFirst(); + if (optionalTemp.isPresent()) { + po.setTaxAgentId(optionalTemp.get().getTaxAgentId()); + freeIncomePO.setTaxAgentId(optionalTemp.get().getTaxAgentId()); + } else { + //个税扣缴义务人不存在 + Map errorMessageMap = Maps.newHashMap(); + errorMessageMap.put("message", rowIndex + "个税扣缴义务人不存在或不在权限范围内"); + errorData.add(errorMessageMap); + errorSum += 1; + } + } + + //免税收入 + String freeIncome = dto.getFreeItem(); + String freeProperty = dto.getFreeProperty(); + String freeAmount = dto.getFreeAmount(); + freeIncomePO.setFreeItem(freeIncome); + freeIncomePO.setFreeProperty(freeProperty); + freeIncomePO.setFreeAmount(freeAmount); + + + if (errorSum == 0) { + successCount += 1; + String key = po.getEmployeeId() + "-" + po.getTaxAgentId(); + Map deductionPOMap = SalaryEntityUtil.convert2Map(eligibleData, e -> e.getTaxAgentId() + "-" + e.getEmployeeId()); + if (deductionPOMap.containsKey(key)) { + deductionPOMap.get(key).getFreeIncomeList().add(freeIncomePO); + } else { + po.getFreeIncomeList().add(freeIncomePO); + eligibleData.add(po); + } + + } else { + errorCount += 1; + // 添加错误数据 + } + } + + //入库 +// handleImportDetailData(eligibleData); + + apidatas.put("successCount", successCount); + apidatas.put("errorCount", errorCount); + apidatas.put("errorData", errorData); + + } finally { + IOUtils.closeQuietly(fileInputStream); + } + return apidatas; + } + /** * 处理导入数据 * @@ -464,8 +670,6 @@ public class OtherDeductionServiceImpl extends Service implements OtherDeduction String imageId = Util.null2String(importParam.getImageId()); //税款所属期 String declareMonthStr = Util.null2String(importParam.getDeclareMonth()); - //个税扣缴义务人 - String taxAgentId = Util.null2String(importParam.getTaxAgentId()); if (StringUtils.isBlank(imageId)) { throw new SalaryRunTimeException("文件不存在"); @@ -510,7 +714,7 @@ public class OtherDeductionServiceImpl extends Service implements OtherDeduction private List> getExcelRowList(OtherDeductionQueryParam param, boolean hasData) { long employeeId = user.getUID(); //excel标题 - List title = Arrays.asList("姓名", "个税扣缴义务人", "部门", "手机号", "工号", "证件号码", "入职日期", "免税收入", "减免税额", "商业健康保险", "税延养老保险", "其他", "准予扣除的捐赠额", "个人养老金"); + List title = Arrays.asList("姓名", "个税扣缴义务人", "部门", "手机号", "工号", "证件号码", "入职日期", "免税收入", "商业健康保险", "税延养老保险", "准予扣除的捐赠额", "减免税额", "其他", "个人养老金"); List> rowList = new ArrayList<>(); rowList.add(title); @@ -611,7 +815,7 @@ public class OtherDeductionServiceImpl extends Service implements OtherDeduction */ private List> getExcelRowDetailList(OtherDeductionQueryParam param) { //excel标题 - List title = Arrays.asList("姓名", "申报月份", "个税扣缴义务人", "部门", "手机号", "工号", "免税收入", "减免税额", "商业健康保险", "税延养老保险", "其他", "准予扣除的捐赠额", "个人养老金"); + List title = Arrays.asList("姓名", "申报月份", "个税扣缴义务人", "部门", "手机号", "工号", "证件号码", "入职日期", "免税收入", "商业健康保险", "税延养老保险", "准予扣除的捐赠额", "减免税额", "其他", "个人养老金"); SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM"); //查询详细信息 @@ -1044,4 +1248,29 @@ public class OtherDeductionServiceImpl extends Service implements OtherDeduction return book; } + @Override + public XSSFWorkbook downloadDetailTemplate(OtherDeductionQueryParam param) { + + + Map>> map = new LinkedHashMap<>(); + + List freeIncomeTitle = Arrays.asList("姓名", "个税扣缴义务人", "部门", "手机号", "工号", "证件号码", "免税事项", "免税性质", "免税金额"); + map.put("免税收入", Arrays.asList(freeIncomeTitle)); + List healthInsuranceTitle = Arrays.asList("姓名", "个税扣缴义务人", "部门", "手机号", "工号", "证件号码", "税优识别码", "保单生效日期", "年度保费", "月度保费", "本期扣除金额"); + map.put("商业健康保险", Arrays.asList(healthInsuranceTitle)); + List endowmentInsuranceTitle = Arrays.asList("姓名", "个税扣缴义务人", "部门", "手机号", "工号", "证件号码", "税延养老账户编号", "报税校验码", "年度保费", "月度保费", "本期扣除金额"); + map.put("税延养老保险", Arrays.asList(endowmentInsuranceTitle)); + List grantDonationTitle = Arrays.asList("姓名", "个税扣缴义务人", "部门", "手机号", "工号", "证件号码", "受赠单位名称", "受赠单位纳税人识别号", "凭证号", "捐赠日期", "捐赠金额", "扣除比例", "实际扣除金额"); + map.put("准予扣除的捐赠额", Arrays.asList(grantDonationTitle)); + List derateDeductionTitle = Arrays.asList("姓名", "个税扣缴义务人", "部门", "手机号", "工号", "证件号码", "减免事项", "减免性质", "减免金额"); + map.put("减免税额", Arrays.asList(derateDeductionTitle)); + List otherDerateDeductionTitle = Arrays.asList("姓名", "个税扣缴义务人", "部门", "手机号", "工号", "证件号码", "其他免税扣除金额", "备注"); + map.put("其他", Arrays.asList(otherDerateDeductionTitle)); +// map.put("个人养老金", rowList); + + + XSSFWorkbook book = ExcelUtil.genWorkbookV2(map); + return book; + } + } diff --git a/src/com/engine/salary/service/impl/TaxDeclarationApiConfigServiceImpl.java b/src/com/engine/salary/service/impl/TaxDeclarationApiConfigServiceImpl.java index 9d44300cc..ade9b3e6c 100644 --- a/src/com/engine/salary/service/impl/TaxDeclarationApiConfigServiceImpl.java +++ b/src/com/engine/salary/service/impl/TaxDeclarationApiConfigServiceImpl.java @@ -100,6 +100,12 @@ public class TaxDeclarationApiConfigServiceImpl extends Service implements TaxDe } } + @Override + public boolean enableUse() { + TaxDeclarationApiConfigPO config = getConfig(false); + return config == null || SalaryOnOffEnum.ON.getValue().equals(config.getEnableUse()); + } + private String getApiHost() { List apiProfiles = getTaxDeclarationApiProfileMapper().listAll(); if (apiProfiles.isEmpty() || TaxDeclareApiProfileEnum.PROD.getValue().equals(apiProfiles.get(0).getApiProfile())) { diff --git a/src/com/engine/salary/wrapper/OtherDeductionWrapper.java b/src/com/engine/salary/wrapper/OtherDeductionWrapper.java index 3002e8cfd..f8a261828 100644 --- a/src/com/engine/salary/wrapper/OtherDeductionWrapper.java +++ b/src/com/engine/salary/wrapper/OtherDeductionWrapper.java @@ -14,9 +14,11 @@ import com.engine.salary.exception.SalaryRunTimeException; import com.engine.salary.service.OtherDeductionService; import com.engine.salary.service.SalaryEmployeeService; import com.engine.salary.service.TaxAgentService; +import com.engine.salary.service.TaxDeclarationApiConfigService; import com.engine.salary.service.impl.OtherDeductionServiceImpl; import com.engine.salary.service.impl.SalaryEmployeeServiceImpl; import com.engine.salary.service.impl.TaxAgentServiceImpl; +import com.engine.salary.service.impl.TaxDeclarationApiConfigServiceImpl; import com.engine.salary.util.SalaryI18nUtil; import com.engine.salary.util.page.PageInfo; import lombok.extern.slf4j.Slf4j; @@ -43,6 +45,10 @@ public class OtherDeductionWrapper extends Service { return ServiceUtil.getService(OtherDeductionServiceImpl.class, user); } + private TaxDeclarationApiConfigService getTaxDeclarationApiConfigService(User user) { + return ServiceUtil.getService(TaxDeclarationApiConfigServiceImpl.class, user); + } + private TaxAgentService getTaxAgentV2Service(User user) { return ServiceUtil.getService(TaxAgentServiceImpl.class, user); } @@ -196,7 +202,15 @@ public class OtherDeductionWrapper extends Service { * @return */ public XSSFWorkbook downloadTemplate(OtherDeductionQueryParam queryParam) { - return getOtherDeductionService(user).downloadTemplate(queryParam); + + //是否开启了智能算薪 + boolean enableUse = getTaxDeclarationApiConfigService(user).enableUse(); + + if(enableUse){ + return getOtherDeductionService(user).downloadDetailTemplate(queryParam); + }else { + return getOtherDeductionService(user).downloadTemplate(queryParam); + } } /** @@ -210,7 +224,14 @@ public class OtherDeductionWrapper extends Service { * 导入数据 */ public Map importData(OtherDeductionImportParam importParam) { - return getOtherDeductionService(user).importData(importParam); + //是否开启了智能算薪 + boolean enableUse = getTaxDeclarationApiConfigService(user).enableUse(); + + if(enableUse){ + return getOtherDeductionService(user).importDetailData(importParam); + }else { + return getOtherDeductionService(user).importData(importParam); + } } /** From fe8910f2c5a591f2786865925408aa381e483be1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Thu, 19 Dec 2024 10:46:04 +0800 Subject: [PATCH 198/218] =?UTF-8?q?=E5=87=8F=E5=85=8D=E7=A8=8E=E9=A2=9D?= =?UTF-8?q?=E9=99=84=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dto/DerateDeductionListDTO.java | 6 +- .../datacollection/po/OtherDeductionPO.java | 9 +- .../impl/OtherDeductionServiceImpl.java | 203 ++++++++++++++++-- 3 files changed, 193 insertions(+), 25 deletions(-) diff --git a/src/com/engine/salary/entity/datacollection/dto/DerateDeductionListDTO.java b/src/com/engine/salary/entity/datacollection/dto/DerateDeductionListDTO.java index c761c4971..4b36ec418 100644 --- a/src/com/engine/salary/entity/datacollection/dto/DerateDeductionListDTO.java +++ b/src/com/engine/salary/entity/datacollection/dto/DerateDeductionListDTO.java @@ -13,7 +13,7 @@ import lombok.NoArgsConstructor; import java.util.Date; /** - * 免税收入 + * 减免税额 *

Copyright: Copyright (c) 2022

*

Company: 泛微软件

* @@ -85,12 +85,12 @@ public class DerateDeductionListDTO { @TableTitle(title = "减免事项", dataIndex = "derateItem", key = "derateItem") private String derateItem; - @ExcelProperty(index = 8) + @ExcelProperty(index = 7) @TableTitle(title = "减免性质", dataIndex = "derateProperty", key = "derateProperty") @ElogTransform(name = "减免性质") private String derateProperty; - @ExcelProperty(index = 9) + @ExcelProperty(index = 8) @TableTitle(title = "减免金额", dataIndex = "derateAmount", key = "derateAmount") @ElogTransform(name = "减免金额") private String derateAmount; diff --git a/src/com/engine/salary/entity/datacollection/po/OtherDeductionPO.java b/src/com/engine/salary/entity/datacollection/po/OtherDeductionPO.java index 2d13dcced..c602d6ede 100644 --- a/src/com/engine/salary/entity/datacollection/po/OtherDeductionPO.java +++ b/src/com/engine/salary/entity/datacollection/po/OtherDeductionPO.java @@ -135,9 +135,12 @@ public class OtherDeductionPO { private List employeeIds; private Collection taxAgentIds; - /** - * 减免税额 - */ + private List freeIncomeList; + private List derateDeductionList; + private List endowmentInsuranceList; + private List grantDonationList; + private List healthInsuranceList; + private List otherDerateDeductionList; } \ No newline at end of file diff --git a/src/com/engine/salary/service/impl/OtherDeductionServiceImpl.java b/src/com/engine/salary/service/impl/OtherDeductionServiceImpl.java index ac1a306be..05736d8c1 100644 --- a/src/com/engine/salary/service/impl/OtherDeductionServiceImpl.java +++ b/src/com/engine/salary/service/impl/OtherDeductionServiceImpl.java @@ -12,10 +12,12 @@ import com.engine.salary.constant.SalaryDefaultTenantConstant; import com.engine.salary.encrypt.EncryptUtil; import com.engine.salary.entity.datacollection.AddUpDeduction; import com.engine.salary.entity.datacollection.DataCollectionEmployee; +import com.engine.salary.entity.datacollection.dto.DerateDeductionListDTO; import com.engine.salary.entity.datacollection.dto.FreeIncomeListDTO; import com.engine.salary.entity.datacollection.dto.OtherDeductionListDTO; import com.engine.salary.entity.datacollection.dto.OtherDeductionRecordDTO; import com.engine.salary.entity.datacollection.param.*; +import com.engine.salary.entity.datacollection.po.DerateDeductionPO; import com.engine.salary.entity.datacollection.po.FreeIncomePO; import com.engine.salary.entity.datacollection.po.OtherDeductionPO; import com.engine.salary.entity.salaryacct.po.SalaryAcctEmployeePO; @@ -427,29 +429,30 @@ public class OtherDeductionServiceImpl extends Service implements OtherDeduction //税款所属期 String declareMonthStr = Util.null2String(importParam.getDeclareMonth()); + //人员信息 + List employees = getSalaryEmployeeService(user).listEmployee(); + // 获取所有个税扣缴义务人 + Collection taxAgentList = getTaxAgentService(user).listTaxAgentAndEmployeeTree(currentEmployeeId); + //税款所属期 + Date declareMonth = SalaryDateUtil.stringToDate(declareMonthStr + "-01"); + // 获取已经核算的数据 + List salaryAcctEmployees = getAddUpDeductionService(user).getAccountedEmployeeData(declareMonthStr); + // 查询已有数据 + List list = getOtherDeductionMapper().listSome(OtherDeductionPO.builder().declareMonth(declareMonth).build()); + InputStream fileInputStream = null; + List eligibleData = new ArrayList<>(); + try { fileInputStream = ImageFileManager.getInputStreamById(Integer.parseInt(imageId)); int successCount = 0; int errorCount = 0; - //人员信息 - List employees = getSalaryEmployeeService(user).listEmployee(); - // 获取所有个税扣缴义务人 - Collection taxAgentList = getTaxAgentService(user).listTaxAgentAndEmployeeTree(currentEmployeeId); - //税款所属期 - Date declareMonth = SalaryDateUtil.stringToDate(declareMonthStr + "-01"); - // 获取已经核算的数据 - List salaryAcctEmployees = getAddUpDeductionService(user).getAccountedEmployeeData(declareMonthStr); - // 查询已有数据 - List list = getOtherDeductionMapper().listSome(OtherDeductionPO.builder().declareMonth(declareMonth).build()); - // 错误excel内容 List errorData = new ArrayList<>(); - List eligibleData = new ArrayList<>(); //免税收入 List freeIncomeList = ExcelParseHelper.parse2Map(fileInputStream, FreeIncomeListDTO.class, 0, 1, 9, "OtherDeductionTemplate.xlsx"); for (int i = 0; i < freeIncomeList.size(); i++) { @@ -460,6 +463,11 @@ public class OtherDeductionServiceImpl extends Service implements OtherDeduction OtherDeductionPO po = OtherDeductionPO.builder() .declareMonth(declareMonth) .freeIncomeList(new ArrayList<>()) + .derateDeductionList(new ArrayList<>()) + .endowmentInsuranceList(new ArrayList<>()) + .grantDonationList(new ArrayList<>()) + .healthInsuranceList(new ArrayList<>()) + .otherDerateDeductionList(new ArrayList<>()) .createTime(now) .updateTime(now) .creator((long) user.getUID()) @@ -565,7 +573,7 @@ public class OtherDeductionServiceImpl extends Service implements OtherDeduction if (errorSum == 0) { successCount += 1; - String key = po.getEmployeeId() + "-" + po.getTaxAgentId(); + String key = po.getTaxAgentId() + "-" + po.getEmployeeId(); Map deductionPOMap = SalaryEntityUtil.convert2Map(eligibleData, e -> e.getTaxAgentId() + "-" + e.getEmployeeId()); if (deductionPOMap.containsKey(key)) { deductionPOMap.get(key).getFreeIncomeList().add(freeIncomePO); @@ -580,16 +588,173 @@ public class OtherDeductionServiceImpl extends Service implements OtherDeduction } } - //入库 -// handleImportDetailData(eligibleData); - - apidatas.put("successCount", successCount); - apidatas.put("errorCount", errorCount); - apidatas.put("errorData", errorData); + HashMap dataMap = new HashMap<>(); + dataMap.put("successCount", successCount); + dataMap.put("errorCount", errorCount); + dataMap.put("errorData", errorData); + apidatas.put("freeIncome", dataMap); } finally { IOUtils.closeQuietly(fileInputStream); } + + + try { + fileInputStream = ImageFileManager.getInputStreamById(Integer.parseInt(imageId)); + + int successCount = 0; + int errorCount = 0; + + // 错误excel内容 + List errorData = new ArrayList<>(); + + List derateDeductionList = ExcelParseHelper.parse2Map(fileInputStream, DerateDeductionListDTO.class, 4, 1, 9, "OtherDeductionTemplate.xlsx"); + for (int i = 0; i < derateDeductionList.size(); i++) { + DerateDeductionListDTO dto = derateDeductionList.get(i); + + Date now = new Date(); + //待插入数据库对象 + OtherDeductionPO mainPo = OtherDeductionPO.builder() + .declareMonth(declareMonth) + .freeIncomeList(new ArrayList<>()) + .derateDeductionList(new ArrayList<>()) + .endowmentInsuranceList(new ArrayList<>()) + .grantDonationList(new ArrayList<>()) + .healthInsuranceList(new ArrayList<>()) + .otherDerateDeductionList(new ArrayList<>()) + .createTime(now) + .updateTime(now) + .creator((long) user.getUID()) + .tenantKey(DEFAULT_TENANT_KEY) + .build(); + + DerateDeductionPO po = DerateDeductionPO.builder() + .taxYearMonth(declareMonth) + .fileStatus(1) + .creator((long) user.getUID()) + .createTime(now) + .updateTime(now) + .tenantKey(DEFAULT_TENANT_KEY) + .build(); + + //异常点数量 + int errorSum = 0; + + //行号 + String rowIndex = String.format("第%s行", i + 2); + + //相同的姓名 + String userName = dto.getUsername(); + String deparmentName = dto.getDepartmentName(); + String mobile = dto.getMobile(); + String workcode = dto.getJobNum(); + String idNo = dto.getIdNo(); + List employeeSameIds = new ArrayList<>(); + + //筛选导入人员信息可以在人力资源池中匹配到的人员信息 + List emps = getSalaryEmployeeService(user).matchImportEmployee(confValue, employees, userName, deparmentName, mobile, workcode, idNo, null); + //含在职和离职,选在职数据 + if (CollectionUtils.isNotEmpty(emps) && emps.size() > 1) { + employeeSameIds = emps.stream() + .filter(e -> UserStatusEnum.getNormalStatus().contains(e.getStatus())) + .map(DataCollectionEmployee::getEmployeeId) + .collect(Collectors.toList()); + } + if (CollectionUtils.isNotEmpty(emps) && emps.size() == 1) { + employeeSameIds = emps.stream() + .map(DataCollectionEmployee::getEmployeeId) + .collect(Collectors.toList()); + } + + //当人员信息导入筛选的全局配置为"0"时,姓名才是必填项 + if (StringUtils.isBlank(userName) && "0".equals(confValue)) { + //姓名 不能为空 + //错误消息对象 + Map errorMessageMap = Maps.newHashMap(); + errorMessageMap.put("message", rowIndex + "姓名不能为空"); + errorData.add(errorMessageMap); + errorSum += 1; + } else if (CollectionUtils.isEmpty(employeeSameIds) || employeeSameIds.size() > 1) { + Map errorMessageMap = Maps.newHashMap(); + errorMessageMap.put("message", rowIndex + "员工信息不存在或者存在多个员工"); + errorData.add(errorMessageMap); + errorSum += 1; + } else { + Long employeeId = CollectionUtils.isNotEmpty(employeeSameIds) && employeeSameIds.size() == 1 ? employeeSameIds.get(0) : null; + if (employeeId != null && employeeId > 0) { + mainPo.setEmployeeId(employeeId); + po.setEmployeeId(employeeId); + po.setEmployeeType(DataCollectionEmployeeTypeEnum.ORGANIZATION.getValue()); + } else { + //姓名错误,系统内不存在该姓名 + Map errorMessageMap = Maps.newHashMap(); + errorMessageMap.put("message", rowIndex + "姓名错误,系统内不存在该姓名"); + errorData.add(errorMessageMap); + errorSum += 1; + } + } + + + String taxAgentName = dto.getTaxAgentName(); + if (StringUtils.isBlank(taxAgentName)) { + //个税扣缴义务人不能为空 + Map errorMessageMap = Maps.newHashMap(); + errorMessageMap.put("message", rowIndex + "个税扣缴义务人不能为空"); + errorData.add(errorMessageMap); + errorSum += 1; + } else { + Optional optionalTemp = taxAgentList.stream().filter(m -> m.getTaxAgentName().equals(taxAgentName)).findFirst(); + if (optionalTemp.isPresent()) { + mainPo.setTaxAgentId(optionalTemp.get().getTaxAgentId()); + po.setTaxAgentId(optionalTemp.get().getTaxAgentId()); + } else { + //个税扣缴义务人不存在 + Map errorMessageMap = Maps.newHashMap(); + errorMessageMap.put("message", rowIndex + "个税扣缴义务人不存在或不在权限范围内"); + errorData.add(errorMessageMap); + errorSum += 1; + } + } + + String derateAmount = dto.getDerateAmount(); + String derateItem = dto.getDerateItem(); + String derateProperty = dto.getDerateProperty(); + po.setDerateAmount(derateAmount); + po.setDerateItem(derateItem); + po.setDerateProperty(derateProperty); + + + if (errorSum == 0) { + successCount += 1; + String key = mainPo.getTaxAgentId() + "-" + mainPo.getEmployeeId(); + Map deductionPOMap = SalaryEntityUtil.convert2Map(eligibleData, e -> e.getTaxAgentId() + "-" + e.getEmployeeId()); + if (deductionPOMap.containsKey(key)) { + deductionPOMap.get(key).getDerateDeductionList().add(po); + } else { + mainPo.getDerateDeductionList().add(po); + eligibleData.add(mainPo); + } + + } else { + errorCount += 1; + // 添加错误数据 + } + } + + HashMap dataMap = new HashMap<>(); + dataMap.put("successCount", successCount); + dataMap.put("errorCount", errorCount); + dataMap.put("errorData", errorData); + apidatas.put("derateDeduction", dataMap); + + } finally { + IOUtils.closeQuietly(fileInputStream); + } + + + + + return apidatas; } From e6f8b31f694ac9193f0a9df2ec8c0bf761d6a5f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Thu, 19 Dec 2024 10:57:21 +0800 Subject: [PATCH 199/218] =?UTF-8?q?=E5=BB=B6=E7=A8=8E=E5=85=BB=E8=80=81?= =?UTF-8?q?=E4=BF=9D=E9=99=A9=E9=99=84=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dto/EndowmentInsuranceListDTO.java | 2 +- .../impl/OtherDeductionServiceImpl.java | 154 +++++++++++++++++- 2 files changed, 151 insertions(+), 5 deletions(-) diff --git a/src/com/engine/salary/entity/datacollection/dto/EndowmentInsuranceListDTO.java b/src/com/engine/salary/entity/datacollection/dto/EndowmentInsuranceListDTO.java index cfd7e773d..699054258 100644 --- a/src/com/engine/salary/entity/datacollection/dto/EndowmentInsuranceListDTO.java +++ b/src/com/engine/salary/entity/datacollection/dto/EndowmentInsuranceListDTO.java @@ -12,7 +12,7 @@ import lombok.NoArgsConstructor; import java.util.Date; /** - * 免税收入 + * 税延养老保险 *

Copyright: Copyright (c) 2022

*

Company: 泛微软件

* diff --git a/src/com/engine/salary/service/impl/OtherDeductionServiceImpl.java b/src/com/engine/salary/service/impl/OtherDeductionServiceImpl.java index 05736d8c1..e95365a82 100644 --- a/src/com/engine/salary/service/impl/OtherDeductionServiceImpl.java +++ b/src/com/engine/salary/service/impl/OtherDeductionServiceImpl.java @@ -12,12 +12,10 @@ import com.engine.salary.constant.SalaryDefaultTenantConstant; import com.engine.salary.encrypt.EncryptUtil; import com.engine.salary.entity.datacollection.AddUpDeduction; import com.engine.salary.entity.datacollection.DataCollectionEmployee; -import com.engine.salary.entity.datacollection.dto.DerateDeductionListDTO; -import com.engine.salary.entity.datacollection.dto.FreeIncomeListDTO; -import com.engine.salary.entity.datacollection.dto.OtherDeductionListDTO; -import com.engine.salary.entity.datacollection.dto.OtherDeductionRecordDTO; +import com.engine.salary.entity.datacollection.dto.*; import com.engine.salary.entity.datacollection.param.*; import com.engine.salary.entity.datacollection.po.DerateDeductionPO; +import com.engine.salary.entity.datacollection.po.EndowmentInsurancePO; import com.engine.salary.entity.datacollection.po.FreeIncomePO; import com.engine.salary.entity.datacollection.po.OtherDeductionPO; import com.engine.salary.entity.salaryacct.po.SalaryAcctEmployeePO; @@ -752,7 +750,155 @@ public class OtherDeductionServiceImpl extends Service implements OtherDeduction } + try { + fileInputStream = ImageFileManager.getInputStreamById(Integer.parseInt(imageId)); + int successCount = 0; + int errorCount = 0; + + // 错误excel内容 + List errorData = new ArrayList<>(); + + List derateDeductionList = ExcelParseHelper.parse2Map(fileInputStream, EndowmentInsuranceListDTO.class, 2, 1, 11, "OtherDeductionTemplate.xlsx"); + for (int i = 0; i < derateDeductionList.size(); i++) { + EndowmentInsuranceListDTO dto = derateDeductionList.get(i); + + Date now = new Date(); + //待插入数据库对象 + OtherDeductionPO mainPo = OtherDeductionPO.builder() + .declareMonth(declareMonth) + .freeIncomeList(new ArrayList<>()) + .derateDeductionList(new ArrayList<>()) + .endowmentInsuranceList(new ArrayList<>()) + .grantDonationList(new ArrayList<>()) + .healthInsuranceList(new ArrayList<>()) + .otherDerateDeductionList(new ArrayList<>()) + .createTime(now) + .updateTime(now) + .creator((long) user.getUID()) + .tenantKey(DEFAULT_TENANT_KEY) + .build(); + + EndowmentInsurancePO po = EndowmentInsurancePO.builder() + .taxYearMonth(declareMonth) + .fileStatus(1) + .creator((long) user.getUID()) + .createTime(now) + .updateTime(now) + .tenantKey(DEFAULT_TENANT_KEY) + .build(); + + //异常点数量 + int errorSum = 0; + + //行号 + String rowIndex = String.format("第%s行", i + 2); + + //相同的姓名 + String userName = dto.getUsername(); + String deparmentName = dto.getDepartmentName(); + String mobile = dto.getMobile(); + String workcode = dto.getJobNum(); + String idNo = dto.getIdNo(); + List employeeSameIds = new ArrayList<>(); + + //筛选导入人员信息可以在人力资源池中匹配到的人员信息 + List emps = getSalaryEmployeeService(user).matchImportEmployee(confValue, employees, userName, deparmentName, mobile, workcode, idNo, null); + //含在职和离职,选在职数据 + if (CollectionUtils.isNotEmpty(emps) && emps.size() > 1) { + employeeSameIds = emps.stream() + .filter(e -> UserStatusEnum.getNormalStatus().contains(e.getStatus())) + .map(DataCollectionEmployee::getEmployeeId) + .collect(Collectors.toList()); + } + if (CollectionUtils.isNotEmpty(emps) && emps.size() == 1) { + employeeSameIds = emps.stream() + .map(DataCollectionEmployee::getEmployeeId) + .collect(Collectors.toList()); + } + + //当人员信息导入筛选的全局配置为"0"时,姓名才是必填项 + if (StringUtils.isBlank(userName) && "0".equals(confValue)) { + //姓名 不能为空 + //错误消息对象 + Map errorMessageMap = Maps.newHashMap(); + errorMessageMap.put("message", rowIndex + "姓名不能为空"); + errorData.add(errorMessageMap); + errorSum += 1; + } else if (CollectionUtils.isEmpty(employeeSameIds) || employeeSameIds.size() > 1) { + Map errorMessageMap = Maps.newHashMap(); + errorMessageMap.put("message", rowIndex + "员工信息不存在或者存在多个员工"); + errorData.add(errorMessageMap); + errorSum += 1; + } else { + Long employeeId = CollectionUtils.isNotEmpty(employeeSameIds) && employeeSameIds.size() == 1 ? employeeSameIds.get(0) : null; + if (employeeId != null && employeeId > 0) { + mainPo.setEmployeeId(employeeId); + po.setEmployeeId(employeeId); + po.setEmployeeType(DataCollectionEmployeeTypeEnum.ORGANIZATION.getValue()); + } else { + //姓名错误,系统内不存在该姓名 + Map errorMessageMap = Maps.newHashMap(); + errorMessageMap.put("message", rowIndex + "姓名错误,系统内不存在该姓名"); + errorData.add(errorMessageMap); + errorSum += 1; + } + } + + + String taxAgentName = dto.getTaxAgentName(); + if (StringUtils.isBlank(taxAgentName)) { + //个税扣缴义务人不能为空 + Map errorMessageMap = Maps.newHashMap(); + errorMessageMap.put("message", rowIndex + "个税扣缴义务人不能为空"); + errorData.add(errorMessageMap); + errorSum += 1; + } else { + Optional optionalTemp = taxAgentList.stream().filter(m -> m.getTaxAgentName().equals(taxAgentName)).findFirst(); + if (optionalTemp.isPresent()) { + mainPo.setTaxAgentId(optionalTemp.get().getTaxAgentId()); + po.setTaxAgentId(optionalTemp.get().getTaxAgentId()); + } else { + //个税扣缴义务人不存在 + Map errorMessageMap = Maps.newHashMap(); + errorMessageMap.put("message", rowIndex + "个税扣缴义务人不存在或不在权限范围内"); + errorData.add(errorMessageMap); + errorSum += 1; + } + } + + po.setAccountNumber(dto.getAccountNumber()); + po.setCheckCode(dto.getCheckCode()); + po.setYearPremium(dto.getYearPremium()); + po.setMonthPremium(dto.getMonthPremium()); + po.setCurrentDeduction(dto.getCurrentDeduction()); + + if (errorSum == 0) { + successCount += 1; + String key = mainPo.getTaxAgentId() + "-" + mainPo.getEmployeeId(); + Map deductionPOMap = SalaryEntityUtil.convert2Map(eligibleData, e -> e.getTaxAgentId() + "-" + e.getEmployeeId()); + if (deductionPOMap.containsKey(key)) { + deductionPOMap.get(key).getEndowmentInsuranceList().add(po); + } else { + mainPo.getEndowmentInsuranceList().add(po); + eligibleData.add(mainPo); + } + + } else { + errorCount += 1; + // 添加错误数据 + } + } + + HashMap dataMap = new HashMap<>(); + dataMap.put("successCount", successCount); + dataMap.put("errorCount", errorCount); + dataMap.put("errorData", errorData); + apidatas.put("derateDeduction", dataMap); + + } finally { + IOUtils.closeQuietly(fileInputStream); + } return apidatas; From d1a4b83f3360c36a7ae286191313d74f25c0fdd4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Thu, 19 Dec 2024 11:23:59 +0800 Subject: [PATCH 200/218] =?UTF-8?q?=E5=81=A5=E5=BA=B7=E4=BF=9D=E9=99=A9?= =?UTF-8?q?=E9=99=84=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dto/OtherDerateDeductionListDTO.java | 2 +- .../impl/OtherDeductionServiceImpl.java | 479 +++++++++++++++++- 2 files changed, 462 insertions(+), 19 deletions(-) diff --git a/src/com/engine/salary/entity/datacollection/dto/OtherDerateDeductionListDTO.java b/src/com/engine/salary/entity/datacollection/dto/OtherDerateDeductionListDTO.java index 42cff95a6..cfbdd1874 100644 --- a/src/com/engine/salary/entity/datacollection/dto/OtherDerateDeductionListDTO.java +++ b/src/com/engine/salary/entity/datacollection/dto/OtherDerateDeductionListDTO.java @@ -13,7 +13,7 @@ import lombok.NoArgsConstructor; import java.util.Date; /** - * 商业健康保险 + * 其他 *

Copyright: Copyright (c) 2022

*

Company: 泛微软件

* diff --git a/src/com/engine/salary/service/impl/OtherDeductionServiceImpl.java b/src/com/engine/salary/service/impl/OtherDeductionServiceImpl.java index e95365a82..5bdb007c8 100644 --- a/src/com/engine/salary/service/impl/OtherDeductionServiceImpl.java +++ b/src/com/engine/salary/service/impl/OtherDeductionServiceImpl.java @@ -14,10 +14,7 @@ import com.engine.salary.entity.datacollection.AddUpDeduction; import com.engine.salary.entity.datacollection.DataCollectionEmployee; import com.engine.salary.entity.datacollection.dto.*; import com.engine.salary.entity.datacollection.param.*; -import com.engine.salary.entity.datacollection.po.DerateDeductionPO; -import com.engine.salary.entity.datacollection.po.EndowmentInsurancePO; -import com.engine.salary.entity.datacollection.po.FreeIncomePO; -import com.engine.salary.entity.datacollection.po.OtherDeductionPO; +import com.engine.salary.entity.datacollection.po.*; import com.engine.salary.entity.salaryacct.po.SalaryAcctEmployeePO; import com.engine.salary.entity.taxagent.dto.TaxAgentManageRangeEmployeeDTO; import com.engine.salary.entity.taxagent.po.TaxAgentPO; @@ -596,6 +593,457 @@ public class OtherDeductionServiceImpl extends Service implements OtherDeduction IOUtils.closeQuietly(fileInputStream); } + try { + fileInputStream = ImageFileManager.getInputStreamById(Integer.parseInt(imageId)); + + int successCount = 0; + int errorCount = 0; + + // 错误excel内容 + List errorData = new ArrayList<>(); + + List dtoList = ExcelParseHelper.parse2Map(fileInputStream, HealthInsuranceListDTO.class, 1, 1, 11, "OtherDeductionTemplate.xlsx"); + for (int i = 0; i < dtoList.size(); i++) { + HealthInsuranceListDTO dto = dtoList.get(i); + + Date now = new Date(); + //待插入数据库对象 + OtherDeductionPO mainPo = OtherDeductionPO.builder() + .declareMonth(declareMonth) + .freeIncomeList(new ArrayList<>()) + .derateDeductionList(new ArrayList<>()) + .endowmentInsuranceList(new ArrayList<>()) + .grantDonationList(new ArrayList<>()) + .healthInsuranceList(new ArrayList<>()) + .otherDerateDeductionList(new ArrayList<>()) + .createTime(now) + .updateTime(now) + .creator((long) user.getUID()) + .tenantKey(DEFAULT_TENANT_KEY) + .build(); + + HealthInsurancePO po = HealthInsurancePO.builder() + .taxYearMonth(declareMonth) + .fileStatus(1) + .creator((long) user.getUID()) + .createTime(now) + .updateTime(now) + .tenantKey(DEFAULT_TENANT_KEY) + .build(); + + //异常点数量 + int errorSum = 0; + + //行号 + String rowIndex = String.format("第%s行", i + 2); + + //相同的姓名 + String userName = dto.getUsername(); + String deparmentName = dto.getDepartmentName(); + String mobile = dto.getMobile(); + String workcode = dto.getJobNum(); + String idNo = dto.getIdNo(); + List employeeSameIds = new ArrayList<>(); + + //筛选导入人员信息可以在人力资源池中匹配到的人员信息 + List emps = getSalaryEmployeeService(user).matchImportEmployee(confValue, employees, userName, deparmentName, mobile, workcode, idNo, null); + //含在职和离职,选在职数据 + if (CollectionUtils.isNotEmpty(emps) && emps.size() > 1) { + employeeSameIds = emps.stream() + .filter(e -> UserStatusEnum.getNormalStatus().contains(e.getStatus())) + .map(DataCollectionEmployee::getEmployeeId) + .collect(Collectors.toList()); + } + if (CollectionUtils.isNotEmpty(emps) && emps.size() == 1) { + employeeSameIds = emps.stream() + .map(DataCollectionEmployee::getEmployeeId) + .collect(Collectors.toList()); + } + + //当人员信息导入筛选的全局配置为"0"时,姓名才是必填项 + if (StringUtils.isBlank(userName) && "0".equals(confValue)) { + //姓名 不能为空 + //错误消息对象 + Map errorMessageMap = Maps.newHashMap(); + errorMessageMap.put("message", rowIndex + "姓名不能为空"); + errorData.add(errorMessageMap); + errorSum += 1; + } else if (CollectionUtils.isEmpty(employeeSameIds) || employeeSameIds.size() > 1) { + Map errorMessageMap = Maps.newHashMap(); + errorMessageMap.put("message", rowIndex + "员工信息不存在或者存在多个员工"); + errorData.add(errorMessageMap); + errorSum += 1; + } else { + Long employeeId = CollectionUtils.isNotEmpty(employeeSameIds) && employeeSameIds.size() == 1 ? employeeSameIds.get(0) : null; + if (employeeId != null && employeeId > 0) { + mainPo.setEmployeeId(employeeId); + po.setEmployeeId(employeeId); + po.setEmployeeType(DataCollectionEmployeeTypeEnum.ORGANIZATION.getValue()); + } else { + //姓名错误,系统内不存在该姓名 + Map errorMessageMap = Maps.newHashMap(); + errorMessageMap.put("message", rowIndex + "姓名错误,系统内不存在该姓名"); + errorData.add(errorMessageMap); + errorSum += 1; + } + } + + + String taxAgentName = dto.getTaxAgentName(); + if (StringUtils.isBlank(taxAgentName)) { + //个税扣缴义务人不能为空 + Map errorMessageMap = Maps.newHashMap(); + errorMessageMap.put("message", rowIndex + "个税扣缴义务人不能为空"); + errorData.add(errorMessageMap); + errorSum += 1; + } else { + Optional optionalTemp = taxAgentList.stream().filter(m -> m.getTaxAgentName().equals(taxAgentName)).findFirst(); + if (optionalTemp.isPresent()) { + mainPo.setTaxAgentId(optionalTemp.get().getTaxAgentId()); + po.setTaxAgentId(optionalTemp.get().getTaxAgentId()); + } else { + //个税扣缴义务人不存在 + Map errorMessageMap = Maps.newHashMap(); + errorMessageMap.put("message", rowIndex + "个税扣缴义务人不存在或不在权限范围内"); + errorData.add(errorMessageMap); + errorSum += 1; + } + } + + po.setIdentificationNumber(dto.getIdentificationNumber()); + po.setEffectiveDate(dto.getEffectiveDate()); + po.setYearPremium(dto.getYearPremium()); + po.setMonthPremium(dto.getMonthPremium()); + po.setCurrentDeduction(dto.getCurrentDeduction()); + + if (errorSum == 0) { + successCount += 1; + String key = mainPo.getTaxAgentId() + "-" + mainPo.getEmployeeId(); + Map deductionPOMap = SalaryEntityUtil.convert2Map(eligibleData, e -> e.getTaxAgentId() + "-" + e.getEmployeeId()); + if (deductionPOMap.containsKey(key)) { + deductionPOMap.get(key).getHealthInsuranceList().add(po); + } else { + mainPo.getHealthInsuranceList().add(po); + eligibleData.add(mainPo); + } + + } else { + errorCount += 1; + } + } + + HashMap dataMap = new HashMap<>(); + dataMap.put("successCount", successCount); + dataMap.put("errorCount", errorCount); + dataMap.put("errorData", errorData); + apidatas.put("derateDeduction", dataMap); + + } finally { + IOUtils.closeQuietly(fileInputStream); + } + + try { + fileInputStream = ImageFileManager.getInputStreamById(Integer.parseInt(imageId)); + + int successCount = 0; + int errorCount = 0; + + // 错误excel内容 + List errorData = new ArrayList<>(); + + List derateDeductionList = ExcelParseHelper.parse2Map(fileInputStream, EndowmentInsuranceListDTO.class, 2, 1, 11, "OtherDeductionTemplate.xlsx"); + for (int i = 0; i < derateDeductionList.size(); i++) { + EndowmentInsuranceListDTO dto = derateDeductionList.get(i); + + Date now = new Date(); + //待插入数据库对象 + OtherDeductionPO mainPo = OtherDeductionPO.builder() + .declareMonth(declareMonth) + .freeIncomeList(new ArrayList<>()) + .derateDeductionList(new ArrayList<>()) + .endowmentInsuranceList(new ArrayList<>()) + .grantDonationList(new ArrayList<>()) + .healthInsuranceList(new ArrayList<>()) + .otherDerateDeductionList(new ArrayList<>()) + .createTime(now) + .updateTime(now) + .creator((long) user.getUID()) + .tenantKey(DEFAULT_TENANT_KEY) + .build(); + + EndowmentInsurancePO po = EndowmentInsurancePO.builder() + .taxYearMonth(declareMonth) + .fileStatus(1) + .creator((long) user.getUID()) + .createTime(now) + .updateTime(now) + .tenantKey(DEFAULT_TENANT_KEY) + .build(); + + //异常点数量 + int errorSum = 0; + + //行号 + String rowIndex = String.format("第%s行", i + 2); + + //相同的姓名 + String userName = dto.getUsername(); + String deparmentName = dto.getDepartmentName(); + String mobile = dto.getMobile(); + String workcode = dto.getJobNum(); + String idNo = dto.getIdNo(); + List employeeSameIds = new ArrayList<>(); + + //筛选导入人员信息可以在人力资源池中匹配到的人员信息 + List emps = getSalaryEmployeeService(user).matchImportEmployee(confValue, employees, userName, deparmentName, mobile, workcode, idNo, null); + //含在职和离职,选在职数据 + if (CollectionUtils.isNotEmpty(emps) && emps.size() > 1) { + employeeSameIds = emps.stream() + .filter(e -> UserStatusEnum.getNormalStatus().contains(e.getStatus())) + .map(DataCollectionEmployee::getEmployeeId) + .collect(Collectors.toList()); + } + if (CollectionUtils.isNotEmpty(emps) && emps.size() == 1) { + employeeSameIds = emps.stream() + .map(DataCollectionEmployee::getEmployeeId) + .collect(Collectors.toList()); + } + + //当人员信息导入筛选的全局配置为"0"时,姓名才是必填项 + if (StringUtils.isBlank(userName) && "0".equals(confValue)) { + //姓名 不能为空 + //错误消息对象 + Map errorMessageMap = Maps.newHashMap(); + errorMessageMap.put("message", rowIndex + "姓名不能为空"); + errorData.add(errorMessageMap); + errorSum += 1; + } else if (CollectionUtils.isEmpty(employeeSameIds) || employeeSameIds.size() > 1) { + Map errorMessageMap = Maps.newHashMap(); + errorMessageMap.put("message", rowIndex + "员工信息不存在或者存在多个员工"); + errorData.add(errorMessageMap); + errorSum += 1; + } else { + Long employeeId = CollectionUtils.isNotEmpty(employeeSameIds) && employeeSameIds.size() == 1 ? employeeSameIds.get(0) : null; + if (employeeId != null && employeeId > 0) { + mainPo.setEmployeeId(employeeId); + po.setEmployeeId(employeeId); + po.setEmployeeType(DataCollectionEmployeeTypeEnum.ORGANIZATION.getValue()); + } else { + //姓名错误,系统内不存在该姓名 + Map errorMessageMap = Maps.newHashMap(); + errorMessageMap.put("message", rowIndex + "姓名错误,系统内不存在该姓名"); + errorData.add(errorMessageMap); + errorSum += 1; + } + } + + + String taxAgentName = dto.getTaxAgentName(); + if (StringUtils.isBlank(taxAgentName)) { + //个税扣缴义务人不能为空 + Map errorMessageMap = Maps.newHashMap(); + errorMessageMap.put("message", rowIndex + "个税扣缴义务人不能为空"); + errorData.add(errorMessageMap); + errorSum += 1; + } else { + Optional optionalTemp = taxAgentList.stream().filter(m -> m.getTaxAgentName().equals(taxAgentName)).findFirst(); + if (optionalTemp.isPresent()) { + mainPo.setTaxAgentId(optionalTemp.get().getTaxAgentId()); + po.setTaxAgentId(optionalTemp.get().getTaxAgentId()); + } else { + //个税扣缴义务人不存在 + Map errorMessageMap = Maps.newHashMap(); + errorMessageMap.put("message", rowIndex + "个税扣缴义务人不存在或不在权限范围内"); + errorData.add(errorMessageMap); + errorSum += 1; + } + } + + po.setAccountNumber(dto.getAccountNumber()); + po.setCheckCode(dto.getCheckCode()); + po.setYearPremium(dto.getYearPremium()); + po.setMonthPremium(dto.getMonthPremium()); + po.setCurrentDeduction(dto.getCurrentDeduction()); + + if (errorSum == 0) { + successCount += 1; + String key = mainPo.getTaxAgentId() + "-" + mainPo.getEmployeeId(); + Map deductionPOMap = SalaryEntityUtil.convert2Map(eligibleData, e -> e.getTaxAgentId() + "-" + e.getEmployeeId()); + if (deductionPOMap.containsKey(key)) { + deductionPOMap.get(key).getEndowmentInsuranceList().add(po); + } else { + mainPo.getEndowmentInsuranceList().add(po); + eligibleData.add(mainPo); + } + + } else { + errorCount += 1; + // 添加错误数据 + } + } + + HashMap dataMap = new HashMap<>(); + dataMap.put("successCount", successCount); + dataMap.put("errorCount", errorCount); + dataMap.put("errorData", errorData); + apidatas.put("derateDeduction", dataMap); + + } finally { + IOUtils.closeQuietly(fileInputStream); + } + + + try { + fileInputStream = ImageFileManager.getInputStreamById(Integer.parseInt(imageId)); + + int successCount = 0; + int errorCount = 0; + + // 错误excel内容 + List errorData = new ArrayList<>(); + + List dtoList = ExcelParseHelper.parse2Map(fileInputStream, GrantDonationListDTO.class, 3, 1, 13, "OtherDeductionTemplate.xlsx"); + for (int i = 0; i < dtoList.size(); i++) { + GrantDonationListDTO dto = dtoList.get(i); + + Date now = new Date(); + //待插入数据库对象 + OtherDeductionPO mainPo = OtherDeductionPO.builder() + .declareMonth(declareMonth) + .freeIncomeList(new ArrayList<>()) + .derateDeductionList(new ArrayList<>()) + .endowmentInsuranceList(new ArrayList<>()) + .grantDonationList(new ArrayList<>()) + .healthInsuranceList(new ArrayList<>()) + .otherDerateDeductionList(new ArrayList<>()) + .createTime(now) + .updateTime(now) + .creator((long) user.getUID()) + .tenantKey(DEFAULT_TENANT_KEY) + .build(); + + GrantDonationPO po = GrantDonationPO.builder() + .taxYearMonth(declareMonth) + .fileStatus(1) + .creator((long) user.getUID()) + .createTime(now) + .updateTime(now) + .tenantKey(DEFAULT_TENANT_KEY) + .build(); + + //异常点数量 + int errorSum = 0; + + //行号 + String rowIndex = String.format("第%s行", i + 2); + + //相同的姓名 + String userName = dto.getUsername(); + String deparmentName = dto.getDepartmentName(); + String mobile = dto.getMobile(); + String workcode = dto.getJobNum(); + String idNo = dto.getIdNo(); + List employeeSameIds = new ArrayList<>(); + + //筛选导入人员信息可以在人力资源池中匹配到的人员信息 + List emps = getSalaryEmployeeService(user).matchImportEmployee(confValue, employees, userName, deparmentName, mobile, workcode, idNo, null); + //含在职和离职,选在职数据 + if (CollectionUtils.isNotEmpty(emps) && emps.size() > 1) { + employeeSameIds = emps.stream() + .filter(e -> UserStatusEnum.getNormalStatus().contains(e.getStatus())) + .map(DataCollectionEmployee::getEmployeeId) + .collect(Collectors.toList()); + } + if (CollectionUtils.isNotEmpty(emps) && emps.size() == 1) { + employeeSameIds = emps.stream() + .map(DataCollectionEmployee::getEmployeeId) + .collect(Collectors.toList()); + } + + //当人员信息导入筛选的全局配置为"0"时,姓名才是必填项 + if (StringUtils.isBlank(userName) && "0".equals(confValue)) { + //姓名 不能为空 + //错误消息对象 + Map errorMessageMap = Maps.newHashMap(); + errorMessageMap.put("message", rowIndex + "姓名不能为空"); + errorData.add(errorMessageMap); + errorSum += 1; + } else if (CollectionUtils.isEmpty(employeeSameIds) || employeeSameIds.size() > 1) { + Map errorMessageMap = Maps.newHashMap(); + errorMessageMap.put("message", rowIndex + "员工信息不存在或者存在多个员工"); + errorData.add(errorMessageMap); + errorSum += 1; + } else { + Long employeeId = CollectionUtils.isNotEmpty(employeeSameIds) && employeeSameIds.size() == 1 ? employeeSameIds.get(0) : null; + if (employeeId != null && employeeId > 0) { + mainPo.setEmployeeId(employeeId); + po.setEmployeeId(employeeId); + po.setEmployeeType(DataCollectionEmployeeTypeEnum.ORGANIZATION.getValue()); + } else { + //姓名错误,系统内不存在该姓名 + Map errorMessageMap = Maps.newHashMap(); + errorMessageMap.put("message", rowIndex + "姓名错误,系统内不存在该姓名"); + errorData.add(errorMessageMap); + errorSum += 1; + } + } + + + String taxAgentName = dto.getTaxAgentName(); + if (StringUtils.isBlank(taxAgentName)) { + //个税扣缴义务人不能为空 + Map errorMessageMap = Maps.newHashMap(); + errorMessageMap.put("message", rowIndex + "个税扣缴义务人不能为空"); + errorData.add(errorMessageMap); + errorSum += 1; + } else { + Optional optionalTemp = taxAgentList.stream().filter(m -> m.getTaxAgentName().equals(taxAgentName)).findFirst(); + if (optionalTemp.isPresent()) { + mainPo.setTaxAgentId(optionalTemp.get().getTaxAgentId()); + po.setTaxAgentId(optionalTemp.get().getTaxAgentId()); + } else { + //个税扣缴义务人不存在 + Map errorMessageMap = Maps.newHashMap(); + errorMessageMap.put("message", rowIndex + "个税扣缴义务人不存在或不在权限范围内"); + errorData.add(errorMessageMap); + errorSum += 1; + } + } + + po.setRecipientName(dto.getRecipientName()); + po.setTaxCode(dto.getTaxCode()); + po.setDonationNumber(dto.getDonationNumber()); + po.setDonateDate(dto.getDonateDate()); + po.setDonateAmount(dto.getDonateAmount()); + po.setDeductionProportion(dto.getDeductionProportion()); + po.setActualDeduction(dto.getActualDeduction()); + + if (errorSum == 0) { + successCount += 1; + String key = mainPo.getTaxAgentId() + "-" + mainPo.getEmployeeId(); + Map deductionPOMap = SalaryEntityUtil.convert2Map(eligibleData, e -> e.getTaxAgentId() + "-" + e.getEmployeeId()); + if (deductionPOMap.containsKey(key)) { + deductionPOMap.get(key).getGrantDonationList().add(po); + } else { + mainPo.getGrantDonationList().add(po); + eligibleData.add(mainPo); + } + + } else { + errorCount += 1; + } + } + + HashMap dataMap = new HashMap<>(); + dataMap.put("successCount", successCount); + dataMap.put("errorCount", errorCount); + dataMap.put("errorData", errorData); + apidatas.put("derateDeduction", dataMap); + + } finally { + IOUtils.closeQuietly(fileInputStream); + } + try { fileInputStream = ImageFileManager.getInputStreamById(Integer.parseInt(imageId)); @@ -749,7 +1197,6 @@ public class OtherDeductionServiceImpl extends Service implements OtherDeduction IOUtils.closeQuietly(fileInputStream); } - try { fileInputStream = ImageFileManager.getInputStreamById(Integer.parseInt(imageId)); @@ -759,9 +1206,9 @@ public class OtherDeductionServiceImpl extends Service implements OtherDeduction // 错误excel内容 List errorData = new ArrayList<>(); - List derateDeductionList = ExcelParseHelper.parse2Map(fileInputStream, EndowmentInsuranceListDTO.class, 2, 1, 11, "OtherDeductionTemplate.xlsx"); - for (int i = 0; i < derateDeductionList.size(); i++) { - EndowmentInsuranceListDTO dto = derateDeductionList.get(i); + List dtoList = ExcelParseHelper.parse2Map(fileInputStream, OtherDerateDeductionListDTO.class, 5, 1, 8, "OtherDeductionTemplate.xlsx"); + for (int i = 0; i < dtoList.size(); i++) { + OtherDerateDeductionListDTO dto = dtoList.get(i); Date now = new Date(); //待插入数据库对象 @@ -779,7 +1226,7 @@ public class OtherDeductionServiceImpl extends Service implements OtherDeduction .tenantKey(DEFAULT_TENANT_KEY) .build(); - EndowmentInsurancePO po = EndowmentInsurancePO.builder() + OtherDerateDeductionPO po = OtherDerateDeductionPO.builder() .taxYearMonth(declareMonth) .fileStatus(1) .creator((long) user.getUID()) @@ -867,26 +1314,23 @@ public class OtherDeductionServiceImpl extends Service implements OtherDeduction } } - po.setAccountNumber(dto.getAccountNumber()); - po.setCheckCode(dto.getCheckCode()); - po.setYearPremium(dto.getYearPremium()); - po.setMonthPremium(dto.getMonthPremium()); - po.setCurrentDeduction(dto.getCurrentDeduction()); + po.setOtherDeduction(dto.getOtherDeduction()); + po.setRemark(dto.getRemark()); + if (errorSum == 0) { successCount += 1; String key = mainPo.getTaxAgentId() + "-" + mainPo.getEmployeeId(); Map deductionPOMap = SalaryEntityUtil.convert2Map(eligibleData, e -> e.getTaxAgentId() + "-" + e.getEmployeeId()); if (deductionPOMap.containsKey(key)) { - deductionPOMap.get(key).getEndowmentInsuranceList().add(po); + deductionPOMap.get(key).getOtherDerateDeductionList().add(po); } else { - mainPo.getEndowmentInsuranceList().add(po); + mainPo.getOtherDerateDeductionList().add(po); eligibleData.add(mainPo); } } else { errorCount += 1; - // 添加错误数据 } } @@ -900,7 +1344,6 @@ public class OtherDeductionServiceImpl extends Service implements OtherDeduction IOUtils.closeQuietly(fileInputStream); } - return apidatas; } From fda791624e008bc2169bf709ca16a14687dd7505 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Thu, 19 Dec 2024 16:34:32 +0800 Subject: [PATCH 201/218] =?UTF-8?q?=E8=8E=B7=E5=8F=96token=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0https=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/engine/salary/util/SalaryTokenUtil.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/com/engine/salary/util/SalaryTokenUtil.java b/src/com/engine/salary/util/SalaryTokenUtil.java index aaa53e1d9..653a0a821 100644 --- a/src/com/engine/salary/util/SalaryTokenUtil.java +++ b/src/com/engine/salary/util/SalaryTokenUtil.java @@ -90,6 +90,9 @@ public class SalaryTokenUtil { return heads; } BaseBean baseBean = new BaseBean(); + // 获取是否是https + String isHttps = baseBean.getPropValue("hrmSalaryBillToken", "is_https"); + String httpKey = (StringUtils.isNotBlank(isHttps) && isHttps.equals("true")) ? "https://" : "http://"; RecordSet rs = new RecordSet(); Map resultMap = new HashMap<>(); @@ -123,7 +126,7 @@ public class SalaryTokenUtil { heads.put("appid", appid); heads.put("cpk", cpk); // 调用ECOLOGY系统接口进行注册 - String data = post("http://" + ip + "/api/ec/dev/auth/regist", null, heads); + String data = post(httpKey + ip + "/api/ec/dev/auth/regist", null, heads); Map datas = JSONObject.parseObject(data, new TypeReference>() {}); // ECOLOGY返回的系统公钥 String spk = (String) (datas.get("spk")); @@ -144,7 +147,7 @@ public class SalaryTokenUtil { heads.put("appid", appid); heads.put("secret", secret); //调用ECOLOGY系统接口进行注册 - String data2 = post("http://" + ip + "/api/ec/dev/auth/applytoken", null, heads); + String data2 = post(httpKey + ip + "/api/ec/dev/auth/applytoken", null, heads); // 通过第一步注册许可时返回spk公钥对userid进行加密生成的密文 sql= " SELECT conf_value FROM hrsa_salary_sys_conf t WHERE delete_type = 0 AND conf_key = 'SALARY_TOKEN_SPK'"; rs.execute(sql); From 7b82b570e402ca33cae715faab9606e5ab0f50a7 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Thu, 19 Dec 2024 16:59:38 +0800 Subject: [PATCH 202/218] =?UTF-8?q?=E8=8E=B7=E5=8F=96token=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0https=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/engine/salary/util/SalaryTokenUtil.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/com/engine/salary/util/SalaryTokenUtil.java b/src/com/engine/salary/util/SalaryTokenUtil.java index aaa53e1d9..653a0a821 100644 --- a/src/com/engine/salary/util/SalaryTokenUtil.java +++ b/src/com/engine/salary/util/SalaryTokenUtil.java @@ -90,6 +90,9 @@ public class SalaryTokenUtil { return heads; } BaseBean baseBean = new BaseBean(); + // 获取是否是https + String isHttps = baseBean.getPropValue("hrmSalaryBillToken", "is_https"); + String httpKey = (StringUtils.isNotBlank(isHttps) && isHttps.equals("true")) ? "https://" : "http://"; RecordSet rs = new RecordSet(); Map resultMap = new HashMap<>(); @@ -123,7 +126,7 @@ public class SalaryTokenUtil { heads.put("appid", appid); heads.put("cpk", cpk); // 调用ECOLOGY系统接口进行注册 - String data = post("http://" + ip + "/api/ec/dev/auth/regist", null, heads); + String data = post(httpKey + ip + "/api/ec/dev/auth/regist", null, heads); Map datas = JSONObject.parseObject(data, new TypeReference>() {}); // ECOLOGY返回的系统公钥 String spk = (String) (datas.get("spk")); @@ -144,7 +147,7 @@ public class SalaryTokenUtil { heads.put("appid", appid); heads.put("secret", secret); //调用ECOLOGY系统接口进行注册 - String data2 = post("http://" + ip + "/api/ec/dev/auth/applytoken", null, heads); + String data2 = post(httpKey + ip + "/api/ec/dev/auth/applytoken", null, heads); // 通过第一步注册许可时返回spk公钥对userid进行加密生成的密文 sql= " SELECT conf_value FROM hrsa_salary_sys_conf t WHERE delete_type = 0 AND conf_key = 'SALARY_TOKEN_SPK'"; rs.execute(sql); From cf253ecfb04b4d3a7cb9d88271aa044739585500 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Mon, 23 Dec 2024 16:41:42 +0800 Subject: [PATCH 203/218] =?UTF-8?q?=E4=B8=AA=E4=BA=BA=E5=85=BB=E8=80=81?= =?UTF-8?q?=E9=87=91=E9=99=84=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resource/sqlupgrade/DM/sql202412230103.sql | 25 ++ resource/sqlupgrade/GS/sql202412230103.sql | 25 ++ resource/sqlupgrade/JC/sql202412230103.sql | 25 ++ resource/sqlupgrade/Mysql/sql202412230103.sql | 24 ++ .../sqlupgrade/Oracle/sql202412230103.sql | 24 ++ resource/sqlupgrade/PG/sql202412230103.sql | 24 ++ .../sqlupgrade/SQLServer/sql202412230103.sql | 24 ++ resource/sqlupgrade/ST/sql202412230103.sql | 25 ++ .../dto/PersonalPensionListDTO.java | 127 ++++++ .../param/DerateDeductionSaveParam.java | 48 +++ .../param/EndowmentInsuranceSaveParam.java | 60 +++ .../param/FreeIncomeSaveParam.java | 48 +++ .../param/GrantDonationSaveParam.java | 59 +++ .../param/HealthInsuranceSaveParam.java | 54 +++ .../param/OtherDerateDeductionSaveParam.java | 45 ++ .../datacollection/po/OtherDeductionPO.java | 1 + .../PersonalPensionVoucherTypeEnum.java | 52 +++ .../datacollection/PersonalPensionMapper.java | 73 ++++ .../datacollection/PersonalPensionMapper.xml | 390 ++++++++++++++++++ .../salary/service/OtherDeductionService.java | 19 +- .../impl/OtherDeductionServiceImpl.java | 193 ++++++++- 21 files changed, 1361 insertions(+), 4 deletions(-) create mode 100644 resource/sqlupgrade/DM/sql202412230103.sql create mode 100644 resource/sqlupgrade/GS/sql202412230103.sql create mode 100644 resource/sqlupgrade/JC/sql202412230103.sql create mode 100644 resource/sqlupgrade/Mysql/sql202412230103.sql create mode 100644 resource/sqlupgrade/Oracle/sql202412230103.sql create mode 100644 resource/sqlupgrade/PG/sql202412230103.sql create mode 100644 resource/sqlupgrade/SQLServer/sql202412230103.sql create mode 100644 resource/sqlupgrade/ST/sql202412230103.sql create mode 100644 src/com/engine/salary/entity/datacollection/dto/PersonalPensionListDTO.java create mode 100644 src/com/engine/salary/entity/datacollection/param/DerateDeductionSaveParam.java create mode 100644 src/com/engine/salary/entity/datacollection/param/EndowmentInsuranceSaveParam.java create mode 100644 src/com/engine/salary/entity/datacollection/param/FreeIncomeSaveParam.java create mode 100644 src/com/engine/salary/entity/datacollection/param/GrantDonationSaveParam.java create mode 100644 src/com/engine/salary/entity/datacollection/param/HealthInsuranceSaveParam.java create mode 100644 src/com/engine/salary/entity/datacollection/param/OtherDerateDeductionSaveParam.java create mode 100644 src/com/engine/salary/enums/datacollection/PersonalPensionVoucherTypeEnum.java create mode 100644 src/com/engine/salary/mapper/datacollection/PersonalPensionMapper.java create mode 100644 src/com/engine/salary/mapper/datacollection/PersonalPensionMapper.xml diff --git a/resource/sqlupgrade/DM/sql202412230103.sql b/resource/sqlupgrade/DM/sql202412230103.sql new file mode 100644 index 000000000..7d3959666 --- /dev/null +++ b/resource/sqlupgrade/DM/sql202412230103.sql @@ -0,0 +1,25 @@ +create table hrsa_personal_pension +( + id number primary key , + create_time date, + update_time date, + creator number, + delete_type int default 0, + tenant_key varchar2(10), + main_id number, + tax_year_month date, + employee_id number, + tax_agent_id number, + file_status int, + voucher_type varchar2(255), + voucher_no varchar2(255), + pay_amount varchar2(255), + data_source int, + collect_source varchar2(50), + pay_month date, + eb_data_id number, + voucher_type_name varchar2(50), + employee_type int +); +/ + diff --git a/resource/sqlupgrade/GS/sql202412230103.sql b/resource/sqlupgrade/GS/sql202412230103.sql new file mode 100644 index 000000000..7d3959666 --- /dev/null +++ b/resource/sqlupgrade/GS/sql202412230103.sql @@ -0,0 +1,25 @@ +create table hrsa_personal_pension +( + id number primary key , + create_time date, + update_time date, + creator number, + delete_type int default 0, + tenant_key varchar2(10), + main_id number, + tax_year_month date, + employee_id number, + tax_agent_id number, + file_status int, + voucher_type varchar2(255), + voucher_no varchar2(255), + pay_amount varchar2(255), + data_source int, + collect_source varchar2(50), + pay_month date, + eb_data_id number, + voucher_type_name varchar2(50), + employee_type int +); +/ + diff --git a/resource/sqlupgrade/JC/sql202412230103.sql b/resource/sqlupgrade/JC/sql202412230103.sql new file mode 100644 index 000000000..7d3959666 --- /dev/null +++ b/resource/sqlupgrade/JC/sql202412230103.sql @@ -0,0 +1,25 @@ +create table hrsa_personal_pension +( + id number primary key , + create_time date, + update_time date, + creator number, + delete_type int default 0, + tenant_key varchar2(10), + main_id number, + tax_year_month date, + employee_id number, + tax_agent_id number, + file_status int, + voucher_type varchar2(255), + voucher_no varchar2(255), + pay_amount varchar2(255), + data_source int, + collect_source varchar2(50), + pay_month date, + eb_data_id number, + voucher_type_name varchar2(50), + employee_type int +); +/ + diff --git a/resource/sqlupgrade/Mysql/sql202412230103.sql b/resource/sqlupgrade/Mysql/sql202412230103.sql new file mode 100644 index 000000000..1905ea452 --- /dev/null +++ b/resource/sqlupgrade/Mysql/sql202412230103.sql @@ -0,0 +1,24 @@ +create table hrsa_personal_pension +( + id bigint primary key comment 'ID' , + create_time datetime comment 'ʱ' , + update_time datetime comment '޸ʱ' , + creator bigint comment 'id' , + delete_type int default 0 comment 'Ƿɾ' , + tenant_key varchar(10) comment '⻧KEY' , + main_id bigint comment 'id' , + tax_year_month date comment '˰' , + employee_id bigint comment 'Աid' , + tax_agent_id bigint comment '˰۽id' , + file_status int comment '鵵״̬ 0δ鵵 1ѹ鵵' , + voucher_type varchar(255) comment 'ƾ֤' , + voucher_no varchar(255) comment 'ƾ֤' , + pay_amount varchar(255) comment '' , + data_source int comment 'Դ' , + collect_source varchar(50) comment 'ɼԴ' , + pay_month date comment 'ɷ¶' , + eb_data_id bigint comment 'ebid' , + voucher_type_name varchar(50) comment 'ƾ֤' , + employee_type int comment 'Ա' +) +; \ No newline at end of file diff --git a/resource/sqlupgrade/Oracle/sql202412230103.sql b/resource/sqlupgrade/Oracle/sql202412230103.sql new file mode 100644 index 000000000..e84bbd88e --- /dev/null +++ b/resource/sqlupgrade/Oracle/sql202412230103.sql @@ -0,0 +1,24 @@ +create table hrsa_personal_pension +( + id number primary key , + create_time date, + update_time date, + creator number, + delete_type int default 0, + tenant_key varchar2(10), + main_id number, + tax_year_month date, + employee_id number, + tax_agent_id number, + file_status int, + voucher_type varchar2(255), + voucher_no varchar2(255), + pay_amount varchar2(255), + data_source int, + collect_source varchar2(50), + pay_month date, + eb_data_id number, + voucher_type_name varchar2(50), + employee_type int +) +/ \ No newline at end of file diff --git a/resource/sqlupgrade/PG/sql202412230103.sql b/resource/sqlupgrade/PG/sql202412230103.sql new file mode 100644 index 000000000..9e48e428d --- /dev/null +++ b/resource/sqlupgrade/PG/sql202412230103.sql @@ -0,0 +1,24 @@ +create table hrsa_personal_pension +( + id bigint primary key , + create_time timestamp, + update_time timestamp, + creator bigint, + delete_type int default 0, + tenant_key varchar(10), + main_id bigint, + tax_year_month date, + employee_id bigint, + tax_agent_id bigint, + file_status int, + voucher_type varchar(255), + voucher_no varchar(255), + pay_amount varchar(255), + data_source int, + collect_source varchar(50), + pay_month date, + eb_data_id bigint, + voucher_type_name varchar(50), + employee_type int +); +/ \ No newline at end of file diff --git a/resource/sqlupgrade/SQLServer/sql202412230103.sql b/resource/sqlupgrade/SQLServer/sql202412230103.sql new file mode 100644 index 000000000..6fd85b259 --- /dev/null +++ b/resource/sqlupgrade/SQLServer/sql202412230103.sql @@ -0,0 +1,24 @@ +create table hrsa_personal_pension +( + id bigint primary key , + create_time datetime, + update_time datetime, + creator bigint, + delete_type int default 0, + tenant_key nvarchar(10), + main_id bigint, + tax_year_month datetime, + employee_id bigint, + tax_agent_id bigint, + file_status int, + voucher_type nvarchar(255), + voucher_no nvarchar(255), + pay_amount nvarchar(255), + data_source int, + collect_source nvarchar(50), + pay_month datetime, + eb_data_id bigint, + voucher_type_name nvarchar(50), + employee_type int +) +GO \ No newline at end of file diff --git a/resource/sqlupgrade/ST/sql202412230103.sql b/resource/sqlupgrade/ST/sql202412230103.sql new file mode 100644 index 000000000..7d3959666 --- /dev/null +++ b/resource/sqlupgrade/ST/sql202412230103.sql @@ -0,0 +1,25 @@ +create table hrsa_personal_pension +( + id number primary key , + create_time date, + update_time date, + creator number, + delete_type int default 0, + tenant_key varchar2(10), + main_id number, + tax_year_month date, + employee_id number, + tax_agent_id number, + file_status int, + voucher_type varchar2(255), + voucher_no varchar2(255), + pay_amount varchar2(255), + data_source int, + collect_source varchar2(50), + pay_month date, + eb_data_id number, + voucher_type_name varchar2(50), + employee_type int +); +/ + diff --git a/src/com/engine/salary/entity/datacollection/dto/PersonalPensionListDTO.java b/src/com/engine/salary/entity/datacollection/dto/PersonalPensionListDTO.java new file mode 100644 index 000000000..01becf206 --- /dev/null +++ b/src/com/engine/salary/entity/datacollection/dto/PersonalPensionListDTO.java @@ -0,0 +1,127 @@ +package com.engine.salary.entity.datacollection.dto; + +import com.engine.salary.annotation.I18n; +import com.engine.salary.annotation.TableTitle; +import com.engine.salary.enums.datacollection.DataCollectionEmployeeTypeEnum; +import com.engine.salary.enums.datacollection.EnumDeductionDataSource; +import com.engine.salary.util.excel.ExcelProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; + +/** + * 其他免税扣除-个人养老金 + *

Copyright: Copyright (c) 2024

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +//hrsa_personal_pension +//其他免税扣除-个人养老金 +public class PersonalPensionListDTO { + + private Long id; + + private Long mainId; + + /** + * 个税扣缴义务人id + */ + private Long taxAgentId; + + + private Long employeeId; + /** + * 人员类型 + * + * @see DataCollectionEmployeeTypeEnum + */ + private Integer employeeType; + + @TableTitle(title = "税款所属期", dataIndex = "taxYearMonth", key = "taxYearMonth") + private Date taxYearMonth; + + //姓名 + @TableTitle(title = "姓名", dataIndex = "username", key = "username") + @ExcelProperty(index = 0) + @I18n + private String username; + + //个税扣缴义务人 + @TableTitle(title = "个税扣缴义务人", dataIndex = "taxAgentName", key = "taxAgentName") + @ExcelProperty(index = 1) + private String taxAgentName; + + //部门 + @TableTitle(title = "部门", dataIndex = "departmentName", key = "departmentName") + @ExcelProperty(index = 2) + @I18n + private String departmentName; + + //手机号 + @TableTitle(title = "手机号", dataIndex = "mobile", key = "mobile") + @ExcelProperty(index = 3) + private String mobile; + + //工号 + @TableTitle(title = "工号", dataIndex = "jobNum", key = "jobNum") + @ExcelProperty(index = 4) + private String jobNum; + + //证件号码 + @ExcelProperty(index = 5) + @TableTitle(title = "证件号码", dataIndex = "idNo", key = "idNo") + private String idNo; + + + //缴费月度 + private Date payMonth; + + //凭证类别 + private Integer voucherType; + + //凭证类别名称 + @ExcelProperty(index = 6) + @TableTitle(title = "凭证类型", dataIndex = "voucherTypeName", key = "voucherTypeName") + private String voucherTypeName; + + //凭证编码 + @ExcelProperty(index = 7) + @TableTitle(title = "凭证编码", dataIndex = "voucherNo", key = "voucherNo") + private String voucherNo; + + //缴费金额 + @ExcelProperty(index = 8) + @TableTitle(title = "缴费金额", dataIndex = "payAmount", key = "payAmount") + private String payAmount; + + //归档状态 0未归档 1已归档 + private Integer fileStatus; + + /** + * @see EnumDeductionDataSource + */ + //数据来源 + private Integer dataSource; + + //采集来源 + private String collectSource; + + //创建时间 + private Date createTime; + + //更新时间 + private Date updateTime; + + //创建人 + private Long creator; + +} diff --git a/src/com/engine/salary/entity/datacollection/param/DerateDeductionSaveParam.java b/src/com/engine/salary/entity/datacollection/param/DerateDeductionSaveParam.java new file mode 100644 index 000000000..0eaf002cb --- /dev/null +++ b/src/com/engine/salary/entity/datacollection/param/DerateDeductionSaveParam.java @@ -0,0 +1,48 @@ +package com.engine.salary.entity.datacollection.param; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; + +/** + * 减免税额 + *

Copyright: Copyright (c) 2024

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +//hrsa_derate_deduction +//其他免税扣除-减免税额 +public class DerateDeductionSaveParam { + //主键id + private Long id; + + //主表数据Id + private Long mainId; + + //税款所属期 + private Date taxYearMonth; + + //人员 + private Long employeeId; + + //个税扣缴义务人 + private Long taxAgentId; + + //减免事项 + private String derateItem; + + //减免性质 + private String derateProperty; + + //减免金额 + private String derateAmount; +} diff --git a/src/com/engine/salary/entity/datacollection/param/EndowmentInsuranceSaveParam.java b/src/com/engine/salary/entity/datacollection/param/EndowmentInsuranceSaveParam.java new file mode 100644 index 000000000..7a5b6ffba --- /dev/null +++ b/src/com/engine/salary/entity/datacollection/param/EndowmentInsuranceSaveParam.java @@ -0,0 +1,60 @@ +package com.engine.salary.entity.datacollection.param; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; + +/** + * 税延养老保险 + *

Copyright: Copyright (c) 2024

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +//hrsa_endowment_insurance +//其他免税扣除-税延养老保险 +public class EndowmentInsuranceSaveParam { + + //主键 + private Long id; + + //主表数据Id + private Long mainId; + + //税款所属期 + private Date taxYearMonth; + + //人员id + private Long employeeId; + + //个税扣缴义务人ID + private Long taxAgentId; + + //申报扣除月份 + private Date deductionMonth; + + //税延养老账户编号 + private String accountNumber; + + //报税校验码 + private String checkCode; + + //年度保费 + private String yearPremium; + + //月度保费 + private String monthPremium; + + //本期扣除金额 + private String currentDeduction; + + +} diff --git a/src/com/engine/salary/entity/datacollection/param/FreeIncomeSaveParam.java b/src/com/engine/salary/entity/datacollection/param/FreeIncomeSaveParam.java new file mode 100644 index 000000000..70e05f6bc --- /dev/null +++ b/src/com/engine/salary/entity/datacollection/param/FreeIncomeSaveParam.java @@ -0,0 +1,48 @@ +package com.engine.salary.entity.datacollection.param; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; + +/** + * 其他免税扣除-免税收入表单 + *

Copyright: Copyright (c) 2024

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +//hrsa_free_income +//其他免税扣除-免税收入 +public class FreeIncomeSaveParam { + //主键id + private Long id; + + //主表数据Id + private Long mainId; + + //税款所属期 + private Date taxYearMonth; + + //人员 + private Long employeeId; + + //个税扣缴义务人 + private Long taxAgentId; + + //免税事项 + private String freeItem; + + //免税性质 + private String freeProperty; + + //免税金额 + private String freeAmount; +} diff --git a/src/com/engine/salary/entity/datacollection/param/GrantDonationSaveParam.java b/src/com/engine/salary/entity/datacollection/param/GrantDonationSaveParam.java new file mode 100644 index 000000000..6b8256e0a --- /dev/null +++ b/src/com/engine/salary/entity/datacollection/param/GrantDonationSaveParam.java @@ -0,0 +1,59 @@ +package com.engine.salary.entity.datacollection.param; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; + +/** + * 其他免税扣除-准予扣除的捐赠额 + * + * @author chengliming + * @date 2023-06-09 15:03:45 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +//hrsa_grant_donation +//其他免税扣除-准予扣除的捐赠额 +public class GrantDonationSaveParam { + //主键id + private Long id; + + //主表数据Id + private Long mainId; + + //税款所属期 + private Date taxYearMonth; + + //人员 + private Long employeeId; + + //个税扣缴义务人 + private Long taxAgentId; + + //受赠单位名称 + private String recipientName; + + //受赠单位纳税人识别号 + private String taxCode; + + //捐赠凭证号 + private String donationNumber; + + //捐赠日期 + private Date donateDate; + + //捐赠金额 + private String donateAmount; + + //扣除比例 + private String deductionProportion; + + //实际扣除金额 + private String actualDeduction; + +} diff --git a/src/com/engine/salary/entity/datacollection/param/HealthInsuranceSaveParam.java b/src/com/engine/salary/entity/datacollection/param/HealthInsuranceSaveParam.java new file mode 100644 index 000000000..6a24c8192 --- /dev/null +++ b/src/com/engine/salary/entity/datacollection/param/HealthInsuranceSaveParam.java @@ -0,0 +1,54 @@ +package com.engine.salary.entity.datacollection.param; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; + +/** + * 商业健康保险 + *

Copyright: Copyright (c) 2024

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +//hrsa_health_insurance +//其他免税扣除-商业健康保险表单 +public class HealthInsuranceSaveParam { + //主键id + private Long id; + + //主表数据Id + private Long mainId; + + //税款所属期 + private Date taxYearMonth; + + //人员 + private Long employeeId; + + //个税扣缴义务人 + private Long taxAgentId; + + //税优识别码 + private String identificationNumber; + + //保单生效日期 + private Date effectiveDate; + + //年度保费 + private String yearPremium; + + //月度保费 + private String monthPremium; + + //本期扣除金额 + private String currentDeduction; +} diff --git a/src/com/engine/salary/entity/datacollection/param/OtherDerateDeductionSaveParam.java b/src/com/engine/salary/entity/datacollection/param/OtherDerateDeductionSaveParam.java new file mode 100644 index 000000000..160a296a2 --- /dev/null +++ b/src/com/engine/salary/entity/datacollection/param/OtherDerateDeductionSaveParam.java @@ -0,0 +1,45 @@ +package com.engine.salary.entity.datacollection.param; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; + +/** + * 其他免税扣除-其他 + *

Copyright: Copyright (c) 2024

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +//hrsa_other_derate_deduction +//其他免税扣除-其他 +public class OtherDerateDeductionSaveParam { + //主键id + private Long id; + + //主表数据Id + private Long mainId; + + //税款所属期 + private Date taxYearMonth; + + //人员 + private Long employeeId; + + //个税扣缴义务人 + private Long taxAgentId; + + //减免税额 + private String otherDeduction; + + //备注 + private String remark; +} diff --git a/src/com/engine/salary/entity/datacollection/po/OtherDeductionPO.java b/src/com/engine/salary/entity/datacollection/po/OtherDeductionPO.java index c602d6ede..82d83784c 100644 --- a/src/com/engine/salary/entity/datacollection/po/OtherDeductionPO.java +++ b/src/com/engine/salary/entity/datacollection/po/OtherDeductionPO.java @@ -142,5 +142,6 @@ public class OtherDeductionPO { private List grantDonationList; private List healthInsuranceList; private List otherDerateDeductionList; + private List personalPensionList; } \ No newline at end of file diff --git a/src/com/engine/salary/enums/datacollection/PersonalPensionVoucherTypeEnum.java b/src/com/engine/salary/enums/datacollection/PersonalPensionVoucherTypeEnum.java new file mode 100644 index 000000000..7646c3246 --- /dev/null +++ b/src/com/engine/salary/enums/datacollection/PersonalPensionVoucherTypeEnum.java @@ -0,0 +1,52 @@ +package com.engine.salary.enums.datacollection; + +import com.engine.salary.enums.BaseEnum; + +import java.util.Arrays; +import java.util.Optional; + +/** + * 个人养老金凭证类别 + *

Copyright: Copyright (c) 2024

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +public enum PersonalPensionVoucherTypeEnum implements BaseEnum { + YEAR(1, "月度", 173218), + MONTH(2, "年度", 157163); + + private int value; + + private String defaultLabel; + + private int labelId; + + PersonalPensionVoucherTypeEnum(int value, String defaultLabel, int labelId) { + this.value = value; + this.defaultLabel = defaultLabel; + this.labelId = labelId; + } + + public Integer getValue() { + return value; + } + + public String getDefaultLabel() { + return defaultLabel; + } + + public Integer getLabelId() { + return labelId; + } + + public static String getDefaultLabelByValue(Integer value) { + Optional optional = Arrays.stream(PersonalPensionVoucherTypeEnum.values()).filter(r -> Integer.valueOf(r.getValue()).equals(value)).findFirst(); + return optional.isPresent() ? optional.get().getDefaultLabel() : ""; + } + + public static PersonalPensionVoucherTypeEnum parseByValue(int value) { + return Arrays.stream(values()).filter(e -> e.getValue() == value).findFirst().orElse(null); + } +} diff --git a/src/com/engine/salary/mapper/datacollection/PersonalPensionMapper.java b/src/com/engine/salary/mapper/datacollection/PersonalPensionMapper.java new file mode 100644 index 000000000..08681c5ce --- /dev/null +++ b/src/com/engine/salary/mapper/datacollection/PersonalPensionMapper.java @@ -0,0 +1,73 @@ +package com.engine.salary.mapper.datacollection; + +import com.engine.salary.entity.datacollection.po.PersonalPensionPO; +import org.apache.ibatis.annotations.Param; + +import java.util.Collection; +import java.util.List; + +public interface PersonalPensionMapper { + + /** + * 查询所有记录 + * + * @return 返回集合,没有返回空List + */ + List listAll(); + + /** + * 条件查询 + * + * @return 返回集合,没有返回空List + */ + List listSome(PersonalPensionPO personalPension); + + + /** + * 根据主键查询 + * + * @param id 主键 + * @return 返回记录,没有返回null + */ + PersonalPensionPO getById(Long id); + + /** + * 新增,忽略null字段 + * + * @param personalPension 新增的记录 + * @return 返回影响行数 + */ + int insertIgnoreNull(PersonalPensionPO personalPension); + + + /** + * 修改,修改所有字段 + * + * @param personalPension 修改的记录 + * @return 返回影响行数 + */ + int update(PersonalPensionPO personalPension); + + /** + * 修改,忽略null字段 + * + * @param personalPension 修改的记录 + * @return 返回影响行数 + */ + int updateIgnoreNull(PersonalPensionPO personalPension); + + /** + * 删除记录 + * + * @param personalPension 待删除的记录 + * @return 返回影响行数 + */ + int delete(PersonalPensionPO personalPension); + + /** + * 批量删除记录 + * @param ids 主键id集合 + */ + void deleteByIds(@Param("ids") Collection ids); + +} \ No newline at end of file diff --git a/src/com/engine/salary/mapper/datacollection/PersonalPensionMapper.xml b/src/com/engine/salary/mapper/datacollection/PersonalPensionMapper.xml new file mode 100644 index 000000000..675af0871 --- /dev/null +++ b/src/com/engine/salary/mapper/datacollection/PersonalPensionMapper.xml @@ -0,0 +1,390 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + t + . + collect_source + , t.create_time + , t.creator + , t.data_source + , t.delete_type + , t.eb_data_id + , t.employee_id + , t.employee_type + , t.file_status + , t.id + , t.main_id + , t.pay_amount + , t.pay_month + , t.tax_agent_id + , t.tax_year_month + , t.tenant_key + , t.update_time + , t.voucher_no + , t.voucher_type + , t.voucher_type_name + + + + + + + + + + + + + + + INSERT INTO hrsa_personal_pension + + + + collect_source, + + + create_time, + + + creator, + + + data_source, + + + delete_type, + + + eb_data_id, + + + employee_id, + + + employee_type, + + + file_status, + + + id, + + + main_id, + + + pay_amount, + + + pay_month, + + + tax_agent_id, + + + tax_year_month, + + + tenant_key, + + + update_time, + + + voucher_no, + + + voucher_type, + + + voucher_type_name, + + + + + #{collectSource}, + + + #{createTime}, + + + #{creator}, + + + #{dataSource}, + + + #{deleteType}, + + + #{ebDataId}, + + + #{employeeId}, + + + #{employeeType}, + + + #{fileStatus}, + + + #{id}, + + + #{mainId}, + + + #{payAmount}, + + + #{payMonth}, + + + #{taxAgentId}, + + + #{taxYearMonth}, + + + #{tenantKey}, + + + #{updateTime}, + + + #{voucherNo}, + + + #{voucherType}, + + + #{voucherTypeName}, + + + + + + + + UPDATE hrsa_personal_pension + + collect_source=#{collectSource}, + create_time=#{createTime}, + creator=#{creator}, + data_source=#{dataSource}, + delete_type=#{deleteType}, + eb_data_id=#{ebDataId}, + employee_id=#{employeeId}, + employee_type=#{employeeType}, + file_status=#{fileStatus}, + main_id=#{mainId}, + pay_amount=#{payAmount}, + pay_month=#{payMonth}, + tax_agent_id=#{taxAgentId}, + tax_year_month=#{taxYearMonth}, + tenant_key=#{tenantKey}, + update_time=#{updateTime}, + voucher_no=#{voucherNo}, + voucher_type=#{voucherType}, + voucher_type_name=#{voucherTypeName}, + + WHERE id = #{id} AND delete_type = 0 + + + + + + UPDATE hrsa_personal_pension + + + collect_source=#{collectSource}, + + + create_time=#{createTime}, + + + creator=#{creator}, + + + data_source=#{dataSource}, + + + delete_type=#{deleteType}, + + + eb_data_id=#{ebDataId}, + + + employee_id=#{employeeId}, + + + employee_type=#{employeeType}, + + + file_status=#{fileStatus}, + + + main_id=#{mainId}, + + + pay_amount=#{payAmount}, + + + pay_month=#{payMonth}, + + + tax_agent_id=#{taxAgentId}, + + + tax_year_month=#{taxYearMonth}, + + + tenant_key=#{tenantKey}, + + + update_time=#{updateTime}, + + + voucher_no=#{voucherNo}, + + + voucher_type=#{voucherType}, + + + voucher_type_name=#{voucherTypeName}, + + + WHERE id = #{id} AND delete_type = 0 + + + + + + UPDATE hrsa_personal_pension + SET delete_type=1 + WHERE id = #{id} + AND delete_type = 0 + + + + UPDATE hrsa_personal_pension + SET delete_type = 1 + WHERE delete_type = 0 + AND id IN + + #{id} + + + + + \ No newline at end of file diff --git a/src/com/engine/salary/service/OtherDeductionService.java b/src/com/engine/salary/service/OtherDeductionService.java index 854286a0f..f2f8b2efa 100644 --- a/src/com/engine/salary/service/OtherDeductionService.java +++ b/src/com/engine/salary/service/OtherDeductionService.java @@ -47,15 +47,13 @@ public interface OtherDeductionService { /** * 导出 - * */ XSSFWorkbook export(OtherDeductionQueryParam queryParam); /** * 导出详情 - * */ - XSSFWorkbook exportDetail( OtherDeductionQueryParam queryParam); + XSSFWorkbook exportDetail(OtherDeductionQueryParam queryParam); /** * 下载导入模板 @@ -67,6 +65,7 @@ public interface OtherDeductionService { /** * 下载明细模板 + * * @param param * @return */ @@ -84,6 +83,7 @@ public interface OtherDeductionService { /** * 导入明细数据 + * * @param importParam * @return */ @@ -124,4 +124,17 @@ public interface OtherDeductionService { OtherDeductionRecordDTO getOtherDeduction(OtherDeductionParam otherDeductionParam); String extendToLastMonth(OtherDeductionExtendLastParam param); + + /** + * 保存免税收入 + * @param param + */ + void saveFreeIncome(FreeIncomeSaveParam param); +// void saveEndowmentInsurance(EndowmentInsuranceSaveParam param); +// void saveGrantDonation(GrantDonationSaveParam param); +// void saveHealthInsurance(HealthInsuranceSaveParam param); +// void saveOtherDerateDeduction(OtherDerateDeductionSaveParam param); +// void saveDerateDeduction(DerateDeductionSaveParam param); + + } diff --git a/src/com/engine/salary/service/impl/OtherDeductionServiceImpl.java b/src/com/engine/salary/service/impl/OtherDeductionServiceImpl.java index 5bdb007c8..c8d98a3f8 100644 --- a/src/com/engine/salary/service/impl/OtherDeductionServiceImpl.java +++ b/src/com/engine/salary/service/impl/OtherDeductionServiceImpl.java @@ -21,6 +21,7 @@ import com.engine.salary.entity.taxagent.po.TaxAgentPO; import com.engine.salary.enums.OperateTypeEnum; import com.engine.salary.enums.UserStatusEnum; import com.engine.salary.enums.datacollection.DataCollectionEmployeeTypeEnum; +import com.engine.salary.enums.sicategory.DeleteTypeEnum; import com.engine.salary.exception.SalaryRunTimeException; import com.engine.salary.mapper.datacollection.*; import com.engine.salary.mapper.sys.SalarySysConfMapper; @@ -1344,6 +1345,154 @@ public class OtherDeductionServiceImpl extends Service implements OtherDeduction IOUtils.closeQuietly(fileInputStream); } + + try { + fileInputStream = ImageFileManager.getInputStreamById(Integer.parseInt(imageId)); + + int successCount = 0; + int errorCount = 0; + + // 错误excel内容 + List errorData = new ArrayList<>(); + + List dtoList = ExcelParseHelper.parse2Map(fileInputStream, PersonalPensionListDTO.class, 6, 1, 9, "OtherDeductionTemplate.xlsx"); + for (int i = 0; i < dtoList.size(); i++) { + PersonalPensionListDTO dto = dtoList.get(i); + + Date now = new Date(); + //待插入数据库对象 + OtherDeductionPO mainPo = OtherDeductionPO.builder() + .declareMonth(declareMonth) + .freeIncomeList(new ArrayList<>()) + .derateDeductionList(new ArrayList<>()) + .endowmentInsuranceList(new ArrayList<>()) + .grantDonationList(new ArrayList<>()) + .healthInsuranceList(new ArrayList<>()) + .otherDerateDeductionList(new ArrayList<>()) + .createTime(now) + .updateTime(now) + .creator((long) user.getUID()) + .tenantKey(DEFAULT_TENANT_KEY) + .build(); + + PersonalPensionPO po = PersonalPensionPO.builder() + .taxYearMonth(declareMonth) + .fileStatus(1) + .creator((long) user.getUID()) + .createTime(now) + .updateTime(now) + .tenantKey(DEFAULT_TENANT_KEY) + .build(); + + //异常点数量 + int errorSum = 0; + + //行号 + String rowIndex = String.format("第%s行", i + 2); + + //相同的姓名 + String userName = dto.getUsername(); + String deparmentName = dto.getDepartmentName(); + String mobile = dto.getMobile(); + String workcode = dto.getJobNum(); + String idNo = dto.getIdNo(); + List employeeSameIds = new ArrayList<>(); + + //筛选导入人员信息可以在人力资源池中匹配到的人员信息 + List emps = getSalaryEmployeeService(user).matchImportEmployee(confValue, employees, userName, deparmentName, mobile, workcode, idNo, null); + //含在职和离职,选在职数据 + if (CollectionUtils.isNotEmpty(emps) && emps.size() > 1) { + employeeSameIds = emps.stream() + .filter(e -> UserStatusEnum.getNormalStatus().contains(e.getStatus())) + .map(DataCollectionEmployee::getEmployeeId) + .collect(Collectors.toList()); + } + if (CollectionUtils.isNotEmpty(emps) && emps.size() == 1) { + employeeSameIds = emps.stream() + .map(DataCollectionEmployee::getEmployeeId) + .collect(Collectors.toList()); + } + + //当人员信息导入筛选的全局配置为"0"时,姓名才是必填项 + if (StringUtils.isBlank(userName) && "0".equals(confValue)) { + //姓名 不能为空 + //错误消息对象 + Map errorMessageMap = Maps.newHashMap(); + errorMessageMap.put("message", rowIndex + "姓名不能为空"); + errorData.add(errorMessageMap); + errorSum += 1; + } else if (CollectionUtils.isEmpty(employeeSameIds) || employeeSameIds.size() > 1) { + Map errorMessageMap = Maps.newHashMap(); + errorMessageMap.put("message", rowIndex + "员工信息不存在或者存在多个员工"); + errorData.add(errorMessageMap); + errorSum += 1; + } else { + Long employeeId = CollectionUtils.isNotEmpty(employeeSameIds) && employeeSameIds.size() == 1 ? employeeSameIds.get(0) : null; + if (employeeId != null && employeeId > 0) { + mainPo.setEmployeeId(employeeId); + po.setEmployeeId(employeeId); + po.setEmployeeType(DataCollectionEmployeeTypeEnum.ORGANIZATION.getValue()); + } else { + //姓名错误,系统内不存在该姓名 + Map errorMessageMap = Maps.newHashMap(); + errorMessageMap.put("message", rowIndex + "姓名错误,系统内不存在该姓名"); + errorData.add(errorMessageMap); + errorSum += 1; + } + } + + + String taxAgentName = dto.getTaxAgentName(); + if (StringUtils.isBlank(taxAgentName)) { + //个税扣缴义务人不能为空 + Map errorMessageMap = Maps.newHashMap(); + errorMessageMap.put("message", rowIndex + "个税扣缴义务人不能为空"); + errorData.add(errorMessageMap); + errorSum += 1; + } else { + Optional optionalTemp = taxAgentList.stream().filter(m -> m.getTaxAgentName().equals(taxAgentName)).findFirst(); + if (optionalTemp.isPresent()) { + mainPo.setTaxAgentId(optionalTemp.get().getTaxAgentId()); + po.setTaxAgentId(optionalTemp.get().getTaxAgentId()); + } else { + //个税扣缴义务人不存在 + Map errorMessageMap = Maps.newHashMap(); + errorMessageMap.put("message", rowIndex + "个税扣缴义务人不存在或不在权限范围内"); + errorData.add(errorMessageMap); + errorSum += 1; + } + } + + po.setVoucherTypeName(dto.getVoucherTypeName()); + po.setVoucherNo(dto.getVoucherNo()); + po.setPayAmount(dto.getPayAmount()); + + + if (errorSum == 0) { + successCount += 1; + String key = mainPo.getTaxAgentId() + "-" + mainPo.getEmployeeId(); + Map deductionPOMap = SalaryEntityUtil.convert2Map(eligibleData, e -> e.getTaxAgentId() + "-" + e.getEmployeeId()); + if (deductionPOMap.containsKey(key)) { + deductionPOMap.get(key).getPersonalPensionList().add(po); + } else { + mainPo.getPersonalPensionList().add(po); + eligibleData.add(mainPo); + } + } else { + errorCount += 1; + } + } + + HashMap dataMap = new HashMap<>(); + dataMap.put("successCount", successCount); + dataMap.put("errorCount", errorCount); + dataMap.put("errorData", errorData); + apidatas.put("derateDeduction", dataMap); + + } finally { + IOUtils.closeQuietly(fileInputStream); + } + return apidatas; } @@ -2020,11 +2169,53 @@ public class OtherDeductionServiceImpl extends Service implements OtherDeduction map.put("减免税额", Arrays.asList(derateDeductionTitle)); List otherDerateDeductionTitle = Arrays.asList("姓名", "个税扣缴义务人", "部门", "手机号", "工号", "证件号码", "其他免税扣除金额", "备注"); map.put("其他", Arrays.asList(otherDerateDeductionTitle)); -// map.put("个人养老金", rowList); + List personalPensionTitle = Arrays.asList("姓名", "个税扣缴义务人", "部门", "手机号", "工号", "证件号码", "凭证类型", "凭证编码", "缴费金额"); + map.put("个人养老金", Arrays.asList(personalPensionTitle)); XSSFWorkbook book = ExcelUtil.genWorkbookV2(map); return book; } + + @Override + public void saveFreeIncome(FreeIncomeSaveParam param) { + Date now = new Date(); + + Long id = param.getId(); + if (id == null) { + FreeIncomePO po = FreeIncomePO.builder() + .id(id) + .mainId(param.getMainId()) + .taxYearMonth(param.getTaxYearMonth()) + .employeeId(param.getEmployeeId()) + .taxAgentId(param.getTaxAgentId()) + .freeItem(param.getFreeItem()) + .freeProperty(param.getFreeProperty()) + .freeAmount(param.getFreeAmount()) + .fileStatus(1) + .employeeType(0) + .createTime(now) + .updateTime(now) + .creator((long) user.getUID()) + .deleteType(DeleteTypeEnum.NOT_DELETED.getValue()) + .tenantKey(DEFAULT_TENANT_KEY) + .build(); + getFreeIncomeMapper().insertIgnoreNull(po); + } else { + FreeIncomePO po = getFreeIncomeMapper().getById(id); + + po.setTaxYearMonth(param.getTaxYearMonth()); + po.setEmployeeId(param.getEmployeeId()); + po.setTaxAgentId(param.getTaxAgentId()); + po.setFreeItem(param.getFreeItem()); + po.setFreeProperty(param.getFreeProperty()); + po.setFreeAmount(param.getFreeAmount()); + po.setEmployeeType(0); + po.setUpdateTime(now); + + getFreeIncomeMapper().updateIgnoreNull(po); + } + } + } From 412d3488d1c853bd4270ad1034a3baace6b67dd2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Tue, 24 Dec 2024 10:54:57 +0800 Subject: [PATCH 204/218] =?UTF-8?q?=E5=87=8F=E5=85=8D=E7=A8=8E=E9=A2=9D?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E5=92=8C=E4=BF=9D=E5=AD=98=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resource/sqlupgrade/DM/sql202412240103.sql | 10 ++++++ resource/sqlupgrade/GS/sql202412240103.sql | 10 ++++++ resource/sqlupgrade/JC/sql202412240103.sql | 10 ++++++ resource/sqlupgrade/Mysql/sql202412240103.sql | 3 ++ .../sqlupgrade/Oracle/sql202412240103.sql | 9 +++++ resource/sqlupgrade/PG/sql202412240103.sql | 3 ++ .../sqlupgrade/SQLServer/sql202412240103.sql | 5 +++ resource/sqlupgrade/ST/sql202412240103.sql | 10 ++++++ .../param/FreeIncomeSaveParam.java | 19 +++++------ .../param/OtherDeductionDetailQueryParam.java | 25 ++++++++++++++ .../datacollection/po/DerateDeductionPO.java | 4 +++ .../po/EndowmentInsurancePO.java | 4 +++ .../datacollection/po/FreeIncomePO.java | 4 +++ .../datacollection/po/GrantDonationPO.java | 4 +++ .../datacollection/po/HealthInsurancePO.java | 4 +++ .../po/OtherDerateDeductionPO.java | 4 +++ .../datacollection/po/PersonalPensionPO.java | 4 +++ .../salary/service/OtherDeductionService.java | 3 ++ .../impl/OtherDeductionServiceImpl.java | 30 +++++++++++++---- .../salary/web/OtherDeductionController.java | 33 +++++++++++++++---- .../salary/wrapper/OtherDeductionWrapper.java | 9 +++++ 21 files changed, 183 insertions(+), 24 deletions(-) create mode 100644 resource/sqlupgrade/DM/sql202412240103.sql create mode 100644 resource/sqlupgrade/GS/sql202412240103.sql create mode 100644 resource/sqlupgrade/JC/sql202412240103.sql create mode 100644 resource/sqlupgrade/Mysql/sql202412240103.sql create mode 100644 resource/sqlupgrade/Oracle/sql202412240103.sql create mode 100644 resource/sqlupgrade/PG/sql202412240103.sql create mode 100644 resource/sqlupgrade/SQLServer/sql202412240103.sql create mode 100644 resource/sqlupgrade/ST/sql202412240103.sql create mode 100644 src/com/engine/salary/entity/datacollection/param/OtherDeductionDetailQueryParam.java diff --git a/resource/sqlupgrade/DM/sql202412240103.sql b/resource/sqlupgrade/DM/sql202412240103.sql new file mode 100644 index 000000000..3762c4a0d --- /dev/null +++ b/resource/sqlupgrade/DM/sql202412240103.sql @@ -0,0 +1,10 @@ +ALTER TABLE hrsa_other_deduction ADD ( + free_income varchar2(255) NULL +); +/ + +ALTER TABLE hrsa_other_deduction ADD ( + derate_deduction varchar2(255) NULL +); +/ + diff --git a/resource/sqlupgrade/GS/sql202412240103.sql b/resource/sqlupgrade/GS/sql202412240103.sql new file mode 100644 index 000000000..3762c4a0d --- /dev/null +++ b/resource/sqlupgrade/GS/sql202412240103.sql @@ -0,0 +1,10 @@ +ALTER TABLE hrsa_other_deduction ADD ( + free_income varchar2(255) NULL +); +/ + +ALTER TABLE hrsa_other_deduction ADD ( + derate_deduction varchar2(255) NULL +); +/ + diff --git a/resource/sqlupgrade/JC/sql202412240103.sql b/resource/sqlupgrade/JC/sql202412240103.sql new file mode 100644 index 000000000..3762c4a0d --- /dev/null +++ b/resource/sqlupgrade/JC/sql202412240103.sql @@ -0,0 +1,10 @@ +ALTER TABLE hrsa_other_deduction ADD ( + free_income varchar2(255) NULL +); +/ + +ALTER TABLE hrsa_other_deduction ADD ( + derate_deduction varchar2(255) NULL +); +/ + diff --git a/resource/sqlupgrade/Mysql/sql202412240103.sql b/resource/sqlupgrade/Mysql/sql202412240103.sql new file mode 100644 index 000000000..fb1d84ef2 --- /dev/null +++ b/resource/sqlupgrade/Mysql/sql202412240103.sql @@ -0,0 +1,3 @@ +ALTER TABLE hrsa_other_deduction +ADD COLUMN free_income varchar(255) , +ADD COLUMN derate_deduction varchar(255) ; \ No newline at end of file diff --git a/resource/sqlupgrade/Oracle/sql202412240103.sql b/resource/sqlupgrade/Oracle/sql202412240103.sql new file mode 100644 index 000000000..ca85eff16 --- /dev/null +++ b/resource/sqlupgrade/Oracle/sql202412240103.sql @@ -0,0 +1,9 @@ +ALTER TABLE hrsa_other_deduction ADD ( + free_income varchar2(255) NULL +) +/ + +ALTER TABLE hrsa_other_deduction ADD ( + derate_deduction varchar2(255) NULL +) +/ \ No newline at end of file diff --git a/resource/sqlupgrade/PG/sql202412240103.sql b/resource/sqlupgrade/PG/sql202412240103.sql new file mode 100644 index 000000000..4820d7cee --- /dev/null +++ b/resource/sqlupgrade/PG/sql202412240103.sql @@ -0,0 +1,3 @@ +ALTER TABLE hrsa_other_deduction ADD COLUMN free_income varchar(255) NULL; + +ALTER TABLE hrsa_other_deduction ADD COLUMN derate_deduction varchar(255) NULL; \ No newline at end of file diff --git a/resource/sqlupgrade/SQLServer/sql202412240103.sql b/resource/sqlupgrade/SQLServer/sql202412240103.sql new file mode 100644 index 000000000..cfb59073c --- /dev/null +++ b/resource/sqlupgrade/SQLServer/sql202412240103.sql @@ -0,0 +1,5 @@ +ALTER TABLE hrsa_other_deduction ADD free_income varchar(255) NULL +GO + +ALTER TABLE hrsa_other_deduction ADD derate_deduction varchar(255) NULL +GO \ No newline at end of file diff --git a/resource/sqlupgrade/ST/sql202412240103.sql b/resource/sqlupgrade/ST/sql202412240103.sql new file mode 100644 index 000000000..3762c4a0d --- /dev/null +++ b/resource/sqlupgrade/ST/sql202412240103.sql @@ -0,0 +1,10 @@ +ALTER TABLE hrsa_other_deduction ADD ( + free_income varchar2(255) NULL +); +/ + +ALTER TABLE hrsa_other_deduction ADD ( + derate_deduction varchar2(255) NULL +); +/ + diff --git a/src/com/engine/salary/entity/datacollection/param/FreeIncomeSaveParam.java b/src/com/engine/salary/entity/datacollection/param/FreeIncomeSaveParam.java index 70e05f6bc..c75354b73 100644 --- a/src/com/engine/salary/entity/datacollection/param/FreeIncomeSaveParam.java +++ b/src/com/engine/salary/entity/datacollection/param/FreeIncomeSaveParam.java @@ -5,8 +5,6 @@ import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; -import java.util.Date; - /** * 其他免税扣除-免税收入表单 *

Copyright: Copyright (c) 2024

@@ -28,14 +26,15 @@ public class FreeIncomeSaveParam { //主表数据Id private Long mainId; - //税款所属期 - private Date taxYearMonth; - - //人员 - private Long employeeId; - - //个税扣缴义务人 - private Long taxAgentId; +// //税款所属期 +// @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") +// private Date taxYearMonth; +// +// //人员 +// private Long employeeId; +// +// //个税扣缴义务人 +// private Long taxAgentId; //免税事项 private String freeItem; diff --git a/src/com/engine/salary/entity/datacollection/param/OtherDeductionDetailQueryParam.java b/src/com/engine/salary/entity/datacollection/param/OtherDeductionDetailQueryParam.java new file mode 100644 index 000000000..c01fc3edd --- /dev/null +++ b/src/com/engine/salary/entity/datacollection/param/OtherDeductionDetailQueryParam.java @@ -0,0 +1,25 @@ +package com.engine.salary.entity.datacollection.param; + +import com.engine.salary.common.BaseQueryParam; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 其他免税扣除,附表查询列表 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class OtherDeductionDetailQueryParam extends BaseQueryParam { + + private Long id; + +} diff --git a/src/com/engine/salary/entity/datacollection/po/DerateDeductionPO.java b/src/com/engine/salary/entity/datacollection/po/DerateDeductionPO.java index d27f93e59..5d94d3627 100644 --- a/src/com/engine/salary/entity/datacollection/po/DerateDeductionPO.java +++ b/src/com/engine/salary/entity/datacollection/po/DerateDeductionPO.java @@ -8,6 +8,7 @@ import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; +import java.util.Collection; import java.util.Date; /** @@ -74,4 +75,7 @@ public class DerateDeductionPO{ @ElogTransform(name = "租户key", ignore = true) private String tenantKey; + + //主键id + private Collection ids; } diff --git a/src/com/engine/salary/entity/datacollection/po/EndowmentInsurancePO.java b/src/com/engine/salary/entity/datacollection/po/EndowmentInsurancePO.java index 1688dbcf9..9bb444ebe 100644 --- a/src/com/engine/salary/entity/datacollection/po/EndowmentInsurancePO.java +++ b/src/com/engine/salary/entity/datacollection/po/EndowmentInsurancePO.java @@ -7,6 +7,7 @@ import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; +import java.util.Collection; import java.util.Date; /** @@ -83,4 +84,7 @@ public class EndowmentInsurancePO { @ElogTransform(name = "租户key", ignore = true) private String tenantKey; + //主键id + private Collection ids; + } diff --git a/src/com/engine/salary/entity/datacollection/po/FreeIncomePO.java b/src/com/engine/salary/entity/datacollection/po/FreeIncomePO.java index cd017fa54..085b7f751 100644 --- a/src/com/engine/salary/entity/datacollection/po/FreeIncomePO.java +++ b/src/com/engine/salary/entity/datacollection/po/FreeIncomePO.java @@ -7,6 +7,7 @@ import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; +import java.util.Collection; import java.util.Date; /** @@ -73,4 +74,7 @@ public class FreeIncomePO { @ElogTransform(name = "租户key", ignore = true) private String tenantKey; + + //主键id + private Collection ids; } diff --git a/src/com/engine/salary/entity/datacollection/po/GrantDonationPO.java b/src/com/engine/salary/entity/datacollection/po/GrantDonationPO.java index d85239da4..f65f73caa 100644 --- a/src/com/engine/salary/entity/datacollection/po/GrantDonationPO.java +++ b/src/com/engine/salary/entity/datacollection/po/GrantDonationPO.java @@ -7,6 +7,7 @@ import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; +import java.util.Collection; import java.util.Date; /** @@ -84,4 +85,7 @@ public class GrantDonationPO { @ElogTransform(name = "租户key", ignore = true) private String tenantKey; + //主键id + private Collection ids; + } diff --git a/src/com/engine/salary/entity/datacollection/po/HealthInsurancePO.java b/src/com/engine/salary/entity/datacollection/po/HealthInsurancePO.java index c27dc5061..86152ffef 100644 --- a/src/com/engine/salary/entity/datacollection/po/HealthInsurancePO.java +++ b/src/com/engine/salary/entity/datacollection/po/HealthInsurancePO.java @@ -7,6 +7,7 @@ import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; +import java.util.Collection; import java.util.Date; /** @@ -78,4 +79,7 @@ public class HealthInsurancePO { @ElogTransform(name = "租户key", ignore = true) private String tenantKey; + + //主键id + private Collection ids; } diff --git a/src/com/engine/salary/entity/datacollection/po/OtherDerateDeductionPO.java b/src/com/engine/salary/entity/datacollection/po/OtherDerateDeductionPO.java index 2396dd973..74f403bab 100644 --- a/src/com/engine/salary/entity/datacollection/po/OtherDerateDeductionPO.java +++ b/src/com/engine/salary/entity/datacollection/po/OtherDerateDeductionPO.java @@ -7,6 +7,7 @@ import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; +import java.util.Collection; import java.util.Date; /** @@ -70,4 +71,7 @@ public class OtherDerateDeductionPO { @ElogTransform(name = "租户key", ignore = true) private String tenantKey; + + //主键id + private Collection ids; } diff --git a/src/com/engine/salary/entity/datacollection/po/PersonalPensionPO.java b/src/com/engine/salary/entity/datacollection/po/PersonalPensionPO.java index 6af983b1f..8732c4af5 100644 --- a/src/com/engine/salary/entity/datacollection/po/PersonalPensionPO.java +++ b/src/com/engine/salary/entity/datacollection/po/PersonalPensionPO.java @@ -8,6 +8,7 @@ import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; +import java.util.Collection; import java.util.Date; /** @@ -89,4 +90,7 @@ public class PersonalPensionPO{ @ElogTransform(name = "租户key", ignore = true) private String tenantKey; + + //主键id + private Collection ids; } diff --git a/src/com/engine/salary/service/OtherDeductionService.java b/src/com/engine/salary/service/OtherDeductionService.java index f2f8b2efa..9b7875f76 100644 --- a/src/com/engine/salary/service/OtherDeductionService.java +++ b/src/com/engine/salary/service/OtherDeductionService.java @@ -1,5 +1,6 @@ package com.engine.salary.service; +import com.engine.salary.entity.datacollection.dto.FreeIncomeListDTO; import com.engine.salary.entity.datacollection.dto.OtherDeductionListDTO; import com.engine.salary.entity.datacollection.dto.OtherDeductionRecordDTO; import com.engine.salary.entity.datacollection.param.*; @@ -125,6 +126,8 @@ public interface OtherDeductionService { String extendToLastMonth(OtherDeductionExtendLastParam param); + PageInfo freeIncomeList(OtherDeductionDetailQueryParam param); + /** * 保存免税收入 * @param param diff --git a/src/com/engine/salary/service/impl/OtherDeductionServiceImpl.java b/src/com/engine/salary/service/impl/OtherDeductionServiceImpl.java index c8d98a3f8..62eb03d76 100644 --- a/src/com/engine/salary/service/impl/OtherDeductionServiceImpl.java +++ b/src/com/engine/salary/service/impl/OtherDeductionServiceImpl.java @@ -51,6 +51,7 @@ import org.apache.commons.lang3.Validate; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.util.IOUtils; import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import org.springframework.beans.BeanUtils; import weaver.file.ImageFileManager; import weaver.general.Util; import weaver.hrm.User; @@ -2182,14 +2183,17 @@ public class OtherDeductionServiceImpl extends Service implements OtherDeduction public void saveFreeIncome(FreeIncomeSaveParam param) { Date now = new Date(); + Long mainId = param.getMainId(); + OtherDeductionPO deductionPO = getOtherDeductionMapper().getById(mainId); + Long id = param.getId(); if (id == null) { FreeIncomePO po = FreeIncomePO.builder() .id(id) - .mainId(param.getMainId()) - .taxYearMonth(param.getTaxYearMonth()) - .employeeId(param.getEmployeeId()) - .taxAgentId(param.getTaxAgentId()) + .mainId(mainId) + .taxYearMonth(deductionPO.getDeclareMonth()) + .employeeId(deductionPO.getEmployeeId()) + .taxAgentId(deductionPO.getTaxAgentId()) .freeItem(param.getFreeItem()) .freeProperty(param.getFreeProperty()) .freeAmount(param.getFreeAmount()) @@ -2205,9 +2209,9 @@ public class OtherDeductionServiceImpl extends Service implements OtherDeduction } else { FreeIncomePO po = getFreeIncomeMapper().getById(id); - po.setTaxYearMonth(param.getTaxYearMonth()); - po.setEmployeeId(param.getEmployeeId()); - po.setTaxAgentId(param.getTaxAgentId()); +// po.setTaxYearMonth(param.getTaxYearMonth()); +// po.setEmployeeId(param.getEmployeeId()); +// po.setTaxAgentId(param.getTaxAgentId()); po.setFreeItem(param.getFreeItem()); po.setFreeProperty(param.getFreeProperty()); po.setFreeAmount(param.getFreeAmount()); @@ -2218,4 +2222,16 @@ public class OtherDeductionServiceImpl extends Service implements OtherDeduction } } + @Override + public PageInfo freeIncomeList(OtherDeductionDetailQueryParam param) { + + List freeIncomePOS = getFreeIncomeMapper().listSome(FreeIncomePO.builder().mainId(param.getId()).build()); + List listDTOS = freeIncomePOS.stream().map(po -> { + FreeIncomeListDTO freeIncomeListDTO = new FreeIncomeListDTO(); + BeanUtils.copyProperties(po, freeIncomeListDTO); + return freeIncomeListDTO; + }).collect(Collectors.toList()); + return SalaryPageUtil.buildPage(param.getCurrent(), param.getPageSize(), listDTOS, FreeIncomeListDTO.class); + } + } diff --git a/src/com/engine/salary/web/OtherDeductionController.java b/src/com/engine/salary/web/OtherDeductionController.java index 251507f68..f041392ee 100644 --- a/src/com/engine/salary/web/OtherDeductionController.java +++ b/src/com/engine/salary/web/OtherDeductionController.java @@ -1,6 +1,7 @@ package com.engine.salary.web; import com.engine.common.util.ServiceUtil; +import com.engine.salary.entity.datacollection.dto.FreeIncomeListDTO; import com.engine.salary.entity.datacollection.dto.OtherDeductionListDTO; import com.engine.salary.entity.datacollection.dto.OtherDeductionRecordDTO; import com.engine.salary.entity.datacollection.param.*; @@ -279,8 +280,8 @@ public class OtherDeductionController { } /** - * @description 编辑其他免税扣除 * @return String + * @description 编辑其他免税扣除 * @author Harryxzy * @date 2022/10/26 9:41 */ @@ -293,8 +294,8 @@ public class OtherDeductionController { } /** - * @description 获取其他免税扣除数据 * @return String + * @description 获取其他免税扣除数据 * @author Harryxzy * @date 2022/10/31 13:42 */ @@ -307,8 +308,8 @@ public class OtherDeductionController { } /** - * @description 新建其他免税扣除 * @return String + * @description 新建其他免税扣除 * @author Harryxzy * @date 2022/10/27 14:41 */ @@ -321,8 +322,8 @@ public class OtherDeductionController { } /** - * @description 删除所选其他免税扣除 * @return String + * @description 删除所选其他免税扣除 * @author Harryxzy * @date 2022/10/27 14:41 */ @@ -335,8 +336,8 @@ public class OtherDeductionController { } /** - * @description 一键清空其他免税扣除 * @return null + * @description 一键清空其他免税扣除 * @author Harryxzy * @date 2022/10/27 15:15 */ @@ -351,9 +352,27 @@ public class OtherDeductionController { @POST @Path("/extendToLastMonth") @Produces(MediaType.APPLICATION_JSON) - public String extendToLastMonth(@Context HttpServletRequest request, @Context HttpServletResponse response, - @RequestBody OtherDeductionExtendLastParam param) { + public String extendToLastMonth(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody OtherDeductionExtendLastParam param) { User user = HrmUserVarify.getUser(request, response); return new ResponseResult(user).run(getOtherDeductionWrapper(user)::extendToLastMonth, param); } + + //减免税额列表 + @POST + @Path("/freeIncomeList") + @Produces(MediaType.APPLICATION_JSON) + public String detailList(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody OtherDeductionDetailQueryParam param) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult>(user).run(getOtherDeductionWrapper(user)::freeIncomeList, param); + } + + @POST + @Path("/saveFreeIncome") + @Produces(MediaType.APPLICATION_JSON) + public String saveFreeIncome(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody FreeIncomeSaveParam param) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getOtherDeductionWrapper(user)::saveFreeIncome, param); + } + + } diff --git a/src/com/engine/salary/wrapper/OtherDeductionWrapper.java b/src/com/engine/salary/wrapper/OtherDeductionWrapper.java index f8a261828..d8e87a630 100644 --- a/src/com/engine/salary/wrapper/OtherDeductionWrapper.java +++ b/src/com/engine/salary/wrapper/OtherDeductionWrapper.java @@ -6,6 +6,7 @@ import com.api.browser.util.ConditionFactory; import com.api.browser.util.ConditionType; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; +import com.engine.salary.entity.datacollection.dto.FreeIncomeListDTO; import com.engine.salary.entity.datacollection.dto.OtherDeductionListDTO; import com.engine.salary.entity.datacollection.dto.OtherDeductionRecordDTO; import com.engine.salary.entity.datacollection.param.*; @@ -288,4 +289,12 @@ public class OtherDeductionWrapper extends Service { param.setYearMonthTime(localDate); return getOtherDeductionService(user).extendToLastMonth(param); } + + public PageInfo freeIncomeList(OtherDeductionDetailQueryParam param) { + return getOtherDeductionService(user).freeIncomeList(param); + } + + public void saveFreeIncome(FreeIncomeSaveParam param) { + getOtherDeductionService(user).saveFreeIncome(param); + } } From bbb02bcd81819b8c86aea1140d985b40c87ba752 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Tue, 24 Dec 2024 15:39:58 +0800 Subject: [PATCH 205/218] =?UTF-8?q?fix=20=E6=8A=A5=E8=A1=A8=E6=8C=89?= =?UTF-8?q?=E7=85=A7=E5=88=86=E9=83=A8=E7=BB=B4=E5=BA=A6=E9=94=99=E8=AF=AF?= =?UTF-8?q?=20fix=20=E8=B0=83=E8=96=AA=E8=AE=B0=E5=BD=95=E5=AF=BC=E5=85=A5?= =?UTF-8?q?=E7=94=9F=E6=95=88=E6=97=A5=E6=9C=9F=E6=A0=BC=E5=BC=8F=E9=94=99?= =?UTF-8?q?=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/SalaryStatisticsReportServiceImpl.java | 2 +- .../salary/service/impl/SalaryArchiveItemServiceImpl.java | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/com/engine/salary/report/service/impl/SalaryStatisticsReportServiceImpl.java b/src/com/engine/salary/report/service/impl/SalaryStatisticsReportServiceImpl.java index 5ee5edea8..2b62276cd 100644 --- a/src/com/engine/salary/report/service/impl/SalaryStatisticsReportServiceImpl.java +++ b/src/com/engine/salary/report/service/impl/SalaryStatisticsReportServiceImpl.java @@ -818,7 +818,7 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary data.getList().forEach(employee -> { if (employee.getSubcompanyId() != null && employee.getSubcompanyId() != null) { subComIdNameMap.put(employee.getSubcompanyId(), employee.getSubcompanyName()); - subComIds.add(employee.getDepartmentId()); + subComIds.add(employee.getSubcompanyId()); empIdSubComMap.put(employee.getEmployeeId(), employee.getSubcompanyId()); } }); diff --git a/src/com/engine/salary/service/impl/SalaryArchiveItemServiceImpl.java b/src/com/engine/salary/service/impl/SalaryArchiveItemServiceImpl.java index 431b56170..9e353083e 100644 --- a/src/com/engine/salary/service/impl/SalaryArchiveItemServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryArchiveItemServiceImpl.java @@ -29,6 +29,7 @@ import com.engine.salary.mapper.archive.SalaryArchiveItemMapper; import com.engine.salary.mapper.salaryitem.SalaryItemMapper; import com.engine.salary.service.*; import com.engine.salary.sys.entity.vo.UploadConfigResponse; +import com.engine.salary.util.SalaryDateUtil; import com.engine.salary.util.SalaryEntityUtil; import com.engine.salary.util.SalaryI18nUtil; import com.engine.salary.util.SalaryLoggerUtil; @@ -41,6 +42,7 @@ import com.google.common.collect.Lists; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; +import org.apache.commons.lang3.math.NumberUtils; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import weaver.hrm.User; @@ -706,7 +708,7 @@ public class SalaryArchiveItemServiceImpl extends Service implements SalaryArchi String userstatus = queryParam.getUserstatus(); r.setUsername(employee.getUsername()); r.setDepartmentName(employee.getDepartmentName()); - r.setEmployeeStatus(UserStatusEnum.getDefaultLabelByValue(Integer.parseInt(employee.getStatus()))); + r.setEmployeeStatus(UserStatusEnum.getDefaultLabelByValue(Integer.parseInt(NumberUtils.isCreatable(employee.getStatus()) ? employee.getStatus() : "-1"))); r.setAdjustReason(SalaryArchiveItemAdjustReasonEnum.getDefaultLabelByValue(r.getAdjustReason())); return (StringUtils.isBlank(username) || employee.getUsername().contains(username)) && (CollectionUtils.isEmpty(departmentIds) || departmentIds.contains(employee.getDepartmentId())) @@ -739,7 +741,7 @@ public class SalaryArchiveItemServiceImpl extends Service implements SalaryArchi row.add(dto.getAdjustBefore()); row.add(dto.getAdjustAfter()); row.add(dto.getAdjustReason()); - row.add(dto.getEffectiveTime() + ""); + row.add(SalaryDateUtil.getFormatDate(dto.getEffectiveTime())); row.add(dto.getOperator()); row.add(format.format(dto.getOperateTime())); row.add(dto.getDescription()); From 9c99e53288036c20193cd7beb3fc4ebf861e1ebe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Tue, 24 Dec 2024 15:52:36 +0800 Subject: [PATCH 206/218] =?UTF-8?q?=E5=88=97=E8=A1=A8=E5=92=8C=E4=BF=9D?= =?UTF-8?q?=E5=AD=98=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../param/PersonalPensionSaveParam.java | 74 ++++ .../salary/service/OtherDeductionService.java | 21 +- .../impl/OtherDeductionServiceImpl.java | 394 +++++++++++++++++- 3 files changed, 460 insertions(+), 29 deletions(-) create mode 100644 src/com/engine/salary/entity/datacollection/param/PersonalPensionSaveParam.java diff --git a/src/com/engine/salary/entity/datacollection/param/PersonalPensionSaveParam.java b/src/com/engine/salary/entity/datacollection/param/PersonalPensionSaveParam.java new file mode 100644 index 000000000..814206dae --- /dev/null +++ b/src/com/engine/salary/entity/datacollection/param/PersonalPensionSaveParam.java @@ -0,0 +1,74 @@ +package com.engine.salary.entity.datacollection.param; + +import com.engine.salary.enums.datacollection.DataCollectionEmployeeTypeEnum; +import com.engine.salary.enums.datacollection.EnumDeductionDataSource; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; + +/** + * 其他免税扣除-个人养老金 + *

Copyright: Copyright (c) 2024

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +//hrsa_personal_pension +//其他免税扣除-个人养老金 +public class PersonalPensionSaveParam { + + //主键id + private Long id; + + //主表数据Id + private Long mainId; + + //税款所属期 + private Date taxYearMonth; + + //缴费月度 + private Date payMonth; + + //人员 + private Long employeeId; + + //个税扣缴义务人 + private Long taxAgentId; + + //凭证类别 + private Integer voucherType; + + //凭证类别名称 + private String voucherTypeName; + + //凭证编码 + private String voucherNo; + + //缴费金额 + private String payAmount; + + + /** + * 人员类型 + * @see DataCollectionEmployeeTypeEnum + */ + private Integer employeeType; + + /** + * 数据来源 + * @see EnumDeductionDataSource + */ + private Integer dataSource; + + //采集来源 + private String collectSource; + +} diff --git a/src/com/engine/salary/service/OtherDeductionService.java b/src/com/engine/salary/service/OtherDeductionService.java index 9b7875f76..21307f57b 100644 --- a/src/com/engine/salary/service/OtherDeductionService.java +++ b/src/com/engine/salary/service/OtherDeductionService.java @@ -1,8 +1,6 @@ package com.engine.salary.service; -import com.engine.salary.entity.datacollection.dto.FreeIncomeListDTO; -import com.engine.salary.entity.datacollection.dto.OtherDeductionListDTO; -import com.engine.salary.entity.datacollection.dto.OtherDeductionRecordDTO; +import com.engine.salary.entity.datacollection.dto.*; import com.engine.salary.entity.datacollection.param.*; import com.engine.salary.entity.datacollection.po.OtherDeductionPO; import com.engine.salary.util.page.PageInfo; @@ -127,17 +125,24 @@ public interface OtherDeductionService { String extendToLastMonth(OtherDeductionExtendLastParam param); PageInfo freeIncomeList(OtherDeductionDetailQueryParam param); + PageInfo derateDeductionListDTOList(OtherDeductionDetailQueryParam param); + PageInfo endowmentInsuranceListDTOList(OtherDeductionDetailQueryParam param); + PageInfo grantDonationListDTOList(OtherDeductionDetailQueryParam param); + PageInfo healthInsuranceListDTOList(OtherDeductionDetailQueryParam param); + PageInfo otherDerateDeductionListDTOList(OtherDeductionDetailQueryParam param); + PageInfo personalPensionListDTOList(OtherDeductionDetailQueryParam param); /** * 保存免税收入 * @param param */ void saveFreeIncome(FreeIncomeSaveParam param); -// void saveEndowmentInsurance(EndowmentInsuranceSaveParam param); -// void saveGrantDonation(GrantDonationSaveParam param); -// void saveHealthInsurance(HealthInsuranceSaveParam param); -// void saveOtherDerateDeduction(OtherDerateDeductionSaveParam param); -// void saveDerateDeduction(DerateDeductionSaveParam param); + void saveEndowmentInsurance(EndowmentInsuranceSaveParam param); + void saveGrantDonation(GrantDonationSaveParam param); + void saveHealthInsurance(HealthInsuranceSaveParam param); + void saveOtherDerateDeduction(OtherDerateDeductionSaveParam param); + void saveDerateDeduction(DerateDeductionSaveParam param); + void savePersonalPension(PersonalPensionSaveParam param); } diff --git a/src/com/engine/salary/service/impl/OtherDeductionServiceImpl.java b/src/com/engine/salary/service/impl/OtherDeductionServiceImpl.java index 62eb03d76..f4555c9a3 100644 --- a/src/com/engine/salary/service/impl/OtherDeductionServiceImpl.java +++ b/src/com/engine/salary/service/impl/OtherDeductionServiceImpl.java @@ -124,6 +124,10 @@ public class OtherDeductionServiceImpl extends Service implements OtherDeduction return MapperProxyFactory.getProxy(OtherDerateDeductionMapper.class); } + private PersonalPensionMapper getPersonalPensionMapper() { + return MapperProxyFactory.getProxy(PersonalPensionMapper.class); + } + @Override public OtherDeductionPO getById(Long id) { @@ -1164,13 +1168,9 @@ public class OtherDeductionServiceImpl extends Service implements OtherDeduction } } - String derateAmount = dto.getDerateAmount(); - String derateItem = dto.getDerateItem(); - String derateProperty = dto.getDerateProperty(); - po.setDerateAmount(derateAmount); - po.setDerateItem(derateItem); - po.setDerateProperty(derateProperty); - + po.setDerateAmount(dto.getDerateAmount()); + po.setDerateItem(dto.getDerateItem()); + po.setDerateProperty(dto.getDerateProperty()); if (errorSum == 0) { successCount += 1; @@ -2178,13 +2178,94 @@ public class OtherDeductionServiceImpl extends Service implements OtherDeduction return book; } + @Override + public PageInfo freeIncomeList(OtherDeductionDetailQueryParam param) { + + List freeIncomePOS = getFreeIncomeMapper().listSome(FreeIncomePO.builder().mainId(param.getId()).build()); + List listDTOS = freeIncomePOS.stream().map(po -> { + FreeIncomeListDTO freeIncomeListDTO = new FreeIncomeListDTO(); + BeanUtils.copyProperties(po, freeIncomeListDTO); + return freeIncomeListDTO; + }).collect(Collectors.toList()); + return SalaryPageUtil.buildPage(param.getCurrent(), param.getPageSize(), listDTOS, FreeIncomeListDTO.class); + } + + @Override + public PageInfo derateDeductionListDTOList(OtherDeductionDetailQueryParam param) { + List pos = getDerateDeductionMapper().listSome(DerateDeductionPO.builder().mainId(param.getId()).build()); + List listDTOS = pos.stream().map(po -> { + DerateDeductionListDTO dtos = new DerateDeductionListDTO(); + BeanUtils.copyProperties(po, dtos); + return dtos; + }).collect(Collectors.toList()); + return SalaryPageUtil.buildPage(param.getCurrent(), param.getPageSize(), listDTOS, DerateDeductionListDTO.class); + } + + @Override + public PageInfo endowmentInsuranceListDTOList(OtherDeductionDetailQueryParam param) { + List pos = getEndowmentInsuranceMapper().listSome(EndowmentInsurancePO.builder().mainId(param.getId()).build()); + List listDTOS = pos.stream().map(po -> { + EndowmentInsuranceListDTO dtos = new EndowmentInsuranceListDTO(); + BeanUtils.copyProperties(po, dtos); + return dtos; + }).collect(Collectors.toList()); + return SalaryPageUtil.buildPage(param.getCurrent(), param.getPageSize(), listDTOS, EndowmentInsuranceListDTO.class); + } + + @Override + public PageInfo grantDonationListDTOList(OtherDeductionDetailQueryParam param) { + List pos = getGrantDonationMapper().listSome(GrantDonationPO.builder().mainId(param.getId()).build()); + List listDTOS = pos.stream().map(po -> { + GrantDonationListDTO dtos = new GrantDonationListDTO(); + BeanUtils.copyProperties(po, dtos); + return dtos; + }).collect(Collectors.toList()); + return SalaryPageUtil.buildPage(param.getCurrent(), param.getPageSize(), listDTOS, GrantDonationListDTO.class); + } + + @Override + public PageInfo healthInsuranceListDTOList(OtherDeductionDetailQueryParam param) { + List pos = getHealthInsuranceMapper().listSome(HealthInsurancePO.builder().mainId(param.getId()).build()); + List listDTOS = pos.stream().map(po -> { + HealthInsuranceListDTO dtos = new HealthInsuranceListDTO(); + BeanUtils.copyProperties(po, dtos); + return dtos; + }).collect(Collectors.toList()); + return SalaryPageUtil.buildPage(param.getCurrent(), param.getPageSize(), listDTOS, HealthInsuranceListDTO.class); + } + + @Override + public PageInfo otherDerateDeductionListDTOList(OtherDeductionDetailQueryParam param) { + List pos = getOtherDerateDeductionMapper().listSome(OtherDerateDeductionPO.builder().mainId(param.getId()).build()); + List listDTOS = pos.stream().map(po -> { + OtherDerateDeductionListDTO dtos = new OtherDerateDeductionListDTO(); + BeanUtils.copyProperties(po, dtos); + return dtos; + }).collect(Collectors.toList()); + return SalaryPageUtil.buildPage(param.getCurrent(), param.getPageSize(), listDTOS, OtherDerateDeductionListDTO.class); + } + + @Override + public PageInfo personalPensionListDTOList(OtherDeductionDetailQueryParam param) { + List pos = getFreeIncomeMapper().listSome(FreeIncomePO.builder().mainId(param.getId()).build()); + List listDTOS = pos.stream().map(po -> { + PersonalPensionListDTO dtos = new PersonalPensionListDTO(); + BeanUtils.copyProperties(po, dtos); + return dtos; + }).collect(Collectors.toList()); + return SalaryPageUtil.buildPage(param.getCurrent(), param.getPageSize(), listDTOS, PersonalPensionListDTO.class); + } + @Override public void saveFreeIncome(FreeIncomeSaveParam param) { Date now = new Date(); Long mainId = param.getMainId(); - OtherDeductionPO deductionPO = getOtherDeductionMapper().getById(mainId); + OtherDeductionPO deductionPO = getById(mainId); + if (deductionPO == null) { + throw new SalaryRunTimeException("主表不存在!"); + } Long id = param.getId(); if (id == null) { @@ -2208,30 +2289,301 @@ public class OtherDeductionServiceImpl extends Service implements OtherDeduction getFreeIncomeMapper().insertIgnoreNull(po); } else { FreeIncomePO po = getFreeIncomeMapper().getById(id); + if (po == null){ + throw new SalaryRunTimeException("记录不存在!"); + } -// po.setTaxYearMonth(param.getTaxYearMonth()); -// po.setEmployeeId(param.getEmployeeId()); -// po.setTaxAgentId(param.getTaxAgentId()); + po.setUpdateTime(now); po.setFreeItem(param.getFreeItem()); po.setFreeProperty(param.getFreeProperty()); po.setFreeAmount(param.getFreeAmount()); - po.setEmployeeType(0); - po.setUpdateTime(now); getFreeIncomeMapper().updateIgnoreNull(po); } } @Override - public PageInfo freeIncomeList(OtherDeductionDetailQueryParam param) { + public void saveEndowmentInsurance(EndowmentInsuranceSaveParam param) { + Date now = new Date(); - List freeIncomePOS = getFreeIncomeMapper().listSome(FreeIncomePO.builder().mainId(param.getId()).build()); - List listDTOS = freeIncomePOS.stream().map(po -> { - FreeIncomeListDTO freeIncomeListDTO = new FreeIncomeListDTO(); - BeanUtils.copyProperties(po, freeIncomeListDTO); - return freeIncomeListDTO; - }).collect(Collectors.toList()); - return SalaryPageUtil.buildPage(param.getCurrent(), param.getPageSize(), listDTOS, FreeIncomeListDTO.class); + Long mainId = param.getMainId(); + OtherDeductionPO deductionPO = getById(mainId); + if (deductionPO == null) { + throw new SalaryRunTimeException("主表不存在!"); + } + + Long id = param.getId(); + if (id == null) { + EndowmentInsurancePO po = EndowmentInsurancePO.builder() + .id(id) + .mainId(mainId) + .taxYearMonth(deductionPO.getDeclareMonth()) + .employeeId(deductionPO.getEmployeeId()) + .taxAgentId(deductionPO.getTaxAgentId()) + .accountNumber(param.getAccountNumber()) + .checkCode(param.getCheckCode()) + .yearPremium(param.getYearPremium()) + .monthPremium(param.getMonthPremium()) + .currentDeduction(param.getCurrentDeduction()) + .fileStatus(1) + .employeeType(0) + .createTime(now) + .updateTime(now) + .creator((long) user.getUID()) + .deleteType(DeleteTypeEnum.NOT_DELETED.getValue()) + .tenantKey(DEFAULT_TENANT_KEY) + .build(); + getEndowmentInsuranceMapper().insertIgnoreNull(po); + } else { + EndowmentInsurancePO po = getEndowmentInsuranceMapper().getById(id); + if (po == null){ + throw new SalaryRunTimeException("记录不存在!"); + } + + po.setUpdateTime(now); + po.setAccountNumber(param.getAccountNumber()); + po.setCheckCode(param.getCheckCode()); + po.setYearPremium(param.getYearPremium()); + po.setMonthPremium(param.getMonthPremium()); + po.setCurrentDeduction(param.getCurrentDeduction()); + + getEndowmentInsuranceMapper().updateIgnoreNull(po); + } + } + + @Override + public void saveGrantDonation(GrantDonationSaveParam param) { + Date now = new Date(); + + Long mainId = param.getMainId(); + OtherDeductionPO deductionPO = getById(mainId); + if (deductionPO == null) { + throw new SalaryRunTimeException("主表不存在!"); + } + + Long id = param.getId(); + if (id == null) { + GrantDonationPO po = GrantDonationPO.builder() + .id(id) + .mainId(mainId) + .taxYearMonth(deductionPO.getDeclareMonth()) + .employeeId(deductionPO.getEmployeeId()) + .taxAgentId(deductionPO.getTaxAgentId()) + .recipientName(param.getRecipientName()) + .taxCode(param.getTaxCode()) + .donationNumber(param.getDonationNumber()) + .donateDate(param.getDonateDate()) + .donateAmount(param.getDonateAmount()) + .deductionProportion(param.getDeductionProportion()) + .actualDeduction(param.getActualDeduction()) + .fileStatus(1) + .employeeType(0) + .createTime(now) + .updateTime(now) + .creator((long) user.getUID()) + .deleteType(DeleteTypeEnum.NOT_DELETED.getValue()) + .tenantKey(DEFAULT_TENANT_KEY) + .build(); + getGrantDonationMapper().insertIgnoreNull(po); + } else { + GrantDonationPO po = getGrantDonationMapper().getById(id); + if (po == null){ + throw new SalaryRunTimeException("记录不存在!"); + } + + po.setUpdateTime(now); + po.setRecipientName(param.getRecipientName()); + po.setTaxCode(param.getTaxCode()); + po.setDonationNumber(param.getDonationNumber()); + po.setDonateDate(param.getDonateDate()); + po.setDonateAmount(param.getDonateAmount()); + po.setDeductionProportion(param.getDeductionProportion()); + po.setActualDeduction(param.getActualDeduction()); + + getGrantDonationMapper().updateIgnoreNull(po); + } + } + + @Override + public void saveHealthInsurance(HealthInsuranceSaveParam param) { + Date now = new Date(); + + Long mainId = param.getMainId(); + OtherDeductionPO deductionPO = getById(mainId); + if (deductionPO == null) { + throw new SalaryRunTimeException("主表不存在!"); + } + + Long id = param.getId(); + if (id == null) { + HealthInsurancePO po = HealthInsurancePO.builder() + .id(id) + .mainId(mainId) + .taxYearMonth(deductionPO.getDeclareMonth()) + .employeeId(deductionPO.getEmployeeId()) + .taxAgentId(deductionPO.getTaxAgentId()) + .identificationNumber(param.getIdentificationNumber()) + .effectiveDate(param.getEffectiveDate()) + .yearPremium(param.getYearPremium()) + .monthPremium(param.getMonthPremium()) + .currentDeduction(param.getCurrentDeduction()) + .fileStatus(1) + .employeeType(0) + .createTime(now) + .updateTime(now) + .creator((long) user.getUID()) + .deleteType(DeleteTypeEnum.NOT_DELETED.getValue()) + .tenantKey(DEFAULT_TENANT_KEY) + .build(); + getHealthInsuranceMapper().insertIgnoreNull(po); + } else { + HealthInsurancePO po = getHealthInsuranceMapper().getById(id); + if (po == null){ + throw new SalaryRunTimeException("记录不存在!"); + } + + po.setUpdateTime(now); + po.setIdentificationNumber(param.getIdentificationNumber()); + po.setEffectiveDate(param.getEffectiveDate()); + po.setYearPremium(param.getYearPremium()); + po.setMonthPremium(param.getMonthPremium()); + po.setCurrentDeduction(param.getCurrentDeduction()); + + getHealthInsuranceMapper().updateIgnoreNull(po); + } + } + + @Override + public void saveOtherDerateDeduction(OtherDerateDeductionSaveParam param) { + Date now = new Date(); + + Long mainId = param.getMainId(); + OtherDeductionPO deductionPO = getById(mainId); + if (deductionPO == null) { + throw new SalaryRunTimeException("主表不存在!"); + } + + Long id = param.getId(); + if (id == null) { + OtherDerateDeductionPO po = OtherDerateDeductionPO.builder() + .id(id) + .mainId(mainId) + .taxYearMonth(deductionPO.getDeclareMonth()) + .employeeId(deductionPO.getEmployeeId()) + .taxAgentId(deductionPO.getTaxAgentId()) + .otherDeduction(param.getOtherDeduction()) + .remark(param.getRemark()) + .fileStatus(1) + .employeeType(0) + .createTime(now) + .updateTime(now) + .creator((long) user.getUID()) + .deleteType(DeleteTypeEnum.NOT_DELETED.getValue()) + .tenantKey(DEFAULT_TENANT_KEY) + .build(); + getOtherDerateDeductionMapper().insertIgnoreNull(po); + } else { + OtherDerateDeductionPO po = getOtherDerateDeductionMapper().getById(id); + if (po == null){ + throw new SalaryRunTimeException("记录不存在!"); + } + + po.setUpdateTime(now); + po.setOtherDeduction(param.getOtherDeduction()); + po.setRemark(param.getRemark()); + + getOtherDerateDeductionMapper().updateIgnoreNull(po); + } + } + + @Override + public void saveDerateDeduction(DerateDeductionSaveParam param) { + Date now = new Date(); + + Long mainId = param.getMainId(); + OtherDeductionPO deductionPO = getById(mainId); + if (deductionPO == null) { + throw new SalaryRunTimeException("主表不存在!"); + } + + Long id = param.getId(); + if (id == null) { + DerateDeductionPO po = DerateDeductionPO.builder() + .id(id) + .mainId(mainId) + .taxYearMonth(deductionPO.getDeclareMonth()) + .employeeId(deductionPO.getEmployeeId()) + .taxAgentId(deductionPO.getTaxAgentId()) + .derateAmount(param.getDerateAmount()) + .derateItem(param.getDerateItem()) + .derateProperty(param.getDerateProperty()) + .fileStatus(1) + .employeeType(0) + .createTime(now) + .updateTime(now) + .creator((long) user.getUID()) + .deleteType(DeleteTypeEnum.NOT_DELETED.getValue()) + .tenantKey(DEFAULT_TENANT_KEY) + .build(); + getDerateDeductionMapper().insertIgnoreNull(po); + } else { + DerateDeductionPO po = getDerateDeductionMapper().getById(id); + if (po == null){ + throw new SalaryRunTimeException("记录不存在!"); + } + + po.setUpdateTime(now); + po.setDerateAmount(param.getDerateAmount()); + po.setDerateItem(param.getDerateItem()); + po.setDerateProperty(param.getDerateProperty()); + + getDerateDeductionMapper().updateIgnoreNull(po); + } + } + + @Override + public void savePersonalPension(PersonalPensionSaveParam param) { + Date now = new Date(); + + Long mainId = param.getMainId(); + OtherDeductionPO deductionPO = getById(mainId); + if (deductionPO == null) { + throw new SalaryRunTimeException("主表不存在!"); + } + + Long id = param.getId(); + if (id == null) { + PersonalPensionPO po = PersonalPensionPO.builder() + .id(id) + .mainId(mainId) + .taxYearMonth(deductionPO.getDeclareMonth()) + .employeeId(deductionPO.getEmployeeId()) + .taxAgentId(deductionPO.getTaxAgentId()) + .voucherTypeName(param.getVoucherTypeName()) + .voucherNo(param.getVoucherNo()) + .payAmount(param.getPayAmount()) + .fileStatus(1) + .employeeType(0) + .createTime(now) + .updateTime(now) + .creator((long) user.getUID()) + .deleteType(DeleteTypeEnum.NOT_DELETED.getValue()) + .tenantKey(DEFAULT_TENANT_KEY) + .build(); + getPersonalPensionMapper().insertIgnoreNull(po); + } else { + PersonalPensionPO po = getPersonalPensionMapper().getById(id); + if (po == null){ + throw new SalaryRunTimeException("记录不存在!"); + } + + po.setUpdateTime(now); + po.setVoucherTypeName(param.getVoucherTypeName()); + po.setVoucherNo(param.getVoucherNo()); + po.setPayAmount(param.getPayAmount()); + + getPersonalPensionMapper().updateIgnoreNull(po); + } } } From 2e4c3ddaffd4fa67d58bfc3b72141d13b8b38a64 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Wed, 25 Dec 2024 10:36:37 +0800 Subject: [PATCH 207/218] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dto/DerateDeductionListDTO.java | 2 + .../dto/EndowmentInsuranceListDTO.java | 2 + .../datacollection/dto/FreeIncomeListDTO.java | 2 + .../dto/GrantDonationListDTO.java | 2 + .../dto/HealthInsuranceListDTO.java | 2 + .../dto/OtherDerateDeductionListDTO.java | 2 + .../dto/PersonalPensionListDTO.java | 2 + .../OtherDeductionDetailDeleteParam.java | 26 +++ .../salary/service/OtherDeductionService.java | 23 +- .../impl/OtherDeductionServiceImpl.java | 215 ++++++++++++++---- .../salary/web/OtherDeductionController.java | 170 +++++++++++++- .../salary/wrapper/OtherDeductionWrapper.java | 93 +++++++- 12 files changed, 474 insertions(+), 67 deletions(-) create mode 100644 src/com/engine/salary/entity/datacollection/param/OtherDeductionDetailDeleteParam.java diff --git a/src/com/engine/salary/entity/datacollection/dto/DerateDeductionListDTO.java b/src/com/engine/salary/entity/datacollection/dto/DerateDeductionListDTO.java index 4b36ec418..c0751492b 100644 --- a/src/com/engine/salary/entity/datacollection/dto/DerateDeductionListDTO.java +++ b/src/com/engine/salary/entity/datacollection/dto/DerateDeductionListDTO.java @@ -5,6 +5,7 @@ import com.engine.salary.annotation.I18n; import com.engine.salary.annotation.TableTitle; import com.engine.salary.enums.datacollection.DataCollectionEmployeeTypeEnum; import com.engine.salary.util.excel.ExcelProperty; +import com.fasterxml.jackson.annotation.JsonFormat; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -46,6 +47,7 @@ public class DerateDeductionListDTO { private Integer employeeType; @TableTitle(title = "税款所属期", dataIndex = "taxYearMonth", key = "taxYearMonth") + @JsonFormat(pattern = "yyyy-MM", timezone = "GMT+8") private Date taxYearMonth; //姓名 diff --git a/src/com/engine/salary/entity/datacollection/dto/EndowmentInsuranceListDTO.java b/src/com/engine/salary/entity/datacollection/dto/EndowmentInsuranceListDTO.java index 699054258..0af824f19 100644 --- a/src/com/engine/salary/entity/datacollection/dto/EndowmentInsuranceListDTO.java +++ b/src/com/engine/salary/entity/datacollection/dto/EndowmentInsuranceListDTO.java @@ -4,6 +4,7 @@ import com.engine.salary.annotation.I18n; import com.engine.salary.annotation.TableTitle; import com.engine.salary.enums.datacollection.DataCollectionEmployeeTypeEnum; import com.engine.salary.util.excel.ExcelProperty; +import com.fasterxml.jackson.annotation.JsonFormat; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -45,6 +46,7 @@ public class EndowmentInsuranceListDTO { private Integer employeeType; @TableTitle(title = "税款所属期", dataIndex = "taxYearMonth", key = "taxYearMonth") + @JsonFormat(pattern = "yyyy-MM", timezone = "GMT+8") private Date taxYearMonth; //姓名 diff --git a/src/com/engine/salary/entity/datacollection/dto/FreeIncomeListDTO.java b/src/com/engine/salary/entity/datacollection/dto/FreeIncomeListDTO.java index a8e132c47..698dcbde0 100644 --- a/src/com/engine/salary/entity/datacollection/dto/FreeIncomeListDTO.java +++ b/src/com/engine/salary/entity/datacollection/dto/FreeIncomeListDTO.java @@ -5,6 +5,7 @@ import com.engine.salary.annotation.I18n; import com.engine.salary.annotation.TableTitle; import com.engine.salary.enums.datacollection.DataCollectionEmployeeTypeEnum; import com.engine.salary.util.excel.ExcelProperty; +import com.fasterxml.jackson.annotation.JsonFormat; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -46,6 +47,7 @@ public class FreeIncomeListDTO { private Integer employeeType; @TableTitle(title = "税款所属期", dataIndex = "taxYearMonth", key = "taxYearMonth") + @JsonFormat(pattern = "yyyy-MM", timezone = "GMT+8") private Date taxYearMonth; //姓名 diff --git a/src/com/engine/salary/entity/datacollection/dto/GrantDonationListDTO.java b/src/com/engine/salary/entity/datacollection/dto/GrantDonationListDTO.java index a6fd88268..6255c4043 100644 --- a/src/com/engine/salary/entity/datacollection/dto/GrantDonationListDTO.java +++ b/src/com/engine/salary/entity/datacollection/dto/GrantDonationListDTO.java @@ -5,6 +5,7 @@ import com.engine.salary.annotation.SalaryTableColumn; import com.engine.salary.annotation.TableTitle; import com.engine.salary.enums.datacollection.DataCollectionEmployeeTypeEnum; import com.engine.salary.util.excel.ExcelProperty; +import com.fasterxml.jackson.annotation.JsonFormat; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -41,6 +42,7 @@ public class GrantDonationListDTO { private Integer employeeType; @TableTitle(title = "税款所属期", dataIndex = "taxYearMonth", key = "taxYearMonth") + @JsonFormat(pattern = "yyyy-MM", timezone = "GMT+8") private Date taxYearMonth; //姓名 diff --git a/src/com/engine/salary/entity/datacollection/dto/HealthInsuranceListDTO.java b/src/com/engine/salary/entity/datacollection/dto/HealthInsuranceListDTO.java index 5790a528e..9cc8d0b4f 100644 --- a/src/com/engine/salary/entity/datacollection/dto/HealthInsuranceListDTO.java +++ b/src/com/engine/salary/entity/datacollection/dto/HealthInsuranceListDTO.java @@ -5,6 +5,7 @@ import com.engine.salary.annotation.SalaryTableColumn; import com.engine.salary.annotation.TableTitle; import com.engine.salary.enums.datacollection.DataCollectionEmployeeTypeEnum; import com.engine.salary.util.excel.ExcelProperty; +import com.fasterxml.jackson.annotation.JsonFormat; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -42,6 +43,7 @@ public class HealthInsuranceListDTO { private Integer employeeType; @TableTitle(title = "税款所属期", dataIndex = "taxYearMonth", key = "taxYearMonth") + @JsonFormat(pattern = "yyyy-MM", timezone = "GMT+8") private Date taxYearMonth; //姓名 diff --git a/src/com/engine/salary/entity/datacollection/dto/OtherDerateDeductionListDTO.java b/src/com/engine/salary/entity/datacollection/dto/OtherDerateDeductionListDTO.java index cfbdd1874..d4d292a14 100644 --- a/src/com/engine/salary/entity/datacollection/dto/OtherDerateDeductionListDTO.java +++ b/src/com/engine/salary/entity/datacollection/dto/OtherDerateDeductionListDTO.java @@ -5,6 +5,7 @@ import com.engine.salary.annotation.SalaryTableColumn; import com.engine.salary.annotation.TableTitle; import com.engine.salary.enums.datacollection.DataCollectionEmployeeTypeEnum; import com.engine.salary.util.excel.ExcelProperty; +import com.fasterxml.jackson.annotation.JsonFormat; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -42,6 +43,7 @@ public class OtherDerateDeductionListDTO { private Integer employeeType; @TableTitle(title = "税款所属期", dataIndex = "taxYearMonth", key = "taxYearMonth") + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") private Date taxYearMonth; //姓名 diff --git a/src/com/engine/salary/entity/datacollection/dto/PersonalPensionListDTO.java b/src/com/engine/salary/entity/datacollection/dto/PersonalPensionListDTO.java index 01becf206..9bfb90790 100644 --- a/src/com/engine/salary/entity/datacollection/dto/PersonalPensionListDTO.java +++ b/src/com/engine/salary/entity/datacollection/dto/PersonalPensionListDTO.java @@ -5,6 +5,7 @@ import com.engine.salary.annotation.TableTitle; import com.engine.salary.enums.datacollection.DataCollectionEmployeeTypeEnum; import com.engine.salary.enums.datacollection.EnumDeductionDataSource; import com.engine.salary.util.excel.ExcelProperty; +import com.fasterxml.jackson.annotation.JsonFormat; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -47,6 +48,7 @@ public class PersonalPensionListDTO { private Integer employeeType; @TableTitle(title = "税款所属期", dataIndex = "taxYearMonth", key = "taxYearMonth") + @JsonFormat(pattern = "yyyy-MM", timezone = "GMT+8") private Date taxYearMonth; //姓名 diff --git a/src/com/engine/salary/entity/datacollection/param/OtherDeductionDetailDeleteParam.java b/src/com/engine/salary/entity/datacollection/param/OtherDeductionDetailDeleteParam.java new file mode 100644 index 000000000..447c04b87 --- /dev/null +++ b/src/com/engine/salary/entity/datacollection/param/OtherDeductionDetailDeleteParam.java @@ -0,0 +1,26 @@ +package com.engine.salary.entity.datacollection.param; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +/** + * 删除参数 + *

Copyright: Copyright (c) 2024

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class OtherDeductionDetailDeleteParam { + + // 主键id + private List ids; +} diff --git a/src/com/engine/salary/service/OtherDeductionService.java b/src/com/engine/salary/service/OtherDeductionService.java index 21307f57b..3e4c0c7d7 100644 --- a/src/com/engine/salary/service/OtherDeductionService.java +++ b/src/com/engine/salary/service/OtherDeductionService.java @@ -125,17 +125,13 @@ public interface OtherDeductionService { String extendToLastMonth(OtherDeductionExtendLastParam param); PageInfo freeIncomeList(OtherDeductionDetailQueryParam param); - PageInfo derateDeductionListDTOList(OtherDeductionDetailQueryParam param); - PageInfo endowmentInsuranceListDTOList(OtherDeductionDetailQueryParam param); - PageInfo grantDonationListDTOList(OtherDeductionDetailQueryParam param); - PageInfo healthInsuranceListDTOList(OtherDeductionDetailQueryParam param); - PageInfo otherDerateDeductionListDTOList(OtherDeductionDetailQueryParam param); - PageInfo personalPensionListDTOList(OtherDeductionDetailQueryParam param); + PageInfo derateDeductionList(OtherDeductionDetailQueryParam param); + PageInfo endowmentInsuranceList(OtherDeductionDetailQueryParam param); + PageInfo grantDonationList(OtherDeductionDetailQueryParam param); + PageInfo healthInsuranceList(OtherDeductionDetailQueryParam param); + PageInfo otherDerateDeductionList(OtherDeductionDetailQueryParam param); + PageInfo personalPensionList(OtherDeductionDetailQueryParam param); - /** - * 保存免税收入 - * @param param - */ void saveFreeIncome(FreeIncomeSaveParam param); void saveEndowmentInsurance(EndowmentInsuranceSaveParam param); void saveGrantDonation(GrantDonationSaveParam param); @@ -144,5 +140,12 @@ public interface OtherDeductionService { void saveDerateDeduction(DerateDeductionSaveParam param); void savePersonalPension(PersonalPensionSaveParam param); + void deleteFreeIncome(OtherDeductionDetailDeleteParam param); + void deleteEndowmentInsurance(OtherDeductionDetailDeleteParam param); + void deleteGrantDonation(OtherDeductionDetailDeleteParam param); + void deleteHealthInsurance(OtherDeductionDetailDeleteParam param); + void deleteOtherDerateDeduction(OtherDeductionDetailDeleteParam param); + void deleteDerateDeduction(OtherDeductionDetailDeleteParam param); + void deletePersonalPension(OtherDeductionDetailDeleteParam param); } diff --git a/src/com/engine/salary/service/impl/OtherDeductionServiceImpl.java b/src/com/engine/salary/service/impl/OtherDeductionServiceImpl.java index f4555c9a3..6a2ec896b 100644 --- a/src/com/engine/salary/service/impl/OtherDeductionServiceImpl.java +++ b/src/com/engine/salary/service/impl/OtherDeductionServiceImpl.java @@ -36,6 +36,7 @@ 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; +import com.engine.salary.util.db.IdGenerator; import com.engine.salary.util.db.MapperProxyFactory; import com.engine.salary.util.excel.ExcelComment; import com.engine.salary.util.excel.ExcelParseHelper; @@ -2181,77 +2182,168 @@ public class OtherDeductionServiceImpl extends Service implements OtherDeduction @Override public PageInfo freeIncomeList(OtherDeductionDetailQueryParam param) { - List freeIncomePOS = getFreeIncomeMapper().listSome(FreeIncomePO.builder().mainId(param.getId()).build()); - List listDTOS = freeIncomePOS.stream().map(po -> { - FreeIncomeListDTO freeIncomeListDTO = new FreeIncomeListDTO(); - BeanUtils.copyProperties(po, freeIncomeListDTO); - return freeIncomeListDTO; + List pos = getFreeIncomeMapper().listSome(FreeIncomePO.builder().mainId(param.getId()).build()); + List empIds = SalaryEntityUtil.properties(pos, FreeIncomePO::getEmployeeId, Collectors.toList()); + List employeeList = getSalaryEmployeeService(user).listByIds(empIds); + Map employeeMap = SalaryEntityUtil.convert2Map(employeeList, DataCollectionEmployee::getEmployeeId); + List taxAgentPOS = getTaxAgentService(user).listAll(); + Map taxAgentMap = SalaryEntityUtil.convert2Map(taxAgentPOS, TaxAgentPO::getId); + List listDTOS = pos.stream().map(po -> { + FreeIncomeListDTO dto = new FreeIncomeListDTO(); + BeanUtils.copyProperties(po, dto); + DataCollectionEmployee employee = employeeMap.getOrDefault(po.getEmployeeId(), new DataCollectionEmployee()); + TaxAgentPO taxAgent = taxAgentMap.getOrDefault(po.getTaxAgentId(), new TaxAgentPO()); + dto.setUsername(employee.getUsername()); + dto.setTaxAgentName(taxAgent.getName()); + dto.setDepartmentName(employee.getDepartmentName()); + dto.setMobile(employee.getMobile()); + dto.setJobNum(employee.getWorkcode()); + dto.setIdNo(employee.getIdNo()); + return dto; }).collect(Collectors.toList()); return SalaryPageUtil.buildPage(param.getCurrent(), param.getPageSize(), listDTOS, FreeIncomeListDTO.class); } @Override - public PageInfo derateDeductionListDTOList(OtherDeductionDetailQueryParam param) { + public PageInfo derateDeductionList(OtherDeductionDetailQueryParam param) { List pos = getDerateDeductionMapper().listSome(DerateDeductionPO.builder().mainId(param.getId()).build()); + List empIds = SalaryEntityUtil.properties(pos, DerateDeductionPO::getEmployeeId, Collectors.toList()); + List employeeList = getSalaryEmployeeService(user).listByIds(empIds); + Map employeeMap = SalaryEntityUtil.convert2Map(employeeList, DataCollectionEmployee::getEmployeeId); + List taxAgentPOS = getTaxAgentService(user).listAll(); + Map taxAgentMap = SalaryEntityUtil.convert2Map(taxAgentPOS, TaxAgentPO::getId); List listDTOS = pos.stream().map(po -> { - DerateDeductionListDTO dtos = new DerateDeductionListDTO(); - BeanUtils.copyProperties(po, dtos); - return dtos; + DerateDeductionListDTO dto = new DerateDeductionListDTO(); + BeanUtils.copyProperties(po, dto); + DataCollectionEmployee employee = employeeMap.getOrDefault(po.getEmployeeId(), new DataCollectionEmployee()); + TaxAgentPO taxAgent = taxAgentMap.getOrDefault(po.getTaxAgentId(), new TaxAgentPO()); + dto.setUsername(employee.getUsername()); + dto.setTaxAgentName(taxAgent.getName()); + dto.setDepartmentName(employee.getDepartmentName()); + dto.setMobile(employee.getMobile()); + dto.setJobNum(employee.getWorkcode()); + dto.setIdNo(employee.getIdNo()); + return dto; }).collect(Collectors.toList()); return SalaryPageUtil.buildPage(param.getCurrent(), param.getPageSize(), listDTOS, DerateDeductionListDTO.class); } @Override - public PageInfo endowmentInsuranceListDTOList(OtherDeductionDetailQueryParam param) { + public PageInfo endowmentInsuranceList(OtherDeductionDetailQueryParam param) { List pos = getEndowmentInsuranceMapper().listSome(EndowmentInsurancePO.builder().mainId(param.getId()).build()); + List empIds = SalaryEntityUtil.properties(pos, EndowmentInsurancePO::getEmployeeId, Collectors.toList()); + List employeeList = getSalaryEmployeeService(user).listByIds(empIds); + Map employeeMap = SalaryEntityUtil.convert2Map(employeeList, DataCollectionEmployee::getEmployeeId); + List taxAgentPOS = getTaxAgentService(user).listAll(); + Map taxAgentMap = SalaryEntityUtil.convert2Map(taxAgentPOS, TaxAgentPO::getId); List listDTOS = pos.stream().map(po -> { - EndowmentInsuranceListDTO dtos = new EndowmentInsuranceListDTO(); - BeanUtils.copyProperties(po, dtos); - return dtos; + EndowmentInsuranceListDTO dto = new EndowmentInsuranceListDTO(); + BeanUtils.copyProperties(po, dto); + DataCollectionEmployee employee = employeeMap.getOrDefault(po.getEmployeeId(), new DataCollectionEmployee()); + TaxAgentPO taxAgent = taxAgentMap.getOrDefault(po.getTaxAgentId(), new TaxAgentPO()); + dto.setUsername(employee.getUsername()); + dto.setTaxAgentName(taxAgent.getName()); + dto.setDepartmentName(employee.getDepartmentName()); + dto.setMobile(employee.getMobile()); + dto.setJobNum(employee.getWorkcode()); + dto.setIdNo(employee.getIdNo()); + return dto; }).collect(Collectors.toList()); return SalaryPageUtil.buildPage(param.getCurrent(), param.getPageSize(), listDTOS, EndowmentInsuranceListDTO.class); } @Override - public PageInfo grantDonationListDTOList(OtherDeductionDetailQueryParam param) { + public PageInfo grantDonationList(OtherDeductionDetailQueryParam param) { List pos = getGrantDonationMapper().listSome(GrantDonationPO.builder().mainId(param.getId()).build()); + List empIds = SalaryEntityUtil.properties(pos, GrantDonationPO::getEmployeeId, Collectors.toList()); + List employeeList = getSalaryEmployeeService(user).listByIds(empIds); + Map employeeMap = SalaryEntityUtil.convert2Map(employeeList, DataCollectionEmployee::getEmployeeId); + List taxAgentPOS = getTaxAgentService(user).listAll(); + Map taxAgentMap = SalaryEntityUtil.convert2Map(taxAgentPOS, TaxAgentPO::getId); List listDTOS = pos.stream().map(po -> { - GrantDonationListDTO dtos = new GrantDonationListDTO(); - BeanUtils.copyProperties(po, dtos); - return dtos; + GrantDonationListDTO dto = new GrantDonationListDTO(); + BeanUtils.copyProperties(po, dto); + DataCollectionEmployee employee = employeeMap.getOrDefault(po.getEmployeeId(), new DataCollectionEmployee()); + TaxAgentPO taxAgent = taxAgentMap.getOrDefault(po.getTaxAgentId(), new TaxAgentPO()); + dto.setUsername(employee.getUsername()); + dto.setTaxAgentName(taxAgent.getName()); + dto.setDepartmentName(employee.getDepartmentName()); + dto.setMobile(employee.getMobile()); + dto.setJobNum(employee.getWorkcode()); + dto.setIdNo(employee.getIdNo()); + return dto; }).collect(Collectors.toList()); return SalaryPageUtil.buildPage(param.getCurrent(), param.getPageSize(), listDTOS, GrantDonationListDTO.class); } @Override - public PageInfo healthInsuranceListDTOList(OtherDeductionDetailQueryParam param) { + public PageInfo healthInsuranceList(OtherDeductionDetailQueryParam param) { List pos = getHealthInsuranceMapper().listSome(HealthInsurancePO.builder().mainId(param.getId()).build()); + List empIds = SalaryEntityUtil.properties(pos, HealthInsurancePO::getEmployeeId, Collectors.toList()); + List employeeList = getSalaryEmployeeService(user).listByIds(empIds); + Map employeeMap = SalaryEntityUtil.convert2Map(employeeList, DataCollectionEmployee::getEmployeeId); + List taxAgentPOS = getTaxAgentService(user).listAll(); + Map taxAgentMap = SalaryEntityUtil.convert2Map(taxAgentPOS, TaxAgentPO::getId); List listDTOS = pos.stream().map(po -> { - HealthInsuranceListDTO dtos = new HealthInsuranceListDTO(); - BeanUtils.copyProperties(po, dtos); - return dtos; + HealthInsuranceListDTO dto = new HealthInsuranceListDTO(); + BeanUtils.copyProperties(po, dto); + DataCollectionEmployee employee = employeeMap.getOrDefault(po.getEmployeeId(), new DataCollectionEmployee()); + TaxAgentPO taxAgent = taxAgentMap.getOrDefault(po.getTaxAgentId(), new TaxAgentPO()); + dto.setUsername(employee.getUsername()); + dto.setTaxAgentName(taxAgent.getName()); + dto.setDepartmentName(employee.getDepartmentName()); + dto.setMobile(employee.getMobile()); + dto.setJobNum(employee.getWorkcode()); + dto.setIdNo(employee.getIdNo()); + return dto; }).collect(Collectors.toList()); return SalaryPageUtil.buildPage(param.getCurrent(), param.getPageSize(), listDTOS, HealthInsuranceListDTO.class); } @Override - public PageInfo otherDerateDeductionListDTOList(OtherDeductionDetailQueryParam param) { + public PageInfo otherDerateDeductionList(OtherDeductionDetailQueryParam param) { List pos = getOtherDerateDeductionMapper().listSome(OtherDerateDeductionPO.builder().mainId(param.getId()).build()); + List empIds = SalaryEntityUtil.properties(pos, OtherDerateDeductionPO::getEmployeeId, Collectors.toList()); + List employeeList = getSalaryEmployeeService(user).listByIds(empIds); + Map employeeMap = SalaryEntityUtil.convert2Map(employeeList, DataCollectionEmployee::getEmployeeId); + List taxAgentPOS = getTaxAgentService(user).listAll(); + Map taxAgentMap = SalaryEntityUtil.convert2Map(taxAgentPOS, TaxAgentPO::getId); List listDTOS = pos.stream().map(po -> { - OtherDerateDeductionListDTO dtos = new OtherDerateDeductionListDTO(); - BeanUtils.copyProperties(po, dtos); - return dtos; + OtherDerateDeductionListDTO dto = new OtherDerateDeductionListDTO(); + BeanUtils.copyProperties(po, dto); + DataCollectionEmployee employee = employeeMap.getOrDefault(po.getEmployeeId(), new DataCollectionEmployee()); + TaxAgentPO taxAgent = taxAgentMap.getOrDefault(po.getTaxAgentId(), new TaxAgentPO()); + dto.setUsername(employee.getUsername()); + dto.setTaxAgentName(taxAgent.getName()); + dto.setDepartmentName(employee.getDepartmentName()); + dto.setMobile(employee.getMobile()); + dto.setJobNum(employee.getWorkcode()); + dto.setIdNo(employee.getIdNo()); + return dto; }).collect(Collectors.toList()); return SalaryPageUtil.buildPage(param.getCurrent(), param.getPageSize(), listDTOS, OtherDerateDeductionListDTO.class); } @Override - public PageInfo personalPensionListDTOList(OtherDeductionDetailQueryParam param) { - List pos = getFreeIncomeMapper().listSome(FreeIncomePO.builder().mainId(param.getId()).build()); + public PageInfo personalPensionList(OtherDeductionDetailQueryParam param) { + List pos = getPersonalPensionMapper().listSome(PersonalPensionPO.builder().mainId(param.getId()).build()); + List empIds = SalaryEntityUtil.properties(pos, PersonalPensionPO::getEmployeeId, Collectors.toList()); + List employeeList = getSalaryEmployeeService(user).listByIds(empIds); + Map employeeMap = SalaryEntityUtil.convert2Map(employeeList, DataCollectionEmployee::getEmployeeId); + List taxAgentPOS = getTaxAgentService(user).listAll(); + Map taxAgentMap = SalaryEntityUtil.convert2Map(taxAgentPOS, TaxAgentPO::getId); List listDTOS = pos.stream().map(po -> { - PersonalPensionListDTO dtos = new PersonalPensionListDTO(); - BeanUtils.copyProperties(po, dtos); - return dtos; + PersonalPensionListDTO dto = new PersonalPensionListDTO(); + BeanUtils.copyProperties(po, dto); + DataCollectionEmployee employee = employeeMap.getOrDefault(po.getEmployeeId(), new DataCollectionEmployee()); + TaxAgentPO taxAgent = taxAgentMap.getOrDefault(po.getTaxAgentId(), new TaxAgentPO()); + dto.setUsername(employee.getUsername()); + dto.setTaxAgentName(taxAgent.getName()); + dto.setDepartmentName(employee.getDepartmentName()); + dto.setMobile(employee.getMobile()); + dto.setJobNum(employee.getWorkcode()); + dto.setIdNo(employee.getIdNo()); + return dto; }).collect(Collectors.toList()); return SalaryPageUtil.buildPage(param.getCurrent(), param.getPageSize(), listDTOS, PersonalPensionListDTO.class); } @@ -2270,7 +2362,7 @@ public class OtherDeductionServiceImpl extends Service implements OtherDeduction Long id = param.getId(); if (id == null) { FreeIncomePO po = FreeIncomePO.builder() - .id(id) + .id(IdGenerator.generate()) .mainId(mainId) .taxYearMonth(deductionPO.getDeclareMonth()) .employeeId(deductionPO.getEmployeeId()) @@ -2289,7 +2381,7 @@ public class OtherDeductionServiceImpl extends Service implements OtherDeduction getFreeIncomeMapper().insertIgnoreNull(po); } else { FreeIncomePO po = getFreeIncomeMapper().getById(id); - if (po == null){ + if (po == null) { throw new SalaryRunTimeException("记录不存在!"); } @@ -2315,7 +2407,7 @@ public class OtherDeductionServiceImpl extends Service implements OtherDeduction Long id = param.getId(); if (id == null) { EndowmentInsurancePO po = EndowmentInsurancePO.builder() - .id(id) + .id(IdGenerator.generate()) .mainId(mainId) .taxYearMonth(deductionPO.getDeclareMonth()) .employeeId(deductionPO.getEmployeeId()) @@ -2336,7 +2428,7 @@ public class OtherDeductionServiceImpl extends Service implements OtherDeduction getEndowmentInsuranceMapper().insertIgnoreNull(po); } else { EndowmentInsurancePO po = getEndowmentInsuranceMapper().getById(id); - if (po == null){ + if (po == null) { throw new SalaryRunTimeException("记录不存在!"); } @@ -2364,7 +2456,7 @@ public class OtherDeductionServiceImpl extends Service implements OtherDeduction Long id = param.getId(); if (id == null) { GrantDonationPO po = GrantDonationPO.builder() - .id(id) + .id(IdGenerator.generate()) .mainId(mainId) .taxYearMonth(deductionPO.getDeclareMonth()) .employeeId(deductionPO.getEmployeeId()) @@ -2387,7 +2479,7 @@ public class OtherDeductionServiceImpl extends Service implements OtherDeduction getGrantDonationMapper().insertIgnoreNull(po); } else { GrantDonationPO po = getGrantDonationMapper().getById(id); - if (po == null){ + if (po == null) { throw new SalaryRunTimeException("记录不存在!"); } @@ -2417,7 +2509,7 @@ public class OtherDeductionServiceImpl extends Service implements OtherDeduction Long id = param.getId(); if (id == null) { HealthInsurancePO po = HealthInsurancePO.builder() - .id(id) + .id(IdGenerator.generate()) .mainId(mainId) .taxYearMonth(deductionPO.getDeclareMonth()) .employeeId(deductionPO.getEmployeeId()) @@ -2438,7 +2530,7 @@ public class OtherDeductionServiceImpl extends Service implements OtherDeduction getHealthInsuranceMapper().insertIgnoreNull(po); } else { HealthInsurancePO po = getHealthInsuranceMapper().getById(id); - if (po == null){ + if (po == null) { throw new SalaryRunTimeException("记录不存在!"); } @@ -2466,7 +2558,7 @@ public class OtherDeductionServiceImpl extends Service implements OtherDeduction Long id = param.getId(); if (id == null) { OtherDerateDeductionPO po = OtherDerateDeductionPO.builder() - .id(id) + .id(IdGenerator.generate()) .mainId(mainId) .taxYearMonth(deductionPO.getDeclareMonth()) .employeeId(deductionPO.getEmployeeId()) @@ -2484,7 +2576,7 @@ public class OtherDeductionServiceImpl extends Service implements OtherDeduction getOtherDerateDeductionMapper().insertIgnoreNull(po); } else { OtherDerateDeductionPO po = getOtherDerateDeductionMapper().getById(id); - if (po == null){ + if (po == null) { throw new SalaryRunTimeException("记录不存在!"); } @@ -2509,7 +2601,7 @@ public class OtherDeductionServiceImpl extends Service implements OtherDeduction Long id = param.getId(); if (id == null) { DerateDeductionPO po = DerateDeductionPO.builder() - .id(id) + .id(IdGenerator.generate()) .mainId(mainId) .taxYearMonth(deductionPO.getDeclareMonth()) .employeeId(deductionPO.getEmployeeId()) @@ -2528,7 +2620,7 @@ public class OtherDeductionServiceImpl extends Service implements OtherDeduction getDerateDeductionMapper().insertIgnoreNull(po); } else { DerateDeductionPO po = getDerateDeductionMapper().getById(id); - if (po == null){ + if (po == null) { throw new SalaryRunTimeException("记录不存在!"); } @@ -2554,7 +2646,7 @@ public class OtherDeductionServiceImpl extends Service implements OtherDeduction Long id = param.getId(); if (id == null) { PersonalPensionPO po = PersonalPensionPO.builder() - .id(id) + .id(IdGenerator.generate()) .mainId(mainId) .taxYearMonth(deductionPO.getDeclareMonth()) .employeeId(deductionPO.getEmployeeId()) @@ -2573,7 +2665,7 @@ public class OtherDeductionServiceImpl extends Service implements OtherDeduction getPersonalPensionMapper().insertIgnoreNull(po); } else { PersonalPensionPO po = getPersonalPensionMapper().getById(id); - if (po == null){ + if (po == null) { throw new SalaryRunTimeException("记录不存在!"); } @@ -2586,4 +2678,39 @@ public class OtherDeductionServiceImpl extends Service implements OtherDeduction } } + @Override + public void deleteFreeIncome(OtherDeductionDetailDeleteParam param) { + getFreeIncomeMapper().deleteByIds(param.getIds()); + } + + @Override + public void deleteEndowmentInsurance(OtherDeductionDetailDeleteParam param) { + getEndowmentInsuranceMapper().deleteByIds(param.getIds()); + } + + @Override + public void deleteGrantDonation(OtherDeductionDetailDeleteParam param) { + getGrantDonationMapper().deleteByIds(param.getIds()); + } + + @Override + public void deleteHealthInsurance(OtherDeductionDetailDeleteParam param) { + getHealthInsuranceMapper().deleteByIds(param.getIds()); + } + + @Override + public void deleteOtherDerateDeduction(OtherDeductionDetailDeleteParam param) { + getOtherDerateDeductionMapper().deleteByIds(param.getIds()); + } + + @Override + public void deleteDerateDeduction(OtherDeductionDetailDeleteParam param) { + getDerateDeductionMapper().deleteByIds(param.getIds()); + } + + @Override + public void deletePersonalPension(OtherDeductionDetailDeleteParam param) { + getPersonalPensionMapper().deleteByIds(param.getIds()); + } + } diff --git a/src/com/engine/salary/web/OtherDeductionController.java b/src/com/engine/salary/web/OtherDeductionController.java index f041392ee..6a6bed689 100644 --- a/src/com/engine/salary/web/OtherDeductionController.java +++ b/src/com/engine/salary/web/OtherDeductionController.java @@ -1,9 +1,7 @@ package com.engine.salary.web; import com.engine.common.util.ServiceUtil; -import com.engine.salary.entity.datacollection.dto.FreeIncomeListDTO; -import com.engine.salary.entity.datacollection.dto.OtherDeductionListDTO; -import com.engine.salary.entity.datacollection.dto.OtherDeductionRecordDTO; +import com.engine.salary.entity.datacollection.dto.*; import com.engine.salary.entity.datacollection.param.*; import com.engine.salary.util.ResponseResult; import com.engine.salary.util.SalaryDateUtil; @@ -361,11 +359,64 @@ public class OtherDeductionController { @POST @Path("/freeIncomeList") @Produces(MediaType.APPLICATION_JSON) - public String detailList(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody OtherDeductionDetailQueryParam param) { + public String freeIncomeList(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody OtherDeductionDetailQueryParam param) { User user = HrmUserVarify.getUser(request, response); return new ResponseResult>(user).run(getOtherDeductionWrapper(user)::freeIncomeList, param); } + + @POST + @Path("/healthInsuranceList") + @Produces(MediaType.APPLICATION_JSON) + public String healthInsuranceList(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody OtherDeductionDetailQueryParam param) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult>(user).run(getOtherDeductionWrapper(user)::healthInsuranceList, param); + } + + + @POST + @Path("/endowmentInsuranceList") + @Produces(MediaType.APPLICATION_JSON) + public String endowmentInsuranceList(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody OtherDeductionDetailQueryParam param) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult>(user).run(getOtherDeductionWrapper(user)::endowmentInsuranceList, param); + } + + @POST + @Path("/grantDonationList") + @Produces(MediaType.APPLICATION_JSON) + public String grantDonationList(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody OtherDeductionDetailQueryParam param) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult>(user).run(getOtherDeductionWrapper(user)::grantDonationList, param); + } + + + @POST + @Path("/derateDeductionList") + @Produces(MediaType.APPLICATION_JSON) + public String derateDeductionList(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody OtherDeductionDetailQueryParam param) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult>(user).run(getOtherDeductionWrapper(user)::derateDeductionList, param); + } + + + @POST + @Path("/otherDerateDeductionList") + @Produces(MediaType.APPLICATION_JSON) + public String otherDerateDeductionList(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody OtherDeductionDetailQueryParam param) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult>(user).run(getOtherDeductionWrapper(user)::otherDerateDeductionList, param); + } + + @POST + @Path("/personalPensionList") + @Produces(MediaType.APPLICATION_JSON) + public String personalPensionList(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody OtherDeductionDetailQueryParam param) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult>(user).run(getOtherDeductionWrapper(user)::personalPensionList, param); + } + + @POST @Path("/saveFreeIncome") @Produces(MediaType.APPLICATION_JSON) @@ -374,5 +425,116 @@ public class OtherDeductionController { return new ResponseResult(user).run(getOtherDeductionWrapper(user)::saveFreeIncome, param); } + @POST + @Path("/saveHealthInsurance") + @Produces(MediaType.APPLICATION_JSON) + public String saveHealthInsurance(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody HealthInsuranceSaveParam param) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getOtherDeductionWrapper(user)::saveHealthInsurance, param); + } + + + @POST + @Path("/saveEndowmentInsurance") + @Produces(MediaType.APPLICATION_JSON) + public String saveEndowmentInsurance(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody EndowmentInsuranceSaveParam param) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getOtherDeductionWrapper(user)::saveEndowmentInsurance, param); + } + + @POST + @Path("/saveGrantDonation") + @Produces(MediaType.APPLICATION_JSON) + public String saveGrantDonation(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody GrantDonationSaveParam param) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getOtherDeductionWrapper(user)::saveGrantDonation, param); + } + + @POST + @Path("/saveDerateDeduction") + @Produces(MediaType.APPLICATION_JSON) + public String saveDerateDeduction(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody DerateDeductionSaveParam param) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getOtherDeductionWrapper(user)::saveDerateDeduction, param); + } + + + @POST + @Path("/saveOtherDerateDeduction") + @Produces(MediaType.APPLICATION_JSON) + public String saveOtherDerateDeduction(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody OtherDerateDeductionSaveParam param) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getOtherDeductionWrapper(user)::saveOtherDerateDeduction, param); + } + + @POST + @Path("/savePersonalPension") + @Produces(MediaType.APPLICATION_JSON) + public String savePersonalPension(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody PersonalPensionSaveParam param) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getOtherDeductionWrapper(user)::savePersonalPension, param); + } + + + @POST + @Path("/deleteFreeIncome") + @Produces(MediaType.APPLICATION_JSON) + public String deleteFreeIncome(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody OtherDeductionDetailDeleteParam param) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getOtherDeductionWrapper(user)::deleteFreeIncome, param); + } + + @POST + @Path("/deleteHealthInsurance") + @Produces(MediaType.APPLICATION_JSON) + public String deleteHealthInsurance(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody OtherDeductionDetailDeleteParam param) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getOtherDeductionWrapper(user)::deleteHealthInsurance, param); + } + + + @POST + @Path("/deleteEndowmentInsurance") + @Produces(MediaType.APPLICATION_JSON) + public String deleteEndowmentInsurance(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody OtherDeductionDetailDeleteParam param) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getOtherDeductionWrapper(user)::deleteEndowmentInsurance, param); + } + + @POST + @Path("/deleteGrantDonation") + @Produces(MediaType.APPLICATION_JSON) + public String deleteGrantDonation(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody OtherDeductionDetailDeleteParam param) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getOtherDeductionWrapper(user)::deleteGrantDonation, param); + } + + @POST + @Path("/deleteDerateDeduction") + @Produces(MediaType.APPLICATION_JSON) + public String deleteDerateDeduction(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody OtherDeductionDetailDeleteParam param) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getOtherDeductionWrapper(user)::deleteDerateDeduction, param); + } + + + @POST + @Path("/deleteOtherDerateDeduction") + @Produces(MediaType.APPLICATION_JSON) + public String deleteOtherDerateDeduction(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody OtherDeductionDetailDeleteParam param) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getOtherDeductionWrapper(user)::deleteOtherDerateDeduction, param); + } + + + + @POST + @Path("/deletePersonalPension") + @Produces(MediaType.APPLICATION_JSON) + public String deletePersonalPension(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody OtherDeductionDetailDeleteParam param) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getOtherDeductionWrapper(user)::deletePersonalPension, param); + } + } diff --git a/src/com/engine/salary/wrapper/OtherDeductionWrapper.java b/src/com/engine/salary/wrapper/OtherDeductionWrapper.java index d8e87a630..4782d3af0 100644 --- a/src/com/engine/salary/wrapper/OtherDeductionWrapper.java +++ b/src/com/engine/salary/wrapper/OtherDeductionWrapper.java @@ -6,9 +6,7 @@ import com.api.browser.util.ConditionFactory; import com.api.browser.util.ConditionType; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; -import com.engine.salary.entity.datacollection.dto.FreeIncomeListDTO; -import com.engine.salary.entity.datacollection.dto.OtherDeductionListDTO; -import com.engine.salary.entity.datacollection.dto.OtherDeductionRecordDTO; +import com.engine.salary.entity.datacollection.dto.*; import com.engine.salary.entity.datacollection.param.*; import com.engine.salary.entity.datacollection.po.OtherDeductionPO; import com.engine.salary.exception.SalaryRunTimeException; @@ -207,9 +205,9 @@ public class OtherDeductionWrapper extends Service { //是否开启了智能算薪 boolean enableUse = getTaxDeclarationApiConfigService(user).enableUse(); - if(enableUse){ + if (enableUse) { return getOtherDeductionService(user).downloadDetailTemplate(queryParam); - }else { + } else { return getOtherDeductionService(user).downloadTemplate(queryParam); } } @@ -228,9 +226,9 @@ public class OtherDeductionWrapper extends Service { //是否开启了智能算薪 boolean enableUse = getTaxDeclarationApiConfigService(user).enableUse(); - if(enableUse){ + if (enableUse) { return getOtherDeductionService(user).importDetailData(importParam); - }else { + } else { return getOtherDeductionService(user).importData(importParam); } } @@ -291,10 +289,87 @@ public class OtherDeductionWrapper extends Service { } public PageInfo freeIncomeList(OtherDeductionDetailQueryParam param) { - return getOtherDeductionService(user).freeIncomeList(param); + return getOtherDeductionService(user).freeIncomeList(param); + } + + public PageInfo derateDeductionList(OtherDeductionDetailQueryParam param) { + return getOtherDeductionService(user).derateDeductionList(param); + } + + public PageInfo endowmentInsuranceList(OtherDeductionDetailQueryParam param) { + return getOtherDeductionService(user).endowmentInsuranceList(param); + } + + public PageInfo grantDonationList(OtherDeductionDetailQueryParam param) { + return getOtherDeductionService(user).grantDonationList(param); + } + + public PageInfo healthInsuranceList(OtherDeductionDetailQueryParam param) { + return getOtherDeductionService(user).healthInsuranceList(param); + } + + public PageInfo otherDerateDeductionList(OtherDeductionDetailQueryParam param) { + return getOtherDeductionService(user).otherDerateDeductionList(param); + } + + public PageInfo personalPensionList(OtherDeductionDetailQueryParam param) { + return getOtherDeductionService(user).personalPensionList(param); } public void saveFreeIncome(FreeIncomeSaveParam param) { getOtherDeductionService(user).saveFreeIncome(param); } -} + + public void saveEndowmentInsurance(EndowmentInsuranceSaveParam param) { + getOtherDeductionService(user).saveEndowmentInsurance(param); + } + + public void saveGrantDonation(GrantDonationSaveParam param) { + getOtherDeductionService(user).saveGrantDonation(param); + } + + public void saveHealthInsurance(HealthInsuranceSaveParam param) { + getOtherDeductionService(user).saveHealthInsurance(param); + } + + public void saveOtherDerateDeduction(OtherDerateDeductionSaveParam param) { + getOtherDeductionService(user).saveOtherDerateDeduction(param); + } + + public void saveDerateDeduction(DerateDeductionSaveParam param) { + getOtherDeductionService(user).saveDerateDeduction(param); + } + + public void savePersonalPension(PersonalPensionSaveParam param) { + getOtherDeductionService(user).savePersonalPension(param); + } + + public void deleteFreeIncome(OtherDeductionDetailDeleteParam param) { + getOtherDeductionService(user).deleteFreeIncome(param); + } + + public void deleteEndowmentInsurance(OtherDeductionDetailDeleteParam param) { + getOtherDeductionService(user).deleteEndowmentInsurance(param); + } + + public void deleteGrantDonation(OtherDeductionDetailDeleteParam param) { + getOtherDeductionService(user).deleteGrantDonation(param); + } + + public void deleteHealthInsurance(OtherDeductionDetailDeleteParam param) { + getOtherDeductionService(user).deleteHealthInsurance(param); + } + + public void deleteOtherDerateDeduction(OtherDeductionDetailDeleteParam param) { + getOtherDeductionService(user).deleteOtherDerateDeduction(param); + } + + public void deleteDerateDeduction(OtherDeductionDetailDeleteParam param) { + getOtherDeductionService(user).deleteDerateDeduction(param); + } + + public void deletePersonalPension(OtherDeductionDetailDeleteParam param) { + getOtherDeductionService(user).deletePersonalPension(param); + } + +} \ No newline at end of file From d4a42e0ed68d8fecf84aba593df87200eb613b88 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Wed, 25 Dec 2024 11:27:06 +0800 Subject: [PATCH 208/218] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=BA=BA=E5=91=98?= =?UTF-8?q?=E7=A1=AE=E8=AE=A4=E9=A1=B5=E9=9D=A2=E2=80=9C=E7=8E=AF=E6=AF=94?= =?UTF-8?q?=E4=B8=8A=E6=9C=88=E5=87=8F=E5=B0=91=E4=BA=BA=E5=91=98=E2=80=9D?= =?UTF-8?q?=E6=90=9C=E7=B4=A2=E5=90=8E=EF=BC=8C=E6=98=BE=E7=A4=BA=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/SalaryAcctEmployeeServiceImpl.java | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/com/engine/salary/service/impl/SalaryAcctEmployeeServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctEmployeeServiceImpl.java index 3932486e6..6f0bbb2e2 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctEmployeeServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctEmployeeServiceImpl.java @@ -297,12 +297,15 @@ public class SalaryAcctEmployeeServiceImpl extends Service implements SalaryAcct return Collections.emptyList(); } Set lastMonthSalaryAcctRecordIds = SalaryEntityUtil.properties(salaryAcctRecordPOS, SalaryAcctRecordPO::getId); - // 上个月的核算人员 - List lastMonthSalaryAcctEmployeePOS = listBySalaryAcctRecordIds(lastMonthSalaryAcctRecordIds); - Map lastMonthSalaryAcctEmployeePOMap = SalaryEntityUtil.convert2Map(lastMonthSalaryAcctEmployeePOS, salaryAcctEmployeePO -> salaryAcctEmployeePO.getEmployeeId() + "-" + salaryAcctEmployeePO.getTaxAgentId()); // 本月的核算人员 - List salaryAcctEmployeePOS = listByParam(queryParam); + List salaryAcctEmployeePOS = listBySalaryAcctRecordId(queryParam.getSalaryAcctRecordId()); Set keySet = SalaryEntityUtil.properties(salaryAcctEmployeePOS, salaryAcctEmployeePO -> salaryAcctEmployeePO.getEmployeeId() + "-" + salaryAcctEmployeePO.getTaxAgentId()); + // 上个月的核算人员 + queryParam.setSalaryAcctRecordId(null); + queryParam.setSalaryAcctRecordIds(lastMonthSalaryAcctRecordIds); + List lastMonthSalaryAcctEmployeePOS = listByParam(queryParam); + Map lastMonthSalaryAcctEmployeePOMap = SalaryEntityUtil.convert2Map(lastMonthSalaryAcctEmployeePOS, salaryAcctEmployeePO -> salaryAcctEmployeePO.getEmployeeId() + "-" + salaryAcctEmployeePO.getTaxAgentId()); + List resultList = Lists.newArrayList(); if (CollectionUtils.isNotEmpty(keySet)) { lastMonthSalaryAcctEmployeePOMap.forEach((k, v) -> { From 18bd6509dbc049bc6b81ed4a769ec692c8a82fea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Wed, 25 Dec 2024 16:28:21 +0800 Subject: [PATCH 209/218] =?UTF-8?q?=E5=AF=BC=E5=85=A5=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../datacollection/po/OtherDeductionPO.java | 88 ++- .../datacollection/po/PersonalPensionPO.java | 2 + .../datacollection/DerateDeductionMapper.java | 3 + .../datacollection/DerateDeductionMapper.xml | 533 +++++++++--------- .../EndowmentInsuranceMapper.java | 3 +- .../EndowmentInsuranceMapper.xml | 8 + .../datacollection/FreeIncomeMapper.java | 4 +- .../datacollection/FreeIncomeMapper.xml | 8 + .../datacollection/GrantDonationMapper.java | 3 +- .../datacollection/GrantDonationMapper.xml | 7 + .../datacollection/HealthInsuranceMapper.java | 3 +- .../datacollection/HealthInsuranceMapper.xml | 7 + .../datacollection/OtherDeductionMapper.java | 70 ++- .../datacollection/OtherDeductionMapper.xml | 222 ++++++++ .../OtherDerateDeductionMapper.java | 2 + .../OtherDerateDeductionMapper.xml | 8 + .../datacollection/PersonalPensionMapper.java | 2 + .../datacollection/PersonalPensionMapper.xml | 8 + .../impl/OtherDeductionServiceImpl.java | 62 ++ 19 files changed, 736 insertions(+), 307 deletions(-) diff --git a/src/com/engine/salary/entity/datacollection/po/OtherDeductionPO.java b/src/com/engine/salary/entity/datacollection/po/OtherDeductionPO.java index 82d83784c..bea18e842 100644 --- a/src/com/engine/salary/entity/datacollection/po/OtherDeductionPO.java +++ b/src/com/engine/salary/entity/datacollection/po/OtherDeductionPO.java @@ -1,8 +1,9 @@ package com.engine.salary.entity.datacollection.po; +import cn.hutool.core.util.NumberUtil; +import com.engine.hrmelog.annotation.ElogTransform; import com.engine.salary.annotation.Encrypt; import com.engine.salary.annotation.SalaryFormulaVar; -import com.engine.hrmelog.annotation.ElogTransform; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -19,31 +20,31 @@ import java.util.List; @Builder @NoArgsConstructor @AllArgsConstructor -@ElogTransform( name = "其他免税扣除") +@ElogTransform(name = "其他免税扣除") public class OtherDeductionPO { /** * 主键 */ - @ElogTransform( name="主键id" ) + @ElogTransform(name = "主键id") private Long id; /** * 人员信息表的主键id */ - @ElogTransform( name ="人员id") + @ElogTransform(name = "人员id") private Long employeeId; /** * 个税扣缴义务人的主键id */ - @ElogTransform( name ="个税扣缴义务人id") + @ElogTransform(name = "个税扣缴义务人id") private Long taxAgentId; /** * 申报月份 */ - @ElogTransform( name ="税款所属期") + @ElogTransform(name = "税款所属期") private Date declareMonth; /** @@ -65,7 +66,7 @@ public class OtherDeductionPO { /** * 商业健康保险 */ - @ElogTransform( name ="商业健康保险") + @ElogTransform(name = "商业健康保险") @SalaryFormulaVar(defaultLabel = "商业健康保险", labelId = 91238, dataType = "number") @Encrypt private String businessHealthyInsurance; @@ -73,7 +74,7 @@ public class OtherDeductionPO { /** * 税延养老保险 */ - @ElogTransform( name ="税延养老保险") + @ElogTransform(name = "税延养老保险") @SalaryFormulaVar(defaultLabel = "税延养老保险", labelId = 91239, dataType = "number") @Encrypt private String taxDelayEndowmentInsurance; @@ -82,7 +83,7 @@ public class OtherDeductionPO { /** * 其他 */ - @ElogTransform( name ="其他") + @ElogTransform(name = "其他") @SalaryFormulaVar(defaultLabel = "其他", labelId = 84500, dataType = "number") @Encrypt private String otherDeduction; @@ -90,7 +91,7 @@ public class OtherDeductionPO { /** * 准予扣除的捐赠额 */ - @ElogTransform( name ="准予扣除的捐赠额") + @ElogTransform(name = "准予扣除的捐赠额") @SalaryFormulaVar(defaultLabel = "准予扣除的捐赠额", labelId = 91240, dataType = "number") @Encrypt private String deductionAllowedDonation; @@ -98,7 +99,7 @@ public class OtherDeductionPO { /** * 个人养老金 */ - @ElogTransform( name ="个人养老金") + @ElogTransform(name = "个人养老金") @SalaryFormulaVar(defaultLabel = "个人养老金", labelId = 91240, dataType = "number") @Encrypt private String privatePension; @@ -106,19 +107,19 @@ public class OtherDeductionPO { /** * 创建时间 */ - @ElogTransform( name ="创建时间") + @ElogTransform(name = "创建时间") private Date createTime; /** * 更新时间 */ - @ElogTransform( name ="更新时间") + @ElogTransform(name = "更新时间") private Date updateTime; /** * 创建人 */ - @ElogTransform( name ="创建人id") + @ElogTransform(name = "创建人id") private Long creator; /** @@ -129,7 +130,7 @@ public class OtherDeductionPO { /** * 租户ID */ - @ElogTransform( name ="租户") + @ElogTransform(name = "租户") private String tenantKey; private List employeeIds; @@ -137,11 +138,64 @@ public class OtherDeductionPO { private List freeIncomeList; - private List derateDeductionList; + private List healthInsuranceList; private List endowmentInsuranceList; private List grantDonationList; - private List healthInsuranceList; + private List derateDeductionList; private List otherDerateDeductionList; private List personalPensionList; + + public void handleList() { + freeIncome = freeIncomeList + .stream() + .map(FreeIncomePO::getFreeAmount) + .filter(NumberUtil::isNumber) + .mapToDouble(Double::valueOf) + .sum() + ""; + + derateDeduction = derateDeductionList + .stream() + .map(DerateDeductionPO::getDerateAmount) + .filter(NumberUtil::isNumber) + .mapToDouble(Double::valueOf) + .sum() + ""; + + taxDelayEndowmentInsurance = endowmentInsuranceList + .stream() + .map(EndowmentInsurancePO::getCurrentDeduction) + .filter(NumberUtil::isNumber) + .mapToDouble(Double::valueOf) + .sum() + ""; + + deductionAllowedDonation = grantDonationList + .stream() + .map(GrantDonationPO::getActualDeduction) + .filter(NumberUtil::isNumber) + .mapToDouble(Double::valueOf) + .sum() + ""; + + businessHealthyInsurance = healthInsuranceList + .stream() + .map(HealthInsurancePO::getCurrentDeduction) + .filter(NumberUtil::isNumber) + .mapToDouble(Double::valueOf) + .sum() + ""; + + otherDeduction = otherDerateDeductionList + .stream() + .map(OtherDerateDeductionPO::getOtherDeduction) + .filter(NumberUtil::isNumber) + .mapToDouble(Double::valueOf) + .sum() + ""; + + privatePension = personalPensionList + .stream() + .map(PersonalPensionPO::getPayAmount) + .filter(NumberUtil::isNumber) + .mapToDouble(Double::valueOf) + .sum() + ""; + + } + } \ No newline at end of file diff --git a/src/com/engine/salary/entity/datacollection/po/PersonalPensionPO.java b/src/com/engine/salary/entity/datacollection/po/PersonalPensionPO.java index 8732c4af5..766ad4783 100644 --- a/src/com/engine/salary/entity/datacollection/po/PersonalPensionPO.java +++ b/src/com/engine/salary/entity/datacollection/po/PersonalPensionPO.java @@ -76,6 +76,8 @@ public class PersonalPensionPO{ @ElogTransform(name = "采集来源") private String collectSource; + private Long ebDataId; + @ElogTransform(name = "创建时间", ignore = true) private Date createTime; diff --git a/src/com/engine/salary/mapper/datacollection/DerateDeductionMapper.java b/src/com/engine/salary/mapper/datacollection/DerateDeductionMapper.java index 35ca29ab5..0fbb3b143 100644 --- a/src/com/engine/salary/mapper/datacollection/DerateDeductionMapper.java +++ b/src/com/engine/salary/mapper/datacollection/DerateDeductionMapper.java @@ -69,5 +69,8 @@ public interface DerateDeductionMapper { * @param ids 主键id集合 */ void deleteByIds(@Param("ids") Collection ids); + + + void deleteByMainId(Long mainId); } \ No newline at end of file diff --git a/src/com/engine/salary/mapper/datacollection/DerateDeductionMapper.xml b/src/com/engine/salary/mapper/datacollection/DerateDeductionMapper.xml index c6641f0d6..e3585c01f 100644 --- a/src/com/engine/salary/mapper/datacollection/DerateDeductionMapper.xml +++ b/src/com/engine/salary/mapper/datacollection/DerateDeductionMapper.xml @@ -1,27 +1,29 @@ - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - t.create_time + t + . + create_time , t.creator , t.delete_type , t.derate_amount @@ -36,278 +38,285 @@ , t.tax_year_month , t.tenant_key , t.update_time - - + + - - + + + - + SELECT + + FROM hrsa_derate_deduction t + WHERE id = #{id} AND delete_type = 0 + + - + SELECT + + FROM hrsa_derate_deduction t + WHERE delete_type = 0 + + AND create_time = #{createTime} + + + AND creator = #{creator} + + + AND delete_type = #{deleteType} + + + AND derate_amount = #{derateAmount} + + + AND derate_item = #{derateItem} + + + AND derate_property = #{derateProperty} + + + AND employee_id = #{employeeId} + + + AND employee_type = #{employeeType} + + + AND file_status = #{fileStatus} + + + AND id = #{id} + + + AND main_id = #{mainId} + + + AND tax_agent_id = #{taxAgentId} + + + AND tax_year_month = #{taxYearMonth} + + + AND tenant_key = #{tenantKey} + + + AND update_time = #{updateTime} + + AND id IN #{id} ORDER BY id DESC - - - + + + - INSERT INTO hrsa_derate_deduction - + INSERT INTO hrsa_derate_deduction + - - create_time, - - - creator, - - - delete_type, - - - derate_amount, - - - derate_item, - - - derate_property, - - - employee_id, - - - employee_type, - - - file_status, - - - id, - - - main_id, - - - tax_agent_id, - - - tax_year_month, - - - tenant_key, - - - update_time, - - - - - #{createTime}, - - - #{creator}, - - - #{deleteType}, - - - #{derateAmount}, - - - #{derateItem}, - - - #{derateProperty}, - - - #{employeeId}, - - - #{employeeType}, - - - #{fileStatus}, - - - #{id}, - - - #{mainId}, - - - #{taxAgentId}, - - - #{taxYearMonth}, - - - #{tenantKey}, - - - #{updateTime}, - - + + create_time, + + + creator, + + + delete_type, + + + derate_amount, + + + derate_item, + + + derate_property, + + + employee_id, + + + employee_type, + + + file_status, + + + id, + + + main_id, + + + tax_agent_id, + + + tax_year_month, + + + tenant_key, + + + update_time, + + + + + #{createTime}, + + + #{creator}, + + + #{deleteType}, + + + #{derateAmount}, + + + #{derateItem}, + + + #{derateProperty}, + + + #{employeeId}, + + + #{employeeType}, + + + #{fileStatus}, + + + #{id}, + + + #{mainId}, + + + #{taxAgentId}, + + + #{taxYearMonth}, + + + #{tenantKey}, + + + #{updateTime}, + + - - + - UPDATE hrsa_derate_deduction - - create_time=#{createTime}, - creator=#{creator}, - delete_type=#{deleteType}, - derate_amount=#{derateAmount}, - derate_item=#{derateItem}, - derate_property=#{derateProperty}, - employee_id=#{employeeId}, - employee_type=#{employeeType}, - file_status=#{fileStatus}, - main_id=#{mainId}, - tax_agent_id=#{taxAgentId}, - tax_year_month=#{taxYearMonth}, - tenant_key=#{tenantKey}, - update_time=#{updateTime}, - - WHERE id = #{id} AND delete_type = 0 - - - - - - UPDATE hrsa_derate_deduction - - - create_time=#{createTime}, - - - creator=#{creator}, - - - delete_type=#{deleteType}, - - - derate_amount=#{derateAmount}, - - - derate_item=#{derateItem}, - - - derate_property=#{derateProperty}, - - - employee_id=#{employeeId}, - - - employee_type=#{employeeType}, - - - file_status=#{fileStatus}, - - - main_id=#{mainId}, - - - tax_agent_id=#{taxAgentId}, - - - tax_year_month=#{taxYearMonth}, - - - tenant_key=#{tenantKey}, - - - update_time=#{updateTime}, - - - WHERE id = #{id} AND delete_type = 0 + UPDATE hrsa_derate_deduction + + create_time=#{createTime}, + creator=#{creator}, + delete_type=#{deleteType}, + derate_amount=#{derateAmount}, + derate_item=#{derateItem}, + derate_property=#{derateProperty}, + employee_id=#{employeeId}, + employee_type=#{employeeType}, + file_status=#{fileStatus}, + main_id=#{mainId}, + tax_agent_id=#{taxAgentId}, + tax_year_month=#{taxYearMonth}, + tenant_key=#{tenantKey}, + update_time=#{updateTime}, + + WHERE id = #{id} AND delete_type = 0 - - - - UPDATE hrsa_derate_deduction - SET delete_type=1 - WHERE id = #{id} AND delete_type = 0 - - + + + + UPDATE hrsa_derate_deduction + + + create_time=#{createTime}, + + + creator=#{creator}, + + + delete_type=#{deleteType}, + + + derate_amount=#{derateAmount}, + + + derate_item=#{derateItem}, + + + derate_property=#{derateProperty}, + + + employee_id=#{employeeId}, + + + employee_type=#{employeeType}, + + + file_status=#{fileStatus}, + + + main_id=#{mainId}, + + + tax_agent_id=#{taxAgentId}, + + + tax_year_month=#{taxYearMonth}, + + + tenant_key=#{tenantKey}, + + + update_time=#{updateTime}, + + + WHERE id = #{id} AND delete_type = 0 + + + + + + UPDATE hrsa_derate_deduction + SET delete_type=1 + WHERE id = #{id} + AND delete_type = 0 + + UPDATE hrsa_derate_deduction SET delete_type = 1 - WHERE delete_type = 0 + WHERE delete_type = 0 AND id IN #{id} + + UPDATE hrsa_derate_deduction + SET delete_type = 1 + WHERE delete_type = 0 + AND main_id = #{mainId} + \ No newline at end of file diff --git a/src/com/engine/salary/mapper/datacollection/EndowmentInsuranceMapper.java b/src/com/engine/salary/mapper/datacollection/EndowmentInsuranceMapper.java index a045a9ee2..7d9bcb083 100644 --- a/src/com/engine/salary/mapper/datacollection/EndowmentInsuranceMapper.java +++ b/src/com/engine/salary/mapper/datacollection/EndowmentInsuranceMapper.java @@ -69,5 +69,6 @@ public interface EndowmentInsuranceMapper { * @param ids 主键id集合 */ void deleteByIds(@Param("ids") Collection ids); - + + void deleteByMainId(Long mainId); } \ No newline at end of file diff --git a/src/com/engine/salary/mapper/datacollection/EndowmentInsuranceMapper.xml b/src/com/engine/salary/mapper/datacollection/EndowmentInsuranceMapper.xml index 277843ea4..8d673f35b 100644 --- a/src/com/engine/salary/mapper/datacollection/EndowmentInsuranceMapper.xml +++ b/src/com/engine/salary/mapper/datacollection/EndowmentInsuranceMapper.xml @@ -356,5 +356,13 @@ + + UPDATE hrsa_endowment_insurance + SET delete_type = 1 + WHERE delete_type = 0 + AND main_id = #{mainId} + + + \ No newline at end of file diff --git a/src/com/engine/salary/mapper/datacollection/FreeIncomeMapper.java b/src/com/engine/salary/mapper/datacollection/FreeIncomeMapper.java index 1c7489927..a977ee060 100644 --- a/src/com/engine/salary/mapper/datacollection/FreeIncomeMapper.java +++ b/src/com/engine/salary/mapper/datacollection/FreeIncomeMapper.java @@ -68,5 +68,7 @@ public interface FreeIncomeMapper { * @param ids 主键id集合 */ void deleteByIds(@Param("ids") Collection ids); - + + void deleteByMainId(Long mainId); + } \ No newline at end of file diff --git a/src/com/engine/salary/mapper/datacollection/FreeIncomeMapper.xml b/src/com/engine/salary/mapper/datacollection/FreeIncomeMapper.xml index e10253fc0..87ed57c0c 100644 --- a/src/com/engine/salary/mapper/datacollection/FreeIncomeMapper.xml +++ b/src/com/engine/salary/mapper/datacollection/FreeIncomeMapper.xml @@ -311,5 +311,13 @@ + + UPDATE hrsa_free_income + SET delete_type = 1 + WHERE delete_type = 0 + AND main_id = #{mainId} + + + \ No newline at end of file diff --git a/src/com/engine/salary/mapper/datacollection/GrantDonationMapper.java b/src/com/engine/salary/mapper/datacollection/GrantDonationMapper.java index 5612833de..b5df0a8e1 100644 --- a/src/com/engine/salary/mapper/datacollection/GrantDonationMapper.java +++ b/src/com/engine/salary/mapper/datacollection/GrantDonationMapper.java @@ -69,5 +69,6 @@ public interface GrantDonationMapper { * @param ids 主键id集合 */ void deleteByIds(@Param("ids") Collection ids); - + + void deleteByMainId(Long mainId); } \ No newline at end of file diff --git a/src/com/engine/salary/mapper/datacollection/GrantDonationMapper.xml b/src/com/engine/salary/mapper/datacollection/GrantDonationMapper.xml index 2a68136eb..8fa17414e 100644 --- a/src/com/engine/salary/mapper/datacollection/GrantDonationMapper.xml +++ b/src/com/engine/salary/mapper/datacollection/GrantDonationMapper.xml @@ -371,5 +371,12 @@ + + UPDATE hrsa_grant_donation + SET delete_type = 1 + WHERE delete_type = 0 + AND main_id = #{mainId} + + \ No newline at end of file diff --git a/src/com/engine/salary/mapper/datacollection/HealthInsuranceMapper.java b/src/com/engine/salary/mapper/datacollection/HealthInsuranceMapper.java index b382963f2..2bd55f7b9 100644 --- a/src/com/engine/salary/mapper/datacollection/HealthInsuranceMapper.java +++ b/src/com/engine/salary/mapper/datacollection/HealthInsuranceMapper.java @@ -69,5 +69,6 @@ public interface HealthInsuranceMapper { * @param ids 主键id集合 */ void deleteByIds(@Param("ids") Collection ids); - + + void deleteByMainId(Long mainId); } \ No newline at end of file diff --git a/src/com/engine/salary/mapper/datacollection/HealthInsuranceMapper.xml b/src/com/engine/salary/mapper/datacollection/HealthInsuranceMapper.xml index 71d4cdde1..4ed0bd9a1 100644 --- a/src/com/engine/salary/mapper/datacollection/HealthInsuranceMapper.xml +++ b/src/com/engine/salary/mapper/datacollection/HealthInsuranceMapper.xml @@ -341,5 +341,12 @@ + + UPDATE hrsa_health_insurance + SET delete_type = 1 + WHERE delete_type = 0 + AND main_id = #{mainId} + + \ No newline at end of file diff --git a/src/com/engine/salary/mapper/datacollection/OtherDeductionMapper.java b/src/com/engine/salary/mapper/datacollection/OtherDeductionMapper.java index 7638a60cc..0eaa2b5c2 100644 --- a/src/com/engine/salary/mapper/datacollection/OtherDeductionMapper.java +++ b/src/com/engine/salary/mapper/datacollection/OtherDeductionMapper.java @@ -11,42 +11,64 @@ import java.util.List; public interface OtherDeductionMapper { - /** + /** * 根据主键查询 * * @param id 主键 * @return 返回记录,没有返回null */ - OtherDeductionPO getById(Long id); + OtherDeductionPO getById(Long id); - /** - * 查询数据采集-其他免税扣除列表 - * @param param - * @return - */ - List list(@Param("param") OtherDeductionQueryParam param); + /** + * 查询数据采集-其他免税扣除列表 + * + * @param param + * @return + */ + List list(@Param("param") OtherDeductionQueryParam param); - List recordList(@Param("param") OtherDeductionQueryParam param); + List recordList(@Param("param") OtherDeductionQueryParam param); - List listSome(@Param("param") OtherDeductionPO param); + List listSome(@Param("param") OtherDeductionPO param); - /** - * 批量插入 - * @param pos - */ - void insertData(@Param("collection") List pos); + /** + * 批量插入 + * + * @param pos + */ + void insertData(@Param("collection") List pos); - /** - * 批量修改 - * @param pos - */ - void updateData(@Param("collection") List pos); + /** + * 批量修改 + * + * @param pos + */ + void updateData(@Param("collection") List pos); - /** - * 批量删除 - * @param longs - */ + /** + * 新增,忽略null字段 + * + * @param otherDeduction 新增的记录 + * @return 返回影响行数 + */ + int insertIgnoreNull(OtherDeductionPO otherDeduction); + + /** + * 批量删除 + * + * @param longs + */ void deleteData(List longs); + + /** + * 删除记录 + * + * @param otherDeduction 待删除的记录 + * @return 返回影响行数 + */ + int delete(OtherDeductionPO otherDeduction); + + OtherDeductionPO getByTaxAgentIdAndEmployeeId(@Param("taxAgentId") Long taxAgentId, @Param("employeeId") Long employeeId); } \ No newline at end of file diff --git a/src/com/engine/salary/mapper/datacollection/OtherDeductionMapper.xml b/src/com/engine/salary/mapper/datacollection/OtherDeductionMapper.xml index 03c20d1bb..f17af4a9c 100644 --- a/src/com/engine/salary/mapper/datacollection/OtherDeductionMapper.xml +++ b/src/com/engine/salary/mapper/datacollection/OtherDeductionMapper.xml @@ -53,6 +53,22 @@ + + UPDATE hrsa_other_deduction + SET delete_type=1 + WHERE id = #{id} AND delete_type = 0 + + + + +