账套群组保持不变

This commit is contained in:
钱涛 2023-02-09 15:33:35 +08:00
parent 258c880543
commit 2c37086e70
13 changed files with 406 additions and 53 deletions

View File

@ -28,7 +28,7 @@ public class SalarySobEmpFieldBiz {
}
public void batchInsert(Collection<SalarySobEmpFieldPO> salarySobEmpFieldPOS) {
if(CollectionUtils.isEmpty(salarySobEmpFieldPOS)){
if (CollectionUtils.isEmpty(salarySobEmpFieldPOS)) {
return;
}
SqlSession sqlSession = MyBatisFactory.sqlSessionFactory.openSession();
@ -54,7 +54,6 @@ public class SalarySobEmpFieldBiz {
}
//---------------------------系统默认员工信息字段-----------------------------------
public List<SalarySobDefaultEmpFieldPO> listDefaultEmpField() {
@ -68,4 +67,19 @@ public class SalarySobEmpFieldBiz {
}
public void deleteByIds(Collection<Long> 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();
}
}
}

View File

@ -45,7 +45,7 @@ public class SalarySobItemBiz {
public void batchInsert(Collection<SalarySobItemPO> 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<Long> 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<Long> 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();
}
}
}

View File

@ -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<Long> 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();
}
}
}

View File

@ -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();
}
}
}

View File

@ -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<Long> ids);
}

View File

@ -280,5 +280,15 @@
AND delete_type = 0
</delete>
<update id="deleteByIds">
UPDATE hrsa_sob_default_emp_field
SET delete_type = 1
WHERE delete_type = 0
AND id IN
<foreach collection="ids" open="(" item="id" separator="," close=")">
#{id}
</foreach>
</update>
</mapper>

View File

@ -22,4 +22,10 @@ public interface SalarySobItemHideMapper {
* @date 2022/9/22 9:14
*/
void deleteBySalarySobIds(@Param("ids") Collection<Long> ids);
void update(SalarySobItemHidePO salarySobPO);
void updateByItemId(SalarySobItemHidePO salarySobGroupItemHidePO);
}

View File

@ -23,6 +23,24 @@
</select>
<!-- 更新,更新全部字段 -->
<update id="update" parameterType="com.engine.salary.entity.salarysob.po.SalarySobItemHidePO">
UPDATE hrsa_salary_item_hide
<set>
item_hide=#{itemHide},
update_time=#{updateTime}
</set>
WHERE id = #{id} AND delete_type = 0
</update>
<!-- 更新,更新全部字段 -->
<update id="updateByItemId" parameterType="com.engine.salary.entity.salarysob.po.SalarySobItemHidePO">
UPDATE hrsa_salary_item_hide
<set>
item_hide=#{itemHide},
update_time=#{updateTime}
</set>
WHERE salary_sob_id = #{salarySobId} AND salary_item_id= #{salaryItemId} AND delete_type = 0
</update>
</mapper>

View File

@ -110,4 +110,7 @@ public interface SalarySobItemMapper {
List<SalarySobItemPO> listBySalarySobIdAndGroupId(@Param("salarySobId") Long salarySobId,@Param("salarySobItemGroupIds") Collection<Long> salarySobItemGroupIds);
void deleteByGroupIds(@Param("groupIds") List<Long> needDeleteGroupIds);
}

View File

@ -435,5 +435,17 @@
</insert>
<update id="deleteByGroupIds">
UPDATE hrsa_salary_sob_item
SET delete_type = 1
WHERE delete_type = 0
AND salary_sob_item_group_id IN
<foreach collection="groupIds" open="(" item="groupId" separator="," close=")">
#{groupId}
</foreach>
</update>
</mapper>

View File

@ -36,4 +36,6 @@ public interface SalarySobEmpFieldService {
* @param salarySobIds 薪资账套id
*/
void deleteBySalarySobIds(Collection<Long> salarySobIds);
void deleteByIds(Collection<Long> ids);
}

