From 207d338ec2c7c41f7c353f9066a648fb5132066a Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Fri, 7 Apr 2023 15:14:07 +0800 Subject: [PATCH] =?UTF-8?q?=E8=96=AA=E8=B5=84=E8=B4=A6=E5=A5=97=E9=87=8D?= =?UTF-8?q?=E5=A4=8D=E8=96=AA=E8=B5=84=E9=A1=B9=E7=9B=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../engine/salary/biz/SalarySobItemBiz.java | 14 +++++ .../mapper/salarysob/SalarySobItemMapper.java | 6 +- .../mapper/salarysob/SalarySobItemMapper.xml | 57 +++++++++++++++++++ .../impl/SalarySobItemServiceImpl.java | 42 +++++++++++--- .../service/impl/SalarySobServiceImpl.java | 3 +- 5 files changed, 113 insertions(+), 9 deletions(-) diff --git a/src/com/engine/salary/biz/SalarySobItemBiz.java b/src/com/engine/salary/biz/SalarySobItemBiz.java index afecfeeb2..f5537d7d5 100644 --- a/src/com/engine/salary/biz/SalarySobItemBiz.java +++ b/src/com/engine/salary/biz/SalarySobItemBiz.java @@ -140,4 +140,18 @@ public class SalarySobItemBiz { } + public void batchInsertItemShow(List list) { + if (CollectionUtils.isEmpty(list)) { + return; + } + SqlSession sqlSession = MyBatisFactory.sqlSessionFactory.openSession(); + try { + SalarySobItemMapper mapper = sqlSession.getMapper(SalarySobItemMapper.class); + List> partition = Lists.partition( list, 100); + partition.forEach(mapper::batchInsertItemShow); + sqlSession.commit(); + } finally { + sqlSession.close(); + } + } } diff --git a/src/com/engine/salary/mapper/salarysob/SalarySobItemMapper.java b/src/com/engine/salary/mapper/salarysob/SalarySobItemMapper.java index 7fcfc7ee7..0900cfa60 100644 --- a/src/com/engine/salary/mapper/salarysob/SalarySobItemMapper.java +++ b/src/com/engine/salary/mapper/salarysob/SalarySobItemMapper.java @@ -112,5 +112,9 @@ public interface SalarySobItemMapper { void deleteByGroupIds(@Param("groupIds") List needDeleteGroupIds); - + /** + * 批量插入薪资项目分组是否显示 + * @param list + */ + void batchInsertItemShow(@Param("collection")List list); } \ No newline at end of file diff --git a/src/com/engine/salary/mapper/salarysob/SalarySobItemMapper.xml b/src/com/engine/salary/mapper/salarysob/SalarySobItemMapper.xml index 671e52a16..cf3d2173e 100644 --- a/src/com/engine/salary/mapper/salarysob/SalarySobItemMapper.xml +++ b/src/com/engine/salary/mapper/salarysob/SalarySobItemMapper.xml @@ -434,6 +434,63 @@ #{tenantKey},#{createTime},#{updateTime},0) + + insert into hrsa_salary_item_hide (id,salary_sob_id,salary_item_id,is_group,item_hide, + creator,tenant_key,create_time,update_time,delete_type) + VALUES + + ( + #{item.id}, + #{item.salarySobId}, + #{item.salaryItemId}, + #{item.isGroup}, + #{item.itemHide}, + #{item.creator}, + #{item.tenantKey}, + #{item.createTime}, + #{item.updateTime}, + 0 + ) + + + + insert into hrsa_salary_item_hide (id,salary_sob_id,salary_item_id,is_group,item_hide, + creator,tenant_key,create_time,update_time,delete_type) + + select + #{item.id,jdbcType=DOUBLE}, + #{item.salarySobId,jdbcType=DOUBLE}, + #{item.salaryItemId,jdbcType=DOUBLE}, + #{item.isGroup,jdbcType=INTEGER}, + #{item.itemHide,jdbcType=INTEGER}, + #{item.creator,jdbcType=DOUBLE}, + #{item.tenantKey,jdbcType=VARCHAR}, + #{item.createTime,jdbcType=DATE}, + #{item.updateTime,jdbcType=DATE}, + 0 + from dual + + + + + insert into hrsa_salary_item_hide (id,salary_sob_id,salary_item_id,is_group,item_hide, + creator,tenant_key,create_time,update_time,delete_type) + VALUES + ( + #{item.id}, + #{item.salarySobId}, + #{item.salaryItemId}, + #{item.isGroup}, + #{item.itemHide}, + #{item.creator}, + #{item.tenantKey}, + #{item.createTime}, + #{item.updateTime}, + 0 + ) + + + UPDATE hrsa_salary_sob_item diff --git a/src/com/engine/salary/service/impl/SalarySobItemServiceImpl.java b/src/com/engine/salary/service/impl/SalarySobItemServiceImpl.java index c845addf4..e370e40e3 100644 --- a/src/com/engine/salary/service/impl/SalarySobItemServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalarySobItemServiceImpl.java @@ -153,6 +153,8 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe List salarySobItemGroupPOS = getSalarySobItemGroupService(user).listBySalarySobIdWithItemHide(salarySobId); // 查询薪资账套的薪资项目副本 List salarySobItemPOS = listBySalarySobIdWithHideItem(salarySobId); + // 薪资项目副本去重 + salarySobItemPOS = salarySobItemPOS.stream().filter(SalaryEntityUtil.distinctByKey(PO -> PO.getSalarySobId() + "-" + PO.getSalaryItemId())).collect(Collectors.toList()); // 回算薪资项目 List salarySobBackItems = getSalarySobBackItemService(user).listBySalarySobId(salarySobId); // 薪资账套的薪资项目副本所用的公式id @@ -346,6 +348,9 @@ 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 needInsertItemShow = new ArrayList<>(); + //先保存项目分类获,取分类id Collection salarySobItems = new ArrayList<>(); for (SalarySobItemSaveParam.SalarySobItemGroupParam itemGroupParam : needAddGroup) { @@ -383,7 +388,8 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe if (itemGroupParam.getItemHide() == null) { salarySobGroupItemHidePO.setItemHide(Long.valueOf(0)); } - salarySobItemMapper.InsertItemShow(salarySobGroupItemHidePO); + needInsertItemShow.add(salarySobGroupItemHidePO); +// salarySobItemMapper.InsertItemShow(salarySobGroupItemHidePO); for (SalarySobItemSaveParam.SalarySobItemParam itemParam : itemGroupParam.getItems()) { @@ -417,7 +423,8 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe .deleteType(NumberUtils.INTEGER_ZERO) .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) .build(); - salarySobItemMapper.InsertItemShow(salarySobItemHidePO); +// salarySobItemMapper.InsertItemShow(salarySobItemHidePO); + needInsertItemShow.add(salarySobItemHidePO); } } @@ -451,7 +458,8 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe if (itemGroupParam.getItemHide() == null) { salarySobGroupItemHidePO.setItemHide(Long.valueOf(0)); } - salarySobItemMapper.InsertItemShow(salarySobGroupItemHidePO); +// salarySobItemMapper.InsertItemShow(salarySobGroupItemHidePO); + needInsertItemShow.add(salarySobGroupItemHidePO); List items = itemGroupParam.getItems(); @@ -494,7 +502,8 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe .deleteType(NumberUtils.INTEGER_ZERO) .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) .build(); - salarySobItemMapper.InsertItemShow(salarySobItemHidePO); +// salarySobItemMapper.InsertItemShow(salarySobItemHidePO); + needInsertItemShow.add(salarySobItemHidePO); } //更新 for (SalarySobItemSaveParam.SalarySobItemParam itemParam : needUpdateItems) { @@ -523,7 +532,8 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe .deleteType(NumberUtils.INTEGER_ZERO) .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) .build(); - salarySobItemMapper.InsertItemShow(salarySobItemHidePO); +// salarySobItemMapper.InsertItemShow(salarySobItemHidePO); + needInsertItemShow.add(salarySobItemHidePO); } @@ -578,7 +588,8 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe .deleteType(NumberUtils.INTEGER_ZERO) .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) .build(); - salarySobItemMapper.InsertItemShow(salarySobItemHidePO); +// salarySobItemMapper.InsertItemShow(salarySobItemHidePO); + needInsertItemShow.add(salarySobItemHidePO); } for (SalarySobItemSaveParam.SalarySobItemParam itemParam : needUpdateItems) { @@ -606,7 +617,8 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe .deleteType(NumberUtils.INTEGER_ZERO) .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) .build(); - salarySobItemMapper.InsertItemShow(salarySobItemHidePO); +// salarySobItemMapper.InsertItemShow(salarySobItemHidePO); + needInsertItemShow.add(salarySobItemHidePO); } if (CollectionUtils.isNotEmpty(needDeleteItemIds)) { @@ -615,8 +627,13 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe // 保存薪资账套的薪资项目副本 batchSave(salarySobItems); + + // 保存薪资账套的薪资项目隐藏信息 + batchSaveShow(needInsertItemShow); } + + private void handleEmpField(SalarySobItemSaveParam saveParam) { long employeeId = (long) user.getUID(); Date now = new Date(); @@ -670,6 +687,17 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe salarySobItemMapper.batchInsert(list); } + private void batchSaveShow(List needInsertItemShow) { + if (CollectionUtils.isEmpty(needInsertItemShow)) { + return; + } + //前端可能传重复数据,去重 + List list = new ArrayList<>(needInsertItemShow.stream() + .collect(Collectors.toMap(SalarySobItemHidePO::getSalaryItemId, Function.identity(), (oldValue, newValue) -> oldValue)) + .values()); + salarySobItemMapper.batchInsertItemShow(list); + } + @Override public void deleteBySalarySobIds(Collection salarySobIds) { salarySobItemMapper.deleteBySalarySobIds(salarySobIds); diff --git a/src/com/engine/salary/service/impl/SalarySobServiceImpl.java b/src/com/engine/salary/service/impl/SalarySobServiceImpl.java index a34e2b74b..189a819c0 100644 --- a/src/com/engine/salary/service/impl/SalarySobServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalarySobServiceImpl.java @@ -23,7 +23,6 @@ import com.engine.salary.enums.SalarySystemTypeEnum; import com.engine.salary.enums.salarysob.IncomeCategoryEnum; import com.engine.salary.enums.salarysob.SalaryEmployeeStatusEnum; import com.engine.salary.exception.SalaryRunTimeException; -import com.engine.salary.mapper.salarysob.SalarySobDefaultItemMapper; import com.engine.salary.mapper.salarysob.SalarySobMapper; import com.engine.salary.service.*; import com.engine.salary.util.SalaryEntityUtil; @@ -603,6 +602,8 @@ public class SalarySobServiceImpl extends Service implements SalarySobService { List salarySobEmpFieldPOS = salarySobEmpFieldService.listSome(SalarySobEmpFieldPO.builder().salarySobId(duplicateParam.getId()).build()); // 查询薪资账套的薪资项目副本 List salarySobItemPOS = salarySobItemService.listBySalarySobIdWithHideItem(SalarySobItemPO.builder().salarySobId(duplicateParam.getId()).build()); + // 薪资项目副本去重 + salarySobItemPOS = salarySobItemPOS.stream().filter(SalaryEntityUtil.distinctByKey(PO -> PO.getSalarySobId() + "-" + PO.getSalaryItemId())).collect(Collectors.toList()); // 查询薪资账套的薪资项目分类 List salarySobItemGroupPOS = salarySobItemGroupService.listSomeWithItemHide(SalarySobItemGroupPO.builder().salarySobId(duplicateParam.getId()).build()); // 查询薪资账套的调薪计薪规则