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); + } }