From a2102a49b4b685793415accb34204d4fe9c2426a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com>
Date: Wed, 13 Apr 2022 14:18:00 +0800
Subject: [PATCH 01/10] =?UTF-8?q?=E6=A0=B8=E7=AE=97v3?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../salaryacct/po/ExcelAcctResultPO.java | 23 +-
.../dto/SalaryFormulaEmployeeDTO.java | 27 +-
.../bo/SalarySobItemAggregateBO.java | 25 +-
.../salaryacct/ExcelAcctResultMapper.java | 54 ++
.../salaryacct/ExcelAcctResultMapper.xml | 194 +++++++
.../service/SalaryAcctExcelService.java | 16 +-
.../SalaryComparisonResultService.java | 13 +-
.../impl/SalaryAcctExcelServiceImpl.java | 134 +++--
.../SalaryComparisonResultServiceImpl.java | 501 +++++++++---------
.../engine/salary/util/excel/ExcelUtil.java | 6 +-
.../salary/web/SalaryAcctController.java | 193 +++++--
.../wrapper/SalaryAcctExcelWrapper.java | 7 +-
.../wrapper/SalaryArchiveItemWrapper.java | 7 +-
.../SalaryComparisonResultWrapper.java | 59 +++
.../salary/wrapper/SalarySobItemWrapper.java | 2 +-
.../salary/wrapper/SysSalaryItemWrapper.java | 2 +-
16 files changed, 836 insertions(+), 427 deletions(-)
create mode 100644 src/com/engine/salary/mapper/salaryacct/ExcelAcctResultMapper.java
create mode 100644 src/com/engine/salary/mapper/salaryacct/ExcelAcctResultMapper.xml
create mode 100644 src/com/engine/salary/wrapper/SalaryComparisonResultWrapper.java
diff --git a/src/com/engine/salary/entity/salaryacct/po/ExcelAcctResultPO.java b/src/com/engine/salary/entity/salaryacct/po/ExcelAcctResultPO.java
index fc966ab40..a7fc850c5 100644
--- a/src/com/engine/salary/entity/salaryacct/po/ExcelAcctResultPO.java
+++ b/src/com/engine/salary/entity/salaryacct/po/ExcelAcctResultPO.java
@@ -5,15 +5,17 @@ import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
-import java.time.LocalDateTime;
+import java.util.Collection;
+import java.util.Date;
/**
- * @description: 线下excel核算的结果
- * @author: xiajun
- * @modified By: xiajun
- * @date: Created in 12/14/21 2:33 PM
- * @version:v1.0
- */
+ * 线下excel核算的结果
+ *
Copyright: Copyright (c) 2022
+ * Company: 泛微软件
+ *
+ * @author qiantao
+ * @version 1.0
+ **/
@Data
@Builder
@NoArgsConstructor
@@ -79,10 +81,13 @@ public class ExcelAcctResultPO {
/**
* 创建时间
*/
- private LocalDateTime createTime;
+ private Date createTime;
/**
* 更新时间
*/
- private LocalDateTime updateTime;
+ private Date updateTime;
+
+ //条件
+ private Collection salaryAcctEmpIds;
}
diff --git a/src/com/engine/salary/entity/salaryformula/dto/SalaryFormulaEmployeeDTO.java b/src/com/engine/salary/entity/salaryformula/dto/SalaryFormulaEmployeeDTO.java
index 9cac81a90..7f454fd77 100644
--- a/src/com/engine/salary/entity/salaryformula/dto/SalaryFormulaEmployeeDTO.java
+++ b/src/com/engine/salary/entity/salaryformula/dto/SalaryFormulaEmployeeDTO.java
@@ -1,5 +1,6 @@
package com.engine.salary.entity.salaryformula.dto;
+import com.engine.salary.annotation.SalaryFormulaVar;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
@@ -21,43 +22,43 @@ public class SalaryFormulaEmployeeDTO {
private Long employeeId;
- //个税扣缴义务人", labelId = 86184, dataType = "string")
+ @SalaryFormulaVar(defaultLabel = "个税扣缴义务人", labelId = 86184, dataType = "string")
private String taxAgentName;
- //姓名", labelId = 85429, dataType = "string")
+ @SalaryFormulaVar(defaultLabel = "姓名", labelId = 85429, dataType = "string")
private String username;
- //邮件", labelId = 92919, dataType = "string")
+ @SalaryFormulaVar(defaultLabel = "邮件", labelId = 92919, dataType = "string")
private String email;
- //手机", labelId = 98621, dataType = "string")
+ @SalaryFormulaVar(defaultLabel = "手机", labelId = 98621, dataType = "string")
private String mobile;
- //电话", labelId = 98620, dataType = "string")
+ @SalaryFormulaVar(defaultLabel = "电话", labelId = 98620, dataType = "string")
private String telephone;
-// //证件号码", labelId = 86318, dataType = "string")
+// @SalaryFormulaVar(defaultLabel = "证件号码", labelId = 86318, dataType = "string")
// private String idNo;
- //性别", labelId = 98622, dataType = "string")
+ @SalaryFormulaVar(defaultLabel = "性别", labelId = 98622, dataType = "string")
private String sex;
- //状态", labelId = 91075, dataType = "string")
+ @SalaryFormulaVar(defaultLabel = "状态", labelId = 91075, dataType = "string")
private String status;
- //部门", labelId = 86185, dataType = "string")
+ @SalaryFormulaVar(defaultLabel = "部门", labelId = 86185, dataType = "string")
private String departmentName;
- //岗位", labelId = 90633, dataType = "string")
+ @SalaryFormulaVar(defaultLabel = "岗位", labelId = 90633, dataType = "string")
private String positionName;
- //职级", labelId = 98623, dataType = "string")
+ @SalaryFormulaVar(defaultLabel = "职级", labelId = 98623, dataType = "string")
private String gradeName;
- //入职日期", labelId = 86319, dataType = "string")
+ @SalaryFormulaVar(defaultLabel = "入职日期", labelId = 86319, dataType = "string")
private String hireDate;
- //出生日期", labelId = 98624, dataType = "string")
+ @SalaryFormulaVar(defaultLabel = "出生日期", labelId = 98624, dataType = "string")
private String birthday;
// //首次参加工作日期", labelId = 98625, dataType = "string")
diff --git a/src/com/engine/salary/entity/salarysob/bo/SalarySobItemAggregateBO.java b/src/com/engine/salary/entity/salarysob/bo/SalarySobItemAggregateBO.java
index 4f57d483d..f3a705bb3 100644
--- a/src/com/engine/salary/entity/salarysob/bo/SalarySobItemAggregateBO.java
+++ b/src/com/engine/salary/entity/salarysob/bo/SalarySobItemAggregateBO.java
@@ -1,5 +1,7 @@
package com.engine.salary.entity.salarysob.bo;
+import com.engine.salary.annotation.SalaryFormulaVar;
+import com.engine.salary.entity.salaryformula.dto.SalaryFormulaEmployeeDTO;
import com.engine.salary.entity.salaryitem.bo.SalaryItemBO;
import com.engine.salary.entity.salaryitem.po.SalaryItemPO;
import com.engine.salary.entity.salarysob.dto.SalarySobEmpFieldDTO;
@@ -11,12 +13,15 @@ import com.engine.salary.entity.salarysob.po.SalarySobItemGroupPO;
import com.engine.salary.entity.salarysob.po.SalarySobItemPO;
import com.engine.salary.entity.salarysob.po.SalarySobPO;
import com.engine.salary.util.SalaryEntityUtil;
+import com.engine.salary.util.SalaryI18nUtil;
import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
import com.weaver.excel.formula.api.entity.ExpressFormula;
import lombok.AllArgsConstructor;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.math.NumberUtils;
+import java.lang.reflect.Field;
import java.util.*;
import java.util.stream.Collectors;
@@ -128,21 +133,21 @@ public class SalarySobItemAggregateBO {
if (CollectionUtils.isEmpty(salarySobEmpFields)) {
return Collections.emptyList();
}
-// Field[] declaredFields = SalaryFormulaEmployeeDTO.class.getDeclaredFields();
-// Map empFieldMap = Maps.newHashMapWithExpectedSize(declaredFields.length);
-// for (Field declaredField : declaredFields) {
-// if (!declaredField.isAnnotationPresent(SalaryFormulaVar.class)) {
-// continue;
-// }
-// SalaryFormulaVar annotation = declaredField.getAnnotation(SalaryFormulaVar.class);
-// empFieldMap.put(declaredField.getName(), SalaryI18nUtil.getI18nLabel(annotation.labelId(), annotation.defaultLabel()));
-// }
+ Field[] declaredFields = SalaryFormulaEmployeeDTO.class.getDeclaredFields();
+ Map empFieldMap = Maps.newHashMapWithExpectedSize(declaredFields.length);
+ for (Field declaredField : declaredFields) {
+ if (!declaredField.isAnnotationPresent(SalaryFormulaVar.class)) {
+ continue;
+ }
+ SalaryFormulaVar annotation = declaredField.getAnnotation(SalaryFormulaVar.class);
+ empFieldMap.put(declaredField.getName(), SalaryI18nUtil.getI18nLabel(annotation.labelId(), annotation.defaultLabel()));
+ }
return salarySobEmpFields.stream()
.map(e -> SalarySobEmpFieldDTO.builder()
.id(e.getId())
.salarySobId(e.getSalarySobId())
.fieldId(e.getFieldCode())
-// .fieldName(empFieldMap.getOrDefault(e.getFieldCode(), ""))
+ .fieldName(empFieldMap.getOrDefault(e.getFieldCode(), ""))
.sortedIndex(e.getSortedIndex())
.canDelete(Objects.equals(e.getCanDelete(), NumberUtils.INTEGER_ONE))
.build())
diff --git a/src/com/engine/salary/mapper/salaryacct/ExcelAcctResultMapper.java b/src/com/engine/salary/mapper/salaryacct/ExcelAcctResultMapper.java
new file mode 100644
index 000000000..f1fc6dedb
--- /dev/null
+++ b/src/com/engine/salary/mapper/salaryacct/ExcelAcctResultMapper.java
@@ -0,0 +1,54 @@
+package com.engine.salary.mapper.salaryacct;
+
+import com.engine.salary.entity.salaryacct.po.ExcelAcctResultPO;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 线下excel核算的结果
+ * Copyright: Copyright (c) 2022
+ * Company: 泛微软件
+ *
+ * @author qiantao
+ * @version 1.0
+ **/
+public interface ExcelAcctResultMapper {
+
+ /**
+ * 分页查询ExcelAcctResult和SalaryAcctResult的employeeId
+ *
+ * @return
+ */
+ List listEmployeeIdUnionSalaryAcctResult(@Param("employeeIds") Collection employeeIds,
+ @Param("salaryAcctRecordId") Long salaryAcctRecordId);
+
+ /**
+ * 批量新增
+ *
+ * @param excelAcctResults
+ */
+ void batchInsert(@Param("collection") Collection excelAcctResults);
+
+ /**
+ * 根据薪资核算记录id删除
+ *
+ * @param salaryAcctEmployeeIds
+ */
+ void deleteBySalaryAcctEmployeeIds(@Param("salaryAcctEmployeeIds") Collection salaryAcctEmployeeIds);
+
+ /**
+ * 根据薪资核算记录id删除
+ *
+ * @param salaryAcctRecordIds
+ */
+ void deleteBySalaryAcctRecordIds(@Param("salaryAcctRecordIds") Collection salaryAcctRecordIds);
+
+ /**
+ * 条件查询
+ *
+ * @return 返回集合,没有返回空List
+ */
+ List listSome(ExcelAcctResultPO excelAcctResult);
+}
diff --git a/src/com/engine/salary/mapper/salaryacct/ExcelAcctResultMapper.xml b/src/com/engine/salary/mapper/salaryacct/ExcelAcctResultMapper.xml
new file mode 100644
index 000000000..6af2efc2e
--- /dev/null
+++ b/src/com/engine/salary/mapper/salaryacct/ExcelAcctResultMapper.xml
@@ -0,0 +1,194 @@
+
+
+
+
+
+
+
+ INSERT INTO hrsa_excel_acct_result(salary_sob_id, salary_acct_emp_id, salary_acct_record_id, employee_id,
+ salary_item_id, result_value, creator, create_time, update_time,
+ delete_type, tenant_key)
+ VALUES
+
+ (
+ #{item.salarySobId},
+ #{item.salaryAcctEmpId},
+ #{item.salaryAcctRecordId},
+ #{item.employeeId},
+ #{item.salaryItemId},
+ #{item.resultValue},
+ #{item.creator},
+ #{item.createTime},
+ #{item.updateTime},
+ #{item.deleteType},
+ #{item.tenantKey}
+ )
+
+
+
+ INSERT INTO hrsa_excel_acct_result(salary_sob_id, salary_acct_emp_id, salary_acct_record_id, employee_id,
+ salary_item_id, result_value, creator, create_time, update_time,
+ delete_type, tenant_key)
+
+
+ select
+ #{item.salarySobId},
+ #{item.salaryAcctEmpId},
+ #{item.salaryAcctRecordId},
+ #{item.employeeId},
+ #{item.salaryItemId},
+ #{item.resultValue},
+ #{item.creator},
+ #{item.createTime},
+ #{item.updateTime},
+ #{item.deleteType},
+ #{item.tenantKey}
+ from dual
+
+
+
+ INSERT INTO hrsa_excel_acct_result( salary_sob_id, salary_acct_emp_id, salary_acct_record_id, employee_id,
+ salary_item_id, result_value, creator, create_time, update_time,
+ delete_type, tenant_key)
+ VALUES
+
+ (
+ #{item.salarySobId},
+ #{item.salaryAcctEmpId},
+ #{item.salaryAcctRecordId},
+ #{item.employeeId},
+ #{item.salaryItemId},
+ #{item.resultValue},
+ #{item.creator},
+ #{item.createTime},
+ #{item.updateTime},
+ #{item.deleteType},
+ #{item.tenantKey}
+ )
+
+
+
+
+ DELETE FROM hrsa_excel_acct_result
+ WHERE salary_acct_emp_id IN
+
+ #{salaryAcctEmployeeId}
+
+
+
+
+ DELETE FROM hrsa_excel_acct_result
+ WHERE salary_acct_record_id IN
+
+ #{salaryAcctRecordId}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ t.id
+ , t.salary_sob_id
+ , t.salary_acct_emp_id
+ , t.salary_acct_record_id
+ , t.employee_id
+ , t.salary_item_id
+ , t.result_value
+ , t.creator
+ , t.create_time
+ , t.update_time
+ , t.delete_type
+ , t.tenant_key
+ , t.tax_agent_id
+
+
+
+
+
diff --git a/src/com/engine/salary/service/SalaryAcctExcelService.java b/src/com/engine/salary/service/SalaryAcctExcelService.java
index 514e7f9f5..2c2b44332 100644
--- a/src/com/engine/salary/service/SalaryAcctExcelService.java
+++ b/src/com/engine/salary/service/SalaryAcctExcelService.java
@@ -60,14 +60,14 @@ public interface SalaryAcctExcelService {
*/
XSSFWorkbook exportImportTemplate(SalaryAcctImportTemplateParam param);
-// /**
-// * 薪资核算线下对比结果导出
-// *
-// * @param queryParam
-// * @return
-// */
-// XSSFWorkbook exportComparisonResult(SalaryComparisonResultQueryParam queryParam);
-//
+ /**
+ * 薪资核算线下对比结果导出
+ *
+ * @param queryParam
+ * @return
+ */
+ XSSFWorkbook exportComparisonResult(SalaryComparisonResultQueryParam queryParam);
+
// /**
// * 薪资核算线下对比结果导入模板导出
// *
diff --git a/src/com/engine/salary/service/SalaryComparisonResultService.java b/src/com/engine/salary/service/SalaryComparisonResultService.java
index 00f832e05..0dd6ef22f 100644
--- a/src/com/engine/salary/service/SalaryComparisonResultService.java
+++ b/src/com/engine/salary/service/SalaryComparisonResultService.java
@@ -8,12 +8,13 @@ import java.util.Collection;
import java.util.List;
/**
- * @description: 薪资核算的线下对比结果
- * @author: xiajun
- * @modified By: xiajun
- * @date: Created in 1/20/22 7:00 PM
- * @version:v1.0
- */
+ * 薪资核算的线下对比结果
+ * Copyright: Copyright (c) 2022
+ * Company: 泛微软件
+ *
+ * @author qiantao
+ * @version 1.0
+ **/
public interface SalaryComparisonResultService {
/**
diff --git a/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java
index bc4e4eac7..ac7a6b4c4 100644
--- a/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java
+++ b/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java
@@ -9,13 +9,16 @@ import com.engine.salary.entity.salaryacct.bo.SalaryAcctEmployeeBO;
import com.engine.salary.entity.salaryacct.bo.SalaryAcctResultBO;
import com.engine.salary.entity.salaryacct.dto.SalaryAccEmployeeListDTO;
import com.engine.salary.entity.salaryacct.dto.SalaryAcctImportFieldDTO;
+import com.engine.salary.entity.salaryacct.dto.SalaryComparisonResultListDTO;
import com.engine.salary.entity.salaryacct.param.SalaryAcctEmployeeQueryParam;
import com.engine.salary.entity.salaryacct.param.SalaryAcctImportTemplateParam;
import com.engine.salary.entity.salaryacct.param.SalaryAcctResultQueryParam;
+import com.engine.salary.entity.salaryacct.param.SalaryComparisonResultQueryParam;
import com.engine.salary.entity.salaryacct.po.SalaryAcctEmployeePO;
import com.engine.salary.entity.salaryacct.po.SalaryAcctRecordPO;
import com.engine.salary.entity.salaryitem.po.SalaryItemPO;
import com.engine.salary.entity.salarysob.dto.SalarySobItemAggregateDTO;
+import com.engine.salary.entity.salarysob.po.SalarySobEmpFieldPO;
import com.engine.salary.entity.salarysob.po.SalarySobItemPO;
import com.engine.salary.entity.taxrate.TaxAgent;
import com.engine.salary.enums.SalaryValueTypeEnum;
@@ -74,9 +77,9 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc
// return (SalaryFormulaService) ServiceUtil.getService(SalaryFormulaServiceImpl.class, user);
// }
-// private SalaryComparisonResultService getSalaryComparisonResultService(User user) {
-// return (SalaryComparisonResultService) ServiceUtil.getService(SalaryComparisonResultServiceImpl.class, user);
-// }
+ private SalaryComparisonResultService getSalaryComparisonResultService(User user) {
+ return (SalaryComparisonResultService) ServiceUtil.getService(SalaryComparisonResultServiceImpl.class, user);
+ }
private TaxAgentBiz taxAgentService = new TaxAgentBiz();
@@ -317,76 +320,61 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc
return ExcelUtil.genWorkbookV2(rows, sheetName);
}
-//
-// @Override
-// public XSSFWorkbook exportComparisonResult(SalaryComparisonResultQueryParam queryParam) {
-// // 查询薪资核算记录
-// SalaryAcctRecordPO salaryAcctRecordPO = getSalaryAcctRecordService(user).getById(queryParam.getSalaryAcctRecordId());
-// if (Objects.isNull(salaryAcctRecordPO)) {
-// throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98747, "薪资核算记录不存在或已被删除"));
-// }
-// // 查询线下对比结果
-// SalaryComparisonResultListDTO salaryComparisonResultListDTO = getSalaryComparisonResultService(user).listByParam(queryParam);
-// // 薪资核算线下对比结果列表表头
-// List headerList = Lists.newArrayList();
-// // 查询薪资核算所用的薪资账套的员工信息字段
-// List salarySobEmpFieldPOS = getSalarySobEmpFieldService(user).listBySalarySobId(salaryAcctRecordPO.getSalarySobId());
-// Set employeeFieldCodeSet = SalaryEntityUtil.properties(salarySobEmpFieldPOS, SalarySobEmpFieldPO::getFieldCode);
-// // 查询薪资项目
-// List salaryItemPOS = getSalarySobItemService(user).listBySalarySobId4SalaryItem(salaryAcctRecordPO.getSalarySobId());
-// Set salaryItemIds = SalaryEntityUtil.properties(salaryItemPOS, salaryItemPO -> "" + salaryItemPO.getId());
-// for (WeaTableColumn weaTableColumn : salaryComparisonResultListDTO.getWeaTableColumns()) {
-// // 员工信息字段
-// if (employeeFieldCodeSet.contains(weaTableColumn.getDataIndex())) {
-// headerList.add(weaTableColumn.getTitle());
-// }
-// // 薪资项目的表头
-// if (salaryItemIds.contains(weaTableColumn.getDataIndex())) {
-// headerList.add(weaTableColumn.getTitle() + " (线上值)");
-// headerList.add(weaTableColumn.getTitle() + " (线下值)");
-// }
-// }
-// String[] headers = headerList.toArray(new String[0]);
-//
-// List