package com.engine.salary.entity.salaryarchive.bo;

import com.engine.salary.entity.salaryarchive.dto.SalaryItemAdjustValidDTO;
import com.engine.salary.entity.salaryarchive.po.SalaryArchiveItemPO;
import com.google.common.collect.Lists;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.Date;
import java.util.List;

/**
 * @Description: 薪资档案-薪资项目
 * @Author: wangxiangzhong
 * @Date: 2021-11-03 10:51
 */
public class SalaryArchiveItemBO {
    @Override
    public String toString() {
        return "SalaryArchiveItemBO{}";
    }

    public static List<SalaryArchiveItemPO> buildLogEntity(List<SalaryArchiveItemPO> salaryArchiveItemSaves) {
        List<SalaryArchiveItemPO> salaryArchiveItemSaveLogs = Lists.newArrayList();
        for (SalaryArchiveItemPO sai : salaryArchiveItemSaves) {
            // BeanUtils.copyProperties(sai, saiNew);性能差
            salaryArchiveItemSaveLogs.add(SalaryArchiveItemPO.builder()
                    .id(sai.getId())
                    .salaryArchiveId(sai.getSalaryArchiveId())
                    .employeeId(sai.getEmployeeId())
                    .effectiveTime(sai.getEffectiveTime())
                    .adjustReason(sai.getAdjustReason())
                    .salaryItemId(sai.getSalaryItemId())
                    .itemValue(sai.getItemValue())
                    .description(sai.getDescription())
                    .operator(sai.getOperator())
                    .operateTime(sai.getOperateTime())
                    .createTime(sai.getCreateTime())
                    .updateTime(sai.getUpdateTime())
                    .creator(sai.getCreator())
                    .deleteType(sai.getDeleteType())
                    .tenantKey(sai.getTenantKey())
                    .build());
        }
        return salaryArchiveItemSaveLogs;
    }

    /**
     * 构建薪资项目基础信息表单
     *
     * @param isView
     * @param effectiveTime
     * @param adjustReason
     * @param description
     * @param employeeId
     * @param tenantKey
     * @return
     */
//    public static WeaForm buildSalaryArchiveItemForm(boolean isView, Date effectiveTime, String adjustReason, String description, Long employeeId, String tenantKey) {
//        WeaForm salaryItemForm = SalaryFormatUtil.<SalaryArchiveItemBaseDTO>getInstance().buildForm(SalaryArchiveItemBaseDTO.class, SalaryArchiveItemBaseDTO.builder().build());
//        WeaFormItem descriptionItem = salaryItemForm.getItems().get("description");
//        if (!isView) {
//            Map<String, Object> otherParams = Maps.newHashMap();
//            otherParams.put("showCount", true);
//            otherParams.put("placeholder", SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 85987, "请输入"));
//            descriptionItem.setOtherParams(otherParams);
//            salaryItemForm.getItems().put("description", descriptionItem);
//        } else {
//            WeaFormItem effectiveTimeItem = salaryItemForm.getItems().get("effectiveTime");
//            effectiveTimeItem.setRequired(false);
//            effectiveTimeItem.setReadOnly(true);
//            salaryItemForm.getItems().put("effectiveTime", effectiveTimeItem);
//            WeaFormItem adjustReasonItem = salaryItemForm.getItems().get("adjustReason");
//            adjustReasonItem.setRequired(false);
//            adjustReasonItem.setReadOnly(true);
//            salaryItemForm.getItems().put("adjustReason", adjustReasonItem);
//            descriptionItem.setReadOnly(true);
//            salaryItemForm.getItems().put("description", descriptionItem);
//        }
//        // 控件数据
//        Map<String, Object> data = salaryItemForm.getData();
//        data.put("effectiveTime", effectiveTime + "");
//        data.put("adjustReason", adjustReason);
//        data.put("description", description);
//
//        salaryItemForm.setData(data);
//        return salaryItemForm;
//    }

