From 4db0fdc6997319c3572915eaed29945a9957c97b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Fri, 27 Sep 2024 17:18:07 +0800 Subject: [PATCH 01/43] =?UTF-8?q?SQL=20=E4=BD=BF=E7=94=A8mybatis=E6=89=A7?= =?UTF-8?q?=E8=A1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salary/mapper/InsuranceExportMapper.java | 6 ------ src/com/engine/salary/mapper/SQLMapper.java | 18 ++++++++++++++++++ src/com/engine/salary/mapper/SQLMapper.xml | 7 +++++++ .../service/impl/FormulaRunServiceImpl.java | 11 +++++++++++ 4 files changed, 36 insertions(+), 6 deletions(-) create mode 100644 src/com/engine/salary/mapper/SQLMapper.java create mode 100644 src/com/engine/salary/mapper/SQLMapper.xml diff --git a/src/com/engine/salary/mapper/InsuranceExportMapper.java b/src/com/engine/salary/mapper/InsuranceExportMapper.java index 2464c49de..b4ef25f66 100644 --- a/src/com/engine/salary/mapper/InsuranceExportMapper.java +++ b/src/com/engine/salary/mapper/InsuranceExportMapper.java @@ -8,12 +8,6 @@ import org.apache.ibatis.annotations.Param; import java.util.List; -/** - * @Author weaver_cl - * - * @Date 2022/4/18 - * @Version V1.0 - **/ public interface InsuranceExportMapper { List exportExcelAccount(@Param("param") InsuranceComparisonResultQueryParam param); diff --git a/src/com/engine/salary/mapper/SQLMapper.java b/src/com/engine/salary/mapper/SQLMapper.java new file mode 100644 index 000000000..4d998fa88 --- /dev/null +++ b/src/com/engine/salary/mapper/SQLMapper.java @@ -0,0 +1,18 @@ +package com.engine.salary.mapper; + +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * SQLMapper + *

Copyright: Copyright (c) 2024

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +public interface SQLMapper { + List runSQL(@Param("sql") String sql); +} diff --git a/src/com/engine/salary/mapper/SQLMapper.xml b/src/com/engine/salary/mapper/SQLMapper.xml new file mode 100644 index 000000000..bba76972c --- /dev/null +++ b/src/com/engine/salary/mapper/SQLMapper.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/src/com/engine/salary/service/impl/FormulaRunServiceImpl.java b/src/com/engine/salary/service/impl/FormulaRunServiceImpl.java index 2b76af128..07c5ae633 100644 --- a/src/com/engine/salary/service/impl/FormulaRunServiceImpl.java +++ b/src/com/engine/salary/service/impl/FormulaRunServiceImpl.java @@ -9,9 +9,11 @@ import com.engine.salary.enums.salaryformula.ReferenceTypeEnum; import com.engine.salary.formlua.core.QlExpress; import com.engine.salary.formlua.entity.parameter.DataType; import com.engine.salary.formlua.entity.standard.ExcelResult; +import com.engine.salary.mapper.SQLMapper; import com.engine.salary.service.FormulaRunService; import com.engine.salary.sys.enums.OpenEnum; import com.engine.salary.util.JsonUtil; +import com.engine.salary.util.db.MapperProxyFactory; import com.ql.util.express.DefaultContext; import com.ql.util.express.ExpressRunner; import lombok.extern.slf4j.Slf4j; @@ -41,6 +43,9 @@ public class FormulaRunServiceImpl extends Service implements FormulaRunService QlExpress express = new QlExpress(); + private SQLMapper getSQLMapper(){ + return MapperProxyFactory.getProxy(SQLMapper.class); + } @Override public ExcelResult run(ExpressFormula expressFormula, List formulaVars, DataCollectionEmployee simpleEmployee) { @@ -123,6 +128,12 @@ public class FormulaRunServiceImpl extends Service implements FormulaRunService } } } else { + +// List list = getSQLMapper().runSQL(sql); +// if(CollectionUtil.isNotEmpty(list)){ +// result = Util.null2String(list.get(0).get(sqlReturnKey)); +// } + RecordSet rs = new RecordSet(); if (rs.execute(sql)) { if (rs.next()) { From 93d2980ad8d50587d6a54c8e8c3dd471f9b09f41 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Sun, 29 Sep 2024 10:37:38 +0800 Subject: [PATCH 02/43] =?UTF-8?q?=E5=88=B7=E6=96=B0=E6=A0=B8=E7=AE=97?= =?UTF-8?q?=E4=BA=BA=E5=91=98=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/SalaryAcctEmployeeServiceImpl.java | 76 +++++++++++-------- .../salary/web/SalaryAcctController.java | 6 +- .../wrapper/SalaryAcctEmployeeWrapper.java | 4 +- 3 files changed, 51 insertions(+), 35 deletions(-) diff --git a/src/com/engine/salary/service/impl/SalaryAcctEmployeeServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctEmployeeServiceImpl.java index 7ca1a1f4d..a36f2dd57 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctEmployeeServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctEmployeeServiceImpl.java @@ -5,9 +5,9 @@ import cn.hutool.core.date.DateUtil; import com.api.formmode.mybatis.util.SqlProxyHandle; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; +import com.engine.hrmelog.entity.dto.LoggerContext; import com.engine.salary.config.SalaryElogConfig; import com.engine.salary.constant.SalaryDefaultTenantConstant; -import com.engine.hrmelog.entity.dto.LoggerContext; import com.engine.salary.entity.datacollection.DataCollectionEmployee; import com.engine.salary.entity.salaryacct.bo.SalaryAcctEmployeeBO; import com.engine.salary.entity.salaryacct.dto.SalaryAcctEmployeeCountDTO; @@ -444,6 +444,11 @@ public class SalaryAcctEmployeeServiceImpl extends Service implements SalaryAcct @Override public void deleteByIds(Collection ids) { + + if (CollectionUtils.isEmpty(ids)) { + return; + } + // 删除薪资核算人员 getSalaryAcctEmployeeMapper().deleteByIds(ids); // 删除薪资核算人员对应的薪资核算结果 @@ -547,36 +552,47 @@ public class SalaryAcctEmployeeServiceImpl extends Service implements SalaryAcct @Override public void refresh(Long salaryAcctRecordId) { - // 查询薪资核算人员 - List salaryAcctEmployeePOS = listBySalaryAcctRecordId(salaryAcctRecordId); - if (CollectionUtils.isEmpty(salaryAcctEmployeePOS)) { - return; - } - List employeeIds = SalaryEntityUtil.properties(salaryAcctEmployeePOS, SalaryAcctEmployeePO::getEmployeeId, Collectors.toList()); // 查询薪资核算记录 SalaryAcctRecordPO salaryAcctRecordPO = getSalaryAcctRecordService(user).getById(salaryAcctRecordId); if (Objects.isNull(salaryAcctRecordPO)) { throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98747, "薪资核算记录不存在或已被删除")); } + + // 根据薪资账套查询人员 + List salaryEmployees = getSalaryEmployeeService(user).listBySalarySobId(salaryAcctRecordPO.getSalarySobId()); + if (CollectionUtils.isEmpty(salaryEmployees)) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98747, "未查询到账套下关联人员")); + } + + // 根据薪资账套查询薪资周期 + SalarySobCycleDTO salarySobCycleDTO = getSalarySobService(user).getSalarySobCycle(salaryAcctRecordPO.getSalarySobId(), SalaryDateUtil.localDate2YearMonth(salaryAcctRecordPO.getSalaryMonth())); + //查询账套对应的扣缴义务人 SalarySobPO salarySobPO = getSalarySobService(user).getById(salaryAcctRecordPO.getSalarySobId()); - //过滤掉不属于当前账套扣缴义务人的人员 Long taxAgentId = salarySobPO.getTaxAgentId(); - // 查询薪资核算记录所用的帐套的薪资周期 - SalarySobCycleDTO salarySobCycleDTO = getSalarySobService(user).getSalarySobCycle(salaryAcctRecordPO.getSalarySobId(), SalaryDateUtil.localDate2YearMonth(salaryAcctRecordPO.getSalaryMonth())); // 查询薪资档案,获取人员的个税扣缴义务人 + List employeeIds = SalaryEntityUtil.properties(salaryEmployees, DataCollectionEmployee::getEmployeeId, Collectors.toList()); List salaryArchiveDataDTOS = getSalaryArchiveService(user).getSalaryArchiveTaxAgentData(salarySobCycleDTO.getSalaryCycle(), employeeIds, taxAgentId); - List employees = getSalaryEmployeeService(user).getEmployeeByIdsAll(employeeIds); // 转换成薪资核算人员po - List newSalaryAcctEmployeePOS = SalaryAcctEmployeeBO.convert2Employee(employees, salaryAcctRecordPO, salaryArchiveDataDTOS, (long) user.getUID()); - newSalaryAcctEmployeePOS = newSalaryAcctEmployeePOS.stream().filter(po -> Objects.equals(taxAgentId, po.getTaxAgentId())).collect(Collectors.toList()); - // 删除以前的薪资核算人员 - getSalaryAcctEmployeeMapper().deleteBySalaryAcctRecordIds(Collections.singleton(salaryAcctRecordId)); - // 插入新的薪资核算人员 - if (CollectionUtils.isNotEmpty(newSalaryAcctEmployeePOS)) { - batchSave(newSalaryAcctEmployeePOS); - } + List newEmps = SalaryAcctEmployeeBO.convert2Employee(salaryEmployees, salaryAcctRecordPO, salaryArchiveDataDTOS, (long) user.getUID()); + //过滤掉不属于当前账套扣缴义务人的人员 + newEmps = newEmps.stream().filter(po -> Objects.equals(taxAgentId, po.getTaxAgentId())).collect(Collectors.toList()); + Map newEmpMap = SalaryEntityUtil.convert2Map(newEmps, e -> e.getTaxAgentId() + "_" + e.getEmployeeId()); + + + // 查询薪资核算人员 + List oldEmps = listBySalaryAcctRecordId(salaryAcctRecordId); + Map oldEmpMap = SalaryEntityUtil.convert2Map(oldEmps, e -> e.getTaxAgentId() + "_" + e.getEmployeeId()); + + //新增 + List addEmps = newEmps.stream().filter(po -> !oldEmpMap.containsKey(po.getTaxAgentId() + "_" + po.getEmployeeId())).collect(Collectors.toList()); + + //删除 + List delIds = oldEmps.stream().filter(po -> !newEmpMap.containsKey(po.getTaxAgentId() + "_" + po.getEmployeeId())).map(SalaryAcctEmployeePO::getId).collect(Collectors.toList()); + + deleteByIds(delIds); + batchSave(addEmps); } @@ -712,20 +728,20 @@ public class SalaryAcctEmployeeServiceImpl extends Service implements SalaryAcct // } // list = list.stream().filter(po -> employeeIdsByGradeFilter.contains(po.getEmployeeId())).collect(Collectors.toList()); // } - // 岗位过滤 + // 岗位过滤 List position = param.getPosition(); if (CollectionUtils.isNotEmpty(position)) { - // Set employeeIdsByPostionFilter = new HashSet<>(); - // simpleEmployeeList.forEach(simpleEmployee -> { - // if (simpleEmployee.getPosition() != null && param.getPosition().contains(simpleEmployee.getPosition().getId())) { - // employeeIdsByPostionFilter.add(simpleEmployee.getEmployeeId()); - // } - // }); - // if (CollectionUtils.isEmpty(employeeIdsByPostionFilter)) { - // return Lists.newArrayList(); - // } + // Set employeeIdsByPostionFilter = new HashSet<>(); + // simpleEmployeeList.forEach(simpleEmployee -> { + // if (simpleEmployee.getPosition() != null && param.getPosition().contains(simpleEmployee.getPosition().getId())) { + // employeeIdsByPostionFilter.add(simpleEmployee.getEmployeeId()); + // } + // }); + // if (CollectionUtils.isEmpty(employeeIdsByPostionFilter)) { + // return Lists.newArrayList(); + // } employeeList = employeeList.stream().filter(emp -> position.contains(emp.getJobtitleId())).collect(Collectors.toList()); - } + } // 人事状态过滤 if (CollectionUtils.isNotEmpty(param.getStatus())) { Set employeeIdsByStatus = new HashSet<>(); diff --git a/src/com/engine/salary/web/SalaryAcctController.java b/src/com/engine/salary/web/SalaryAcctController.java index 571884aa5..49fba1129 100644 --- a/src/com/engine/salary/web/SalaryAcctController.java +++ b/src/com/engine/salary/web/SalaryAcctController.java @@ -247,13 +247,13 @@ public class SalaryAcctController { return new ResponseResult(user).run(getSalaryAcctEmployeeWrapper(user)::checkTaxAgent, param.getSalaryAcctRecordId()); } - //刷新薪资核算人员的个税扣缴义务人 + //刷新薪资核算人员 @POST - @Path("/acctemployee/refreshTaxAgent") + @Path("/acctemployee/refresh") @Produces(MediaType.APPLICATION_JSON) public String refreshTaxAgent(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryAcctEmpRefreshTaxAgentParam param) { User user = HrmUserVarify.getUser(request, response); - return new ResponseResult(user).run(getSalaryAcctEmployeeWrapper(user)::refreshTaxAgent, param.getSalaryAcctRecordId()); + return new ResponseResult(user).run(getSalaryAcctEmployeeWrapper(user)::refresh, param.getSalaryAcctRecordId()); } //从环比上月减少添加薪资核算人员 diff --git a/src/com/engine/salary/wrapper/SalaryAcctEmployeeWrapper.java b/src/com/engine/salary/wrapper/SalaryAcctEmployeeWrapper.java index 095935fd5..c0d207d45 100644 --- a/src/com/engine/salary/wrapper/SalaryAcctEmployeeWrapper.java +++ b/src/com/engine/salary/wrapper/SalaryAcctEmployeeWrapper.java @@ -184,11 +184,11 @@ public class SalaryAcctEmployeeWrapper extends Service { } /** - * 刷新个税扣缴义务人 + * 刷新核算人员 * * @param salaryAcctRecordId 薪资核算记录的id */ - public void refreshTaxAgent(Long salaryAcctRecordId) { + public void refresh(Long salaryAcctRecordId) { getSalaryAcctEmployeeService(user).refresh(salaryAcctRecordId); } From b4050e4ee850de70bcadbae3556671810023ff80 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Sun, 29 Sep 2024 16:58:41 +0800 Subject: [PATCH 03/43] =?UTF-8?q?=E6=8A=A5=E8=A1=A8=E5=BF=AB=E7=85=A7?= =?UTF-8?q?=E6=90=9C=E7=B4=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SalaryStatisticsReportServiceImpl.java | 184 +++++++++++------- .../SalaryStatisticsReportWrapper.java | 44 ++--- .../impl/SalaryAcctEmployeeServiceImpl.java | 109 ++++------- .../sys/constant/SalarySysConstant.java | 11 ++ 4 files changed, 187 insertions(+), 161 deletions(-) diff --git a/src/com/engine/salary/report/service/impl/SalaryStatisticsReportServiceImpl.java b/src/com/engine/salary/report/service/impl/SalaryStatisticsReportServiceImpl.java index 42a65d485..ab16db7cc 100644 --- a/src/com/engine/salary/report/service/impl/SalaryStatisticsReportServiceImpl.java +++ b/src/com/engine/salary/report/service/impl/SalaryStatisticsReportServiceImpl.java @@ -54,6 +54,8 @@ import weaver.wechat.util.Utils; import java.util.*; import java.util.stream.Collectors; +import static com.engine.salary.sys.constant.SalarySysConstant.REPORT_ORGANIZATIN_TYPE; + /** * 薪酬统计报表 *

Copyright: Copyright (c) 2022

@@ -71,6 +73,7 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary public static final String LAST_INFO = "lastInfoList"; public static final String SAME_INFO = "sameInfoList"; + private boolean isRealOrg = "1".equals(getSalaryCacheService(user).get(REPORT_ORGANIZATIN_TYPE)); private SalaryStatisticsReportMapper getSalaryStatisticsReportMapper() { return MapperProxyFactory.getProxy(SalaryStatisticsReportMapper.class); @@ -197,16 +200,16 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary this.getSalaryStatisticsReportMapper().updateIgnoreNull(poNew); // 记录日志 - LoggerContext loggerContext = new LoggerContext<>(); - loggerContext.setUser(user); - loggerContext.setTargetId(String.valueOf(poNew.getId())); - loggerContext.setTargetName(poNew.getReportName()); - loggerContext.setOperateType(OperateTypeEnum.UPDATE.getValue()); - loggerContext.setOperateTypeName(SalaryI18nUtil.getI18nLabel( 0, "更新报表")); - loggerContext.setOperatedesc(SalaryI18nUtil.getI18nLabel( 0, "更新报表")); - loggerContext.setOldValues(po); - loggerContext.setNewValues(poNew); - SalaryElogConfig.salaryStatReportLoggerTemplate.write(loggerContext); + LoggerContext loggerContext = new LoggerContext<>(); + loggerContext.setUser(user); + loggerContext.setTargetId(String.valueOf(poNew.getId())); + loggerContext.setTargetName(poNew.getReportName()); + loggerContext.setOperateType(OperateTypeEnum.UPDATE.getValue()); + loggerContext.setOperateTypeName(SalaryI18nUtil.getI18nLabel(0, "更新报表")); + loggerContext.setOperatedesc(SalaryI18nUtil.getI18nLabel(0, "更新报表")); + loggerContext.setOldValues(po); + loggerContext.setNewValues(poNew); + SalaryElogConfig.salaryStatReportLoggerTemplate.write(loggerContext); } else { List list = listByName(saveParam.getReportName()); if (CollectionUtils.isNotEmpty(list)) { @@ -217,15 +220,15 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary getSalaryStatisticsReportMapper().insertIgnoreNull(poNew); // 记录日志 - LoggerContext loggerContext = new LoggerContext<>(); - loggerContext.setUser(user); - loggerContext.setTargetId(String.valueOf(poNew.getId())); - loggerContext.setTargetName(poNew.getReportName()); - loggerContext.setOperateType(OperateTypeEnum.ADD.getValue()); - loggerContext.setOperateTypeName(SalaryI18nUtil.getI18nLabel( 0, "新增报表")); - loggerContext.setOperatedesc(SalaryI18nUtil.getI18nLabel( 0, "新增报表")); - loggerContext.setNewValues(poNew); - SalaryElogConfig.salaryStatReportLoggerTemplate.write(loggerContext); + LoggerContext loggerContext = new LoggerContext<>(); + loggerContext.setUser(user); + loggerContext.setTargetId(String.valueOf(poNew.getId())); + loggerContext.setTargetName(poNew.getReportName()); + loggerContext.setOperateType(OperateTypeEnum.ADD.getValue()); + loggerContext.setOperateTypeName(SalaryI18nUtil.getI18nLabel(0, "新增报表")); + loggerContext.setOperatedesc(SalaryI18nUtil.getI18nLabel(0, "新增报表")); + loggerContext.setNewValues(poNew); + SalaryElogConfig.salaryStatReportLoggerTemplate.write(loggerContext); } return StringUtils.EMPTY; } @@ -305,16 +308,16 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary getSalaryStatisticsItemService(user).saveOrUpdateBatch(salaryStatisticsItemList); //记录日志 - LoggerContext loggerContext = new LoggerContext<>(); - loggerContext.setUser(user); - loggerContext.setTargetId(String.valueOf(po.getId())); - loggerContext.setTargetName(po.getReportName()); - loggerContext.setOperateType(OperateTypeEnum.UPDATE.getValue()); - loggerContext.setOperateTypeName(SalaryI18nUtil.getI18nLabel( 0, "更新报表")); - loggerContext.setOperatedesc(SalaryI18nUtil.getI18nLabel(0, "更新报表")); - loggerContext.setOldValues(oldPO); - loggerContext.setNewValues(po); - SalaryElogConfig.salaryStatReportLoggerTemplate.write(loggerContext); + LoggerContext loggerContext = new LoggerContext<>(); + loggerContext.setUser(user); + loggerContext.setTargetId(String.valueOf(po.getId())); + loggerContext.setTargetName(po.getReportName()); + loggerContext.setOperateType(OperateTypeEnum.UPDATE.getValue()); + loggerContext.setOperateTypeName(SalaryI18nUtil.getI18nLabel(0, "更新报表")); + loggerContext.setOperatedesc(SalaryI18nUtil.getI18nLabel(0, "更新报表")); + loggerContext.setOldValues(oldPO); + loggerContext.setNewValues(po); + SalaryElogConfig.salaryStatReportLoggerTemplate.write(loggerContext); return StringUtils.EMPTY; } @@ -333,17 +336,17 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary getSalaryStatisticsReportMapper().deleteByIds(deleteIds); //删除薪资项 getSalaryStatisticsItemService(user).deleteByReportIds(deleteIds); - list.forEach(e -> { - // 记录日志 - LoggerContext loggerContext = new LoggerContext<>(); - loggerContext.setUser(user); - loggerContext.setTargetId(String.valueOf(e.getId())); - loggerContext.setTargetName(e.getReportName()); - loggerContext.setOperateType(OperateTypeEnum.DELETE.getValue()); - loggerContext.setOperateTypeName(SalaryI18nUtil.getI18nLabel( 0, "删除报表")); - loggerContext.setOperatedesc(SalaryI18nUtil.getI18nLabel( 0, "删除报表") + e.getReportName()); - SalaryElogConfig.salaryStatReportLoggerTemplate.write(loggerContext); - }); + list.forEach(e -> { + // 记录日志 + LoggerContext loggerContext = new LoggerContext<>(); + loggerContext.setUser(user); + loggerContext.setTargetId(String.valueOf(e.getId())); + loggerContext.setTargetName(e.getReportName()); + loggerContext.setOperateType(OperateTypeEnum.DELETE.getValue()); + loggerContext.setOperateTypeName(SalaryI18nUtil.getI18nLabel(0, "删除报表")); + loggerContext.setOperatedesc(SalaryI18nUtil.getI18nLabel(0, "删除报表") + e.getReportName()); + SalaryElogConfig.salaryStatReportLoggerTemplate.write(loggerContext); + }); } Map resultMap = new HashMap<>(2); @@ -396,8 +399,8 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary loggerContext.setTargetId(String.valueOf(po.getId())); loggerContext.setTargetName(po.getReportName()); loggerContext.setOperateType(OperateTypeEnum.ADD.getValue()); - loggerContext.setOperateTypeName(SalaryI18nUtil.getI18nLabel( 0, "新增报表")); - loggerContext.setOperatedesc(SalaryI18nUtil.getI18nLabel( 0, "新增报表")); + loggerContext.setOperateTypeName(SalaryI18nUtil.getI18nLabel(0, "新增报表")); + loggerContext.setOperatedesc(SalaryI18nUtil.getI18nLabel(0, "新增报表")); loggerContext.setNewValues(po); SalaryElogConfig.salaryStatReportLoggerTemplate.write(loggerContext); } @@ -479,7 +482,15 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary List salaryAcctEmployeeList = getSalaryAcctEmployeeService(user).listBySalaryStatisticsReportParam(queryParam); // 设置dimensionValue为维度值 - SalaryStatisticsReportDataDTO salaryStatisticsReportData = SalaryStatisticsReportDataDTO.builder().list(salaryAcctEmployeeList).lastList(Collections.emptyList()).sameList(Collections.emptyList()).salaryStatisticsItemList(salaryStatisticsItemPOS).employeeId((long) user.getUID()).tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY).dimensionValue(param.getDimensionValue()).build(); + SalaryStatisticsReportDataDTO salaryStatisticsReportData = SalaryStatisticsReportDataDTO.builder() + .list(salaryAcctEmployeeList) + .lastList(Collections.emptyList()) + .sameList(Collections.emptyList()) + .salaryStatisticsItemList(salaryStatisticsItemPOS) + .employeeId((long) user.getUID()) + .dimensionValue(param.getDimensionValue()) + .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) + .build(); Map> resultMap = new HashMap<>(); List salaryAcctEmployeeIds = salaryAcctEmployeeList.stream().map(SalaryAcctEmployeePO::getId).collect(Collectors.toList()); @@ -848,44 +859,78 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary Map lastEmpIdDepartIdMap = new HashMap<>(); Map sameEmpIdDepartIdMap = new HashMap<>(); Map departIdNameMap = new HashMap<>(); - simpleEmployeeList.forEach(employee -> { - if (employee.getDepartmentName() != null && employee.getDepartmentId() != null) { - departIdNameMap.put(employee.getDepartmentId(), employee.getDepartmentName()); - departIds.add(employee.getDepartmentId()); - empIdDepartIdMap.put(employee.getEmployeeId(), employee.getDepartmentId()); - } - }); - lastSimpleEmployeeList.forEach(employee -> { - if (employee.getDepartmentName() != null && employee.getDepartmentId() != null) { - lastEmpIdDepartIdMap.put(employee.getEmployeeId(), employee.getDepartmentId()); - } - }); - sameSimpleEmployeeList.forEach(employee -> { - if (employee.getDepartmentName() != null && employee.getDepartmentId() != null) { - sameEmpIdDepartIdMap.put(employee.getEmployeeId(), employee.getDepartmentId()); - } - }); + if (isRealOrg) { + simpleEmployeeList.forEach(employee -> { + if (employee.getDepartmentName() != null && employee.getDepartmentId() != null) { + departIdNameMap.put(employee.getDepartmentId(), employee.getDepartmentName()); + departIds.add(employee.getDepartmentId()); + empIdDepartIdMap.put(employee.getEmployeeId(), employee.getDepartmentId()); + } + }); + lastSimpleEmployeeList.forEach(employee -> { + if (employee.getDepartmentName() != null && employee.getDepartmentId() != null) { + lastEmpIdDepartIdMap.put(employee.getEmployeeId(), employee.getDepartmentId()); + } + }); + sameSimpleEmployeeList.forEach(employee -> { + if (employee.getDepartmentName() != null && employee.getDepartmentId() != null) { + sameEmpIdDepartIdMap.put(employee.getEmployeeId(), employee.getDepartmentId()); + } + }); + } else { + data.getList().forEach(employee -> { + if (employee.getDepartmentName() != null && employee.getDepartmentId() != null) { + departIdNameMap.put(employee.getDepartmentId(), employee.getDepartmentName()); + departIds.add(employee.getDepartmentId()); + empIdDepartIdMap.put(employee.getEmployeeId(), employee.getDepartmentId()); + } + }); + data.getLastList().forEach(employee -> { + if (employee.getDepartmentName() != null && employee.getDepartmentId() != null) { + lastEmpIdDepartIdMap.put(employee.getEmployeeId(), employee.getDepartmentId()); + } + }); + data.getSameList().forEach(employee -> { + if (employee.getDepartmentName() != null && employee.getDepartmentId() != null) { + sameEmpIdDepartIdMap.put(employee.getEmployeeId(), employee.getDepartmentId()); + } + }); + } String dimensionValue = data.getDimensionValue(); departIds.forEach(departId -> { if (dimensionValue == null) { - List departEmployeePOS = data.getList().stream().filter(po -> Objects.equals(empIdDepartIdMap.get(po.getEmployeeId()), departId)).collect(Collectors.toList()); - List lastDepartEmployeePOS = data.getLastList().stream().filter(po -> Objects.equals(lastEmpIdDepartIdMap.get(po.getEmployeeId()), departId)).collect(Collectors.toList()); - List sameDepartEmployeePOS = data.getSameList().stream().filter(po -> Objects.equals(sameEmpIdDepartIdMap.get(po.getEmployeeId()), departId)).collect(Collectors.toList()); + List departEmployeePOS = data.getList().stream().filter(po -> Objects.equals(po.getDepartmentId(), departId)).collect(Collectors.toList()); + List lastDepartEmployeePOS = data.getLastList().stream().filter(po -> Objects.equals(po.getDepartmentId(), departId)).collect(Collectors.toList()); + List sameDepartEmployeePOS = data.getSameList().stream().filter(po -> Objects.equals(po.getDepartmentId(), departId)).collect(Collectors.toList()); + if (isRealOrg) { + departEmployeePOS = data.getList().stream().filter(po -> Objects.equals(empIdDepartIdMap.get(po.getEmployeeId()), departId)).collect(Collectors.toList()); + lastDepartEmployeePOS = data.getLastList().stream().filter(po -> Objects.equals(lastEmpIdDepartIdMap.get(po.getEmployeeId()), departId)).collect(Collectors.toList()); + sameDepartEmployeePOS = data.getSameList().stream().filter(po -> Objects.equals(sameEmpIdDepartIdMap.get(po.getEmployeeId()), departId)).collect(Collectors.toList()); + } Map temp = new HashMap<>(); temp.put(DM, departIdNameMap.get(departId)); temp.putAll(SalaryStatisticsReportBO.calculateItem(departEmployeePOS, lastDepartEmployeePOS, sameDepartEmployeePOS, salaryAcctResultValueMap, data.getSalaryStatisticsItemList())); records.add(temp); } else if (StringUtils.equals(dimensionValue, departIdNameMap.get(departId))) { - List departEmployeePOS = data.getList().stream().filter(po -> Objects.equals(empIdDepartIdMap.get(po.getEmployeeId()), departId)).collect(Collectors.toList()); + List departEmployeePOS = data.getList().stream().filter(po -> Objects.equals(po.getDepartmentId(), departId)).collect(Collectors.toList()); + if (isRealOrg) { + data.getList().stream().filter(po -> Objects.equals(empIdDepartIdMap.get(po.getEmployeeId()), departId)).collect(Collectors.toList()); + } data.setListByDimensionValue(departEmployeePOS); } }); if (dimensionValue == null) { - List noGroupingList = data.getList().stream().filter(po -> empIdDepartIdMap.get(po.getEmployeeId()) == null).collect(Collectors.toList()); - List lastNoGroupingList = data.getLastList().stream().filter(po -> lastEmpIdDepartIdMap.get(po.getEmployeeId()) == null).collect(Collectors.toList()); - List sameNoGroupingList = data.getSameList().stream().filter(po -> lastEmpIdDepartIdMap.get(po.getEmployeeId()) == null).collect(Collectors.toList()); + List noGroupingList = data.getList().stream().filter(po -> po.getDepartmentId() == null).collect(Collectors.toList()); + List lastNoGroupingList = data.getLastList().stream().filter(po -> po.getDepartmentId() == null).collect(Collectors.toList()); + List sameNoGroupingList = data.getSameList().stream().filter(po -> po.getDepartmentId() == null).collect(Collectors.toList()); + if (isRealOrg) { + noGroupingList = data.getList().stream().filter(po -> empIdDepartIdMap.get(po.getEmployeeId()) == null).collect(Collectors.toList()); + lastNoGroupingList = data.getLastList().stream().filter(po -> lastEmpIdDepartIdMap.get(po.getEmployeeId()) == null).collect(Collectors.toList()); + sameNoGroupingList = data.getSameList().stream().filter(po -> lastEmpIdDepartIdMap.get(po.getEmployeeId()) == null).collect(Collectors.toList()); + + } if (CollectionUtils.isNotEmpty(noGroupingList)) { Map noGrouping = new HashMap<>(); noGrouping.put(DM, SalaryI18nUtil.getI18nLabel(153462, "无分组")); @@ -893,7 +938,10 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary records.add(noGrouping); } } else if (StringUtils.equals(dimensionValue, "无分组")) { - List noGroupingList = data.getList().stream().filter(po -> empIdDepartIdMap.get(po.getEmployeeId()) == null).collect(Collectors.toList()); + List noGroupingList = data.getList().stream().filter(po -> po.getDepartmentId() == null).collect(Collectors.toList()); + if(isRealOrg){ + noGroupingList = data.getList().stream().filter(po -> empIdDepartIdMap.get(po.getEmployeeId()) == null).collect(Collectors.toList()); + } data.setListByDimensionValue(noGroupingList); } diff --git a/src/com/engine/salary/report/wrapper/SalaryStatisticsReportWrapper.java b/src/com/engine/salary/report/wrapper/SalaryStatisticsReportWrapper.java index 22fb6261f..7556b7bf8 100644 --- a/src/com/engine/salary/report/wrapper/SalaryStatisticsReportWrapper.java +++ b/src/com/engine/salary/report/wrapper/SalaryStatisticsReportWrapper.java @@ -332,28 +332,28 @@ public class SalaryStatisticsReportWrapper extends Service { if (empDimensionOptional.isPresent()) { empDimensionId = empDimensionOptional.get(); } - if (StringUtils.isNotBlank(salaryReportIds) && salaryReportIds.contains(id + "")) { - //报表中缓存的条件 - salaryReportConditions = Utils.null2String(getSalaryCacheService(user).get(SalaryCacheKey.SALARY_REPORT_CONDITIONS + id)); - if (StringUtils.isNotBlank(salaryReportConditions) && salaryReportConditions.contains(paramMd5)) { - Map result = getSalaryCacheService(user).get(SalaryCacheKey.SALARY_REPORT_DATA + id + "_" + paramMd5); - if (param.getDimensionId().equals(empDimensionId)) { - // 人员维度需要分页 - Map finalResultMap = new HashMap<>(); - PageInfo> pageInfo = (PageInfo>) result.get("pageInfo"); - PageInfo> finalPageInfo = SalaryPageUtil.buildPage(param.getCurrent(), param.getPageSize()); - finalPageInfo.setTotal(pageInfo.getList().size()); - finalPageInfo.setList(SalaryPageUtil.subList(param.getCurrent(), param.getPageSize(), pageInfo.getList())); - finalResultMap.put("pageInfo", finalPageInfo); - finalResultMap.put("columns", result.get("columns")); - finalResultMap.put("countResult", result.get("countResult")); - finalResultMap.put("reportId", id); - return finalResultMap; - } - - return result; - } - } +// if (StringUtils.isNotBlank(salaryReportIds) && salaryReportIds.contains(id + "")) { +// //报表中缓存的条件 +// salaryReportConditions = Utils.null2String(getSalaryCacheService(user).get(SalaryCacheKey.SALARY_REPORT_CONDITIONS + id)); +// if (StringUtils.isNotBlank(salaryReportConditions) && salaryReportConditions.contains(paramMd5)) { +// Map result = getSalaryCacheService(user).get(SalaryCacheKey.SALARY_REPORT_DATA + id + "_" + paramMd5); +// if (param.getDimensionId().equals(empDimensionId)) { +// // 人员维度需要分页 +// Map finalResultMap = new HashMap<>(); +// PageInfo> pageInfo = (PageInfo>) result.get("pageInfo"); +// PageInfo> finalPageInfo = SalaryPageUtil.buildPage(param.getCurrent(), param.getPageSize()); +// finalPageInfo.setTotal(pageInfo.getList().size()); +// finalPageInfo.setList(SalaryPageUtil.subList(param.getCurrent(), param.getPageSize(), pageInfo.getList())); +// finalResultMap.put("pageInfo", finalPageInfo); +// finalResultMap.put("columns", result.get("columns")); +// finalResultMap.put("countResult", result.get("countResult")); +// finalResultMap.put("reportId", id); +// return finalResultMap; +// } +// +// return result; +// } +// } // 列表data diff --git a/src/com/engine/salary/service/impl/SalaryAcctEmployeeServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctEmployeeServiceImpl.java index a36f2dd57..0dce7dbda 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctEmployeeServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctEmployeeServiceImpl.java @@ -47,6 +47,8 @@ import weaver.hrm.User; import java.util.*; import java.util.stream.Collectors; +import static com.engine.salary.sys.constant.SalarySysConstant.REPORT_ORGANIZATIN_TYPE; + /** * 薪资核算人员 *

Copyright: Copyright (c) 2022

@@ -102,6 +104,11 @@ public class SalaryAcctEmployeeServiceImpl extends Service implements SalaryAcct return ServiceUtil.getService(SalarySysConfServiceImpl.class, user); } + private SalaryCacheService getSalaryCacheService(User user) { + return ServiceUtil.getService(SalaryCacheServiceImpl.class, user); + } + + private boolean isRealOrg = "1".equals(getSalaryCacheService(user).get(REPORT_ORGANIZATIN_TYPE)); @Override public List countBySalaryAcctRecordId(Collection salaryAcctRecordIds) { @@ -656,11 +663,6 @@ public class SalaryAcctEmployeeServiceImpl extends Service implements SalaryAcct lambdaQueryChainWrapper.setSalaryMonths(yearMonths); } - // 收入所得项目 -// if (CollectionUtils.isNotEmpty(param.getIncomeCategory())) { -// lambdaQueryChainWrapper.in(SalaryAcctEmployeePO::getIncomeCategory, param.getIncomeCategory().stream().map(Object::toString).collect(Collectors.toList())); -// } - //排除未归档数据 List salaryAcctRecordPOS = getSalaryAcctRecordService(user).listAll(); List salaryAcctRecordIds = salaryAcctRecordPOS.stream() @@ -690,70 +692,47 @@ public class SalaryAcctEmployeeServiceImpl extends Service implements SalaryAcct // 获取分部信息 List subCompanyIds = param.getSubCompany(); if (CollectionUtils.isNotEmpty(subCompanyIds)) { -// SubCompanyComInfo subCompanyComInfo = new SubCompanyComInfo(); -// List allSubcompanyIds = new ArrayList<>(); -// for (Long subCompanyId : subCompanyIds) { -// String organizationIds = Util.null2String(subCompanyId); -// String allChildSubcompanyId = subCompanyComInfo.getAllChildSubcompanyId(subCompanyId.toString(), organizationIds); -// allSubcompanyIds.addAll(Arrays.asList(allChildSubcompanyId.split(","))); -// } - employeeList = employeeList.stream().filter(emp -> subCompanyIds.contains(emp.getSubcompanyid())).collect(Collectors.toList()); + if (isRealOrg) { + employeeList = employeeList.stream().filter(emp -> subCompanyIds.contains(emp.getSubcompanyid())).collect(Collectors.toList()); + } else { + list.stream().filter(emp -> subCompanyIds.contains(emp.getSubcompanyId())).collect(Collectors.toList()); + } } // 部门过滤 List depart = param.getDepart(); if (CollectionUtils.isNotEmpty(depart)) { -// List allDepartIds = new ArrayList<>(); -// for (Long subDepartId : depart) { -// String ids = Util.null2String(subDepartId); -// try { -// String allDepartId = DepartmentComInfo.getAllChildDepartId(subDepartId.toString(), ids); -// allDepartIds.addAll(Arrays.asList(allDepartId.toString().split(","))); -// } catch (Exception e) { -// log.error("获取子部门失败", e); -// } -// } - employeeList = employeeList.stream().filter(emp -> depart.contains(emp.getDepartmentId())).collect(Collectors.toList()); + if (isRealOrg) { + employeeList = employeeList.stream().filter(emp -> depart.contains(emp.getDepartmentId())).collect(Collectors.toList()); + } else { + list = list.stream().filter(emp -> depart.contains(emp.getDepartmentId())).collect(Collectors.toList()); + } } - // 职级过滤 -// if (CollectionUtils.isNotEmpty(param.getGrade())) { -// Set employeeIdsByGradeFilter = new HashSet<>(); -// simpleEmployeeList.forEach(simpleEmployee -> { -// if (simpleEmployee.getGrade() != null && param.getGrade().contains(simpleEmployee.getGrade().getId())) { -// employeeIdsByGradeFilter.add(simpleEmployee.getEmployeeId()); -// } -// }); -// if (CollectionUtils.isEmpty(employeeIdsByGradeFilter)) { -// return Lists.newArrayList(); -// } -// list = list.stream().filter(po -> employeeIdsByGradeFilter.contains(po.getEmployeeId())).collect(Collectors.toList()); -// } // 岗位过滤 List position = param.getPosition(); if (CollectionUtils.isNotEmpty(position)) { - // Set employeeIdsByPostionFilter = new HashSet<>(); - // simpleEmployeeList.forEach(simpleEmployee -> { - // if (simpleEmployee.getPosition() != null && param.getPosition().contains(simpleEmployee.getPosition().getId())) { - // employeeIdsByPostionFilter.add(simpleEmployee.getEmployeeId()); - // } - // }); - // if (CollectionUtils.isEmpty(employeeIdsByPostionFilter)) { - // return Lists.newArrayList(); - // } - employeeList = employeeList.stream().filter(emp -> position.contains(emp.getJobtitleId())).collect(Collectors.toList()); + if (isRealOrg) { + employeeList = employeeList.stream().filter(emp -> position.contains(emp.getJobtitleId())).collect(Collectors.toList()); + } else { + list = list.stream().filter(emp -> position.contains(emp.getJobtitleId())).collect(Collectors.toList()); + } } // 人事状态过滤 if (CollectionUtils.isNotEmpty(param.getStatus())) { - Set employeeIdsByStatus = new HashSet<>(); - employeeList.forEach(simpleEmployee -> { - if (simpleEmployee.getStatus() != null && param.getStatus().contains(simpleEmployee.getStatus())) { - employeeIdsByStatus.add(simpleEmployee.getEmployeeId()); + if (isRealOrg) { + Set employeeIdsByStatus = new HashSet<>(); + employeeList.forEach(simpleEmployee -> { + if (simpleEmployee.getStatus() != null && param.getStatus().contains(simpleEmployee.getStatus())) { + employeeIdsByStatus.add(simpleEmployee.getEmployeeId()); + } + }); + if (CollectionUtils.isEmpty(employeeIdsByStatus)) { + return Lists.newArrayList(); } - }); - if (CollectionUtils.isEmpty(employeeIdsByStatus)) { - return Lists.newArrayList(); + list = list.stream().filter(po -> employeeIdsByStatus.contains(po.getEmployeeId())).collect(Collectors.toList()); + } else { + list = list.stream().filter(po -> po.getStatus() != null && param.getStatus().contains(po.getStatus())).collect(Collectors.toList()); } - list = list.stream().filter(po -> employeeIdsByStatus.contains(po.getEmployeeId())).collect(Collectors.toList()); } // 入职日期 if (CollectionUtils.isNotEmpty(param.getHiredate())) { @@ -769,27 +748,15 @@ public class SalaryAcctEmployeeServiceImpl extends Service implements SalaryAcct } list = list.stream().filter(po -> employeeIdsByHiredate.contains(po.getEmployeeId())).collect(Collectors.toList()); } -// // 离职日期 todo -// if (CollectionUtils.isNotEmpty(param.getLeavedate())) { -// Set employeeIdsByLeavedate = new HashSet<>(); -// simpleEmployeeList.forEach(simpleEmployee -> { -// -// if (simpleEmployee.get() != null && ) { -// employeeIdsByLeavedate.add(simpleEmployee.getEmployeeId()); -// } -// }); -// if (CollectionUtils.isEmpty(employeeIdsByLeavedate)) { -// return Lists.newArrayList(); -// } -// list = list.stream().filter(po -> employeeIdsByLeavedate.contains(po.getEmployeeId())).collect(Collectors.toList()); -// } // 人员 if (CollectionUtils.isNotEmpty(param.getEmployee())) { list = list.stream().filter(po -> param.getEmployee().contains(po.getEmployeeId())).collect(Collectors.toList()); } - Set empIds = SalaryEntityUtil.properties(employeeList, DataCollectionEmployee::getEmployeeId); - list = list.stream().filter(po -> empIds.contains(po.getEmployeeId())).collect(Collectors.toList()); + if(isRealOrg){ + Set empIds = SalaryEntityUtil.properties(employeeList, DataCollectionEmployee::getEmployeeId); + list = list.stream().filter(po -> empIds.contains(po.getEmployeeId())).collect(Collectors.toList()); + } return list; } diff --git a/src/com/engine/salary/sys/constant/SalarySysConstant.java b/src/com/engine/salary/sys/constant/SalarySysConstant.java index ff055b89e..443cd4fd5 100644 --- a/src/com/engine/salary/sys/constant/SalarySysConstant.java +++ b/src/com/engine/salary/sys/constant/SalarySysConstant.java @@ -145,4 +145,15 @@ public class SalarySysConstant { * 我的薪资福利工资单个税扣缴义务人显示状态 */ public static final String TAX_AGENT_SHOW_STATUS = "taxAgentShowStatus"; + + + /** + * 报表是否开启缓存,0:关闭 1:开启 + */ + public static final String REPORT_CACHE = "REPORT_CACHE"; + + /** + * 报表组织类型,null/0 :核算快照信息 1:实时组织信息 + */ + public static final String REPORT_ORGANIZATIN_TYPE = "REPORT_ORGANIZATIN_TYPE"; } From 13f085420824942fe466020df94731484c227a81 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Sun, 29 Sep 2024 17:02:59 +0800 Subject: [PATCH 04/43] =?UTF-8?q?=E6=8A=A5=E8=A1=A8=E7=BC=93=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SalaryStatisticsReportWrapper.java | 44 +++++++++---------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/src/com/engine/salary/report/wrapper/SalaryStatisticsReportWrapper.java b/src/com/engine/salary/report/wrapper/SalaryStatisticsReportWrapper.java index 7556b7bf8..22fb6261f 100644 --- a/src/com/engine/salary/report/wrapper/SalaryStatisticsReportWrapper.java +++ b/src/com/engine/salary/report/wrapper/SalaryStatisticsReportWrapper.java @@ -332,28 +332,28 @@ public class SalaryStatisticsReportWrapper extends Service { if (empDimensionOptional.isPresent()) { empDimensionId = empDimensionOptional.get(); } -// if (StringUtils.isNotBlank(salaryReportIds) && salaryReportIds.contains(id + "")) { -// //报表中缓存的条件 -// salaryReportConditions = Utils.null2String(getSalaryCacheService(user).get(SalaryCacheKey.SALARY_REPORT_CONDITIONS + id)); -// if (StringUtils.isNotBlank(salaryReportConditions) && salaryReportConditions.contains(paramMd5)) { -// Map result = getSalaryCacheService(user).get(SalaryCacheKey.SALARY_REPORT_DATA + id + "_" + paramMd5); -// if (param.getDimensionId().equals(empDimensionId)) { -// // 人员维度需要分页 -// Map finalResultMap = new HashMap<>(); -// PageInfo> pageInfo = (PageInfo>) result.get("pageInfo"); -// PageInfo> finalPageInfo = SalaryPageUtil.buildPage(param.getCurrent(), param.getPageSize()); -// finalPageInfo.setTotal(pageInfo.getList().size()); -// finalPageInfo.setList(SalaryPageUtil.subList(param.getCurrent(), param.getPageSize(), pageInfo.getList())); -// finalResultMap.put("pageInfo", finalPageInfo); -// finalResultMap.put("columns", result.get("columns")); -// finalResultMap.put("countResult", result.get("countResult")); -// finalResultMap.put("reportId", id); -// return finalResultMap; -// } -// -// return result; -// } -// } + if (StringUtils.isNotBlank(salaryReportIds) && salaryReportIds.contains(id + "")) { + //报表中缓存的条件 + salaryReportConditions = Utils.null2String(getSalaryCacheService(user).get(SalaryCacheKey.SALARY_REPORT_CONDITIONS + id)); + if (StringUtils.isNotBlank(salaryReportConditions) && salaryReportConditions.contains(paramMd5)) { + Map result = getSalaryCacheService(user).get(SalaryCacheKey.SALARY_REPORT_DATA + id + "_" + paramMd5); + if (param.getDimensionId().equals(empDimensionId)) { + // 人员维度需要分页 + Map finalResultMap = new HashMap<>(); + PageInfo> pageInfo = (PageInfo>) result.get("pageInfo"); + PageInfo> finalPageInfo = SalaryPageUtil.buildPage(param.getCurrent(), param.getPageSize()); + finalPageInfo.setTotal(pageInfo.getList().size()); + finalPageInfo.setList(SalaryPageUtil.subList(param.getCurrent(), param.getPageSize(), pageInfo.getList())); + finalResultMap.put("pageInfo", finalPageInfo); + finalResultMap.put("columns", result.get("columns")); + finalResultMap.put("countResult", result.get("countResult")); + finalResultMap.put("reportId", id); + return finalResultMap; + } + + return result; + } + } // 列表data From 8c0bad80232807239452bf6d4109228e5d5adc29 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Mon, 30 Sep 2024 10:37:27 +0800 Subject: [PATCH 05/43] =?UTF-8?q?=E6=8A=A5=E8=A1=A8=E5=BF=AB=E7=85=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SalaryStatisticsReportServiceImpl.java | 77 ++++++++++++++----- 1 file changed, 58 insertions(+), 19 deletions(-) diff --git a/src/com/engine/salary/report/service/impl/SalaryStatisticsReportServiceImpl.java b/src/com/engine/salary/report/service/impl/SalaryStatisticsReportServiceImpl.java index ab16db7cc..ecceda7a9 100644 --- a/src/com/engine/salary/report/service/impl/SalaryStatisticsReportServiceImpl.java +++ b/src/com/engine/salary/report/service/impl/SalaryStatisticsReportServiceImpl.java @@ -796,38 +796,74 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary Map subComIdNameMap = new HashMap<>(); Map lastEmpIdSubComMap = new HashMap<>(); Map sameEmpIdSubComMap = new HashMap<>(); - comInfoMap.forEach((k, v) -> { - subComIdNameMap.put(v.getSubcompanyid(), v.getSubcompanyName()); - empIdSubComMap.put(k, v.getSubcompanyid()); - subComIds.add(v.getSubcompanyid()); - }); - lastComInfoMap.forEach((k, v) -> { - lastEmpIdSubComMap.put(k, v.getSubcompanyid()); - }); - sameComInfoMap.forEach((k, v) -> { - sameEmpIdSubComMap.put(k, v.getSubcompanyid()); - }); + + if (isRealOrg) { + comInfoMap.forEach((k, v) -> { + subComIdNameMap.put(v.getSubcompanyid(), v.getSubcompanyName()); + empIdSubComMap.put(k, v.getSubcompanyid()); + subComIds.add(v.getSubcompanyid()); + }); + lastComInfoMap.forEach((k, v) -> { + lastEmpIdSubComMap.put(k, v.getSubcompanyid()); + }); + sameComInfoMap.forEach((k, v) -> { + sameEmpIdSubComMap.put(k, v.getSubcompanyid()); + }); + } else { + data.getList().forEach(employee -> { + if (employee.getSubcompanyId() != null && employee.getSubcompanyId() != null) { + subComIdNameMap.put(employee.getSubcompanyId(), employee.getSubcompanyName()); + subComIds.add(employee.getDepartmentId()); + empIdSubComMap.put(employee.getEmployeeId(), employee.getSubcompanyId()); + } + }); + data.getLastList().forEach(employee -> { + if (employee.getSubcompanyId() != null && employee.getSubcompanyId() != null) { + lastEmpIdSubComMap.put(employee.getEmployeeId(), employee.getSubcompanyId()); + } + }); + data.getSameList().forEach(employee -> { + if (employee.getSubcompanyId() != null && employee.getSubcompanyId() != null) { + sameEmpIdSubComMap.put(employee.getEmployeeId(), employee.getSubcompanyId()); + } + }); + } + String dimensionValue = data.getDimensionValue(); subComIds.forEach(subComId -> { if (dimensionValue == null) { - List subComEmployeePOS = data.getList().stream().filter(po -> Objects.equals(empIdSubComMap.get(po.getEmployeeId()), subComId)).collect(Collectors.toList()); - List lastSubComEmployeePOS = data.getLastList().stream().filter(po -> Objects.equals(lastEmpIdSubComMap.get(po.getEmployeeId()), subComId)).collect(Collectors.toList()); - List sameSubComEmployeePOS = data.getSameList().stream().filter(po -> Objects.equals(sameEmpIdSubComMap.get(po.getEmployeeId()), subComId)).collect(Collectors.toList()); + List subComEmployeePOS = data.getList().stream().filter(po -> Objects.equals(po.getSubcompanyId(), subComId)).collect(Collectors.toList()); + List lastSubComEmployeePOS = data.getLastList().stream().filter(po -> Objects.equals(po.getSubcompanyId(), subComId)).collect(Collectors.toList()); + List sameSubComEmployeePOS = data.getSameList().stream().filter(po -> Objects.equals(po.getSubcompanyId(), subComId)).collect(Collectors.toList()); + if (isRealOrg) { + subComEmployeePOS = data.getList().stream().filter(po -> Objects.equals(empIdSubComMap.get(po.getEmployeeId()), subComId)).collect(Collectors.toList()); + lastSubComEmployeePOS = data.getLastList().stream().filter(po -> Objects.equals(lastEmpIdSubComMap.get(po.getEmployeeId()), subComId)).collect(Collectors.toList()); + sameSubComEmployeePOS = data.getSameList().stream().filter(po -> Objects.equals(sameEmpIdSubComMap.get(po.getEmployeeId()), subComId)).collect(Collectors.toList()); + } Map temp = new HashMap<>(); temp.put(DM, subComIdNameMap.get(subComId)); temp.putAll(SalaryStatisticsReportBO.calculateItem(subComEmployeePOS, lastSubComEmployeePOS, sameSubComEmployeePOS, salaryAcctResultValueMap, data.getSalaryStatisticsItemList())); records.add(temp); } else if (StringUtils.equals(dimensionValue, subComIdNameMap.get(subComId))) { - List subComEmployeePOS = data.getList().stream().filter(po -> Objects.equals(empIdSubComMap.get(po.getEmployeeId()), subComId)).collect(Collectors.toList()); + List subComEmployeePOS = data.getList().stream().filter(po -> Objects.equals(po.getSubcompanyId(), subComId)).collect(Collectors.toList()); + if (isRealOrg) { + subComEmployeePOS = data.getList().stream().filter(po -> Objects.equals(empIdSubComMap.get(po.getEmployeeId()), subComId)).collect(Collectors.toList()); + } data.setListByDimensionValue(subComEmployeePOS); } }); if (dimensionValue == null) { - List noGroupingList = data.getList().stream().filter(po -> empIdSubComMap.get(po.getEmployeeId()) == null).collect(Collectors.toList()); - List lastNoGroupingList = data.getLastList().stream().filter(po -> lastEmpIdSubComMap.get(po.getEmployeeId()) == null).collect(Collectors.toList()); - List sameNoGroupingList = data.getSameList().stream().filter(po -> sameEmpIdSubComMap.get(po.getEmployeeId()) == null).collect(Collectors.toList()); + List noGroupingList = data.getList().stream().filter(po -> po.getSubcompanyId() == null).collect(Collectors.toList()); + List lastNoGroupingList = data.getLastList().stream().filter(po -> po.getSubcompanyId() == null).collect(Collectors.toList()); + List sameNoGroupingList = data.getSameList().stream().filter(po -> po.getSubcompanyId() == null).collect(Collectors.toList()); + if (isRealOrg) { + noGroupingList = data.getList().stream().filter(po -> empIdSubComMap.get(po.getEmployeeId()) == null).collect(Collectors.toList()); + lastNoGroupingList = data.getLastList().stream().filter(po -> lastEmpIdSubComMap.get(po.getEmployeeId()) == null).collect(Collectors.toList()); + sameNoGroupingList = data.getSameList().stream().filter(po -> sameEmpIdSubComMap.get(po.getEmployeeId()) == null).collect(Collectors.toList()); + } + if (CollectionUtils.isNotEmpty(noGroupingList)) { Map noGrouping = new HashMap<>(); noGrouping.put(DM, SalaryI18nUtil.getI18nLabel(153462, "无分组")); @@ -836,6 +872,9 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary } } else if (StringUtils.equals(dimensionValue, "无分组")) { List noGroupingList = data.getList().stream().filter(po -> empIdSubComMap.get(po.getEmployeeId()) == null).collect(Collectors.toList()); + if (isRealOrg) { + noGroupingList = data.getList().stream().filter(po -> po.getSubcompanyId() == null).collect(Collectors.toList()); + } data.setListByDimensionValue(noGroupingList); } @@ -939,7 +978,7 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary } } else if (StringUtils.equals(dimensionValue, "无分组")) { List noGroupingList = data.getList().stream().filter(po -> po.getDepartmentId() == null).collect(Collectors.toList()); - if(isRealOrg){ + if (isRealOrg) { noGroupingList = data.getList().stream().filter(po -> empIdDepartIdMap.get(po.getEmployeeId()) == null).collect(Collectors.toList()); } data.setListByDimensionValue(noGroupingList); From ff44ddd8b11536de2a809aed86175fa059d77a02 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Tue, 8 Oct 2024 14:19:02 +0800 Subject: [PATCH 06/43] =?UTF-8?q?=E5=91=98=E5=B7=A5=E6=98=8E=E7=BB=86?= =?UTF-8?q?=E6=8E=92=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../param/SalaryAcctEmployeeQueryParam.java | 5 ++ .../salaryacct/SalaryAcctEmployeeMapper.xml | 48 +++++++++++++++++-- .../SalaryStatisticsEmployeeServiceImpl.java | 19 +++----- 3 files changed, 56 insertions(+), 16 deletions(-) diff --git a/src/com/engine/salary/entity/salaryacct/param/SalaryAcctEmployeeQueryParam.java b/src/com/engine/salary/entity/salaryacct/param/SalaryAcctEmployeeQueryParam.java index 2d532855e..977f1572e 100644 --- a/src/com/engine/salary/entity/salaryacct/param/SalaryAcctEmployeeQueryParam.java +++ b/src/com/engine/salary/entity/salaryacct/param/SalaryAcctEmployeeQueryParam.java @@ -7,7 +7,9 @@ import com.engine.salary.util.valid.DataCheck; import lombok.*; import java.util.Collection; +import java.util.Date; import java.util.List; +import java.util.Set; /** * 薪资核算人员列表查询条件 @@ -59,4 +61,7 @@ public class SalaryAcctEmployeeQueryParam extends BaseQueryParam { private List ids; private String workcode; + + private List taxAgentIds; + private Set salaryMonths; } diff --git a/src/com/engine/salary/mapper/salaryacct/SalaryAcctEmployeeMapper.xml b/src/com/engine/salary/mapper/salaryacct/SalaryAcctEmployeeMapper.xml index 28f8e7779..86781c4d3 100644 --- a/src/com/engine/salary/mapper/salaryacct/SalaryAcctEmployeeMapper.xml +++ b/src/com/engine/salary/mapper/salaryacct/SalaryAcctEmployeeMapper.xml @@ -521,7 +521,6 @@ LEFT JOIN hrmdepartment d ON d.id = e.departmentid LEFT JOIN hrmsubcompany c ON c.id = e.subcompanyid1 WHERE delete_type = 0 - AND salary_acct_record_id = #{param.salaryAcctRecordId} @@ -538,7 +537,6 @@ LEFT JOIN hrmdepartment d ON d.id = e.departmentid LEFT JOIN hrmsubcompany c ON c.id = e.subcompanyid1 WHERE delete_type = 0 - AND salary_acct_record_id = #{param.salaryAcctRecordId} @@ -555,7 +553,6 @@ LEFT JOIN hrmdepartment d ON d.id = e.departmentid LEFT JOIN hrmsubcompany c ON c.id = e.subcompanyid1 WHERE delete_type = 0 - AND salary_acct_record_id = #{param.salaryAcctRecordId} @@ -564,6 +561,9 @@ + + AND t.salary_acct_record_id = #{param.salaryAcctRecordId} + AND t.id IN @@ -573,6 +573,18 @@ AND t.tax_agent_id = #{param.taxAgentId} + + AND t.tax_agent_id IN + + #{taxAgentId} + + + + AND t.salary_month IN + + #{salaryMonth} + + -- 分部 AND t.subcompany_id IN @@ -625,6 +637,9 @@ + + AND t.salary_acct_record_id = #{param.salaryAcctRecordId} + AND t.id IN @@ -634,6 +649,18 @@ AND t.tax_agent_id = #{param.taxAgentId} + + AND t.tax_agent_id IN + + #{taxAgentId} + + + + AND t.salary_month IN + + #{salaryMonth} + + -- 分部 AND t.subcompany_id IN @@ -684,6 +711,9 @@ + + AND t.salary_acct_record_id = #{param.salaryAcctRecordId} + AND t.id IN @@ -693,6 +723,18 @@ AND t.tax_agent_id = #{param.taxAgentId} + + AND t.tax_agent_id IN + + #{taxAgentId} + + + + AND t.salary_month IN + + #{salaryMonth} + + -- 分部 AND t.subcompany_id IN diff --git a/src/com/engine/salary/report/service/impl/SalaryStatisticsEmployeeServiceImpl.java b/src/com/engine/salary/report/service/impl/SalaryStatisticsEmployeeServiceImpl.java index 3a6e00071..2e7663392 100644 --- a/src/com/engine/salary/report/service/impl/SalaryStatisticsEmployeeServiceImpl.java +++ b/src/com/engine/salary/report/service/impl/SalaryStatisticsEmployeeServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.util.NumberUtil; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; import com.engine.salary.entity.datacollection.DataCollectionEmployee; +import com.engine.salary.entity.salaryacct.param.SalaryAcctEmployeeQueryParam; import com.engine.salary.entity.salaryacct.po.SalaryAcctEmployeePO; import com.engine.salary.entity.salaryacct.po.SalaryAcctRecordPO; import com.engine.salary.entity.salaryacct.po.SalaryAcctResultPO; @@ -33,7 +34,6 @@ import com.engine.salary.util.page.PageInfo; import com.engine.salary.util.page.SalaryPageUtil; import com.google.common.collect.Lists; import com.google.common.collect.Maps; -import com.google.common.collect.Sets; import com.wbi.util.Util; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; @@ -108,7 +108,8 @@ public class SalaryStatisticsEmployeeServiceImpl extends Service implements Sala .collect(Collectors.toSet()); // 查询薪资核算人员 - List salaryAcctEmployeeList = getSalaryAcctEmployeeService(user).listByTaxAgentAndSalaryMonth(taxAgentIds, salaryMonths); + SalaryAcctEmployeeQueryParam salaryAcctEmployeeQueryParam = SalaryAcctEmployeeQueryParam.builder().salaryMonths(salaryMonths).taxAgentIds(taxAgentIds).build(); + List salaryAcctEmployeeList = getSalaryAcctEmployeeService(user).listByParam(salaryAcctEmployeeQueryParam); if (CollectionUtils.isEmpty(salaryAcctEmployeeList)) { return page; } @@ -119,15 +120,8 @@ public class SalaryStatisticsEmployeeServiceImpl extends Service implements Sala // // 外部人员id // Set extEmployeeIds = Sets.newHashSet(); // 内部人员id - Set innerEmployeeIds = Sets.newHashSet(); - for (SalaryAcctEmployeePO sae : salaryAcctEmployeeList) { -// if (EmployeeTypeEnum.EXT_EMPLOYEE.getValue().equals(sae.getEmployeeType())) { -// extEmployeeIds.add(sae.getEmployeeId()); -// } else if (EmployeeTypeEnum.ORGANIZATION.getValue().equals(sae.getEmployeeType())) { -// innerEmployeeIds.add(sae.getEmployeeId()); -// } - innerEmployeeIds.add(sae.getEmployeeId()); - } + Set innerEmployeeIds = salaryAcctEmployeeList.stream().map(SalaryAcctEmployeePO::getEmployeeId).collect(Collectors.toCollection(LinkedHashSet::new)); + // 3.关键字搜索参数 if (StringUtils.isNotEmpty(queryParam.getKeyword())) { // if (CollectionUtils.isNotEmpty(extEmployeeIds)) { @@ -158,10 +152,9 @@ public class SalaryStatisticsEmployeeServiceImpl extends Service implements Sala } } - List innerEmployeeIdList = innerEmployeeIds.stream().sorted(Comparator.comparing(e -> e)).collect(Collectors.toList()); // List extEmployeeIdList = extEmployeeIds.stream().sorted(Comparator.comparing(e -> e)).collect(Collectors.toList()); // 排序,内部员工优先 - list = innerEmployeeIdList.stream().map(e -> SalaryStatisticsEmployeeListDTO.builder() + list = innerEmployeeIds.stream().map(e -> SalaryStatisticsEmployeeListDTO.builder() .id(e) // .employeeType(EmployeeTypeEnum.ORGANIZATION.getValue()) .build()).collect(Collectors.toList()); From edb07052b5a1151a640148fdf78bf1b7a222b8fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Tue, 8 Oct 2024 14:36:18 +0800 Subject: [PATCH 07/43] =?UTF-8?q?=E5=91=98=E5=B7=A5=E6=98=8E=E7=BB=86?= =?UTF-8?q?=E6=8E=92=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/engine/salary/sys/constant/SalarySysConstant.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/com/engine/salary/sys/constant/SalarySysConstant.java b/src/com/engine/salary/sys/constant/SalarySysConstant.java index 443cd4fd5..6f35124c3 100644 --- a/src/com/engine/salary/sys/constant/SalarySysConstant.java +++ b/src/com/engine/salary/sys/constant/SalarySysConstant.java @@ -153,7 +153,7 @@ public class SalarySysConstant { public static final String REPORT_CACHE = "REPORT_CACHE"; /** - * 报表组织类型,null/0 :核算快照信息 1:实时组织信息 + * 报表组织类型,null/0 :核算时组织信息 1:实时组织信息 */ public static final String REPORT_ORGANIZATIN_TYPE = "REPORT_ORGANIZATIN_TYPE"; } From ff5419f2bb1a1431cfd97a8ad634ebc9f8d00da3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Tue, 8 Oct 2024 15:45:12 +0800 Subject: [PATCH 08/43] =?UTF-8?q?=E8=96=AA=E8=B5=84=E6=98=8E=E7=BB=86?= =?UTF-8?q?=E6=8E=92=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/SalaryStatisticsEmployeeServiceImpl.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/com/engine/salary/report/service/impl/SalaryStatisticsEmployeeServiceImpl.java b/src/com/engine/salary/report/service/impl/SalaryStatisticsEmployeeServiceImpl.java index 2e7663392..3ec96c6dc 100644 --- a/src/com/engine/salary/report/service/impl/SalaryStatisticsEmployeeServiceImpl.java +++ b/src/com/engine/salary/report/service/impl/SalaryStatisticsEmployeeServiceImpl.java @@ -315,7 +315,8 @@ public class SalaryStatisticsEmployeeServiceImpl extends Service implements Sala .collect(Collectors.toSet()); // 查询薪资核算人员 - List salaryAcctEmployeeList = getSalaryAcctEmployeeService(user).listByTaxAgentAndSalaryMonth(taxAgentIds, salaryMonths); + SalaryAcctEmployeeQueryParam salaryAcctEmployeeQueryParam = SalaryAcctEmployeeQueryParam.builder().salaryMonths(salaryMonths).taxAgentIds(taxAgentIds).build(); + List salaryAcctEmployeeList = getSalaryAcctEmployeeService(user).listByParam(salaryAcctEmployeeQueryParam); if (CollectionUtils.isNotEmpty(queryParam.getSubCompanyIds()) || CollectionUtils.isNotEmpty(queryParam.getDepartmentIds()) || StringUtils.isNotBlank(queryParam.getKeyword())) { // 根据分部、部门筛选 List employeeList = getSalaryEmployeeService(user).listBySubCompanyOrDepartment(queryParam.getSubCompanyIds(), queryParam.getDepartmentIds()); @@ -336,8 +337,7 @@ public class SalaryStatisticsEmployeeServiceImpl extends Service implements Sala if (CollectionUtils.isNotEmpty(queryParam.getIds())) { salaryAcctEmployeeList = salaryAcctEmployeeList.stream().filter(emp -> queryParam.getIds().contains(emp.getId())).collect(Collectors.toList()); } - salaryAcctEmployeeList = salaryAcctEmployeeList.stream().sorted(Comparator.comparing(SalaryAcctEmployeePO::getSalaryMonth)).collect(Collectors.toList()); - Collections.reverse(salaryAcctEmployeeList); + salaryAcctEmployeeList = salaryAcctEmployeeList.stream().sorted(Comparator.comparing(SalaryAcctEmployeePO::getSalaryMonth).reversed()).collect(Collectors.toList()); PageInfo SalaryAcctEmployeePageInfo = SalaryPageUtil.buildPage(queryParam.getCurrent(), queryParam.getPageSize(), salaryAcctEmployeeList); if (queryParam.isExport()) { SalaryAcctEmployeePageInfo.setList(salaryAcctEmployeeList); From 61dee5d3a122d1f3ddb1d3b2d85b38a823de81d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Tue, 8 Oct 2024 15:48:33 +0800 Subject: [PATCH 09/43] =?UTF-8?q?=E8=96=AA=E8=B5=84=E6=98=8E=E7=BB=86?= =?UTF-8?q?=E6=8E=92=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/SalaryStatisticsEmployeeServiceImpl.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/com/engine/salary/report/service/impl/SalaryStatisticsEmployeeServiceImpl.java b/src/com/engine/salary/report/service/impl/SalaryStatisticsEmployeeServiceImpl.java index 3ec96c6dc..57a8d103d 100644 --- a/src/com/engine/salary/report/service/impl/SalaryStatisticsEmployeeServiceImpl.java +++ b/src/com/engine/salary/report/service/impl/SalaryStatisticsEmployeeServiceImpl.java @@ -288,9 +288,6 @@ public class SalaryStatisticsEmployeeServiceImpl extends Service implements Sala @Override public PageInfo listSalaryAcctEmp(SalaryStatisticsEmployeeSalaryQueryParam queryParam) { - List list = Collections.emptyList(); - PageInfo page = SalaryPageUtil.buildPage(queryParam.getCurrent(), queryParam.getPageSize(), list, SalaryStatisticsEmployeeListDTO.class); - // 1.分权处理, 首先获取个税扣缴义务人参数 Collection taxAgentViews = getTaxAgentService(user).listAllTaxAgents((long) user.getUID()); List taxAgentIds = Objects.isNull(taxAgentViews) ? Lists.newArrayList() : taxAgentViews.stream().map(TaxAgentPO::getId).collect(Collectors.toList()); From a40188659fe2af6f077d721f840be319deb76862 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Wed, 9 Oct 2024 13:21:28 +0800 Subject: [PATCH 10/43] =?UTF-8?q?=E6=8A=A5=E8=A1=A8=E5=BF=AB=E7=85=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SalaryStatisticsReportServiceImpl.java | 9 +++- .../SalaryStatisticsReportWrapper.java | 44 +++++++++---------- .../sys/service/SalarySysConfService.java | 2 + .../impl/SalarySysConfServiceImpl.java | 6 +++ 4 files changed, 37 insertions(+), 24 deletions(-) diff --git a/src/com/engine/salary/report/service/impl/SalaryStatisticsReportServiceImpl.java b/src/com/engine/salary/report/service/impl/SalaryStatisticsReportServiceImpl.java index ecceda7a9..8886cfa6f 100644 --- a/src/com/engine/salary/report/service/impl/SalaryStatisticsReportServiceImpl.java +++ b/src/com/engine/salary/report/service/impl/SalaryStatisticsReportServiceImpl.java @@ -33,6 +33,8 @@ import com.engine.salary.report.service.SalaryStatisticsReportService; import com.engine.salary.report.util.ReportTimeUtil; import com.engine.salary.service.*; import com.engine.salary.service.impl.*; +import com.engine.salary.sys.service.SalarySysConfService; +import com.engine.salary.sys.service.impl.SalarySysConfServiceImpl; import com.engine.salary.util.*; import com.engine.salary.util.db.IdGenerator; import com.engine.salary.util.db.MapperProxyFactory; @@ -73,7 +75,7 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary public static final String LAST_INFO = "lastInfoList"; public static final String SAME_INFO = "sameInfoList"; - private boolean isRealOrg = "1".equals(getSalaryCacheService(user).get(REPORT_ORGANIZATIN_TYPE)); + private final boolean isRealOrg = "1".equals(getSalarySysConfService(user).getValueByCode(REPORT_ORGANIZATIN_TYPE)); private SalaryStatisticsReportMapper getSalaryStatisticsReportMapper() { return MapperProxyFactory.getProxy(SalaryStatisticsReportMapper.class); @@ -115,6 +117,9 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary return ServiceUtil.getService(SalaryCacheServiceImpl.class, user); } + private SalarySysConfService getSalarySysConfService(User user) { + return ServiceUtil.getService(SalarySysConfServiceImpl.class, user); + } // private ExtEmployeeService extEmployeeService; // // private HrmCommonEmployeeService hrmCommonEmployeeService; @@ -954,7 +959,7 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary } else if (StringUtils.equals(dimensionValue, departIdNameMap.get(departId))) { List departEmployeePOS = data.getList().stream().filter(po -> Objects.equals(po.getDepartmentId(), departId)).collect(Collectors.toList()); if (isRealOrg) { - data.getList().stream().filter(po -> Objects.equals(empIdDepartIdMap.get(po.getEmployeeId()), departId)).collect(Collectors.toList()); + departEmployeePOS = data.getList().stream().filter(po -> Objects.equals(empIdDepartIdMap.get(po.getEmployeeId()), departId)).collect(Collectors.toList()); } data.setListByDimensionValue(departEmployeePOS); } diff --git a/src/com/engine/salary/report/wrapper/SalaryStatisticsReportWrapper.java b/src/com/engine/salary/report/wrapper/SalaryStatisticsReportWrapper.java index 22fb6261f..7556b7bf8 100644 --- a/src/com/engine/salary/report/wrapper/SalaryStatisticsReportWrapper.java +++ b/src/com/engine/salary/report/wrapper/SalaryStatisticsReportWrapper.java @@ -332,28 +332,28 @@ public class SalaryStatisticsReportWrapper extends Service { if (empDimensionOptional.isPresent()) { empDimensionId = empDimensionOptional.get(); } - if (StringUtils.isNotBlank(salaryReportIds) && salaryReportIds.contains(id + "")) { - //报表中缓存的条件 - salaryReportConditions = Utils.null2String(getSalaryCacheService(user).get(SalaryCacheKey.SALARY_REPORT_CONDITIONS + id)); - if (StringUtils.isNotBlank(salaryReportConditions) && salaryReportConditions.contains(paramMd5)) { - Map result = getSalaryCacheService(user).get(SalaryCacheKey.SALARY_REPORT_DATA + id + "_" + paramMd5); - if (param.getDimensionId().equals(empDimensionId)) { - // 人员维度需要分页 - Map finalResultMap = new HashMap<>(); - PageInfo> pageInfo = (PageInfo>) result.get("pageInfo"); - PageInfo> finalPageInfo = SalaryPageUtil.buildPage(param.getCurrent(), param.getPageSize()); - finalPageInfo.setTotal(pageInfo.getList().size()); - finalPageInfo.setList(SalaryPageUtil.subList(param.getCurrent(), param.getPageSize(), pageInfo.getList())); - finalResultMap.put("pageInfo", finalPageInfo); - finalResultMap.put("columns", result.get("columns")); - finalResultMap.put("countResult", result.get("countResult")); - finalResultMap.put("reportId", id); - return finalResultMap; - } - - return result; - } - } +// if (StringUtils.isNotBlank(salaryReportIds) && salaryReportIds.contains(id + "")) { +// //报表中缓存的条件 +// salaryReportConditions = Utils.null2String(getSalaryCacheService(user).get(SalaryCacheKey.SALARY_REPORT_CONDITIONS + id)); +// if (StringUtils.isNotBlank(salaryReportConditions) && salaryReportConditions.contains(paramMd5)) { +// Map result = getSalaryCacheService(user).get(SalaryCacheKey.SALARY_REPORT_DATA + id + "_" + paramMd5); +// if (param.getDimensionId().equals(empDimensionId)) { +// // 人员维度需要分页 +// Map finalResultMap = new HashMap<>(); +// PageInfo> pageInfo = (PageInfo>) result.get("pageInfo"); +// PageInfo> finalPageInfo = SalaryPageUtil.buildPage(param.getCurrent(), param.getPageSize()); +// finalPageInfo.setTotal(pageInfo.getList().size()); +// finalPageInfo.setList(SalaryPageUtil.subList(param.getCurrent(), param.getPageSize(), pageInfo.getList())); +// finalResultMap.put("pageInfo", finalPageInfo); +// finalResultMap.put("columns", result.get("columns")); +// finalResultMap.put("countResult", result.get("countResult")); +// finalResultMap.put("reportId", id); +// return finalResultMap; +// } +// +// return result; +// } +// } // 列表data diff --git a/src/com/engine/salary/sys/service/SalarySysConfService.java b/src/com/engine/salary/sys/service/SalarySysConfService.java index 91eab5317..6b78ceca2 100644 --- a/src/com/engine/salary/sys/service/SalarySysConfService.java +++ b/src/com/engine/salary/sys/service/SalarySysConfService.java @@ -40,6 +40,8 @@ public interface SalarySysConfService { SalarySysConfPO getOneByCode(String code); + String getValueByCode(String code); + List listSome(SalarySysConfPO build); void save(SalarySysConfPO salarySysConfPO); diff --git a/src/com/engine/salary/sys/service/impl/SalarySysConfServiceImpl.java b/src/com/engine/salary/sys/service/impl/SalarySysConfServiceImpl.java index 956e6f7cd..64771e07d 100644 --- a/src/com/engine/salary/sys/service/impl/SalarySysConfServiceImpl.java +++ b/src/com/engine/salary/sys/service/impl/SalarySysConfServiceImpl.java @@ -216,6 +216,12 @@ public class SalarySysConfServiceImpl extends Service implements SalarySysConfSe return getSalarySysConfMapper().getOneByCode(code); } + @Override + public String getValueByCode(String code) { + SalarySysConfPO confPO = getSalarySysConfMapper().getOneByCode(code); + return confPO == null ? "" : confPO.getConfValue(); + } + @Override public List listSome(SalarySysConfPO po) { return getSalarySysConfMapper().listSome(po); From 3a128a4c5be86862673e1dff9ecbc0b7afe7ec1f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Wed, 9 Oct 2024 14:59:33 +0800 Subject: [PATCH 11/43] =?UTF-8?q?=E6=8A=A5=E8=A1=A8=E5=BF=AB=E7=85=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SalaryStatisticsReportWrapper.java | 44 +++++++++---------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/src/com/engine/salary/report/wrapper/SalaryStatisticsReportWrapper.java b/src/com/engine/salary/report/wrapper/SalaryStatisticsReportWrapper.java index 7556b7bf8..22fb6261f 100644 --- a/src/com/engine/salary/report/wrapper/SalaryStatisticsReportWrapper.java +++ b/src/com/engine/salary/report/wrapper/SalaryStatisticsReportWrapper.java @@ -332,28 +332,28 @@ public class SalaryStatisticsReportWrapper extends Service { if (empDimensionOptional.isPresent()) { empDimensionId = empDimensionOptional.get(); } -// if (StringUtils.isNotBlank(salaryReportIds) && salaryReportIds.contains(id + "")) { -// //报表中缓存的条件 -// salaryReportConditions = Utils.null2String(getSalaryCacheService(user).get(SalaryCacheKey.SALARY_REPORT_CONDITIONS + id)); -// if (StringUtils.isNotBlank(salaryReportConditions) && salaryReportConditions.contains(paramMd5)) { -// Map result = getSalaryCacheService(user).get(SalaryCacheKey.SALARY_REPORT_DATA + id + "_" + paramMd5); -// if (param.getDimensionId().equals(empDimensionId)) { -// // 人员维度需要分页 -// Map finalResultMap = new HashMap<>(); -// PageInfo> pageInfo = (PageInfo>) result.get("pageInfo"); -// PageInfo> finalPageInfo = SalaryPageUtil.buildPage(param.getCurrent(), param.getPageSize()); -// finalPageInfo.setTotal(pageInfo.getList().size()); -// finalPageInfo.setList(SalaryPageUtil.subList(param.getCurrent(), param.getPageSize(), pageInfo.getList())); -// finalResultMap.put("pageInfo", finalPageInfo); -// finalResultMap.put("columns", result.get("columns")); -// finalResultMap.put("countResult", result.get("countResult")); -// finalResultMap.put("reportId", id); -// return finalResultMap; -// } -// -// return result; -// } -// } + if (StringUtils.isNotBlank(salaryReportIds) && salaryReportIds.contains(id + "")) { + //报表中缓存的条件 + salaryReportConditions = Utils.null2String(getSalaryCacheService(user).get(SalaryCacheKey.SALARY_REPORT_CONDITIONS + id)); + if (StringUtils.isNotBlank(salaryReportConditions) && salaryReportConditions.contains(paramMd5)) { + Map result = getSalaryCacheService(user).get(SalaryCacheKey.SALARY_REPORT_DATA + id + "_" + paramMd5); + if (param.getDimensionId().equals(empDimensionId)) { + // 人员维度需要分页 + Map finalResultMap = new HashMap<>(); + PageInfo> pageInfo = (PageInfo>) result.get("pageInfo"); + PageInfo> finalPageInfo = SalaryPageUtil.buildPage(param.getCurrent(), param.getPageSize()); + finalPageInfo.setTotal(pageInfo.getList().size()); + finalPageInfo.setList(SalaryPageUtil.subList(param.getCurrent(), param.getPageSize(), pageInfo.getList())); + finalResultMap.put("pageInfo", finalPageInfo); + finalResultMap.put("columns", result.get("columns")); + finalResultMap.put("countResult", result.get("countResult")); + finalResultMap.put("reportId", id); + return finalResultMap; + } + + return result; + } + } // 列表data From 2ba4bb72db413c1ebf11926c1d147d0484658c29 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Wed, 9 Oct 2024 18:10:38 +0800 Subject: [PATCH 12/43] =?UTF-8?q?=E8=96=AA=E8=B5=84=E6=98=8E=E7=BB=86?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=85=A5=E8=81=8C=E6=97=A5=E6=9C=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../report/service/impl/SalaryStatisticsEmployeeServiceImpl.java | 1 + .../salary/report/wrapper/SalaryStatisticsEmployeeWrapper.java | 1 + 2 files changed, 2 insertions(+) diff --git a/src/com/engine/salary/report/service/impl/SalaryStatisticsEmployeeServiceImpl.java b/src/com/engine/salary/report/service/impl/SalaryStatisticsEmployeeServiceImpl.java index 57a8d103d..5728f0886 100644 --- a/src/com/engine/salary/report/service/impl/SalaryStatisticsEmployeeServiceImpl.java +++ b/src/com/engine/salary/report/service/impl/SalaryStatisticsEmployeeServiceImpl.java @@ -278,6 +278,7 @@ public class SalaryStatisticsEmployeeServiceImpl extends Service implements Sala map.put("jobTitle", Util.null2String(emp.getJobtitleName())); map.put("status", Util.null2String(NumberUtil.isNumber(emp.getStatus()) ? SalaryEmployeeStatusEnum.parseByValue(Integer.valueOf(emp.getStatus())).getDefaultLabel() : null)); map.put("workCode", Util.null2String(emp.getWorkcode())); + map.put("companystartdate", Util.null2String(emp.getCompanystartdate())); // IncomeCategoryEnum incomeCategoryEnum = IncomeCategoryEnum.parseByValue(Integer.parseInt(se.getIncomeCategory())); // map.put("incomeCategory", Objects.isNull(incomeCategoryEnum) ? "" : SalaryI18nUtil.getI18nLabel(incomeCategoryEnum.getLabelId(), incomeCategoryEnum.getDefaultLabel())); diff --git a/src/com/engine/salary/report/wrapper/SalaryStatisticsEmployeeWrapper.java b/src/com/engine/salary/report/wrapper/SalaryStatisticsEmployeeWrapper.java index 66eeff817..646600f08 100644 --- a/src/com/engine/salary/report/wrapper/SalaryStatisticsEmployeeWrapper.java +++ b/src/com/engine/salary/report/wrapper/SalaryStatisticsEmployeeWrapper.java @@ -136,6 +136,7 @@ public class SalaryStatisticsEmployeeWrapper extends Service { columns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(0, "岗位"), "jobTitle")); columns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(0, "员工状态"), "status")); columns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(0, "工号"), "workCode")); + columns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(0, "入职日期"), "companystartdate")); } columns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(86184, "次数"), "acctTimes").setDisplay(WeaBoolAttr.FALSE)); // columns.add(new WeaTableColumn("100px",SalaryI18nUtil.getI18nLabel( 121908, "收入所得项目"), "incomeCategory")); From 861cda00faf7db815ca8a68c0371f4bd481b9d58 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Thu, 10 Oct 2024 11:39:22 +0800 Subject: [PATCH 13/43] =?UTF-8?q?1=E3=80=81=E6=89=B9=E9=87=8F=E9=94=81?= =?UTF-8?q?=E5=AE=9A=E3=80=81=E6=89=B9=E9=87=8F=E8=A7=A3=E9=94=81=E9=80=89?= =?UTF-8?q?=E6=8B=A9=E4=BA=BA=E5=91=98=E7=9A=84=E6=89=80=E5=9C=A8=E8=A1=8C?= =?UTF-8?q?=E7=9A=84=E5=B7=A5=E8=B5=84=E9=A1=B9=E7=9B=AE=EF=BC=8C=E9=9C=80?= =?UTF-8?q?=E6=A0=B9=E6=8D=AE=E4=BA=BA=E5=91=98=E7=9A=84=E9=80=89=E6=8B=A9?= =?UTF-8?q?=E6=9D=A5=E8=AE=BE=E7=BD=AE=E3=80=82=202=E3=80=81=E5=AF=BC?= =?UTF-8?q?=E5=85=A5=E8=96=AA=E8=B5=84=E9=A1=B9=E7=9B=AE=E6=97=B6=EF=BC=8C?= =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=B8=8B=E5=BD=93=E5=89=8D=E5=AF=BC=E5=85=A5?= =?UTF-8?q?=E8=A1=A8=E5=A4=B4=E8=83=BD=E5=90=A6=E8=87=AA=E5=8A=A8=E4=B8=BA?= =?UTF-8?q?=E4=B8=8A=E6=AC=A1=E9=80=89=E6=8B=A9=E7=9A=84=E8=A1=A8=E5=A4=B4?= =?UTF-8?q?=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../po/SalaryAcctResultTemplatePO.java | 7 ++ .../SalaryAcctResultTemplateMapper.xml | 21 +++++ .../service/SalaryAcctExcelService.java | 2 +- .../SalaryAcctResultTemplateService.java | 2 +- .../impl/SalaryAcctExcelServiceImpl.java | 83 ++++++++++++------- .../SalaryAcctResultTemplateServiceImpl.java | 4 +- .../salary/web/SalaryAcctController.java | 10 +-- 7 files changed, 92 insertions(+), 37 deletions(-) diff --git a/src/com/engine/salary/entity/salaryacct/po/SalaryAcctResultTemplatePO.java b/src/com/engine/salary/entity/salaryacct/po/SalaryAcctResultTemplatePO.java index a8d493a01..d5c4343f9 100644 --- a/src/com/engine/salary/entity/salaryacct/po/SalaryAcctResultTemplatePO.java +++ b/src/com/engine/salary/entity/salaryacct/po/SalaryAcctResultTemplatePO.java @@ -18,6 +18,7 @@ import java.util.Date; @NoArgsConstructor @Builder @Data +//hrsa_acct_result_template public class SalaryAcctResultTemplatePO { /** * 主键id @@ -29,6 +30,11 @@ public class SalaryAcctResultTemplatePO { */ private String templateName; + /** + * 模板类型, 0:导出模板 1:公共导出模板 2:导入模板 + */ + private Integer type; + /** * 薪资账套id */ @@ -51,4 +57,5 @@ public class SalaryAcctResultTemplatePO { //主键id集合 private Collection ids; + private Collection types; } \ No newline at end of file diff --git a/src/com/engine/salary/mapper/salaryacct/SalaryAcctResultTemplateMapper.xml b/src/com/engine/salary/mapper/salaryacct/SalaryAcctResultTemplateMapper.xml index 55c41dc1c..bd1ba58d5 100644 --- a/src/com/engine/salary/mapper/salaryacct/SalaryAcctResultTemplateMapper.xml +++ b/src/com/engine/salary/mapper/salaryacct/SalaryAcctResultTemplateMapper.xml @@ -11,6 +11,7 @@ + @@ -24,6 +25,7 @@ , t.template_name , t.tenant_key , t.update_time + , t.type @@ -75,12 +77,21 @@ AND update_time = #{updateTime} + + AND type = #{type} + AND id IN #{id} + + AND type IN + + #{type} + + ORDER BY id DESC @@ -117,6 +128,9 @@ update_time, + + type, + @@ -146,6 +160,9 @@ #{updateTime}, + + #{type}, + @@ -161,6 +178,7 @@ template_name=#{templateName}, tenant_key=#{tenantKey}, update_time=#{updateTime}, + type=#{type}, WHERE id = #{id} AND delete_type = 0 @@ -194,6 +212,9 @@ update_time=#{updateTime}, + + type=#{type}, + WHERE id = #{id} AND delete_type = 0 diff --git a/src/com/engine/salary/service/SalaryAcctExcelService.java b/src/com/engine/salary/service/SalaryAcctExcelService.java index 44aed9df9..e23815ba3 100644 --- a/src/com/engine/salary/service/SalaryAcctExcelService.java +++ b/src/com/engine/salary/service/SalaryAcctExcelService.java @@ -117,7 +117,7 @@ public interface SalaryAcctExcelService { ExcelPreviewDTO previewImportSalaryAcctResult(SalaryAcctImportParam param); - void cacheImportField(List salaryItems); + void cacheImportField(SalaryAcctResultTemplateSaveParam param); void cacheExportField(List salaryItems); diff --git a/src/com/engine/salary/service/SalaryAcctResultTemplateService.java b/src/com/engine/salary/service/SalaryAcctResultTemplateService.java index 7696cb4bf..a2b4c9c4a 100644 --- a/src/com/engine/salary/service/SalaryAcctResultTemplateService.java +++ b/src/com/engine/salary/service/SalaryAcctResultTemplateService.java @@ -75,5 +75,5 @@ public interface SalaryAcctResultTemplateService { * @param salarySobId * @return */ - List listBySalarySobId(Long salarySobId); + List listBySalarySobId(Long salarySobId,List types); } diff --git a/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java index 01aee1e36..aef1bb7c3 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java @@ -591,11 +591,12 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc // .build()) // .collect(Collectors.toList()); // 缓存勾选 - String cacheKey = user.getUID() + SalaryItemConstant.RESULT_IMPORT_FIELD_SIGN; - String cacheValue = (String) Util_DataCache.getObjVal(cacheKey); - List checkItems = JsonUtil.parseList(cacheValue, Long.class) == null ? new ArrayList<>() : JsonUtil.parseList(cacheValue, Long.class); - // 转换成dto -// return SalaryAcctImportFieldDTO.builder().formulaItems(formulaItems).sqlItems(sqlItems).inputItems(inputItems).checkItems(checkItems).build(); + List checkItems = new ArrayList<>(); + List salaryAcctResultTemplatePOS = getSalaryAcctResultTemplateService(user).listBySalarySobId(salaryAcctRecordPO.getSalarySobId(), Arrays.asList(2)); + if (CollectionUtils.isNotEmpty(salaryAcctResultTemplatePOS)) { + String items = salaryAcctResultTemplatePOS.get(0).getSalaryItemIds(); + checkItems = Arrays.stream(items.split(",")).map(Long::valueOf).collect(Collectors.toList()); + } return SalaryAcctImportFieldDTO.builder().itemsByGroup(itemsByGroup).checkItems(checkItems).build(); } @@ -667,18 +668,22 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc @Override public XSSFWorkbook exportImportTemplate(SalaryAcctImportTemplateParam param) { -// ValidUtil.doValidator(param); - // 从缓存中获取所选的薪资项目 - String cacheKey = user.getUID() + SalaryItemConstant.RESULT_IMPORT_FIELD_SIGN; - String cacheValue = (String) Util_DataCache.getObjVal(cacheKey); - List checkItems = JsonUtil.parseList(cacheValue, Long.class) == null ? new ArrayList<>() : JsonUtil.parseList(cacheValue, Long.class); + + // 查询薪资核算记录 + SalaryAcctRecordPO salaryAcctRecordPO = getSalaryAcctRecordService(user).getById(param.getSalaryAcctRecordId()); + if (Objects.isNull(salaryAcctRecordPO)) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98747, "薪资核算记录不存在或已被删除")); + } + + List checkItems = new ArrayList<>(); + List salaryAcctResultTemplatePOS = getSalaryAcctResultTemplateService(user).listBySalarySobId(salaryAcctRecordPO.getSalarySobId(), Arrays.asList(2)); + if (CollectionUtils.isNotEmpty(salaryAcctResultTemplatePOS)) { + String items = salaryAcctResultTemplatePOS.get(0).getSalaryItemIds(); + checkItems = Arrays.stream(items.split(",")).map(Long::valueOf).collect(Collectors.toList()); + } + // 必须选择导入模板所需的薪资项目 if (CollectionUtils.isEmpty(checkItems)) { - // 获取所有可以选择的薪资项目 - SalaryAcctRecordPO salaryAcctRecordPO = getSalaryAcctRecordService(user).getById(param.getSalaryAcctRecordId()); - if (Objects.isNull(salaryAcctRecordPO)) { - throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98747, "薪资核算记录不存在或已被删除")); - } // 查询薪资核算记录所用的薪资账套的薪资项目副本 List salarySobItems = getSalarySobItemService(user).listBySalarySobId(salaryAcctRecordPO.getSalarySobId()); List salaryItemIds = SalaryEntityUtil.properties(salarySobItems, SalarySobItemPO::getSalaryItemId, Collectors.toList()); @@ -688,11 +693,7 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc checkItems = salaryItemIds; } param.setSalaryItemIds(checkItems); - // 查询薪资核算记录 - SalaryAcctRecordPO salaryAcctRecordPO = getSalaryAcctRecordService(user).getById(param.getSalaryAcctRecordId()); - if (Objects.isNull(salaryAcctRecordPO)) { - throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98747, "薪资核算记录不存在或已被删除")); - } + // // 模板表头(默认必带"个税扣缴义务人"、"姓名") // List headerList = Lists.newArrayList(SalaryI18nUtil.getI18nLabel(85429, "姓名"), // "部门", @@ -976,9 +977,32 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc } @Override - public void cacheImportField(List salaryItems) { - String cacheKey = user.getUID() + SalaryItemConstant.RESULT_IMPORT_FIELD_SIGN; - Util_DataCache.setObjVal(cacheKey, JsonUtil.toJsonString(salaryItems)); + public void cacheImportField(SalaryAcctResultTemplateSaveParam saveParam) { + Long salaryAcctRecordId = saveParam.getSalaryAcctRecordId(); + SalaryAcctRecordPO salaryAcctRecordPO = getSalaryAcctRecordService(user).getById(salaryAcctRecordId); + if (salaryAcctRecordPO == null) { + throw new SalaryRunTimeException("薪资核算记录不存在"); + } + + List salaryAcctResultTemplatePOS = getSalaryAcctResultTemplateService(user).listBySalarySobId(salaryAcctRecordPO.getSalarySobId(), Collections.singletonList(2)); + if (CollectionUtils.isNotEmpty(salaryAcctResultTemplatePOS)) { + salaryAcctResultTemplatePOS.forEach(templatePO -> getSalaryAcctResultTemplateService(user).deleteById(templatePO.getId())); + } + + Date now = new Date(); + SalaryAcctResultTemplatePO templatePO = SalaryAcctResultTemplatePO.builder() + .id(IdGenerator.generate()) + .type(2) + .salarySobId(salaryAcctRecordPO.getSalarySobId()) + .salaryItemIds(StringUtils.join(saveParam.getSalaryItemIds(), ",")) + .templateName("") + .creator((long) user.getUID()) + .createTime(now) + .updateTime(now) + .deleteType(0) + .build(); + getSalaryAcctResultTemplateService(user).insertIgnoreNull(templatePO); + } @Override @@ -1467,7 +1491,7 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc throw new SalaryRunTimeException("薪资核算记录不存在"); } saveParam.setSalarySobId(salaryAcctRecordPO.getSalarySobId()); - List templateBySobId = getSalaryAcctResultTemplateService(user).listBySalarySobId(saveParam.getSalarySobId()); + List templateBySobId = getSalaryAcctResultTemplateService(user).listBySalarySobId(saveParam.getSalarySobId(), Arrays.asList(0, 1)); if (saveParam.getId() != null) { Optional saveNameOptional = templateBySobId.stream().filter(po -> po.getTemplateName().equals(saveParam.getTemplateName()) && !po.getId().equals(saveParam.getId())).findFirst(); if (saveNameOptional.isPresent()) { @@ -1480,6 +1504,7 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc } salaryAcctResultTemplatePO.setSalaryItemIds(StringUtils.join(saveParam.getSalaryItemIds(), ",")); salaryAcctResultTemplatePO.setTemplateName(saveParam.getTemplateName()); + salaryAcctResultTemplatePO.setType(0); salaryAcctResultTemplatePO.setUpdateTime(new Date()); getSalaryAcctResultTemplateService(user).update(salaryAcctResultTemplatePO); } else { @@ -1489,16 +1514,18 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc } // 新建 Date now = new Date(); - getSalaryAcctResultTemplateService(user).insertIgnoreNull(SalaryAcctResultTemplatePO.builder() + SalaryAcctResultTemplatePO templatePO = SalaryAcctResultTemplatePO.builder() .id(IdGenerator.generate()) + .type(0) .salarySobId(saveParam.getSalarySobId()) .salaryItemIds(StringUtils.join(saveParam.getSalaryItemIds(), ",")) .templateName(saveParam.getTemplateName()) - .creator(Long.valueOf(user.getUID())) + .creator((long) user.getUID()) .createTime(now) .updateTime(now) .deleteType(0) - .build()); + .build(); + getSalaryAcctResultTemplateService(user).insertIgnoreNull(templatePO); } } @@ -1525,7 +1552,7 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc if (salaryAcctRecordPO == null) { throw new SalaryRunTimeException("薪资核算记录为空"); } - List salaryAcctResultTemplatePOS = getSalaryAcctResultTemplateService(user).listBySalarySobId(salaryAcctRecordPO.getSalarySobId()); + List salaryAcctResultTemplatePOS = getSalaryAcctResultTemplateService(user).listBySalarySobId(salaryAcctRecordPO.getSalarySobId(), Arrays.asList(0, 1)); if (StringUtils.isNotBlank(param.getTemplateName())) { salaryAcctResultTemplatePOS = salaryAcctResultTemplatePOS.stream().filter(po -> po.getTemplateName().contains(param.getTemplateName())).collect(Collectors.toList()); } diff --git a/src/com/engine/salary/service/impl/SalaryAcctResultTemplateServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctResultTemplateServiceImpl.java index c79f314f8..219d971f6 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctResultTemplateServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctResultTemplateServiceImpl.java @@ -63,10 +63,10 @@ public class SalaryAcctResultTemplateServiceImpl extends Service implements Sala } @Override - public List listBySalarySobId(Long salarySobId) { + public List listBySalarySobId(Long salarySobId,List types) { if (salarySobId == null) { return Collections.emptyList(); } - return getSalaryAcctResultTemplateMapper().listSome(SalaryAcctResultTemplatePO.builder().salarySobId(salarySobId).build()); + return getSalaryAcctResultTemplateMapper().listSome(SalaryAcctResultTemplatePO.builder().salarySobId(salarySobId).types(types).build()); } } diff --git a/src/com/engine/salary/web/SalaryAcctController.java b/src/com/engine/salary/web/SalaryAcctController.java index 49fba1129..c8739df1d 100644 --- a/src/com/engine/salary/web/SalaryAcctController.java +++ b/src/com/engine/salary/web/SalaryAcctController.java @@ -167,7 +167,7 @@ public class SalaryAcctController { @GET @Path("/compareSobConfig") @Produces(MediaType.APPLICATION_JSON) - public String compareSobConfig(@Context HttpServletRequest request, @Context HttpServletResponse response,@QueryParam(value = "id") Long id) { + public String compareSobConfig(@Context HttpServletRequest request, @Context HttpServletResponse response, @QueryParam(value = "id") Long id) { User user = HrmUserVarify.getUser(request, response); return new ResponseResult(user).run(getSalaryAcctRecordWrapper(user)::compareSobConfig, id); } @@ -181,7 +181,7 @@ public class SalaryAcctController { @GET @Path("/updateSobConfig") @Produces(MediaType.APPLICATION_JSON) - public String updateSobConfig(@Context HttpServletRequest request, @Context HttpServletResponse response,@QueryParam(value = "id") Long id) { + public String updateSobConfig(@Context HttpServletRequest request, @Context HttpServletResponse response, @QueryParam(value = "id") Long id) { User user = HrmUserVarify.getUser(request, response); return new ResponseResult(user).run(getSalaryAcctRecordWrapper(user)::updateSobConfig, id); } @@ -583,9 +583,9 @@ public class SalaryAcctController { @POST @Path("/acctresult/cacheImportField") @Produces(MediaType.APPLICATION_JSON) - public String cacheImportField(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryAcctImportParam param) { + public String cacheImportField(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryAcctResultTemplateSaveParam param) { User user = HrmUserVarify.getUser(request, response); - return new ResponseResult, String>(user).run(getSalaryAcctExcelService(user)::cacheImportField, param.getSalaryItems()); + return new ResponseResult(user).run(getSalaryAcctExcelService(user)::cacheImportField, param); } // 薪资核算导出字段缓存 @@ -630,7 +630,7 @@ public class SalaryAcctController { @Produces(MediaType.APPLICATION_JSON) public String exportTemplateList(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryAcctResultTemplateSaveParam param) { User user = HrmUserVarify.getUser(request, response); - return new ResponseResult>(user).run(getSalaryAcctExcelService(user)::exportTemplateList, param); + return new ResponseResult>(user).run(getSalaryAcctExcelService(user)::exportTemplateList, param); } From da4e908a7de8be3f65e98b5fd7fcc1197b0d8275 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Thu, 10 Oct 2024 14:16:57 +0800 Subject: [PATCH 14/43] =?UTF-8?q?=E6=A8=A1=E6=9D=BFsql?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resource/sqlupgrade/DM/sql202410100103.sql | 8 ++++++++ resource/sqlupgrade/GS/sql202410100103.sql | 8 ++++++++ resource/sqlupgrade/JC/sql202410100103.sql | 8 ++++++++ resource/sqlupgrade/Mysql/sql202410100103.sql | 3 +++ resource/sqlupgrade/Oracle/sql202410100103.sql | 7 +++++++ resource/sqlupgrade/PG/sql202410100103.sql | 3 +++ resource/sqlupgrade/SQLServer/sql202410100103.sql | 5 +++++ resource/sqlupgrade/ST/sql202410100103.sql | 8 ++++++++ 8 files changed, 50 insertions(+) create mode 100644 resource/sqlupgrade/DM/sql202410100103.sql create mode 100644 resource/sqlupgrade/GS/sql202410100103.sql create mode 100644 resource/sqlupgrade/JC/sql202410100103.sql create mode 100644 resource/sqlupgrade/Mysql/sql202410100103.sql create mode 100644 resource/sqlupgrade/Oracle/sql202410100103.sql create mode 100644 resource/sqlupgrade/PG/sql202410100103.sql create mode 100644 resource/sqlupgrade/SQLServer/sql202410100103.sql create mode 100644 resource/sqlupgrade/ST/sql202410100103.sql diff --git a/resource/sqlupgrade/DM/sql202410100103.sql b/resource/sqlupgrade/DM/sql202410100103.sql new file mode 100644 index 000000000..4d36ef44a --- /dev/null +++ b/resource/sqlupgrade/DM/sql202410100103.sql @@ -0,0 +1,8 @@ +ALTER TABLE hrsa_acct_result_template ADD ( + type number NULL +); +/ + +update hrsa_acct_result_template set type = 0; +/ + diff --git a/resource/sqlupgrade/GS/sql202410100103.sql b/resource/sqlupgrade/GS/sql202410100103.sql new file mode 100644 index 000000000..4d36ef44a --- /dev/null +++ b/resource/sqlupgrade/GS/sql202410100103.sql @@ -0,0 +1,8 @@ +ALTER TABLE hrsa_acct_result_template ADD ( + type number NULL +); +/ + +update hrsa_acct_result_template set type = 0; +/ + diff --git a/resource/sqlupgrade/JC/sql202410100103.sql b/resource/sqlupgrade/JC/sql202410100103.sql new file mode 100644 index 000000000..4d36ef44a --- /dev/null +++ b/resource/sqlupgrade/JC/sql202410100103.sql @@ -0,0 +1,8 @@ +ALTER TABLE hrsa_acct_result_template ADD ( + type number NULL +); +/ + +update hrsa_acct_result_template set type = 0; +/ + diff --git a/resource/sqlupgrade/Mysql/sql202410100103.sql b/resource/sqlupgrade/Mysql/sql202410100103.sql new file mode 100644 index 000000000..5b645e3f6 --- /dev/null +++ b/resource/sqlupgrade/Mysql/sql202410100103.sql @@ -0,0 +1,3 @@ +ALTER TABLE hrsa_acct_result_template ADD COLUMN type int(0) NULL ; + +update hrsa_acct_result_template set type = 0; diff --git a/resource/sqlupgrade/Oracle/sql202410100103.sql b/resource/sqlupgrade/Oracle/sql202410100103.sql new file mode 100644 index 000000000..90d5981fd --- /dev/null +++ b/resource/sqlupgrade/Oracle/sql202410100103.sql @@ -0,0 +1,7 @@ +ALTER TABLE hrsa_acct_result_template ADD ( + type number NULL +) +/ + +update hrsa_acct_result_template set type = 0 +/ \ No newline at end of file diff --git a/resource/sqlupgrade/PG/sql202410100103.sql b/resource/sqlupgrade/PG/sql202410100103.sql new file mode 100644 index 000000000..2deb5e3a5 --- /dev/null +++ b/resource/sqlupgrade/PG/sql202410100103.sql @@ -0,0 +1,3 @@ +alter table hrsa_acct_result_template add type int null ; + +update hrsa_acct_result_template set type = 0; \ No newline at end of file diff --git a/resource/sqlupgrade/SQLServer/sql202410100103.sql b/resource/sqlupgrade/SQLServer/sql202410100103.sql new file mode 100644 index 000000000..f2820af3a --- /dev/null +++ b/resource/sqlupgrade/SQLServer/sql202410100103.sql @@ -0,0 +1,5 @@ +ALTER TABLE hrsa_acct_result_template ADD type int NULL +GO + +update hrsa_acct_result_template set type = 0 +GO \ No newline at end of file diff --git a/resource/sqlupgrade/ST/sql202410100103.sql b/resource/sqlupgrade/ST/sql202410100103.sql new file mode 100644 index 000000000..4d36ef44a --- /dev/null +++ b/resource/sqlupgrade/ST/sql202410100103.sql @@ -0,0 +1,8 @@ +ALTER TABLE hrsa_acct_result_template ADD ( + type number NULL +); +/ + +update hrsa_acct_result_template set type = 0; +/ + From 9621882a04dda963b5db2a1fd90c371ea6bf5556 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Fri, 11 Oct 2024 09:10:33 +0800 Subject: [PATCH 15/43] =?UTF-8?q?=E9=A2=86=E6=82=A6=E6=8E=A8=E9=80=81uc?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entity/ly/param/LyVoucherPushParam.java | 5 + .../salary/service/impl/LyPZServiceImpl.java | 370 +++++++++--------- 2 files changed, 196 insertions(+), 179 deletions(-) diff --git a/src/com/engine/salary/entity/ly/param/LyVoucherPushParam.java b/src/com/engine/salary/entity/ly/param/LyVoucherPushParam.java index b1ca27d41..d04cad174 100644 --- a/src/com/engine/salary/entity/ly/param/LyVoucherPushParam.java +++ b/src/com/engine/salary/entity/ly/param/LyVoucherPushParam.java @@ -52,5 +52,10 @@ public class LyVoucherPushParam { */ private List details; + /** + * 账簿编码 + */ + private String zbbm; + } diff --git a/src/com/engine/salary/service/impl/LyPZServiceImpl.java b/src/com/engine/salary/service/impl/LyPZServiceImpl.java index 38facdbc7..5e721be77 100644 --- a/src/com/engine/salary/service/impl/LyPZServiceImpl.java +++ b/src/com/engine/salary/service/impl/LyPZServiceImpl.java @@ -6,10 +6,7 @@ import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; import com.engine.salary.entity.hrm.DeptInfo; import com.engine.salary.entity.hrm.SubCompanyInfo; -import com.engine.salary.entity.ly.dto.LyFzhsBrowser; -import com.engine.salary.entity.ly.dto.LyFzhsInfo; -import com.engine.salary.entity.ly.dto.LyPzPreview; -import com.engine.salary.entity.ly.dto.LyVoucherDetailDTO; +import com.engine.salary.entity.ly.dto.*; import com.engine.salary.entity.ly.param.*; import com.engine.salary.entity.ly.po.*; import com.engine.salary.entity.salaryformula.ExpressFormula; @@ -31,10 +28,15 @@ import com.engine.salary.util.db.IdGenerator; import com.engine.salary.util.db.MapperProxyFactory; import com.engine.salary.util.page.PageInfo; import com.engine.salary.util.page.SalaryPageUtil; +import com.engine.salary.util.xml.XStreamUtil; import com.google.common.collect.Lists; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.MapUtils; +import org.apache.commons.httpclient.HttpClient; +import org.apache.commons.httpclient.methods.PostMethod; +import org.apache.commons.httpclient.methods.RequestEntity; +import org.apache.commons.httpclient.methods.StringRequestEntity; import org.apache.commons.lang.StringUtils; import org.apache.commons.lang3.math.NumberUtils; import weaver.conn.RecordSet; @@ -696,181 +698,188 @@ public class LyPZServiceImpl extends Service implements LyPZService { private void pushVoucher(LyVoucherPushParam pushParam) { pushParam.setStatus(NumberUtils.INTEGER_ONE); pushParam.setPushMsg("推送成功"); - // Calendar cal = Calendar.getInstance(); - // cal.setTime(new Date()); - // - // LyNCVoucher lyNCVoucher = new LyNCVoucher(); - // // 凭证类别 非空 (凭证类别) - // lyNCVoucher.setPkVouchertype("01"); - // // 会计年度 非空 - // lyNCVoucher.setYear(String.valueOf(cal.get(Calendar.YEAR))); - // // 来源系统 非空 只支持模块编号 - // lyNCVoucher.setPkSystem("GL"); - // // 凭证类型值 0:正常凭证 3:数量调整凭证 不可空 - // lyNCVoucher.setVoucherkind("0"); - // // 核算账簿 非空 (账簿_财务核算账簿) - // lyNCVoucher.setPkAccountingbook("201-0003"); - // // 会计期间 非空 - // lyNCVoucher.setPeriod("02"); - // // 制单日期 非空 - // lyNCVoucher.setPrepareddate("2024-02-22 00:00:00"); - // // 制单人 非空 (用户) - // lyNCVoucher.setPkPrepared("fw"); - // //所属组织 非空 (组织) - // lyNCVoucher.setPkOrg("101"); - // lyNCVoucher.setDiscardflag("N"); - // - // - // List jfDetailList = new ArrayList<>(); - // List dfDetailList = new ArrayList<>(); - // pushParam.getDetails().stream().forEach(detail -> { - // if ((StringUtils.isNotBlank(detail.getJfValue())) && (!"0.00".equals(detail.getJfValue()))) { - // jfDetailList.add(detail); - // } else { - // dfDetailList.add(detail); - // } - // }); - // ArrayList lyNCVoucherDetailList = new ArrayList<>(); - // // 借方分录 - // for (int i = 0; i < jfDetailList.size(); i++) { - // LyVoucherDetailPushParam detailParam = jfDetailList.get(i); - // LyNCVoucherDetail lyNCVoucherDetail = new LyNCVoucherDetail(); - // // 分录号 非空 - // lyNCVoucherDetail.setDetailindex(String.valueOf(i+1)); - // // 摘要 非空 - // lyNCVoucherDetail.setExplanation(detailParam.getZy()); - // // 折本汇率 - // lyNCVoucherDetail.setExcrate2("1"); - // // 原币借方金额 - // lyNCVoucherDetail.setDebitamount(detailParam.getJfValue()); - // // 本币借方金额 可空 - // lyNCVoucherDetail.setLocaldebitamount(detailParam.getJfValue()); - // // 币种 非空 - // lyNCVoucherDetail.setPkCurrtype("CNY"); - // // 科目 非空 - // String kjkm = detailParam.getKjkm(); - // String kjkmbm = kjkm.split("\\\\")[0]; - // lyNCVoucherDetail.setPkAccasoa(kjkmbm); - // // 辅助核算 - // List lyNCVoucherAssList = new ArrayList<>(); - // if (StringUtils.isNotBlank(detailParam.getFzhsXmqs())) { - // LyNCVoucherAss ass = new LyNCVoucherAss(); - // ass.setPkChecktype(""); - // ass.setPkCheckvalue(detailParam.getFzhsXmqs()); - // lyNCVoucherAssList.add(ass); - // } - // if (StringUtils.isNotBlank(detailParam.getFzhsFwlb())) { - // LyNCVoucherAss ass = new LyNCVoucherAss(); - // ass.setPkChecktype(""); - // ass.setPkCheckvalue(detailParam.getFzhsFwlb()); - // lyNCVoucherAssList.add(ass); - // } - // if (StringUtils.isNotBlank(detailParam.getFzhsSllb())) { - // LyNCVoucherAss ass = new LyNCVoucherAss(); - // ass.setPkChecktype(""); - // ass.setPkCheckvalue(detailParam.getFzhsSllb()); - // lyNCVoucherAssList.add(ass); - // } - // if (StringUtils.isNotBlank(detailParam.getFzhsKs())) { - // LyNCVoucherAss ass = new LyNCVoucherAss(); - // ass.setPkChecktype(""); - // ass.setPkCheckvalue(detailParam.getFzhsKs()); - // lyNCVoucherAssList.add(ass); - // } - // lyNCVoucherDetail.setAss(lyNCVoucherAssList); - // lyNCVoucherDetailList.add(lyNCVoucherDetail); - // } - // - // // 贷方分录 - // for (int i = 0; i < dfDetailList.size(); i++) { - // LyVoucherDetailPushParam detailParam = dfDetailList.get(i); - // LyNCVoucherDetail lyNCVoucherDetail = new LyNCVoucherDetail(); - // // 分录号 非空 - // lyNCVoucherDetail.setDetailindex(lyNCVoucherDetailList.size() + String.valueOf(i+1)); - // // 摘要 非空 - // lyNCVoucherDetail.setExplanation(detailParam.getZy()); - // // 折本汇率 - // lyNCVoucherDetail.setExcrate2("1"); - // // 原币借方金额 - // lyNCVoucherDetail.setCreditamount(detailParam.getDfValue()); - // // 本币借方金额 可空 - // lyNCVoucherDetail.setLocalcreditamount(detailParam.getDfValue()); - // // 币种 非空 - // lyNCVoucherDetail.setPkCurrtype("CNY"); - // // 科目 非空 - // String kjkm = detailParam.getKjkm(); - // String kjkmbm = kjkm.split("\\\\")[0]; - // lyNCVoucherDetail.setPkAccasoa(kjkmbm); - // // 辅助核算 - // List lyNCVoucherAssList = new ArrayList<>(); - // if (StringUtils.isNotBlank(detailParam.getFzhsXmqs())) { - // LyNCVoucherAss ass = new LyNCVoucherAss(); - // ass.setPkChecktype(""); - // ass.setPkCheckvalue(detailParam.getFzhsXmqs()); - // lyNCVoucherAssList.add(ass); - // } - // if (StringUtils.isNotBlank(detailParam.getFzhsFwlb())) { - // LyNCVoucherAss ass = new LyNCVoucherAss(); - // ass.setPkChecktype(""); - // ass.setPkCheckvalue(detailParam.getFzhsFwlb()); - // lyNCVoucherAssList.add(ass); - // } - // if (StringUtils.isNotBlank(detailParam.getFzhsSllb())) { - // LyNCVoucherAss ass = new LyNCVoucherAss(); - // ass.setPkChecktype(""); - // ass.setPkCheckvalue(detailParam.getFzhsSllb()); - // lyNCVoucherAssList.add(ass); - // } - // if (StringUtils.isNotBlank(detailParam.getFzhsKs())) { - // LyNCVoucherAss ass = new LyNCVoucherAss(); - // ass.setPkChecktype(""); - // ass.setPkCheckvalue(detailParam.getFzhsKs()); - // lyNCVoucherAssList.add(ass); - // } - // lyNCVoucherDetail.setAss(lyNCVoucherAssList); - // lyNCVoucherDetailList.add(lyNCVoucherDetail); - // } - // lyNCVoucher.setDetails(lyNCVoucherDetailList); - // LyNCVoucherHead voucherHead = new LyNCVoucherHead(); - // voucherHead.setVoucherHead(lyNCVoucher); - // - // LyNCVoucherUfinterface lyNCVoucherUfinterface = new LyNCVoucherUfinterface(); - // lyNCVoucherUfinterface.setVoucher(voucherHead); - // lyNCVoucherUfinterface.setAccount("develop"); - // lyNCVoucherUfinterface.setBilltype("vouchergl"); - // lyNCVoucherUfinterface.setBusinessunitcode("develop"); - // lyNCVoucherUfinterface.setFilename(""); - // lyNCVoucherUfinterface.setGroupcode(""); - // lyNCVoucherUfinterface.setIsexchange(""); - // lyNCVoucherUfinterface.setOrgcode(""); - // lyNCVoucherUfinterface.setReceiver("0001121000000000JIYO"); - // lyNCVoucherUfinterface.setReplace(""); - // lyNCVoucherUfinterface.setRoottag(""); - // lyNCVoucherUfinterface.setSender("OA"); - // - // String xml = "" + XStreamUtil.marshal(lyNCVoucherUfinterface); - // System.out.println(xml); - // - // - // HttpClient httpClient = new HttpClient(); - // PostMethod httpPost = new PostMethod("http://172.18.0.10:8090/service/XChangeServlet?account=002&groupcode=leading"); - // httpPost.setRequestHeader("content-type", "application/json;charset=utf-8"); - // - // String result = ""; - // try { - // RequestEntity entity = new StringRequestEntity(xml, "application/json", "UTF-8"); - // httpPost.setRequestEntity(entity); - // httpClient.executeMethod(httpPost); - // result = httpPost.getResponseBodyAsString(); - // System.out.println(result); - // LyNCVoucherReturn lyNCVoucherReturn = XStreamUtil.unmarshal(LyNCVoucherReturn.class, result); - // System.out.println(lyNCVoucherReturn); - // - // - // } catch (Exception e) { - // System.out.println("d"); - // } - // throw new SalaryRunTimeException("hi"); + Calendar cal = Calendar.getInstance(); + cal.setTime(new Date()); + + LyNCVoucher lyNCVoucher = new LyNCVoucher(); + // 凭证类别 非空 (凭证类别) + lyNCVoucher.setPkVouchertype("01"); + // 会计年度 非空 + lyNCVoucher.setYear(String.valueOf(cal.get(Calendar.YEAR))); + // 来源系统 非空 只支持模块编号 + lyNCVoucher.setPkSystem("GL"); + // 凭证类型值 0:正常凭证 3:数量调整凭证 不可空 + lyNCVoucher.setVoucherkind("0"); + // 核算账簿 非空 (账簿_财务核算账簿) + lyNCVoucher.setPkAccountingbook("201-0003"); + // 会计期间 非空 + lyNCVoucher.setPeriod(String.valueOf(cal.get(Calendar.MONTH)+1)); + // 制单日期 非空 + lyNCVoucher.setPrepareddate(SalaryDateUtil.getFormatLocalDateTime(new Date())); + // 制单人 非空 (用户) + lyNCVoucher.setPkPrepared("fw"); + //所属组织 非空 (组织) + // lyNCVoucher.setPkOrg(pushParam.getZbbm().split("-")[0]); + lyNCVoucher.setPkOrg("201"); + lyNCVoucher.setDiscardflag("N"); + + + List jfDetailList = new ArrayList<>(); + List dfDetailList = new ArrayList<>(); + pushParam.getDetails().stream().forEach(detail -> { + if ((StringUtils.isNotBlank(detail.getJfValue())) && (!"0.00".equals(detail.getJfValue()))) { + jfDetailList.add(detail); + } else { + dfDetailList.add(detail); + } + }); + ArrayList lyNCVoucherDetailList = new ArrayList<>(); + // 借方分录 + for (int i = 0; i < jfDetailList.size(); i++) { + LyVoucherDetailPushParam detailParam = jfDetailList.get(i); + LyNCVoucherDetail lyNCVoucherDetail = new LyNCVoucherDetail(); + // 分录号 非空 + lyNCVoucherDetail.setDetailindex(String.valueOf(i+1)); + // 摘要 非空 + lyNCVoucherDetail.setExplanation(detailParam.getZy()); + // 折本汇率 + lyNCVoucherDetail.setExcrate2("1"); + // 原币借方金额 + lyNCVoucherDetail.setDebitamount(detailParam.getJfValue()); + // 本币借方金额 可空 + lyNCVoucherDetail.setLocaldebitamount(detailParam.getJfValue()); + // 币种 非空 + lyNCVoucherDetail.setPkCurrtype("CNY"); + // 科目 非空 + String kjkm = detailParam.getKjkm(); + String kjkmbm = kjkm.split("\\\\")[0]; + lyNCVoucherDetail.setPkAccasoa(kjkmbm); + // 辅助核算 + List lyNCVoucherAssList = new ArrayList<>(); + if (StringUtils.isNotBlank(detailParam.getFzhsXmqs())) { + // 项目期数 + LyNCVoucherAss ass = new LyNCVoucherAss(); + ass.setPkChecktype("0010"); + ass.setPkCheckvalue(detailParam.getFzhsXmqs()); + lyNCVoucherAssList.add(ass); + } + if (StringUtils.isNotBlank(detailParam.getFzhsFwlb())) { + // 房屋列别 + LyNCVoucherAss ass = new LyNCVoucherAss(); + ass.setPkChecktype("xz001"); + ass.setPkCheckvalue(detailParam.getFzhsFwlb()); + lyNCVoucherAssList.add(ass); + } + if (StringUtils.isNotBlank(detailParam.getFzhsSllb())) { + // 税率类别 + LyNCVoucherAss ass = new LyNCVoucherAss(); + ass.setPkChecktype("yy001"); + ass.setPkCheckvalue(detailParam.getFzhsSllb()); + lyNCVoucherAssList.add(ass); + } + if (StringUtils.isNotBlank(detailParam.getFzhsKs())) { + LyNCVoucherAss ass = new LyNCVoucherAss(); + // 客商 + ass.setPkChecktype("0004"); + ass.setPkCheckvalue(detailParam.getFzhsKs()); + lyNCVoucherAssList.add(ass); + } + // TODO 其他 + lyNCVoucherDetail.setAss(lyNCVoucherAssList); + lyNCVoucherDetailList.add(lyNCVoucherDetail); + } + + // 贷方分录 + for (int i = 0; i < dfDetailList.size(); i++) { + LyVoucherDetailPushParam detailParam = dfDetailList.get(i); + LyNCVoucherDetail lyNCVoucherDetail = new LyNCVoucherDetail(); + // 分录号 非空 + lyNCVoucherDetail.setDetailindex(lyNCVoucherDetailList.size() + String.valueOf(i+1)); + // 摘要 非空 + lyNCVoucherDetail.setExplanation(detailParam.getZy()); + // 折本汇率 + lyNCVoucherDetail.setExcrate2("1"); + // 原币借方金额 + lyNCVoucherDetail.setCreditamount(detailParam.getDfValue()); + // 本币借方金额 可空 + lyNCVoucherDetail.setLocalcreditamount(detailParam.getDfValue()); + // 币种 非空 + lyNCVoucherDetail.setPkCurrtype("CNY"); + // 科目 非空 + String kjkm = detailParam.getKjkm(); + String kjkmbm = kjkm.split("\\\\")[0]; + lyNCVoucherDetail.setPkAccasoa(kjkmbm); + // 辅助核算 + List lyNCVoucherAssList = new ArrayList<>(); + if (StringUtils.isNotBlank(detailParam.getFzhsXmqs())) { + LyNCVoucherAss ass = new LyNCVoucherAss(); + ass.setPkChecktype("0010"); + ass.setPkCheckvalue(detailParam.getFzhsXmqs()); + lyNCVoucherAssList.add(ass); + } + if (StringUtils.isNotBlank(detailParam.getFzhsFwlb())) { + LyNCVoucherAss ass = new LyNCVoucherAss(); + ass.setPkChecktype("xz001"); + ass.setPkCheckvalue(detailParam.getFzhsFwlb()); + lyNCVoucherAssList.add(ass); + } + if (StringUtils.isNotBlank(detailParam.getFzhsSllb())) { + LyNCVoucherAss ass = new LyNCVoucherAss(); + ass.setPkChecktype("yy001"); + ass.setPkCheckvalue(detailParam.getFzhsSllb()); + lyNCVoucherAssList.add(ass); + } + if (StringUtils.isNotBlank(detailParam.getFzhsKs())) { + LyNCVoucherAss ass = new LyNCVoucherAss(); + ass.setPkChecktype("0004"); + ass.setPkCheckvalue(detailParam.getFzhsKs()); + lyNCVoucherAssList.add(ass); + } + // todo 其他 + lyNCVoucherDetail.setAss(lyNCVoucherAssList); + lyNCVoucherDetailList.add(lyNCVoucherDetail); + } + lyNCVoucher.setDetails(lyNCVoucherDetailList); + LyNCVoucherHead voucherHead = new LyNCVoucherHead(); + voucherHead.setVoucherHead(lyNCVoucher); + + LyNCVoucherUfinterface lyNCVoucherUfinterface = new LyNCVoucherUfinterface(); + lyNCVoucherUfinterface.setVoucher(voucherHead); + lyNCVoucherUfinterface.setAccount("develop"); + lyNCVoucherUfinterface.setBilltype("vouchergl"); + lyNCVoucherUfinterface.setBusinessunitcode("develop"); + lyNCVoucherUfinterface.setFilename(""); + lyNCVoucherUfinterface.setGroupcode(""); + lyNCVoucherUfinterface.setIsexchange(""); + lyNCVoucherUfinterface.setOrgcode(""); + lyNCVoucherUfinterface.setReceiver(""); + lyNCVoucherUfinterface.setReplace(""); + lyNCVoucherUfinterface.setRoottag(""); + lyNCVoucherUfinterface.setSender("OA"); + // "" + String xml = XStreamUtil.marshal(lyNCVoucherUfinterface); + System.out.println(xml); + + + HttpClient httpClient = new HttpClient(); + PostMethod httpPost = new PostMethod("http://172.18.0.10:8090/service/XChangeServlet?account=002&groupcode=leading"); + httpPost.setRequestHeader("content-type", "application/json;charset=utf-8"); + + String result = ""; + try { + RequestEntity entity = new StringRequestEntity(xml, "application/json", "UTF-8"); + httpPost.setRequestEntity(entity); + httpClient.executeMethod(httpPost); + result = httpPost.getResponseBodyAsString(); + System.out.println(result); + LyNCVoucherReturn lyNCVoucherReturn = XStreamUtil.unmarshal(LyNCVoucherReturn.class, result); + System.out.println(lyNCVoucherReturn); + + + } catch (Exception e) { + System.out.println("d"); + } + throw new SalaryRunTimeException("hi"); // test 生成xml @@ -917,6 +926,9 @@ public class LyPZServiceImpl extends Service implements LyPZService { * @param pushParam */ private void verifyKjkm(LyVoucherPushParam pushParam) { + // if(StringUtils.isBlank(pushParam.getZbbm())) { + // throw new SalaryRunTimeException("账簿编码不能为空"); + // } // 校验科目id是否合规 Map kmbmInfoMap = new HashMap<>(); List allKjkm = getUfKjkmMapper().listAll(); From 310c77a2705b1d27bef549da510a18e319b13483 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Fri, 11 Oct 2024 15:14:21 +0800 Subject: [PATCH 16/43] =?UTF-8?q?excel=E8=AE=BE=E7=BD=AE=E5=88=97=E5=AE=BD?= =?UTF-8?q?=20=E8=B6=85=E8=BF=87255=E6=8A=A5=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../engine/salary/util/excel/ExcelUtilPlus.java | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/com/engine/salary/util/excel/ExcelUtilPlus.java b/src/com/engine/salary/util/excel/ExcelUtilPlus.java index f301e8c23..9da402ce7 100644 --- a/src/com/engine/salary/util/excel/ExcelUtilPlus.java +++ b/src/com/engine/salary/util/excel/ExcelUtilPlus.java @@ -134,7 +134,7 @@ public class ExcelUtilPlus { rowZeroCell.setCellValue(columnGroupItem.getText().toString()); rowZeroCell.setCellStyle(titleCellStyle); //设置列宽 - sheet.setColumnWidth(i, Math.max(12, columnGroupItem.getText().length() * 4) * 256); + sheet.setColumnWidth(i, Math.min(255, Math.max(12, columnGroupItem.getText().length() * 4)) * 256); patternList.add(columnGroupItem.getPattern()); } @@ -262,7 +262,7 @@ public class ExcelUtilPlus { //遍历设置列宽 List header = rowList.get(0); for (int i = 0; i < header.size(); i++) { - sheet.setColumnWidth(i, Math.max(12, header.get(i).toString().length() * 4) * 256); + sheet.setColumnWidth(i, Math.min(255, Math.max(12, header.get(i).toString().length() * 4)) * 256); } for (int rowIndex = 0; rowIndex < rowList.size(); rowIndex++) { @@ -349,7 +349,7 @@ public class ExcelUtilPlus { //遍历设置列宽 List header = rowList.get(0); for (int i = 0; i < header.size(); i++) { - sheet.setColumnWidth(i, Math.max(12, header.get(i).toString().length() * 4) * 256); + sheet.setColumnWidth(i, Math.min(255, Math.max(12, header.get(i).toString().length() * 4)) * 256); } for (int rowIndex = 0; rowIndex < rowList.size(); rowIndex++) { @@ -454,7 +454,7 @@ public class ExcelUtilPlus { //遍历设置列宽 List header = rowList.get(0); for (int i = 0; i < header.size(); i++) { - sheet.setColumnWidth(i, Math.max(12, header.get(i).toString().length() * 4) * 256); + sheet.setColumnWidth(i, Math.min(255, Math.max(12, header.get(i).toString().length() * 4)) * 256); } for (int rowIndex = 0; rowIndex < rowList.size(); rowIndex++) { @@ -588,7 +588,7 @@ public class ExcelUtilPlus { rowOneCell.setCellValue(columnGroupItem.getText().toString()); rowOneCell.setCellStyle(titleCellStyle); //设置列宽 - sheet.setColumnWidth(startIndex, Math.max(12, columnGroupItem.getText().length() * 4) * 256); + sheet.setColumnWidth(startIndex, Math.min(255, Math.max(12, columnGroupItem.getText().length() * 4)) * 256); startIndex++; patternList.add(columnGroupItem.getPattern()); } else { @@ -610,7 +610,7 @@ public class ExcelUtilPlus { subHeader.setCellValue(childrenItem.getText().toString()); subHeader.setCellStyle(titleCellStyle); //设置列宽 - sheet.setColumnWidth(startIndex + j, Math.max(12, childrenItem.getText().length() * 4) * 256); + sheet.setColumnWidth(startIndex + j, Math.min(255, Math.max(12, childrenItem.getText().length() * 4)) * 256); patternList.add(childrenItem.getPattern()); } @@ -789,7 +789,7 @@ public class ExcelUtilPlus { rowOneCell.setCellValue(columnGroupItem.getText().toString()); rowOneCell.setCellStyle(titleCellStyle); //设置列宽 - sheet.setColumnWidth(startIndex, Math.max(12, columnGroupItem.getText().length() * 4) * 256); + sheet.setColumnWidth(startIndex, Math.min(255, Math.max(12, columnGroupItem.getText().length() * 4)) * 256); startIndex++; } else { List childrenList = columnGroupItem.getChildren(); @@ -810,7 +810,7 @@ public class ExcelUtilPlus { subHeader.setCellValue(childrenItem.getText().toString()); subHeader.setCellStyle(titleCellStyle); //设置列宽 - sheet.setColumnWidth(startIndex + j, Math.max(12, childrenItem.getText().length() * 4) * 256); + sheet.setColumnWidth(startIndex + j, Math.min(255, Math.max(12, childrenItem.getText().length() * 4)) * 256); } startIndex += childrenList.size(); From 64ac30c05f683cfdee92e36c71d907b3d0c4de64 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Fri, 11 Oct 2024 15:34:17 +0800 Subject: [PATCH 17/43] =?UTF-8?q?=E8=87=AA=E5=AE=9A=E4=B9=89=E5=88=97?= =?UTF-8?q?=E5=85=A8=E5=B1=80=E8=AE=BE=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resource/sqlupgrade/DM/sql202410110103.sql | 13 ++ resource/sqlupgrade/GS/sql202410110103.sql | 13 ++ resource/sqlupgrade/JC/sql202410110103.sql | 13 ++ resource/sqlupgrade/Mysql/sql202410110103.sql | 12 + .../sqlupgrade/Oracle/sql202410110103.sql | 12 + resource/sqlupgrade/PG/sql202410110103.sql | 11 + .../sqlupgrade/SQLServer/sql202410110103.sql | 12 + resource/sqlupgrade/ST/sql202410110103.sql | 13 ++ .../constant/SalaryDefaultTenantConstant.java | 13 +- .../setting/dto/PageListSettingDTO.java | 20 ++ .../param/PageListSettingSaveParam.java | 31 +++ .../entity/setting/po/PageListSettingPO.java | 72 ++++++ .../mapper/setting/PageListSettingMapper.java | 73 ++++++ .../mapper/setting/PageListSettingMapper.xml | 209 ++++++++++++++++++ .../SalaryStatisticsEmployeeServiceImpl.java | 55 ++--- .../SalaryStatisticsEmployeeController.java | 2 +- .../SalaryStatisticsEmployeeWrapper.java | 3 + .../engine/salary/service/SettingService.java | 11 + .../service/impl/SettingServiceImpl.java | 102 +++++++++ .../salary/web/SalaryCommonController.java | 28 ++- .../salary/wrapper/SalaryCommonWrapper.java | 18 ++ 21 files changed, 699 insertions(+), 37 deletions(-) create mode 100644 resource/sqlupgrade/DM/sql202410110103.sql create mode 100644 resource/sqlupgrade/GS/sql202410110103.sql create mode 100644 resource/sqlupgrade/JC/sql202410110103.sql create mode 100644 resource/sqlupgrade/Mysql/sql202410110103.sql create mode 100644 resource/sqlupgrade/Oracle/sql202410110103.sql create mode 100644 resource/sqlupgrade/PG/sql202410110103.sql create mode 100644 resource/sqlupgrade/SQLServer/sql202410110103.sql create mode 100644 resource/sqlupgrade/ST/sql202410110103.sql create mode 100644 src/com/engine/salary/entity/setting/dto/PageListSettingDTO.java create mode 100644 src/com/engine/salary/entity/setting/param/PageListSettingSaveParam.java create mode 100644 src/com/engine/salary/entity/setting/po/PageListSettingPO.java create mode 100644 src/com/engine/salary/mapper/setting/PageListSettingMapper.java create mode 100644 src/com/engine/salary/mapper/setting/PageListSettingMapper.xml create mode 100644 src/com/engine/salary/service/SettingService.java create mode 100644 src/com/engine/salary/service/impl/SettingServiceImpl.java diff --git a/resource/sqlupgrade/DM/sql202410110103.sql b/resource/sqlupgrade/DM/sql202410110103.sql new file mode 100644 index 000000000..80fd04daf --- /dev/null +++ b/resource/sqlupgrade/DM/sql202410110103.sql @@ -0,0 +1,13 @@ +create table hrsa_page_list_setting +( + id number primary key , + setting clob , + page varchar2(200), + creator number, + create_time date , + update_time date, + delete_type int , + tenant_key varchar2(10) +); +/ + diff --git a/resource/sqlupgrade/GS/sql202410110103.sql b/resource/sqlupgrade/GS/sql202410110103.sql new file mode 100644 index 000000000..80fd04daf --- /dev/null +++ b/resource/sqlupgrade/GS/sql202410110103.sql @@ -0,0 +1,13 @@ +create table hrsa_page_list_setting +( + id number primary key , + setting clob , + page varchar2(200), + creator number, + create_time date , + update_time date, + delete_type int , + tenant_key varchar2(10) +); +/ + diff --git a/resource/sqlupgrade/JC/sql202410110103.sql b/resource/sqlupgrade/JC/sql202410110103.sql new file mode 100644 index 000000000..80fd04daf --- /dev/null +++ b/resource/sqlupgrade/JC/sql202410110103.sql @@ -0,0 +1,13 @@ +create table hrsa_page_list_setting +( + id number primary key , + setting clob , + page varchar2(200), + creator number, + create_time date , + update_time date, + delete_type int , + tenant_key varchar2(10) +); +/ + diff --git a/resource/sqlupgrade/Mysql/sql202410110103.sql b/resource/sqlupgrade/Mysql/sql202410110103.sql new file mode 100644 index 000000000..04ed725c6 --- /dev/null +++ b/resource/sqlupgrade/Mysql/sql202410110103.sql @@ -0,0 +1,12 @@ +CREATE TABLE hrsa_page_list_setting +( + id bigint(0) NOT NULL , + setting text , + page varchar(200), + creator bigint(0), + create_time datetime(0) , + update_time datetime(0), + delete_type int(0) , + tenant_key varchar(10) , + PRIMARY KEY (id) +); \ No newline at end of file diff --git a/resource/sqlupgrade/Oracle/sql202410110103.sql b/resource/sqlupgrade/Oracle/sql202410110103.sql new file mode 100644 index 000000000..554fd4221 --- /dev/null +++ b/resource/sqlupgrade/Oracle/sql202410110103.sql @@ -0,0 +1,12 @@ +create table hrsa_page_list_setting +( + id number primary key , + setting clob , + page varchar2(200), + creator number, + create_time date , + update_time date, + delete_type int , + tenant_key varchar2(10) +) +/ \ No newline at end of file diff --git a/resource/sqlupgrade/PG/sql202410110103.sql b/resource/sqlupgrade/PG/sql202410110103.sql new file mode 100644 index 000000000..813426c47 --- /dev/null +++ b/resource/sqlupgrade/PG/sql202410110103.sql @@ -0,0 +1,11 @@ +create table hrsa_page_list_setting +( + id bigint primary key , + setting text , + page varchar(200), + creator bigint, + create_time timestamp , + update_time timestamp, + delete_type int , + tenant_key varchar(10) +); \ No newline at end of file diff --git a/resource/sqlupgrade/SQLServer/sql202410110103.sql b/resource/sqlupgrade/SQLServer/sql202410110103.sql new file mode 100644 index 000000000..8a2dae190 --- /dev/null +++ b/resource/sqlupgrade/SQLServer/sql202410110103.sql @@ -0,0 +1,12 @@ +create table hrsa_page_list_setting +( + id bigint primary key , + setting ntext , + page varchar(200), + creator bigint, + create_time datetime , + update_time datetime, + delete_type int , + tenant_key varchar(10) +) +GO \ No newline at end of file diff --git a/resource/sqlupgrade/ST/sql202410110103.sql b/resource/sqlupgrade/ST/sql202410110103.sql new file mode 100644 index 000000000..80fd04daf --- /dev/null +++ b/resource/sqlupgrade/ST/sql202410110103.sql @@ -0,0 +1,13 @@ +create table hrsa_page_list_setting +( + id number primary key , + setting clob , + page varchar2(200), + creator number, + create_time date , + update_time date, + delete_type int , + tenant_key varchar2(10) +); +/ + diff --git a/src/com/engine/salary/constant/SalaryDefaultTenantConstant.java b/src/com/engine/salary/constant/SalaryDefaultTenantConstant.java index 184ccee40..4e60d65e0 100644 --- a/src/com/engine/salary/constant/SalaryDefaultTenantConstant.java +++ b/src/com/engine/salary/constant/SalaryDefaultTenantConstant.java @@ -1,12 +1,13 @@ package com.engine.salary.constant; /** - * @description: 默认的租户key - * @author: xiajun - * @modified By: xiajun - * @date: Created in 2/8/22 11:25 AM - * @version:v1.0 - */ + * 默认租户 + *

Copyright: Copyright (c) 2024

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ public class SalaryDefaultTenantConstant { public static final String DEFAULT_TENANT_KEY = "all_teams"; diff --git a/src/com/engine/salary/entity/setting/dto/PageListSettingDTO.java b/src/com/engine/salary/entity/setting/dto/PageListSettingDTO.java new file mode 100644 index 000000000..afe2de81c --- /dev/null +++ b/src/com/engine/salary/entity/setting/dto/PageListSettingDTO.java @@ -0,0 +1,20 @@ +package com.engine.salary.entity.setting.dto; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 薪资帐套表 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class PageListSettingDTO { + + private String name; + + private String value; +} \ No newline at end of file diff --git a/src/com/engine/salary/entity/setting/param/PageListSettingSaveParam.java b/src/com/engine/salary/entity/setting/param/PageListSettingSaveParam.java new file mode 100644 index 000000000..bd97950e7 --- /dev/null +++ b/src/com/engine/salary/entity/setting/param/PageListSettingSaveParam.java @@ -0,0 +1,31 @@ +package com.engine.salary.entity.setting.param; + +import com.engine.salary.util.valid.DataCheck; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +/** + * 薪资帐套表 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class PageListSettingSaveParam { + + /** + * 页面,0:薪资明细 + */ + @DataCheck(require = true,message = "请选择页面") + private String page; + + /** + * 设置 + */ + @DataCheck(require = true,message = "请选择设置") + private List setting; +} \ No newline at end of file diff --git a/src/com/engine/salary/entity/setting/po/PageListSettingPO.java b/src/com/engine/salary/entity/setting/po/PageListSettingPO.java new file mode 100644 index 000000000..59b7f2ea1 --- /dev/null +++ b/src/com/engine/salary/entity/setting/po/PageListSettingPO.java @@ -0,0 +1,72 @@ +package com.engine.salary.entity.setting.po; + +import com.engine.hrmelog.annotation.ElogTransform; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Collection; +import java.util.Date; + +/** + * 薪资帐套表 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class PageListSettingPO { + + + @ElogTransform(name = "") + private Long id; + + /** + * 页面,0:薪资明细 + */ + @ElogTransform(name = "页面,0:薪资明细") + private String page; + + /** + * 设置 + */ + @ElogTransform(name = "设置") + private String setting; + + + /** + * 更新时间 + */ + @ElogTransform(name = "更新时间") + private Date updateTime; + + /** + * 创建时间 + */ + @ElogTransform(name = "创建时间") + private Date createTime; + + /** + * 创建人 + */ + @ElogTransform(name = "创建人") + private Long creator; + + /** + * 是否已删除。0:未删除、1:已删除 + */ + @ElogTransform(name = "是否已删除。0:未删除、1:已删除") + private Integer deleteType; + + /** + * 租户ID + */ + @ElogTransform(name = "租户ID") + private String tenantKey; + + + //主键id集合 + private Collection ids; + +} \ No newline at end of file diff --git a/src/com/engine/salary/mapper/setting/PageListSettingMapper.java b/src/com/engine/salary/mapper/setting/PageListSettingMapper.java new file mode 100644 index 000000000..9c2ce51f8 --- /dev/null +++ b/src/com/engine/salary/mapper/setting/PageListSettingMapper.java @@ -0,0 +1,73 @@ +package com.engine.salary.mapper.setting; + +import com.engine.salary.entity.setting.po.PageListSettingPO; +import org.apache.ibatis.annotations.Param; + +import java.util.Collection; +import java.util.List; + +public interface PageListSettingMapper { + + /** + * 查询所有记录 + * + * @return 返回集合,没有返回空List + */ + List listAll(); + + /** + * 条件查询 + * + * @return 返回集合,没有返回空List + */ + List listSome(PageListSettingPO pageListSetting); + + + /** + * 根据主键查询 + * + * @param id 主键 + * @return 返回记录,没有返回null + */ + PageListSettingPO getById(Long id); + + /** + * 新增,忽略null字段 + * + * @param pageListSetting 新增的记录 + * @return 返回影响行数 + */ + int insertIgnoreNull(PageListSettingPO pageListSetting); + + /** + * 修改,修改所有字段 + * + * @param pageListSetting 修改的记录 + * @return 返回影响行数 + */ + int update(PageListSettingPO pageListSetting); + + /** + * 修改,忽略null字段 + * + * @param pageListSetting 修改的记录 + * @return 返回影响行数 + */ + int updateIgnoreNull(PageListSettingPO pageListSetting); + + /** + * 删除记录 + * + * @param pageListSetting 待删除的记录 + * @return 返回影响行数 + */ + int delete(PageListSettingPO pageListSetting); + + /** + * 批量删除记录 + * @param ids 主键id集合 + */ + void deleteByIds(@Param("ids") Collection ids); + + PageListSettingPO getByPage(String page); +} \ No newline at end of file diff --git a/src/com/engine/salary/mapper/setting/PageListSettingMapper.xml b/src/com/engine/salary/mapper/setting/PageListSettingMapper.xml new file mode 100644 index 000000000..df06cf162 --- /dev/null +++ b/src/com/engine/salary/mapper/setting/PageListSettingMapper.xml @@ -0,0 +1,209 @@ + + + + + + + + + + + + + + + + + t + . + create_time + , t.creator + , t.delete_type + , t.id + , t.page + , t.setting + , t.tenant_key + , t.update_time + + + + + + + + + + + + + + + INSERT INTO hrsa_page_list_setting + + + + create_time, + + + creator, + + + delete_type, + + + page, + + + setting, + + + tenant_key, + + + update_time, + + + + + #{createTime}, + + + #{creator}, + + + #{deleteType}, + + + #{page}, + + + #{setting}, + + + #{tenantKey}, + + + #{updateTime}, + + + + + + + + UPDATE hrsa_page_list_setting + + create_time=#{createTime}, + creator=#{creator}, + delete_type=#{deleteType}, + page=#{page}, + setting=#{setting}, + tenant_key=#{tenantKey}, + update_time=#{updateTime}, + + WHERE id = #{id} AND delete_type = 0 + + + + + + UPDATE hrsa_page_list_setting + + + create_time=#{createTime}, + + + creator=#{creator}, + + + delete_type=#{deleteType}, + + + page=#{page}, + + + setting=#{setting}, + + + tenant_key=#{tenantKey}, + + + update_time=#{updateTime}, + + + WHERE id = #{id} AND delete_type = 0 + + + + + + UPDATE hrsa_page_list_setting + SET delete_type=1 + WHERE id = #{id} + AND delete_type = 0 + + + + UPDATE hrsa_page_list_setting + SET delete_type = 1 + WHERE delete_type = 0 + AND id IN + + #{id} + + + + + + + \ No newline at end of file diff --git a/src/com/engine/salary/report/service/impl/SalaryStatisticsEmployeeServiceImpl.java b/src/com/engine/salary/report/service/impl/SalaryStatisticsEmployeeServiceImpl.java index 5728f0886..635134b5f 100644 --- a/src/com/engine/salary/report/service/impl/SalaryStatisticsEmployeeServiceImpl.java +++ b/src/com/engine/salary/report/service/impl/SalaryStatisticsEmployeeServiceImpl.java @@ -25,10 +25,7 @@ import com.engine.salary.report.entity.param.SalaryStatisticsEmployeeSalaryQuery import com.engine.salary.report.service.SalaryStatisticsEmployeeService; import com.engine.salary.service.*; import com.engine.salary.service.impl.*; -import com.engine.salary.util.SalaryAssert; -import com.engine.salary.util.SalaryDateUtil; -import com.engine.salary.util.SalaryEntityUtil; -import com.engine.salary.util.SalaryI18nUtil; +import com.engine.salary.util.*; import com.engine.salary.util.db.MapperProxyFactory; import com.engine.salary.util.page.PageInfo; import com.engine.salary.util.page.SalaryPageUtil; @@ -89,6 +86,10 @@ public class SalaryStatisticsEmployeeServiceImpl extends Service implements Sala return ServiceUtil.getService(SalaryEmployeeServiceImpl.class, user); } + private SettingService getSettingService(User user) { + return ServiceUtil.getService(SettingServiceImpl.class, user); + } + @Override public PageInfo listPage(SalaryStatisticsEmployeeQueryParam queryParam) { List list = Collections.emptyList(); @@ -270,7 +271,7 @@ public class SalaryStatisticsEmployeeServiceImpl extends Service implements Sala map.put("id", se.getId().toString()); map.put("salaryMonth", SalaryDateUtil.getFormatYearMonth(se.getSalaryMonth())); map.put("taxAgent", taxAgentMap.get(se.getTaxAgentId())); - map.put("salarySob",SalarySobMap.get(se.getSalarySobId())); + map.put("salarySob", SalarySobMap.get(se.getSalarySobId())); map.put("acctTimes", salaryAcctRecordMap.get(se.getSalaryAcctRecordId())); map.put("userName", Util.null2String(emp.getUsername())); map.put("subCompany", Util.null2String(emp.getSubcompanyName())); @@ -302,10 +303,10 @@ public class SalaryStatisticsEmployeeServiceImpl extends Service implements Sala // 2.年月参数处理,注意:薪资所属月居然是用字符串存储的,无法通过sql between处理 List dataParam = new ArrayList<>(); if (StringUtils.isNotBlank(queryParam.getStartDateStr())) { - dataParam.add(SalaryDateUtil.dateStrToLocalTime(queryParam.getStartDateStr()+ "-01 00:00:00")); + dataParam.add(SalaryDateUtil.dateStrToLocalTime(queryParam.getStartDateStr() + "-01 00:00:00")); } if (StringUtils.isNotBlank(queryParam.getEndDateStr())) { - dataParam.add(SalaryDateUtil.dateStrToLocalTime(queryParam.getEndDateStr()+ "-01 00:00:00")); + dataParam.add(SalaryDateUtil.dateStrToLocalTime(queryParam.getEndDateStr() + "-01 00:00:00")); } Set salaryMonths = SalaryStatisticsEmployeeBO.getSalaryMonths(null, dataParam) .stream() @@ -319,13 +320,13 @@ public class SalaryStatisticsEmployeeServiceImpl extends Service implements Sala // 根据分部、部门筛选 List employeeList = getSalaryEmployeeService(user).listBySubCompanyOrDepartment(queryParam.getSubCompanyIds(), queryParam.getDepartmentIds()); // 根据关键词过滤 - if(StringUtils.isNotBlank(queryParam.getKeyword())) { + if (StringUtils.isNotBlank(queryParam.getKeyword())) { employeeList = employeeList.stream() .filter(e -> (e.getUsername().contains(queryParam.getKeyword()) || (StringUtils.isNotEmpty(e.getWorkcode()) && e.getWorkcode().contains(queryParam.getKeyword())))) .collect(Collectors.toList()); } List employeeIds = employeeList.stream().map(DataCollectionEmployee::getEmployeeId).collect(Collectors.toList()); - salaryAcctEmployeeList = salaryAcctEmployeeList.stream().filter( acctEmp -> employeeIds.contains(acctEmp.getEmployeeId())).collect(Collectors.toList()); + salaryAcctEmployeeList = salaryAcctEmployeeList.stream().filter(acctEmp -> employeeIds.contains(acctEmp.getEmployeeId())).collect(Collectors.toList()); } if (CollectionUtils.isEmpty(salaryAcctEmployeeList)) { return new PageInfo<>(); @@ -358,23 +359,25 @@ public class SalaryStatisticsEmployeeServiceImpl extends Service implements Sala List salaryAcctResultValues = getSalaryAcctResultService(user).listBySalaryAcctEmployeeIds(salaryAcctEmployeeIds); // 3.获取薪资项目 - List salaryItemList = getSalaryItemService(user).listAll(); - salaryItemList = salaryItemList.stream() - .sorted(new Comparator() { - @Override - public int compare(SalaryItemPO o1, SalaryItemPO o2) { - if (o1.getSortedIndex() == null && o2.getSortedIndex() == null) { - Integer systemType1 = o1.getSystemType() == null ? 0 : o1.getSystemType(); - Integer systemType2 = o2.getSystemType() == null ? 0 : o2.getSystemType(); - return systemType1.compareTo(systemType2); - } else { - Integer sortedIndex1 = o1.getSortedIndex() == null ? 0 : o1.getSortedIndex(); - Integer sortedIndex2 = o2.getSortedIndex() == null ? 0 : o2.getSortedIndex(); - return sortedIndex2.compareTo(sortedIndex1); - } - } - }) - .collect(Collectors.toList()); + Map setting = getSettingService(user).getPageListSetting("salary_details_report"); + List checked = setting.get("checked") != null ? JsonUtil.parseList(setting.get("checked"), Long.class) : new ArrayList<>(); + List salaryItemList = getSalaryItemService(user).listByIds(checked); +// salaryItemList = salaryItemList.stream() +// .sorted(new Comparator() { +// @Override +// public int compare(SalaryItemPO o1, SalaryItemPO o2) { +// if (o1.getSortedIndex() == null && o2.getSortedIndex() == null) { +// Integer systemType1 = o1.getSystemType() == null ? 0 : o1.getSystemType(); +// Integer systemType2 = o2.getSystemType() == null ? 0 : o2.getSystemType(); +// return systemType1.compareTo(systemType2); +// } else { +// Integer sortedIndex1 = o1.getSortedIndex() == null ? 0 : o1.getSortedIndex(); +// Integer sortedIndex2 = o2.getSortedIndex() == null ? 0 : o2.getSortedIndex(); +// return sortedIndex2.compareTo(sortedIndex1); +// } +// } +// }) +// .collect(Collectors.toList()); return SalaryStatisticsEmployeeDetailResultDTO.builder() .salaryAcctEmployeeList(salaryAcctEmployeeList) diff --git a/src/com/engine/salary/report/web/SalaryStatisticsEmployeeController.java b/src/com/engine/salary/report/web/SalaryStatisticsEmployeeController.java index b4e668513..4fa4ae64a 100644 --- a/src/com/engine/salary/report/web/SalaryStatisticsEmployeeController.java +++ b/src/com/engine/salary/report/web/SalaryStatisticsEmployeeController.java @@ -73,7 +73,7 @@ public class SalaryStatisticsEmployeeController { } /** - * 员工薪资列表 + * 薪资明细 * * @param queryParam * @return diff --git a/src/com/engine/salary/report/wrapper/SalaryStatisticsEmployeeWrapper.java b/src/com/engine/salary/report/wrapper/SalaryStatisticsEmployeeWrapper.java index 646600f08..63e0863cf 100644 --- a/src/com/engine/salary/report/wrapper/SalaryStatisticsEmployeeWrapper.java +++ b/src/com/engine/salary/report/wrapper/SalaryStatisticsEmployeeWrapper.java @@ -229,6 +229,9 @@ public class SalaryStatisticsEmployeeWrapper extends Service { // 获取发薪人员 PageInfo salaryAcctEmployeePageInfo = getSalaryStatisticsEmployeeService(user).listSalaryAcctEmp(queryParam); List employeePOS = salaryAcctEmployeePageInfo.getList(); + if (CollectionUtils.isEmpty(employeePOS)){ + return resultMap; + } Map sumResultMap = Maps.newHashMap(); diff --git a/src/com/engine/salary/service/SettingService.java b/src/com/engine/salary/service/SettingService.java new file mode 100644 index 000000000..7b4f1d9bc --- /dev/null +++ b/src/com/engine/salary/service/SettingService.java @@ -0,0 +1,11 @@ +package com.engine.salary.service; + +import com.engine.salary.entity.setting.param.PageListSettingSaveParam; + +import java.util.Map; + +public interface SettingService { + void savePageListSetting(PageListSettingSaveParam pageListSettingSaveParam); + + Map getPageListSetting(String page); +} diff --git a/src/com/engine/salary/service/impl/SettingServiceImpl.java b/src/com/engine/salary/service/impl/SettingServiceImpl.java new file mode 100644 index 000000000..66b13c126 --- /dev/null +++ b/src/com/engine/salary/service/impl/SettingServiceImpl.java @@ -0,0 +1,102 @@ +package com.engine.salary.service.impl; + +import cn.hutool.core.util.StrUtil; +import com.engine.common.util.ServiceUtil; +import com.engine.core.impl.Service; +import com.engine.salary.entity.salaryitem.po.SalaryItemPO; +import com.engine.salary.entity.setting.param.PageListSettingSaveParam; +import com.engine.salary.entity.setting.po.PageListSettingPO; +import com.engine.salary.mapper.setting.PageListSettingMapper; +import com.engine.salary.service.SalaryItemService; +import com.engine.salary.service.SalarySobService; +import com.engine.salary.service.SettingService; +import com.engine.salary.util.JsonUtil; +import com.engine.salary.util.db.IdGenerator; +import com.engine.salary.util.db.MapperProxyFactory; +import weaver.hrm.User; + +import java.util.*; +import java.util.stream.Collectors; + +import static com.engine.salary.constant.SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY; + +/** + * 薪资核算 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +public class SettingServiceImpl extends Service implements SettingService { + + private PageListSettingMapper getPageListSettingMapper() { + return MapperProxyFactory.getProxy(PageListSettingMapper.class); + } + + private SalarySobService getSalarySobService(User user) { + return ServiceUtil.getService(SalarySobServiceImpl.class, user); + } + + private SalaryItemService getSalaryItemService(User user) { + return ServiceUtil.getService(SalaryItemServiceImpl.class, user); + } + + @Override + public void savePageListSetting(PageListSettingSaveParam pageListSettingSaveParam) { + Date now = new Date(); + + PageListSettingPO pageListSettingPO = getPageListSettingMapper().getByPage(pageListSettingSaveParam.getPage()); + if (pageListSettingPO != null) { + pageListSettingPO.setSetting(JsonUtil.toJsonString(pageListSettingSaveParam.getSetting())); + pageListSettingPO.setUpdateTime(now); + getPageListSettingMapper().updateIgnoreNull(pageListSettingPO); + } else { + pageListSettingPO = PageListSettingPO.builder() + .id(IdGenerator.generate()) + .page(pageListSettingSaveParam.getPage()) + .setting(JsonUtil.toJsonString(pageListSettingSaveParam.getSetting())) + .creator((long) user.getUID()) + .createTime(now) + .updateTime(now) + .deleteType(0) + .tenantKey(DEFAULT_TENANT_KEY) + .build(); + getPageListSettingMapper().insertIgnoreNull(pageListSettingPO); + } + } + + @Override + public Map getPageListSetting(String page) { + + Map result = new HashMap(); + PageListSettingPO pageListSettingPO = getPageListSettingMapper().getByPage(page); + if ("salary_details_report".equals(page)) { + List salaryItemList = getSalaryItemService(user).listAll(); + salaryItemList = salaryItemList.stream() + .sorted(new Comparator() { + @Override + public int compare(SalaryItemPO o1, SalaryItemPO o2) { + if (o1.getSortedIndex() == null && o2.getSortedIndex() == null) { + Integer systemType1 = o1.getSystemType() == null ? 0 : o1.getSystemType(); + Integer systemType2 = o2.getSystemType() == null ? 0 : o2.getSystemType(); + return systemType1.compareTo(systemType2); + } else { + Integer sortedIndex1 = o1.getSortedIndex() == null ? 0 : o1.getSortedIndex(); + Integer sortedIndex2 = o2.getSortedIndex() == null ? 0 : o2.getSortedIndex(); + return sortedIndex2.compareTo(sortedIndex1); + } + } + }) + .collect(Collectors.toList()); + result.put("setting", salaryItemList); + if (pageListSettingPO != null && StrUtil.isNotEmpty(pageListSettingPO.getSetting())) { + result.put("checked", JsonUtil.parseList(pageListSettingPO.getSetting(), Long.class)); + } else { + List collect = salaryItemList.stream().map(SalaryItemPO::getId).collect(Collectors.toList()); + result.put("checked", collect); + } + } + return result; + } +} diff --git a/src/com/engine/salary/web/SalaryCommonController.java b/src/com/engine/salary/web/SalaryCommonController.java index 7f1637a5c..2f7e87d6e 100644 --- a/src/com/engine/salary/web/SalaryCommonController.java +++ b/src/com/engine/salary/web/SalaryCommonController.java @@ -1,19 +1,18 @@ package com.engine.salary.web; import com.engine.common.util.ServiceUtil; +import com.engine.salary.entity.setting.param.PageListSettingSaveParam; import com.engine.salary.util.ResponseResult; import com.engine.salary.util.SalaryEnumUtil; import com.engine.salary.wrapper.SalaryCommonWrapper; +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.GET; -import javax.ws.rs.Path; -import javax.ws.rs.Produces; -import javax.ws.rs.QueryParam; +import javax.ws.rs.*; import javax.ws.rs.core.Context; import javax.ws.rs.core.MediaType; import java.util.List; @@ -52,4 +51,25 @@ public class SalaryCommonController { } + /** + * 页面模板设置 + * + * @param param + * @return + */ + @POST + @Path("/pageList/save/setting") + @Produces(MediaType.APPLICATION_JSON) + public String savePageListSetting(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody PageListSettingSaveParam param) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getSalaryCommonWrapper(user)::savePageListSetting, param); + } + + @GET + @Path("/pageList/get/setting") + @Produces(MediaType.APPLICATION_JSON) + public String getPageListSetting(@Context HttpServletRequest request, @Context HttpServletResponse response, @QueryParam(value = "page") String page) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getSalaryCommonWrapper(user)::getPageListSetting, page); + } } diff --git a/src/com/engine/salary/wrapper/SalaryCommonWrapper.java b/src/com/engine/salary/wrapper/SalaryCommonWrapper.java index 982c1e5e9..cbeefbb42 100644 --- a/src/com/engine/salary/wrapper/SalaryCommonWrapper.java +++ b/src/com/engine/salary/wrapper/SalaryCommonWrapper.java @@ -2,10 +2,15 @@ package com.engine.salary.wrapper; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; +import com.engine.salary.entity.setting.param.PageListSettingSaveParam; import com.engine.salary.service.SalaryCacheService; +import com.engine.salary.service.SettingService; import com.engine.salary.service.impl.SalaryCacheServiceImpl; +import com.engine.salary.service.impl.SettingServiceImpl; import weaver.hrm.User; +import java.util.Map; + public class SalaryCommonWrapper extends Service { @@ -13,6 +18,10 @@ public class SalaryCommonWrapper extends Service { return ServiceUtil.getService(SalaryCacheServiceImpl.class, user); } + private SettingService getSettingService(User user) { + return ServiceUtil.getService(SettingServiceImpl.class, user); + } + public Object getCacheInfo(String key) { return getSalaryCacheService(user).get(key); } @@ -20,4 +29,13 @@ public class SalaryCommonWrapper extends Service { public void removeCache(String key) { getSalaryCacheService(user).remove(key); } + + public void savePageListSetting(PageListSettingSaveParam pageListSettingSaveParam) { + getSettingService(user).savePageListSetting(pageListSettingSaveParam); + } + + + public Map getPageListSetting(String page) { + return getSettingService(user).getPageListSetting(page); + } } From b6c7a7f2bd9a856bbe2ab697680e0d9e52825796 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Fri, 11 Oct 2024 17:04:13 +0800 Subject: [PATCH 18/43] =?UTF-8?q?=E8=87=AA=E5=AE=9A=E4=B9=89=E5=88=97?= =?UTF-8?q?=E5=85=A8=E5=B1=80=E8=AE=BE=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../param/PageListSettingQueryParam.java | 22 +++++++++++++ .../SalaryStatisticsEmployeeServiceImpl.java | 4 ++- .../engine/salary/service/SettingService.java | 3 +- .../service/impl/SettingServiceImpl.java | 33 +++++++++++-------- .../salary/web/SalaryCommonController.java | 7 ++-- .../salary/wrapper/SalaryCommonWrapper.java | 5 +-- 6 files changed, 53 insertions(+), 21 deletions(-) create mode 100644 src/com/engine/salary/entity/setting/param/PageListSettingQueryParam.java diff --git a/src/com/engine/salary/entity/setting/param/PageListSettingQueryParam.java b/src/com/engine/salary/entity/setting/param/PageListSettingQueryParam.java new file mode 100644 index 000000000..0de49c816 --- /dev/null +++ b/src/com/engine/salary/entity/setting/param/PageListSettingQueryParam.java @@ -0,0 +1,22 @@ +package com.engine.salary.entity.setting.param; + +import com.engine.salary.util.valid.DataCheck; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 薪资帐套表 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class PageListSettingQueryParam { + + @DataCheck(require = true,message = "请选择页面") + private String page; + + private String name; +} \ No newline at end of file diff --git a/src/com/engine/salary/report/service/impl/SalaryStatisticsEmployeeServiceImpl.java b/src/com/engine/salary/report/service/impl/SalaryStatisticsEmployeeServiceImpl.java index 635134b5f..dfab42262 100644 --- a/src/com/engine/salary/report/service/impl/SalaryStatisticsEmployeeServiceImpl.java +++ b/src/com/engine/salary/report/service/impl/SalaryStatisticsEmployeeServiceImpl.java @@ -10,6 +10,7 @@ import com.engine.salary.entity.salaryacct.po.SalaryAcctRecordPO; import com.engine.salary.entity.salaryacct.po.SalaryAcctResultPO; import com.engine.salary.entity.salaryitem.po.SalaryItemPO; import com.engine.salary.entity.salarysob.po.SalarySobPO; +import com.engine.salary.entity.setting.param.PageListSettingQueryParam; import com.engine.salary.entity.taxagent.po.TaxAgentPO; import com.engine.salary.enums.UserStatusEnum; import com.engine.salary.enums.datacollection.UseEmployeeTypeEnum; @@ -359,7 +360,8 @@ public class SalaryStatisticsEmployeeServiceImpl extends Service implements Sala List salaryAcctResultValues = getSalaryAcctResultService(user).listBySalaryAcctEmployeeIds(salaryAcctEmployeeIds); // 3.获取薪资项目 - Map setting = getSettingService(user).getPageListSetting("salary_details_report"); + PageListSettingQueryParam param = PageListSettingQueryParam.builder().page("salary_details_report").build(); + Map setting = getSettingService(user).getPageListSetting(param); List checked = setting.get("checked") != null ? JsonUtil.parseList(setting.get("checked"), Long.class) : new ArrayList<>(); List salaryItemList = getSalaryItemService(user).listByIds(checked); // salaryItemList = salaryItemList.stream() diff --git a/src/com/engine/salary/service/SettingService.java b/src/com/engine/salary/service/SettingService.java index 7b4f1d9bc..27b7e679e 100644 --- a/src/com/engine/salary/service/SettingService.java +++ b/src/com/engine/salary/service/SettingService.java @@ -1,5 +1,6 @@ package com.engine.salary.service; +import com.engine.salary.entity.setting.param.PageListSettingQueryParam; import com.engine.salary.entity.setting.param.PageListSettingSaveParam; import java.util.Map; @@ -7,5 +8,5 @@ import java.util.Map; public interface SettingService { void savePageListSetting(PageListSettingSaveParam pageListSettingSaveParam); - Map getPageListSetting(String page); + Map getPageListSetting(PageListSettingQueryParam param); } diff --git a/src/com/engine/salary/service/impl/SettingServiceImpl.java b/src/com/engine/salary/service/impl/SettingServiceImpl.java index 66b13c126..9f52b7ea8 100644 --- a/src/com/engine/salary/service/impl/SettingServiceImpl.java +++ b/src/com/engine/salary/service/impl/SettingServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.util.StrUtil; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; import com.engine.salary.entity.salaryitem.po.SalaryItemPO; +import com.engine.salary.entity.setting.param.PageListSettingQueryParam; import com.engine.salary.entity.setting.param.PageListSettingSaveParam; import com.engine.salary.entity.setting.po.PageListSettingPO; import com.engine.salary.mapper.setting.PageListSettingMapper; @@ -67,25 +68,29 @@ public class SettingServiceImpl extends Service implements SettingService { } @Override - public Map getPageListSetting(String page) { - + public Map getPageListSetting(PageListSettingQueryParam param) { + String page = param.getPage(); Map result = new HashMap(); PageListSettingPO pageListSettingPO = getPageListSettingMapper().getByPage(page); if ("salary_details_report".equals(page)) { List salaryItemList = getSalaryItemService(user).listAll(); salaryItemList = salaryItemList.stream() - .sorted(new Comparator() { - @Override - public int compare(SalaryItemPO o1, SalaryItemPO o2) { - if (o1.getSortedIndex() == null && o2.getSortedIndex() == null) { - Integer systemType1 = o1.getSystemType() == null ? 0 : o1.getSystemType(); - Integer systemType2 = o2.getSystemType() == null ? 0 : o2.getSystemType(); - return systemType1.compareTo(systemType2); - } else { - Integer sortedIndex1 = o1.getSortedIndex() == null ? 0 : o1.getSortedIndex(); - Integer sortedIndex2 = o2.getSortedIndex() == null ? 0 : o2.getSortedIndex(); - return sortedIndex2.compareTo(sortedIndex1); - } + .filter(po -> { + String name = param.getName(); + if (StrUtil.isNotEmpty(name)) { + return po.getName() != null && po.getName().contains(name); + } + return true; + }) + .sorted((o1, o2) -> { + if (o1.getSortedIndex() == null && o2.getSortedIndex() == null) { + Integer systemType1 = o1.getSystemType() == null ? 0 : o1.getSystemType(); + Integer systemType2 = o2.getSystemType() == null ? 0 : o2.getSystemType(); + return systemType1.compareTo(systemType2); + } else { + Integer sortedIndex1 = o1.getSortedIndex() == null ? 0 : o1.getSortedIndex(); + Integer sortedIndex2 = o2.getSortedIndex() == null ? 0 : o2.getSortedIndex(); + return sortedIndex2.compareTo(sortedIndex1); } }) .collect(Collectors.toList()); diff --git a/src/com/engine/salary/web/SalaryCommonController.java b/src/com/engine/salary/web/SalaryCommonController.java index 2f7e87d6e..d28dc0d86 100644 --- a/src/com/engine/salary/web/SalaryCommonController.java +++ b/src/com/engine/salary/web/SalaryCommonController.java @@ -1,6 +1,7 @@ package com.engine.salary.web; import com.engine.common.util.ServiceUtil; +import com.engine.salary.entity.setting.param.PageListSettingQueryParam; import com.engine.salary.entity.setting.param.PageListSettingSaveParam; import com.engine.salary.util.ResponseResult; import com.engine.salary.util.SalaryEnumUtil; @@ -65,11 +66,11 @@ public class SalaryCommonController { return new ResponseResult(user).run(getSalaryCommonWrapper(user)::savePageListSetting, param); } - @GET + @POST @Path("/pageList/get/setting") @Produces(MediaType.APPLICATION_JSON) - public String getPageListSetting(@Context HttpServletRequest request, @Context HttpServletResponse response, @QueryParam(value = "page") String page) { + public String getPageListSetting(@Context HttpServletRequest request, @Context HttpServletResponse response,@RequestBody PageListSettingQueryParam param) { User user = HrmUserVarify.getUser(request, response); - return new ResponseResult(user).run(getSalaryCommonWrapper(user)::getPageListSetting, page); + return new ResponseResult(user).run(getSalaryCommonWrapper(user)::getPageListSetting, param); } } diff --git a/src/com/engine/salary/wrapper/SalaryCommonWrapper.java b/src/com/engine/salary/wrapper/SalaryCommonWrapper.java index cbeefbb42..e66e09121 100644 --- a/src/com/engine/salary/wrapper/SalaryCommonWrapper.java +++ b/src/com/engine/salary/wrapper/SalaryCommonWrapper.java @@ -2,6 +2,7 @@ package com.engine.salary.wrapper; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; +import com.engine.salary.entity.setting.param.PageListSettingQueryParam; import com.engine.salary.entity.setting.param.PageListSettingSaveParam; import com.engine.salary.service.SalaryCacheService; import com.engine.salary.service.SettingService; @@ -35,7 +36,7 @@ public class SalaryCommonWrapper extends Service { } - public Map getPageListSetting(String page) { - return getSettingService(user).getPageListSetting(page); + public Map getPageListSetting(PageListSettingQueryParam param) { + return getSettingService(user).getPageListSetting(param); } } From 4c4b6ab57d9ea0db10c2462b0e82cd2b5690b31f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Fri, 11 Oct 2024 17:14:14 +0800 Subject: [PATCH 19/43] =?UTF-8?q?=E5=AF=BC=E5=85=A5=E5=AD=97=E6=AE=B5?= =?UTF-8?q?=E6=8C=81=E4=B9=85=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salary/service/impl/SalaryAcctExcelServiceImpl.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java index aef1bb7c3..138f173c9 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java @@ -1,6 +1,7 @@ package com.engine.salary.service.impl; import cn.hutool.core.util.NumberUtil; +import cn.hutool.core.util.StrUtil; import com.api.formmode.mybatis.util.SqlProxyHandle; import com.cloudstore.dev.api.util.Util_DataCache; import com.engine.common.util.ServiceUtil; @@ -459,7 +460,7 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc SalaryAcctRecordPO byId = getSalaryAcctRecordService(user).getById(salaryAcctRecordPO.getId()); boolean isBackCalc = Objects.equals(byId.getBackCalcStatus(), 1); // 查询薪资账套下的薪资项目+员工信息字段 - SalarySobItemAggregateDTO salarySobItemAggregateDTO = getSalarySobItemService(user).getAggregateWithItemHideBySalarySobId(salaryAcctRecordPO.getId(),salaryAcctRecordPO.getSalarySobId(), isBackCalc); + SalarySobItemAggregateDTO salarySobItemAggregateDTO = getSalarySobItemService(user).getAggregateWithItemHideBySalarySobId(salaryAcctRecordPO.getId(), salaryAcctRecordPO.getSalarySobId(), isBackCalc); // 构建薪资核算结果列表表头 List columnList = SalaryAcctResultBO.buildTableColumns(salarySobItemAggregateDTO, ListUtils.emptyIfNull(salaryAcctRecordPO.getLockSalaryItemIds())); // 获取固定列头数 @@ -595,7 +596,7 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc List salaryAcctResultTemplatePOS = getSalaryAcctResultTemplateService(user).listBySalarySobId(salaryAcctRecordPO.getSalarySobId(), Arrays.asList(2)); if (CollectionUtils.isNotEmpty(salaryAcctResultTemplatePOS)) { String items = salaryAcctResultTemplatePOS.get(0).getSalaryItemIds(); - checkItems = Arrays.stream(items.split(",")).map(Long::valueOf).collect(Collectors.toList()); + checkItems = StrUtil.isNotEmpty(items) ? Arrays.stream(items.split(",")).map(Long::valueOf).collect(Collectors.toList()) : new ArrayList<>(); } return SalaryAcctImportFieldDTO.builder().itemsByGroup(itemsByGroup).checkItems(checkItems).build(); } @@ -891,7 +892,7 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc // headerList.add("手机号"); // headerList.add("工号"); // 查询薪资账套下的薪资项目 - SalarySobItemAggregateDTO salarySobItemAggregateDTO = getSalarySobItemService(user).getAggregateByRecordId(exportParam.getSalaryAcctRecordId(),true); + SalarySobItemAggregateDTO salarySobItemAggregateDTO = getSalarySobItemService(user).getAggregateByRecordId(exportParam.getSalaryAcctRecordId(), true); // // 员工信息 // for (SalarySobEmpFieldDTO item : salarySobItemAggregateDTO.getEmpFields()) { @@ -1169,7 +1170,7 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc //salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(102838, "姓名不能为空"), i, i, j, j); } else { //筛选导入人员信息可以在人力资源池中匹配到的人员信息 - List employeeSameIds = getSalaryEmployeeService(user).matchImportEmployee(confValue, salaryEmployees, dataValue, deparmentName, mobile, workcode,idNo, null); + List employeeSameIds = getSalaryEmployeeService(user).matchImportEmployee(confValue, salaryEmployees, dataValue, deparmentName, mobile, workcode, idNo, null); if (CollectionUtils.isEmpty(employeeSameIds)) { isError = true; From 3a224170f15caeefa130bb1dc128b3662e50947c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Fri, 11 Oct 2024 17:17:07 +0800 Subject: [PATCH 20/43] =?UTF-8?q?=E5=AF=BC=E5=85=A5=E5=AD=97=E6=AE=B5?= =?UTF-8?q?=E6=8C=81=E4=B9=85=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../engine/salary/service/impl/SalaryAcctExcelServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java index 138f173c9..75b63245c 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java @@ -680,7 +680,7 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc List salaryAcctResultTemplatePOS = getSalaryAcctResultTemplateService(user).listBySalarySobId(salaryAcctRecordPO.getSalarySobId(), Arrays.asList(2)); if (CollectionUtils.isNotEmpty(salaryAcctResultTemplatePOS)) { String items = salaryAcctResultTemplatePOS.get(0).getSalaryItemIds(); - checkItems = Arrays.stream(items.split(",")).map(Long::valueOf).collect(Collectors.toList()); + checkItems = StrUtil.isNotEmpty(items) ? Arrays.stream(items.split(",")).map(Long::valueOf).collect(Collectors.toList()) : new ArrayList<>(); } // 必须选择导入模板所需的薪资项目 From a0bc3b545278b034e5f94dbf9041b4f6f4bd9666 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Fri, 11 Oct 2024 17:32:02 +0800 Subject: [PATCH 21/43] =?UTF-8?q?=E8=AE=B0=E5=BD=95=E6=A0=B8=E7=AE=97?= =?UTF-8?q?=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/SalaryAcctExcelServiceImpl.java | 25 +++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java index 75b63245c..c7f3be70b 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java @@ -71,6 +71,7 @@ import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.util.IOUtils; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.springframework.beans.BeanUtils; +import org.springframework.util.StopWatch; import weaver.file.ImageFileManager; import weaver.hrm.User; @@ -1036,6 +1037,8 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc } private Map batchImport(SalaryAcctImportParam param, String importType) { + StopWatch stopWatch = new StopWatch("导入核算数据"); + stopWatch.start("数据准备"); Map apidatas = new HashMap(); ValidUtil.doValidator(param); Date now = new Date(); @@ -1053,27 +1056,38 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc if (salaryAcctRecordPO == null) { throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98747, "薪资核算记录不存在或已被删除")); } + stopWatch.stop(); // 薪资账套下的薪资项目副本 + stopWatch.start("薪资账套下的薪资项目副本"); List salarySobItemPOS = getSalarySobItemService(user).listBySalarySobId(salaryAcctRecordPO.getSalarySobId()); // 薪资项目 Set salaryItemIds = SalaryEntityUtil.properties(salarySobItemPOS, SalarySobItemPO::getSalaryItemId); List salaryItems = getSalaryItemService(user).listByIds(salaryItemIds); Map salaryItemMap = SalaryEntityUtil.convert2Map(salaryItems, SalaryItemPO::getName, SalaryItemPO::getId); + stopWatch.stop(); // 薪资核算确认的人员 + stopWatch.start("薪资核算确认的人员"); List salaryAcctEmployees = getSalaryAcctEmployeeService(user).listBySalaryAcctRecordId(salaryAcctRecordId); Map salaryAcctEmployeeMap = SalaryEntityUtil.convert2Map(salaryAcctEmployees, e -> e.getEmployeeId() + "-" + e.getTaxAgentId()); + stopWatch.stop(); // 租户下所有的人员 + stopWatch.start("薪资核算确认的人员"); List salaryEmployees = getSalaryEmployeeService(user).listAllForReport(); Map salaryEmployeeMap = SalaryEntityUtil.convert2Map(salaryEmployees, DataCollectionEmployee::getUsername, DataCollectionEmployee::getEmployeeId); Map emps = SalaryEntityUtil.convert2Map(salaryEmployees, DataCollectionEmployee::getEmployeeId); + stopWatch.stop(); // 租户下所有的个税扣缴义务人 + stopWatch.start("租户下所有的个税扣缴义务人"); List taxAgents = getTaxAgentService(user).listAll(); Map taxAgentNameMap = SalaryEntityUtil.convert2Map(taxAgents, TaxAgentPO::getName, TaxAgentPO::getId); + stopWatch.stop(); // 薪资核算人员信息字段 + stopWatch.start("薪资核算人员信息字段"); List salarySobEmpFieldPOS = getSalarySobEmpFieldService(user).listBySalarySobId(salaryAcctRecordPO.getSalarySobId()); List salarySobEmpFields = SalaryEntityUtil.properties(new SalarySobItemAggregateBO().buildEmpField(salarySobEmpFieldPOS), SalarySobEmpFieldDTO::getFieldName, Collectors.toList()); List excludeFields = Arrays.asList("个税扣缴义务人", "部门", "姓名"); salarySobEmpFields = salarySobEmpFields.stream().filter(field -> !excludeFields.contains(field)).collect(Collectors.toList()); + stopWatch.stop(); // 索引(用于计算进度) int index = 0; // 失败的数量 @@ -1103,10 +1117,10 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc fileInputStream = ImageFileManager.getInputStreamById(Integer.parseInt(param.getImageId())); - + stopWatch.start("解析文件"); Workbook workbook = ExcelSupport.parseFile(fileInputStream, EXCEL_TYPE_XLSX); Sheet sheet = workbook.getSheetAt(0); - + stopWatch.stop(); // 错误提示信息 List excelComments = Lists.newArrayList(); @@ -1136,6 +1150,7 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc if (CollectionUtils.isEmpty(data)) { throw new RuntimeException("无数据"); } + stopWatch.start("解析数据"); for (int i = 0; i < data.size(); i++) { String row = "第" + (i + 3) + "行"; @@ -1365,10 +1380,12 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc } successCount++; } + stopWatch.stop(); // 如果sheet包含错误数据 // if (CollectionUtils.isNotEmpty(errorDatas)) { // salaryBatchService.createErrorExcelSheet(headers, errorDatas, excelSheet.getName(), excelComments, errorExcelSheets); // } + stopWatch.start("插入数据"); if (StringUtils.equals("importExcelAcctResult", importType)) { getSalaryComparisonResultService(user).deleteBySalaryAcctRecordIds(Collections.singleton(salaryAcctRecordId)); if (CollectionUtils.isNotEmpty(excelAcctResults)) { @@ -1421,6 +1438,8 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc getSalaryAcctEmployeeService(user).batchSave(newSalaryAcctEmployees); } } + stopWatch.stop(); + stopWatch.start("锁定数据"); SalarySysConfPO autoLock = getSalarySysConfService(user).getOneByCode(SalarySysConstant.EDIT_IMPORT_AUTO_LOCK); if (autoLock != null && StringUtils.equals(autoLock.getConfValue(), "1")) { // 导入的列都自动锁定 @@ -1430,6 +1449,8 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc .lockStatus(LockStatusEnum.LOCK).build(); getSalaryAcctResultService(user).updateLockStatusByParam(updateLockStatusParam); } + stopWatch.stop(); + log.info(stopWatch.prettyPrint()); apidatas.put("successCount", successCount); apidatas.put("errorCount", failCount); From 265ca2a54ec063a0d8e2b383ed865522d3f455cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Fri, 11 Oct 2024 18:02:52 +0800 Subject: [PATCH 22/43] =?UTF-8?q?=E9=BB=98=E8=AE=A4=E5=B1=95=E7=A4=BA?= =?UTF-8?q?=E6=89=80=E6=9C=89=E8=96=AA=E8=B5=84=E6=98=8E=E7=BB=86=E5=88=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SalaryStatisticsEmployeeServiceImpl.java | 26 ++++++++++--------- 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/src/com/engine/salary/report/service/impl/SalaryStatisticsEmployeeServiceImpl.java b/src/com/engine/salary/report/service/impl/SalaryStatisticsEmployeeServiceImpl.java index 5728f0886..93a369d7a 100644 --- a/src/com/engine/salary/report/service/impl/SalaryStatisticsEmployeeServiceImpl.java +++ b/src/com/engine/salary/report/service/impl/SalaryStatisticsEmployeeServiceImpl.java @@ -345,18 +345,6 @@ public class SalaryStatisticsEmployeeServiceImpl extends Service implements Sala @Override public SalaryStatisticsEmployeeDetailResultDTO getDetailSalaryAcctResultByAcctEmp(List salaryAcctEmployeeList) { - if (CollectionUtils.isEmpty(salaryAcctEmployeeList)) { - return SalaryStatisticsEmployeeDetailResultDTO.builder() - .salaryAcctEmployeeList(Collections.emptyList()) - .salaryAcctResultValueList(Collections.emptyList()) - .salaryItemList(Collections.emptyList()) - .build(); - } - - // 获取核算结果数据 - List salaryAcctEmployeeIds = salaryAcctEmployeeList.stream().map(SalaryAcctEmployeePO::getId).collect(Collectors.toList()); - List salaryAcctResultValues = getSalaryAcctResultService(user).listBySalaryAcctEmployeeIds(salaryAcctEmployeeIds); - // 3.获取薪资项目 List salaryItemList = getSalaryItemService(user).listAll(); salaryItemList = salaryItemList.stream() @@ -376,6 +364,20 @@ public class SalaryStatisticsEmployeeServiceImpl extends Service implements Sala }) .collect(Collectors.toList()); + if (CollectionUtils.isEmpty(salaryAcctEmployeeList)) { + return SalaryStatisticsEmployeeDetailResultDTO.builder() + .salaryAcctEmployeeList(Collections.emptyList()) + .salaryAcctResultValueList(Collections.emptyList()) + .salaryItemList(salaryItemList) + .build(); + } + + // 获取核算结果数据 + List salaryAcctEmployeeIds = salaryAcctEmployeeList.stream().map(SalaryAcctEmployeePO::getId).collect(Collectors.toList()); + List salaryAcctResultValues = getSalaryAcctResultService(user).listBySalaryAcctEmployeeIds(salaryAcctEmployeeIds); + + + return SalaryStatisticsEmployeeDetailResultDTO.builder() .salaryAcctEmployeeList(salaryAcctEmployeeList) .salaryAcctResultValueList(salaryAcctResultValues) From c2093995667f984321380480daad9041a935c671 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Sat, 12 Oct 2024 09:38:08 +0800 Subject: [PATCH 23/43] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=A8=A1=E6=9D=BF?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE=E4=B8=BB=E9=94=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salary/mapper/setting/PageListSettingMapper.xml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/com/engine/salary/mapper/setting/PageListSettingMapper.xml b/src/com/engine/salary/mapper/setting/PageListSettingMapper.xml index df06cf162..644707567 100644 --- a/src/com/engine/salary/mapper/setting/PageListSettingMapper.xml +++ b/src/com/engine/salary/mapper/setting/PageListSettingMapper.xml @@ -58,6 +58,9 @@ AND delete_type = #{deleteType} + + AND id = #{id} + AND page = #{page} @@ -94,6 +97,9 @@ delete_type, + + id, + page, @@ -117,6 +123,9 @@ #{deleteType}, + + #{id}, + #{page}, From a4b6ca604843ca88ed0d150caee101680a19c7be Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Sat, 12 Oct 2024 16:39:09 +0800 Subject: [PATCH 24/43] =?UTF-8?q?=E9=A2=86=E6=82=A6=E5=87=AD=E8=AF=81?= =?UTF-8?q?=E6=8E=A8=E9=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salary/entity/ly/dto/LyFzhsBrowser.java | 3 + .../entity/ly/dto/LyNCVoucherReturn.java | 13 + .../ly/param/LyVoucherDetailPushParam.java | 11 +- .../salary/entity/ly/po/LyVoucherPO.java | 2 +- .../engine/salary/service/LyPZService.java | 2 +- .../salary/service/impl/LyPZServiceImpl.java | 222 +++++++++--------- .../salary/wrapper/LySalaryWrapper.java | 4 +- 7 files changed, 142 insertions(+), 115 deletions(-) diff --git a/src/com/engine/salary/entity/ly/dto/LyFzhsBrowser.java b/src/com/engine/salary/entity/ly/dto/LyFzhsBrowser.java index 0eb1606f2..26f09cf9e 100644 --- a/src/com/engine/salary/entity/ly/dto/LyFzhsBrowser.java +++ b/src/com/engine/salary/entity/ly/dto/LyFzhsBrowser.java @@ -26,4 +26,7 @@ public class LyFzhsBrowser { // 辅助核算类型 private String fzhslx; + + // 辅助核算类型编号 + private String fzhslxbh; } diff --git a/src/com/engine/salary/entity/ly/dto/LyNCVoucherReturn.java b/src/com/engine/salary/entity/ly/dto/LyNCVoucherReturn.java index affd1d92f..06527dd7c 100644 --- a/src/com/engine/salary/entity/ly/dto/LyNCVoucherReturn.java +++ b/src/com/engine/salary/entity/ly/dto/LyNCVoucherReturn.java @@ -33,4 +33,17 @@ public class LyNCVoucherReturn { @XStreamAsAttribute private String successful; + + @XStreamAsAttribute + private String isexchange; + + @XStreamAsAttribute + private String replace; + + @XStreamAsAttribute + private String roottag; + + @XStreamAsAttribute + private String sender; + } diff --git a/src/com/engine/salary/entity/ly/param/LyVoucherDetailPushParam.java b/src/com/engine/salary/entity/ly/param/LyVoucherDetailPushParam.java index 7d74d8427..23f5f3ae8 100644 --- a/src/com/engine/salary/entity/ly/param/LyVoucherDetailPushParam.java +++ b/src/com/engine/salary/entity/ly/param/LyVoucherDetailPushParam.java @@ -1,5 +1,6 @@ package com.engine.salary.entity.ly.param; +import com.engine.salary.entity.ly.dto.LyFzhsBrowser; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -27,19 +28,19 @@ public class LyVoucherDetailPushParam { private String kjkm; // 辅助核算项目期数编码 - private String fzhsXmqs; + private LyFzhsBrowser fzhsXmqs; // 辅助核算房屋类别 - private String fzhsFwlb; + private LyFzhsBrowser fzhsFwlb; // 辅助核算税率类别 - private String fzhsSllb; + private LyFzhsBrowser fzhsSllb; // 辅助核算客商 - private String fzhsKs; + private LyFzhsBrowser fzhsKs; // 辅助核算其余辅助核算信息 - private List fzhsOtherBmList; + private List fzhsOtherBmList; private String fzhsOtherBmStr; // 借方金额 diff --git a/src/com/engine/salary/entity/ly/po/LyVoucherPO.java b/src/com/engine/salary/entity/ly/po/LyVoucherPO.java index d4991c45c..0521ec32b 100644 --- a/src/com/engine/salary/entity/ly/po/LyVoucherPO.java +++ b/src/com/engine/salary/entity/ly/po/LyVoucherPO.java @@ -69,7 +69,7 @@ public class LyVoucherPO { * 创建时间 */ @TableTitle(title = "推送时间", dataIndex = "createTime", key = "createTime") - @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss", timezone = "GMT+8") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date createTime; diff --git a/src/com/engine/salary/service/LyPZService.java b/src/com/engine/salary/service/LyPZService.java index 744a3b1ea..2a8d74d3c 100644 --- a/src/com/engine/salary/service/LyPZService.java +++ b/src/com/engine/salary/service/LyPZService.java @@ -38,7 +38,7 @@ public interface LyPZService { * * @param pushParam */ - void pushUCAndSave(LyVoucherPushParam pushParam); + Map pushUCAndSave(LyVoucherPushParam pushParam); /** * 本地历史凭证列表 diff --git a/src/com/engine/salary/service/impl/LyPZServiceImpl.java b/src/com/engine/salary/service/impl/LyPZServiceImpl.java index 5e721be77..71c1a54f2 100644 --- a/src/com/engine/salary/service/impl/LyPZServiceImpl.java +++ b/src/com/engine/salary/service/impl/LyPZServiceImpl.java @@ -294,12 +294,13 @@ public class LyPZServiceImpl extends Service implements LyPZService { List> partition = Lists.partition(fzhsBmList, 500); partition.forEach(part -> { String bmIdStr = StringUtils.join(part, "','"); - rs.execute("SELECT fzhslx,bh,mc FROM uf_ncfuhs where bh in ('" + bmIdStr + "')"); + rs.execute("SELECT fzhslx,fzhslxbh,bh,mc FROM uf_ncfuhs where bh in ('" + bmIdStr + "')"); while (rs.next()) { LyFzhsBrowser browser = new LyFzhsBrowser(); browser.setFzhslx(LyPZTypeEnum.getDefaultLabelByValue(rs.getInt("fzhslx"))); browser.setBh(rs.getString("bh")); browser.setMc(rs.getString("mc")); + browser.setFzhslxbh(rs.getString("fzhslxbh")); lyFzhsBrowserList.add(browser); } }); @@ -335,9 +336,9 @@ public class LyPZServiceImpl extends Service implements LyPZService { BaseBean baseBean = new BaseBean(); String fzhslxFieldId = baseBean.getPropValue("lySalaryNCVoucher", "fzhslx_field_id"); if (queryParam.getFzhslx() == null ) { - rs.execute("select bh,mc,fzhslx,b.selectname from uf_NCfuhs a left join workflow_selectitem b on a. fzhslx= b.SELECTVALUE where b.FIELDID=" + fzhslxFieldId ); + rs.execute("select bh,mc,fzhslx,fzhslxbh,b.selectname from uf_NCfuhs a left join workflow_selectitem b on a. fzhslx= b.SELECTVALUE where b.FIELDID=" + fzhslxFieldId ); } else { - rs.execute("select bh,mc,fzhslx,b.selectname from uf_NCfuhs a left join workflow_selectitem b on a. fzhslx= b.SELECTVALUE where b.FIELDID=" + fzhslxFieldId + "and a.fzhslx = "+ queryParam.getFzhslx()); + rs.execute("select bh,mc,fzhslx,fzhslxbh,b.selectname from uf_NCfuhs a left join workflow_selectitem b on a. fzhslx= b.SELECTVALUE where b.FIELDID=" + fzhslxFieldId + " and a.fzhslx = "+ queryParam.getFzhslx()); } List> resultList = new ArrayList<>(); while (rs.next()) { @@ -350,6 +351,7 @@ public class LyPZServiceImpl extends Service implements LyPZService { resultMap.put("bh", rs.getString("bh")); resultMap.put("mc", rs.getString("mc")); resultMap.put("fzhslx", rs.getString("selectname")); + resultMap.put("fzhslxbh", rs.getString("fzhslxbh")); resultList.add(resultMap); } } @@ -599,7 +601,7 @@ public class LyPZServiceImpl extends Service implements LyPZService { * @param pushParam */ @Override - public void pushUCAndSave(LyVoucherPushParam pushParam) { + public Map pushUCAndSave(LyVoucherPushParam pushParam) { // 校验会计科目是否合法 verifyKjkm(pushParam); // 推送凭证 @@ -607,7 +609,7 @@ public class LyPZServiceImpl extends Service implements LyPZService { // 推送成功后修改报表数据的凭证生成状态 updateReportStatus(pushParam); // 推送成功后保存凭证 - saveVoucher(pushParam); + return saveVoucher(pushParam); } /** @@ -649,7 +651,8 @@ public class LyPZServiceImpl extends Service implements LyPZService { * 保存凭证 * @param pushParam */ - private void saveVoucher(LyVoucherPushParam pushParam) { + private Map saveVoucher(LyVoucherPushParam pushParam) { + Map resultMap = new HashMap(); Date now = new Date(); long mainId = IdGenerator.generate(); LyVoucherPO voucher = LyVoucherPO @@ -675,11 +678,11 @@ public class LyPZServiceImpl extends Service implements LyPZService { .voucherId(mainId) .zy(detail.getZy()) .kjkmId(detail.getKjkm()) - .fzhsXmqsBm(detail.getFzhsXmqs()) - .fzhsFwlbBm(detail.getFzhsFwlb()) - .fzhsSllbBm(detail.getFzhsSllb()) - .fzhsKsBm(detail.getFzhsKs()) - .fzhsOtherBms(CollectionUtils.isEmpty(detail.getFzhsOtherBmList()) ? "" : StringUtils.join(detail.getFzhsOtherBmList(), ",")) + .fzhsXmqsBm(detail.getFzhsXmqs().getBh()) + .fzhsFwlbBm(detail.getFzhsFwlb().getBh()) + .fzhsSllbBm(detail.getFzhsSllb().getBh()) + .fzhsKsBm(detail.getFzhsKs().getBh()) + .fzhsOtherBms(CollectionUtils.isEmpty(detail.getFzhsOtherBmList()) ? "" : detail.getFzhsOtherBmList().stream().map(LyFzhsBrowser::getBh).collect(Collectors.joining(",")) ) .jfValue(detail.getJfValue()) .dfValue(detail.getDfValue()) .creator(Long.valueOf(user.getUID())) @@ -688,7 +691,9 @@ public class LyPZServiceImpl extends Service implements LyPZService { .deleteType(0).build(); getLyVoucherDetailMapper().insertIgnoreNull(voucherDetail); }); - + resultMap.put("status", (pushParam.getStatus() != null && pushParam.getStatus().equals(NumberUtils.INTEGER_ONE)) ? Boolean.TRUE : Boolean.FALSE); + resultMap.put("errMsg", pushParam.getPushMsg()); + return resultMap; } /** @@ -696,31 +701,38 @@ public class LyPZServiceImpl extends Service implements LyPZService { * @param pushParam */ private void pushVoucher(LyVoucherPushParam pushParam) { - pushParam.setStatus(NumberUtils.INTEGER_ONE); - pushParam.setPushMsg("推送成功"); + Date salaryDate = SalaryDateUtil.dateStrToLocalYearMonth(pushParam.getSalaryMonth()); + if (salaryDate == null) { + throw new SalaryRunTimeException("薪资所属月为空"); + } Calendar cal = Calendar.getInstance(); - cal.setTime(new Date()); - + cal.setTime(salaryDate); + BaseBean baseBean = new BaseBean(); LyNCVoucher lyNCVoucher = new LyNCVoucher(); // 凭证类别 非空 (凭证类别) - lyNCVoucher.setPkVouchertype("01"); + String pkVoucherType = baseBean.getPropValue("lySalaryNCVoucherPushParam", "pk_voucher_type"); + lyNCVoucher.setPkVouchertype(pkVoucherType); // 会计年度 非空 lyNCVoucher.setYear(String.valueOf(cal.get(Calendar.YEAR))); // 来源系统 非空 只支持模块编号 - lyNCVoucher.setPkSystem("GL"); + String pkSystem = baseBean.getPropValue("lySalaryNCVoucherPushParam", "pk_system"); + lyNCVoucher.setPkSystem(pkSystem); // 凭证类型值 0:正常凭证 3:数量调整凭证 不可空 - lyNCVoucher.setVoucherkind("0"); + String voucherKind = baseBean.getPropValue("lySalaryNCVoucherPushParam", "voucher_kind"); + lyNCVoucher.setVoucherkind(voucherKind); // 核算账簿 非空 (账簿_财务核算账簿) - lyNCVoucher.setPkAccountingbook("201-0003"); + lyNCVoucher.setPkAccountingbook(pushParam.getZbbm()); + // lyNCVoucher.setPkAccountingbook("12re23r32"); // 会计期间 非空 lyNCVoucher.setPeriod(String.valueOf(cal.get(Calendar.MONTH)+1)); // 制单日期 非空 lyNCVoucher.setPrepareddate(SalaryDateUtil.getFormatLocalDateTime(new Date())); // 制单人 非空 (用户) - lyNCVoucher.setPkPrepared("fw"); + String pkPrepared = baseBean.getPropValue("lySalaryNCVoucherPushParam", "pk_prepared"); + lyNCVoucher.setPkPrepared(pkPrepared); //所属组织 非空 (组织) - // lyNCVoucher.setPkOrg(pushParam.getZbbm().split("-")[0]); - lyNCVoucher.setPkOrg("201"); + lyNCVoucher.setPkOrg(pushParam.getZbbm().split("-")[0]); + // lyNCVoucher.setPkOrg("201"); lyNCVoucher.setDiscardflag("N"); @@ -734,6 +746,7 @@ public class LyPZServiceImpl extends Service implements LyPZService { } }); ArrayList lyNCVoucherDetailList = new ArrayList<>(); + RecordSet rs = new RecordSet(); // 借方分录 for (int i = 0; i < jfDetailList.size(); i++) { LyVoucherDetailPushParam detailParam = jfDetailList.get(i); @@ -756,36 +769,45 @@ public class LyPZServiceImpl extends Service implements LyPZService { lyNCVoucherDetail.setPkAccasoa(kjkmbm); // 辅助核算 List lyNCVoucherAssList = new ArrayList<>(); - if (StringUtils.isNotBlank(detailParam.getFzhsXmqs())) { + if (detailParam.getFzhsXmqs() != null) { // 项目期数 LyNCVoucherAss ass = new LyNCVoucherAss(); - ass.setPkChecktype("0010"); - ass.setPkCheckvalue(detailParam.getFzhsXmqs()); + ass.setPkChecktype(detailParam.getFzhsXmqs().getFzhslxbh()); + ass.setPkCheckvalue(detailParam.getFzhsXmqs().getBh()); lyNCVoucherAssList.add(ass); } - if (StringUtils.isNotBlank(detailParam.getFzhsFwlb())) { + if (detailParam.getFzhsFwlb() != null) { // 房屋列别 LyNCVoucherAss ass = new LyNCVoucherAss(); - ass.setPkChecktype("xz001"); - ass.setPkCheckvalue(detailParam.getFzhsFwlb()); + ass.setPkChecktype(detailParam.getFzhsFwlb().getFzhslxbh()); + ass.setPkCheckvalue(detailParam.getFzhsFwlb().getBh()); lyNCVoucherAssList.add(ass); } - if (StringUtils.isNotBlank(detailParam.getFzhsSllb())) { + if (detailParam.getFzhsSllb() != null) { // 税率类别 LyNCVoucherAss ass = new LyNCVoucherAss(); - ass.setPkChecktype("yy001"); - ass.setPkCheckvalue(detailParam.getFzhsSllb()); + ass.setPkChecktype(detailParam.getFzhsSllb().getFzhslxbh()); + ass.setPkCheckvalue(detailParam.getFzhsSllb().getBh()); lyNCVoucherAssList.add(ass); } - if (StringUtils.isNotBlank(detailParam.getFzhsKs())) { + if (detailParam.getFzhsKs() != null) { LyNCVoucherAss ass = new LyNCVoucherAss(); // 客商 - ass.setPkChecktype("0004"); - ass.setPkCheckvalue(detailParam.getFzhsKs()); + ass.setPkChecktype(detailParam.getFzhsKs().getFzhslxbh()); + ass.setPkCheckvalue(detailParam.getFzhsKs().getBh()); lyNCVoucherAssList.add(ass); } - // TODO 其他 - lyNCVoucherDetail.setAss(lyNCVoucherAssList); + // 其他 + if (CollectionUtils.isNotEmpty(detailParam.getFzhsOtherBmList())) { + detailParam.getFzhsOtherBmList().stream().forEach(fzhs -> { + LyNCVoucherAss ass = new LyNCVoucherAss(); + ass.setPkChecktype(fzhs.getFzhslxbh()); + ass.setPkCheckvalue(fzhs.getBh()); + lyNCVoucherAssList.add(ass); + }); + } + List assList = lyNCVoucherAssList.stream().filter(ass -> StringUtils.isNotBlank(ass.getPkChecktype())).collect(Collectors.toList()); + lyNCVoucherDetail.setAss(assList); lyNCVoucherDetailList.add(lyNCVoucherDetail); } @@ -811,32 +833,45 @@ public class LyPZServiceImpl extends Service implements LyPZService { lyNCVoucherDetail.setPkAccasoa(kjkmbm); // 辅助核算 List lyNCVoucherAssList = new ArrayList<>(); - if (StringUtils.isNotBlank(detailParam.getFzhsXmqs())) { + if (detailParam.getFzhsXmqs() != null) { + // 项目期数 LyNCVoucherAss ass = new LyNCVoucherAss(); - ass.setPkChecktype("0010"); - ass.setPkCheckvalue(detailParam.getFzhsXmqs()); + ass.setPkChecktype(detailParam.getFzhsXmqs().getFzhslxbh()); + ass.setPkCheckvalue(detailParam.getFzhsXmqs().getBh()); lyNCVoucherAssList.add(ass); } - if (StringUtils.isNotBlank(detailParam.getFzhsFwlb())) { + if (detailParam.getFzhsFwlb() != null) { + // 房屋列别 LyNCVoucherAss ass = new LyNCVoucherAss(); - ass.setPkChecktype("xz001"); - ass.setPkCheckvalue(detailParam.getFzhsFwlb()); + ass.setPkChecktype(detailParam.getFzhsFwlb().getFzhslxbh()); + ass.setPkCheckvalue(detailParam.getFzhsFwlb().getBh()); lyNCVoucherAssList.add(ass); } - if (StringUtils.isNotBlank(detailParam.getFzhsSllb())) { + if (detailParam.getFzhsSllb() != null) { + // 税率类别 LyNCVoucherAss ass = new LyNCVoucherAss(); - ass.setPkChecktype("yy001"); - ass.setPkCheckvalue(detailParam.getFzhsSllb()); + ass.setPkChecktype(detailParam.getFzhsSllb().getFzhslxbh()); + ass.setPkCheckvalue(detailParam.getFzhsSllb().getBh()); lyNCVoucherAssList.add(ass); } - if (StringUtils.isNotBlank(detailParam.getFzhsKs())) { + if (detailParam.getFzhsKs() != null) { LyNCVoucherAss ass = new LyNCVoucherAss(); - ass.setPkChecktype("0004"); - ass.setPkCheckvalue(detailParam.getFzhsKs()); + // 客商 + ass.setPkChecktype(detailParam.getFzhsKs().getFzhslxbh()); + ass.setPkCheckvalue(detailParam.getFzhsKs().getBh()); lyNCVoucherAssList.add(ass); } - // todo 其他 - lyNCVoucherDetail.setAss(lyNCVoucherAssList); + // 其他 + if (CollectionUtils.isNotEmpty(detailParam.getFzhsOtherBmList())) { + detailParam.getFzhsOtherBmList().stream().forEach(fzhs -> { + LyNCVoucherAss ass = new LyNCVoucherAss(); + ass.setPkChecktype(fzhs.getFzhslxbh()); + ass.setPkCheckvalue(fzhs.getBh()); + lyNCVoucherAssList.add(ass); + }); + } + List assList = lyNCVoucherAssList.stream().filter(ass -> StringUtils.isNotBlank(ass.getPkChecktype())).collect(Collectors.toList()); + lyNCVoucherDetail.setAss(assList); lyNCVoucherDetailList.add(lyNCVoucherDetail); } lyNCVoucher.setDetails(lyNCVoucherDetailList); @@ -845,9 +880,13 @@ public class LyPZServiceImpl extends Service implements LyPZService { LyNCVoucherUfinterface lyNCVoucherUfinterface = new LyNCVoucherUfinterface(); lyNCVoucherUfinterface.setVoucher(voucherHead); - lyNCVoucherUfinterface.setAccount("develop"); - lyNCVoucherUfinterface.setBilltype("vouchergl"); - lyNCVoucherUfinterface.setBusinessunitcode("develop"); + + String account = baseBean.getPropValue("lySalaryNCVoucherPushParam", "account"); + lyNCVoucherUfinterface.setAccount(account); + String billtype = baseBean.getPropValue("lySalaryNCVoucherPushParam", "billtype"); + lyNCVoucherUfinterface.setBilltype(billtype); + String businessunitcode = baseBean.getPropValue("lySalaryNCVoucherPushParam", "businessunitcode"); + lyNCVoucherUfinterface.setBusinessunitcode(businessunitcode); lyNCVoucherUfinterface.setFilename(""); lyNCVoucherUfinterface.setGroupcode(""); lyNCVoucherUfinterface.setIsexchange(""); @@ -855,70 +894,41 @@ public class LyPZServiceImpl extends Service implements LyPZService { lyNCVoucherUfinterface.setReceiver(""); lyNCVoucherUfinterface.setReplace(""); lyNCVoucherUfinterface.setRoottag(""); - lyNCVoucherUfinterface.setSender("OA"); + String sender = baseBean.getPropValue("lySalaryNCVoucherPushParam", "sender"); + lyNCVoucherUfinterface.setSender(sender); // "" String xml = XStreamUtil.marshal(lyNCVoucherUfinterface); System.out.println(xml); HttpClient httpClient = new HttpClient(); - PostMethod httpPost = new PostMethod("http://172.18.0.10:8090/service/XChangeServlet?account=002&groupcode=leading"); + String accountParam = baseBean.getPropValue("lySalaryNCVoucherPushParam", "account_param"); + String groupcodeParam = baseBean.getPropValue("lySalaryNCVoucherPushParam", "groupcode_param"); + PostMethod httpPost = new PostMethod("http://172.18.0.10:8090/service/XChangeServlet?account="+accountParam+"&groupcode="+groupcodeParam); httpPost.setRequestHeader("content-type", "application/json;charset=utf-8"); String result = ""; try { - RequestEntity entity = new StringRequestEntity(xml, "application/json", "UTF-8"); + RequestEntity entity = new StringRequestEntity( xml, "application/json", "UTF-8"); httpPost.setRequestEntity(entity); httpClient.executeMethod(httpPost); result = httpPost.getResponseBodyAsString(); System.out.println(result); - LyNCVoucherReturn lyNCVoucherReturn = XStreamUtil.unmarshal(LyNCVoucherReturn.class, result); - System.out.println(lyNCVoucherReturn); - - + LyNCVoucherReturn lyNCVoucherReturn = XStreamUtil.unmarshal(LyNCVoucherReturn.class, StringUtils.substring(result,result.indexOf("")+14)); + boolean success = lyNCVoucherReturn.getSuccessful().equals("Y"); + if (!success) { + // 失败 + String errorMsg = lyNCVoucherReturn.getSendresult().getResultdescription(); + pushParam.setStatus(NumberUtils.INTEGER_ZERO); + pushParam.setPushMsg(errorMsg); + } else { + pushParam.setStatus(NumberUtils.INTEGER_ONE); + pushParam.setPushMsg("推送成功"); + } } catch (Exception e) { - System.out.println("d"); + baseBean.writeLog("推送错误" + e.getMessage()); + throw new SalaryRunTimeException("推送错误,请联系管理员"); } - throw new SalaryRunTimeException("hi"); - - - // test 生成xml - // List assList = new ArrayList<>(); - // assList.add(LyVoucherAss.builder() - // .pkChecktype("first") - // .pkCheckvalue("ff") - // .build()); - // assList.add(LyVoucherAss.builder() - // .pkChecktype("second") - // .pkCheckvalue("fd") - // .build()); - // - // List lyVoucherDetails = new ArrayList<>(); - // lyVoucherDetails.add(LyVoucherDetail.builder() - // .detailindex("what") - // .explanation("hfdsuhfad") - // .debitamount("1000") - // .pkCurrtype("RMB") - // .pkAccasoa("kemu") - // .ass(assList) - // .build()); - // - // LyVoucher build = LyVoucher.builder() - // .pkVoucher("123") - // .pkVouchertype("type") - // .year("2024") - // .pkSystem("system") - // .voucherkind("0") - // .pkAccountingbook("1") - // .period("04") - // .prepareddate("2024-08-01") - // .pkPrepared("par") - // .pkOrg("org") - // .details(lyVoucherDetails) - // .build(); - // - // String xml = XStreamUtil.marshal(build); - // System.out.println(xml); } /** @@ -926,9 +936,9 @@ public class LyPZServiceImpl extends Service implements LyPZService { * @param pushParam */ private void verifyKjkm(LyVoucherPushParam pushParam) { - // if(StringUtils.isBlank(pushParam.getZbbm())) { - // throw new SalaryRunTimeException("账簿编码不能为空"); - // } + if(StringUtils.isBlank(pushParam.getZbbm())) { + throw new SalaryRunTimeException("账簿编码不能为空"); + } // 校验科目id是否合规 Map kmbmInfoMap = new HashMap<>(); List allKjkm = getUfKjkmMapper().listAll(); @@ -986,7 +996,7 @@ public class LyPZServiceImpl extends Service implements LyPZService { list.stream().forEach(voucher -> { voucher.setPzlxStr(LyPZTypeEnum.getDefaultLabelByValue(voucher.getPzlx())); voucher.setPushStatusStr(voucher.getStatus() != null && voucher.getStatus().equals(NumberUtils.INTEGER_ONE) ? "成功" : "失败"); - voucher.setErrorMsg(voucher.getStatus() != null && voucher.getStatus().equals(NumberUtils.INTEGER_ONE) ? "" : voucher.getErrorMsg()); + voucher.setErrorMsg(voucher.getStatus() != null && voucher.getStatus().equals(NumberUtils.INTEGER_ONE) ? "" : voucher.getPushMsg()); }); return SalaryPageUtil.buildPage(queryParam.getCurrent(), queryParam.getPageSize(), lyVoucherPOS, LyVoucherPO.class); } diff --git a/src/com/engine/salary/wrapper/LySalaryWrapper.java b/src/com/engine/salary/wrapper/LySalaryWrapper.java index 60c50c9e5..bada5fbd4 100644 --- a/src/com/engine/salary/wrapper/LySalaryWrapper.java +++ b/src/com/engine/salary/wrapper/LySalaryWrapper.java @@ -154,8 +154,8 @@ public class LySalaryWrapper extends Service { * 推送凭证到UC并保存到本地 * @param pushParam */ - public void pushUCAndSave(LyVoucherPushParam pushParam) { - getLyPZService(user).pushUCAndSave(pushParam); + public Map pushUCAndSave(LyVoucherPushParam pushParam) { + return getLyPZService(user).pushUCAndSave(pushParam); } /** From dcc18a096d9b2959215359e57c1b2ce77882988c Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Mon, 14 Oct 2024 09:19:07 +0800 Subject: [PATCH 25/43] =?UTF-8?q?=E9=A2=86=E6=82=A6=E5=87=AD=E8=AF=81?= =?UTF-8?q?=E6=8E=A8=E9=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/engine/salary/service/impl/LyPZServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/com/engine/salary/service/impl/LyPZServiceImpl.java b/src/com/engine/salary/service/impl/LyPZServiceImpl.java index 71c1a54f2..215f4aeb3 100644 --- a/src/com/engine/salary/service/impl/LyPZServiceImpl.java +++ b/src/com/engine/salary/service/impl/LyPZServiceImpl.java @@ -996,7 +996,7 @@ public class LyPZServiceImpl extends Service implements LyPZService { list.stream().forEach(voucher -> { voucher.setPzlxStr(LyPZTypeEnum.getDefaultLabelByValue(voucher.getPzlx())); voucher.setPushStatusStr(voucher.getStatus() != null && voucher.getStatus().equals(NumberUtils.INTEGER_ONE) ? "成功" : "失败"); - voucher.setErrorMsg(voucher.getStatus() != null && voucher.getStatus().equals(NumberUtils.INTEGER_ONE) ? "" : voucher.getPushMsg()); + voucher.setErrorMsg(voucher.getStatus() != null && voucher.getStatus().equals(NumberUtils.INTEGER_ONE) ? "" : voucher.getPushMsg().replace("\n","
")); }); return SalaryPageUtil.buildPage(queryParam.getCurrent(), queryParam.getPageSize(), lyVoucherPOS, LyVoucherPO.class); } From 49cbb7a7cc91c88d1a4d284c3bacfe105d31d3e1 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Mon, 14 Oct 2024 10:38:30 +0800 Subject: [PATCH 26/43] =?UTF-8?q?=E6=B5=AE=E5=8A=A8=E8=96=AA=E9=85=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../po/VariableArchiveItemPO.java | 2 + .../service/VariableArchiveService.java | 2 + .../impl/VariableArchiveItemServiceImpl.java | 6 ++- .../impl/VariableArchiveServiceImpl.java | 40 +++++++++++++++++-- .../salary/web/VariableArchiveController.java | 16 ++++++++ .../wrapper/VariableArchiveWrapper.java | 4 ++ 6 files changed, 66 insertions(+), 4 deletions(-) diff --git a/src/com/engine/salary/entity/datacollection/po/VariableArchiveItemPO.java b/src/com/engine/salary/entity/datacollection/po/VariableArchiveItemPO.java index 52e9772e4..cd211f2d3 100644 --- a/src/com/engine/salary/entity/datacollection/po/VariableArchiveItemPO.java +++ b/src/com/engine/salary/entity/datacollection/po/VariableArchiveItemPO.java @@ -1,5 +1,6 @@ package com.engine.salary.entity.datacollection.po; +import com.engine.salary.annotation.Encrypt; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -41,6 +42,7 @@ public class VariableArchiveItemPO { /** * 浮动值 */ + @Encrypt private String itemValue; /** diff --git a/src/com/engine/salary/service/VariableArchiveService.java b/src/com/engine/salary/service/VariableArchiveService.java index f82fcc031..4579eba6a 100644 --- a/src/com/engine/salary/service/VariableArchiveService.java +++ b/src/com/engine/salary/service/VariableArchiveService.java @@ -70,4 +70,6 @@ public interface VariableArchiveService { void deleteSelectVariableArchive(Collection deleteIds); List> listBySalaryMonthAndEmployeeIds(YearMonth salaryMonth, List employeeIds, Long taxAgentId); + + void updateData(VariableArchiveSaveParam updateParam); } diff --git a/src/com/engine/salary/service/impl/VariableArchiveItemServiceImpl.java b/src/com/engine/salary/service/impl/VariableArchiveItemServiceImpl.java index bdba34b1a..7e5cacec5 100644 --- a/src/com/engine/salary/service/impl/VariableArchiveItemServiceImpl.java +++ b/src/com/engine/salary/service/impl/VariableArchiveItemServiceImpl.java @@ -1,6 +1,7 @@ package com.engine.salary.service.impl; import com.engine.core.impl.Service; +import com.engine.salary.encrypt.EncryptUtil; import com.engine.salary.entity.datacollection.po.VariableArchiveItemPO; import com.engine.salary.mapper.datacollection.VariableArchiveItemMapper; import com.engine.salary.service.VariableArchiveItemService; @@ -18,6 +19,7 @@ import java.util.List; * @description 浮动薪酬档案明细 */ public class VariableArchiveItemServiceImpl extends Service implements VariableArchiveItemService { + private EncryptUtil encryptUtil = new EncryptUtil(); private VariableArchiveItemMapper getVariableArchiveItemMapper(){ return MapperProxyFactory.getProxy(VariableArchiveItemMapper.class); @@ -34,7 +36,8 @@ public class VariableArchiveItemServiceImpl extends Service implements VariableA if (CollectionUtils.isEmpty(variableArchiveIds)) { return Collections.emptyList(); } - return getVariableArchiveItemMapper().listSome(VariableArchiveItemPO.builder().variableArchiveIds(variableArchiveIds).build()); + List variableArchiveItemPOS = getVariableArchiveItemMapper().listSome(VariableArchiveItemPO.builder().variableArchiveIds(variableArchiveIds).build()); + return encryptUtil.decryptList(variableArchiveItemPOS, VariableArchiveItemPO.class); } /** @@ -52,6 +55,7 @@ public class VariableArchiveItemServiceImpl extends Service implements VariableA if (CollectionUtils.isEmpty(insertList)) { return 0; } + encryptUtil.encryptList(insertList, VariableArchiveItemPO.class); List> partition = Lists.partition(insertList, 50); partition.forEach(part -> getVariableArchiveItemMapper().batchInsert(part)); return 0; diff --git a/src/com/engine/salary/service/impl/VariableArchiveServiceImpl.java b/src/com/engine/salary/service/impl/VariableArchiveServiceImpl.java index b008273c6..6faa540bb 100644 --- a/src/com/engine/salary/service/impl/VariableArchiveServiceImpl.java +++ b/src/com/engine/salary/service/impl/VariableArchiveServiceImpl.java @@ -151,9 +151,6 @@ public class VariableArchiveServiceImpl extends Service implements VariableArchi */ @Override public List> buildVariableArchiveData(Collection variableArchives) { - if (CollectionUtils.isEmpty(variableArchives)) { - // 无数据 - } List variableArchiveIds = variableArchives.stream().map(VariableArchiveListDTO::getId).collect(Collectors.toList()); // 获取浮动薪资档案所对应的浮动薪资项目数据 List variableArchiveItemList = getVariableArchiveItemService(user).listByVariableArchiveIds(variableArchiveIds); @@ -599,4 +596,41 @@ public class VariableArchiveServiceImpl extends Service implements VariableArchi List variableArchiveListDTO = list(queryParam); return buildVariableArchiveData(variableArchiveListDTO); } + + @Override + public void updateData(VariableArchiveSaveParam updateParam) { + if (updateParam.getId() == null) { + throw new SalaryRunTimeException("参数错误"); + } + // 获取浮动薪酬档案 + VariableArchivePO variableArchivePO = getVariableArchiveMapper().getById(updateParam.getId()); + if (variableArchivePO == null) { + throw new SalaryRunTimeException("浮动薪酬档案不存在或已被删除"); + } + + // 删除原有的浮动薪酬档案明细 + getVariableArchiveItemService(user).deleteByArchiveIds(Collections.singletonList(updateParam.getId())); + + // 保存浮动薪资档案详细信息 + List variableArchiveItemList = new ArrayList<>(); + Date now = new Date(); + updateParam.getItemValueList().forEach(e -> { + variableArchiveItemList.add(VariableArchiveItemPO.builder() + .id(IdGenerator.generate()) + .employeeId(updateParam.getEmployeeId()) + .variableArchiveId(variableArchivePO.getId()) + .variableItemId(e.getVariableItemId()) + .itemValue(e.getItemValue()) + .creator(Long.valueOf(user.getUID())) + .createTime(now) + .updateTime(now) + .deleteType(NumberUtils.INTEGER_ZERO) + .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) + .build()); + }); + + if (CollectionUtils.isNotEmpty(variableArchiveItemList)) { + getVariableArchiveItemService(user).batchInsert(variableArchiveItemList); + } + } } diff --git a/src/com/engine/salary/web/VariableArchiveController.java b/src/com/engine/salary/web/VariableArchiveController.java index c0eb2de43..1afce5c88 100644 --- a/src/com/engine/salary/web/VariableArchiveController.java +++ b/src/com/engine/salary/web/VariableArchiveController.java @@ -114,6 +114,22 @@ public class VariableArchiveController { return new ResponseResult(user).run(getVariableArchiveWrapper(user)::createData, saveParam); } + /** + * 编辑浮动薪酬档案 + * + * @param request + * @param response + * @param updateParam + * @return + */ + @POST + @Path("/updateData") + @Produces(MediaType.APPLICATION_JSON) + public String updateData(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody VariableArchiveSaveParam updateParam) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getVariableArchiveWrapper(user)::updateData, updateParam); + } + @GET @Path("/downloadTemplate") diff --git a/src/com/engine/salary/wrapper/VariableArchiveWrapper.java b/src/com/engine/salary/wrapper/VariableArchiveWrapper.java index b26df0cba..a1a1bcb54 100644 --- a/src/com/engine/salary/wrapper/VariableArchiveWrapper.java +++ b/src/com/engine/salary/wrapper/VariableArchiveWrapper.java @@ -123,4 +123,8 @@ public class VariableArchiveWrapper extends Service { public void deleteSelectVariableArchive(Collection deleteIds) { getVariableArchiveService(user).deleteSelectVariableArchive(deleteIds); } + + public void updateData(VariableArchiveSaveParam updateParam) { + getVariableArchiveService(user).updateData(updateParam); + } } From dbd1b574e00e644bc83ab681bd29f5a6f340ae80 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Mon, 14 Oct 2024 15:05:22 +0800 Subject: [PATCH 27/43] =?UTF-8?q?=E6=B5=AE=E5=8A=A8=E8=96=AA=E9=85=AC?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/VariableArchiveService.java | 2 +- .../impl/VariableArchiveServiceImpl.java | 2 +- .../salary/web/VariableArchiveController.java | 23 +++++-------------- .../wrapper/VariableArchiveWrapper.java | 2 +- 4 files changed, 9 insertions(+), 20 deletions(-) diff --git a/src/com/engine/salary/service/VariableArchiveService.java b/src/com/engine/salary/service/VariableArchiveService.java index 4579eba6a..280a4064d 100644 --- a/src/com/engine/salary/service/VariableArchiveService.java +++ b/src/com/engine/salary/service/VariableArchiveService.java @@ -40,7 +40,7 @@ public interface VariableArchiveService { * @param variableArchives * @return */ - List> buildVariableArchiveData(Collection variableArchives); + List> buildVariableArchiveData(List variableArchives); /** * 创建浮动薪酬档案 diff --git a/src/com/engine/salary/service/impl/VariableArchiveServiceImpl.java b/src/com/engine/salary/service/impl/VariableArchiveServiceImpl.java index 6faa540bb..389c08788 100644 --- a/src/com/engine/salary/service/impl/VariableArchiveServiceImpl.java +++ b/src/com/engine/salary/service/impl/VariableArchiveServiceImpl.java @@ -150,7 +150,7 @@ public class VariableArchiveServiceImpl extends Service implements VariableArchi * @return */ @Override - public List> buildVariableArchiveData(Collection variableArchives) { + public List> buildVariableArchiveData(List variableArchives) { List variableArchiveIds = variableArchives.stream().map(VariableArchiveListDTO::getId).collect(Collectors.toList()); // 获取浮动薪资档案所对应的浮动薪资项目数据 List variableArchiveItemList = getVariableArchiveItemService(user).listByVariableArchiveIds(variableArchiveIds); diff --git a/src/com/engine/salary/web/VariableArchiveController.java b/src/com/engine/salary/web/VariableArchiveController.java index 1afce5c88..f179c9683 100644 --- a/src/com/engine/salary/web/VariableArchiveController.java +++ b/src/com/engine/salary/web/VariableArchiveController.java @@ -111,23 +111,12 @@ public class VariableArchiveController { @Produces(MediaType.APPLICATION_JSON) public String createData(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody VariableArchiveSaveParam saveParam) { User user = HrmUserVarify.getUser(request, response); - return new ResponseResult(user).run(getVariableArchiveWrapper(user)::createData, saveParam); - } - - /** - * 编辑浮动薪酬档案 - * - * @param request - * @param response - * @param updateParam - * @return - */ - @POST - @Path("/updateData") - @Produces(MediaType.APPLICATION_JSON) - public String updateData(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody VariableArchiveSaveParam updateParam) { - User user = HrmUserVarify.getUser(request, response); - return new ResponseResult(user).run(getVariableArchiveWrapper(user)::updateData, updateParam); + if (saveParam.getId() == null) { + return new ResponseResult(user).run(getVariableArchiveWrapper(user)::createData, saveParam); + } else { + // 更新 + return new ResponseResult(user).run(getVariableArchiveWrapper(user)::updateData, saveParam); + } } diff --git a/src/com/engine/salary/wrapper/VariableArchiveWrapper.java b/src/com/engine/salary/wrapper/VariableArchiveWrapper.java index a1a1bcb54..61f9dcc86 100644 --- a/src/com/engine/salary/wrapper/VariableArchiveWrapper.java +++ b/src/com/engine/salary/wrapper/VariableArchiveWrapper.java @@ -52,7 +52,7 @@ public class VariableArchiveWrapper extends Service { //薪资档案列表 PageInfo pageInfo = getVariableArchiveService(user).listPage(queryParam); - Collection salaryArchives = pageInfo.getList(); + List salaryArchives = pageInfo.getList(); // 获取所有浮动薪酬项目 List variableItems = getVariableItemService(user).listAll(); From 6ec7210720582d3a58be522ea557f7e8a0d1fe54 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Tue, 15 Oct 2024 14:40:04 +0800 Subject: [PATCH 28/43] =?UTF-8?q?=E9=99=A4=E5=8E=BB=E6=A0=B8=E7=AE=97?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E5=87=BD=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../engine/salary/service/impl/SalaryAcctExcelServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java index c7f3be70b..7b0d21ffe 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java @@ -1139,7 +1139,7 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc // List> data = ExcelParseHelper.parse2Map(sheet, 1); List> data; // if (StringUtils.equals("importSalaryAcctResult", importType)) { - data = ExcelParseHelper.parse2Map(workbook, 0, 2, 1); + data = ExcelParseHelper.parse2Map(sheet, 2, 1); // } else { // data = ExcelParseHelper.parse2Map(sheet, 1); // } From 5f50c26640f17a8951570da9d0909f2ba55fa97f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Wed, 16 Oct 2024 09:30:10 +0800 Subject: [PATCH 29/43] =?UTF-8?q?=E5=8F=96=E6=B6=88=E6=A0=B8=E7=AE=97?= =?UTF-8?q?=E5=AF=BC=E5=85=A5vlookup=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../engine/salary/service/impl/SalaryAcctExcelServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java index 75b63245c..1dd3fbdc5 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java @@ -1125,7 +1125,7 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc // List> data = ExcelParseHelper.parse2Map(sheet, 1); List> data; // if (StringUtils.equals("importSalaryAcctResult", importType)) { - data = ExcelParseHelper.parse2Map(workbook, 0, 2, 1); + data = ExcelParseHelper.parse2Map(sheet, 2, 1); // } else { // data = ExcelParseHelper.parse2Map(sheet, 1); // } From e8559e1afa5c328dfb88edd56f9266fabf86a732 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Wed, 16 Oct 2024 09:41:55 +0800 Subject: [PATCH 30/43] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E7=A4=BE=E4=BF=9D?= =?UTF-8?q?=E7=A6=8F=E5=88=A9=E5=AF=BC=E5=85=A5=E6=8A=A5=E6=97=A0=E4=BA=BA?= =?UTF-8?q?=E5=91=98=20=EF=BC=88=E5=8E=86=E5=8F=B2=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E5=85=BC=E5=AE=B9bug=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/engine/salary/mapper/siarchives/FundSchemeMapper.xml | 2 +- src/com/engine/salary/mapper/siarchives/OtherSchemeMapper.xml | 2 +- src/com/engine/salary/mapper/siarchives/SocialSchemeMapper.xml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/com/engine/salary/mapper/siarchives/FundSchemeMapper.xml b/src/com/engine/salary/mapper/siarchives/FundSchemeMapper.xml index bb3e6b558..644a21d18 100644 --- a/src/com/engine/salary/mapper/siarchives/FundSchemeMapper.xml +++ b/src/com/engine/salary/mapper/siarchives/FundSchemeMapper.xml @@ -265,7 +265,7 @@ AND payment_organization = #{paymentOrganization} AND fund_scheme_id is not null AND fund_start_time is not null AND fund_start_time #{billMonth} - AND (fund_end_time is null OR fund_end_time = ]]> #{billMonth}) + AND (fund_end_time is null OR fund_end_time = ]]> #{billMonth} OR fund_end_time ='') + SELECT + + FROM hrsa_ly_fund_report t + WHERE delete_type = 0 + + + + + + + + + + + + INSERT INTO hrsa_ly_fund_report + + + + create_time, + + + creator, + + + data_sorce, + + + delete_type, + + + ftemp_num, + + + fwf, + + + fycdgsqc, + + + gjj_gjjhj, + + + gjj_grbf, + + + gjj_gsbf, + + + gjjffpz_flag, + + + gjjjtpz_flag, + + + gkgrygzhje, + + + gmgsqc, + + + id, + + + salary_month, + + + subcompany_id, + + + update_time, + + + znxmlx, + + + znxmmc, + + + + + #{createTime}, + + + #{creator}, + + + #{dataSorce}, + + + #{deleteType}, + + + #{ftempNum}, + + + #{fwf}, + + + #{fycdgsqc}, + + + #{gjjGjjhj}, + + + #{gjjGrbf}, + + + #{gjjGsbf}, + + + #{gjjffpzFlag}, + + + #{gjjjtpzFlag}, + + + #{gkgrygzhje}, + + + #{gmgsqc}, + + + #{id}, + + + #{salaryMonth}, + + + #{subcompanyId}, + + + #{updateTime}, + + + #{znxmlx}, + + + #{znxmmc}, + + + + + + + UPDATE hrsa_ly_fund_report + + create_time=#{createTime}, + creator=#{creator}, + data_sorce=#{dataSorce}, + delete_type=#{deleteType}, + ftemp_num=#{ftempNum}, + fwf=#{fwf}, + fycdgsqc=#{fycdgsqc}, + gjj_gjjhj=#{gjjGjjhj}, + gjj_grbf=#{gjjGrbf}, + gjj_gsbf=#{gjjGsbf}, + gjjffpz_flag=#{gjjffpzFlag}, + gjjjtpz_flag=#{gjjjtpzFlag}, + gkgrygzhje=#{gkgrygzhje}, + gmgsqc=#{gmgsqc}, + salary_month=#{salaryMonth}, + subcompany_id=#{subcompanyId}, + update_time=#{updateTime}, + znxmlx=#{znxmlx}, + znxmmc=#{znxmmc}, + + WHERE id = #{id} AND delete_type = 0 + + + + + + UPDATE hrsa_ly_fund_report + + + create_time=#{createTime}, + + + creator=#{creator}, + + + data_sorce=#{dataSorce}, + + + delete_type=#{deleteType}, + + + ftemp_num=#{ftempNum}, + + + fwf=#{fwf}, + + + fycdgsqc=#{fycdgsqc}, + + + gjj_gjjhj=#{gjjGjjhj}, + + + gjj_grbf=#{gjjGrbf}, + + + gjj_gsbf=#{gjjGsbf}, + + + gjjffpz_flag=#{gjjffpzFlag}, + + + gjjjtpz_flag=#{gjjjtpzFlag}, + + + gkgrygzhje=#{gkgrygzhje}, + + + gmgsqc=#{gmgsqc}, + + + salary_month=#{salaryMonth}, + + + subcompany_id=#{subcompanyId}, + + + update_time=#{updateTime}, + + + znxmlx=#{znxmlx}, + + + znxmmc=#{znxmmc}, + + + WHERE id = #{id} AND delete_type = 0 + + + + + + UPDATE hrsa_ly_fund_report + SET delete_type=1 + WHERE id = #{id} AND delete_type = 0 + + + UPDATE hrsa_ly_fund_report + SET delete_type=1 + WHERE delete_type = 0 + AND id IN + + #{id} + + + + + \ No newline at end of file diff --git a/src/com/engine/salary/service/LyFundReportService.java b/src/com/engine/salary/service/LyFundReportService.java new file mode 100644 index 000000000..b11c7fb62 --- /dev/null +++ b/src/com/engine/salary/service/LyFundReportService.java @@ -0,0 +1,112 @@ +package com.engine.salary.service; + +import com.engine.salary.entity.ly.param.LySalaryReportQueryParam; +import com.engine.salary.entity.ly.po.LyFundReportPO; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; + +import java.util.List; +import java.util.Map; + +/** + * @author Harryxzy + * @ClassName LyFundReportService + * @date 2024/10/18 17:07 + * @description + */ +public interface LyFundReportService { + + /** + * 查询所有记录 + * + * @return 返回集合,没有返回空List + */ + List listAll(); + + + /** + * 根据主键查询 + * + * @param id 主键 + * @return 返回记录,没有返回null + */ + LyFundReportPO getById(Long id); + + /** + * 新增,忽略null字段 + * + * @param lySocialReport 新增的记录 + * @return 返回影响行数 + */ + int insertIgnoreNull(LyFundReportPO lySocialReport); + + /** + * 修改,修改所有字段 + * + * @param lySocialReport 修改的记录 + * @return 返回影响行数 + */ + int update(LyFundReportPO lySocialReport); + + /** + * 修改,忽略null字段 + * + * @param lySocialReport 修改的记录 + * @return 返回影响行数 + */ + int updateIgnoreNull(LyFundReportPO lySocialReport); + + /** + * 删除记录 + * + * @param lySocialReport 待删除的记录 + * @return 返回影响行数 + */ + int delete(LyFundReportPO lySocialReport); + + /** + * 生成报表数据 + * + * @param param + */ + void generateFundReport(LySalaryReportQueryParam param); + + /** + * 查询社保公积金汇总报表 + * + * @param param + * @return + */ + Map listFundReport(LySalaryReportQueryParam param); + + /** + * 社保公积金汇总报表 合计行 + * + * @param param + * @return + */ + LyFundReportPO sumRow(LySalaryReportQueryParam param); + + /** + * 删除数据 + * + * @param siReportIds + */ + void deleteFundReport(List siReportIds); + + /** + * 公积金汇总报表导出 + * + * @param param + * @return + */ + XSSFWorkbook exportFundReport(LySalaryReportQueryParam param); + + List getByIds(List ids); + + /** + * 社保公积金购买公司下拉框list + * @param queryParam + * @return + */ + List> fundReportGmgsList(LySalaryReportQueryParam queryParam); +} diff --git a/src/com/engine/salary/service/impl/LyFundReportServiceImpl.java b/src/com/engine/salary/service/impl/LyFundReportServiceImpl.java new file mode 100644 index 000000000..a345a0db6 --- /dev/null +++ b/src/com/engine/salary/service/impl/LyFundReportServiceImpl.java @@ -0,0 +1,587 @@ +package com.engine.salary.service.impl; + +import com.engine.common.util.ServiceUtil; +import com.engine.core.impl.Service; +import com.engine.salary.common.LocalDateRange; +import com.engine.salary.component.WeaTableColumnGroup; +import com.engine.salary.entity.datacollection.DataCollectionEmployee; +import com.engine.salary.entity.ly.param.LySalaryReportQueryParam; +import com.engine.salary.entity.ly.po.LyFundReportPO; +import com.engine.salary.entity.salaryacct.bo.SalaryAcctFormulaBO; +import com.engine.salary.entity.salaryacct.po.SalaryAcctEmployeePO; +import com.engine.salary.entity.salaryacct.po.SalaryAcctRecordPO; +import com.engine.salary.entity.salaryacct.po.SalaryAcctResultPO; +import com.engine.salary.entity.salaryitem.po.SalaryItemPO; +import com.engine.salary.entity.salarysob.po.SalarySobEmpFieldPO; +import com.engine.salary.entity.salarysob.po.SalarySobItemPO; +import com.engine.salary.entity.taxagent.po.TaxAgentPO; +import com.engine.salary.enums.UserStatusEnum; +import com.engine.salary.enums.salaryaccounting.SalaryAcctRecordStatusEnum; +import com.engine.salary.enums.salaryitem.SalaryDataTypeEnum; +import com.engine.salary.exception.SalaryRunTimeException; +import com.engine.salary.mapper.ly.LyFundReportMapper; +import com.engine.salary.service.*; +import com.engine.salary.util.SalaryDateUtil; +import com.engine.salary.util.SalaryEntityUtil; +import com.engine.salary.util.SalaryI18nUtil; +import com.engine.salary.util.db.IdGenerator; +import com.engine.salary.util.db.MapperProxyFactory; +import com.engine.salary.util.excel.ExcelUtilPlus; +import com.engine.salary.util.page.PageInfo; +import com.engine.salary.util.page.SalaryPageUtil; +import com.google.common.collect.Lists; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.apache.commons.lang3.math.NumberUtils; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import weaver.general.BaseBean; +import weaver.hrm.User; + +import java.math.BigDecimal; +import java.util.*; +import java.util.stream.Collectors; + +/** + * @author Harryxzy + * @ClassName LyFundReportServiceImpl + * @date 2024/10/18 15:10 + * @description + */ +public class LyFundReportServiceImpl extends Service implements LyFundReportService { + + private LyFundReportMapper getLyFundReportMapper() { + return MapperProxyFactory.getProxy(LyFundReportMapper.class); + } + + private SalaryAcctRecordService getSalaryAcctRecordService(User user) { + return ServiceUtil.getService(SalaryAcctRecordServiceImpl.class, user); + } + + private SalaryAcctEmployeeService getSalaryAcctEmployeeService(User user) { + return ServiceUtil.getService(SalaryAcctEmployeeServiceImpl.class, user); + } + + private SalaryItemService getSalaryItemService(User user) { + return (SalaryItemService) ServiceUtil.getService(SalaryItemServiceImpl.class, user); + } + + private SalaryAcctResultService getSalaryAcctResultService(User user) { + return ServiceUtil.getService(SalaryAcctResultServiceImpl.class, user); + } + + private SalaryEmployeeService getSalaryEmployeeService(User user) { + return ServiceUtil.getService(SalaryEmployeeServiceImpl.class, user); + } + + + private TaxAgentService getTaxAgentService(User user) { + return ServiceUtil.getService(TaxAgentServiceImpl.class, user); + } + + private LySalaryReportService getLySalaryReportService(User user) { + return ServiceUtil.getService(LySalaryReportServiceImpl.class, user); + } + + @Override + public List listAll() { + return getLyFundReportMapper().listAll(); + } + + @Override + public LyFundReportPO getById(Long id) { + if (id == null) { + return null; + } + return getLyFundReportMapper().getById(id); + } + + @Override + public int insertIgnoreNull(LyFundReportPO lyFundReport) { + if (lyFundReport != null) { + return getLyFundReportMapper().insertIgnoreNull(lyFundReport); + } + return 0; + } + + @Override + public int update(LyFundReportPO lyFundReport) { + if (lyFundReport != null && lyFundReport.getId() != null) { + return getLyFundReportMapper().update(lyFundReport); + } + return 0; + } + + @Override + public int updateIgnoreNull(LyFundReportPO lyFundReport) { + if (lyFundReport != null && lyFundReport.getId() != null) { + return getLyFundReportMapper().updateIgnoreNull(lyFundReport); + } + return 0; + } + + @Override + public int delete(LyFundReportPO lyFundReport) { + return getLyFundReportMapper().delete(lyFundReport); + } + + public List listBySalaryMonth(Date salaryMonth) { + if (salaryMonth == null) { + return Collections.emptyList(); + } + return getLyFundReportMapper().listSome(LyFundReportPO.builder().salaryMonth(salaryMonth).build()); + } + + @Override + public void generateFundReport(LySalaryReportQueryParam param) { + if (StringUtils.isBlank(param.getSalaryMonth())) { + throw new SalaryRunTimeException("薪资所属月参数不能为空"); + } + Date salaryMonthDate = SalaryDateUtil.dateStrToLocalYearMonth(param.getSalaryMonth()); + if (salaryMonthDate == null) { + throw new SalaryRunTimeException("薪资所属月参数格式错误"); + } + param.setSalaryMonthDate(salaryMonthDate); + + // 获取本月是否已有报表数据 + List lySocialReportPOS = listBySalaryMonth(salaryMonthDate); + if (CollectionUtils.isNotEmpty(lySocialReportPOS)) { + throw new SalaryRunTimeException("本薪资所属月已生成公积金汇总报表,无法生成公积金汇总报表数据"); + } + BaseBean baseBean = new BaseBean(); + + // 获取薪资核算结果 + List salaryAcctRecordList = getSalaryAcctRecordService(user).listBySalaryMonth(LocalDateRange.builder().fromDate(salaryMonthDate).endDate(salaryMonthDate).build()); + // 过滤账套及状态 + // List salarySobIds = Arrays.stream(baseBean.getPropValue("lySalaryNCReport", "salary_sob_ids").split(",")).filter(NumberUtils::isCreatable).map(Long::valueOf).collect(Collectors.toList()); + // salaryAcctRecordList = salaryAcctRecordList.stream().filter(record -> salarySobIds.contains(record.getSalarySobId()) && record.getStatus() > SalaryAcctRecordStatusEnum.NOT_ARCHIVED.getValue()).collect(Collectors.toList()); + salaryAcctRecordList = salaryAcctRecordList.stream().filter(record -> record.getStatus() > SalaryAcctRecordStatusEnum.NOT_ARCHIVED.getValue()).collect(Collectors.toList()); + + if (CollectionUtils.isNotEmpty(salaryAcctRecordList)) { + List salaryAcctRecordIds = salaryAcctRecordList.stream().map(SalaryAcctRecordPO::getId).collect(Collectors.toList()); + // 获取薪资核算人员 + List salaryAcctEmployeePOList = getSalaryAcctEmployeeService(user).listBySalaryAcctRecordIds(salaryAcctRecordIds); + if (CollectionUtils.isNotEmpty(salaryAcctEmployeePOList)) { + String dataSourceStr = StringUtils.join(salaryAcctRecordIds, ","); + // 获取薪资项目id + List salaryItemIds = new ArrayList<>(); + // 职能项目类型 + Long znxmlxItemId = getPropLongValue(baseBean, "lySalaryNCReport", "fund_znxmlx_item_id"); + salaryItemIds.add(znxmlxItemId); + // 购买公司全称 + Long gmgsqcItemId = getPropLongValue(baseBean, "lySalaryNCReport", "fund_gmgsqc_item_id"); + salaryItemIds.add(gmgsqcItemId); + // 费用承担公司全称 + Long fycdgsqcItemId = getPropLongValue(baseBean, "lySalaryNCReport", "fund_fycdgsqc_item_id"); + salaryItemIds.add(fycdgsqcItemId); + // 职能/项目名称 + Long znxmmcItemId = getPropLongValue(baseBean, "lySalaryNCReport", "fund_znxmmc_item_id"); + salaryItemIds.add(znxmmcItemId); + // 公积金-公司部分 + Long gjjgsbfItemId = getPropLongValue(baseBean, "lySalaryNCReport", "social_gjj_gsbf_item_id"); + salaryItemIds.add(gjjgsbfItemId); + // 公积金-个人部分 + Long gjjgrbfItemId = getPropLongValue(baseBean, "lySalaryNCReport", "social_gjj_grbf_item_id"); + salaryItemIds.add(gjjgrbfItemId); + // 公积金-公积金合计 + Long gjjgjjhjItemId = getPropLongValue(baseBean, "lySalaryNCReport", "social_gjj_gjjhj_item_id"); + salaryItemIds.add(gjjgjjhjItemId); + // 服务费 + Long fwfItemId = getPropLongValue(baseBean, "lySalaryNCReport", "social_fwf_item_id"); + salaryItemIds.add(fwfItemId); + + List salaryItemList = getSalaryItemService(user).listByIds(salaryItemIds); + salaryItemIds = salaryItemList.stream().map(SalaryItemPO::getId).collect(Collectors.toList()); + List salaryAcctEmpIds = salaryAcctEmployeePOList.stream().map(SalaryAcctEmployeePO::getId).collect(Collectors.toList()); + // 获取薪资核算结果 + List acctResultList = getSalaryAcctResultService(user).listByAcctEmployeeIdsAndSalaryItemIds(salaryAcctEmpIds, salaryItemIds); + List salarySobEmpFields = new ArrayList<>(); + salarySobEmpFields.add(SalarySobEmpFieldPO.builder().fieldCode("subcompanyId").build()); + List> resultMapList = buildData4LyReport(salaryItemList, salaryAcctEmployeePOList, salarySobEmpFields, acctResultList, false); + // + Map>> resultGroup = SalaryEntityUtil.group2Map(resultMapList, map -> (map.get(gmgsqcItemId.toString()) == null ? " " : map.get(gmgsqcItemId.toString()).toString()) + + "-split" + (map.get(fycdgsqcItemId.toString()) == null ? " " : map.get(fycdgsqcItemId.toString()).toString()) + + "-split" + (map.get(znxmmcItemId.toString()) == null ? " " : map.get(znxmmcItemId.toString()).toString())); + List numberItems = salaryItemList.stream().filter(item -> item.getDataType().equals(SalaryDataTypeEnum.NUMBER.getValue())).collect(Collectors.toList()); + LinkedHashMap> resultMap = getSumResultByGroup(resultGroup, Collections.emptyList(), numberItems, znxmlxItemId); + + // 排序 - 根据key排序 + LinkedHashMap> sortedMap = new LinkedHashMap<>(); + resultMap.entrySet().stream().sorted(Map.Entry.comparingByKey()).forEachOrdered(x -> sortedMap.put(x.getKey(), x.getValue())); + resultMap = sortedMap; + Date now = new Date(); + resultMap.forEach((key,valueMap) -> { + String[] split = key.split("-split"); + String gmgsqc = split.length > 0 ? split[0] : ""; + String fycdgsqc = split.length > 1 ? split[1] : ""; + String znxmmc = split.length > 2 ? split[2] : ""; + valueMap.put("gmgsqc", gmgsqc); + valueMap.put("fycdgsqc",fycdgsqc); + valueMap.put("znxmmc",znxmmc); + + LyFundReportPO build = LyFundReportPO.builder() + .id(IdGenerator.generate()) + .subcompanyId(Long.valueOf(valueMap.getOrDefault("subcompanyId","0").toString())) + .ftempNum(Integer.valueOf(valueMap.getOrDefault("empNums", "0").toString())) + .salaryMonth(salaryMonthDate) + .znxmlx(valueMap.getOrDefault(znxmlxItemId.toString(), "").toString()) + .gmgsqc(gmgsqc) + .fycdgsqc(fycdgsqc) + .znxmmc(znxmmc) + .ftempNum(Integer.valueOf(valueMap.getOrDefault("empNums", "0").toString())) + .gjjGsbf(valueMap.getOrDefault(gjjgsbfItemId.toString(), "0").toString()) + .gjjGrbf(valueMap.getOrDefault(gjjgrbfItemId.toString(), "0").toString()) + .gjjGjjhj(valueMap.getOrDefault(gjjgjjhjItemId.toString(), "0").toString()) + .fwf(valueMap.getOrDefault(fwfItemId.toString(), "0").toString()) + .gkgrygzhje("") + .dataSorce(dataSourceStr) + .gjjjtpzFlag(0) + .gjjffpzFlag(0) + .creator(Long.valueOf(user.getUID())) + .createTime(now) + .updateTime(now) + .deleteType(0) + .build(); + getLyFundReportMapper().insertIgnoreNull(build); + }); + } + } + + } + + + List> buildData4LyReport(List salaryItemList, List salaryAcctEmployeeList, List salarySobEmpFields, List salaryAcctResult, boolean dynamicEmpInfo) { + List empIds = salaryAcctEmployeeList.stream().map(SalaryAcctEmployeePO::getEmployeeId).distinct().collect(Collectors.toList()); + List employeeList = getSalaryEmployeeService(user).listByIds(empIds); + List taxAgentPOS = getTaxAgentService(user).listAll(); + return buildData4Ly(salaryItemList, salarySobEmpFields, employeeList, salaryAcctEmployeeList, salaryAcctResult, taxAgentPOS, dynamicEmpInfo); + } + + public static List> buildData4Ly(List salaryItems, + List salarySobEmpFields, + List simpleEmployees, + List salaryAcctEmployees, + List salaryAccountingResults, + List taxAgents, + boolean dynamicEmpInfo) { + if (CollectionUtils.isEmpty(salaryAcctEmployees)) { + return Collections.emptyList(); + } + SalaryI18nUtil.i18nList(salaryAcctEmployees); + Map employeeMap = SalaryEntityUtil.convert2Map(simpleEmployees, DataCollectionEmployee::getEmployeeId); + Map> acctResultMap = SalaryEntityUtil.group2Map(salaryAccountingResults, SalaryAcctResultPO::getSalaryAcctEmpId); + Map taxAgentNameMap = SalaryEntityUtil.convert2Map(taxAgents, TaxAgentPO::getId, TaxAgentPO::getName); + return salaryAcctEmployees.stream().map(e -> { + Map resultValueMap = SalaryEntityUtil.convert2Map(acctResultMap.getOrDefault(e.getId(), Collections.emptyList()), + SalaryAcctResultPO::getSalaryItemId, SalaryAcctResultPO::getResultValue); + // 薪资项目的值 + Map map = SalaryEntityUtil.convert2Map(salaryItems, o -> "" + o.getId(), o -> resultValueMap.getOrDefault(o.getId(), StringUtils.EMPTY)); + // 人员信息字段的值 + Map fieldValueMap = SalaryAcctFormulaBO.convert2FormulaEmployee(employeeMap.get(e.getEmployeeId()), e, true); + for (SalarySobEmpFieldPO salarySobEmpField : salarySobEmpFields) { + // 员工信息字段的字段类型 + if (dynamicEmpInfo) { + map.put(salarySobEmpField.getFieldCode(), fieldValueMap.get(salarySobEmpField.getFieldCode())); + } else { + if ("departmentName".equals(salarySobEmpField.getFieldCode())) { + map.put("departmentName", e.getDepartmentName()); + } else if ("departmentId".equals(salarySobEmpField.getFieldCode())) { + map.put("departmentId", e.getDepartmentId()); + } else if ("subcompanyName".equals(salarySobEmpField.getFieldCode())) { + map.put("subcompanyName", e.getSubcompanyName()); + } else if ("subcompanyId".equals(salarySobEmpField.getFieldCode())) { + map.put("subcompanyId", e.getSubcompanyId()); + } else if ("jobcall".equals(salarySobEmpField.getFieldCode())) { + map.put("jobcall", e.getJobcall()); + } else if ("jobcallId".equals(salarySobEmpField.getFieldCode())) { + map.put("jobcallId", e.getJobcallId()); + } else if ("jobtitleName".equals(salarySobEmpField.getFieldCode())) { + map.put("jobtitleName", e.getJobtitleName()); + } else if ("jobtitleId".equals(salarySobEmpField.getFieldCode())) { + map.put("jobtitleId", e.getJobtitleId()); + } else if ("status".equals(salarySobEmpField.getFieldCode())) { + map.put("status", e.getStatus()); + } else if ("statusName".equals(salarySobEmpField.getFieldCode())) { + map.put("statusName", UserStatusEnum.getDefaultLabelByValue(new Integer(e.getStatus()))); + } else { + map.put(salarySobEmpField.getFieldCode(), fieldValueMap.get(salarySobEmpField.getFieldCode())); + } + } + map.put(salarySobEmpField.getFieldCode() + "_type", SalaryDataTypeEnum.STRING.getValue()); + } + // 主键id + map.put("id", e.getId()); + //人员id + map.put("employeeId", e.getEmployeeId()); + map.put("userName", fieldValueMap.get("username")); + // 个税扣缴义务人 + String taxAgentName = taxAgentNameMap.getOrDefault(e.getTaxAgentId(), StringUtils.EMPTY); + map.put("taxAgentName", taxAgentName); + map.put("taxAgentId", e.getTaxAgentId()); + return map; + }).collect(Collectors.toList()); + } + + + private LinkedHashMap> getSumResultByGroup(Map>> groupBy, + List salarySobItemPOS, + List numberItems, + Long znxmlxItemId) { + LinkedHashMap> result = new LinkedHashMap<>(); + // 本次薪资核算所用的薪资账套下的薪资项目 + Map salaryItemIdKeySalarySobItemPOMap = SalaryEntityUtil.convert2Map(salarySobItemPOS, SalarySobItemPO::getSalaryItemId); + for(Map.Entry>> entrySet : groupBy.entrySet()){ + // 每个分类中的核算数据 + List> value = entrySet.getValue(); + + Map itemSum = new HashMap<>(); + numberItems.forEach(item -> { + List itemValue = value.stream().filter(v -> v.get(item.getId().toString()) != null).map(v -> (String)v.get(item.getId().toString())).collect(Collectors.toList()); + BigDecimal sum = itemValue + .stream() + .filter(NumberUtils::isCreatable) + .map(BigDecimal::new) + .reduce(BigDecimal.ZERO, BigDecimal::add); + itemSum.put( item.getId().toString(), SalaryAcctFormulaBO.roundResultValue(sum.toString(), item, Collections.emptyList(), Collections.emptyMap(), salaryItemIdKeySalarySobItemPOMap) ); + }); + itemSum.put("empNums", entrySet.getValue().size()); + itemSum.put("userName", CollectionUtils.isEmpty(value) ? "" : value.get(0).get("userName")); + itemSum.put("employeeId", CollectionUtils.isEmpty(value) ? "" : value.get(0).get("employeeId")); + itemSum.put("subcompanyId", CollectionUtils.isEmpty(value) ? "" : value.get(0).get("subcompanyId") == null ? "0" : value.get(0).get("subcompanyId")); + if (znxmlxItemId != null) { + Map map = value.get(0); + String znxmlx = map.get(znxmlxItemId.toString()) == null ? "" : map.get(znxmlxItemId.toString()).toString(); + itemSum.put(znxmlxItemId.toString(), znxmlx); + } + + result.put(entrySet.getKey(), itemSum); + } + return result; + } + + + private Long getPropLongValue (BaseBean baseBean, String propFileName, String key ){ + return NumberUtils.isCreatable(baseBean.getPropValue(propFileName, key)) + ? Long.valueOf(baseBean.getPropValue(propFileName, key)) : 0L; + } + + @Override + public Map listFundReport(LySalaryReportQueryParam param) { + if (StringUtils.isBlank(param.getSalaryMonth())) { + throw new SalaryRunTimeException("薪资所属月参数不能为空"); + } + Date salaryMonthDate = SalaryDateUtil.dateStrToLocalYearMonth(param.getSalaryMonth()); + if (salaryMonthDate == null) { + throw new SalaryRunTimeException("薪资所属月参数格式错误"); + } + param.setSalaryMonthDate(salaryMonthDate); + + // 获取本月是否已有报表数据 + List lyFundReportPOS = listBySalaryMonth(salaryMonthDate); + if (CollectionUtils.isNotEmpty(param.getFfgsqc())) { + lyFundReportPOS = lyFundReportPOS.stream().filter(lySalaryReportPO -> param.getFfgsqc().contains(lySalaryReportPO.getGmgsqc())).collect(Collectors.toList()); + } + // 分权 + // 是否是薪酬总管理员 + boolean isChief = getTaxAgentService(user).isChief((long) user.getUID()); + if (!isChief) { + List canManageFrztByUid = getLySalaryReportService(user).getCanManageFrztByUid(user); + lyFundReportPOS = lyFundReportPOS.stream().filter(po -> canManageFrztByUid.contains(po.getGmgsqc())).collect(Collectors.toList()); + } + PageInfo pageInfo = SalaryPageUtil.buildPage(param.getCurrent(), param.getPageSize()); + if (param.isExport()) { + // 是导出 + pageInfo.setList(lyFundReportPOS); + } else { + pageInfo.setTotal(lyFundReportPOS.size()); + pageInfo.setList(SalaryPageUtil.subList(param.getCurrent(), param.getPageSize(), lyFundReportPOS)); + } + pageInfo.getList().stream().forEach(po -> { + po.setGjjffpzFlagStr((po.getGjjffpzFlag() != null && po.getGjjffpzFlag().equals(NumberUtils.INTEGER_ONE)) ? "已推送" : "未推送"); + po.setGjjjtpzFlagStr((po.getGjjjtpzFlag() != null && po.getGjjjtpzFlag().equals(NumberUtils.INTEGER_ONE)) ? "已推送" : "未推送"); + }); + List columns = new ArrayList<>(); + columns.add(new WeaTableColumnGroup("150px", "购买公司全称", "gmgsqc")); + columns.add(new WeaTableColumnGroup("150px", "分摊人数", "ftempNum")); + columns.add(new WeaTableColumnGroup("150px", "费用承担公司全称", "fycdgsqc")); + columns.add(new WeaTableColumnGroup("150px", "职能/项目名称", "znxmmc")); + columns.add(new WeaTableColumnGroup("150px", "费用所属期", "salaryMonth")); + columns.add(new WeaTableColumnGroup("150px", "计提状态", "gjjjtpzFlagStr")); + columns.add(new WeaTableColumnGroup("150px", "发放状态", "gjjffpzFlagStr")); + + WeaTableColumnGroup gjjGroup = new WeaTableColumnGroup("150px", "公积金", "公积金"); + List gjjChildList = new ArrayList<>(); + gjjChildList.add(new WeaTableColumnGroup("150px", "公司部分", "gjjGsbf")); + gjjChildList.add(new WeaTableColumnGroup("150px", "个人部分", "gjjGrbf")); + gjjChildList.add(new WeaTableColumnGroup("150px", "公积金合计", "gjjGjjhj")); + gjjGroup.setChildren(gjjChildList); + columns.add(gjjGroup); + + columns.add(new WeaTableColumnGroup("150px", "服务费", "fwf")); + columns.add(new WeaTableColumnGroup("150px", "挂靠个人应该转回金额", "gkgrygzhje")); + + Map resultMap = new HashMap<>(); + resultMap.put("data", pageInfo); + resultMap.put("columns", columns); + // 导出包含合计行 + if(param.isExport()) { + LyFundReportPO sumData = buildSumData(pageInfo.getList()); + resultMap.put("sum", sumData); + } + return resultMap; + } + + @Override + public LyFundReportPO sumRow(LySalaryReportQueryParam param) { + if (StringUtils.isBlank(param.getSalaryMonth())) { + throw new SalaryRunTimeException("薪资所属月参数不能为空"); + } + Date salaryMonthDate = SalaryDateUtil.dateStrToLocalYearMonth(param.getSalaryMonth()); + if (salaryMonthDate == null) { + throw new SalaryRunTimeException("薪资所属月参数格式错误"); + } + param.setSalaryMonthDate(salaryMonthDate); + + // 获取本月是否已有报表数据 + List lyFundReportPOS = listBySalaryMonth(salaryMonthDate); + if (CollectionUtils.isNotEmpty(param.getFfgsqc())) { + lyFundReportPOS = lyFundReportPOS.stream().filter(lySalaryReportPO -> param.getFfgsqc().contains(lySalaryReportPO.getGmgsqc())).collect(Collectors.toList()); + } + + // 分权 + // 是否是薪酬总管理员 + boolean isChief = getTaxAgentService(user).isChief((long) user.getUID()); + if (!isChief) { + List canManageFrztByUid = getLySalaryReportService(user).getCanManageFrztByUid(user); + lyFundReportPOS = lyFundReportPOS.stream().filter(po -> canManageFrztByUid.contains(po.getGmgsqc())).collect(Collectors.toList()); + } + return buildSumData(lyFundReportPOS); + } + + + private LyFundReportPO buildSumData (List lyFundReportPOS ) { + Map map = new HashMap<>(); + lyFundReportPOS.stream().forEach(reportPO -> { + BigDecimal empNum = reportPO.getFtempNum() == null ? BigDecimal.ZERO : new BigDecimal(reportPO.getFtempNum()) ; + map.put("empNum" ,map.getOrDefault("empNum", BigDecimal.valueOf(0)).add(empNum)); + BigDecimal gjjGsbf = NumberUtils.isCreatable(reportPO.getGjjGsbf()) ? new BigDecimal(reportPO.getGjjGsbf()) : BigDecimal.ZERO; + map.put("gjjGsbf" ,map.getOrDefault("gjjGsbf", BigDecimal.valueOf(0)).add(gjjGsbf)); + BigDecimal gjjGrbf = NumberUtils.isCreatable(reportPO.getGjjGrbf()) ? new BigDecimal(reportPO.getGjjGrbf()) : BigDecimal.ZERO; + map.put("gjjGrbf" ,map.getOrDefault("gjjGrbf", BigDecimal.valueOf(0)).add(gjjGrbf)); + BigDecimal gjjGjjhj = NumberUtils.isCreatable(reportPO.getGjjGjjhj()) ? new BigDecimal(reportPO.getGjjGjjhj()) : BigDecimal.ZERO; + map.put("gjjGjjhj" ,map.getOrDefault("gjjGjjhj", BigDecimal.valueOf(0)).add(gjjGjjhj)); + BigDecimal fwf = NumberUtils.isCreatable(reportPO.getFwf()) ? new BigDecimal(reportPO.getFwf()) : BigDecimal.ZERO; + map.put("fwf" ,map.getOrDefault("fwf", BigDecimal.valueOf(0)).add(fwf)); + }); + + return LyFundReportPO.builder() + .ftempNum(map.getOrDefault("empNum", BigDecimal.ZERO).intValue()) + .gjjGsbf(map.getOrDefault("gjjGsbf", BigDecimal.valueOf(0)).toString()) + .gjjGrbf(map.getOrDefault("gjjGrbf", BigDecimal.valueOf(0)).toString()) + .gjjGjjhj(map.getOrDefault("gjjGjjhj", BigDecimal.valueOf(0)).toString()) + .fwf(map.getOrDefault("fwf", BigDecimal.valueOf(0)).toString()) + .build(); + } + + @Override + public void deleteFundReport(List fundReportIds) { + if (CollectionUtils.isEmpty(fundReportIds)) { + return; + } + List lyFundReportPOS = getLyFundReportMapper().listSome(LyFundReportPO.builder().ids(fundReportIds).build()); + List canNotDeleteList = lyFundReportPOS.stream().filter(report -> report.getGjjjtpzFlag().equals(NumberUtils.INTEGER_ONE) || report.getGjjffpzFlag().equals(NumberUtils.INTEGER_ONE)).collect(Collectors.toList()); + + if (CollectionUtils.isNotEmpty(canNotDeleteList)) { + throw new SalaryRunTimeException("当前所选记录中,已生成凭证数据,请联系系统管理员删除相关数据"); + } + deleteByIds(fundReportIds); + } + + private void deleteByIds (List ids) { + if (CollectionUtils.isEmpty(ids)) { + return; + } + getLyFundReportMapper().deleteByIds(ids); + } + + @Override + public XSSFWorkbook exportFundReport(LySalaryReportQueryParam param) { + param.setExport(true); + Map resultMap = listFundReport(param); + List dataList = ((PageInfo)resultMap.get("data")).getList(); + List columns = (List)resultMap.get("columns"); + LyFundReportPO sum = (LyFundReportPO)resultMap.get("sum"); + sum.setGmgsqc("合计"); + dataList.add(sum); + + List headerList = new ArrayList<>(columns); + List> rows = new ArrayList<>(); + rows.add(headerList); + + for (LyFundReportPO lySocialReportPO : dataList) { + List row = Lists.newArrayList(); + row.add(lySocialReportPO.getGmgsqc() == null ? "" : lySocialReportPO.getGmgsqc().toString()); + row.add(lySocialReportPO.getFtempNum() == null ? "" : lySocialReportPO.getFtempNum().toString()); + row.add(lySocialReportPO.getFycdgsqc() == null ? "" : lySocialReportPO.getFycdgsqc().toString()); + row.add(lySocialReportPO.getZnxmmc() == null ? "" : lySocialReportPO.getZnxmmc().toString()); + row.add(param.getSalaryMonth()); + row.add(lySocialReportPO.getGjjGsbf() == null ? "" : lySocialReportPO.getGjjGsbf()); + row.add(lySocialReportPO.getGjjGrbf() == null ? "" : lySocialReportPO.getGjjGrbf()); + row.add(lySocialReportPO.getGjjGjjhj() == null ? "" : lySocialReportPO.getGjjGjjhj()); + row.add(lySocialReportPO.getFwf() == null ? "" : lySocialReportPO.getFwf()); + rows.add(row); + } + + //获取excel + return ExcelUtilPlus.genWorkbookWithChildTitleColumn(rows, "公积金统计报表", true); + } + + @Override + public List getByIds(List ids) { + if (CollectionUtils.isNotEmpty(ids)) { + List> partition = Lists.partition(ids, 1000); + List resultList = new ArrayList<>(); + partition.forEach(part -> { + resultList.addAll(getLyFundReportMapper().listSome(LyFundReportPO.builder().ids(part).build())); + }); + return resultList; + } else { + return Collections.emptyList(); + } + } + + @Override + public List> fundReportGmgsList(LySalaryReportQueryParam param) { + if (StringUtils.isBlank(param.getSalaryMonth())) { + throw new SalaryRunTimeException("薪资所属月参数不能为空"); + } + Date salaryMonthDate = SalaryDateUtil.dateStrToLocalYearMonth(param.getSalaryMonth()); + if (salaryMonthDate == null) { + throw new SalaryRunTimeException("薪资所属月参数格式错误"); + } + param.setSalaryMonthDate(salaryMonthDate); + + // 获取本月是否已有报表数据 + List lyFundReportPOS = listBySalaryMonth(salaryMonthDate); + if (CollectionUtils.isNotEmpty(param.getFfgsqc())) { + lyFundReportPOS = lyFundReportPOS.stream().filter(lySalaryReportPO -> param.getFfgsqc().contains(lySalaryReportPO.getGmgsqc())).collect(Collectors.toList()); + } + // 分权 + // 是否是薪酬总管理员 + boolean isChief = getTaxAgentService(user).isChief((long) user.getUID()); + if (!isChief) { + List canManageFrztByUid = getLySalaryReportService(user).getCanManageFrztByUid(user); + lyFundReportPOS = lyFundReportPOS.stream().filter(po -> canManageFrztByUid.contains(po.getGmgsqc())).collect(Collectors.toList()); + } + + // 获取所有能够管理的发放公司 + return lyFundReportPOS.stream() + .map(LyFundReportPO::getGmgsqc) + .distinct() + .map(m -> { + Map map = new HashMap<>(2); + map.put("id", String.valueOf(m)); + map.put("content", m); + return map; + }).collect(Collectors.toList()); + } +} diff --git a/src/com/engine/salary/service/impl/LyPZServiceImpl.java b/src/com/engine/salary/service/impl/LyPZServiceImpl.java index 215f4aeb3..f15ab2541 100644 --- a/src/com/engine/salary/service/impl/LyPZServiceImpl.java +++ b/src/com/engine/salary/service/impl/LyPZServiceImpl.java @@ -65,6 +65,10 @@ public class LyPZServiceImpl extends Service implements LyPZService { return ServiceUtil.getService(LySocialReportServiceImpl.class, user); } + private LyFundReportService getLyFundReportService(User user) { + return ServiceUtil.getService(LyFundReportServiceImpl.class, user); + } + private FormulaRunService getFormulaRunService(User user) { return ServiceUtil.getService(FormulaRunServiceImpl.class, user); } @@ -291,13 +295,15 @@ public class LyPZServiceImpl extends Service implements LyPZService { } List lyFzhsBrowserList = new ArrayList<>(); RecordSet rs = new RecordSet(); + BaseBean baseBean = new BaseBean(); + String fzhslxFieldId = baseBean.getPropValue("lySalaryNCVoucher", "fzhslx_field_id"); List> partition = Lists.partition(fzhsBmList, 500); partition.forEach(part -> { String bmIdStr = StringUtils.join(part, "','"); - rs.execute("SELECT fzhslx,fzhslxbh,bh,mc FROM uf_ncfuhs where bh in ('" + bmIdStr + "')"); + rs.execute("SELECT b.SELECTNAME,fzhslx,fzhslxbh,bh,mc FROM uf_ncfuhs a left join workflow_selectitem b on a.fzhslx= b.selectvalue where bh in ('" + bmIdStr + "') and fieldid= " +fzhslxFieldId ); while (rs.next()) { LyFzhsBrowser browser = new LyFzhsBrowser(); - browser.setFzhslx(LyPZTypeEnum.getDefaultLabelByValue(rs.getInt("fzhslx"))); + browser.setFzhslx(rs.getString("SELECTNAME")); browser.setBh(rs.getString("bh")); browser.setMc(rs.getString("mc")); browser.setFzhslxbh(rs.getString("fzhslxbh")); @@ -388,8 +394,8 @@ public class LyPZServiceImpl extends Service implements LyPZService { } formulaVarsList.add(formulaVars); } - } else { - // 是社保公积金凭证 + } else if (queryParam.getPzlx().equals(LyPZTypeEnum.SBJTPZ.getValue()) || queryParam.getPzlx().equals(LyPZTypeEnum.SBFFPZ.getValue())) { + // 是社保凭证 Map resultMap = getLySocialReportService(user).listSIReport(LySalaryReportQueryParam.builder().salaryMonth(queryParam.getSalaryMonth()).ffgsqc(Collections.singletonList(queryParam.getFfgsqc())).export(true).build()); List dataList = ((PageInfo)resultMap.get("data")).getList(); // 将每一个结果转换成map的格式并作为变量存储 @@ -410,6 +416,28 @@ public class LyPZServiceImpl extends Service implements LyPZService { } formulaVarsList.add(formulaVars); } + } else if (queryParam.getPzlx().equals(LyPZTypeEnum.GJJJTPZ.getValue()) || queryParam.getPzlx().equals(LyPZTypeEnum.GJJFFPZ.getValue())) { + // 是公积金凭证 + Map resultMap = getLyFundReportService(user).listFundReport(LySalaryReportQueryParam.builder().salaryMonth(queryParam.getSalaryMonth()).ffgsqc(Collections.singletonList(queryParam.getFfgsqc())).export(true).build()); + List dataList = ((PageInfo)resultMap.get("data")).getList(); + // 将每一个结果转换成map的格式并作为变量存储 + for (LyFundReportPO po : dataList) { + reportDataIds.add(po.getId()); + Map dataMap = BeanUtil.beanToMap(po); + List formulaVars = new ArrayList<>(); + for (Map.Entry entry : dataMap.entrySet()) { + FormulaVar build = FormulaVar.builder() + .fieldId(entry.getKey()) + .content(Util.null2String(entry.getValue())) + .fieldType(DataType.NUMBER) + .build(); + if(entry.getKey().equals("ffgsqc") || entry.getKey().equals("fycdgsqc") || entry.getKey().equals("znxmmc")) { + build.setFieldType(DataType.STRING); + } + formulaVars.add(build); + } + formulaVarsList.add(formulaVars); + } } return formulaVarsList; } @@ -629,20 +657,25 @@ public class LyPZServiceImpl extends Service implements LyPZService { } getLySalaryReportService(user).update(po); }); - } else if (pushParam.getPzlx().equals(LyPZTypeEnum.SBJTPZ.getValue()) || pushParam.getPzlx().equals(LyPZTypeEnum.SBFFPZ.getValue()) - || pushParam.getPzlx().equals(LyPZTypeEnum.GJJJTPZ.getValue()) || pushParam.getPzlx().equals(LyPZTypeEnum.GJJFFPZ.getValue())) { + } else if (pushParam.getPzlx().equals(LyPZTypeEnum.SBJTPZ.getValue()) || pushParam.getPzlx().equals(LyPZTypeEnum.SBFFPZ.getValue())) { List socialReportList = getLySocialReportService(user).getByIds(dataSource); socialReportList.stream().forEach(po -> { if (pushParam.getPzlx().equals(LyPZTypeEnum.SBJTPZ.getValue())) { po.setSbjtpzFlag(NumberUtils.INTEGER_ONE); } else if (pushParam.getPzlx().equals(LyPZTypeEnum.SBFFPZ.getValue())) { po.setSbffpzFlag(NumberUtils.INTEGER_ONE); - } else if (pushParam.getPzlx().equals(LyPZTypeEnum.GJJJTPZ.getValue())) { + } + getLySocialReportService(user).update(po); + }); + } else if (pushParam.getPzlx().equals(LyPZTypeEnum.GJJJTPZ.getValue()) || pushParam.getPzlx().equals(LyPZTypeEnum.GJJFFPZ.getValue())) { + List fundReportList = getLyFundReportService(user).getByIds(dataSource); + fundReportList.stream().forEach(po -> { + if (pushParam.getPzlx().equals(LyPZTypeEnum.GJJJTPZ.getValue())) { po.setGjjjtpzFlag(NumberUtils.INTEGER_ONE); } else if (pushParam.getPzlx().equals(LyPZTypeEnum.GJJFFPZ.getValue())) { po.setGjjffpzFlag(NumberUtils.INTEGER_ONE); } - getLySocialReportService(user).update(po); + getLyFundReportService(user).update(po); }); } } @@ -1093,8 +1126,17 @@ public class LyPZServiceImpl extends Service implements LyPZService { } getLySocialReportService(user).updateIgnoreNull(po); }); - } else { + } else if (pzlx.equals(LyPZTypeEnum.GJJJTPZ.getValue()) || pzlx.equals(LyPZTypeEnum.GJJFFPZ.getValue())) { // 公积金 + List lyFundReportList = getLyFundReportService(user).getByIds(dataSourceIdList); + lyFundReportList.stream().forEach(po -> { + if (pzlx.equals(LyPZTypeEnum.GJJJTPZ.getValue())) { + po.setGjjjtpzFlag(NumberUtils.INTEGER_ZERO); + } else { + po.setGjjffpzFlag(NumberUtils.INTEGER_ZERO); + } + getLyFundReportService(user).updateIgnoreNull(po); + }); } } } diff --git a/src/com/engine/salary/service/impl/LySalaryReportServiceImpl.java b/src/com/engine/salary/service/impl/LySalaryReportServiceImpl.java index f6ce1d82b..698969355 100644 --- a/src/com/engine/salary/service/impl/LySalaryReportServiceImpl.java +++ b/src/com/engine/salary/service/impl/LySalaryReportServiceImpl.java @@ -606,6 +606,9 @@ public class LySalaryReportServiceImpl extends Service implements LySalaryReport // 获取本月是否已有报表数据 List lySalaryReportPOS = listBySalaryMonth(salaryMonthDate); + if (CollectionUtils.isNotEmpty(param.getFfgsqc())) { + lySalaryReportPOS = lySalaryReportPOS.stream().filter(lySalaryReportPO -> param.getFfgsqc().contains(lySalaryReportPO.getFfgsqc())).collect(Collectors.toList()); + } // 分权 // 是否是薪酬总管理员 diff --git a/src/com/engine/salary/service/impl/LySocialReportServiceImpl.java b/src/com/engine/salary/service/impl/LySocialReportServiceImpl.java index 191183546..88c8fff64 100644 --- a/src/com/engine/salary/service/impl/LySocialReportServiceImpl.java +++ b/src/com/engine/salary/service/impl/LySocialReportServiceImpl.java @@ -162,7 +162,7 @@ public class LySocialReportServiceImpl extends Service implements LySocialReport // 获取本月是否已有报表数据 List lySocialReportPOS = listBySalaryMonth(salaryMonthDate); if (CollectionUtils.isNotEmpty(lySocialReportPOS)) { - throw new SalaryRunTimeException("本薪资所属月已生成薪资汇总报表,无法生成社保公积金汇总报表数据"); + throw new SalaryRunTimeException("本薪资所属月已生成社保汇总报表,无法生成社保汇总报表数据"); } BaseBean baseBean = new BaseBean(); @@ -464,12 +464,18 @@ public class LySocialReportServiceImpl extends Service implements LySocialReport pageInfo.setTotal(lySocialReportPOS.size()); pageInfo.setList(SalaryPageUtil.subList(param.getCurrent(), param.getPageSize(), lySocialReportPOS)); } + pageInfo.getList().stream().forEach(po -> { + po.setSbjtpzFlagStr((po.getSbjtpzFlag() != null && po.getSbjtpzFlag().equals(NumberUtils.INTEGER_ONE)) ? "已推送" : "未推送"); + po.setSbffpzFlagStr((po.getSbffpzFlag() != null && po.getSbffpzFlag().equals(NumberUtils.INTEGER_ONE)) ? "已推送" : "未推送"); + }); List columns = new ArrayList<>(); columns.add(new WeaTableColumnGroup("150px", "购买公司全称", "gmgsqc")); columns.add(new WeaTableColumnGroup("150px", "分摊人数", "ftempNum")); columns.add(new WeaTableColumnGroup("150px", "费用承担公司全称", "fycdgsqc")); columns.add(new WeaTableColumnGroup("150px", "职能/项目名称", "znxmmc")); columns.add(new WeaTableColumnGroup("150px", "费用所属期", "salaryMonth")); + columns.add(new WeaTableColumnGroup("150px", "计提状态", "sbjtpzFlagStr")); + columns.add(new WeaTableColumnGroup("150px", "发放状态", "sbffpzFlagStr")); WeaTableColumnGroup ylGroup = new WeaTableColumnGroup("150px", "养老", "养老"); List ylChildList = new ArrayList<>(); @@ -553,6 +559,9 @@ public class LySocialReportServiceImpl extends Service implements LySocialReport // 获取本月是否已有报表数据 List lySocialReportPOS = listBySalaryMonth(salaryMonthDate); + if (CollectionUtils.isNotEmpty(param.getFfgsqc())) { + lySocialReportPOS = lySocialReportPOS.stream().filter(lySalaryReportPO -> param.getFfgsqc().contains(lySalaryReportPO.getGmgsqc())).collect(Collectors.toList()); + } // 分权 // 是否是薪酬总管理员 @@ -685,7 +694,7 @@ public class LySocialReportServiceImpl extends Service implements LySocialReport } //获取excel - return ExcelUtilPlus.genWorkbookWithChildTitleColumn(rows, "薪酬统计报表", true); + return ExcelUtilPlus.genWorkbookWithChildTitleColumn(rows, "社保统计报表", true); } @Override diff --git a/src/com/engine/salary/timer/LySalaryVoucherReportJob.java b/src/com/engine/salary/timer/LySalaryVoucherReportJob.java index 3e06dc00a..46c5131c0 100644 --- a/src/com/engine/salary/timer/LySalaryVoucherReportJob.java +++ b/src/com/engine/salary/timer/LySalaryVoucherReportJob.java @@ -2,8 +2,10 @@ package com.engine.salary.timer; import com.engine.common.util.ServiceUtil; import com.engine.salary.entity.ly.param.LySalaryReportQueryParam; +import com.engine.salary.service.LyFundReportService; import com.engine.salary.service.LySalaryReportService; import com.engine.salary.service.LySocialReportService; +import com.engine.salary.service.impl.LyFundReportServiceImpl; import com.engine.salary.service.impl.LySalaryReportServiceImpl; import com.engine.salary.service.impl.LySocialReportServiceImpl; import com.engine.salary.util.SalaryDateUtil; @@ -29,6 +31,10 @@ public class LySalaryVoucherReportJob extends BaseCronJob { return ServiceUtil.getService(LySocialReportServiceImpl.class, user); } + private LyFundReportService getLyFundReportService(User user) { + return ServiceUtil.getService(LyFundReportServiceImpl.class, user); + } + private String salaryAddMonth; @Override @@ -43,5 +49,6 @@ public class LySalaryVoucherReportJob extends BaseCronJob { LySalaryReportQueryParam param = LySalaryReportQueryParam.builder().salaryMonth(formatYearMonth).build(); getlLySalaryReportService(user).generateSalaryReport(param); getlLySocialReportService(user).generateSocialReport(param); + getLyFundReportService(user).generateFundReport(param); } } diff --git a/src/com/engine/salary/web/LySalaryController.java b/src/com/engine/salary/web/LySalaryController.java index a700d3834..77b21d545 100644 --- a/src/com/engine/salary/web/LySalaryController.java +++ b/src/com/engine/salary/web/LySalaryController.java @@ -176,9 +176,9 @@ public class LySalaryController { //---------------------------------------------------------薪酬汇总报表end-------------------------------------------- - //---------------------------------------------------------社保公积金汇总报表start------------------------------------- + //---------------------------------------------------------社保汇总报表start------------------------------------- /** - * 生成社保公积金汇总报表 + * 生成社保汇总报表 * * @param request * @param response @@ -194,7 +194,7 @@ public class LySalaryController { } /** - * 查询社保公积金汇总报表 + * 查询社保汇总报表 * * @param request * @param response @@ -226,7 +226,7 @@ public class LySalaryController { } /** - * 社保公积金汇总报表 合计行 + * 社保汇总报表 合计行 * * @param request * @param response @@ -290,7 +290,128 @@ public class LySalaryController { throw e; } } - //---------------------------------------------------------社保公积金汇总报表end--------------------------------------- + //---------------------------------------------------------社保汇总报表end--------------------------------------- + + + + + //---------------------------------------------------------公积金汇总报表start------------------------------------- + /** + * 生成公积金汇总报表 + * + * @param request + * @param response + * @param param + * @return + */ + @POST + @Path("/FundReport/generate") + @Produces(MediaType.APPLICATION_JSON) + public String generateFundReport(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody LySalaryReportQueryParam param) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getLySalaryWrapper(user)::generateFundReport, param); + } + + /** + * 查询公积金汇总报表 + * + * @param request + * @param response + * @param param + * @return + */ + @POST + @Path("/FundReport/list") + @Produces(MediaType.APPLICATION_JSON) + public String listFundReport(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody LySalaryReportQueryParam param) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult>(user).run(getLySalaryWrapper(user)::listFundReport, param); + } + + /** + * 查询公积金汇总报表的发放公司下拉框 + * + * @param request + * @param response + * @param param + * @return + */ + @POST + @Path("/FundReport/gmgsList") + @Produces(MediaType.APPLICATION_JSON) + public String fundReportGmgsList(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody LySalaryReportQueryParam param) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult>>(user).run(getLySalaryWrapper(user)::fundReportGmgsList, param); + } + + /** + * 公积金汇总报表 合计行 + * + * @param request + * @param response + * @param param + * @return + */ + @POST + @Path("/FundReport/sum") + @Produces(MediaType.APPLICATION_JSON) + public String fundReportSum(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody LySalaryReportQueryParam param) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult>(user).run(getLySalaryWrapper(user)::fundReportSum, param); + } + + /** + * 删除公积金报表数据 + * + * @param request + * @param response + * @param param + * @return + */ + @POST + @Path("/FundReport/batchDelete") + @Produces(MediaType.APPLICATION_JSON) + public String deleteFundReport(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody LySalaryReportQueryParam param) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult, String>(user).run(getLySalaryWrapper(user)::deleteFundReport, param.getIds()); + } + + /** + * 导出公积金报表数据 + * + * @param request + * @param response + * @param param + * @return + */ + @POST + @Path("/FundReport/export") + @Produces(MediaType.APPLICATION_OCTET_STREAM) + public Response exportFundReport(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody LySalaryReportQueryParam param) { + try { + User user = HrmUserVarify.getUser(request, response); + XSSFWorkbook workbook = getLySalaryWrapper(user).exportFundReport(param); + String time = LocalDate.now().toString(); + String fileName = param.getSalaryMonth() +"公积金汇总报表" + "-" + 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(); + } catch (Exception e) { + log.error("公积金汇总报表导出异常", e); + throw e; + } + } + //---------------------------------------------------------公积金汇总报表end--------------------------------------- + + //---------------------------------------------------------领悦生成凭证start------------------------------------------ diff --git a/src/com/engine/salary/wrapper/LySalaryWrapper.java b/src/com/engine/salary/wrapper/LySalaryWrapper.java index bada5fbd4..5bc53bbdb 100644 --- a/src/com/engine/salary/wrapper/LySalaryWrapper.java +++ b/src/com/engine/salary/wrapper/LySalaryWrapper.java @@ -3,12 +3,15 @@ package com.engine.salary.wrapper; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; import com.engine.salary.entity.ly.param.*; +import com.engine.salary.entity.ly.po.LyFundReportPO; import com.engine.salary.entity.ly.po.LySalaryReportPO; import com.engine.salary.entity.ly.po.LySocialReportPO; import com.engine.salary.entity.ly.po.LyVoucherPO; +import com.engine.salary.service.LyFundReportService; import com.engine.salary.service.LyPZService; import com.engine.salary.service.LySalaryReportService; import com.engine.salary.service.LySocialReportService; +import com.engine.salary.service.impl.LyFundReportServiceImpl; import com.engine.salary.service.impl.LyPZServiceImpl; import com.engine.salary.service.impl.LySalaryReportServiceImpl; import com.engine.salary.service.impl.LySocialReportServiceImpl; @@ -37,6 +40,10 @@ public class LySalaryWrapper extends Service { return ServiceUtil.getService(LySocialReportServiceImpl.class, user); } + private LyFundReportService getLyFundReportService(User user) { + return ServiceUtil.getService(LyFundReportServiceImpl.class, user); + } + private LyPZService getLyPZService(User user) { return ServiceUtil.getService(LyPZServiceImpl.class, user); } @@ -186,4 +193,55 @@ public class LySalaryWrapper extends Service { public List> sIReportGmgsList(LySalaryReportQueryParam queryParam) { return getLySocialReportService(user).sIReportGmgsList(queryParam); } + + + //--------------------------------------------公积金汇总报表---------------------------------------------------------- + public void generateFundReport(LySalaryReportQueryParam param) { + getLyFundReportService(user).generateFundReport(param); + } + + /** + * 查询公积金汇总报表 + * + * @param param + */ + public Map listFundReport(LySalaryReportQueryParam param) { + return getLyFundReportService(user).listFundReport(param); + } + + /** + * 公积金汇总报表 合计行 + * + * @param param + */ + public Map fundReportSum(LySalaryReportQueryParam param) { + Map datas = new HashMap<>(); + + //合计 + LyFundReportPO sumRow = getLyFundReportService(user).sumRow(param); + datas.put("sumRow", sumRow); + return datas; + } + + /** + * 删除报表数据 + * + * @param siReportIds + */ + public void deleteFundReport (List siReportIds) { + getLyFundReportService(user).deleteFundReport(siReportIds); + } + + /** + * 公积金统计报表导出 + * @param param + * @return + */ + public XSSFWorkbook exportFundReport(LySalaryReportQueryParam param) { + return getLyFundReportService(user).exportFundReport(param); + } + + public List> fundReportGmgsList(LySalaryReportQueryParam queryParam) { + return getLyFundReportService(user).fundReportGmgsList(queryParam); + } }