diff --git a/src/com/api/salary/web/SalaryArchiveController.java b/src/com/api/salary/web/SalaryArchiveController.java new file mode 100644 index 000000000..acb190965 --- /dev/null +++ b/src/com/api/salary/web/SalaryArchiveController.java @@ -0,0 +1,8 @@ +package com.api.salary.web; + +import javax.ws.rs.Path; + +@Path("/bs/hrmsalary/salaryArchive") +public class SalaryArchiveController extends com.engine.salary.web.SalaryArchiveController{ + +} diff --git a/src/com/engine/salary/biz/SalaryArchiveBiz.java b/src/com/engine/salary/biz/SalaryArchiveBiz.java new file mode 100644 index 000000000..2d2ea877b --- /dev/null +++ b/src/com/engine/salary/biz/SalaryArchiveBiz.java @@ -0,0 +1,20 @@ +package com.engine.salary.biz; + +import com.engine.salary.entity.salaryarchive.po.SalaryArchivePO; +import com.engine.salary.mapper.archive.SalaryArchiveMapper; +import org.apache.ibatis.session.SqlSession; +import weaver.conn.mybatis.MyBatisFactory; + +public class SalaryArchiveBiz { + + public SalaryArchivePO getById(Long salaryArchiveId) { + SqlSession sqlSession = MyBatisFactory.sqlSessionFactory.openSession(); + try { + SalaryArchiveMapper mapper = sqlSession.getMapper(SalaryArchiveMapper.class); + return mapper.getById(salaryArchiveId); + } finally { + sqlSession.close(); + } + } + +} diff --git a/src/com/engine/salary/biz/SalaryArchiveItemBiz.java b/src/com/engine/salary/biz/SalaryArchiveItemBiz.java new file mode 100644 index 000000000..8ac29b1eb --- /dev/null +++ b/src/com/engine/salary/biz/SalaryArchiveItemBiz.java @@ -0,0 +1,22 @@ +package com.engine.salary.biz; + +import com.engine.salary.entity.salaryarchive.param.SalaryArchiveItemQueryParam; +import com.engine.salary.entity.salaryarchive.po.SalaryArchiveItemPO; +import com.engine.salary.mapper.archive.SalaryArchiveItemMapper; +import org.apache.ibatis.session.SqlSession; +import weaver.conn.mybatis.MyBatisFactory; + +import java.util.List; + +public class SalaryArchiveItemBiz { + + public List getCurrentEffectiveItemList(SalaryArchiveItemQueryParam build) { + SqlSession sqlSession = MyBatisFactory.sqlSessionFactory.openSession(); + try { + SalaryArchiveItemMapper mapper = sqlSession.getMapper(SalaryArchiveItemMapper.class); + return mapper.listByParam(build); + } finally { + sqlSession.close(); + } + } +} diff --git a/src/com/engine/salary/biz/SalaryArchiveTaxAgentBiz.java b/src/com/engine/salary/biz/SalaryArchiveTaxAgentBiz.java new file mode 100644 index 000000000..b7e7060e0 --- /dev/null +++ b/src/com/engine/salary/biz/SalaryArchiveTaxAgentBiz.java @@ -0,0 +1,23 @@ +package com.engine.salary.biz; + +import com.engine.salary.entity.salaryarchive.param.SalaryArchiveTaxAgentQueryParam; +import com.engine.salary.entity.salaryarchive.po.SalaryArchiveTaxAgentPO; +import com.engine.salary.mapper.archive.SalaryArchiveTaxAgentMapper; +import org.apache.ibatis.session.SqlSession; +import weaver.conn.mybatis.MyBatisFactory; + +import java.util.List; + +public class SalaryArchiveTaxAgentBiz { + + public List listByParam(SalaryArchiveTaxAgentQueryParam build) { + SqlSession sqlSession = MyBatisFactory.sqlSessionFactory.openSession(); + try { + SalaryArchiveTaxAgentMapper mapper = sqlSession.getMapper(SalaryArchiveTaxAgentMapper.class); + return mapper.listByParam(build); + } finally { + sqlSession.close(); + } + } + +} diff --git a/src/com/engine/salary/entity/salaryarchive/bo/SalaryArchiveBO.java b/src/com/engine/salary/entity/salaryarchive/bo/SalaryArchiveBO.java new file mode 100644 index 000000000..3d8c3c474 --- /dev/null +++ b/src/com/engine/salary/entity/salaryarchive/bo/SalaryArchiveBO.java @@ -0,0 +1,163 @@ +package com.engine.salary.entity.salaryarchive.bo; + +/** + * @Description: 薪资档案 + * @Author: wangxiangzhong + * @Date: 2021-11-03 10:51 + */ +public class SalaryArchiveBO { + + @Override + public String toString() { + return "SalaryArchiveBO{}"; + } + + /** + * 添加日期范围 + * @param weaSearchCondition + * @param employeeId + * @param tenantKey + */ +// public static void addDatePickerRangeOtherParams(WeaSearchCondition weaSearchCondition, String datePickerKey, Long employeeId, String tenantKey) { +// WeaSearchConditionItem datePickerItem = weaSearchCondition.getItems().get(datePickerKey); +// Map otherParams = Maps.newHashMap(); +// otherParams.put("isRange", true); +// otherParams.put("type", "day"); +// otherParams.put("startPlaceholder", SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 90648, "开始日期")); +// otherParams.put("endPlaceholder", SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 90649, "结束日期")); +// datePickerItem.setOtherParams(otherParams); +// weaSearchCondition.getItems().put(datePickerKey, datePickerItem); +// } + + /** + * 构建表格动态列 + * @param weaTable + * @param salaryItems + * @param employeeId + * @param tenantKey + * @param size + */ +// public static void buildSalaryArchiveTable(WeaTable weaTable, List salaryItems, Long employeeId, String tenantKey, int size) { +// // 表格表头 +// List columns = new ArrayList<>(); +// columns.add(new WeaTableColumn(SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 85429, "姓名"), "username", "100")); +// columns.add(new WeaTableColumn(SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 86184, "个税扣缴义务人"), "taxAgentName", "100")); +// columns.add(new WeaTableColumn(SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 86185, "部门"), "departmentName", "100")); +// columns.add(new WeaTableColumn(SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 86186, "手机号"), "mobile", "100")); +// columns.add(new WeaTableColumn(SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 86187, "员工状态"), "employeeStatus", "100")); +// for (SalaryItemPO salaryItem : salaryItems) { +// columns.add(new WeaTableColumn(salaryItem.getName(), salaryItem.getId() + SalaryItemConstant.DYNAMIC_SUFFIX, "150")); +// } +// weaTable.setColumns(columns); +// +// List operates = weaTable.getOperates(); +// operates.add(new WeaTableOperate(SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 90821, "查看"), 0)); +// +// weaTable.setOperatesPermission(getDefaultOperatesPermission(operates.size(), size)); +// weaTable.setCheckBoxPermission(getDefaultCheckBoxPermission(size)); +// +// weaTable.setTableType(WeaTableTypeEnum.CHECKBOX); +// } +// +// private static List> getDefaultOperatesPermission(int operateSize, int recordSize) { +// List> permissionList = Lists.newArrayList(); +// for (int i=0; i permissions = Lists.newArrayList(); +// for (int j=0; j getDefaultCheckBoxPermission(int recordSize) { +// List permissionList = Lists.newArrayList(); +// for (int i=0; i buildSalaryArchiveData(List salaryArchiveTaxAgentList, +// List salaryArchiveItemDataList, +// LocalDateRange localDateRange, +// List allEmployeeIds, +// boolean isOnlyTaxAgent) { +// // 开始日期 +// LocalDate start = localDateRange.getFromDate(); +// // 结束日期 +// LocalDate end = localDateRange.getEndDate(); +// +// List list = new ArrayList<>(); +// allEmployeeIds.forEach(e->{ +// // 同一个人的个税扣缴义务人调整历史数据 +// List salaryArchiveTaxAgents = salaryArchiveTaxAgentList.stream().filter(f->f.getEmployeeId().equals(e)).collect(Collectors.toList()); +// // 同一个人的薪资项目调整历史数据 +// List salaryArchiveItems = salaryArchiveItemDataList.stream().filter(d->d.getEmployeeId().equals(e)).collect(Collectors.toList()); +// List salaryArchiveItemIds = salaryArchiveItems.stream().map(SalaryArchiveItemPO::getSalaryItemId).distinct().collect(Collectors.toList()); +// +// SalaryArchiveDataDTO salaryArchiveData = new SalaryArchiveDataDTO(); +// salaryArchiveData.setEmployeeId(e); +// List taxAgents = new ArrayList<>(); +// // 按个税扣缴义务人生效日期时间段切割 +// LocalDate endTemp = end; +// for (SalaryArchiveTaxAgentPO salaryArchiveTaxAgent : salaryArchiveTaxAgents) { +// Date fromDate = salaryArchiveTaxAgent.getEffectiveTime(); +// if (fromDate.isAfter(endTemp) || !endTemp.isAfter(start)) { +// continue; +// } +// SalaryArchiveTaxAgentDataDTO taxAgent = new SalaryArchiveTaxAgentDataDTO(); +// taxAgent.setTaxAgentId(salaryArchiveTaxAgent.getTaxAgentId()); +// taxAgent.setEffectiveDateRange(LocalDateRange.builder().fromDate((fromDate.isBefore(start)?start:fromDate)).endDate(endTemp).build()); +// +// // 薪资项目数据按个税扣缴义务人切割 +// if (!isOnlyTaxAgent) { +// // 开始日期 +// LocalDate startItem = taxAgent.getEffectiveDateRange().getFromDate(); +// // 结束日期 +// LocalDate endItem = taxAgent.getEffectiveDateRange().getEndDate(); +// LocalDate endTempItem = endItem; +// List salaryItemValues = new ArrayList<>(); +// +// for (Long salaryArchiveItemId : salaryArchiveItemIds) { +// for (SalaryArchiveItemPO salaryArchiveItem : salaryArchiveItems) { +// if (!salaryArchiveItemId.equals(salaryArchiveItem.getSalaryItemId())) { +// continue; +// } +// LocalDate fromDateItem = salaryArchiveItem.getEffectiveTime(); +// if (fromDateItem.isAfter(endTempItem) || !endTempItem.isAfter(startItem)) { +// continue; +// } +// SalaryArchiveItemDataDTO salaryArchiveItemData = new SalaryArchiveItemDataDTO(); +// salaryArchiveItemData.setEffectiveDateRange(LocalDateRange.builder().fromDate((fromDateItem.isBefore(startItem)?startItem:fromDateItem)).endDate(endTempItem).build()); +// salaryArchiveItemData.setSalaryItemId(salaryArchiveItem.getSalaryItemId()); +// salaryArchiveItemData.setValue(salaryArchiveItem.getItemValue()); +// salaryItemValues.add(salaryArchiveItemData); +// endTempItem = fromDateItem; +// } +// endTempItem = endItem; +// } +// +// taxAgent.setSalaryItemValues(salaryItemValues); +// } +// +// taxAgents.add(taxAgent); +// endTemp = fromDate; +// } +// salaryArchiveData.setTaxAgents(taxAgents); +// list.add(salaryArchiveData); +// }); +// +// return list; +// } +} diff --git a/src/com/engine/salary/entity/salaryarchive/bo/SalaryArchiveItemBO.java b/src/com/engine/salary/entity/salaryarchive/bo/SalaryArchiveItemBO.java new file mode 100644 index 000000000..6039e1f59 --- /dev/null +++ b/src/com/engine/salary/entity/salaryarchive/bo/SalaryArchiveItemBO.java @@ -0,0 +1,30 @@ +package com.engine.salary.entity.salaryarchive.bo; + +/** + * @Description: 薪资档案-薪资项目 + * @Author: wangxiangzhong + * @Date: 2021-11-03 10:51 + */ +public class SalaryArchiveItemBO { + +// @Override +// public String toString() { +// return "SalaryArchiveItemBO{}"; +// } +// +// public static List buildRecordTableColumns(Long employeeId, String tenantKey) { +// List result = Lists.newArrayListWithExpectedSize(3); +// result.add(new WeaTableColumnWapper(SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 84960, "薪资项目"), "salaryItem", "150", WeaAlignEnum.CENTER.getStringVal(), "salaryItem", true)); +// result.add(new WeaTableColumnWapper(SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 85433, "调整前"), "salaryBefore", "150", WeaAlignEnum.CENTER.getStringVal(), "salaryBefore")); +// result.add(new WeaTableColumnWapper(SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 85434, "调整后"), "adjustAfter", "150", WeaAlignEnum.CENTER.getStringVal(), "adjustAfter", true)); +// return result; +// } +// +// public static Map buildEditableTableItemMap(List> salaryItems) { +// Map resultMap = Maps.newHashMapWithExpectedSize(9); +// resultMap.put("salaryItem", new EditableTableItem(EditableTableItemType.SELECT, "", salaryItems,true,false)); +// resultMap.put("salaryBefore", new EditableTableItem(EditableTableItemType.INPUT, "", true)); +// resultMap.put("adjustAfter", new EditableTableItem(EditableTableItemType.INPUT, "", null, true,false)); +// return resultMap; +// } +} diff --git a/src/com/engine/salary/entity/salaryarchive/bo/TaxAgentBO.java b/src/com/engine/salary/entity/salaryarchive/bo/TaxAgentBO.java new file mode 100644 index 000000000..f60d27327 --- /dev/null +++ b/src/com/engine/salary/entity/salaryarchive/bo/TaxAgentBO.java @@ -0,0 +1,70 @@ +package com.engine.salary.entity.salaryarchive.bo; + +import com.engine.salary.entity.salaryarchive.dto.TaxAgentListDTO; +import com.engine.salary.entity.salaryarchive.param.TaxAgentSaveParam; +import com.engine.salary.entity.taxrate.TaxAgent; +import org.apache.commons.collections4.CollectionUtils; + +import java.util.Collection; +import java.util.Collections; +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +/** + * 个税扣缴义务人 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +public class TaxAgentBO { + + @Override + public String toString() { + return "TaxAgentBO{}"; + } + + /** + * 表数据转列表数据 + * @param individualTaxWithholdingAgents + * @param tenantKey + * @return + */ + public static List convertToListDTO(Collection individualTaxWithholdingAgents, String tenantKey) { + if (CollectionUtils.isEmpty(individualTaxWithholdingAgents)) { + return Collections.emptyList(); + } + return individualTaxWithholdingAgents.stream() + .map(e -> TaxAgentListDTO.builder() + .id(e.getId()) + .name(e.getName()) + .description(e.getDescription()) + .build()) + .collect(Collectors.toList()); + } + + /** + * 保存参数转表数据 + * @param saveParam + * @param employeeId + * @param tenantKey + * @return + */ + public static TaxAgent convertToPO(TaxAgentSaveParam saveParam, Long employeeId, String tenantKey) { + if (saveParam == null) { + return null; + } + Date now = new Date(); + return TaxAgent.builder() + .id(saveParam.getId()) + .name(saveParam.getName()) + .description(saveParam.getDescription()) + .createTime(now) + .updateTime(now) + .creator(employeeId) + .tenantKey(tenantKey) + .build(); + } +} diff --git a/src/com/engine/salary/entity/salaryarchive/dto/DimissionSetFormDTO.java b/src/com/engine/salary/entity/salaryarchive/dto/DimissionSetFormDTO.java new file mode 100644 index 000000000..0a4244afb --- /dev/null +++ b/src/com/engine/salary/entity/salaryarchive/dto/DimissionSetFormDTO.java @@ -0,0 +1,36 @@ +package com.engine.salary.entity.salaryarchive.dto; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 离职时段设置表单 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +////离职时段设置表单") +public class DimissionSetFormDTO { + +// @SalaryForm( +// label = "已离职时段", +// labelId = 93330, +// items = { +// @SalaryFormItem(itemType = WeaFormItemType.SELECT, required = true, options = "getDimissionTimeIntervalOptions()") +// } +// ) +// //已离职时段") + private String dimissionTimeInterval; + +// private List getDimissionTimeIntervalOptions () { +// return Arrays.stream(SalaryArchiveDimissionTimeIntervalEnum.values()).map(m->new WeaFormOption(String.valueOf(m.getValue()), SalaryI18nUtil.getI18nLabel(TenantContext.getCurrentTenantKey(), UserContext.getCurrentEmployeeId(), m.getLabelId(), m.getDefaultLabel()))).collect(Collectors.toList()); +// } +} diff --git a/src/com/engine/salary/entity/salaryarchive/dto/SalaryArchiveBaseInfoFormDTO.java b/src/com/engine/salary/entity/salaryarchive/dto/SalaryArchiveBaseInfoFormDTO.java new file mode 100644 index 000000000..dbe67cb51 --- /dev/null +++ b/src/com/engine/salary/entity/salaryarchive/dto/SalaryArchiveBaseInfoFormDTO.java @@ -0,0 +1,91 @@ +package com.engine.salary.entity.salaryarchive.dto; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 薪资档案-基本信息 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +////薪资档案-基本信息") +public class SalaryArchiveBaseInfoFormDTO { + +// @SalaryForm( +// label = "姓名", +// labelId = 85429, +// layout = "0", +// items = { +// @SalaryFormItem(itemType = WeaFormItemType.INPUT, readOnly = true) +// } +// ) +// //姓名") + private String username; + + +// @SalaryForm( +// label = "部门", +// labelId = 86185, +// layout = "0", +// items = { +// @SalaryFormItem(itemType = WeaFormItemType.INPUT, readOnly = true) +// } +// ) +// //部门") + private String department; + + +// @SalaryForm( +// label = "岗位", +// labelId = 90633, +// layout = "0", +// items = { +// @SalaryFormItem(itemType = WeaFormItemType.INPUT, readOnly = true) +// } +// ) +// //岗位") + private String position; + +// @SalaryForm( +// label = "入职日期", +// labelId = 86319, +// layout = "1", +// items = { +// @SalaryFormItem(itemType = WeaFormItemType.INPUT, readOnly = true) +// } +// ) +// //入职日期") + private String hiredate; + +// @SalaryForm( +// label = "手机号", +// labelId = 86186, +// layout = "1", +// items = { +// @SalaryFormItem(itemType = WeaFormItemType.INPUT, readOnly = true) +// } +// ) +// //手机号") + private String mobile; + +// @SalaryForm( +// label = "个税扣缴义务人", +// labelId = 86184, +// layout = "1", +// items = { +// @SalaryFormItem(itemType = WeaFormItemType.INPUT, readOnly = true) +// } +// ) +// //个税扣缴义务人") + private String taxAgent; + +} diff --git a/src/com/engine/salary/entity/salaryarchive/dto/SalaryArchiveDataDTO.java b/src/com/engine/salary/entity/salaryarchive/dto/SalaryArchiveDataDTO.java new file mode 100644 index 000000000..674cca29c --- /dev/null +++ b/src/com/engine/salary/entity/salaryarchive/dto/SalaryArchiveDataDTO.java @@ -0,0 +1,29 @@ +package com.engine.salary.entity.salaryarchive.dto; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +/** + * 薪资档案数据 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class SalaryArchiveDataDTO { + + //人员id + private Long employeeId; + + //个税扣缴义务人 + private List taxAgents; +} diff --git a/src/com/engine/salary/entity/salaryarchive/dto/SalaryArchiveFormDTO.java b/src/com/engine/salary/entity/salaryarchive/dto/SalaryArchiveFormDTO.java new file mode 100644 index 000000000..77fbc5441 --- /dev/null +++ b/src/com/engine/salary/entity/salaryarchive/dto/SalaryArchiveFormDTO.java @@ -0,0 +1,38 @@ +package com.engine.salary.entity.salaryarchive.dto; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 薪资档案 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +//员工薪资档案") +public class SalaryArchiveFormDTO { + + //主键id") + private Long id; + + //人员信息表的主键id") + private Long employeeId; + + //基本信息") +// private WeaForm baseInfo; +// +// //薪资档案") +// private WeaForm adjustSalaryItems; +// +// //薪资项目调整记录的高级搜索") +// private WeaSearchCondition salaryItemAdjustRecordSearchCondition; + +} diff --git a/src/com/engine/salary/entity/salaryarchive/dto/SalaryArchiveInitImportDTO.java b/src/com/engine/salary/entity/salaryarchive/dto/SalaryArchiveInitImportDTO.java new file mode 100644 index 000000000..2fb165b8b --- /dev/null +++ b/src/com/engine/salary/entity/salaryarchive/dto/SalaryArchiveInitImportDTO.java @@ -0,0 +1,32 @@ +package com.engine.salary.entity.salaryarchive.dto; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +/** + * 薪资档案初始化导入记录 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class SalaryArchiveInitImportDTO { + /** + * 人员id + */ + private Long employeeId; + + /** + * 同一个人的多条记录 + */ + private List sames; +} diff --git a/src/com/engine/salary/entity/salaryarchive/dto/SalaryArchiveInitImportSameDTO.java b/src/com/engine/salary/entity/salaryarchive/dto/SalaryArchiveInitImportSameDTO.java new file mode 100644 index 000000000..e1ce3ef44 --- /dev/null +++ b/src/com/engine/salary/entity/salaryarchive/dto/SalaryArchiveInitImportSameDTO.java @@ -0,0 +1,38 @@ +package com.engine.salary.entity.salaryarchive.dto; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Map; + +/** + * 薪资档案初始化导入相同记录 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class SalaryArchiveInitImportSameDTO { + + /** + * 当前行是否错误 + */ + private boolean isError; + + /** + * 行索引 + */ + private int rowNo; + + /** + * 对应行数据 + */ + private Map row; +} diff --git a/src/com/engine/salary/entity/salaryarchive/dto/SalaryArchiveItemBaseDTO.java b/src/com/engine/salary/entity/salaryarchive/dto/SalaryArchiveItemBaseDTO.java new file mode 100644 index 000000000..479581e4e --- /dev/null +++ b/src/com/engine/salary/entity/salaryarchive/dto/SalaryArchiveItemBaseDTO.java @@ -0,0 +1,56 @@ +package com.engine.salary.entity.salaryarchive.dto; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 薪资项目调整-基本调整信息 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +//薪资项目调整-基本调整信息") +public class SalaryArchiveItemBaseDTO { + +// @SalaryForm( +// label = "生效日期", +// labelId = 85904, +// items = { +// @SalaryFormItem(itemType = WeaFormItemType.DATEPICKER, required = true) +// } +// ) +// //生效日期") + private String effectiveTime; + +// @SalaryForm( +// label = "调整原因", +// labelId = 85431, +// items = { +// @SalaryFormItem(itemType = WeaFormItemType.SELECT, required = true, maxLength = "50", options = "getAdjustReasonOptions()") +// } +// ) +// //调整原因") + private Long adjustReason; + +// private List getAdjustReasonOptions () { +// return Arrays.stream(SalaryArchiveItemAdjustReasonEnum.values()).map(m->new WeaFormOption(String.valueOf(m.getValue()), SalaryI18nUtil.getI18nLabel(TenantContext.getCurrentTenantKey(), UserContext.getCurrentEmployeeId(), m.getLabelId(), m.getDefaultLabel()))).collect(Collectors.toList()); +// } + +// @SalaryForm( +// label = "备注", +// labelId = 84961, +// items = { +// @SalaryFormItem(itemType = WeaFormItemType.INPUT, maxLength = "20") +// } +// ) +// //备注") + private String description; +} diff --git a/src/com/engine/salary/entity/salaryarchive/dto/SalaryArchiveItemDataDTO.java b/src/com/engine/salary/entity/salaryarchive/dto/SalaryArchiveItemDataDTO.java new file mode 100644 index 000000000..260017e52 --- /dev/null +++ b/src/com/engine/salary/entity/salaryarchive/dto/SalaryArchiveItemDataDTO.java @@ -0,0 +1,32 @@ +package com.engine.salary.entity.salaryarchive.dto; + +import com.engine.salary.common.LocalDateRange; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 薪资档案-薪资项目数据 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +//薪资档案-薪资项目数据") +public class SalaryArchiveItemDataDTO { + + //生效日期范围") + private LocalDateRange effectiveDateRange; + + //薪资项目id") + private Long salaryItemId; + + //薪资项目值") + private String value; +} diff --git a/src/com/engine/salary/entity/salaryarchive/dto/SalaryArchiveItemDataListDTO.java b/src/com/engine/salary/entity/salaryarchive/dto/SalaryArchiveItemDataListDTO.java new file mode 100644 index 000000000..24c632ede --- /dev/null +++ b/src/com/engine/salary/entity/salaryarchive/dto/SalaryArchiveItemDataListDTO.java @@ -0,0 +1,45 @@ +package com.engine.salary.entity.salaryarchive.dto; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.time.LocalDate; + +/** + * 薪资档案 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +//薪资档案-薪资项目数据列表 +public class SalaryArchiveItemDataListDTO { + + //薪资项目调整id + private Long salaryArchiveItemId; + + //人员id + private Long employeeId; + + //薪资档案id + private String salaryArchiveId; + + //调整原因 + private String adjustReason; + + //生效时间 + private LocalDate effectiveTime; + + //薪资项目id + private Long salaryItemId; + + //调整值 + private String adjustValue; +} diff --git a/src/com/engine/salary/entity/salaryarchive/dto/SalaryArchiveItemFormDTO.java b/src/com/engine/salary/entity/salaryarchive/dto/SalaryArchiveItemFormDTO.java new file mode 100644 index 000000000..3d53a5629 --- /dev/null +++ b/src/com/engine/salary/entity/salaryarchive/dto/SalaryArchiveItemFormDTO.java @@ -0,0 +1,31 @@ +package com.engine.salary.entity.salaryarchive.dto; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 薪资项目调整 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +//薪资项目调整") +public class SalaryArchiveItemFormDTO { + + //薪资档案id") + private Long salaryArchiveId; + +// //基本调整信息") +// private WeaForm salaryArchiveItemForm; +// +// //薪资项目调整明细") +// private EditableTable salaryArchiveItemDetail; +} diff --git a/src/com/engine/salary/entity/salaryarchive/dto/SalaryArchiveListDTO.java b/src/com/engine/salary/entity/salaryarchive/dto/SalaryArchiveListDTO.java new file mode 100644 index 000000000..e20701f74 --- /dev/null +++ b/src/com/engine/salary/entity/salaryarchive/dto/SalaryArchiveListDTO.java @@ -0,0 +1,66 @@ +package com.engine.salary.entity.salaryarchive.dto; + +import com.cloudstore.eccom.pc.table.WeaTableType; +import com.engine.salary.annotation.SalaryTable; +import com.engine.salary.annotation.SalaryTableOperate; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 薪资档案列表 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@SalaryTable(pageId = "a4f85287-9876-4d11-adn9-7d06e54y6rj8", tableType = WeaTableType.CHECKBOX, operates = { + @SalaryTableOperate(index = "0", text = "编辑"), + @SalaryTableOperate(index = "1", text = "删除") +}) +public class SalaryArchiveListDTO { + + private Long id; + +// @WeaFormat( +// label = "人员信息表的主键id", +// tableColumn = @TableColumn(width = "20%") +// ) + private Long employeeId; + + /** + * 姓名 + */ + private String username; + + /** + * 个税扣缴义务人 + */ + private String taxAgentName; + + /** + * 部门 + */ + private String departmentName; + + /** + * 电话 + */ + private String mobile; + + /** + * 员工状态 + */ + private String employeeStatus; +// +// /** +// * 薪资项目调整id +// */ +// private Long salaryArchiveItemId; +} diff --git a/src/com/engine/salary/entity/salaryarchive/dto/SalaryArchiveTaxAgentDataDTO.java b/src/com/engine/salary/entity/salaryarchive/dto/SalaryArchiveTaxAgentDataDTO.java new file mode 100644 index 000000000..bd1883cd2 --- /dev/null +++ b/src/com/engine/salary/entity/salaryarchive/dto/SalaryArchiveTaxAgentDataDTO.java @@ -0,0 +1,34 @@ +package com.engine.salary.entity.salaryarchive.dto; + +import com.engine.salary.common.LocalDateRange; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +/** + * 薪资档案-个税扣缴义务人数据 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +//薪资档案-个税扣缴义务人数据") +public class SalaryArchiveTaxAgentDataDTO { + + //个税扣缴义务人id") + private Long taxAgentId; + + //生效日期范围") + private LocalDateRange effectiveDateRange; + + //薪资项目数据") + private List salaryItemValues; +} diff --git a/src/com/engine/salary/entity/salaryarchive/dto/SalaryArchiveTaxAgentFormDTO.java b/src/com/engine/salary/entity/salaryarchive/dto/SalaryArchiveTaxAgentFormDTO.java new file mode 100644 index 000000000..ab52a7f8d --- /dev/null +++ b/src/com/engine/salary/entity/salaryarchive/dto/SalaryArchiveTaxAgentFormDTO.java @@ -0,0 +1,25 @@ +package com.engine.salary.entity.salaryarchive.dto; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @Description: 个税扣缴义务人调整 + * @Author: wangxiangzhong + * @Date: 2021/11/5 10:42 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +//个税扣缴义务人调整") +public class SalaryArchiveTaxAgentFormDTO { + + //薪资档案id") + private Long salaryArchiveId; + + //个税扣缴义务人调整") +// private WeaForm salaryArchiveTaxAgentForm; +} diff --git a/src/com/engine/salary/entity/salaryarchive/dto/SalaryItemAdjustRecordListDTO.java b/src/com/engine/salary/entity/salaryarchive/dto/SalaryItemAdjustRecordListDTO.java new file mode 100644 index 000000000..bf89fbe4e --- /dev/null +++ b/src/com/engine/salary/entity/salaryarchive/dto/SalaryItemAdjustRecordListDTO.java @@ -0,0 +1,141 @@ +package com.engine.salary.entity.salaryarchive.dto; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.time.LocalDate; +import java.util.Date; + +/** + * 薪资项目调整记录列表 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +//薪资项目调整记录列表") +//@TableOperates(tableType = WeaTableTypeEnum.CHECKBOX) +public class SalaryItemAdjustRecordListDTO { + + //主键id") + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** + * 人员信息表的主键id + */ + private Long employeeId; + + //姓名") +// @WeaFormat( +// label = "姓名", +// labelId = 85429, +// tableColumn = @TableColumn(width = "100") +// ) + private String username; + + //部门") +// @WeaFormat( +// label = "部门", +// labelId = 86185, +// tableColumn = @TableColumn(width = "100") +// ) + private String departmentName; + + //员工状态") +// @WeaFormat( +// label = "员工状态", +// labelId = 86187, +// tableColumn = @TableColumn(width = "100") +// ) + private String employeeStatus; + + //调整项目") +// @WeaFormat( +// label = "调整项目", +// labelId = 85432, +// tableColumn = @TableColumn(width = "100") +// ) + private String adjustItem; + + //调整前") +// @WeaFormat( +// label = "调整前", +// labelId = 85433, +// tableColumn = @TableColumn(width = "100") +// ) + private String adjustBefore; + + //调整后") +// @WeaFormat( +// label = "调整后", +// labelId = 85434, +// tableColumn = @TableColumn(width = "100") +// ) + private String adjustAfter; + + //调整原因") +// @WeaFormat( +// label = "调整原因", +// labelId = 85431, +// tableColumn = @TableColumn(width = "100") +// ) + private String adjustReason; + + //生效日期") +// @WeaFormat( +// label = "生效日期", +// labelId = 85904, +// tableColumn = @TableColumn(width = "100") +// ) + @JsonFormat(pattern = "yyyy-MM-dd") + private LocalDate effectiveTime; + + //操作人") +// @WeaFormat( +// label = "操作人", +// labelId = 85435, +// tableColumn = @TableColumn(width = "100") +// ) + private String operator; + + //操作时间") +// @WeaFormat( +// label = "操作时间", +// labelId = 85436, +// tableColumn = @TableColumn(width = "150") +// ) + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date operateTime; + + //备注") +// @WeaFormat( +// label = "备注", +// labelId = 84961, +// tableColumn = @TableColumn(width = "100") +// ) + private String description; + + /** + * 薪资档案id + */ + @JsonIgnore + private Long salaryArchiveId; + + /** + * 薪资项目id + */ + @JsonIgnore + private Long salaryItemId; +} diff --git a/src/com/engine/salary/entity/salaryarchive/dto/SingleSalaryItemAdjustRecordListDTO.java b/src/com/engine/salary/entity/salaryarchive/dto/SingleSalaryItemAdjustRecordListDTO.java new file mode 100644 index 000000000..dce9afbc5 --- /dev/null +++ b/src/com/engine/salary/entity/salaryarchive/dto/SingleSalaryItemAdjustRecordListDTO.java @@ -0,0 +1,105 @@ +package com.engine.salary.entity.salaryarchive.dto; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @Description: 薪资项目调整记录列表 + * @Author: wangxiangzhong + * @Date: 2021/11/1 16:34 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +//薪资项目调整记录列表") +//@TableOperates(value = { +// @Operates(index = 0, text = "编辑" ,labelId = 59943), +// @Operates(index = 1, text = "删除" ,labelId = 59942) +//}, tableType = WeaTableTypeEnum.NONE) +public class SingleSalaryItemAdjustRecordListDTO { + +// //主键id") +// @JsonSerialize(using = ToStringSerializer.class) + private Long id; +// +// //调整项目") +// @WeaFormat( +// label = "调整项目", +// labelId = 85432, +// tableColumn = @TableColumn(width = "20%") +// ) + private String adjustItem; +// +// //调整前") +// @WeaFormat( +// label = "调整前", +// labelId = 85433, +// tableColumn = @TableColumn(width = "20%") +// ) + private String adjustBefore; +// +// //调整后") +// @WeaFormat( +// label = "调整后", +// labelId = 85434, +// tableColumn = @TableColumn(width = "20%") +// ) +// private String adjustAfter; +// +// //调整原因") +// @WeaFormat( +// label = "调整原因", +// labelId = 85431, +// tableColumn = @TableColumn(width = "10%") +// ) +// private String adjustReason; +// +// //生效日期") +// @WeaFormat( +// label = "生效日期", +// labelId = 85430, +// tableColumn = @TableColumn(width = "15%") +// ) +// @JsonFormat(pattern = "yyyy-MM-dd") +// private LocalDate effectiveTime; +// +// //操作人") +// @WeaFormat( +// label = "操作人", +// labelId = 85435, +// tableColumn = @TableColumn(width = "10%") +// ) +// private String operator; +// +// //操作时间") +// @WeaFormat( +// label = "操作时间", +// labelId = 85436, +// tableColumn = @TableColumn(width = "20%") +// ) +// @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") +// private Date operateTime; +// +// //备注") +// @WeaFormat( +// label = "备注", +// labelId = 84961, +// tableColumn = @TableColumn(width = "10%") +// ) +// private String description; +// +// /** +// * 薪资档案id +// */ +// @JsonIgnore +// private Long salaryArchiveId; +// +// /** +// * 薪资项目id +// */ +// @JsonIgnore +// private Long salaryItemId; +} diff --git a/src/com/engine/salary/entity/salaryarchive/dto/SingleTaxAgentAdjustRecordListDTO.java b/src/com/engine/salary/entity/salaryarchive/dto/SingleTaxAgentAdjustRecordListDTO.java new file mode 100644 index 000000000..98516c604 --- /dev/null +++ b/src/com/engine/salary/entity/salaryarchive/dto/SingleTaxAgentAdjustRecordListDTO.java @@ -0,0 +1,97 @@ +package com.engine.salary.entity.salaryarchive.dto; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @Description: 个税扣缴义务人调整记录列表 + * @Author: wangxiangzhong + * @Date: 2021/11/1 16:34 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +//个税扣缴义务人调整记录列表") +//@TableOperates(value = { +// @Operates(index = 0, text = "编辑" ,labelId = 59943), +// @Operates(index = 1, text = "删除" ,labelId = 59942) +//}, tableType = WeaTableTypeEnum.NONE) +public class SingleTaxAgentAdjustRecordListDTO { +// //主键id") +// @JsonSerialize(using = ToStringSerializer.class) + private Long id; +// +// //调整前") +// @WeaFormat( +// label = "调整前", +// labelId = 85433, +// tableColumn = @TableColumn(width = "20%") +// ) + private String adjustBefore; +// +// //调整后") +// @WeaFormat( +// label = "调整后", +// labelId = 85434, +// tableColumn = @TableColumn(width = "20%") +// ) + private String adjustAfter; +// +// //调整原因") +// @WeaFormat( +// label = "调整原因", +// labelId = 85431, +// tableColumn = @TableColumn(width = "10%") +// ) +// private String adjustReason; +// +// //生效日期") +// @WeaFormat( +// label = "生效日期", +// labelId = 85430, +// tableColumn = @TableColumn(width = "15%") +// ) +// @JsonFormat(pattern = "yyyy-MM-dd") +// private LocalDate effectiveTime; +// +// //操作人") +// @WeaFormat( +// label = "操作人", +// labelId = 85435, +// tableColumn = @TableColumn(width = "10%") +// ) +// private String operator; +// +// //操作时间") +// @WeaFormat( +// label = "操作时间", +// labelId = 85436, +// tableColumn = @TableColumn(width = "20%") +// ) +// @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") +// private Date operateTime; +// +// //备注") +// @WeaFormat( +// label = "备注", +// labelId = 84961, +// tableColumn = @TableColumn(width = "10%") +// ) +// private String description; +// +// /** +// * 薪资档案id +// */ +// @JsonIgnore +// private Long salaryArchiveId; +// +// /** +// * 个税扣缴义务人id +// */ +// @JsonIgnore +// private Long taxAgentId; + +} diff --git a/src/com/engine/salary/entity/salaryarchive/dto/TaxAgentAdjustRecordListDTO.java b/src/com/engine/salary/entity/salaryarchive/dto/TaxAgentAdjustRecordListDTO.java new file mode 100644 index 000000000..711ee0342 --- /dev/null +++ b/src/com/engine/salary/entity/salaryarchive/dto/TaxAgentAdjustRecordListDTO.java @@ -0,0 +1,125 @@ +package com.engine.salary.entity.salaryarchive.dto; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @Description: 个税扣缴义务人调整记录列表 + * @Author: wangxiangzhong + * @Date: 2021/11/1 16:34 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +//个税扣缴义务人调整记录列表") +//@TableOperates(tableType = WeaTableTypeEnum.CHECKBOX) +public class TaxAgentAdjustRecordListDTO { + //主键id") + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + +// /** +// * 人员信息表的主键id +// */ +// private Long employeeId; +// +// //姓名") +// @WeaFormat( +// label = "姓名", +// labelId = 85429, +// tableColumn = @TableColumn(width = "100") +// ) +// private String username; +// +// //部门") +// @WeaFormat( +// label = "部门", +// labelId = 86185, +// tableColumn = @TableColumn(width = "100") +// ) +// private String departmentName; +// +// //员工状态") +// @WeaFormat( +// label = "员工状态", +// labelId = 86187, +// tableColumn = @TableColumn(width = "100") +// ) +// private String employeeStatus; +// +// //调整前") +// @WeaFormat( +// label = "调整前", +// labelId = 85433, +// tableColumn = @TableColumn(width = "100") +// ) +// private String adjustBefore; +// +// //调整后") +// @WeaFormat( +// label = "调整后", +// labelId = 85434, +// tableColumn = @TableColumn(width = "100") +// ) +// private String adjustAfter; +// +// //调整原因") +// @WeaFormat( +// label = "调整原因", +// labelId = 85431, +// tableColumn = @TableColumn(width = "100") +// ) +// private String adjustReason; +// +// //生效日期") +// @WeaFormat( +// label = "生效日期", +// labelId = 85904, +// tableColumn = @TableColumn(width = "100") +// ) +// @JsonFormat(pattern = "yyyy-MM-dd") +// private LocalDate effectiveTime; +// +// //操作人") +// @WeaFormat( +// label = "操作人", +// labelId = 85435, +// tableColumn = @TableColumn(width = "100") +// ) +// private String operator; +// +// //操作时间") +// @WeaFormat( +// label = "操作时间", +// labelId = 85436, +// tableColumn = @TableColumn(width = "150") +// ) +// @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") +// private Date operateTime; +// +// //备注") +// @WeaFormat( +// label = "备注", +// labelId = 84961, +// tableColumn = @TableColumn(width = "100") +// ) +// private String description; +// +// /** +// * 薪资档案id +// */ +// @JsonIgnore +// private Long salaryArchiveId; +// +// /** +// * 个税扣缴义务人id +// */ +// @JsonIgnore +// private Long taxAgentId; + +} diff --git a/src/com/engine/salary/entity/salaryarchive/dto/TaxAgentFormDTO.java b/src/com/engine/salary/entity/salaryarchive/dto/TaxAgentFormDTO.java new file mode 100644 index 000000000..94eee9bea --- /dev/null +++ b/src/com/engine/salary/entity/salaryarchive/dto/TaxAgentFormDTO.java @@ -0,0 +1,38 @@ +package com.engine.salary.entity.salaryarchive.dto; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @Description: 个税扣缴义务人表单 + * @Author: wangxiangzhong + * @Date: 2021/10/29 16:12 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +//个税扣缴义务人表单") +public class TaxAgentFormDTO { + + //主键id") + private Long id; +// +// @WeaFormat( +// label = "名称", +// labelId = 1252, +// from = @Form(itemType = WeaFormItemType.INPUT, required = true, maxLength = "20") +// ) +// //名称") +// private String name; +// +// @WeaFormat( +// label = "备注", +// labelId = 84961, +// from = @Form(itemType = WeaFormItemType.INPUT, maxLength = "20") +// ) +// //备注") +// private String description; +} diff --git a/src/com/engine/salary/entity/salaryarchive/dto/TaxAgentListDTO.java b/src/com/engine/salary/entity/salaryarchive/dto/TaxAgentListDTO.java new file mode 100644 index 000000000..910f0c619 --- /dev/null +++ b/src/com/engine/salary/entity/salaryarchive/dto/TaxAgentListDTO.java @@ -0,0 +1,45 @@ +package com.engine.salary.entity.salaryarchive.dto; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @Description: 个税扣缴义务人列表 + * @Author: wangxiangzhong + * @Date: 2021/10/29 15:39 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +//个税扣缴义务人列表") +//@TableOperates(value = { +// @Operates(index = 0, text = "编辑" ,labelId = 59943), +// @Operates(index = 1, text = "删除" ,labelId = 59942) +//}, tableType = WeaTableTypeEnum.NONE) +public class TaxAgentListDTO { + + //主键id") + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + +// //个税扣缴义务人名称") +// @WeaFormat( +// label = "个税扣缴义务人名称", +// labelId = 91558, +// tableColumn = @TableColumn(width = "40%") +// ) + private String name; +// +// //备注") +// @WeaFormat( +// label = "备注", +// labelId = 84961, +// tableColumn = @TableColumn(width = "40%") +// ) + private String description; +} diff --git a/src/com/engine/salary/entity/salaryarchive/param/SalaryArchiveDimissionSaveParam.java b/src/com/engine/salary/entity/salaryarchive/param/SalaryArchiveDimissionSaveParam.java new file mode 100644 index 000000000..1171987f8 --- /dev/null +++ b/src/com/engine/salary/entity/salaryarchive/param/SalaryArchiveDimissionSaveParam.java @@ -0,0 +1,25 @@ +package com.engine.salary.entity.salaryarchive.param; + +import com.engine.salary.enums.salaryarchive.SalaryArchiveDimissionTimeIntervalEnum; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 薪资档案离职时段保存参数 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class SalaryArchiveDimissionSaveParam { + + //离职时段") + private SalaryArchiveDimissionTimeIntervalEnum dimissionTimeInterval; +} diff --git a/src/com/engine/salary/entity/salaryarchive/param/SalaryArchiveImportHandleParam.java b/src/com/engine/salary/entity/salaryarchive/param/SalaryArchiveImportHandleParam.java new file mode 100644 index 000000000..61b6bd7e8 --- /dev/null +++ b/src/com/engine/salary/entity/salaryarchive/param/SalaryArchiveImportHandleParam.java @@ -0,0 +1,113 @@ +package com.engine.salary.entity.salaryarchive.param; + +import com.engine.salary.entity.salaryarchive.dto.SalaryArchiveListDTO; +import com.engine.salary.entity.salaryarchive.dto.TaxAgentListDTO; +import com.engine.salary.entity.salaryarchive.po.SalaryArchiveEmployeePO; +import com.engine.salary.entity.salaryarchive.po.SalaryArchiveItemPO; +import com.engine.salary.entity.salaryarchive.po.SalaryArchivePO; +import com.engine.salary.entity.salaryarchive.po.SalaryArchiveTaxAgentPO; +import com.engine.salary.entity.salaryitem.po.SalaryItemPO; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.util.Collection; +import java.util.List; + +/** + * 薪资档案导入处理参数 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class SalaryArchiveImportHandleParam { + + /** + * 获取租户下所有的人员 + */ + List employees; + + /** + * 获取所有个税扣缴义务人 + */ + Collection taxAgentList; + + /** + * 获取所有可被引用的薪资项目 + */ + List salaryItems; + + /** + * 查询已有的薪资档案基本数据 + */ + Collection salaryArchives; + + /** + * 薪资项目id + */ + Collection salaryItemIds; + + /** + * 查询已生效的薪资项目数据 + */ + List effectiveItemList; + + /** + * 查询未生效的薪资项目数据 + */ + List ineffectiveItemList; + + /** + * 查询已生效的个税扣缴义务人数据 + */ + List effectiveTaxAgentList; + + /** + * 查询未生效的个税扣缴义务人数据 + */ + List ineffectiveTaxAgentList; + + /** + * 当前时间 + */ + LocalDateTime nowTime = LocalDateTime.now(); + + /** + * 当天 + */ + LocalDate today = LocalDate.now(); + + /** + * 待保存薪资档案 + */ + List salaryArchiveSaves; + + /** + * 待保存薪资档案-个税扣缴义务人 + */ + List salaryArchiveTaxAgentSaves; + + /** + * 待保存薪资档案-薪资项目 + */ + List salaryArchiveItemSaves; + + /** + * 待删除薪资档案-个税扣缴义务人 + */ + List salaryArchiveTaxAgentDelTaxAgentIds; + + /** + * 待删除薪资档案-薪资项目 + */ + List salaryArchiveItemDelSalaryItemIds; +} diff --git a/src/com/engine/salary/entity/salaryarchive/param/SalaryArchiveItemDetailSaveParam.java b/src/com/engine/salary/entity/salaryarchive/param/SalaryArchiveItemDetailSaveParam.java new file mode 100644 index 000000000..7d0223ee3 --- /dev/null +++ b/src/com/engine/salary/entity/salaryarchive/param/SalaryArchiveItemDetailSaveParam.java @@ -0,0 +1,28 @@ +package com.engine.salary.entity.salaryarchive.param; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 薪资档案-薪资项目调整详情 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +//薪资档案-薪资项目调整详情保存参数") +public class SalaryArchiveItemDetailSaveParam { + + //薪资档案项目表的主键id") + private Long salaryItemId; + + //调整值") + private String adjustValue; +} diff --git a/src/com/engine/salary/entity/salaryarchive/param/SalaryArchiveItemQueryParam.java b/src/com/engine/salary/entity/salaryarchive/param/SalaryArchiveItemQueryParam.java new file mode 100644 index 000000000..60a4a8368 --- /dev/null +++ b/src/com/engine/salary/entity/salaryarchive/param/SalaryArchiveItemQueryParam.java @@ -0,0 +1,25 @@ +package com.engine.salary.entity.salaryarchive.param; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Collection; +import java.util.Date; + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class SalaryArchiveItemQueryParam { + + /** + * 生效时间 + */ + private Date effectiveTime; + + Collection salaryItemIds; + + Collection salaryArchivesIds; +} diff --git a/src/com/engine/salary/entity/salaryarchive/param/SalaryArchiveItemSaveParam.java b/src/com/engine/salary/entity/salaryarchive/param/SalaryArchiveItemSaveParam.java new file mode 100644 index 000000000..eca4c2d74 --- /dev/null +++ b/src/com/engine/salary/entity/salaryarchive/param/SalaryArchiveItemSaveParam.java @@ -0,0 +1,72 @@ +package com.engine.salary.entity.salaryarchive.param; + +import com.engine.salary.enums.salaryarchive.SalaryArchiveItemAdjustReasonEnum; +import com.engine.salary.exception.SalaryRunTimeException; +import com.engine.salary.util.SalaryI18nUtil; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; + +import java.time.LocalDate; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +/** + * 薪资项目调整保存参数 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +//薪资项目调整保存参数") +public class SalaryArchiveItemSaveParam { + + //薪资档案id") + private Long salaryArchiveId; + + //生效时间") + private LocalDate effectiveTime; + + //调整原因") + private SalaryArchiveItemAdjustReasonEnum adjustReason; + + //备注") + private String description; + + //薪资项目") + private List salaryArchiveItems; + + public static void checkParam(SalaryArchiveItemSaveParam saveParam, Long employeeId, String tenantKey) { + if (saveParam.getSalaryArchiveId() == null) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(100305, "薪资档案id必传")); + } + if (saveParam.getAdjustReason() == null) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(100306, "请选择调整原因")); + } + if (saveParam.getEffectiveTime() == null) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(100307, "请选择生效日期")); + } + if (CollectionUtils.isEmpty(saveParam.getSalaryArchiveItems())) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(100308, "请输入薪资项目明细")); + } + Set salaryItemIds = new HashSet<>(); + for (SalaryArchiveItemDetailSaveParam e : saveParam.getSalaryArchiveItems()) { + if (e.getSalaryItemId() == null || StringUtils.isEmpty((e.getAdjustValue() + "").trim())) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(100309, "明细中的薪资项目不能为空并且调整后必须输入值")); + } + salaryItemIds.add(e.getSalaryItemId()); + } + if (saveParam.getSalaryArchiveItems().size() != salaryItemIds.size()) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(100310, "明细中的薪资项目不能重复")); + } + } +} diff --git a/src/com/engine/salary/entity/salaryarchive/param/SalaryArchiveQueryParam.java b/src/com/engine/salary/entity/salaryarchive/param/SalaryArchiveQueryParam.java new file mode 100644 index 000000000..3b4944451 --- /dev/null +++ b/src/com/engine/salary/entity/salaryarchive/param/SalaryArchiveQueryParam.java @@ -0,0 +1,47 @@ +package com.engine.salary.entity.salaryarchive.param; + +import com.engine.salary.common.BaseQueryParam; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.time.LocalDate; +import java.util.Collection; +import java.util.List; + +/** + * @Description: 薪资档案 + * @Author: wangxiangzhong + * @Date: 2021-11-03 10:51 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +//薪资档案查询参数") +public class SalaryArchiveQueryParam extends BaseQueryParam { + + private Collection ids; + + //姓名") + private String username; + + //个税扣缴义务人id") + private Long taxAgentId; + + //部门id") + private List departmentIds; + + //岗位id") + private List positionIds; + + //状态") + private String userstatus; + + //入职日期") + private List hiredate; + + //导入类型") + private String importType; +} diff --git a/src/com/engine/salary/entity/salaryarchive/param/SalaryArchiveSaveParam.java b/src/com/engine/salary/entity/salaryarchive/param/SalaryArchiveSaveParam.java new file mode 100644 index 000000000..dc5bd96fc --- /dev/null +++ b/src/com/engine/salary/entity/salaryarchive/param/SalaryArchiveSaveParam.java @@ -0,0 +1,32 @@ +package com.engine.salary.entity.salaryarchive.param; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @Description: 薪资档案 + * @Author: wangxiangzhong + * @Date: 2021-11-03 10:51 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +//薪资档案保存参数") +public class SalaryArchiveSaveParam { + + //主键") + private Long id; + + //人员信息表的主键id") + private Long employeeId; + +// public static WeaResult checkParam(SalaryArchiveSaveParam saveParam, Long employeeId, String tenantKey) { +// if (saveParam.getEmployeeId() == null) { +// return WeaResult.fail(SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 100311, "人员信息表的主键id必传")); +// } +// return WeaResult.success(StringUtils.EMPTY); +// } +} diff --git a/src/com/engine/salary/entity/salaryarchive/param/SalaryArchiveTaxAgentQueryParam.java b/src/com/engine/salary/entity/salaryarchive/param/SalaryArchiveTaxAgentQueryParam.java new file mode 100644 index 000000000..4054cf1f1 --- /dev/null +++ b/src/com/engine/salary/entity/salaryarchive/param/SalaryArchiveTaxAgentQueryParam.java @@ -0,0 +1,23 @@ +package com.engine.salary.entity.salaryarchive.param; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Collection; +import java.util.Date; + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class SalaryArchiveTaxAgentQueryParam { + + /** + * 生效时间 + */ + private Date effectiveTime; + + Collection salaryArchivesIds; +} diff --git a/src/com/engine/salary/entity/salaryarchive/param/SalaryArchiveTaxAgentSaveParam.java b/src/com/engine/salary/entity/salaryarchive/param/SalaryArchiveTaxAgentSaveParam.java new file mode 100644 index 000000000..05b7df536 --- /dev/null +++ b/src/com/engine/salary/entity/salaryarchive/param/SalaryArchiveTaxAgentSaveParam.java @@ -0,0 +1,54 @@ +package com.engine.salary.entity.salaryarchive.param; + +import com.engine.salary.enums.salaryarchive.SalaryArchiveTaxAgentAdjustReasonEnum; +import com.engine.salary.exception.SalaryRunTimeException; +import com.engine.salary.util.SalaryI18nUtil; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.time.LocalDate; + +/** + * 个税扣缴义务人调整保存参数 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +//个税扣缴义务人调整保存参数") +public class SalaryArchiveTaxAgentSaveParam { + + //薪资档案id") + private Long salaryArchiveId; + + //生效时间") + private LocalDate effectiveTime; + + //调整原因") + private SalaryArchiveTaxAgentAdjustReasonEnum adjustReason; + + //个税扣缴义务人id") + private Long taxAgentId; + + public static void checkParam(SalaryArchiveTaxAgentSaveParam saveParam, Long employeeId, String tenantKey) { + if (saveParam.getSalaryArchiveId() == null) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel( 100305, "薪资档案id必传")); + } + if (saveParam.getAdjustReason() == null) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel( 100306, "请选择调整原因")); + } + if (saveParam.getEffectiveTime() == null) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel( 100307, "请选择生效日期")); + } + if (saveParam.getTaxAgentId() == null) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel( 100313, "请选择调整后的个税扣缴义务人")); + } + } +} diff --git a/src/com/engine/salary/entity/salaryarchive/param/SalaryItemAdjustBeforeParam.java b/src/com/engine/salary/entity/salaryarchive/param/SalaryItemAdjustBeforeParam.java new file mode 100644 index 000000000..a4fba5665 --- /dev/null +++ b/src/com/engine/salary/entity/salaryarchive/param/SalaryItemAdjustBeforeParam.java @@ -0,0 +1,38 @@ +package com.engine.salary.entity.salaryarchive.param; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @Description: 薪资项目调整前参数 + * @Author: wangxiangzhong + * @Date: 2022/1/17 11:02 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +//薪资项目调整记录查询参数 +public class SalaryItemAdjustBeforeParam { + + //薪资档案id + private Long salaryArchiveId; + + //薪资项目id + private Long salaryItemId; + + //薪资档案的薪资项目id + private Long salaryArchiveItemId; + +// public static WeaResult checkParam(SalaryItemAdjustBeforeParam adjustBeforeParam, Long employeeId, String tenantKey) { +// if (adjustBeforeParam.getSalaryArchiveId() == null) { +// return WeaResult.fail(SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 100305, "薪资档案id必传")); +// } +// if (adjustBeforeParam.getSalaryItemId() == null) { +// return WeaResult.fail(SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 100314, "薪资项目id必传")); +// } +// return WeaResult.success(StringUtils.EMPTY); +// } +} diff --git a/src/com/engine/salary/entity/salaryarchive/param/SalaryItemAdjustRecordQueryParam.java b/src/com/engine/salary/entity/salaryarchive/param/SalaryItemAdjustRecordQueryParam.java new file mode 100644 index 000000000..87cfb9420 --- /dev/null +++ b/src/com/engine/salary/entity/salaryarchive/param/SalaryItemAdjustRecordQueryParam.java @@ -0,0 +1,69 @@ +package com.engine.salary.entity.salaryarchive.param; + +import com.engine.salary.common.BaseQueryParam; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.time.LocalDate; +import java.util.Collection; +import java.util.List; + +/** + * 薪资档案操作记录查询参数 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +//薪资项目调整记录查询参数 +public class SalaryItemAdjustRecordQueryParam extends BaseQueryParam { + + //主键id + private Collection ids; + + //薪资档案id + private Long salaryArchiveId; + + //关键字(姓名、部门、薪资项目名称) + private String keyword; + + //姓名 + private String username; + + //员工id + private Long employeeId; + + //部门id + private List departmentIds; + + //岗位 + private List positionIds; + + //状态 + private String userstatus; + + //项目名称 + private String adjustItem; + + //调整原因 + private String adjustReason; + + //生效日期 + private List effectiveTime; + + //操作日期 + private List operateTime; + + //操作人id + private List operatorIds; + + //备注 + private String description; +} diff --git a/src/com/engine/salary/entity/salaryarchive/param/SingleSalaryItemAdjustRecordQueryParam.java b/src/com/engine/salary/entity/salaryarchive/param/SingleSalaryItemAdjustRecordQueryParam.java new file mode 100644 index 000000000..b92199ef7 --- /dev/null +++ b/src/com/engine/salary/entity/salaryarchive/param/SingleSalaryItemAdjustRecordQueryParam.java @@ -0,0 +1,50 @@ +package com.engine.salary.entity.salaryarchive.param; + +import com.engine.salary.common.BaseQueryParam; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.time.LocalDate; +import java.util.List; + +/** + * 薪资档案操作记录查询参数 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +//薪资项目调整记录查询参数 +public class SingleSalaryItemAdjustRecordQueryParam extends BaseQueryParam { + + //薪资档案id + private Long salaryArchiveId; + + //关键字(姓名、部门、薪资项目名称) + private String keyword; + + //项目名称 + private String adjustItem; + + //调整原因 + private String adjustReason; + + //生效日期 + private List effectiveTime; + + //操作日期 + private List operateTime; + + //操作人id + private List operatorIds; + + //备注 + private String description; +} diff --git a/src/com/engine/salary/entity/salaryarchive/param/SingleTaxAgentAdjustRecordQueryParam.java b/src/com/engine/salary/entity/salaryarchive/param/SingleTaxAgentAdjustRecordQueryParam.java new file mode 100644 index 000000000..47316e668 --- /dev/null +++ b/src/com/engine/salary/entity/salaryarchive/param/SingleTaxAgentAdjustRecordQueryParam.java @@ -0,0 +1,54 @@ +package com.engine.salary.entity.salaryarchive.param; + +import com.engine.salary.common.BaseQueryParam; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.time.LocalDate; +import java.util.Collection; +import java.util.List; + +/** + * 个税扣缴义务人调整记录查询参数 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +//个税扣缴义务人调整记录查询参数 +public class SingleTaxAgentAdjustRecordQueryParam extends BaseQueryParam { + + //主键id + private Collection ids; + + //薪资档案id + private Long salaryArchiveId; + + //关键字(姓名、部门、个税扣缴义务人) + private String keyword; + + //个税扣缴义务人id + private Long taxAgentId; + + //调整原因 + private String adjustReason; + + //生效日期 + private List effectiveTime; + + //操作日期 + private List operateTime; + + //操作人id + private List operatorIds; + + //备注 + private String description; +} diff --git a/src/com/engine/salary/entity/salaryarchive/param/TaxAgentAdjustRecordQueryParam.java b/src/com/engine/salary/entity/salaryarchive/param/TaxAgentAdjustRecordQueryParam.java new file mode 100644 index 000000000..6fb5bbeec --- /dev/null +++ b/src/com/engine/salary/entity/salaryarchive/param/TaxAgentAdjustRecordQueryParam.java @@ -0,0 +1,66 @@ +package com.engine.salary.entity.salaryarchive.param; + +import com.engine.salary.common.BaseQueryParam; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.time.LocalDate; +import java.util.Collection; +import java.util.List; + +/** + * 个税扣缴义务人调整记录查询参数 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +//个税扣缴义务人调整记录查询参数 +public class TaxAgentAdjustRecordQueryParam extends BaseQueryParam { + + //主键id + private Collection ids; + + //薪资档案id + private Long salaryArchiveId; + + //关键字(姓名、部门、个税扣缴义务人) + private String keyword; + + //姓名 + private String username; + + //部门id + private List departmentIds; + + //岗位id + private List positionIds; + + //状态 + private String userstatus; + + //个税扣缴义务人id + private Long taxAgentId; + + //调整原因 + private String adjustReason; + + //生效日期 + private List effectiveTime; + + //操作日期 + private List operateTime; + + //操作人id + private List operatorIds; + + //备注 + private String description; +} diff --git a/src/com/engine/salary/entity/salaryarchive/param/TaxAgentQueryParam.java b/src/com/engine/salary/entity/salaryarchive/param/TaxAgentQueryParam.java new file mode 100644 index 000000000..84b7a262d --- /dev/null +++ b/src/com/engine/salary/entity/salaryarchive/param/TaxAgentQueryParam.java @@ -0,0 +1,30 @@ +package com.engine.salary.entity.salaryarchive.param; + +import com.engine.salary.common.BaseQueryParam; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Collection; + +/** + * 个税扣缴义务人查询参数 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +//个税扣缴义务人查询参数") +public class TaxAgentQueryParam extends BaseQueryParam { + + private Collection ids; + + //个税扣缴义务人名称") + private String name; +} diff --git a/src/com/engine/salary/entity/salaryarchive/param/TaxAgentSaveParam.java b/src/com/engine/salary/entity/salaryarchive/param/TaxAgentSaveParam.java new file mode 100644 index 000000000..f9762fa5a --- /dev/null +++ b/src/com/engine/salary/entity/salaryarchive/param/TaxAgentSaveParam.java @@ -0,0 +1,38 @@ +package com.engine.salary.entity.salaryarchive.param; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 个税扣缴义务人保存参数 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +//个税扣缴义务人保存参数") +public class TaxAgentSaveParam { + + //主键id + private Long id; + + //名称 + private String name; + + //备注 + private String description; + +// public static WeaResult checkParam(TaxAgentSaveParam saveParam, Long employeeId, String tenantKey) { +// if (StringUtils.isEmpty(saveParam.getName())) { +// return WeaResult.fail(SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 100318, "名称必填")); +// } +// return WeaResult.success(StringUtils.EMPTY); +// } +} diff --git a/src/com/engine/salary/entity/salaryarchive/po/SalaryArchiveDimissionPO.java b/src/com/engine/salary/entity/salaryarchive/po/SalaryArchiveDimissionPO.java new file mode 100644 index 000000000..2abfdd7c4 --- /dev/null +++ b/src/com/engine/salary/entity/salaryarchive/po/SalaryArchiveDimissionPO.java @@ -0,0 +1,59 @@ +package com.engine.salary.entity.salaryarchive.po; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.time.LocalDateTime; + +/** + * 薪资档案离职时段表 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +//hrsa_salary_archive_dimission +public class SalaryArchiveDimissionPO { + + /** + * 主键 + */ + private Long id; + + /** + * 离职时段 + */ + private String dimissionTimeInterval; + + /** + * 创建时间 + */ + private LocalDateTime createTime; + + /** + * 更新时间 + */ + private LocalDateTime updateTime; + + /** + * 创建人 + */ + private Long creator; + + /** + * 是否已删除。0:未删除、1:已删除 + */ + private Integer deleteType; + + /** + * 租户ID + */ + private String tenantKey; +} diff --git a/src/com/engine/salary/entity/salaryarchive/po/SalaryArchiveEmployeePO.java b/src/com/engine/salary/entity/salaryarchive/po/SalaryArchiveEmployeePO.java new file mode 100644 index 000000000..3451b26cc --- /dev/null +++ b/src/com/engine/salary/entity/salaryarchive/po/SalaryArchiveEmployeePO.java @@ -0,0 +1,31 @@ +package com.engine.salary.entity.salaryarchive.po; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 员工基本信息 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +//员工基本信息") +public class SalaryArchiveEmployeePO { + + //员工id + private Long employeeId; + + //姓名 + private String username; + + //部门 + private String deparmentName; +} diff --git a/src/com/engine/salary/entity/salaryarchive/po/SalaryArchiveItemPO.java b/src/com/engine/salary/entity/salaryarchive/po/SalaryArchiveItemPO.java new file mode 100644 index 000000000..0587e4901 --- /dev/null +++ b/src/com/engine/salary/entity/salaryarchive/po/SalaryArchiveItemPO.java @@ -0,0 +1,104 @@ +package com.engine.salary.entity.salaryarchive.po; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Collection; +import java.util.Date; + +/** + * 薪资档案薪资项目 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +//hrsa_salary_archive_item +public class SalaryArchiveItemPO { + + /** + * 主键id + */ + private Long id; + + /** + * 薪资档案表的主键id + */ + private Long salaryArchiveId; + + /** + * 人员信息表的主键id + */ + private Long employeeId; + + /** + * 生效时间 + */ + private Date effectiveTime; + + /** + * 调整原因 + */ + private String adjustReason; + + /** + * 薪资项目表的主键id + */ + private Long salaryItemId; + + /** + * 薪资项目值 + */ + private String itemValue; + + /** + * 备注 + */ + private String description; + + /** + * 操作人 + */ + private Long operator; + + /** + * 操作时间 + */ + private Date operateTime; + + /** + * 创建时间 + */ + private Date createTime; + + /** + * 更新时间 + */ + private Date updateTime; + + /** + * 创建人 + */ + private Long creator; + + /** + * 是否已删除。0:未删除、1:已删除 + */ + private Integer deleteType; + + /** + * 租户ID + */ + private String tenantKey; + + + Collection ids; + +} diff --git a/src/com/engine/salary/entity/salaryarchive/po/SalaryArchivePO.java b/src/com/engine/salary/entity/salaryarchive/po/SalaryArchivePO.java new file mode 100644 index 000000000..fffa9dea4 --- /dev/null +++ b/src/com/engine/salary/entity/salaryarchive/po/SalaryArchivePO.java @@ -0,0 +1,66 @@ +package com.engine.salary.entity.salaryarchive.po; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.time.LocalDateTime; + +/** + * 薪资档案 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +//hrsa_salary_archive +public class SalaryArchivePO { + + /** + * 主键id + */ + //主键id") + private Long id; + + /** + * 人员信息表的主键id + */ + //人员信息表的主键id") + private Long employeeId; + + /** + * 创建时间 + */ + //创建时间", ignore = true) + private LocalDateTime createTime; + + /** + * 更新时间 + */ + //更新时间", ignore = true) + private LocalDateTime updateTime; + + /** + * 创建人 + */ + //创建人", ignore = true) + private Long creator; + + /** + * 是否已删除。0:未删除、1:已删除 + */ + //是否已删除", ignore = true) + private Integer deleteType; + + /** + * 租户ID + */ + //租户key", ignore = true) + private String tenantKey; +} diff --git a/src/com/engine/salary/entity/salaryarchive/po/SalaryArchiveTaxAgentPO.java b/src/com/engine/salary/entity/salaryarchive/po/SalaryArchiveTaxAgentPO.java new file mode 100644 index 000000000..311b940ea --- /dev/null +++ b/src/com/engine/salary/entity/salaryarchive/po/SalaryArchiveTaxAgentPO.java @@ -0,0 +1,106 @@ +package com.engine.salary.entity.salaryarchive.po; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Collection; +import java.util.Date; + +/** + * 薪资档案个税扣缴义务人 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +//hrsa_salary_archive_tax_agent +public class SalaryArchiveTaxAgentPO { + + /** + * 主键id + */ + //主键id") + private Long id; + + /** + * 薪资档案表的主键id + */ + //薪资档案表的主键id") + private Long salaryArchiveId; + + /** + * 人员信息表的主键id + */ + //人员信息表的主键id") + private Long employeeId; + + /** + * 生效时间 + */ + //生效时间") + private Date effectiveTime; + + /** + * 调整原因 + */ + //调整原因") + private String adjustReason; + + /** + * 个税扣缴义务人的主键id + */ + //个税扣缴义务人的主键id") + private Long taxAgentId; + + /** + * 操作人 + */ + //操作人") + private Long operator; + + /** + * 操作时间 + */ + //操作时间") + private Date operateTime; + + /** + * 创建时间 + */ + //创建时间", ignore = true) + private Date createTime; + + /** + * 更新时间 + */ + //更新时间", ignore = true) + private Date updateTime; + + /** + * 创建人 + */ + //创建人", ignore = true) + private Long creator; + + /** + * 是否已删除。0:未删除、1:已删除 + */ + //是否已删除", ignore = true) + private Integer deleteType; + + /** + * 租户ID + */ + //租户key", ignore = true) + private String tenantKey; + + Collection ids; + +} diff --git a/src/com/engine/salary/entity/salaryarchive/po/TaxAgentPO.java b/src/com/engine/salary/entity/salaryarchive/po/TaxAgentPO.java new file mode 100644 index 000000000..319e9eccb --- /dev/null +++ b/src/com/engine/salary/entity/salaryarchive/po/TaxAgentPO.java @@ -0,0 +1,69 @@ +package com.engine.salary.entity.salaryarchive.po; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.time.LocalDateTime; + +/** + * @Description: 个税扣缴义务人 + * @Author: wangxiangzhong + * @Date: 2021/10/29 11:14 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +//hrsa_tax_agent +public class TaxAgentPO { + + /** + * 主键id + */ + //主键id") + private Long id; + + /** + * 名称 + */ + //名称") + private String name; + + /** + * 备注 + */ + //备注") + private String description; + + /** + * 租户key + */ + //租户key", ignore = true) + private String tenantKey; + + /** + * 创建人id + */ + //创建人id", ignore = true) + private Long creator; + + /** + * 是否删除 + */ + //是否删除", ignore = true) + private Integer deleteType; + + /** + * 创建时间 + */ + //创建时间", ignore = true) + private LocalDateTime createTime; + + /** + * 更新时间 + */ + //更新时间", ignore = true) + private LocalDateTime updateTime; +} diff --git a/src/com/engine/salary/entity/salaryitem/dto/SalaryItemListDTO.java b/src/com/engine/salary/entity/salaryitem/dto/SalaryItemListDTO.java index 63972ec9d..26d87d47d 100644 --- a/src/com/engine/salary/entity/salaryitem/dto/SalaryItemListDTO.java +++ b/src/com/engine/salary/entity/salaryitem/dto/SalaryItemListDTO.java @@ -4,6 +4,7 @@ import com.cloudstore.eccom.pc.table.WeaTableType; import com.engine.salary.annotation.SalaryTable; import com.engine.salary.annotation.SalaryTableColumn; import com.engine.salary.annotation.SalaryTableOperate; +import com.engine.salary.enums.salaryitem.SalaryDataTypeEnum; import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import lombok.AllArgsConstructor; @@ -53,7 +54,10 @@ public class SalaryItemListDTO { @SalaryTableColumn(text = "取值方式", width = "10%", column = "valueType",transmethod = "com.engine.salary.transmethod.TransMethod.datasource") private String valueType; - @SalaryTableColumn(text = "字段类型", width = "10%", column = "itemType",transmethod = "com.engine.salary.transmethod.TransMethod.dataType") + /** + * @see SalaryDataTypeEnum + */ + @SalaryTableColumn(text = "字段类型", width = "10%", column = "dataType",transmethod = "com.engine.salary.transmethod.TransMethod.dataType") private String dataType; //公式id diff --git a/src/com/engine/salary/entity/salaryitem/dto/SysSalaryItemSearchConditionDTO.java b/src/com/engine/salary/entity/salaryitem/dto/SysSalaryItemSearchConditionDTO.java index 58efd8041..c86a3973f 100644 --- a/src/com/engine/salary/entity/salaryitem/dto/SysSalaryItemSearchConditionDTO.java +++ b/src/com/engine/salary/entity/salaryitem/dto/SysSalaryItemSearchConditionDTO.java @@ -25,7 +25,7 @@ //@Builder //@NoArgsConstructor //@AllArgsConstructor -//@ApiModel("系统薪资项目高级搜索") +////系统薪资项目高级搜索") //public class SysSalaryItemSearchConditionDTO { // // @SalarySearchCondition( diff --git a/src/com/engine/salary/entity/salarysob/dto/SalarySobCheckRuleListDTO.java b/src/com/engine/salary/entity/salarysob/dto/SalarySobCheckRuleListDTO.java index d0c07da84..6c4582ddc 100644 --- a/src/com/engine/salary/entity/salarysob/dto/SalarySobCheckRuleListDTO.java +++ b/src/com/engine/salary/entity/salarysob/dto/SalarySobCheckRuleListDTO.java @@ -28,6 +28,7 @@ import lombok.experimental.Accessors; public class SalarySobCheckRuleListDTO { //主键id + @SalaryTableColumn(column = "id", display = false) private Long id; //薪资账套id diff --git a/src/com/engine/salary/entity/salarysob/dto/SalarySobItemGroupFormDTO.java b/src/com/engine/salary/entity/salarysob/dto/SalarySobItemGroupFormDTO.java index e1df27cbd..179026910 100644 --- a/src/com/engine/salary/entity/salarysob/dto/SalarySobItemGroupFormDTO.java +++ b/src/com/engine/salary/entity/salarysob/dto/SalarySobItemGroupFormDTO.java @@ -33,7 +33,7 @@ public class SalarySobItemGroupFormDTO { // @SalaryFormItem(itemType = WeaFormItemType.INPUT, required = true, maxLength = "40") // } // ) -// @ApiModelProperty("名称") +// //名称") // @NotEmpty(message = "名称不允许为空") private String name; } diff --git a/src/com/engine/salary/entity/salarysob/dto/SalarySobRangeListDTO.java b/src/com/engine/salary/entity/salarysob/dto/SalarySobRangeListDTO.java index c48b1f5cc..989ef4cf8 100644 --- a/src/com/engine/salary/entity/salarysob/dto/SalarySobRangeListDTO.java +++ b/src/com/engine/salary/entity/salarysob/dto/SalarySobRangeListDTO.java @@ -26,6 +26,7 @@ import lombok.NoArgsConstructor; public class SalarySobRangeListDTO { //主键id + @SalaryTableColumn(column = "id", display = false) private Long id; //薪资账套的id diff --git a/src/com/engine/salary/mapper/archive/SalaryArchiveItemMapper.java b/src/com/engine/salary/mapper/archive/SalaryArchiveItemMapper.java new file mode 100644 index 000000000..236c6223f --- /dev/null +++ b/src/com/engine/salary/mapper/archive/SalaryArchiveItemMapper.java @@ -0,0 +1,96 @@ +package com.engine.salary.mapper.archive; + +import com.engine.salary.entity.salaryarchive.dto.SalaryItemAdjustRecordListDTO; +import com.engine.salary.entity.salaryarchive.param.SalaryArchiveItemQueryParam; +import com.engine.salary.entity.salaryarchive.param.SalaryItemAdjustRecordQueryParam; +import com.engine.salary.entity.salaryarchive.po.SalaryArchiveItemPO; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface SalaryArchiveItemMapper { + + /** + * 查询所有记录 + * + * @return 返回集合,没有返回空List + */ + List listAll(); + + /** + * 条件查询 + * + * @return 返回集合,没有返回空List + */ + List listSome(SalaryArchiveItemPO salaryArchiveItem); + + + /** + * 根据主键查询 + * + * @param id 主键 + * @return 返回记录,没有返回null + */ + SalaryArchiveItemPO getById(Long id); + + /** + * 新增,忽略null字段 + * + * @param salaryArchiveItem 新增的记录 + * @return 返回影响行数 + */ + int insertIgnoreNull(SalaryArchiveItemPO salaryArchiveItem); + + /** + * 修改,修改所有字段 + * + * @param salaryArchiveItem 修改的记录 + * @return 返回影响行数 + */ + int update(SalaryArchiveItemPO salaryArchiveItem); + + /** + * 修改,忽略null字段 + * + * @param salaryArchiveItem 修改的记录 + * @return 返回影响行数 + */ + int updateIgnoreNull(SalaryArchiveItemPO salaryArchiveItem); + + /** + * 删除记录 + * + * @param salaryArchiveItem 待删除的记录 + * @return 返回影响行数 + */ + int delete(SalaryArchiveItemPO salaryArchiveItem); + + + + /** + * 批量插入 + * @param salaryArchiveItemSaves + */ + void batchInsert(@Param("collection") List salaryArchiveItemSaves); + + /** + * 分页查询薪资项目调整记录列表 + * @param page + * @param param + * @param salaryItemIds + * @param tenantKey + * @return + */ +// IPage salaryItemAdjustRecordList(Page page, @Param("param") SalaryItemAdjustRecordQueryParam param, @Param("salaryItemIds") List salaryItemIds, @Param("tenantKey") String tenantKey); + + /** + * 查询薪资项目调整记录列表 + * @param param + * @param salaryItemIds + * @return + */ + List salaryItemAdjustRecordList(@Param("param") SalaryItemAdjustRecordQueryParam param, @Param("salaryItemIds") List salaryItemIds); + + + List listByParam(@Param("param")SalaryArchiveItemQueryParam build); +} \ No newline at end of file diff --git a/src/com/engine/salary/mapper/archive/SalaryArchiveItemMapper.xml b/src/com/engine/salary/mapper/archive/SalaryArchiveItemMapper.xml new file mode 100644 index 000000000..78ae994f8 --- /dev/null +++ b/src/com/engine/salary/mapper/archive/SalaryArchiveItemMapper.xml @@ -0,0 +1,907 @@ + + + + + + + + + + + + + + + + + + + + + + + + t + . + id + , t.salary_archive_id + , t.employee_id + , t.effective_time + , t.adjust_reason + , t.salary_item_id + , t.item_value + , t.description + , t.operator + , t.operate_time + , t.create_time + , t.update_time + , t.creator + , t.delete_type + , t.tenant_key + + + + + + + + + + + + + + + INSERT INTO hrsa_salary_archive_item + + + + id, + + + salary_archive_id, + + + employee_id, + + + effective_time, + + + adjust_reason, + + + salary_item_id, + + + item_value, + + + description, + + + operator, + + + operate_time, + + + create_time, + + + update_time, + + + creator, + + + delete_type, + + + tenant_key, + + + + + #{id}, + + + #{salaryArchiveId}, + + + #{employeeId}, + + + #{effectiveTime}, + + + #{adjustReason}, + + + #{salaryItemId}, + + + #{itemValue}, + + + #{description}, + + + #{operator}, + + + #{operateTime}, + + + #{createTime}, + + + #{updateTime}, + + + #{creator}, + + + #{deleteType}, + + + #{tenantKey}, + + + + + + + UPDATE hrsa_salary_archive_item + + salary_archive_id=#{salaryArchiveId}, + employee_id=#{employeeId}, + effective_time=#{effectiveTime}, + adjust_reason=#{adjustReason}, + salary_item_id=#{salaryItemId}, + item_value=#{itemValue}, + description=#{description}, + operator=#{operator}, + operate_time=#{operateTime}, + create_time=#{createTime}, + update_time=#{updateTime}, + creator=#{creator}, + delete_type=#{deleteType}, + tenant_key=#{tenantKey}, + + WHERE id = #{id} AND delete_type = 0 + + + + + + UPDATE hrsa_salary_archive_item + + + salary_archive_id=#{salaryArchiveId}, + + + employee_id=#{employeeId}, + + + effective_time=#{effectiveTime}, + + + adjust_reason=#{adjustReason}, + + + salary_item_id=#{salaryItemId}, + + + item_value=#{itemValue}, + + + description=#{description}, + + + operator=#{operator}, + + + operate_time=#{operateTime}, + + + create_time=#{createTime}, + + + update_time=#{updateTime}, + + + creator=#{creator}, + + + delete_type=#{deleteType}, + + + tenant_key=#{tenantKey}, + + + WHERE id = #{id} AND delete_type = 0 + + + + + + UPDATE hrsa_salary_archive_item + SET delete_type=1 + WHERE id = #{id} + AND delete_type = 0 + + + + + + + INSERT INTO hrsa_salary_archive_item ( + salary_archive_id, + employee_id, + effective_time, + adjust_reason, + salary_item_id, + item_value, + description, + operator, + operate_time, + create_time, + update_time, + creator, + tenant_key + ) + VALUES + + ( + #{item.salaryArchiveId}, + #{item.employeeId}, + #{item.effectiveTime}, + #{item.adjustReason}, + #{item.salaryItemId}, + #{item.itemValue}, + #{item.description}, + #{item.operator}, + #{item.operateTime}, + #{item.createTime}, + #{item.updateTime}, + #{item.creator}, + #{item.tenantKey} + ) + + + + INSERT INTO hrsa_salary_archive_item ( + salary_archive_id, + employee_id, + effective_time, + adjust_reason, + salary_item_id, + item_value, + description, + operator, + operate_time, + create_time, + update_time, + creator, + tenant_key + ) + + + select + #{item.salaryArchiveId}, + #{item.employeeId}, + #{item.effectiveTime}, + #{item.adjustReason}, + #{item.salaryItemId}, + #{item.itemValue}, + #{item.description}, + #{item.operator}, + #{item.operateTime}, + #{item.createTime}, + #{item.updateTime}, + #{item.creator}, + #{item.tenantKey} + from dual + + + + INSERT INTO hrsa_salary_archive_item ( + salary_archive_id, + employee_id, + effective_time, + adjust_reason, + salary_item_id, + item_value, + description, + operator, + operate_time, + create_time, + update_time, + creator, + tenant_key + ) + VALUES + + ( + #{item.salaryArchiveId}, + #{item.employeeId}, + #{item.effectiveTime}, + #{item.adjustReason}, + #{item.salaryItemId}, + #{item.itemValue}, + #{item.description}, + #{item.operator}, + #{item.operateTime}, + #{item.createTime}, + #{item.updateTime}, + #{item.creator}, + #{item.tenantKey} + ) + + + + + id, + salary_archive_id, + employee_id, + effective_time, + adjust_reason, + salary_item_id, + item_value, + description, + operator, + operate_time, + create_time, + update_time, + creator, + tenant_key + + + + + + + + + t1.id, + t1.employee_id, + e.username, + e.status AS employeeStatus, + d.name AS departmentName, + t1.effective_time, + t1.adjust_reason, + t2.name AS adjust_item, + t1.item_value AS adjust_after, + o.username AS operator, + t1.operate_time, + t1.description, + t1.salary_archive_id, + t1.salary_item_id + + + + + AND t1.id IN + + #{id} + + + + + AND t1.employee_id = #{param.employeeId} + + + + AND t1.salary_archive_id = #{param.salaryArchiveId} + + + + AND e.username like CONCAT('%',#{param.username},'%') + + + + AND e.position IN + + #{id} + + + + + AND e.status = #{param.userstatus} + + + + AND d.id IN + + #{id} + + + + + AND t1.adjust_reason = #{param.adjustReason} + + + + AND (t1.effective_time BETWEEN #{param.effectiveTime[0]} AND #{param.effectiveTime[1]}) + + + + AND (t1.operate_time BETWEEN CONCAT(#{param.operateTime[0]},' 00:00:00') AND CONCAT(#{param.operateTime[1]},' 23:59:59')) + + + + AND t1.operator IN + + #{id} + + + + + AND t1.description like CONCAT('%',#{param.description},'%') + + + + + AND t1.id IN + + #{id} + + + + + AND t1.employee_id = #{param.employeeId} + + + + AND t1.salary_archive_id = #{param.salaryArchiveId} + + + + AND e.username like '%'||#{param.username}||'%' + + + + AND e.position IN + + #{id} + + + + + AND e.status = #{param.userstatus} + + + + AND d.id IN + + #{id} + + + + + AND t1.adjust_reason = #{param.adjustReason} + + + + AND (t1.effective_time BETWEEN #{param.effectiveTime[0]} AND #{param.effectiveTime[1]}) + + + + AND (t1.operate_time BETWEEN #{param.operateTime[0]}||' 00:00:00' AND #{param.operateTime[1]}||' 23:59:59' ) + + + + AND t1.operator IN + + #{id} + + + + + AND t1.description like '%'||#{param.description}||'%' + + + + + AND t1.id IN + + #{id} + + + + + AND t1.employee_id = #{param.employeeId} + + + + AND t1.salary_archive_id = #{param.salaryArchiveId} + + + + AND e.username like '%'+#{param.username}+'%' + + + + AND e.position IN + + #{id} + + + + + AND e.status = #{param.userstatus} + + + + AND d.id IN + + #{id} + + + + + AND t1.adjust_reason = #{param.adjustReason} + + + + AND (t1.effective_time BETWEEN #{param.effectiveTime[0]} AND #{param.effectiveTime[1]}) + + + + AND (t1.operate_time BETWEEN #{param.operateTime[0]}+' 00:00:00' AND #{param.operateTime[1]}+' 23:59:59' ) + + + + AND t1.operator IN + + #{id} + + + + + AND t1.description like '%'+#{param.description}+'%' + + + + + + + + + \ No newline at end of file diff --git a/src/com/engine/salary/mapper/archive/SalaryArchiveMapper.java b/src/com/engine/salary/mapper/archive/SalaryArchiveMapper.java new file mode 100644 index 000000000..39d541148 --- /dev/null +++ b/src/com/engine/salary/mapper/archive/SalaryArchiveMapper.java @@ -0,0 +1,106 @@ +package com.engine.salary.mapper.archive; + +import com.engine.salary.entity.salaryarchive.dto.SalaryArchiveListDTO; +import com.engine.salary.entity.salaryarchive.param.SalaryArchiveQueryParam; +import com.engine.salary.entity.salaryarchive.po.SalaryArchiveEmployeePO; +import com.engine.salary.entity.salaryarchive.po.SalaryArchivePO; +import org.apache.ibatis.annotations.Param; + +import java.util.Collection; +import java.util.List; + +public interface SalaryArchiveMapper { + + /** + * 查询所有记录 + * + * @return 返回集合,没有返回空List + */ + List listAll(); + + /** + * 条件查询 + * + * @return 返回集合,没有返回空List + */ + List listSome(SalaryArchivePO salaryArchive); + + + /** + * 根据主键查询 + * + * @param id 主键 + * @return 返回记录,没有返回null + */ + SalaryArchivePO getById(Long id); + + /** + * 新增,忽略null字段 + * + * @param salaryArchive 新增的记录 + * @return 返回影响行数 + */ + int insertIgnoreNull(SalaryArchivePO salaryArchive); + + /** + * 修改,修改所有字段 + * + * @param salaryArchive 修改的记录 + * @return 返回影响行数 + */ + int update(SalaryArchivePO salaryArchive); + + /** + * 修改,忽略null字段 + * + * @param salaryArchive 修改的记录 + * @return 返回影响行数 + */ + int updateIgnoreNull(SalaryArchivePO salaryArchive); + + /** + * 删除记录 + * + * @param salaryArchive 待删除的记录 + * @return 返回影响行数 + */ + int delete(SalaryArchivePO salaryArchive); + + + /** + * 查询薪资档案列表 + * @param param + * @param tenantKey + * @return + */ + List list(@Param("param") SalaryArchiveQueryParam param, @Param("tenantKey") String tenantKey); + + /** + * 分页查询薪资档案列表 + * @param page + * @param param + * @param tenantKey + * @return + */ +// IPage list(Page page, @Param("param") SalaryArchiveQueryParam param); + + + /** + * 批量删除薪资档案 + * @param ids + */ + void deleteByIds(@Param("ids") Collection ids); + + /** + * 批量插入 + * @param salaryArchiveSaves + */ + void batchInsert(@Param("collection") List salaryArchiveSaves); + + /** + * 员工信息列表 + * @return + */ + List listEmployee(); + +} \ No newline at end of file diff --git a/src/com/engine/salary/mapper/archive/SalaryArchiveMapper.xml b/src/com/engine/salary/mapper/archive/SalaryArchiveMapper.xml new file mode 100644 index 000000000..e774966cf --- /dev/null +++ b/src/com/engine/salary/mapper/archive/SalaryArchiveMapper.xml @@ -0,0 +1,512 @@ + + + + + + + + + + + + + + + + t + . + id + , t.employee_id + , t.create_time + , t.update_time + , t.creator + , t.delete_type + , t.tenant_key + + + + + + + + + + + + + + + INSERT INTO hrsa_salary_archive + + + + id, + + + employee_id, + + + create_time, + + + update_time, + + + creator, + + + delete_type, + + + tenant_key, + + + + + #{id}, + + + #{employeeId}, + + + #{createTime}, + + + #{updateTime}, + + + #{creator}, + + + #{deleteType}, + + + #{tenantKey}, + + + + + + + UPDATE hrsa_salary_archive + + employee_id=#{employeeId}, + create_time=#{createTime}, + update_time=#{updateTime}, + creator=#{creator}, + delete_type=#{deleteType}, + tenant_key=#{tenantKey}, + + WHERE id = #{id} AND delete_type = 0 + + + + + + UPDATE hrsa_salary_archive + + + employee_id=#{employeeId}, + + + create_time=#{createTime}, + + + update_time=#{updateTime}, + + + creator=#{creator}, + + + delete_type=#{deleteType}, + + + tenant_key=#{tenantKey}, + + + WHERE id = #{id} AND delete_type = 0 + + + + + + UPDATE hrsa_salary_archive + SET delete_type=1 + WHERE id = #{id} + AND delete_type = 0 + + + + + + t1.id, + t1.employee_id, + e.mobile, + e.username, + e.status AS employeeStatus, + d.name AS departmentName + + + + + + AND t1.id IN + + #{id} + + + + + AND e.username like CONCAT('%',#{param.username},'%') + + + + + + + + AND d.id IN + + #{id} + + + + + AND e.position IN + + #{id} + + + + + AND e.status = #{param.userstatus} + + + + AND (e.hiredate BETWEEN #{param.hiredate[0]} AND #{param.hiredate[1]}) + + + + + AND t1.id IN + + #{id} + + + + + AND e.username like '%'||#{param.username}||'%' + + + + + + + + AND d.id IN + + #{id} + + + + + AND e.position IN + + #{id} + + + + + AND e.status = #{param.userstatus} + + + + AND (e.hiredate BETWEEN #{param.hiredate[0]} AND #{param.hiredate[1]}) + + + + + AND t1.id IN + + #{id} + + + + + AND e.username like '%'+#{param.username}+'%' + + + + + + + + AND d.id IN + + #{id} + + + + + AND e.position IN + + #{id} + + + + + AND e.status = #{param.userstatus} + + + + AND (e.hiredate BETWEEN #{param.hiredate[0]} AND #{param.hiredate[1]}) + + + + + + + + + + INSERT INTO hrsa_salary_archive ( + id, + employee_id, + create_time, + update_time, + creator, + tenant_key + ) + VALUES + + ( + #{item.id}, + #{item.employeeId}, + #{item.createTime}, + #{item.updateTime}, + #{item.creator}, + #{item.tenantKey} + ) + + + + INSERT INTO hrsa_salary_archive ( + id, + employee_id, + create_time, + update_time, + creator, + tenant_key + ) + + + select + #{item.id}, + #{item.employeeId}, + #{item.createTime}, + #{item.updateTime}, + #{item.creator}, + #{item.tenantKey} + from dual + + + + INSERT INTO hrsa_salary_archive ( + id, + employee_id, + create_time, + update_time, + creator, + tenant_key + ) + VALUES + + ( + #{item.id}, + #{item.employeeId}, + #{item.createTime}, + #{item.updateTime}, + #{item.creator}, + #{item.tenantKey} + ) + + + + + + + + \ No newline at end of file diff --git a/src/com/engine/salary/mapper/archive/SalaryArchiveTaxAgentMapper.java b/src/com/engine/salary/mapper/archive/SalaryArchiveTaxAgentMapper.java new file mode 100644 index 000000000..32120eafa --- /dev/null +++ b/src/com/engine/salary/mapper/archive/SalaryArchiveTaxAgentMapper.java @@ -0,0 +1,67 @@ +package com.engine.salary.mapper.archive; + +import com.engine.salary.entity.salaryarchive.param.SalaryArchiveTaxAgentQueryParam; +import com.engine.salary.entity.salaryarchive.po.SalaryArchiveTaxAgentPO; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface SalaryArchiveTaxAgentMapper { + + /** + * 查询所有记录 + * + * @return 返回集合,没有返回空List + */ + List listAll(); + + /** + * 条件查询 + * + * @return 返回集合,没有返回空List + */ + List listSome(SalaryArchiveTaxAgentPO salaryArchiveTaxAgent); + + + /** + * 根据主键查询 + * + * @param id 主键 + * @return 返回记录,没有返回null + */ + SalaryArchiveTaxAgentPO getById(Long id); + + /** + * 新增,忽略null字段 + * + * @param salaryArchiveTaxAgent 新增的记录 + * @return 返回影响行数 + */ + int insertIgnoreNull(SalaryArchiveTaxAgentPO salaryArchiveTaxAgent); + + /** + * 修改,修改所有字段 + * + * @param salaryArchiveTaxAgent 修改的记录 + * @return 返回影响行数 + */ + int update(SalaryArchiveTaxAgentPO salaryArchiveTaxAgent); + + /** + * 修改,忽略null字段 + * + * @param salaryArchiveTaxAgent 修改的记录 + * @return 返回影响行数 + */ + int updateIgnoreNull(SalaryArchiveTaxAgentPO salaryArchiveTaxAgent); + + /** + * 删除记录 + * + * @param salaryArchiveTaxAgent 待删除的记录 + * @return 返回影响行数 + */ + int delete(SalaryArchiveTaxAgentPO salaryArchiveTaxAgent); + + List listByParam(@Param("param") SalaryArchiveTaxAgentQueryParam build); +} \ No newline at end of file diff --git a/src/com/engine/salary/mapper/archive/SalaryArchiveTaxAgentMapper.xml b/src/com/engine/salary/mapper/archive/SalaryArchiveTaxAgentMapper.xml new file mode 100644 index 000000000..13a5b54b2 --- /dev/null +++ b/src/com/engine/salary/mapper/archive/SalaryArchiveTaxAgentMapper.xml @@ -0,0 +1,312 @@ + + + + + + + + + + + + + + + + + + + + + + + t + . + id + , t.salary_archive_id + , t.employee_id + , t.effective_time + , t.adjust_reason + , t.tax_agent_id + , t.operator + , t.operate_time + , t.description + , t.create_time + , t.update_time + , t.creator + , t.delete_type + , t.tenant_key + + + + + + + + + + + + + + + INSERT INTO hrsa_salary_archive_tax_agent + + + + id, + + + salary_archive_id, + + + employee_id, + + + effective_time, + + + adjust_reason, + + + tax_agent_id, + + + operator, + + + operate_time, + + + description, + + + create_time, + + + update_time, + + + creator, + + + delete_type, + + + tenant_key, + + + + + #{id}, + + + #{salaryArchiveId}, + + + #{employeeId}, + + + #{effectiveTime}, + + + #{adjustReason}, + + + #{taxAgentId}, + + + #{operator}, + + + #{operateTime}, + + + #{description}, + + + #{createTime}, + + + #{updateTime}, + + + #{creator}, + + + #{deleteType}, + + + #{tenantKey}, + + + + + + + UPDATE hrsa_salary_archive_tax_agent + + salary_archive_id=#{salaryArchiveId}, + employee_id=#{employeeId}, + effective_time=#{effectiveTime}, + adjust_reason=#{adjustReason}, + tax_agent_id=#{taxAgentId}, + operator=#{operator}, + operate_time=#{operateTime}, + description=#{description}, + create_time=#{createTime}, + update_time=#{updateTime}, + creator=#{creator}, + delete_type=#{deleteType}, + tenant_key=#{tenantKey}, + + WHERE id = #{id} AND delete_type = 0 + + + + + + UPDATE hrsa_salary_archive_tax_agent + + + salary_archive_id=#{salaryArchiveId}, + + + employee_id=#{employeeId}, + + + effective_time=#{effectiveTime}, + + + adjust_reason=#{adjustReason}, + + + tax_agent_id=#{taxAgentId}, + + + operator=#{operator}, + + + operate_time=#{operateTime}, + + + description=#{description}, + + + create_time=#{createTime}, + + + update_time=#{updateTime}, + + + creator=#{creator}, + + + delete_type=#{deleteType}, + + + tenant_key=#{tenantKey}, + + + WHERE id = #{id} AND delete_type = 0 + + + + + + UPDATE hrsa_salary_archive_tax_agent + SET delete_type=1 + WHERE id = #{id} + AND delete_type = 0 + + + + + + + \ No newline at end of file diff --git a/src/com/engine/salary/service/SalaryArchiveService.java b/src/com/engine/salary/service/SalaryArchiveService.java new file mode 100644 index 000000000..9a17e98f7 --- /dev/null +++ b/src/com/engine/salary/service/SalaryArchiveService.java @@ -0,0 +1,130 @@ +//package com.engine.salary.service; +// +//import com.engine.salary.common.LocalDateRange; +//import com.engine.salary.entity.salaryarchive.dto.SalaryArchiveDataDTO; +//import com.engine.salary.entity.salaryarchive.dto.SalaryArchiveListDTO; +//import com.engine.salary.entity.salaryarchive.dto.TaxAgentListDTO; +//import com.engine.salary.entity.salaryarchive.param.SalaryArchiveDimissionSaveParam; +//import com.engine.salary.entity.salaryarchive.param.SalaryArchiveQueryParam; +//import com.engine.salary.entity.salaryarchive.po.SalaryArchiveDimissionPO; +//import com.engine.salary.entity.salaryarchive.po.SalaryArchiveItemPO; +//import com.engine.salary.entity.salaryarchive.po.SalaryArchivePO; +//import com.engine.salary.entity.salaryarchive.po.SalaryArchiveTaxAgentPO; +//import com.engine.salary.entity.salaryitem.po.SalaryItemPO; +//import com.engine.salary.enums.salaryarchive.SalaryArchiveImportTypeEnum; +// +//import java.util.Collection; +//import java.util.List; +//import java.util.Map; +// +///** +// * 薪资档案 +// *

Copyright: Copyright (c) 2022

+// *

Company: 泛微软件

+// * +// * @author qiantao +// * @version 1.0 +// **/ +//public interface SalaryArchiveService { +// +// /** +// * 获取薪资档案单条主记录 +// * +// * @param salaryArchiveId +// * @return +// */ +// SalaryArchivePO getById(Long salaryArchiveId); +// +// /** +// * 薪资档案列表(分页) +// * +// * @param page +// * @param queryParam +// * @param tenantKey +// * @return +// */ +//// Page listPage(Page page, SalaryArchiveQueryParam queryParam, String tenantKey); +// +// /** +// * 构建薪资档案数据 +// * +// * @param salaryArchives +// * @param taxAgentLists +// * @param salaryItems +// * @param isPage +// * @return +// */ +// List> buildSalaryArchiveData(Collection salaryArchives, Collection taxAgentLists, List salaryItems, Boolean isPage); +// +// /** +// * 获取薪资档案对应的当前生效的薪资项目 +// * +// * @param salaryArchivesIds +// * @return +// */ +// List getCurrentEffectiveItemList(Collection salaryArchivesIds, Collection salaryItemIds); +// +// /** +// * 获取薪资档案对应的当前生效的个税扣缴义务人 +// * +// * @param salaryArchivesIds +// * @return +// */ +// List getCurrentEffectiveTaxAgentList(Collection salaryArchivesIds); +// +// /** +// * 导出薪资档案列表 +// * +// * @param map +// * @param username +// * @param eteamsId +// * @param queryParam +// * @throws Exception +// */ +// void exportList(Map map, String username, String eteamsId, SalaryArchiveQueryParam queryParam); +// +// /** +// * 下载导入模板 +// * +// * @param map +// * @param username +// * @param eteamsId +// * @param salaryArchiveImportTypeEnum +// * @param queryParam +// * @return +// */ +// void downloadTemplate(Map map, String username, String eteamsId, SalaryArchiveImportTypeEnum salaryArchiveImportTypeEnum, SalaryArchiveQueryParam queryParam); +// +// /** +// * 获取离职时段设置 +// * +// */ +// List dimissionSets(); +// +// /** +// * 保存离职时段设置 +// * +// * @param saveParam +// * @return +// */ +// String saveDimissionSet(SalaryArchiveDimissionSaveParam saveParam); +// +// /** +// * 根据日期范围与人员id获取薪资档案-薪资项目数据 +// * +// * @param localDateRange +// * @param employeeIds 为空则返回所有人的 +// * @return +// */ +// List getSalaryArchiveData(LocalDateRange localDateRange, Collection employeeIds); +// +// /** +// * 根据日期范围与人员id获取薪资档案-个税扣缴义务人数据 +// * +// * @param localDateRange +// * @param employeeIds 为空则返回所有人的 +// * @param tenantKey +// * @return +// */ +// List getSalaryArchiveTaxAgentData(LocalDateRange localDateRange, Collection employeeIds, String tenantKey); +//} diff --git a/src/com/engine/salary/service/impl/SalaryArchiveServiceImpl.java b/src/com/engine/salary/service/impl/SalaryArchiveServiceImpl.java new file mode 100644 index 000000000..d45d29b90 --- /dev/null +++ b/src/com/engine/salary/service/impl/SalaryArchiveServiceImpl.java @@ -0,0 +1,1272 @@ +//package com.engine.salary.service.impl; +// +//import com.alibaba.fastjson.JSONObject; +//import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; +//import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper; +//import com.engine.salary.biz.SalaryArchiveBiz; +//import com.engine.salary.biz.SalaryArchiveItemBiz; +//import com.engine.salary.biz.SalaryArchiveTaxAgentBiz; +//import com.engine.salary.entity.salaryarchive.param.SalaryArchiveItemQueryParam; +//import com.engine.salary.entity.salaryarchive.param.SalaryArchiveTaxAgentQueryParam; +//import com.engine.salary.entity.salaryarchive.po.SalaryArchiveItemPO; +//import com.engine.salary.entity.salaryarchive.po.SalaryArchivePO; +//import com.engine.salary.entity.salaryarchive.po.SalaryArchiveTaxAgentPO; +//import com.engine.salary.service.SalaryArchiveService; +//import com.google.common.base.Joiner; +//import com.google.common.collect.Lists; +//import com.google.common.collect.Maps; +//import com.weaver.common.batch.context.BatchExportContext; +//import com.weaver.common.batch.context.BatchImportContext; +//import com.weaver.common.batch.entity.BatchCallbackMessage; +//import com.weaver.common.batch.entity.BatchDocumentMessage; +//import com.weaver.common.batch.entity.ExcelComment; +//import com.weaver.common.batch.entity.ExcelSheet; +//import com.weaver.common.batch.handler.BatchExportHandler; +//import com.weaver.common.batch.handler.BatchImportHandler; +//import com.weaver.common.distribution.genid.IdGenerator; +//import com.weaver.datasecurity.interceptor.DSTenantKeyThreadVar; +//import com.weaver.hrm.salary.common.LocalDateRange; +//import com.weaver.hrm.salary.common.excel.ExcelSheetData; +//import com.weaver.hrm.salary.common.excel.ExportExcelInfo; +//import com.weaver.hrm.salary.constant.SalaryItemConstant; +//import com.weaver.hrm.salary.dao.*; +//import com.weaver.hrm.salary.entity.salaryarchive.bo.SalaryArchiveBO; +//import com.weaver.hrm.salary.entity.salaryarchive.dto.*; +//import com.weaver.hrm.salary.entity.salaryarchive.param.SalaryArchiveDimissionSaveParam; +//import com.weaver.hrm.salary.entity.salaryarchive.param.SalaryArchiveImportHandleParam; +//import com.weaver.hrm.salary.entity.salaryarchive.param.SalaryArchiveQueryParam; +//import com.weaver.hrm.salary.entity.salaryarchive.po.*; +//import com.weaver.hrm.salary.entity.salaryitem.po.SalaryItemPO; +//import com.weaver.hrm.salary.enums.SalaryUserStatusEnum; +//import com.weaver.hrm.salary.enums.salaryarchive.SalaryArchiveImportTypeEnum; +//import com.weaver.hrm.salary.enums.salaryarchive.SalaryArchiveItemAdjustReasonEnum; +//import com.weaver.hrm.salary.enums.salaryarchive.SalaryArchiveTaxAgentAdjustReasonEnum; +//import com.weaver.hrm.salary.service.SalaryArchiveItemService; +//import com.weaver.hrm.salary.service.SalaryBatchService; +//import com.weaver.hrm.salary.service.TaxAgentService; +//import com.weaver.hrm.salary.util.SalaryDateUtil; +//import com.weaver.hrm.salary.util.SalaryI18nUtil; +//import com.weaver.teams.util.StringUtils; +//import org.apache.commons.collections4.CollectionUtils; +//import org.springframework.transaction.annotation.Transactional; +// +//import java.time.LocalDate; +//import java.time.LocalDateTime; +//import java.util.*; +//import java.util.concurrent.ExecutorService; +//import java.util.concurrent.atomic.AtomicInteger; +//import java.util.stream.Collectors; +// +///** +// * 薪资档案 +// *

Copyright: Copyright (c) 2022

+// *

Company: 泛微软件

+// * +// * @author qiantao +// * @version 1.0 +// **/ +//public class SalaryArchiveServiceImpl implements SalaryArchiveService { +// +// private SalaryArchiveBiz mapper = new SalaryArchiveBiz(); +// private SalaryArchiveItemBiz salaryArchiveItemMapper; +// private SalaryArchiveTaxAgentBiz salaryArchiveTaxAgentMapper; +// private SalaryArchiveDimissionMapper salaryArchiveDimissionMapper; +// private SalaryArchiveItemService salaryArchiveItemService; +// private SalaryBatchService salaryBatchService; +// private TaxAgentService taxAgentService; +// private ExecutorService taskExecutor; +// +// @Override +// public SalaryArchivePO getById(Long salaryArchiveId) { +// return mapper.getById(salaryArchiveId); +// } +// +//// @Override +//// public Page listPage(Page page, SalaryArchiveQueryParam queryParam, String tenantKey) { +//// mapper.list(page, queryParam, tenantKey); +//// return page; +//// } +// +// /** +// * 获取薪资档案对应的当前生效的薪资项目 +// * +// * @param salaryArchivesIds +// * @return +// */ +// @Override +// public List getCurrentEffectiveItemList(Collection salaryArchivesIds, Collection salaryItemIds) { +// // 没有薪资项目时,给个不存在的,否则加载所有不合理 fixme +// salaryItemIds = CollectionUtils.isEmpty(salaryItemIds)?Collections.singletonList(0L):salaryItemIds; +// List salaryArchiveItems = salaryArchiveItemMapper.getCurrentEffectiveItemList(SalaryArchiveItemQueryParam.builder().salaryArchivesIds(salaryArchivesIds).salaryItemIds(salaryItemIds).effectiveTime(new Date()).build()); +// return salaryArchiveItems.stream() +// .collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(f -> f.getSalaryArchiveId()+"-"+f.getSalaryItemId()))), ArrayList::new)); +// } +// +// /** +// * 获取薪资档案对应的当前生效的个税扣缴义务人 +// * +// * @param salaryArchivesIds +// * @return +// */ +// @Override +// public List getCurrentEffectiveTaxAgentList(Collection salaryArchivesIds) { +// +// List salaryArchiveTaxAgents = salaryArchiveTaxAgentMapper.listByParam(SalaryArchiveTaxAgentQueryParam.builder().salaryArchivesIds(salaryArchivesIds).effectiveTime(new Date()).build()); +// +// return salaryArchiveTaxAgents.stream() +// .collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(SalaryArchiveTaxAgentPO::getSalaryArchiveId))), ArrayList::new)); +// } +// +// /** +// * 构建薪资档案数据 +// * @param salaryArchives +// * @param taxAgentLists +// * @param salaryItems +// * @param tenantKey +// * @param isPage +// * @return +// */ +// @Override +// public List> buildSalaryArchiveData(Collection salaryArchives, +// Collection taxAgentLists, +// List salaryItems, +// Long currentEmployeeId, +// String tenantKey, +// Boolean isPage) { +// // 分页用于表格展示,否则用于导出 +// Collection ids = isPage?salaryArchives.stream().map(SalaryArchiveListDTO::getId).collect(Collectors.toList()):CollectionUtils.emptyCollection(); +// +// List salaryItemIds = salaryItems.stream().map(SalaryItemPO::getId).collect(Collectors.toList()); +// // 1.获取薪资档案所对应的当前生效的薪资项目数据 +// List salaryArchiveItemList = getCurrentEffectiveItemList(ids, salaryItemIds, tenantKey); +// List> salaryArchiveItemData = salaryArchives.stream().map(m->{ +// Map map = Maps.newHashMap(); +// map.put("salaryArchiveId", m.getId()); +// List salaryArchiveItemValuelList = salaryArchiveItemList.stream().filter(i->i.getSalaryArchiveId().equals(m.getId())).collect(Collectors.toList()); +// salaryArchiveItemValuelList.forEach(i->{ +// map.put(i.getSalaryItemId() + SalaryItemConstant.DYNAMIC_SUFFIX, i.getItemValue()); +// }); +// return map; +// }).collect(Collectors.toList()); +// //2.获取薪资档案所对应的当前生效的个税扣缴义务人列表 +// List taxAgentList = getCurrentEffectiveTaxAgentList(ids, tenantKey); +// List> taxAgentData = taxAgentList.stream().map(m->{ +// Map map = Maps.newHashMap(); +// map.put("salaryArchiveId", m.getSalaryArchiveId()); +// map.put("taxAgentId", m.getTaxAgentId()); +// Optional optional = taxAgentLists.stream().filter(f->f.getId().equals(m.getTaxAgentId())).findFirst(); +// map.put("taxAgentName", optional.isPresent()?optional.get().getName():""); +// map.put("taxAgentEffectiveTime", m.getEffectiveTime() + ""); +// return map; +// }).collect(Collectors.toList()); +// // 3.组装数据 +// List> listMaps = new ArrayList<>(); +// salaryArchives.forEach(e->{ +// e.setEmployeeStatus(SalaryUserStatusEnum.getDefaultLabelByValue(e.getEmployeeStatus(), currentEmployeeId, tenantKey)); +// +// Map map = new LinkedHashMap<>(); +// map.put("id", e.getId()); +// map.put("username", e.getUsername()); +// map.put("employeeId", e.getEmployeeId()); +// +// Optional> optionalTaxAgent = taxAgentData.stream().filter(f->f.get("salaryArchiveId").toString().equals(e.getId().toString())).findFirst(); +// map.put("taxAgentName", optionalTaxAgent.isPresent()?optionalTaxAgent.get().get("taxAgentName").toString():""); +// map.put("taxAgentId", optionalTaxAgent.isPresent()?optionalTaxAgent.get().get("taxAgentId").toString():""); +// map.put("taxAgentEffectiveTime", optionalTaxAgent.isPresent()?optionalTaxAgent.get().get("taxAgentEffectiveTime").toString():""); +// +// map.put("departmentName", e.getDepartmentName()); +// map.put("mobile", e.getMobile()); +// map.put("employeeStatus", e.getEmployeeStatus()); +// +// // 薪资项目动态 +// Optional> optionalItem = salaryArchiveItemData.stream().filter(f->f.get("salaryArchiveId").toString().equals(e.getId().toString())).findFirst(); +// optionalItem.ifPresent(map::putAll); +// +// listMaps.add(map); +// }); +// return listMaps; +// } +// +// @Override +// public void exportList(Map map, String username, String eteamsId, SalaryArchiveQueryParam queryParam, Long employeeId, String tenantKey) { +// String nameI18n = SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 85368, "薪资档案"); +// List sheetList = new ArrayList<>(); +// +// ExcelSheetData excelSheetData = new ExcelSheetData(); +// // 1.工作簿名称 +// excelSheetData.setSheetName(nameI18n); +// // 获取所有可被引用的薪资项目 +// List salaryItems = salaryArchiveItemService.getCanAdjustSalaryItems(tenantKey); +// String[] header = { +// SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 85429, "姓名"), +// SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 86184, "个税扣缴义务人"), +// SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 86185, "部门"), +// SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 86186, "手机号"), +// SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 91075, "状态") +// }; +// List headerList = new ArrayList<>(Arrays.asList(header)); +// for (SalaryItemPO salaryItem : salaryItems) { +// headerList.add(salaryItem.getName()); +// } +// // 2.表头 +// excelSheetData.setHeaders(Collections.singletonList(headerList.toArray(new String[]{}))); +// // 获取所有个税扣缴义务人 +// Collection taxAgentList = taxAgentService.findAll(tenantKey); +// Collection salaryArchives = mapper.list(queryParam, tenantKey); +// List> listMaps = buildSalaryArchiveData(salaryArchives, taxAgentList, salaryItems, employeeId, tenantKey, Boolean.FALSE); +// // 组装数据 +// List> rows = new ArrayList<>(); +// listMaps.forEach(e->{ +// List row = new ArrayList<>(); +// row.add(e.get("username").toString()); +// row.add(e.get("taxAgentName").toString()); +// row.add(e.get("departmentName").toString()); +// row.add(e.get("mobile")==null?"":e.get("mobile").toString()); +// row.add(e.get("employeeStatus").toString()); +// // 薪资项目数据 +// for (SalaryItemPO salaryItem : salaryItems) { +// row.add(e.containsKey(salaryItem.getId()+SalaryItemConstant.DYNAMIC_SUFFIX)?(e.get(salaryItem.getId()+SalaryItemConstant.DYNAMIC_SUFFIX)==null?"":e.get(salaryItem.getId()+SalaryItemConstant.DYNAMIC_SUFFIX).toString()):""); +// } +// rows.add(row); +// }); +// // 3.表数据 +// excelSheetData.setRows(rows); +// +// sheetList.add(excelSheetData); +// +// salaryBatchService.simpleExportExcel(ExportExcelInfo.builder() +// .bizId(map.get("biz").toString()) +// .flag(true) +// .userId(employeeId) +// .eteamsId(eteamsId) +// .tenantKey(tenantKey) +// .operator(username) +// .module(map.get("module").toString()) +// .fileName(nameI18n + SalaryDateUtil.getFormatLocalDateTime(LocalDateTime.now())) +// .handlerName("exportSalaryArchive") +// .dataType(nameI18n) +// .function("exportSalaryArchive").build(), sheetList); +// } +// +// @Override +// public void downloadTemplate(Map map, String username, String eteamsId, SalaryArchiveImportTypeEnum salaryArchiveImportTypeEnum, SalaryArchiveQueryParam queryParam, Long employeeId, String tenantKey) { +// boolean isInit = salaryArchiveImportTypeEnum.getValue().equals(SalaryArchiveImportTypeEnum.INIT.getValue()); +// boolean isTaxAgentAdjust = salaryArchiveImportTypeEnum.getValue().equals(SalaryArchiveImportTypeEnum.TAXAGENTADJUST.getValue()); +// boolean isSalaryItemAdjust = salaryArchiveImportTypeEnum.getValue().equals(SalaryArchiveImportTypeEnum.SALARYITEMADJUST.getValue()); +// +// String nameI18n = SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 101601, "薪资档案导入模板"); +// // 初始化 +// if (isInit) { +// nameI18n+="-"+SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, SalaryArchiveImportTypeEnum.INIT.getLabelId(), SalaryArchiveImportTypeEnum.INIT.getDefaultLabel()); +// // 调整个税扣缴义务人 +// } else if (isTaxAgentAdjust) { +// nameI18n+="-"+SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, SalaryArchiveImportTypeEnum.TAXAGENTADJUST.getLabelId(), SalaryArchiveImportTypeEnum.TAXAGENTADJUST.getDefaultLabel()); +// // 调薪 +// } else if (isSalaryItemAdjust) { +// nameI18n+="-"+SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, SalaryArchiveImportTypeEnum.SALARYITEMADJUST.getLabelId(), SalaryArchiveImportTypeEnum.SALARYITEMADJUST.getDefaultLabel()); +// } +// String finalNameI18n = nameI18n; +// +// List sheetList = new ArrayList<>(); +// +// ExcelSheetData excelSheetData = new ExcelSheetData(); +// // 1.工作簿名称 +// excelSheetData.setSheetName(finalNameI18n); +// // 获取所有可被引用的薪资项目 +// List salaryItems = salaryArchiveItemService.getCanAdjustSalaryItems(tenantKey); +// List header = Lists.newArrayList(); +// header.add(SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 85429, "姓名")); +// header.add(SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 86184, "个税扣缴义务人")); +// header.add(SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 85904, "生效日期")); +// if (isTaxAgentAdjust || isSalaryItemAdjust) { +// header.add(SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 85431, "调整原因")); +// } +// header.add(SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 86185, "部门")); +// header.add(SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 86186, "手机号")); +// header.add(SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 91075, "状态")); +// if (isInit || isSalaryItemAdjust) { +// for (SalaryItemPO salaryItem : salaryItems) { +// header.add(salaryItem.getName()); +// } +// } +// // 2.表头 +// excelSheetData.setHeaders(Collections.singletonList(header.toArray(new String[]{}))); +// // 获取所有个税扣缴义务人 +// Collection taxAgentList = taxAgentService.findAll(tenantKey); +// Collection salaryArchives = mapper.list(queryParam, tenantKey); +// List> listMaps = buildSalaryArchiveData(salaryArchives, taxAgentList, salaryItems, employeeId, tenantKey, Boolean.FALSE); +// // 组装数据 +// List> rows = new ArrayList<>(); +// listMaps.forEach(e->{ +// List row = new ArrayList<>(); +// row.add(e.get("username").toString()); +// row.add(e.get("taxAgentName").toString()); +// if (isTaxAgentAdjust || isSalaryItemAdjust) { +// row.add(isTaxAgentAdjust?e.get("taxAgentEffectiveTime").toString():""); +// } +// row.add(""); +// row.add(e.get("departmentName").toString()); +// row.add(e.get("mobile")==null?"":e.get("mobile").toString()); +// row.add(e.get("employeeStatus").toString()); +// // 调薪 +// if (isInit || isSalaryItemAdjust) { +// // 薪资项目数据 +// for (SalaryItemPO salaryItem : salaryItems) { +// row.add(e.containsKey(salaryItem.getId()+SalaryItemConstant.DYNAMIC_SUFFIX)?(e.get(salaryItem.getId()+SalaryItemConstant.DYNAMIC_SUFFIX)==null?"":e.get(salaryItem.getId()+SalaryItemConstant.DYNAMIC_SUFFIX).toString()):""); +// } +// } +// rows.add(row); +// }); +// // 3.表数据 +// excelSheetData.setRows(rows); +// // 4.注释 +// List excelComments = Lists.newArrayList(); +// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 100344, "必填"), 0, 0, 0, 0); +// if (isInit || isTaxAgentAdjust) { +// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 100344, "必填"), 0, 0, 1, 1); +// } +// +// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 100458,"必填,格式样例为'2022-01-01'、'2022/1/1'"), 0, 0, 2, 2); +// +// // 调整个税扣缴义务人 +// if (isTaxAgentAdjust) { +// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 100952, "必填,可填写如:调动,变更,入职,离职,其他,初始化"), 0, 0, 3, 3); +// // 调薪 +// } else if (isSalaryItemAdjust) { +// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 100953, "必填,可填写如:入职,转正,调薪,调岗调薪,离职,其他,初始化"), 0, 0, 3, 3); +// } +// +// excelSheetData.setExcelComment(excelComments); +// +// sheetList.add(excelSheetData); +// +// salaryBatchService.simpleExportExcel(ExportExcelInfo.builder() +// .bizId(map.get("biz").toString()) +// .flag(true) +// .userId(employeeId) +// .eteamsId(eteamsId) +// .tenantKey(tenantKey) +// .operator(username) +// .module(map.get("module").toString()) +// .fileName(finalNameI18n + "-" + SalaryDateUtil.getFormatLocalDateTime(LocalDateTime.now())) +// .handlerName("exportSalaryArchive") +// .dataType(finalNameI18n + "-") +// .function("exportSalaryArchive").build(), sheetList); +// } +// +// @BatchExportHandler("exportSalaryArchive") +// public void exportSalaryArchiveHandler() { +// BatchCallbackMessage message = BatchExportContext.getBatchCallbackMessage(); +// log.info("接受到薪资档案导出的结果:{}", JSONObject.toJSONString(message)); +// } +// +// @Override +// public List dimissionSets(String tenantKey) { +// return new LambdaQueryChainWrapper<>(salaryArchiveDimissionMapper) +// .eq(SalaryArchiveDimissionPO::getDeleteType, 0) +// .eq(SalaryArchiveDimissionPO::getTenantKey, tenantKey).list(); +// } +// +// @Override +// public String saveDimissionSet(SalaryArchiveDimissionSaveParam saveParam, Long employeeId, String tenantKey) { +// List dimissionSets = new LambdaQueryChainWrapper<>(salaryArchiveDimissionMapper) +// .eq(SalaryArchiveDimissionPO::getDeleteType, 0) +// .eq(SalaryArchiveDimissionPO::getTenantKey, tenantKey).list(); +// if (CollectionUtils.isNotEmpty(dimissionSets)) { +// SalaryArchiveDimissionPO po = dimissionSets.get(0); +// po.setDimissionTimeInterval(saveParam.getDimissionTimeInterval().getValue()); +// po.setUpdateTime(LocalDateTime.now()); +// salaryArchiveDimissionMapper.updateById(po); +// } else { +// salaryArchiveDimissionMapper.insert(SalaryArchiveDimissionPO +// .builder() +// .id(IdGenerator.generate()) +// .dimissionTimeInterval(saveParam.getDimissionTimeInterval().getValue()) +// .createTime(LocalDateTime.now()) +// .updateTime(LocalDateTime.now()) +// .creator(employeeId) +// .tenantKey(tenantKey) +// .build() +// ); +// } +// return StringUtils.EMPTY; +// } +// +// @Override +// public List getSalaryArchiveData(LocalDateRange localDateRange, Collection employeeIds, String tenantKey) { +// return getSalaryArchiveData(localDateRange, employeeIds, Boolean.FALSE, tenantKey); +// } +// +// @Override +// public List getSalaryArchiveTaxAgentData(LocalDateRange localDateRange, Collection employeeIds, String tenantKey) { +// return getSalaryArchiveData(localDateRange, employeeIds, Boolean.TRUE, tenantKey); +// } +// +// /** +// * 根据日期范围和人员获取薪资档案数据 +// * @param localDateRange +// * @param employeeIds +// * @param isOnlyTaxAgent +// * @param tenantKey +// * @return +// */ +// private List getSalaryArchiveData(LocalDateRange localDateRange, Collection employeeIds, boolean isOnlyTaxAgent, String tenantKey) { +// // 获取个税扣缴义务人调整数据 +// List salaryArchiveTaxAgentList = new LambdaQueryChainWrapper<>(salaryArchiveTaxAgentMapper) +// .eq(SalaryArchiveTaxAgentPO::getDeleteType, 0) +// .eq(SalaryArchiveTaxAgentPO::getTenantKey, tenantKey) +// .in(CollectionUtils.isNotEmpty(employeeIds), SalaryArchiveTaxAgentPO::getEmployeeId, employeeIds) +// .le(SalaryArchiveTaxAgentPO::getEffectiveTime, localDateRange.getEndDate()) +// .orderByDesc(SalaryArchiveTaxAgentPO::getEffectiveTime) +// .list(); +// List allEmployeeIds = salaryArchiveTaxAgentList.stream().map(SalaryArchiveTaxAgentPO::getEmployeeId).distinct().collect(Collectors.toList()); +// // 获取所有可被引用的薪资项目 +// List salaryItems = salaryArchiveItemService.getCanAdjustSalaryItems(tenantKey); +// Collection salaryItemIds = salaryItems.stream().map(SalaryItemPO::getId).collect(Collectors.toList()); +// // 获取薪资项目调整数据,isOnlyTaxAgent为true时不需要薪资项目数据 +// List salaryArchiveItemDataList = isOnlyTaxAgent || CollectionUtils.isEmpty(salaryItemIds)?Lists.newArrayList():new LambdaQueryChainWrapper<>(salaryArchiveItemMapper) +// .eq(SalaryArchiveItemPO::getDeleteType, 0) +// .eq(SalaryArchiveItemPO::getTenantKey, tenantKey) +// .in(CollectionUtils.isNotEmpty(employeeIds), SalaryArchiveItemPO::getEmployeeId, employeeIds) +// .in(SalaryArchiveItemPO::getSalaryItemId, salaryItemIds) +// .le(SalaryArchiveItemPO::getEffectiveTime, localDateRange.getEndDate()) +// .orderByDesc(SalaryArchiveItemPO::getEffectiveTime) +// .list(); +// return SalaryArchiveBO.buildSalaryArchiveData(salaryArchiveTaxAgentList, +// salaryArchiveItemDataList, +// localDateRange, +// allEmployeeIds, +// isOnlyTaxAgent); +// } +// +// /** +// * 导入薪资档案 +// */ +// @BatchImportHandler("importSalaryArchive") +// public void importSalaryArchive() { +// BatchDocumentMessage message = BatchImportContext.getBatchDocumentMessage(); +// log.info("【薪资档案】接收到上传的数据:{}", JSONObject.toJSONString(message)); +// // 租户key +// String tenantKey = message.getTenantKey().toLowerCase(); +// try { +// // 加密用 +// DSTenantKeyThreadVar.tenantKey.set(tenantKey); +// // 接收到解析的数据 +// batchImportEbatch(message); +// } catch (Exception e) { +// e.printStackTrace(); +// log.error("【薪资档案】导入失败:{}", String.format("BatchTaskId=%s,错误信息=%s", message.getBatchTaskId(), e.getMessage())); +// } finally { +// // 加密用 +// DSTenantKeyThreadVar.tenantKey.remove(); +// } +// } +// +// /** +// * 导入的数据插入到数据库中 +// * @param message +// */ +// @Transactional(rollbackFor = Exception.class) +// public void batchImportEbatch(BatchDocumentMessage message) { +// List excelSheets = message.getBatchFile().getExcelSheets(); +// +// // 租户key +// String tenantKey = message.getTenantKey().toLowerCase(); +// Long currentEmployeeId = message.getUserId(); +// String paramsData = message.getUploadSet().getCustomData(); +// Map params = JSONObject.parseObject(paramsData, Map.class); +// +// // 1.自定义参数校验 +// boolean isValid = checkParams(message, params); +// if (!isValid) { +// return; +// } +// // 导入类型 +// String importType = params.get("importType").toString(); +// +// // 2.构建导入需要的数据 +// SalaryArchiveImportHandleParam importHandleParam = buildImportHandleParam(tenantKey); +// +// int total = 0; +// for (ExcelSheet excelSheet : excelSheets) { +// List> data = excelSheet.getData(); +// if (data != null) { +// total += data.size(); +// } +// } +// int index = 0; +// int successCount = 0; +// int errorCount = 0; +// // 错误excel内容 +// List errorExcelSheets = new ArrayList<>(); +// // 用于(初始化导入)的相同employeeId时的处理 +// boolean isInit = importType.equals(SalaryArchiveImportTypeEnum.INIT.getValue()); +// List initImportData = Lists.newArrayList(); +// // 用于(调薪和调整个税扣缴义务人)的相同employeeId时取第一条记录,如果是初始化导入则有重复 +// List allEmployeeIds = Lists.newArrayList(); +// for (ExcelSheet excelSheet : excelSheets) { +// if (excelSheet.getHeader().size() == 0) { +// continue; +// } +// List headers = excelSheet.getHeader(); +// boolean isValidHeader = checkHeaders(importType, message, headers); +// if (!isValidHeader) { +// return; +// } +// int effectiveTimeIndex = 0; +// for (int j = 0; j < headers.size(); j++) { +// Map header = headers.get(j); +// String key = Optional.ofNullable(header.get("key")).orElse("").toString(); +// if (key.equals(SalaryI18nUtil.getI18nLabel(tenantKey, currentEmployeeId, 85904, "生效日期"))) { +// effectiveTimeIndex = j; +// } +// } +// // 错误sheet数据 +// List> errorData = new ArrayList<>(); +// // 错误提示 +// List excelComments = new ArrayList<>(); +// +// List> data = excelSheet.getData(); +// Map map; +// if (data == null) { +// continue; +// } +// for (int i = 0; i < data.size(); i++) { +// index += 1; +// map = data.get(i); +// // 3.校验行内容 +// boolean isError = singleRowCheck(importType, allEmployeeIds, map, headers, effectiveTimeIndex, excelComments, errorCount, currentEmployeeId, tenantKey, importHandleParam); +// +// if (isError) { +// errorCount += 1; +// // 添加错误数据 +// errorData.add(map); +// } else { +// successCount += 1; +// } +// // 初始化导入对重复记录校验 +// if (isInit) { +// Map validMap = validInitImportData(isError, i, map, excelComments, errorCount, successCount, errorData, initImportData, currentEmployeeId, tenantKey, importHandleParam); +// errorCount = Integer.parseInt(validMap.getOrDefault("errorCount", errorCount).toString()); +// successCount = Integer.parseInt(validMap.getOrDefault("successCount", successCount).toString()); +// } +// // 导入进度 +// salaryBatchService.sendImportRate(message.getBizId(), total, index); +// } +// +// // 如果sheet包含错误数据 +// if (CollectionUtils.isNotEmpty(errorData)) { +// salaryBatchService.createErrorExcelSheet(headers, errorData, excelSheet.getName(), excelComments, errorExcelSheets); +// } +// } +// +// // 4.数据入库处理 +// handleImportData(isInit, tenantKey, importHandleParam); +// +// // 发送导入回调信息 +// salaryBatchService.sendImportCallBackInfo(message, successCount, errorCount, errorExcelSheets); +// } +// +// /** +// * 构建导入处理参数 +// * @param tenantKey +// * @return +// */ +// private SalaryArchiveImportHandleParam buildImportHandleParam(String tenantKey) { +// // 获取所有可被引用的薪资项目 +// List salaryItems = salaryArchiveItemService.getCanAdjustSalaryItems(tenantKey); +// +// Collection salaryItemIds = salaryItems.stream().map(SalaryItemPO::getId).collect(Collectors.toList()); +// +// return SalaryArchiveImportHandleParam.builder() +// // 获取租户下所有的人员 +// .employees(mapper.listEmployee(tenantKey)) +// // 获取所有个税扣缴义务人 +// .taxAgentList(taxAgentService.findAll(tenantKey)) +// .salaryItems(salaryItems) +// // 查询已有的薪资档案基本数据 +// .salaryArchives(mapper.list(SalaryArchiveQueryParam.builder().build(), tenantKey)) +// .salaryItemIds(salaryItemIds) +// // 查询已生效的薪资项目数据 +// .effectiveItemList(getEffectiveItemList(salaryItemIds, tenantKey)) +// // 查询未生效的薪资项目数据 +// .ineffectiveItemList(getIneffectiveItemList(salaryItemIds, tenantKey)) +// // 查询已生效的个税扣缴义务人数据 +// .effectiveTaxAgentList(getEffectiveTaxAgentList(tenantKey)) +// // 查询未生效的个税扣缴义务人数据 +// .ineffectiveTaxAgentList(getIneffectiveTaxAgentList(tenantKey)) +// // 当前时间 +// .nowTime(LocalDateTime.now()) +// // 当天 +// .today(LocalDate.now()) +// // 待保存薪资档案 +// .salaryArchiveSaves(Lists.newArrayList()) +// // 待保存薪资档案-个税扣缴义务人 +// .salaryArchiveTaxAgentSaves(Lists.newArrayList()) +// // 待保存薪资档案-薪资项目 +// .salaryArchiveItemSaves(Lists.newArrayList()) +// // 待删除薪资档案-个税扣缴义务人 +// .salaryArchiveTaxAgentDelTaxAgentIds(Lists.newArrayList()) +// // 待删除薪资档案-薪资项目 +// .salaryArchiveItemDelSalaryItemIds(Lists.newArrayList()) +// .build(); +// } +// +// /** +// * 初始化导入数据校验 +// * 说明:如果一个人的多条记录中有一个错那么就全部弄到错误文档中 +// * @param isError +// * @param rowNo +// * @param map +// * @param excelComments +// * @param errorCount +// * @param successCount +// * @param errorData +// * @param initImportData +// * @param currentEmployeeId +// * @param tenantKey +// * @param importHandleParam +// */ +// private Map validInitImportData(boolean isError, int rowNo, Map map, List excelComments, int errorCount, int successCount, List> errorData, List initImportData, Long currentEmployeeId, String tenantKey, SalaryArchiveImportHandleParam importHandleParam) { +// Long employeeId = Long.valueOf(Optional.ofNullable(map.get("employeeId")).orElse("0").toString()); +// Optional optionalInitImport = initImportData.stream().filter(f -> f.getEmployeeId().equals(employeeId)).findFirst(); +// +// Map validMap = new HashMap<>(); +// validMap.put("errorCount", errorCount); +// validMap.put("successCount", successCount); +// +// if (employeeId.equals(0L)) { +// return validMap; +// } +// AtomicInteger finalErrorCount = new AtomicInteger(errorCount); +// AtomicInteger finalSuccessCount = new AtomicInteger(successCount); +// if (optionalInitImport.isPresent()) { +// SalaryArchiveInitImportDTO initImport = optionalInitImport.get(); +// List sames = initImport.getSames(); +// sames.add(SalaryArchiveInitImportSameDTO.builder() +// .isError(isError) +// .rowNo(rowNo) +// .row(map) +// .build()); +// Optional optionalSame = sames.stream().filter(SalaryArchiveInitImportSameDTO::isError).findFirst(); +// // 只要是其中一行有错误 +// if (optionalSame.isPresent()) { +// sames.forEach(e->{ +// if (!e.isError()) { +// e.setError(Boolean.TRUE); +// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(tenantKey, currentEmployeeId, 101723, "该员工的薪资档案记录有误,请检查"), finalErrorCount.get() +1, finalErrorCount.get() +1, 0, 0); +// finalErrorCount.addAndGet(1); +// errorData.add(e.getRow()); +// finalSuccessCount.addAndGet(-1); +// } +// }); +// // 如果到目前为止都没错的话,则相互之间检验调整记录 +// } else { +// int nums = sames.size(); +// // 1.生效时间不可重复 +// List effectiveTimeList = sames.stream().map(m->Optional.ofNullable(m.getRow().get("effectiveTime")).orElse("").toString()).distinct().collect(Collectors.toList()); +// // 2.个税扣缴义务人和薪资项目共同决定是否重复 +// List rowSameList = sames.stream().map(m->{ +// Map row = m.getRow(); +// String taxAgent = Optional.ofNullable(row.get("taxAgent")).orElse("").toString(); +// String salaryItem = Optional.ofNullable(row.get("salaryItemVal")).orElse("").toString(); +// return taxAgent+salaryItem; +// }).distinct().collect(Collectors.toList()); +// if (effectiveTimeList.size()!=nums || rowSameList.size()!=nums) { +// sames.forEach(e->{ +// if (!e.isError()) { +// e.setError(Boolean.TRUE); +// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(tenantKey, currentEmployeeId, 101723, "该员工的薪资档案记录有误,请检查"), finalErrorCount.get() +1, finalErrorCount.get() +1, 0, 0); +// finalErrorCount.addAndGet(1); +// errorData.add(e.getRow()); +// finalSuccessCount.addAndGet(-1); +// } +// }); +// } +// } +// initImport.setSames(sames); +// } else { +// SalaryArchiveInitImportDTO initImport = new SalaryArchiveInitImportDTO(); +// initImport.setEmployeeId(employeeId); +// List sames = Lists.newArrayList(); +// sames.add(SalaryArchiveInitImportSameDTO.builder() +// .isError(isError) +// .rowNo(rowNo) +// .row(map) +// .build()); +// initImport.setSames(sames); +// initImportData.add(initImport); +// } +// // 如果出现错误 +// if (isError || errorCount!=finalErrorCount.get() || successCount!=finalSuccessCount.get()) { +// validMap.put("errorCount", finalErrorCount.get()); +// validMap.put("successCount", finalSuccessCount.get()); +// // 将前面添加好的数据给过滤掉 +// importHandleParam.setSalaryArchiveSaves(importHandleParam.getSalaryArchiveSaves().stream().filter(f->!f.getEmployeeId().equals(employeeId)).collect(Collectors.toList())); +// importHandleParam.setSalaryArchiveTaxAgentSaves(importHandleParam.getSalaryArchiveTaxAgentSaves().stream().filter(f->!f.getEmployeeId().equals(employeeId)).collect(Collectors.toList())); +// importHandleParam.setSalaryArchiveItemSaves(importHandleParam.getSalaryArchiveItemSaves().stream().filter(f->!f.getEmployeeId().equals(employeeId)).collect(Collectors.toList())); +// } +// return validMap; +// } +// +// /** +// * 校验单行数据 +// * @param importType +// * @param allEmployeeIds +// * @param map +// * @param headers +// * @param excelComments +// * @param errorCount +// * @param currentEmployeeId +// * @param tenantKey +// * @param importHandleParam +// * @return +// */ +// private boolean singleRowCheck(String importType, List allEmployeeIds, Map map, List headers, int effectiveTimeIndex, List excelComments, int errorCount, Long currentEmployeeId, String tenantKey, SalaryArchiveImportHandleParam importHandleParam) { +// boolean isError = false; +// +// boolean isInit = importType.equals(SalaryArchiveImportTypeEnum.INIT.getValue()); +// boolean isTaxAgentAdjust = importType.equals(SalaryArchiveImportTypeEnum.TAXAGENTADJUST.getValue()); +// boolean isSalaryItemAdjust = importType.equals(SalaryArchiveImportTypeEnum.SALARYITEMADJUST.getValue()); +// +// String userNameI18n = SalaryI18nUtil.getI18nLabel(tenantKey, currentEmployeeId, 85429, "姓名"); +// String taxAgentI18n = SalaryI18nUtil.getI18nLabel(tenantKey, currentEmployeeId, 86184, "个税扣缴义务人"); +// String effectiveTimeI18n = SalaryI18nUtil.getI18nLabel(tenantKey, currentEmployeeId, 85904, "生效日期"); +// String adjustReasonI18n = SalaryI18nUtil.getI18nLabel(tenantKey, currentEmployeeId, 85431, "调整原因"); +// // 1.姓名 +// String userName = Optional.ofNullable(map.get(userNameI18n)).orElse("").toString(); +// String deparmentName = Optional.ofNullable(map.get(SalaryI18nUtil.getI18nLabel(tenantKey, currentEmployeeId, 86185, "部门"))).orElse("").toString(); +// List employeeSameIds = importHandleParam.getEmployees().stream().filter(e -> (StringUtils.isBlank(userName) || Objects.equals(e.getUsername(), userName)) +// && (StringUtils.isBlank(deparmentName) || Objects.equals(e.getDeparmentName(), deparmentName))).map(SalaryArchiveEmployeePO::getEmployeeId) +// .collect(Collectors.toList()); +// Long employeeId = CollectionUtils.isNotEmpty(employeeSameIds) && employeeSameIds.size() == 1 && employeeSameIds.get(0)>0?employeeSameIds.get(0):null; +// // 调薪和调整个税扣缴义务人的存在相同的取第一条 +// if (employeeId != null && allEmployeeIds.contains(employeeId) && (isTaxAgentAdjust || isSalaryItemAdjust)) { +// return isError; +// } +// if (employeeId != null) { +// allEmployeeIds.add(employeeId); +// } +// // 用于初始化导入数据校验 +// map.put("employeeId", employeeId); +// map.put("rowId", employeeId); +// // 2.生效日期 +// String effectiveTimeCellVal = Optional.ofNullable(map.get(effectiveTimeI18n)).orElse("").toString().replaceAll(" 00:00:00", ""); +// // 免得失败后,会追加 00:00:00 +// map.put(effectiveTimeI18n, effectiveTimeCellVal); +// map.put("effectiveTime", effectiveTimeCellVal); +// LocalDate effectiveTime = SalaryDateUtil.checkDay(effectiveTimeCellVal)?dateStrToLocalDate(effectiveTimeCellVal):null; +// // 3.个税扣缴义务人 +// String taxAgentCellVal = Optional.ofNullable(map.get(taxAgentI18n)).orElse("").toString(); +// // 用于初始化导入的同一个人的记录校验 +// map.put("taxAgent", taxAgentCellVal); +// Optional optionalTaxAgent = importHandleParam.getTaxAgentList().stream().filter(m -> m.getName().equals(taxAgentCellVal)).findFirst(); +// Long taxAgentId = optionalTaxAgent.map(TaxAgentListDTO::getId).orElse(null); +// // 4.调整原因 +// String adjustReason = ""; +// if (isTaxAgentAdjust) { +// // 4.调整原因[个税扣缴义务人] +// adjustReason = SalaryArchiveTaxAgentAdjustReasonEnum.getValueByDefaultLabel(Optional.ofNullable(map.get(adjustReasonI18n)).orElse("").toString(), currentEmployeeId, tenantKey); +// } else if (isSalaryItemAdjust) { +// // 4.调整原因[薪资项目] +// adjustReason = SalaryArchiveItemAdjustReasonEnum.getValueByDefaultLabel(Optional.ofNullable(map.get(adjustReasonI18n)).orElse("").toString(), currentEmployeeId, tenantKey); +// } +// // 构建薪资档案 +// +// SalaryArchivePO finalSalaryArchive = buildSalaryArchive(isInit, currentEmployeeId, tenantKey, employeeId, importHandleParam); +// for (int j = 0; j < headers.size(); j++) { +// Map header = headers.get(j); +// Object key = header.get("key"); +// if (key == null) { +// continue; +// } +// String cellVal = Optional.ofNullable(map.get(key.toString())).orElse("").toString(); +// +// boolean isEmpty = StringUtils.isEmpty(cellVal) && +// (userNameI18n.equals(key.toString()) +// // 个税扣缴义务人列判空(初始化导入或调整个税扣缴义务人) +// || (taxAgentI18n.equals(key.toString()) && (isInit || isTaxAgentAdjust)) +// || effectiveTimeI18n.equals(key.toString()) +// // 调整原因列判空(调薪或调整个税扣缴义务人) +// || (adjustReasonI18n.equals(key.toString()) && (isTaxAgentAdjust || isSalaryItemAdjust))); +// // 判空 +// if (isEmpty) { +// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(tenantKey, currentEmployeeId, 100577, "不能为空"), errorCount+1, errorCount+1, j, j); +// isError = true; +// } +// // 1.姓名列处理 +// if (!isEmpty && userNameI18n.equals(key.toString())) { +// if (CollectionUtils.isEmpty(employeeSameIds) || employeeSameIds.size() > 1) { +// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(tenantKey, currentEmployeeId, 100578, "员工信息不能为空且不可重复(姓名与部门同时确认唯一)"), errorCount+1, errorCount+1, j, j); +// isError = true; +// } else if (employeeId == null) { +// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(tenantKey, currentEmployeeId, 100579, "姓名错误,系统内不存在该姓名"), errorCount+1, errorCount+1, j, j); +// isError = true; +// // (调薪或调整个税扣缴义务人) +// } else if (finalSalaryArchive == null && (isTaxAgentAdjust || isSalaryItemAdjust)) { +// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(tenantKey, currentEmployeeId, 101653, "该人员的薪资档案不存在,请先初始化"), errorCount+1, errorCount+1, j, j); +// isError = true; +// } +// // 2.个税扣缴义务人列处理(初始化导入或调整个税扣缴义务人) +// } else if (!isEmpty && taxAgentI18n.equals(key.toString()) && (isInit || isTaxAgentAdjust)) { +// isError = handleTaxAgent(isError, isInit, effectiveTimeIndex, excelComments, errorCount, j, currentEmployeeId, tenantKey, +// taxAgentId, effectiveTime, finalSalaryArchive, adjustReason, importHandleParam); +// // 3.生效时间处理 +// } else if (!isEmpty && effectiveTimeI18n.equals(key.toString()) && effectiveTime == null) { +// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(tenantKey, currentEmployeeId, 102497, "生效日期错误或格式不正确,正确格式示例为'2022-01-01'、'2022/1/1'"), errorCount+1, errorCount+1, j, j); +// isError = true; +// // 4.调整原因列处理(调薪或调整个税扣缴义务人) +// } else if (!isEmpty && adjustReasonI18n.equals(key.toString()) && (isTaxAgentAdjust || isSalaryItemAdjust) && StringUtils.isEmpty(adjustReason)) { +// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(tenantKey, currentEmployeeId, 100591, "调整原因不存在"), errorCount+1, errorCount+1, j, j); +// isError = true; +// // 5.薪资项目列处理(初始化导入或调薪) +// } else { +// // 薪资项目数据 +// if (effectiveTime == null || finalSalaryArchive == null || !(isInit || isSalaryItemAdjust)) { +// continue; +// } +// isError = handleSalaryItem(isError, isInit, effectiveTimeIndex, excelComments, errorCount, j, currentEmployeeId, tenantKey, +// effectiveTime, finalSalaryArchive, adjustReason, importHandleParam, key.toString(), cellVal, map); +// +// } +// } +// return isError; +// } +// +// private SalaryArchivePO buildSalaryArchive(boolean isInit, Long currentEmployeeId, String tenantKey, Long employeeId, SalaryArchiveImportHandleParam importHandleParam) { +// Optional optionalSA = importHandleParam.getSalaryArchives().stream().filter(p->p.getEmployeeId().toString().equals(employeeId!=null?employeeId.toString():"")).findFirst(); +// SalaryArchivePO salaryArchive = null; +// if (optionalSA.isPresent()) { +// // 修改档案 +// SalaryArchiveListDTO sa = optionalSA.get(); +// salaryArchive = new SalaryArchivePO(); +// salaryArchive.setId(sa.getId()); +// salaryArchive.setEmployeeId(sa.getEmployeeId()); +// } else if (employeeId!=null && isInit) { +// // 新增档案 +// salaryArchive = SalaryArchivePO.builder() +// .id(IdGenerator.generate()) +// .employeeId(employeeId) +// .createTime(importHandleParam.getNowTime()) +// .updateTime(importHandleParam.getNowTime()) +// .creator(currentEmployeeId) +// .tenantKey(tenantKey) +// .build(); +// importHandleParam.getSalaryArchiveSaves().add(salaryArchive); +// } +// return salaryArchive; +// } +// +// /** +// * 个税扣缴义务人处理 +// * @param isError +// * @param excelComments +// * @param errorCount +// * @param j +// * @param currentEmployeeId +// * @param tenantKey +// * @param taxAgentId +// * @param effectiveTime +// * @param finalSalaryArchive +// * @param taxAgentAdjustReason +// * @param importHandleParam +// * @return +// */ +// private boolean handleTaxAgent(boolean isError, boolean isInit , int effectiveTimeIndex, +// List excelComments, int errorCount, int j, Long currentEmployeeId, String tenantKey, +// Long taxAgentId, LocalDate effectiveTime,SalaryArchivePO finalSalaryArchive, String taxAgentAdjustReason, SalaryArchiveImportHandleParam importHandleParam) { +// if (taxAgentId == null) { +// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(tenantKey, currentEmployeeId, 100545, "个税扣缴义务人不存在"), errorCount+1, errorCount+1, j, j); +// isError = true; +// } else if (effectiveTime != null && finalSalaryArchive != null) { +// boolean isBeforeError = false; +// if (!isInit) { +// // 前后调整校验 +// // 已生效 +// List effectiveList = importHandleParam.getEffectiveTaxAgentList().stream().filter(i -> finalSalaryArchive.getId().equals(i.getSalaryArchiveId())).collect(Collectors.toList()); +// // 当前已生效 +// SalaryArchiveTaxAgentPO effectiveTaxAgent = CollectionUtils.isNotEmpty(effectiveList)&&effectiveList.size()>0?effectiveList.get(0):null; +// // 当前已生效的前一次调整 +// SalaryArchiveTaxAgentPO effectiveBeforeTaxAgent = CollectionUtils.isNotEmpty(effectiveList)&&effectiveList.size()>1?effectiveList.get(1):null; +// // 未生效 +// Optional optionalIneffective = importHandleParam.getIneffectiveTaxAgentList().stream().filter(i -> finalSalaryArchive.getId().equals(i.getSalaryArchiveId())).findFirst(); +// SalaryArchiveTaxAgentPO ineffectiveTaxAgent = optionalIneffective.orElse(null); +// // 1.检验是否可以调整 +// if (effectiveTaxAgent != null) { +// // 当前已经生效的时间 +// LocalDate currentEffectiveTime = effectiveTaxAgent.getEffectiveTime(); +// // 1.1 如果早于<当前已生效 +// if (effectiveTime.isBefore(currentEffectiveTime)) { +// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(tenantKey, currentEmployeeId, 100429, "生效日期不可早于当前已生效的调整日期"), errorCount+1, errorCount+1, effectiveTimeIndex, effectiveTimeIndex); +// isError = true; +// isBeforeError = true; +// // 1.2 如果等于当前已生效 +// } else if (effectiveTime.isEqual(currentEffectiveTime)) { +// if (effectiveBeforeTaxAgent != null && effectiveBeforeTaxAgent.getTaxAgentId().equals(taxAgentId)) { +// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(tenantKey, currentEmployeeId, 100432, "调整前后不可相同"), errorCount+1, errorCount+1, j, j); +// isError = true; +// } +// if (ineffectiveTaxAgent != null && ineffectiveTaxAgent.getTaxAgentId().equals(taxAgentId)) { +// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(tenantKey, currentEmployeeId, 100434, "与未生效的调整后不可相同"), errorCount+1, errorCount+1, j, j); +// isError = true; +// } +// // 1.3 如果>已经生效且<=今天 +// } else if (effectiveTime.isAfter(currentEffectiveTime) && !effectiveTime.isAfter(importHandleParam.getToday())) { +// if (effectiveTaxAgent.getTaxAgentId().equals(taxAgentId)) { +// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(tenantKey, currentEmployeeId, 100432, "调整前后不可相同"), errorCount+1, errorCount+1, j, j); +// isError = true; +// } +// if (ineffectiveTaxAgent != null && ineffectiveTaxAgent.getTaxAgentId().equals(taxAgentId)) { +// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(tenantKey, currentEmployeeId, 100434, "与未生效的调整后不可相同"), errorCount+1, errorCount+1, j, j); +// isError = true; +// } +// // 1.4 如果>今天 +// } else if (effectiveTime.isAfter(importHandleParam.getToday()) && effectiveTaxAgent.getTaxAgentId().equals(taxAgentId)) { +// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(tenantKey, currentEmployeeId, 100432, "调整前后不可相同"), errorCount+1, errorCount+1, j, j); +// isError = true; +// } +// } else if (ineffectiveTaxAgent != null && ineffectiveTaxAgent.getTaxAgentId().equals(taxAgentId)) { +// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(tenantKey, currentEmployeeId, 100434, "与未生效的调整后不可相同"), errorCount+1, errorCount+1, j, j); +// isError = true; +// } +// // 2.数据处理,有的就先删后增 +// if (effectiveTaxAgent != null && effectiveTime.isEqual(effectiveTaxAgent.getEffectiveTime())) { +// importHandleParam.getSalaryArchiveTaxAgentDelTaxAgentIds().add(effectiveTaxAgent.getId()); +// } +// if (ineffectiveTaxAgent != null && effectiveTime.isAfter(importHandleParam.getToday())) { +// importHandleParam.getSalaryArchiveTaxAgentDelTaxAgentIds().add(ineffectiveTaxAgent.getId()); +// } +// } +// if (!isBeforeError) { +// importHandleParam.getSalaryArchiveTaxAgentSaves().add(SalaryArchiveTaxAgentPO.builder() +// .id(IdGenerator.generate()) +// .salaryArchiveId(finalSalaryArchive.getId()) +// .employeeId(finalSalaryArchive.getEmployeeId()) +// .taxAgentId(taxAgentId) +// .effectiveTime(effectiveTime) +// .adjustReason(StringUtils.isEmpty(taxAgentAdjustReason)?SalaryArchiveTaxAgentAdjustReasonEnum.INIT.getValue():taxAgentAdjustReason) +// .operator(currentEmployeeId) +// .operateTime(importHandleParam.getNowTime()) +// .createTime(importHandleParam.getNowTime()) +// .updateTime(importHandleParam.getNowTime()) +// .creator(currentEmployeeId) +// .tenantKey(tenantKey) +// .build()); +// } +// } +// return isError; +// } +// +// /** +// * 薪资项目处理 +// * @param isError +// * @param excelComments +// * @param errorCount +// * @param j +// * @param currentEmployeeId +// * @param tenantKey +// * @param effectiveTime +// * @param finalSalaryArchive +// * @param salaryItemAdjustReason +// * @param importHandleParam +// * @param cellVal +// * @return +// */ +// private boolean handleSalaryItem(boolean isError, boolean isInit, int effectiveTimeIndex, +// List excelComments, int errorCount, int j, Long currentEmployeeId, String tenantKey, +// LocalDate effectiveTime,SalaryArchivePO finalSalaryArchive, String salaryItemAdjustReason, SalaryArchiveImportHandleParam importHandleParam, +// String key, String cellVal, Map map) { +// Optional optionalSalaryItem = importHandleParam.getSalaryItems().stream().filter(e->e.getName().equals(key)).findFirst(); +// if (optionalSalaryItem.isPresent()) { +// Long salaryItemId = optionalSalaryItem.get().getId(); +// boolean isBeforeError = false; +// if (!isInit) { +// // 已生效 +// List effectiveList = importHandleParam.getEffectiveItemList().stream().filter(i -> finalSalaryArchive.getId().equals(i.getSalaryArchiveId()) && i.getSalaryItemId().equals(salaryItemId)).collect(Collectors.toList()); +// // 当前已生效 +// SalaryArchiveItemPO effectiveSalaryItem = CollectionUtils.isNotEmpty(effectiveList)&&effectiveList.size()>0?effectiveList.get(0):null; +// // 当前已生效的前一次调整 +// SalaryArchiveItemPO effectiveBeforeSalaryItem = CollectionUtils.isNotEmpty(effectiveList)&&effectiveList.size()>1?effectiveList.get(1):null; +// // 未生效 +// Optional optionalIneffective = importHandleParam.getIneffectiveItemList().stream().filter(i -> finalSalaryArchive.getId().equals(i.getSalaryArchiveId()) && i.getSalaryItemId().equals(salaryItemId)).findFirst(); +// SalaryArchiveItemPO ineffectiveSalaryItem = optionalIneffective.orElse(null); +// +// // 1.检验是否可以调整 +// if (effectiveSalaryItem != null) { +// // 当前已经生效的时间 +// LocalDate currentEffectiveTime = effectiveSalaryItem.getEffectiveTime(); +// // 1.1 如果早于<当前已生效 +// if (effectiveTime.isBefore(currentEffectiveTime)) { +// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(tenantKey, currentEmployeeId, 100429, "生效日期不可早于当前已生效的调整日期"), errorCount+1, errorCount+1, effectiveTimeIndex, effectiveTimeIndex); +// isError = true; +// isBeforeError = true; +// // 1.2 如果等于当前已生效 +// } else if (effectiveTime.isEqual(currentEffectiveTime)) { +// if (effectiveBeforeSalaryItem !=null && effectiveBeforeSalaryItem.getItemValue().equals(cellVal)) { +// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(tenantKey, currentEmployeeId, 100432, "调整前后不可相同"), errorCount+1, errorCount+1, j, j); +// isError = true; +// } +// if (ineffectiveSalaryItem != null && ineffectiveSalaryItem.getItemValue().equals(cellVal)) { +// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(tenantKey, currentEmployeeId, 100434, "与未生效的调整后不可相同"), errorCount+1, errorCount+1, j, j); +// isError = true; +// } +// // 1.3 如果>已经生效且<=今天 +// } else if (effectiveTime.isAfter(currentEffectiveTime) && !effectiveTime.isAfter(importHandleParam.getToday())) { +// if (effectiveSalaryItem.getItemValue().equals(cellVal)) { +// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(tenantKey, currentEmployeeId, 100432, "调整前后不可相同"), errorCount+1, errorCount+1, j, j); +// isError = true; +// } +// if (ineffectiveSalaryItem != null && ineffectiveSalaryItem.getItemValue().equals(cellVal)) { +// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(tenantKey, currentEmployeeId, 100434, "与未生效的调整后不可相同"), errorCount+1, errorCount+1, j, j); +// isError = true; +// } +// // 1.4 如果>今天 +// } else if (effectiveTime.isAfter(importHandleParam.getToday()) && effectiveSalaryItem.getItemValue().equals(cellVal)) { +// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(tenantKey, currentEmployeeId, 100432, "调整前后不可相同"), errorCount+1, errorCount+1, j, j); +// isError = true; +// } +// } else if (ineffectiveSalaryItem != null && ineffectiveSalaryItem.getItemValue().equals(cellVal)) { +// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(tenantKey, currentEmployeeId, 100434, "与未生效的调整后不可相同"), errorCount+1, errorCount+1, j, j); +// isError = true; +// } +// // 2.数据处理 +// if (effectiveSalaryItem != null && effectiveTime.isEqual(effectiveSalaryItem.getEffectiveTime())) { +// importHandleParam.getSalaryArchiveItemDelSalaryItemIds().add(effectiveSalaryItem.getId()); +// } +// if (ineffectiveSalaryItem != null && effectiveTime.isAfter(importHandleParam.getToday())) { +// importHandleParam.getSalaryArchiveItemDelSalaryItemIds().add(ineffectiveSalaryItem.getId()); +// } +// } +// if (!isBeforeError) { +// importHandleParam.getSalaryArchiveItemSaves().add(SalaryArchiveItemPO.builder() +// .id(IdGenerator.generate()) +// .salaryArchiveId(finalSalaryArchive.getId()) +// .employeeId(finalSalaryArchive.getEmployeeId()) +// .effectiveTime(effectiveTime) +// .adjustReason(StringUtils.isEmpty(salaryItemAdjustReason) ? SalaryArchiveItemAdjustReasonEnum.INIT.getValue() : salaryItemAdjustReason) +// .salaryItemId(salaryItemId) +// .itemValue(cellVal) +// .description("") +// .operator(currentEmployeeId) +// .operateTime(importHandleParam.getNowTime()) +// .createTime(importHandleParam.getNowTime()) +// .updateTime(importHandleParam.getNowTime()) +// .creator(currentEmployeeId) +// .tenantKey(tenantKey) +// .build()); +// } +// // 用于初始化导入,同一个人的多行记录之间的薪资项目是否调整 +// map.put("salaryItemVal", Optional.ofNullable(map.get("salaryItemVal")).orElse("").toString()+salaryItemId+cellVal); +// } +// return isError; +// } +// +// /** +// * 字符串转日期 +// * 兼容/和- +// * @param effectiveTime +// * @return +// */ +// private LocalDate dateStrToLocalDate(String effectiveTime) { +// LocalDate localDate = null; +// try { +// if (effectiveTime.contains("/")) { +// String[] strs = effectiveTime.split("/"); +// localDate = LocalDate.of(Integer.parseInt(strs[0]), Integer.parseInt(strs[1]), Integer.parseInt(strs[2])); +// } else if (effectiveTime.contains("-")) { +// String[] strs = effectiveTime.replaceAll("-0", "-").split("-"); +// // localDate = LocalDate.parse(effectiveTime, DateTimeFormatter.ofPattern("yyyy-MM-dd")); // 月份日期超过最大会被改为最大 +// localDate = LocalDate.of(Integer.parseInt(strs[0]), Integer.parseInt(strs[1]), Integer.parseInt(strs[2])); +// } +// } catch (Exception e) { +// localDate = null; +// } +// +// return localDate; +// } +// +// private List getEffectiveItemList(Collection salaryItemIds, String tenantKey) { +// // 没有薪资项目时,给个不存在的,否则加载所有不合理 +// salaryItemIds = CollectionUtils.isEmpty(salaryItemIds)?Collections.singletonList(0L):salaryItemIds; +// return new LambdaQueryChainWrapper<>(salaryArchiveItemMapper) +// .eq(SalaryArchiveItemPO::getDeleteType, 0) +// .eq(SalaryArchiveItemPO::getTenantKey, tenantKey) +// .le(SalaryArchiveItemPO::getEffectiveTime, LocalDate.now()) +// .in(SalaryArchiveItemPO::getSalaryItemId, salaryItemIds) +// .orderByDesc(SalaryArchiveItemPO::getEffectiveTime) +// .list(); +// } +// +// private List getIneffectiveItemList(Collection salaryItemIds, String tenantKey) { +// // 没有薪资项目时,给个不存在的,否则加载所有不合理 +// salaryItemIds = CollectionUtils.isEmpty(salaryItemIds)?Collections.singletonList(0L):salaryItemIds; +// return new LambdaQueryChainWrapper<>(salaryArchiveItemMapper) +// .eq(SalaryArchiveItemPO::getDeleteType, 0) +// .eq(SalaryArchiveItemPO::getTenantKey, tenantKey) +// .in(SalaryArchiveItemPO::getSalaryItemId, salaryItemIds) +// .gt(SalaryArchiveItemPO::getEffectiveTime, LocalDate.now()) +// .list(); +// } +// +// private List getEffectiveTaxAgentList(String tenantKey) { +// return new LambdaQueryChainWrapper<>(salaryArchiveTaxAgentMapper) +// .eq(SalaryArchiveTaxAgentPO::getDeleteType, 0) +// .eq(SalaryArchiveTaxAgentPO::getTenantKey, tenantKey) +// .le(SalaryArchiveTaxAgentPO::getEffectiveTime, LocalDate.now()) +// .orderByDesc(SalaryArchiveTaxAgentPO::getEffectiveTime) +// .list(); +// } +// +// private List getIneffectiveTaxAgentList(String tenantKey) { +// return new LambdaQueryChainWrapper<>(salaryArchiveTaxAgentMapper) +// .eq(SalaryArchiveTaxAgentPO::getDeleteType, 0) +// .eq(SalaryArchiveTaxAgentPO::getTenantKey, tenantKey) +// .gt(SalaryArchiveTaxAgentPO::getEffectiveTime, LocalDate.now()) +// .list(); +// } +// +// /** +// * 检查参数 +// * @param message +// * @param params +// * @return +// */ +// private boolean checkParams(BatchDocumentMessage message, Map params) { +// boolean isValid = true; +// String errorMsg = ""; +// if (params == null) { +// errorMsg = SalaryI18nUtil.getI18nLabel(message.getTenantKey(), message.getUserId(), 100582, "参数必传"); +// } else { +// if (!params.containsKey("importType") +// || params.get("importType") == null) { +// errorMsg = SalaryI18nUtil.getI18nLabel(message.getTenantKey(), message.getUserId(), 100592, "导入类型必传"); +// } else { +// Optional optional = Arrays.stream(SalaryArchiveImportTypeEnum.values()).filter(e->e.getValue().equals(params.get("importType").toString())).findFirst(); +// if (!optional.isPresent()) { +// errorMsg = SalaryI18nUtil.getI18nLabel(message.getTenantKey(), message.getUserId(), 100593, "导入类型不正确"); +// } else { +// message.setDataType(message.getDataType()+"-"+SalaryI18nUtil.getI18nLabel(message.getTenantKey(), message.getUserId(), optional.get().getLabelId(), optional.get().getDefaultLabel())); +// } +// } +// } +// // 有错误信息发送 +// if (org.apache.commons.lang3.StringUtils.isNotEmpty(errorMsg)) { +// // 发送导入回调信息 +// salaryBatchService.sendImportCallBackInfo(message, errorMsg); +// isValid = false; +// } +// return isValid; +// } +// +// /** +// * 检查列头 +// * @param importType +// * @param message +// * @param headers +// * @return +// */ +// private boolean checkHeaders(String importType, BatchDocumentMessage message, List headers) { +// boolean isValid = true; +// boolean isInit = importType.equals(SalaryArchiveImportTypeEnum.INIT.getValue()); +// boolean isTaxAgentAdjust = importType.equals(SalaryArchiveImportTypeEnum.TAXAGENTADJUST.getValue()); +// boolean isSalaryItemAdjust = importType.equals(SalaryArchiveImportTypeEnum.SALARYITEMADJUST.getValue()); +// +// String tenantKey = message.getTenantKey(); +// Long currentEmployeeId = message.getUserId(); +// String userNameI18n = SalaryI18nUtil.getI18nLabel(tenantKey, currentEmployeeId, 85429, "姓名"); +// String taxAgentI18n = SalaryI18nUtil.getI18nLabel(tenantKey, currentEmployeeId, 86184, "个税扣缴义务人"); +// String effectiveTimeI18n = SalaryI18nUtil.getI18nLabel(tenantKey, currentEmployeeId, 85904, "生效日期"); +// String adjustReasonI18n = SalaryI18nUtil.getI18nLabel(tenantKey, currentEmployeeId, 85431, "调整原因"); +// +// List headerList = headers.stream().map(m->Optional.ofNullable(m.get("key")).orElse("").toString()).collect(Collectors.toList()); +// +// List mustHeaders = Lists.newArrayList(); +// if (isInit) { +// mustHeaders.add(userNameI18n); +// mustHeaders.add(taxAgentI18n); +// mustHeaders.add(effectiveTimeI18n); +// } else if (isTaxAgentAdjust) { +// mustHeaders.add(userNameI18n); +// mustHeaders.add(taxAgentI18n); +// mustHeaders.add(effectiveTimeI18n); +// mustHeaders.add(adjustReasonI18n); +// } else if (isSalaryItemAdjust) { +// mustHeaders.add(userNameI18n); +// mustHeaders.add(effectiveTimeI18n); +// mustHeaders.add(adjustReasonI18n); +// } +// // 缺少的必须列 +// List lackHeaders = mustHeaders.stream().filter(item -> !headerList.contains(item)).collect(Collectors.toList()); +// +// String errorMsg = ""; +// String checkHeaderI18n = SalaryI18nUtil.getI18nLabel(tenantKey, currentEmployeeId, 101850, "缺少如下列,请检查:"); +// if (CollectionUtils.isNotEmpty(lackHeaders)) { +// errorMsg = checkHeaderI18n + Joiner.on(",").join(lackHeaders); +// } +// +// // 有错误信息发送 +// if (StringUtils.isNotEmpty(errorMsg)) { +// // 发送导入回调信息 +// salaryBatchService.sendImportCallBackInfo(message, errorMsg); +// isValid = false; +// } +// return isValid; +// } +// +// /** +// * 数据落库处理 +// * @param importHandleParam +// */ +// private void handleImportData(boolean isInit, String tenantKey, SalaryArchiveImportHandleParam importHandleParam) { +// +// List salaryArchiveSaves = importHandleParam.getSalaryArchiveSaves(); +// List salaryArchiveTaxAgentSaves = importHandleParam.getSalaryArchiveTaxAgentSaves(); +// List salaryArchiveItemSaves = importHandleParam.getSalaryArchiveItemSaves(); +// List salaryArchiveTaxAgentDelTaxAgentIds = importHandleParam.getSalaryArchiveTaxAgentDelTaxAgentIds(); +// List salaryArchiveItemDelSalaryItemIds = importHandleParam.getSalaryArchiveItemDelSalaryItemIds(); +// // 初始化导入 +// if (isInit) { +// List salaryArchiveTaxAgentIds = importHandleParam.getSalaryArchiveTaxAgentSaves().stream().map(SalaryArchiveTaxAgentPO::getSalaryArchiveId).distinct().collect(Collectors.toList()); +// List salaryArchiveItemIds = importHandleParam.getSalaryArchiveItemSaves().stream().map(SalaryArchiveItemPO::getSalaryArchiveId).distinct().collect(Collectors.toList()); +// List salaryArchiveIds = salaryArchiveTaxAgentIds.stream().filter(item -> salaryArchiveItemIds.contains(item)).collect(Collectors.toList()); +// if (CollectionUtils.isNotEmpty(salaryArchiveIds)) { +// List> partition = Lists.partition(salaryArchiveIds, 1000); +// for (List p : partition) { +// new LambdaUpdateChainWrapper<>(salaryArchiveTaxAgentMapper) +// .eq(SalaryArchiveTaxAgentPO::getDeleteType, 0) +// .eq(SalaryArchiveTaxAgentPO::getTenantKey, tenantKey) +// .in(SalaryArchiveTaxAgentPO::getSalaryArchiveId, p) +// .set(SalaryArchiveTaxAgentPO::getDeleteType, 1) +// .update(); +// new LambdaUpdateChainWrapper<>(salaryArchiveItemMapper) +// .eq(SalaryArchiveItemPO::getDeleteType, 0) +// .eq(SalaryArchiveItemPO::getTenantKey, tenantKey) +// .in(SalaryArchiveItemPO::getSalaryArchiveId, p) +// .set(SalaryArchiveItemPO::getDeleteType, 1) +// .update(); +// } +// } +// } else { +// if (CollectionUtils.isNotEmpty(salaryArchiveTaxAgentDelTaxAgentIds)) { +// salaryArchiveTaxAgentMapper.deleteBatchIds(salaryArchiveTaxAgentDelTaxAgentIds); +// } +// if (CollectionUtils.isNotEmpty(salaryArchiveItemDelSalaryItemIds)) { +// salaryArchiveItemMapper.deleteBatchIds(salaryArchiveItemDelSalaryItemIds); +// } +// } +// +// // 新增薪资档案 +// if (CollectionUtils.isNotEmpty(salaryArchiveSaves)) { +// // 薪资档案 +// mapper.batchInsert(salaryArchiveSaves); +// } +// // 薪资档案-个税扣缴义务人 +// if (CollectionUtils.isNotEmpty(salaryArchiveTaxAgentSaves)) { +// salaryArchiveTaxAgentMapper.batchInsert(salaryArchiveTaxAgentSaves); +// } +// // 薪资档案-薪资项目 +// if (CollectionUtils.isNotEmpty(salaryArchiveItemSaves)) { +// salaryArchiveItemMapper.batchInsert(salaryArchiveItemSaves); +// } +// } +//} diff --git a/src/com/engine/salary/service/impl/SalarySobItemServiceImpl.java b/src/com/engine/salary/service/impl/SalarySobItemServiceImpl.java index af3115961..ac4666848 100644 --- a/src/com/engine/salary/service/impl/SalarySobItemServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalarySobItemServiceImpl.java @@ -131,6 +131,7 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe // 校验 validSaveParam(salarySobId); + //fixme 事务 //清除原数据 cleanOldData(salarySobId); diff --git a/src/com/engine/salary/web/SalaryArchiveController.java b/src/com/engine/salary/web/SalaryArchiveController.java new file mode 100644 index 000000000..76464b360 --- /dev/null +++ b/src/com/engine/salary/web/SalaryArchiveController.java @@ -0,0 +1,366 @@ +package com.engine.salary.web; + +/** + * 薪资档案 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +public class SalaryArchiveController { +// +// @Autowired +// private SalaryArchiveWrapper salaryArchiveWrapper; +// @Autowired +// private SalaryArchiveItemWrapper salaryArchiveItemWrapper; +// @Autowired +// private SalaryArchiveTaxAgentWrapper salaryArchiveTaxAgentWrapper; +// /******** 薪资档案主表 start ***********************************************************************************************/ +// /** +// * 薪资档案列表的高级搜索 +// * +// * @return +// */ +// @GetMapping("/getSearchCondition") +// @ApiOperation("薪资档案列表的高级搜索") +// @WeaPermission +// public WeaResult getSearchCondition() { +// return WeaResult.success(salaryArchiveWrapper.getSearchCondition(UserContext.getCurrentEmployeeId(), TenantContext.getCurrentTenantKey())); +// } +// +// /** +// * 薪资档案列表 +// * +// * @param queryParam +// * @return +// */ +// @PostMapping("/list") +// @ApiOperation("薪资档案列表") +// @WeaPermission +// public WeaResult> list(@RequestBody SalaryArchiveQueryParam queryParam) { +// return WeaResult.success(salaryArchiveWrapper.list(queryParam, UserContext.getCurrentEmployeeId(), TenantContext.getCurrentTenantKey())); +// } +// +// /** +// * 导出薪资档案 +// * +// * @param queryParam +// * @return +// */ +// @PostMapping("/exportList") +// @ApiOperation("导出薪资档案") +// @WeaPermission +// public WeaResult> exportList(@RequestBody SalaryArchiveQueryParam queryParam) throws Exception { +// return WeaResult.success(salaryArchiveWrapper.exportList(queryParam, UserContext.getCurrentEmployeeId(), TenantContext.getCurrentTenantKey())); +// } +// +// /** +// * 获取薪资档案详情表单 +// * +// * @param salaryArchiveId +// * @return +// */ +// @GetMapping("/getForm") +// @ApiOperation("获取薪资档案详情表单") +// @WeaPermission +// public WeaResult getFrom(@RequestParam Long salaryArchiveId) { +// return WeaResult.success(salaryArchiveWrapper.getFrom(salaryArchiveId, UserContext.getCurrentEmployeeId(), TenantContext.getCurrentTenantKey())); +// } +// +// /** +// * 获取离职时段设置表单 +// * +// * @return +// */ +// @GetMapping("/getDimissionSetForm") +// @ApiOperation("获取离职时段设置表单") +// @WeaPermission +// public WeaResult getDimissionSetForm() { +// return WeaResult.success(salaryArchiveWrapper.getDimissionSetForm(TenantContext.getCurrentTenantKey())); +// } +// +// /** +// * 保存离职时段设置 +// * +// * @return +// */ +// @PostMapping("/saveDimissionSet") +// @ApiOperation("保存离职时段设置") +// @WeaPermission +// public WeaResult saveDimissionSet(@RequestBody SalaryArchiveDimissionSaveParam saveParam) { +// return WeaResult.success(salaryArchiveWrapper.saveDimissionSet(saveParam, UserContext.getCurrentEmployeeId(), TenantContext.getCurrentTenantKey())); +// } +// +// /** +// * 获取导入类型 +// * +// * @return +// */ +// @GetMapping("/getImportTypes") +// @ApiOperation("获取导入类型") +// @WeaPermission(publicPermission = true) +// public WeaResult>> getImportTypes() { +// List> importTypes = Arrays.stream(SalaryArchiveImportTypeEnum.values()).map(m -> { +// Map map = new HashMap<>(2); +// map.put("id", String.valueOf(m.getValue())); +// map.put("content", SalaryI18nUtil.getI18nLabel(TenantContext.getCurrentTenantKey(), UserContext.getCurrentEmployeeId(), m.getLabelId(), m.getDefaultLabel())); +// return map; +// }).collect(Collectors.toList()); +// return WeaResult.success(importTypes); +// } +// +// /** +// * 下载导入模板 +// * +// * @return +// */ +// @PostMapping("/downloadTemplate") +// @ApiOperation("下载导入模板") +// @WeaPermission +// public WeaResult> downloadTemplate(@RequestBody SalaryArchiveQueryParam queryParam) { +// return WeaResult.success(salaryArchiveWrapper.downloadTemplate(queryParam, UserContext.getCurrentEmployeeId(), TenantContext.getCurrentTenantKey())); +// } +// +// /** +// * 获取导入参数 +// * +// * @return +// */ +// @GetMapping("/getImportParams") +// @ApiOperation("获取导入参数") +// @WeaPermission +// public WeaResult getImportParams() { +// return WeaResult.success(salaryArchiveWrapper.getImportParams()); +// } +// /******** 薪资档案主表 end ***********************************************************************************************/ +// +// /******** 薪资项目调整 start ***********************************************************************************************/ +// /** +// * 通过薪资档案id获取薪资项目调整表单 +// * +// * @param salaryArchiveId +// * @return +// */ +// @GetMapping("/getSalaryItemForm") +// @ApiOperation("获取薪资项目调整表单") +// @WeaPermission +// public WeaResult getSalaryItemForm(@RequestParam Long salaryArchiveId) { +// return WeaResult.success(salaryArchiveItemWrapper.getSalaryItemForm(salaryArchiveId, UserContext.getCurrentEmployeeId(), TenantContext.getCurrentTenantKey())); +// } +// +// /** +// * 获取薪资项目调整前的值 +// * +// * @param adjustBeforeParam +// * @return +// */ +// @PostMapping("/getSalaryItemAdjustBeforeValue") +// @ApiOperation("获取薪资项目调整前的值") +// @WeaPermission +// public WeaResult getSalaryItemAdjustBeforeValue(@RequestBody SalaryItemAdjustBeforeParam adjustBeforeParam) { +// return WeaResult.success(salaryArchiveItemWrapper.getSalaryItemAdjustBeforeValue(adjustBeforeParam, UserContext.getCurrentEmployeeId(), TenantContext.getCurrentTenantKey())); +// } +// +// /** +// * 通过薪资档案的薪资项目id获取薪资项目调整表单 +// * +// * @param salaryArchiveItemId +// * @return +// */ +// @GetMapping("/getSalaryItemFormBySalaryArchiveItemId") +// @ApiOperation("获取薪资项目调整表单") +// @WeaPermission +// public WeaResult getSalaryItemFormBySalaryArchiveItemId(@RequestParam(value = "salaryArchiveItemId") Long salaryArchiveItemId) { +// return WeaResult.success(salaryArchiveItemWrapper.getSalaryItemFormBySalaryArchiveItemId(salaryArchiveItemId, UserContext.getCurrentEmployeeId(), TenantContext.getCurrentTenantKey())); +// } +// +// /** +// * 保存薪资项目调整 +// * +// * @param saveParam +// * @return +// */ +// @PostMapping("/saveSalaryItem") +// @ApiOperation("保存薪资项目调整") +// @WeaPermission +// public WeaResult saveSalaryItem(@RequestBody SalaryArchiveItemSaveParam saveParam) { +// return WeaResult.success(salaryArchiveItemWrapper.saveSalaryItem(saveParam, UserContext.getCurrentEmployeeId(), TenantContext.getCurrentTenantKey())); +// } +// +// /** +// * 删除薪资项目调整 +// * +// * @param salaryArchiveItemId +// * @return +// */ +// @PostMapping("/deleteSalaryItem") +// @ApiOperation("删除薪资项目调整") +// @WeaPermission +// public WeaResult deleteSalaryItem(@RequestParam(value = "salaryArchiveItemId") Long salaryArchiveItemId) { +// return WeaResult.success(salaryArchiveItemWrapper.deleteSalaryItem(salaryArchiveItemId, UserContext.getCurrentEmployeeId(), TenantContext.getCurrentTenantKey())); +// } +// /******** 薪资项目调整 end ***********************************************************************************************/ +// +// /******** 个税扣缴义务人调整 start ***********************************************************************************************/ +// /** +// * 获取个税扣缴义务人调整表单 +// * +// * @param salaryArchiveId +// * @return +// */ +// @GetMapping("/getTaxAgentForm") +// @ApiOperation("获取个税扣缴义务人调整表单") +// @WeaPermission +// public WeaResult getTaxAgentForm(@RequestParam(value = "salaryArchiveId") Long salaryArchiveId) { +// SalaryArchiveTaxAgentFormDTO form = salaryArchiveTaxAgentWrapper.getTaxAgentForm(salaryArchiveId, UserContext.getCurrentEmployeeId(), TenantContext.getCurrentTenantKey()); +// return WeaResult.success(form); +// } +// +// /** +// * 通过薪资档案的个税扣缴义务人id获取个税扣缴义务人调整表单 +// * +// * @param salaryArchiveTaxAgentId +// * @return +// */ +// @GetMapping("/getTaxAgentFormBySalaryArchiveTaxAgentId") +// @ApiOperation("获取薪资项目调整表单") +// @WeaPermission +// public WeaResult getTaxAgentFormBySalaryArchiveTaxAgentId(@RequestParam Long salaryArchiveTaxAgentId) { +// SalaryArchiveTaxAgentFormDTO form = salaryArchiveTaxAgentWrapper.getTaxAgentFormBySalaryArchiveTaxAgentId(salaryArchiveTaxAgentId, UserContext.getCurrentEmployeeId(), TenantContext.getCurrentTenantKey()); +// return WeaResult.success(form); +// } +// +// /** +// * 保存个税扣缴义务人调整 +// * +// * @param saveParam +// * @return +// */ +// @PostMapping("/saveTaxAgent") +// @ApiOperation("保存个税扣缴义务人调整") +// @WeaPermission +// public WeaResult saveTaxAgent(@RequestBody SalaryArchiveTaxAgentSaveParam saveParam) { +// return WeaResult.success(salaryArchiveTaxAgentWrapper.saveTaxAgent(saveParam, UserContext.getCurrentEmployeeId(), TenantContext.getCurrentTenantKey())); +// } +// +// /** +// * 删除个税扣缴义务人调整 +// * +// * @param salaryArchiveTaxAgentId +// * @return +// */ +// @PostMapping("/deleteTaxAgent") +// @ApiOperation("删除个税扣缴义务人调整") +// @WeaPermission +// public WeaResult deleteTaxAgent(@RequestParam(value = "salaryArchiveTaxAgentId") Long salaryArchiveTaxAgentId) { +// return WeaResult.success(salaryArchiveTaxAgentWrapper.deleteTaxAgent(salaryArchiveTaxAgentId, UserContext.getCurrentEmployeeId(), TenantContext.getCurrentTenantKey())); +// } +// /******** 薪资项目调整 end ***********************************************************************************************/ +// +// /******** 薪资项目调整记录 start ***********************************************************************************************/ +// /** +// * 薪资项目调整记录列表的高级搜索 +// * +// * @return +// */ +// @GetMapping("/adjustRecord/getSalaryItemSearchCondition") +// @ApiOperation("薪资项目调整记录列表的高级搜索") +// @WeaPermission +// public WeaResult getSalaryItemSearchCondition() { +// return WeaResult.success(salaryArchiveItemWrapper.getAdjustRecordSearchCondition(UserContext.getCurrentEmployeeId(), TenantContext.getCurrentTenantKey())); +// } +// +// /** +// * 薪资项目调整记录列表 +// * +// * @param queryParam +// * @return +// */ +// @PostMapping("/adjustRecord/salaryItemList") +// @ApiOperation("薪资项目调整记录列表") +// @WeaPermission +// public WeaResult> salaryItemList(@RequestBody SalaryItemAdjustRecordQueryParam queryParam) { +// return WeaResult.success(salaryArchiveItemWrapper.adjustRecordList(queryParam, UserContext.getCurrentEmployeeId(), TenantContext.getCurrentTenantKey())); +// } +// +// /** +// * 单个档案的薪资项目调整记录列表 +// * +// * @param queryParam +// * @return +// */ +// @PostMapping("/adjustRecord/singleSalaryItemList") +// @ApiOperation("单个档案的薪资项目调整记录列表") +// @WeaPermission +// public WeaResult> singleSalaryItemAdjustRecordList(@RequestBody SingleSalaryItemAdjustRecordQueryParam queryParam) { +// return WeaResult.success(salaryArchiveItemWrapper.singleSalaryItemAdjustRecordList(queryParam, UserContext.getCurrentEmployeeId(), TenantContext.getCurrentTenantKey())); +// } +// +// /** +// * 导出薪资项目调整记录列表 +// * +// * @param queryParam +// * @return +// */ +// @PostMapping("/adjustRecord/exportSalaryItemList") +// @ApiOperation("导出薪资项目调整记录列表") +// @WeaPermission +// public WeaResult> exportSalaryItemList(@RequestBody SalaryItemAdjustRecordQueryParam queryParam) { +// return WeaResult.success(salaryArchiveItemWrapper.exportAdjustRecordList(queryParam, UserContext.getCurrentEmployeeId(), TenantContext.getCurrentTenantKey())); +// } +// /******** 薪资项目调整记录 end ***********************************************************************************************/ +// +// /******** 个税扣缴义务人调整记录 start ***********************************************************************************************/ +// /** +// * 个税扣缴义务人调整记录列表的高级搜索 +// * +// * @return +// */ +// @GetMapping("/adjustRecord/getTaxAgentSearchCondition") +// @ApiOperation("个税扣缴义务人调整记录列表的高级搜索") +// @WeaPermission +// public WeaResult getTaxAgentSearchCondition() { +// return WeaResult.success(salaryArchiveTaxAgentWrapper.getAdjustRecordSearchCondition(UserContext.getCurrentEmployeeId(), TenantContext.getCurrentTenantKey())); +// } +// +// /** +// * 个税扣缴义务人调整记录列表 +// * +// * @param queryParam +// * @return +// */ +// @PostMapping("/adjustRecord/taxAgentList") +// @ApiOperation("个税扣缴义务人调整记录列表") +// @WeaPermission +// public WeaResult> taxAgentList(@RequestBody TaxAgentAdjustRecordQueryParam queryParam) { +// return WeaResult.success(salaryArchiveTaxAgentWrapper.adjustRecordList(queryParam, UserContext.getCurrentEmployeeId(), TenantContext.getCurrentTenantKey())); +// } +// +// /** +// * 单个档案的个税扣缴义务人调整记录列表 +// * +// * @param queryParam +// * @return +// */ +// @PostMapping("/adjustRecord/singleTaxAgentList") +// @ApiOperation("单个档案的个税扣缴义务人调整记录列表") +// @WeaPermission +// public WeaResult> SingleTaxAgentAdjustRecordList(@RequestBody SingleTaxAgentAdjustRecordQueryParam queryParam) { +// return WeaResult.success(salaryArchiveTaxAgentWrapper.singleTaxAgentAdjustRecordList(queryParam, UserContext.getCurrentEmployeeId(), TenantContext.getCurrentTenantKey())); +// } +// +// /** +// * 导出个税扣缴义务人调整记录列表 +// * +// * @param queryParam +// * @return +// */ +// @PostMapping("/adjustRecord/exportTaxAgentList") +// @ApiOperation("导出个税扣缴义务人调整记录列表") +// @WeaPermission +// public WeaResult> exportTaxAgentList(@RequestBody TaxAgentAdjustRecordQueryParam queryParam) { +// return WeaResult.success(salaryArchiveTaxAgentWrapper.exportAdjustRecordList(queryParam, UserContext.getCurrentEmployeeId(), TenantContext.getCurrentTenantKey())); +// } +// /******** 个税扣缴义务人调整记录 end ***********************************************************************************************/ +} diff --git a/src/com/engine/salary/wrapper/SalaryArchiveWrapper.java b/src/com/engine/salary/wrapper/SalaryArchiveWrapper.java new file mode 100644 index 000000000..309fa4170 --- /dev/null +++ b/src/com/engine/salary/wrapper/SalaryArchiveWrapper.java @@ -0,0 +1,319 @@ +package com.engine.salary.wrapper; + +/** + * 薪资档案 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +public class SalaryArchiveWrapper { +// private SalaryArchiveService salaryArchiveService; +// private SalaryArchiveItemService salaryArchiveItemService; +// private HrmCommonEmployeeService employeeService; +// private TaxAgentService taxAgentService; +// private SalaryBatchService salaryBatchService; +// private ExecutorService taskExecutor; +// +// /** +// * 薪资档案列表-高级搜索 +// * +// * @param employeeId +// * @param tenantKey +// * @return +// */ +// public WeaSearchCondition getSearchCondition(Long employeeId, String tenantKey) { +// List taxAgentList = new ArrayList<>(); +// // 获取所有个税扣缴义务人 +// Collection taxAgentLists = taxAgentService.findAll(tenantKey); +// taxAgentLists.forEach(e-> taxAgentList.add(new WeaSearchConditionOption(e.getId().toString(), e.getName()))); +// +// WeaSearchCondition weaSearchCondition = SalaryFormatUtil.getInstance() +// .buildCondition(SalaryArchiveSearchConditionDTO.class, +// SalaryArchiveSearchConditionDTO.builder().taxAgentOptions(taxAgentList).build(), +// "salaryArchive"); +// // 入职日期-添加范围 +// SalaryArchiveBO.addDatePickerRangeOtherParams(weaSearchCondition, "hiredate", employeeId, tenantKey); +// // 只保留常用条件 +// weaSearchCondition.setGroups(weaSearchCondition.getGroups().stream().filter(e-> "commonGroup".equals(e.getId())).collect(Collectors.toList())); +// +// return weaSearchCondition; +// } +// +// /** +// * 薪资档案列表(分页) +// * +// * @param queryParam +// * @param employeeId +// * @param tenantKey +// * @return +// */ +// public WeaTable list(SalaryArchiveQueryParam queryParam, Long employeeId, String tenantKey) { +// Collection taxAgentLists = taxAgentService.findAll(tenantKey); +// +// Page page = new Page<>(queryParam.getCurrent(), queryParam.getPageSize(), true); +// page = salaryArchiveService.listPage(page, queryParam, tenantKey); +// +// Collection salaryArchives = page.getRecords(); +// // 获取所有可被引用的薪资项目 +// List salaryItems = salaryArchiveItemService.getCanAdjustSalaryItems(tenantKey); +// List> listMaps = salaryArchiveService.buildSalaryArchiveData(salaryArchives, taxAgentLists, salaryItems, employeeId, tenantKey, Boolean.TRUE); +// +// Page> listPage = new Page<>(page.getCurrent(), page.getSize(), page.getTotal(), page.isSearchCount()); +// listPage.setRecords(listMaps); +// +// WeaTable weaTable = FormatManager.getInstance() +// .genTable(LinkedHashMap.class, listPage); +// weaTable.setPageUid("salaryArchive"); +// weaTable.setModule("hrmsalary"); +// //动态列组装 +// SalaryArchiveBO.buildSalaryArchiveTable(weaTable, salaryItems, employeeId, tenantKey, listMaps.size()); +// // 在外展示操作按钮 +// weaTable.getOperates().get(0).setOuter(Boolean.TRUE); +// return weaTable; +// } +// +// /** +// * 获取薪资档案详情表单 +// * +// * @param salaryArchiveId +// * @param employeeId +// * @param tenantKey +// * @return +// */ +// public SalaryArchiveFormDTO getFrom(Long salaryArchiveId, Long employeeId, String tenantKey) { +// if (salaryArchiveId == null) { +// throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 100425, "薪资档案id不能为空")); +// } +// SalaryArchivePO po = salaryArchiveService.getById(salaryArchiveId, tenantKey); +// if (po == null) { +// throw new SalaryRunTimeException(String.format(SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 100463, "薪资档案不存在")+"[id:%s]", salaryArchiveId)); +// } +// +// List employeeList = employeeService.getEmployeeByIds(Collections.singletonList(po.getEmployeeId()), tenantKey); +// if (CollectionUtils.isEmpty(employeeList)) { +// throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 100465, "薪资档案员工信息不存在")); +// } +// +// // 获取当前已生效个税扣缴义务人 +// List taxAgentList = salaryArchiveService.getCurrentEffectiveTaxAgentList(Collections.singletonList(salaryArchiveId), tenantKey); +// // 获取所有个税扣缴义务人 +// Collection taxAgentLists = taxAgentService.findAll(tenantKey); +// String taxAgent = ""; +// if (CollectionUtils.isNotEmpty(taxAgentList)) { +// SalaryArchiveTaxAgentPO salaryArchiveTaxAgent = taxAgentList.get(0); +// Optional taxAgentOptional = taxAgentLists.stream().filter(f->f.getId().equals(salaryArchiveTaxAgent.getTaxAgentId())).findFirst(); +// taxAgent = taxAgentOptional.isPresent()?taxAgentOptional.get().getName():taxAgent; +// } +// +// // 1.基本信息表单 +// SimpleEmployee employee = employeeList.get(0); +// WeaForm salaryArchiveBaseInfoForm = SalaryFormatUtil.getInstance().buildForm(SalaryArchiveBaseInfoFormDTO.class, +// SalaryArchiveBaseInfoFormDTO.builder() +// .username(employee.getUsername()) +// .department(employee.getDepartment().getName()) +// .position(employee.getPosition()==null?"":employee.getPosition().getName()) +// .hiredate(SalaryDateUtil.getFormatLocalDate(employee.getHiredate())) +// .mobile(employee.getMobile()) +// .taxAgent(taxAgent) +// .build()); +// +// List> salaryItems = Lists.newArrayList(); +// // 获取所有可被引用的薪资项目 +// List salaryItemList = salaryArchiveItemService.getCanAdjustSalaryItems(tenantKey); +// Collection salaryItemIds = salaryItemList.stream().map(SalaryItemPO::getId).collect(Collectors.toList()); +// List salaryArchiveItemList = salaryArchiveService.getCurrentEffectiveItemList(Collections.singletonList(salaryArchiveId), salaryItemIds, tenantKey); +// salaryArchiveItemList.forEach(m->{ +// Optional optionalItem = salaryItemList.stream().filter(f->f.getId().equals(m.getSalaryItemId())).findFirst(); +// if (optionalItem.isPresent()) { +// Map salaryItemMap = new LinkedHashMap<>(); +// salaryItemMap.put("id", m.getId()); +// salaryItemMap.put("name", optionalItem.get().getName()); +// salaryItemMap.put("value", m.getItemValue()); +// salaryItems.add(salaryItemMap); +// } +// }); +// +// // 2.薪资档案表单 +// WeaForm salaryItemFrom = buildSalaryItemForm(salaryItems); +// +// // 3.调整记录的高级搜索 +// // 3.1 薪资项目 +// WeaSearchCondition salaryItemAdjustRecordSearchCondition = buildSalaryItemAdjustRecordSearchCondition(employeeId, tenantKey); +// +// return SalaryArchiveFormDTO.builder() +// .id(salaryArchiveId) +// .employeeId(employee.getId()) +// .baseInfo(salaryArchiveBaseInfoForm) +// .adjustSalaryItems(salaryItemFrom) +// .salaryItemAdjustRecordSearchCondition(salaryItemAdjustRecordSearchCondition) +// .build(); +// } +// +// /** +// * 薪资调整记录的高级搜索 +// * +// * @param employeeId +// * @param tenantKey +// * @return +// */ +// private WeaSearchCondition buildSalaryItemAdjustRecordSearchCondition(Long employeeId, String tenantKey) { +// WeaSearchCondition weaSearchCondition = SalaryFormatUtil.getInstance() +// .buildCondition(SalaryItemAdjustRecordForFromSearchConditionDTO.class, +// SalaryItemAdjustRecordForFromSearchConditionDTO.builder().build(), +// "salaryItemAdjustRecordForFromSearchCondition"); +// // 生效日期-添加范围 +// 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 salaryItems +// * @return +// */ +// private WeaForm buildSalaryItemForm(List> salaryItems) { +// // 构建表单 +// WeaForm salaryItemForm = new WeaForm(); +// +// // 控件项目 +// Map items = salaryItemForm.getItems(); +// // 控件布局 +// List> layout = salaryItemForm.getLayout(); +// // 控件数据 +// Map data = salaryItemForm.getData(); +// +// List layoutSingles = Lists.newArrayList(); +// int i=0; +// while (if.getId().equals(String.valueOf(finalI))).collect(Collectors.toList())); +// } +// j++; +// } +// +// return salaryItemForm; +// } +// +// /** +// * 获取离职时段设置表单 +// * +// * @param tenantKey +// * @return +// */ +// public WeaForm getDimissionSetForm(String tenantKey) { +// WeaForm salaryTemplateBase = SalaryFormatUtil.getInstance().buildForm(DimissionSetFormDTO.class, DimissionSetFormDTO.builder().build()); +// List dimissionSets = salaryArchiveService.dimissionSets(tenantKey); +// Map data = new LinkedHashMap<>(); +// if (CollectionUtils.isNotEmpty(dimissionSets)) { +// data.put("dimissionTimeInterval", dimissionSets.get(0).getDimissionTimeInterval()); +// } +// salaryTemplateBase.setData(data); +// return salaryTemplateBase; +// } +// +// /** +// * 保存离职时段设置 +// * +// * @param saveParam +// * @param employeeId +// * @param tenantKey +// * @return +// */ +// public String saveDimissionSet(SalaryArchiveDimissionSaveParam saveParam, Long employeeId, String tenantKey) { +// return salaryArchiveService.saveDimissionSet(saveParam, employeeId, tenantKey); +// } +// +// /** +// * 导出薪资档案 +// * +// * @param queryParam +// * @param employeeId +// * @param tenantKey +// * @return +// */ +// public Map exportList(SalaryArchiveQueryParam queryParam, Long employeeId, String tenantKey) { +// // 构建异步导出参数 +// Map map = salaryBatchService.buildeExportParam("exportSalaryArchive"); +// String username = UserContext.getCurrentUser().getUsername(); +// String eteamsId = TenantRpcContext.getEteamsId(); +// taskExecutor.execute(() -> { +// try { +// DSTenantKeyThreadVar.tenantKey.set(tenantKey); +// salaryArchiveService.exportList(map, username, eteamsId, queryParam, employeeId, tenantKey); +// } finally { +// DSTenantKeyThreadVar.tenantKey.remove(); +// } +// }); +// +// return map; +// } +// +// /** +// * 下载导入模板 +// * +// * @param queryParam +// * @param employeeId +// * @param tenantKey +// * @return +// */ +// public Map downloadTemplate(SalaryArchiveQueryParam queryParam, Long employeeId, String tenantKey) { +// Map map = salaryBatchService.buildeExportParam("exportSalaryArchive"); +// String username = UserContext.getCurrentUser().getUsername(); +// +// String eteamsId = TenantRpcContext.getEteamsId(); +// Optional optionalImportType = Arrays.stream(SalaryArchiveImportTypeEnum.values()).filter(e-> StringUtils.isNotEmpty(queryParam.getImportType()) && e.getValue().equals(queryParam.getImportType())).findFirst(); +// if (!optionalImportType.isPresent()) { +// throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 100593, "导入类型不正确")); +// } +// taskExecutor.execute(() -> { +// try { +// DSTenantKeyThreadVar.tenantKey.set(tenantKey); +// salaryArchiveService.downloadTemplate(map, username, eteamsId, optionalImportType.get(), queryParam, employeeId, tenantKey); +// } finally { +// DSTenantKeyThreadVar.tenantKey.remove(); +// } +// }); +// +// return map; +// } +// +// /** +// * 获取导入参数 +// * +// * @return +// */ +// public ExcelImportParam getImportParams() { +// return salaryBatchService.buildImportParam("importSalaryArchive", +// "importSalaryArchive", +// SalaryI18nUtil.getI18nLabel(TenantContext.getCurrentTenantKey(), UserContext.getCurrentEmployeeId(), 85368, "薪资档案"), +// null, +// null); +// } +}