    /**
     * 构建薪资档案调整明细
     *
     * @param isView
     * @param tableData
     * @param salaryItemList
     * @param employeeId
     * @param tenantKey
     * @return
     */
//    public static EditableTable<Map<String, Object>> buildSalaryArchiveItemAdjustDetailTable(boolean isView, List<Map<String, Object>> tableData, List<SalaryItemPO> salaryItemList, Long employeeId, String tenantKey) {
//        WeaTable<Map<String, Object>> adjustDetailTable = new WeaTable<>();
//        adjustDetailTable.setPageUid(UUID.randomUUID().toString());
//        adjustDetailTable.setModule("hrmsalary");
//
//        List<Map<String, Object>> salaryItems = salaryItemList.stream().map(m -> {
//            Map<String, Object> salaryItemMap = new LinkedHashMap<>();
//            salaryItemMap.put("id", String.valueOf(m.getId()));
//            salaryItemMap.put("content", m.getName());
//            salaryItemMap.put("dataType", m.getDataType());
//            return salaryItemMap;
//        }).collect(Collectors.toList());
//
//        Page<Map<String, Object>> page = new Page<>(0, 0, 0, false);
//        page.setRecords(tableData);
//        adjustDetailTable.setPage(page);
//        adjustDetailTable.setDisplayData(tableData);
//        adjustDetailTable.setTableType(isView ? WeaTableTypeEnum.NONE : WeaTableTypeEnum.CHECKBOX);
//
//        EditableTable<Map<String, Object>> editableTable = new EditableTable<>(adjustDetailTable);
//        editableTable.setColumns(SalaryArchiveItemBO.buildRecordTableColumns(isView, employeeId, tenantKey));
//        editableTable.setComProps(SalaryArchiveItemBO.buildEditableTableItemMap(isView, salaryItems));
//        return editableTable;
//    }

    /**
     * 构建调薪记录表格
     *
     * @param isView
     * @param employeeId
     * @param tenantKey
//     * @return
//     */
//    public static List<WeaTableColumn> buildRecordTableColumns(boolean isView, Long employeeId, String tenantKey) {
//        List<WeaTableColumn> result = Lists.newArrayListWithExpectedSize(3);
//        result.add(new SalaryWeaTableColumn(SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 84960, "薪资项目"), "salaryItem", "150", WeaAlignEnum.CENTER.getStringVal(), "salaryItem", !isView));
//        result.add(new SalaryWeaTableColumn(SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 85433, "调整前"), "salaryBefore", "150", WeaAlignEnum.CENTER.getStringVal(), "salaryBefore"));
//        result.add(new SalaryWeaTableColumn(SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 85434, "调整后"), "adjustAfter", "150", WeaAlignEnum.CENTER.getStringVal(), "adjustAfter", !isView));
//        return result;
//    }

    /**
     * 构建调薪记录表格字段
     *
     * @param isView
     * @param salaryItems
     * @return
     */
//    public static Map<String, EditableTableItem> buildEditableTableItemMap(boolean isView, List<Map<String, Object>> salaryItems) {
//        Map<String, EditableTableItem> resultMap = Maps.newHashMapWithExpectedSize(9);
//        resultMap.put("salaryItem", new EditableTableItem(EditableTableItemType.SELECT, "", salaryItems, !isView, isView));
//        resultMap.put("salaryBefore", new EditableTableItem(EditableTableItemType.INPUT, "", true));
//        resultMap.put("adjustAfter", new EditableTableItem(EditableTableItemType.INPUT, "", null, !isView, isView));
//        return resultMap;
//    }

