From bbb8417008a1dce05a469be12e0003a4b17a5156 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Tue, 18 Jul 2023 16:28:29 +0800 Subject: [PATCH 01/48] =?UTF-8?q?=E8=87=AA=E5=AE=9A=E4=B9=89=E5=B7=A5?= =?UTF-8?q?=E8=B5=84=E9=A1=B9=E7=9B=AE=E5=B1=95=E7=A4=BA=E5=90=8Dtemp?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salaryBill/po/SalaryBillItemNamePO.java | 40 ++++++ .../salarybill/SalaryBillItemNameMapper.java | 68 +++++++++ .../salarybill/SalaryBillItemNameMapper.xml | 135 ++++++++++++++++++ .../service/SalaryBillItemNameService.java | 62 ++++++++ .../impl/SalaryBillItemNameServiceImpl.java | 51 +++++++ 5 files changed, 356 insertions(+) create mode 100644 src/com/engine/salary/entity/salaryBill/po/SalaryBillItemNamePO.java create mode 100644 src/com/engine/salary/mapper/salarybill/SalaryBillItemNameMapper.java create mode 100644 src/com/engine/salary/mapper/salarybill/SalaryBillItemNameMapper.xml create mode 100644 src/com/engine/salary/service/SalaryBillItemNameService.java create mode 100644 src/com/engine/salary/service/impl/SalaryBillItemNameServiceImpl.java diff --git a/src/com/engine/salary/entity/salaryBill/po/SalaryBillItemNamePO.java b/src/com/engine/salary/entity/salaryBill/po/SalaryBillItemNamePO.java new file mode 100644 index 000000000..e5170d6d0 --- /dev/null +++ b/src/com/engine/salary/entity/salaryBill/po/SalaryBillItemNamePO.java @@ -0,0 +1,40 @@ +package com.engine.salary.entity.salaryBill.po; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Collection; + +/** + * @author Harryxzy + * @ClassName SalaryBillItemName + * @date 2023/07/18 15:55 + * @description 工资单薪资项目展示名称 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class SalaryBillItemNamePO { + private Long id; + + /** + * 薪资项目id + */ + private Long salaryItemId; + + /** + * 薪资项目展示名称 + */ + private String salaryItemShowName; + + /** + * 工资单模板id + */ + private Long salaryTemplateId; + + //主键id集合 + private Collection ids; +} diff --git a/src/com/engine/salary/mapper/salarybill/SalaryBillItemNameMapper.java b/src/com/engine/salary/mapper/salarybill/SalaryBillItemNameMapper.java new file mode 100644 index 000000000..f589a0ae6 --- /dev/null +++ b/src/com/engine/salary/mapper/salarybill/SalaryBillItemNameMapper.java @@ -0,0 +1,68 @@ +package com.engine.salary.mapper.salarybill; + +import com.engine.salary.entity.salaryBill.po.SalaryBillItemNamePO; + +import java.util.List; + +/** + * @author Harryxzy + * @ClassName SalaryBillItemNameMapper + * @date 2023/07/18 15:58 + * @description 工资单薪资项目展示名 + */ +public interface SalaryBillItemNameMapper { + /** + * 查询所有记录 + * + * @return 返回集合,没有返回空List + */ + List listAll(); + + /** + * 条件查询 + * + * @return 返回集合,没有返回空List + */ + List listSome(SalaryBillItemNamePO salaryBillItemNamePO); + + + /** + * 根据主键查询 + * + * @param id 主键 + * @return 返回记录,没有返回null + */ + SalaryBillItemNamePO getById(Long id); + + /** + * 新增,忽略null字段 + * + * @param salaryBillItemNamePO 新增的记录 + * @return 返回影响行数 + */ + int insertIgnoreNull(SalaryBillItemNamePO salaryBillItemNamePO); + + /** + * 修改,修改所有字段 + * + * @param salaryBillItemNamePO 修改的记录 + * @return 返回影响行数 + */ + int update(SalaryBillItemNamePO salaryBillItemNamePO); + + /** + * 修改,忽略null字段 + * + * @param salaryBillItemNamePO 修改的记录 + * @return 返回影响行数 + */ + int updateIgnoreNull(SalaryBillItemNamePO salaryBillItemNamePO); + + /** + * 删除记录 + * + * @param id 待删除的记录id + * @return 返回影响行数 + */ + int delete(Long id); +} diff --git a/src/com/engine/salary/mapper/salarybill/SalaryBillItemNameMapper.xml b/src/com/engine/salary/mapper/salarybill/SalaryBillItemNameMapper.xml new file mode 100644 index 000000000..3e6f61f46 --- /dev/null +++ b/src/com/engine/salary/mapper/salarybill/SalaryBillItemNameMapper.xml @@ -0,0 +1,135 @@ + + + + + + + + + + + + + t.id + , t.salary_item_id + , t.salary_item_show_name + , t.salary_template_id + + + + + + + + + + + + + + + INSERT INTO hrsa_salary_bill_item_name + + + + id, + + + salary_item_id, + + + salary_item_show_name, + + + salary_template_id, + + + + + #{id}, + + + #{salaryItemId}, + + + #{salaryItemShowName}, + + + #{salaryTemplateId}, + + + + + + + UPDATE hrsa_salary_bill_item_name + + salary_item_id=#{salaryItemId}, + salary_item_show_name=#{salaryItemShowName}, + salary_template_id=#{salaryTemplateId}, + + WHERE id = #{id} AND delete_type = 0 + + + + + + UPDATE hrsa_salary_bill_item_name + + + salary_item_id=#{salaryItemId}, + + + salary_item_show_name=#{salaryItemShowName}, + + + salary_template_id=#{salaryTemplateId}, + + + WHERE id = #{id} AND delete_type = 0 + + + + + + UPDATE hrsa_salary_bill_item_name + 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/SalaryBillItemNameService.java b/src/com/engine/salary/service/SalaryBillItemNameService.java new file mode 100644 index 000000000..258740091 --- /dev/null +++ b/src/com/engine/salary/service/SalaryBillItemNameService.java @@ -0,0 +1,62 @@ +package com.engine.salary.service; + +import com.engine.salary.entity.salaryBill.po.SalaryBillItemNamePO; + +import java.util.List; + +/** + * @author Harryxzy + * @ClassName SalaryBillItemNameService + * @date 2023/07/18 16:15 + * @description 工资单薪资项目展示名称 + */ +public interface SalaryBillItemNameService { + /** + * 查询所有记录 + * + * @return 返回集合,没有返回空List + */ + List listAll(); + + + /** + * 根据主键查询 + * + * @param id 主键 + * @return 返回记录,没有返回null + */ + SalaryBillItemNamePO getById(Long id); + + /** + * 新增,忽略null字段 + * + * @param salaryBillItemNamePO 新增的记录 + * @return 返回影响行数 + */ + int insertIgnoreNull(SalaryBillItemNamePO salaryBillItemNamePO); + + /** + * 修改,修改所有字段 + * + * @param salaryBillItemNamePO 修改的记录 + * @return 返回影响行数 + */ + int update(SalaryBillItemNamePO salaryBillItemNamePO); + + /** + * 修改,忽略null字段 + * + * @param salaryBillItemNamePO 修改的记录 + * @return 返回影响行数 + */ + int updateIgnoreNull(SalaryBillItemNamePO salaryBillItemNamePO); + + /** + * 删除记录 + * + * @param id 待删除的记录id + * @return 返回影响行数 + */ + int delete(Long id); + +} diff --git a/src/com/engine/salary/service/impl/SalaryBillItemNameServiceImpl.java b/src/com/engine/salary/service/impl/SalaryBillItemNameServiceImpl.java new file mode 100644 index 000000000..a056df963 --- /dev/null +++ b/src/com/engine/salary/service/impl/SalaryBillItemNameServiceImpl.java @@ -0,0 +1,51 @@ +package com.engine.salary.service.impl; + +import com.api.formmode.mybatis.util.SqlProxyHandle; +import com.engine.core.impl.Service; +import com.engine.salary.entity.salaryBill.po.SalaryBillItemNamePO; +import com.engine.salary.mapper.salarybill.SalaryBillItemNameMapper; +import com.engine.salary.service.SalaryBillItemNameService; + +import java.util.List; + +/** + * @author Harryxzy + * @ClassName SalaryBillItemNameServiceImpl + * @date 2023/07/18 16:17 + * @description + */ +public class SalaryBillItemNameServiceImpl extends Service implements SalaryBillItemNameService { + + private SalaryBillItemNameMapper getSalaryBillItemNameMapper() { + return SqlProxyHandle.getProxy(SalaryBillItemNameMapper.class); + } + @Override + public List listAll() { + return getSalaryBillItemNameMapper().listAll(); + } + + @Override + public SalaryBillItemNamePO getById(Long id) { + return getSalaryBillItemNameMapper().getById(id); + } + + @Override + public int insertIgnoreNull(SalaryBillItemNamePO salaryBillItemNamePO) { + return getSalaryBillItemNameMapper().insertIgnoreNull(salaryBillItemNamePO); + } + + @Override + public int update(SalaryBillItemNamePO salaryBillItemNamePO) { + return getSalaryBillItemNameMapper().update(salaryBillItemNamePO); + } + + @Override + public int updateIgnoreNull(SalaryBillItemNamePO salaryBillItemNamePO) { + return getSalaryBillItemNameMapper().updateIgnoreNull(salaryBillItemNamePO); + } + + @Override + public int delete(Long id) { + return getSalaryBillItemNameMapper().delete(id); + } +} From 8e6bd24d0d9c274f9b9c786fa70bc4d722a4be57 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Wed, 19 Jul 2023 16:14:25 +0800 Subject: [PATCH 02/48] =?UTF-8?q?=E8=87=AA=E5=AE=9A=E4=B9=89=E5=B7=A5?= =?UTF-8?q?=E8=B5=84=E9=A1=B9=E7=9B=AE=E5=B1=95=E7=A4=BA=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salaryBill/bo/SalaryBillItemNameBO.java | 31 +++ .../salaryBill/dto/SalaryBillItemNameDTO.java | 30 +++ .../dto/SalaryTemplateReplenishFormDTO.java | 3 + .../dto/SalaryTemplateShowFormDTO.java | 3 + .../param/SalaryBillItemNameSaveParam.java | 46 +++++ .../salaryBill/po/SalaryBillItemNamePO.java | 31 +++ .../salarybill/SalaryBillItemNameMapper.java | 21 ++ .../salarybill/SalaryBillItemNameMapper.xml | 190 ++++++++++++++++++ .../service/SalaryBillItemNameService.java | 26 +++ .../impl/SalaryBillItemNameServiceImpl.java | 113 ++++++++++- .../salary/web/SalaryBillController.java | 13 ++ .../salary/wrapper/SalaryTemplateWrapper.java | 49 ++++- 12 files changed, 550 insertions(+), 6 deletions(-) create mode 100644 src/com/engine/salary/entity/salaryBill/bo/SalaryBillItemNameBO.java create mode 100644 src/com/engine/salary/entity/salaryBill/dto/SalaryBillItemNameDTO.java create mode 100644 src/com/engine/salary/entity/salaryBill/param/SalaryBillItemNameSaveParam.java diff --git a/src/com/engine/salary/entity/salaryBill/bo/SalaryBillItemNameBO.java b/src/com/engine/salary/entity/salaryBill/bo/SalaryBillItemNameBO.java new file mode 100644 index 000000000..0465efd66 --- /dev/null +++ b/src/com/engine/salary/entity/salaryBill/bo/SalaryBillItemNameBO.java @@ -0,0 +1,31 @@ +package com.engine.salary.entity.salaryBill.bo; + +import com.engine.salary.entity.salaryBill.dto.SalaryBillItemNameDTO; +import com.engine.salary.entity.salaryBill.po.SalaryBillItemNamePO; +import org.apache.commons.collections4.CollectionUtils; + +import java.util.Collections; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * @author Harryxzy + * @ClassName SalaryBillItemNameBO + * @date 2023/07/19 9:19 + * @description 工资单薪资项目展示名称 + */ +public class SalaryBillItemNameBO { + + public static List convert2ListDTO(List SalaryBillItemNamePOList, Map itemIdNameMap){ + if (CollectionUtils.isEmpty(SalaryBillItemNamePOList)) { + return Collections.emptyList(); + } + return SalaryBillItemNamePOList.stream() + .map(po -> SalaryBillItemNameDTO.builder() + .salaryItemId(po.getSalaryItemId()) + .salaryItemShowName(po.getSalaryItemShowName()) + .build()) + .collect(Collectors.toList()); + } +} diff --git a/src/com/engine/salary/entity/salaryBill/dto/SalaryBillItemNameDTO.java b/src/com/engine/salary/entity/salaryBill/dto/SalaryBillItemNameDTO.java new file mode 100644 index 000000000..4deae25f5 --- /dev/null +++ b/src/com/engine/salary/entity/salaryBill/dto/SalaryBillItemNameDTO.java @@ -0,0 +1,30 @@ +package com.engine.salary.entity.salaryBill.dto; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @author Harryxzy + * @ClassName SalaryBillItemNameDTO + * @date 2023/07/19 9:21 + * @description 工资单薪资项目展示名称 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class SalaryBillItemNameDTO { + + /** + * 薪资项目id + */ + private Long salaryItemId; + + + /** + * 工资单展示名称 + */ + private String salaryItemShowName; +} diff --git a/src/com/engine/salary/entity/salaryBill/dto/SalaryTemplateReplenishFormDTO.java b/src/com/engine/salary/entity/salaryBill/dto/SalaryTemplateReplenishFormDTO.java index 5a19f39e9..50bc76ba8 100644 --- a/src/com/engine/salary/entity/salaryBill/dto/SalaryTemplateReplenishFormDTO.java +++ b/src/com/engine/salary/entity/salaryBill/dto/SalaryTemplateReplenishFormDTO.java @@ -26,4 +26,7 @@ public class SalaryTemplateReplenishFormDTO { // 薪资项目设置") private List replenishSalaryTemplateSalaryItemSet; + // 工资单项目名称设置 + private List salaryBillItemNameSet; + } diff --git a/src/com/engine/salary/entity/salaryBill/dto/SalaryTemplateShowFormDTO.java b/src/com/engine/salary/entity/salaryBill/dto/SalaryTemplateShowFormDTO.java index 364cb8a63..8f3452076 100644 --- a/src/com/engine/salary/entity/salaryBill/dto/SalaryTemplateShowFormDTO.java +++ b/src/com/engine/salary/entity/salaryBill/dto/SalaryTemplateShowFormDTO.java @@ -29,4 +29,7 @@ public class SalaryTemplateShowFormDTO { // 薪资项目设置") private List salaryTemplateSalaryItemSet; + + // 工资单项目名称设置 + private Map salaryBillItemNameSet; } diff --git a/src/com/engine/salary/entity/salaryBill/param/SalaryBillItemNameSaveParam.java b/src/com/engine/salary/entity/salaryBill/param/SalaryBillItemNameSaveParam.java new file mode 100644 index 000000000..9674df028 --- /dev/null +++ b/src/com/engine/salary/entity/salaryBill/param/SalaryBillItemNameSaveParam.java @@ -0,0 +1,46 @@ +package com.engine.salary.entity.salaryBill.param; + +import lombok.*; + +import java.util.List; + +/** + * @author Harryxzy + * @ClassName SalaryBillItemNameSaveParam + * @date 2023/07/19 10:20 + * @description 设置工资单项目展示名参数 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class SalaryBillItemNameSaveParam { + /** + * 工资单模板id + */ + private Long salaryTemplateId; + + /** + * 工资单类型。0:正常工资单、1:补发工资单 + */ + private Integer salaryBillType; + + private List itemShowNameSetting; + + @Data + @Builder + @NoArgsConstructor + @AllArgsConstructor + public static class itemShowNameSetting { + /** + * 薪资项目id + */ + private Long salaryItemId; + + /** + * 工资单展示名称 + */ + private String salaryItemShowName; + } + +} diff --git a/src/com/engine/salary/entity/salaryBill/po/SalaryBillItemNamePO.java b/src/com/engine/salary/entity/salaryBill/po/SalaryBillItemNamePO.java index e5170d6d0..5dcf872d6 100644 --- a/src/com/engine/salary/entity/salaryBill/po/SalaryBillItemNamePO.java +++ b/src/com/engine/salary/entity/salaryBill/po/SalaryBillItemNamePO.java @@ -6,6 +6,7 @@ import lombok.Data; import lombok.NoArgsConstructor; import java.util.Collection; +import java.util.Date; /** * @author Harryxzy @@ -35,6 +36,36 @@ public class SalaryBillItemNamePO { */ private Long salaryTemplateId; + /** + * 工资单类型。0:正常工资单、1:补发工资单 + */ + private Integer salaryBillType; + + /** + * 创建时间 + */ + private Date createTime; + + /** + * 更新时间 + */ + private Date updateTime; + + /** + * 创建人 + */ + private Long creator; + + /** + * 是否已删除。0:未删除、1:已删除 + */ + private Integer deleteType; + + /** + * 租户ID + */ + private String tenantKey; + //主键id集合 private Collection ids; } diff --git a/src/com/engine/salary/mapper/salarybill/SalaryBillItemNameMapper.java b/src/com/engine/salary/mapper/salarybill/SalaryBillItemNameMapper.java index f589a0ae6..a3cb102a7 100644 --- a/src/com/engine/salary/mapper/salarybill/SalaryBillItemNameMapper.java +++ b/src/com/engine/salary/mapper/salarybill/SalaryBillItemNameMapper.java @@ -1,6 +1,7 @@ package com.engine.salary.mapper.salarybill; import com.engine.salary.entity.salaryBill.po.SalaryBillItemNamePO; +import org.apache.ibatis.annotations.Param; import java.util.List; @@ -65,4 +66,24 @@ public interface SalaryBillItemNameMapper { * @return 返回影响行数 */ int delete(Long id); + + /** + * 批量更新 + * @param salaryBillItemNamePO + */ + void batchUpdate(@Param("collection") List salaryBillItemNamePO); + + /** + * 批量插入 + * @param salaryBillItemNamePO + */ + void batchInsert(@Param("collection") List salaryBillItemNamePO); + + /** + * 根据薪资项目、模板id、模板类型批量删除 + * @param salaryItemIds + * @param salaryTemplateId + * @param salaryBillType + */ + void deleteByItemIdsAndTemplateId(@Param("salaryItemIds") List salaryItemIds, @Param("salaryTemplateId") Long salaryTemplateId, @Param("salaryBillType") Integer salaryBillType); } diff --git a/src/com/engine/salary/mapper/salarybill/SalaryBillItemNameMapper.xml b/src/com/engine/salary/mapper/salarybill/SalaryBillItemNameMapper.xml index 3e6f61f46..03e0b6c6e 100644 --- a/src/com/engine/salary/mapper/salarybill/SalaryBillItemNameMapper.xml +++ b/src/com/engine/salary/mapper/salarybill/SalaryBillItemNameMapper.xml @@ -6,6 +6,11 @@ + + + + + @@ -14,6 +19,12 @@ , t.salary_item_id , t.salary_item_show_name , t.salary_template_id + , t.salary_bill_type + , t.delete_type + , t.creator + , t.create_time + , t.update_time + , t.tenant_key @@ -50,6 +61,9 @@ AND salary_template_id = #{salaryTemplateId} + + AND salary_bill_type = #{salaryBillType} + AND id IN @@ -77,6 +91,24 @@ salary_template_id, + + salary_bill_type, + + + creator, + + + create_time, + + + update_time, + + + delete_type, + + + tenant_key, + @@ -91,9 +123,114 @@ #{salaryTemplateId}, + + #{salaryBillType}, + + + #{creator}, + + + #{createTime}, + + + #{updateTime}, + + + #{deleteType}, + + + #{tenantKey}, + + + INSERT INTO hrsa_salary_bill_item_name ( + id, + salary_template_id, + salary_item_id, + salary_item_show_name, + salary_bill_type, + creator, + create_time, + update_time, + delete_type, + tenant_key + ) + VALUES + + ( + #{item.id}, + #{item.salaryTemplateId}, + #{item.salaryItemId}, + #{item.salaryItemShowName}, + #{item.salaryBillType}, + #{item.creator}, + #{item.createTime}, + #{item.updateTime}, + #{item.deleteType}, + #{item.tenantKey} + ) + + + + INSERT INTO hrsa_salary_send_info ( + id, + salary_template_id, + salary_item_id, + salary_item_show_name, + salary_bill_type, + creator, + create_time, + update_time, + delete_type, + tenant_key + ) + + select + #{item.id,jdbcType=DOUBLE}, + #{item.salaryTemplateId,jdbcType=DOUBLE}, + #{item.salaryItemId,jdbcType=DOUBLE}, + #{item.salaryItemShowName,jdbcType=VARCHAR}, + #{item.salaryBillType,jdbcType=INTEGER}, + #{item.creator,jdbcType=DOUBLE}, + #{item.createTime,jdbcType=DATE}, + #{item.updateTime,jdbcType=DATE}, + #{item.deleteType,jdbcType=INTEGER}, + #{item.tenantKey,jdbcType=VARCHAR} + from dual + + + + + INSERT INTO hrsa_salary_send_info ( + id, + salary_template_id, + salary_item_id, + salary_item_show_name, + salary_bill_type, + creator, + create_time, + update_time, + delete_type, + tenant_key + ) + VALUES + ( + #{item.id}, + #{item.salaryTemplateId}, + #{item.salaryItemId}, + #{item.salaryItemShowName}, + #{item.salaryBillType}, + #{item.creator}, + #{item.createTime}, + #{item.updateTime}, + #{item.deleteType}, + #{item.tenantKey} + ) + + + UPDATE hrsa_salary_bill_item_name @@ -101,6 +238,11 @@ salary_item_id=#{salaryItemId}, salary_item_show_name=#{salaryItemShowName}, salary_template_id=#{salaryTemplateId}, + salary_bill_type=#{salaryBillType}, + creator=#{creator}, + create_time={createTime}, + update_time=#{updateTime}, + tenant_key=#{tenantKey} WHERE id = #{id} AND delete_type = 0 @@ -119,10 +261,46 @@ salary_template_id=#{salaryTemplateId}, + + salary_bill_type=#{salaryBillType}, + + + creator=#{creator}, + + + create_time=#{createTime}, + + + update_time=#{updateTime}, + + + tenant_key=#{tenantKey}, + WHERE id = #{id} AND delete_type = 0 + + UPDATE hrsa_salary_bill_item_name + + + + WHEN id = #{item.id} THEN #{item.salaryItemShowName} + + + + + WHEN id = #{item.id} THEN #{item.updateTime} + + + + WHERE delete_type = 0 + AND id IN + + #{item.id} + + + @@ -131,5 +309,17 @@ WHERE id = #{id} AND delete_type = 0 + + UPDATE hrsa_salary_bill_item_name + SET delete_type=1 + WHERE delete_type = 0 + AND salary_template_id = #{salaryTemplateId} + AND salaryBillType = #{salaryBillType} + AND salary_item_id IN + + #{itemId} + + + \ No newline at end of file diff --git a/src/com/engine/salary/service/SalaryBillItemNameService.java b/src/com/engine/salary/service/SalaryBillItemNameService.java index 258740091..febe56abc 100644 --- a/src/com/engine/salary/service/SalaryBillItemNameService.java +++ b/src/com/engine/salary/service/SalaryBillItemNameService.java @@ -1,5 +1,6 @@ package com.engine.salary.service; +import com.engine.salary.entity.salaryBill.param.SalaryBillItemNameSaveParam; import com.engine.salary.entity.salaryBill.po.SalaryBillItemNamePO; import java.util.List; @@ -59,4 +60,29 @@ public interface SalaryBillItemNameService { */ int delete(Long id); + /** + * 根据工资单模板id和工资单类型获取 设置的项目名称信息 + * @param build + * @return + */ + List ListByTemplateAndType(SalaryBillItemNamePO build); + + /** + * 设置工资单薪资项目显示名 + * @param saveList + */ + void saveItemShowName(List saveList); + + /** + * 批量更新 + * @param needUpdateList + */ + void batchUpdate(List needUpdateList); + + /** + * 批量插入 + * @param needInsertList + */ + void batchInsert(List needInsertList); + } diff --git a/src/com/engine/salary/service/impl/SalaryBillItemNameServiceImpl.java b/src/com/engine/salary/service/impl/SalaryBillItemNameServiceImpl.java index a056df963..2ccee1251 100644 --- a/src/com/engine/salary/service/impl/SalaryBillItemNameServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryBillItemNameServiceImpl.java @@ -1,12 +1,27 @@ package com.engine.salary.service.impl; import com.api.formmode.mybatis.util.SqlProxyHandle; +import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; +import com.engine.salary.constant.SalaryDefaultTenantConstant; +import com.engine.salary.entity.salaryBill.param.SalaryBillItemNameSaveParam; import com.engine.salary.entity.salaryBill.po.SalaryBillItemNamePO; +import com.engine.salary.entity.salaryBill.po.SalaryTemplatePO; +import com.engine.salary.exception.SalaryRunTimeException; import com.engine.salary.mapper.salarybill.SalaryBillItemNameMapper; import com.engine.salary.service.SalaryBillItemNameService; +import com.engine.salary.service.SalaryItemService; +import com.engine.salary.service.SalaryTemplateService; +import com.engine.salary.util.SalaryEntityUtil; +import com.google.common.collect.Lists; +import dm.jdbc.util.IdGenerator; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang.math.NumberUtils; +import org.apache.commons.lang3.StringUtils; +import weaver.hrm.User; -import java.util.List; +import java.util.*; +import java.util.stream.Collectors; /** * @author Harryxzy @@ -19,6 +34,14 @@ public class SalaryBillItemNameServiceImpl extends Service implements SalaryBill private SalaryBillItemNameMapper getSalaryBillItemNameMapper() { return SqlProxyHandle.getProxy(SalaryBillItemNameMapper.class); } + + private SalaryItemService getSalaryItemService(User user) { + return ServiceUtil.getService(SalaryItemServiceImpl.class, user); + } + + private SalaryTemplateService getSalaryTemplateService(User user) { + return ServiceUtil.getService(SalaryTemplateServiceImpl.class, user); + } @Override public List listAll() { return getSalaryBillItemNameMapper().listAll(); @@ -48,4 +71,92 @@ public class SalaryBillItemNameServiceImpl extends Service implements SalaryBill public int delete(Long id) { return getSalaryBillItemNameMapper().delete(id); } + + @Override + public List ListByTemplateAndType(SalaryBillItemNamePO param) { + return getSalaryBillItemNameMapper().listSome(param); + } + + @Override + public void saveItemShowName(List saveList) { + if(CollectionUtils.isEmpty(saveList)) + return; + List templateIdList = saveList.stream().map(SalaryBillItemNameSaveParam::getSalaryTemplateId).distinct().collect(Collectors.toList()); + if(CollectionUtils.isEmpty(templateIdList) || templateIdList.size()>1) + throw new SalaryRunTimeException("工资单模板id为空,或存在多个工资单模板id"); + Long salaryTemplateId = templateIdList.get(0); + SalaryTemplatePO salaryTemplatePO = getSalaryTemplateService(user).getById(salaryTemplateId); + if(Objects.isNull(salaryTemplatePO)) + throw new SalaryRunTimeException("工资单模板不存在或已被删除"); + List needInsertList = new ArrayList<>(); + List needUpdateList = new ArrayList<>(); + Date now = new Date(); + // 根据模板类型分组 + Map> saveMap = SalaryEntityUtil.convert2Map(saveList, SalaryBillItemNameSaveParam::getSalaryBillType, SalaryBillItemNameSaveParam::getItemShowNameSetting); + + for(Map.Entry> entry : saveMap.entrySet()){ + // 获取已经设置的展示名 + List billItemNameList = ListByTemplateAndType(SalaryBillItemNamePO.builder().salaryTemplateId(salaryTemplateId).salaryBillType(entry.getKey()).build()); + Map billItemNameMap = SalaryEntityUtil.convert2Map(billItemNameList, SalaryBillItemNamePO::getSalaryItemId); + List needDeleteItemIdList = new ArrayList<>(); + + entry.getValue().stream().forEach(setting -> { + if(StringUtils.isBlank(setting.getSalaryItemShowName())){ + // 显示名为空则删除设置 + needDeleteItemIdList.add(setting.getSalaryItemId()); + }else{ + if(billItemNameMap.containsKey(setting.getSalaryItemId())){ + // 更新 + SalaryBillItemNamePO po = billItemNameMap.get(setting.getSalaryItemId()); + po.setSalaryItemShowName(setting.getSalaryItemShowName()); + po.setUpdateTime(now); + needUpdateList.add(po); + }else{ + // 新增 + needInsertList.add(SalaryBillItemNamePO.builder() + .id(IdGenerator.generate()) + .salaryItemId(setting.getSalaryItemId()) + .salaryItemShowName(setting.getSalaryItemShowName()) + .salaryTemplateId(salaryTemplateId) + .salaryBillType(entry.getKey()) + .createTime(now) + .updateTime(now) + .creator(Long.valueOf(user.getUID())) + .deleteType(NumberUtils.INTEGER_ZERO) + .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) + .build()); + } + } + }); + // 删除 + batchDeleteByItemIdsAndTemplateId(needDeleteItemIdList, salaryTemplateId, entry.getKey()); + } + // 入库 + batchUpdate(needUpdateList); + batchInsert(needInsertList); + } + + @Override + public void batchUpdate(List needUpdateList) { + if(CollectionUtils.isEmpty(needUpdateList)) + return; + List> partition = Lists.partition(needUpdateList, 500); + partition.forEach(getSalaryBillItemNameMapper()::batchUpdate); + } + + @Override + public void batchInsert(List needInsertList) { + if(CollectionUtils.isEmpty(needInsertList)) + return; + List> partition = Lists.partition(needInsertList, 500); + partition.forEach(getSalaryBillItemNameMapper()::batchInsert); + } + + public void batchDeleteByItemIdsAndTemplateId(List salaryItemIds, Long salaryTemplateId, Integer salaryBillType) { + if(CollectionUtils.isEmpty(salaryItemIds) || Objects.isNull(salaryTemplateId) || Objects.isNull(salaryBillType)) + return; + getSalaryBillItemNameMapper().deleteByItemIdsAndTemplateId(salaryItemIds, salaryTemplateId, salaryBillType); + } + + } diff --git a/src/com/engine/salary/web/SalaryBillController.java b/src/com/engine/salary/web/SalaryBillController.java index ea5cdeece..f8a7ce21d 100644 --- a/src/com/engine/salary/web/SalaryBillController.java +++ b/src/com/engine/salary/web/SalaryBillController.java @@ -98,6 +98,19 @@ public class SalaryBillController { return new ResponseResult(user).run(getSalaryTemplateWrapper(user)::getShowForm, id); } + /** + * 设置工资单模板薪资项显示名称 + * + * @return + */ + @POST + @Path("/template/saveItemShowName") + @Produces(MediaType.APPLICATION_JSON) + public String saveItemShowName(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody List param) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult, String>(user).run(getSalaryTemplateWrapper(user)::saveItemShowName, param); + } + /** * 获取薪资项目设置 * diff --git a/src/com/engine/salary/wrapper/SalaryTemplateWrapper.java b/src/com/engine/salary/wrapper/SalaryTemplateWrapper.java index d5d7a68cf..16de37b83 100644 --- a/src/com/engine/salary/wrapper/SalaryTemplateWrapper.java +++ b/src/com/engine/salary/wrapper/SalaryTemplateWrapper.java @@ -2,8 +2,10 @@ package com.engine.salary.wrapper; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; +import com.engine.salary.entity.salaryBill.bo.SalaryBillItemNameBO; import com.engine.salary.entity.salaryBill.dto.*; import com.engine.salary.entity.salaryBill.param.*; +import com.engine.salary.entity.salaryBill.po.SalaryBillItemNamePO; import com.engine.salary.entity.salaryBill.po.SalaryTemplatePO; import com.engine.salary.entity.salaryitem.po.SalaryItemPO; import com.engine.salary.entity.salarysob.po.SalarySobBackItemPO; @@ -65,6 +67,10 @@ public class SalaryTemplateWrapper extends Service { return ServiceUtil.getService(SalaryBillBaseSetServiceImpl.class, user); } + private SalaryBillItemNameService getSalaryBillItemNameService(User user) { + return ServiceUtil.getService(SalaryBillItemNameServiceImpl.class, user); + } + /** * 工资单模板列表 * @@ -247,12 +253,25 @@ public class SalaryTemplateWrapper extends Service { // List groupPOS = getSalarySobItemGroupService(user).listBySalarySobId(po.getSalarySobId()); // Map groupIdNameMap = SalaryEntityUtil.convert2Map(groupPOS, SalarySobItemGroupPO::getId, SalarySobItemGroupPO::getName); + // 获取工资单薪资项目展示名信息 + List billItemNameList = getSalaryBillItemNameService(user).ListByTemplateAndType(SalaryBillItemNamePO.builder().salaryTemplateId(id).salaryBillType(0).build()); + Map itemShowNameMap = SalaryEntityUtil.convert2Map(billItemNameList, SalaryBillItemNamePO::getSalaryItemId, SalaryBillItemNamePO::getSalaryItemShowName); + // 获取薪资项目信息 + List salaryBillItemNameDTOS = SalaryBillItemNameBO.convert2ListDTO(billItemNameList, itemIdNameMap); + Map salaryBillItemNameDTOMap = SalaryEntityUtil.convert2Map(salaryBillItemNameDTOS, SalaryBillItemNameDTO::getSalaryItemId); + if (CollectionUtils.isNotEmpty(salaryTemplateShowSetData)) { salaryTemplateShowSetData.stream() //排除人员消息 .filter(data -> !StringUtils.equals(data.getGroupId(), "111111111111111111")) .forEach(data -> { - data.getItems().forEach(item -> item.setName(itemIdNameMap.getOrDefault(Long.valueOf(item.getSalaryItemId()), item.getName()))); + data.getItems().forEach(item -> { + Long salaryItemId = Long.valueOf(item.getSalaryItemId()); + item.setName(itemIdNameMap.getOrDefault(salaryItemId, item.getName())); + if(itemShowNameMap.containsKey(salaryItemId)){ + item.setName(itemShowNameMap.get(salaryItemId) + "(" + item.getName() +")"); + } + }); }); } @@ -262,6 +281,7 @@ public class SalaryTemplateWrapper extends Service { .vars(Arrays.stream(SalaryTemplateVarEnum.values()).map(SalaryTemplateVarEnum::getValue).collect(Collectors.toList())) .salaryTemplateShowSet(salaryTemplateShowSet) .salaryTemplateSalaryItemSet(salaryTemplateShowSetData) + .salaryBillItemNameSet(salaryBillItemNameDTOMap) .build(); } @@ -388,6 +408,8 @@ public class SalaryTemplateWrapper extends Service { // 补发薪资项目设置 List replenishSalaryItemSetting; + // 补发薪资项目显示名称 + List salaryBillItemNameDTOS = new ArrayList<>(); if (id != null) { SalaryTemplatePO po = getSalaryTemplateService(user).getById(id); if (po == null) { @@ -399,13 +421,25 @@ public class SalaryTemplateWrapper extends Service { // 同步补发薪资项目名称 List itemPOS = getSalaryItemService(user).listAll(); Map itemIdNameMap = SalaryEntityUtil.convert2Map(itemPOS, SalaryItemPO::getId, SalaryItemPO::getName); + // 获取工资单薪资项目展示名信息 + List billItemNameList = getSalaryBillItemNameService(user).ListByTemplateAndType(SalaryBillItemNamePO.builder().salaryTemplateId(id).salaryBillType(1).build()); + Map itemShowNameMap = SalaryEntityUtil.convert2Map(billItemNameList, SalaryBillItemNamePO::getSalaryItemId, SalaryBillItemNamePO::getSalaryItemShowName); + // 获取薪资项目信息 + salaryBillItemNameDTOS = SalaryBillItemNameBO.convert2ListDTO(billItemNameList, itemIdNameMap); + if (CollectionUtils.isNotEmpty(replenishSalaryItemSetting)) { replenishSalaryItemSetting.stream() //排除人员消息 - .filter(data -> !StringUtils.equals(data.getGroupId(), "111111111111111111")) - .forEach(data -> { - data.getItems().forEach(item -> item.setName(itemIdNameMap.getOrDefault(Long.valueOf(item.getSalaryItemId()), item.getName()))); - }); + .filter(data -> !StringUtils.equals(data.getGroupId(), "111111111111111111")) + .forEach(data -> { + data.getItems().forEach(item -> { + Long salaryItemId = Long.valueOf(item.getSalaryItemId()); + item.setName(itemIdNameMap.getOrDefault(salaryItemId, item.getName())); + if(itemShowNameMap.containsKey(salaryItemId)){ + item.setName(itemShowNameMap.get(salaryItemId)); + } + }); + }); } } else { replenishSalaryItemSetting = getReplenishSalaryItemSet(replenishFormQueryParam.getSalarySobId()); @@ -417,6 +451,7 @@ public class SalaryTemplateWrapper extends Service { return SalaryTemplateReplenishFormDTO.builder() .id(id) .replenishSalaryTemplateSalaryItemSet(replenishSalaryItemSetting) + .salaryBillItemNameSet(salaryBillItemNameDTOS) .build(); } @@ -459,4 +494,8 @@ public class SalaryTemplateWrapper extends Service { ) .collect(Collectors.toList()); } + + public void saveItemShowName(List saveList) { + getSalaryBillItemNameService(user).saveItemShowName(saveList); + } } From 07b36db9e1cf8bba5baebfef32a9add840d1f3d0 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Wed, 19 Jul 2023 16:27:55 +0800 Subject: [PATCH 03/48] =?UTF-8?q?=E5=8A=A0=E4=B8=8A=E5=A4=A7=E6=8B=AC?= =?UTF-8?q?=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salary/service/impl/SalaryBillItemNameServiceImpl.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/com/engine/salary/service/impl/SalaryBillItemNameServiceImpl.java b/src/com/engine/salary/service/impl/SalaryBillItemNameServiceImpl.java index 2ccee1251..267657ea3 100644 --- a/src/com/engine/salary/service/impl/SalaryBillItemNameServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryBillItemNameServiceImpl.java @@ -82,12 +82,14 @@ public class SalaryBillItemNameServiceImpl extends Service implements SalaryBill if(CollectionUtils.isEmpty(saveList)) return; List templateIdList = saveList.stream().map(SalaryBillItemNameSaveParam::getSalaryTemplateId).distinct().collect(Collectors.toList()); - if(CollectionUtils.isEmpty(templateIdList) || templateIdList.size()>1) + if(CollectionUtils.isEmpty(templateIdList) || templateIdList.size()>1){ throw new SalaryRunTimeException("工资单模板id为空,或存在多个工资单模板id"); + } Long salaryTemplateId = templateIdList.get(0); SalaryTemplatePO salaryTemplatePO = getSalaryTemplateService(user).getById(salaryTemplateId); - if(Objects.isNull(salaryTemplatePO)) + if(Objects.isNull(salaryTemplatePO)){ throw new SalaryRunTimeException("工资单模板不存在或已被删除"); + } List needInsertList = new ArrayList<>(); List needUpdateList = new ArrayList<>(); Date now = new Date(); From b95663ada88ee43b929bf1454f15b2cf03a2b50c Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Thu, 20 Jul 2023 10:42:16 +0800 Subject: [PATCH 04/48] =?UTF-8?q?=E8=87=AA=E5=AE=9A=E4=B9=89=E5=B7=A5?= =?UTF-8?q?=E8=B5=84=E9=A1=B9=E7=9B=AE=E5=B1=95=E7=A4=BA=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../param/SalaryTemplateSaveParam.java | 2 ++ .../salarybill/SalaryBillItemNameMapper.java | 6 ++++ .../salarybill/SalaryBillItemNameMapper.xml | 10 +++++++ .../service/SalaryBillItemNameService.java | 5 ++++ .../impl/SalaryBillItemNameServiceImpl.java | 15 ++++++++-- .../impl/SalaryTemplateServiceImpl.java | 28 +++++++++++++++++++ 6 files changed, 64 insertions(+), 2 deletions(-) diff --git a/src/com/engine/salary/entity/salaryBill/param/SalaryTemplateSaveParam.java b/src/com/engine/salary/entity/salaryBill/param/SalaryTemplateSaveParam.java index ff8af0607..bbf16949e 100644 --- a/src/com/engine/salary/entity/salaryBill/param/SalaryTemplateSaveParam.java +++ b/src/com/engine/salary/entity/salaryBill/param/SalaryTemplateSaveParam.java @@ -104,6 +104,8 @@ public class SalaryTemplateSaveParam { */ private String feedbackUrl; + List salaryBillItemNameSetting; + public static void checkParam(SalaryTemplateSaveParam saveParam) { if (saveParam.getSalarySobId() == null) { throw new SalaryRunTimeException("薪资账套表的主键id必传;"); diff --git a/src/com/engine/salary/mapper/salarybill/SalaryBillItemNameMapper.java b/src/com/engine/salary/mapper/salarybill/SalaryBillItemNameMapper.java index a3cb102a7..744008c3a 100644 --- a/src/com/engine/salary/mapper/salarybill/SalaryBillItemNameMapper.java +++ b/src/com/engine/salary/mapper/salarybill/SalaryBillItemNameMapper.java @@ -86,4 +86,10 @@ public interface SalaryBillItemNameMapper { * @param salaryBillType */ void deleteByItemIdsAndTemplateId(@Param("salaryItemIds") List salaryItemIds, @Param("salaryTemplateId") Long salaryTemplateId, @Param("salaryBillType") Integer salaryBillType); + + /** + * 根据idList删除 + * @param longs + */ + void deleteByIds(@Param("collection") List longs); } diff --git a/src/com/engine/salary/mapper/salarybill/SalaryBillItemNameMapper.xml b/src/com/engine/salary/mapper/salarybill/SalaryBillItemNameMapper.xml index 03e0b6c6e..c3c46c80a 100644 --- a/src/com/engine/salary/mapper/salarybill/SalaryBillItemNameMapper.xml +++ b/src/com/engine/salary/mapper/salarybill/SalaryBillItemNameMapper.xml @@ -321,5 +321,15 @@ + + UPDATE hrsa_salary_bill_item_name + 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/SalaryBillItemNameService.java b/src/com/engine/salary/service/SalaryBillItemNameService.java index febe56abc..e6d217d4c 100644 --- a/src/com/engine/salary/service/SalaryBillItemNameService.java +++ b/src/com/engine/salary/service/SalaryBillItemNameService.java @@ -85,4 +85,9 @@ public interface SalaryBillItemNameService { */ void batchInsert(List needInsertList); + /** + * 根据id批量删除 + * @param needDeleteIds + */ + void deleteByIds(List needDeleteIds); } diff --git a/src/com/engine/salary/service/impl/SalaryBillItemNameServiceImpl.java b/src/com/engine/salary/service/impl/SalaryBillItemNameServiceImpl.java index 267657ea3..7b5b95d93 100644 --- a/src/com/engine/salary/service/impl/SalaryBillItemNameServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryBillItemNameServiceImpl.java @@ -140,20 +140,31 @@ public class SalaryBillItemNameServiceImpl extends Service implements SalaryBill @Override public void batchUpdate(List needUpdateList) { - if(CollectionUtils.isEmpty(needUpdateList)) + if(CollectionUtils.isEmpty(needUpdateList)){ return; + } List> partition = Lists.partition(needUpdateList, 500); partition.forEach(getSalaryBillItemNameMapper()::batchUpdate); } @Override public void batchInsert(List needInsertList) { - if(CollectionUtils.isEmpty(needInsertList)) + if(CollectionUtils.isEmpty(needInsertList)){ return; + } List> partition = Lists.partition(needInsertList, 500); partition.forEach(getSalaryBillItemNameMapper()::batchInsert); } + @Override + public void deleteByIds(List needDeleteIds) { + if(CollectionUtils.isEmpty(needDeleteIds)){ + return; + } + List> partition = Lists.partition(needDeleteIds, 1000); + partition.forEach(getSalaryBillItemNameMapper()::deleteByIds); + } + public void batchDeleteByItemIdsAndTemplateId(List salaryItemIds, Long salaryTemplateId, Integer salaryBillType) { if(CollectionUtils.isEmpty(salaryItemIds) || Objects.isNull(salaryTemplateId) || Objects.isNull(salaryBillType)) return; diff --git a/src/com/engine/salary/service/impl/SalaryTemplateServiceImpl.java b/src/com/engine/salary/service/impl/SalaryTemplateServiceImpl.java index 7d0b790c5..30d6a26f0 100644 --- a/src/com/engine/salary/service/impl/SalaryTemplateServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryTemplateServiceImpl.java @@ -7,11 +7,13 @@ import com.engine.salary.biz.SalarySobBiz; import com.engine.salary.biz.SalaryTemplateBiz; import com.engine.salary.entity.salaryBill.bo.SalaryTemplateBO; import com.engine.salary.entity.salaryBill.dto.SalaryTemplateListDTO; +import com.engine.salary.entity.salaryBill.dto.SalaryTemplateSalaryItemListDTO; import com.engine.salary.entity.salaryBill.dto.SalaryTemplateSalaryItemSetListDTO; import com.engine.salary.entity.salaryBill.param.SalaryTemplateCopyParam; import com.engine.salary.entity.salaryBill.param.SalaryTemplateDefaultUseParam; import com.engine.salary.entity.salaryBill.param.SalaryTemplateQueryParam; import com.engine.salary.entity.salaryBill.param.SalaryTemplateSaveParam; +import com.engine.salary.entity.salaryBill.po.SalaryBillItemNamePO; import com.engine.salary.entity.salaryBill.po.SalaryTemplatePO; import com.engine.salary.entity.salarysob.dto.SalarySobItemAggregateDTO; import com.engine.salary.entity.salarysob.dto.SalarySobItemDTO; @@ -59,6 +61,10 @@ public class SalaryTemplateServiceImpl extends Service implements SalaryTemplate return ServiceUtil.getService(SalarySobItemHideServiceImpl.class, user); } + private SalaryBillItemNameService getSalaryBillItemNameService(User user) { + return ServiceUtil.getService(SalaryBillItemNameServiceImpl.class, user); + } + @Override public SalaryTemplatePO getById(Long id) { return mapper.getById(id); @@ -138,6 +144,10 @@ public class SalaryTemplateServiceImpl extends Service implements SalaryTemplate salaryTemplate.setSalaryItemZeroStatus(saveParam.getSalaryItemZeroStatus()?1:0); salaryTemplate.setAutoSendCycleType(saveParam.getAutoSendCycleType()); mapper.insert(salaryTemplate); + + // 存储工资单项目自定义名称信息 + saveParam.getSalaryBillItemNameSetting().stream().forEach(set -> set.setSalaryTemplateId(salaryTemplate.getId())); + getSalaryBillItemNameService(user).saveItemShowName(saveParam.getSalaryBillItemNameSetting()); // 记录日志 // SalaryLoggerUtil.recordAddSingleLog(salaryTemplateLoggerTemplate, // salaryTemplate.getId(), @@ -204,6 +214,24 @@ public class SalaryTemplateServiceImpl extends Service implements SalaryTemplate salaryTemplateNew.setSalaryItemSetting(saveParam.getSalaryItemSetting() != null ? JSONUtil.toJsonStr(saveParam.getSalaryItemSetting()) : ""); salaryTemplateNew.setReplenishSalaryItemSetting(saveParam.getReplenishSalaryItemSetting() != null ? JSONUtil.toJsonStr(saveParam.getReplenishSalaryItemSetting()) : ""); mapper.updateById(salaryTemplateNew); + + // 保存自定义工资单项目名称信息 + getSalaryBillItemNameService(user).saveItemShowName(saveParam.getSalaryBillItemNameSetting()); + // 模板中没有的薪资项目需要同步删除显示名称表 + List billItemNameList = getSalaryBillItemNameService(user).ListByTemplateAndType(SalaryBillItemNamePO.builder().salaryTemplateId(saveParam.getId()).build()); + Map> billItemNameMap = SalaryEntityUtil.group2Map(billItemNameList, SalaryBillItemNamePO::getSalaryBillType); + List saveItemList = saveParam.getSalaryItemSetting().stream().map(SalaryTemplateSalaryItemSetListDTO::getItems).flatMap(Collection::stream).collect(Collectors.toList()); + Set saveItemIdList = SalaryEntityUtil.properties(saveItemList, SalaryTemplateSalaryItemListDTO::getSalaryItemId); + // 正常工资单模板 + List needDeleteIds = billItemNameMap.getOrDefault(NumberUtils.INTEGER_ZERO, Collections.emptyList()).stream().filter(salaryBillItemNamepo -> !saveItemIdList.contains(salaryBillItemNamepo.getSalaryItemId().toString())) + .map(SalaryBillItemNamePO::getId).collect(Collectors.toList()); + // 补发工资单模板 + List replenishItemList = saveParam.getReplenishSalaryItemSetting().stream().map(SalaryTemplateSalaryItemSetListDTO::getItems).flatMap(Collection::stream).collect(Collectors.toList()); + Set saveReplenishItemIdList = SalaryEntityUtil.properties(replenishItemList, SalaryTemplateSalaryItemListDTO::getSalaryItemId); + needDeleteIds.addAll(billItemNameMap.getOrDefault(NumberUtils.INTEGER_ONE, Collections.emptyList()).stream().filter(salaryBillItemNamepo -> !saveReplenishItemIdList.contains(salaryBillItemNamepo.getSalaryItemId().toString())) + .map(SalaryBillItemNamePO::getId).collect(Collectors.toList())); + getSalaryBillItemNameService(user).deleteByIds(needDeleteIds); + // 记录日志 // SalaryLoggerUtil.recordUpdateSingleLog(salaryTemplateLoggerTemplate, // salaryTemplate.getId(), From fd3abc7f6553bb3961830faf3d39f66443f5d675 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Thu, 20 Jul 2023 14:12:33 +0800 Subject: [PATCH 05/48] =?UTF-8?q?=E8=87=AA=E5=AE=9A=E4=B9=89=E5=B7=A5?= =?UTF-8?q?=E8=B5=84=E9=A1=B9=E7=9B=AE=E5=B1=95=E7=A4=BA=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salaryBill/dto/SalaryTemplateSalaryItemListDTO.java | 5 ++++- src/com/engine/salary/wrapper/SalaryTemplateWrapper.java | 6 ++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/com/engine/salary/entity/salaryBill/dto/SalaryTemplateSalaryItemListDTO.java b/src/com/engine/salary/entity/salaryBill/dto/SalaryTemplateSalaryItemListDTO.java index bedf72566..6e4049a95 100644 --- a/src/com/engine/salary/entity/salaryBill/dto/SalaryTemplateSalaryItemListDTO.java +++ b/src/com/engine/salary/entity/salaryBill/dto/SalaryTemplateSalaryItemListDTO.java @@ -26,9 +26,12 @@ public class SalaryTemplateSalaryItemListDTO { // 薪资项目值") private String salaryItemValue; -// 薪资项目名称") +// 薪资项目展示名称 private String name; + // 薪资项目名称原始值 + private String originName; + // 顺序") private Integer sortedIndex; } diff --git a/src/com/engine/salary/wrapper/SalaryTemplateWrapper.java b/src/com/engine/salary/wrapper/SalaryTemplateWrapper.java index 16de37b83..b3d4fca86 100644 --- a/src/com/engine/salary/wrapper/SalaryTemplateWrapper.java +++ b/src/com/engine/salary/wrapper/SalaryTemplateWrapper.java @@ -267,9 +267,11 @@ public class SalaryTemplateWrapper extends Service { .forEach(data -> { data.getItems().forEach(item -> { Long salaryItemId = Long.valueOf(item.getSalaryItemId()); - item.setName(itemIdNameMap.getOrDefault(salaryItemId, item.getName())); + item.setOriginName(itemIdNameMap.getOrDefault(salaryItemId, item.getName())); if(itemShowNameMap.containsKey(salaryItemId)){ - item.setName(itemShowNameMap.get(salaryItemId) + "(" + item.getName() +")"); + item.setName(itemShowNameMap.get(salaryItemId) + "(" + itemIdNameMap.getOrDefault(salaryItemId, item.getName()) +")"); + }else{ + item.setName(itemIdNameMap.getOrDefault(salaryItemId, item.getName())); } }); }); From 84d918495963a39582f5bb3303fd78134c126a2b Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Thu, 20 Jul 2023 15:37:20 +0800 Subject: [PATCH 06/48] =?UTF-8?q?=E8=87=AA=E5=AE=9A=E4=B9=89=E5=B7=A5?= =?UTF-8?q?=E8=B5=84=E9=A1=B9=E7=9B=AE=E5=B1=95=E7=A4=BA=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salary/mapper/salarybill/SalaryBillItemNameMapper.xml | 2 +- .../salary/service/impl/SalaryBillItemNameServiceImpl.java | 1 + src/com/engine/salary/wrapper/SalaryTemplateWrapper.java | 6 ++++-- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/com/engine/salary/mapper/salarybill/SalaryBillItemNameMapper.xml b/src/com/engine/salary/mapper/salarybill/SalaryBillItemNameMapper.xml index c3c46c80a..d08d2cb2c 100644 --- a/src/com/engine/salary/mapper/salarybill/SalaryBillItemNameMapper.xml +++ b/src/com/engine/salary/mapper/salarybill/SalaryBillItemNameMapper.xml @@ -314,7 +314,7 @@ SET delete_type=1 WHERE delete_type = 0 AND salary_template_id = #{salaryTemplateId} - AND salaryBillType = #{salaryBillType} + AND salary_bill_type = #{salaryBillType} AND salary_item_id IN #{itemId} diff --git a/src/com/engine/salary/service/impl/SalaryBillItemNameServiceImpl.java b/src/com/engine/salary/service/impl/SalaryBillItemNameServiceImpl.java index 7b5b95d93..756af271b 100644 --- a/src/com/engine/salary/service/impl/SalaryBillItemNameServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryBillItemNameServiceImpl.java @@ -79,6 +79,7 @@ public class SalaryBillItemNameServiceImpl extends Service implements SalaryBill @Override public void saveItemShowName(List saveList) { + saveList= saveList.stream().filter(param -> !Objects.isNull(param.getSalaryTemplateId()) && CollectionUtils.isNotEmpty(param.getItemShowNameSetting())).collect(Collectors.toList()); if(CollectionUtils.isEmpty(saveList)) return; List templateIdList = saveList.stream().map(SalaryBillItemNameSaveParam::getSalaryTemplateId).distinct().collect(Collectors.toList()); diff --git a/src/com/engine/salary/wrapper/SalaryTemplateWrapper.java b/src/com/engine/salary/wrapper/SalaryTemplateWrapper.java index b3d4fca86..dbb8b521f 100644 --- a/src/com/engine/salary/wrapper/SalaryTemplateWrapper.java +++ b/src/com/engine/salary/wrapper/SalaryTemplateWrapper.java @@ -436,9 +436,11 @@ public class SalaryTemplateWrapper extends Service { .forEach(data -> { data.getItems().forEach(item -> { Long salaryItemId = Long.valueOf(item.getSalaryItemId()); - item.setName(itemIdNameMap.getOrDefault(salaryItemId, item.getName())); + item.setOriginName(itemIdNameMap.getOrDefault(salaryItemId, item.getName())); if(itemShowNameMap.containsKey(salaryItemId)){ - item.setName(itemShowNameMap.get(salaryItemId)); + item.setName(itemShowNameMap.get(salaryItemId) + "(" + itemIdNameMap.getOrDefault(salaryItemId, item.getName()) + ")"); + }else{ + item.setName(itemIdNameMap.getOrDefault(salaryItemId, item.getName())); } }); }); From 19c297dfe98088db16a76fb637a720a032be53fc Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Thu, 20 Jul 2023 15:57:27 +0800 Subject: [PATCH 07/48] =?UTF-8?q?=E8=87=AA=E5=AE=9A=E4=B9=89=E5=B7=A5?= =?UTF-8?q?=E8=B5=84=E9=A1=B9=E7=9B=AE=E5=B1=95=E7=A4=BA=E5=90=8Dfix?= =?UTF-8?q?=E8=A1=A5=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salaryBill/dto/SalaryTemplateReplenishFormDTO.java | 3 ++- src/com/engine/salary/wrapper/SalaryTemplateWrapper.java | 7 ++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/com/engine/salary/entity/salaryBill/dto/SalaryTemplateReplenishFormDTO.java b/src/com/engine/salary/entity/salaryBill/dto/SalaryTemplateReplenishFormDTO.java index 50bc76ba8..0e90569db 100644 --- a/src/com/engine/salary/entity/salaryBill/dto/SalaryTemplateReplenishFormDTO.java +++ b/src/com/engine/salary/entity/salaryBill/dto/SalaryTemplateReplenishFormDTO.java @@ -6,6 +6,7 @@ import lombok.Data; import lombok.NoArgsConstructor; import java.util.List; +import java.util.Map; /** * @author Harryxzy @@ -27,6 +28,6 @@ public class SalaryTemplateReplenishFormDTO { private List replenishSalaryTemplateSalaryItemSet; // 工资单项目名称设置 - private List salaryBillItemNameSet; + private Map salaryBillItemNameSet; } diff --git a/src/com/engine/salary/wrapper/SalaryTemplateWrapper.java b/src/com/engine/salary/wrapper/SalaryTemplateWrapper.java index dbb8b521f..0b4eefaef 100644 --- a/src/com/engine/salary/wrapper/SalaryTemplateWrapper.java +++ b/src/com/engine/salary/wrapper/SalaryTemplateWrapper.java @@ -411,7 +411,7 @@ public class SalaryTemplateWrapper extends Service { // 补发薪资项目设置 List replenishSalaryItemSetting; // 补发薪资项目显示名称 - List salaryBillItemNameDTOS = new ArrayList<>(); + Map salaryBillItemNameDTOMap = new HashMap<>(); if (id != null) { SalaryTemplatePO po = getSalaryTemplateService(user).getById(id); if (po == null) { @@ -427,7 +427,8 @@ public class SalaryTemplateWrapper extends Service { List billItemNameList = getSalaryBillItemNameService(user).ListByTemplateAndType(SalaryBillItemNamePO.builder().salaryTemplateId(id).salaryBillType(1).build()); Map itemShowNameMap = SalaryEntityUtil.convert2Map(billItemNameList, SalaryBillItemNamePO::getSalaryItemId, SalaryBillItemNamePO::getSalaryItemShowName); // 获取薪资项目信息 - salaryBillItemNameDTOS = SalaryBillItemNameBO.convert2ListDTO(billItemNameList, itemIdNameMap); + List salaryBillItemNameDTOS = SalaryBillItemNameBO.convert2ListDTO(billItemNameList, itemIdNameMap); + salaryBillItemNameDTOMap = SalaryEntityUtil.convert2Map(salaryBillItemNameDTOS, SalaryBillItemNameDTO::getSalaryItemId); if (CollectionUtils.isNotEmpty(replenishSalaryItemSetting)) { replenishSalaryItemSetting.stream() @@ -455,7 +456,7 @@ public class SalaryTemplateWrapper extends Service { return SalaryTemplateReplenishFormDTO.builder() .id(id) .replenishSalaryTemplateSalaryItemSet(replenishSalaryItemSetting) - .salaryBillItemNameSet(salaryBillItemNameDTOS) + .salaryBillItemNameSet(salaryBillItemNameDTOMap) .build(); } From ad6a57131025279b198e49120068430f3661a98e Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Fri, 21 Jul 2023 11:08:54 +0800 Subject: [PATCH 08/48] =?UTF-8?q?=E8=87=AA=E5=AE=9A=E4=B9=89=E5=B7=A5?= =?UTF-8?q?=E8=B5=84=E9=A1=B9=E7=9B=AE=E5=B1=95=E7=A4=BA=E5=90=8Dfix?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salaryBill/dto/SalaryTemplateSalaryItemListDTO.java | 7 +++++-- .../salary/mapper/salarybill/SalaryBillItemNameMapper.xml | 4 ++-- .../salary/service/impl/SalaryTemplateServiceImpl.java | 4 ++-- src/com/engine/salary/wrapper/SalaryTemplateWrapper.java | 4 ++++ 4 files changed, 13 insertions(+), 6 deletions(-) diff --git a/src/com/engine/salary/entity/salaryBill/dto/SalaryTemplateSalaryItemListDTO.java b/src/com/engine/salary/entity/salaryBill/dto/SalaryTemplateSalaryItemListDTO.java index 6e4049a95..858db75a1 100644 --- a/src/com/engine/salary/entity/salaryBill/dto/SalaryTemplateSalaryItemListDTO.java +++ b/src/com/engine/salary/entity/salaryBill/dto/SalaryTemplateSalaryItemListDTO.java @@ -26,10 +26,13 @@ public class SalaryTemplateSalaryItemListDTO { // 薪资项目值") private String salaryItemValue; -// 薪资项目展示名称 + // 模板展示名称 salaryItemShowName+(originName) private String name; - // 薪资项目名称原始值 + // 薪资项目修改后展示名称 + private String salaryItemShowName; + + // 薪资项目名称原始值 private String originName; // 顺序") diff --git a/src/com/engine/salary/mapper/salarybill/SalaryBillItemNameMapper.xml b/src/com/engine/salary/mapper/salarybill/SalaryBillItemNameMapper.xml index d08d2cb2c..fc8e2bfbe 100644 --- a/src/com/engine/salary/mapper/salarybill/SalaryBillItemNameMapper.xml +++ b/src/com/engine/salary/mapper/salarybill/SalaryBillItemNameMapper.xml @@ -174,7 +174,7 @@ - INSERT INTO hrsa_salary_send_info ( + INSERT INTO hrsa_salary_bill_item_name ( id, salary_template_id, salary_item_id, @@ -203,7 +203,7 @@ - INSERT INTO hrsa_salary_send_info ( + INSERT INTO hrsa_salary_bill_item_name ( id, salary_template_id, salary_item_id, diff --git a/src/com/engine/salary/service/impl/SalaryTemplateServiceImpl.java b/src/com/engine/salary/service/impl/SalaryTemplateServiceImpl.java index 30d6a26f0..ea72331d8 100644 --- a/src/com/engine/salary/service/impl/SalaryTemplateServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryTemplateServiceImpl.java @@ -222,10 +222,10 @@ public class SalaryTemplateServiceImpl extends Service implements SalaryTemplate Map> billItemNameMap = SalaryEntityUtil.group2Map(billItemNameList, SalaryBillItemNamePO::getSalaryBillType); List saveItemList = saveParam.getSalaryItemSetting().stream().map(SalaryTemplateSalaryItemSetListDTO::getItems).flatMap(Collection::stream).collect(Collectors.toList()); Set saveItemIdList = SalaryEntityUtil.properties(saveItemList, SalaryTemplateSalaryItemListDTO::getSalaryItemId); - // 正常工资单模板 + // 正常工资单模板中删除的薪资项目 List needDeleteIds = billItemNameMap.getOrDefault(NumberUtils.INTEGER_ZERO, Collections.emptyList()).stream().filter(salaryBillItemNamepo -> !saveItemIdList.contains(salaryBillItemNamepo.getSalaryItemId().toString())) .map(SalaryBillItemNamePO::getId).collect(Collectors.toList()); - // 补发工资单模板 + // 补发工资单模板中删除的薪资项目 List replenishItemList = saveParam.getReplenishSalaryItemSetting().stream().map(SalaryTemplateSalaryItemSetListDTO::getItems).flatMap(Collection::stream).collect(Collectors.toList()); Set saveReplenishItemIdList = SalaryEntityUtil.properties(replenishItemList, SalaryTemplateSalaryItemListDTO::getSalaryItemId); needDeleteIds.addAll(billItemNameMap.getOrDefault(NumberUtils.INTEGER_ONE, Collections.emptyList()).stream().filter(salaryBillItemNamepo -> !saveReplenishItemIdList.contains(salaryBillItemNamepo.getSalaryItemId().toString())) diff --git a/src/com/engine/salary/wrapper/SalaryTemplateWrapper.java b/src/com/engine/salary/wrapper/SalaryTemplateWrapper.java index 0b4eefaef..83793e78e 100644 --- a/src/com/engine/salary/wrapper/SalaryTemplateWrapper.java +++ b/src/com/engine/salary/wrapper/SalaryTemplateWrapper.java @@ -269,8 +269,10 @@ public class SalaryTemplateWrapper extends Service { Long salaryItemId = Long.valueOf(item.getSalaryItemId()); item.setOriginName(itemIdNameMap.getOrDefault(salaryItemId, item.getName())); if(itemShowNameMap.containsKey(salaryItemId)){ + item.setSalaryItemShowName(itemShowNameMap.get(salaryItemId)); item.setName(itemShowNameMap.get(salaryItemId) + "(" + itemIdNameMap.getOrDefault(salaryItemId, item.getName()) +")"); }else{ + item.setSalaryItemShowName(itemIdNameMap.getOrDefault(salaryItemId, item.getName())); item.setName(itemIdNameMap.getOrDefault(salaryItemId, item.getName())); } }); @@ -439,8 +441,10 @@ public class SalaryTemplateWrapper extends Service { Long salaryItemId = Long.valueOf(item.getSalaryItemId()); item.setOriginName(itemIdNameMap.getOrDefault(salaryItemId, item.getName())); if(itemShowNameMap.containsKey(salaryItemId)){ + item.setSalaryItemShowName(itemShowNameMap.get(salaryItemId)); item.setName(itemShowNameMap.get(salaryItemId) + "(" + itemIdNameMap.getOrDefault(salaryItemId, item.getName()) + ")"); }else{ + item.setSalaryItemShowName(itemIdNameMap.getOrDefault(salaryItemId, item.getName())); item.setName(itemIdNameMap.getOrDefault(salaryItemId, item.getName())); } }); From b10a45ebda509eda890838eb9d2a808122092331 Mon Sep 17 00:00:00 2001 From: sy Date: Mon, 24 Jul 2023 10:57:34 +0800 Subject: [PATCH 09/48] =?UTF-8?q?=E8=96=AA=E9=85=AC=E7=B3=BB=E7=BB=9F-?= =?UTF-8?q?=E7=A6=8F=E5=88=A9=E6=A1=A3=E6=A1=88=EF=BC=8C=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E4=B8=8D=E8=A6=81=E6=98=BE=E7=A4=BA=E5=90=88=E5=90=8C=E5=88=B0?= =?UTF-8?q?=E6=9C=9F=E6=97=A5=E6=9C=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/engine/salary/biz/SIArchivesBiz.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/com/engine/salary/biz/SIArchivesBiz.java b/src/com/engine/salary/biz/SIArchivesBiz.java index 51da1aa57..1e5863af8 100644 --- a/src/com/engine/salary/biz/SIArchivesBiz.java +++ b/src/com/engine/salary/biz/SIArchivesBiz.java @@ -1078,7 +1078,7 @@ public class SIArchivesBiz { list.add(new WeaTableColumn("150px", "工号", "jobNum")); list.add(new WeaTableColumn("150px", "入职日期", "companystartdate")); - list.add(new WeaTableColumn("150px", "合同到期日期", "dismissdate")); +// list.add(new WeaTableColumn("150px", "合同到期日期", "dismissdate")); list.add(new WeaTableColumn("150px", "社保方案名称", "socialName")); titleMap.get(WelfareTypeEnum.SOCIAL_SECURITY.getValue()).forEach((k, v) -> list.add(new WeaTableColumn("150px", v, k))); From ea4b603c36d503c86cc305f2d2ce170ba3ddc779 Mon Sep 17 00:00:00 2001 From: sy Date: Mon, 24 Jul 2023 11:26:36 +0800 Subject: [PATCH 10/48] =?UTF-8?q?=E8=96=AA=E9=85=AC=E7=B3=BB=E7=BB=9F-?= =?UTF-8?q?=E8=96=AA=E8=B5=84=E6=A1=A3=E6=A1=88=E3=80=81=E6=A0=B8=E7=AE=97?= =?UTF-8?q?=EF=BC=8C=E5=88=97=E8=A1=A8=E4=B8=8D=E8=A6=81=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=E7=A6=BB=E8=81=8C=E6=97=A5=E6=9C=9F=E3=80=81=E6=A0=B8=E7=AE=97?= =?UTF-8?q?=E4=BA=BA=E5=91=98=E7=A1=AE=E8=AE=A4=E9=A1=B5=E9=9D=A2=E8=8C=83?= =?UTF-8?q?=E5=9B=B4=E5=88=97=E8=A1=A8=E4=B8=8D=E8=A6=81=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=E7=A6=BB=E8=81=8C=E6=97=A5=E6=9C=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salaryacct/dto/SalaryAccEmployeeListDTO.java | 2 +- .../entity/salaryarchive/bo/SalaryArchiveBO.java | 2 +- .../service/impl/SalaryAcctExcelServiceImpl.java | 14 +++++++------- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/com/engine/salary/entity/salaryacct/dto/SalaryAccEmployeeListDTO.java b/src/com/engine/salary/entity/salaryacct/dto/SalaryAccEmployeeListDTO.java index 3f067cb1c..5f9d256f8 100644 --- a/src/com/engine/salary/entity/salaryacct/dto/SalaryAccEmployeeListDTO.java +++ b/src/com/engine/salary/entity/salaryacct/dto/SalaryAccEmployeeListDTO.java @@ -66,6 +66,6 @@ public class SalaryAccEmployeeListDTO { private String hireDate; //离职日期 - @TableTitle(title = "离职日期", dataIndex = "dismissDate", key = "dismissDate") +// @TableTitle(title = "离职日期", dataIndex = "dismissDate", key = "dismissDate") private String dismissDate; } diff --git a/src/com/engine/salary/entity/salaryarchive/bo/SalaryArchiveBO.java b/src/com/engine/salary/entity/salaryarchive/bo/SalaryArchiveBO.java index 555c2a1cb..552856821 100644 --- a/src/com/engine/salary/entity/salaryarchive/bo/SalaryArchiveBO.java +++ b/src/com/engine/salary/entity/salaryarchive/bo/SalaryArchiveBO.java @@ -82,7 +82,7 @@ public class SalaryArchiveBO { columns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(86187, "起始发薪日期"), "payStartDate")); columns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(86187, "最后发薪日期"), "payEndDate")); columns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(86187, "入职日期"), "companystartdate").setDisplay(WeaBoolAttr.FALSE)); - columns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(86187, "离职日期"), "dismissdate").setDisplay(WeaBoolAttr.FALSE)); +// columns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(86187, "离职日期"), "dismissdate").setDisplay(WeaBoolAttr.FALSE)); for (SalaryItemPO salaryItem : salaryItems) { columns.add(new WeaTableColumn("100px", salaryItem.getName(), salaryItem.getId() + SalaryItemConstant.DYNAMIC_SUFFIX)); } diff --git a/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java index 3e808cb80..7dad4d050 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java @@ -154,8 +154,8 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc SalaryI18nUtil.getI18nLabel(86186, "手机号"), SalaryI18nUtil.getI18nLabel(86186, "工号"), SalaryI18nUtil.getI18nLabel(91075, "员工状态"), - SalaryI18nUtil.getI18nLabel(91075, "入职日期"), - SalaryI18nUtil.getI18nLabel(91075, "离职日期") + SalaryI18nUtil.getI18nLabel(91075, "入职日期") +// SalaryI18nUtil.getI18nLabel(91075, "离职日期") }; List headerList = new ArrayList<>(Arrays.asList(header)); // 查询薪资核算人员 @@ -187,8 +187,8 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc SalaryI18nUtil.getI18nLabel(86186, "手机号"), SalaryI18nUtil.getI18nLabel(86186, "工号"), SalaryI18nUtil.getI18nLabel(91075, "员工状态"), - SalaryI18nUtil.getI18nLabel(91075, "入职日期"), - SalaryI18nUtil.getI18nLabel(91075, "离职日期") + SalaryI18nUtil.getI18nLabel(91075, "入职日期") +// SalaryI18nUtil.getI18nLabel(91075, "离职日期") }; List headerList = new ArrayList<>(Arrays.asList(header)); // 查询薪资核算人员(环比上月减少) @@ -219,8 +219,8 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc SalaryI18nUtil.getI18nLabel(86186, "手机号"), SalaryI18nUtil.getI18nLabel(86186, "工号"), SalaryI18nUtil.getI18nLabel(91075, "员工状态"), - SalaryI18nUtil.getI18nLabel(91075, "入职日期"), - SalaryI18nUtil.getI18nLabel(91075, "离职日期") + SalaryI18nUtil.getI18nLabel(91075, "入职日期") +// SalaryI18nUtil.getI18nLabel(91075, "离职日期") }; List headerList = new ArrayList<>(Arrays.asList(header)); // 查询薪资核算人员(环比上月增加) @@ -263,7 +263,7 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc row.add(dto.getJobNum()); row.add(dto.getStatus()); row.add(dto.getHireDate()); - row.add(dto.getDismissDate()); +// row.add(dto.getDismissDate()); rows.add(row); } return rows; From 174941ea638f20f0f8ae58cabad5039df100a0e3 Mon Sep 17 00:00:00 2001 From: sy Date: Mon, 24 Jul 2023 16:39:48 +0800 Subject: [PATCH 11/48] =?UTF-8?q?=E8=96=AA=E9=85=AC=E7=B3=BB=E7=BB=9F-?= =?UTF-8?q?=E7=A6=8F=E5=88=A9=E6=A1=A3=E6=A1=88=EF=BC=8C=E4=BF=9D=E5=AD=98?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E5=AF=B9=E4=BA=8E=E5=AD=98=E5=9C=A8=E5=86=97?= =?UTF-8?q?=E4=BD=99=E6=95=B0=E6=8D=AE=E7=9A=84=E6=83=85=E5=86=B5=EF=BC=8C?= =?UTF-8?q?=E5=88=A9=E7=94=A8=E5=BD=93=E5=89=8D=E7=BC=96=E8=BE=91=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=EF=BC=8C=E6=96=B0=E5=BB=BA=E5=AF=B9=E5=BA=94=E6=A1=A3?= =?UTF-8?q?=E6=A1=88=E5=B9=B6=E4=B8=8Ebase=5Finfo=E8=A1=A8=E8=BF=9B?= =?UTF-8?q?=E8=A1=8C=E5=85=B3=E8=81=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/engine/salary/biz/SIArchivesBiz.java | 157 ++++++++++++++++-- .../mapper/siarchives/FundSchemeMapper.java | 6 + .../mapper/siarchives/FundSchemeMapper.xml | 41 +++++ .../siarchives/InsuranceBaseInfoMapper.java | 7 + .../siarchives/InsuranceBaseInfoMapper.xml | 19 +++ .../mapper/siarchives/OtherSchemeMapper.java | 6 + .../mapper/siarchives/OtherSchemeMapper.xml | 35 ++++ .../mapper/siarchives/SocialSchemeMapper.java | 6 + .../mapper/siarchives/SocialSchemeMapper.xml | 38 +++++ 9 files changed, 297 insertions(+), 18 deletions(-) diff --git a/src/com/engine/salary/biz/SIArchivesBiz.java b/src/com/engine/salary/biz/SIArchivesBiz.java index 51da1aa57..b4157ad56 100644 --- a/src/com/engine/salary/biz/SIArchivesBiz.java +++ b/src/com/engine/salary/biz/SIArchivesBiz.java @@ -662,11 +662,10 @@ public class SIArchivesBiz { throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(542533, "其他福利最后缴纳时间格式错误,正确格式为YYYY-MM或者yyyy-MM-dd")); } -// List oldOtherInfoList = otherSchemeMapper.getOtherByEmployeeId(Collections.singletonList(param.getEmployeeId())); - List oldOtherInfoList = otherSchemeMapper.getOtherByEmployeeIdAndPayOrg(InsuranceArchivesEmployeePO.builder() - .employeeId(param.getEmployeeId()) - .paymentOrganization(param.getPaymentOrganization()) - .build()); + List otherIds = new ArrayList(); + otherIds.add(param.getId()); + List oldOtherInfoList = otherSchemeMapper.getOtherById(otherIds); + if (oldOtherInfoList.size() == 1) { InsuranceArchivesOtherSchemePO oldOtherInfo = oldOtherInfoList.get(0); InsuranceArchivesOtherSchemePO updateOtherInfo = @@ -694,7 +693,48 @@ public class SIArchivesBiz { otherSchemeMapper.updateById(updateOtherInfo); sqlSession.commit(); } else { - throw new SalaryRunTimeException("该员工已关联的其他福利档案不存在或存在多条,请处理后再重复当前操作!"); + otherSchemeMapper.deleteByEmployeeIdAndPayOrg(InsuranceArchivesOtherSchemePO.builder() + .employeeId(param.getEmployeeId()) + .paymentOrganization(param.getPaymentOrganization()) + .build()); + //新建社保档案,并关联主表 + InsuranceArchivesOtherSchemePO insertOtherInfo = InsuranceArchivesOtherSchemePO.builder() + .otherSchemeId(param.getOtherSchemeId()) + .otherStartTime(StringUtils.isNotBlank(param.getOtherStartTime()) ? param.getOtherStartTime() : null) + .underTake(param.getUnderTake()) + .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) + .welfareType(paramReq.getWelfareType().getValue()) + .otherEndTime(StringUtils.isNotBlank(param.getOtherEndTime()) ? param.getOtherEndTime() : null) + .employeeId(param.getEmployeeId()) + .deleteType(DeleteTypeEnum.NOT_DELETED.getValue()) + .createTime(new Date()) + .updateTime(new Date()) + .nonPayment(param.getNonPayment()) + .creator(employeeId) + .paymentOrganization(param.getPaymentOrganization()) + .otherPaymentBaseString(paramReq.getPaymentForm()) + .build(); + //校验福利基数是否符合上下限要求, + if (!checkWelBaseLimit(insertOtherInfo.getOtherSchemeId(),insertOtherInfo.getOtherPaymentBaseString())) { + throw new SalaryRunTimeException("其他福利明细中的基数更新内容不符合相关基数上下限要求,请检查后重试!"); + } + encryptUtil.encrypt(insertOtherInfo, InsuranceArchivesOtherSchemePO.class); + otherSchemeMapper.insert(insertOtherInfo); + sqlSession.commit(); + + InsuranceArchivesBaseInfoPO baseInfoPO = getInsuranceBaseInfoMapper().getOneByEmployeeIdAndPayOrg(param.getPaymentOrganization(), param.getEmployeeId()); + if(baseInfoPO != null) { + List otherInfos = otherSchemeMapper.getOtherByEmployeeIdAndPayOrg(InsuranceArchivesEmployeePO.builder() + .employeeId(param.getEmployeeId()) + .paymentOrganization(param.getPaymentOrganization()) + .build()); + baseInfoPO.setOtherArchivesId(otherInfos.get(0).getId()); + getInsuranceBaseInfoMapper().updateById(baseInfoPO); + } else { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(0, "档案不存在!")); + } + + } } finally { @@ -720,11 +760,10 @@ public class SIArchivesBiz { throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(542531, "公积金最后缴纳时间格式错误,正确格式为YYYY-MM或者yyyy-MM-dd")); } -// List oldFundInfoList = fundSchemeMapper.getFundByEmployeeId(Collections.singletonList(param.getEmployeeId())); - List oldFundInfoList = fundSchemeMapper.getFundByEmployeeIdAndPayOrg(InsuranceArchivesEmployeePO.builder() - .employeeId(param.getEmployeeId()) - .paymentOrganization(param.getPaymentOrganization()) - .build()); + List fundIds = new ArrayList(); + fundIds.add(param.getId()); + List oldFundInfoList = fundSchemeMapper.getFundById(fundIds); + if (oldFundInfoList.size() == 1) { InsuranceArchivesFundSchemePO oldFundInfo = oldFundInfoList.get(0); InsuranceArchivesFundSchemePO updateFundInfo = InsuranceArchivesFundSchemePO.builder() @@ -754,7 +793,49 @@ public class SIArchivesBiz { sqlSession.commit(); } else { - throw new SalaryRunTimeException("该员工已关联的公积金档案不存在或存在多条,请处理后再重复当前操作!"); + fundSchemeMapper.deleteByEmployeeIdAndPayOrg(InsuranceArchivesFundSchemePO.builder() + .employeeId(param.getEmployeeId()) + .paymentOrganization(param.getPaymentOrganization()) + .build()); + //新建社保档案,并关联主表 + InsuranceArchivesFundSchemePO insertFundInfo = InsuranceArchivesFundSchemePO.builder() + .fundSchemeId(param.getFundSchemeId()) + .fundAccount(param.getFundAccount()) + .fundEndTime(StringUtils.isNotBlank(param.getFundEndTime()) ? param.getFundEndTime() : null) + .fundStartTime(StringUtils.isNotBlank(param.getFundStartTime()) ? param.getFundStartTime() : null) + .fundPaymentBaseString(paramReq.getPaymentForm()) + .supplementFundAccount(param.getSupplementFundAccount()) + .creator(employeeId) + .nonPayment(param.getNonPayment()) + .deleteType(DeleteTypeEnum.NOT_DELETED.getValue()) + .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) + .underTake(param.getUnderTake()) + .paymentOrganization(param.getPaymentOrganization()) + .createTime(new Date()) + .updateTime(new Date()) + .welfareType(paramReq.getWelfareType().getValue()) + .employeeId(param.getEmployeeId()) + .build(); + //校验福利基数是否符合上下限要求, + if (!checkWelBaseLimit(insertFundInfo.getFundSchemeId(),insertFundInfo.getFundPaymentBaseString())) { + throw new SalaryRunTimeException("公积金福利明细中的基数更新内容不符合相关基数上下限要求,请检查后重试!"); + } + encryptUtil.encrypt(insertFundInfo, InsuranceArchivesFundSchemePO.class); + fundSchemeMapper.insert(insertFundInfo); + sqlSession.commit(); + + InsuranceArchivesBaseInfoPO baseInfoPO = getInsuranceBaseInfoMapper().getOneByEmployeeIdAndPayOrg(param.getPaymentOrganization(), param.getEmployeeId()); + if(baseInfoPO != null) { + List fundInfos = fundSchemeMapper.getFundByEmployeeIdAndPayOrg(InsuranceArchivesEmployeePO.builder() + .employeeId(param.getEmployeeId()) + .paymentOrganization(param.getPaymentOrganization()) + .build()); + baseInfoPO.setFundArchivesId(fundInfos.get(0).getId()); + getInsuranceBaseInfoMapper().updateById(baseInfoPO); + } else { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(0, "档案不存在!")); + } + } } finally { @@ -787,11 +868,9 @@ public class SIArchivesBiz { // socialSchemeMapper.batchDeleteByEmployeeIds(Collections.singletonList(param.getEmployeeId())); //查询已有数据 -// List oldSocialInfoList = socialSchemeMapper.getSocialByEmployeeId(Collections.singletonList(param.getEmployeeId())); - List oldSocialInfoList = socialSchemeMapper.getSocialByEmployeeIdAndPayOrg(InsuranceArchivesEmployeePO.builder() - .employeeId(param.getEmployeeId()) - .paymentOrganization(param.getPaymentOrganization()) - .build()); + List socialIds = new ArrayList(); + socialIds.add(param.getId()); + List oldSocialInfoList = socialSchemeMapper.getSocialById(socialIds); //组装新数据 if (oldSocialInfoList.size() == 1) { InsuranceArchivesSocialSchemePO oldSocialInfo = oldSocialInfoList.get(0); @@ -823,7 +902,49 @@ public class SIArchivesBiz { sqlSession.commit(); } else { - throw new SalaryRunTimeException("该员工已关联的社保档案不存在或存在多条,请处理后再重复当前操作!"); + socialSchemeMapper.deleteByEmployeeIdAndPayOrg(InsuranceArchivesSocialSchemePO.builder() + .employeeId(param.getEmployeeId()) + .paymentOrganization(param.getPaymentOrganization()) + .build()); + //新建社保档案,并关联主表 + InsuranceArchivesSocialSchemePO insertSocialInfo = + InsuranceArchivesSocialSchemePO.builder() + .welfareType(paramReq.getWelfareType().getValue()) + .deleteType(DeleteTypeEnum.NOT_DELETED.getValue()) + .socialPaymentBaseString(paramReq.getPaymentForm()) + .socialSchemeId(param.getSocialSchemeId()) + .socialEndTime(StringUtils.isNotBlank(param.getSocialEndTime()) ? param.getSocialEndTime() : null) + .socialStartTime(StringUtils.isNotBlank(param.getSocialStartTime()) ? param.getSocialStartTime() : null) + .creator(employeeId) + .nonPayment(param.getNonPayment()) + .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) + .employeeId(param.getEmployeeId()) + .createTime(new Date()) + .updateTime(new Date()) + .underTake(param.getUnderTake()) + .socialAccount(param.getSchemeAccount()) + .paymentOrganization(param.getPaymentOrganization()) + .build(); + //校验福利基数是否符合上下限要求 + if (!checkWelBaseLimit(insertSocialInfo.getSocialSchemeId(),insertSocialInfo.getSocialPaymentBaseString())) { + throw new SalaryRunTimeException("社保福利明细中的基数更新内容不符合相关基数上下限要求,请检查后重试!"); + } + encryptUtil.encrypt(insertSocialInfo, InsuranceArchivesSocialSchemePO.class); + socialSchemeMapper.insert(insertSocialInfo); + sqlSession.commit(); + + InsuranceArchivesBaseInfoPO baseInfoPO = getInsuranceBaseInfoMapper().getOneByEmployeeIdAndPayOrg(param.getPaymentOrganization(), param.getEmployeeId()); + if(baseInfoPO != null) { + List socialInfos = socialSchemeMapper.getSocialByEmployeeIdAndPayOrg(InsuranceArchivesEmployeePO.builder() + .employeeId(param.getEmployeeId()) + .paymentOrganization(param.getPaymentOrganization()) + .build()); + baseInfoPO.setSocialArchivesId(socialInfos.get(0).getId()); + getInsuranceBaseInfoMapper().updateById(baseInfoPO); + } else { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(0, "档案不存在!")); + } + } } finally { diff --git a/src/com/engine/salary/mapper/siarchives/FundSchemeMapper.java b/src/com/engine/salary/mapper/siarchives/FundSchemeMapper.java index 558d84eb0..ca0cb78fb 100644 --- a/src/com/engine/salary/mapper/siarchives/FundSchemeMapper.java +++ b/src/com/engine/salary/mapper/siarchives/FundSchemeMapper.java @@ -85,4 +85,10 @@ public interface FundSchemeMapper { * @param fundArchiveDelIds */ void deleteByIds(@Param("ids")List fundArchiveDelIds); + + /** + * 新增 + * @param insuranceArchivesFundSchemePO + */ + void insert(InsuranceArchivesFundSchemePO insuranceArchivesFundSchemePO); } diff --git a/src/com/engine/salary/mapper/siarchives/FundSchemeMapper.xml b/src/com/engine/salary/mapper/siarchives/FundSchemeMapper.xml index 17416d13c..8590a88e6 100644 --- a/src/com/engine/salary/mapper/siarchives/FundSchemeMapper.xml +++ b/src/com/engine/salary/mapper/siarchives/FundSchemeMapper.xml @@ -327,4 +327,45 @@ + + + + INSERT INTO hrsa_fund_archives( + fund_scheme_id, + fund_account, + fund_end_time, + fund_start_time, + fund_payment_base_string, + supplement_fund_account, + create_time, + creator, + non_payment, + delete_type, + tenant_key, + under_take, + payment_organization, + update_time, + welfare_type, + employee_id) + VALUES + ( + #{fundSchemeId}, + #{fundAccount}, + #{fundEndTime}, + #{fundStartTime}, + #{fundPaymentBaseString}, + #{supplementFundAccount}, + #{createTime}, + #{creator}, + #{nonPayment}, + #{deleteType}, + #{tenantKey}, + #{underTake}, + #{paymentOrganization}, + #{updateTime}, + #{welfareType}, + #{employeeId} + ) + + \ No newline at end of file diff --git a/src/com/engine/salary/mapper/siarchives/InsuranceBaseInfoMapper.java b/src/com/engine/salary/mapper/siarchives/InsuranceBaseInfoMapper.java index 4f308f1b4..b604d49ef 100644 --- a/src/com/engine/salary/mapper/siarchives/InsuranceBaseInfoMapper.java +++ b/src/com/engine/salary/mapper/siarchives/InsuranceBaseInfoMapper.java @@ -113,4 +113,11 @@ public interface InsuranceBaseInfoMapper { * @param archiveDelIds */ void deleteByIds(@Param("ids")List archiveDelIds); + + /** + * 根据id更新 + * + * @param po + */ + void updateById(InsuranceArchivesBaseInfoPO po); } diff --git a/src/com/engine/salary/mapper/siarchives/InsuranceBaseInfoMapper.xml b/src/com/engine/salary/mapper/siarchives/InsuranceBaseInfoMapper.xml index 2d63845b8..252c1dd70 100644 --- a/src/com/engine/salary/mapper/siarchives/InsuranceBaseInfoMapper.xml +++ b/src/com/engine/salary/mapper/siarchives/InsuranceBaseInfoMapper.xml @@ -318,4 +318,23 @@ + + UPDATE hrsa_insurance_base_info + + + employee_id = #{employeeId}, + payment_organization = #{paymentOrganization}, + social_archives_id = #{socialArchivesId}, + fund_archives_id = #{fundArchivesId}, + other_archives_id = #{otherArchivesId}, + run_status = #{runStatus}, + create_time = #{createTime}, + update_time = #{updateTime}, + creator = #{creator}, + delete_type = #{deleteType}, + tenant_key = #{tenantKey}, + + WHERE id = #{id} + + \ No newline at end of file diff --git a/src/com/engine/salary/mapper/siarchives/OtherSchemeMapper.java b/src/com/engine/salary/mapper/siarchives/OtherSchemeMapper.java index 80d9785f4..26d684d21 100644 --- a/src/com/engine/salary/mapper/siarchives/OtherSchemeMapper.java +++ b/src/com/engine/salary/mapper/siarchives/OtherSchemeMapper.java @@ -77,4 +77,10 @@ public interface OtherSchemeMapper { * @param otherArchiveDelIds */ void deleteByIds(@Param("ids") List otherArchiveDelIds); + + /** + * 新增 + * @param insuranceArchivesOtherSchemePO + */ + void insert(InsuranceArchivesOtherSchemePO insuranceArchivesOtherSchemePO); } diff --git a/src/com/engine/salary/mapper/siarchives/OtherSchemeMapper.xml b/src/com/engine/salary/mapper/siarchives/OtherSchemeMapper.xml index fcfd38706..74c514a6e 100644 --- a/src/com/engine/salary/mapper/siarchives/OtherSchemeMapper.xml +++ b/src/com/engine/salary/mapper/siarchives/OtherSchemeMapper.xml @@ -305,4 +305,39 @@ + + + INSERT INTO hrsa_other_archives( + other_scheme_id, + other_start_time, + under_take, + tenant_key, + welfare_type, + other_end_time, + employee_id, + delete_type, + update_time, + create_time, + non_payment, + creator, + payment_organization, + other_payment_base_string) + VALUES + ( + #{otherSchemeId}, + #{otherStartTime}, + #{underTake}, + #{tenantKey}, + #{welfareType}, + #{otherEndTime}, + #{employeeId}, + #{deleteType}, + #{updateTime}, + #{createTime}, + #{nonPayment}, + #{creator}, + #{paymentOrganization}, + #{otherPaymentBaseString} + ) + \ No newline at end of file diff --git a/src/com/engine/salary/mapper/siarchives/SocialSchemeMapper.java b/src/com/engine/salary/mapper/siarchives/SocialSchemeMapper.java index 28f1bc511..0c730ed15 100644 --- a/src/com/engine/salary/mapper/siarchives/SocialSchemeMapper.java +++ b/src/com/engine/salary/mapper/siarchives/SocialSchemeMapper.java @@ -113,4 +113,10 @@ public interface SocialSchemeMapper { * @param socialArchiveDelIds */ void deleteByIds(@Param("ids")List socialArchiveDelIds); + + /** + * 新增 + * @param insuranceArchivesSocialSchemePO + */ + void insert(InsuranceArchivesSocialSchemePO insuranceArchivesSocialSchemePO); } diff --git a/src/com/engine/salary/mapper/siarchives/SocialSchemeMapper.xml b/src/com/engine/salary/mapper/siarchives/SocialSchemeMapper.xml index 10395159b..ebd5af0c3 100644 --- a/src/com/engine/salary/mapper/siarchives/SocialSchemeMapper.xml +++ b/src/com/engine/salary/mapper/siarchives/SocialSchemeMapper.xml @@ -709,4 +709,42 @@ + + + INSERT INTO hrsa_social_archives( + welfare_type, + delete_type, + social_payment_base_string, + social_scheme_id, + create_time, + social_end_time, + social_start_time, + creator, + non_payment, + tenant_key, + employee_id, + update_time, + under_take, + social_account, + payment_organization) + VALUES + ( + #{welfareType}, + #{deleteType}, + #{socialPaymentBaseString}, + #{socialSchemeId}, + #{createTime}, + #{socialEndTime}, + #{socialStartTime}, + #{creator}, + #{nonPayment}, + #{tenantKey}, + #{employeeId}, + #{updateTime}, + #{underTake}, + #{socialAccount}, + #{paymentOrganization} + ) + + \ No newline at end of file From a8a414a48b07c40b9bacaf74788380dc1425dfbd Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Mon, 24 Jul 2023 17:11:19 +0800 Subject: [PATCH 12/48] =?UTF-8?q?=E8=96=AA=E8=B5=84=E8=B4=A6=E5=A5=97?= =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E9=A1=B5=E9=9D=A2=E6=94=B9=E9=80=A0temp?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salary/biz/SalarySobItemHideBiz.java | 14 +- .../salaryitem/dto/SalaryItemFormDTO.java | 5 + .../salarysob/dto/SalarySobItemFormDTO.java | 83 +++++++++++ .../param/SalarySobItemSaveParam.java | 16 +++ .../entity/salarysob/po/SalarySobItemPO.java | 22 +++ .../salarysob/SalarySobItemHideMapper.java | 3 +- .../salarysob/SalarySobItemHideMapper.xml | 31 +++- .../mapper/salarysob/SalarySobItemMapper.xml | 35 ++++- .../service/SalarySobItemHideService.java | 10 ++ .../salary/service/SalarySobItemService.java | 12 ++ .../impl/SalarySobItemHideServiceImpl.java | 12 +- .../impl/SalarySobItemServiceImpl.java | 134 +++++++++++++++++- .../salary/web/SalarySobController.java | 23 +++ .../salary/wrapper/SalaryItemWrapper.java | 5 +- .../salary/wrapper/SalarySobItemWrapper.java | 17 +++ 15 files changed, 403 insertions(+), 19 deletions(-) create mode 100644 src/com/engine/salary/entity/salarysob/dto/SalarySobItemFormDTO.java diff --git a/src/com/engine/salary/biz/SalarySobItemHideBiz.java b/src/com/engine/salary/biz/SalarySobItemHideBiz.java index af3cb0142..5aa0f5a77 100644 --- a/src/com/engine/salary/biz/SalarySobItemHideBiz.java +++ b/src/com/engine/salary/biz/SalarySobItemHideBiz.java @@ -10,11 +10,11 @@ import java.util.List; public class SalarySobItemHideBiz { - public List listSome(SalarySobItemHidePO salarySobPO) { + public List listHideItemIds(SalarySobItemHidePO salarySobPO) { SqlSession sqlSession = MyBatisFactory.sqlSessionFactory.openSession(); try { SalarySobItemHideMapper mapper = sqlSession.getMapper(SalarySobItemHideMapper.class); - return mapper.getById(salarySobPO); + return mapper.listHideItemIds(salarySobPO); } finally { sqlSession.close(); } @@ -53,4 +53,14 @@ public class SalarySobItemHideBiz { sqlSession.close(); } } + + public List listSome(SalarySobItemHidePO po) { + SqlSession sqlSession = MyBatisFactory.sqlSessionFactory.openSession(); + try { + SalarySobItemHideMapper mapper = sqlSession.getMapper(SalarySobItemHideMapper.class); + return mapper.listSome(po); + } finally { + sqlSession.close(); + } + } } diff --git a/src/com/engine/salary/entity/salaryitem/dto/SalaryItemFormDTO.java b/src/com/engine/salary/entity/salaryitem/dto/SalaryItemFormDTO.java index c00b85844..5101bf2e4 100644 --- a/src/com/engine/salary/entity/salaryitem/dto/SalaryItemFormDTO.java +++ b/src/com/engine/salary/entity/salaryitem/dto/SalaryItemFormDTO.java @@ -75,6 +75,11 @@ public class SalaryItemFormDTO { //公式内容") private String formulaContent; + // 用于前端展示 公式原始内容 + private String originFormulaContent; + // 用于前端展示 原始sql + private String originSqlContent; + //备注") private String description; diff --git a/src/com/engine/salary/entity/salarysob/dto/SalarySobItemFormDTO.java b/src/com/engine/salary/entity/salarysob/dto/SalarySobItemFormDTO.java new file mode 100644 index 000000000..c8f772490 --- /dev/null +++ b/src/com/engine/salary/entity/salarysob/dto/SalarySobItemFormDTO.java @@ -0,0 +1,83 @@ +package com.engine.salary.entity.salarysob.dto; + +import com.engine.salary.enums.SalaryRoundingModeEnum; +import com.engine.salary.enums.SalaryValueTypeEnum; +import com.engine.salary.enums.salaryitem.SalaryDataTypeEnum; +import com.engine.salary.util.valid.DataCheck; +import com.engine.salary.util.valid.RuntimeTypeEnum; +import com.engine.salary.util.valid.ValidTypeEnum; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + +/** + * 薪资账套-薪资项目表单 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author xzy + * @version 1.0 + **/ +@Data +@Accessors(chain = true) +@NoArgsConstructor +@AllArgsConstructor +public class SalarySobItemFormDTO { + + //主键id") + @JsonSerialize(using = ToStringSerializer.class) + @DataCheck(require = true, runtime = {RuntimeTypeEnum.UPDATE}, message = "id不允许为空") + private Long id; + + //名称") + private String name; + + //核算时隐藏") + @DataCheck(require = true, runtime = {RuntimeTypeEnum.UPDATE}, message = "核算时隐藏不允许为空") + private Integer itemHide; + + //字段类型 + /** + * @see SalaryDataTypeEnum + */ + private String dataType; + + //舍入规则") + /** + * @see SalaryRoundingModeEnum + */ + @DataCheck(require = true, runtime = {RuntimeTypeEnum.UPDATE}, message = "舍入规则不允许为空") + private Integer roundingMode; + + //保留小数位") + @DataCheck(require = true, type = ValidTypeEnum.NUMBER, max = 6, message = "小数位最多为6") + private Integer pattern; + + //取值方式") + /** + * @see SalaryValueTypeEnum + */ + @DataCheck(require = true, runtime = {RuntimeTypeEnum.UPDATE}, message = "取值方式不允许为空") + private Integer valueType; + + //公式") + private Long formulaId; + + //公式内容") + private String formulaContent; + + // 用于前端展示 公式原始内容 + private String originFormulaContent; + // 用于前端展示 原始sql + private String originSqlContent; + + //备注") + private String description; + + //是否可以编辑") + private Integer canEdit; + +} diff --git a/src/com/engine/salary/entity/salarysob/param/SalarySobItemSaveParam.java b/src/com/engine/salary/entity/salarysob/param/SalarySobItemSaveParam.java index a1ebb158d..e19856374 100644 --- a/src/com/engine/salary/entity/salarysob/param/SalarySobItemSaveParam.java +++ b/src/com/engine/salary/entity/salarysob/param/SalarySobItemSaveParam.java @@ -77,6 +77,22 @@ public class SalarySobItemSaveParam { private Long itemHide; private Boolean canDelete; + + /** + * 进位规则 + */ + private Integer roundingMode; + + /** + * 保留小数位数 + */ + private Integer pattern; + + /** + * 取值方式 + */ + private Integer valueType; + } @Data diff --git a/src/com/engine/salary/entity/salarysob/po/SalarySobItemPO.java b/src/com/engine/salary/entity/salarysob/po/SalarySobItemPO.java index 0464d63f8..e3167bc23 100644 --- a/src/com/engine/salary/entity/salarysob/po/SalarySobItemPO.java +++ b/src/com/engine/salary/entity/salarysob/po/SalarySobItemPO.java @@ -1,5 +1,7 @@ package com.engine.salary.entity.salarysob.po; +import com.engine.salary.enums.SalaryRoundingModeEnum; +import com.engine.salary.enums.SalaryValueTypeEnum; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -88,6 +90,26 @@ public class SalarySobItemPO { */ private Date updateTime; + /** + * 进位规则 + * + * @see SalaryRoundingModeEnum + */ + private Integer roundingMode; + + /** + * 保留的小数位数 + */ + private Integer pattern; + + /** + * 取值方式 + * + * @see SalaryValueTypeEnum + */ + private Integer valueType; + + //该分类是否隐藏(0不隐藏,1隐藏) private Long itemHide; diff --git a/src/com/engine/salary/mapper/salarysob/SalarySobItemHideMapper.java b/src/com/engine/salary/mapper/salarysob/SalarySobItemHideMapper.java index 033fd38f1..77106cd38 100644 --- a/src/com/engine/salary/mapper/salarysob/SalarySobItemHideMapper.java +++ b/src/com/engine/salary/mapper/salarysob/SalarySobItemHideMapper.java @@ -13,7 +13,7 @@ public interface SalarySobItemHideMapper { * @param salarySobPO * @return */ - List getById(SalarySobItemHidePO salarySobPO); + List listHideItemIds(SalarySobItemHidePO salarySobPO); /*** * @description 删除薪资账套的薪资项目隐藏信息 @@ -28,4 +28,5 @@ public interface SalarySobItemHideMapper { void updateByItemId(SalarySobItemHidePO salarySobGroupItemHidePO); + List listSome(@Param("param") SalarySobItemHidePO po); } diff --git a/src/com/engine/salary/mapper/salarysob/SalarySobItemHideMapper.xml b/src/com/engine/salary/mapper/salarysob/SalarySobItemHideMapper.xml index f49701ba7..05fc565c6 100644 --- a/src/com/engine/salary/mapper/salarysob/SalarySobItemHideMapper.xml +++ b/src/com/engine/salary/mapper/salarysob/SalarySobItemHideMapper.xml @@ -12,7 +12,7 @@ - SELECT salary_item_id FROM hrsa_salary_item_hide where delete_type=0 and salary_sob_id=#{salarySobId} @@ -20,6 +20,35 @@ and is_group=#{isGroup} + + and salary_item_id=#{salaryItemId} + + + + diff --git a/src/com/engine/salary/mapper/salarysob/SalarySobItemMapper.xml b/src/com/engine/salary/mapper/salarysob/SalarySobItemMapper.xml index cf3d2173e..e74c88ec0 100644 --- a/src/com/engine/salary/mapper/salarysob/SalarySobItemMapper.xml +++ b/src/com/engine/salary/mapper/salarysob/SalarySobItemMapper.xml @@ -33,7 +33,10 @@ , t.sorted_index , t.tenant_key , t.update_time - ,t.can_delete + , t.can_delete + , t.rounding_mode + , t.pattern + , t.value_type @@ -318,6 +321,15 @@ can_delete=#{canDelete}, + + rounding_mode=#{roundingMode}, + + + pattern=#{pattern}, + + + value_type=#{valueType}, + WHERE id = #{id} AND delete_type = 0 @@ -364,7 +376,7 @@ INSERT INTO hrsa_salary_sob_item(salary_sob_id, salary_item_id, salary_sob_item_group_id, formula_id, - sorted_index, description, create_time, update_time, creator, delete_type, tenant_key,can_delete) + sorted_index, description, create_time, update_time, creator, delete_type, tenant_key,can_delete,rounding_mode,pattern,value_type) VALUES ( @@ -379,13 +391,16 @@ #{item.creator}, #{item.deleteType}, #{item.tenantKey}, - #{item.canDelete} + #{item.canDelete}, + #{item.roundingMode}, + #{item.pattern}, + #{item.valueType} ) INSERT INTO hrsa_salary_sob_item( salary_sob_id, salary_item_id, salary_sob_item_group_id, formula_id, - sorted_index, description, create_time, update_time, creator, delete_type, tenant_key,can_delete) + sorted_index, description, create_time, update_time, creator, delete_type, tenant_key,can_delete,rounding_mode,pattern,value_type) select @@ -400,14 +415,17 @@ #{item.creator,jdbcType=DOUBLE}, #{item.deleteType,jdbcType=INTEGER}, #{item.tenantKey,jdbcType=VARCHAR}, - #{item.canDelete,jdbcType=INTEGER} + #{item.canDelete,jdbcType=INTEGER}, + #{item.roundingMode,jdbcType=INTEGER}, + #{item.pattern,jdbcType=INTEGER}, + #{item.valueType,jdbcType=INTEGER} from dual INSERT INTO hrsa_salary_sob_item( salary_sob_id, salary_item_id, salary_sob_item_group_id, formula_id, - sorted_index, description, create_time, update_time, creator, delete_type, tenant_key,can_delete) + sorted_index, description, create_time, update_time, creator, delete_type, tenant_key,can_delete,rounding_mode,pattern,value_type) VALUES ( #{item.salarySobId}, @@ -421,7 +439,10 @@ #{item.creator}, #{item.deleteType}, #{item.tenantKey}, - #{item.canDelete} + #{item.canDelete}, + #{item.roundingMode}, + #{item.pattern}, + #{item.valueType} ) diff --git a/src/com/engine/salary/service/SalarySobItemHideService.java b/src/com/engine/salary/service/SalarySobItemHideService.java index 7551c75c2..826825449 100644 --- a/src/com/engine/salary/service/SalarySobItemHideService.java +++ b/src/com/engine/salary/service/SalarySobItemHideService.java @@ -13,4 +13,14 @@ public interface SalarySobItemHideService { * @return */ List listHideGroupBysalarySobId(SalarySobItemHidePO salarySobId); + + /** + * 根据薪资账套id查询哪些字段关闭显示 + * + * @param po + * @return + */ + List listSome(SalarySobItemHidePO po); + + void updateById(SalarySobItemHidePO salarySobItemHidePO); } diff --git a/src/com/engine/salary/service/SalarySobItemService.java b/src/com/engine/salary/service/SalarySobItemService.java index adca1503b..f8b2cc23d 100644 --- a/src/com/engine/salary/service/SalarySobItemService.java +++ b/src/com/engine/salary/service/SalarySobItemService.java @@ -2,6 +2,7 @@ package com.engine.salary.service; import com.engine.salary.entity.salaryitem.po.SalaryItemPO; import com.engine.salary.entity.salarysob.dto.SalarySobItemAggregateDTO; +import com.engine.salary.entity.salarysob.dto.SalarySobItemFormDTO; import com.engine.salary.entity.salarysob.param.SalarySobItemSaveParam; import com.engine.salary.entity.salarysob.po.SalarySobItemPO; @@ -119,4 +120,15 @@ public interface SalarySobItemService { * */ void deleteItemShowBySalarySobIds(Collection salarySobIds); + + /** + * 薪资项目的详情 + */ + SalarySobItemFormDTO getSalaryItemForm(SalarySobItemPO param); + + /** + * 薪资账套-保存薪资项目详情设置 + * @param saveParam + */ + void saveSalaryItemDetail(SalarySobItemFormDTO saveParam); } diff --git a/src/com/engine/salary/service/impl/SalarySobItemHideServiceImpl.java b/src/com/engine/salary/service/impl/SalarySobItemHideServiceImpl.java index 8a30b7ba5..f4e6895d2 100644 --- a/src/com/engine/salary/service/impl/SalarySobItemHideServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalarySobItemHideServiceImpl.java @@ -13,6 +13,16 @@ public class SalarySobItemHideServiceImpl extends Service implements SalarySobIt @Override public List listHideGroupBysalarySobId(SalarySobItemHidePO salarySobPO) { - return salarySobItemHideMapper.listSome(salarySobPO); + return salarySobItemHideMapper.listHideItemIds(salarySobPO); + } + + @Override + public List listSome(SalarySobItemHidePO po) { + return salarySobItemHideMapper.listSome(po); + } + + @Override + public void updateById(SalarySobItemHidePO salarySobItemHidePO) { + salarySobItemHideMapper.update(salarySobItemHidePO); } } diff --git a/src/com/engine/salary/service/impl/SalarySobItemServiceImpl.java b/src/com/engine/salary/service/impl/SalarySobItemServiceImpl.java index 4d1a8d659..979047d72 100644 --- a/src/com/engine/salary/service/impl/SalarySobItemServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalarySobItemServiceImpl.java @@ -11,9 +11,11 @@ import com.engine.salary.entity.salaryformula.ExpressFormula; import com.engine.salary.entity.salaryitem.po.SalaryItemPO; import com.engine.salary.entity.salarysob.bo.SalarySobItemAggregateBO; import com.engine.salary.entity.salarysob.dto.SalarySobItemAggregateDTO; +import com.engine.salary.entity.salarysob.dto.SalarySobItemFormDTO; import com.engine.salary.entity.salarysob.param.SalarySobItemSaveParam; import com.engine.salary.entity.salarysob.po.*; import com.engine.salary.entity.taxagent.po.TaxAgentPO; +import com.engine.salary.enums.SalaryValueTypeEnum; import com.engine.salary.exception.SalaryRunTimeException; import com.engine.salary.mapper.salarysob.SalarySobDefaultItemMapper; import com.engine.salary.mapper.salarysob.SalarySobEmpFieldMapper; @@ -22,11 +24,14 @@ import com.engine.salary.service.*; import com.engine.salary.util.SalaryEntityUtil; import com.engine.salary.util.SalaryI18nUtil; import com.engine.salary.util.db.MapperProxyFactory; +import com.engine.salary.util.valid.RuntimeTypeEnum; import com.engine.salary.util.valid.ValidUtil; import dm.jdbc.util.IdGenerator; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.math.NumberUtils; +import weaver.general.BaseBean; import weaver.hrm.User; import java.util.*; @@ -201,10 +206,6 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe // 查询薪资账套的薪资项目分类 List salarySobItemGroupPOS = getSalarySobItemGroupService(user).listBySalarySobIdWithItemHide(salarySobId); - if (isBackCalc) { - // 回算分类 - - } // 获取关闭显示的分类 List hideGroupIDs = getSalarySobItemHideService(user).listHideGroupBysalarySobId(SalarySobItemHidePO.builder().salarySobId(salarySobId).isGroup(1).build()); // 过滤关闭显示的薪资项目分类 @@ -348,6 +349,10 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe List needUpdateGroup = itemGroups.stream().filter(f -> f.getId() != null && oldGroupIds.contains(f.getId())).collect(Collectors.toList()); List needDeleteGroupIds = oldGroupIds.stream().filter(f -> !newGroupIds.contains(f)).collect(Collectors.toList()); + // 获取所有薪资项目 + List allSalaryItemList = getSalaryItemService(user).listAll(); + Map salaryItemsMap = SalaryEntityUtil.convert2Map(allSalaryItemList, SalaryItemPO::getId); + // 需要保存的隐藏项目 List needInsertItemShow = new ArrayList<>(); @@ -390,6 +395,7 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe for (SalarySobItemSaveParam.SalarySobItemParam itemParam : itemGroupParam.getItems()) { + SalaryItemPO salaryItemPO = checkItemExists(itemParam.getSalaryItemId(), salaryItemsMap); SalarySobItemPO salarySobItemPO = SalarySobItemPO.builder() .salarySobId(salarySobId) .salaryItemId(itemParam.getSalaryItemId()) @@ -403,6 +409,9 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe .deleteType(NumberUtils.INTEGER_ZERO) .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) .canDelete(itemParam.getCanDelete() == null ? NumberUtils.INTEGER_ONE : (itemParam.getCanDelete() ? NumberUtils.INTEGER_ONE : NumberUtils.INTEGER_ZERO)) + .roundingMode(itemParam.getRoundingMode() == null ? salaryItemPO.getRoundingMode() : itemParam.getRoundingMode()) + .pattern(itemParam.getPattern() == null ? salaryItemPO.getPattern() : itemParam.getPattern()) + .valueType(itemParam.getValueType() == null ? salaryItemPO.getValueType() : itemParam.getValueType()) .build(); salarySobItems.add(salarySobItemPO); @@ -465,6 +474,7 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe //新增 for (SalarySobItemSaveParam.SalarySobItemParam itemParam : needAddItems) { + SalaryItemPO salaryItemPO = checkItemExists(itemParam.getSalaryItemId(), salaryItemsMap); SalarySobItemPO salarySobItemPO = SalarySobItemPO.builder() .salarySobId(salarySobId) .salaryItemId(itemParam.getSalaryItemId()) @@ -478,6 +488,9 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe .updateTime(now) .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) .deleteType(NumberUtils.INTEGER_ZERO) + .roundingMode(itemParam.getRoundingMode() == null ? salaryItemPO.getRoundingMode() : itemParam.getRoundingMode()) + .pattern(itemParam.getPattern() == null ? salaryItemPO.getPattern() : itemParam.getPattern()) + .valueType(itemParam.getValueType() == null ? salaryItemPO.getValueType() : itemParam.getValueType()) .build(); salarySobItems.add(salarySobItemPO); @@ -499,6 +512,7 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe } //更新 for (SalarySobItemSaveParam.SalarySobItemParam itemParam : needUpdateItems) { + SalaryItemPO salaryItemPO = checkItemExists(itemParam.getSalaryItemId(), salaryItemsMap); SalarySobItemPO salarySobItemPO = SalarySobItemPO.builder() .id(itemParam.getId()) .salaryItemId(itemParam.getSalaryItemId()) @@ -508,6 +522,9 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe .canDelete(itemParam.getCanDelete() == null ? NumberUtils.INTEGER_ONE : (itemParam.getCanDelete() ? NumberUtils.INTEGER_ONE : NumberUtils.INTEGER_ZERO)) .updateTime(now) .deleteType(NumberUtils.INTEGER_ZERO) + .roundingMode(itemParam.getRoundingMode() == null ? salaryItemPO.getRoundingMode() : itemParam.getRoundingMode()) + .pattern(itemParam.getPattern() == null ? salaryItemPO.getPattern() : itemParam.getPattern()) + .valueType(itemParam.getValueType() == null ? salaryItemPO.getValueType() : itemParam.getValueType()) .build(); getSalarySobItemMapper().updateIgnoreNull(salarySobItemPO); // 保存薪资项目是否展示 @@ -547,7 +564,7 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe List needUpdateItems = items.stream().filter(f -> f.getId() != null && oldItemIds.contains(f.getId())).collect(Collectors.toList()); for (SalarySobItemSaveParam.SalarySobItemParam itemParam : needAddItems) { - + SalaryItemPO salaryItemPO = checkItemExists(itemParam.getSalaryItemId(), salaryItemsMap); SalarySobItemPO salarySobItemPO = SalarySobItemPO.builder() .salarySobId(salarySobId) .salaryItemId(itemParam.getSalaryItemId()) @@ -561,6 +578,9 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe .deleteType(NumberUtils.INTEGER_ZERO) .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) .canDelete(itemParam.getCanDelete() == null ? NumberUtils.INTEGER_ONE : (itemParam.getCanDelete() ? NumberUtils.INTEGER_ONE : NumberUtils.INTEGER_ZERO)) + .roundingMode(itemParam.getRoundingMode() == null ? salaryItemPO.getRoundingMode() : itemParam.getRoundingMode()) + .pattern(itemParam.getPattern() == null ? salaryItemPO.getPattern() : itemParam.getPattern()) + .valueType(itemParam.getValueType() == null ? salaryItemPO.getValueType() : itemParam.getValueType()) .build(); salarySobItems.add(salarySobItemPO); @@ -583,13 +603,16 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe } for (SalarySobItemSaveParam.SalarySobItemParam itemParam : needUpdateItems) { - + SalaryItemPO salaryItemPO = checkItemExists(itemParam.getSalaryItemId(), salaryItemsMap); SalarySobItemPO salarySobItemPO = SalarySobItemPO.builder() .id(itemParam.getId()) .formulaId(Optional.ofNullable(itemParam.getFormulaId()).orElse(NumberUtils.LONG_ZERO)) .sortedIndex(itemParam.getSortedIndex()) .updateTime(now) .canDelete(itemParam.getCanDelete() == null ? NumberUtils.INTEGER_ONE : (itemParam.getCanDelete() ? NumberUtils.INTEGER_ONE : NumberUtils.INTEGER_ZERO)) + .roundingMode(itemParam.getRoundingMode() == null ? salaryItemPO.getRoundingMode() : itemParam.getRoundingMode()) + .pattern(itemParam.getPattern() == null ? salaryItemPO.getPattern() : itemParam.getPattern()) + .valueType(itemParam.getValueType() == null ? salaryItemPO.getValueType() : itemParam.getValueType()) .build(); getSalarySobItemMapper().updateIgnoreNull(salarySobItemPO); @@ -622,6 +645,13 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe batchSaveShow(needInsertItemShow); } + private SalaryItemPO checkItemExists(Long salaryItemId, Map salaryItemsMap) { + SalaryItemPO salaryItemPO = salaryItemsMap.get(salaryItemId); + if (ObjectUtils.isEmpty(salaryItemPO)){ + throw new SalaryRunTimeException("保存失败!存在薪资项目不存在或已被删除"); + } + return salaryItemPO; + } private void handleEmpField(SalarySobItemSaveParam saveParam) { @@ -697,4 +727,96 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe public void deleteItemShowBySalarySobIds(Collection salarySobIds) { salarySobItemMapper.deleteItemShowBySalarySobId(salarySobIds); } + + @Override + public SalarySobItemFormDTO getSalaryItemForm(SalarySobItemPO param) { + SalarySobItemFormDTO salarySobItemFormDTO = new SalarySobItemFormDTO(); + salarySobItemFormDTO.setCanEdit(1); + // 默认可以编辑 + if (ObjectUtils.isNotEmpty(param.getSalarySobId()) && ObjectUtils.isNotEmpty(param.getSalaryItemId())) { + // 查询薪资账套 + SalarySobPO salarySobPO = salarySobBiz.getById(param.getSalarySobId()); + if (Objects.isNull(salarySobPO)) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98379, "参数错误,薪资账套不存在或者已被删除")); + } + // 查询薪资项目 + List salarySobItemPOS = getSalarySobItemMapper().listSome(SalarySobItemPO.builder().salarySobId(param.getSalarySobId()).salaryItemId(param.getSalaryItemId()).build()); + if (CollectionUtils.isEmpty(salarySobItemPOS)){ + throw new SalaryRunTimeException("账套中薪资项目不存在"); + } + SalarySobItemPO salarySobItemPO = salarySobItemPOS.get(0); + SalaryItemPO salaryItemPO = getSalaryItemService(user).getById(salarySobItemPO.getSalaryItemId()); + if (ObjectUtils.isEmpty(salaryItemPO)){ + throw new SalaryRunTimeException("薪资项目不存在或已被删除"); + } + //获取系统值 + List salarySobDefaultItemPOS = getSalarySobDefaultItemMapper().listAll(); + salarySobDefaultItemPOS = salarySobDefaultItemPOS.stream().filter(po -> po.getSysSalaryItemId() != 0).collect(Collectors.toList()); + Map longIntegerMap = SalaryEntityUtil.convert2Map(salarySobDefaultItemPOS, SalarySobDefaultItemPO::getSysSalaryItemId, SalarySobDefaultItemPO::getCanDelete); + if (salaryItemPO.getSysSalaryItemId() != null){ + salarySobItemPO.setCanDelete(longIntegerMap.getOrDefault(salaryItemPO.getSysSalaryItemId(), 1)); + } + // 获取薪资项目公式 + List expressFormulas = getSalaryFormulaService(user).listExpressFormula(Collections.singleton(salarySobItemPO.getFormulaId())); + // 强制开启账套的公式配置 + BaseBean baseBean = new BaseBean(); + final Boolean openFormulaForcedEditing = "true".equals(baseBean.getPropValue("hrmSalary", "openFormulaForcedEditing")); + // 获取核算时隐藏的薪资项目id + List hideItemIds = getSalarySobItemHideService(user).listHideGroupBysalarySobId(SalarySobItemHidePO.builder() + .salarySobId(param.getSalarySobId()) + .isGroup(new Integer(0)) + .salaryItemId(param.getSalaryItemId()) + .build()); + + String formulaContent = CollectionUtils.isEmpty(expressFormulas) ? "" : expressFormulas.get(0).getFormula(); + Integer valueType = ObjectUtils.isEmpty(salarySobItemPO.getValueType()) ? salaryItemPO.getValueType() : salarySobItemPO.getValueType(); + salarySobItemFormDTO + .setId(salarySobItemPO.getId()) + .setName(salaryItemPO.getName()) + .setItemHide(hideItemIds.contains(salaryItemPO.getId()) ? 1 : 0) + .setDataType(salaryItemPO.getDataType()) + .setRoundingMode(ObjectUtils.isEmpty(salarySobItemPO.getRoundingMode()) ? salaryItemPO.getRoundingMode() : salarySobItemPO.getRoundingMode()) + .setPattern(ObjectUtils.isEmpty(salarySobItemPO.getPattern()) ? salaryItemPO.getPattern() : salarySobItemPO.getPattern()) + .setValueType(valueType) + .setFormulaId(salarySobItemPO.getFormulaId()) + .setFormulaContent(CollectionUtils.isNotEmpty(expressFormulas) ? formulaContent : "") + .setOriginFormulaContent(valueType.equals(SalaryValueTypeEnum.FORMULA.getValue()) ? formulaContent : "") + .setOriginSqlContent(valueType.equals(SalaryValueTypeEnum.SQL.getValue()) ? formulaContent : "") + .setDescription(salarySobItemPO.getDescription()) + .setCanEdit((openFormulaForcedEditing || salaryItemPO.getCanEdit().equals(1)) ? 1 : 0); + } + return salarySobItemFormDTO; + } + + @Override + public void saveSalaryItemDetail(SalarySobItemFormDTO saveParam) { + ValidUtil.doValidator(saveParam, RuntimeTypeEnum.UPDATE); + // 查询薪资项目,判断薪资项目是否存在 + SalarySobItemPO salarySobItemPO = getSalarySobItemMapper().getById(saveParam.getId()); + if (Objects.isNull(salarySobItemPO)) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98299, "参数错误,薪资项目不存在或已被删除")); + } + + // 更新薪资项目 + SalarySobItemPO newSalarySobItemPO = new SalarySobItemPO(); + newSalarySobItemPO.setId(saveParam.getId()); + newSalarySobItemPO.setFormulaId(saveParam.getFormulaId()); + newSalarySobItemPO.setDescription(saveParam.getDescription()); + newSalarySobItemPO.setUpdateTime(new Date()); + newSalarySobItemPO.setRoundingMode(saveParam.getRoundingMode()); + newSalarySobItemPO.setPattern(saveParam.getPattern()); + newSalarySobItemPO.setValueType(saveParam.getValueType()); + getSalarySobItemMapper().updateIgnoreNull(newSalarySobItemPO); + + // 更新隐藏信息 + List salarySobItemHideList = getSalarySobItemHideService(user).listSome(SalarySobItemHidePO.builder() + .salarySobId(salarySobItemPO.getSalarySobId()) + .salaryItemId(salarySobItemPO.getSalaryItemId()) + .build()); + if(CollectionUtils.isNotEmpty(salarySobItemHideList)){ + SalarySobItemHidePO salarySobItemHidePO = salarySobItemHideList.get(0); + salarySobItemHidePO.setItemHide(Long.valueOf(saveParam.getItemHide())); + getSalarySobItemHideService(user).updateById(salarySobItemHidePO); + } + } } diff --git a/src/com/engine/salary/web/SalarySobController.java b/src/com/engine/salary/web/SalarySobController.java index 840e1bc33..fd7b756ac 100644 --- a/src/com/engine/salary/web/SalarySobController.java +++ b/src/com/engine/salary/web/SalarySobController.java @@ -7,6 +7,7 @@ import com.engine.salary.entity.salaryitem.param.SalaryItemSearchParam; import com.engine.salary.entity.salarysob.dto.*; import com.engine.salary.entity.salarysob.param.*; import com.engine.salary.entity.salarysob.po.SalarySobItemGroupPO; +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.util.ResponseResult; @@ -367,6 +368,28 @@ public class SalarySobController { return new ResponseResult>(user).run(getSalarySobItemWrapper(user)::save, saveParam); } + /** + * 薪资账套-薪资项目的详情 + */ + @POST + @Path("/item/getSalaryItemForm") + @Produces(MediaType.APPLICATION_JSON) + public String getSalaryItemForm(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalarySobItemPO param) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getSalarySobItemWrapper(user)::getSalaryItemForm, param); + } + + /** + * 薪资账套-保存薪资项目详情设置 + */ + @POST + @Path("/item/saveSalaryItemDetail") + @Produces(MediaType.APPLICATION_JSON) + public String saveSalaryItemDetail(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalarySobItemFormDTO saveParam) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getSalarySobItemWrapper(user)::saveSalaryItemDetail, saveParam); + } + diff --git a/src/com/engine/salary/wrapper/SalaryItemWrapper.java b/src/com/engine/salary/wrapper/SalaryItemWrapper.java index 84355ade6..b1d43a044 100644 --- a/src/com/engine/salary/wrapper/SalaryItemWrapper.java +++ b/src/com/engine/salary/wrapper/SalaryItemWrapper.java @@ -192,7 +192,10 @@ public class SalaryItemWrapper extends Service { salaryItemFormDTO = SalaryItemBO.convert2FormDTO(salaryItemPO); expressFormula = getSalaryFormulaService(user).getExpressFormula(salaryItemPO.getFormulaId()); } - salaryItemFormDTO.setFormulaContent(Optional.ofNullable(expressFormula).map(ExpressFormula::getFormula).orElse("")); + String formulaContent = Optional.ofNullable(expressFormula).map(ExpressFormula::getFormula).orElse(""); + salaryItemFormDTO.setFormulaContent(formulaContent); + salaryItemFormDTO.setOriginFormulaContent(salaryItemFormDTO.getValueType().equals(SalaryValueTypeEnum.FORMULA.getValue()) ? formulaContent : ""); + salaryItemFormDTO.setOriginSqlContent(salaryItemFormDTO.getValueType().equals(SalaryValueTypeEnum.SQL.getValue()) ? formulaContent : ""); } return salaryItemFormDTO; } diff --git a/src/com/engine/salary/wrapper/SalarySobItemWrapper.java b/src/com/engine/salary/wrapper/SalarySobItemWrapper.java index 096d9a395..9715a2b80 100644 --- a/src/com/engine/salary/wrapper/SalarySobItemWrapper.java +++ b/src/com/engine/salary/wrapper/SalarySobItemWrapper.java @@ -11,8 +11,10 @@ import com.engine.salary.entity.salaryitem.param.SalaryItemSearchParam; import com.engine.salary.entity.salaryitem.po.SalaryItemPO; import com.engine.salary.entity.salaryitem.po.SysSalaryItemPO; import com.engine.salary.entity.salarysob.dto.SalarySobItemAggregateDTO; +import com.engine.salary.entity.salarysob.dto.SalarySobItemFormDTO; import com.engine.salary.entity.salarysob.param.SalarySobItemSaveParam; import com.engine.salary.entity.salarysob.po.SalarySobItemGroupPO; +import com.engine.salary.entity.salarysob.po.SalarySobItemPO; import com.engine.salary.entity.taxagent.po.TaxAgentPO; import com.engine.salary.service.*; import com.engine.salary.service.impl.*; @@ -168,4 +170,19 @@ public class SalarySobItemWrapper extends Service { } return list; } + + /** + * 薪资项目的详情 + */ + public SalarySobItemFormDTO getSalaryItemForm(SalarySobItemPO param) { + return getSalarySobItemService(user).getSalaryItemForm(param); + } + + /** + * 薪资账套-保存薪资项目详情设置 + * @param saveParam + */ + public void saveSalaryItemDetail(SalarySobItemFormDTO saveParam) { + getSalarySobItemService(user).saveSalaryItemDetail(saveParam); + } } From 7969360e675e9b2c26a3c1342bc050cad308b1f4 Mon Sep 17 00:00:00 2001 From: sy Date: Tue, 25 Jul 2023 14:28:35 +0800 Subject: [PATCH 13/48] =?UTF-8?q?=E8=96=AA=E9=85=AC=E7=B3=BB=E7=BB=9F-?= =?UTF-8?q?=E7=A6=8F=E5=88=A9=E6=96=B9=E6=A1=88=EF=BC=8C=E8=87=AA=E5=AE=9A?= =?UTF-8?q?=E4=B9=89=E7=A6=8F=E5=88=A9=E9=A1=B9=E6=94=AF=E6=8C=81=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E7=BC=B4=E8=B4=B9=E5=AF=B9=E8=B1=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapper/sicategory/ICategoryMapper.java | 6 +++++ .../mapper/sicategory/ICategoryMapper.xml | 11 +++++++++ .../salary/service/SICategoryService.java | 5 ++++ .../service/impl/SICategoryServiceImpl.java | 24 +++++++++++++++++++ .../salary/web/SICategoryController.java | 3 ++- 5 files changed, 48 insertions(+), 1 deletion(-) diff --git a/src/com/engine/salary/mapper/sicategory/ICategoryMapper.java b/src/com/engine/salary/mapper/sicategory/ICategoryMapper.java index cfc7d17ed..4ecd92480 100644 --- a/src/com/engine/salary/mapper/sicategory/ICategoryMapper.java +++ b/src/com/engine/salary/mapper/sicategory/ICategoryMapper.java @@ -70,6 +70,12 @@ public interface ICategoryMapper { */ void updateNameById(ICategoryPO iCategoryPO); + /** + * 根据id更新福利名称和缴费对象 + * @param iCategoryPO + */ + void updateNameAndPayScopeById(ICategoryPO iCategoryPO); + /** * 根据类型查询福利类型 * diff --git a/src/com/engine/salary/mapper/sicategory/ICategoryMapper.xml b/src/com/engine/salary/mapper/sicategory/ICategoryMapper.xml index 51529b92c..87845a20c 100644 --- a/src/com/engine/salary/mapper/sicategory/ICategoryMapper.xml +++ b/src/com/engine/salary/mapper/sicategory/ICategoryMapper.xml @@ -178,6 +178,17 @@ WHERE id = #{id} AND data_type = 0 + + + UPDATE hrsa_insurance_category + + update_time=#{updateTime}, + insurance_name=#{insuranceName}, + payment_scope=#{paymentScope}, + + WHERE id = #{id} AND data_type = 0 + + + + + UPDATE hrsa_insurance_category + + update_time=#{updateTime}, + delete_type = 1 + + WHERE id = #{id} AND delete_type = 0 AND data_type = 0 + \ No newline at end of file diff --git a/src/com/engine/salary/service/SICategoryService.java b/src/com/engine/salary/service/SICategoryService.java index e754a9f1e..dfaa84349 100644 --- a/src/com/engine/salary/service/SICategoryService.java +++ b/src/com/engine/salary/service/SICategoryService.java @@ -63,4 +63,6 @@ public interface SICategoryService { * @description 修改自定义福利 名称、缴费对象 */ Map updateCategoryNameAndPayScope(ICategoryFormDTO iCategoryFormDTO); + + Map deleteCustomCategory(ICategoryFormDTO iCategoryFormDTO); } diff --git a/src/com/engine/salary/service/impl/SICategoryServiceImpl.java b/src/com/engine/salary/service/impl/SICategoryServiceImpl.java index e3a4112d2..53f8b8d58 100644 --- a/src/com/engine/salary/service/impl/SICategoryServiceImpl.java +++ b/src/com/engine/salary/service/impl/SICategoryServiceImpl.java @@ -1,10 +1,12 @@ package com.engine.salary.service.impl; +import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; import com.engine.salary.cmd.sicategory.SICategoryGetFormCmd; import com.engine.salary.cmd.sicategory.SICategoryInsertCmd; import com.engine.salary.cmd.sicategory.SICategoryUpdateCmd; import com.engine.salary.cmd.sicategory.SICategoryUpdateStatusByIdCmd; +import com.engine.salary.entity.siaccount.po.InsuranceAccountDetailPO; import com.engine.salary.entity.sicategory.dto.ICategoryDTO; import com.engine.salary.entity.sicategory.dto.ICategoryFormDTO; import com.engine.salary.entity.sicategory.dto.ICategoryListDTO; @@ -14,16 +16,20 @@ import com.engine.salary.enums.sicategory.DataTypeEnum; import com.engine.salary.enums.sicategory.PaymentScopeEnum; import com.engine.salary.enums.sicategory.WelfareTypeEnum; import com.engine.salary.exception.SalaryRunTimeException; +import com.engine.salary.mapper.siaccount.InsuranceAccountDetailMapper; import com.engine.salary.mapper.sicategory.ICategoryMapper; +import com.engine.salary.service.RecordsBuildService; import com.engine.salary.service.SICategoryService; import com.engine.salary.util.SalaryEntityUtil; import com.engine.salary.util.SalaryEnumUtil; +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 org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.MapUtils; import org.apache.commons.lang3.StringUtils; +import weaver.hrm.User; import java.util.*; import java.util.stream.Collectors; @@ -40,6 +46,13 @@ public class SICategoryServiceImpl extends Service implements SICategoryService return MapperProxyFactory.getProxy(ICategoryMapper.class); } + private InsuranceAccountDetailMapper getInsuranceAccountDetailMapper() { + return MapperProxyFactory.getProxy(InsuranceAccountDetailMapper.class); + } + + public RecordsBuildService getRecordsBuildService(User user) { + return ServiceUtil.getService(RecordsBuildServiceImpl.class, user); + } @Override public Map getForm(Map params) { @@ -140,17 +153,17 @@ public class SICategoryServiceImpl extends Service implements SICategoryService public Map updateCategoryNameAndPayScope(ICategoryFormDTO iCategoryFormDTO) { ICategoryPO categoryPO = getICategoryMapper().getByIdAndDataType(iCategoryFormDTO.getId(), DataTypeEnum.CUSTOM.getValue()); if(categoryPO == null){ - throw new SalaryRunTimeException("自定义福利不存在"); + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(0, "自定义福利不存在")); } // 判断是否启用 Integer isUse = categoryPO.getIsUse(); if(isUse == 1){ - throw new SalaryRunTimeException("编辑失败,请先关闭启用按钮!"); + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(0, "编辑失败,请先关闭启用按钮!")); } // 判断福利名称是否重复 List iCategoryPOS = getICategoryMapper().listByName(iCategoryFormDTO.getInsuranceName()); if(CollectionUtils.isNotEmpty(iCategoryPOS)){ - throw new SalaryRunTimeException("福利名称不能重复"); + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(0, "福利名称不能重复")); } ICategoryPO iCategoryPO = ICategoryPO.builder().id(iCategoryFormDTO.getId()).insuranceName(iCategoryFormDTO.getInsuranceName()) .paymentScope(SalaryEnumUtil.enumArrToString(iCategoryFormDTO.getPaymentScope())) @@ -160,6 +173,52 @@ public class SICategoryServiceImpl extends Service implements SICategoryService return null; } + @Override + public Map deleteCustomCategory(ICategoryFormDTO iCategoryFormDTO) { + ICategoryPO categoryPO = getICategoryMapper().getByIdAndDataType(iCategoryFormDTO.getId(), DataTypeEnum.CUSTOM.getValue()); + if(categoryPO == null){ + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(0, "自定义福利不存在")); + } + // 判断是否启用 + Integer isUse = categoryPO.getIsUse(); + if(isUse == 1){ + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(0, "删除失败,请先关闭启用按钮!")); + } + // 判断自定义福利项是否存在核算数据 + //获取所有福利核算数据 + List insuranceAccountDetailPOS = getInsuranceAccountDetailMapper().listAll(); + //数据组装 + List> records = getRecordsBuildService(user).buildCommonRecords(insuranceAccountDetailPOS, null); + String welfareTypeName = ""; + switch (categoryPO.getWelfareType()) { + case 1: + welfareTypeName = "social"; + break; + case 2: + welfareTypeName = "fund"; + break; + case 3: + welfareTypeName = "other"; + break; + default: + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(542456, "福利类型不在")); + } + String welfareNameStart = categoryPO.getId() + welfareTypeName; + //校验福利项是否存在核算记录 + records.forEach(f -> { + if (StringUtils.isNotBlank(f.get(welfareNameStart + "Per").toString()) + || StringUtils.isNotBlank(f.get(welfareNameStart + "Com").toString()) + || StringUtils.isNotBlank(f.get(welfareNameStart + "Base").toString())) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(0, "删除失败,已存在福利核算记录")); + } + }); + + //删除自定义福利项 + categoryPO.setUpdateTime(new Date()); + getICategoryMapper().deleteCustomCategoryById(categoryPO); + return null; + } + private ICategoryDTO convertICategoryPO2DTO(ICategoryPO iCategoryPO){ return ICategoryDTO.builder().id(iCategoryPO.getId()).insuranceName(iCategoryPO.getInsuranceName()) .welfareType(iCategoryPO.getWelfareType()) diff --git a/src/com/engine/salary/web/SICategoryController.java b/src/com/engine/salary/web/SICategoryController.java index 19d92c792..4de4b1d1b 100644 --- a/src/com/engine/salary/web/SICategoryController.java +++ b/src/com/engine/salary/web/SICategoryController.java @@ -127,20 +127,15 @@ public class SICategoryController { /** - * 该接口暂时没用,删除福利类型对档案和台账核算都有很大的影响,暂时还没考虑好怎么做 - * 删除福利类型 - * - * @param request - * @param response - * @return + * 删除自定义福利项 + * 必要条件1-福利项未启用,2-福利核算数据中不能存在该福利项的核算数据 */ @POST @Path("/deleteCustomCategory") @Produces(MediaType.APPLICATION_JSON) - public String deleteSoftById(@Context HttpServletRequest request, @Context HttpServletResponse response) { + public String deleteCustomCategory(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody ICategoryFormDTO iCategoryFormDTO) { User user = HrmUserVarify.getUser(request, response); - return null; - //return ResponseResult.run(getService(user)::delete, map); + return new ResponseResult< ICategoryFormDTO, Map>(user).run(getService(user)::deleteCustomCategory, iCategoryFormDTO); } From da18b0f884777ba73255567b80a538c7109856fa Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Tue, 25 Jul 2023 16:46:57 +0800 Subject: [PATCH 15/48] =?UTF-8?q?=E8=96=AA=E8=B5=84=E8=B4=A6=E5=A5=97?= =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E9=A1=B5=E9=9D=A2=E6=94=B9=E9=80=A0temp?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salaryacct/bo/SalaryAcctFormulaBO.java | 19 ++++++--- .../salaryformula/bo/SalaryFormulaBO.java | 42 ++++++++++++------- .../param/SalaryFormulaDetailQueryParam.java | 26 ++++++++++++ .../entity/salaryitem/bo/SalaryItemBO.java | 9 ++-- .../salaryitem/dto/SalaryItemSobListDTO.java | 23 ++++++---- .../bo/SalarySobItemAggregateBO.java | 4 +- .../salarysob/dto/SalarySobItemDTO.java | 10 +++++ .../salary/enums/SalaryValueTypeEnum.java | 1 + .../mapper/salarysob/SalarySobItemMapper.xml | 6 +++ .../impl/SalaryAcctCalculateServiceImpl.java | 2 +- .../impl/SalaryAcctResultServiceImpl.java | 4 +- .../service/impl/SalarySendServiceImpl.java | 3 +- .../salary/web/SalaryFormulaController.java | 7 ++-- .../salary/wrapper/SalaryFormulaWrapper.java | 14 +++---- 14 files changed, 126 insertions(+), 44 deletions(-) create mode 100644 src/com/engine/salary/entity/salaryformula/param/SalaryFormulaDetailQueryParam.java diff --git a/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctFormulaBO.java b/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctFormulaBO.java index 6c6139898..b93a65082 100644 --- a/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctFormulaBO.java +++ b/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctFormulaBO.java @@ -4,11 +4,13 @@ import com.engine.salary.entity.datacollection.DataCollectionEmployee; 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.SalaryRoundingModeEnum; 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 java.math.BigDecimal; @@ -32,9 +34,13 @@ public class SalaryAcctFormulaBO { * @param salaryItem * @param salarySobBackItems 薪资账套回算项目List * @param salarySobBackItemMap 薪资账套回算项目Map + * @param salaryItemIdKeySalarySobItemPOMap 薪资账套下薪资项目Map * @return */ - public static String roundResultValue(String value, SalaryItemPO salaryItem, List salarySobBackItems, Map salarySobBackItemMap) { + public static String roundResultValue(String value, SalaryItemPO salaryItem, + List salarySobBackItems, + Map salarySobBackItemMap, + Map salaryItemIdKeySalarySobItemPOMap) { // 值为空,不需要四舍五入 if (StringUtils.isEmpty(value) || salaryItem == null) { return StringUtils.EMPTY; @@ -44,10 +50,13 @@ public class SalaryAcctFormulaBO { if (dataTypeEnum == SalaryDataTypeEnum.STRING) { return value; } - Integer salaryItemRoundingMode = salaryItem.getRoundingMode(); - Integer salaryItemPattern = salaryItem.getPattern(); - // 薪资项目是回算项目 - if(salarySobBackItems != null && salarySobBackItems.size() > 0 && salarySobBackItemMap.containsKey(salaryItem.getId())){ + // 获取薪资账套副本中的舍入规则和保留位数,拿不到再去薪资项目中取 + Integer salaryItemRoundingMode = Optional.ofNullable(salaryItemIdKeySalarySobItemPOMap.get(salaryItem.getId()).getRoundingMode()) + .orElse(salaryItem.getRoundingMode()); + Integer salaryItemPattern = Optional.ofNullable(salaryItemIdKeySalarySobItemPOMap.get(salaryItem.getId()).getPattern()) + .orElse(salaryItem.getPattern()); + if(CollectionUtils.isNotEmpty(salarySobBackItems) && salarySobBackItemMap.containsKey(salaryItem.getId())){ + // 薪资项目是回算项目 salaryItemRoundingMode = salarySobBackItemMap.get(salaryItem.getId()).getRoundingMode(); salaryItemPattern = salarySobBackItemMap.get(salaryItem.getId()).getPattern(); } diff --git a/src/com/engine/salary/entity/salaryformula/bo/SalaryFormulaBO.java b/src/com/engine/salary/entity/salaryformula/bo/SalaryFormulaBO.java index 90e09a558..d8304094e 100644 --- a/src/com/engine/salary/entity/salaryformula/bo/SalaryFormulaBO.java +++ b/src/com/engine/salary/entity/salaryformula/bo/SalaryFormulaBO.java @@ -3,9 +3,11 @@ package com.engine.salary.entity.salaryformula.bo; import com.engine.salary.entity.salaryformula.ExpressFormula; import com.engine.salary.entity.salaryformula.dto.ExpressFormulaDTO; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; import java.util.Collections; import java.util.List; +import java.util.Map; import java.util.stream.Collectors; /** @@ -18,24 +20,36 @@ import java.util.stream.Collectors; **/ public class SalaryFormulaBO { - public static List convert2DTO(List expressFormulas) { + public static List convert2DTO(List expressFormulas, Map returnTypeMap) { if (CollectionUtils.isEmpty(expressFormulas)) { return Collections.emptyList(); } return expressFormulas.stream() - .map(e -> ExpressFormulaDTO.builder() - .id(e.getId()) - .name(e.getName()) - .formula(e.getFormula()) - .description(e.getDescription()) - .extendParam(e.getExtendParam()) - .module(e.getModule()) - .parameters(e.getParameters()) - .referenceType(e.getReferenceType()) - .returnType(e.getReturnType()) - .useFor(e.getUseFor()) - .validateType(e.getValidateType()) - .build()) + .map(e -> { + String referenceType = returnTypeMap.getOrDefault(e.getId(), ""); + ExpressFormulaDTO build = ExpressFormulaDTO.builder() + .id(e.getId()) + .name(e.getName()) + .formula(e.getFormula()) + .description(e.getDescription()) + .extendParam(e.getExtendParam()) + .module(e.getModule()) + .parameters(e.getParameters()) + .referenceType(e.getReferenceType()) + .returnType(e.getReturnType()) + .useFor(e.getUseFor()) + .validateType(e.getValidateType()) + .build(); + if (StringUtils.isNotBlank(referenceType) && !StringUtils.equals(e.getReferenceType(), referenceType)) { + // 更换了取值方式,返回空对象进行前端处理 + build.setExtendParam(""); + build.setFormula(""); + build.setParameters(Collections.emptyList()); + build.setReferenceType(referenceType); + return build; + } + return build; + }) .collect(Collectors.toList()); } } diff --git a/src/com/engine/salary/entity/salaryformula/param/SalaryFormulaDetailQueryParam.java b/src/com/engine/salary/entity/salaryformula/param/SalaryFormulaDetailQueryParam.java new file mode 100644 index 000000000..aff64ddaa --- /dev/null +++ b/src/com/engine/salary/entity/salaryformula/param/SalaryFormulaDetailQueryParam.java @@ -0,0 +1,26 @@ +package com.engine.salary.entity.salaryformula.param; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @author Harryxzy + * @ClassName SalaryFormulaDetailQueryParam + * @date 2023/07/25 10:17 + * @description + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class SalaryFormulaDetailQueryParam { + + // 公式id + private Long formulaId; + + // 取值类型 sql/formula + private String returnType; + +} diff --git a/src/com/engine/salary/entity/salaryitem/bo/SalaryItemBO.java b/src/com/engine/salary/entity/salaryitem/bo/SalaryItemBO.java index b750c2c27..b082bcd45 100644 --- a/src/com/engine/salary/entity/salaryitem/bo/SalaryItemBO.java +++ b/src/com/engine/salary/entity/salaryitem/bo/SalaryItemBO.java @@ -147,14 +147,17 @@ public class SalaryItemBO { .useInEmployeeSalary(salaryItemPO.getUseInEmployeeSalary()) .useDefault(salaryItemPO.getUseDefault()) .hideDefault(salaryItemPO.getHideDefault() == null ? 0 : salaryItemPO.getHideDefault()) - .roundingMode(Optional.ofNullable(salaryRoundingModeEnum) + .roundingMode(salaryItemPO.getRoundingMode()) + .roundingModeShowValue(Optional.ofNullable(salaryRoundingModeEnum) .map(e -> SalaryI18nUtil.getI18nLabel(e.getLabelId(), e.getDefaultLabel())) .orElse(StringUtils.EMPTY)) .pattern(salaryItemPO.getPattern()) - .valueType(Optional.ofNullable(salaryValueTypeEnum) + .valueType(salaryItemPO.getValueType()) + .valueTypeShowValue(Optional.ofNullable(salaryValueTypeEnum) .map(e -> SalaryI18nUtil.getI18nLabel(e.getLabelId(), e.getDefaultLabel())) .orElse(StringUtils.EMPTY)) - .dataType(Optional.ofNullable(salaryDataTypeEnum) + .dataType(salaryItemPO.getDataType()) + .dataTypeShowValue(Optional.ofNullable(salaryDataTypeEnum) .map(e -> SalaryI18nUtil.getI18nLabel(e.getLabelId(), e.getDefaultLabel())) .orElse(StringUtils.EMPTY)) .formulaId(salaryItemPO.getFormulaId()) diff --git a/src/com/engine/salary/entity/salaryitem/dto/SalaryItemSobListDTO.java b/src/com/engine/salary/entity/salaryitem/dto/SalaryItemSobListDTO.java index ae0ecf30f..1bbd5625e 100644 --- a/src/com/engine/salary/entity/salaryitem/dto/SalaryItemSobListDTO.java +++ b/src/com/engine/salary/entity/salaryitem/dto/SalaryItemSobListDTO.java @@ -55,9 +55,12 @@ public class SalaryItemSobListDTO { private Integer hideDefault; //进位规则 - @SalaryTableColumn(text = "进位规则", width = "10%", column = "roundingMode",transmethod = "com.engine.salary.transmethod.TransMethod.roundingMode") - @TableTitle(title = "进位规则",dataIndex = "roundingMode",key = "roundingMode") - private String roundingMode; + @SalaryTableColumn(text = "进位规则", width = "10%", column = "roundingModeShowValue",transmethod = "com.engine.salary.transmethod.TransMethod.roundingMode") + @TableTitle(title = "进位规则",dataIndex = "roundingModeShowValue",key = "roundingModeShowValue") + private String roundingModeShowValue; + + private Integer roundingMode; + //保留小数位 @SalaryTableColumn(text = "保留小数位", width = "10%", column = "pattern") @@ -65,15 +68,19 @@ public class SalaryItemSobListDTO { private Integer pattern; //取值方式 - @SalaryTableColumn(text = "取值方式", width = "10%", column = "valueType",transmethod = "com.engine.salary.transmethod.TransMethod.datasource") - @TableTitle(title = "取值方式",dataIndex = "valueType",key = "valueType") - private String valueType; + @SalaryTableColumn(text = "取值方式", width = "10%", column = "valueTypeShowValue",transmethod = "com.engine.salary.transmethod.TransMethod.datasource") + @TableTitle(title = "取值方式",dataIndex = "valueTypeShowValue",key = "valueTypeShowValue") + private String valueTypeShowValue; + + private Integer valueType; /** * @see SalaryDataTypeEnum */ - @SalaryTableColumn(text = "字段类型", width = "10%", column = "dataType",transmethod = "com.engine.salary.transmethod.TransMethod.dataType") - @TableTitle(title = "字段类型",dataIndex = "dataType",key = "dataType") + @SalaryTableColumn(text = "字段类型", width = "10%", column = "dataTypeShowValue",transmethod = "com.engine.salary.transmethod.TransMethod.dataType") + @TableTitle(title = "字段类型",dataIndex = "dataTypeShowValue",key = "dataTypeShowValue") + private String dataTypeShowValue; + private String dataType; //公式id diff --git a/src/com/engine/salary/entity/salarysob/bo/SalarySobItemAggregateBO.java b/src/com/engine/salary/entity/salarysob/bo/SalarySobItemAggregateBO.java index 940e11b29..80d632d6e 100644 --- a/src/com/engine/salary/entity/salarysob/bo/SalarySobItemAggregateBO.java +++ b/src/com/engine/salary/entity/salarysob/bo/SalarySobItemAggregateBO.java @@ -126,7 +126,9 @@ public class SalarySobItemAggregateBO { .salaryItemGroupId(k) .salaryItemId(salaryItemPO.getId()) .dateType(salaryItemPO.getDataType()) - .valueType(salaryItemPO.getValueType()) + .valueType(Optional.ofNullable(salarySobItemPO.getValueType()).orElse(salaryItemPO.getValueType())) + .roundingMode(Optional.ofNullable(salarySobItemPO.getRoundingMode()).orElse(salaryItemPO.getRoundingMode())) + .pattern(Optional.ofNullable(salarySobItemPO.getPattern()).orElse(salaryItemPO.getPattern())) .name(salaryItemPO.getName()) .itemHide(salarySobItemPO.getItemHide()) .formulaId(salarySobItemPO.getFormulaId()) diff --git a/src/com/engine/salary/entity/salarysob/dto/SalarySobItemDTO.java b/src/com/engine/salary/entity/salarysob/dto/SalarySobItemDTO.java index e23dc6f16..47c03a327 100644 --- a/src/com/engine/salary/entity/salarysob/dto/SalarySobItemDTO.java +++ b/src/com/engine/salary/entity/salarysob/dto/SalarySobItemDTO.java @@ -93,4 +93,14 @@ public class SalarySobItemDTO { //该分类是否隐藏(0不隐藏,1隐藏) @JsonSerialize(using = ToStringSerializer.class) private Long itemHide; + + /** + * 进位规则 + */ + private Integer roundingMode; + + /** + * 保留小数位数 + */ + private Integer pattern; } diff --git a/src/com/engine/salary/enums/SalaryValueTypeEnum.java b/src/com/engine/salary/enums/SalaryValueTypeEnum.java index e3f44acaa..7d82d47d1 100644 --- a/src/com/engine/salary/enums/SalaryValueTypeEnum.java +++ b/src/com/engine/salary/enums/SalaryValueTypeEnum.java @@ -54,6 +54,7 @@ public enum SalaryValueTypeEnum implements BaseEnum { return null; } + public static String getDefaultLabelByValue(Integer value) { if (value == null) { return ""; diff --git a/src/com/engine/salary/mapper/salarysob/SalarySobItemMapper.xml b/src/com/engine/salary/mapper/salarysob/SalarySobItemMapper.xml index e74c88ec0..ed7016175 100644 --- a/src/com/engine/salary/mapper/salarysob/SalarySobItemMapper.xml +++ b/src/com/engine/salary/mapper/salarysob/SalarySobItemMapper.xml @@ -162,6 +162,9 @@ , t.sorted_index , t.tenant_key , t.update_time + , t.rounding_mode + , t.pattern + , t.value_type ,t.can_delete ,h.item_hide FROM hrsa_salary_sob_item t @@ -276,6 +279,9 @@ tenant_key=#{tenantKey}, update_time=#{updateTime}, can_delete=#{canDelete}, + rounding_mode=#{roundingMode}, + pattern=#{pattern}, + value_type=#{valueType}, WHERE id = #{id} AND delete_type = 0 diff --git a/src/com/engine/salary/service/impl/SalaryAcctCalculateServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctCalculateServiceImpl.java index 3b401e4b7..7bfc546fc 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctCalculateServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctCalculateServiceImpl.java @@ -221,7 +221,7 @@ public class SalaryAcctCalculateServiceImpl extends Service implements SalaryAcc resultValue = handleConsolidatedTax(resultValue, salaryItemPO, salaryAcctCalculateBO, otherSalaryAcctEmployeePOMap.get(salaryAcctEmployeePO.getEmployeeId() + "_" + salaryAcctEmployeePO.getTaxAgentId()), otherSalaryAcctResultPOMap.get(salaryAcctEmployeePO.getEmployeeId() + "_" + salaryAcctEmployeePO.getTaxAgentId())); // 处理小数点 - resultValue = SalaryAcctFormulaBO.roundResultValue(resultValue, salaryItemPO, salarySobBackItems, salarySobBackItemMap); + resultValue = SalaryAcctFormulaBO.roundResultValue(resultValue, salaryItemPO, salarySobBackItems, salarySobBackItemMap, salaryItemIdKeySalarySobItemPOMap); //是否锁定 if (lockSalaryItemIds.contains(salaryItemId) && salaryAcctLockResultPOS.get(salaryItemId + "_" + salaryAcctEmployeePOId) != null) { resultValue = salaryAcctLockResultPOS.get(salaryItemId + "_" + salaryAcctEmployeePOId).getResultValue(); diff --git a/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java index c2b522a62..717cfc917 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java @@ -329,6 +329,7 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe } // 查询薪资核算所用薪资账套的薪资项目 List salarySobItemPOS = getSalarySobItemService(user).listBySalarySobId(salaryAcctRecordPO.getSalarySobId()); + Map salaryItemIdKeySalarySobItemPOMap = SalaryEntityUtil.convert2Map(salarySobItemPOS, SalarySobItemPO::getSalaryItemId); Set salaryItemIds = SalaryEntityUtil.properties(salarySobItemPOS, SalarySobItemPO::getSalaryItemId); if(Objects.equals(salaryAcctRecordPO.getBackCalcStatus(), NumberUtils.INTEGER_ONE)){ // 是回算,获取回算项 @@ -336,6 +337,7 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe salaryItemIds.addAll(salarySobBackItemPOS.stream().map(SalarySobBackItemPO::getSalaryItemId).collect(Collectors.toList())); } List salaryItemPOS = getSalaryItemService(user).listByIds(salaryItemIds); + // 查询薪资核算结果 List salaryAcctEmployeeIds = SalaryEntityUtil.properties(salaryAcctEmployeePOS, SalaryAcctEmployeePO::getId,Collectors.toList()); List salaryAcctResultPOS = listBySalaryAcctEmployeeIds(salaryAcctEmployeeIds); @@ -350,7 +352,7 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe .filter(NumberUtils::isCreatable) .map(BigDecimal::new) .reduce(BigDecimal.ZERO, BigDecimal::add); - map.put(item.getId().toString(), SalaryAcctFormulaBO.roundResultValue(sum.toString(), item, Collections.emptyList(), Collections.emptyMap())); + map.put(item.getId().toString(), SalaryAcctFormulaBO.roundResultValue(sum.toString(), item, Collections.emptyList(), Collections.emptyMap(), salaryItemIdKeySalarySobItemPOMap)); }); return map; } diff --git a/src/com/engine/salary/service/impl/SalarySendServiceImpl.java b/src/com/engine/salary/service/impl/SalarySendServiceImpl.java index d13a0f2b9..94658397e 100644 --- a/src/com/engine/salary/service/impl/SalarySendServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalarySendServiceImpl.java @@ -1549,6 +1549,7 @@ public class SalarySendServiceImpl extends Service implements SalarySendService } // 查询薪资核算所用薪资账套的薪资项目 List salarySobItemPOS = getSalarySobItemService(user).listBySalarySobId(salaryAcctRecordPO.getSalarySobId()); + Map salaryItemIdKeySalarySobItemPOMap = SalaryEntityUtil.convert2Map(salarySobItemPOS, SalarySobItemPO::getId); Set salaryItemIds = SalaryEntityUtil.properties(salarySobItemPOS, SalarySobItemPO::getSalaryItemId); if (Objects.equals(salaryAcctRecordPO.getBackCalcStatus(), NumberUtils.INTEGER_ONE)) { // 是回算,获取回算项 @@ -1575,7 +1576,7 @@ public class SalarySendServiceImpl extends Service implements SalarySendService .filter(NumberUtils::isCreatable) .map(BigDecimal::new) .reduce(BigDecimal.ZERO, BigDecimal::add); - map.put(item.getId().toString(), SalaryAcctFormulaBO.roundResultValue(sum.toString(), item, Collections.emptyList(), Collections.emptyMap())); + map.put(item.getId().toString(), SalaryAcctFormulaBO.roundResultValue(sum.toString(), item, Collections.emptyList(), Collections.emptyMap(), salaryItemIdKeySalarySobItemPOMap)); }); return map; } diff --git a/src/com/engine/salary/web/SalaryFormulaController.java b/src/com/engine/salary/web/SalaryFormulaController.java index 1addfc397..d4ae5f8e7 100644 --- a/src/com/engine/salary/web/SalaryFormulaController.java +++ b/src/com/engine/salary/web/SalaryFormulaController.java @@ -2,6 +2,7 @@ package com.engine.salary.web; import com.engine.common.util.ServiceUtil; import com.engine.salary.entity.salaryformula.dto.ExpressFormulaDTO; +import com.engine.salary.entity.salaryformula.param.SalaryFormulaDetailQueryParam; import com.engine.salary.entity.salaryformula.param.SalaryFormulaFieldQueryParam; import com.engine.salary.entity.salaryformula.param.SalaryFormulaMockParam; import com.engine.salary.entity.salaryformula.param.SalaryFormulaSaveParam; @@ -51,12 +52,12 @@ public class SalaryFormulaController { } //获取公式详情 - @GET + @POST @Path("/detail") @Produces(MediaType.APPLICATION_JSON) - public String detail(@Context HttpServletRequest request, @Context HttpServletResponse response, @QueryParam(value = "formulaId") Long formulaId) { + public String detail(@Context HttpServletRequest request, @Context HttpServletResponse response, SalaryFormulaDetailQueryParam queryParam) { User user = HrmUserVarify.getUser(request, response); - return new ResponseResult(user).run(getSalaryFormulaWrapper(user)::detail, formulaId); + return new ResponseResult(user).run(getSalaryFormulaWrapper(user)::detail, queryParam); } @POST diff --git a/src/com/engine/salary/wrapper/SalaryFormulaWrapper.java b/src/com/engine/salary/wrapper/SalaryFormulaWrapper.java index c7955d54e..7822f4404 100644 --- a/src/com/engine/salary/wrapper/SalaryFormulaWrapper.java +++ b/src/com/engine/salary/wrapper/SalaryFormulaWrapper.java @@ -6,6 +6,7 @@ import com.engine.salary.biz.SalaryItemBiz; import com.engine.salary.entity.salaryformula.ExpressFormula; import com.engine.salary.entity.salaryformula.bo.SalaryFormulaBO; import com.engine.salary.entity.salaryformula.dto.ExpressFormulaDTO; +import com.engine.salary.entity.salaryformula.param.SalaryFormulaDetailQueryParam; import com.engine.salary.entity.salaryformula.param.SalaryFormulaFieldQueryParam; import com.engine.salary.entity.salaryformula.param.SalaryFormulaMockParam; import com.engine.salary.entity.salaryformula.param.SalaryFormulaSaveParam; @@ -27,10 +28,7 @@ import org.apache.commons.collections4.CollectionUtils; import weaver.hrm.User; import weaver.servicefiles.DataSourceXML; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; /** @@ -83,12 +81,14 @@ public class SalaryFormulaWrapper extends Service { return getRemoteExcelService(user).fieldGroupList(param); } - public ExpressFormulaDTO detail(Long formulaId) { - List expressFormulas = getSalaryFormulaService(user).listExpressFormula(Collections.singleton(formulaId)); + public ExpressFormulaDTO detail(SalaryFormulaDetailQueryParam queryParam) { + List expressFormulas = getSalaryFormulaService(user).listExpressFormula(Collections.singleton(queryParam.getFormulaId())); if (CollectionUtils.isEmpty(expressFormulas)) { throw new SalaryRunTimeException("获取公式详情失败"); } - return SalaryFormulaBO.convert2DTO(expressFormulas).get(0); + Map returnTypeMap = new HashMap<>(); + returnTypeMap.put(queryParam.getFormulaId(),queryParam.getReturnType()); + return SalaryFormulaBO.convert2DTO(expressFormulas, returnTypeMap).get(0); } public FormulaPO save(SalaryFormulaSaveParam salaryFormulaSaveParam) { From 7763f16c0fe21ff072b9d88c54c93cac1312a1a9 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Wed, 26 Jul 2023 13:43:53 +0800 Subject: [PATCH 16/48] =?UTF-8?q?=E8=96=AA=E8=B5=84=E8=B4=A6=E5=A5=97?= =?UTF-8?q?=E8=96=AA=E8=B5=84=E9=A1=B9=E7=9B=AE=E7=BC=96=E8=BE=91=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salaryacct/bo/SalaryAcctFormulaBO.java | 4 +-- .../entity/salaryitem/bo/SalaryItemBO.java | 2 ++ .../salaryitem/dto/SalaryItemSobListDTO.java | 5 +++ .../salarysob/dto/SalarySobItemFormDTO.java | 3 ++ .../salary/service/SalarySobItemService.java | 6 ---- .../impl/SalarySobItemServiceImpl.java | 33 +------------------ .../salary/web/SalarySobController.java | 13 -------- .../salary/wrapper/SalarySobItemWrapper.java | 8 ----- 8 files changed, 13 insertions(+), 61 deletions(-) diff --git a/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctFormulaBO.java b/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctFormulaBO.java index b93a65082..5f3b9c700 100644 --- a/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctFormulaBO.java +++ b/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctFormulaBO.java @@ -51,9 +51,9 @@ public class SalaryAcctFormulaBO { return value; } // 获取薪资账套副本中的舍入规则和保留位数,拿不到再去薪资项目中取 - Integer salaryItemRoundingMode = Optional.ofNullable(salaryItemIdKeySalarySobItemPOMap.get(salaryItem.getId()).getRoundingMode()) + Integer salaryItemRoundingMode = Optional.ofNullable(salaryItemIdKeySalarySobItemPOMap.get(salaryItem.getId())).map(SalarySobItemPO::getRoundingMode) .orElse(salaryItem.getRoundingMode()); - Integer salaryItemPattern = Optional.ofNullable(salaryItemIdKeySalarySobItemPOMap.get(salaryItem.getId()).getPattern()) + Integer salaryItemPattern = Optional.ofNullable(salaryItemIdKeySalarySobItemPOMap.get(salaryItem.getId())).map(SalarySobItemPO::getPattern) .orElse(salaryItem.getPattern()); if(CollectionUtils.isNotEmpty(salarySobBackItems) && salarySobBackItemMap.containsKey(salaryItem.getId())){ // 薪资项目是回算项目 diff --git a/src/com/engine/salary/entity/salaryitem/bo/SalaryItemBO.java b/src/com/engine/salary/entity/salaryitem/bo/SalaryItemBO.java index b082bcd45..f65c9f924 100644 --- a/src/com/engine/salary/entity/salaryitem/bo/SalaryItemBO.java +++ b/src/com/engine/salary/entity/salaryitem/bo/SalaryItemBO.java @@ -162,6 +162,8 @@ public class SalaryItemBO { .orElse(StringUtils.EMPTY)) .formulaId(salaryItemPO.getFormulaId()) .formulaContent(formulaMap.getOrDefault(salaryItemPO.getFormulaId(),"")) + .originFormulaContent(salaryValueTypeEnum.getValue() == SalaryValueTypeEnum.FORMULA.getValue() ? formulaMap.getOrDefault(salaryItemPO.getFormulaId(),"") : "") + .originSqlContent(salaryValueTypeEnum.getValue() == SalaryValueTypeEnum.SQL.getValue() ? formulaMap.getOrDefault(salaryItemPO.getFormulaId(),"") : "") .taxDeclarationColumn(buildTaxDeclarationColumn(salaryItemPO.getCode())) .canDelete(true) .canEdit(openFormulaForcedEditing ||Objects.equals(salaryItemPO.getCanEdit(), NumberUtils.INTEGER_ONE)) diff --git a/src/com/engine/salary/entity/salaryitem/dto/SalaryItemSobListDTO.java b/src/com/engine/salary/entity/salaryitem/dto/SalaryItemSobListDTO.java index 1bbd5625e..10aaa12bc 100644 --- a/src/com/engine/salary/entity/salaryitem/dto/SalaryItemSobListDTO.java +++ b/src/com/engine/salary/entity/salaryitem/dto/SalaryItemSobListDTO.java @@ -93,6 +93,11 @@ public class SalaryItemSobListDTO { @TableTitle(title = "个税申报表对应字段",dataIndex = "taxDeclarationColumn",key = "taxDeclarationColumn") private String taxDeclarationColumn; + // 用于前端展示 公式原始内容 + private String originFormulaContent; + + // 用于前端展示 原始sql + private String originSqlContent; //备注 @SalaryTableColumn(text = "备注", width = "10%", column = "description") @TableTitle(title = "备注",dataIndex = "description",key = "description") diff --git a/src/com/engine/salary/entity/salarysob/dto/SalarySobItemFormDTO.java b/src/com/engine/salary/entity/salarysob/dto/SalarySobItemFormDTO.java index c8f772490..240625524 100644 --- a/src/com/engine/salary/entity/salarysob/dto/SalarySobItemFormDTO.java +++ b/src/com/engine/salary/entity/salarysob/dto/SalarySobItemFormDTO.java @@ -80,4 +80,7 @@ public class SalarySobItemFormDTO { //是否可以编辑") private Integer canEdit; + + // 薪资档案引用。0:薪资档案未引用、1:薪资档案引用 + private Integer useInEmployeeSalary; } diff --git a/src/com/engine/salary/service/SalarySobItemService.java b/src/com/engine/salary/service/SalarySobItemService.java index f8b2cc23d..37197e51f 100644 --- a/src/com/engine/salary/service/SalarySobItemService.java +++ b/src/com/engine/salary/service/SalarySobItemService.java @@ -125,10 +125,4 @@ public interface SalarySobItemService { * 薪资项目的详情 */ SalarySobItemFormDTO getSalaryItemForm(SalarySobItemPO param); - - /** - * 薪资账套-保存薪资项目详情设置 - * @param saveParam - */ - void saveSalaryItemDetail(SalarySobItemFormDTO saveParam); } diff --git a/src/com/engine/salary/service/impl/SalarySobItemServiceImpl.java b/src/com/engine/salary/service/impl/SalarySobItemServiceImpl.java index 979047d72..169b54bb8 100644 --- a/src/com/engine/salary/service/impl/SalarySobItemServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalarySobItemServiceImpl.java @@ -24,7 +24,6 @@ import com.engine.salary.service.*; import com.engine.salary.util.SalaryEntityUtil; import com.engine.salary.util.SalaryI18nUtil; import com.engine.salary.util.db.MapperProxyFactory; -import com.engine.salary.util.valid.RuntimeTypeEnum; import com.engine.salary.util.valid.ValidUtil; import dm.jdbc.util.IdGenerator; import org.apache.commons.collections4.CollectionUtils; @@ -782,41 +781,11 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe .setFormulaContent(CollectionUtils.isNotEmpty(expressFormulas) ? formulaContent : "") .setOriginFormulaContent(valueType.equals(SalaryValueTypeEnum.FORMULA.getValue()) ? formulaContent : "") .setOriginSqlContent(valueType.equals(SalaryValueTypeEnum.SQL.getValue()) ? formulaContent : "") + .setUseInEmployeeSalary(salaryItemPO.getUseInEmployeeSalary()) .setDescription(salarySobItemPO.getDescription()) .setCanEdit((openFormulaForcedEditing || salaryItemPO.getCanEdit().equals(1)) ? 1 : 0); } return salarySobItemFormDTO; } - @Override - public void saveSalaryItemDetail(SalarySobItemFormDTO saveParam) { - ValidUtil.doValidator(saveParam, RuntimeTypeEnum.UPDATE); - // 查询薪资项目,判断薪资项目是否存在 - SalarySobItemPO salarySobItemPO = getSalarySobItemMapper().getById(saveParam.getId()); - if (Objects.isNull(salarySobItemPO)) { - throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98299, "参数错误,薪资项目不存在或已被删除")); - } - - // 更新薪资项目 - SalarySobItemPO newSalarySobItemPO = new SalarySobItemPO(); - newSalarySobItemPO.setId(saveParam.getId()); - newSalarySobItemPO.setFormulaId(saveParam.getFormulaId()); - newSalarySobItemPO.setDescription(saveParam.getDescription()); - newSalarySobItemPO.setUpdateTime(new Date()); - newSalarySobItemPO.setRoundingMode(saveParam.getRoundingMode()); - newSalarySobItemPO.setPattern(saveParam.getPattern()); - newSalarySobItemPO.setValueType(saveParam.getValueType()); - getSalarySobItemMapper().updateIgnoreNull(newSalarySobItemPO); - - // 更新隐藏信息 - List salarySobItemHideList = getSalarySobItemHideService(user).listSome(SalarySobItemHidePO.builder() - .salarySobId(salarySobItemPO.getSalarySobId()) - .salaryItemId(salarySobItemPO.getSalaryItemId()) - .build()); - if(CollectionUtils.isNotEmpty(salarySobItemHideList)){ - SalarySobItemHidePO salarySobItemHidePO = salarySobItemHideList.get(0); - salarySobItemHidePO.setItemHide(Long.valueOf(saveParam.getItemHide())); - getSalarySobItemHideService(user).updateById(salarySobItemHidePO); - } - } } diff --git a/src/com/engine/salary/web/SalarySobController.java b/src/com/engine/salary/web/SalarySobController.java index fd7b756ac..8ed4f0ebb 100644 --- a/src/com/engine/salary/web/SalarySobController.java +++ b/src/com/engine/salary/web/SalarySobController.java @@ -379,19 +379,6 @@ public class SalarySobController { return new ResponseResult(user).run(getSalarySobItemWrapper(user)::getSalaryItemForm, param); } - /** - * 薪资账套-保存薪资项目详情设置 - */ - @POST - @Path("/item/saveSalaryItemDetail") - @Produces(MediaType.APPLICATION_JSON) - public String saveSalaryItemDetail(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalarySobItemFormDTO saveParam) { - User user = HrmUserVarify.getUser(request, response); - return new ResponseResult(user).run(getSalarySobItemWrapper(user)::saveSalaryItemDetail, saveParam); - } - - - /**********************************薪资账套的薪资项目 end*********************************/ diff --git a/src/com/engine/salary/wrapper/SalarySobItemWrapper.java b/src/com/engine/salary/wrapper/SalarySobItemWrapper.java index 9715a2b80..1fbe0e0e0 100644 --- a/src/com/engine/salary/wrapper/SalarySobItemWrapper.java +++ b/src/com/engine/salary/wrapper/SalarySobItemWrapper.java @@ -177,12 +177,4 @@ public class SalarySobItemWrapper extends Service { public SalarySobItemFormDTO getSalaryItemForm(SalarySobItemPO param) { return getSalarySobItemService(user).getSalaryItemForm(param); } - - /** - * 薪资账套-保存薪资项目详情设置 - * @param saveParam - */ - public void saveSalaryItemDetail(SalarySobItemFormDTO saveParam) { - getSalarySobItemService(user).saveSalaryItemDetail(saveParam); - } } From 74bb6e85c4a1676be8b07827a7d81658ee3a386e Mon Sep 17 00:00:00 2001 From: sy Date: Wed, 26 Jul 2023 14:04:42 +0800 Subject: [PATCH 17/48] =?UTF-8?q?=E8=96=AA=E9=85=AC=E7=B3=BB=E7=BB=9F-?= =?UTF-8?q?=E7=A6=8F=E5=88=A9=E6=96=B9=E6=A1=88=EF=BC=8C=E8=87=AA=E5=AE=9A?= =?UTF-8?q?=E4=B9=89=E7=A6=8F=E5=88=A9=E9=A1=B9=E5=88=A0=E9=99=A4=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salary/service/impl/SICategoryServiceImpl.java | 10 +++++++--- src/com/engine/salary/web/SICategoryController.java | 5 ++++- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/com/engine/salary/service/impl/SICategoryServiceImpl.java b/src/com/engine/salary/service/impl/SICategoryServiceImpl.java index 53f8b8d58..5b244ad01 100644 --- a/src/com/engine/salary/service/impl/SICategoryServiceImpl.java +++ b/src/com/engine/salary/service/impl/SICategoryServiceImpl.java @@ -6,6 +6,7 @@ import com.engine.salary.cmd.sicategory.SICategoryGetFormCmd; import com.engine.salary.cmd.sicategory.SICategoryInsertCmd; import com.engine.salary.cmd.sicategory.SICategoryUpdateCmd; import com.engine.salary.cmd.sicategory.SICategoryUpdateStatusByIdCmd; +import com.engine.salary.encrypt.EncryptUtil; import com.engine.salary.entity.siaccount.po.InsuranceAccountDetailPO; import com.engine.salary.entity.sicategory.dto.ICategoryDTO; import com.engine.salary.entity.sicategory.dto.ICategoryFormDTO; @@ -54,6 +55,8 @@ public class SICategoryServiceImpl extends Service implements SICategoryService return ServiceUtil.getService(RecordsBuildServiceImpl.class, user); } + private EncryptUtil encryptUtil = new EncryptUtil(); + @Override public Map getForm(Map params) { return commandExecutor.execute(new SICategoryGetFormCmd(params,user)); @@ -187,6 +190,7 @@ public class SICategoryServiceImpl extends Service implements SICategoryService // 判断自定义福利项是否存在核算数据 //获取所有福利核算数据 List insuranceAccountDetailPOS = getInsuranceAccountDetailMapper().listAll(); + encryptUtil.decryptList(insuranceAccountDetailPOS, InsuranceAccountDetailPO.class); //数据组装 List> records = getRecordsBuildService(user).buildCommonRecords(insuranceAccountDetailPOS, null); String welfareTypeName = ""; @@ -206,9 +210,9 @@ public class SICategoryServiceImpl extends Service implements SICategoryService String welfareNameStart = categoryPO.getId() + welfareTypeName; //校验福利项是否存在核算记录 records.forEach(f -> { - if (StringUtils.isNotBlank(f.get(welfareNameStart + "Per").toString()) - || StringUtils.isNotBlank(f.get(welfareNameStart + "Com").toString()) - || StringUtils.isNotBlank(f.get(welfareNameStart + "Base").toString())) { + if (!Objects.isNull(f.get(welfareNameStart + "Per")) + || !Objects.isNull(f.get(welfareNameStart + "Com")) + || !Objects.isNull(f.get(welfareNameStart + "Base"))) { throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(0, "删除失败,已存在福利核算记录")); } }); diff --git a/src/com/engine/salary/web/SICategoryController.java b/src/com/engine/salary/web/SICategoryController.java index 4de4b1d1b..0cbb6216b 100644 --- a/src/com/engine/salary/web/SICategoryController.java +++ b/src/com/engine/salary/web/SICategoryController.java @@ -128,8 +128,11 @@ public class SICategoryController { /** * 删除自定义福利项 - * 必要条件1-福利项未启用,2-福利核算数据中不能存在该福利项的核算数据 + * 必要条件: + * 1-福利项未启用, + * 2-福利核算数据中不能存在该福利项的核算数据 */ + @POST @Path("/deleteCustomCategory") @Produces(MediaType.APPLICATION_JSON) From 80f4f7d43bcc3ee7eaa9c594349f6672f9c83b0f Mon Sep 17 00:00:00 2001 From: sy Date: Thu, 27 Jul 2023 09:39:03 +0800 Subject: [PATCH 18/48] =?UTF-8?q?=E8=96=AA=E9=85=AC=E7=B3=BB=E7=BB=9F-?= =?UTF-8?q?=E9=9D=9E=E7=B3=BB=E7=BB=9F=E4=BA=BA=E5=91=98=E7=AE=A1=E7=90=86?= =?UTF-8?q?=EF=BC=8C=E9=9D=9E=E7=B3=BB=E7=BB=9F=E4=BA=BA=E5=91=98=E5=AF=BC?= =?UTF-8?q?=E5=85=A5=E6=A8=A1=E6=9D=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../extemp/param/ExtEmpImportParam.java | 22 ++++++++ .../engine/salary/service/ExtEmpService.java | 9 +++ .../service/impl/ExtEmpServiceImpl.java | 44 +++++++++++++++ .../engine/salary/web/ExtEmpController.java | 55 +++++++++++++++++++ .../engine/salary/wrapper/ExtEmpWrapper.java | 16 ++++++ 5 files changed, 146 insertions(+) create mode 100644 src/com/engine/salary/entity/extemp/param/ExtEmpImportParam.java diff --git a/src/com/engine/salary/entity/extemp/param/ExtEmpImportParam.java b/src/com/engine/salary/entity/extemp/param/ExtEmpImportParam.java new file mode 100644 index 000000000..f30f4f758 --- /dev/null +++ b/src/com/engine/salary/entity/extemp/param/ExtEmpImportParam.java @@ -0,0 +1,22 @@ +package com.engine.salary.entity.extemp.param; + +import com.engine.salary.util.valid.DataCheck; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @Author: sy + * @Description: 非系统人员导入参数 + * @Date: 2023/7/26 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class ExtEmpImportParam { + //上传文件id + @DataCheck(require = true,message = "imageId为空") + String imageId; +} diff --git a/src/com/engine/salary/service/ExtEmpService.java b/src/com/engine/salary/service/ExtEmpService.java index d6f3b2d7d..ff5879c3f 100644 --- a/src/com/engine/salary/service/ExtEmpService.java +++ b/src/com/engine/salary/service/ExtEmpService.java @@ -1,14 +1,17 @@ package com.engine.salary.service; import com.engine.salary.entity.datacollection.DataCollectionEmployee; +import com.engine.salary.entity.extemp.param.ExtEmpImportParam; import com.engine.salary.entity.extemp.param.ExtEmpQueryParam; import com.engine.salary.entity.extemp.param.ExtEmpSaveParam; import com.engine.salary.entity.extemp.po.ExtEmpPO; import com.engine.salary.entity.salarysob.param.SalarySobRangeEmpQueryParam; import com.engine.salary.util.page.PageInfo; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; import java.util.Collection; import java.util.List; +import java.util.Map; public interface ExtEmpService { @@ -45,4 +48,10 @@ public interface ExtEmpService { Collection listAllForReport(); ExtEmpPO getById(Long id); + + XSSFWorkbook exportImportTemplate(); + + Map previewImportExtEmp(ExtEmpImportParam param); + + Map importExtEmp(ExtEmpImportParam param); } \ No newline at end of file diff --git a/src/com/engine/salary/service/impl/ExtEmpServiceImpl.java b/src/com/engine/salary/service/impl/ExtEmpServiceImpl.java index 8de9513ee..4615942fd 100644 --- a/src/com/engine/salary/service/impl/ExtEmpServiceImpl.java +++ b/src/com/engine/salary/service/impl/ExtEmpServiceImpl.java @@ -3,6 +3,7 @@ package com.engine.salary.service.impl; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; import com.engine.salary.entity.datacollection.DataCollectionEmployee; +import com.engine.salary.entity.extemp.param.ExtEmpImportParam; import com.engine.salary.entity.extemp.param.ExtEmpQueryParam; import com.engine.salary.entity.extemp.param.ExtEmpSaveParam; import com.engine.salary.entity.extemp.po.ExtEmpPO; @@ -13,13 +14,17 @@ import com.engine.salary.exception.SalaryRunTimeException; import com.engine.salary.mapper.extemp.ExternalEmployeeMapper; import com.engine.salary.service.ExtEmpService; import com.engine.salary.service.SalaryEmployeeService; +import com.engine.salary.util.SalaryI18nUtil; import com.engine.salary.util.db.MapperProxyFactory; +import com.engine.salary.util.excel.ExcelComment; +import com.engine.salary.util.excel.ExcelUtilPlus; import com.engine.salary.util.page.PageInfo; import com.engine.salary.util.page.SalaryPageUtil; import com.google.common.collect.Lists; import dm.jdbc.util.IdGenerator; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.springframework.beans.BeanUtils; import weaver.hrm.User; @@ -203,4 +208,43 @@ public class ExtEmpServiceImpl extends Service implements ExtEmpService { return employee; }).collect(Collectors.toList()); } + + @Override + public XSSFWorkbook exportImportTemplate() { + + // 模板表头 + List headerList = Lists.newArrayList( + SalaryI18nUtil.getI18nLabel(25034, "姓名"), + SalaryI18nUtil.getI18nLabel(27511, "部门"), + SalaryI18nUtil.getI18nLabel(33553, "分部"), + SalaryI18nUtil.getI18nLabel(1516, "入职日期"), + SalaryI18nUtil.getI18nLabel(125238, "手机号"), + SalaryI18nUtil.getI18nLabel(1933, "工号"), + SalaryI18nUtil.getI18nLabel(1887, "身份证号码"), + SalaryI18nUtil.getI18nLabel(0, "本人开户的银行卡卡号"), + SalaryI18nUtil.getI18nLabel(0, "本人开户的银行卡开户支行全称")); + List dataIndexList = Lists.newArrayList("username", "departmentName", "subcompanyName", "companystartdate", "mobile", "workcode", "idNo", "bankCardNum", "bankName"); + + // excel导出的数据 + List> rows = new ArrayList<>(); + rows.add(headerList); + + // 注释 + List excelComments = Lists.newArrayList(); + excelComments.add(new ExcelComment(0, 0, 1, 2, SalaryI18nUtil.getI18nLabel(30036, "必填"))); + excelComments.add(new ExcelComment(3, 0, 4, 2, SalaryI18nUtil.getI18nLabel(542348, "格式样例为'2022-01-01'、'2022/1/1'"))); + + String sheetName = "非系统人员导入模板"; + return ExcelUtilPlus.genWorkbookV2(rows, sheetName, excelComments); + } + + @Override + public Map previewImportExtEmp(ExtEmpImportParam param) { + return null; + } + + @Override + public Map importExtEmp(ExtEmpImportParam param) { + return null; + } } diff --git a/src/com/engine/salary/web/ExtEmpController.java b/src/com/engine/salary/web/ExtEmpController.java index 9be31acf7..4e6225435 100644 --- a/src/com/engine/salary/web/ExtEmpController.java +++ b/src/com/engine/salary/web/ExtEmpController.java @@ -1,13 +1,17 @@ package com.engine.salary.web; import com.engine.common.util.ServiceUtil; +import com.engine.salary.entity.extemp.param.ExtEmpImportParam; import com.engine.salary.entity.extemp.param.ExtEmpQueryParam; import com.engine.salary.entity.extemp.param.ExtEmpSaveParam; import com.engine.salary.entity.extemp.po.ExtEmpPO; import com.engine.salary.util.ResponseResult; +import com.engine.salary.util.SalaryI18nUtil; import com.engine.salary.util.page.PageInfo; import com.engine.salary.wrapper.ExtEmpWrapper; import io.swagger.v3.oas.annotations.parameters.RequestBody; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; import weaver.hrm.HrmUserVarify; import weaver.hrm.User; @@ -16,7 +20,13 @@ import javax.servlet.http.HttpServletResponse; import javax.ws.rs.*; 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.Collection; +import java.util.Map; /** * 外部人员 @@ -26,6 +36,7 @@ import java.util.Collection; * @author qiantao * @version 1.0 **/ +@Slf4j public class ExtEmpController { private ExtEmpWrapper getExtEmpWrapper(User user) { @@ -72,6 +83,50 @@ public class ExtEmpController { return new ResponseResult(user).run(getExtEmpWrapper(user)::detail, id); } + // **********************************非系统人员导入 start*********************************/ + //导出导入模板 + @GET + @Path("/importtemplate/export") + @Produces(MediaType.APPLICATION_OCTET_STREAM) + public Response exportImportTemplate(@Context HttpServletRequest request, @Context HttpServletResponse response) { + try { + User user = HrmUserVarify.getUser(request, response); + XSSFWorkbook workbook = getExtEmpWrapper(user).exportImportTemplate(); + String time = LocalDate.now().toString(); + String fileName = SalaryI18nUtil.getI18nLabel(0, "非系统人员导入模板") + time; + try { + fileName = URLEncoder.encode(fileName + ".xlsx", "UTF-8").replaceAll("\\+", "%20"); + } 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; + } + } + //导入非系统人员 + @POST + @Path("/importExtEmp") + @Produces(MediaType.APPLICATION_JSON) + public String importExtEmp(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody ExtEmpImportParam param) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult>(user).run(getExtEmpWrapper(user)::importExtEmp, param); + } + + @POST + @Path("/preview") + @Produces(MediaType.APPLICATION_JSON) + public String previewImportExtEmp(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody ExtEmpImportParam param) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult>(user).run(getExtEmpWrapper(user)::previewImportExtEmp, param); + } + // **********************************非系统人员导入 end*********************************/ } diff --git a/src/com/engine/salary/wrapper/ExtEmpWrapper.java b/src/com/engine/salary/wrapper/ExtEmpWrapper.java index f78f0e2ec..fd936d61d 100644 --- a/src/com/engine/salary/wrapper/ExtEmpWrapper.java +++ b/src/com/engine/salary/wrapper/ExtEmpWrapper.java @@ -2,15 +2,18 @@ package com.engine.salary.wrapper; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; +import com.engine.salary.entity.extemp.param.ExtEmpImportParam; import com.engine.salary.entity.extemp.param.ExtEmpQueryParam; import com.engine.salary.entity.extemp.param.ExtEmpSaveParam; import com.engine.salary.entity.extemp.po.ExtEmpPO; import com.engine.salary.service.ExtEmpService; import com.engine.salary.service.impl.ExtEmpServiceImpl; import com.engine.salary.util.page.PageInfo; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; import weaver.hrm.User; import java.util.Collection; +import java.util.Map; /** * 累计专项 @@ -46,4 +49,17 @@ public class ExtEmpWrapper extends Service { public ExtEmpPO detail(Long id) { return getExtEmpService(user).getById(id); } + + public XSSFWorkbook exportImportTemplate() { + return getExtEmpService(user).exportImportTemplate(); + } + + public Map previewImportExtEmp(ExtEmpImportParam param) { + return getExtEmpService(user).previewImportExtEmp(param); + } + + public Map importExtEmp(ExtEmpImportParam param) { + return getExtEmpService(user).importExtEmp(param); + } + } From 82d708966e114603ac79b432d516ba74588b744e Mon Sep 17 00:00:00 2001 From: sy Date: Thu, 27 Jul 2023 10:07:00 +0800 Subject: [PATCH 19/48] =?UTF-8?q?=E8=96=AA=E9=85=AC=E7=B3=BB=E7=BB=9F-?= =?UTF-8?q?=E9=9D=9E=E7=B3=BB=E7=BB=9F=E4=BA=BA=E5=91=98=E7=AE=A1=E7=90=86?= =?UTF-8?q?=EF=BC=8C=E9=9D=9E=E7=B3=BB=E7=BB=9F=E4=BA=BA=E5=91=98=E5=AF=BC?= =?UTF-8?q?=E5=85=A5=E9=A2=84=E8=A7=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/ExtEmpServiceImpl.java | 26 ++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/src/com/engine/salary/service/impl/ExtEmpServiceImpl.java b/src/com/engine/salary/service/impl/ExtEmpServiceImpl.java index 4615942fd..8d5be4a61 100644 --- a/src/com/engine/salary/service/impl/ExtEmpServiceImpl.java +++ b/src/com/engine/salary/service/impl/ExtEmpServiceImpl.java @@ -17,20 +17,29 @@ import com.engine.salary.service.SalaryEmployeeService; import com.engine.salary.util.SalaryI18nUtil; 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 dm.jdbc.util.IdGenerator; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; +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.hrm.User; +import java.io.InputStream; import java.util.*; import java.util.stream.Collectors; +import static com.engine.salary.util.excel.ExcelSupport.EXCEL_TYPE_XLSX; + /** * 累计专项 *

Copyright: Copyright (c) 2022

@@ -240,7 +249,22 @@ public class ExtEmpServiceImpl extends Service implements ExtEmpService { @Override public Map previewImportExtEmp(ExtEmpImportParam param) { - return null; + //参数校验 + ValidUtil.doValidator(param); + + Map map = new HashMap<>(); + + InputStream fileInputStream = null; + try { + fileInputStream = ImageFileManager.getInputStreamById(Integer.parseInt(param.getImageId())); + Sheet sheet = ExcelSupport.parseFile(fileInputStream, 0, EXCEL_TYPE_XLSX); + map.put("headers", ExcelSupport.getSheetHeader(sheet, 0)); + map.put("list", ExcelParseHelper.parse2List(sheet, 1)); + return map; + + } finally { + IOUtils.closeQuietly(fileInputStream); + } } @Override From 0a7c975c28ae8fbd8f0bc5b1425b09fc4c64a057 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Fri, 28 Jul 2023 09:48:27 +0800 Subject: [PATCH 20/48] =?UTF-8?q?=E8=96=AA=E8=B5=84=E8=B4=A6=E5=A5=97-?= =?UTF-8?q?=E8=96=AA=E8=B5=84=E9=A1=B9=E7=9B=AE=E7=BC=96=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/engine/salary/service/impl/SalaryItemServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/com/engine/salary/service/impl/SalaryItemServiceImpl.java b/src/com/engine/salary/service/impl/SalaryItemServiceImpl.java index d2c0999f3..3affdd0e3 100644 --- a/src/com/engine/salary/service/impl/SalaryItemServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryItemServiceImpl.java @@ -239,7 +239,7 @@ public class SalaryItemServiceImpl extends Service implements SalaryItemService newSalaryItemPO.setHideDefault(saveParam.getHideDefault()); newSalaryItemPO.setRoundingMode(saveParam.getRoundingMode()); newSalaryItemPO.setPattern(saveParam.getPattern()); -// newSalaryItemPO.setValueType(saveParam.getValueType()); + newSalaryItemPO.setValueType(saveParam.getValueType()); newSalaryItemPO.setDataType(saveParam.getDataType()); newSalaryItemPO.setFormulaId(Objects.equals(saveParam.getValueType(), SalaryValueTypeEnum.INPUT.getValue()) ? 0L : saveParam.getFormulaId()); newSalaryItemPO.setDescription(saveParam.getDescription()); From 007d6df3cdf9e613fbb0c1ad2ad0faceff95ab86 Mon Sep 17 00:00:00 2001 From: sy Date: Fri, 28 Jul 2023 10:12:59 +0800 Subject: [PATCH 21/48] =?UTF-8?q?=E8=96=AA=E9=85=AC=E7=B3=BB=E7=BB=9F-?= =?UTF-8?q?=E9=9D=9E=E7=B3=BB=E7=BB=9F=E4=BA=BA=E5=91=98=E7=AE=A1=E7=90=86?= =?UTF-8?q?=EF=BC=8C=E9=9D=9E=E7=B3=BB=E7=BB=9F=E4=BA=BA=E5=91=98=E5=AF=BC?= =?UTF-8?q?=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../engine/salary/entity/hrm/DeptInfo.java | 5 + .../mapper/datacollection/EmployMapper.java | 15 + .../mapper/datacollection/EmployMapper.xml | 22 ++ .../service/impl/ExtEmpServiceImpl.java | 268 +++++++++++++++++- 4 files changed, 308 insertions(+), 2 deletions(-) diff --git a/src/com/engine/salary/entity/hrm/DeptInfo.java b/src/com/engine/salary/entity/hrm/DeptInfo.java index 0a6e9d0c8..12f2f61f9 100644 --- a/src/com/engine/salary/entity/hrm/DeptInfo.java +++ b/src/com/engine/salary/entity/hrm/DeptInfo.java @@ -25,4 +25,9 @@ public class DeptInfo { * 名称 */ private String name; + + /** + * 所属分部id + */ + private Long subcompanyid1; } diff --git a/src/com/engine/salary/mapper/datacollection/EmployMapper.java b/src/com/engine/salary/mapper/datacollection/EmployMapper.java index d73cef7ba..e2d0ada69 100644 --- a/src/com/engine/salary/mapper/datacollection/EmployMapper.java +++ b/src/com/engine/salary/mapper/datacollection/EmployMapper.java @@ -87,4 +87,19 @@ public interface EmployMapper { List listHrmInfoByIdAndName(@Param("param") HrmQueryParam param); + + /** + * 根据部门名称查询部门 + */ + List getDeptInfosByName(String name); + + /** + * 根据分部名称查询分部 + */ + List getSubCompanyInfosByName(String name); + + /** + * 根据部门id查询部门 + */ + DeptInfo getDeptInfoById(Long id); } \ No newline at end of file diff --git a/src/com/engine/salary/mapper/datacollection/EmployMapper.xml b/src/com/engine/salary/mapper/datacollection/EmployMapper.xml index 9965888f7..de9bb91ab 100644 --- a/src/com/engine/salary/mapper/datacollection/EmployMapper.xml +++ b/src/com/engine/salary/mapper/datacollection/EmployMapper.xml @@ -348,4 +348,26 @@ + + + + + \ No newline at end of file diff --git a/src/com/engine/salary/service/impl/ExtEmpServiceImpl.java b/src/com/engine/salary/service/impl/ExtEmpServiceImpl.java index 8d5be4a61..7134deef3 100644 --- a/src/com/engine/salary/service/impl/ExtEmpServiceImpl.java +++ b/src/com/engine/salary/service/impl/ExtEmpServiceImpl.java @@ -11,9 +11,11 @@ import com.engine.salary.entity.hrm.DeptInfo; import com.engine.salary.entity.hrm.SubCompanyInfo; import com.engine.salary.entity.salarysob.param.SalarySobRangeEmpQueryParam; import com.engine.salary.exception.SalaryRunTimeException; +import com.engine.salary.mapper.datacollection.EmployMapper; import com.engine.salary.mapper.extemp.ExternalEmployeeMapper; import com.engine.salary.service.ExtEmpService; import com.engine.salary.service.SalaryEmployeeService; +import com.engine.salary.util.SalaryDateUtil; import com.engine.salary.util.SalaryI18nUtil; import com.engine.salary.util.db.MapperProxyFactory; import com.engine.salary.util.excel.ExcelComment; @@ -24,14 +26,17 @@ 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 dm.jdbc.util.IdGenerator; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; +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; import java.io.InputStream; @@ -59,6 +64,9 @@ public class ExtEmpServiceImpl extends Service implements ExtEmpService { return ServiceUtil.getService(SalaryEmployeeServiceImpl.class, user); } + private EmployMapper getEmployMapper() { + return MapperProxyFactory.getProxy(EmployMapper.class); + } @Override public List list(ExtEmpQueryParam param) { @@ -268,7 +276,263 @@ public class ExtEmpServiceImpl extends Service implements ExtEmpService { } @Override - public Map importExtEmp(ExtEmpImportParam param) { - return null; + public Map importExtEmp(ExtEmpImportParam param){ + + Map apidatas = new HashMap(); + + //excel文件id + String imageId = Util.null2String(param.getImageId()); + Validate.notBlank(imageId, SalaryI18nUtil.getI18nLabel(542127, "imageId为空")); + + // 失败的数量 + int failCount = 0; + // 成功的数量 + int successCount = 0; + InputStream fileInputStream = null; + try { + fileInputStream = ImageFileManager.getInputStreamById(Integer.parseInt(param.getImageId())); + + Sheet sheet = ExcelSupport.parseFile(fileInputStream, 0, EXCEL_TYPE_XLSX); + //数据库中现有非系统人员集合 + List allExtEmpInfo= getExternalEmployeeMapper().listAll(); + + // 错误提示信息 + List excelComments = Lists.newArrayList(); + // 存在错误的那行数据 + List> errorDatas = Lists.newArrayList(); + // 表头 + List headers = ExcelSupport.getSheetHeader(sheet, 0); + // 处理数值 + List> data = ExcelParseHelper.parse2Map(sheet, 1); + if (CollectionUtils.isEmpty(headers)) { + throw new SalaryRunTimeException("表头为空"); + } + if (CollectionUtils.isEmpty(data)) { + throw new SalaryRunTimeException("无数据"); + } + //存储待新增和待更新的ExtEmpPO数据 + List updateExtEmpPOList = new ArrayList<>(); + List insertExtEmpPOList = new ArrayList<>(); + //遍历excel表具体数据 + for (int i = 0; i < data.size(); i++) { + + String row = "第" + (i + 1) + "行"; + + boolean isError = false; + Map map = data.get(i); + Long employeeId = 0L; + + String username = (String) map.getOrDefault(SalaryI18nUtil.getI18nLabel(25034, "姓名"), ""); + String departmentName = (String) map.getOrDefault(SalaryI18nUtil.getI18nLabel(27511, "部门"), ""); + String subcompanyName = (String) map.getOrDefault(SalaryI18nUtil.getI18nLabel(33553, "分部"), ""); + String companystartdate = (String) map.getOrDefault(SalaryI18nUtil.getI18nLabel(1516, "入职日期"), ""); + + //校验姓名 + if (StringUtils.isBlank(username)) { + //姓名是必填项 + isError = true; + Map errorMessageMap = Maps.newHashMap(); + errorMessageMap.put("message", row + SalaryI18nUtil.getI18nLabel(102838, "姓名不能为空")); + excelComments.add(errorMessageMap); + } + long usernameNum = updateExtEmpPOList.stream().filter(f -> f.getUsername().equals(username)).count() + insertExtEmpPOList.stream().filter(f -> f.getUsername().equals(username)).count(); + if (usernameNum > 0) { + //excel中姓名相同时,只会录入第一次出现的数据 + isError = true; + Map errorMessageMap = Maps.newHashMap(); + errorMessageMap.put("message", row + SalaryI18nUtil.getI18nLabel(102838, "本次excel文件中已存在该姓名相关数据,本行数据无法录入")); + excelComments.add(errorMessageMap); + } + //校验部门、分部 + List subCompanyInfos = new ArrayList<>(); + List deptInfos = new ArrayList<>(); + if (StringUtils.isNotBlank(subcompanyName)) { + subCompanyInfos = getEmployMapper().getSubCompanyInfosByName(subcompanyName); + if (subCompanyInfos.size() == 0) { + isError = true; + Map errorMessageMap = Maps.newHashMap(); + errorMessageMap.put("message", row + SalaryI18nUtil.getI18nLabel(0, "分部信息不存在,请检查分部数据是否正确")); + excelComments.add(errorMessageMap); + } + } + if (StringUtils.isNotBlank(departmentName)) { + deptInfos = getEmployMapper().getDeptInfosByName(departmentName); + if (deptInfos.size() == 0) { + isError = true; + Map errorMessageMap = Maps.newHashMap(); + errorMessageMap.put("message", row + SalaryI18nUtil.getI18nLabel(0, "部门信息不存在,请检查部门数据是否正确")); + excelComments.add(errorMessageMap); + } + } + if (StringUtils.isNotBlank(companystartdate) && (companystartdate.length() < 10 || !SalaryDateUtil.checkDay(companystartdate.substring(0, 10)))) { + isError = true; + Map errorMessageMap = Maps.newHashMap(); + errorMessageMap.put("message", row + SalaryI18nUtil.getI18nLabel(0, "入职日期格式错误,正确格式为YYYY-MM或者yyyy-MM-dd")); + excelComments.add(errorMessageMap); + } + + if (!isError){ + //校验当前数据是否有相关数据(姓名相同)存在数据库中,有则更新,无则新建 + List targetExtEmpInfoList = allExtEmpInfo.stream().filter(f -> f.getUsername().equals(username)).collect(Collectors.toList()); + //校验部门和分部关系 + List targetDeptInfos = new ArrayList<>(); + List targetSubCompanyInfos = new ArrayList<>(); + if (targetExtEmpInfoList.size() == 1) { + ExtEmpPO targetExtEmpInfo = targetExtEmpInfoList.get(0); + //将库中已有的部门和分布信息取出(excel行未设置对应字段数据时) + if (targetExtEmpInfo.getSubcompanyId() != null && subCompanyInfos.size() == 0) { + subCompanyInfos.add(SubCompanyInfo.builder().id(targetExtEmpInfo.getSubcompanyId()).name(targetExtEmpInfo.getSubcompanyName()).build()); + } + if (targetExtEmpInfo.getDepartmentId() != null && deptInfos.size() == 0) { + DeptInfo oldDeptInfo = getEmployMapper().getDeptInfoById(targetExtEmpInfo.getDepartmentId()); + deptInfos.add(oldDeptInfo); + } + } + //分部结果数为0,部门结果数大于1,则无法匹配 + if(subCompanyInfos.size() == 0 && deptInfos.size() > 1) { + isError = true; + Map errorMessageMap = Maps.newHashMap(); + errorMessageMap.put("message", row + SalaryI18nUtil.getI18nLabel(0, "系统中存在重复部门信息,无法指定当前人员关联的唯一部门,请通过填写部门所属的分部信息来缩小部门筛选范围")); + excelComments.add(errorMessageMap); + } else if (subCompanyInfos.size() > 1 && deptInfos.size() == 0) { + //部门结果数为0,分部结果数大于1,则无法匹配 + isError = true; + Map errorMessageMap = Maps.newHashMap(); + errorMessageMap.put("message", row + SalaryI18nUtil.getI18nLabel(0, "系统中存在重复分部信息,无法指定当前人员关联的唯一分部,请通过填写人员所属的部门信息来缩小分部筛选范围")); + excelComments.add(errorMessageMap); + } else if (subCompanyInfos.size() >= 1 && deptInfos.size() >= 1) { + //部门结果数大于等于1,分部结果数大于等于1,筛选出可配对的组合,根据部门的所属分部字段进行配对 + for (DeptInfo deptInfo : deptInfos) { + if (subCompanyInfos.stream().filter(g -> g.getId().equals(deptInfo.getSubcompanyid1())).count() > 0) { + targetDeptInfos.add(deptInfo); + } + } + if (targetDeptInfos.size() == 0) { + isError = true; + Map errorMessageMap = Maps.newHashMap(); + errorMessageMap.put("message", row + SalaryI18nUtil.getI18nLabel(0, "部门与分部无法匹配")); + excelComments.add(errorMessageMap); + } else if (targetDeptInfos.size() > 1) { + isError = true; + Map errorMessageMap = Maps.newHashMap(); + errorMessageMap.put("message", row + SalaryI18nUtil.getI18nLabel(0, "该组数据中的部门和分部信息在系统中出现多组匹配的部门和分布组合,无法指定唯一的部门和分部组合")); + excelComments.add(errorMessageMap); + } else { + targetSubCompanyInfos = subCompanyInfos.stream().filter(f -> f.getId().equals(targetDeptInfos.get(0).getSubcompanyid1())).collect(Collectors.toList()); + } + + } else if (subCompanyInfos.size() == 0 && deptInfos.size() == 1) { + //分部结果数为0,部门结果数为1,可以匹配 + targetDeptInfos.add(deptInfos.get(0)); + } else if (subCompanyInfos.size() == 1 && deptInfos.size() == 0) { + //部门结果数为0,分部结果数为1,可以匹配 + targetSubCompanyInfos.add(subCompanyInfos.get(0)); + } + //收集excel有效数据,并区分新增和更新 + DeptInfo finalDeptInfo = targetDeptInfos.size() > 0 ? targetDeptInfos.get(0) : null; + SubCompanyInfo finalSubCompanyInfo = targetSubCompanyInfos.size() > 0 ? targetSubCompanyInfos.get(0) : null; + if (targetExtEmpInfoList.isEmpty()) { + if (!isError) { + //添加一条新建数据 + insertExtEmpPOList.add(handleExtEmpInfo(null, map, finalDeptInfo, finalSubCompanyInfo)); + } + } else if (targetExtEmpInfoList.size() > 1) { + isError = true; + Map errorMessageMap = Maps.newHashMap(); + errorMessageMap.put("message", row + SalaryI18nUtil.getI18nLabel(0, "数据库中非系统人员信息存在姓名相同数据,请先确保姓名唯一")); + excelComments.add(errorMessageMap); + } else { + if (!isError) { + //添加一条更新数据 + updateExtEmpPOList.add(handleExtEmpInfo(targetExtEmpInfoList.get(0), map, finalDeptInfo, finalSubCompanyInfo)); + } + } + + } + + if (isError) { + failCount++; + errorDatas.add(map); + } else { + successCount++; + } + + } + //更新 + for(ExtEmpPO po : updateExtEmpPOList) { + getExternalEmployeeMapper().updateIgnoreNull(po); + } + //新建 + for(ExtEmpPO po : insertExtEmpPOList) { + getExternalEmployeeMapper().insertIgnoreNull(po); + } + + + apidatas.put("successCount", successCount); + apidatas.put("errorCount", failCount); + apidatas.put("errorData", excelComments); + + } finally { + IOUtils.closeQuietly(fileInputStream); + } + return apidatas; + } + + public ExtEmpPO handleExtEmpInfo(ExtEmpPO po, Map map, DeptInfo deptInfo, SubCompanyInfo subCompanyInfo) { + ExtEmpPO resultPo = new ExtEmpPO(); + if (po == null) { + //新建 + resultPo.setId(IdGenerator.generate()); + resultPo.setCreateTime(new Date()); + resultPo.setUpdateTime(new Date()); + resultPo.setDeleteType(0); + resultPo.setCreator((long) user.getUID()); + } else { + //更新 + BeanUtils.copyProperties(po, resultPo); + resultPo.setUpdateTime(new Date()); + } + String username = (String) map.getOrDefault(SalaryI18nUtil.getI18nLabel(25034, "姓名"), ""); +// String departmentName = (String) map.getOrDefault(SalaryI18nUtil.getI18nLabel(27511, "部门"), ""); +// String subcompanyName = (String) map.getOrDefault(SalaryI18nUtil.getI18nLabel(33553, "分部"), ""); + String companystartdate = (String) map.getOrDefault(SalaryI18nUtil.getI18nLabel(1516, "入职日期"), ""); + String mobile = (String) map.getOrDefault(SalaryI18nUtil.getI18nLabel(125238, "手机号"), ""); + String workcode = (String) map.getOrDefault(SalaryI18nUtil.getI18nLabel(1933, "工号"), ""); + String idNo = (String) map.getOrDefault(SalaryI18nUtil.getI18nLabel(1887, "身份证号码"), ""); + String bankCardNum = (String) map.getOrDefault(SalaryI18nUtil.getI18nLabel(0, "本人开户的银行卡卡号"), ""); + String bankName = (String) map.getOrDefault(SalaryI18nUtil.getI18nLabel(0, "本人开户的银行卡开户支行全称"), ""); + + if (StringUtils.isNotBlank(companystartdate)) { + resultPo.setCompanystartdate(companystartdate.substring(0, 10)); + } + + if (StringUtils.isNotBlank(username)) { + resultPo.setUsername(username); + } + if (StringUtils.isNotBlank(mobile)) { + resultPo.setMobile(mobile); + } + if (StringUtils.isNotBlank(workcode)) { + resultPo.setWorkcode(workcode); + } + if (StringUtils.isNotBlank(idNo)) { + resultPo.setIdNo(idNo); + } + if (StringUtils.isNotBlank(bankCardNum)) { + resultPo.setBankCardNum(bankCardNum); + } + if (StringUtils.isNotBlank(bankName)) { + resultPo.setBankName(bankName); + } + if (deptInfo != null) { + resultPo.setDepartmentName(deptInfo.getName()); + resultPo.setDepartmentId(deptInfo.getId()); + } + if (subCompanyInfo != null) { + resultPo.setSubcompanyName(subCompanyInfo.getName()); + resultPo.setSubcompanyId(subCompanyInfo.getId()); + } + resultPo.setModifier((long) user.getUID()); + return resultPo; } } From 4b1b1077db3a7eb264e1274df815a581c3d29375 Mon Sep 17 00:00:00 2001 From: sy Date: Fri, 28 Jul 2023 15:42:37 +0800 Subject: [PATCH 22/48] =?UTF-8?q?=E8=96=AA=E9=85=AC=E7=B3=BB=E7=BB=9F-?= =?UTF-8?q?=E7=A6=8F=E5=88=A9=E6=A1=A3=E6=A1=88=EF=BC=8C=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E6=A1=A3=E6=A1=88=E9=80=BB=E8=BE=91=E6=B7=BB=E5=8A=A0=E6=97=A5?= =?UTF-8?q?=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/SIArchivesServiceImpl.java | 193 ++++++++++-------- 1 file changed, 103 insertions(+), 90 deletions(-) diff --git a/src/com/engine/salary/service/impl/SIArchivesServiceImpl.java b/src/com/engine/salary/service/impl/SIArchivesServiceImpl.java index 3ea100d50..81f1ab168 100644 --- a/src/com/engine/salary/service/impl/SIArchivesServiceImpl.java +++ b/src/com/engine/salary/service/impl/SIArchivesServiceImpl.java @@ -403,101 +403,114 @@ public class SIArchivesServiceImpl extends Service implements SIArchivesService //新增社保、公积金、其他福利档案、福利档案基础信息 private List addNewInsuranceBaseInfo(List baseInfoPOList, Long currentEmployeeId) { - List socialList = new ArrayList<>(); - List fundList = new ArrayList<>(); - List otherList = new ArrayList<>(); - for (InsuranceArchivesBaseInfoPO baseInfoPO : baseInfoPOList) { - InsuranceArchivesSocialSchemePO insuranceArchivesSocialSchemePO = new InsuranceArchivesSocialSchemePO(); - insuranceArchivesSocialSchemePO.setTenantKey(""); - insuranceArchivesSocialSchemePO.setWelfareType(WelfareTypeEnum.SOCIAL_SECURITY.getValue()); - insuranceArchivesSocialSchemePO.setPaymentOrganization(baseInfoPO.getPaymentOrganization()); - insuranceArchivesSocialSchemePO.setNonPayment(NonPaymentEnum.YES.getValue()); - insuranceArchivesSocialSchemePO.setCreator(currentEmployeeId); - insuranceArchivesSocialSchemePO.setCreateTime(new Date()); - insuranceArchivesSocialSchemePO.setUpdateTime(new Date()); - insuranceArchivesSocialSchemePO.setDeleteType(DeleteTypeEnum.NOT_DELETED.getValue()); - insuranceArchivesSocialSchemePO.setEmployeeId(baseInfoPO.getEmployeeId()); - socialList.add(insuranceArchivesSocialSchemePO); + try { + List socialList = new ArrayList<>(); + List fundList = new ArrayList<>(); + List otherList = new ArrayList<>(); + for (InsuranceArchivesBaseInfoPO baseInfoPO : baseInfoPOList) { + InsuranceArchivesSocialSchemePO insuranceArchivesSocialSchemePO = new InsuranceArchivesSocialSchemePO(); + insuranceArchivesSocialSchemePO.setTenantKey(""); + insuranceArchivesSocialSchemePO.setWelfareType(WelfareTypeEnum.SOCIAL_SECURITY.getValue()); + insuranceArchivesSocialSchemePO.setPaymentOrganization(baseInfoPO.getPaymentOrganization()); + insuranceArchivesSocialSchemePO.setNonPayment(NonPaymentEnum.YES.getValue()); + insuranceArchivesSocialSchemePO.setCreator(currentEmployeeId); + insuranceArchivesSocialSchemePO.setCreateTime(new Date()); + insuranceArchivesSocialSchemePO.setUpdateTime(new Date()); + insuranceArchivesSocialSchemePO.setDeleteType(DeleteTypeEnum.NOT_DELETED.getValue()); + insuranceArchivesSocialSchemePO.setEmployeeId(baseInfoPO.getEmployeeId()); + socialList.add(insuranceArchivesSocialSchemePO); - InsuranceArchivesFundSchemePO insuranceArchivesFundSchemePO = new InsuranceArchivesFundSchemePO(); - insuranceArchivesFundSchemePO.setTenantKey(""); - insuranceArchivesFundSchemePO.setWelfareType(WelfareTypeEnum.ACCUMULATION_FUND.getValue()); - insuranceArchivesFundSchemePO.setPaymentOrganization(baseInfoPO.getPaymentOrganization()); - insuranceArchivesFundSchemePO.setNonPayment(NonPaymentEnum.YES.getValue()); - insuranceArchivesFundSchemePO.setCreator(currentEmployeeId); - insuranceArchivesFundSchemePO.setCreateTime(new Date()); - insuranceArchivesFundSchemePO.setUpdateTime(new Date()); - insuranceArchivesFundSchemePO.setDeleteType(DeleteTypeEnum.NOT_DELETED.getValue()); - insuranceArchivesFundSchemePO.setEmployeeId(baseInfoPO.getEmployeeId()); - fundList.add(insuranceArchivesFundSchemePO); + InsuranceArchivesFundSchemePO insuranceArchivesFundSchemePO = new InsuranceArchivesFundSchemePO(); + insuranceArchivesFundSchemePO.setTenantKey(""); + insuranceArchivesFundSchemePO.setWelfareType(WelfareTypeEnum.ACCUMULATION_FUND.getValue()); + insuranceArchivesFundSchemePO.setPaymentOrganization(baseInfoPO.getPaymentOrganization()); + insuranceArchivesFundSchemePO.setNonPayment(NonPaymentEnum.YES.getValue()); + insuranceArchivesFundSchemePO.setCreator(currentEmployeeId); + insuranceArchivesFundSchemePO.setCreateTime(new Date()); + insuranceArchivesFundSchemePO.setUpdateTime(new Date()); + insuranceArchivesFundSchemePO.setDeleteType(DeleteTypeEnum.NOT_DELETED.getValue()); + insuranceArchivesFundSchemePO.setEmployeeId(baseInfoPO.getEmployeeId()); + fundList.add(insuranceArchivesFundSchemePO); - InsuranceArchivesOtherSchemePO insuranceArchivesOtherSchemePO = new InsuranceArchivesOtherSchemePO(); - insuranceArchivesOtherSchemePO.setTenantKey(""); - insuranceArchivesOtherSchemePO.setWelfareType(WelfareTypeEnum.OTHER.getValue()); - insuranceArchivesOtherSchemePO.setPaymentOrganization(baseInfoPO.getPaymentOrganization()); - insuranceArchivesOtherSchemePO.setNonPayment(NonPaymentEnum.YES.getValue()); - insuranceArchivesOtherSchemePO.setCreator(currentEmployeeId); - insuranceArchivesOtherSchemePO.setCreateTime(new Date()); - insuranceArchivesOtherSchemePO.setUpdateTime(new Date()); - insuranceArchivesOtherSchemePO.setDeleteType(DeleteTypeEnum.NOT_DELETED.getValue()); - insuranceArchivesOtherSchemePO.setEmployeeId(baseInfoPO.getEmployeeId()); - otherList.add(insuranceArchivesOtherSchemePO); + InsuranceArchivesOtherSchemePO insuranceArchivesOtherSchemePO = new InsuranceArchivesOtherSchemePO(); + insuranceArchivesOtherSchemePO.setTenantKey(""); + insuranceArchivesOtherSchemePO.setWelfareType(WelfareTypeEnum.OTHER.getValue()); + insuranceArchivesOtherSchemePO.setPaymentOrganization(baseInfoPO.getPaymentOrganization()); + insuranceArchivesOtherSchemePO.setNonPayment(NonPaymentEnum.YES.getValue()); + insuranceArchivesOtherSchemePO.setCreator(currentEmployeeId); + insuranceArchivesOtherSchemePO.setCreateTime(new Date()); + insuranceArchivesOtherSchemePO.setUpdateTime(new Date()); + insuranceArchivesOtherSchemePO.setDeleteType(DeleteTypeEnum.NOT_DELETED.getValue()); + insuranceArchivesOtherSchemePO.setEmployeeId(baseInfoPO.getEmployeeId()); + otherList.add(insuranceArchivesOtherSchemePO); - } - //导入社保档案 - if (CollectionUtils.isNotEmpty(socialList)) { - //根据人员id和个税扣缴义务人id删除对应档案 - socialList.forEach(getSocialSchemeMapper()::deleteByEmployeeIdAndPayOrg); - - List> partition = Lists.partition(socialList, 100); - partition.forEach(getSocialSchemeMapper()::batchSave); - } - //导入公积金档案 - if (CollectionUtils.isNotEmpty(fundList)) { - - //根据人员id和个税扣缴义务人id删除对应档案 - fundList.forEach(getFundSchemeMapper()::deleteByEmployeeIdAndPayOrg); - - List> partition = Lists.partition(fundList, 100); - partition.forEach(getFundSchemeMapper()::batchSave); - } - //导入其他福利档案 - if (CollectionUtils.isNotEmpty(otherList)) { - //根据人员id和个税扣缴义务人id删除对应档案 - otherList.forEach(getOtherSchemeMapper()::deleteByEmployeeIdAndPayOrg); - - List> partition = Lists.partition(otherList, 100); - partition.forEach(getOtherSchemeMapper()::batchSave); - } - //导入福利档案基础信息 - if (CollectionUtils.isNotEmpty(baseInfoPOList)) { - //根据人员id和个税扣缴义务人id删除对应档案 - baseInfoPOList.forEach(getInsuranceBaseInfoMapper()::deleteByEmployeeIdAndPayOrg); -// //分批批量删除 - List baseInfoEmployeeIds = baseInfoPOList.stream().map(InsuranceArchivesBaseInfoPO::getEmployeeId).collect(Collectors.toList()); - - //查询目标人员的剩余的福利档案基础信息(社保、公积金、其他福利档案id) - List moreBaseInfoPOS = new ArrayList<>(); - - List> partitionInfo = Lists.partition((List) baseInfoEmployeeIds, 1000); - partitionInfo.forEach(part -> moreBaseInfoPOS.addAll( - getInsuranceBaseInfoMapper().getInsuranceBaseInfoListByInsuranceDetail(part))); - - List newInsuranceArchivesBaseInfoList = new ArrayList<>(); - //设置社保、公积金、其他福利档案id - for (InsuranceArchivesBaseInfoPO po : baseInfoPOList) { - InsuranceArchivesBaseInfoPO moreBaseInfo = moreBaseInfoPOS.stream().filter(s -> Objects.equals(s.getEmployeeId(), po.getEmployeeId()) && Objects.equals(s.getPaymentOrganization(), po.getPaymentOrganization())).findFirst().orElse(null); - po.setSocialArchivesId(moreBaseInfo.getSocialArchivesId()); - po.setFundArchivesId(moreBaseInfo.getFundArchivesId()); - po.setOtherArchivesId(moreBaseInfo.getOtherArchivesId()); - newInsuranceArchivesBaseInfoList.add(po); } - //分批批量入库 - List> partition = Lists.partition(newInsuranceArchivesBaseInfoList, 100); - partition.forEach(getInsuranceBaseInfoMapper()::batchSave); - } + //导入社保档案 + if (CollectionUtils.isNotEmpty(socialList)) { + log.info("新增社保档案数量:{}", socialList.size()); + //根据人员id和个税扣缴义务人id删除对应档案 + socialList.forEach(getSocialSchemeMapper()::deleteByEmployeeIdAndPayOrg); + log.info("删除历史社保档案"); + List> partition = Lists.partition(socialList, 100); + partition.forEach(getSocialSchemeMapper()::batchSave); + log.info("新增社保档案成功"); + } + //导入公积金档案 + if (CollectionUtils.isNotEmpty(fundList)) { + log.info("新增公积金档案数量:{}", fundList.size()); + //根据人员id和个税扣缴义务人id删除对应档案 + fundList.forEach(getFundSchemeMapper()::deleteByEmployeeIdAndPayOrg); + log.info("删除历史公积金档案"); + List> partition = Lists.partition(fundList, 100); + partition.forEach(getFundSchemeMapper()::batchSave); + log.info("新增公积金档案成功"); + } + //导入其他福利档案 + if (CollectionUtils.isNotEmpty(otherList)) { + log.info("新增其他福利档案数量:{}", otherList.size()); + //根据人员id和个税扣缴义务人id删除对应档案 + otherList.forEach(getOtherSchemeMapper()::deleteByEmployeeIdAndPayOrg); + log.info("删除历史其他福利档案"); + List> partition = Lists.partition(otherList, 100); + partition.forEach(getOtherSchemeMapper()::batchSave); + log.info("新增其他福利档案成功"); + } + //导入福利档案基础信息 + if (CollectionUtils.isNotEmpty(baseInfoPOList)) { + //根据人员id和个税扣缴义务人id删除对应档案 + baseInfoPOList.forEach(getInsuranceBaseInfoMapper()::deleteByEmployeeIdAndPayOrg); + log.info("删除历史福利档案基础信息"); + // //分批批量删除 + List baseInfoEmployeeIds = baseInfoPOList.stream().map(InsuranceArchivesBaseInfoPO::getEmployeeId).collect(Collectors.toList()); - return baseInfoPOList; + //查询目标人员的剩余的福利档案基础信息(社保、公积金、其他福利档案id) + List moreBaseInfoPOS = new ArrayList<>(); + log.info("查询目标人员的剩余的福利档案基础信息(社保、公积金、其他福利档案id)"); + List> partitionInfo = Lists.partition((List) baseInfoEmployeeIds, 1000); + partitionInfo.forEach(part -> moreBaseInfoPOS.addAll( + getInsuranceBaseInfoMapper().getInsuranceBaseInfoListByInsuranceDetail(part))); + + List newInsuranceArchivesBaseInfoList = new ArrayList<>(); + //设置社保、公积金、其他福利档案id + log.info("设置社保、公积金、其他福利档案id"); + for (InsuranceArchivesBaseInfoPO po : baseInfoPOList) { + InsuranceArchivesBaseInfoPO moreBaseInfo = moreBaseInfoPOS.stream().filter(s -> Objects.equals(s.getEmployeeId(), po.getEmployeeId()) && Objects.equals(s.getPaymentOrganization(), po.getPaymentOrganization())).findFirst().orElse(null); + po.setSocialArchivesId(moreBaseInfo.getSocialArchivesId()); + po.setFundArchivesId(moreBaseInfo.getFundArchivesId()); + po.setOtherArchivesId(moreBaseInfo.getOtherArchivesId()); + newInsuranceArchivesBaseInfoList.add(po); + } + log.info("福利档案基础信息分批批量入库,入库数量:{}", newInsuranceArchivesBaseInfoList.size()); + //分批批量入库 + List> partition = Lists.partition(newInsuranceArchivesBaseInfoList, 100); + partition.forEach(getInsuranceBaseInfoMapper()::batchSave); + } + + return baseInfoPOList; + } catch (Exception e) { + log.info("新增福利档案出错:{}", e.getMessage(), e); + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(0, "福利档案新增失败")); + } } /** * 分批更新福利档案基础信息的runStatus From 02628d8224168cd37d4e95aec27e2c89282f956d Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Fri, 28 Jul 2023 17:43:14 +0800 Subject: [PATCH 23/48] =?UTF-8?q?=E8=96=AA=E8=B5=84=E8=B4=A6=E5=A5=97-?= =?UTF-8?q?=E8=96=AA=E8=B5=84=E9=A1=B9=E7=9B=AE=E7=BC=96=E8=BE=91fixBUG?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entity/salarysob/bo/SalarySobItemAggregateBO.java | 6 +++++- .../salary/entity/salarysob/dto/SalarySobItemDTO.java | 6 ++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/com/engine/salary/entity/salarysob/bo/SalarySobItemAggregateBO.java b/src/com/engine/salary/entity/salarysob/bo/SalarySobItemAggregateBO.java index 80d632d6e..7db099460 100644 --- a/src/com/engine/salary/entity/salarysob/bo/SalarySobItemAggregateBO.java +++ b/src/com/engine/salary/entity/salarysob/bo/SalarySobItemAggregateBO.java @@ -7,6 +7,7 @@ import com.engine.salary.entity.salaryitem.bo.SalaryItemBO; import com.engine.salary.entity.salaryitem.po.SalaryItemPO; import com.engine.salary.entity.salarysob.dto.*; import com.engine.salary.entity.salarysob.po.*; +import com.engine.salary.enums.SalaryValueTypeEnum; import com.engine.salary.enums.salarysob.IncomeCategoryEnum; import com.engine.salary.util.SalaryEntityUtil; import com.engine.salary.util.SalaryI18nUtil; @@ -120,19 +121,22 @@ public class SalarySobItemAggregateBO { SalarySobItemPO salarySobItemPO = v.get(i); SalaryItemPO salaryItemPO = salaryItemMap.get(salarySobItemPO.getSalaryItemId()); if (salaryItemPO != null) { + Integer valueType = Optional.ofNullable(salarySobItemPO.getValueType()).orElse(salaryItemPO.getValueType()); items.add(SalarySobItemDTO.builder() .id(salarySobItemPO.getId()) .salarySobId(salarySob.getId()) .salaryItemGroupId(k) .salaryItemId(salaryItemPO.getId()) .dateType(salaryItemPO.getDataType()) - .valueType(Optional.ofNullable(salarySobItemPO.getValueType()).orElse(salaryItemPO.getValueType())) + .valueType(valueType) .roundingMode(Optional.ofNullable(salarySobItemPO.getRoundingMode()).orElse(salaryItemPO.getRoundingMode())) .pattern(Optional.ofNullable(salarySobItemPO.getPattern()).orElse(salaryItemPO.getPattern())) .name(salaryItemPO.getName()) .itemHide(salarySobItemPO.getItemHide()) .formulaId(salarySobItemPO.getFormulaId()) .formulaContent(formulaMap.getOrDefault(salarySobItemPO.getFormulaId(), "")) + .originFormulaContent(valueType == SalaryValueTypeEnum.FORMULA.getValue() ? formulaMap.getOrDefault(salarySobItemPO.getFormulaId(), "") : "") + .originSqlContent(valueType == SalaryValueTypeEnum.SQL.getValue() ? formulaMap.getOrDefault(salarySobItemPO.getFormulaId(), "") : "") .taxDeclarationColumn(SalaryItemBO.buildTaxDeclarationColumn(salaryItemPO.getCode())) .sortedIndex(salarySobItemPO.getSortedIndex()) .canEdit(openFormulaForcedEditing || Objects.equals(salaryItemPO.getCanEdit(), 1)) diff --git a/src/com/engine/salary/entity/salarysob/dto/SalarySobItemDTO.java b/src/com/engine/salary/entity/salarysob/dto/SalarySobItemDTO.java index 47c03a327..9ab8affe9 100644 --- a/src/com/engine/salary/entity/salarysob/dto/SalarySobItemDTO.java +++ b/src/com/engine/salary/entity/salarysob/dto/SalarySobItemDTO.java @@ -77,6 +77,12 @@ public class SalarySobItemDTO { //公式内容 private String formulaContent; + // 用于前端展示 公式原始内容 + private String originFormulaContent; + // 用于前端展示 原始sql + private String originSqlContent; + + //个税申报表对应字段 private String taxDeclarationColumn; From f282f1a3ab33fc64f7bbe7513a0d529db917653a Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Fri, 28 Jul 2023 17:51:50 +0800 Subject: [PATCH 24/48] =?UTF-8?q?=E8=87=AA=E5=AE=9A=E4=B9=89=E5=B7=A5?= =?UTF-8?q?=E8=B5=84=E9=A1=B9=E7=9B=AE=E5=B1=95=E7=A4=BA=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../engine/salary/entity/salaryBill/bo/SalaryTemplateBO.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/com/engine/salary/entity/salaryBill/bo/SalaryTemplateBO.java b/src/com/engine/salary/entity/salaryBill/bo/SalaryTemplateBO.java index a12f0e81f..050807ff0 100644 --- a/src/com/engine/salary/entity/salaryBill/bo/SalaryTemplateBO.java +++ b/src/com/engine/salary/entity/salaryBill/bo/SalaryTemplateBO.java @@ -120,6 +120,8 @@ public class SalaryTemplateBO { .id(String.valueOf(i.getSalaryItemId())) .salaryItemId(String.valueOf(i.getSalaryItemId())) .name(i.getName()) + .salaryItemShowName(i.getName()) + .originName(i.getName()) .sortedIndex(i.getSortedIndex()) .build()); }); From f2091cbba52c7b8af2733927426b98216998909c Mon Sep 17 00:00:00 2001 From: sy Date: Mon, 31 Jul 2023 09:54:48 +0800 Subject: [PATCH 25/48] =?UTF-8?q?=E8=96=AA=E9=85=AC=E7=B3=BB=E7=BB=9F-?= =?UTF-8?q?=E7=A6=8F=E5=88=A9=E6=A1=A3=E6=A1=88=EF=BC=8C=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E6=A1=A3=E6=A1=88=E9=80=BB=E8=BE=91=E6=B7=BB=E5=8A=A0=E6=97=A5?= =?UTF-8?q?=E5=BF=972?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/engine/salary/service/impl/SIArchivesServiceImpl.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/com/engine/salary/service/impl/SIArchivesServiceImpl.java b/src/com/engine/salary/service/impl/SIArchivesServiceImpl.java index 81f1ab168..7a74d73fc 100644 --- a/src/com/engine/salary/service/impl/SIArchivesServiceImpl.java +++ b/src/com/engine/salary/service/impl/SIArchivesServiceImpl.java @@ -451,6 +451,7 @@ public class SIArchivesServiceImpl extends Service implements SIArchivesService //根据人员id和个税扣缴义务人id删除对应档案 socialList.forEach(getSocialSchemeMapper()::deleteByEmployeeIdAndPayOrg); log.info("删除历史社保档案"); + log.info("新增社保档案明细:{}", socialList); List> partition = Lists.partition(socialList, 100); partition.forEach(getSocialSchemeMapper()::batchSave); log.info("新增社保档案成功"); @@ -461,6 +462,7 @@ public class SIArchivesServiceImpl extends Service implements SIArchivesService //根据人员id和个税扣缴义务人id删除对应档案 fundList.forEach(getFundSchemeMapper()::deleteByEmployeeIdAndPayOrg); log.info("删除历史公积金档案"); + log.info("新增公积金档案明细:{}", fundList); List> partition = Lists.partition(fundList, 100); partition.forEach(getFundSchemeMapper()::batchSave); log.info("新增公积金档案成功"); @@ -471,6 +473,7 @@ public class SIArchivesServiceImpl extends Service implements SIArchivesService //根据人员id和个税扣缴义务人id删除对应档案 otherList.forEach(getOtherSchemeMapper()::deleteByEmployeeIdAndPayOrg); log.info("删除历史其他福利档案"); + log.info("新增其他福利档案明细:{}", otherList); List> partition = Lists.partition(otherList, 100); partition.forEach(getOtherSchemeMapper()::batchSave); log.info("新增其他福利档案成功"); @@ -502,6 +505,7 @@ public class SIArchivesServiceImpl extends Service implements SIArchivesService } log.info("福利档案基础信息分批批量入库,入库数量:{}", newInsuranceArchivesBaseInfoList.size()); //分批批量入库 + log.info("新增福利档案基础信息明细:{}", newInsuranceArchivesBaseInfoList); List> partition = Lists.partition(newInsuranceArchivesBaseInfoList, 100); partition.forEach(getInsuranceBaseInfoMapper()::batchSave); } From 4b66380c5b594df76ae221daa7709c6279ca9cb6 Mon Sep 17 00:00:00 2001 From: sy Date: Mon, 31 Jul 2023 10:16:41 +0800 Subject: [PATCH 26/48] =?UTF-8?q?=E8=96=AA=E9=85=AC=E7=B3=BB=E7=BB=9F-?= =?UTF-8?q?=E7=A6=8F=E5=88=A9=E6=96=B9=E6=A1=88=EF=BC=8C=E8=87=AA=E5=AE=9A?= =?UTF-8?q?=E4=B9=89=E7=A6=8F=E5=88=A9=E9=A1=B9=E7=BC=96=E8=BE=91=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E4=BC=98=E5=8C=96=E5=90=8C=E5=90=8D=E6=A0=A1=E9=AA=8C?= =?UTF-8?q?=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/engine/salary/service/impl/SICategoryServiceImpl.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/com/engine/salary/service/impl/SICategoryServiceImpl.java b/src/com/engine/salary/service/impl/SICategoryServiceImpl.java index 5b244ad01..5cf300cf5 100644 --- a/src/com/engine/salary/service/impl/SICategoryServiceImpl.java +++ b/src/com/engine/salary/service/impl/SICategoryServiceImpl.java @@ -165,6 +165,7 @@ public class SICategoryServiceImpl extends Service implements SICategoryService } // 判断福利名称是否重复 List iCategoryPOS = getICategoryMapper().listByName(iCategoryFormDTO.getInsuranceName()); + iCategoryPOS = iCategoryPOS.stream().filter(f -> !f.getId().equals(iCategoryFormDTO.getId())).collect(Collectors.toList()); if(CollectionUtils.isNotEmpty(iCategoryPOS)){ throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(0, "福利名称不能重复")); } From b7203625c1531194c06499720abebaaf90be4fdd Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Mon, 31 Jul 2023 10:47:00 +0800 Subject: [PATCH 27/48] =?UTF-8?q?=E8=87=AA=E5=AE=9A=E4=B9=89=E5=B7=A5?= =?UTF-8?q?=E8=B5=84=E9=A1=B9=E7=9B=AE=E5=B1=95=E7=A4=BA=E5=90=8Dfix=20?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salary/action/InitSalaryAction.java | 4 +-- .../salaryBill/bo/SalaryBillItemNameBO.java | 3 +-- .../SalaryBillSalaryGroupQueryParam.java | 5 ++++ .../param/SalaryBillSalaryItemQueryParam.java | 2 ++ .../salary/service/SalaryTemplateService.java | 2 +- .../impl/SalaryTemplateServiceImpl.java | 27 +++++++++++++++++-- .../salary/wrapper/SalaryTemplateWrapper.java | 8 +++--- 7 files changed, 40 insertions(+), 11 deletions(-) diff --git a/src/com/engine/salary/action/InitSalaryAction.java b/src/com/engine/salary/action/InitSalaryAction.java index 25e0669c8..4b2b0472b 100644 --- a/src/com/engine/salary/action/InitSalaryAction.java +++ b/src/com/engine/salary/action/InitSalaryAction.java @@ -77,7 +77,7 @@ public class InitSalaryAction implements Action { List errorNotice = (List) map.get("errorNotice"); if (CollectionUtils.isNotEmpty(errorNotice)) { - log.error("调薪存在异常 requestId:{} ,参数:{}, map:{}", requestInfo.getRequestid(), build, map); + log.error("定薪存在异常 requestId:{} ,参数:{}, map:{}", requestInfo.getRequestid(), build, map); List> excelComments = (List>) map.get("errorNotice"); StringBuilder message = new StringBuilder(""); for (Map comments : excelComments) { @@ -87,7 +87,7 @@ public class InitSalaryAction implements Action { return FAILURE_AND_CONTINUE; } } catch (Exception e) { - log.error("调薪异常", e); + log.error("定薪异常", e); requestInfo.getRequestManager().setMessage(e.getMessage()); return FAILURE_AND_CONTINUE; } diff --git a/src/com/engine/salary/entity/salaryBill/bo/SalaryBillItemNameBO.java b/src/com/engine/salary/entity/salaryBill/bo/SalaryBillItemNameBO.java index 0465efd66..ce1deaf67 100644 --- a/src/com/engine/salary/entity/salaryBill/bo/SalaryBillItemNameBO.java +++ b/src/com/engine/salary/entity/salaryBill/bo/SalaryBillItemNameBO.java @@ -6,7 +6,6 @@ import org.apache.commons.collections4.CollectionUtils; import java.util.Collections; import java.util.List; -import java.util.Map; import java.util.stream.Collectors; /** @@ -17,7 +16,7 @@ import java.util.stream.Collectors; */ public class SalaryBillItemNameBO { - public static List convert2ListDTO(List SalaryBillItemNamePOList, Map itemIdNameMap){ + public static List convert2ListDTO(List SalaryBillItemNamePOList){ if (CollectionUtils.isEmpty(SalaryBillItemNamePOList)) { return Collections.emptyList(); } diff --git a/src/com/engine/salary/entity/salaryBill/param/SalaryBillSalaryGroupQueryParam.java b/src/com/engine/salary/entity/salaryBill/param/SalaryBillSalaryGroupQueryParam.java index 8bf974208..36d8ab498 100644 --- a/src/com/engine/salary/entity/salaryBill/param/SalaryBillSalaryGroupQueryParam.java +++ b/src/com/engine/salary/entity/salaryBill/param/SalaryBillSalaryGroupQueryParam.java @@ -23,4 +23,9 @@ public class SalaryBillSalaryGroupQueryParam extends BaseQueryParam { * 前端已有的分组id */ private List existSalaryGroupIds; + + /** + * 工资单模板id + */ + private Long salaryTemplateId; } diff --git a/src/com/engine/salary/entity/salaryBill/param/SalaryBillSalaryItemQueryParam.java b/src/com/engine/salary/entity/salaryBill/param/SalaryBillSalaryItemQueryParam.java index ee0be17f7..26c819771 100644 --- a/src/com/engine/salary/entity/salaryBill/param/SalaryBillSalaryItemQueryParam.java +++ b/src/com/engine/salary/entity/salaryBill/param/SalaryBillSalaryItemQueryParam.java @@ -19,4 +19,6 @@ public class SalaryBillSalaryItemQueryParam extends BaseQueryParam { private Boolean isReplenish; private List existSalaryItemIds; + + private Long salaryTemplateId; } diff --git a/src/com/engine/salary/service/SalaryTemplateService.java b/src/com/engine/salary/service/SalaryTemplateService.java index bdf8826cb..29766417c 100644 --- a/src/com/engine/salary/service/SalaryTemplateService.java +++ b/src/com/engine/salary/service/SalaryTemplateService.java @@ -97,7 +97,7 @@ public interface SalaryTemplateService { * @param salarySobId * @return */ - List getSalaryItemSetContainHide(Long salarySobId, boolean isReplenish); + List getSalaryItemSetContainHide(Long salarySobId, Long salaryTemplateId, boolean isReplenish); /** * 获取默认工资单模板 diff --git a/src/com/engine/salary/service/impl/SalaryTemplateServiceImpl.java b/src/com/engine/salary/service/impl/SalaryTemplateServiceImpl.java index ea72331d8..60788d49a 100644 --- a/src/com/engine/salary/service/impl/SalaryTemplateServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryTemplateServiceImpl.java @@ -28,6 +28,7 @@ import com.engine.salary.util.page.PageInfo; import com.engine.salary.util.page.SalaryPageUtil; import com.mzlion.core.utils.BeanUtils; import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.math.NumberUtils; import weaver.hrm.User; @@ -336,9 +337,31 @@ public class SalaryTemplateServiceImpl extends Service implements SalaryTemplate } @Override - public List getSalaryItemSetContainHide(Long salarySobId, boolean isReplenish) { + public List getSalaryItemSetContainHide(Long salarySobId, Long salaryTemplateId, boolean isReplenish) { SalarySobItemAggregateDTO salarySobItemAggregate = getSalarySobItemService(user).getAggregateBySalarySobId(salarySobId); - return SalaryTemplateBO.convertSalarySobItemAggregateToSalaryItemSet(salarySobItemAggregate, new Long(user.getUID()), isReplenish); + // 获取工资单薪资项目展示名信息 + List billItemNameList = getSalaryBillItemNameService(user).ListByTemplateAndType( + SalaryBillItemNamePO.builder().salaryTemplateId(salaryTemplateId) + .salaryBillType(isReplenish ? 1 : 0) + .build()); + Map itemShowNameMap = SalaryEntityUtil.convert2Map(billItemNameList, SalaryBillItemNamePO::getSalaryItemId, SalaryBillItemNamePO::getSalaryItemShowName); + + List salaryTemplateSalaryItemSetListDTOS = SalaryTemplateBO.convertSalarySobItemAggregateToSalaryItemSet(salarySobItemAggregate, new Long(user.getUID()), isReplenish); + salaryTemplateSalaryItemSetListDTOS.stream() + .filter(data -> !StringUtils.equals(data.getGroupId(), "111111111111111111")) + .forEach(data -> { + data.getItems().forEach(item -> { + Long salaryItemId = Long.valueOf(item.getSalaryItemId()); + if(itemShowNameMap.containsKey(salaryItemId)){ + item.setSalaryItemShowName(itemShowNameMap.get(salaryItemId)); + item.setName(itemShowNameMap.get(salaryItemId) + "(" + item.getOriginName() +")"); + }else{ + item.setSalaryItemShowName(item.getOriginName()); + item.setName(item.getOriginName()); + } + }); + }); + return salaryTemplateSalaryItemSetListDTOS; } @Override diff --git a/src/com/engine/salary/wrapper/SalaryTemplateWrapper.java b/src/com/engine/salary/wrapper/SalaryTemplateWrapper.java index 83793e78e..b0e0c9be9 100644 --- a/src/com/engine/salary/wrapper/SalaryTemplateWrapper.java +++ b/src/com/engine/salary/wrapper/SalaryTemplateWrapper.java @@ -257,7 +257,7 @@ public class SalaryTemplateWrapper extends Service { List billItemNameList = getSalaryBillItemNameService(user).ListByTemplateAndType(SalaryBillItemNamePO.builder().salaryTemplateId(id).salaryBillType(0).build()); Map itemShowNameMap = SalaryEntityUtil.convert2Map(billItemNameList, SalaryBillItemNamePO::getSalaryItemId, SalaryBillItemNamePO::getSalaryItemShowName); // 获取薪资项目信息 - List salaryBillItemNameDTOS = SalaryBillItemNameBO.convert2ListDTO(billItemNameList, itemIdNameMap); + List salaryBillItemNameDTOS = SalaryBillItemNameBO.convert2ListDTO(billItemNameList); Map salaryBillItemNameDTOMap = SalaryEntityUtil.convert2Map(salaryBillItemNameDTOS, SalaryBillItemNameDTO::getSalaryItemId); if (CollectionUtils.isNotEmpty(salaryTemplateShowSetData)) { @@ -429,7 +429,7 @@ public class SalaryTemplateWrapper extends Service { List billItemNameList = getSalaryBillItemNameService(user).ListByTemplateAndType(SalaryBillItemNamePO.builder().salaryTemplateId(id).salaryBillType(1).build()); Map itemShowNameMap = SalaryEntityUtil.convert2Map(billItemNameList, SalaryBillItemNamePO::getSalaryItemId, SalaryBillItemNamePO::getSalaryItemShowName); // 获取薪资项目信息 - List salaryBillItemNameDTOS = SalaryBillItemNameBO.convert2ListDTO(billItemNameList, itemIdNameMap); + List salaryBillItemNameDTOS = SalaryBillItemNameBO.convert2ListDTO(billItemNameList); salaryBillItemNameDTOMap = SalaryEntityUtil.convert2Map(salaryBillItemNameDTOS, SalaryBillItemNameDTO::getSalaryItemId); if (CollectionUtils.isNotEmpty(replenishSalaryItemSetting)) { @@ -474,7 +474,7 @@ public class SalaryTemplateWrapper extends Service { Boolean isReplenish = Optional.ofNullable(param.getIsReplenish()) .orElse(false); List salaryItemSet - = getSalaryTemplateService(user).getSalaryItemSetContainHide(param.getSalarySobId(), isReplenish); + = getSalaryTemplateService(user).getSalaryItemSetContainHide(param.getSalarySobId(), param.getSalaryTemplateId(), isReplenish); Long groupId = param.getGroupId(); return salaryItemSet.stream() .filter(s -> Objects.equals(s.getGroupId(), groupId + "")) @@ -496,7 +496,7 @@ public class SalaryTemplateWrapper extends Service { public List getSalaryGroupSet(SalaryBillSalaryGroupQueryParam param) { Boolean isReplenish = Optional.ofNullable(param.getIsReplenish()) .orElse(false); - return getSalaryTemplateService(user).getSalaryItemSetContainHide(param.getSalarySobId(), isReplenish) + return getSalaryTemplateService(user).getSalaryItemSetContainHide(param.getSalarySobId(), param.getSalaryTemplateId(), isReplenish) .stream() .filter(group -> !Optional.ofNullable(param.getExistSalaryGroupIds()).orElse(Collections.emptyList()) .contains(group.getGroupId()) From c0822d7822446e7b8aa92c485088b5d98dbb2052 Mon Sep 17 00:00:00 2001 From: sy Date: Mon, 31 Jul 2023 10:57:34 +0800 Subject: [PATCH 28/48] =?UTF-8?q?=E8=96=AA=E9=85=AC=E7=B3=BB=E7=BB=9F-?= =?UTF-8?q?=E7=A6=8F=E5=88=A9=E6=96=B9=E6=A1=88=EF=BC=8C=E8=87=AA=E5=AE=9A?= =?UTF-8?q?=E4=B9=89=E7=A6=8F=E5=88=A9=E9=A1=B9=E5=88=A0=E9=99=A4=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=EF=BC=8C=E8=8E=B7=E5=8F=96=E5=85=A8=E9=87=8F=E6=A0=B8?= =?UTF-8?q?=E7=AE=97=E6=98=8E=E7=BB=86=E6=97=B6=EF=BC=8C=E5=AF=B9=E4=BA=BA?= =?UTF-8?q?=E5=91=98id=E8=BF=9B=E8=A1=8C=E5=8E=BB=E9=87=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/engine/salary/service/impl/RecordsBuildServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/com/engine/salary/service/impl/RecordsBuildServiceImpl.java b/src/com/engine/salary/service/impl/RecordsBuildServiceImpl.java index 86543188a..138eb8cf1 100644 --- a/src/com/engine/salary/service/impl/RecordsBuildServiceImpl.java +++ b/src/com/engine/salary/service/impl/RecordsBuildServiceImpl.java @@ -66,7 +66,7 @@ public class RecordsBuildServiceImpl extends Service implements RecordsBuildServ if (CollectionUtils.isEmpty(list)) { return result; } - List employeeIds = list.stream().map(item -> item.getEmployeeId()).collect(Collectors.toList()); + List employeeIds = list.stream().map(item -> item.getEmployeeId()).distinct().collect(Collectors.toList()); List employeeByIds = new ArrayList<>(); List> partition = Lists.partition(employeeIds, 1000); for (List longs : partition) { From 2b08efb4837db4ed569592314c90864fbe382670 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Mon, 31 Jul 2023 14:13:07 +0800 Subject: [PATCH 29/48] =?UTF-8?q?=E5=A4=8D=E5=88=B6=E5=B7=A5=E8=B5=84?= =?UTF-8?q?=E5=8D=95=E6=A8=A1=E6=9D=BF=E6=97=B6=E5=90=8C=E6=97=B6=E5=A4=8D?= =?UTF-8?q?=E5=88=B6=E5=B7=A5=E8=B5=84=E5=8D=95=E5=B1=95=E7=A4=BA=E5=90=8D?= =?UTF-8?q?=E7=A7=B0=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salarybill/SalaryBillItemNameMapper.java | 11 +++++++++-- .../salarybill/SalaryBillItemNameMapper.xml | 9 +++++++++ .../service/SalaryBillItemNameService.java | 7 +++++++ .../impl/SalaryBillItemNameServiceImpl.java | 8 +++++++- .../impl/SalaryTemplateServiceImpl.java | 18 ++++++++++++++++++ .../salary/wrapper/SalaryTemplateWrapper.java | 16 +++++++++++----- 6 files changed, 61 insertions(+), 8 deletions(-) diff --git a/src/com/engine/salary/mapper/salarybill/SalaryBillItemNameMapper.java b/src/com/engine/salary/mapper/salarybill/SalaryBillItemNameMapper.java index 744008c3a..8833c47c6 100644 --- a/src/com/engine/salary/mapper/salarybill/SalaryBillItemNameMapper.java +++ b/src/com/engine/salary/mapper/salarybill/SalaryBillItemNameMapper.java @@ -3,6 +3,7 @@ package com.engine.salary.mapper.salarybill; import com.engine.salary.entity.salaryBill.po.SalaryBillItemNamePO; import org.apache.ibatis.annotations.Param; +import java.util.Collection; import java.util.List; /** @@ -89,7 +90,13 @@ public interface SalaryBillItemNameMapper { /** * 根据idList删除 - * @param longs + * @param ids */ - void deleteByIds(@Param("collection") List longs); + void deleteByIds(@Param("collection") List ids); + + /** + * 根据模板id删除 + * @param ids + */ + void deleteByTemplateIds(@Param("collection") Collection ids); } diff --git a/src/com/engine/salary/mapper/salarybill/SalaryBillItemNameMapper.xml b/src/com/engine/salary/mapper/salarybill/SalaryBillItemNameMapper.xml index fc8e2bfbe..d00b52f35 100644 --- a/src/com/engine/salary/mapper/salarybill/SalaryBillItemNameMapper.xml +++ b/src/com/engine/salary/mapper/salarybill/SalaryBillItemNameMapper.xml @@ -330,6 +330,15 @@ #{id} + + UPDATE hrsa_salary_bill_item_name + SET delete_type=1 + WHERE delete_type = 0 + AND salary_template_id IN + + #{id} + + \ No newline at end of file diff --git a/src/com/engine/salary/service/SalaryBillItemNameService.java b/src/com/engine/salary/service/SalaryBillItemNameService.java index e6d217d4c..5399e47f1 100644 --- a/src/com/engine/salary/service/SalaryBillItemNameService.java +++ b/src/com/engine/salary/service/SalaryBillItemNameService.java @@ -3,6 +3,7 @@ package com.engine.salary.service; import com.engine.salary.entity.salaryBill.param.SalaryBillItemNameSaveParam; import com.engine.salary.entity.salaryBill.po.SalaryBillItemNamePO; +import java.util.Collection; import java.util.List; /** @@ -90,4 +91,10 @@ public interface SalaryBillItemNameService { * @param needDeleteIds */ void deleteByIds(List needDeleteIds); + + /** + * 根据工资单模板id删除 + * @param ids + */ + void deleteByTemplateIds(Collection ids); } diff --git a/src/com/engine/salary/service/impl/SalaryBillItemNameServiceImpl.java b/src/com/engine/salary/service/impl/SalaryBillItemNameServiceImpl.java index 756af271b..427f28ada 100644 --- a/src/com/engine/salary/service/impl/SalaryBillItemNameServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryBillItemNameServiceImpl.java @@ -172,5 +172,11 @@ public class SalaryBillItemNameServiceImpl extends Service implements SalaryBill getSalaryBillItemNameMapper().deleteByItemIdsAndTemplateId(salaryItemIds, salaryTemplateId, salaryBillType); } - + @Override + public void deleteByTemplateIds(Collection ids) { + if(CollectionUtils.isEmpty(ids)){ + return; + } + getSalaryBillItemNameMapper().deleteByTemplateIds(ids); + } } diff --git a/src/com/engine/salary/service/impl/SalaryTemplateServiceImpl.java b/src/com/engine/salary/service/impl/SalaryTemplateServiceImpl.java index 60788d49a..973391c8f 100644 --- a/src/com/engine/salary/service/impl/SalaryTemplateServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryTemplateServiceImpl.java @@ -27,6 +27,7 @@ import com.engine.salary.util.SalaryEntityUtil; import com.engine.salary.util.page.PageInfo; import com.engine.salary.util.page.SalaryPageUtil; import com.mzlion.core.utils.BeanUtils; +import dm.jdbc.util.IdGenerator; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.math.NumberUtils; @@ -267,6 +268,21 @@ public class SalaryTemplateServiceImpl extends Service implements SalaryTemplate salaryTemplateNew.setName(copyParam.getName()); salaryTemplateNew.setUseType(SalaryTemplateWhetherEnum.FALSE.getValue()); mapper.insert(salaryTemplateNew); + + // 复制工资单自定义名称信息 + List billItemNamePOList = getSalaryBillItemNameService(user).ListByTemplateAndType(SalaryBillItemNamePO.builder().salaryTemplateId(copyParam.getId()).build()); + if(CollectionUtils.isNotEmpty(billItemNamePOList)){ + Date now = new Date(); + List needInsertList = billItemNamePOList.stream().map(po -> { + SalaryBillItemNamePO newSalaryBillItemNamePO = new SalaryBillItemNamePO(); + BeanUtils.copyProperties(po, newSalaryBillItemNamePO); + newSalaryBillItemNamePO.setId(IdGenerator.generate()); + newSalaryBillItemNamePO.setUpdateTime(now); + newSalaryBillItemNamePO.setSalaryTemplateId(salaryTemplateNew.getId()); + return newSalaryBillItemNamePO; + }).collect(Collectors.toList()); + getSalaryBillItemNameService(user).batchInsert(needInsertList); + } // 记录日志 // SalaryLoggerUtil.recordAddSingleLog(salaryTemplateLoggerTemplate, // salaryTemplateNew.getId(), @@ -289,6 +305,8 @@ public class SalaryTemplateServiceImpl extends Service implements SalaryTemplate } // TODO 正在使用的记录不允许删除 mapper.deleteByIds(ids); + // 删除工资单重命名表 + getSalaryBillItemNameService(user).deleteByTemplateIds(ids); // 记录日志 // salaryTemplates.forEach(e -> SalaryLoggerUtil.recordDeleteSingleLog(salaryTemplateLoggerTemplate, // e.getId(), diff --git a/src/com/engine/salary/wrapper/SalaryTemplateWrapper.java b/src/com/engine/salary/wrapper/SalaryTemplateWrapper.java index b0e0c9be9..d852f2718 100644 --- a/src/com/engine/salary/wrapper/SalaryTemplateWrapper.java +++ b/src/com/engine/salary/wrapper/SalaryTemplateWrapper.java @@ -254,11 +254,17 @@ public class SalaryTemplateWrapper extends Service { // Map groupIdNameMap = SalaryEntityUtil.convert2Map(groupPOS, SalarySobItemGroupPO::getId, SalarySobItemGroupPO::getName); // 获取工资单薪资项目展示名信息 - List billItemNameList = getSalaryBillItemNameService(user).ListByTemplateAndType(SalaryBillItemNamePO.builder().salaryTemplateId(id).salaryBillType(0).build()); - Map itemShowNameMap = SalaryEntityUtil.convert2Map(billItemNameList, SalaryBillItemNamePO::getSalaryItemId, SalaryBillItemNamePO::getSalaryItemShowName); - // 获取薪资项目信息 - List salaryBillItemNameDTOS = SalaryBillItemNameBO.convert2ListDTO(billItemNameList); - Map salaryBillItemNameDTOMap = SalaryEntityUtil.convert2Map(salaryBillItemNameDTOS, SalaryBillItemNameDTO::getSalaryItemId); + Map itemShowNameMap; + Map salaryBillItemNameDTOMap = Collections.emptyMap(); + if (id != null){ + List billItemNameList = getSalaryBillItemNameService(user).ListByTemplateAndType(SalaryBillItemNamePO.builder().salaryTemplateId(id).salaryBillType(0).build()); + itemShowNameMap = SalaryEntityUtil.convert2Map(billItemNameList, SalaryBillItemNamePO::getSalaryItemId, SalaryBillItemNamePO::getSalaryItemShowName); + // 获取薪资项目信息 + List salaryBillItemNameDTOS = SalaryBillItemNameBO.convert2ListDTO(billItemNameList); + salaryBillItemNameDTOMap = SalaryEntityUtil.convert2Map(salaryBillItemNameDTOS, SalaryBillItemNameDTO::getSalaryItemId); + } else { + itemShowNameMap = Collections.emptyMap(); + } if (CollectionUtils.isNotEmpty(salaryTemplateShowSetData)) { salaryTemplateShowSetData.stream() From 3827c8963da5a9468b4d869fd7f37e1869459e6a Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Mon, 31 Jul 2023 17:07:21 +0800 Subject: [PATCH 30/48] =?UTF-8?q?fix=E8=A1=A5=E5=8F=91=E6=A8=A1=E6=9D=BF?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entity/salaryBill/dto/SalaryTemplateShowFormDTO.java | 3 +++ src/com/engine/salary/wrapper/SalaryTemplateWrapper.java | 6 ++++++ 2 files changed, 9 insertions(+) diff --git a/src/com/engine/salary/entity/salaryBill/dto/SalaryTemplateShowFormDTO.java b/src/com/engine/salary/entity/salaryBill/dto/SalaryTemplateShowFormDTO.java index 8f3452076..43e52905b 100644 --- a/src/com/engine/salary/entity/salaryBill/dto/SalaryTemplateShowFormDTO.java +++ b/src/com/engine/salary/entity/salaryBill/dto/SalaryTemplateShowFormDTO.java @@ -30,6 +30,9 @@ public class SalaryTemplateShowFormDTO { // 薪资项目设置") private List salaryTemplateSalaryItemSet; + // 补发工资薪资项目设置") + private List replenishSalaryTemplateSalaryItemSet; + // 工资单项目名称设置 private Map salaryBillItemNameSet; } diff --git a/src/com/engine/salary/wrapper/SalaryTemplateWrapper.java b/src/com/engine/salary/wrapper/SalaryTemplateWrapper.java index d852f2718..74f06fac6 100644 --- a/src/com/engine/salary/wrapper/SalaryTemplateWrapper.java +++ b/src/com/engine/salary/wrapper/SalaryTemplateWrapper.java @@ -245,6 +245,11 @@ public class SalaryTemplateWrapper extends Service { if (StringUtils.isNotEmpty(po.getSalaryItemSetting())) { salaryTemplateShowSetData = JsonUtil.parseList(po.getSalaryItemSetting(), SalaryTemplateSalaryItemSetListDTO.class); } + // 补发薪资项目设置,前端保存时需要使用 + List replenishSalaryTemplateSalaryItemSet = new ArrayList<>(); + if (StringUtils.isNotEmpty(po.getReplenishSalaryItemSetting())) { + replenishSalaryTemplateSalaryItemSet = JsonUtil.parseList(po.getReplenishSalaryItemSetting(), SalaryTemplateSalaryItemSetListDTO.class); + } //同步项目名称 List itemPOS = getSalaryItemService(user).listAll(); @@ -291,6 +296,7 @@ public class SalaryTemplateWrapper extends Service { .vars(Arrays.stream(SalaryTemplateVarEnum.values()).map(SalaryTemplateVarEnum::getValue).collect(Collectors.toList())) .salaryTemplateShowSet(salaryTemplateShowSet) .salaryTemplateSalaryItemSet(salaryTemplateShowSetData) + .replenishSalaryTemplateSalaryItemSet(replenishSalaryTemplateSalaryItemSet) .salaryBillItemNameSet(salaryBillItemNameDTOMap) .build(); } From 98bbac3236377231650272c2587e80fd35f4fbf2 Mon Sep 17 00:00:00 2001 From: sy Date: Tue, 1 Aug 2023 13:53:22 +0800 Subject: [PATCH 31/48] =?UTF-8?q?=E8=96=AA=E9=85=AC=E7=B3=BB=E7=BB=9F-?= =?UTF-8?q?=E7=A6=8F=E5=88=A9=E5=8F=B0=E8=B4=A6=EF=BC=8C=E7=BA=BF=E4=B8=8B?= =?UTF-8?q?=E5=AF=B9=E6=AF=94=E5=AF=BC=E5=85=A5=E5=88=86=E6=89=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/engine/salary/service/impl/SIAccountServiceImpl.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/com/engine/salary/service/impl/SIAccountServiceImpl.java b/src/com/engine/salary/service/impl/SIAccountServiceImpl.java index 97093a2ec..15ced811c 100644 --- a/src/com/engine/salary/service/impl/SIAccountServiceImpl.java +++ b/src/com/engine/salary/service/impl/SIAccountServiceImpl.java @@ -2381,7 +2381,10 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { getExcelInsuranceDetailMapper().batchDelByIds(idList); } //新增 - getExcelInsuranceDetailMapper().batchSave(addCompareList); + List> partition = Lists.partition((List) addCompareList, 20); + partition.forEach(getExcelInsuranceDetailMapper()::batchSave); + +// getExcelInsuranceDetailMapper().batchSave(addCompareList); apidatas.put("successCount", successCount); apidatas.put("errorCount", failCount); From 293297ad7ff6c190b15af28f9dc9208dba559d7b Mon Sep 17 00:00:00 2001 From: sy Date: Tue, 1 Aug 2023 15:37:32 +0800 Subject: [PATCH 32/48] =?UTF-8?q?=E8=96=AA=E9=85=AC=E7=B3=BB=E7=BB=9F-?= =?UTF-8?q?=E7=A6=8F=E5=88=A9=E5=8F=B0=E8=B4=A6=EF=BC=8C=E7=BA=BF=E4=B8=8B?= =?UTF-8?q?=E5=AF=B9=E6=AF=94=E5=AF=BC=E5=85=A5=E5=88=86=E6=89=B9,?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E9=80=BB=E8=BE=91=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entity/siaccount/bo/InsuranceComparisonResultBO.java | 4 ++-- src/com/engine/salary/service/impl/SIAccountServiceImpl.java | 5 ++++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/com/engine/salary/entity/siaccount/bo/InsuranceComparisonResultBO.java b/src/com/engine/salary/entity/siaccount/bo/InsuranceComparisonResultBO.java index c24a2f513..e8ffcf358 100644 --- a/src/com/engine/salary/entity/siaccount/bo/InsuranceComparisonResultBO.java +++ b/src/com/engine/salary/entity/siaccount/bo/InsuranceComparisonResultBO.java @@ -129,7 +129,7 @@ public class InsuranceComparisonResultBO { */ public static List> buildComparisonTableData(List accountExportPOS, List excelAccountExportPOS, Map schemeIdNameMap) { - Map> excelResultMap = SalaryEntityUtil.group2Map(excelAccountExportPOS, ExcelAccountExportPO::getWorkcode); + Map> excelResultMap = SalaryEntityUtil.group2Map(excelAccountExportPOS, ExcelAccountExportPO::getEmployeeId); // Map> acctResultMap = SalaryEntityUtil.group2Map(accountExportPOS, AccountExportPO::getWorkcode); List paymentList = MapperProxyFactory.getProxy(TaxAgentMapper.class).listAll(); @@ -172,7 +172,7 @@ public class InsuranceComparisonResultBO { map.put("otherSchemeName", schemeIdNameMap.get(accountExportPO.getOtherSchemeId())); //线下值 - List excelResultValueList = excelResultMap.get(accountExportPO.getWorkcode()); + List excelResultValueList = excelResultMap.get(accountExportPO.getEmployeeId()); ExcelAccountExportPO excelAccountExportPO = new ExcelAccountExportPO(); if (excelResultValueList != null && excelResultValueList.size() == 1) { excelAccountExportPO = excelResultValueList.get(0); diff --git a/src/com/engine/salary/service/impl/SIAccountServiceImpl.java b/src/com/engine/salary/service/impl/SIAccountServiceImpl.java index 97093a2ec..15ced811c 100644 --- a/src/com/engine/salary/service/impl/SIAccountServiceImpl.java +++ b/src/com/engine/salary/service/impl/SIAccountServiceImpl.java @@ -2381,7 +2381,10 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { getExcelInsuranceDetailMapper().batchDelByIds(idList); } //新增 - getExcelInsuranceDetailMapper().batchSave(addCompareList); + List> partition = Lists.partition((List) addCompareList, 20); + partition.forEach(getExcelInsuranceDetailMapper()::batchSave); + +// getExcelInsuranceDetailMapper().batchSave(addCompareList); apidatas.put("successCount", successCount); apidatas.put("errorCount", failCount); From e655daf018289945b8921cb67c6aad543d268893 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Wed, 2 Aug 2023 10:34:04 +0800 Subject: [PATCH 33/48] =?UTF-8?q?fix=E4=B8=AA=E7=A8=8E=E6=89=A3=E7=BC=B4?= =?UTF-8?q?=E4=B9=89=E5=8A=A1=E4=BA=BA=E4=BA=BA=E5=91=98=E8=8C=83=E5=9B=B4?= =?UTF-8?q?=EF=BC=8C=E6=97=A0=E6=B3=95=E6=A0=B9=E6=8D=AE=E9=83=A8=E9=97=A8?= =?UTF-8?q?=E3=80=81=E5=88=86=E9=83=A8=E7=BB=B4=E5=BA=A6=E7=94=9F=E6=88=90?= =?UTF-8?q?=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../engine/salary/service/impl/SalaryEmployeeServiceImpl.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/com/engine/salary/service/impl/SalaryEmployeeServiceImpl.java b/src/com/engine/salary/service/impl/SalaryEmployeeServiceImpl.java index d4cbdb8bf..fb2567f0c 100644 --- a/src/com/engine/salary/service/impl/SalaryEmployeeServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryEmployeeServiceImpl.java @@ -72,13 +72,13 @@ public class SalaryEmployeeServiceImpl extends Service implements SalaryEmployee public List listAll(UseEmployeeTypeEnum empType) { List result = new ArrayList<>(); if (empType == UseEmployeeTypeEnum.ORG) { - result = employBiz.listEmployee(); + result = employBiz.listAll(); } if (empType == UseEmployeeTypeEnum.EXT) { result = getExtEmpService(user).listEmployee(); } if (empType == UseEmployeeTypeEnum.ALL) { - result.addAll(employBiz.listEmployee()); + result.addAll(employBiz.listAll()); result.addAll(getExtEmpService(user).listEmployee()); } return result; From f6dc6d9257f73293997b325044375a42ed314c6a Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Wed, 2 Aug 2023 14:47:40 +0800 Subject: [PATCH 34/48] =?UTF-8?q?fix=E4=B8=AA=E7=A8=8E=E6=89=A3=E7=BC=B4?= =?UTF-8?q?=E4=B9=89=E5=8A=A1=E4=BA=BA=E5=88=A0=E9=99=A4=E4=BA=BA=E5=91=98?= =?UTF-8?q?=E8=8C=83=E5=9B=B4=EF=BC=8C=E6=A1=A3=E6=A1=88=E4=B8=8D=E8=B7=B3?= =?UTF-8?q?=E5=88=B0=E5=81=9C=E8=96=AA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../engine/salary/mapper/taxagent/TaxAgentEmpMapper.xml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/com/engine/salary/mapper/taxagent/TaxAgentEmpMapper.xml b/src/com/engine/salary/mapper/taxagent/TaxAgentEmpMapper.xml index bae6797bf..a74e1c1aa 100644 --- a/src/com/engine/salary/mapper/taxagent/TaxAgentEmpMapper.xml +++ b/src/com/engine/salary/mapper/taxagent/TaxAgentEmpMapper.xml @@ -80,7 +80,12 @@ AND update_time = #{updateTime} - AND employee_type = #{employeeType} + + AND (employee_type = #{employeeType} or employee_type is null) + + + AND employee_type = #{employeeType} + AND tax_agent_id IN From 109028e6454b3b3153f3c3680b6679742d4e59e9 Mon Sep 17 00:00:00 2001 From: sy Date: Wed, 2 Aug 2023 16:08:12 +0800 Subject: [PATCH 35/48] =?UTF-8?q?=E8=96=AA=E9=85=AC=E7=B3=BB=E7=BB=9F-?= =?UTF-8?q?=E7=A6=8F=E5=88=A9=E6=A1=A3=E6=A1=88=EF=BC=8C=E5=A2=9E=E9=87=8F?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=A4=84=E7=90=86=E6=B7=BB=E5=8A=A0=E6=97=A5?= =?UTF-8?q?=E5=BF=97=E8=8B=A5=E5=B9=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/SIArchivesServiceImpl.java | 183 +++++++++--------- 1 file changed, 95 insertions(+), 88 deletions(-) diff --git a/src/com/engine/salary/service/impl/SIArchivesServiceImpl.java b/src/com/engine/salary/service/impl/SIArchivesServiceImpl.java index 7a74d73fc..69ac06b3d 100644 --- a/src/com/engine/salary/service/impl/SIArchivesServiceImpl.java +++ b/src/com/engine/salary/service/impl/SIArchivesServiceImpl.java @@ -244,26 +244,27 @@ public class SIArchivesServiceImpl extends Service implements SIArchivesService @Transactional(rollbackFor = Exception.class) @Override public void handleChangeData(long currentEmployeeId) { - Util_DataCache.setObjVal("welfareChangeSign", "1"); - log.info("福利档案中增量数据处理逻辑开始:"); - // 所有增量人员列表 - List taxAgentEmpChangeList = getTaxAgentEmpChangeService(user).listAllByModule(TaxAgentEmpChangeModuleEnum.INSURANCE_ARCHIVE); - log.info("待处理的福利档案增量数据数量 {}:", taxAgentEmpChangeList.size()); - if (CollectionUtils.isEmpty(taxAgentEmpChangeList)) { - Util_DataCache.setObjVal("welfareChangeSign", "0"); - return; - } - // 当前可以管辖的人员 - Collection taxAgentList = new ArrayList<>(); - if (currentEmployeeId != 1L) { - taxAgentList = getTaxAgentService(user).listAllTaxAgents(currentEmployeeId); - Collection finalTaxAgentList = taxAgentList; - taxAgentEmpChangeList = taxAgentEmpChangeList.stream().filter(f -> finalTaxAgentList.stream().anyMatch(e -> e.getId().equals(f.getTaxAgentId()))).collect(Collectors.toList()); + try { + Util_DataCache.setObjVal("welfareChangeSign", "1"); + log.info("福利档案中增量数据处理逻辑开始:"); + // 所有增量人员列表 + List taxAgentEmpChangeList = getTaxAgentEmpChangeService(user).listAllByModule(TaxAgentEmpChangeModuleEnum.INSURANCE_ARCHIVE); + log.info("待处理的福利档案增量数据数量 {}:", taxAgentEmpChangeList.size()); if (CollectionUtils.isEmpty(taxAgentEmpChangeList)) { Util_DataCache.setObjVal("welfareChangeSign", "0"); return; } - } + // 当前可以管辖的人员 + Collection taxAgentList = new ArrayList<>(); + if (currentEmployeeId != 1L) { + taxAgentList = getTaxAgentService(user).listAllTaxAgents(currentEmployeeId); + Collection finalTaxAgentList = taxAgentList; + taxAgentEmpChangeList = taxAgentEmpChangeList.stream().filter(f -> finalTaxAgentList.stream().anyMatch(e -> e.getId().equals(f.getTaxAgentId()))).collect(Collectors.toList()); + if (CollectionUtils.isEmpty(taxAgentEmpChangeList)) { + Util_DataCache.setObjVal("welfareChangeSign", "0"); + return; + } + } // Collection taxAgentList = getTaxAgentService(user).listAllTaxAgents(currentEmployeeId); // log.info("当前可以管辖的个税扣缴义务人数量 {}:", taxAgentList.size()); // taxAgentEmpChangeList = taxAgentEmpChangeList.stream().filter(f -> taxAgentList.stream().anyMatch(e -> e.getId().equals(f.getTaxAgentId()))).collect(Collectors.toList()); @@ -271,85 +272,91 @@ public class SIArchivesServiceImpl extends Service implements SIArchivesService // Util_DataCache.setObjVal("welfareChangeSign", "0"); // return; // } - log.info("根据当前可以管辖的个税扣缴义务人筛选出的可处理增量数据数量 {}:", taxAgentEmpChangeList.size()); - // 所有福利档案基础信息数据 - List baseInfoPOList = getInsuranceBaseInfoMapper().listAll(); - log.info("当前数据库中所有福利档案基础信息数据数量 {}:", baseInfoPOList.size()); - StopWatch sw = new StopWatch(); - sw.start("将增量数据进一步处理为新增、更新两类数据"); - InsuranceArchivesBaseInfoBO.ChangeData changeData = InsuranceArchivesBaseInfoBO.buildChangeData(taxAgentEmpChangeList, baseInfoPOList, currentEmployeeId); - sw.stop(); - // 批量修改福利档案 - if (CollectionUtils.isNotEmpty(changeData.getBaseInfoUpdateTodoList())) { - log.info("增量数据中待更新的数据数量 {}:", changeData.getBaseInfoUpdateTodoList().size()); - //对于即将调整为“待减员”的数据,更新社保、公积金、其他福利档案的停止缴纳时间 - SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM"); - String today = simpleDateFormat.format(new Date()); - sw.start("生成增量数据中即将置为“待减员”的数据"); - List toStayDelList = changeData.getBaseInfoUpdateTodoList().stream() - .filter(f -> f.getRunStatus().equals(EmployeeStatusEnum.STAY_DEL.getValue())) - .collect(Collectors.toList()); - if (toStayDelList.size() > 0) { - List> partitionUpdateEndTime = Lists.partition(toStayDelList, 100); - partitionUpdateEndTime.forEach(part->{ - List socialIds = part.stream().map(InsuranceArchivesBaseInfoPO::getSocialArchivesId).collect(Collectors.toList()); - List fundIds = part.stream().map(InsuranceArchivesBaseInfoPO::getFundArchivesId).collect(Collectors.toList()); - List otherIds = part.stream().map(InsuranceArchivesBaseInfoPO::getOtherArchivesId).collect(Collectors.toList()); - - getSocialSchemeMapper().batchUpdateEndTime(socialIds, today); - getFundSchemeMapper().batchUpdateEndTime(fundIds, today); - getOtherSchemeMapper().batchUpdateEndTime(otherIds, today); - }); - - } + log.info("根据当前可以管辖的个税扣缴义务人筛选出的可处理增量数据数量 {}:", taxAgentEmpChangeList.size()); + // 所有福利档案基础信息数据 + List baseInfoPOList = getInsuranceBaseInfoMapper().listAll(); + log.info("当前数据库中所有福利档案基础信息数据数量 {}:", baseInfoPOList.size()); + StopWatch sw = new StopWatch(); + sw.start("将增量数据进一步处理为新增、更新两类数据"); + InsuranceArchivesBaseInfoBO.ChangeData changeData = InsuranceArchivesBaseInfoBO.buildChangeData(taxAgentEmpChangeList, baseInfoPOList, currentEmployeeId); sw.stop(); + // 批量修改福利档案 + if (CollectionUtils.isNotEmpty(changeData.getBaseInfoUpdateTodoList())) { + log.info("增量数据中待更新的数据数量 {}:", changeData.getBaseInfoUpdateTodoList().size()); + //对于即将调整为“待减员”的数据,更新社保、公积金、其他福利档案的停止缴纳时间 + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM"); + String today = simpleDateFormat.format(new Date()); + sw.start("生成增量数据中即将置为“待减员”的数据"); + List toStayDelList = changeData.getBaseInfoUpdateTodoList().stream() + .filter(f -> f.getRunStatus().equals(EmployeeStatusEnum.STAY_DEL.getValue())) + .collect(Collectors.toList()); + if (toStayDelList.size() > 0) { + List> partitionUpdateEndTime = Lists.partition(toStayDelList, 100); + partitionUpdateEndTime.forEach(part->{ + List socialIds = part.stream().map(InsuranceArchivesBaseInfoPO::getSocialArchivesId).collect(Collectors.toList()); + List fundIds = part.stream().map(InsuranceArchivesBaseInfoPO::getFundArchivesId).collect(Collectors.toList()); + List otherIds = part.stream().map(InsuranceArchivesBaseInfoPO::getOtherArchivesId).collect(Collectors.toList()); + + getSocialSchemeMapper().batchUpdateEndTime(socialIds, today); + getFundSchemeMapper().batchUpdateEndTime(fundIds, today); + getOtherSchemeMapper().batchUpdateEndTime(otherIds, today); + }); - sw.start("生成增量数据中即将置为“逻辑删除”的数据"); - //对于逻辑删除的数据,同样逻辑删除相关的社保、公积金、其他福利档案 - List delList = changeData.getBaseInfoUpdateTodoList().stream() - .filter(f -> f.getDeleteType().equals(DeleteTypeEnum.DELETED.getValue())) - .collect(Collectors.toList()); - if (delList.size() > 0) { - for (InsuranceArchivesBaseInfoPO po : delList) { - getSocialSchemeMapper().deleteByEmployeeIdAndPayOrg(InsuranceArchivesSocialSchemePO.builder() - .employeeId(po.getEmployeeId()) - .paymentOrganization(po.getPaymentOrganization()) - .build()); - getFundSchemeMapper().deleteByEmployeeIdAndPayOrg(InsuranceArchivesFundSchemePO.builder() - .employeeId(po.getEmployeeId()) - .paymentOrganization(po.getPaymentOrganization()) - .build()); - getOtherSchemeMapper().deleteByEmployeeIdAndPayOrg(InsuranceArchivesOtherSchemePO.builder() - .employeeId(po.getEmployeeId()) - .paymentOrganization(po.getPaymentOrganization()) - .build()); } + sw.stop(); + + sw.start("生成增量数据中即将置为“逻辑删除”的数据"); + //对于逻辑删除的数据,同样逻辑删除相关的社保、公积金、其他福利档案 + List delList = changeData.getBaseInfoUpdateTodoList().stream() + .filter(f -> f.getDeleteType().equals(DeleteTypeEnum.DELETED.getValue())) + .collect(Collectors.toList()); + log.info("福利档案-逻辑删除明细:{}", delList); + if (delList.size() > 0) { + for (InsuranceArchivesBaseInfoPO po : delList) { + getSocialSchemeMapper().deleteByEmployeeIdAndPayOrg(InsuranceArchivesSocialSchemePO.builder() + .employeeId(po.getEmployeeId()) + .paymentOrganization(po.getPaymentOrganization()) + .build()); + getFundSchemeMapper().deleteByEmployeeIdAndPayOrg(InsuranceArchivesFundSchemePO.builder() + .employeeId(po.getEmployeeId()) + .paymentOrganization(po.getPaymentOrganization()) + .build()); + getOtherSchemeMapper().deleteByEmployeeIdAndPayOrg(InsuranceArchivesOtherSchemePO.builder() + .employeeId(po.getEmployeeId()) + .paymentOrganization(po.getPaymentOrganization()) + .build()); + } + } + sw.stop(); + //修改福利档案基础信息 + sw.start("增量数据中待更新数据入库"); + log.info("福利档案-增量数据中待更新数据入库:{}", changeData.getBaseInfoUpdateTodoList()); + List> partitionUpdateBase = Lists.partition(changeData.getBaseInfoUpdateTodoList(), 100); + partitionUpdateBase.forEach(part-> getInsuranceBaseInfoMapper().batchUpdate(part)); + sw.stop(); + log.info("增量数据中待更新的数据处理完成!"); + } + + sw.start("处理增量数据中待新增的数据"); + // 批量新增福利档案 + if (CollectionUtils.isNotEmpty(changeData.getBaseInfoAddTodoList())) { + log.info("增量数据中待新增的数据数量 {}:", changeData.getBaseInfoAddTodoList().size()); + //新增社保、公积金、其他福利档案、福利档案基础信息 + addNewInsuranceBaseInfo(changeData.getBaseInfoAddTodoList(), currentEmployeeId); + log.info("增量数据中待新增的数据处理完成!"); } sw.stop(); - //修改福利档案基础信息 - sw.start("增量数据中待更新数据入库"); - List> partitionUpdateBase = Lists.partition(changeData.getBaseInfoUpdateTodoList(), 100); - partitionUpdateBase.forEach(part-> getInsuranceBaseInfoMapper().batchUpdate(part)); - sw.stop(); - log.info("增量数据中待更新的数据处理完成!"); - } - sw.start("处理增量数据中待新增的数据"); - // 批量新增福利档案 - if (CollectionUtils.isNotEmpty(changeData.getBaseInfoAddTodoList())) { - log.info("增量数据中待新增的数据数量 {}:", changeData.getBaseInfoAddTodoList().size()); - //新增社保、公积金、其他福利档案、福利档案基础信息 - addNewInsuranceBaseInfo(changeData.getBaseInfoAddTodoList(), currentEmployeeId); - log.info("增量数据中待新增的数据处理完成!"); + // 删除增量数据 + if (CollectionUtils.isNotEmpty(changeData.getChangeIds())) { + getTaxAgentEmpChangeService(user).deleleByIds(changeData.getChangeIds()); + } + log.info("各操作计时 {}", sw.prettyPrint()); + Util_DataCache.setObjVal("welfareChangeSign", "0"); + } catch (Exception e) { + log.info("福利档案-增量数据处理出错:{}", e.getMessage(), e); + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(0, "福利档案-增量数据处理出错")); } - sw.stop(); - - // 删除增量数据 - if (CollectionUtils.isNotEmpty(changeData.getChangeIds())) { - getTaxAgentEmpChangeService(user).deleleByIds(changeData.getChangeIds()); - } - log.info("各操作计时 {}", sw.prettyPrint()); - Util_DataCache.setObjVal("welfareChangeSign", "0"); } /** From 0749ab9d5b50a519d958fb29bcb05187ef48c3d7 Mon Sep 17 00:00:00 2001 From: sy Date: Wed, 2 Aug 2023 16:31:59 +0800 Subject: [PATCH 36/48] =?UTF-8?q?=E8=96=AA=E9=85=AC=E7=B3=BB=E7=BB=9F-?= =?UTF-8?q?=E7=A6=8F=E5=88=A9=E6=A1=A3=E6=A1=88=EF=BC=8C=E5=A2=9E=E9=87=8F?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=A4=84=E7=90=86=E4=B8=AD=E7=9B=B8=E5=85=B3?= =?UTF-8?q?=E6=97=A5=E5=BF=97=E6=B7=BB=E5=8A=A0=E5=BC=80=E5=85=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/SIArchivesServiceImpl.java | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/com/engine/salary/service/impl/SIArchivesServiceImpl.java b/src/com/engine/salary/service/impl/SIArchivesServiceImpl.java index 69ac06b3d..dbfde3e87 100644 --- a/src/com/engine/salary/service/impl/SIArchivesServiceImpl.java +++ b/src/com/engine/salary/service/impl/SIArchivesServiceImpl.java @@ -43,6 +43,7 @@ import org.apache.commons.lang3.StringUtils; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.StopWatch; +import weaver.general.BaseBean; import weaver.general.Util; import weaver.hrm.User; @@ -58,6 +59,9 @@ import java.util.stream.Collectors; **/ @Slf4j public class SIArchivesServiceImpl extends Service implements SIArchivesService { + private final BaseBean baseBean = new BaseBean(); + + private final Boolean isLog = "true".equals(baseBean.getPropValue("hrmSalary", "log")); private SIArchivesBiz siArchivesBiz = new SIArchivesBiz(); @@ -290,6 +294,9 @@ public class SIArchivesServiceImpl extends Service implements SIArchivesService List toStayDelList = changeData.getBaseInfoUpdateTodoList().stream() .filter(f -> f.getRunStatus().equals(EmployeeStatusEnum.STAY_DEL.getValue())) .collect(Collectors.toList()); + if (isLog) { + log.info("福利档案-待减员明细:{}", toStayDelList); + } if (toStayDelList.size() > 0) { List> partitionUpdateEndTime = Lists.partition(toStayDelList, 100); partitionUpdateEndTime.forEach(part->{ @@ -310,7 +317,9 @@ public class SIArchivesServiceImpl extends Service implements SIArchivesService List delList = changeData.getBaseInfoUpdateTodoList().stream() .filter(f -> f.getDeleteType().equals(DeleteTypeEnum.DELETED.getValue())) .collect(Collectors.toList()); - log.info("福利档案-逻辑删除明细:{}", delList); + if (isLog) { + log.info("福利档案-逻辑删除明细:{}", delList); + } if (delList.size() > 0) { for (InsuranceArchivesBaseInfoPO po : delList) { getSocialSchemeMapper().deleteByEmployeeIdAndPayOrg(InsuranceArchivesSocialSchemePO.builder() @@ -330,7 +339,9 @@ public class SIArchivesServiceImpl extends Service implements SIArchivesService sw.stop(); //修改福利档案基础信息 sw.start("增量数据中待更新数据入库"); - log.info("福利档案-增量数据中待更新数据入库:{}", changeData.getBaseInfoUpdateTodoList()); + if (isLog) { + log.info("福利档案-增量数据中待更新数据入库明细:{}", changeData.getBaseInfoUpdateTodoList()); + } List> partitionUpdateBase = Lists.partition(changeData.getBaseInfoUpdateTodoList(), 100); partitionUpdateBase.forEach(part-> getInsuranceBaseInfoMapper().batchUpdate(part)); sw.stop(); From 5925bd56003faaf7f3509a92c4de6925581f6ff5 Mon Sep 17 00:00:00 2001 From: sy Date: Wed, 2 Aug 2023 16:39:20 +0800 Subject: [PATCH 37/48] =?UTF-8?q?=E8=96=AA=E9=85=AC=E7=B3=BB=E7=BB=9F-?= =?UTF-8?q?=E7=A6=8F=E5=88=A9=E6=A1=A3=E6=A1=88=EF=BC=8C=E5=A2=9E=E9=87=8F?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=A4=84=E7=90=86-=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E7=A6=8F=E5=88=A9=E6=A1=A3=E6=A1=88=E7=9B=B8=E5=85=B3=E6=97=A5?= =?UTF-8?q?=E5=BF=97=E6=B7=BB=E5=8A=A0=E5=BC=80=E5=85=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/SIArchivesServiceImpl.java | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/com/engine/salary/service/impl/SIArchivesServiceImpl.java b/src/com/engine/salary/service/impl/SIArchivesServiceImpl.java index dbfde3e87..48dc79fe2 100644 --- a/src/com/engine/salary/service/impl/SIArchivesServiceImpl.java +++ b/src/com/engine/salary/service/impl/SIArchivesServiceImpl.java @@ -469,7 +469,9 @@ public class SIArchivesServiceImpl extends Service implements SIArchivesService //根据人员id和个税扣缴义务人id删除对应档案 socialList.forEach(getSocialSchemeMapper()::deleteByEmployeeIdAndPayOrg); log.info("删除历史社保档案"); - log.info("新增社保档案明细:{}", socialList); + if (isLog) { + log.info("新增社保档案明细:{}", socialList); + } List> partition = Lists.partition(socialList, 100); partition.forEach(getSocialSchemeMapper()::batchSave); log.info("新增社保档案成功"); @@ -480,7 +482,9 @@ public class SIArchivesServiceImpl extends Service implements SIArchivesService //根据人员id和个税扣缴义务人id删除对应档案 fundList.forEach(getFundSchemeMapper()::deleteByEmployeeIdAndPayOrg); log.info("删除历史公积金档案"); - log.info("新增公积金档案明细:{}", fundList); + if (isLog) { + log.info("新增公积金档案明细:{}", fundList); + } List> partition = Lists.partition(fundList, 100); partition.forEach(getFundSchemeMapper()::batchSave); log.info("新增公积金档案成功"); @@ -491,7 +495,9 @@ public class SIArchivesServiceImpl extends Service implements SIArchivesService //根据人员id和个税扣缴义务人id删除对应档案 otherList.forEach(getOtherSchemeMapper()::deleteByEmployeeIdAndPayOrg); log.info("删除历史其他福利档案"); - log.info("新增其他福利档案明细:{}", otherList); + if (isLog) { + log.info("新增其他福利档案明细:{}", otherList); + } List> partition = Lists.partition(otherList, 100); partition.forEach(getOtherSchemeMapper()::batchSave); log.info("新增其他福利档案成功"); @@ -523,7 +529,9 @@ public class SIArchivesServiceImpl extends Service implements SIArchivesService } log.info("福利档案基础信息分批批量入库,入库数量:{}", newInsuranceArchivesBaseInfoList.size()); //分批批量入库 - log.info("新增福利档案基础信息明细:{}", newInsuranceArchivesBaseInfoList); + if (isLog) { + log.info("新增福利档案基础信息明细:{}", newInsuranceArchivesBaseInfoList); + } List> partition = Lists.partition(newInsuranceArchivesBaseInfoList, 100); partition.forEach(getInsuranceBaseInfoMapper()::batchSave); } From 190771037eac80885f5280c8bec47b88d16b306d Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Fri, 4 Aug 2023 09:33:17 +0800 Subject: [PATCH 38/48] fixbug --- .../salary/entity/salarysob/bo/SalarySobItemAggregateBO.java | 4 ++-- .../engine/salary/entity/salarysob/dto/SalarySobItemDTO.java | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/com/engine/salary/entity/salarysob/bo/SalarySobItemAggregateBO.java b/src/com/engine/salary/entity/salarysob/bo/SalarySobItemAggregateBO.java index 7db099460..2014bf2b8 100644 --- a/src/com/engine/salary/entity/salarysob/bo/SalarySobItemAggregateBO.java +++ b/src/com/engine/salary/entity/salarysob/bo/SalarySobItemAggregateBO.java @@ -127,7 +127,7 @@ public class SalarySobItemAggregateBO { .salarySobId(salarySob.getId()) .salaryItemGroupId(k) .salaryItemId(salaryItemPO.getId()) - .dateType(salaryItemPO.getDataType()) + .dataType(salaryItemPO.getDataType()) .valueType(valueType) .roundingMode(Optional.ofNullable(salarySobItemPO.getRoundingMode()).orElse(salaryItemPO.getRoundingMode())) .pattern(Optional.ofNullable(salarySobItemPO.getPattern()).orElse(salaryItemPO.getPattern())) @@ -178,7 +178,7 @@ public class SalarySobItemAggregateBO { .salarySobId(salarySob.getId()) .salaryItemId(salaryItem.getId()) .salaryItemGroupId(0L) - .dateType(salaryItem.getDataType()) + .dataType(salaryItem.getDataType()) .name(salaryItem.getName()) .formulaId(salarySobBackItem.getFormulaId()) .formulaContent(formulaMap.getOrDefault(salarySobBackItem.getFormulaId(), "输入")) diff --git a/src/com/engine/salary/entity/salarysob/dto/SalarySobItemDTO.java b/src/com/engine/salary/entity/salarysob/dto/SalarySobItemDTO.java index 9ab8affe9..81bbc138a 100644 --- a/src/com/engine/salary/entity/salarysob/dto/SalarySobItemDTO.java +++ b/src/com/engine/salary/entity/salarysob/dto/SalarySobItemDTO.java @@ -63,7 +63,7 @@ public class SalarySobItemDTO { //取值方式 @see SalaryValueTypeEnum private Integer valueType; - private String dateType; + private String dataType; //数据来源(展示名称) private String dataSource; From 07eb966c18dd7464bebfee9180512b4f42f11f9e Mon Sep 17 00:00:00 2001 From: sy Date: Fri, 4 Aug 2023 10:02:06 +0800 Subject: [PATCH 39/48] =?UTF-8?q?=E8=96=AA=E9=85=AC=E7=B3=BB=E7=BB=9F-?= =?UTF-8?q?=E9=9D=9E=E7=B3=BB=E7=BB=9F=E4=BA=BA=E5=91=98=E7=AE=A1=E7=90=86?= =?UTF-8?q?=EF=BC=8C=E9=9D=9E=E7=B3=BB=E7=BB=9F=E4=BA=BA=E5=91=98=E5=AF=BC?= =?UTF-8?q?=E5=85=A5=E9=80=BB=E8=BE=91=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/mapper/datacollection/EmployMapper.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/com/engine/salary/mapper/datacollection/EmployMapper.xml b/src/com/engine/salary/mapper/datacollection/EmployMapper.xml index de9bb91ab..6614a36bf 100644 --- a/src/com/engine/salary/mapper/datacollection/EmployMapper.xml +++ b/src/com/engine/salary/mapper/datacollection/EmployMapper.xml @@ -350,7 +350,7 @@ select d.departmentname as name, - d.id as id + d.id as id, d.subcompanyid1 as subcompanyid1 from hrmdepartment d where d.id = #{id} From d219d129a59208917697725b9b273d682887b15e Mon Sep 17 00:00:00 2001 From: sy Date: Fri, 4 Aug 2023 14:14:44 +0800 Subject: [PATCH 40/48] =?UTF-8?q?=E8=96=AA=E9=85=AC=E7=B3=BB=E7=BB=9F-?= =?UTF-8?q?=E7=A6=8F=E5=88=A9=E5=8F=B0=E8=B4=A6=EF=BC=8C=E5=8F=B0=E8=B4=A6?= =?UTF-8?q?=E6=98=8E=E7=BB=86=E5=AF=BC=E5=85=A5=E6=A8=A1=E6=9D=BF=E8=87=AA?= =?UTF-8?q?=E5=AE=9A=E4=B9=89=E5=AF=BC=E5=85=A5=E5=AD=97=E6=AE=B5=E5=88=97?= =?UTF-8?q?=E8=A1=A8=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/service/impl/SIAccountServiceImpl.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/com/engine/salary/service/impl/SIAccountServiceImpl.java b/src/com/engine/salary/service/impl/SIAccountServiceImpl.java index 15ced811c..c28d12ebb 100644 --- a/src/com/engine/salary/service/impl/SIAccountServiceImpl.java +++ b/src/com/engine/salary/service/impl/SIAccountServiceImpl.java @@ -37,6 +37,7 @@ import com.engine.salary.enums.UserStatusEnum; import com.engine.salary.enums.datacollection.UseEmployeeTypeEnum; import com.engine.salary.enums.siaccount.*; import com.engine.salary.enums.sicategory.DeleteTypeEnum; +import com.engine.salary.enums.sicategory.IsUseEnum; import com.engine.salary.enums.sicategory.WelfareTypeEnum; import com.engine.salary.exception.SalaryRunTimeException; import com.engine.salary.mapper.InsuranceExportMapper; @@ -1092,7 +1093,7 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { @Override public Map welfareColumns() { - List listAll = getICategoryMapper().listAll(); + List listAll = getICategoryMapper().listAll().stream().filter(f -> f.getIsUse().equals(IsUseEnum.START.getValue())).collect(Collectors.toList()); List list = new ArrayList<>(); if (CollectionUtils.isNotEmpty(listAll)) { list.addAll(listAll); From 6dd6eca3bf6bb7cf04b230ed7554b0926f5c6166 Mon Sep 17 00:00:00 2001 From: sy Date: Fri, 4 Aug 2023 15:07:41 +0800 Subject: [PATCH 41/48] =?UTF-8?q?=E8=96=AA=E9=85=AC=E7=B3=BB=E7=BB=9F-?= =?UTF-8?q?=E4=BA=BA=E5=91=98=E5=8C=B9=E9=85=8D=EF=BC=8C=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E5=85=A8=E9=87=8F=E4=BA=BA=E5=8A=9B=E8=A1=A8=E4=BA=BA=E5=91=98?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2sql?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/engine/salary/mapper/datacollection/EmployMapper.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/com/engine/salary/mapper/datacollection/EmployMapper.xml b/src/com/engine/salary/mapper/datacollection/EmployMapper.xml index 9965888f7..8b9ad0495 100644 --- a/src/com/engine/salary/mapper/datacollection/EmployMapper.xml +++ b/src/com/engine/salary/mapper/datacollection/EmployMapper.xml @@ -233,8 +233,10 @@ e.mobile as mobile, e.subcompanyid1 as subcompanyid, e.departmentid as departmentId, + d.DEPARTMENTNAME as departmentName, e.jobtitle as jobtitleId 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) From 2f6e221c9bbec78a47f3bb19f8348996dcebda40 Mon Sep 17 00:00:00 2001 From: sy Date: Fri, 4 Aug 2023 16:14:00 +0800 Subject: [PATCH 42/48] =?UTF-8?q?=E8=96=AA=E9=85=AC=E7=B3=BB=E7=BB=9F-?= =?UTF-8?q?=E9=9D=9E=E7=B3=BB=E7=BB=9F=E4=BA=BA=E5=91=98=E7=AE=A1=E7=90=86?= =?UTF-8?q?=EF=BC=8C=E9=9D=9E=E7=B3=BB=E7=BB=9F=E4=BA=BA=E5=91=98=E5=AF=BC?= =?UTF-8?q?=E5=85=A5=E6=96=B0=E5=A2=9E=E6=B7=BB=E5=8A=A0status=E5=80=BC?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/engine/salary/service/impl/ExtEmpServiceImpl.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/com/engine/salary/service/impl/ExtEmpServiceImpl.java b/src/com/engine/salary/service/impl/ExtEmpServiceImpl.java index 7134deef3..417367ca8 100644 --- a/src/com/engine/salary/service/impl/ExtEmpServiceImpl.java +++ b/src/com/engine/salary/service/impl/ExtEmpServiceImpl.java @@ -483,6 +483,7 @@ public class ExtEmpServiceImpl extends Service implements ExtEmpService { if (po == null) { //新建 resultPo.setId(IdGenerator.generate()); + resultPo.setStatus("2"); resultPo.setCreateTime(new Date()); resultPo.setUpdateTime(new Date()); resultPo.setDeleteType(0); From 14a944c60be0d4b223ab06719f1da9cfe3bb3816 Mon Sep 17 00:00:00 2001 From: sy Date: Fri, 4 Aug 2023 16:55:19 +0800 Subject: [PATCH 43/48] =?UTF-8?q?=E8=96=AA=E9=85=AC=E7=B3=BB=E7=BB=9F-?= =?UTF-8?q?=E9=9D=9E=E7=B3=BB=E7=BB=9F=E4=BA=BA=E5=91=98=E7=AE=A1=E7=90=86?= =?UTF-8?q?=EF=BC=8C=E9=9D=9E=E7=B3=BB=E7=BB=9F=E4=BA=BA=E5=91=98=E5=AF=BC?= =?UTF-8?q?=E5=85=A5=E6=97=B6=EF=BC=8C=E9=83=A8=E9=97=A8=E5=90=8D=E7=A7=B0?= =?UTF-8?q?=E4=B8=BAnull=E5=88=99=E7=BD=AE=E4=B8=BA=E7=A9=BA=E5=AD=97?= =?UTF-8?q?=E7=AC=A6=E4=B8=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/engine/salary/service/impl/ExtEmpServiceImpl.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/com/engine/salary/service/impl/ExtEmpServiceImpl.java b/src/com/engine/salary/service/impl/ExtEmpServiceImpl.java index 417367ca8..1b550bb71 100644 --- a/src/com/engine/salary/service/impl/ExtEmpServiceImpl.java +++ b/src/com/engine/salary/service/impl/ExtEmpServiceImpl.java @@ -533,6 +533,9 @@ public class ExtEmpServiceImpl extends Service implements ExtEmpService { resultPo.setSubcompanyName(subCompanyInfo.getName()); resultPo.setSubcompanyId(subCompanyInfo.getId()); } + if (resultPo.getDepartmentName() == null) { + resultPo.setDepartmentName(""); + } resultPo.setModifier((long) user.getUID()); return resultPo; } From 9d0194acd313d03443a9377d6c4a9a313f1f93f9 Mon Sep 17 00:00:00 2001 From: sy Date: Mon, 7 Aug 2023 16:46:17 +0800 Subject: [PATCH 44/48] =?UTF-8?q?=E8=96=AA=E9=85=AC=E7=B3=BB=E7=BB=9F-?= =?UTF-8?q?=E7=A6=8F=E5=88=A9=E5=8F=B0=E8=B4=A6=EF=BC=8C=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E7=A6=8F=E5=88=A9=E5=8F=B0=E8=B4=A6=E8=A1=A5=E7=BC=B4=E6=A8=A1?= =?UTF-8?q?=E6=9D=BF=E4=B8=AD=E8=B4=A6=E5=8D=95=E6=9C=88=E4=BB=BD=E5=92=8C?= =?UTF-8?q?=E8=A1=A5=E7=BC=B4=E6=9C=88=E4=BB=BD=E6=A0=A1=E9=AA=8C=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/SIAccountServiceImpl.java | 22 ++++++++++++------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/src/com/engine/salary/service/impl/SIAccountServiceImpl.java b/src/com/engine/salary/service/impl/SIAccountServiceImpl.java index c28d12ebb..ddf812e94 100644 --- a/src/com/engine/salary/service/impl/SIAccountServiceImpl.java +++ b/src/com/engine/salary/service/impl/SIAccountServiceImpl.java @@ -1544,12 +1544,18 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { excelComments.add(errorMessageMap); } - if (!checkBillMonth(billMonth)) { + if (billMonth.length() < 7 || !SalaryDateUtil.checkYearMonth(billMonth.substring(0, 7))) { isError = true; Map errorMessageMap = Maps.newHashMap(); errorMessageMap.put("message", row + SalaryI18nUtil.getI18nLabel(100579, "账单月份输入有误,请参照“2022-09”这种格式进行检查")); excelComments.add(errorMessageMap); } + if (headers.contains("补缴月份") && (supplementaryMonth.length() < 7 || !SalaryDateUtil.checkYearMonth(supplementaryMonth.substring(0, 7)))) { + isError = true; + Map errorMessageMap = Maps.newHashMap(); + errorMessageMap.put("message", row + SalaryI18nUtil.getI18nLabel(0, "补缴月份输入有误,请参照“2022-09”这种格式进行检查")); + excelComments.add(errorMessageMap); + } //遍历表头 for (int j = 0; j < headers.size(); j++) { @@ -1611,9 +1617,9 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { //根据员工id、个税扣缴义务人id、账单月份查询 //根据表头字段来区分正常缴纳和补缴两类数据 if (!headers.contains("补缴月份")) { - list = getInsuranceAccountDetailMapper().queryNormalList(billMonth, paymentOrganization, employeeIds.get(0)); + list = getInsuranceAccountDetailMapper().queryNormalList(billMonth.substring(0, 7), paymentOrganization, employeeIds.get(0)); } else { - list = getInsuranceAccountDetailMapper().querySupplementList(billMonth, paymentOrganization, employeeIds.get(0), supplementaryMonth); + list = getInsuranceAccountDetailMapper().querySupplementList(billMonth.substring(0, 7), paymentOrganization, employeeIds.get(0), supplementaryMonth.substring(0, 7)); } if (list.isEmpty()) { @@ -1973,7 +1979,7 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { } if (!StringUtils.isEmpty(baseMap.getOrDefault("账单月份", "").toString())) { - insuranceAccountDetailPO.setBillMonth(baseMap.get("账单月份").toString()); + insuranceAccountDetailPO.setBillMonth(baseMap.get("账单月份").toString().substring(0, 7)); } if (!StringUtils.isEmpty(baseMap.getOrDefault("社保合计", "").toString())) { @@ -2007,7 +2013,7 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { //如果导入的时补缴数据,还会包含补缴月份 if (!StringUtils.isEmpty(baseMap.getOrDefault("补缴月份", "").toString())) { - insuranceAccountDetailPO.setSupplementaryMonth(baseMap.get("补缴月份").toString()); + insuranceAccountDetailPO.setSupplementaryMonth(baseMap.get("补缴月份").toString().substring(0, 7)); } insuranceAccountDetailPO.setUpdateTime(new Date()); @@ -2996,7 +3002,7 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { excelComments.add(errorMessageMap); } - if (!checkBillMonth(billMonth)) { + if (billMonth.length() < 7 || !SalaryDateUtil.checkYearMonth(billMonth.substring(0, 7))) { isError = true; Map errorMessageMap = Maps.newHashMap(); errorMessageMap.put("message", row + SalaryI18nUtil.getI18nLabel(100579, "账单月份输入有误,请参照“2022-09”这种格式进行检查")); @@ -3071,7 +3077,7 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { list = getInsuranceAccountDetailMapper().queryBalanceList(InsuranceAccountDetailPO.builder() .employeeId(employeeId) .paymentOrganization(paymentOrganization) - .billMonth(billMonth) + .billMonth(billMonth.substring(0, 7)) .build()); if (list.isEmpty()) { @@ -3346,7 +3352,7 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { InsuranceAccountDetailPO insuranceAccountDetailPO = new InsuranceAccountDetailPO(); insuranceAccountDetailPO.setId(IdGenerator.generate()); insuranceAccountDetailPO.setEmployeeId(employeeId); - insuranceAccountDetailPO.setBillMonth(billMonth); + insuranceAccountDetailPO.setBillMonth(billMonth.substring(0, 7)); insuranceAccountDetailPO.setBillStatus(BillStatusEnum.NOT_ARCHIVED.getValue()); insuranceAccountDetailPO.setPaymentStatus(PaymentStatusEnum.BALANCE.getValue()); insuranceAccountDetailPO.setResourceFrom(ResourceFromEnum.IMPORT.getValue()); From c977109cb7f33a1bed9388a0af4706dddab755d4 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Tue, 8 Aug 2023 11:05:52 +0800 Subject: [PATCH 45/48] sql --- resource/sqlupgrade/DM/sql202308080403.sql | 12 ++++++++++++ resource/sqlupgrade/JC/sql202308080403.sql | 12 ++++++++++++ resource/sqlupgrade/Mysql/sql202308080403.sql | 4 ++++ resource/sqlupgrade/Oracle/sql202308080403.sql | 11 +++++++++++ resource/sqlupgrade/PG/sql202308080403.sql | 4 ++++ resource/sqlupgrade/SQLServer/sql202308080403.sql | 5 +++++ 6 files changed, 48 insertions(+) create mode 100644 resource/sqlupgrade/DM/sql202308080403.sql create mode 100644 resource/sqlupgrade/JC/sql202308080403.sql create mode 100644 resource/sqlupgrade/Mysql/sql202308080403.sql create mode 100644 resource/sqlupgrade/Oracle/sql202308080403.sql create mode 100644 resource/sqlupgrade/PG/sql202308080403.sql create mode 100644 resource/sqlupgrade/SQLServer/sql202308080403.sql diff --git a/resource/sqlupgrade/DM/sql202308080403.sql b/resource/sqlupgrade/DM/sql202308080403.sql new file mode 100644 index 000000000..df4bb57b5 --- /dev/null +++ b/resource/sqlupgrade/DM/sql202308080403.sql @@ -0,0 +1,12 @@ +alter table hrsa_salary_sob_item + add rounding_mode NUMBER null; +/ + +alter table hrsa_salary_sob_item + add pattern NUMBER null; +/ + +alter table hrsa_salary_sob_item + add value_type NUMBER null; +/ + diff --git a/resource/sqlupgrade/JC/sql202308080403.sql b/resource/sqlupgrade/JC/sql202308080403.sql new file mode 100644 index 000000000..df4bb57b5 --- /dev/null +++ b/resource/sqlupgrade/JC/sql202308080403.sql @@ -0,0 +1,12 @@ +alter table hrsa_salary_sob_item + add rounding_mode NUMBER null; +/ + +alter table hrsa_salary_sob_item + add pattern NUMBER null; +/ + +alter table hrsa_salary_sob_item + add value_type NUMBER null; +/ + diff --git a/resource/sqlupgrade/Mysql/sql202308080403.sql b/resource/sqlupgrade/Mysql/sql202308080403.sql new file mode 100644 index 000000000..841e22e7a --- /dev/null +++ b/resource/sqlupgrade/Mysql/sql202308080403.sql @@ -0,0 +1,4 @@ +ALTER TABLE hrsa_salary_sob_item +ADD COLUMN rounding_mode int NULL, +ADD COLUMN pattern int NULL, +ADD COLUMN value_type int NULL; diff --git a/resource/sqlupgrade/Oracle/sql202308080403.sql b/resource/sqlupgrade/Oracle/sql202308080403.sql new file mode 100644 index 000000000..c34571ba4 --- /dev/null +++ b/resource/sqlupgrade/Oracle/sql202308080403.sql @@ -0,0 +1,11 @@ +alter table hrsa_salary_sob_item + add rounding_mode NUMBER null +/ + +alter table hrsa_salary_sob_item + add pattern NUMBER null +/ + +alter table hrsa_salary_sob_item + add value_type NUMBER null +/ \ No newline at end of file diff --git a/resource/sqlupgrade/PG/sql202308080403.sql b/resource/sqlupgrade/PG/sql202308080403.sql new file mode 100644 index 000000000..752565503 --- /dev/null +++ b/resource/sqlupgrade/PG/sql202308080403.sql @@ -0,0 +1,4 @@ +ALTER TABLE hrsa_salary_sob_item +ADD COLUMN rounding_mode int NULL, +ADD COLUMN pattern int NULL, +ADD COLUMN value_type int NULL; \ No newline at end of file diff --git a/resource/sqlupgrade/SQLServer/sql202308080403.sql b/resource/sqlupgrade/SQLServer/sql202308080403.sql new file mode 100644 index 000000000..c8a9e79bf --- /dev/null +++ b/resource/sqlupgrade/SQLServer/sql202308080403.sql @@ -0,0 +1,5 @@ +ALTER TABLE hrsa_salary_sob_item +ADD rounding_mode int NULL, +pattern int NULL, +value_type int NULL +GO \ No newline at end of file From a85e887356688b3fe2f3749fcbf6dea5e6f5bd79 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Tue, 8 Aug 2023 11:42:24 +0800 Subject: [PATCH 46/48] sql --- resource/sqlupgrade/DM/sql202308080503.sql | 14 ++++++++++++++ resource/sqlupgrade/JC/sql202308080503.sql | 14 ++++++++++++++ resource/sqlupgrade/Mysql/sql202308080503.sql | 12 ++++++++++++ resource/sqlupgrade/Oracle/sql202308080503.sql | 13 +++++++++++++ resource/sqlupgrade/PG/sql202308080503.sql | 12 ++++++++++++ resource/sqlupgrade/SQLServer/sql202308080503.sql | 13 +++++++++++++ 6 files changed, 78 insertions(+) create mode 100644 resource/sqlupgrade/DM/sql202308080503.sql create mode 100644 resource/sqlupgrade/JC/sql202308080503.sql create mode 100644 resource/sqlupgrade/Mysql/sql202308080503.sql create mode 100644 resource/sqlupgrade/Oracle/sql202308080503.sql create mode 100644 resource/sqlupgrade/PG/sql202308080503.sql create mode 100644 resource/sqlupgrade/SQLServer/sql202308080503.sql diff --git a/resource/sqlupgrade/DM/sql202308080503.sql b/resource/sqlupgrade/DM/sql202308080503.sql new file mode 100644 index 000000000..771c36cba --- /dev/null +++ b/resource/sqlupgrade/DM/sql202308080503.sql @@ -0,0 +1,14 @@ +CREATE TABLE hrsa_salary_bill_item_name( + id NUMBER(38,0) PRIMARY KEY NOT NULL, + salary_template_id NUMBER(38,0) NOT NULL, + salary_item_id NUMBER(38,0) NOT NULL, + salary_item_show_name VARCHAR2(255) NOT NULL, + salary_bill_type NUMBER NOT NULL, + create_time DATE DEFAULT sysdate, + update_time DATE DEFAULT sysdate, + creator NUMBER(38,0) NOT NULL, + delete_type NUMBER NOT NULL, + tenant_key VARCHAR2(255) +); +/ + diff --git a/resource/sqlupgrade/JC/sql202308080503.sql b/resource/sqlupgrade/JC/sql202308080503.sql new file mode 100644 index 000000000..771c36cba --- /dev/null +++ b/resource/sqlupgrade/JC/sql202308080503.sql @@ -0,0 +1,14 @@ +CREATE TABLE hrsa_salary_bill_item_name( + id NUMBER(38,0) PRIMARY KEY NOT NULL, + salary_template_id NUMBER(38,0) NOT NULL, + salary_item_id NUMBER(38,0) NOT NULL, + salary_item_show_name VARCHAR2(255) NOT NULL, + salary_bill_type NUMBER NOT NULL, + create_time DATE DEFAULT sysdate, + update_time DATE DEFAULT sysdate, + creator NUMBER(38,0) NOT NULL, + delete_type NUMBER NOT NULL, + tenant_key VARCHAR2(255) +); +/ + diff --git a/resource/sqlupgrade/Mysql/sql202308080503.sql b/resource/sqlupgrade/Mysql/sql202308080503.sql new file mode 100644 index 000000000..8ea1db64c --- /dev/null +++ b/resource/sqlupgrade/Mysql/sql202308080503.sql @@ -0,0 +1,12 @@ +CREATE TABLE hrsa_salary_bill_item_name ( + id bigint PRIMARY KEY, + salary_template_id bigint NOT NULL, + salary_item_id bigint NOT NULL, + salary_item_show_name varchar(255)NOT NULL, + salary_bill_type int NOT NULL, + creator bigint NOT NULL, + create_time datetime NOT NULL , + update_time datetime NOT NULL, + delete_type int NOT NULL, + tenant_key varchar(10) NOT NULL +) ; diff --git a/resource/sqlupgrade/Oracle/sql202308080503.sql b/resource/sqlupgrade/Oracle/sql202308080503.sql new file mode 100644 index 000000000..6ac9927fd --- /dev/null +++ b/resource/sqlupgrade/Oracle/sql202308080503.sql @@ -0,0 +1,13 @@ +CREATE TABLE hrsa_salary_bill_item_name( + id NUMBER(38,0) PRIMARY KEY NOT NULL, + salary_template_id NUMBER(38,0) NOT NULL, + salary_item_id NUMBER(38,0) NOT NULL, + salary_item_show_name VARCHAR2(255) NOT NULL, + salary_bill_type NUMBER NOT NULL, + create_time DATE DEFAULT sysdate, + update_time DATE DEFAULT sysdate, + creator NUMBER(38,0) NOT NULL, + delete_type NUMBER NOT NULL, + tenant_key VARCHAR2(255) +) +/ \ No newline at end of file diff --git a/resource/sqlupgrade/PG/sql202308080503.sql b/resource/sqlupgrade/PG/sql202308080503.sql new file mode 100644 index 000000000..ded2d46b0 --- /dev/null +++ b/resource/sqlupgrade/PG/sql202308080503.sql @@ -0,0 +1,12 @@ +CREATE TABLE hrsa_salary_bill_item_name ( + id bigint PRIMARY KEY, + salary_template_id bigint NOT NULL, + salary_item_id bigint NOT NULL, + salary_item_show_name varchar(255)NOT NULL, + salary_bill_type int NOT NULL, + creator bigint NOT NULL, + create_time TIMESTAMP NOT NULL , + update_time TIMESTAMP NOT NULL, + delete_type int NOT NULL, + tenant_key varchar(10) NOT NULL +) ; \ No newline at end of file diff --git a/resource/sqlupgrade/SQLServer/sql202308080503.sql b/resource/sqlupgrade/SQLServer/sql202308080503.sql new file mode 100644 index 000000000..063d85a76 --- /dev/null +++ b/resource/sqlupgrade/SQLServer/sql202308080503.sql @@ -0,0 +1,13 @@ +CREATE TABLE hrsa_salary_bill_item_name ( + id bigint PRIMARY KEY, + salary_template_id bigint NOT NULL, + salary_item_id bigint NOT NULL, + salary_item_show_name varchar(255)NOT NULL, + salary_bill_type int NOT NULL, + creator bigint NOT NULL, + create_time datetime NOT NULL , + update_time datetime NOT NULL, + delete_type int NOT NULL, + tenant_key varchar(10) NOT NULL +) +GO \ No newline at end of file From 9f021b6d5e952a7e2d43aae45c03531e90822b12 Mon Sep 17 00:00:00 2001 From: sy Date: Tue, 8 Aug 2023 15:03:52 +0800 Subject: [PATCH 47/48] =?UTF-8?q?=E8=96=AA=E9=85=AC=E7=B3=BB=E7=BB=9F-?= =?UTF-8?q?=E7=A6=8F=E5=88=A9=E6=A1=A3=E6=A1=88=EF=BC=8C=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E9=9D=9E=E7=B3=BB=E7=BB=9F=E4=BA=BA=E5=91=98=E5=A2=9E=E9=87=8F?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E9=80=A0=E6=88=90=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/engine/salary/biz/SIArchivesBiz.java | 14 +- .../bo/InsuranceArchivesBaseInfoBO.java | 1 + .../param/InsuranceArchivesListParam.java | 5 + .../po/InsuranceArchivesBaseInfoPO.java | 8 + .../siarchives/InsuranceBaseInfoMapper.xml | 17 +- .../mapper/siarchives/SocialSchemeMapper.java | 2 + .../mapper/siarchives/SocialSchemeMapper.xml | 258 ++++++++++++++++++ .../service/impl/SIImportServiceImpl.java | 11 +- .../salary/web/SIArchivesController.java | 16 ++ .../engine/salary/web/SISchemeController.java | 7 +- 10 files changed, 327 insertions(+), 12 deletions(-) diff --git a/src/com/engine/salary/biz/SIArchivesBiz.java b/src/com/engine/salary/biz/SIArchivesBiz.java index 1e9f2c756..d90fced89 100644 --- a/src/com/engine/salary/biz/SIArchivesBiz.java +++ b/src/com/engine/salary/biz/SIArchivesBiz.java @@ -1080,6 +1080,8 @@ public class SIArchivesBiz { request.setTaxAgentId(param.getTaxAgentId()); + request.setExtWelArchiveList(param.isExtWelArchiveList()); + apidatas = listPageEmployeePOS(request, operateId); return apidatas; @@ -1115,7 +1117,11 @@ public class SIArchivesBiz { Collection taxAgentIds = param.getTaxAgentIds(); log.info("从数据库获取档案列表数据开始"); sw.start("获取福利档案列表数据"); - page = socialSchemeMapper.queryEmployeeList(param); + if (param.isExtWelArchiveList()) { + page = socialSchemeMapper.queryExtEmployeeList(param); + } else { + page = socialSchemeMapper.queryEmployeeList(param); + } sw.stop(); log.info("从数据库获取档案列表数据完成!"); page = page.stream().filter(f -> @@ -1131,7 +1137,11 @@ public class SIArchivesBiz { } else { log.info("从数据库获取档案列表数据开始"); sw.start("获取档案列表数据"); - page = socialSchemeMapper.queryEmployeeList(param); + if (param.isExtWelArchiveList()) { + page = socialSchemeMapper.queryExtEmployeeList(param); + } else { + page = socialSchemeMapper.queryEmployeeList(param); + } sw.stop(); log.info("从数据库获取档案列表数据完成!"); pageInfo = SalaryPageUtil.buildPage(param.getCurrent(), param.getPageSize(), diff --git a/src/com/engine/salary/entity/siarchives/bo/InsuranceArchivesBaseInfoBO.java b/src/com/engine/salary/entity/siarchives/bo/InsuranceArchivesBaseInfoBO.java index f5cd11ee4..8c22ae58f 100644 --- a/src/com/engine/salary/entity/siarchives/bo/InsuranceArchivesBaseInfoBO.java +++ b/src/com/engine/salary/entity/siarchives/bo/InsuranceArchivesBaseInfoBO.java @@ -81,6 +81,7 @@ public class InsuranceArchivesBaseInfoBO { .creator(currentEmployeeId) .deleteType(NumberUtils.INTEGER_ZERO) .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) + .employeeType(change.getEmployeeType()) .build()); } // 如果是删除 说明:如果有档案并且是在缴纳中才处理,没档案不用管 diff --git a/src/com/engine/salary/entity/siarchives/param/InsuranceArchivesListParam.java b/src/com/engine/salary/entity/siarchives/param/InsuranceArchivesListParam.java index 276fd82b3..ab15e4b6a 100644 --- a/src/com/engine/salary/entity/siarchives/param/InsuranceArchivesListParam.java +++ b/src/com/engine/salary/entity/siarchives/param/InsuranceArchivesListParam.java @@ -115,4 +115,9 @@ public class InsuranceArchivesListParam extends BaseQueryParam { * 人事状态 */ private List personnelStatuses; + + /** + * 是否是外部系统档案 + */ + private boolean extWelArchiveList; } diff --git a/src/com/engine/salary/entity/siarchives/po/InsuranceArchivesBaseInfoPO.java b/src/com/engine/salary/entity/siarchives/po/InsuranceArchivesBaseInfoPO.java index 7e1b8e406..f05cc309d 100644 --- a/src/com/engine/salary/entity/siarchives/po/InsuranceArchivesBaseInfoPO.java +++ b/src/com/engine/salary/entity/siarchives/po/InsuranceArchivesBaseInfoPO.java @@ -1,5 +1,6 @@ package com.engine.salary.entity.siarchives.po; +import com.engine.salary.enums.datacollection.DataCollectionEmployeeTypeEnum; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -79,6 +80,13 @@ public class InsuranceArchivesBaseInfoPO { */ private String runStatus; + /** + * 人员类型,0或null组织架构,1非系统人员 + * + * @see DataCollectionEmployeeTypeEnum + */ + private Integer employeeType; + //---------条件------- private Collection ids; private Collection employeeIds; diff --git a/src/com/engine/salary/mapper/siarchives/InsuranceBaseInfoMapper.xml b/src/com/engine/salary/mapper/siarchives/InsuranceBaseInfoMapper.xml index 252c1dd70..6caa9ac34 100644 --- a/src/com/engine/salary/mapper/siarchives/InsuranceBaseInfoMapper.xml +++ b/src/com/engine/salary/mapper/siarchives/InsuranceBaseInfoMapper.xml @@ -15,6 +15,7 @@ + @@ -31,6 +32,7 @@ , t.creator , t.delete_type , t.tenant_key + , t.employee_type @@ -100,7 +102,7 @@ INSERT INTO hrsa_insurance_base_info - (id,employee_id,payment_organization,social_archives_id,fund_archives_id,other_archives_id,tenant_key,creator,delete_type,create_time,update_time,run_status) + (id,employee_id,payment_organization,social_archives_id,fund_archives_id,other_archives_id,tenant_key,creator,delete_type,create_time,update_time,run_status, employee_type) VALUES ( @@ -115,13 +117,14 @@ #{item.deleteType}, #{item.createTime}, #{item.updateTime}, - #{item.runStatus} + #{item.runStatus}, + #{item.employeeType} ) INSERT INTO hrsa_insurance_base_info - (id,employee_id,payment_organization,social_archives_id,fund_archives_id,other_archives_id,tenant_key,creator,delete_type,create_time,update_time,run_status) + (id,employee_id,payment_organization,social_archives_id,fund_archives_id,other_archives_id,tenant_key,creator,delete_type,create_time,update_time,run_status, employee_type) select #{item.id,jdbcType=DOUBLE}, @@ -135,14 +138,15 @@ #{item.deleteType}, #{item.createTime}, #{item.updateTime}, - #{item.runStatus,jdbcType=VARCHAR} + #{item.runStatus,jdbcType=VARCHAR}, + #{item.employeeType} from dual INSERT INTO hrsa_insurance_base_info - (id,employee_id,payment_organization,social_archives_id,fund_archives_id,other_archives_id,tenant_key,creator,delete_type,create_time,update_time,run_status) + (id,employee_id,payment_organization,social_archives_id,fund_archives_id,other_archives_id,tenant_key,creator,delete_type,create_time,update_time,run_status, employee_type) VALUES ( #{item.id}, @@ -156,7 +160,8 @@ #{item.deleteType}, #{item.createTime}, #{item.updateTime}, - #{item.runStatus} + #{item.runStatus}, + #{item.employeeType} ) diff --git a/src/com/engine/salary/mapper/siarchives/SocialSchemeMapper.java b/src/com/engine/salary/mapper/siarchives/SocialSchemeMapper.java index 0c730ed15..b2857ba99 100644 --- a/src/com/engine/salary/mapper/siarchives/SocialSchemeMapper.java +++ b/src/com/engine/salary/mapper/siarchives/SocialSchemeMapper.java @@ -77,6 +77,8 @@ public interface SocialSchemeMapper { List queryEmployeeList(@Param("param") InsuranceArchivesListParam param); + List queryExtEmployeeList(@Param("param") InsuranceArchivesListParam param); + /** * 根据社保缴纳组织id获取 * @param paymentOrganization diff --git a/src/com/engine/salary/mapper/siarchives/SocialSchemeMapper.xml b/src/com/engine/salary/mapper/siarchives/SocialSchemeMapper.xml index ebd5af0c3..4d61d248d 100644 --- a/src/com/engine/salary/mapper/siarchives/SocialSchemeMapper.xml +++ b/src/com/engine/salary/mapper/siarchives/SocialSchemeMapper.xml @@ -369,12 +369,41 @@ WHERE 1=1 AND base.delete_type = 0 + AND base.employee_type is null ORDER BY ${param.orderRule.orderRule} ${param.orderRule.ascOrDesc} + @@ -623,6 +652,235 @@ + + + AND + ( + e.username like CONCAT('%',#{param.keyword},'%') + ) + + + AND e.username like CONCAT('%',#{param.userName},'%') + + + AND e.workcode like CONCAT('%',#{param.jobNum},'%') + + + AND e.department_id IN + + #{departmentId} + + + + AND e.subcompany_id IN + + #{subcompanyId} + + + + AND e.status IN + + #{userStatus} + + + + AND e.jobtitle_id IN + + #{position} + + + + AND e.companystartdate > #{param.hiredateStart} + + + AND e.companystartdate < #{param.hiredateEnd} + + + AND siSchemeId = #{param.siSchemeId} + + + AND fundSchemeId = #{param.fundSchemeId} + + + AND otherSchemeId = #{param.otherSchemeId} + + + AND base.payment_organization = #{param.taxAgentId} + + + AND base.run_status IN + + #{runStatus} + + + + + AND e.id IN + + #{item} + + + + + AND base.id IN + + #{item} + + + + + + + AND + ( + e.username like '%'+#{param.keyword}+'%' + ) + + + AND e.username like '%'+#{param.userName}+'%' + + + AND e.workcode like '%'+#{param.jobNum}+'%' + + + AND e.department_id IN + + #{departmentId} + + + + AND e.subcompany_id IN + + #{subcompanyId} + + + + AND e.status IN + + #{userStatus} + + + + AND e.jobtitle_id IN + + #{position} + + + + AND e.companystartdate > #{param.hiredateStart} + + + AND e.companystartdate < #{param.hiredateEnd} + + + + AND siSchemeId = #{param.siSchemeId} + + + AND fundSchemeId = #{param.fundSchemeId} + + + AND otherSchemeId = #{param.otherSchemeId} + + + AND base.payment_organization = #{param.taxAgentId} + + + AND base.run_status IN + + #{runStatus} + + + + AND e.id IN + + #{item} + + + + AND base.id IN + + #{item} + + + + + + + + AND + ( + e.username like '%'||#{param.keyword}||'%' + ) + + + AND e.username like '%'||#{param.userName}||'%' + + + AND e.workcode like '%'||#{param.jobNum}||'%' + + + AND e.department_id IN + + #{departmentId} + + + + AND e.subcompany_id IN + + #{subcompanyId} + + + + AND e.status IN + + #{userStatus} + + + + AND e.jobtitle_id IN + + #{position} + + + + AND e.companystartdate > #{param.hiredateStart} + + + AND e.companystartdate < #{param.hiredateEnd} + + + AND siSchemeId = #{param.siSchemeId} + + + AND fundSchemeId = #{param.fundSchemeId} + + + AND otherSchemeId = #{param.otherSchemeId} + + + AND base.payment_organization = #{param.taxAgentId} + + + AND base.run_status IN + + #{runStatus} + + + + AND e.id IN + + #{item} + + + + AND base.id IN + + #{item} + + + +