From 3c007f8e0bb715f9ed9c5e7fbe2efce68ff5d85e Mon Sep 17 00:00:00 2001 From: sy Date: Thu, 15 Sep 2022 15:31:34 +0800 Subject: [PATCH] =?UTF-8?q?=E8=96=AA=E9=85=AC=E7=B3=BB=E7=BB=9F=E5=AF=BC?= =?UTF-8?q?=E5=85=A5=E6=96=B9=E5=BC=8F=E9=85=8D=E7=BD=AE-=E7=A4=BE?= =?UTF-8?q?=E4=BF=9D=E7=A6=8F=E5=88=A9=E6=A1=A3=E6=A1=88=E5=AF=BC=E5=85=A5?= =?UTF-8?q?,=E6=B7=BB=E5=8A=A0=E5=AF=BC=E5=85=A5=E4=BA=BA=E5=91=98?= =?UTF-8?q?=E7=AD=9B=E9=80=89=E9=85=8D=E7=BD=AE=E5=8C=96=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/engine/salary/biz/SIArchivesBiz.java | 1 + .../mapper/datacollection/EmployMapper.xml | 3 +- .../service/SalaryAcctEmployeeService.java | 11 ++++++ .../service/impl/SIImportServiceImpl.java | 2 +- .../service/impl/SISchemeServiceImpl.java | 16 ++++++-- .../impl/SalaryAcctEmployeeServiceImpl.java | 38 +++++++++++++++++++ 6 files changed, 66 insertions(+), 5 deletions(-) diff --git a/src/com/engine/salary/biz/SIArchivesBiz.java b/src/com/engine/salary/biz/SIArchivesBiz.java index b643ef1bf..43d373738 100644 --- a/src/com/engine/salary/biz/SIArchivesBiz.java +++ b/src/com/engine/salary/biz/SIArchivesBiz.java @@ -769,6 +769,7 @@ public class SIArchivesBiz { list.add(new WeaTableColumn("150px", "部门", "departmentName")); list.add(new WeaTableColumn("150px", "手机号", "mobile")); list.add(new WeaTableColumn("150px", "员工状态", "status")); + list.add(new WeaTableColumn("150px", "工号", "jobNum")); list.add(new WeaTableColumn("150px", "社保方案名称", "socialName")); titleMap.get(WelfareTypeEnum.SOCIAL_SECURITY.getValue()).forEach((k, v) -> list.add(new WeaTableColumn("150px", v, k))); list.add(new WeaTableColumn("150px", "社保账号", "socialAccount")); diff --git a/src/com/engine/salary/mapper/datacollection/EmployMapper.xml b/src/com/engine/salary/mapper/datacollection/EmployMapper.xml index 02b465187..adc1f55a2 100644 --- a/src/com/engine/salary/mapper/datacollection/EmployMapper.xml +++ b/src/com/engine/salary/mapper/datacollection/EmployMapper.xml @@ -7,7 +7,8 @@ e.LASTNAME as username, d.DEPARTMENTNAME as departmentName, e.status, - e.mobile + e.mobile, + e.workcode from hrmresource e left join hrmdepartment d on e.departmentid = d.id where e.status not in (7) diff --git a/src/com/engine/salary/service/SalaryAcctEmployeeService.java b/src/com/engine/salary/service/SalaryAcctEmployeeService.java index 232710c55..da76bb27c 100644 --- a/src/com/engine/salary/service/SalaryAcctEmployeeService.java +++ b/src/com/engine/salary/service/SalaryAcctEmployeeService.java @@ -1,5 +1,6 @@ package com.engine.salary.service; +import com.engine.salary.entity.datacollection.DataCollectionEmployee; import com.engine.salary.entity.salaryacct.dto.SalaryAcctEmployeeCountDTO; import com.engine.salary.entity.salaryacct.param.*; import com.engine.salary.entity.salaryacct.po.SalaryAcctEmployeePO; @@ -224,4 +225,14 @@ public interface SalaryAcctEmployeeService { * @param salaryAcctRecordId 薪资核算记录 */ void refresh(Long salaryAcctRecordId); + + /** + * 筛选导入人员信息可以在人力资源池中匹配到的人员信息 + * @param employeeList 人力资源池 + * @param userName 姓名 + * @param deparmentName 部门 + * @param mobile 手机号 + * @param workcode 工号 + */ + List matchImportEmployee(List employeeList, String userName, String deparmentName, String mobile, String workcode); } diff --git a/src/com/engine/salary/service/impl/SIImportServiceImpl.java b/src/com/engine/salary/service/impl/SIImportServiceImpl.java index 3ac198ad6..31126fa6a 100644 --- a/src/com/engine/salary/service/impl/SIImportServiceImpl.java +++ b/src/com/engine/salary/service/impl/SIImportServiceImpl.java @@ -159,8 +159,8 @@ public class SIImportServiceImpl extends Service implements SIImportService { result.add(SalaryI18nUtil.getI18nLabel( 85429, "姓名")); result.add(SalaryI18nUtil.getI18nLabel( 86185, "部门")); result.add(SalaryI18nUtil.getI18nLabel( 86186, "手机号")); - result.add(SalaryI18nUtil.getI18nLabel(86317, "工号")); result.add(SalaryI18nUtil.getI18nLabel( 86187, "员工状态")); + result.add(SalaryI18nUtil.getI18nLabel(86317, "工号")); result.add(SalaryI18nUtil.getI18nLabel( 86184, "个税扣缴义务人")); result.add(SalaryI18nUtil.getI18nLabel( 91323, "社保方案名称")); // result.add(SalaryI18nUtil.getI18nLabel( 91325, "社保缴纳组织")); diff --git a/src/com/engine/salary/service/impl/SISchemeServiceImpl.java b/src/com/engine/salary/service/impl/SISchemeServiceImpl.java index 69ff9cab0..732410042 100644 --- a/src/com/engine/salary/service/impl/SISchemeServiceImpl.java +++ b/src/com/engine/salary/service/impl/SISchemeServiceImpl.java @@ -37,6 +37,7 @@ import com.engine.salary.mapper.sischeme.InsuranceSchemeMapper; import com.engine.salary.mapper.taxagent.TaxAgentMapper; import com.engine.salary.service.SIImportService; import com.engine.salary.service.SISchemeService; +import com.engine.salary.service.SalaryAcctEmployeeService; import com.engine.salary.service.TaxAgentService; import com.engine.salary.util.*; import com.engine.salary.util.db.MapperProxyFactory; @@ -56,6 +57,7 @@ import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.util.IOUtils; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import weaver.file.ImageFileManager; +import weaver.hrm.User; import java.io.InputStream; import java.util.*; @@ -116,6 +118,10 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { private SIArchivesBiz siArchivesBiz = new SIArchivesBiz(); + private SalaryAcctEmployeeService getSalaryAcctEmployeeService(User user) { + return (SalaryAcctEmployeeService) ServiceUtil.getService(SalaryAcctEmployeeServiceImpl.class, user); + } + @Override public Map getForm(Map params) { return commandExecutor.execute(new SISchemeGetFormCmd(params, user)); @@ -679,16 +685,20 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { boolean isError = false; String userName = (String) singleAccount.get(0).get(SalaryI18nUtil.getI18nLabel(85429, "姓名")); String deparmentName = (String) singleAccount.get(1).get(SalaryI18nUtil.getI18nLabel(86185, "部门")); - String telephone = (String) singleAccount.get(2).get(SalaryI18nUtil.getI18nLabel(86186, "手机号")); + String mobile = (String) singleAccount.get(2).get(SalaryI18nUtil.getI18nLabel(86186, "手机号")); String userStatus = (String) singleAccount.get(3).get(SalaryI18nUtil.getI18nLabel(86187, "员工状态")); + String workcode = (String) singleAccount.get(4).get(SalaryI18nUtil.getI18nLabel(86317, "工号")); + String rowIndex = "第" + index + "行"; - if (StringUtils.isBlank(userName) && StringUtils.isBlank(deparmentName) && StringUtils.isBlank(telephone) && StringUtils.isBlank(userStatus)) { + if (StringUtils.isBlank(userName) && StringUtils.isBlank(deparmentName) && StringUtils.isBlank(mobile) && StringUtils.isBlank(userStatus)) { Map errorMessageMap = Maps.newHashMap(); errorMessageMap.put("message", rowIndex + " 用户名、部门名称、手机号、用户状态" + SalaryI18nUtil.getI18nLabel(100303, "不能同时为空")); excelComments.add(errorMessageMap); isError = true; } - List employees = employeeByIds.stream().filter(e -> (StringUtils.isBlank(userName) || Objects.equals(e.getUsername(), userName)) && (StringUtils.isBlank(deparmentName) || Objects.equals(e.getDepartmentName(), deparmentName)) && (StringUtils.isBlank(telephone) || Objects.equals(e.getMobile(), telephone)) && (StringUtils.isBlank(userStatus) || Objects.equals(userStateExchange(e.getStatus()), userStatus))).collect(Collectors.toList()); + //筛选导入人员信息可以在人力资源池中匹配到的人员信息 + List employees = getSalaryAcctEmployeeService(user).matchImportEmployee(employeeByIds, userName, deparmentName, mobile, workcode); + if (CollectionUtils.isEmpty(employees)) { Map errorMessageMap = Maps.newHashMap(); errorMessageMap.put("message", rowIndex + "员工信息不存在"); diff --git a/src/com/engine/salary/service/impl/SalaryAcctEmployeeServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctEmployeeServiceImpl.java index 621349f6c..fc5275fc4 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctEmployeeServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctEmployeeServiceImpl.java @@ -1,5 +1,6 @@ package com.engine.salary.service.impl; +import com.api.formmode.mybatis.util.SqlProxyHandle; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; import com.engine.salary.constant.SalaryDefaultTenantConstant; @@ -12,10 +13,13 @@ import com.engine.salary.entity.salaryacct.po.SalaryAcctRecordPO; import com.engine.salary.entity.salaryarchive.dto.SalaryArchiveDataDTO; import com.engine.salary.entity.salarysob.dto.SalarySobCycleDTO; import com.engine.salary.entity.salarysob.po.SalarySobPO; +import com.engine.salary.enums.UserStatusEnum; import com.engine.salary.enums.salaryaccounting.SalaryAcctRecordStatusEnum; import com.engine.salary.exception.SalaryRunTimeException; import com.engine.salary.mapper.salaryacct.SalaryAcctEmployeeMapper; +import com.engine.salary.mapper.sys.SalarySysConfMapper; import com.engine.salary.service.*; +import com.engine.salary.sys.entity.po.SalarySysConfPO; import com.engine.salary.util.SalaryDateUtil; import com.engine.salary.util.SalaryEntityUtil; import com.engine.salary.util.SalaryI18nUtil; @@ -24,6 +28,7 @@ import com.engine.salary.util.page.PageInfo; import com.engine.salary.util.page.SalaryPageUtil; import com.engine.salary.util.valid.ValidUtil; import com.google.common.collect.Lists; +import com.google.common.collect.Maps; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.BeanUtils; @@ -83,6 +88,10 @@ public class SalaryAcctEmployeeServiceImpl extends Service implements SalaryAcct // private LoggerTemplate salaryAcctRecordLoggerTemplate; + private SalarySysConfMapper getSalarySysConfMapper() { + return SqlProxyHandle.getProxy(SalarySysConfMapper.class); + } + @Override public List countBySalaryAcctRecordId(Collection salaryAcctRecordIds) { if (CollectionUtils.isEmpty(salaryAcctRecordIds)) { @@ -468,4 +477,33 @@ public class SalaryAcctEmployeeServiceImpl extends Service implements SalaryAcct batchSave(newSalaryAcctEmployeePOS); } } + + /** + * 筛选导入人员信息可以在人力资源池中匹配到的人员信息 + * @param employeeList 人力资源池 + * @param userName 姓名 + * @param deparmentName 部门 + * @param mobile 手机号 + * @param workcode 工号 + */ + @Override + public List matchImportEmployee(List employeeList, String userName, String deparmentName, String mobile, String workcode) { + + //查询对于人员信息导入筛选的全局配置 + SalarySysConfPO salarySysConfPO = getSalarySysConfMapper().getOneByCode("matchEmployeeMode"); + List employees = new ArrayList<>(); + //“0”代表姓名+部门+手机号的匹配原则,“1”代表工号为唯一匹配原则 + if ("0".equals(salarySysConfPO.getConfValue())) { + employees = employeeList.stream().filter(e -> (StringUtils.isBlank(userName) || Objects.equals(e.getUsername(), userName)) + && (StringUtils.isBlank(deparmentName) || Objects.equals(e.getDepartmentName(), deparmentName)) + && (StringUtils.isBlank(mobile) || Objects.equals(e.getMobile(), mobile))) + .collect(Collectors.toList()); + } else if ("1".equals(salarySysConfPO.getConfValue())) { + employees = employeeList.stream().filter(e -> (StringUtils.isBlank(workcode) || Objects.equals(e.getWorkcode(), workcode))) + .collect(Collectors.toList()); + } + + return employees; + + } }