    /**
     * 处理调整记录
     *
     * @param list
     * @param hrmStatusList
     * @param listMap
     * @param employeeId
     * @param tenantKey
     */
//    public static void handleSalaryItemAdjustRecord(List<SalaryItemAdjustRecordListDTO> list, List<HrmStatus> hrmStatusList, Map<String, List<SalaryArchiveItemPO>> listMap, Long employeeId, String tenantKey) {
//        Map<String, String> hrmStatusNameMap = SalaryEntityUtil.convert2Map(hrmStatusList, hrmStatus -> String.valueOf(hrmStatus.getCodeId()), HrmStatus::getName);
//        list.forEach(m -> {
//            List<SalaryArchiveItemPO> singleSalaryArchiveItems = Optional.ofNullable(listMap.get(m.getSalaryArchiveId() + "-" + m.getSalaryItemId())).orElse(Lists.newArrayList());
//            // 调整前
//            m.setAdjustAfter(CollectionUtils.isEmpty(singleSalaryArchiveItems) ? "" : singleSalaryArchiveItems.get(0).getItemValue());
//            if (!CollectionUtils.isEmpty(singleSalaryArchiveItems)) {
//                singleSalaryArchiveItems.removeIf(a -> a.getId().equals(m.getId()));
//            }
//            SalaryArchiveItemPO salaryArchiveItem = CollectionUtils.isEmpty(singleSalaryArchiveItems) ? null : singleSalaryArchiveItems.get(0);
//            // 调整后
//            m.setAdjustBefore(salaryArchiveItem == null ? "" : salaryArchiveItem.getItemValue());
//
//            m.setEmployeeStatus(Optional.ofNullable(hrmStatusNameMap.get(m.getEmployeeStatus())).orElse(""));
//            m.setAdjustReason(SalaryArchiveItemAdjustReasonEnum.getDefaultLabelByValue(m.getAdjustReason(), employeeId, tenantKey));
//        });
//    }

    /**
     * 薪资项目调整记录列表的高级搜索
     *
     * @param conditionId
     * @param userStatusOptions
     * @param employeeId
     * @param tenantKey
     * @return
     */
//    public static WeaSearchCondition getAdjustRecordSearchCondition(String conditionId, List<WeaSearchConditionOption> userStatusOptions, Long employeeId, String tenantKey) {
//        WeaSearchCondition weaSearchCondition = SalaryFormatUtil.<SalaryItemAdjustRecordSearchConditionDTO>getInstance()
//                .buildCondition(SalaryItemAdjustRecordSearchConditionDTO.class,
//                        SalaryItemAdjustRecordSearchConditionDTO.builder()
//                                .userStatusOptions(userStatusOptions)
//                                .build(),
//                        conditionId);
//        // 生效日期-添加范围
//        SalaryArchiveBO.addDatePickerRangeOtherParams(weaSearchCondition, "effectiveTime", employeeId, tenantKey);
//        // 操作日期-添加范围
//        SalaryArchiveBO.addDatePickerRangeOtherParams(weaSearchCondition, "operateTime", employeeId, tenantKey);
//        // 只保留常用条件
//        weaSearchCondition.setGroups(weaSearchCondition.getGroups().stream().filter(e -> "commonGroup".equals(e.getId())).collect(Collectors.toList()));
//        return weaSearchCondition;
//    }

    /**
     * 构建调薪记录表格
     *
     * @param adjustRecordTypeEnum
     * @param effectiveItemListMap
     * @param page
     * @return
     */
//    public static WeaTable<SalaryItemAdjustRecordListDTO> buildSalaryItemAdjustRecordTable(SalaryArchiveAdjustRecordTypeEnum adjustRecordTypeEnum, Map<String, List<SalaryArchiveItemPO>> effectiveItemListMap, Page<SalaryItemAdjustRecordListDTO> page) {
//        WeaTable<SalaryItemAdjustRecordListDTO> weaTable = FormatManager.<SalaryItemAdjustRecordListDTO>getInstance().genTable(SalaryItemAdjustRecordListDTO.class, page);
//        if (adjustRecordTypeEnum.equals(SalaryArchiveAdjustRecordTypeEnum.ADJUSTRECORD)) {
//            /**
//             * 行记录按钮权限控制
//             * 说明：
//             * 1.早于当前已生效的则只有【查看】权限；
//             * 2.等于当前已生效的有【编辑】、【操作日志】权限；
//             * 3.未生效的有【编辑】、【删除】、【操作日志】权限；
//             */
//            for (int i = 0; i < page.getRecords().size(); i++) {
//                SalaryItemAdjustRecordListDTO salaryItemAdjustRecord = page.getRecords().get(i);
//                Optional<SalaryArchiveItemPO> optional = CollectionUtils.emptyIfNull(effectiveItemListMap.get(salaryItemAdjustRecord.getSalaryArchiveId() + "-" + salaryItemAdjustRecord.getSalaryItemId())).stream().findFirst();
//                Date effectiveDate = optional.map(SalaryArchiveItemPO::getEffectiveTime).orElse(null);
//                List<Permission> permissions = weaTable.getOperatesPermission().get(i);
//                for (int j = 0; j < permissions.size(); j++) {
//                    Permission permission = permissions.get(j);
//                    if (j > 0 && effectiveDate != null && salaryItemAdjustRecord.getEffectiveTime().isBefore(effectiveDate)) {
//                        permission.setVisible(false);
//                        permission.setDisabled(true);
//                    } else if (effectiveDate != null
//                            && ((j == 0 && !salaryItemAdjustRecord.getEffectiveTime().isBefore(effectiveDate))
//                            || (j == 2 && salaryItemAdjustRecord.getEffectiveTime().equals(effectiveDate)))) {
//                        permission.setVisible(false);
//                        permission.setDisabled(false);
//                    }
//                }
//            }
//        }
//        // 除了删除列表，其他不需要复选框
//        if (!adjustRecordTypeEnum.equals(SalaryArchiveAdjustRecordTypeEnum.ADJUSTRECORDFORDELETE)) {
//            weaTable.setTableType(WeaTableTypeEnum.NONE);
//        }
//        // 除了调薪列表，其他不需要操作列
//        if (!adjustRecordTypeEnum.equals(SalaryArchiveAdjustRecordTypeEnum.ADJUSTRECORD)) {
//            weaTable.setOperates(Collections.emptyList());
//        }
//        // 在外展示操作按钮
//        CollectionUtils.emptyIfNull(weaTable.getOperates()).forEach(operate -> {
//            if (operate.getIndex() < 2) {
//                operate.setOuter(Boolean.TRUE);
//            }
//        });
//        weaTable.setPageUid(adjustRecordTypeEnum.getPageUid());
//        weaTable.setModule("hrmsalary");
//        return weaTable;
//    }