View File

@ -34,4 +34,9 @@ public class SalarySobEmpFieldServiceImpl extends Service implements SalarySobEm
public void deleteBySalarySobIds(Collection<Long> salarySobIds) {
salarySobEmpFieldMapper.deleteBySalarySobIds(salarySobIds);
}
@Override
public void deleteByIds(Collection<Long> ids) {
salarySobEmpFieldMapper.deleteByIds(ids);
}
}

View File

@ -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<SalarySobItemPO> listBySalarySobIdAndGroupId(Long salarySobId,Collection<Long> salarySobItemGroupIds) {
return salarySobItemMapper.listBySalarySobIdAndGroupId(salarySobId,salarySobItemGroupIds);
public List<SalarySobItemPO> listBySalarySobIdAndGroupId(Long salarySobId, Collection<Long> salarySobItemGroupIds) {
return salarySobItemMapper.listBySalarySobIdAndGroupId(salarySobId, salarySobItemGroupIds);
}
@Override
@ -129,13 +142,13 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe
// 查询薪资账套的薪资项目分类
List<SalarySobItemGroupPO> salarySobItemGroupPOS = getSalarySobItemGroupService(user).listBySalarySobIdWithItemHide(salarySobId);
// 查询薪资账套的薪资项目副本
List<SalarySobItemPO> salarySobItemPOS =listBySalarySobIdWithHideItem(salarySobId);
List<SalarySobItemPO> salarySobItemPOS = listBySalarySobIdWithHideItem(salarySobId);
// 回算薪资项目
List<SalarySobBackItemPO> salarySobBackItems = getSalarySobBackItemService(user).listBySalarySobId(salarySobId);
// 薪资账套的薪资项目副本所用的公式id
Set<Long> formulaIds = SalaryEntityUtil.properties(salarySobItemPOS, SalarySobItemPO::getFormulaId);
// 添加薪资回算项目的公式id
formulaIds.addAll(SalaryEntityUtil.properties(salarySobBackItems,SalarySobBackItemPO::getFormulaId));
formulaIds.addAll(SalaryEntityUtil.properties(salarySobBackItems, SalarySobBackItemPO::getFormulaId));
// 查询公式详情
List<ExpressFormula> expressFormulas = getSalaryFormulaService(user).listExpressFormula(formulaIds);
// 查询薪资账套的薪资项目副本+回算的薪资项目所关联的薪资项目
@ -161,7 +174,7 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe
// 查询薪资账套的薪资项目分类
List<SalarySobItemGroupPO> salarySobItemGroupPOS = getSalarySobItemGroupService(user).listBySalarySobIdWithItemHide(salarySobId);
if(isBackCalc){
if (isBackCalc) {
// 回算分类
}
@ -173,7 +186,7 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe
List<Long> salarySobItemGroupIds = salarySobItemGroupPOS.stream().map(SalarySobItemGroupPO::getId).collect(Collectors.toList());
// 查询薪资账套的薪资项目副本(已经过滤关闭分类显示按钮的薪资项目)
List<SalarySobItemPO> salarySobItemPOS = listBySalarySobIdAndGroupId(salarySobId,salarySobItemGroupIds);
List<SalarySobItemPO> salarySobItemPOS = listBySalarySobIdAndGroupId(salarySobId, salarySobItemGroupIds);
// 获取关闭显示的薪资项目
List<Long> hideItemIDs = getSalarySobItemHideService(user).listHideGroupBysalarySobId(SalarySobItemHidePO.builder().salarySobId(salarySobId).isGroup(0).build());
@ -181,7 +194,7 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe
// 回算薪资项目
List<SalarySobBackItemPO> 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<SalarySobItemSaveParam.SalarySobEmpFieldParam> 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<SalarySobItemSaveParam.SalarySobItemGroupParam> 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<SalarySobEmpFieldPO> 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<SalarySobItemSaveParam.SalarySobItemGroupParam> itemGroups = saveParam.getItemGroups();
List<Long> newGroupIds = SalaryEntityUtil.properties(itemGroups, SalarySobItemSaveParam.SalarySobItemGroupParam::getId, Collectors.toList());
List<SalarySobItemGroupPO> salarySobItemGroupPOS = getSalarySobItemGroupService(user).listBySalarySobId(salarySobId);
List<Long> oldGroupIds = SalaryEntityUtil.properties(salarySobItemGroupPOS, SalarySobItemGroupPO::getId, Collectors.toList());
List<SalarySobItemSaveParam.SalarySobItemGroupParam> needAddGroup = itemGroups.stream().filter(f -> f.getId() == null).collect(Collectors.toList());
List<SalarySobItemSaveParam.SalarySobItemGroupParam> needUpdateGroup = itemGroups.stream().filter(f -> f.getId() != null && oldGroupIds.contains(f.getId())).collect(Collectors.toList());
List<Long> needDeleteGroupIds = oldGroupIds.stream().filter(f -> !newGroupIds.contains(f)).collect(Collectors.toList());
//先保存项目分类获取分类id
Collection<SalarySobItemPO> 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<SalarySobItemGroupPO> 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<SalarySobItemSaveParam.SalarySobItemParam> items = itemGroupParam.getItems();
List<Long> itemIds = SalaryEntityUtil.properties(items, SalarySobItemSaveParam.SalarySobItemParam::getId, Collectors.toList());
List<SalarySobItemPO> oldItems = salarySobItemMapper.listBySalarySobIdAndGroupId(salarySobId, Collections.singleton(groupId));
List<Long> oldItemIds = SalaryEntityUtil.properties(oldItems, SalarySobItemPO::getId, Collectors.toList());
List<SalarySobItemSaveParam.SalarySobItemParam> needAddItems = items.stream().filter(f -> f.getId() == null).collect(Collectors.toList());
List<Long> needDeleteItemIds = oldItems.stream().filter(f -> !itemIds.contains(f.getId())).map(SalarySobItemPO::getId).collect(Collectors.toList());
List<SalarySobItemSaveParam.SalarySobItemParam> 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<SalarySobItemSaveParam.SalarySobItemParam> items = saveParam.getItems();
List<Long> itemIds = SalaryEntityUtil.properties(items, SalarySobItemSaveParam.SalarySobItemParam::getId, Collectors.toList());
List<SalarySobItemPO> oldItems = salarySobItemMapper.listBySalarySobIdAndGroupId(salarySobId, Collections.singleton(0L));
List<Long> oldItemIds = SalaryEntityUtil.properties(oldItems, SalarySobItemPO::getId, Collectors.toList());
List<SalarySobItemSaveParam.SalarySobItemParam> needAddItems = items.stream().filter(f -> f.getId() == null).collect(Collectors.toList());
List<Long> needDeleteItemIds = oldItems.stream().filter(f -> !itemIds.contains(f.getId())).map(SalarySobItemPO::getId).collect(Collectors.toList());
List<SalarySobItemSaveParam.SalarySobItemParam> 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<SalarySobItemSaveParam.SalarySobEmpFieldParam> empFields = saveParam.getEmpFields();
List<Long> newEmpIds = SalaryEntityUtil.properties(empFields, SalarySobItemSaveParam.SalarySobEmpFieldParam::getId, Collectors.toList());
List<SalarySobEmpFieldPO> salarySobEmpFieldPOS = getSalarySobEmpFieldService(user).listBySalarySobId(salarySobId);
List<Long> needDeleteEmpIds = salarySobEmpFieldPOS.stream().filter(f -> !newEmpIds.contains(f.getId())).map(SalarySobEmpFieldPO::getId).collect(Collectors.toList());
// 保存薪资账套的员工信息字段
Collection<SalarySobEmpFieldPO> 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<SalarySobItemPO> salarySobItemPOS) {
if (CollectionUtils.isEmpty(salarySobItemPOS)) {