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 1/2] =?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 2/2] =?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); }