    /**
     * 构建单个档案调薪记录表格
     *
     * @param effectiveItemListMap
     * @param salaryArchiveId
     * @param pageUid
     * @param listPage
     * @return
     */
//    public static WeaTable<SingleSalaryItemAdjustRecordListDTO> buildSingleSalaryItemAdjustRecordTable(Map<String, List<SalaryArchiveItemPO>> effectiveItemListMap, Long salaryArchiveId, String pageUid, Page<SingleSalaryItemAdjustRecordListDTO> listPage) {
//        WeaTable<SingleSalaryItemAdjustRecordListDTO> weaTable = FormatManager.<SingleSalaryItemAdjustRecordListDTO>getInstance().genTable(SingleSalaryItemAdjustRecordListDTO.class, listPage);
//        weaTable.setModule("hrmsalary");
//        // 行记录按钮权限控制
//        for (int i = 0; i < listPage.getRecords().size(); i++) {
//            SingleSalaryItemAdjustRecordListDTO singleSalaryItemAdjustRecord = listPage.getRecords().get(i);
//            Optional<SalaryArchiveItemPO> optional = CollectionUtils.emptyIfNull(effectiveItemListMap.get(salaryArchiveId + "-" + singleSalaryItemAdjustRecord.getSalaryItemId())).stream().findFirst();
//            Date effectiveDate = optional.map(SalaryArchiveItemPO::getEffectiveTime).orElse(null);
//            List<Permission> permissions = weaTable.getOperatesPermission().get(i);
//            for (int j = 0; j < permissions.size(); j++) {
//                Permission permission = permissions.get(j);
//                if (SalaryArchiveAdjustWayEnum.BATCH.getValue().equals(singleSalaryItemAdjustRecord.getAdjustWay()) || (effectiveDate != null && singleSalaryItemAdjustRecord.getEffectiveTime().isBefore(effectiveDate))) {
//                    permission.setVisible(false);
//                    permission.setDisabled(true);
//                } else if (j > 0 && singleSalaryItemAdjustRecord.getEffectiveTime().equals(effectiveDate)) {
//                    permission.setVisible(false);
//                    permission.setDisabled(false);
//                }
//            }
//        }
//        // 在外展示操作按钮
//        weaTable.getOperates().get(0).setOuter(Boolean.TRUE);
//        weaTable.setPageUid(pageUid);
//        return weaTable;
//    }

