diff --git a/src/com/engine/salary/biz/SalarySobEmpFieldBiz.java b/src/com/engine/salary/biz/SalarySobEmpFieldBiz.java index 5762aef4c..2bcdee446 100644 --- a/src/com/engine/salary/biz/SalarySobEmpFieldBiz.java +++ b/src/com/engine/salary/biz/SalarySobEmpFieldBiz.java @@ -28,7 +28,7 @@ public class SalarySobEmpFieldBiz { } public void batchInsert(Collection salarySobEmpFieldPOS) { - if(CollectionUtils.isEmpty(salarySobEmpFieldPOS)){ + if (CollectionUtils.isEmpty(salarySobEmpFieldPOS)) { return; } SqlSession sqlSession = MyBatisFactory.sqlSessionFactory.openSession(); @@ -54,7 +54,6 @@ public class SalarySobEmpFieldBiz { } - //---------------------------系统默认员工信息字段----------------------------------- public List listDefaultEmpField() { @@ -68,4 +67,19 @@ public class SalarySobEmpFieldBiz { } + public void deleteByIds(Collection ids) { + + if (CollectionUtils.isEmpty(ids)) { + return; + } + + SqlSession sqlSession = MyBatisFactory.sqlSessionFactory.openSession(); + try { + SalarySobDefaultEmpFieldMapper mapper = sqlSession.getMapper(SalarySobDefaultEmpFieldMapper.class); + mapper.deleteByIds(ids); + sqlSession.commit(); + } finally { + sqlSession.close(); + } + } } diff --git a/src/com/engine/salary/biz/SalarySobItemBiz.java b/src/com/engine/salary/biz/SalarySobItemBiz.java index a6c56da77..afecfeeb2 100644 --- a/src/com/engine/salary/biz/SalarySobItemBiz.java +++ b/src/com/engine/salary/biz/SalarySobItemBiz.java @@ -45,7 +45,7 @@ public class SalarySobItemBiz { public void batchInsert(Collection salarySobItemPOS) { - if(CollectionUtils.isEmpty(salarySobItemPOS)){ + if (CollectionUtils.isEmpty(salarySobItemPOS)) { return; } SqlSession sqlSession = MyBatisFactory.sqlSessionFactory.openSession(); @@ -83,7 +83,7 @@ public class SalarySobItemBiz { } public void InsertItemShow(SalarySobItemHidePO salarySobItemHidePO) { - if(salarySobItemHidePO == null){ + if (salarySobItemHidePO == null) { return; } SqlSession sqlSession = MyBatisFactory.sqlSessionFactory.openSession(); @@ -100,11 +100,44 @@ public class SalarySobItemBiz { SqlSession sqlSession = MyBatisFactory.sqlSessionFactory.openSession(); try { SalarySobItemMapper mapper = sqlSession.getMapper(SalarySobItemMapper.class); - return mapper.listBySalarySobIdAndGroupId(salarySobId,salarySobItemGroupIds); + return mapper.listBySalarySobIdAndGroupId(salarySobId, salarySobItemGroupIds); } finally { sqlSession.close(); } } + public void deleteByIds(List ids) { + + if (CollectionUtils.isEmpty(ids)) { + return; + } + + SqlSession sqlSession = MyBatisFactory.sqlSessionFactory.openSession(); + try { + SalarySobItemMapper mapper = sqlSession.getMapper(SalarySobItemMapper.class); + mapper.deleteByIds(ids); + sqlSession.commit(); + } finally { + sqlSession.close(); + } + } + + public void deleteByGroupIds(List needDeleteGroupIds) { + if (CollectionUtils.isEmpty(needDeleteGroupIds)) { + return; + } + + SqlSession sqlSession = MyBatisFactory.sqlSessionFactory.openSession(); + try { + SalarySobItemMapper mapper = sqlSession.getMapper(SalarySobItemMapper.class); + mapper.deleteByGroupIds(needDeleteGroupIds); + sqlSession.commit(); + } finally { + sqlSession.close(); + } + + } + + } diff --git a/src/com/engine/salary/biz/SalarySobItemGroupBiz.java b/src/com/engine/salary/biz/SalarySobItemGroupBiz.java index c54097ae2..9f4f6af68 100644 --- a/src/com/engine/salary/biz/SalarySobItemGroupBiz.java +++ b/src/com/engine/salary/biz/SalarySobItemGroupBiz.java @@ -2,6 +2,7 @@ package com.engine.salary.biz; import com.engine.salary.entity.salarysob.po.SalarySobItemGroupPO; import com.engine.salary.mapper.salarysob.SalarySobItemGroupMapper; +import org.apache.commons.collections.CollectionUtils; import org.apache.ibatis.session.SqlSession; import weaver.conn.mybatis.MyBatisFactory; @@ -72,4 +73,31 @@ public class SalarySobItemGroupBiz { sqlSession.close(); } } + + public void deleteByIds(List ids) { + + if (CollectionUtils.isEmpty(ids)) { + return; + } + + SqlSession sqlSession = MyBatisFactory.sqlSessionFactory.openSession(); + try { + SalarySobItemGroupMapper mapper = sqlSession.getMapper(SalarySobItemGroupMapper.class); + mapper.deleteByIds(ids); + sqlSession.commit(); + } finally { + sqlSession.close(); + } + } + + public void update(SalarySobItemGroupPO po) { + SqlSession sqlSession = MyBatisFactory.sqlSessionFactory.openSession(); + try { + SalarySobItemGroupMapper mapper = sqlSession.getMapper(SalarySobItemGroupMapper.class); + mapper.updateIgnoreNull(po); + sqlSession.commit(); + } finally { + sqlSession.close(); + } + } } diff --git a/src/com/engine/salary/biz/SalarySobItemHideBiz.java b/src/com/engine/salary/biz/SalarySobItemHideBiz.java index e694bc5c7..af3cb0142 100644 --- a/src/com/engine/salary/biz/SalarySobItemHideBiz.java +++ b/src/com/engine/salary/biz/SalarySobItemHideBiz.java @@ -30,4 +30,27 @@ public class SalarySobItemHideBiz { sqlSession.close(); } } + + public void update(SalarySobItemHidePO salarySobGroupItemHidePO) { + SqlSession sqlSession = MyBatisFactory.sqlSessionFactory.openSession(); + try { + SalarySobItemHideMapper mapper = sqlSession.getMapper(SalarySobItemHideMapper.class); + mapper.update(salarySobGroupItemHidePO); + sqlSession.commit(); + } finally { + sqlSession.close(); + } + + } + + public void updateByItemId(SalarySobItemHidePO salarySobGroupItemHidePO) { + SqlSession sqlSession = MyBatisFactory.sqlSessionFactory.openSession(); + try { + SalarySobItemHideMapper mapper = sqlSession.getMapper(SalarySobItemHideMapper.class); + mapper.updateByItemId(salarySobGroupItemHidePO); + sqlSession.commit(); + } finally { + sqlSession.close(); + } + } } diff --git a/src/com/engine/salary/mapper/salarysob/SalarySobDefaultEmpFieldMapper.java b/src/com/engine/salary/mapper/salarysob/SalarySobDefaultEmpFieldMapper.java index 402e2f666..5a517d5a3 100644 --- a/src/com/engine/salary/mapper/salarysob/SalarySobDefaultEmpFieldMapper.java +++ b/src/com/engine/salary/mapper/salarysob/SalarySobDefaultEmpFieldMapper.java @@ -1,7 +1,9 @@ package com.engine.salary.mapper.salarysob; import com.engine.salary.entity.salarysob.po.SalarySobDefaultEmpFieldPO; +import org.apache.ibatis.annotations.Param; +import java.util.Collection; import java.util.List; public interface SalarySobDefaultEmpFieldMapper { @@ -60,5 +62,6 @@ public interface SalarySobDefaultEmpFieldMapper { * @return 返回影响行数 */ int delete(SalarySobDefaultEmpFieldPO sobDefaultEmpField); - + + void deleteByIds(@Param("ids") Collection ids); } \ No newline at end of file diff --git a/src/com/engine/salary/mapper/salarysob/SalarySobDefaultEmpFieldMapper.xml b/src/com/engine/salary/mapper/salarysob/SalarySobDefaultEmpFieldMapper.xml index baefe0d64..aa08c7658 100644 --- a/src/com/engine/salary/mapper/salarysob/SalarySobDefaultEmpFieldMapper.xml +++ b/src/com/engine/salary/mapper/salarysob/SalarySobDefaultEmpFieldMapper.xml @@ -280,5 +280,15 @@ AND delete_type = 0 + + UPDATE hrsa_sob_default_emp_field + SET delete_type = 1 + WHERE delete_type = 0 + AND id IN + + #{id} + + + \ No newline at end of file diff --git a/src/com/engine/salary/mapper/salarysob/SalarySobItemHideMapper.java b/src/com/engine/salary/mapper/salarysob/SalarySobItemHideMapper.java index 2a8dff6e7..033fd38f1 100644 --- a/src/com/engine/salary/mapper/salarysob/SalarySobItemHideMapper.java +++ b/src/com/engine/salary/mapper/salarysob/SalarySobItemHideMapper.java @@ -22,4 +22,10 @@ public interface SalarySobItemHideMapper { * @date 2022/9/22 9:14 */ void deleteBySalarySobIds(@Param("ids") Collection ids); + + void update(SalarySobItemHidePO salarySobPO); + + + void updateByItemId(SalarySobItemHidePO salarySobGroupItemHidePO); + } diff --git a/src/com/engine/salary/mapper/salarysob/SalarySobItemHideMapper.xml b/src/com/engine/salary/mapper/salarysob/SalarySobItemHideMapper.xml index a4d34e841..f49701ba7 100644 --- a/src/com/engine/salary/mapper/salarysob/SalarySobItemHideMapper.xml +++ b/src/com/engine/salary/mapper/salarysob/SalarySobItemHideMapper.xml @@ -23,6 +23,24 @@ + + + UPDATE hrsa_salary_item_hide + + item_hide=#{itemHide}, + update_time=#{updateTime} + + WHERE id = #{id} AND delete_type = 0 + + + + UPDATE hrsa_salary_item_hide + + item_hide=#{itemHide}, + update_time=#{updateTime} + + WHERE salary_sob_id = #{salarySobId} AND salary_item_id= #{salaryItemId} AND delete_type = 0 + \ No newline at end of file diff --git a/src/com/engine/salary/mapper/salarysob/SalarySobItemMapper.java b/src/com/engine/salary/mapper/salarysob/SalarySobItemMapper.java index 424e3f91e..7fcfc7ee7 100644 --- a/src/com/engine/salary/mapper/salarysob/SalarySobItemMapper.java +++ b/src/com/engine/salary/mapper/salarysob/SalarySobItemMapper.java @@ -110,4 +110,7 @@ public interface SalarySobItemMapper { List listBySalarySobIdAndGroupId(@Param("salarySobId") Long salarySobId,@Param("salarySobItemGroupIds") Collection salarySobItemGroupIds); + void deleteByGroupIds(@Param("groupIds") List needDeleteGroupIds); + + } \ 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 eac7cddd7..fd8580446 100644 --- a/src/com/engine/salary/mapper/salarysob/SalarySobItemMapper.xml +++ b/src/com/engine/salary/mapper/salarysob/SalarySobItemMapper.xml @@ -435,5 +435,17 @@ + + UPDATE hrsa_salary_sob_item + SET delete_type = 1 + WHERE delete_type = 0 + AND salary_sob_item_group_id IN + + #{groupId} + + + + + \ No newline at end of file diff --git a/src/com/engine/salary/service/SalarySobEmpFieldService.java b/src/com/engine/salary/service/SalarySobEmpFieldService.java index 43e77026c..c74b45b4c 100644 --- a/src/com/engine/salary/service/SalarySobEmpFieldService.java +++ b/src/com/engine/salary/service/SalarySobEmpFieldService.java @@ -36,4 +36,6 @@ public interface SalarySobEmpFieldService { * @param salarySobIds 薪资账套id */ void deleteBySalarySobIds(Collection salarySobIds); + + void deleteByIds(Collection ids); } diff --git a/src/com/engine/salary/service/impl/SalarySobEmpFieldServiceImpl.java b/src/com/engine/salary/service/impl/SalarySobEmpFieldServiceImpl.java index 8caf87b0c..aafdcce7a 100644 --- a/src/com/engine/salary/service/impl/SalarySobEmpFieldServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalarySobEmpFieldServiceImpl.java @@ -34,4 +34,9 @@ public class SalarySobEmpFieldServiceImpl extends Service implements SalarySobEm public void deleteBySalarySobIds(Collection salarySobIds) { salarySobEmpFieldMapper.deleteBySalarySobIds(salarySobIds); } + + @Override + public void deleteByIds(Collection ids) { + salarySobEmpFieldMapper.deleteByIds(ids); + } } diff --git a/src/com/engine/salary/service/impl/SalarySobItemServiceImpl.java b/src/com/engine/salary/service/impl/SalarySobItemServiceImpl.java index 38d9ce689..e9c874f16 100644 --- a/src/com/engine/salary/service/impl/SalarySobItemServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalarySobItemServiceImpl.java @@ -5,6 +5,7 @@ import com.engine.core.impl.Service; import com.engine.salary.biz.SalarySobBiz; import com.engine.salary.biz.SalarySobItemBiz; import com.engine.salary.biz.SalarySobItemGroupBiz; +import com.engine.salary.biz.SalarySobItemHideBiz; import com.engine.salary.constant.SalaryDefaultTenantConstant; import com.engine.salary.entity.salaryformula.ExpressFormula; import com.engine.salary.entity.salaryitem.po.SalaryItemPO; @@ -13,9 +14,12 @@ import com.engine.salary.entity.salarysob.dto.SalarySobItemAggregateDTO; import com.engine.salary.entity.salarysob.param.SalarySobItemSaveParam; import com.engine.salary.entity.salarysob.po.*; import com.engine.salary.exception.SalaryRunTimeException; +import com.engine.salary.mapper.salarysob.SalarySobEmpFieldMapper; +import com.engine.salary.mapper.salarysob.SalarySobItemMapper; 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.ValidUtil; import dm.jdbc.util.IdGenerator; import org.apache.commons.collections4.CollectionUtils; @@ -41,6 +45,15 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe private SalarySobBiz salarySobBiz = new SalarySobBiz(); private SalarySobItemGroupBiz salarySobItemGroupBiz = new SalarySobItemGroupBiz(); + private SalarySobItemHideBiz salarySobItemHideBiz = new SalarySobItemHideBiz(); + + private SalarySobEmpFieldMapper getSalarySobEmpFieldMapper() { + return MapperProxyFactory.getProxy(SalarySobEmpFieldMapper.class); + } + + private SalarySobItemMapper getSalarySobItemMapper() { + return MapperProxyFactory.getProxy(SalarySobItemMapper.class); + } private SalarySobEmpFieldService getSalarySobEmpFieldService(User user) { return (SalarySobEmpFieldService) ServiceUtil.getService(SalarySobEmpFieldServiceImpl.class, user); @@ -83,8 +96,8 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe } @Override - public List listBySalarySobIdAndGroupId(Long salarySobId,Collection salarySobItemGroupIds) { - return salarySobItemMapper.listBySalarySobIdAndGroupId(salarySobId,salarySobItemGroupIds); + public List listBySalarySobIdAndGroupId(Long salarySobId, Collection salarySobItemGroupIds) { + return salarySobItemMapper.listBySalarySobIdAndGroupId(salarySobId, salarySobItemGroupIds); } @Override @@ -129,13 +142,13 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe // 查询薪资账套的薪资项目分类 List salarySobItemGroupPOS = getSalarySobItemGroupService(user).listBySalarySobIdWithItemHide(salarySobId); // 查询薪资账套的薪资项目副本 - List salarySobItemPOS =listBySalarySobIdWithHideItem(salarySobId); + List salarySobItemPOS = listBySalarySobIdWithHideItem(salarySobId); // 回算薪资项目 List salarySobBackItems = getSalarySobBackItemService(user).listBySalarySobId(salarySobId); // 薪资账套的薪资项目副本所用的公式id Set formulaIds = SalaryEntityUtil.properties(salarySobItemPOS, SalarySobItemPO::getFormulaId); // 添加薪资回算项目的公式id - formulaIds.addAll(SalaryEntityUtil.properties(salarySobBackItems,SalarySobBackItemPO::getFormulaId)); + formulaIds.addAll(SalaryEntityUtil.properties(salarySobBackItems, SalarySobBackItemPO::getFormulaId)); // 查询公式详情 List expressFormulas = getSalaryFormulaService(user).listExpressFormula(formulaIds); // 查询薪资账套的薪资项目副本+回算的薪资项目所关联的薪资项目 @@ -161,7 +174,7 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe // 查询薪资账套的薪资项目分类 List salarySobItemGroupPOS = getSalarySobItemGroupService(user).listBySalarySobIdWithItemHide(salarySobId); - if(isBackCalc){ + if (isBackCalc) { // 回算分类 } @@ -173,7 +186,7 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe List salarySobItemGroupIds = salarySobItemGroupPOS.stream().map(SalarySobItemGroupPO::getId).collect(Collectors.toList()); // 查询薪资账套的薪资项目副本(已经过滤关闭分类显示按钮的薪资项目) - List salarySobItemPOS = listBySalarySobIdAndGroupId(salarySobId,salarySobItemGroupIds); + List salarySobItemPOS = listBySalarySobIdAndGroupId(salarySobId, salarySobItemGroupIds); // 获取关闭显示的薪资项目 List hideItemIDs = getSalarySobItemHideService(user).listHideGroupBysalarySobId(SalarySobItemHidePO.builder().salarySobId(salarySobId).isGroup(0).build()); @@ -181,7 +194,7 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe // 回算薪资项目 List salarySobBackItems = Collections.emptyList(); - if(isBackCalc){ + if (isBackCalc) { salarySobBackItems = getSalarySobBackItemService(user).listBySalarySobId(salarySobId); } @@ -199,7 +212,7 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe // 转换成聚合dto SalarySobItemAggregateBO salarySobItemAggregateBO = new SalarySobItemAggregateBO(salarySobPO, salarySobEmpFieldPOS, - salarySobItemGroupPOS, salarySobItemPOS, expressFormulas, salaryItemPOS,salarySobBackItems); + salarySobItemGroupPOS, salarySobItemPOS, expressFormulas, salaryItemPOS, salarySobBackItems); return salarySobItemAggregateBO.convert2AggregateDTO(); } @@ -244,27 +257,26 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe //员工信息字段不可重复 List empFields = saveParam.getEmpFields(); - if(CollectionUtils.isNotEmpty(empFields)){ - int count = (int)SalaryEntityUtil.properties(empFields, SalarySobItemSaveParam.SalarySobEmpFieldParam::getFieldId).stream().distinct().count(); - if(count < empFields.size()){ + if (CollectionUtils.isNotEmpty(empFields)) { + int count = (int) SalaryEntityUtil.properties(empFields, SalarySobItemSaveParam.SalarySobEmpFieldParam::getFieldId).stream().distinct().count(); + if (count < empFields.size()) { throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98379, "分类名称重复!")); } - }else { + } else { throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98379, "员工信息不能为空!")); } //分类名称唯一 List itemGroups = saveParam.getItemGroups(); - if(CollectionUtils.isNotEmpty(itemGroups)){ - int count = (int)SalaryEntityUtil.properties(itemGroups, SalarySobItemSaveParam.SalarySobItemGroupParam::getName).stream().distinct().count(); - if(count < itemGroups.size()){ + if (CollectionUtils.isNotEmpty(itemGroups)) { + int count = (int) SalaryEntityUtil.properties(itemGroups, SalarySobItemSaveParam.SalarySobItemGroupParam::getName).stream().distinct().count(); + if (count < itemGroups.size()) { throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98379, "分类名称重复!")); } } } - /** * 清楚原相关数据 * @@ -272,11 +284,11 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe */ private void cleanOldData(Long salarySobId) { // 删除薪资账套的员工信息字段 - getSalarySobEmpFieldService(user).deleteBySalarySobIds(Collections.singleton(salarySobId)); +// getSalarySobEmpFieldService(user).deleteBySalarySobIds(Collections.singleton(salarySobId)); // 删除薪资账套的薪资项目副本 - deleteBySalarySobIds(Collections.singleton(salarySobId)); +// deleteBySalarySobIds(Collections.singleton(salarySobId)); // 删除薪资账套的薪资项目分类 - getSalarySobItemGroupService(user).deleteBySalarySobIds(Collections.singleton(salarySobId)); +// getSalarySobItemGroupService(user).deleteBySalarySobIds(Collections.singleton(salarySobId)); // 删除薪资项目是否显示 deleteItemShowBySalarySobIds(Collections.singleton(salarySobId)); @@ -288,39 +300,35 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe * @param saveParam */ private void saveSobItem(SalarySobItemSaveParam saveParam) { + //处理人员信息字段 + handleEmpField(saveParam); + + //分组和薪资项 + handleGroupAndItem(saveParam); + } + + private void handleGroupAndItem(SalarySobItemSaveParam saveParam) { long employeeId = (long) user.getUID(); Date now = new Date(); Long salarySobId = saveParam.getSalarySobId(); - // 保存薪资账套的员工信息字段 - Collection needInsertSalarySobEmpFields = new ArrayList<>(); - for (SalarySobItemSaveParam.SalarySobEmpFieldParam salarySobEmpFieldParam : saveParam.getEmpFields()) { - SalarySobEmpFieldPO salarySobEmpFieldPO = SalarySobEmpFieldPO.builder() - .salarySobId(saveParam.getSalarySobId()) - .fieldCode(salarySobEmpFieldParam.getFieldId()) - .sortedIndex(salarySobEmpFieldParam.getSortedIndex()) - .canDelete(salarySobEmpFieldParam.getCanDelete() ? NumberUtils.INTEGER_ONE : NumberUtils.INTEGER_ZERO) - .creator(employeeId) - .createTime(now) - .updateTime(now) - .deleteType(NumberUtils.INTEGER_ZERO) - .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) - .build(); - needInsertSalarySobEmpFields.add(salarySobEmpFieldPO); - } - getSalarySobEmpFieldService(user).batchSave(needInsertSalarySobEmpFields); - + List itemGroups = saveParam.getItemGroups(); + List newGroupIds = SalaryEntityUtil.properties(itemGroups, SalarySobItemSaveParam.SalarySobItemGroupParam::getId, Collectors.toList()); + List salarySobItemGroupPOS = getSalarySobItemGroupService(user).listBySalarySobId(salarySobId); + List oldGroupIds = SalaryEntityUtil.properties(salarySobItemGroupPOS, SalarySobItemGroupPO::getId, Collectors.toList()); + List needAddGroup = itemGroups.stream().filter(f -> f.getId() == null).collect(Collectors.toList()); + 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()); //先保存项目分类获,取分类id Collection salarySobItems = new ArrayList<>(); - int sortedIndex = 0; - for (SalarySobItemSaveParam.SalarySobItemGroupParam itemGroupParam : saveParam.getItemGroups()) { + for (SalarySobItemSaveParam.SalarySobItemGroupParam itemGroupParam : needAddGroup) { Long salarySobItemGroupId = IdGenerator.generate(); SalarySobItemGroupPO salarySobItemGroupPO = SalarySobItemGroupPO.builder() .id(salarySobItemGroupId) .salarySobId(salarySobId) .name(itemGroupParam.getName()) - .sortedIndex(sortedIndex++) + .sortedIndex(itemGroupParam.getSortedIndex()) .description(StringUtils.EMPTY) .creator(employeeId) .createTime(now) @@ -346,17 +354,12 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe .deleteType(NumberUtils.INTEGER_ZERO) .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) .build(); - if(itemGroupParam.getItemHide()==null){ + if (itemGroupParam.getItemHide() == null) { salarySobGroupItemHidePO.setItemHide(Long.valueOf(0)); } salarySobItemMapper.InsertItemShow(salarySobGroupItemHidePO); -// //获取分类id -// List salarySobItemGroupPOS = salarySobItemGroupBiz.listSome(SalarySobItemGroupPO.builder().salarySobId(salarySobId).name(itemGroupParam.getName()).build()); -// Long salarySobItemGroupId = salarySobItemGroupPOS.get(0).getId(); - - for (SalarySobItemSaveParam.SalarySobItemParam itemParam : itemGroupParam.getItems()) { SalarySobItemPO salarySobItemPO = SalarySobItemPO.builder() .salarySobId(salarySobId) @@ -394,7 +397,127 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe } - for (SalarySobItemSaveParam.SalarySobItemParam itemParam : saveParam.getItems()) { + //更新分组 + for (SalarySobItemSaveParam.SalarySobItemGroupParam itemGroupParam : needUpdateGroup) { + Long groupId = itemGroupParam.getId(); + SalarySobItemGroupPO salarySobItemGroupPO = SalarySobItemGroupPO.builder() + .id(groupId) + .name(itemGroupParam.getName()) + .sortedIndex(itemGroupParam.getSortedIndex()) + .build(); + //更新分类 + salarySobItemGroupBiz.update(salarySobItemGroupPO); + + // 保存薪资项目分类 字段显隐 + Long salarySobGroupItemShowId = IdGenerator.generate(); + SalarySobItemHidePO salarySobGroupItemHidePO = SalarySobItemHidePO.builder() + .id(salarySobGroupItemShowId) + .salarySobId(salarySobId) + .salaryItemId(groupId) + .isGroup(1) + .itemHide(itemGroupParam.getItemHide()) + .creator(employeeId) + .createTime(now) + .updateTime(now) + .deleteType(NumberUtils.INTEGER_ZERO) + .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) + .build(); + if (itemGroupParam.getItemHide() == null) { + salarySobGroupItemHidePO.setItemHide(Long.valueOf(0)); + } + salarySobItemMapper.InsertItemShow(salarySobGroupItemHidePO); + + + List items = itemGroupParam.getItems(); + List itemIds = SalaryEntityUtil.properties(items, SalarySobItemSaveParam.SalarySobItemParam::getId, Collectors.toList()); + List oldItems = salarySobItemMapper.listBySalarySobIdAndGroupId(salarySobId, Collections.singleton(groupId)); + List oldItemIds = SalaryEntityUtil.properties(oldItems, SalarySobItemPO::getId, Collectors.toList()); + List needAddItems = items.stream().filter(f -> f.getId() == null).collect(Collectors.toList()); + List needDeleteItemIds = oldItems.stream().filter(f -> !itemIds.contains(f.getId())).map(SalarySobItemPO::getId).collect(Collectors.toList()); + List needUpdateItems = items.stream().filter(f -> f.getId() != null && oldItemIds.contains(f.getId())).collect(Collectors.toList()); + + //新增 + for (SalarySobItemSaveParam.SalarySobItemParam itemParam : needAddItems) { + SalarySobItemPO salarySobItemPO = SalarySobItemPO.builder() + .salarySobId(salarySobId) + .salaryItemId(itemParam.getSalaryItemId()) + .salarySobItemGroupId(groupId) + .formulaId(Optional.ofNullable(itemParam.getFormulaId()).orElse(NumberUtils.LONG_ZERO)) + .sortedIndex(itemParam.getSortedIndex()) + .description(StringUtils.EMPTY) + .creator(employeeId) + .createTime(now) + .updateTime(now) + .deleteType(NumberUtils.INTEGER_ZERO) + .build(); + salarySobItems.add(salarySobItemPO); + + // 保存薪资项目是否展示 + Long salarySobItemShowId = IdGenerator.generate(); + SalarySobItemHidePO salarySobItemHidePO = SalarySobItemHidePO.builder() + .id(salarySobItemShowId) + .salarySobId(salarySobId) + .salaryItemId(itemParam.getSalaryItemId()) + .isGroup(0) + .itemHide(itemParam.getItemHide()) + .creator(employeeId) + .createTime(now) + .updateTime(now) + .deleteType(NumberUtils.INTEGER_ZERO) + .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) + .build(); + salarySobItemMapper.InsertItemShow(salarySobItemHidePO); + } + //更新 + for (SalarySobItemSaveParam.SalarySobItemParam itemParam : needUpdateItems) { + SalarySobItemPO salarySobItemPO = SalarySobItemPO.builder() + .id(itemParam.getId()) + .salaryItemId(itemParam.getSalaryItemId()) + .salarySobItemGroupId(groupId) + .formulaId(Optional.ofNullable(itemParam.getFormulaId()).orElse(NumberUtils.LONG_ZERO)) + .sortedIndex(itemParam.getSortedIndex()) + .updateTime(now) + .deleteType(NumberUtils.INTEGER_ZERO) + .build(); + getSalarySobItemMapper().updateIgnoreNull(salarySobItemPO); + // 保存薪资项目是否展示 + Long salarySobItemShowId = IdGenerator.generate(); + SalarySobItemHidePO salarySobItemHidePO = SalarySobItemHidePO.builder() + .id(salarySobItemShowId) + .salarySobId(salarySobId) + .salaryItemId(itemParam.getSalaryItemId()) + .isGroup(0) + .itemHide(itemParam.getItemHide()) + .creator(employeeId) + .createTime(now) + .updateTime(now) + .deleteType(NumberUtils.INTEGER_ZERO) + .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) + .build(); + salarySobItemMapper.InsertItemShow(salarySobItemHidePO); + } + + + //删除 + salarySobItemMapper.deleteByIds(needDeleteItemIds); + + } + + //删除分组 + salarySobItemGroupBiz.deleteByIds(needDeleteGroupIds); + salarySobItemMapper.deleteByGroupIds(needDeleteGroupIds); + + + List items = saveParam.getItems(); + List itemIds = SalaryEntityUtil.properties(items, SalarySobItemSaveParam.SalarySobItemParam::getId, Collectors.toList()); + List oldItems = salarySobItemMapper.listBySalarySobIdAndGroupId(salarySobId, Collections.singleton(0L)); + List oldItemIds = SalaryEntityUtil.properties(oldItems, SalarySobItemPO::getId, Collectors.toList()); + List needAddItems = items.stream().filter(f -> f.getId() == null).collect(Collectors.toList()); + List needDeleteItemIds = oldItems.stream().filter(f -> !itemIds.contains(f.getId())).map(SalarySobItemPO::getId).collect(Collectors.toList()); + List needUpdateItems = items.stream().filter(f -> f.getId() != null && oldItemIds.contains(f.getId())).collect(Collectors.toList()); + + for (SalarySobItemSaveParam.SalarySobItemParam itemParam : needAddItems) { + SalarySobItemPO salarySobItemPO = SalarySobItemPO.builder() .salarySobId(salarySobId) .salaryItemId(itemParam.getSalaryItemId()) @@ -428,10 +551,83 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe salarySobItemMapper.InsertItemShow(salarySobItemHidePO); } + for (SalarySobItemSaveParam.SalarySobItemParam itemParam : needUpdateItems) { + + 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)) + .build(); + getSalarySobItemMapper().updateIgnoreNull(salarySobItemPO); + + // 保存未分类薪资项目是否展示 + Long salarySobItemShowId = IdGenerator.generate(); + SalarySobItemHidePO salarySobItemHidePO = SalarySobItemHidePO.builder() + .id(salarySobItemShowId) + .salarySobId(salarySobId) + .salaryItemId(itemParam.getSalaryItemId()) + .isGroup(0) + .itemHide(itemParam.getItemHide()) + .creator(employeeId) + .createTime(now) + .updateTime(now) + .deleteType(NumberUtils.INTEGER_ZERO) + .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) + .build(); + salarySobItemMapper.InsertItemShow(salarySobItemHidePO); + } + + if (CollectionUtils.isNotEmpty(needDeleteItemIds)) { + getSalarySobItemMapper().deleteByIds(needDeleteItemIds); + } + // 保存薪资账套的薪资项目副本 batchSave(salarySobItems); } + private void handleEmpField(SalarySobItemSaveParam saveParam) { + long employeeId = (long) user.getUID(); + Date now = new Date(); + Long salarySobId = saveParam.getSalarySobId(); + + List empFields = saveParam.getEmpFields(); + List newEmpIds = SalaryEntityUtil.properties(empFields, SalarySobItemSaveParam.SalarySobEmpFieldParam::getId, Collectors.toList()); + List salarySobEmpFieldPOS = getSalarySobEmpFieldService(user).listBySalarySobId(salarySobId); + List needDeleteEmpIds = salarySobEmpFieldPOS.stream().filter(f -> !newEmpIds.contains(f.getId())).map(SalarySobEmpFieldPO::getId).collect(Collectors.toList()); + + // 保存薪资账套的员工信息字段 + Collection needInsertSalarySobEmpFields = new ArrayList<>(); + for (SalarySobItemSaveParam.SalarySobEmpFieldParam salarySobEmpFieldParam : empFields) { + if (salarySobEmpFieldParam.getId() == null) { + SalarySobEmpFieldPO salarySobEmpFieldPO = SalarySobEmpFieldPO.builder() + .salarySobId(saveParam.getSalarySobId()) + .fieldCode(salarySobEmpFieldParam.getFieldId()) + .sortedIndex(salarySobEmpFieldParam.getSortedIndex()) + .canDelete(salarySobEmpFieldParam.getCanDelete() ? NumberUtils.INTEGER_ONE : NumberUtils.INTEGER_ZERO) + .creator(employeeId) + .createTime(now) + .updateTime(now) + .deleteType(NumberUtils.INTEGER_ZERO) + .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) + .build(); + needInsertSalarySobEmpFields.add(salarySobEmpFieldPO); + } else { + SalarySobEmpFieldPO salarySobEmpFieldPO = SalarySobEmpFieldPO.builder() + .id(salarySobEmpFieldParam.getId()) + .sortedIndex(salarySobEmpFieldParam.getSortedIndex()) + .updateTime(now) + .build(); + getSalarySobEmpFieldMapper().updateIgnoreNull(salarySobEmpFieldPO); + } + + } + getSalarySobEmpFieldService(user).batchSave(needInsertSalarySobEmpFields); + //删除字段 + getSalarySobEmpFieldService(user).deleteByIds(needDeleteEmpIds); + } + @Override public void batchSave(Collection salarySobItemPOS) { if (CollectionUtils.isEmpty(salarySobItemPOS)) {