diff --git a/resource/wiki/人员生成不了档案.sql b/resource/wiki/常见问题.md similarity index 70% rename from resource/wiki/人员生成不了档案.sql rename to resource/wiki/常见问题.md index 1ddc0e7e4..747980c74 100644 --- a/resource/wiki/人员生成不了档案.sql +++ b/resource/wiki/常见问题.md @@ -1,3 +1,5 @@ + +## 薪资档案生成不了 select id from hrsa_tax_agent_emp where tax_agent_id =扣缴义务人id and delete_type = 0 @@ -7,4 +9,13 @@ where tax_agent_id =扣缴义务人id and delete_type = 0) update hrsa_tax_agent_emp set delete_type = 3 where delete_type = 0 -where tax_agent_id=扣缴义务人id and delete_type = 0 and employee_id not in (select employee_id from hrsa_salary_archive where tax_agent_id =扣缴义务人id and delete_type = 0) \ No newline at end of file +where tax_agent_id=扣缴义务人id and delete_type = 0 and employee_id not in (select employee_id from hrsa_salary_archive where tax_agent_id =扣缴义务人id and delete_type = 0) + + + +## 考勤引用 +drop sequence HRSA_ATTEND_QUOTE_ID +/ + +drop trigger HRSA_ATTEND_QUOTE_TRI +/ \ No newline at end of file diff --git a/src/com/engine/salary/entity/taxdeclaration/bo/TaxDeclarationBO.java b/src/com/engine/salary/entity/taxdeclaration/bo/TaxDeclarationBO.java index 66aec4865..ec556480c 100644 --- a/src/com/engine/salary/entity/taxdeclaration/bo/TaxDeclarationBO.java +++ b/src/com/engine/salary/entity/taxdeclaration/bo/TaxDeclarationBO.java @@ -723,6 +723,7 @@ public class TaxDeclarationBO { private static String findStringValue(String fieldCode, Map> resultMap, Map salaryItemMap) { return resultMap.getOrDefault(salaryItemMap.getOrDefault(fieldCode, 0L), Collections.emptyList()).stream() .map(SalaryAcctResultPO::getResultValue) + .filter(Objects::nonNull) .findFirst().orElse(""); } diff --git a/src/com/engine/salary/report/service/impl/SalaryStatisticsEmployeeServiceImpl.java b/src/com/engine/salary/report/service/impl/SalaryStatisticsEmployeeServiceImpl.java index 19d0147ed..24db00d78 100644 --- a/src/com/engine/salary/report/service/impl/SalaryStatisticsEmployeeServiceImpl.java +++ b/src/com/engine/salary/report/service/impl/SalaryStatisticsEmployeeServiceImpl.java @@ -11,7 +11,6 @@ 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.taxagent.param.TaxAgentQueryParam; -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.auth.AuthFilterTypeEnum; @@ -31,6 +30,8 @@ import com.engine.salary.service.*; import com.engine.salary.service.auth.AuthService; import com.engine.salary.service.auth.AuthServiceImpl; 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.SalaryAssert; import com.engine.salary.util.SalaryDateUtil; import com.engine.salary.util.SalaryEntityUtil; @@ -49,6 +50,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