    /**
     * 构建变更数据
     *
     * @return
     */
//    public static ChangeData buildChangeData(SalaryArchivePO salaryArchive, SalaryArchiveItemSaveParam saveParam, List<SalaryArchiveItemDetailSaveParam> salaryArchiveItems, Map<String, List<SalaryArchiveItemPO>> effectiveItemListMap, Map<String, List<SalaryArchiveItemPO>> ineffectiveItemListMap, Long employeeId, String tenantKey) {
//        // 待保存生效时间
//        Date saveEffectiveTime = saveParam.getEffectiveTime();
//        // 当天
//        Date today = Date.now();
//        // 当前时间
//        LocalDateTime nowTime = LocalDateTime.now();
//
//        List<Long> effectiveSalaryItemDels = Lists.newArrayList();
//        List<SalaryArchiveItemPO> salaryArchiveItemNews = Lists.newArrayList();
//        salaryArchiveItems.forEach(e -> {
//            boolean isNotNumber = e.getDataType().equals(SalaryArchiveFieldTypeEnum.NUMBER.getValue()) && StringUtils.isNotEmpty(e.getAdjustValue()) && !Pattern.matches(SalaryArchiveConstant.NUMBER_REGEX, e.getAdjustValue());
//            if (isNotNumber) {
//                throw new SalaryRunTimeException(e.getName() + ":" + SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 100581, "请输入数字"));
//            }
//            // 已生效
//            List<SalaryArchiveItemPO> effectiveList = Optional.ofNullable(effectiveItemListMap.get(salaryArchive.getId() + "-" + e.getSalaryItemId())).orElse(Lists.newArrayList());
//            // 当前已生效
//            SalaryArchiveItemPO effectiveSalaryItem = CollectionUtils.isNotEmpty(effectiveList) && effectiveList.size() > 0 ? effectiveList.get(0) : null;
//            // 当前已生效的前一次调整
//            SalaryArchiveItemPO effectiveBeforeSalaryItem = CollectionUtils.isNotEmpty(effectiveList) && effectiveList.size() > 1 ? effectiveList.get(1) : null;
//            // 未生效
//            SalaryArchiveItemPO ineffectiveSalaryItem = CollectionUtils.isEmpty(ineffectiveItemListMap.get(salaryArchive.getId() + "-" + e.getSalaryItemId())) ? null : ineffectiveItemListMap.get(salaryArchive.getId() + "-" + e.getSalaryItemId()).get(0);
//            SalaryItemAdjustValidDTO salaryItemAdjustValid = handleSalaryItemAdjustValid(effectiveSalaryItem, effectiveBeforeSalaryItem, ineffectiveSalaryItem, saveEffectiveTime, today, e.getAdjustValue(), effectiveSalaryItemDels);
//            if (salaryItemAdjustValid.isBefore()) {
//                throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 100429, "生效日期不可早于当前已生效的调整日期"));
//            } else if (salaryItemAdjustValid.isSame()) {
//                throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 100432, "调整前后不可相同"));
//            } else if (salaryItemAdjustValid.isSameIneffective()) {
//                throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 100434, "与未生效的调整后不可相同"));
//            }
//
//            salaryArchiveItemNews.add(SalaryArchiveItemBO.buildInsert(salaryArchive, e.getSalaryItemId(), e.getAdjustValue(), saveParam, nowTime, employeeId, tenantKey));
//        });
//        return ChangeData.builder()
//                .effectiveSalaryItemDels(effectiveSalaryItemDels)
//                .salaryArchiveItemNews(salaryArchiveItemNews)
//                .build();
//    }

