From 647dd80a20f669b1c9960a674e54c175c7110550 Mon Sep 17 00:00:00 2001 From: sy Date: Fri, 11 Nov 2022 08:56:05 +0800 Subject: [PATCH 01/50] =?UTF-8?q?=E8=96=AA=E9=85=AC=E7=B3=BB=E7=BB=9F-?= =?UTF-8?q?=E7=A6=8F=E5=88=A9=E6=A1=A3=E6=A1=88=EF=BC=8C=E7=A6=8F=E5=88=A9?= =?UTF-8?q?=E6=A1=A3=E6=A1=88=E6=96=B0=E5=A2=9E=E6=8E=A5=E5=8F=A3v1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../param/SIArchiveImportActionParam.java | 39 +++++++++++ .../siArchives/SIArchiveActionAPI.java | 64 +++++++++++++++++++ .../salary/service/SISchemeService.java | 5 ++ .../service/impl/SISchemeServiceImpl.java | 30 ++++++++- 4 files changed, 136 insertions(+), 2 deletions(-) create mode 100644 src/com/engine/salary/entity/siarchives/param/SIArchiveImportActionParam.java create mode 100644 src/com/engine/salary/process/siArchives/SIArchiveActionAPI.java diff --git a/src/com/engine/salary/entity/siarchives/param/SIArchiveImportActionParam.java b/src/com/engine/salary/entity/siarchives/param/SIArchiveImportActionParam.java new file mode 100644 index 000000000..33ea12705 --- /dev/null +++ b/src/com/engine/salary/entity/siarchives/param/SIArchiveImportActionParam.java @@ -0,0 +1,39 @@ +package com.engine.salary.entity.siarchives.param; + +import com.engine.salary.enums.salaryarchive.SalaryArchiveImportTypeEnum; +import com.engine.salary.enums.siaccount.EmployeeStatusEnum; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; +import java.util.Map; + +/** + * @Author: sy + * @Description: 社保福利档案导入处理参数(action使用) + * @Date: 2022/11/10 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class SIArchiveImportActionParam { + + /** + * 导入类型 + * + * @see EmployeeStatusEnum + */ + + String runStatus; + + /** + * 导入数据 + * + */ + List> importDatas; + + private boolean addData; +} diff --git a/src/com/engine/salary/process/siArchives/SIArchiveActionAPI.java b/src/com/engine/salary/process/siArchives/SIArchiveActionAPI.java new file mode 100644 index 000000000..529f47139 --- /dev/null +++ b/src/com/engine/salary/process/siArchives/SIArchiveActionAPI.java @@ -0,0 +1,64 @@ +package com.engine.salary.process.siArchives; + +import com.engine.common.util.ServiceUtil; +import com.engine.salary.entity.siarchives.param.SIArchiveImportActionParam; +import com.engine.salary.enums.siaccount.EmployeeStatusEnum; +import com.engine.salary.service.SISchemeService; +import com.engine.salary.service.impl.SISchemeServiceImpl; +import com.engine.salary.util.ResponseResult; +import io.swagger.v3.oas.annotations.parameters.RequestBody; +import lombok.extern.slf4j.Slf4j; +import weaver.hrm.HrmUserVarify; +import weaver.hrm.User; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.ws.rs.POST; +import javax.ws.rs.Path; +import javax.ws.rs.Produces; +import javax.ws.rs.core.Context; +import javax.ws.rs.core.MediaType; +import java.util.Map; + +/** + * @Author: sy + * @Description: 社保福利档案流程使用 + * @Date: 2022/11/10 + **/ +@Slf4j +public class SIArchiveActionAPI { + + private SISchemeService getService(User user) { + return ServiceUtil.getService(SISchemeServiceImpl.class,user); + } + + /** + * 前置校验、列表添加接口 + * @param importData + * @return + */ + @POST + @Path("/checkImportSIArchiveListAdd") + @Produces(MediaType.APPLICATION_JSON) + public String checkImportSIArchiveListAdd(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SIArchiveImportActionParam importData) { + User user = HrmUserVarify.getUser(request, response); + importData.setRunStatus(EmployeeStatusEnum.STAY_ADD.getValue()); + importData.setAddData(false); + return new ResponseResult>(user).run(getService(user)::checkSIArchiveAdd, importData); + } + + /** + * 新增社保福利档案 + * @param importData + * @return + */ + @POST + @Path("/addSIArchive") + @Produces(MediaType.APPLICATION_JSON) + public String addSIArchive(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SIArchiveImportActionParam importData) { + User user = HrmUserVarify.getUser(request, response); + importData.setRunStatus(EmployeeStatusEnum.STAY_ADD.getValue()); + importData.setAddData(true); + return new ResponseResult>(user).run(getService(user)::addSIArchive, importData); + } +} diff --git a/src/com/engine/salary/service/SISchemeService.java b/src/com/engine/salary/service/SISchemeService.java index 05c64c7fd..ebcf73858 100644 --- a/src/com/engine/salary/service/SISchemeService.java +++ b/src/com/engine/salary/service/SISchemeService.java @@ -2,6 +2,7 @@ package com.engine.salary.service; import com.cloudstore.eccom.pc.table.WeaTableColumn; import com.engine.salary.entity.siarchives.param.InsuranceArchivesListParam; +import com.engine.salary.entity.siarchives.param.SIArchiveImportActionParam; import com.engine.salary.entity.siarchives.po.InsuranceArchivesEmployeePO; import com.engine.salary.entity.sischeme.dto.InsuranceSchemeListDTO; import com.engine.salary.entity.sischeme.param.InsuranceSchemeParam; @@ -69,4 +70,8 @@ public interface SISchemeService { Map batchImportEbatch(SISchemaImportParam param); XSSFWorkbook exportTemplate(InsuranceArchivesListParam param); + + Map checkSIArchiveAdd(SIArchiveImportActionParam siArchiveImportActionParam); + + Map addSIArchive(SIArchiveImportActionParam siArchiveImportActionParam); } diff --git a/src/com/engine/salary/service/impl/SISchemeServiceImpl.java b/src/com/engine/salary/service/impl/SISchemeServiceImpl.java index 3875365e0..005422310 100644 --- a/src/com/engine/salary/service/impl/SISchemeServiceImpl.java +++ b/src/com/engine/salary/service/impl/SISchemeServiceImpl.java @@ -17,8 +17,8 @@ import com.engine.salary.encrypt.siarchives.InsuranceArchivesOtherSchemePOEncryp import com.engine.salary.encrypt.siarchives.InsuranceArchivesSocialSchemePOEncrypt; import com.engine.salary.encrypt.sischeme.InsuranceSchemeDetailPOEncrypt; import com.engine.salary.entity.datacollection.DataCollectionEmployee; -import com.engine.salary.entity.salaryarchive.po.SalaryArchivePO; import com.engine.salary.entity.siarchives.param.InsuranceArchivesListParam; +import com.engine.salary.entity.siarchives.param.SIArchiveImportActionParam; import com.engine.salary.entity.siarchives.po.*; import com.engine.salary.entity.sicategory.po.ICategoryPO; import com.engine.salary.entity.sischeme.dto.InsuranceSchemeListDTO; @@ -64,7 +64,6 @@ import org.apache.commons.lang3.math.NumberUtils; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.util.IOUtils; import org.apache.poi.xssf.usermodel.XSSFWorkbook; -import org.apache.xpath.operations.Bool; import weaver.file.ImageFileManager; import weaver.hrm.User; @@ -1232,4 +1231,31 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { } + /** + * 校验待新增的社保福利档案数据 + * @param siArchiveImportActionParam + * @return + */ + @Override + public Map checkSIArchiveAdd(SIArchiveImportActionParam siArchiveImportActionParam) { + siArchiveImportActionParam.setAddData(false); + return processAddSIArchive(siArchiveImportActionParam); + } + + /** + * 新增社保福利档案 + * @param siArchiveImportActionParam + * @return + */ + @Override + public Map addSIArchive(SIArchiveImportActionParam siArchiveImportActionParam) { + siArchiveImportActionParam.setAddData(true); + return processAddSIArchive(siArchiveImportActionParam); + } + + private Map processAddSIArchive(SIArchiveImportActionParam siArchiveImportActionParam) { + + return null; + } + } From 86dbb87f1b83c8cd3a76757a765aa38cb86b067c Mon Sep 17 00:00:00 2001 From: sy Date: Fri, 11 Nov 2022 09:11:53 +0800 Subject: [PATCH 02/50] =?UTF-8?q?=E8=96=AA=E9=85=AC=E7=B3=BB=E7=BB=9F-?= =?UTF-8?q?=E7=A6=8F=E5=88=A9=E6=A1=A3=E6=A1=88=EF=BC=8C=E7=A6=8F=E5=88=A9?= =?UTF-8?q?=E6=A1=A3=E6=A1=88=E6=96=B0=E5=A2=9E=E6=8E=A5=E5=8F=A3v2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/SISchemeServiceImpl.java | 105 +++++++++++++++++- 1 file changed, 103 insertions(+), 2 deletions(-) diff --git a/src/com/engine/salary/service/impl/SISchemeServiceImpl.java b/src/com/engine/salary/service/impl/SISchemeServiceImpl.java index 90db8c674..4977ee678 100644 --- a/src/com/engine/salary/service/impl/SISchemeServiceImpl.java +++ b/src/com/engine/salary/service/impl/SISchemeServiceImpl.java @@ -1279,9 +1279,110 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { return processAddSIArchive(siArchiveImportActionParam); } - private Map processAddSIArchive(SIArchiveImportActionParam siArchiveImportActionParam) { + private Map processAddSIArchive(SIArchiveImportActionParam param) { - return null; + ValidUtil.doValidator(param); + + if (StringUtils.isBlank(param.getRunStatus())) { + throw new SalaryRunTimeException("福利档案执行状态未在导入条件设置中添加!"); + } +// List excelSheets = message.getBatchFile().getExcelSheets(); + // 租户key +// String tenantKey = message.getTenantKey().toLowerCase(); + //操作员id + Long creator = (long) user.getUID(); + //获取所有福利类型的id-name结合 + Map schemeNameIdMap = schemeNameIdMap(); + Map welfareMap = welfareMap(); + // 获取所有个税扣缴义务人的名称和id的map + Map paymentNameIdMap; + //分权 + Boolean openDevolution = getTaxAgentService().isOpenDevolution(); + if (openDevolution) { + paymentNameIdMap = getTaxAgentService().listAllTaxAgentsAsAdmin((long) user.getUID()).stream().collect(Collectors.toMap(TaxAgentPO::getName, TaxAgentPO::getId)); + } else { + paymentNameIdMap = getTaxAgentService().listAll().stream().collect(Collectors.toMap(TaxAgentPO::getName, TaxAgentPO::getId)); + } + + //获取所以个税扣缴义务人树型 + List taxAgentManageRangeEmployeeTree = getTaxAgentService().listTaxAgentAndEmployeeTree(); + + // 获取所有人员信息 + List employeeByIds = employeeBiz.listEmployee(); + int total = 0; + + int index = 0; + int successCount = 0; + int errorCount = 0; + + // 待导入数据 + List insuranceArchivesAccountPOS = new ArrayList<>(); + + // 待导入数据 + InputStream fileInputStream = null; + try { + fileInputStream = ImageFileManager.getInputStreamById(Integer.parseInt(param.getImageId())); + Sheet sheet = ExcelSupport.parseFile(fileInputStream, 0, EXCEL_TYPE_XLSX); + // 表头 + List headers = ExcelSupport.getSheetHeader(sheet, 0); + // 错误sheet数据 + List> errorData = new LinkedList<>(); + // 错误提示 + List> excelComments = new LinkedList<>(); + + // 处理数值 + List> data = ExcelParseHelper.parse2Map(sheet, 1); + total = data.size(); + + //当前sheel的单行记录 + Map map; + for (int i = 0; i < data.size(); i++) { + index += 1; + map = data.get(i); + boolean isError; + List> singleAccount = new ArrayList<>(); + for (int j = 0; j < headers.size(); j++) { + //组装单条数据基础数据 + String key = headers.get(j); + if (key == null) { + continue; + } + Map cellData = new HashMap<>(); + cellData.put(key.toString(), Optional.ofNullable(map.get(key.toString())).orElse("").toString()); + cellData.put("index", j); + singleAccount.add(cellData); + } + + isError = singleAccountCheck(singleAccount, welfareMap, insuranceArchivesAccountPOS, employeeByIds, excelComments, errorCount + 1, schemeNameIdMap, paymentNameIdMap, creator, i + 2, openDevolution, taxAgentManageRangeEmployeeTree, param.getRunStatus()); + if (isError) { + errorCount += 1; + // 添加错误数据 + errorData.add(map); + } else { + successCount += 1; + } +// salaryBatchService.sendImportRate(message.getBizId(), total, index); + } + + // 如果sheet包含错误数据 +// if (CollectionUtils.isNotEmpty(errorData)) { +// salaryBatchService.createErrorExcelSheet(headers, errorData, excelSheet.getName(), excelComments, errorExcelSheets); +// } + + // 数据入库处理 + handleImportData(insuranceArchivesAccountPOS); + + // 发送导入回调信息 +// salaryBatchService.sendImportCallBackInfo(message, successCount, errorCount, errorExcelSheets); + + Map apidatas = new HashMap(); + apidatas.put("successCount", successCount); + apidatas.put("errorCount", errorCount); + apidatas.put("errorData", excelComments); + return apidatas; + } finally { + IOUtils.closeQuietly(fileInputStream); + } } } From f3dc63244f983e2d9b295772e7a8d3d344277d78 Mon Sep 17 00:00:00 2001 From: sy Date: Fri, 11 Nov 2022 11:15:33 +0800 Subject: [PATCH 03/50] =?UTF-8?q?=E8=96=AA=E9=85=AC=E7=B3=BB=E7=BB=9F-?= =?UTF-8?q?=E7=A6=8F=E5=88=A9=E6=A1=A3=E6=A1=88=EF=BC=8C=E7=A6=8F=E5=88=A9?= =?UTF-8?q?=E6=A1=A3=E6=A1=88=E6=96=B0=E5=A2=9E=E6=8E=A5=E5=8F=A3v3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web/SIArchiveActionAPIController.java | 14 ++++ .../service/impl/SISchemeServiceImpl.java | 68 +++++++++++++------ 2 files changed, 63 insertions(+), 19 deletions(-) create mode 100644 src/com/api/salary/web/SIArchiveActionAPIController.java diff --git a/src/com/api/salary/web/SIArchiveActionAPIController.java b/src/com/api/salary/web/SIArchiveActionAPIController.java new file mode 100644 index 000000000..c130f6a8b --- /dev/null +++ b/src/com/api/salary/web/SIArchiveActionAPIController.java @@ -0,0 +1,14 @@ +package com.api.salary.web; + +import com.engine.salary.process.siArchives.SIArchiveActionAPI; + +import javax.ws.rs.Path; + +/** + * @Author: sy + * @Description: + * @Date: 2022/11/11 + **/ +@Path("/bs/hrmsalary/siArchiveAction") +public class SIArchiveActionAPIController extends SIArchiveActionAPI { +} diff --git a/src/com/engine/salary/service/impl/SISchemeServiceImpl.java b/src/com/engine/salary/service/impl/SISchemeServiceImpl.java index 4977ee678..11e7cff72 100644 --- a/src/com/engine/salary/service/impl/SISchemeServiceImpl.java +++ b/src/com/engine/salary/service/impl/SISchemeServiceImpl.java @@ -712,26 +712,48 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { public boolean singleAccountCheck(List> singleAccount, Map welfareMap, List insuranceArchivesAccountPOS, List employeeByIds, List> excelComments, int i, Map schemeNameIdMap, Map paymentNameIdMap, Long creator, int index, Boolean openDevolution, List taxAgentManageRangeEmployeeTree, String runStatus) { boolean isError = false; - String userName = (String) singleAccount.get(0).get(SalaryI18nUtil.getI18nLabel(85429, "姓名")); - String deparmentName = (String) singleAccount.get(1).get(SalaryI18nUtil.getI18nLabel(86185, "部门")); - String mobile = (String) singleAccount.get(2).get(SalaryI18nUtil.getI18nLabel(86186, "手机号")); - String userStatus = (String) singleAccount.get(3).get(SalaryI18nUtil.getI18nLabel(86187, "员工状态")); - String workcode = (String) singleAccount.get(4).get(SalaryI18nUtil.getI18nLabel(86317, "工号")); +// String userName = (String) singleAccount.get(0).get(SalaryI18nUtil.getI18nLabel(85429, "姓名")); +// String deparmentName = (String) singleAccount.get(1).get(SalaryI18nUtil.getI18nLabel(86185, "部门")); +// String mobile = (String) singleAccount.get(2).get(SalaryI18nUtil.getI18nLabel(86186, "手机号")); +// String userStatus = (String) singleAccount.get(3).get(SalaryI18nUtil.getI18nLabel(86187, "员工状态")); +// String workcode = (String) singleAccount.get(4).get(SalaryI18nUtil.getI18nLabel(86317, "工号")); + + Map userNameMap = findElement(singleAccount, SalaryI18nUtil.getI18nLabel(85429, "姓名")); + Map deparmentNameMap = findElement(singleAccount, SalaryI18nUtil.getI18nLabel(86185, "部门")); + Map mobileMap = findElement(singleAccount, SalaryI18nUtil.getI18nLabel(86186, "手机号")); + Map userStatusMap = findElement(singleAccount, SalaryI18nUtil.getI18nLabel(86187, "员工状态")); + Map workcodeMap = findElement(singleAccount, SalaryI18nUtil.getI18nLabel(86317, "工号")); + Map employeeIdMap = findElement(singleAccount, SalaryI18nUtil.getI18nLabel(86187, "员工id")); + + + String userName = (String) userNameMap.get(SalaryI18nUtil.getI18nLabel(85429, "姓名")); + String deparmentName = (String) deparmentNameMap.get(SalaryI18nUtil.getI18nLabel(86185, "部门")); + String mobile = (String) mobileMap.get(SalaryI18nUtil.getI18nLabel(86186, "手机号")); + String userStatus = (String) userStatusMap.get(SalaryI18nUtil.getI18nLabel(86187, "员工状态")); + String workcode = (String) workcodeMap.get(SalaryI18nUtil.getI18nLabel(86317, "工号")); + Long addEmployeeId = (Long) employeeIdMap.get(SalaryI18nUtil.getI18nLabel(86187, "员工id")); //查询对于人员信息导入筛选的全局配置 SalarySysConfPO salarySysConfPO = getSalarySysConfMapper().getOneByCode("matchEmployeeMode"); String confValue = (salarySysConfPO != null && salarySysConfPO.getConfValue() != null && !"".equals(salarySysConfPO.getConfValue())) ? salarySysConfPO.getConfValue() : "0"; String rowIndex = "第" + index + "行"; - //仅在全局人员筛选配置为“0”时,才对用户名、部门名称、手机号有要求 - if (StringUtils.isBlank(userName) && StringUtils.isBlank(deparmentName) && StringUtils.isBlank(mobile) && "0".equals(confValue)) { - Map errorMessageMap = Maps.newHashMap(); - errorMessageMap.put("message", rowIndex + " 用户名、部门名称、手机号" + SalaryI18nUtil.getI18nLabel(100303, "不能同时为空")); - excelComments.add(errorMessageMap); - isError = true; + List employees = new ArrayList<>(); + //当新增数据中包含员工id信息时,直接根据员工id获取员工信息 + if (addEmployeeId == null) { + //仅在全局人员筛选配置为“0”时,才对用户名、部门名称、手机号有要求 + if (StringUtils.isBlank(userName) && StringUtils.isBlank(deparmentName) && StringUtils.isBlank(mobile) && "0".equals(confValue)) { + Map errorMessageMap = Maps.newHashMap(); + errorMessageMap.put("message", rowIndex + " 用户名、部门名称、手机号" + SalaryI18nUtil.getI18nLabel(100303, "不能同时为空")); + excelComments.add(errorMessageMap); + isError = true; + } + //筛选导入人员信息可以在人力资源池中匹配到的人员信息 + employees = getSalaryEmployeeService(user).matchImportEmployee(employeeByIds, userName, deparmentName, mobile, workcode, null); + } else { + employees = employeeByIds.stream().filter(f -> f.getEmployeeId().equals(addEmployeeId)).collect(Collectors.toList()); } - //筛选导入人员信息可以在人力资源池中匹配到的人员信息 - List employees = getSalaryEmployeeService(user).matchImportEmployee(employeeByIds, userName, deparmentName, mobile, workcode, null); + if (CollectionUtils.isEmpty(employees)) { Map errorMessageMap = Maps.newHashMap(); @@ -1321,17 +1343,24 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { // 待导入数据 InputStream fileInputStream = null; try { - fileInputStream = ImageFileManager.getInputStreamById(Integer.parseInt(param.getImageId())); - Sheet sheet = ExcelSupport.parseFile(fileInputStream, 0, EXCEL_TYPE_XLSX); // 表头 - List headers = ExcelSupport.getSheetHeader(sheet, 0); + List headers = new ArrayList<>(); + if (param.getImportDatas().size() > 0) { + Map getHeadersMap = param.getImportDatas().get(0); + for (Map.Entry entry : getHeadersMap.entrySet()){ + headers.add(entry.getKey()); + } + } else { + throw new SalaryRunTimeException("新增福利档案数据为空!"); + } + // 错误sheet数据 List> errorData = new LinkedList<>(); // 错误提示 List> excelComments = new LinkedList<>(); // 处理数值 - List> data = ExcelParseHelper.parse2Map(sheet, 1); + List> data = param.getImportDatas(); total = data.size(); //当前sheel的单行记录 @@ -1370,8 +1399,9 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { // } // 数据入库处理 - handleImportData(insuranceArchivesAccountPOS); - + if (param.isAddData()) { + handleImportData(insuranceArchivesAccountPOS); + } // 发送导入回调信息 // salaryBatchService.sendImportCallBackInfo(message, successCount, errorCount, errorExcelSheets); From 2e71ee7a35f0edcf38313c769ee0c40a30242603 Mon Sep 17 00:00:00 2001 From: sy Date: Mon, 14 Nov 2022 10:22:15 +0800 Subject: [PATCH 04/50] =?UTF-8?q?=E8=96=AA=E9=85=AC=E7=B3=BB=E7=BB=9F-?= =?UTF-8?q?=E7=A6=8F=E5=88=A9=E6=A1=A3=E6=A1=88=EF=BC=8C=E7=A6=8F=E5=88=A9?= =?UTF-8?q?=E6=A1=A3=E6=A1=88=E6=96=B0=E5=A2=9E=E6=8E=A5=E5=8F=A3v4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/engine/salary/service/impl/SISchemeServiceImpl.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/com/engine/salary/service/impl/SISchemeServiceImpl.java b/src/com/engine/salary/service/impl/SISchemeServiceImpl.java index 11e7cff72..17a5cc116 100644 --- a/src/com/engine/salary/service/impl/SISchemeServiceImpl.java +++ b/src/com/engine/salary/service/impl/SISchemeServiceImpl.java @@ -731,7 +731,8 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { String mobile = (String) mobileMap.get(SalaryI18nUtil.getI18nLabel(86186, "手机号")); String userStatus = (String) userStatusMap.get(SalaryI18nUtil.getI18nLabel(86187, "员工状态")); String workcode = (String) workcodeMap.get(SalaryI18nUtil.getI18nLabel(86317, "工号")); - Long addEmployeeId = (Long) employeeIdMap.get(SalaryI18nUtil.getI18nLabel(86187, "员工id")); + String toAddEmployeeId = employeeIdMap.get(SalaryI18nUtil.getI18nLabel(86187, "员工id")).toString(); + Long addEmployeeId = StringUtils.isNotBlank(toAddEmployeeId) ? Long.valueOf(toAddEmployeeId) : null; //查询对于人员信息导入筛选的全局配置 SalarySysConfPO salarySysConfPO = getSalarySysConfMapper().getOneByCode("matchEmployeeMode"); From 969bc6b4135d53458016bb2789d19c8949f063af Mon Sep 17 00:00:00 2001 From: sy Date: Tue, 15 Nov 2022 11:13:16 +0800 Subject: [PATCH 05/50] =?UTF-8?q?=E8=96=AA=E9=85=AC=E7=B3=BB=E7=BB=9F-?= =?UTF-8?q?=E7=A6=8F=E5=88=A9=E6=A1=A3=E6=A1=88=EF=BC=8C=E7=A6=8F=E5=88=A9?= =?UTF-8?q?=E6=A1=A3=E6=A1=88=E6=96=B0=E5=A2=9E=E6=8E=A5=E5=8F=A3v5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/engine/salary/biz/SIAccountBiz.java | 10 +++++++++- .../salary/service/impl/SISchemeServiceImpl.java | 8 +++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/com/engine/salary/biz/SIAccountBiz.java b/src/com/engine/salary/biz/SIAccountBiz.java index 9c6791098..84cf1e972 100644 --- a/src/com/engine/salary/biz/SIAccountBiz.java +++ b/src/com/engine/salary/biz/SIAccountBiz.java @@ -230,6 +230,7 @@ public class SIAccountBiz extends Service { public void doAccounting(AccountParam param, Long employeeId, String tenantKey, String currentUserName) { + log.info("核算时间:{}, 核算月份:{}, 个税扣缴义务人:{}, 是否首次核算:{}", new Date(), param.getBillMonth(), param.getPaymentOrganization(), param.isFlag()); try { List ids; List validIds = new ArrayList<>(); @@ -405,13 +406,20 @@ public class SIAccountBiz extends Service { List list = MapperProxyFactory.getProxy(SIAccountDetailTempMapper.class).getListByEmployeeIdsAndBillMonth(ids, billMonth, param.getPaymentOrganization()); InsuranceAccountDetailTempPOEncrypt.decryptInsuranceAccountDetailTempPOList(list); Integer paymentStatus = 0; - getInsuranceAccountDetailMapper().batchDelAccountDetails(ids, billMonth, param.getPaymentOrganization(), paymentStatus); + log.info("核算明细临时表 hrsa_bill_detail_temp待处理数量:{}", list.size()); + List> partitionIds = Lists.partition((List) ids, 100); + log.info("bill_detail入库前删除数据数量:{}", ids.size()); + for (List part : partitionIds) { + getInsuranceAccountDetailMapper().batchDelAccountDetails(part, billMonth, param.getPaymentOrganization(), paymentStatus); + } + List collect = list.stream().map(item -> { InsuranceAccountDetailPO insuranceAccountDetailPO = new InsuranceAccountDetailPO(); BeanUtils.copyProperties(item, insuranceAccountDetailPO); return insuranceAccountDetailPO; }).collect(Collectors.toList()); if (CollectionUtils.isNotEmpty(collect)) { + log.info("bill_detail入库数据数量:{}", collect.size()); batchSaveAccountInspectDetail(collect, billMonth, tenantKey); InsuranceAccountDetailPOEncrypt.encryptInsuranceAccountDetailPOList(collect); List> lists = splitDetailList(collect, 20); diff --git a/src/com/engine/salary/service/impl/SISchemeServiceImpl.java b/src/com/engine/salary/service/impl/SISchemeServiceImpl.java index 17a5cc116..31799a577 100644 --- a/src/com/engine/salary/service/impl/SISchemeServiceImpl.java +++ b/src/com/engine/salary/service/impl/SISchemeServiceImpl.java @@ -731,7 +731,13 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { String mobile = (String) mobileMap.get(SalaryI18nUtil.getI18nLabel(86186, "手机号")); String userStatus = (String) userStatusMap.get(SalaryI18nUtil.getI18nLabel(86187, "员工状态")); String workcode = (String) workcodeMap.get(SalaryI18nUtil.getI18nLabel(86317, "工号")); - String toAddEmployeeId = employeeIdMap.get(SalaryI18nUtil.getI18nLabel(86187, "员工id")).toString(); + String toAddEmployeeId; + if (employeeIdMap.isEmpty()) { + toAddEmployeeId = null; + } else { + toAddEmployeeId = employeeIdMap.get(SalaryI18nUtil.getI18nLabel(86187, "员工id")).toString(); + } + Long addEmployeeId = StringUtils.isNotBlank(toAddEmployeeId) ? Long.valueOf(toAddEmployeeId) : null; //查询对于人员信息导入筛选的全局配置 From b647089eaf1e86f3b63b2352cabe3325b00414ac Mon Sep 17 00:00:00 2001 From: sy Date: Tue, 15 Nov 2022 17:58:37 +0800 Subject: [PATCH 06/50] =?UTF-8?q?=E8=96=AA=E9=85=AC=E7=B3=BB=E7=BB=9F-?= =?UTF-8?q?=E7=A6=8F=E5=88=A9=E5=8F=B0=E8=B4=A6=EF=BC=8C=E9=80=80=E5=B7=AE?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E6=96=B0=E5=A2=9E=E5=8A=9F=E8=83=BDv1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../param/InsuranceAccountDetailParam.java | 7 + .../siaccount/param/RecessionParam.java | 47 +++ .../enums/siaccount/PaymentStatusEnum.java | 5 +- .../InsuranceAccountDetailMapper.xml | 18 ++ .../salary/service/SIExportService.java | 2 +- .../salary/service/SIRecessionService.java | 12 + .../service/impl/SIRecessionServiceImpl.java | 285 ++++++++++++++++++ 7 files changed, 374 insertions(+), 2 deletions(-) create mode 100644 src/com/engine/salary/entity/siaccount/param/RecessionParam.java create mode 100644 src/com/engine/salary/service/SIRecessionService.java create mode 100644 src/com/engine/salary/service/impl/SIRecessionServiceImpl.java diff --git a/src/com/engine/salary/entity/siaccount/param/InsuranceAccountDetailParam.java b/src/com/engine/salary/entity/siaccount/param/InsuranceAccountDetailParam.java index 85c694a9f..8d2dd900a 100644 --- a/src/com/engine/salary/entity/siaccount/param/InsuranceAccountDetailParam.java +++ b/src/com/engine/salary/entity/siaccount/param/InsuranceAccountDetailParam.java @@ -2,6 +2,7 @@ package com.engine.salary.entity.siaccount.param; import com.engine.salary.common.BaseQueryParam; import lombok.AllArgsConstructor; +import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; @@ -14,6 +15,7 @@ import java.util.List; * @Version V1.0 **/ @Data +@Builder @NoArgsConstructor @AllArgsConstructor public class InsuranceAccountDetailParam extends BaseQueryParam { @@ -27,4 +29,9 @@ public class InsuranceAccountDetailParam extends BaseQueryParam { private String userName; private String paymentOrganization; + + /** + * 退差月份 + */ + private List recessionMonthList; } diff --git a/src/com/engine/salary/entity/siaccount/param/RecessionParam.java b/src/com/engine/salary/entity/siaccount/param/RecessionParam.java new file mode 100644 index 000000000..d1674bea4 --- /dev/null +++ b/src/com/engine/salary/entity/siaccount/param/RecessionParam.java @@ -0,0 +1,47 @@ +package com.engine.salary.entity.siaccount.param; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +/** + * @Author: sy + * @Description: 社保福利台账-退差请求体 + * @Date: 2022/11/15 + **/ +@Data +@NoArgsConstructor +@AllArgsConstructor +@Builder +public class RecessionParam { + + /** + * 退差月份 + */ + private List recessionMonthList; + + /** + * 退差项目 + */ + private List projects; + + /** + * 包含人员 + */ + private List includes; + + /** + * 排除人员 + */ + private List excludes; + + /** + * 账单月份 + */ + private String billMonth; + + private String paymentOrganization; +} diff --git a/src/com/engine/salary/enums/siaccount/PaymentStatusEnum.java b/src/com/engine/salary/enums/siaccount/PaymentStatusEnum.java index a44480ea2..cd4fe410d 100644 --- a/src/com/engine/salary/enums/siaccount/PaymentStatusEnum.java +++ b/src/com/engine/salary/enums/siaccount/PaymentStatusEnum.java @@ -12,7 +12,10 @@ import com.engine.salary.enums.BaseEnum; public enum PaymentStatusEnum implements BaseEnum { COMMON(0, "正常缴纳", 92265), - REPAIR(1, "补缴", 92266); + REPAIR(1, "补缴", 92266), + PAYMENT(2,"代缴",121755), + RECESSION(3,"退差",134057), + BALANCE(4,"补差",139823); private Integer value; diff --git a/src/com/engine/salary/mapper/siaccount/InsuranceAccountDetailMapper.xml b/src/com/engine/salary/mapper/siaccount/InsuranceAccountDetailMapper.xml index b3ec88e72..80f21c5ef 100644 --- a/src/com/engine/salary/mapper/siaccount/InsuranceAccountDetailMapper.xml +++ b/src/com/engine/salary/mapper/siaccount/InsuranceAccountDetailMapper.xml @@ -175,6 +175,12 @@ #{employeeId} + + AND t.bill_month IN + + #{recessionMonth} + + @@ -189,6 +195,12 @@ #{employeeId} + + AND t.bill_month IN + + #{recessionMonth} + + @@ -203,6 +215,12 @@ #{employeeId} + + AND t.bill_month IN + + #{recessionMonth} + + diff --git a/src/com/engine/salary/service/SIExportService.java b/src/com/engine/salary/service/SIExportService.java index c67970b7c..0fd3152dd 100644 --- a/src/com/engine/salary/service/SIExportService.java +++ b/src/com/engine/salary/service/SIExportService.java @@ -19,7 +19,7 @@ public interface SIExportService { XSSFWorkbook exportOverView(InsuranceExportParam param); /** - * 补缴核算导出 + * 福利核算导出 * @param paymentStatus * @param param * @return diff --git a/src/com/engine/salary/service/SIRecessionService.java b/src/com/engine/salary/service/SIRecessionService.java new file mode 100644 index 000000000..df163bb84 --- /dev/null +++ b/src/com/engine/salary/service/SIRecessionService.java @@ -0,0 +1,12 @@ +package com.engine.salary.service; + +import com.engine.salary.entity.siaccount.param.RecessionParam; + +import java.util.Collection; + +public interface SIRecessionService { + + void save(RecessionParam param, Long employeeId); + + void del(Collection ids, Long employeeId); +} diff --git a/src/com/engine/salary/service/impl/SIRecessionServiceImpl.java b/src/com/engine/salary/service/impl/SIRecessionServiceImpl.java new file mode 100644 index 000000000..340447bbd --- /dev/null +++ b/src/com/engine/salary/service/impl/SIRecessionServiceImpl.java @@ -0,0 +1,285 @@ +package com.engine.salary.service.impl; + +import com.alibaba.fastjson.JSON; +import com.api.formmode.mybatis.util.SqlProxyHandle; +import com.engine.core.impl.Service; +import com.engine.salary.encrypt.siaccount.InsuranceAccountDetailPOEncrypt; +import com.engine.salary.entity.siaccount.param.InsuranceAccountDetailParam; +import com.engine.salary.entity.siaccount.param.RecessionParam; +import com.engine.salary.entity.siaccount.po.InsuranceAccountDetailPO; +import com.engine.salary.enums.siaccount.BillStatusEnum; +import com.engine.salary.enums.siaccount.PaymentStatusEnum; +import com.engine.salary.enums.siaccount.ProjectTypeEnum; +import com.engine.salary.enums.sicategory.DeleteTypeEnum; +import com.engine.salary.mapper.siaccount.InsuranceAccountDetailMapper; +import com.engine.salary.service.SIRecessionService; +import com.google.common.collect.Lists; +import org.apache.commons.lang3.StringUtils; +import org.apache.commons.collections4.CollectionUtils; +import com.engine.salary.exception.SalaryRunTimeException; +import com.engine.salary.util.SalaryI18nUtil; +import com.engine.salary.util.SalaryAssert; + +import java.math.BigDecimal; +import java.util.*; +import java.util.stream.Collectors; + +/** + * @Author: sy + * @Description: 社保福利台账-退差实现类 + * @Date: 2022/11/15 + **/ +public class SIRecessionServiceImpl extends Service implements SIRecessionService { + + private InsuranceAccountDetailMapper getInsuranceAccountDetailMapper() { + return SqlProxyHandle.getProxy(InsuranceAccountDetailMapper.class); + } + + @Override + public void save(RecessionParam param, Long employeeId) { + + //入参判断 + if (StringUtils.isBlank(param.getPaymentOrganization()) || StringUtils.isBlank(param.getBillMonth()) || CollectionUtils.isEmpty(param.getRecessionMonthList()) + || CollectionUtils.isEmpty(param.getIncludes()) || CollectionUtils.isEmpty(param.getProjects())) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(84026, "参数错误")); + } + //需要退差的员工 + List employeeIds = param.getIncludes(); + if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(param.getExcludes())) { + employeeIds = employeeIds.stream().filter(item -> !param.getExcludes().contains(item)).collect(Collectors.toList()); + } + SalaryAssert.notEmpty(employeeIds, SalaryI18nUtil.getI18nLabel(133967, "无退差人员")); + //查询退差员工对应的退差月份的正常缴纳的福利台账数据 + List detailPOS= getInsuranceAccountDetailMapper().list(InsuranceAccountDetailParam.builder() + .paymentStatus(PaymentStatusEnum.COMMON.getValue()) + .recessionMonthList(param.getRecessionMonthList()) + .employeeIds(employeeIds) + .paymentOrganization(param.getPaymentOrganization()) + .build()); + InsuranceAccountDetailPOEncrypt.decryptInsuranceAccountDetailPOList(detailPOS); + //处理数据 + List finalDetailPOS = detailPOS; + List finalRecessionDetails = new ArrayList<>(); + employeeIds.forEach(id -> { + param.getRecessionMonthList().forEach(billMonth -> { + Optional detailPOOptional = finalDetailPOS.stream().filter( + detail -> Objects.equals(billMonth, detail.getBillMonth()) + && Objects.equals(id, detail.getEmployeeId())).findFirst(); + detailPOOptional.ifPresent(insuranceAccountDetailPO -> recessionAccount(param, insuranceAccountDetailPO, finalRecessionDetails)); + }); + }); + //退差数据入库 + if (CollectionUtils.isNotEmpty(finalRecessionDetails)) { + InsuranceAccountDetailPOEncrypt.encryptInsuranceAccountDetailPOList(finalRecessionDetails); + + List> partition = Lists.partition((List) finalRecessionDetails, 20); + partition.forEach(getInsuranceAccountDetailMapper()::batchSaveAccountDetails); + + } + } + + + @Override + public void del(Collection ids, Long employeeId) { + + //入参判断 + if (CollectionUtils.isEmpty(ids)) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(84026, "参数错误")); + } + //根据id删除 + List> partition = Lists.partition((List) ids, 100); + partition.forEach(getInsuranceAccountDetailMapper()::batchDelAccountDetailsByIds); + + } + + + private void recessionAccount(RecessionParam param, InsuranceAccountDetailPO insuranceAccountDetailPO, List recessionDetails) { + List projects = param.getProjects(); + InsuranceAccountDetailPO temp = new InsuranceAccountDetailPO(); + recessionBaseBuild(param, temp, insuranceAccountDetailPO); + if (projects.contains(ProjectTypeEnum.ALL.getValue())) { + recessionSocial(param, temp, insuranceAccountDetailPO); + recessionFund(param, temp, insuranceAccountDetailPO); + recessionOther(param, temp, insuranceAccountDetailPO); + } + if (projects.contains(ProjectTypeEnum.SOCIAL.getValue())) { + recessionSocial(param, temp, insuranceAccountDetailPO); + } + + if (projects.contains(ProjectTypeEnum.FUND.getValue())) { + recessionFund(param, temp, insuranceAccountDetailPO); + } + if (projects.contains(ProjectTypeEnum.OTHER.getValue())) { + recessionOther(param, temp, insuranceAccountDetailPO); + } + account(temp); + recessionDetails.add(temp); + } + + + + private void recessionBaseBuild(RecessionParam param, InsuranceAccountDetailPO temp, InsuranceAccountDetailPO insuranceAccountDetailPO) { + temp.setPaymentStatus(PaymentStatusEnum.RECESSION.getValue()); +// temp.setId(IdGenerator.generate()); + temp.setCreateTime(new Date()); + temp.setUpdateTime(new Date()); + temp.setCreator(insuranceAccountDetailPO.getCreator()); + temp.setDeleteType(DeleteTypeEnum.NOT_DELETED.getValue()); + temp.setTenantKey(insuranceAccountDetailPO.getTenantKey()); + temp.setEmployeeId(insuranceAccountDetailPO.getEmployeeId()); + temp.setBillMonth(param.getBillMonth()); + temp.setBillStatus(BillStatusEnum.NOT_ARCHIVED.getValue()); + temp.setSupplementaryMonth(insuranceAccountDetailPO.getBillMonth()); + temp.setSupplementaryProjects(String.join(",", + param.getProjects() == null ? new ArrayList<>() : param.getProjects().stream().map(String::valueOf).collect(Collectors.toList()))); + temp.setResourceFrom(insuranceAccountDetailPO.getResourceFrom()); + temp.setSocialAccount(insuranceAccountDetailPO.getSocialAccount()); + temp.setSocialSchemeId(insuranceAccountDetailPO.getSocialSchemeId()); + temp.setSocialPaymentBaseString(insuranceAccountDetailPO.getSocialPaymentBaseString()); + temp.setFundAccount(insuranceAccountDetailPO.getFundAccount()); + temp.setSupplementFundAccount(insuranceAccountDetailPO.getSupplementFundAccount()); + temp.setFundSchemeId(insuranceAccountDetailPO.getFundSchemeId()); + temp.setFundPaymentBaseString(insuranceAccountDetailPO.getFundPaymentBaseString()); + temp.setOtherSchemeId(insuranceAccountDetailPO.getOtherSchemeId()); + temp.setOtherPaymentBaseString(insuranceAccountDetailPO.getOtherPaymentBaseString()); +// temp.setExternalFlag(insuranceAccountDetailPO.getExternalFlag()); + temp.setPaymentOrganization(insuranceAccountDetailPO.getPaymentOrganization()); +// temp.setPaymentAgency(insuranceAccountDetailPO.getPaymentAgency()); + } + private void recessionSocial(RecessionParam param, InsuranceAccountDetailPO temp, InsuranceAccountDetailPO insuranceAccountDetailPO) { + //退差社保个人缴费 + String socialPerJson = insuranceAccountDetailPO.getSocialPerJson(); + if (StringUtils.isNotBlank(socialPerJson)) { + HashMap jsonMap = new HashMap<>(); + HashMap hashMap = JSON.parseObject(socialPerJson, new HashMap().getClass()); + hashMap.forEach((k, v) -> { + if (StringUtils.isNotBlank(v)) { + v = new BigDecimal(v).negate().toPlainString(); + jsonMap.put(k, v); + } + }); + temp.setSocialPerJson(JSON.toJSONString(jsonMap)); + } + if (StringUtils.isNotBlank(insuranceAccountDetailPO.getSocialPerSum())) { + temp.setSocialPerSum(new BigDecimal(insuranceAccountDetailPO.getSocialPerSum()).negate().toPlainString()); + } + //退差社保单位缴费 + String socialComJson = insuranceAccountDetailPO.getSocialComJson(); + if (StringUtils.isNotBlank(socialComJson)) { + HashMap jsonMap = new HashMap<>(); + HashMap hashMap = JSON.parseObject(socialPerJson, new HashMap().getClass()); + hashMap.forEach((k, v) -> { + if (StringUtils.isNotBlank(v)) { + v = new BigDecimal(v).negate().toPlainString(); + jsonMap.put(k, v); + } + }); + temp.setSocialComJson(JSON.toJSONString(jsonMap)); + } + if (StringUtils.isNotBlank(insuranceAccountDetailPO.getSocialComSum())) { + temp.setSocialComSum(new BigDecimal(insuranceAccountDetailPO.getSocialComSum()).negate().toPlainString()); + } + } + + private void recessionFund(RecessionParam param, InsuranceAccountDetailPO temp, InsuranceAccountDetailPO insuranceAccountDetailPO) { + //退差公积金个人缴费 + String fundPerJson = insuranceAccountDetailPO.getFundPerJson(); + if (StringUtils.isNotBlank(fundPerJson)) { + HashMap jsonMap = new HashMap<>(); + HashMap hashMap = JSON.parseObject(fundPerJson, new HashMap().getClass()); + hashMap.forEach((k, v) -> { + if (StringUtils.isNotBlank(v)) { + v = new BigDecimal(v).negate().toPlainString(); + jsonMap.put(k, v); + } + }); + temp.setFundPerJson(JSON.toJSONString(jsonMap)); + } + if (StringUtils.isNotBlank(insuranceAccountDetailPO.getFundPerSum())) { + temp.setFundPerSum(new BigDecimal(insuranceAccountDetailPO.getFundPerSum()).negate().toPlainString()); + } + //退差公积金单位缴费 + String fundComJson = insuranceAccountDetailPO.getFundComJson(); + if (StringUtils.isNotBlank(fundComJson)) { + HashMap jsonMap = new HashMap<>(); + HashMap hashMap = JSON.parseObject(fundPerJson, new HashMap().getClass()); + hashMap.forEach((k, v) -> { + if (StringUtils.isNotBlank(v)) { + v = new BigDecimal(v).negate().toPlainString(); + jsonMap.put(k, v); + } + }); + temp.setFundComJson(JSON.toJSONString(jsonMap)); + } + if (StringUtils.isNotBlank(insuranceAccountDetailPO.getFundComSum())) { + temp.setFundComSum(new BigDecimal(insuranceAccountDetailPO.getFundComSum()).negate().toPlainString()); + } + } + + + private void recessionOther(RecessionParam param, InsuranceAccountDetailPO temp, InsuranceAccountDetailPO insuranceAccountDetailPO) { + //退差其他福利个人缴费 + String otherPerJson = insuranceAccountDetailPO.getOtherPerJson(); + if (StringUtils.isNotBlank(otherPerJson)) { + HashMap jsonMap = new HashMap<>(); + HashMap hashMap = JSON.parseObject(otherPerJson, new HashMap().getClass()); + hashMap.forEach((k, v) -> { + if (StringUtils.isNotBlank(v)) { + v = new BigDecimal(v).negate().toPlainString(); + jsonMap.put(k, v); + } + }); + temp.setOtherPerJson(JSON.toJSONString(jsonMap)); + } + if (StringUtils.isNotBlank(insuranceAccountDetailPO.getOtherPerSum())) { + temp.setOtherPerSum(new BigDecimal(insuranceAccountDetailPO.getOtherPerSum()).negate().toPlainString()); + } + //退差其他福利单位缴费 + String otherComJson = insuranceAccountDetailPO.getOtherComJson(); + if (StringUtils.isNotBlank(otherComJson)) { + HashMap jsonMap = new HashMap<>(); + HashMap hashMap = JSON.parseObject(otherPerJson, new HashMap().getClass()); + hashMap.forEach((k, v) -> { + if (StringUtils.isNotBlank(v)) { + v = new BigDecimal(v).negate().toPlainString(); + jsonMap.put(k, v); + } + }); + temp.setOtherComJson(JSON.toJSONString(jsonMap)); + } + if (StringUtils.isNotBlank(insuranceAccountDetailPO.getOtherComSum())) { + temp.setOtherComSum(new BigDecimal(insuranceAccountDetailPO.getOtherComSum()).negate().toPlainString()); + } + } + + + private void account(InsuranceAccountDetailPO insuranceAccountDetailPO) { + + //个人合计 + BigDecimal socialPerson = + StringUtils.isBlank(insuranceAccountDetailPO.getSocialPerSum()) ? new BigDecimal("0") : new BigDecimal(insuranceAccountDetailPO.getSocialPerSum()); + BigDecimal fundPerson = + StringUtils.isBlank(insuranceAccountDetailPO.getFundPerSum()) ? new BigDecimal("0") : new BigDecimal(insuranceAccountDetailPO.getFundPerSum()); + BigDecimal otherPerson = + StringUtils.isBlank(insuranceAccountDetailPO.getOtherPerSum()) ? new BigDecimal("0") : new BigDecimal(insuranceAccountDetailPO.getOtherPerSum()); + BigDecimal perSum = socialPerson.add(fundPerson).add(otherPerson); + insuranceAccountDetailPO.setPerSum(perSum.toPlainString()); + //单位合计 + BigDecimal socialCom = + StringUtils.isBlank(insuranceAccountDetailPO.getSocialComSum()) ? new BigDecimal("0") : new BigDecimal(insuranceAccountDetailPO.getSocialComSum()); + BigDecimal fundCom = StringUtils.isBlank(insuranceAccountDetailPO.getFundComSum()) ? new BigDecimal("0") : new BigDecimal(insuranceAccountDetailPO.getFundComSum()); + BigDecimal otherCom = + StringUtils.isBlank(insuranceAccountDetailPO.getOtherComSum()) ? new BigDecimal("0") : new BigDecimal(insuranceAccountDetailPO.getOtherComSum()); + BigDecimal comSum = socialCom.add(fundCom).add(otherCom); + insuranceAccountDetailPO.setComSum(comSum.toPlainString()); + //社保合计 + insuranceAccountDetailPO.setSocialSum(socialPerson.add(socialCom).toPlainString()); + //公积金合计 + insuranceAccountDetailPO.setFundSum(fundPerson.add(fundCom).toPlainString()); + //其他福利合计 + insuranceAccountDetailPO.setOtherSum(otherPerson.add(otherCom).toPlainString()); + //合计 + insuranceAccountDetailPO.setTotal(perSum.add(comSum).toPlainString()); + } + +} From c339798dc8043de3a35912c07767e7d5ea255930 Mon Sep 17 00:00:00 2001 From: sy Date: Wed, 16 Nov 2022 09:48:17 +0800 Subject: [PATCH 07/50] =?UTF-8?q?=E8=96=AA=E9=85=AC=E7=B3=BB=E7=BB=9F-?= =?UTF-8?q?=E7=A6=8F=E5=88=A9=E5=8F=B0=E8=B4=A6=EF=BC=8C=E9=80=80=E5=B7=AE?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=AF=BC=E5=87=BA=E5=8A=9F=E8=83=BDv1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../po/InsuranceAccountDetailPO.java | 2 +- .../service/impl/SIExportServiceImpl.java | 20 ++++++++------ .../engine/salary/web/SIExportController.java | 26 +++++++++++++++++++ 3 files changed, 39 insertions(+), 9 deletions(-) diff --git a/src/com/engine/salary/entity/siaccount/po/InsuranceAccountDetailPO.java b/src/com/engine/salary/entity/siaccount/po/InsuranceAccountDetailPO.java index deede8bfb..5caeaff88 100644 --- a/src/com/engine/salary/entity/siaccount/po/InsuranceAccountDetailPO.java +++ b/src/com/engine/salary/entity/siaccount/po/InsuranceAccountDetailPO.java @@ -50,7 +50,7 @@ public class InsuranceAccountDetailPO { private Integer paymentStatus; /** - * 补缴月份 + * 补缴月份/退差月份 */ private String supplementaryMonth; diff --git a/src/com/engine/salary/service/impl/SIExportServiceImpl.java b/src/com/engine/salary/service/impl/SIExportServiceImpl.java index 1b1ad1bfc..1e05edf05 100644 --- a/src/com/engine/salary/service/impl/SIExportServiceImpl.java +++ b/src/com/engine/salary/service/impl/SIExportServiceImpl.java @@ -151,12 +151,14 @@ public class SIExportServiceImpl extends Service implements SIExportService { AccountExportPOEncrypt.decryptAccountExportPOList(accountExportPOS); List columns = new ArrayList<>(); List> records = new ArrayList<>(); - if (Objects.equals(PaymentStatusEnum.COMMON.getValue(), paymentStatus)) { - columns = buildCommonColumns(accountExportPOS, false); - } - if (Objects.equals(PaymentStatusEnum.REPAIR.getValue(), paymentStatus)) { - columns = buildCommonColumns(accountExportPOS, true); - } +// if (Objects.equals(PaymentStatusEnum.COMMON.getValue(), paymentStatus)) { +// columns = buildCommonColumns(accountExportPOS, false); +// } +// if (Objects.equals(PaymentStatusEnum.REPAIR.getValue(), paymentStatus)) { +// columns = buildCommonColumns(accountExportPOS, true); +// } + columns = buildCommonColumns(accountExportPOS, paymentStatus); + records = buildCommonRecords(accountExportPOS); List> excelSheetData = new ArrayList<>(); //工作簿名称 @@ -428,7 +430,7 @@ public class SIExportServiceImpl extends Service implements SIExportService { } - private List buildCommonColumns(List pos, boolean flag) { + private List buildCommonColumns(List pos, Integer paymentStatus) { List list = new ArrayList<>(); Map categoryIdNameMap = categoryIdNameMap(); Map> columns = buildPaymentTitle(pos, categoryIdNameMap); @@ -440,8 +442,10 @@ public class SIExportServiceImpl extends Service implements SIExportService { list.add(new WeaTableColumn("150px", SalaryI18nUtil.getI18nLabel(86317, "工号"), "workcode")); list.add(new WeaTableColumn("150px", SalaryI18nUtil.getI18nLabel(86187, "员工状态"), "employeeStatus")); list.add(new WeaTableColumn("150px", SalaryI18nUtil.getI18nLabel(100377, "数据来源"), "sourceFrom")); - if (flag) { + if (paymentStatus.equals(PaymentStatusEnum.REPAIR.getValue())) { list.add(new WeaTableColumn("150px", SalaryI18nUtil.getI18nLabel(100379, "补缴月份"), "supplementaryMonth")); + } else if (paymentStatus.equals(PaymentStatusEnum.RECESSION.getValue())) { + list.add(new WeaTableColumn("150px", SalaryI18nUtil.getI18nLabel(100379, "退差月份"), "supplementaryMonth")); } list.add(new WeaTableColumn("150px", SalaryI18nUtil.getI18nLabel(91325, "个税扣缴义务人"), "socialPayOrg")); list.add(new WeaTableColumn("150px", SalaryI18nUtil.getI18nLabel(91324, "社保账号"), "socialAccount")); diff --git a/src/com/engine/salary/web/SIExportController.java b/src/com/engine/salary/web/SIExportController.java index 2b5a7a337..aa64af28b 100644 --- a/src/com/engine/salary/web/SIExportController.java +++ b/src/com/engine/salary/web/SIExportController.java @@ -155,6 +155,32 @@ public class SIExportController { return Response.ok(output).header("Content-disposition", "attachment;filename=" + fileName).header("Cache-Control", "no-cache").build(); } + /** + * 福利台账-退差核算数据导出 + */ + @GET + @Path("/recession/export") + @Produces(MediaType.APPLICATION_OCTET_STREAM) + public Response exportRecession(@Context HttpServletRequest request, @Context HttpServletResponse response, + @QueryParam("billMonth") String billMonth,@QueryParam("paymentOrganization") String paymentOrganization) { + InsuranceExportParam param = InsuranceExportParam.builder().billMonth(billMonth).paymentOrganization(paymentOrganization).build(); + User user = HrmUserVarify.getUser(request, response); + XSSFWorkbook workbook = getSIExportWrapper(user).exportAccount(PaymentStatusEnum.RECESSION.getValue(),param); + String time = LocalDate.now().toString(); + String fileName = "退差核算报表" + time; + try { + fileName = URLEncoder.encode(fileName + ".xlsx", "UTF-8"); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + StreamingOutput output = outputStream -> { + workbook.write(outputStream); + outputStream.flush(); + }; + response.setContentType("application/octet-stream"); + return Response.ok(output).header("Content-disposition", "attachment;filename=" + fileName).header("Cache-Control", "no-cache").build(); + } + @GET @Path("/overView/export") @Produces(MediaType.APPLICATION_OCTET_STREAM) From ce37694a95b56a8ce9b0666b028015ad692949bd Mon Sep 17 00:00:00 2001 From: sy Date: Wed, 16 Nov 2022 10:15:05 +0800 Subject: [PATCH 08/50] =?UTF-8?q?=E8=96=AA=E9=85=AC=E7=B3=BB=E7=BB=9F-?= =?UTF-8?q?=E7=A6=8F=E5=88=A9=E5=8F=B0=E8=B4=A6=EF=BC=8C=E9=80=80=E5=B7=AE?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=88=A0=E9=99=A4=E5=8A=9F=E8=83=BDv1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salary/web/SIAccountController.java | 26 +++++++++++++++++ .../salary/wrapper/SIAccountWrapper.java | 29 ++++++++++++++++--- 2 files changed, 51 insertions(+), 4 deletions(-) diff --git a/src/com/engine/salary/web/SIAccountController.java b/src/com/engine/salary/web/SIAccountController.java index 4634f9ca8..e00d5efec 100644 --- a/src/com/engine/salary/web/SIAccountController.java +++ b/src/com/engine/salary/web/SIAccountController.java @@ -612,4 +612,30 @@ public class SIAccountController { } // **********************************线下对比 end*********************************/ + + // **********************************退差 start*********************************/ + /** + * 保存退差(新增) + */ + @POST + @Path("/saveRecession") + @Produces(MediaType.APPLICATION_JSON) + public String saveRecession(@Context HttpServletRequest request, @Context HttpServletResponse response, + @RequestBody RecessionParam param) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getSIAccountWrapper(user)::saveRecession, param); + } + + /** + * 删除退差 + */ + @POST + @Path("/delRecession") + @Produces(MediaType.APPLICATION_JSON) + public String delRecession(@Context HttpServletRequest request, @Context HttpServletResponse response, + @RequestBody Collection ids) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult, String>(user).run(getSIAccountWrapper(user)::delRecession, ids); + } + // **********************************退差 end*********************************/ } diff --git a/src/com/engine/salary/wrapper/SIAccountWrapper.java b/src/com/engine/salary/wrapper/SIAccountWrapper.java index 862459a18..10b53a81a 100644 --- a/src/com/engine/salary/wrapper/SIAccountWrapper.java +++ b/src/com/engine/salary/wrapper/SIAccountWrapper.java @@ -2,12 +2,14 @@ package com.engine.salary.wrapper; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; -import com.engine.salary.entity.siexport.param.InsuranceExportParam; -import com.engine.salary.service.SIExportService; -import com.engine.salary.service.impl.SIExportServiceImpl; -import org.apache.poi.xssf.usermodel.XSSFWorkbook; + +import com.engine.salary.entity.siaccount.param.RecessionParam; +import com.engine.salary.service.SIRecessionService; +import com.engine.salary.service.impl.SIRecessionServiceImpl; import weaver.hrm.User; +import java.util.Collection; + /** * @Author weaver_cl * @Description: TODO @@ -15,6 +17,25 @@ import weaver.hrm.User; * @Version V1.0 **/ public class SIAccountWrapper extends Service { + private SIRecessionService getSIRecessionService(User user) { + return (SIRecessionService) ServiceUtil.getService(SIRecessionServiceImpl.class, user); + } + /** + * 新增退差数据 + * @param param 退差请求体 + */ + public void saveRecession(RecessionParam param) { + long currentEmployeeId = user.getUID(); + getSIRecessionService(user).save(param, currentEmployeeId); + } + /** + * 删除退差数据 + * @param ids 表数据id集合 + */ + public void delRecession(Collection ids) { + long currentEmployeeId = user.getUID(); + getSIRecessionService(user).del(ids, currentEmployeeId); + } } From a4924c19eef568f77b0c22b347d04544953f9150 Mon Sep 17 00:00:00 2001 From: sy Date: Wed, 16 Nov 2022 14:05:43 +0800 Subject: [PATCH 09/50] =?UTF-8?q?=E8=96=AA=E9=85=AC=E7=B3=BB=E7=BB=9F-?= =?UTF-8?q?=E7=A6=8F=E5=88=A9=E5=8F=B0=E8=B4=A6=EF=BC=8C=E9=80=80=E5=B7=AE?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=88=97=E8=A1=A8=E5=8A=9F=E8=83=BDv1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salary/entity/siaccount/bo/InsuranceAccountBO.java | 1 + .../entity/siaccount/dto/InsuranceAccountBatchListDTO.java | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/src/com/engine/salary/entity/siaccount/bo/InsuranceAccountBO.java b/src/com/engine/salary/entity/siaccount/bo/InsuranceAccountBO.java index 50424df48..99ab5ec9d 100644 --- a/src/com/engine/salary/entity/siaccount/bo/InsuranceAccountBO.java +++ b/src/com/engine/salary/entity/siaccount/bo/InsuranceAccountBO.java @@ -65,6 +65,7 @@ public class InsuranceAccountBO { .socialPay(SalaryEntityUtil.thousandthConvert(e.getSocialPay())) .paymentOrganization(e.getPaymentOrganization() != null ? MapperProxyFactory.getProxy(TaxAgentMapper.class).getById(e.getPaymentOrganization()).getName() : "") .paymentOrganizationId(e.getPaymentOrganization()) + .creator(e.getCreator()) .build() ).collect(Collectors.toList()); } diff --git a/src/com/engine/salary/entity/siaccount/dto/InsuranceAccountBatchListDTO.java b/src/com/engine/salary/entity/siaccount/dto/InsuranceAccountBatchListDTO.java index c41e2138c..23afba707 100644 --- a/src/com/engine/salary/entity/siaccount/dto/InsuranceAccountBatchListDTO.java +++ b/src/com/engine/salary/entity/siaccount/dto/InsuranceAccountBatchListDTO.java @@ -94,6 +94,11 @@ public class InsuranceAccountBatchListDTO { @TableTitle(title = "核算人", dataIndex = "accountant", key = "accountant") private String accountant; + /** + * 创建核算人id + */ + private Long creator; + /** * 最后操作时间 */ From 7be9424f73b8627012b09a3627cde540dc13697b Mon Sep 17 00:00:00 2001 From: sy Date: Wed, 16 Nov 2022 15:45:36 +0800 Subject: [PATCH 10/50] =?UTF-8?q?=E8=96=AA=E9=85=AC=E7=B3=BB=E7=BB=9F-?= =?UTF-8?q?=E7=A6=8F=E5=88=A9=E5=8F=B0=E8=B4=A6=EF=BC=8C=E9=80=80=E5=B7=AE?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=88=97=E8=A1=A8=E5=8A=9F=E8=83=BDv2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../param/InsuranceAccountDetailParam.java | 6 ++ .../InsuranceAccountDetailMapper.xml | 22 +++++++ .../salary/service/ColumnBuildService.java | 4 +- .../salary/service/SIAccountService.java | 7 +++ .../service/impl/ColumnBuildServiceImpl.java | 7 ++- .../service/impl/SIAccountServiceImpl.java | 60 ++++++++++++++++++- 6 files changed, 100 insertions(+), 6 deletions(-) diff --git a/src/com/engine/salary/entity/siaccount/param/InsuranceAccountDetailParam.java b/src/com/engine/salary/entity/siaccount/param/InsuranceAccountDetailParam.java index 8d2dd900a..747f6455b 100644 --- a/src/com/engine/salary/entity/siaccount/param/InsuranceAccountDetailParam.java +++ b/src/com/engine/salary/entity/siaccount/param/InsuranceAccountDetailParam.java @@ -34,4 +34,10 @@ public class InsuranceAccountDetailParam extends BaseQueryParam { * 退差月份 */ private List recessionMonthList; + + private List taxAgents; + /** + * 核算创建人 + */ + private Long creator; } diff --git a/src/com/engine/salary/mapper/siaccount/InsuranceAccountDetailMapper.xml b/src/com/engine/salary/mapper/siaccount/InsuranceAccountDetailMapper.xml index 80f21c5ef..029e8486c 100644 --- a/src/com/engine/salary/mapper/siaccount/InsuranceAccountDetailMapper.xml +++ b/src/com/engine/salary/mapper/siaccount/InsuranceAccountDetailMapper.xml @@ -160,6 +160,10 @@ AND t.payment_organization = #{param.paymentOrganization} + + AND + t.creator = #{param.creator} + @@ -181,6 +185,12 @@ #{recessionMonth} + + AND t.payment_organization IN + + #{taxAgent} + + @@ -201,6 +211,12 @@ #{recessionMonth} + + AND t.payment_organization IN + + #{taxAgent} + + @@ -221,6 +237,12 @@ #{recessionMonth} + + AND t.payment_organization IN + + #{taxAgent} + + diff --git a/src/com/engine/salary/service/ColumnBuildService.java b/src/com/engine/salary/service/ColumnBuildService.java index 87836b44b..9ec02d2e6 100644 --- a/src/com/engine/salary/service/ColumnBuildService.java +++ b/src/com/engine/salary/service/ColumnBuildService.java @@ -18,10 +18,10 @@ public interface ColumnBuildService { * * @param pos pos * @param tenantKey 租户key - * @param flag + * @param paymentStatus 缴纳状态 * @return */ - List buildCommonColumnsWithStyle(List pos, Long employeeId, String tenantKey, boolean flag); + List buildCommonColumnsWithStyle(List pos, Long employeeId, String tenantKey, Integer paymentStatus); List buildCommonColumns(List pos); diff --git a/src/com/engine/salary/service/SIAccountService.java b/src/com/engine/salary/service/SIAccountService.java index e7e61f8e6..ddebc102a 100644 --- a/src/com/engine/salary/service/SIAccountService.java +++ b/src/com/engine/salary/service/SIAccountService.java @@ -49,6 +49,13 @@ public interface SIAccountService { */ Map listSupplementaryPage(InsuranceAccountDetailParam insuranceAccountDetailParam); + /** + * 获取退差列表 + * @param insuranceAccountDetailParam + * @return + */ + Map listRecessionPage(InsuranceAccountDetailParam insuranceAccountDetailParam); + /** * 根据姓名获取补缴缴纳列表 * @param insuranceAccountDetailParam diff --git a/src/com/engine/salary/service/impl/ColumnBuildServiceImpl.java b/src/com/engine/salary/service/impl/ColumnBuildServiceImpl.java index b66f347bc..93eedcbd7 100644 --- a/src/com/engine/salary/service/impl/ColumnBuildServiceImpl.java +++ b/src/com/engine/salary/service/impl/ColumnBuildServiceImpl.java @@ -12,6 +12,7 @@ import com.engine.salary.entity.siarchives.po.InsuranceArchivesFundSchemePO; import com.engine.salary.entity.siarchives.po.InsuranceArchivesOtherSchemePO; import com.engine.salary.entity.siarchives.po.InsuranceArchivesSocialSchemePO; import com.engine.salary.entity.sicategory.po.ICategoryPO; +import com.engine.salary.enums.siaccount.PaymentStatusEnum; import com.engine.salary.enums.sicategory.WelfareTypeEnum; import com.engine.salary.mapper.sicategory.ICategoryMapper; import com.engine.salary.service.ColumnBuildService; @@ -30,7 +31,7 @@ import java.util.stream.Collectors; **/ public class ColumnBuildServiceImpl extends Service implements ColumnBuildService { @Override - public List buildCommonColumnsWithStyle(List pos, Long employeeId, String tenantKey, boolean flag) { + public List buildCommonColumnsWithStyle(List pos, Long employeeId, String tenantKey, Integer paymentStatus) { List list = new ArrayList<>(); Map categoryIdNameMap = MapperProxyFactory.getProxy(ICategoryMapper.class).listAll().stream().collect(Collectors.toMap(ICategoryPO -> String.valueOf(ICategoryPO.getId()), ICategoryPO::getInsuranceName)); Map> columns = buildPaymentTitle(pos, categoryIdNameMap, employeeId, tenantKey); @@ -49,8 +50,10 @@ public class ColumnBuildServiceImpl extends Service implements ColumnBuildServic list.add(new WeaTableColumn("150px",SalaryI18nUtil.getI18nLabel( 86186, "手机号"), "mobile")); list.add(new WeaTableColumn("150px",SalaryI18nUtil.getI18nLabel( 86187, "员工状态"), "employeeStatus")); list.add(new WeaTableColumn("150px",SalaryI18nUtil.getI18nLabel( 100377, "数据来源"), "sourceFrom")); - if (flag) { + if (paymentStatus.equals(PaymentStatusEnum.REPAIR.getValue())) { list.add(new WeaTableColumn("150px",SalaryI18nUtil.getI18nLabel( 100379, "补缴月份"), "supplementaryMonth")); + } else if (paymentStatus.equals(PaymentStatusEnum.RECESSION.getValue())) { + list.add(new WeaTableColumn("150px",SalaryI18nUtil.getI18nLabel( 100379, "退差月份"), "supplementaryMonth")); } list.add(new WeaTableColumn("150px",SalaryI18nUtil.getI18nLabel( 91325, "个税扣缴义务人"), "socialPayOrg")); list.add(new WeaTableColumn("150px",SalaryI18nUtil.getI18nLabel( 91324, "社保账号"), "socialAccount")); diff --git a/src/com/engine/salary/service/impl/SIAccountServiceImpl.java b/src/com/engine/salary/service/impl/SIAccountServiceImpl.java index bc2a18a49..d4714367d 100644 --- a/src/com/engine/salary/service/impl/SIAccountServiceImpl.java +++ b/src/com/engine/salary/service/impl/SIAccountServiceImpl.java @@ -259,7 +259,7 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { //动态列组装 - List weaTableColumn = getColumnBuildService(user).buildCommonColumnsWithStyle(insuranceAccountDetailPOS, employeeId, SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY, false); + List weaTableColumn = getColumnBuildService(user).buildCommonColumnsWithStyle(insuranceAccountDetailPOS, employeeId, SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY, queryParam.getPaymentStatus()); WeaTable table = new WeaTable(); table.setPageUID(UUID.randomUUID().toString()); @@ -322,7 +322,7 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { //动态列组装 - List weaTableColumn = getColumnBuildService(user).buildCommonColumnsWithStyle(insuranceAccountDetailPOS, employeeId, SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY, true); + List weaTableColumn = getColumnBuildService(user).buildCommonColumnsWithStyle(insuranceAccountDetailPOS, employeeId, SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY, queryParam.getPaymentStatus()); SalaryWeaTable table = new SalaryWeaTable<>(user, InsuranceAccountDetailPO.class); table.setColumns(weaTableColumn); @@ -349,6 +349,62 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { return listSupplementaryPage(queryParam); } + @Override + public Map listRecessionPage(InsuranceAccountDetailParam queryParam) { + Long employeeId = (long) user.getUID(); + Map datas = new HashMap<>(); + + // 分权逻辑 + Boolean needAuth = getTaxAgentService(user).isNeedAuth((long) user.getUID()); + if (needAuth) { + Collection taxAgentPOS = getTaxAgentService(user).listAllTaxAgents((long) user.getUID()); + List taxAgents = taxAgentPOS.stream().map(TaxAgentPO::getId).collect(Collectors.toList()); + if (CollectionUtils.isEmpty(taxAgents)) { + //防止普通用户查询 + queryParam.setTaxAgents(Collections.singletonList(-1L)); + } else { + queryParam.setTaxAgents(taxAgents); + } + } + + //补缴缴纳列表 + queryParam.setPaymentStatus(PaymentStatusEnum.RECESSION.getValue()); + + //排序配置 + OrderRuleVO orderRule = getSalarySysConfService(user).orderRule(); + queryParam.setOrderRule(orderRule); + + SalaryPageUtil.start(queryParam.getCurrent(), queryParam.getPageSize()); + List list = getInsuranceAccountDetailMapper().list(queryParam); + PageInfo pageInfo = new PageInfo<>(list, InsuranceAccountDetailPO.class); + List insuranceAccountDetailPOS = pageInfo.getList(); + InsuranceAccountDetailPOEncrypt.decryptInsuranceAccountDetailPOList(insuranceAccountDetailPOS); + //数据组装 + List> records = getService(user).buildCommonRecords(insuranceAccountDetailPOS, employeeId); + PageInfo> pageInfos = new PageInfo<>(records); + pageInfos.setTotal(pageInfo.getTotal()); + pageInfos.setPageNum(queryParam.getCurrent()); + pageInfos.setPageSize(queryParam.getPageSize()); + + + //动态列组装 + List weaTableColumn = getColumnBuildService(user).buildCommonColumnsWithStyle(insuranceAccountDetailPOS, employeeId, SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY, queryParam.getPaymentStatus()); + + SalaryWeaTable table = new SalaryWeaTable<>(user, InsuranceAccountDetailPO.class); + table.setColumns(weaTableColumn); + List columns = weaTableColumn.stream().map(v -> new Column(v.getText(), v.getColumn(), v.getColumn())).collect(Collectors.toList()); + pageInfos.setColumns(columns); + + + WeaResultMsg result = new WeaResultMsg(false); + result.putAll(table.makeDataResult()); + result.success(); + + datas.put("pageInfo", pageInfos); + //datas.put("dataKey",result.getResultMap()); + return datas; + } + @Override public Map getForm(Map params) { Map apidatas = new HashMap<>(); From 002de586d5e9a51b559333b3c4c9799544b7a782 Mon Sep 17 00:00:00 2001 From: sy Date: Wed, 16 Nov 2022 16:14:21 +0800 Subject: [PATCH 11/50] =?UTF-8?q?=E8=96=AA=E9=85=AC=E7=B3=BB=E7=BB=9F-?= =?UTF-8?q?=E7=A6=8F=E5=88=A9=E5=8F=B0=E8=B4=A6=EF=BC=8C=E9=80=80=E5=B7=AE?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=88=97=E8=A1=A8=E5=8A=9F=E8=83=BDv3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../engine/salary/web/SIAccountController.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/com/engine/salary/web/SIAccountController.java b/src/com/engine/salary/web/SIAccountController.java index e00d5efec..8a06a0256 100644 --- a/src/com/engine/salary/web/SIAccountController.java +++ b/src/com/engine/salary/web/SIAccountController.java @@ -637,5 +637,22 @@ public class SIAccountController { User user = HrmUserVarify.getUser(request, response); return new ResponseResult, String>(user).run(getSIAccountWrapper(user)::delRecession, ids); } + + /** + * 获取退差列表 + * + * @param request + * @param response + * @param insuranceAccountDetailParam + * @return + */ + @POST + @Path("/detail/recession/list") + @Produces(MediaType.APPLICATION_JSON) + public String listRecessionPage(@Context HttpServletRequest request, @Context HttpServletResponse response, + @RequestBody InsuranceAccountDetailParam insuranceAccountDetailParam) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult>(user).run(getService(user)::listRecessionPage, insuranceAccountDetailParam); + } // **********************************退差 end*********************************/ } From ad0b89b91a3e4b6342fdd26517a8949ffaef6f2c Mon Sep 17 00:00:00 2001 From: sy Date: Wed, 16 Nov 2022 17:02:54 +0800 Subject: [PATCH 12/50] =?UTF-8?q?=E8=96=AA=E9=85=AC=E7=B3=BB=E7=BB=9F-?= =?UTF-8?q?=E7=A6=8F=E5=88=A9=E5=8F=B0=E8=B4=A6=EF=BC=8C=E9=80=80=E5=B7=AE?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=8D=95=E6=9D=A1=E6=9F=A5=E7=9C=8Bv1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/SIAccountServiceImpl.java | 107 ++++++++++++++++++ 1 file changed, 107 insertions(+) diff --git a/src/com/engine/salary/service/impl/SIAccountServiceImpl.java b/src/com/engine/salary/service/impl/SIAccountServiceImpl.java index d4714367d..18ccbca35 100644 --- a/src/com/engine/salary/service/impl/SIAccountServiceImpl.java +++ b/src/com/engine/salary/service/impl/SIAccountServiceImpl.java @@ -2140,5 +2140,112 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { return excelInsuranceDetailPO; } +// @Override +// public InsuranceSupplementListFoldDTO getPaymentById(Long id) { +// InsuranceSupplementListFoldDTO result = new InsuranceSupplementListFoldDTO(); +// WeaTable weaTable = new WeaTable<>(); +// EditableTable editableTable = new EditableTable<>(weaTable); +// editableTable.setColumns(InsuranceArchivesBO.buildCompensationEditTableColumns(employeeId, tenantKey)); +// editableTable.setComProps(InsuranceArchivesBO.buildSupplementEditTableItemMap()); +// editableTable.setShowCheck(false); +// editableTable.setEllipsis(true); +// result.setEditableTable(editableTable); +// InsuranceAccountDetailPO insuranceAccountDetailPO = new LambdaQueryChainWrapper<>(siAccountDetailMapper) +// .eq(InsuranceAccountDetailPO::getId, id) +// .one(); +// SalaryAssert.notNull(insuranceAccountDetailPO, SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 139811, "人员不存在")); +// insuranceAccountDetailPO = (InsuranceAccountDetailPO) dataSecurityService.decrypt(insuranceAccountDetailPO, InsuranceAccountDetailPO.class, tenantKey); +// Map> group = new HashMap<>(); +// //组装社保数据 +// Set socialInsuranceIds = new HashSet<>(); +// String socialPerJson = insuranceAccountDetailPO.getSocialPerJson(); +// HashMap socialPerMap = new HashMap<>(); +// if (StringUtils.isNotBlank(socialPerJson)) { +// socialPerMap = JSON.parseObject(socialPerJson, new HashMap().getClass()); +// socialPerMap.forEach((k, v) -> socialInsuranceIds.add(k)); +// } +// String socialComJson = insuranceAccountDetailPO.getSocialComJson(); +// HashMap socialComMap = new HashMap<>(); +// if (StringUtils.isNotBlank(socialComJson)) { +// socialComMap = JSON.parseObject(socialComJson, new HashMap().getClass()); +// socialComMap.forEach((k, v) -> socialInsuranceIds.add(k)); +// } +// List socialSupplementList = new ArrayList<>(); +// for (String insuranceId : socialInsuranceIds) { +// InsuranceSupplementListDTO dto = new InsuranceSupplementListDTO(); +// dto.setItem(siCategoryService.getCategoryNameById(Long.valueOf(insuranceId), tenantKey)); +// dto.setPaymentPer(socialPerMap.get(insuranceId)); +// dto.setPaymentCom(socialComMap.get(insuranceId)); +// dto.setId(insuranceId); +// socialSupplementList.add(dto); +// } +// group.put("social", socialSupplementList); +// +// //组装公积金数据 +// Set fundInsuranceIds = new HashSet<>(); +// String fundPerJson = insuranceAccountDetailPO.getFundPerJson(); +// HashMap fundperMap = new HashMap<>(); +// if (StringUtils.isNotBlank(fundPerJson)) { +// fundperMap = JSON.parseObject(fundPerJson, new HashMap().getClass()); +// fundperMap.forEach((k, v) -> fundInsuranceIds.add(k)); +// } +// String fundComJson = insuranceAccountDetailPO.getFundComJson(); +// HashMap fundComMap = new HashMap<>(); +// if (StringUtils.isNotBlank(fundComJson)) { +// fundComMap = JSON.parseObject(fundComJson, new HashMap().getClass()); +// fundComMap.forEach((k, v) -> fundInsuranceIds.add(k)); +// } +// List fundSupplementList = new ArrayList<>(); +// for (String insuranceId : fundInsuranceIds) { +// InsuranceSupplementListDTO dto = new InsuranceSupplementListDTO(); +// dto.setItem(siCategoryService.getCategoryNameById(Long.valueOf(insuranceId), tenantKey)); +// dto.setPaymentPer(fundperMap.get(insuranceId)); +// dto.setPaymentCom(fundComMap.get(insuranceId)); +// dto.setId(insuranceId); +// fundSupplementList.add(dto); +// } +// group.put("fund", fundSupplementList); +// +// //组装其他福利数据 +// Set otherInsuranceIds = new HashSet<>(); +// String otherPerJson = insuranceAccountDetailPO.getOtherPerJson(); +// HashMap otherPerMap = new HashMap<>(); +// if (StringUtils.isNotBlank(otherPerJson)) { +// otherPerMap = JSON.parseObject(otherPerJson, new HashMap().getClass()); +// otherPerMap.forEach((k, v) -> otherInsuranceIds.add(k)); +// } +// String otherComJson = insuranceAccountDetailPO.getOtherComJson(); +// HashMap otherComMap = new HashMap<>(); +// if (StringUtils.isNotBlank(otherComJson)) { +// otherComMap = JSON.parseObject(otherComJson, new HashMap().getClass()); +// otherComMap.forEach((k, v) -> otherInsuranceIds.add(k)); +// } +// List otherSupplementList = new ArrayList<>(); +// for (String insuranceId : otherInsuranceIds) { +// InsuranceSupplementListDTO dto = new InsuranceSupplementListDTO(); +// dto.setItem(siCategoryService.getCategoryNameById(Long.valueOf(insuranceId), tenantKey)); +// dto.setPaymentPer(otherPerMap.get(insuranceId)); +// dto.setPaymentCom(otherComMap.get(insuranceId)); +// dto.setId(insuranceId); +// otherSupplementList.add(dto); +// } +// group.put("other", otherSupplementList); +// Map> items = new HashMap<>(); +// Map socialItem = new HashMap<>(); +// socialItem.put("index", "0"); +// socialItem.put("groupName", SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 86568, "社保")); +// items.put("social", socialItem); +// Map fundItem = new HashMap<>(); +// fundItem.put("index", "1"); +// fundItem.put("groupName", SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 86569, "公积金")); +// items.put("fund", fundItem); +// Map otherItem = new HashMap<>(); +// otherItem.put("index", "2"); +// otherItem.put("groupName", SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 93112, "企业年金及其他福利")); +// items.put("other", otherItem); +// result.setItems(items); +// result.setGroup(group); +// return result; +// } } From e333f2acc2db55fae1c800078d058d9fc881e58f Mon Sep 17 00:00:00 2001 From: sy Date: Thu, 17 Nov 2022 09:36:00 +0800 Subject: [PATCH 13/50] =?UTF-8?q?=E8=96=AA=E9=85=AC=E7=B3=BB=E7=BB=9F-?= =?UTF-8?q?=E7=A6=8F=E5=88=A9=E5=8F=B0=E8=B4=A6=EF=BC=8C=E7=A6=8F=E5=88=A9?= =?UTF-8?q?=E6=A1=A3=E6=A1=88=E7=A6=8F=E5=88=A9=E5=9F=BA=E6=95=B0=E5=AD=97?= =?UTF-8?q?=E6=AE=B5=E6=98=BE=E7=A4=BA=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/engine/salary/biz/SIArchivesBiz.java | 47 ++++++++++++-------- 1 file changed, 29 insertions(+), 18 deletions(-) diff --git a/src/com/engine/salary/biz/SIArchivesBiz.java b/src/com/engine/salary/biz/SIArchivesBiz.java index e51c8d33e..dc4529180 100644 --- a/src/com/engine/salary/biz/SIArchivesBiz.java +++ b/src/com/engine/salary/biz/SIArchivesBiz.java @@ -1069,36 +1069,47 @@ public class SIArchivesBiz { Set socialSet = new HashSet<>(); Set fundSet = new HashSet<>(); Set otherSet = new HashSet<>(); + insuranceArchivesEmployeePOS.forEach(item -> { List socialList = socialSchemeMapper.getSocialByEmployeeId(Collections.singletonList(item.getEmployeeId())); InsuranceArchivesSocialSchemePOEncrypt.decryptList(socialList); - InsuranceArchivesSocialSchemePO socialItem = socialList.size() != 0 ? socialList.get(0) : null; +// InsuranceArchivesSocialSchemePO socialItem = socialList.size() != 0 ? socialList.get(0) : null; List fundList = fundSchemeMapper.getFundByEmployeeId(Collections.singletonList(item.getEmployeeId())); InsuranceArchivesFundSchemePOEncrypt.decryptList(fundList); - InsuranceArchivesFundSchemePO fundItem = fundList.size() != 0 ? fundList.get(0) : null; +// InsuranceArchivesFundSchemePO fundItem = fundList.size() != 0 ? fundList.get(0) : null; List otherList = otherSchemeMapper.getOtherByEmployeeId(Collections.singletonList(item.getEmployeeId())); InsuranceArchivesOtherSchemePOEncrypt.decryptList(otherList); - InsuranceArchivesOtherSchemePO otherItem = otherList.size() != 0 ? otherList.get(0) : null; - if (socialItem != null) { - Map socialJson = JSON.parseObject(socialItem.getSocialPaymentBaseString(), new TypeReference>() { - }); - if (socialJson != null) { - socialJson.forEach((k, v) -> socialSet.add(k)); +// InsuranceArchivesOtherSchemePO otherItem = otherList.size() != 0 ? otherList.get(0) : null; + if (socialList.size() > 0) { + for (InsuranceArchivesSocialSchemePO socialSchemePO : socialList) { + + Map socialJson = JSON.parseObject(socialSchemePO.getSocialPaymentBaseString(), new TypeReference>() { + }); + if (socialJson != null) { + socialJson.forEach((k, v) -> socialSet.add(k)); + } } + } - if (fundItem != null) { - Map fundJson = JSON.parseObject(fundItem.getFundPaymentBaseString(), new TypeReference>() { - }); - if (fundJson != null) { - fundJson.forEach((k, v) -> fundSet.add(k)); + if (fundList.size() > 0) { + for (InsuranceArchivesFundSchemePO fundSchemePO : fundList) { + Map fundJson = JSON.parseObject(fundSchemePO.getFundPaymentBaseString(), new TypeReference>() { + }); + if (fundJson != null) { + fundJson.forEach((k, v) -> fundSet.add(k)); + } } + } - if (otherItem != null) { - Map otherJson = JSON.parseObject(otherItem.getOtherPaymentBaseString(), new TypeReference>() { - }); - if (otherJson != null) { - otherJson.forEach((k, v) -> otherSet.add(k)); + if (otherList.size() > 0) { + for (InsuranceArchivesOtherSchemePO otherSchemePO : otherList) { + Map otherJson = JSON.parseObject(otherSchemePO.getOtherPaymentBaseString(), new TypeReference>() { + }); + if (otherJson != null) { + otherJson.forEach((k, v) -> otherSet.add(k)); + } } + } }); Map socialMap = new HashMap<>(); From 4073907a2c4153def6b599e7583aa0c734cdba44 Mon Sep 17 00:00:00 2001 From: sy Date: Thu, 17 Nov 2022 10:09:01 +0800 Subject: [PATCH 14/50] =?UTF-8?q?=E8=96=AA=E9=85=AC=E7=B3=BB=E7=BB=9F-?= =?UTF-8?q?=E7=A6=8F=E5=88=A9=E5=8F=B0=E8=B4=A6=EF=BC=8C=E7=A6=8F=E5=88=A9?= =?UTF-8?q?=E5=8F=B0=E8=B4=A6=E5=AF=BC=E5=85=A5=E5=90=8E=E5=88=B7=E6=96=B0?= =?UTF-8?q?=E7=BB=9F=E8=AE=A1=E6=95=B0=E6=8D=AEv1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../engine/salary/service/impl/SIAccountServiceImpl.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/com/engine/salary/service/impl/SIAccountServiceImpl.java b/src/com/engine/salary/service/impl/SIAccountServiceImpl.java index bc2a18a49..b47fb424f 100644 --- a/src/com/engine/salary/service/impl/SIAccountServiceImpl.java +++ b/src/com/engine/salary/service/impl/SIAccountServiceImpl.java @@ -1267,6 +1267,14 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { getSiAccountBiz(user).updateByEmployeeIdAndBillMonth(po); } + //刷新hrsa_bill_batch中数据统计信息 + if (updateInsuranceAccountDetailList.size() > 0) { + InsuranceAccountDetailParam refreshParam =new InsuranceAccountDetailParam(); + refreshParam.setBillMonth(updateInsuranceAccountDetailList.get(0).getBillMonth()); + refreshParam.setPaymentOrganization(updateInsuranceAccountDetailList.get(0).getPaymentOrganization().toString()); + PageInfo pageInfos = overView(refreshParam); + } + apidatas.put("successCount", successCount); apidatas.put("errorCount", failCount); apidatas.put("errorData", excelComments); From 57300125cda1d5e3772f39aa38fdb6b55bf2f5ce Mon Sep 17 00:00:00 2001 From: sy Date: Thu, 17 Nov 2022 13:39:50 +0800 Subject: [PATCH 15/50] =?UTF-8?q?=E8=96=AA=E9=85=AC=E7=B3=BB=E7=BB=9F-?= =?UTF-8?q?=E7=A6=8F=E5=88=A9=E5=8F=B0=E8=B4=A6=EF=BC=8C=E6=AD=A3=E5=B8=B8?= =?UTF-8?q?=E7=BC=B4=E7=BA=B3/=E8=A1=A5=E7=BC=B4=E5=AF=BC=E5=85=A5?= =?UTF-8?q?=E6=97=B6=E5=80=99=EF=BC=8C=E5=88=B7=E6=96=B0=E5=8F=B0=E8=B4=A6?= =?UTF-8?q?=E7=BB=9F=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../InsuranceAccountDetailMapper.xml | 4 +- .../service/impl/SIAccountServiceImpl.java | 49 ++++++++++++++++--- 2 files changed, 43 insertions(+), 10 deletions(-) diff --git a/src/com/engine/salary/mapper/siaccount/InsuranceAccountDetailMapper.xml b/src/com/engine/salary/mapper/siaccount/InsuranceAccountDetailMapper.xml index b3ec88e72..ee574bd49 100644 --- a/src/com/engine/salary/mapper/siaccount/InsuranceAccountDetailMapper.xml +++ b/src/com/engine/salary/mapper/siaccount/InsuranceAccountDetailMapper.xml @@ -265,7 +265,7 @@ t.fund_per_json,t.fund_com_json,t.other_per_json, t.other_com_json,t.social_per_sum,t.social_com_sum, t.fund_per_sum,t.fund_com_sum,t.other_per_sum, - t.other_com_sum,t.per_sum,t.com_sum + t.other_com_sum,t.per_sum,t.com_sum,t.payment_organization FROM hrsa_bill_detail t WHERE t.delete_type = 0 @@ -280,7 +280,7 @@ t.fund_per_json,t.fund_com_json,t.other_per_json, t.other_com_json,t.social_per_sum,t.social_com_sum, t.fund_per_sum,t.fund_com_sum,t.other_per_sum, - t.other_com_sum,t.per_sum,t.com_sum + t.other_com_sum,t.per_sum,t.com_sum,t.payment_organization FROM hrsa_bill_detail t WHERE t.delete_type = 0 diff --git a/src/com/engine/salary/service/impl/SIAccountServiceImpl.java b/src/com/engine/salary/service/impl/SIAccountServiceImpl.java index b47fb424f..87094093e 100644 --- a/src/com/engine/salary/service/impl/SIAccountServiceImpl.java +++ b/src/com/engine/salary/service/impl/SIAccountServiceImpl.java @@ -74,6 +74,8 @@ import weaver.hrm.User; import java.io.InputStream; import java.math.BigDecimal; import java.util.*; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; import java.util.regex.Matcher; import java.util.regex.Pattern; import java.util.stream.Collectors; @@ -1128,10 +1130,10 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { // 处理数值 List> data = ExcelParseHelper.parse2Map(sheet, 1); if (CollectionUtils.isEmpty(headers)) { - throw new RuntimeException("表头为空"); + throw new SalaryRunTimeException("表头为空"); } if (CollectionUtils.isEmpty(data)) { - throw new RuntimeException("无数据"); + throw new SalaryRunTimeException("无数据"); } //存储待更新的InsuranceAccountDetailPO数据 List updateInsuranceAccountDetailList = new ArrayList<>(); @@ -1269,10 +1271,41 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { //刷新hrsa_bill_batch中数据统计信息 if (updateInsuranceAccountDetailList.size() > 0) { - InsuranceAccountDetailParam refreshParam =new InsuranceAccountDetailParam(); - refreshParam.setBillMonth(updateInsuranceAccountDetailList.get(0).getBillMonth()); - refreshParam.setPaymentOrganization(updateInsuranceAccountDetailList.get(0).getPaymentOrganization().toString()); - PageInfo pageInfos = overView(refreshParam); + ExecutorService taskExecutor = Executors.newCachedThreadPool(); + taskExecutor.execute(() -> { + Long paymentOrganization = updateInsuranceAccountDetailList.get(0).getPaymentOrganization(); + String billMonth = updateInsuranceAccountDetailList.get(0).getBillMonth(); + if (paymentOrganization != null && billMonth != null) { + InsuranceAccountDetailParam refreshParam =new InsuranceAccountDetailParam(); + refreshParam.setBillMonth(billMonth); + refreshParam.setPaymentOrganization(paymentOrganization.toString()); + PageInfo pageInfos = overView(refreshParam); + TaxAgentPO taxAgentPo = getTaxAgentMapper().getById(paymentOrganization); + if (taxAgentPo != null) { + List viewListDTOList = pageInfos.getList(); + viewListDTOList.stream().filter(f -> f.getPayOrg().equals(taxAgentPo.getName())).collect(Collectors.toList()); + InsuranceAccountBatchPO batchPO = getInsuranceAccountBatchMapper().getByBillMonth(billMonth, paymentOrganization); + batchPO = SiAccountEncrypt.decryptInsuranceAccountBatch(batchPO); + //更新 + if (viewListDTOList.size() > 0 && batchPO != null) { + InsuranceAccountViewListDTO viewListDTO = viewListDTOList.get(0); + batchPO.setSocialNum(viewListDTO.getSocialNum()); + batchPO.setFundNum(viewListDTO.getFundNum()); + batchPO.setOtherNum(viewListDTO.getOtherNum()); + + batchPO.setSocialPay(viewListDTO.getSocialPaySum()); + batchPO.setFundPay(viewListDTO.getFundPaySum()); + batchPO.setOtherPay(viewListDTO.getOtherPaySum()); + + batchPO.setUpdateTime(new Date()); + batchPO = SiAccountEncrypt.encryptInsuranceAccountBatch(batchPO); + getInsuranceAccountBatchMapper().updateById(batchPO); + } + } + + } + }); + } apidatas.put("successCount", successCount); @@ -1786,10 +1819,10 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { // 处理数值 List> data = ExcelParseHelper.parse2Map(sheet, 1); if (CollectionUtils.isEmpty(headers)) { - throw new RuntimeException("表头为空"); + throw new SalaryRunTimeException("表头为空"); } if (CollectionUtils.isEmpty(data)) { - throw new RuntimeException("无数据"); + throw new SalaryRunTimeException("无数据"); } String billMonth = importParam.getBillMonth(); From fee892e17b23fdcd11300be6eb81a6c0cbbf8bd1 Mon Sep 17 00:00:00 2001 From: sy Date: Thu, 17 Nov 2022 15:08:30 +0800 Subject: [PATCH 16/50] =?UTF-8?q?=E8=96=AA=E9=85=AC=E7=B3=BB=E7=BB=9F-?= =?UTF-8?q?=E7=A6=8F=E5=88=A9=E6=A1=A3=E6=A1=88=EF=BC=8C=E5=AF=BC=E5=85=A5?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=9C=A8=E8=AE=BE=E7=BD=AE=E7=A6=8F=E5=88=A9?= =?UTF-8?q?=E6=A1=A3=E6=A1=88=E6=97=B6=EF=BC=8C=E5=AF=B9=E5=85=B6=E4=B8=8B?= =?UTF-8?q?=E6=9C=AA=E8=AE=BE=E7=BD=AE=E7=A6=8F=E5=88=A9=E9=A1=B9=E6=95=B0?= =?UTF-8?q?=E5=80=BC=E7=9A=84=E5=AD=97=E6=AE=B5=E9=BB=98=E8=AE=A4=E4=B8=BA?= =?UTF-8?q?0=EF=BC=8C=E5=B9=B6=E5=8F=82=E4=B8=8E=E5=9F=BA=E6=95=B0?= =?UTF-8?q?=E4=B8=8A=E4=B8=8B=E9=99=90=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../engine/salary/service/impl/SISchemeServiceImpl.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/com/engine/salary/service/impl/SISchemeServiceImpl.java b/src/com/engine/salary/service/impl/SISchemeServiceImpl.java index 31799a577..f4ec1e33d 100644 --- a/src/com/engine/salary/service/impl/SISchemeServiceImpl.java +++ b/src/com/engine/salary/service/impl/SISchemeServiceImpl.java @@ -1073,7 +1073,8 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { continue; } if (findElement(singleAccount, welfareMap.get(insuranceId) + SalaryI18nUtil.getI18nLabel(100293, "申报基数")) != null) { - socialPaymentBase.put(String.valueOf(insuranceId), (String) findElement(singleAccount, welfareMap.get(insuranceId) + SalaryI18nUtil.getI18nLabel(100293, "申报基数")).get(welfareMap.get(insuranceId) + SalaryI18nUtil.getI18nLabel(100293, "申报基数"))); + String itemValue = (String) findElement(singleAccount, welfareMap.get(insuranceId) + SalaryI18nUtil.getI18nLabel(100293, "申报基数")).get(welfareMap.get(insuranceId) + SalaryI18nUtil.getI18nLabel(100293, "申报基数")); + socialPaymentBase.put(String.valueOf(insuranceId), StringUtils.isBlank(itemValue) ? "0" : itemValue); } } insuranceArchivesSocialSchemePO.setSocialPaymentBaseString(JSON.toJSONString(socialPaymentBase)); @@ -1124,7 +1125,8 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { continue; } if (findElement(singleAccount, welfareMap.get(insuranceId) + SalaryI18nUtil.getI18nLabel(100293, "申报基数")) != null) { - socialPaymentBase.put(String.valueOf(insuranceId), (String) findElement(singleAccount, welfareMap.get(insuranceId) + SalaryI18nUtil.getI18nLabel(100293, "申报基数")).get(welfareMap.get(insuranceId) + SalaryI18nUtil.getI18nLabel(100293, "申报基数"))); + String itemValue = (String) findElement(singleAccount, welfareMap.get(insuranceId) + SalaryI18nUtil.getI18nLabel(100293, "申报基数")).get(welfareMap.get(insuranceId) + SalaryI18nUtil.getI18nLabel(100293, "申报基数")); + socialPaymentBase.put(String.valueOf(insuranceId), StringUtils.isBlank(itemValue) ? "0" : itemValue); } } insuranceArchivesFundSchemePO.setFundPaymentBaseString(JSON.toJSONString(socialPaymentBase)); @@ -1171,7 +1173,8 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { continue; } if (findElement(singleAccount, welfareMap.get(insuranceId) + SalaryI18nUtil.getI18nLabel(100293, "申报基数")) != null) { - socialPaymentBase.put(String.valueOf(insuranceId), (String) findElement(singleAccount, welfareMap.get(insuranceId) + SalaryI18nUtil.getI18nLabel(100293, "申报基数")).get(welfareMap.get(insuranceId) + SalaryI18nUtil.getI18nLabel(100293, "申报基数"))); + String itemValue = (String) findElement(singleAccount, welfareMap.get(insuranceId) + SalaryI18nUtil.getI18nLabel(100293, "申报基数")).get(welfareMap.get(insuranceId) + SalaryI18nUtil.getI18nLabel(100293, "申报基数")); + socialPaymentBase.put(String.valueOf(insuranceId), StringUtils.isBlank(itemValue) ? "0" : itemValue); } } insuranceArchivesOtherSchemePO.setOtherPaymentBaseString(JSON.toJSONString(socialPaymentBase)); From e0175f3ae71656c02cb2a608f5064ba4c40e7288 Mon Sep 17 00:00:00 2001 From: sy Date: Thu, 17 Nov 2022 15:32:43 +0800 Subject: [PATCH 17/50] =?UTF-8?q?=E8=96=AA=E9=85=AC=E7=B3=BB=E7=BB=9F-?= =?UTF-8?q?=E7=A6=8F=E5=88=A9=E6=A1=A3=E6=A1=88=EF=BC=8C=E5=AF=BC=E5=85=A5?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E6=97=B6=EF=BC=8C=E8=8B=A5=E8=AE=BE=E7=BD=AE?= =?UTF-8?q?=E4=BA=86=E7=A6=8F=E5=88=A9=E6=96=B9=E6=A1=88=EF=BC=8C=E5=88=99?= =?UTF-8?q?=E8=AF=A5=E7=A6=8F=E5=88=A9=E7=B1=BB=E5=9E=8B=E7=9A=84=E8=B5=B7?= =?UTF-8?q?=E5=A7=8B=E7=BC=B4=E7=BA=B3=E6=9C=88=E5=BF=85=E5=A1=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/SISchemeServiceImpl.java | 21 ++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/src/com/engine/salary/service/impl/SISchemeServiceImpl.java b/src/com/engine/salary/service/impl/SISchemeServiceImpl.java index f4ec1e33d..9383316c6 100644 --- a/src/com/engine/salary/service/impl/SISchemeServiceImpl.java +++ b/src/com/engine/salary/service/impl/SISchemeServiceImpl.java @@ -936,7 +936,12 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { excelComments.add(errorMessageMap); isError = true; - } else { + } else if (StringUtils.isNotBlank((String) socialMap.get(SalaryI18nUtil.getI18nLabel(91323, "社保方案名称"))) && StringUtils.isBlank(socialStartMonth)) { + Map errorMessageMap = Maps.newHashMap(); + errorMessageMap.put("message", rowIndex + SalaryI18nUtil.getI18nLabel(100322, "社保方案已设置,但未设置社保起始缴纳时间!")); + excelComments.add(errorMessageMap); + isError = true; + }else { insuranceArchivesSocialSchemePO = buildSocialPO(employeeId, welfareMap, singleAccount, schemeNameIdMap, paymentNameIdMap, creator); } if (StringUtils.isNotBlank((String) fundMap.get(SalaryI18nUtil.getI18nLabel(91485, "公积金方案名称"))) && schemeNameIdMap.get((String) fundMap.get(SalaryI18nUtil.getI18nLabel(91485, "公积金方案名称"))) == null) { @@ -953,7 +958,12 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { excelComments.add(errorMessageMap); isError = true; - }else { + } else if (StringUtils.isNotBlank((String) fundMap.get(SalaryI18nUtil.getI18nLabel(91485, "公积金方案名称"))) && StringUtils.isBlank(fundStartMonth)) { + Map errorMessageMap = Maps.newHashMap(); + errorMessageMap.put("message", rowIndex + SalaryI18nUtil.getI18nLabel(100322, "公积金方案已设置,但未设置公积金起始缴纳时间!")); + excelComments.add(errorMessageMap); + isError = true; + } else { insuranceArchivesFundSchemePO = buildFundPO(employeeId, welfareMap, singleAccount, schemeNameIdMap, paymentNameIdMap, creator); } if (StringUtils.isNotBlank((String) otherMap.get(SalaryI18nUtil.getI18nLabel(91496, "其他福利方案名称"))) && schemeNameIdMap.get((String) otherMap.get(SalaryI18nUtil.getI18nLabel(91496, "其他福利方案名称"))) == null) { @@ -969,7 +979,12 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { errorMessageMap.put("message", rowIndex + SalaryI18nUtil.getI18nLabel(100322, "其他福利方案不属于其他福利类型")); excelComments.add(errorMessageMap); isError = true; - }else { + } else if (StringUtils.isNotBlank((String) otherMap.get(SalaryI18nUtil.getI18nLabel(91496, "其他福利方案名称"))) && StringUtils.isBlank(otherStartMonth)) { + Map errorMessageMap = Maps.newHashMap(); + errorMessageMap.put("message", rowIndex + SalaryI18nUtil.getI18nLabel(100322, "其他福利方案已设置,但未设置其他福利起始缴纳时间!")); + excelComments.add(errorMessageMap); + isError = true; + } else { insuranceArchivesOtherSchemePO = buildOtherPO(employeeId, welfareMap, singleAccount, schemeNameIdMap, paymentNameIdMap, creator); } /**************校验申报基数**************/ From 47406b67c237156e306158375c8967554d3105b7 Mon Sep 17 00:00:00 2001 From: sy Date: Thu, 17 Nov 2022 17:07:04 +0800 Subject: [PATCH 18/50] =?UTF-8?q?=E8=96=AA=E9=85=AC=E7=B3=BB=E7=BB=9F-?= =?UTF-8?q?=E7=A6=8F=E5=88=A9=E6=A1=A3=E6=A1=88=EF=BC=8C=E5=AF=BC=E5=85=A5?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E6=97=B6=EF=BC=8C=E5=AF=B9=E4=BA=8E=E6=97=B6?= =?UTF-8?q?=E9=97=B4=E5=AD=97=E7=AC=A6=E4=B8=B2=EF=BC=8C=E5=85=81=E8=AE=B8?= =?UTF-8?q?excel=E9=BB=98=E8=AE=A4=E6=A0=BC=E5=BC=8F=E8=AE=BE=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/SISchemeServiceImpl.java | 61 ++++++++++--------- 1 file changed, 31 insertions(+), 30 deletions(-) diff --git a/src/com/engine/salary/service/impl/SISchemeServiceImpl.java b/src/com/engine/salary/service/impl/SISchemeServiceImpl.java index 9383316c6..e8c454de5 100644 --- a/src/com/engine/salary/service/impl/SISchemeServiceImpl.java +++ b/src/com/engine/salary/service/impl/SISchemeServiceImpl.java @@ -68,6 +68,7 @@ import weaver.file.ImageFileManager; import weaver.hrm.User; import java.io.InputStream; +import java.text.SimpleDateFormat; import java.util.*; import java.util.function.Function; import java.util.stream.Collectors; @@ -858,67 +859,67 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { String socialStartMonth = (String) socialStartTimeMap.get(SalaryI18nUtil.getI18nLabel(91319, "社保起始缴纳月")); -// if (StringUtils.isNotBlank(socialStartMonth) && socialStartMonth.length() > 7) { -// socialStartMonth = socialStartMonth.substring(0, 7); -// } - if (StringUtils.isNotBlank(socialStartMonth) && (!SalaryDateUtil.checkYearMonth(socialStartMonth) || socialStartMonth.length() != 7)) { + if (StringUtils.isNotBlank(socialStartMonth) && socialStartMonth.length() > 7) { + socialStartMonth = socialStartMonth.substring(0, 7); + } + if (StringUtils.isNotBlank(socialStartMonth) && !SalaryDateUtil.checkYearMonth(socialStartMonth)) { Map errorMessageMap = Maps.newHashMap(); - errorMessageMap.put("message", rowIndex + SalaryI18nUtil.getI18nLabel(100315, "社保起始缴纳时间格式错误,正确格式为YYYY-MM")); + errorMessageMap.put("message", rowIndex + SalaryI18nUtil.getI18nLabel(100315, "社保起始缴纳时间格式错误,正确格式为YYYY-MM或者yyyy-MM-dd")); excelComments.add(errorMessageMap); isError = true; } String socialEndMonth = (String) socialEndTimeMap.get(SalaryI18nUtil.getI18nLabel(91320, "社保最后缴纳月")); -// if (StringUtils.isNotBlank(socialEndMonth) && socialEndMonth.length() > 7) { -// socialEndMonth = socialEndMonth.substring(0, 7); -// } - if (StringUtils.isNotBlank(socialEndMonth) && (!SalaryDateUtil.checkYearMonth(socialEndMonth) || socialEndMonth.length() != 7)) { + if (StringUtils.isNotBlank(socialEndMonth) && socialEndMonth.length() > 7) { + socialEndMonth = socialEndMonth.substring(0, 7); + } + if (StringUtils.isNotBlank(socialEndMonth) && !SalaryDateUtil.checkYearMonth(socialEndMonth)) { Map errorMessageMap = Maps.newHashMap(); - errorMessageMap.put("message", rowIndex + SalaryI18nUtil.getI18nLabel(100316, "社保最后缴纳时间格式错误,正确格式为YYYY-MM")); + errorMessageMap.put("message", rowIndex + SalaryI18nUtil.getI18nLabel(100316, "社保最后缴纳时间格式错误,正确格式为YYYY-MM或者yyyy-MM-dd")); excelComments.add(errorMessageMap); isError = true; } String fundStartMonth = (String) fundStartTimeMap.get(SalaryI18nUtil.getI18nLabel(91483, "公积金起始缴纳月")); -// if (StringUtils.isNotBlank(fundStartMonth) && fundStartMonth.length() > 7) { -// fundStartMonth = fundStartMonth.substring(0, 7); -// } - if (StringUtils.isNotBlank(fundStartMonth) && (!SalaryDateUtil.checkYearMonth(fundStartMonth) || fundStartMonth.length() != 7)) { + if (StringUtils.isNotBlank(fundStartMonth) && fundStartMonth.length() > 7) { + fundStartMonth = fundStartMonth.substring(0, 7); + } + if (StringUtils.isNotBlank(fundStartMonth) && !SalaryDateUtil.checkYearMonth(fundStartMonth)) { Map errorMessageMap = Maps.newHashMap(); - errorMessageMap.put("message", rowIndex + SalaryI18nUtil.getI18nLabel(100317, "公积金起始缴纳时间格式错误,正确格式为YYYY-MM")); + errorMessageMap.put("message", rowIndex + SalaryI18nUtil.getI18nLabel(100317, "公积金起始缴纳时间格式错误,正确格式为YYYY-MM或者yyyy-MM-dd")); excelComments.add(errorMessageMap); isError = true; } String fundEndMonth = (String) fundEndTimeMap.get(SalaryI18nUtil.getI18nLabel(91484, "公积金最后缴纳月")); -// if (StringUtils.isNotBlank(fundEndMonth) && fundEndMonth.length() > 7) { -// fundEndMonth = fundEndMonth.substring(0, 7); -// } - if (StringUtils.isNotBlank(fundEndMonth) && (!SalaryDateUtil.checkYearMonth(fundEndMonth) || fundEndMonth.length() != 7)) { + if (StringUtils.isNotBlank(fundEndMonth) && fundEndMonth.length() > 7) { + fundEndMonth = fundEndMonth.substring(0, 7); + } + if (StringUtils.isNotBlank(fundEndMonth) && !SalaryDateUtil.checkYearMonth(fundEndMonth)) { Map errorMessageMap = Maps.newHashMap(); - errorMessageMap.put("message", rowIndex + SalaryI18nUtil.getI18nLabel(100319, "公积金最后缴纳时间格式错误,正确格式为YYYY-MM")); + errorMessageMap.put("message", rowIndex + SalaryI18nUtil.getI18nLabel(100319, "公积金最后缴纳时间格式错误,正确格式为YYYY-MM或者yyyy-MM-dd")); excelComments.add(errorMessageMap); isError = true; } String otherStartMonth = (String) otherStartTimeMap.get(SalaryI18nUtil.getI18nLabel(91490, "其他福利起始缴纳月")); -// if (StringUtils.isNotBlank(otherStartMonth) && otherStartMonth.length() > 7) { -// otherStartMonth = otherStartMonth.substring(0, 7); -// } - if (StringUtils.isNotBlank(otherStartMonth) && (!SalaryDateUtil.checkYearMonth(otherStartMonth) || otherStartMonth.length() != 7)) { + if (StringUtils.isNotBlank(otherStartMonth) && otherStartMonth.length() > 7) { + otherStartMonth = otherStartMonth.substring(0, 7); + } + if (StringUtils.isNotBlank(otherStartMonth) && !SalaryDateUtil.checkYearMonth(otherStartMonth)) { Map errorMessageMap = Maps.newHashMap(); - errorMessageMap.put("message", rowIndex + SalaryI18nUtil.getI18nLabel(100320, "其他福利起始缴纳时间格式错误,正确格式为YYYY-MM")); + errorMessageMap.put("message", rowIndex + SalaryI18nUtil.getI18nLabel(100320, "其他福利起始缴纳时间格式错误,正确格式为YYYY-MM或者yyyy-MM-dd")); excelComments.add(errorMessageMap); isError = true; } String otherEndMonth = (String) otherEndTimeMap.get(SalaryI18nUtil.getI18nLabel(91494, "其他福利最后缴纳月")); -// if (StringUtils.isNotBlank(otherEndMonth) && otherEndMonth.length() > 7) { -// otherEndMonth = otherEndMonth.substring(0, 7); -// } - if (StringUtils.isNotBlank(otherEndMonth) && (!SalaryDateUtil.checkYearMonth(otherEndMonth) || otherEndMonth.length() != 7)) { + if (StringUtils.isNotBlank(otherEndMonth) && otherEndMonth.length() > 7) { + otherEndMonth = otherEndMonth.substring(0, 7); + } + if (StringUtils.isNotBlank(otherEndMonth) && !SalaryDateUtil.checkYearMonth(otherEndMonth)) { Map errorMessageMap = Maps.newHashMap(); - errorMessageMap.put("message", rowIndex + SalaryI18nUtil.getI18nLabel(100321, "其他福利最后缴纳时间格式错误,正确格式为YYYY-MM")); + errorMessageMap.put("message", rowIndex + SalaryI18nUtil.getI18nLabel(100321, "其他福利最后缴纳时间格式错误,正确格式为YYYY-MM或者yyyy-MM-dd")); excelComments.add(errorMessageMap); isError = true; } From 746ab58ed32ffff28268eaf4ff8ef4e452f2e1c8 Mon Sep 17 00:00:00 2001 From: sy Date: Fri, 18 Nov 2022 16:07:20 +0800 Subject: [PATCH 19/50] =?UTF-8?q?=E8=96=AA=E9=85=AC=E7=B3=BB=E7=BB=9F-?= =?UTF-8?q?=E7=A6=8F=E5=88=A9=E5=8F=B0=E8=B4=A6=EF=BC=8C=E9=80=80=E5=B7=AE?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=8D=95=E6=9D=A1=E6=9F=A5=E7=9C=8Bv2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../InsuranceAccountDetailPOEncrypt.java | 24 +++ .../InsuranceAccountDetailMapper.java | 5 + .../InsuranceAccountDetailMapper.xml | 10 ++ .../salary/service/SIAccountService.java | 5 + .../service/impl/SIAccountServiceImpl.java | 168 +++++++----------- .../salary/web/SIAccountController.java | 17 ++ 6 files changed, 122 insertions(+), 107 deletions(-) diff --git a/src/com/engine/salary/encrypt/siaccount/InsuranceAccountDetailPOEncrypt.java b/src/com/engine/salary/encrypt/siaccount/InsuranceAccountDetailPOEncrypt.java index bed2885a3..841140839 100644 --- a/src/com/engine/salary/encrypt/siaccount/InsuranceAccountDetailPOEncrypt.java +++ b/src/com/engine/salary/encrypt/siaccount/InsuranceAccountDetailPOEncrypt.java @@ -107,5 +107,29 @@ public class InsuranceAccountDetailPOEncrypt { return item; } + public static InsuranceAccountDetailPO encryptItem(InsuranceAccountDetailPO item) { + if(item == null) { + return item; + } + item.setSocialPaymentBaseString(AESEncryptUtil.encrypt(item.getSocialPaymentBaseString())); + item.setFundPaymentBaseString(AESEncryptUtil.encrypt(item.getFundPaymentBaseString())); + item.setOtherPaymentBaseString(AESEncryptUtil.encrypt(item.getOtherPaymentBaseString())); + item.setSocialPerJson(AESEncryptUtil.encrypt(item.getSocialPerJson())); + item.setSocialPerSum(AESEncryptUtil.encrypt(item.getSocialPerSum())); + item.setFundPerJson(AESEncryptUtil.encrypt(item.getFundPerJson())); + item.setFundPerSum(AESEncryptUtil.encrypt(item.getFundPerSum())); + item.setOtherPerJson(AESEncryptUtil.encrypt(item.getOtherPerJson())); + item.setOtherPerSum(AESEncryptUtil.encrypt(item.getOtherPerSum())); + item.setPerSum(AESEncryptUtil.encrypt(item.getPerSum())); + item.setSocialComJson(AESEncryptUtil.encrypt(item.getSocialComJson())); + item.setSocialComSum(AESEncryptUtil.encrypt(item.getSocialComSum())); + item.setComSum(AESEncryptUtil.encrypt(item.getComSum())); + item.setSocialSum(AESEncryptUtil.encrypt(item.getSocialSum())); + item.setFundSum(AESEncryptUtil.encrypt(item.getFundSum())); + item.setOtherSum(AESEncryptUtil.encrypt(item.getOtherSum())); + item.setTotal(AESEncryptUtil.encrypt(item.getTotal())); + return item; + } + } diff --git a/src/com/engine/salary/mapper/siaccount/InsuranceAccountDetailMapper.java b/src/com/engine/salary/mapper/siaccount/InsuranceAccountDetailMapper.java index 7d2c97d53..360511fee 100644 --- a/src/com/engine/salary/mapper/siaccount/InsuranceAccountDetailMapper.java +++ b/src/com/engine/salary/mapper/siaccount/InsuranceAccountDetailMapper.java @@ -26,6 +26,11 @@ public interface InsuranceAccountDetailMapper { */ List list(@Param("param") InsuranceAccountDetailParam queryParam); + /** + * 通过id查询 + */ + InsuranceAccountDetailPO getById(@Param("id") Long id); + /** * 根据账单月份获取所有员工 * diff --git a/src/com/engine/salary/mapper/siaccount/InsuranceAccountDetailMapper.xml b/src/com/engine/salary/mapper/siaccount/InsuranceAccountDetailMapper.xml index 029e8486c..09dcdab8e 100644 --- a/src/com/engine/salary/mapper/siaccount/InsuranceAccountDetailMapper.xml +++ b/src/com/engine/salary/mapper/siaccount/InsuranceAccountDetailMapper.xml @@ -1144,4 +1144,14 @@ + + \ No newline at end of file diff --git a/src/com/engine/salary/service/SIAccountService.java b/src/com/engine/salary/service/SIAccountService.java index ddebc102a..710b5f8cb 100644 --- a/src/com/engine/salary/service/SIAccountService.java +++ b/src/com/engine/salary/service/SIAccountService.java @@ -245,5 +245,10 @@ public interface SIAccountService { */ Map importExcelInsuranceDetail(ExcelInsuranceImportParam excelInsuranceImportParam); + /** + * 将通过id获取InsuranceAccountDetailPO中的社保、公积金、其他福利个人和公司缴纳数据 + */ + Map getPaymentById(Long id); + } diff --git a/src/com/engine/salary/service/impl/SIAccountServiceImpl.java b/src/com/engine/salary/service/impl/SIAccountServiceImpl.java index 18ccbca35..49077b9fb 100644 --- a/src/com/engine/salary/service/impl/SIAccountServiceImpl.java +++ b/src/com/engine/salary/service/impl/SIAccountServiceImpl.java @@ -2140,112 +2140,66 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { return excelInsuranceDetailPO; } -// @Override -// public InsuranceSupplementListFoldDTO getPaymentById(Long id) { -// InsuranceSupplementListFoldDTO result = new InsuranceSupplementListFoldDTO(); -// WeaTable weaTable = new WeaTable<>(); -// EditableTable editableTable = new EditableTable<>(weaTable); -// editableTable.setColumns(InsuranceArchivesBO.buildCompensationEditTableColumns(employeeId, tenantKey)); -// editableTable.setComProps(InsuranceArchivesBO.buildSupplementEditTableItemMap()); -// editableTable.setShowCheck(false); -// editableTable.setEllipsis(true); -// result.setEditableTable(editableTable); -// InsuranceAccountDetailPO insuranceAccountDetailPO = new LambdaQueryChainWrapper<>(siAccountDetailMapper) -// .eq(InsuranceAccountDetailPO::getId, id) -// .one(); -// SalaryAssert.notNull(insuranceAccountDetailPO, SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 139811, "人员不存在")); -// insuranceAccountDetailPO = (InsuranceAccountDetailPO) dataSecurityService.decrypt(insuranceAccountDetailPO, InsuranceAccountDetailPO.class, tenantKey); -// Map> group = new HashMap<>(); -// //组装社保数据 -// Set socialInsuranceIds = new HashSet<>(); -// String socialPerJson = insuranceAccountDetailPO.getSocialPerJson(); -// HashMap socialPerMap = new HashMap<>(); -// if (StringUtils.isNotBlank(socialPerJson)) { -// socialPerMap = JSON.parseObject(socialPerJson, new HashMap().getClass()); -// socialPerMap.forEach((k, v) -> socialInsuranceIds.add(k)); -// } -// String socialComJson = insuranceAccountDetailPO.getSocialComJson(); -// HashMap socialComMap = new HashMap<>(); -// if (StringUtils.isNotBlank(socialComJson)) { -// socialComMap = JSON.parseObject(socialComJson, new HashMap().getClass()); -// socialComMap.forEach((k, v) -> socialInsuranceIds.add(k)); -// } -// List socialSupplementList = new ArrayList<>(); -// for (String insuranceId : socialInsuranceIds) { -// InsuranceSupplementListDTO dto = new InsuranceSupplementListDTO(); -// dto.setItem(siCategoryService.getCategoryNameById(Long.valueOf(insuranceId), tenantKey)); -// dto.setPaymentPer(socialPerMap.get(insuranceId)); -// dto.setPaymentCom(socialComMap.get(insuranceId)); -// dto.setId(insuranceId); -// socialSupplementList.add(dto); -// } -// group.put("social", socialSupplementList); -// -// //组装公积金数据 -// Set fundInsuranceIds = new HashSet<>(); -// String fundPerJson = insuranceAccountDetailPO.getFundPerJson(); -// HashMap fundperMap = new HashMap<>(); -// if (StringUtils.isNotBlank(fundPerJson)) { -// fundperMap = JSON.parseObject(fundPerJson, new HashMap().getClass()); -// fundperMap.forEach((k, v) -> fundInsuranceIds.add(k)); -// } -// String fundComJson = insuranceAccountDetailPO.getFundComJson(); -// HashMap fundComMap = new HashMap<>(); -// if (StringUtils.isNotBlank(fundComJson)) { -// fundComMap = JSON.parseObject(fundComJson, new HashMap().getClass()); -// fundComMap.forEach((k, v) -> fundInsuranceIds.add(k)); -// } -// List fundSupplementList = new ArrayList<>(); -// for (String insuranceId : fundInsuranceIds) { -// InsuranceSupplementListDTO dto = new InsuranceSupplementListDTO(); -// dto.setItem(siCategoryService.getCategoryNameById(Long.valueOf(insuranceId), tenantKey)); -// dto.setPaymentPer(fundperMap.get(insuranceId)); -// dto.setPaymentCom(fundComMap.get(insuranceId)); -// dto.setId(insuranceId); -// fundSupplementList.add(dto); -// } -// group.put("fund", fundSupplementList); -// -// //组装其他福利数据 -// Set otherInsuranceIds = new HashSet<>(); -// String otherPerJson = insuranceAccountDetailPO.getOtherPerJson(); -// HashMap otherPerMap = new HashMap<>(); -// if (StringUtils.isNotBlank(otherPerJson)) { -// otherPerMap = JSON.parseObject(otherPerJson, new HashMap().getClass()); -// otherPerMap.forEach((k, v) -> otherInsuranceIds.add(k)); -// } -// String otherComJson = insuranceAccountDetailPO.getOtherComJson(); -// HashMap otherComMap = new HashMap<>(); -// if (StringUtils.isNotBlank(otherComJson)) { -// otherComMap = JSON.parseObject(otherComJson, new HashMap().getClass()); -// otherComMap.forEach((k, v) -> otherInsuranceIds.add(k)); -// } -// List otherSupplementList = new ArrayList<>(); -// for (String insuranceId : otherInsuranceIds) { -// InsuranceSupplementListDTO dto = new InsuranceSupplementListDTO(); -// dto.setItem(siCategoryService.getCategoryNameById(Long.valueOf(insuranceId), tenantKey)); -// dto.setPaymentPer(otherPerMap.get(insuranceId)); -// dto.setPaymentCom(otherComMap.get(insuranceId)); -// dto.setId(insuranceId); -// otherSupplementList.add(dto); -// } -// group.put("other", otherSupplementList); -// Map> items = new HashMap<>(); -// Map socialItem = new HashMap<>(); -// socialItem.put("index", "0"); -// socialItem.put("groupName", SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 86568, "社保")); -// items.put("social", socialItem); -// Map fundItem = new HashMap<>(); -// fundItem.put("index", "1"); -// fundItem.put("groupName", SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 86569, "公积金")); -// items.put("fund", fundItem); -// Map otherItem = new HashMap<>(); -// otherItem.put("index", "2"); -// otherItem.put("groupName", SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 93112, "企业年金及其他福利")); -// items.put("other", otherItem); -// result.setItems(items); -// result.setGroup(group); -// return result; -// } + /** + * 将通过id获取InsuranceAccountDetailPO中的社保、公积金、其他福利个人和公司缴纳数据 + */ + @Override + public Map getPaymentById(Long id) { + + InsuranceAccountDetailPO insuranceAccountDetailPO = getInsuranceAccountDetailMapper().getById(id); + if (insuranceAccountDetailPO == null) { + throw new SalaryRunTimeException("该条核算数据不存在!"); + } + InsuranceAccountDetailPOEncrypt.decryptItem(insuranceAccountDetailPO); + String socialPerJson = insuranceAccountDetailPO.getSocialPerJson(); + String socialComJson = insuranceAccountDetailPO.getSocialComJson(); + String fundPerJson = insuranceAccountDetailPO.getFundPerJson(); + String fundComJson = insuranceAccountDetailPO.getFundComJson(); + String otherPerJson = insuranceAccountDetailPO.getOtherPerJson(); + String otherComJson = insuranceAccountDetailPO.getOtherComJson(); + + Map dataMap = new HashMap<>(); + List addGroups = new ArrayList<>(); + + getPaymentGroup(socialPerJson, "个人", "社保", dataMap, addGroups); + getPaymentGroup(socialComJson, "公司", "社保", dataMap, addGroups); + getPaymentGroup(fundPerJson, "个人", "公积金", dataMap, addGroups); + getPaymentGroup(fundComJson, "公司", "公积金", dataMap, addGroups); + getPaymentGroup(otherPerJson, "个人", "其他福利", dataMap, addGroups); + getPaymentGroup(otherComJson, "公司", "其他福利", dataMap, addGroups); + + Map resultMap = new HashMap<>(); + resultMap.put("data", dataMap); + resultMap.put("items", addGroups); + + return resultMap; + } + + public void getPaymentGroup(String baseJson, String groupType, String welfareType, Map dataMap, List addGroups) { + + if (StringUtils.isBlank(baseJson)) { + addGroups.add(new SearchConditionGroup(welfareType + groupType +"缴纳", true, null)); + return; + } + + String groupPrefix = "个人".equals(groupType) ? "per" : "com"; + + Map toDealMap = JSON.parseObject(baseJson, new HashMap().getClass()); + Map baseJsonMap = new HashMap<>(); + List inputItems = new ArrayList<>(); + + for (Map.Entry entry : toDealMap.entrySet()) { + //获取福利项信息 + ICategoryPO iCategoryPO = siCategoryBiz.getByID(Long.valueOf(entry.getKey())); + if (iCategoryPO != null) { + String name = groupPrefix + iCategoryPO.getId().toString(); + String label = iCategoryPO.getInsuranceName(); + inputItems.add(SalaryFormItemUtil.inputNumberItem(user, "precision:2", 2, 12, 2, label, name)); + } + baseJsonMap.put(groupPrefix + entry.getKey(), entry.getValue()); + } + dataMap.putAll(baseJsonMap); + addGroups.add(new SearchConditionGroup(welfareType + groupType +"缴纳", true, inputItems)); + } } diff --git a/src/com/engine/salary/web/SIAccountController.java b/src/com/engine/salary/web/SIAccountController.java index 8a06a0256..cbd8da06f 100644 --- a/src/com/engine/salary/web/SIAccountController.java +++ b/src/com/engine/salary/web/SIAccountController.java @@ -654,5 +654,22 @@ public class SIAccountController { User user = HrmUserVarify.getUser(request, response); return new ResponseResult>(user).run(getService(user)::listRecessionPage, insuranceAccountDetailParam); } + + /** + * 通过id获取InsuranceAccountDetailPO中的社保、公积金、其他福利个人和公司缴纳数据 + * @param request + * @param response + * @param id + * @return + */ + @GET + @Path("/getPaymentById") + @Produces(MediaType.APPLICATION_JSON) + public String getPaymentById(@Context HttpServletRequest request, @Context HttpServletResponse response, + @QueryParam("id") Long id) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult>(user).run(getService(user)::getPaymentById, id); + } + // **********************************退差 end*********************************/ } From df76d24a39ce29a970ef0bc073bafacd0d8fef06 Mon Sep 17 00:00:00 2001 From: sy Date: Fri, 18 Nov 2022 17:56:21 +0800 Subject: [PATCH 20/50] =?UTF-8?q?=E8=96=AA=E9=85=AC=E7=B3=BB=E7=BB=9F-?= =?UTF-8?q?=E7=A6=8F=E5=88=A9=E5=8F=B0=E8=B4=A6=EF=BC=8C=E9=80=80=E5=B7=AE?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E7=BC=96=E8=BE=91v1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../param/EditAccountDetailParam.java | 32 ++++ .../InsuranceAccountDetailMapper.java | 5 + .../InsuranceAccountDetailMapper.xml | 30 ++++ .../salary/service/SIAccountService.java | 5 + .../service/impl/SIAccountServiceImpl.java | 147 ++++++++++++++++++ .../salary/web/SIAccountController.java | 12 ++ 6 files changed, 231 insertions(+) create mode 100644 src/com/engine/salary/entity/siaccount/param/EditAccountDetailParam.java diff --git a/src/com/engine/salary/entity/siaccount/param/EditAccountDetailParam.java b/src/com/engine/salary/entity/siaccount/param/EditAccountDetailParam.java new file mode 100644 index 000000000..735da0f7d --- /dev/null +++ b/src/com/engine/salary/entity/siaccount/param/EditAccountDetailParam.java @@ -0,0 +1,32 @@ +package com.engine.salary.entity.siaccount.param; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @Author: sy + * @Description: 编辑福利报表 + * @Date: 2022/11/18 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class EditAccountDetailParam { + + private Long id; + + private String socialPerJson; + + private String socialComJson; + + private String fundPerJson; + + private String fundComJson; + + private String otherPerJson; + + private String otherComJson; +} diff --git a/src/com/engine/salary/mapper/siaccount/InsuranceAccountDetailMapper.java b/src/com/engine/salary/mapper/siaccount/InsuranceAccountDetailMapper.java index 360511fee..25f1ed64b 100644 --- a/src/com/engine/salary/mapper/siaccount/InsuranceAccountDetailMapper.java +++ b/src/com/engine/salary/mapper/siaccount/InsuranceAccountDetailMapper.java @@ -157,4 +157,9 @@ public interface InsuranceAccountDetailMapper { List listAll(); int batchUpdate(@Param("collection") List pos); + + /** + * 根据id更新数据 + */ + void updateById(InsuranceAccountDetailPO po); } diff --git a/src/com/engine/salary/mapper/siaccount/InsuranceAccountDetailMapper.xml b/src/com/engine/salary/mapper/siaccount/InsuranceAccountDetailMapper.xml index 09dcdab8e..5f2bce3dd 100644 --- a/src/com/engine/salary/mapper/siaccount/InsuranceAccountDetailMapper.xml +++ b/src/com/engine/salary/mapper/siaccount/InsuranceAccountDetailMapper.xml @@ -1154,4 +1154,34 @@ and t.id = #{id} + + UPDATE hrsa_bill_detail + + + social_per_json = #{socialPerJson}, + social_per_sum = #{socialPerSum}, + fund_per_json = #{fundPerJson}, + fund_per_sum = #{fundPerSum}, + other_per_json = #{otherPerJson}, + other_per_sum = #{otherPerSum}, + per_sum = #{perSum}, + com_sum = #{comSum}, + social_com_json = #{socialComJson}, + social_com_sum = #{socialComSum}, + fund_com_json = #{fundComJson}, + fund_com_sum = #{fundComSum}, + other_com_json = #{otherComJson}, + other_com_sum = #{otherComSum}, + social_sum = #{socialSum}, + fund_sum = #{fundSum}, + other_sum = #{otherSum}, + total = #{total}, + update_time = #{updateTime}, + supplementary_month = + #{supplementaryMonth}, + + + + WHERE id = #{id} + \ No newline at end of file diff --git a/src/com/engine/salary/service/SIAccountService.java b/src/com/engine/salary/service/SIAccountService.java index 710b5f8cb..162537f93 100644 --- a/src/com/engine/salary/service/SIAccountService.java +++ b/src/com/engine/salary/service/SIAccountService.java @@ -250,5 +250,10 @@ public interface SIAccountService { */ Map getPaymentById(Long id); + /** + * 编辑InsuranceAccountDetailPO中的社保、公积金、其他福利个人和公司缴纳数据 + */ + void editAccount(EditAccountDetailParam param); + } diff --git a/src/com/engine/salary/service/impl/SIAccountServiceImpl.java b/src/com/engine/salary/service/impl/SIAccountServiceImpl.java index 49077b9fb..e9735eec1 100644 --- a/src/com/engine/salary/service/impl/SIAccountServiceImpl.java +++ b/src/com/engine/salary/service/impl/SIAccountServiceImpl.java @@ -2202,4 +2202,151 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { addGroups.add(new SearchConditionGroup(welfareType + groupType +"缴纳", true, inputItems)); } + /** + * 编辑InsuranceAccountDetailPO中的社保、公积金、其他福利个人和公司缴纳数据 + */ + @Override + public void editAccount(EditAccountDetailParam param) { + InsuranceAccountDetailPO insuranceAccountDetailPO = getInsuranceAccountDetailMapper().getById(param.getId()); + if (insuranceAccountDetailPO == null) { + throw new SalaryRunTimeException("该条核算数据不存在!"); + } + InsuranceAccountDetailPOEncrypt.decryptItem(insuranceAccountDetailPO); + + accountSocialByData(insuranceAccountDetailPO, param); + accountFundByData(insuranceAccountDetailPO, param); + accountOtherByData(insuranceAccountDetailPO, param); + account(insuranceAccountDetailPO); + + InsuranceAccountDetailPOEncrypt.encryptItem(insuranceAccountDetailPO); + getInsuranceAccountDetailMapper().updateById(insuranceAccountDetailPO); + } + + public void accountFundByData(InsuranceAccountDetailPO insuranceAccountDetailPO, EditAccountDetailParam baseParam) { + //公积金个人 + if (StringUtils.isNotBlank(baseParam.getFundPerJson())) { + List fundPer = new ArrayList<>(); + HashMap fundPerson = JSON.parseObject(baseParam.getFundPerJson(), new HashMap().getClass()); + fundPerson.forEach((k, v) -> { + BigDecimal result = new BigDecimal(v); + fundPer.add(result); + }); + insuranceAccountDetailPO.setFundPerJson(baseParam.getFundPerJson()); + BigDecimal fundPerSum = new BigDecimal("0"); + for (BigDecimal bigDecimal : fundPer) { + fundPerSum = fundPerSum.add(bigDecimal); + } + insuranceAccountDetailPO.setFundPerSum(fundPerSum.toPlainString()); + } + //公积金单位 + if (StringUtils.isNotBlank(baseParam.getFundComJson())) { + List fundCom = new ArrayList<>(); + HashMap fundComMap = JSON.parseObject(baseParam.getFundComJson(), new HashMap().getClass()); + fundComMap.forEach((k, v) -> { + BigDecimal result = new BigDecimal(v); + fundCom.add(result); + }); + insuranceAccountDetailPO.setFundComJson(baseParam.getFundComJson()); + BigDecimal fundComSum = new BigDecimal("0"); + for (BigDecimal bigDecimal : fundCom) { + fundComSum = fundComSum.add(bigDecimal); + } + insuranceAccountDetailPO.setFundComSum(fundComSum.toPlainString()); + } + } + + public void accountOtherByData(InsuranceAccountDetailPO insuranceAccountDetailPO, EditAccountDetailParam baseParam) { + //其他福利个人 + if (StringUtils.isNotBlank(baseParam.getOtherPerJson())) { + List otherPer = new ArrayList<>(); + HashMap otherPerMap = JSON.parseObject(baseParam.getOtherPerJson(), new HashMap().getClass()); + otherPerMap.forEach((k, v) -> { + BigDecimal result = new BigDecimal(v); + otherPer.add(result); + }); + insuranceAccountDetailPO.setOtherPerJson(baseParam.getOtherPerJson()); + BigDecimal otherPerSum = new BigDecimal("0"); + for (BigDecimal bigDecimal : otherPer) { + otherPerSum = otherPerSum.add(bigDecimal); + } + insuranceAccountDetailPO.setOtherPerSum(otherPerSum.toPlainString()); + } + //其他福利单位 + if (StringUtils.isNotBlank(baseParam.getOtherComJson())) { + List otherCom = new ArrayList<>(); + HashMap otherComMap = JSON.parseObject(baseParam.getOtherComJson(), new HashMap().getClass()); + otherComMap.forEach((k, v) -> { + BigDecimal result = new BigDecimal(v); + otherCom.add(result); + }); + insuranceAccountDetailPO.setOtherComJson(baseParam.getOtherComJson()); + BigDecimal otherComSum = new BigDecimal("0"); + for (BigDecimal bigDecimal : otherCom) { + otherComSum = otherComSum.add(bigDecimal); + } + insuranceAccountDetailPO.setOtherComSum(otherComSum.toPlainString()); + } + } + + public void accountSocialByData(InsuranceAccountDetailPO insuranceAccountDetailPO, EditAccountDetailParam baseParam) { + //社保个人 + if (StringUtils.isNotBlank(baseParam.getSocialPerJson())) { + List socialPer = new ArrayList<>(); + HashMap archivesPerson = JSON.parseObject(baseParam.getSocialPerJson(), new HashMap().getClass()); + archivesPerson.forEach((k, v) -> { + BigDecimal result = new BigDecimal(v); + socialPer.add(result); + }); + insuranceAccountDetailPO.setSocialPerJson(baseParam.getSocialPerJson()); + BigDecimal socialPerSum = new BigDecimal("0"); + for (BigDecimal bigDecimal : socialPer) { + socialPerSum = socialPerSum.add(bigDecimal); + } + insuranceAccountDetailPO.setSocialPerSum(socialPerSum.toPlainString()); + } + //社保单位 + if (StringUtils.isNotBlank(baseParam.getSocialComJson())) { + List socialCom = new ArrayList<>(); + HashMap archivesCom = JSON.parseObject(baseParam.getSocialComJson(), new HashMap().getClass()); + archivesCom.forEach((k, v) -> { + BigDecimal result = new BigDecimal(v); + socialCom.add(result); + }); + insuranceAccountDetailPO.setSocialComJson(baseParam.getSocialComJson()); + BigDecimal socialComSum = new BigDecimal("0"); + for (BigDecimal bigDecimal : socialCom) { + socialComSum = socialComSum.add(bigDecimal); + } + insuranceAccountDetailPO.setSocialComSum(socialComSum.toPlainString()); + } + } + + public InsuranceAccountDetailPO account(InsuranceAccountDetailPO insuranceAccountDetailPO) { + //个人合计 + BigDecimal socialPerson = + StringUtils.isBlank(insuranceAccountDetailPO.getSocialPerSum()) ? new BigDecimal("0") : new BigDecimal(insuranceAccountDetailPO.getSocialPerSum()); + BigDecimal fundPerson = + StringUtils.isBlank(insuranceAccountDetailPO.getFundPerSum()) ? new BigDecimal("0") : new BigDecimal(insuranceAccountDetailPO.getFundPerSum()); + BigDecimal otherPerson = + StringUtils.isBlank(insuranceAccountDetailPO.getOtherPerSum()) ? new BigDecimal("0") : new BigDecimal(insuranceAccountDetailPO.getOtherPerSum()); + BigDecimal perSum = socialPerson.add(fundPerson).add(otherPerson); + insuranceAccountDetailPO.setPerSum(perSum.toPlainString()); + //单位合计 + BigDecimal socialCom = + StringUtils.isBlank(insuranceAccountDetailPO.getSocialComSum()) ? new BigDecimal("0") : new BigDecimal(insuranceAccountDetailPO.getSocialComSum()); + BigDecimal fundCom = StringUtils.isBlank(insuranceAccountDetailPO.getFundComSum()) ? new BigDecimal("0") : new BigDecimal(insuranceAccountDetailPO.getFundComSum()); + BigDecimal otherCom = + StringUtils.isBlank(insuranceAccountDetailPO.getOtherComSum()) ? new BigDecimal("0") : new BigDecimal(insuranceAccountDetailPO.getOtherComSum()); + BigDecimal comSum = socialCom.add(fundCom).add(otherCom); + insuranceAccountDetailPO.setComSum(comSum.toPlainString()); + //社保合计 + insuranceAccountDetailPO.setSocialSum(socialPerson.add(socialCom).toPlainString()); + //公积金合计 + insuranceAccountDetailPO.setFundSum(fundPerson.add(fundCom).toPlainString()); + //其他福利合计 + insuranceAccountDetailPO.setOtherSum(otherPerson.add(otherCom).toPlainString()); + //合计 + insuranceAccountDetailPO.setTotal(perSum.add(comSum).toPlainString()); + return insuranceAccountDetailPO; + } } diff --git a/src/com/engine/salary/web/SIAccountController.java b/src/com/engine/salary/web/SIAccountController.java index cbd8da06f..a8ef40f02 100644 --- a/src/com/engine/salary/web/SIAccountController.java +++ b/src/com/engine/salary/web/SIAccountController.java @@ -671,5 +671,17 @@ public class SIAccountController { return new ResponseResult>(user).run(getService(user)::getPaymentById, id); } + /** + * 编辑InsuranceAccountDetailPO中的社保、公积金、其他福利个人和公司缴纳数据 + */ + @POST + @Path("/editAccount") + @Produces(MediaType.APPLICATION_JSON) + public String editAccount(@Context HttpServletRequest request, @Context HttpServletResponse response, + @RequestBody EditAccountDetailParam param) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getService(user)::editAccount, param); + } + // **********************************退差 end*********************************/ } From 96a440a9a7a9c8394c87c19eeac0c4a0cebe9a49 Mon Sep 17 00:00:00 2001 From: sy Date: Mon, 21 Nov 2022 15:27:15 +0800 Subject: [PATCH 21/50] =?UTF-8?q?=E8=96=AA=E9=85=AC=E7=B3=BB=E7=BB=9F-?= =?UTF-8?q?=E7=A6=8F=E5=88=A9=E5=8F=B0=E8=B4=A6=EF=BC=8C=E9=80=80=E5=B7=AE?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E6=96=B0=E5=A2=9E=E6=97=B6=E7=9A=84=E5=8F=AF?= =?UTF-8?q?=E9=80=89=E6=8B=A9=E4=BA=BA=E5=91=98=E5=88=97=E8=A1=A8v1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salary/entity/hrm/dto/HrmInfoDTO.java | 23 ++++++++ .../entity/hrm/param/HrmQueryParam.java | 27 +++++++++ .../mapper/datacollection/EmployMapper.java | 4 ++ .../mapper/datacollection/EmployMapper.xml | 59 +++++++++++++++++++ .../salary/service/SIRecessionService.java | 5 ++ .../service/impl/SIRecessionServiceImpl.java | 56 ++++++++++++++++++ .../salary/web/SIAccountController.java | 14 +++++ .../salary/wrapper/SIAccountWrapper.java | 8 +++ 8 files changed, 196 insertions(+) create mode 100644 src/com/engine/salary/entity/hrm/dto/HrmInfoDTO.java create mode 100644 src/com/engine/salary/entity/hrm/param/HrmQueryParam.java diff --git a/src/com/engine/salary/entity/hrm/dto/HrmInfoDTO.java b/src/com/engine/salary/entity/hrm/dto/HrmInfoDTO.java new file mode 100644 index 000000000..21ec12013 --- /dev/null +++ b/src/com/engine/salary/entity/hrm/dto/HrmInfoDTO.java @@ -0,0 +1,23 @@ +package com.engine.salary.entity.hrm.dto; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @Author: sy + * @Description: 人员信息列表 + * @Date: 2022/11/21 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class HrmInfoDTO { + //员工id + private Long employeeId; + + //姓名 + private String username; +} diff --git a/src/com/engine/salary/entity/hrm/param/HrmQueryParam.java b/src/com/engine/salary/entity/hrm/param/HrmQueryParam.java new file mode 100644 index 000000000..03787f33e --- /dev/null +++ b/src/com/engine/salary/entity/hrm/param/HrmQueryParam.java @@ -0,0 +1,27 @@ +package com.engine.salary.entity.hrm.param; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Collection; + +/** + * @Author: sy + * @Description: 人员查询 + * @Date: 2022/11/21 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class HrmQueryParam { + + String userName; + + private int pageNum; + private int pageSize; + + private Collection ids; +} diff --git a/src/com/engine/salary/mapper/datacollection/EmployMapper.java b/src/com/engine/salary/mapper/datacollection/EmployMapper.java index 9202a26af..427ff6cd7 100644 --- a/src/com/engine/salary/mapper/datacollection/EmployMapper.java +++ b/src/com/engine/salary/mapper/datacollection/EmployMapper.java @@ -4,6 +4,8 @@ import com.engine.salary.entity.datacollection.DataCollectionEmployee; import com.engine.salary.entity.hrm.DeptInfo; import com.engine.salary.entity.hrm.PositionInfo; import com.engine.salary.entity.hrm.SubCompanyInfo; +import com.engine.salary.entity.hrm.dto.HrmInfoDTO; +import com.engine.salary.entity.hrm.param.HrmQueryParam; import com.engine.salary.entity.salarysob.param.SalarySobRangeEmpQueryParam; import org.apache.ibatis.annotations.Param; @@ -50,4 +52,6 @@ public interface EmployMapper { List getDeptInfoList(@Param("departmentIds") List departmentIds); List getSubCompanyInfoList(@Param("subDepartmentIds") List subDepartmentIds); + + List listHrmInfoByIdAndName(@Param("param") HrmQueryParam param); } \ No newline at end of file diff --git a/src/com/engine/salary/mapper/datacollection/EmployMapper.xml b/src/com/engine/salary/mapper/datacollection/EmployMapper.xml index adc1f55a2..874f28246 100644 --- a/src/com/engine/salary/mapper/datacollection/EmployMapper.xml +++ b/src/com/engine/salary/mapper/datacollection/EmployMapper.xml @@ -281,5 +281,64 @@ + + + + + \ No newline at end of file diff --git a/src/com/engine/salary/service/SIRecessionService.java b/src/com/engine/salary/service/SIRecessionService.java index df163bb84..71ba297e3 100644 --- a/src/com/engine/salary/service/SIRecessionService.java +++ b/src/com/engine/salary/service/SIRecessionService.java @@ -1,6 +1,9 @@ package com.engine.salary.service; +import com.engine.salary.entity.hrm.dto.HrmInfoDTO; +import com.engine.salary.entity.hrm.param.HrmQueryParam; import com.engine.salary.entity.siaccount.param.RecessionParam; +import com.engine.salary.util.page.PageInfo; import java.util.Collection; @@ -9,4 +12,6 @@ public interface SIRecessionService { void save(RecessionParam param, Long employeeId); void del(Collection ids, Long employeeId); + + PageInfo getEmployeeListByTaxAgent(HrmQueryParam param); } diff --git a/src/com/engine/salary/service/impl/SIRecessionServiceImpl.java b/src/com/engine/salary/service/impl/SIRecessionServiceImpl.java index 340447bbd..2907085e7 100644 --- a/src/com/engine/salary/service/impl/SIRecessionServiceImpl.java +++ b/src/com/engine/salary/service/impl/SIRecessionServiceImpl.java @@ -2,23 +2,34 @@ package com.engine.salary.service.impl; import com.alibaba.fastjson.JSON; import com.api.formmode.mybatis.util.SqlProxyHandle; +import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; import com.engine.salary.encrypt.siaccount.InsuranceAccountDetailPOEncrypt; +import com.engine.salary.entity.hrm.dto.HrmInfoDTO; +import com.engine.salary.entity.hrm.param.HrmQueryParam; import com.engine.salary.entity.siaccount.param.InsuranceAccountDetailParam; import com.engine.salary.entity.siaccount.param.RecessionParam; import com.engine.salary.entity.siaccount.po.InsuranceAccountDetailPO; +import com.engine.salary.entity.taxagent.dto.TaxAgentEmployeeDTO; import com.engine.salary.enums.siaccount.BillStatusEnum; import com.engine.salary.enums.siaccount.PaymentStatusEnum; import com.engine.salary.enums.siaccount.ProjectTypeEnum; import com.engine.salary.enums.sicategory.DeleteTypeEnum; +import com.engine.salary.mapper.datacollection.EmployMapper; import com.engine.salary.mapper.siaccount.InsuranceAccountDetailMapper; import com.engine.salary.service.SIRecessionService; +import com.engine.salary.service.TaxAgentService; +import com.engine.salary.util.SalaryEntityUtil; +import com.engine.salary.util.db.MapperProxyFactory; +import com.engine.salary.util.page.PageInfo; +import com.engine.salary.util.page.SalaryPageUtil; import com.google.common.collect.Lists; import org.apache.commons.lang3.StringUtils; import org.apache.commons.collections4.CollectionUtils; import com.engine.salary.exception.SalaryRunTimeException; import com.engine.salary.util.SalaryI18nUtil; import com.engine.salary.util.SalaryAssert; +import weaver.hrm.User; import java.math.BigDecimal; import java.util.*; @@ -35,6 +46,14 @@ public class SIRecessionServiceImpl extends Service implements SIRecessionServic return SqlProxyHandle.getProxy(InsuranceAccountDetailMapper.class); } + private TaxAgentService getTaxAgentService(User user) { + return ServiceUtil.getService(TaxAgentServiceImpl.class, user); + } + + private EmployMapper getEmployMapper() { + return MapperProxyFactory.getProxy(EmployMapper.class); + } + @Override public void save(RecessionParam param, Long employeeId) { @@ -282,4 +301,41 @@ public class SIRecessionServiceImpl extends Service implements SIRecessionServic insuranceAccountDetailPO.setTotal(perSum.add(comSum).toPlainString()); } + + /** + * 获取当前登录人所控制的个税扣缴义务人的人员范围 + */ + @Override + public PageInfo getEmployeeListByTaxAgent(HrmQueryParam param) { + + // 当前登录人员 + Long currentEmployeeId = (long) user.getUID(); + + List taxAgentEmployeeDTOS = getTaxAgentService(user).listTaxAgentAndEmployee(currentEmployeeId); + Set employeeIds = SalaryEntityUtil.properties(taxAgentEmployeeDTOS, TaxAgentEmployeeDTO::getEmployeeId); + List empIds = new ArrayList(employeeIds); + List resultData = new ArrayList<>(); + if (employeeIds.size() > 0) { + List> partition = Lists.partition(empIds, 1000); + partition.forEach(p -> { + param.setIds(p); + resultData.addAll(getEmployMapper().listHrmInfoByIdAndName(param)); + }); + + } + + // 分页 + PageInfo page = new PageInfo<>(); + if (null == resultData) { + return page; + } + page.setTotal(resultData.size()); + + page.setList(SalaryPageUtil.subList(param.getPageNum(), param.getPageSize(), resultData)); + page.setPageSize(param.getPageSize()); + page.setPageNum(param.getPageNum()); + + + return page; + } } diff --git a/src/com/engine/salary/web/SIAccountController.java b/src/com/engine/salary/web/SIAccountController.java index a8ef40f02..053219066 100644 --- a/src/com/engine/salary/web/SIAccountController.java +++ b/src/com/engine/salary/web/SIAccountController.java @@ -2,6 +2,8 @@ package com.engine.salary.web; import com.engine.common.util.ParamUtil; import com.engine.common.util.ServiceUtil; +import com.engine.salary.entity.hrm.dto.HrmInfoDTO; +import com.engine.salary.entity.hrm.param.HrmQueryParam; import com.engine.salary.entity.siaccount.dto.InsuranceAccountTabDTO; import com.engine.salary.entity.siaccount.dto.InsuranceAccountViewListDTO; import com.engine.salary.entity.siaccount.dto.InsuranceAcctDetailImportFieldDTO; @@ -683,5 +685,17 @@ public class SIAccountController { return new ResponseResult(user).run(getService(user)::editAccount, param); } + /** + * 获取当前登录人所控制的人员范围 + */ + @POST + @Path("/getEmployeeListByTaxAgent") + @Produces(MediaType.APPLICATION_JSON) + public String getEmployeeListByTaxAgent(@Context HttpServletRequest request, @Context HttpServletResponse response, + @RequestBody HrmQueryParam param) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult>(user).run(getSIAccountWrapper(user)::getEmployeeListByTaxAgent, param); + } + // **********************************退差 end*********************************/ } diff --git a/src/com/engine/salary/wrapper/SIAccountWrapper.java b/src/com/engine/salary/wrapper/SIAccountWrapper.java index 10b53a81a..6f3b6e134 100644 --- a/src/com/engine/salary/wrapper/SIAccountWrapper.java +++ b/src/com/engine/salary/wrapper/SIAccountWrapper.java @@ -3,9 +3,12 @@ package com.engine.salary.wrapper; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; +import com.engine.salary.entity.hrm.dto.HrmInfoDTO; +import com.engine.salary.entity.hrm.param.HrmQueryParam; import com.engine.salary.entity.siaccount.param.RecessionParam; import com.engine.salary.service.SIRecessionService; import com.engine.salary.service.impl.SIRecessionServiceImpl; +import com.engine.salary.util.page.PageInfo; import weaver.hrm.User; import java.util.Collection; @@ -38,4 +41,9 @@ public class SIAccountWrapper extends Service { long currentEmployeeId = user.getUID(); getSIRecessionService(user).del(ids, currentEmployeeId); } + + public PageInfo getEmployeeListByTaxAgent(HrmQueryParam param) { + + return getSIRecessionService(user).getEmployeeListByTaxAgent(param); + } } From 955f8c255eaa2d9280edb1d29e110bdc3c568546 Mon Sep 17 00:00:00 2001 From: sy Date: Mon, 21 Nov 2022 16:25:26 +0800 Subject: [PATCH 22/50] =?UTF-8?q?=E8=96=AA=E9=85=AC=E7=B3=BB=E7=BB=9F-?= =?UTF-8?q?=E7=A6=8F=E5=88=A9=E5=8F=B0=E8=B4=A6=EF=BC=8C=E9=80=80=E5=B7=AE?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E6=96=B0=E5=A2=9Ev2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salary/service/impl/SIRecessionServiceImpl.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/com/engine/salary/service/impl/SIRecessionServiceImpl.java b/src/com/engine/salary/service/impl/SIRecessionServiceImpl.java index 2907085e7..b79df634b 100644 --- a/src/com/engine/salary/service/impl/SIRecessionServiceImpl.java +++ b/src/com/engine/salary/service/impl/SIRecessionServiceImpl.java @@ -68,6 +68,7 @@ public class SIRecessionServiceImpl extends Service implements SIRecessionServic employeeIds = employeeIds.stream().filter(item -> !param.getExcludes().contains(item)).collect(Collectors.toList()); } SalaryAssert.notEmpty(employeeIds, SalaryI18nUtil.getI18nLabel(133967, "无退差人员")); + //查询退差员工对应的退差月份的正常缴纳的福利台账数据 List detailPOS= getInsuranceAccountDetailMapper().list(InsuranceAccountDetailParam.builder() .paymentStatus(PaymentStatusEnum.COMMON.getValue()) @@ -89,6 +90,16 @@ public class SIRecessionServiceImpl extends Service implements SIRecessionServic }); //退差数据入库 if (CollectionUtils.isNotEmpty(finalRecessionDetails)) { + + // + //查询退差员工中是否已经进行有过退差记录,有过则更新 +// List haveRecessionPOS= getInsuranceAccountDetailMapper().list(InsuranceAccountDetailParam.builder() +// .paymentStatus(PaymentStatusEnum.RECESSION.getValue()) +// .recessionMonthList(param.getRecessionMonthList()) +// .employeeIds(employeeIds) +// .paymentOrganization(param.getPaymentOrganization()) +// .build()); + // InsuranceAccountDetailPOEncrypt.encryptInsuranceAccountDetailPOList(finalRecessionDetails); List> partition = Lists.partition((List) finalRecessionDetails, 20); From aa7a3ced01d4c59b436be01b9f08a6db2b15010f Mon Sep 17 00:00:00 2001 From: sy Date: Mon, 21 Nov 2022 16:53:00 +0800 Subject: [PATCH 23/50] =?UTF-8?q?=E8=96=AA=E9=85=AC=E7=B3=BB=E7=BB=9F-?= =?UTF-8?q?=E7=A6=8F=E5=88=A9=E5=8F=B0=E8=B4=A6=EF=BC=8C=E5=AF=BC=E5=85=A5?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=88=B7=E6=96=B0=E7=BB=9F=E8=AE=A1=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../engine/salary/service/impl/SIAccountServiceImpl.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/com/engine/salary/service/impl/SIAccountServiceImpl.java b/src/com/engine/salary/service/impl/SIAccountServiceImpl.java index 87094093e..2a96f1802 100644 --- a/src/com/engine/salary/service/impl/SIAccountServiceImpl.java +++ b/src/com/engine/salary/service/impl/SIAccountServiceImpl.java @@ -1293,9 +1293,9 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { batchPO.setFundNum(viewListDTO.getFundNum()); batchPO.setOtherNum(viewListDTO.getOtherNum()); - batchPO.setSocialPay(viewListDTO.getSocialPaySum()); - batchPO.setFundPay(viewListDTO.getFundPaySum()); - batchPO.setOtherPay(viewListDTO.getOtherPaySum()); + batchPO.setSocialPay(viewListDTO.getSocialPaySum().replace(",", "")); + batchPO.setFundPay(viewListDTO.getFundPaySum().replace(",", "")); + batchPO.setOtherPay(viewListDTO.getOtherPaySum().replace(",", "")); batchPO.setUpdateTime(new Date()); batchPO = SiAccountEncrypt.encryptInsuranceAccountBatch(batchPO); From 5a3f035a4145e7420f001b242d37c3738e6a71cc Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Mon, 21 Nov 2022 17:19:12 +0800 Subject: [PATCH 24/50] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=AE=9A=E8=96=AA?= =?UTF-8?q?=E6=B5=81=E7=A8=8B=E5=A7=93=E5=90=8D=E9=87=8D=E5=A4=8DBUG?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salary/entity/salaryarchive/bo/SalaryArchiveExcelBO.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/com/engine/salary/entity/salaryarchive/bo/SalaryArchiveExcelBO.java b/src/com/engine/salary/entity/salaryarchive/bo/SalaryArchiveExcelBO.java index 41bba094d..389f66a64 100644 --- a/src/com/engine/salary/entity/salaryarchive/bo/SalaryArchiveExcelBO.java +++ b/src/com/engine/salary/entity/salaryarchive/bo/SalaryArchiveExcelBO.java @@ -372,6 +372,7 @@ public class SalaryArchiveExcelBO extends Service { //员工id 流程定薪使用 String empId = Optional.ofNullable(map.get("员工id")).orElse("").toString(); if (StringUtils.isNotBlank(empId)) { + employeeSameIds.clear(); employeeSameIds.add(Long.valueOf(empId)); employeeId = Long.valueOf(empId); } From 15477cc8d5e50e35e1b39fb5aad0f81a8f9aa422 Mon Sep 17 00:00:00 2001 From: sy Date: Mon, 21 Nov 2022 17:52:28 +0800 Subject: [PATCH 25/50] =?UTF-8?q?=E8=96=AA=E9=85=AC=E7=B3=BB=E7=BB=9F-?= =?UTF-8?q?=E7=A6=8F=E5=88=A9=E5=8F=B0=E8=B4=A6=EF=BC=8C=E9=80=80=E5=B7=AE?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E6=96=B0=E5=A2=9Ev3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../siaccount/InsuranceAccountDetailMapper.java | 6 ++++++ .../siaccount/InsuranceAccountDetailMapper.xml | 11 +++++++++++ .../service/impl/SIRecessionServiceImpl.java | 14 ++++---------- 3 files changed, 21 insertions(+), 10 deletions(-) diff --git a/src/com/engine/salary/mapper/siaccount/InsuranceAccountDetailMapper.java b/src/com/engine/salary/mapper/siaccount/InsuranceAccountDetailMapper.java index 25f1ed64b..030d68d5f 100644 --- a/src/com/engine/salary/mapper/siaccount/InsuranceAccountDetailMapper.java +++ b/src/com/engine/salary/mapper/siaccount/InsuranceAccountDetailMapper.java @@ -162,4 +162,10 @@ public interface InsuranceAccountDetailMapper { * 根据id更新数据 */ void updateById(InsuranceAccountDetailPO po); + + + /** + * 删除退差数据(账单月份+退差月份+缴纳状态+人员id+个税扣缴义务人) + */ + void deleteRecessionData(InsuranceAccountDetailPO po); } diff --git a/src/com/engine/salary/mapper/siaccount/InsuranceAccountDetailMapper.xml b/src/com/engine/salary/mapper/siaccount/InsuranceAccountDetailMapper.xml index 5f2bce3dd..dbe702558 100644 --- a/src/com/engine/salary/mapper/siaccount/InsuranceAccountDetailMapper.xml +++ b/src/com/engine/salary/mapper/siaccount/InsuranceAccountDetailMapper.xml @@ -1184,4 +1184,15 @@ WHERE id = #{id} + + + DELETE + FROM hrsa_bill_detail + WHERE delete_type = 0 + AND bill_month = #{billMonth} + AND payment_status = #{paymentStatus} + AND payment_organization = #{paymentOrganization} + AND supplementary_month = #{supplementaryMonth} + AND employee_id = #{employeeId} + \ No newline at end of file diff --git a/src/com/engine/salary/service/impl/SIRecessionServiceImpl.java b/src/com/engine/salary/service/impl/SIRecessionServiceImpl.java index b79df634b..0c819b984 100644 --- a/src/com/engine/salary/service/impl/SIRecessionServiceImpl.java +++ b/src/com/engine/salary/service/impl/SIRecessionServiceImpl.java @@ -90,18 +90,12 @@ public class SIRecessionServiceImpl extends Service implements SIRecessionServic }); //退差数据入库 if (CollectionUtils.isNotEmpty(finalRecessionDetails)) { - - // - //查询退差员工中是否已经进行有过退差记录,有过则更新 -// List haveRecessionPOS= getInsuranceAccountDetailMapper().list(InsuranceAccountDetailParam.builder() -// .paymentStatus(PaymentStatusEnum.RECESSION.getValue()) -// .recessionMonthList(param.getRecessionMonthList()) -// .employeeIds(employeeIds) -// .paymentOrganization(param.getPaymentOrganization()) -// .build()); - // InsuranceAccountDetailPOEncrypt.encryptInsuranceAccountDetailPOList(finalRecessionDetails); + //删除已有退差记录 + finalRecessionDetails.forEach(getInsuranceAccountDetailMapper()::deleteRecessionData); + + //入库新数据 List> partition = Lists.partition((List) finalRecessionDetails, 20); partition.forEach(getInsuranceAccountDetailMapper()::batchSaveAccountDetails); From 7c299e6199d18c8dc1e401026b657d3817451491 Mon Sep 17 00:00:00 2001 From: sy Date: Tue, 22 Nov 2022 09:46:37 +0800 Subject: [PATCH 26/50] =?UTF-8?q?=E8=96=AA=E9=85=AC=E7=B3=BB=E7=BB=9F-?= =?UTF-8?q?=E7=A6=8F=E5=88=A9=E5=8F=B0=E8=B4=A6=EF=BC=8C=E9=80=80=E5=B7=AE?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E6=96=B0=E5=A2=9Ev4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salary/mapper/siaccount/InsuranceAccountDetailMapper.xml | 4 ++-- src/com/engine/salary/service/impl/SIAccountServiceImpl.java | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/com/engine/salary/mapper/siaccount/InsuranceAccountDetailMapper.xml b/src/com/engine/salary/mapper/siaccount/InsuranceAccountDetailMapper.xml index dbe702558..afec1fb8f 100644 --- a/src/com/engine/salary/mapper/siaccount/InsuranceAccountDetailMapper.xml +++ b/src/com/engine/salary/mapper/siaccount/InsuranceAccountDetailMapper.xml @@ -1186,8 +1186,8 @@ - DELETE - FROM hrsa_bill_detail + UPDATE hrsa_bill_detail + SET delete_type = 1 WHERE delete_type = 0 AND bill_month = #{billMonth} AND payment_status = #{paymentStatus} diff --git a/src/com/engine/salary/service/impl/SIAccountServiceImpl.java b/src/com/engine/salary/service/impl/SIAccountServiceImpl.java index e9735eec1..b717ceeff 100644 --- a/src/com/engine/salary/service/impl/SIAccountServiceImpl.java +++ b/src/com/engine/salary/service/impl/SIAccountServiceImpl.java @@ -367,7 +367,7 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { } } - //补缴缴纳列表 + //退差列表 queryParam.setPaymentStatus(PaymentStatusEnum.RECESSION.getValue()); //排序配置 From d7a4b301854f0e3217eaf899d18cbf597411bb2a Mon Sep 17 00:00:00 2001 From: sy Date: Tue, 22 Nov 2022 10:26:34 +0800 Subject: [PATCH 27/50] =?UTF-8?q?=E8=96=AA=E9=85=AC=E7=B3=BB=E7=BB=9F-?= =?UTF-8?q?=E7=A6=8F=E5=88=A9=E5=8F=B0=E8=B4=A6=EF=BC=8C=E9=80=80=E5=B7=AE?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E4=B8=8D=E5=8F=82=E4=B8=8E=E8=96=AA=E8=B5=84?= =?UTF-8?q?=E6=A0=B8=E7=AE=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salary/mapper/siaccount/InsuranceAccountDetailMapper.xml | 2 +- src/com/engine/salary/service/impl/SIAccountServiceImpl.java | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/com/engine/salary/mapper/siaccount/InsuranceAccountDetailMapper.xml b/src/com/engine/salary/mapper/siaccount/InsuranceAccountDetailMapper.xml index afec1fb8f..7d9189b4a 100644 --- a/src/com/engine/salary/mapper/siaccount/InsuranceAccountDetailMapper.xml +++ b/src/com/engine/salary/mapper/siaccount/InsuranceAccountDetailMapper.xml @@ -284,7 +284,7 @@ t.fund_per_json,t.fund_com_json,t.other_per_json, t.other_com_json,t.social_per_sum,t.social_com_sum, t.fund_per_sum,t.fund_com_sum,t.other_per_sum, - t.other_com_sum,t.per_sum,t.com_sum + t.other_com_sum,t.per_sum,t.com_sum,t.payment_status FROM hrsa_bill_detail t WHERE t.delete_type = 0 diff --git a/src/com/engine/salary/service/impl/SIAccountServiceImpl.java b/src/com/engine/salary/service/impl/SIAccountServiceImpl.java index b717ceeff..76235c009 100644 --- a/src/com/engine/salary/service/impl/SIAccountServiceImpl.java +++ b/src/com/engine/salary/service/impl/SIAccountServiceImpl.java @@ -889,6 +889,8 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { public List queryList(String billMonth, Long taxAgentId, List employeeIds) { List insuranceAccountDetailPOS = getInsuranceAccountDetailMapper().queryList(billMonth, taxAgentId, employeeIds); + //退差数据不参与薪资核算 + insuranceAccountDetailPOS = insuranceAccountDetailPOS.stream().filter(f -> f.getPaymentStatus().equals(PaymentStatusEnum.COMMON.getValue()) || f.getPaymentStatus().equals(PaymentStatusEnum.REPAIR.getValue())).collect(Collectors.toList()); List list = buildNewInsuranceDetailPOS(insuranceAccountDetailPOS); // InsuranceAccountDetailPOEncrypt.decryptInsuranceAccountDetailPOList(list); return list; From 2b29813f6b9f519b7e228450a639343eef742c4e Mon Sep 17 00:00:00 2001 From: sy Date: Tue, 22 Nov 2022 13:35:09 +0800 Subject: [PATCH 28/50] =?UTF-8?q?=E8=96=AA=E9=85=AC=E7=B3=BB=E7=BB=9F-?= =?UTF-8?q?=E7=A6=8F=E5=88=A9=E5=8F=B0=E8=B4=A6=EF=BC=8C=E9=80=80=E5=B7=AE?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=AF=BC=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../siexport/param/InsuranceExportParam.java | 2 + .../salary/mapper/InsuranceExportMapper.java | 1 + .../salary/mapper/InsuranceExportMapper.xml | 77 +++++++++++++++++++ .../service/impl/SIAccountServiceImpl.java | 6 ++ .../service/impl/SIExportServiceImpl.java | 45 ++++++++--- .../service/impl/SIRecessionServiceImpl.java | 2 +- .../engine/salary/web/SIExportController.java | 4 +- 7 files changed, 125 insertions(+), 12 deletions(-) diff --git a/src/com/engine/salary/entity/siexport/param/InsuranceExportParam.java b/src/com/engine/salary/entity/siexport/param/InsuranceExportParam.java index 74491be6b..d7cd4966d 100644 --- a/src/com/engine/salary/entity/siexport/param/InsuranceExportParam.java +++ b/src/com/engine/salary/entity/siexport/param/InsuranceExportParam.java @@ -25,4 +25,6 @@ public class InsuranceExportParam extends BaseQueryParam { private String billMonth; private String paymentOrganization; + + private Long creator; } diff --git a/src/com/engine/salary/mapper/InsuranceExportMapper.java b/src/com/engine/salary/mapper/InsuranceExportMapper.java index ec1bc4287..ffed6713f 100644 --- a/src/com/engine/salary/mapper/InsuranceExportMapper.java +++ b/src/com/engine/salary/mapper/InsuranceExportMapper.java @@ -20,4 +20,5 @@ public interface InsuranceExportMapper { List exportAccount(@Param("paymentStatus") Integer paymentStatus, @Param("param") InsuranceExportParam param); + List exportRecessionAccount(@Param("paymentStatus") Integer paymentStatus, @Param("param") InsuranceExportParam param); } diff --git a/src/com/engine/salary/mapper/InsuranceExportMapper.xml b/src/com/engine/salary/mapper/InsuranceExportMapper.xml index 2c02f2ace..02e48fb98 100644 --- a/src/com/engine/salary/mapper/InsuranceExportMapper.xml +++ b/src/com/engine/salary/mapper/InsuranceExportMapper.xml @@ -113,4 +113,81 @@ where e.status not in (7) and (e.accounttype is null or e.accounttype = 0) + + + + + diff --git a/src/com/engine/salary/service/impl/SIAccountServiceImpl.java b/src/com/engine/salary/service/impl/SIAccountServiceImpl.java index 76235c009..704aef6f5 100644 --- a/src/com/engine/salary/service/impl/SIAccountServiceImpl.java +++ b/src/com/engine/salary/service/impl/SIAccountServiceImpl.java @@ -567,6 +567,12 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { overView.put("id", "4"); overView.put("content", SalaryI18nUtil.getI18nLabel(99927, "总览")); tabList.add(overView); + + Map recession = new HashMap<>(); + recession.put("id", "5"); + recession.put("content", SalaryI18nUtil.getI18nLabel(92270, "退差")); + tabList.add(recession); + insuranceAccountTabDTO.setTabList(tabList); insuranceAccountTabDTO.setShow(isShow); insuranceAccountTabDTO.setBillMonth(build.getBillMonth()); diff --git a/src/com/engine/salary/service/impl/SIExportServiceImpl.java b/src/com/engine/salary/service/impl/SIExportServiceImpl.java index 1e05edf05..504a69e8e 100644 --- a/src/com/engine/salary/service/impl/SIExportServiceImpl.java +++ b/src/com/engine/salary/service/impl/SIExportServiceImpl.java @@ -28,6 +28,7 @@ import com.engine.salary.mapper.sicategory.ICategoryMapper; import com.engine.salary.mapper.taxagent.TaxAgentMapper; import com.engine.salary.service.SIExportService; import com.engine.salary.service.SISchemeService; +import com.engine.salary.service.TaxAgentService; import com.engine.salary.sys.entity.vo.OrderRuleVO; import com.engine.salary.sys.service.SalarySysConfService; import com.engine.salary.sys.service.impl.SalarySysConfServiceImpl; @@ -36,6 +37,7 @@ import com.engine.salary.util.SalaryEnumUtil; import com.engine.salary.util.SalaryI18nUtil; import com.engine.salary.util.db.MapperProxyFactory; import com.engine.salary.util.excel.ExcelUtil; +import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.MapUtils; import org.apache.commons.lang3.StringUtils; import org.apache.poi.xssf.usermodel.XSSFWorkbook; @@ -84,6 +86,10 @@ public class SIExportServiceImpl extends Service implements SIExportService { return MapperProxyFactory.getProxy(InsuranceBaseInfoMapper.class); } + private TaxAgentService getTaxAgentService(User user) { + return ServiceUtil.getService(TaxAgentServiceImpl.class, user); + } + @Override public XSSFWorkbook exportOverView(InsuranceExportParam queryParam) { List insuranceAccountDetailPOS = getInsuranceAccountDetailMapper().selectList(queryParam.getBillMonth(), StringUtils.isBlank(queryParam.getPaymentOrganization()) ? null : Long.valueOf(queryParam.getPaymentOrganization())); @@ -137,16 +143,35 @@ public class SIExportServiceImpl extends Service implements SIExportService { OrderRuleVO orderRule = getSalarySysConfService(user).orderRule(); param.setOrderRule(orderRule); - List accountExportPOS = getInsuranceExportMapper().exportAccount(paymentStatus, param); + List accountExportPOS = new ArrayList<>(); + if (paymentStatus.equals(PaymentStatusEnum.RECESSION.getValue())) { + accountExportPOS = getInsuranceExportMapper().exportRecessionAccount(paymentStatus, param); + // 分权逻辑 + Boolean needAuth = getTaxAgentService(user).isNeedAuth((long) user.getUID()); + if (needAuth) { + Collection taxAgentPOS = getTaxAgentService(user).listAllTaxAgents((long) user.getUID()); + List taxAgents = taxAgentPOS.stream().map(TaxAgentPO::getId).collect(Collectors.toList()); + if (CollectionUtils.isEmpty(taxAgents)) { + //防止普通用户查询 + accountExportPOS = new ArrayList<>(); + } else { + accountExportPOS.stream().filter(f -> taxAgents.contains(f.getPaymentOrganization())).collect(Collectors.toList()); + } + } + } else { + accountExportPOS = getInsuranceExportMapper().exportAccount(paymentStatus, param); + } //过滤出福利档案基础信息表中runStatus为正在缴纳和待减员的人员 - List baseInfoPOList = getInsuranceBaseInfoMapper().listAll(); - List canAccountIds = baseInfoPOList.stream() - .filter(f->f.getPaymentOrganization().toString().equals(param.getPaymentOrganization()) - && (f.getRunStatus().equals(EmployeeStatusEnum.PAYING.getValue()) || f.getRunStatus().equals(EmployeeStatusEnum.STAY_DEL.getValue()))) - .map(InsuranceArchivesBaseInfoPO::getEmployeeId) - .collect(Collectors.toList()); - accountExportPOS = accountExportPOS.stream().filter(f -> canAccountIds.contains(f.getEmployeeId())).collect(Collectors.toList()); + if (!paymentStatus.equals(PaymentStatusEnum.RECESSION.getValue())) { + List baseInfoPOList = getInsuranceBaseInfoMapper().listAll(); + List canAccountIds = baseInfoPOList.stream() + .filter(f->f.getPaymentOrganization().toString().equals(param.getPaymentOrganization()) + && (f.getRunStatus().equals(EmployeeStatusEnum.PAYING.getValue()) || f.getRunStatus().equals(EmployeeStatusEnum.STAY_DEL.getValue()))) + .map(InsuranceArchivesBaseInfoPO::getEmployeeId) + .collect(Collectors.toList()); + accountExportPOS = accountExportPOS.stream().filter(f -> canAccountIds.contains(f.getEmployeeId())).collect(Collectors.toList()); + } AccountExportPOEncrypt.decryptAccountExportPOList(accountExportPOS); List columns = new ArrayList<>(); @@ -197,7 +222,9 @@ public class SIExportServiceImpl extends Service implements SIExportService { record.put("employeeStatus", item.getUserStatus() == null ? "" : getDefaultLabelByValue(item.getUserStatus())); ResourceFromEnum from = SalaryEnumUtil.enumMatchByValue(item.getResourceFrom(), ResourceFromEnum.values(), ResourceFromEnum.class); record.put("sourceFrom", SalaryI18nUtil.getI18nLabel(from.getLabelId(), from.getDefaultLabel())); - record.put("socialPayOrg", paymentMap.get(item.getSocialPayOrg()) == null ? "" : paymentMap.get(item.getSocialPayOrg()).getName()); + + record.put("socialPayOrg", paymentMap.get(item.getPaymentOrganization()) == null ? "" : paymentMap.get(item.getPaymentOrganization()).getName()); + record.put("socialAccount", item.getSocialAccount()); record.put("socialSchemeName", schemeIdNameMap.get(item.getSocialSchemeId())); if (StringUtils.isNotEmpty(item.getSocialPaymentBaseString())) { diff --git a/src/com/engine/salary/service/impl/SIRecessionServiceImpl.java b/src/com/engine/salary/service/impl/SIRecessionServiceImpl.java index 0c819b984..09cfd8b0b 100644 --- a/src/com/engine/salary/service/impl/SIRecessionServiceImpl.java +++ b/src/com/engine/salary/service/impl/SIRecessionServiceImpl.java @@ -74,7 +74,7 @@ public class SIRecessionServiceImpl extends Service implements SIRecessionServic .paymentStatus(PaymentStatusEnum.COMMON.getValue()) .recessionMonthList(param.getRecessionMonthList()) .employeeIds(employeeIds) - .paymentOrganization(param.getPaymentOrganization()) +// .paymentOrganization(param.getPaymentOrganization()) .build()); InsuranceAccountDetailPOEncrypt.decryptInsuranceAccountDetailPOList(detailPOS); //处理数据 diff --git a/src/com/engine/salary/web/SIExportController.java b/src/com/engine/salary/web/SIExportController.java index aa64af28b..4b749f9ed 100644 --- a/src/com/engine/salary/web/SIExportController.java +++ b/src/com/engine/salary/web/SIExportController.java @@ -162,8 +162,8 @@ public class SIExportController { @Path("/recession/export") @Produces(MediaType.APPLICATION_OCTET_STREAM) public Response exportRecession(@Context HttpServletRequest request, @Context HttpServletResponse response, - @QueryParam("billMonth") String billMonth,@QueryParam("paymentOrganization") String paymentOrganization) { - InsuranceExportParam param = InsuranceExportParam.builder().billMonth(billMonth).paymentOrganization(paymentOrganization).build(); + @QueryParam("billMonth") String billMonth,@QueryParam("creator") Long creator) { + InsuranceExportParam param = InsuranceExportParam.builder().billMonth(billMonth).creator(creator).build(); User user = HrmUserVarify.getUser(request, response); XSSFWorkbook workbook = getSIExportWrapper(user).exportAccount(PaymentStatusEnum.RECESSION.getValue(),param); String time = LocalDate.now().toString(); From 264edf1bf2612b26e07f6873d8864d09e4c7dadb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Tue, 22 Nov 2022 15:37:07 +0800 Subject: [PATCH 29/50] =?UTF-8?q?=E5=90=8C=E6=AD=A5=E4=BA=BA=E5=91=98?= =?UTF-8?q?=E8=8C=83=E5=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../engine/salary/cache/SalaryCacheKey.java | 44 ++++- .../mapper/datacollection/EmployMapper.java | 3 + .../mapper/datacollection/EmployMapper.xml | 16 ++ .../service/TaxAgentManageRangeService.java | 44 +---- .../impl/TaxAgentManageRangeServiceImpl.java | 172 +++++++----------- .../engine/salary/web/TaxAgentController.java | 18 +- .../salary/wrapper/TaxAgentWrapper.java | 30 +++ 7 files changed, 173 insertions(+), 154 deletions(-) diff --git a/src/com/engine/salary/cache/SalaryCacheKey.java b/src/com/engine/salary/cache/SalaryCacheKey.java index 01f0747a9..7f1e4e5a0 100644 --- a/src/com/engine/salary/cache/SalaryCacheKey.java +++ b/src/com/engine/salary/cache/SalaryCacheKey.java @@ -9,15 +9,55 @@ package com.engine.salary.cache; */ public class SalaryCacheKey { + /** + * 人员范围同步 + */ + public final static String TAX_AGENT_MANAGE_RANGE_SYNC = "TAX_AGENT_MANAGE_RANGE_SYNC"; /** * 核算进度 */ - public final static String ACCT_PROGRESS = "ACCT_PROGRESS_"; + public final static String ACCT_PROGRESS = "ACCT_PROGRESS"; + + /** + * 薪资核算的账套配置 + */ + public final static String ACCT_SOB_CONFIG = "ACCT_SOB_CONFIG"; /** * 考勤进度 */ - public final static String ATTEND_PROGRESS = "ATTEND_PROGRESS_"; + public final static String ATTEND_PROGRESS = "ATTEND_PROGRESS"; + + /** + * 工资单发放进度 + */ + public final static String SALARY_GRANT_PROGRESS = "SALARY_GRANT_PROGRESS"; + + /** + * 工资单撤回进度 + */ + public final static String SALARY_WITHDRAW_PROGRESS = "SALARY_WITHDRAW_PROGRESS"; + + /** + * ecology系统的token + */ + public final static String ECOLOGY_TOKEN = "ECOLOGY_TOKEN"; + + /** + * 个税申报表 + */ + public final static String TAX_DECLARATION = "TAX_DECLARATION"; + + /** + * 人员报送 + */ + public final static String EMPLOYEE_DECLARE = "EMPLOYEE_DECLARE"; + + /** + * 自定义业务数据 + */ + public final static String CUSTOM_DATA = "CUSTOM_DATA"; + } diff --git a/src/com/engine/salary/mapper/datacollection/EmployMapper.java b/src/com/engine/salary/mapper/datacollection/EmployMapper.java index 9202a26af..a690bdc2d 100644 --- a/src/com/engine/salary/mapper/datacollection/EmployMapper.java +++ b/src/com/engine/salary/mapper/datacollection/EmployMapper.java @@ -50,4 +50,7 @@ public interface EmployMapper { List getDeptInfoList(@Param("departmentIds") List departmentIds); List getSubCompanyInfoList(@Param("subDepartmentIds") List subDepartmentIds); + + List listAll(); + } \ No newline at end of file diff --git a/src/com/engine/salary/mapper/datacollection/EmployMapper.xml b/src/com/engine/salary/mapper/datacollection/EmployMapper.xml index adc1f55a2..5be423d3c 100644 --- a/src/com/engine/salary/mapper/datacollection/EmployMapper.xml +++ b/src/com/engine/salary/mapper/datacollection/EmployMapper.xml @@ -232,6 +232,22 @@ and (e.accounttype is null or e.accounttype = 0) + + select e.id as employeeId, e.lastname as username, - e.status as status, - e.workcode as workcode, - e.certificatenum as idNo, d.departmentname as departmentName, d.id as departmentId, + sc.SUBCOMPANYNAME as subcompanyName, c.jobtitlename as jobtitleName, c.id as jobtitleId, e.companystartdate as companystartdate, e.mobile as mobile, - e.enddate as dismissdate, - sc.SUBCOMPANYNAME as subcompanyName + e.status as status, + e.workcode as workcode, + e.sex as sex, + e.email as email, + e.telephone as telephone, + e.jobcall as jobcall, + e.birthday as birthday, + e.certificatenum as idNo, + c.id as jobtitleId, + e.enddate as dismissdate from hrmresource e left join hrmdepartment d on e.departmentid = d.id left join hrmjobtitles c on e.jobtitle = c.id