diff --git a/src/com/engine/salary/entity/salaryarchive/param/LtSalaryYsWorkflowQueryParam.java b/src/com/engine/salary/entity/salaryarchive/param/LtSalaryYsWorkflowQueryParam.java new file mode 100644 index 000000000..6317499c9 --- /dev/null +++ b/src/com/engine/salary/entity/salaryarchive/param/LtSalaryYsWorkflowQueryParam.java @@ -0,0 +1,41 @@ +package com.engine.salary.entity.salaryarchive.param; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @ClassName LtSalaryYsWorkflowQueryParam + * @author Harryxzy + * @date 2025/6/4 11:33 + * @description 联特 薪资预算流程查询参数 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +//薪资档案查询参数 +public class LtSalaryYsWorkflowQueryParam { + + /** + * 个税扣缴义务人 + */ + private String taxAgentName; + + /** + * 员工id + */ + private Long employeeId; + + /** + * 岗位pc + */ + private String gwpc; + + /** + * 生产薪酬标准 + */ + private String scxcbz; + +} diff --git a/src/com/engine/salary/service/SalaryArchiveService.java b/src/com/engine/salary/service/SalaryArchiveService.java index e86655fd6..6b9712c7f 100644 --- a/src/com/engine/salary/service/SalaryArchiveService.java +++ b/src/com/engine/salary/service/SalaryArchiveService.java @@ -256,4 +256,12 @@ public interface SalaryArchiveService { * @return */ List listPayStartDateIsNull(String runStatus); + + Map getTaxAgentByEmployee(Long employeeId); + + Map getGwPcInfo(String gwpc); + + Map getGzxmByScxcbz(String scxcbz); + + String getBaseSalary(LtSalaryYsWorkflowQueryParam queryParam); } diff --git a/src/com/engine/salary/service/impl/SalaryArchiveServiceImpl.java b/src/com/engine/salary/service/impl/SalaryArchiveServiceImpl.java index 8bb9b4e61..574021ce9 100644 --- a/src/com/engine/salary/service/impl/SalaryArchiveServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryArchiveServiceImpl.java @@ -67,8 +67,9 @@ import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.util.IOUtils; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.springframework.beans.BeanUtils; -import org.springframework.transaction.annotation.Transactional; +import weaver.conn.RecordSet; import weaver.file.ImageFileManager; +import weaver.general.BaseBean; import weaver.general.Util; import weaver.hrm.User; @@ -136,6 +137,10 @@ public class SalaryArchiveServiceImpl extends Service implements SalaryArchiveSe return ServiceUtil.getService(SalarySobServiceImpl.class, user); } + private SalaryItemService getSalaryItemService(User user) { + return ServiceUtil.getService(SalaryItemServiceImpl.class, user); + } + public AuthService getAuthService(User user) { return ServiceUtil.getService(AuthServiceImpl.class, user); } @@ -1399,4 +1404,104 @@ public class SalaryArchiveServiceImpl extends Service implements SalaryArchiveSe } return getSalaryArchiveMapper().listPayStartDateIsNull(runStatus); } + + @Override + public Map getTaxAgentByEmployee(Long employeeId) { + Map resultMap = new HashMap<>(); + if (employeeId == null) { + return resultMap; + } + List archiveList = getSalaryArchiveMapper().listSome(SalaryArchivePO.builder().employeeId(employeeId).build()); + if (CollectionUtils.isEmpty(archiveList)) { + return resultMap; + } + if (archiveList.size() > 1) { + archiveList = archiveList.stream().filter(a -> a.getRunStatus().equals(SalaryArchiveStatusEnum.FIXED.getValue()) || a.getRunStatus().equals(SalaryArchiveStatusEnum.SUSPEND.getValue())).collect(Collectors.toList()); + } + if (CollectionUtils.isEmpty(archiveList) || archiveList.size() > 1) { + return resultMap; + } + Long taxAgentId = archiveList.get(0).getTaxAgentId(); + TaxAgentPO taxAgentPO = getTaxAgentService(user).getById(taxAgentId); + if (taxAgentPO == null) { + return resultMap; + } + resultMap.put("id", taxAgentPO.getId()); + resultMap.put("name", taxAgentPO.getName()); + + return resultMap; + } + + /** + * 根据岗位PC带出4个倍数关系 + * @param gwpc + * @return + */ + @Override + public Map getGwPcInfo(String gwpc) { + Map resultMap = new HashMap<>(); + if (StringUtils.isBlank(gwpc)) { + return resultMap; + } + RecordSet recordSet = new RecordSet(); + recordSet.isReturnDecryptData(true); + recordSet.execute("select zxz,zdz,nzjbs,jxjsbs,yfqndjjbs,xsqjdtcbs from uf_xcjg where gwpc ='" + gwpc + "'"); + while (recordSet.next()) { + resultMap.put("zxz", recordSet.getString("zxz")); + resultMap.put("zdz", recordSet.getString("zdz")); + resultMap.put("nzjbs", recordSet.getString("nzjbs")); + resultMap.put("jxjsbs", recordSet.getString("jxjsbs")); + resultMap.put("yfqndjjbs", recordSet.getString("yfqndjjbs")); + resultMap.put("xsqjdtcbs", recordSet.getString("xsqjdtcbs")); + } + return resultMap; + } + + @Override + public Map getGzxmByScxcbz(String scxcbz) { + Map resultMap = new HashMap<>(); + if (StringUtils.isBlank(scxcbz)) { + return resultMap; + } + RecordSet recordSet = new RecordSet(); + recordSet.isReturnDecryptData(true); + recordSet.execute("select jbgz,jxgz,gwgz,gljt,hb from uf_xcbz where xcdj ='" +scxcbz+ "'"); + while (recordSet.next()) { + resultMap.put("jbgz", recordSet.getString("jbgz")); + resultMap.put("jxgz", recordSet.getString("jxgz")); + resultMap.put("gwgz", recordSet.getString("gwgz")); + resultMap.put("gljt", recordSet.getString("gljt")); + resultMap.put("hb", recordSet.getString("hb")); + } + return resultMap; + } + + @Override + public String getBaseSalary(LtSalaryYsWorkflowQueryParam queryParam) { + if (StringUtils.isBlank(queryParam.getTaxAgentName()) || queryParam.getEmployeeId() == null) { + return ""; + } + Optional taxAgentPOOptional = getTaxAgentService(user).listAll().stream().filter(t -> t.getName().equals(queryParam.getTaxAgentName())).findFirst(); + if (!taxAgentPOOptional.isPresent()) { + return ""; + } + TaxAgentPO taxAgentPO = taxAgentPOOptional.get(); + List salaryArchiveList = getSalaryArchiveMapper().listSome(SalaryArchivePO.builder().employeeId(queryParam.getEmployeeId()).taxAgentId(taxAgentPO.getId()).build()); + if (CollectionUtils.isEmpty(salaryArchiveList)) { + return ""; + } + Long salaryArchiveId = salaryArchiveList.get(0).getId(); + BaseBean baseBean = new BaseBean(); + Long baseSalaryItemId = NumberUtils.isCreatable(baseBean.getPropValue("ltSalary", "base_salary_item_id")) ? Long.valueOf(baseBean.getPropValue("ltSalary", "base_salary_item_id")) : 0L; + SalaryItemPO salaryItemPO = getSalaryItemService(user).getById(baseSalaryItemId); + if (salaryItemPO == null) { + return ""; + } + // 获取当前生效的基本工资 + List effectiveSalaryItems = getSalaryArchiveItemService(user).getEffectiveSalaryItems(salaryArchiveId, Collections.singletonList(baseSalaryItemId)); + if (CollectionUtils.isEmpty(effectiveSalaryItems)) { + return ""; + } + return effectiveSalaryItems.get(0).getItemValue(); + } } diff --git a/src/com/engine/salary/web/SalaryArchiveController.java b/src/com/engine/salary/web/SalaryArchiveController.java index ad775cc58..048c12a76 100644 --- a/src/com/engine/salary/web/SalaryArchiveController.java +++ b/src/com/engine/salary/web/SalaryArchiveController.java @@ -1020,4 +1020,64 @@ public class SalaryArchiveController { return new ResponseResult>(user).run(getSalaryArchiveWrapper(user)::handleRepeatData); } + + /******** 联特二开 start ***********************************************************************************************/ + + /** + * 根据人员id获取个税缴义务人 + * + * @param queryParam + * @return + */ + @POST + @Path("/getTaxAgentByEmployee") + @Produces(MediaType.APPLICATION_JSON) + public String getTaxAgentByEmployee(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryArchiveQueryParam queryParam) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult>(user).run(getSalaryArchiveWrapper(user)::getTaxAgentByEmployee, queryParam.getEmployeeId()); + } + + + /** + * 根据岗位PC带出4个倍数关系 + * + * @param queryParam + * @return + */ + @POST + @Path("/getGwPcInfo") + @Produces(MediaType.APPLICATION_JSON) + public String getGwPcInfo(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody LtSalaryYsWorkflowQueryParam queryParam) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult>(user).run(getSalaryArchiveWrapper(user)::getGwPcInfo, queryParam.getGwpc()); + } + + /** + * 根据薪酬标准生产,带出工资项目 + * + * @param queryParam + * @return + */ + @POST + @Path("/getGzxmByScxcbz") + @Produces(MediaType.APPLICATION_JSON) + public String getGzxmByScxcbz(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody LtSalaryYsWorkflowQueryParam queryParam) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult>(user).run(getSalaryArchiveWrapper(user)::getGzxmByScxcbz, queryParam.getScxcbz()); + } + + /** + * 根据义务人,人员带出基本工资 + * + * @param queryParam + * @return + */ + @POST + @Path("/getBaseSalary") + @Produces(MediaType.APPLICATION_JSON) + public String getBaseSalary(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody LtSalaryYsWorkflowQueryParam queryParam) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getSalaryArchiveWrapper(user)::getBaseSalary, queryParam); + } + } diff --git a/src/com/engine/salary/wrapper/SalaryArchiveWrapper.java b/src/com/engine/salary/wrapper/SalaryArchiveWrapper.java index 8a8b87e51..ee70d8cc7 100644 --- a/src/com/engine/salary/wrapper/SalaryArchiveWrapper.java +++ b/src/com/engine/salary/wrapper/SalaryArchiveWrapper.java @@ -643,4 +643,41 @@ public class SalaryArchiveWrapper extends Service { public String syncPayStartDate() { return getSalaryArchiveService(user).syncPayStartDate(); } + + /** + * 根据人员id获取个税缴义务人 + * + * @param employeeId + * @return + */ + public Map getTaxAgentByEmployee(Long employeeId) { + return getSalaryArchiveService(user).getTaxAgentByEmployee(employeeId); + } + + /** + * 根据岗位PC带出4个倍数关系 + * @param gwpc + */ + public Map getGwPcInfo(String gwpc) { + return getSalaryArchiveService(user).getGwPcInfo(gwpc); + } + + /** + * 根据薪酬标准生产,带出工资项目 + * + * @param scxcbz + * @return + */ + public Map getGzxmByScxcbz(String scxcbz) { + return getSalaryArchiveService(user).getGzxmByScxcbz(scxcbz); + } + + /** + * 根据义务人,人员带出基本工资 + * + * @param queryParam + */ + public String getBaseSalary(LtSalaryYsWorkflowQueryParam queryParam) { + return getSalaryArchiveService(user).getBaseSalary(queryParam); + } }