    /**
     * 薪资项目调整校验处理
     *
     * @param effectiveSalaryItem
     * @param effectiveBeforeSalaryItem
     * @param ineffectiveSalaryItem
     * @param saveEffectiveTime
     * @param today
     * @param adjustValue
     * @param salaryArchiveItemDelIds
     * @return
     */
    public static SalaryItemAdjustValidDTO handleSalaryItemAdjustValid(SalaryArchiveItemPO effectiveSalaryItem,
                                                                       SalaryArchiveItemPO effectiveBeforeSalaryItem,
                                                                       SalaryArchiveItemPO ineffectiveSalaryItem,
                                                                       Date saveEffectiveTime,
                                                                       Date today,
                                                                       String adjustValue,
                                                                       List<Long> salaryArchiveItemDelIds) {

        boolean isBefore = false;
        boolean isSame = false;
        boolean isSameIneffective = false;
        if (effectiveSalaryItem != null) {
            // 当前已经生效的时间
            Date effectiveTime = effectiveSalaryItem.getEffectiveTime();
            // 1.1 如果早于<当前已生效
            if (saveEffectiveTime.before(effectiveTime)) {
                isBefore = true;
                // 1.2 如果等于当前已生效
            } else if (saveEffectiveTime.equals(effectiveTime)) {
                if (effectiveBeforeSalaryItem != null && effectiveBeforeSalaryItem.getItemValue().equals(adjustValue)) {
                    isSame = true;
                }
                if (ineffectiveSalaryItem != null && ineffectiveSalaryItem.getItemValue().equals(adjustValue)) {
                    isSameIneffective = true;
                }
                // 1.3 如果>已经生效且<=今天
            } else if (saveEffectiveTime.after(effectiveTime) && !saveEffectiveTime.after(today)) {
                if (effectiveSalaryItem.getItemValue().equals(adjustValue)) {
                    isSame = true;
                }
                if (ineffectiveSalaryItem != null && ineffectiveSalaryItem.getItemValue().equals(adjustValue)) {
                    isSameIneffective = true;
                }
                // 1.4 如果>今天
            } else if (saveEffectiveTime.after(today) && effectiveSalaryItem.getItemValue().equals(adjustValue)) {
                isSame = true;
            }
        } else if (ineffectiveSalaryItem != null && ineffectiveSalaryItem.getItemValue().equals(adjustValue)) {
            isSameIneffective = true;
        }
        boolean isError = isBefore || isSame || isSameIneffective;
        // 2.数据处理
        if (!isError && effectiveSalaryItem != null && saveEffectiveTime.equals(effectiveSalaryItem.getEffectiveTime())) {
            salaryArchiveItemDelIds.add(effectiveSalaryItem.getId());
        }
        if (!isError && ineffectiveSalaryItem != null && saveEffectiveTime.after(today)) {
            salaryArchiveItemDelIds.add(ineffectiveSalaryItem.getId());
        }
        return SalaryItemAdjustValidDTO.builder()
                .isBefore(isBefore)
                .isSame(isSame)
                .isSameIneffective(isSameIneffective)
                .salaryArchiveItemDelIds(salaryArchiveItemDelIds)
                .build();
    }

//    /**
//     * 插入
//     *
//     * @param salaryArchive
//     * @param saveParam
//     * @param nowTime
//     * @param employeeId
//     * @param tenantKey
//     */
//    public static SalaryArchiveItemPO buildInsert(SalaryArchivePO salaryArchive, Long salaryItemId, String adjustValue, SalaryArchiveItemSaveParam saveParam, LocalDateTime nowTime, Long employeeId, String tenantKey) {
//        return SalaryArchiveItemPO.builder()
//                .id(IdGenerator.generate())
//                .salaryArchiveId(saveParam.getSalaryArchiveId())
//                .employeeId(salaryArchive.getEmployeeId())
//                .effectiveTime(saveParam.getEffectiveTime())
//                .adjustWay(SalaryArchiveAdjustWayEnum.SINGLE.getValue())
//                .adjustReason(saveParam.getAdjustReason().getValue())
//                .description(saveParam.getDescription())
//                .salaryItemId(salaryItemId)
//                // 调整后
//                .itemValue(adjustValue)
//                .operator(employeeId)
//                .operateTime(nowTime)
//                .createTime(LocalDateTime.now())
//                .updateTime(LocalDateTime.now())
//                .creator(employeeId)
//                .deleteType(NumberUtils.INTEGER_ZERO)
//                .tenantKey(tenantKey)
//                .build();
//    }

    @Data
    @Builder
    @NoArgsConstructor
    @AllArgsConstructor
    public static class ChangeData {

        /**
         * 薪资档案-项目删除
         */
        List<Long> effectiveSalaryItemDels;

        /**
         * 薪资档案-项目新增
         */
        List<SalaryArchiveItemPO> salaryArchiveItemNews;
    }

}