@@ -103,6 +106,11 @@ public class SalaryStatisticsEmployeeServiceImpl extends Service implements Sala return ServiceUtil.getService(SettingServiceImpl.class, user); } + private SalarySysConfService getSalarySysConfService(User user) { + return ServiceUtil.getService(SalarySysConfServiceImpl.class, user); + } + + private final boolean isRealOrg = "1".equals(getSalarySysConfService(user).getValueByCode(REPORT_ORGANIZATIN_TYPE)); @Override public PageInfo listPage(SalaryStatisticsEmployeeQueryParam queryParam) { List list = Collections.emptyList(); @@ -262,14 +270,22 @@ public class SalaryStatisticsEmployeeServiceImpl extends Service implements Sala 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())); - map.put("department", Util.null2String(emp.getDepartmentName())); - 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("idNo", Util.null2String(emp.getIdNo())); map.put("companystartdate", Util.null2String(emp.getCompanystartdate())); + if(isRealOrg){ + map.put("subCompany", Util.null2String(emp.getSubcompanyName())); + map.put("department", Util.null2String(emp.getDepartmentName())); + map.put("jobTitle", Util.null2String(emp.getJobtitleName())); + map.put("status", Util.null2String(NumberUtil.isNumber(emp.getStatus()) ? SalaryEmployeeStatusEnum.parseByValue(Integer.valueOf(emp.getStatus())).getDefaultLabel() : null)); + }else { + map.put("subCompany", Util.null2String(se.getSubcompanyName())); + map.put("department", Util.null2String(se.getDepartmentName())); + map.put("jobTitle", Util.null2String(se.getJobtitleName())); + map.put("status", Util.null2String(NumberUtil.isNumber(se.getStatus()) ? SalaryEmployeeStatusEnum.parseByValue(Integer.valueOf(se.getStatus())).getDefaultLabel() : null)); + } + // IncomeCategoryEnum incomeCategoryEnum = IncomeCategoryEnum.parseByValue(Integer.parseInt(se.getIncomeCategory())); // map.put("incomeCategory", Objects.isNull(incomeCategoryEnum) ? "" : SalaryI18nUtil.getI18nLabel(incomeCategoryEnum.getLabelId(), incomeCategoryEnum.getDefaultLabel())); list.add(map); diff --git a/src/com/engine/salary/report/service/impl/SalaryStatisticsReportServiceImpl.java b/src/com/engine/salary/report/service/impl/SalaryStatisticsReportServiceImpl.java index a894213bb..6465e582a 100644 --- a/src/com/engine/salary/report/service/impl/SalaryStatisticsReportServiceImpl.java +++ b/src/com/engine/salary/report/service/impl/SalaryStatisticsReportServiceImpl.java @@ -525,7 +525,7 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary throw new SalaryRunTimeException("该维度值中无数据!"); } // 同一个人放在一起 - listByDimensionValue = listByDimensionValue.stream().sorted(Comparator.comparing(SalaryAcctEmployeePO::getEmployeeId)).collect(Collectors.toList()); + listByDimensionValue = listByDimensionValue.stream().sorted((a,b)-> b.getSalaryMonth().compareTo(a.getSalaryMonth())).collect(Collectors.toList()); List salaryAcctEmployeePOList = SalaryPageUtil.subList(param.getCurrent(), param.getPageSize(), listByDimensionValue); // 获取此分页的核算人员 diff --git a/src/com/engine/salary/service/auth/AuthRoleServiceImpl.java b/src/com/engine/salary/service/auth/AuthRoleServiceImpl.java index e305b6833..cb437aac0 100644 --- a/src/com/engine/salary/service/auth/AuthRoleServiceImpl.java +++ b/src/com/engine/salary/service/auth/AuthRoleServiceImpl.java @@ -1,6 +1,7 @@ package com.engine.salary.service.auth; import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; import com.engine.hrmelog.entity.dto.LoggerContext; @@ -63,6 +64,12 @@ public class AuthRoleServiceImpl extends Service implements AuthRoleService { public PageInfo roleList(AuthRoleListQueryParam param) { List authRolePOS = getAuthRoleMapper().list(param); + + String name = param.getName(); + if(StrUtil.isNotBlank(name)){ + authRolePOS = authRolePOS.stream().filter(po -> po.getName().contains(name)).collect(Collectors.toList()); + } + int total = authRolePOS.size(); List list = SalaryPageUtil.subList(param.getCurrent(), param.getPageSize(), authRolePOS) diff --git a/src/com/engine/salary/service/impl/RecordsBuildServiceImpl.java b/src/com/engine/salary/service/impl/RecordsBuildServiceImpl.java index 29ee07ccc..c6283dd16 100644 --- a/src/com/engine/salary/service/impl/RecordsBuildServiceImpl.java +++ b/src/com/engine/salary/service/impl/RecordsBuildServiceImpl.java @@ -93,7 +93,7 @@ public class RecordsBuildServiceImpl extends Service implements RecordsBuildServ Map collect = employeeByIds.stream().collect(Collectors.toMap(DataCollectionEmployee::getEmployeeId, Function.identity())); list.forEach(item -> { Map record = new HashMap<>(); - DataCollectionEmployee simpleEmployee = collect.get(item.getEmployeeId()); + DataCollectionEmployee simpleEmployee = collect.get(item.getEmployeeId()) ==null?new DataCollectionEmployee():collect.get(item.getEmployeeId()); record.put("id", item.getId()); record.put("employeeId", item.getEmployeeId()); record.put("billMonth", item.getBillMonth()); diff --git a/src/com/engine/salary/service/impl/SIRepairServiceImpl.java b/src/com/engine/salary/service/impl/SIRepairServiceImpl.java index 64758d625..bb24354e2 100644 --- a/src/com/engine/salary/service/impl/SIRepairServiceImpl.java +++ b/src/com/engine/salary/service/impl/SIRepairServiceImpl.java @@ -485,8 +485,10 @@ public class SIRepairServiceImpl extends Service implements SIRepairService { socialMap = socialMap.entrySet().stream().filter(e -> "9002".equals(e.getKey())) .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)); Map socialComMap = JSON.parseObject(socialSchemePO.getSocialPaymentComBaseString(), new HashMap().getClass()); - socialComMap = socialComMap.entrySet().stream().filter(e -> "9002".equals(e.getKey())) - .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)); + if(socialComMap !=null){ + socialComMap = socialComMap.entrySet().stream().filter(e -> "9002".equals(e.getKey())) + .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)); + } List socialIds = new ArrayList<>(); socialIds.addAll(socialMap == null ? Collections.emptyList() : socialMap.keySet()); socialIds.addAll(socialComMap == null ? Collections.emptyList() : socialComMap.keySet()); diff --git a/src/com/engine/salary/service/impl/SISchemeServiceImpl.java b/src/com/engine/salary/service/impl/SISchemeServiceImpl.java index 0484a1079..35f207e4d 100644 --- a/src/com/engine/salary/service/impl/SISchemeServiceImpl.java +++ b/src/com/engine/salary/service/impl/SISchemeServiceImpl.java @@ -2473,6 +2473,7 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { * @param employeeId */ public String update(InsuranceSchemeReqParam updateParam, long employeeId) { + log.info("福利方案更新参数:{}", updateParam); //查询是否存在福利方案 InsuranceSchemePO insuranceSchemePO = getById(updateParam.getInsuranceScheme().getId()); if (Objects.isNull(insuranceSchemePO)) { @@ -2506,6 +2507,7 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { //更新福利方案主表 InsuranceSchemePO insuranceSchemePO1 = InsuranceSchemeBO.buildInsuranceSchemePO(insuranceSchemePO, updateParam.getInsuranceScheme()); getInsuranceSchemeMapper().update(insuranceSchemePO1); + log.info("福利方案更新主表:{}", insuranceSchemePO1); //记录主表操作日志 loggerContext.setNewValues(insuranceSchemePO1); SalaryElogConfig.siSchemeLoggerTemplate.write(loggerContext); @@ -2529,6 +2531,7 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { //更新福利方案明细表 先删后插 getInsuranceSchemeDetailMapper().batchDeleteByPrimaryIds(Collections.singleton(updateParam.getInsuranceScheme().getId())); //更新明细表 + log.info("福利方案更新明细表:{}", insuranceSchemeDetailPOS); encryptUtil.encryptList(insuranceSchemeDetailPOS, InsuranceSchemeDetailPO.class); insuranceSchemeDetailPOS.forEach(getInsuranceSchemeDetailMapper()::insert); diff --git a/src/com/engine/salary/web/SalaryBillController.java b/src/com/engine/salary/web/SalaryBillController.java index ab505d1ce..23e06b6ee 100644 --- a/src/com/engine/salary/web/SalaryBillController.java +++ b/src/com/engine/salary/web/SalaryBillController.java @@ -485,7 +485,7 @@ public class SalaryBillController { @Produces(MediaType.APPLICATION_JSON) public String batGrant(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalarySendBatParam queryParam) { User user = HrmUserVarify.getUser(request, response); - return new ResponseResult>(user).run(getSalarySendWrapper(user)::batGrant, queryParam); + return new ResponseResult(user).run(getSalarySendWrapper(user)::batGrant, queryParam); } /** @@ -499,7 +499,7 @@ public class SalaryBillController { @Produces(MediaType.APPLICATION_JSON) public String batWithdraw(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalarySendBatParam queryParam) { User user = HrmUserVarify.getUser(request, response); - return new ResponseResult>(user).run(getSalarySendWrapper(user)::batWithdraw, queryParam); + return new ResponseResult(user).run(getSalarySendWrapper(user)::batWithdraw, queryParam); } diff --git a/src/com/engine/salary/wrapper/SalarySendWrapper.java b/src/com/engine/salary/wrapper/SalarySendWrapper.java index cf263db9d..44c8d16fa 100644 --- a/src/com/engine/salary/wrapper/SalarySendWrapper.java +++ b/src/com/engine/salary/wrapper/SalarySendWrapper.java @@ -117,9 +117,9 @@ public class SalarySendWrapper extends Service implements SalarySendWrapperProxy list.forEach(dto -> { // 回算过,但是查看的是普通工资单(不能查看详情);回算过,但是查看的是回算工资单(可以发);记录没回算过(可以发) - if(Objects.equals(dto.getSalaryAcctRecordType(), NumberUtils.INTEGER_ONE) && Objects.equals(dto.getSalaryAcctType(),NumberUtils.INTEGER_ZERO)){ + if (Objects.equals(dto.getSalaryAcctRecordType(), NumberUtils.INTEGER_ONE) && Objects.equals(dto.getSalaryAcctType(), NumberUtils.INTEGER_ZERO)) { dto.setCanSeeDetail(false); - }else{ + } else { dto.setCanSeeDetail(true); } }); @@ -142,7 +142,7 @@ public class SalarySendWrapper extends Service implements SalarySendWrapperProxy e.setTemplate(NumberUtils.INTEGER_ONE.equals(e.getSalaryAcctType()) ? salaryTemplatePO.getReplenishName() : salaryTemplatePO.getName()); e.setTemplateId(salaryTemplatePO.getId()); if ((salaryTemplatePO.getAckFeedbackStatus() != null && salaryTemplatePO.getAckFeedbackStatus() == 1) || - (salaryTemplatePO.getFeedbackStatus() != null && salaryTemplatePO.getFeedbackStatus() == 1) ) { + (salaryTemplatePO.getFeedbackStatus() != null && salaryTemplatePO.getFeedbackStatus() == 1)) { e.setAckFeedbackStatus(1); } else { e.setAckFeedbackStatus(0); @@ -688,6 +688,7 @@ public class SalarySendWrapper extends Service implements SalarySendWrapperProxy /** * 发送短信验证码 + * * @param param 短信验证码发送参数 */ public void sendMobileCode(SMSCodeSendParam param) { @@ -696,6 +697,7 @@ public class SalarySendWrapper extends Service implements SalarySendWrapperProxy /** * 校验短信验证码 + * * @param param * @return */ @@ -706,7 +708,7 @@ public class SalarySendWrapper extends Service implements SalarySendWrapperProxy public PayrollCheckTypeEnum payrollCheckType() { SalarySysConfPO conf = getSalarySysConfService(user).getOneByCode(SalarySysConstant.SALARY_PAYROLL_CHECK_TYPE); - if(conf == null){ + if (conf == null) { return PayrollCheckTypeEnum.PWD; } @@ -714,14 +716,14 @@ public class SalarySendWrapper extends Service implements SalarySendWrapperProxy } public void confirmSalaryBill(Long salaryInfoId) { - if(ObjectUtil.isNull(salaryInfoId)){ + if (ObjectUtil.isNull(salaryInfoId)) { throw new SalaryRunTimeException("工资单id不能为空!"); } getSalaryBillService(user).confirmSalaryBill(salaryInfoId); } public void feedBackSalaryBill(Long salaryInfoId) { - if(ObjectUtil.isNull(salaryInfoId)){ + if (ObjectUtil.isNull(salaryInfoId)) { throw new SalaryRunTimeException("工资单id不能为空!"); } getSalaryBillService(user).feedBackSalaryBill(salaryInfoId); @@ -740,26 +742,48 @@ public class SalarySendWrapper extends Service implements SalarySendWrapperProxy } - public void batGrant(SalarySendBatParam param) { + public String batGrant(SalarySendBatParam param) { List salarySendIds = param.getSalarySendIds(); + int successCount = 0; + int failCount = 0; + String failMsg = ""; for (int i = 0; i < salarySendIds.size(); i++) { - Long sendId = salarySendIds.get(i); - SalarySendGrantParam grantParam = SalarySendGrantParam.builder() - .salarySendId(sendId) - .build(); - grant(grantParam); + try { + Long sendId = salarySendIds.get(i); + SalarySendGrantParam grantParam = SalarySendGrantParam.builder() + .salarySendId(sendId) + .build(); + grant(grantParam); + successCount++; + } catch (Exception e) { + failCount++; + failMsg = failMsg + "第" + (i + 1) + "个发放失败!失败原因:" + e.getMessage() + "\n"; + } } + + return String.format("成功:" + successCount + "个,失败:" + failCount + "个%s", failCount == 0 ? "" : ",失败原因:" + failMsg); } - public void batWithdraw(SalarySendBatParam param) { + + public String batWithdraw(SalarySendBatParam param) { List salarySendIds = param.getSalarySendIds(); + int successCount = 0; + int failCount = 0; + String failMsg = ""; for (int i = 0; i < salarySendIds.size(); i++) { - Long sendId = salarySendIds.get(i); - SalarySendWithdrawParam grantParam = SalarySendWithdrawParam.builder() - .salarySendId(sendId) - .build(); - withdraw(grantParam); + try { + Long sendId = salarySendIds.get(i); + SalarySendWithdrawParam grantParam = SalarySendWithdrawParam.builder() + .salarySendId(sendId) + .build(); + withdraw(grantParam); + } catch (Exception e) { + failCount++; + failMsg = failMsg + "第" + (i + 1) + "个撤回失败!失败原因:" + e.getMessage() + "\n"; + } + } + return String.format("成功:" + successCount + "个,失败:" + failCount + "个%s", failCount == 0 ? "" : ",失败原因:" + failMsg); } }