From 2735661b4a5de8a0ad2fc6c12b3f9e5c2c88f244 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Thu, 29 Jun 2023 10:35:55 +0800 Subject: [PATCH 01/52] =?UTF-8?q?=E5=88=A0=E9=99=A4=E8=96=AA=E8=B5=84?= =?UTF-8?q?=E6=A1=A3=E6=A1=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapper/archive/SalaryArchiveMapper.java | 2 + .../mapper/archive/SalaryArchiveMapper.xml | 10 ++++ .../mapper/siarchives/FundSchemeMapper.java | 7 ++- .../mapper/siarchives/FundSchemeMapper.xml | 13 +++++ .../siarchives/InsuranceBaseInfoMapper.java | 8 ++- .../siarchives/InsuranceBaseInfoMapper.xml | 12 +++++ .../mapper/siarchives/OtherSchemeMapper.java | 8 ++- .../mapper/siarchives/OtherSchemeMapper.xml | 12 +++++ .../mapper/siarchives/SocialSchemeMapper.java | 7 ++- .../mapper/siarchives/SocialSchemeMapper.xml | 12 +++++ .../salary/service/SIArchivesService.java | 6 +++ .../salary/service/SalaryArchiveService.java | 6 +++ .../service/impl/SIArchivesServiceImpl.java | 52 +++++++++++++++++++ .../impl/SalaryArchiveServiceImpl.java | 31 +++++++++++ .../sys/constant/SalarySysConstant.java | 4 ++ .../salary/sys/entity/vo/AppSettingVO.java | 5 ++ .../sys/service/SalarySysConfService.java | 6 +++ .../impl/SalarySysConfServiceImpl.java | 16 ++++++ .../salary/web/SIArchivesController.java | 12 ++++- .../salary/web/SalaryArchiveController.java | 14 +++++ .../web/SalarySystemConfigController.java | 14 +++++ .../salary/wrapper/SalaryArchiveWrapper.java | 9 ++++ .../wrapper/SalarySystemConfigWrapper.java | 4 ++ 23 files changed, 263 insertions(+), 7 deletions(-) diff --git a/src/com/engine/salary/mapper/archive/SalaryArchiveMapper.java b/src/com/engine/salary/mapper/archive/SalaryArchiveMapper.java index 1775995f3..952c37bbb 100644 --- a/src/com/engine/salary/mapper/archive/SalaryArchiveMapper.java +++ b/src/com/engine/salary/mapper/archive/SalaryArchiveMapper.java @@ -122,4 +122,6 @@ public interface SalaryArchiveMapper { void deletePendingTodo(@Param("ids") Collection ids); void deleteSuspendTodo(@Param("ids") Collection ids); + + void deleteByIds(@Param("ids")Collection deleteIds); } \ No newline at end of file diff --git a/src/com/engine/salary/mapper/archive/SalaryArchiveMapper.xml b/src/com/engine/salary/mapper/archive/SalaryArchiveMapper.xml index 35524924f..4b28a239d 100644 --- a/src/com/engine/salary/mapper/archive/SalaryArchiveMapper.xml +++ b/src/com/engine/salary/mapper/archive/SalaryArchiveMapper.xml @@ -467,6 +467,16 @@ + + UPDATE hrsa_salary_archive + SET delete_type=1 + WHERE delete_type = 0 + AND id IN + + #{id} + + + - + diff --git a/src/com/engine/salary/mapper/salarybill/SalaryTemplateMapper.xml b/src/com/engine/salary/mapper/salarybill/SalaryTemplateMapper.xml index bb4eda856..bf3fc220f 100644 --- a/src/com/engine/salary/mapper/salarybill/SalaryTemplateMapper.xml +++ b/src/com/engine/salary/mapper/salarybill/SalaryTemplateMapper.xml @@ -316,6 +316,9 @@ AND delete_type = #{deleteType} + + AND auto_send_status = #{autoSendStatus} + AND salary_sob_id IN @@ -496,13 +499,13 @@ replenish_salary_item_setting=#{replenishSalaryItemSetting}, - + auto_send_status=#{autoSendStatus}, - + auto_send_day_of_month=#{autoSendDayOfMonth}, - + auto_send_time_of_day=#{autoSendTimeOfDay}, diff --git a/src/com/engine/salary/service/SalarySendService.java b/src/com/engine/salary/service/SalarySendService.java index 36864da21..f8c301c1d 100644 --- a/src/com/engine/salary/service/SalarySendService.java +++ b/src/com/engine/salary/service/SalarySendService.java @@ -2,6 +2,7 @@ package com.engine.salary.service; import com.engine.salary.entity.salaryBill.dto.*; import com.engine.salary.entity.salaryBill.param.*; +import com.engine.salary.entity.salaryBill.po.SalarySendInfoPO; import com.engine.salary.entity.salaryBill.po.SalarySendPO; import com.engine.salary.entity.salaryBill.po.SalaryTemplatePO; import com.engine.salary.entity.salaryacct.po.SalaryAcctEmployeePO; @@ -187,4 +188,10 @@ public interface SalarySendService { * @param param */ Boolean checkMobileCode(SMSCodeCheckParam param); + + /** + * 获取所有工资单状态为未发送、已撤回的id + * @return + */ + List getNeedSendInfoId(List salarySobIds); } diff --git a/src/com/engine/salary/service/SalaryTemplateService.java b/src/com/engine/salary/service/SalaryTemplateService.java index 6042da567..0b855e351 100644 --- a/src/com/engine/salary/service/SalaryTemplateService.java +++ b/src/com/engine/salary/service/SalaryTemplateService.java @@ -112,4 +112,9 @@ public interface SalaryTemplateService { * @return */ PageInfo listPage(SalaryTemplateQueryParam queryParam); + + /** + * 获取所有设置了定时发送的默认工资单模板 + */ + List getAutoSendTemplate(); } diff --git a/src/com/engine/salary/service/impl/SalarySendServiceImpl.java b/src/com/engine/salary/service/impl/SalarySendServiceImpl.java index 64253642f..683c8801e 100644 --- a/src/com/engine/salary/service/impl/SalarySendServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalarySendServiceImpl.java @@ -1557,4 +1557,9 @@ public class SalarySendServiceImpl extends Service implements SalarySendService return true; } + + @Override + public List getNeedSendInfoId(List salarySobIds) { + return getSalarySendInfoMapper().getNeedSendInfoId(salarySobIds); + } } diff --git a/src/com/engine/salary/service/impl/SalaryTemplateServiceImpl.java b/src/com/engine/salary/service/impl/SalaryTemplateServiceImpl.java index 8a67e9079..6241c2b13 100644 --- a/src/com/engine/salary/service/impl/SalaryTemplateServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryTemplateServiceImpl.java @@ -132,7 +132,6 @@ public class SalaryTemplateServiceImpl extends Service implements SalaryTemplate salaryTemplate.setTextContentPosition(saveParam.getTextContentPosition()); salaryTemplate.setSalaryItemNullStatus(saveParam.getSalaryItemNullStatus()?1:0); salaryTemplate.setSalaryItemZeroStatus(saveParam.getSalaryItemZeroStatus()?1:0); - salaryTemplate.setSalaryItemZeroStatus(saveParam.getSalaryItemZeroStatus()?1:0); mapper.insert(salaryTemplate); // 记录日志 // SalaryLoggerUtil.recordAddSingleLog(salaryTemplateLoggerTemplate, @@ -317,4 +316,9 @@ public class SalaryTemplateServiceImpl extends Service implements SalaryTemplate PageInfo page = SalaryPageUtil.buildPage(queryParam.getCurrent(), queryParam.getPageSize(), salaryTemplateDTOList, SalaryTemplateListDTO.class); return page; } + + @Override + public List getAutoSendTemplate() { + return mapper.listSome(SalaryTemplatePO.builder().autoSendStatus(NumberUtils.INTEGER_ONE).useType(NumberUtils.INTEGER_ONE).deleteType(NumberUtils.INTEGER_ZERO).build()); + } } diff --git a/src/com/engine/salary/timer/AutoSendSalaryJob.java b/src/com/engine/salary/timer/AutoSendSalaryJob.java new file mode 100644 index 000000000..bcc538a1f --- /dev/null +++ b/src/com/engine/salary/timer/AutoSendSalaryJob.java @@ -0,0 +1,80 @@ +package com.engine.salary.timer; + +import com.engine.common.util.ServiceUtil; +import com.engine.salary.entity.salaryBill.param.SalarySendGrantParam; +import com.engine.salary.entity.salaryBill.po.SalarySendInfoPO; +import com.engine.salary.entity.salaryBill.po.SalaryTemplatePO; +import com.engine.salary.service.SalaryBillService; +import com.engine.salary.service.SalarySendService; +import com.engine.salary.service.SalaryTemplateService; +import com.engine.salary.service.impl.SalaryBillServiceImpl; +import com.engine.salary.service.impl.SalarySendServiceImpl; +import com.engine.salary.service.impl.SalaryTemplateServiceImpl; +import com.engine.salary.util.SalaryDateUtil; +import com.engine.salary.util.SalaryEntityUtil; +import weaver.hrm.User; +import weaver.interfaces.schedule.BaseCronJob; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.util.*; +import java.util.stream.Collectors; + +/** + * @author Harryxzy + * @ClassName AutoSendSalaryJob + * @date 2023/07/03 10:39 + * @description 自动发送工资单 + */ +public class AutoSendSalaryJob extends BaseCronJob { + + private SalarySendService getSalarySendService(User user) { + return ServiceUtil.getService(SalarySendServiceImpl.class, user); + } + + private SalaryTemplateService getSalaryTemplateService(User user) { + return ServiceUtil.getService(SalaryTemplateServiceImpl.class, user); + } + + private SalaryBillService getSalaryBillService(User user) { + return ServiceUtil.getService(SalaryBillServiceImpl.class, user); + } + + @Override + public void execute() { + User tempUser = new User(); + tempUser.setUid(1); + tempUser.setLoginid("sysadmin"); + // 获取所有设置了定时发送的默认工资单模板 + List autoSendTemplate = getSalaryTemplateService(tempUser).getAutoSendTemplate(); + LocalDateTime nowLocalDateTime = SalaryDateUtil.dateToLocalDateTime(new Date()); + LocalDate autoSendDate = SalaryDateUtil.dateToLocalDate(new Date()); + SimpleDateFormat timeFormat = new SimpleDateFormat("HH:mm"); + List needSendSobIds = autoSendTemplate.stream().filter(po -> { + int maxDays = autoSendDate.lengthOfMonth(); + Integer sendDays = Integer.valueOf(po.getAutoSendDayOfMonth()); + if (sendDays.intValue() > maxDays) { + sendDays = maxDays; + } + LocalDate autoSendlocalDate = autoSendDate.withDayOfMonth(sendDays); + LocalDateTime autoSendDateTime = null; + try { + autoSendDateTime = autoSendlocalDate.atTime(SalaryDateUtil.dateToLocalDateTime(timeFormat.parse(po.getAutoSendTimeOfDay())).toLocalTime()); + } catch (ParseException e) { + throw new RuntimeException(e); + } + if (!autoSendDateTime.isAfter(nowLocalDateTime)) { + return true; + } + return false; + }).map(SalaryTemplatePO::getSalarySobId).collect(Collectors.toList()); + // 获取工资单状态为未发送、已撤回的发放id(且工资单类型为正常,未冻结) + List needSendList = getSalarySendService(tempUser).getNeedSendInfoId(needSendSobIds); + Map> sendMap = SalaryEntityUtil.group2Map(needSendList, SalarySendInfoPO::getSalarySendId, SalarySendInfoPO::getId); + for(Map.Entry> entry : sendMap.entrySet()){ + getSalaryBillService(tempUser).grant(SalarySendGrantParam.builder().salarySendId(entry.getKey()).ids(new ArrayList(entry.getValue())).build()); + } + } +} From 82ab6c1e1108204f6e11107252b7a30279a24d47 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Tue, 4 Jul 2023 09:32:12 +0800 Subject: [PATCH 14/52] =?UTF-8?q?=E9=9D=9E=E7=B3=BB=E7=BB=9F=E7=AE=97?= =?UTF-8?q?=E7=A8=8E=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salaryacct/bo/SalaryAcctCalculateBO.java | 6 ++ .../salaryacct/SalaryAcctManager.java | 13 +++- .../impl/SalaryAcctCalculateServiceImpl.java | 3 +- .../impl/SalaryAcctResultServiceImpl.java | 8 ++- .../service/impl/SalarySobServiceImpl.java | 60 ++++++++++++------- .../sys/enums/TaxDeclarationFunctionEnum.java | 6 +- .../web/SalarySystemConfigController.java | 2 +- 7 files changed, 67 insertions(+), 31 deletions(-) diff --git a/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctCalculateBO.java b/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctCalculateBO.java index 5244de8c0..22af2b674 100644 --- a/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctCalculateBO.java +++ b/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctCalculateBO.java @@ -10,6 +10,7 @@ import com.engine.salary.entity.salarysob.dto.SalarySobCycleDTO; import com.engine.salary.entity.salarysob.po.SalarySobAdjustRulePO; import com.engine.salary.entity.salarysob.po.SalarySobItemPO; import com.engine.salary.entity.salarysob.po.SalarySobPO; +import com.engine.salary.sys.enums.TaxDeclarationFunctionEnum; import lombok.AllArgsConstructor; import lombok.Data; import lombok.experimental.Accessors; @@ -119,6 +120,11 @@ public class SalaryAcctCalculateBO { */ private BlockingDeque results; + /** + * 系统算税启用状态 + */ + private TaxDeclarationFunctionEnum taxDeclarationFunction; + @Data @AllArgsConstructor public static class Result { diff --git a/src/com/engine/salary/maintainer/salaryacct/SalaryAcctManager.java b/src/com/engine/salary/maintainer/salaryacct/SalaryAcctManager.java index 200da6442..207bd1649 100644 --- a/src/com/engine/salary/maintainer/salaryacct/SalaryAcctManager.java +++ b/src/com/engine/salary/maintainer/salaryacct/SalaryAcctManager.java @@ -22,6 +22,9 @@ import com.engine.salary.exception.SalaryRunTimeException; import com.engine.salary.mapper.salaryacct.SalaryAcctResultMapper; import com.engine.salary.service.*; import com.engine.salary.service.impl.*; +import com.engine.salary.sys.enums.TaxDeclarationFunctionEnum; +import com.engine.salary.sys.service.SalarySysConfService; +import com.engine.salary.sys.service.impl.SalarySysConfServiceImpl; import com.engine.salary.util.SalaryEntityUtil; import com.engine.salary.util.SalaryI18nUtil; import com.engine.salary.util.db.MapperProxyFactory; @@ -140,6 +143,11 @@ public class SalaryAcctManager extends Service { return ServiceUtil.getService(SalarySobBackItemServiceImpl.class, user); } + private SalarySysConfService getSalarySysConfService(User user) { + return ServiceUtil.getService(SalarySysConfServiceImpl.class, user); + } + + /** * 补充核算 @@ -307,6 +315,8 @@ public class SalaryAcctManager extends Service { BlockingDeque calculateResults = new LinkedBlockingDeque<>(partition.size()); // 12.3、生成本次运算的key String calculateKey = UUID.randomUUID().toString(); + // 12.4、是否采用系统算税 + TaxDeclarationFunctionEnum taxDeclarationFunction = getSalarySysConfService(user).getTaxDeclaration(); // 12.4、多线程运算,运算结果存放在临时表中 for (List acctEmployeePOS : partition) { SalaryAcctCalculateBO salaryAcctCalculateBO = new SalaryAcctCalculateBO() @@ -327,7 +337,8 @@ public class SalaryAcctManager extends Service { .setIssuedFieldIds(issuedFieldIds) .setChildMonitor(childMonitor) .setResults(calculateResults) - .setCalculateKey(calculateKey); + .setCalculateKey(calculateKey) + .setTaxDeclarationFunction(taxDeclarationFunction); List finalSalarySobBackItems = salarySobBackItems; LocalRunnable localRunnable = new LocalRunnable() { @Override diff --git a/src/com/engine/salary/service/impl/SalaryAcctCalculateServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctCalculateServiceImpl.java index 69eb5b02e..8c46d7627 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctCalculateServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctCalculateServiceImpl.java @@ -25,6 +25,7 @@ import com.engine.salary.entity.salarysob.po.SalarySobItemPO; import com.engine.salary.enums.salaryformula.SalaryFormulaReferenceEnum; import com.engine.salary.formlua.entity.standard.ExcelResult; import com.engine.salary.service.*; +import com.engine.salary.sys.enums.TaxDeclarationFunctionEnum; import com.engine.salary.util.SalaryEntityUtil; import com.google.common.collect.Lists; import lombok.extern.slf4j.Slf4j; @@ -309,7 +310,7 @@ public class SalaryAcctCalculateServiceImpl extends Service implements SalaryAcc */ private String handleConsolidatedTax(String resultValue, SalaryItemPO salaryItemPO, SalaryAcctCalculateBO salaryAcctCalculateBO, List otherSalaryAcctEmployeePOS, List otherSalaryAcctResultPOS) { // 如果相同税款所属期内没有其他薪资核算人员,就不存在合并计税 - if (CollectionUtils.isEmpty(otherSalaryAcctEmployeePOS) || CollectionUtils.isEmpty(otherSalaryAcctResultPOS)) { + if (salaryAcctCalculateBO.getTaxDeclarationFunction() == TaxDeclarationFunctionEnum.CLOSURE || CollectionUtils.isEmpty(otherSalaryAcctEmployeePOS) || CollectionUtils.isEmpty(otherSalaryAcctResultPOS)) { return resultValue; } // 相同税款所属期内其他薪资核算记录 diff --git a/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java index 0fbcf6ee6..c2b522a62 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java @@ -35,6 +35,7 @@ import com.engine.salary.report.service.impl.SalaryStatisticsReportServiceImpl; import com.engine.salary.service.*; import com.engine.salary.sys.constant.SalarySysConstant; import com.engine.salary.sys.entity.po.SalarySysConfPO; +import com.engine.salary.sys.enums.TaxDeclarationFunctionEnum; import com.engine.salary.sys.service.SalarySysConfService; import com.engine.salary.sys.service.impl.SalarySysConfServiceImpl; import com.engine.salary.util.SalaryDateUtil; @@ -754,7 +755,9 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe BlockingDeque calculateResults = new LinkedBlockingDeque<>(partition.size()); // 12.3、生成本次运算的key String calculateKey = UUID.randomUUID().toString(); - // 12.4、多线程运算,运算结果存放在临时表中 + // 12.4、是否采用系统算税 + TaxDeclarationFunctionEnum taxDeclarationFunction = getSalarySysConfService(user).getTaxDeclaration(); + // 12.5、多线程运算,运算结果存放在临时表中 for (List acctEmployeePOS : partition) { SalaryAcctCalculateBO salaryAcctCalculateBO = new SalaryAcctCalculateBO() .setSalaryAcctRecordPO(salaryAcctRecordPO) @@ -774,7 +777,8 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe .setIssuedFieldIds(issuedFieldIds) .setChildMonitor(childMonitor) .setResults(calculateResults) - .setCalculateKey(calculateKey); + .setCalculateKey(calculateKey) + .setTaxDeclarationFunction(taxDeclarationFunction); List finalSalarySobBackItems = salarySobBackItems; LocalRunnable localRunnable = new LocalRunnable() { @Override diff --git a/src/com/engine/salary/service/impl/SalarySobServiceImpl.java b/src/com/engine/salary/service/impl/SalarySobServiceImpl.java index f10e53149..1cf4943b6 100644 --- a/src/com/engine/salary/service/impl/SalarySobServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalarySobServiceImpl.java @@ -26,6 +26,9 @@ import com.engine.salary.enums.salarysob.SalaryEmployeeStatusEnum; import com.engine.salary.exception.SalaryRunTimeException; import com.engine.salary.mapper.salarysob.SalarySobMapper; import com.engine.salary.service.*; +import com.engine.salary.sys.enums.TaxDeclarationFunctionEnum; +import com.engine.salary.sys.service.SalarySysConfService; +import com.engine.salary.sys.service.impl.SalarySysConfServiceImpl; import com.engine.salary.util.SalaryEntityUtil; import com.engine.salary.util.SalaryI18nUtil; import com.engine.salary.util.db.MapperProxyFactory; @@ -117,6 +120,9 @@ public class SalarySobServiceImpl extends Service implements SalarySobService { return ServiceUtil.getService(SalaryTemplateServiceImpl.class, user); } + private SalarySysConfService getSalarySysConfService(User user) { + return ServiceUtil.getService(SalarySysConfServiceImpl.class, user); + } @Override @@ -310,6 +316,14 @@ public class SalarySobServiceImpl extends Service implements SalarySobService { IncomeCategoryEnum incomeCategoryEnum = IncomeCategoryEnum.parseByValue(salarySobPO.getIncomeCategory()); List salarySobDefaultItemGroupPOS = defaultItemGroupBiz.listByIncomeCategory(incomeCategoryEnum); List salarySobDefaultItemPOS = salarySobDefaultItemService.listByIncomeCategory(SalarySobDefaultItemPO.builder().incomeCategory(incomeCategoryEnum.getValue()).build()); + + //是否需要系统算税,不需要则去除系统项目 + TaxDeclarationFunctionEnum taxDeclarationFunctionEnum = getSalarySysConfService(user).getTaxDeclaration(); + if (taxDeclarationFunctionEnum == TaxDeclarationFunctionEnum.CLOSURE) { + salarySobDefaultItemGroupPOS = new ArrayList<>(); + salarySobDefaultItemPOS = new ArrayList<>(); + } + // 2、薪资账套默认引用的系统薪资项目如果没有添加到薪资项目中,这里要给添加保存 // 2.1、查询已经添加到薪资项目中的系统薪资项目 Set defaultSysSalaryItemIds = SalaryEntityUtil.properties(salarySobDefaultItemPOS, SalarySobDefaultItemPO::getSysSalaryItemId); @@ -325,7 +339,7 @@ public class SalarySobServiceImpl extends Service implements SalarySobService { .filter(sysSalaryItemId -> !sysSalaryItemIds.contains(sysSalaryItemId)) .collect(Collectors.toSet()); // 需要添加进薪资项目中的回算薪资项目 - needAddSysSalaryItemIds.addAll( SalarySobBackItemIds.stream().filter(salarySobBackItemId -> !sysSalaryItemIds.contains(salarySobBackItemId)).collect(Collectors.toList()) ); + needAddSysSalaryItemIds.addAll(SalarySobBackItemIds.stream().filter(salarySobBackItemId -> !sysSalaryItemIds.contains(salarySobBackItemId)).collect(Collectors.toList())); List needAddSysSalaryItemPOS = getSysSalaryItemService(user).listByIds(needAddSysSalaryItemIds); // 2.3、需要保存的薪资项目 List needInsertSalaryItemPOS = SysSalaryItemBO.convert2SalaryItemPO(needAddSysSalaryItemPOS, (long) user.getUID()); @@ -361,8 +375,8 @@ public class SalarySobServiceImpl extends Service implements SalarySobService { } /** - * @description 新建薪资账套时,保存默认的关联人员范围及从范围中排除 * @return void + * @description 新建薪资账套时,保存默认的关联人员范围及从范围中排除 * @author Harryxzy * @date 2022/10/9 15:30 */ @@ -372,16 +386,16 @@ public class SalarySobServiceImpl extends Service implements SalarySobService { queryParam.setCurrent(1); queryParam.setPageSize(100000); List includeList = (List) getTaxAgentManageRangeService(user).listPageByParamAndIncludeType(queryParam, NumberUtils.INTEGER_ONE).getList(); - includeList.stream().forEach(item->{ + includeList.stream().forEach(item -> { item.setEmployeeStatus(parseEnum2ValueStr(item.getEmployeeStatus())); }); // 获取从范围中排除 List excludeList = (List) getTaxAgentManageRangeService(user).listPageByParamAndIncludeType(queryParam, NumberUtils.INTEGER_ZERO).getList(); - excludeList.stream().forEach(item->{ + excludeList.stream().forEach(item -> { item.setEmployeeStatus(parseEnum2ValueStr(item.getEmployeeStatus())); }); // 将TaxAgentManageRangeListDTO转换为SalarySobRangePO - List rangeList = convert2SalarySobRangePO(salarySobPO.getId(),includeList,excludeList); + List rangeList = convert2SalarySobRangePO(salarySobPO.getId(), includeList, excludeList); // 保存SalarySobRangePO if (CollectionUtils.isNotEmpty(rangeList)) { salarySobRangeBiz.batchInsert(rangeList); @@ -391,16 +405,16 @@ public class SalarySobServiceImpl extends Service implements SalarySobService { /** - * @description 将TaxAgentManageRangeListDTO转换为SalarySobRangePO * @return List + * @description 将TaxAgentManageRangeListDTO转换为SalarySobRangePO * @author Harryxzy * @date 2022/10/9 16:06 */ - private List convert2SalarySobRangePO(Long salarySobID,List includeList, List excludeList) { + private List convert2SalarySobRangePO(Long salarySobID, List includeList, List excludeList) { Date now = new Date(); ArrayList result = new ArrayList(); // 关联人员范围 - includeList.stream().forEach(item->{ + includeList.stream().forEach(item -> { SalarySobRangePO salarySobRangePO = SalarySobRangePO.builder() .salarySobId(salarySobID) .targetType(item.getTargetType().getValue()) @@ -416,7 +430,7 @@ public class SalarySobServiceImpl extends Service implements SalarySobService { result.add(salarySobRangePO); }); // 从范围中排除 - excludeList.stream().forEach(item->{ + excludeList.stream().forEach(item -> { SalarySobRangePO salarySobRangePO = SalarySobRangePO.builder() .salarySobId(salarySobID) .targetType(item.getTargetType().getValue()) @@ -436,8 +450,8 @@ public class SalarySobServiceImpl extends Service implements SalarySobService { /** - * @description 将枚举的defaultLabel转换为value * @return String + * @description 将枚举的defaultLabel转换为value * @author Harryxzy * @date 2022/10/9 16:56 */ @@ -445,10 +459,10 @@ public class SalarySobServiceImpl extends Service implements SalarySobService { String[] split = employeeStatus.split(","); StringBuilder sb = new StringBuilder(); for (SalaryEmployeeStatusEnum statusEnum : SalaryEmployeeStatusEnum.values()) { - for(int i =0;i salaryTemplatePOS = getSalaryTemplateService(user).getBySalarySobIds(ids); - if(CollectionUtils.isNotEmpty(salaryTemplatePOS)){ + if (CollectionUtils.isNotEmpty(salaryTemplatePOS)) { throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(99713, "账套存在工资单模板,不能删除,请先删除该账套所对应的工资单模板")); } @@ -605,7 +619,7 @@ public class SalarySobServiceImpl extends Service implements SalarySobService { if (CollectionUtils.isNotEmpty(salarySobPOS)) { throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98403, "薪资账套名称已存在")); } - + Boolean openDevolution = getTaxAgentService(user).isOpenDevolution(); if (openDevolution) { Collection taxAgentPOS = getTaxAgentService(user).listAllTaxAgentsAsAdmin((long) user.getUID()); @@ -664,7 +678,7 @@ public class SalarySobServiceImpl extends Service implements SalarySobService { } // 复制薪资账套的回算薪资项目 - if (CollectionUtils.isNotEmpty(result.getSalarySobBackItems())){ + if (CollectionUtils.isNotEmpty(result.getSalarySobBackItems())) { getSalarySobBackItemService(user).batchInsert(result.getSalarySobBackItems()); } @@ -672,7 +686,7 @@ public class SalarySobServiceImpl extends Service implements SalarySobService { if (CollectionUtils.isNotEmpty(result.getSalarySobItems())) { List salarySobItems = result.getSalarySobItems(); Date now = new Date(); - salarySobItems.stream().forEach(k->{ + salarySobItems.stream().forEach(k -> { Long salarySobItemShowId = IdGenerator.generate(); SalarySobItemHidePO salarySobItemHidePO = SalarySobItemHidePO.builder() .id(salarySobItemShowId) @@ -680,13 +694,13 @@ public class SalarySobServiceImpl extends Service implements SalarySobService { .salaryItemId(k.getSalaryItemId()) .isGroup(0) .itemHide(k.getItemHide()) - .creator((long)user.getUID()) + .creator((long) user.getUID()) .deleteType(NumberUtils.INTEGER_ZERO) .createTime(now) .updateTime(now) .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) .build(); - if(k.getItemHide()==null){ + if (k.getItemHide() == null) { salarySobItemHidePO.setItemHide(Long.valueOf(0)); } salarySobItemService.InsertItemShow(salarySobItemHidePO); @@ -702,7 +716,7 @@ public class SalarySobServiceImpl extends Service implements SalarySobService { if (CollectionUtils.isNotEmpty(result.getSalarySobItemGroups())) { List salarySobItemGroups = result.getSalarySobItemGroups(); Date now = new Date(); - salarySobItemGroups.stream().forEach(k->{ + salarySobItemGroups.stream().forEach(k -> { Long salarySobItemShowId = IdGenerator.generate(); SalarySobItemHidePO salarySobItemHidePO = SalarySobItemHidePO.builder() .id(salarySobItemShowId) @@ -710,13 +724,13 @@ public class SalarySobServiceImpl extends Service implements SalarySobService { .salaryItemId(k.getId()) .isGroup(1) .itemHide(k.getItemHide()) - .creator((long)user.getUID()) + .creator((long) user.getUID()) .deleteType(NumberUtils.INTEGER_ZERO) .createTime(now) .updateTime(now) .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) .build(); - if(k.getItemHide()==null){ + if (k.getItemHide() == null) { salarySobItemHidePO.setItemHide(Long.valueOf(0)); } salarySobItemService.InsertItemShow(salarySobItemHidePO); @@ -781,7 +795,7 @@ public class SalarySobServiceImpl extends Service implements SalarySobService { @Override public List listByTaxAgentIds(Collection taxAgentIds) { - if(CollectionUtils.isEmpty(taxAgentIds)){ + if (CollectionUtils.isEmpty(taxAgentIds)) { return new ArrayList<>(); } return getSalarySobMapper().listSome(SalarySobPO.builder().taxAgentIds(taxAgentIds).build()); diff --git a/src/com/engine/salary/sys/enums/TaxDeclarationFunctionEnum.java b/src/com/engine/salary/sys/enums/TaxDeclarationFunctionEnum.java index 325c5463e..9ab77c7fd 100644 --- a/src/com/engine/salary/sys/enums/TaxDeclarationFunctionEnum.java +++ b/src/com/engine/salary/sys/enums/TaxDeclarationFunctionEnum.java @@ -4,7 +4,7 @@ import com.engine.salary.enums.BaseEnum; import org.apache.commons.lang3.StringUtils; /** - * 申报功能启用枚举 + * 个税计算启用状态 *

Copyright: Copyright (c) 2022

*

Company: 泛微软件

* @@ -12,8 +12,8 @@ import org.apache.commons.lang3.StringUtils; * @version 1.0 **/ public enum TaxDeclarationFunctionEnum implements BaseEnum { - OPEN("1", "开启申报功能", 1), - CLOSURE("0", "关闭申报功能", 1), + OPEN("1", "开启", 1), + CLOSURE("0", "关闭", 1), REBOOT("2", "重启", 1); private String value; diff --git a/src/com/engine/salary/web/SalarySystemConfigController.java b/src/com/engine/salary/web/SalarySystemConfigController.java index e747d7393..a50ca3a12 100644 --- a/src/com/engine/salary/web/SalarySystemConfigController.java +++ b/src/com/engine/salary/web/SalarySystemConfigController.java @@ -47,7 +47,7 @@ public class SalarySystemConfigController { } /** - * 申报前置 + * 是否开启系统算税 * * @param request * @param response From c8cf6090ff9de13716e5cad36b2392d89374051b Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Tue, 4 Jul 2023 13:21:19 +0800 Subject: [PATCH 15/52] =?UTF-8?q?=E7=B3=BB=E7=BB=9F=E8=96=AA=E8=B5=84?= =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E5=8F=AF=E9=85=8D=E7=BD=AE=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E3=80=81=E5=B7=A5=E8=B5=84=E5=8D=95=E6=A8=A1=E6=9D=BF=E9=BB=98?= =?UTF-8?q?=E8=AE=A4=E6=B2=A1=E6=9C=89=E9=9A=90=E8=97=8F=E9=A1=B9=E7=9B=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bo/SalarySobItemAggregateBO.java | 2 +- .../salary/service/SalaryTemplateService.java | 10 ++++- .../impl/SalaryTemplateServiceImpl.java | 37 +++++++++++++++++-- .../salary/wrapper/SalaryTemplateWrapper.java | 4 +- 4 files changed, 45 insertions(+), 8 deletions(-) diff --git a/src/com/engine/salary/entity/salarysob/bo/SalarySobItemAggregateBO.java b/src/com/engine/salary/entity/salarysob/bo/SalarySobItemAggregateBO.java index 9450cb69a..940e11b29 100644 --- a/src/com/engine/salary/entity/salarysob/bo/SalarySobItemAggregateBO.java +++ b/src/com/engine/salary/entity/salarysob/bo/SalarySobItemAggregateBO.java @@ -134,7 +134,7 @@ public class SalarySobItemAggregateBO { .taxDeclarationColumn(SalaryItemBO.buildTaxDeclarationColumn(salaryItemPO.getCode())) .sortedIndex(salarySobItemPO.getSortedIndex()) .canEdit(openFormulaForcedEditing || Objects.equals(salaryItemPO.getCanEdit(), 1)) - .canDelete(salaryItemPO.getCanDelete() == null || Objects.equals(salaryItemPO.getCanDelete(), 1)) + .canDelete(openFormulaForcedEditing || salaryItemPO.getCanDelete() == null || Objects.equals(salaryItemPO.getCanDelete(), 1)) .build()); } } diff --git a/src/com/engine/salary/service/SalaryTemplateService.java b/src/com/engine/salary/service/SalaryTemplateService.java index 6042da567..5cca742e9 100644 --- a/src/com/engine/salary/service/SalaryTemplateService.java +++ b/src/com/engine/salary/service/SalaryTemplateService.java @@ -84,13 +84,21 @@ public interface SalaryTemplateService { List> selectSalarySobList(); /** - * 获取薪资项目设置 + * 获取薪资项目设置(不包含已隐藏的薪资项目、分类) * * @param salarySobId * @return */ List getSalaryItemSet(Long salarySobId, boolean isReplenish); + /** + * 获取薪资项目设置(包含已隐藏的薪资项目、分类) + * + * @param salarySobId + * @return + */ + List getSalaryItemSetContainHide(Long salarySobId, boolean isReplenish); + /** * 获取默认工资单模板 * diff --git a/src/com/engine/salary/service/impl/SalaryTemplateServiceImpl.java b/src/com/engine/salary/service/impl/SalaryTemplateServiceImpl.java index 0e270fed8..5f667cd06 100644 --- a/src/com/engine/salary/service/impl/SalaryTemplateServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryTemplateServiceImpl.java @@ -14,13 +14,13 @@ import com.engine.salary.entity.salaryBill.param.SalaryTemplateQueryParam; import com.engine.salary.entity.salaryBill.param.SalaryTemplateSaveParam; import com.engine.salary.entity.salaryBill.po.SalaryTemplatePO; import com.engine.salary.entity.salarysob.dto.SalarySobItemAggregateDTO; +import com.engine.salary.entity.salarysob.dto.SalarySobItemDTO; +import com.engine.salary.entity.salarysob.dto.SalarySobItemGroupDTO; +import com.engine.salary.entity.salarysob.po.SalarySobItemHidePO; import com.engine.salary.entity.salarysob.po.SalarySobPO; import com.engine.salary.enums.salarybill.SalaryTemplateWhetherEnum; import com.engine.salary.exception.SalaryRunTimeException; -import com.engine.salary.service.SalarySobItemService; -import com.engine.salary.service.SalarySobService; -import com.engine.salary.service.SalaryTemplateService; -import com.engine.salary.service.TaxAgentService; +import com.engine.salary.service.*; import com.engine.salary.util.SalaryEntityUtil; import com.engine.salary.util.page.PageInfo; import com.engine.salary.util.page.SalaryPageUtil; @@ -55,6 +55,10 @@ public class SalaryTemplateServiceImpl extends Service implements SalaryTemplate return ServiceUtil.getService(TaxAgentServiceImpl.class, user); } + private SalarySobItemHideService getSalarySobItemHideService(User user) { + return ServiceUtil.getService(SalarySobItemHideServiceImpl.class, user); + } + @Override public SalaryTemplatePO getById(Long id) { return mapper.getById(id); @@ -274,6 +278,31 @@ public class SalaryTemplateServiceImpl extends Service implements SalaryTemplate @Override public List getSalaryItemSet(Long salarySobId, boolean isReplenish) { + SalarySobItemAggregateDTO salarySobItemAggregate = getSalarySobItemService(user).getAggregateBySalarySobId(salarySobId); + // 处理薪资账套中隐藏的分类和项目 + // 获取关闭显示的分类 + List hideGroupIDs = getSalarySobItemHideService(user).listHideGroupBysalarySobId(SalarySobItemHidePO.builder().salarySobId(salarySobId).isGroup(1).build()); + // 过滤关闭显示的薪资项目分类 + List itemGroupDTOS = salarySobItemAggregate.getItemGroups().stream().filter(group -> !(hideGroupIDs.contains(group.getId()))).collect(Collectors.toList()); + // 获取关闭显示的薪资项目 + List hideItemIDs = getSalarySobItemHideService(user).listHideGroupBysalarySobId(SalarySobItemHidePO.builder().salarySobId(salarySobId).isGroup(0).build()); + for(SalarySobItemGroupDTO DTO : itemGroupDTOS){ + List items = DTO.getItems(); + DTO.setItems( items.stream().filter(item -> !(hideItemIDs.contains(item.getSalaryItemId()))).collect(Collectors.toList()) ); + } + itemGroupDTOS = itemGroupDTOS.stream().filter(DTO -> CollectionUtils.isNotEmpty(DTO.getItems())).collect(Collectors.toList()); + salarySobItemAggregate.setItemGroups(itemGroupDTOS); + if(hideGroupIDs.contains(0L)){ + // 隐藏了未分类 + salarySobItemAggregate.setItems(Collections.emptyList()); + }else{ + salarySobItemAggregate.setItems( salarySobItemAggregate.getItems().stream().filter( item -> !(hideItemIDs.contains(item.getSalaryItemId())) ).collect(Collectors.toList()) ); + } + return SalaryTemplateBO.convertSalarySobItemAggregateToSalaryItemSet(salarySobItemAggregate, new Long(user.getUID()), isReplenish); + } + + @Override + public List getSalaryItemSetContainHide(Long salarySobId, boolean isReplenish) { SalarySobItemAggregateDTO salarySobItemAggregate = getSalarySobItemService(user).getAggregateBySalarySobId(salarySobId); return SalaryTemplateBO.convertSalarySobItemAggregateToSalaryItemSet(salarySobItemAggregate, new Long(user.getUID()), isReplenish); } diff --git a/src/com/engine/salary/wrapper/SalaryTemplateWrapper.java b/src/com/engine/salary/wrapper/SalaryTemplateWrapper.java index 7639f4e13..998e2e667 100644 --- a/src/com/engine/salary/wrapper/SalaryTemplateWrapper.java +++ b/src/com/engine/salary/wrapper/SalaryTemplateWrapper.java @@ -415,7 +415,7 @@ public class SalaryTemplateWrapper extends Service { Boolean isReplenish = Optional.ofNullable(param.getIsReplenish()) .orElse(false); List salaryItemSet - = getSalaryTemplateService(user).getSalaryItemSet(param.getSalarySobId(), isReplenish); + = getSalaryTemplateService(user).getSalaryItemSetContainHide(param.getSalarySobId(), isReplenish); Long groupId = param.getGroupId(); return salaryItemSet.stream() .filter(s -> Objects.equals(s.getGroupId(), groupId + "")) @@ -437,7 +437,7 @@ public class SalaryTemplateWrapper extends Service { public List getSalaryGroupSet(SalaryBillSalaryGroupQueryParam param) { Boolean isReplenish = Optional.ofNullable(param.getIsReplenish()) .orElse(false); - return getSalaryTemplateService(user).getSalaryItemSet(param.getSalarySobId(), isReplenish) + return getSalaryTemplateService(user).getSalaryItemSetContainHide(param.getSalarySobId(), isReplenish) .stream() .filter(group -> !Optional.ofNullable(param.getExistSalaryGroupIds()).orElse(Collections.emptyList()) .contains(group.getGroupId()) From a5a05aabda5c47128bb41ab8ff06c0cd7edbfca3 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Tue, 4 Jul 2023 14:35:51 +0800 Subject: [PATCH 16/52] =?UTF-8?q?=E5=B7=A5=E8=B5=84=E5=8D=95=E5=AE=9A?= =?UTF-8?q?=E6=97=B6=E5=8F=91=E9=80=81fix?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/engine/salary/service/impl/SalarySendServiceImpl.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/com/engine/salary/service/impl/SalarySendServiceImpl.java b/src/com/engine/salary/service/impl/SalarySendServiceImpl.java index 683c8801e..d6e5374f0 100644 --- a/src/com/engine/salary/service/impl/SalarySendServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalarySendServiceImpl.java @@ -1560,6 +1560,9 @@ public class SalarySendServiceImpl extends Service implements SalarySendService @Override public List getNeedSendInfoId(List salarySobIds) { + if(CollectionUtils.isEmpty(salarySobIds)){ + return Collections.emptyList(); + } return getSalarySendInfoMapper().getNeedSendInfoId(salarySobIds); } } From 7f7e7cd453ce552f6e60ba4696de128c78632d91 Mon Sep 17 00:00:00 2001 From: sy Date: Tue, 4 Jul 2023 14:48:02 +0800 Subject: [PATCH 17/52] =?UTF-8?q?=E8=96=AA=E9=85=AC=E7=B3=BB=E7=BB=9F-?= =?UTF-8?q?=E8=96=AA=E8=B5=84=E6=A1=A3=E6=A1=88=EF=BC=8C=E5=AF=BC=E5=85=A5?= =?UTF-8?q?=E6=A8=A1=E6=9D=BF=E5=AD=97=E6=AE=B5=E6=8F=90=E7=A4=BA=E4=BD=8D?= =?UTF-8?q?=E7=BD=AE=E9=97=AE=E9=A2=98=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/SalaryArchiveExcelServiceImpl.java | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/com/engine/salary/service/impl/SalaryArchiveExcelServiceImpl.java b/src/com/engine/salary/service/impl/SalaryArchiveExcelServiceImpl.java index 2ce7e1916..fd43040ac 100644 --- a/src/com/engine/salary/service/impl/SalaryArchiveExcelServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryArchiveExcelServiceImpl.java @@ -388,8 +388,8 @@ public class SalaryArchiveExcelServiceImpl extends Service implements SalaryArch // 4.注释 List excelComments = Lists.newArrayList(); String requireI18n = SalaryI18nUtil.getI18nLabel(100344, "必填"); - excelComments.add(new ExcelComment(0, 0, 3, 2, requireI18n)); - excelComments.add(new ExcelComment(1, 0, 4, 2, requireI18n)); + excelComments.add(new ExcelComment(0, 0, 1, 2, requireI18n)); + excelComments.add(new ExcelComment(1, 0, 2, 2, requireI18n)); //收入所得项目 // List incomeCategoryOptions = Arrays.stream(IncomeCategoryEnum.values()).map(e -> // SalaryI18nUtil.getI18nLabel(e.getLabelId(), e.getDefaultLabel()) @@ -399,16 +399,16 @@ public class SalaryArchiveExcelServiceImpl extends Service implements SalaryArch // SalaryArchiveExcelBO.createExcelComment(excelComments, requireI18n + ',' + SalaryI18nUtil.getI18nLabel(127641, "多个账套之间用,分隔"), 0, 0, 3, 3); // int i = enableHr ? 10 : 9; if (isPendingList) { - excelComments.add(new ExcelComment(5, 0, 8, 2, SalaryI18nUtil.getI18nLabel(100458, "格式样例为'2022-01-01'、'2022/1/1'"))); + excelComments.add(new ExcelComment(6, 0, 8, 2, SalaryI18nUtil.getI18nLabel(100458, "格式样例为'2022-01-01'、'2022/1/1'"))); // excelComments.add(new ExcelComment(5, 0, 8, 2, SalaryI18nUtil.getI18nLabel(100458, "格式样例为'2022-01-01'、'2022/1/1'"))); } else if (isFixedList) { if (isInit) { - excelComments.add(new ExcelComment(5, 0, 8, 2, SalaryI18nUtil.getI18nLabel(100458, "必填,格式样例为'2022-01-01'、'2022/1/1'"))); - excelComments.add(new ExcelComment(6, 0, 9, 2, SalaryI18nUtil.getI18nLabel(100458, "格式样例为'2022-01-01'、'2022/1/1'"))); - excelComments.add(new ExcelComment(7, 0, 10, 2, SalaryI18nUtil.getI18nLabel(100458, "必填,格式样例为'2022-01-01'、'2022/1/1'"))); + excelComments.add(new ExcelComment(6, 0, 8, 2, SalaryI18nUtil.getI18nLabel(100458, "必填,格式样例为'2022-01-01'、'2022/1/1'"))); + excelComments.add(new ExcelComment(7, 0, 9, 2, SalaryI18nUtil.getI18nLabel(100458, "格式样例为'2022-01-01'、'2022/1/1'"))); + excelComments.add(new ExcelComment(8, 0, 10, 2, SalaryI18nUtil.getI18nLabel(100458, "必填,格式样例为'2022-01-01'、'2022/1/1'"))); } else if (isSalaryItemAdjust) { - excelComments.add(new ExcelComment(5, 0, 8, 2, SalaryI18nUtil.getI18nLabel(100458, "必填,可填写如:入职,转正,调薪,调岗调薪,离职,其他,初始化"))); - excelComments.add(new ExcelComment(6, 0, 9, 2, SalaryI18nUtil.getI18nLabel(100458, "必填,格式样例为'2022-01-01'、'2022/1/1'"))); + excelComments.add(new ExcelComment(6, 0, 8, 2, SalaryI18nUtil.getI18nLabel(100458, "必填,可填写如:入职,转正,调薪,调岗调薪,离职,其他,初始化"))); + excelComments.add(new ExcelComment(7, 0, 9, 2, SalaryI18nUtil.getI18nLabel(100458, "必填,格式样例为'2022-01-01'、'2022/1/1'"))); } } else if (isSuspendList) { // SalaryArchiveExcelBO.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(109736, "格式样例为'2022-01-01'、'2022/1/1'"), 0, 0, i + 1, i + 1); From c78839d8c0c70e323e5b19c3a3ed8ad1cdf1430c Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Tue, 4 Jul 2023 18:03:57 +0800 Subject: [PATCH 18/52] =?UTF-8?q?=E5=B7=A5=E8=B5=84=E5=8D=95=E5=AE=9A?= =?UTF-8?q?=E6=97=B6=E5=8F=91=E9=80=81=20=E6=B7=BB=E5=8A=A0=20=E5=8F=91?= =?UTF-8?q?=E6=94=BE=E5=91=A8=E6=9C=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dto/SalaryTemplateBaseSetDTO.java | 3 ++ .../param/SalaryTemplateSaveParam.java | 13 +++++ .../salaryBill/po/SalaryTemplatePO.java | 5 ++ .../SalaryAutoSendCycleTypeEnum.java | 54 +++++++++++++++++++ .../salarybill/SalarySendInfoMapper.java | 5 +- .../salarybill/SalarySendInfoMapper.xml | 27 +++++++--- .../salarybill/SalaryTemplateMapper.xml | 35 ++++++++++++ .../salary/service/SalarySendService.java | 11 +++- .../service/impl/SalarySendServiceImpl.java | 12 ++++- .../impl/SalaryTemplateServiceImpl.java | 2 + .../salary/timer/AutoSendSalaryJob.java | 39 ++++++++++---- 11 files changed, 185 insertions(+), 21 deletions(-) create mode 100644 src/com/engine/salary/enums/salarysend/SalaryAutoSendCycleTypeEnum.java diff --git a/src/com/engine/salary/entity/salaryBill/dto/SalaryTemplateBaseSetDTO.java b/src/com/engine/salary/entity/salaryBill/dto/SalaryTemplateBaseSetDTO.java index aaac80788..972855750 100644 --- a/src/com/engine/salary/entity/salaryBill/dto/SalaryTemplateBaseSetDTO.java +++ b/src/com/engine/salary/entity/salaryBill/dto/SalaryTemplateBaseSetDTO.java @@ -58,6 +58,9 @@ public class SalaryTemplateBaseSetDTO { // 是否启用工资单定时发送 private Boolean autoSendStatus; + // 自动发送工资单周期1:本月、2:上月 + private int autoSendCycleType; + // 每月几号自动发送工资单 private String autoSendDayOfMonth; diff --git a/src/com/engine/salary/entity/salaryBill/param/SalaryTemplateSaveParam.java b/src/com/engine/salary/entity/salaryBill/param/SalaryTemplateSaveParam.java index f979eecbc..7ddd4737d 100644 --- a/src/com/engine/salary/entity/salaryBill/param/SalaryTemplateSaveParam.java +++ b/src/com/engine/salary/entity/salaryBill/param/SalaryTemplateSaveParam.java @@ -2,6 +2,7 @@ package com.engine.salary.entity.salaryBill.param; import com.engine.salary.entity.salaryBill.dto.SalaryTemplateSalaryItemSetListDTO; import com.engine.salary.enums.salarybill.SalaryTemplateTextContentPositionEnum; +import com.engine.salary.enums.salarysend.SalaryAutoSendCycleTypeEnum; import com.engine.salary.exception.SalaryRunTimeException; import com.engine.salary.util.SalaryI18nUtil; import lombok.AllArgsConstructor; @@ -66,6 +67,9 @@ public class SalaryTemplateSaveParam { // 是否启用工资单定时发送。0:未启用、1:已启用 private Boolean autoSendStatus; + // 自动发送工资单周期1:本月、2:上月 + private SalaryAutoSendCycleTypeEnum autoSendCycleType; + // 每月几号自动发送工资单 private String autoSendDayOfMonth; @@ -130,5 +134,14 @@ public class SalaryTemplateSaveParam { if (Objects.isNull(saveParam.getAutoSendStatus())) { throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(140509, "是否启用自动发放不能为空")); } + + if (saveParam.getAutoSendStatus() == Boolean.TRUE) { + if(StringUtils.isBlank(saveParam.getAutoSendDayOfMonth())) + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(140509, "自动发放日期不能为空")); + if(Objects.isNull(saveParam.getAutoSendCycleType())) + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(140509, "自动发放周期不能为空")); + if(StringUtils.isBlank(saveParam.getAutoSendTimeOfDay())) + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(140509, "自动发放时间不能为空")); + } } } diff --git a/src/com/engine/salary/entity/salaryBill/po/SalaryTemplatePO.java b/src/com/engine/salary/entity/salaryBill/po/SalaryTemplatePO.java index acd962c1e..69e41d5cb 100644 --- a/src/com/engine/salary/entity/salaryBill/po/SalaryTemplatePO.java +++ b/src/com/engine/salary/entity/salaryBill/po/SalaryTemplatePO.java @@ -130,6 +130,11 @@ public class SalaryTemplatePO { */ private Integer autoSendStatus; + /** + * 自动发送工资单周期1:本月、2:上月 + */ + private int autoSendCycleType; + /** * 每月几号自动发送工资单 */ diff --git a/src/com/engine/salary/enums/salarysend/SalaryAutoSendCycleTypeEnum.java b/src/com/engine/salary/enums/salarysend/SalaryAutoSendCycleTypeEnum.java new file mode 100644 index 000000000..dfe02a0be --- /dev/null +++ b/src/com/engine/salary/enums/salarysend/SalaryAutoSendCycleTypeEnum.java @@ -0,0 +1,54 @@ +package com.engine.salary.enums.salarysend; + + +import com.engine.salary.enums.BaseEnum; + +import java.util.Objects; + +/** + * @ClassName SalaryAutoSendCycleTypeEnum + * @author Harryxzy + * @date 2023/7/4 17:30 + * @description 自动发送工资单周期 + */ +public enum SalaryAutoSendCycleTypeEnum implements BaseEnum { + + THIS_MONTH(1, "本月", 86072), + NEXT_MONTH(2, "下月", 86073); + + private int value; + + private String defaultLabel; + + private int labelId; + + SalaryAutoSendCycleTypeEnum(int value, String defaultLabel, int labelId) { + this.value = value; + this.defaultLabel = defaultLabel; + this.labelId = labelId; + } + + @Override + public Integer getValue() { + return value; + } + + @Override + public String getDefaultLabel() { + return defaultLabel; + } + + @Override + public Integer getLabelId() { + return labelId; + } + + public static SalaryAutoSendCycleTypeEnum parseByValue(int value) { + for (SalaryAutoSendCycleTypeEnum salaryCycleTypeEnum : SalaryAutoSendCycleTypeEnum.values()) { + if (Objects.equals(salaryCycleTypeEnum.getValue(), value)) { + return salaryCycleTypeEnum; + } + } + return null; + } +} diff --git a/src/com/engine/salary/mapper/salarybill/SalarySendInfoMapper.java b/src/com/engine/salary/mapper/salarybill/SalarySendInfoMapper.java index 5f971a4e3..c4f5f0db9 100644 --- a/src/com/engine/salary/mapper/salarybill/SalarySendInfoMapper.java +++ b/src/com/engine/salary/mapper/salarybill/SalarySendInfoMapper.java @@ -7,6 +7,7 @@ import com.engine.salary.entity.salaryBill.param.SalaryBillQueryParam; import com.engine.salary.entity.salaryBill.param.SalarySendDetailQueryParam; import com.engine.salary.entity.salaryBill.param.SalarySendInfoQueryParam; import com.engine.salary.entity.salaryBill.po.SalarySendInfoPO; +import com.engine.salary.entity.salaryBill.po.SalarySendPO; import org.apache.ibatis.annotations.Param; import java.util.Collection; @@ -100,5 +101,7 @@ public interface SalarySendInfoMapper { void deleteBySalaryAcctRecordIds(@Param("salaryAcctRecordId") Collection ids); - List getNeedSendInfoId(@Param("salarySobIds") List salarySobIds); + List getNeedSendInfoList(@Param("salarySendIds") List salarySendIds); + + List getNeedSendListBySalarySobIds(@Param("salarySobIds")List salarySobIds); } \ No newline at end of file diff --git a/src/com/engine/salary/mapper/salarybill/SalarySendInfoMapper.xml b/src/com/engine/salary/mapper/salarybill/SalarySendInfoMapper.xml index 238365585..67bcba254 100644 --- a/src/com/engine/salary/mapper/salarybill/SalarySendInfoMapper.xml +++ b/src/com/engine/salary/mapper/salarybill/SalarySendInfoMapper.xml @@ -684,18 +684,31 @@
ORDER BY id DESC - + select id,salary_send_id from hrsa_salary_send_info a - left join hrsa_salary_send b - on a.salary_send_id = b.id where a.delete_type=0 and a.send_status in (0,2) and (a.salary_acct_type!=1 or a.salary_acct_type is null) - and b.delete_type=0 - and (b.send_status != 1 or b.send_status is null) + + AND a.salary_send_id IN + + #{salarySendId} + + + + + - diff --git a/src/com/engine/salary/mapper/salarybill/SalarySendMapper.java b/src/com/engine/salary/mapper/salarybill/SalarySendMapper.java index d0da230f7..ef1e6f6cb 100644 --- a/src/com/engine/salary/mapper/salarybill/SalarySendMapper.java +++ b/src/com/engine/salary/mapper/salarybill/SalarySendMapper.java @@ -63,4 +63,6 @@ public interface SalarySendMapper { void batchHandleSalaryAcctTypeHistory(); void deleteBySalaryAcctRecordIds(@Param("salaryAcctRecordId") Collection ids); + + List getNeedSendListBySalarySobIds(@Param("salarySobIds")List salarySobIds); } \ No newline at end of file diff --git a/src/com/engine/salary/mapper/salarybill/SalarySendMapper.xml b/src/com/engine/salary/mapper/salarybill/SalarySendMapper.xml index 040f23831..5b87e3774 100644 --- a/src/com/engine/salary/mapper/salarybill/SalarySendMapper.xml +++ b/src/com/engine/salary/mapper/salarybill/SalarySendMapper.xml @@ -236,6 +236,22 @@
ORDER BY id DESC + diff --git a/src/com/engine/salary/service/impl/SalarySendServiceImpl.java b/src/com/engine/salary/service/impl/SalarySendServiceImpl.java index f9c878dff..4c5645fdc 100644 --- a/src/com/engine/salary/service/impl/SalarySendServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalarySendServiceImpl.java @@ -1571,6 +1571,6 @@ public class SalarySendServiceImpl extends Service implements SalarySendService if(CollectionUtils.isEmpty(salarySobIds)){ return Collections.emptyList(); } - return getSalarySendInfoMapper().getNeedSendListBySalarySobIds(salarySobIds); + return getSalarySendMapper().getNeedSendListBySalarySobIds(salarySobIds); } } diff --git a/src/com/engine/salary/timer/AutoSendSalaryJob.java b/src/com/engine/salary/timer/AutoSendSalaryJob.java index 064cd5093..30777f606 100644 --- a/src/com/engine/salary/timer/AutoSendSalaryJob.java +++ b/src/com/engine/salary/timer/AutoSendSalaryJob.java @@ -75,7 +75,7 @@ public class AutoSendSalaryJob extends BaseCronJob { if (sendDays.intValue() > maxDays) { sendDays = maxDays; } - autoSendDate.withDayOfMonth(sendDays); + autoSendDate = autoSendDate.withDayOfMonth(sendDays); LocalDateTime autoSendDateTime = null; try { // 加上时间 From 40fc4ea13cdc8e757eee77e7cb79ea32a1862eb2 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Wed, 5 Jul 2023 11:39:54 +0800 Subject: [PATCH 21/52] =?UTF-8?q?=E5=B7=A5=E8=B5=84=E5=8D=95=E5=AE=9A?= =?UTF-8?q?=E6=97=B6=E5=8F=91=E9=80=81=20=E8=B0=83=E6=95=B4=E5=91=A8?= =?UTF-8?q?=E6=9C=9F=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salary/entity/salaryBill/dto/SalaryTemplateBaseSetDTO.java | 2 +- .../salary/entity/salaryBill/param/SalaryTemplateSaveParam.java | 2 +- .../engine/salary/entity/salaryBill/po/SalaryTemplatePO.java | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/com/engine/salary/entity/salaryBill/dto/SalaryTemplateBaseSetDTO.java b/src/com/engine/salary/entity/salaryBill/dto/SalaryTemplateBaseSetDTO.java index 972855750..b09f269b0 100644 --- a/src/com/engine/salary/entity/salaryBill/dto/SalaryTemplateBaseSetDTO.java +++ b/src/com/engine/salary/entity/salaryBill/dto/SalaryTemplateBaseSetDTO.java @@ -59,7 +59,7 @@ public class SalaryTemplateBaseSetDTO { private Boolean autoSendStatus; // 自动发送工资单周期1:本月、2:上月 - private int autoSendCycleType; + private Integer autoSendCycleType; // 每月几号自动发送工资单 private String autoSendDayOfMonth; diff --git a/src/com/engine/salary/entity/salaryBill/param/SalaryTemplateSaveParam.java b/src/com/engine/salary/entity/salaryBill/param/SalaryTemplateSaveParam.java index 474b66a01..7b9b5db2c 100644 --- a/src/com/engine/salary/entity/salaryBill/param/SalaryTemplateSaveParam.java +++ b/src/com/engine/salary/entity/salaryBill/param/SalaryTemplateSaveParam.java @@ -67,7 +67,7 @@ public class SalaryTemplateSaveParam { private Boolean autoSendStatus; // 自动发送工资单周期1:本月、2:上月 - private int autoSendCycleType; + private Integer autoSendCycleType; // 每月几号自动发送工资单 private String autoSendDayOfMonth; diff --git a/src/com/engine/salary/entity/salaryBill/po/SalaryTemplatePO.java b/src/com/engine/salary/entity/salaryBill/po/SalaryTemplatePO.java index 69e41d5cb..f5c416305 100644 --- a/src/com/engine/salary/entity/salaryBill/po/SalaryTemplatePO.java +++ b/src/com/engine/salary/entity/salaryBill/po/SalaryTemplatePO.java @@ -133,7 +133,7 @@ public class SalaryTemplatePO { /** * 自动发送工资单周期1:本月、2:上月 */ - private int autoSendCycleType; + private Integer autoSendCycleType; /** * 每月几号自动发送工资单 From fa28db9c797ccfb33491ce86ee281cc675c25830 Mon Sep 17 00:00:00 2001 From: sy Date: Fri, 7 Jul 2023 10:15:23 +0800 Subject: [PATCH 22/52] =?UTF-8?q?=E8=96=AA=E9=85=AC=E7=B3=BB=E7=BB=9F-?= =?UTF-8?q?=E8=96=AA=E8=B5=84=E6=A0=B8=E7=AE=97=EF=BC=8C=E9=AB=98=E7=BA=A7?= =?UTF-8?q?=E6=90=9C=E7=B4=A2=E5=92=8C=E5=AF=BC=E5=87=BA=E5=B8=A6=E5=85=A5?= =?UTF-8?q?=E7=AD=9B=E9=80=89=E6=9D=A1=E4=BB=B6=E6=9C=AA=E7=94=9F=E6=95=88?= =?UTF-8?q?=E9=97=AE=E9=A2=98=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapper/salaryacct/SalaryAcctEmployeeMapper.xml | 14 ++++++++++++++ .../engine/salary/web/SalaryAcctController.java | 8 ++++++++ 2 files changed, 22 insertions(+) diff --git a/src/com/engine/salary/mapper/salaryacct/SalaryAcctEmployeeMapper.xml b/src/com/engine/salary/mapper/salaryacct/SalaryAcctEmployeeMapper.xml index f141c8728..f414ff60f 100644 --- a/src/com/engine/salary/mapper/salaryacct/SalaryAcctEmployeeMapper.xml +++ b/src/com/engine/salary/mapper/salaryacct/SalaryAcctEmployeeMapper.xml @@ -579,6 +579,7 @@
@@ -592,6 +593,12 @@ AND em.workcode like '%'||#{param.workcode}||'%' + + AND em.subcompanyid1 IN + + #{subcompanyId} + + AND em.departmentid IN @@ -655,6 +662,7 @@ @@ -668,6 +676,12 @@ AND em.workcode like '%'+#{param.workcode}+'%' + + AND em.subcompanyid1 IN + + #{subcompanyId} + + AND em.departmentid IN diff --git a/src/com/engine/salary/web/SalaryAcctController.java b/src/com/engine/salary/web/SalaryAcctController.java index 8df680db0..6f06d003b 100644 --- a/src/com/engine/salary/web/SalaryAcctController.java +++ b/src/com/engine/salary/web/SalaryAcctController.java @@ -719,6 +719,14 @@ public class SalaryAcctController { if (StringUtils.isNotBlank(ids)) { param.setIds(Arrays.stream(ids.split(",")).map(Long::valueOf).collect(Collectors.toList())); } + String workcode = request.getParameter("workcode"); + if (StringUtils.isNotBlank(workcode)) { + param.setWorkcode(workcode); + } + String subcompanyIds = request.getParameter("subcompanyIds"); + if (StringUtils.isNotBlank(subcompanyIds)) { + param.setSubcompanyIds(Arrays.stream(subcompanyIds.split(",")).map(Long::valueOf).collect(Collectors.toList())); + } } From 9c34fb9497409e820a761c965bed8b62c418a2a0 Mon Sep 17 00:00:00 2001 From: sy Date: Fri, 7 Jul 2023 11:47:43 +0800 Subject: [PATCH 23/52] =?UTF-8?q?=E8=96=AA=E9=85=AC=E7=B3=BB=E7=BB=9F-?= =?UTF-8?q?=E8=96=AA=E8=B5=84=E6=A0=B8=E7=AE=97=EF=BC=8C=E6=90=9C=E7=B4=A2?= =?UTF-8?q?=E6=9D=A1=E4=BB=B6=E6=96=B0=E5=A2=9E=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entity/salaryacct/param/SalaryAcctEmployeeQueryParam.java | 1 + .../entity/salaryacct/param/SalaryAcctResultQueryParam.java | 1 + 2 files changed, 2 insertions(+) diff --git a/src/com/engine/salary/entity/salaryacct/param/SalaryAcctEmployeeQueryParam.java b/src/com/engine/salary/entity/salaryacct/param/SalaryAcctEmployeeQueryParam.java index 8320ff6bf..f713e07a4 100644 --- a/src/com/engine/salary/entity/salaryacct/param/SalaryAcctEmployeeQueryParam.java +++ b/src/com/engine/salary/entity/salaryacct/param/SalaryAcctEmployeeQueryParam.java @@ -50,6 +50,7 @@ public class SalaryAcctEmployeeQueryParam extends BaseQueryParam { */ private SalaryEmployeeStatusEnum status; + private Collection statusList; //离职日期") private LocalDateRange dismissDate; diff --git a/src/com/engine/salary/entity/salaryacct/param/SalaryAcctResultQueryParam.java b/src/com/engine/salary/entity/salaryacct/param/SalaryAcctResultQueryParam.java index 21221a4b3..6edf7ab10 100644 --- a/src/com/engine/salary/entity/salaryacct/param/SalaryAcctResultQueryParam.java +++ b/src/com/engine/salary/entity/salaryacct/param/SalaryAcctResultQueryParam.java @@ -46,6 +46,7 @@ public class SalaryAcctResultQueryParam extends BaseQueryParam { //状态 private SalaryEmployeeStatusEnum status; + private Collection statusList; //离职日期 private LocalDateRange dismissDate; From b92c7ff599bc60d1828cd765924da7288dcc3e31 Mon Sep 17 00:00:00 2001 From: sy Date: Fri, 7 Jul 2023 15:32:12 +0800 Subject: [PATCH 24/52] =?UTF-8?q?=E8=96=AA=E9=85=AC=E7=B3=BB=E7=BB=9F-?= =?UTF-8?q?=E8=96=AA=E8=B5=84=E6=A0=B8=E7=AE=97=E3=80=81=E8=96=AA=E8=B5=84?= =?UTF-8?q?=E6=A1=A3=E6=A1=88=E3=80=81=E7=A6=8F=E5=88=A9=E6=A1=A3=E6=A1=88?= =?UTF-8?q?=EF=BC=8C=E9=AB=98=E7=BA=A7=E6=90=9C=E7=B4=A2=E4=B8=AD=E7=9A=84?= =?UTF-8?q?=E7=8A=B6=E6=80=81=E6=9D=A1=E4=BB=B6=E6=94=B9=E4=B8=BA=E6=95=B0?= =?UTF-8?q?=E7=BB=84=E7=B1=BB=E5=9E=8B=E7=9A=84=E5=85=A5=E5=8F=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../param/SalaryAcctEmployeeQueryParam.java | 3 ++- .../param/SalaryAcctResultQueryParam.java | 4 +++- .../param/SalaryArchiveQueryParam.java | 2 ++ .../salaryacct/SalaryAcctEmployeeMapper.xml | 18 ++++++++++++++++++ .../salary/web/SalaryAcctController.java | 4 ++++ 5 files changed, 29 insertions(+), 2 deletions(-) diff --git a/src/com/engine/salary/entity/salaryacct/param/SalaryAcctEmployeeQueryParam.java b/src/com/engine/salary/entity/salaryacct/param/SalaryAcctEmployeeQueryParam.java index f713e07a4..cfe97aae9 100644 --- a/src/com/engine/salary/entity/salaryacct/param/SalaryAcctEmployeeQueryParam.java +++ b/src/com/engine/salary/entity/salaryacct/param/SalaryAcctEmployeeQueryParam.java @@ -50,7 +50,8 @@ public class SalaryAcctEmployeeQueryParam extends BaseQueryParam { */ private SalaryEmployeeStatusEnum status; - private Collection statusList; + //状态(多选) + private List statuses; //离职日期") private LocalDateRange dismissDate; diff --git a/src/com/engine/salary/entity/salaryacct/param/SalaryAcctResultQueryParam.java b/src/com/engine/salary/entity/salaryacct/param/SalaryAcctResultQueryParam.java index 6edf7ab10..c82ebf8af 100644 --- a/src/com/engine/salary/entity/salaryacct/param/SalaryAcctResultQueryParam.java +++ b/src/com/engine/salary/entity/salaryacct/param/SalaryAcctResultQueryParam.java @@ -10,6 +10,7 @@ import lombok.Data; import lombok.NoArgsConstructor; import java.util.Collection; +import java.util.List; /** * 薪资核算结果查询参数 @@ -46,7 +47,8 @@ public class SalaryAcctResultQueryParam extends BaseQueryParam { //状态 private SalaryEmployeeStatusEnum status; - private Collection statusList; + //状态(多选) + private List statuses; //离职日期 private LocalDateRange dismissDate; diff --git a/src/com/engine/salary/entity/salaryarchive/param/SalaryArchiveQueryParam.java b/src/com/engine/salary/entity/salaryarchive/param/SalaryArchiveQueryParam.java index c975e8283..f52e8bee2 100644 --- a/src/com/engine/salary/entity/salaryarchive/param/SalaryArchiveQueryParam.java +++ b/src/com/engine/salary/entity/salaryarchive/param/SalaryArchiveQueryParam.java @@ -48,6 +48,8 @@ public class SalaryArchiveQueryParam extends BaseQueryParam { //状态 private String userstatus; + //状态(多选) + private List statuses; //入职日期 private List hiredate; diff --git a/src/com/engine/salary/mapper/salaryacct/SalaryAcctEmployeeMapper.xml b/src/com/engine/salary/mapper/salaryacct/SalaryAcctEmployeeMapper.xml index f414ff60f..ea8fac029 100644 --- a/src/com/engine/salary/mapper/salaryacct/SalaryAcctEmployeeMapper.xml +++ b/src/com/engine/salary/mapper/salaryacct/SalaryAcctEmployeeMapper.xml @@ -528,6 +528,12 @@ #{positionId} + + AND em.status IN + + #{userStatus} + + -- 在职 AND em.status in (0,1,2,3) @@ -611,6 +617,12 @@ #{positionId}
+ + AND em.status IN + + #{userStatus} + + -- 在职 AND em.status in (0,1,2,3) @@ -694,6 +706,12 @@ #{positionId} + + AND em.status IN + + #{userStatus} + + -- 在职 AND em.status in (0,1,2,3) diff --git a/src/com/engine/salary/web/SalaryAcctController.java b/src/com/engine/salary/web/SalaryAcctController.java index 6f06d003b..d66893e72 100644 --- a/src/com/engine/salary/web/SalaryAcctController.java +++ b/src/com/engine/salary/web/SalaryAcctController.java @@ -709,6 +709,10 @@ public class SalaryAcctController { if (StringUtils.isNotBlank(status)) { param.setStatus(SalaryEmployeeStatusEnum.parseByValue(Integer.parseInt(status))); } + String statuses = request.getParameter("statuses"); + if (StringUtils.isNotBlank(statuses)) { + param.setStatuses(Arrays.stream(statuses.split(",")).map(String::valueOf).collect(Collectors.toList())); + } //fixme 日期 request.getParameter("dismissDate"); String consolidatedTaxation = request.getParameter("consolidatedTaxation"); From 584ebbc5629b6f8703b3a94d90b4e8bb139ec821 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Mon, 10 Jul 2023 11:11:52 +0800 Subject: [PATCH 25/52] =?UTF-8?q?=E6=9A=82=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../engine/salary/sys/constant/SalarySysConstant.java | 5 +++++ src/com/engine/salary/sys/entity/vo/AppSettingVO.java | 5 +++++ .../sys/service/impl/SalarySysConfServiceImpl.java | 9 +++++++++ .../engine/salary/web/SalarySystemConfigController.java | 1 + 4 files changed, 20 insertions(+) diff --git a/src/com/engine/salary/sys/constant/SalarySysConstant.java b/src/com/engine/salary/sys/constant/SalarySysConstant.java index 57f732169..adac41923 100644 --- a/src/com/engine/salary/sys/constant/SalarySysConstant.java +++ b/src/com/engine/salary/sys/constant/SalarySysConstant.java @@ -75,4 +75,9 @@ public class SalarySysConstant { * 删除薪资档案 */ public static final String SALARY_ARCHIVE_DELETE = "salaryArchiveDelete"; + + /** + * 工资单反馈 + */ + public static final String SALARY_SEND_FEEDBACK = "SALARY_SEND_FEEDBACK"; } diff --git a/src/com/engine/salary/sys/entity/vo/AppSettingVO.java b/src/com/engine/salary/sys/entity/vo/AppSettingVO.java index 6fc3e8026..a330ce08f 100644 --- a/src/com/engine/salary/sys/entity/vo/AppSettingVO.java +++ b/src/com/engine/salary/sys/entity/vo/AppSettingVO.java @@ -75,4 +75,9 @@ public class AppSettingVO { */ private String salaryArchiveDelete; + /** + * 工资单反馈 + */ + private String salarySendFeedback; + } diff --git a/src/com/engine/salary/sys/service/impl/SalarySysConfServiceImpl.java b/src/com/engine/salary/sys/service/impl/SalarySysConfServiceImpl.java index 012f92c5d..8e25225bb 100644 --- a/src/com/engine/salary/sys/service/impl/SalarySysConfServiceImpl.java +++ b/src/com/engine/salary/sys/service/impl/SalarySysConfServiceImpl.java @@ -504,6 +504,15 @@ public class SalarySysConfServiceImpl extends Service implements SalarySysConfSe appSettingVO.setSalaryArchiveDelete(salaryArchiveDeletePO.getConfValue()); } + + SalarySysConfPO salarySendFeedbackPO = salarySysConfMap.get(SALARY_SEND_FEEDBACK); + if (salarySendFeedbackPO == null ) { + // 是否开启工资单反馈,默认不开启 + appSettingVO.setSalarySendFeedback("0"); + } else { + appSettingVO.setSalarySendFeedback(salarySendFeedbackPO.getConfValue()); + } + //默认加密开启 if (StringUtils.isEmpty(appSettingVO.getIsOpenEncrypt())) { appSettingVO.setIsOpenEncrypt(OpenEnum.OPEN.getValue()); diff --git a/src/com/engine/salary/web/SalarySystemConfigController.java b/src/com/engine/salary/web/SalarySystemConfigController.java index 1f3e44cae..7ecc6f81e 100644 --- a/src/com/engine/salary/web/SalarySystemConfigController.java +++ b/src/com/engine/salary/web/SalarySystemConfigController.java @@ -63,6 +63,7 @@ public class SalarySystemConfigController { return new ResponseResult(user).run(getSalarySystemConfigWrapper(user)::operateTaxDeclarationFunction, TaxDeclarationFunctionEnum.parseByValue(param.getOperateTaxDeclaration())); } + /** * 获取系统配置 * From b705161492e7ac54fa8f0e2e9432247ec807391e Mon Sep 17 00:00:00 2001 From: sy Date: Mon, 10 Jul 2023 14:33:43 +0800 Subject: [PATCH 26/52] =?UTF-8?q?=E8=96=AA=E9=85=AC=E7=B3=BB=E7=BB=9F-?= =?UTF-8?q?=E8=96=AA=E8=B5=84=E6=A0=B8=E7=AE=97=E3=80=81=E8=96=AA=E8=B5=84?= =?UTF-8?q?=E6=A1=A3=E6=A1=88=E3=80=81=E7=A6=8F=E5=88=A9=E6=A1=A3=E6=A1=88?= =?UTF-8?q?=EF=BC=8C=E9=AB=98=E7=BA=A7=E6=90=9C=E7=B4=A2=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=E9=97=AE=E9=A2=98=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/engine/salary/biz/SIArchivesBiz.java | 9 +++++++-- .../param/InsuranceArchivesListParam.java | 1 + .../mapper/archive/SalaryArchiveMapper.xml | 20 +++++++++++++++++-- .../salaryacct/SalaryAcctEmployeeMapper.xml | 7 +++++-- .../service/impl/SIArchivesServiceImpl.java | 5 ++++- .../service/impl/SIImportServiceImpl.java | 5 ++++- .../engine/salary/web/SISchemeController.java | 6 ++++++ .../salary/web/SalaryAcctController.java | 4 ++++ .../salary/web/SalaryArchiveController.java | 4 ++++ 9 files changed, 53 insertions(+), 8 deletions(-) diff --git a/src/com/engine/salary/biz/SIArchivesBiz.java b/src/com/engine/salary/biz/SIArchivesBiz.java index dac9c3f20..51da1aa57 100644 --- a/src/com/engine/salary/biz/SIArchivesBiz.java +++ b/src/com/engine/salary/biz/SIArchivesBiz.java @@ -928,6 +928,10 @@ public class SIArchivesBiz { request.setPositions(Arrays.stream(param.getPositionsStr().split(",")).map(BigDecimal::new).collect(Collectors.toList())); } + if (StringUtils.isNotBlank(param.getStatusesStr())) { + request.setStatuses(Arrays.stream(param.getStatusesStr().split(",")).map(String::new).collect(Collectors.toList())); + } + request.setNeedAuth(param.getNeedAuth()); request.setTaxAgentEmployeeIds(param.getTaxAgentEmployeeIds()); request.setTaxAgentIds(param.getTaxAgentIds()); @@ -937,7 +941,7 @@ public class SIArchivesBiz { long startNum = (current - 1) * pageSize; param.setStartNum(startNum); param.setPageSize(pageSize); - request.setStatuses(param.getStatuses()); +// request.setStatuses(param.getStatuses()); request.setKeyword(param.getUserName()); request.setSiSchemeId(param.getSiSchemeId()); @@ -1393,8 +1397,9 @@ public class SIArchivesBiz { conditionItems.add(departmentIds); - SearchConditionItem statuses = conditionFactory.createCondition(ConditionType.SELECT, 502327, "statuses"); + SearchConditionItem statuses = conditionFactory.createCondition(ConditionType.SELECT, 502327, "statusesStr"); statuses.setInputType("select"); + statuses.setMultiple(true); statuses.setOptions(userStatusOptions); statuses.setColSpan(2); statuses.setFieldcol(16); diff --git a/src/com/engine/salary/entity/siarchives/param/InsuranceArchivesListParam.java b/src/com/engine/salary/entity/siarchives/param/InsuranceArchivesListParam.java index ad05e9702..276fd82b3 100644 --- a/src/com/engine/salary/entity/siarchives/param/InsuranceArchivesListParam.java +++ b/src/com/engine/salary/entity/siarchives/param/InsuranceArchivesListParam.java @@ -38,6 +38,7 @@ public class InsuranceArchivesListParam extends BaseQueryParam { //状态(多线)") private List statuses; + private String statusesStr; //岗位(多选)") private List positions; diff --git a/src/com/engine/salary/mapper/archive/SalaryArchiveMapper.xml b/src/com/engine/salary/mapper/archive/SalaryArchiveMapper.xml index cc03c82f0..2ae1e016f 100644 --- a/src/com/engine/salary/mapper/archive/SalaryArchiveMapper.xml +++ b/src/com/engine/salary/mapper/archive/SalaryArchiveMapper.xml @@ -154,6 +154,12 @@ AND e.status = #{param.userstatus} + + AND e.status IN + + #{userstatus} + + AND (e.companystartdate BETWEEN #{param.hiredate[0]} AND #{param.hiredate[1]}) @@ -229,7 +235,12 @@ AND e.status = #{param.userstatus} - + + AND e.status IN + + #{userstatus} + + AND (e.companystartdate BETWEEN #{param.hiredate[0]} AND #{param.hiredate[1]}) @@ -305,7 +316,12 @@ AND e.status = #{param.userstatus} - + + AND e.status IN + + #{userstatus} + + AND (e.companystartdate BETWEEN #{param.hiredate[0]} AND #{param.hiredate[1]}) diff --git a/src/com/engine/salary/mapper/salaryacct/SalaryAcctEmployeeMapper.xml b/src/com/engine/salary/mapper/salaryacct/SalaryAcctEmployeeMapper.xml index ea8fac029..c4a31854d 100644 --- a/src/com/engine/salary/mapper/salaryacct/SalaryAcctEmployeeMapper.xml +++ b/src/com/engine/salary/mapper/salaryacct/SalaryAcctEmployeeMapper.xml @@ -497,6 +497,7 @@ or (param.subcompanyIds != null and param.subcompanyIds.size()>0) or (param.departmentIds != null and param.departmentIds.size()>0) or (param.positionIds != null and param.positionIds.size()>0) + or (param.statuses != null and param.statuses.size()>0) or (param.status != null and param.status.toString != 'ALL')"> AND t.employee_id IN ( @@ -587,7 +588,8 @@ or (param.workcode != null and param.workcode != '') or (param.subcompanyIds != null and param.subcompanyIds.size()>0) or (param.departmentIds != null and param.departmentIds.size()>0) - or (param.positionIds != null and param.positionIds.size()>0) + or (param.positionIds != null and param.positionIds.size()>0) + or (param.statuses != null and param.statuses.size()>0) or (param.status != null and param.status.toString != 'ALL')"> AND t.employee_id IN ( @@ -676,7 +678,8 @@ or (param.workcode != null and param.workcode != '') or (param.subcompanyIds != null and param.subcompanyIds.size()>0) or (param.departmentIds != null and param.departmentIds.size()>0) - or (param.positionIds != null and param.positionIds.size()>0) + or (param.positionIds != null and param.positionIds.size()>0) + or (param.statuses != null and param.statuses.size()>0) or (param.status != null and param.status.toString != 'ALL')"> AND t.employee_id IN ( diff --git a/src/com/engine/salary/service/impl/SIArchivesServiceImpl.java b/src/com/engine/salary/service/impl/SIArchivesServiceImpl.java index fb00653d7..b2db613e3 100644 --- a/src/com/engine/salary/service/impl/SIArchivesServiceImpl.java +++ b/src/com/engine/salary/service/impl/SIArchivesServiceImpl.java @@ -488,7 +488,10 @@ public class SIArchivesServiceImpl extends Service implements SIArchivesService param.setDimissionDateEnd(param.getDimissionDate()[1]); } if (Objects.equals("fromQuickSearch", param.getDataSource())) { - request.setStatuses(param.getStatuses()); +// request.setStatuses(param.getStatuses()); + if (StringUtils.isNotBlank(param.getStatusesStr())) { + request.setStatuses(Arrays.stream(param.getStatusesStr().split(",")).map(String::new).collect(Collectors.toList())); + } request.setKeyword(param.getUserName()); } else { request = param; diff --git a/src/com/engine/salary/service/impl/SIImportServiceImpl.java b/src/com/engine/salary/service/impl/SIImportServiceImpl.java index ae235c3fc..ecd8f016a 100644 --- a/src/com/engine/salary/service/impl/SIImportServiceImpl.java +++ b/src/com/engine/salary/service/impl/SIImportServiceImpl.java @@ -31,6 +31,7 @@ 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.lang.StringUtils; import org.apache.ibatis.session.SqlSession; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import weaver.conn.mybatis.MyBatisFactory; @@ -103,7 +104,9 @@ public class SIImportServiceImpl extends Service implements SIImportService { param.setDimissionDateEnd(param.getDimissionDate()[1]); } if (Objects.equals("fromQuickSearch", param.getDataSource())) { - request.setStatuses(param.getStatuses()); + if (StringUtils.isNotBlank(param.getStatusesStr())) { + request.setStatuses(Arrays.stream(param.getStatusesStr().split(",")).map(String::new).collect(Collectors.toList())); + } request.setKeyword(param.getUserName()); request.setStartNum(param.getStartNum()); request.setPageSize(param.getPageSize()); diff --git a/src/com/engine/salary/web/SISchemeController.java b/src/com/engine/salary/web/SISchemeController.java index 4270508d1..9f16e9604 100644 --- a/src/com/engine/salary/web/SISchemeController.java +++ b/src/com/engine/salary/web/SISchemeController.java @@ -182,6 +182,12 @@ public class SISchemeController { if(StringUtils.isNotBlank(runStatuses)){ param.setRunStatuses( Arrays.stream(runStatuses.split(",")).map(String::valueOf).collect(Collectors.toList())); } + + String statusesStr = request.getParameter("statusesStr"); + if (StringUtils.isNotBlank(statusesStr)) { + param.setStatuses(Arrays.stream(statusesStr.split(",")).map(String::new).collect(Collectors.toList())); + } + User user = HrmUserVarify.getUser(request, response); XSSFWorkbook workbook = getService(user).export(param); String fileName ; diff --git a/src/com/engine/salary/web/SalaryAcctController.java b/src/com/engine/salary/web/SalaryAcctController.java index d66893e72..c5990e729 100644 --- a/src/com/engine/salary/web/SalaryAcctController.java +++ b/src/com/engine/salary/web/SalaryAcctController.java @@ -297,6 +297,10 @@ public class SalaryAcctController { if (StringUtils.isNotBlank(status)) { param.setStatus(SalaryEmployeeStatusEnum.parseByValue(Integer.parseInt(status))); } + String statuses = request.getParameter("statuses"); + if (StringUtils.isNotBlank(statuses)) { + param.setStatuses(Arrays.stream(statuses.split(",")).map(String::valueOf).collect(Collectors.toList())); + } //fixme 日期 request.getParameter("dismissDate"); String ids = request.getParameter("ids"); diff --git a/src/com/engine/salary/web/SalaryArchiveController.java b/src/com/engine/salary/web/SalaryArchiveController.java index 28e773578..af9aad165 100644 --- a/src/com/engine/salary/web/SalaryArchiveController.java +++ b/src/com/engine/salary/web/SalaryArchiveController.java @@ -458,6 +458,10 @@ public class SalaryArchiveController { if (StringUtils.isNotBlank(userstatus)) { param.setUserstatus(userstatus); } + String statuses = request.getParameter("statuses"); + if (StringUtils.isNotBlank(statuses)) { + param.setStatuses(Arrays.stream(statuses.split(",")).map(String::valueOf).collect(Collectors.toList())); + } String hiredate = request.getParameter("hiredate"); if (StringUtils.isNotBlank(hiredate)) { param.setHiredate(Arrays.asList(hiredate.split(","))); From e67530eb877786d9153032890294427221b700be Mon Sep 17 00:00:00 2001 From: sy Date: Mon, 10 Jul 2023 17:20:04 +0800 Subject: [PATCH 27/52] =?UTF-8?q?=E8=96=AA=E9=85=AC=E7=B3=BB=E7=BB=9F-?= =?UTF-8?q?=E7=A6=8F=E5=88=A9=E6=A1=A3=E6=A1=88=EF=BC=8C=E5=AF=BC=E5=87=BA?= =?UTF-8?q?=E5=8A=A0=E9=AB=98=E7=BA=A7=E6=90=9C=E7=B4=A2=E9=97=AE=E9=A2=98?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../engine/salary/web/SISchemeController.java | 76 +++++++++++++++---- 1 file changed, 60 insertions(+), 16 deletions(-) diff --git a/src/com/engine/salary/web/SISchemeController.java b/src/com/engine/salary/web/SISchemeController.java index 9f16e9604..842c8b0eb 100644 --- a/src/com/engine/salary/web/SISchemeController.java +++ b/src/com/engine/salary/web/SISchemeController.java @@ -21,6 +21,7 @@ import com.engine.salary.wrapper.SISchemeWrapper; import io.swagger.v3.oas.annotations.parameters.RequestBody; import org.apache.commons.lang3.StringUtils; import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import org.jetbrains.annotations.NotNull; import weaver.hrm.HrmUserVarify; import weaver.hrm.User; @@ -32,6 +33,7 @@ import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; import javax.ws.rs.core.StreamingOutput; import java.io.UnsupportedEncodingException; +import java.math.BigDecimal; import java.net.URLEncoder; import java.time.LocalDate; import java.util.Arrays; @@ -172,22 +174,7 @@ public class SISchemeController { @Path("/export") @Produces(MediaType.APPLICATION_OCTET_STREAM) public Response export(@Context HttpServletRequest request, @Context HttpServletResponse response) { - InsuranceArchivesListParam param = new InsuranceArchivesListParam(); - String ids = request.getParameter("ids"); - if(StringUtils.isNotBlank(ids)){ - param.setIds( Arrays.stream(ids.split(",")).map(Long::valueOf).collect(Collectors.toList())); - } - - String runStatuses = request.getParameter("runStatuses"); - if(StringUtils.isNotBlank(runStatuses)){ - param.setRunStatuses( Arrays.stream(runStatuses.split(",")).map(String::valueOf).collect(Collectors.toList())); - } - - String statusesStr = request.getParameter("statusesStr"); - if (StringUtils.isNotBlank(statusesStr)) { - param.setStatuses(Arrays.stream(statusesStr.split(",")).map(String::new).collect(Collectors.toList())); - } - + InsuranceArchivesListParam param = buildInsuranceArchivesListParam(request); User user = HrmUserVarify.getUser(request, response); XSSFWorkbook workbook = getService(user).export(param); String fileName ; @@ -304,6 +291,63 @@ public class SISchemeController { .header("Cache-Control", "no-cache").build(); } + @NotNull + private InsuranceArchivesListParam buildInsuranceArchivesListParam(HttpServletRequest request) { + InsuranceArchivesListParam param = new InsuranceArchivesListParam(); + + String ids = request.getParameter("ids"); + if(StringUtils.isNotBlank(ids)){ + param.setIds( Arrays.stream(ids.split(",")).map(Long::valueOf).collect(Collectors.toList())); + } + + String runStatuses = request.getParameter("runStatuses"); + if(StringUtils.isNotBlank(runStatuses)){ + param.setRunStatuses( Arrays.stream(runStatuses.split(",")).map(String::valueOf).collect(Collectors.toList())); + } + + String statusesStr = request.getParameter("statusesStr"); + if (StringUtils.isNotBlank(statusesStr)) { + param.setStatuses(Arrays.stream(statusesStr.split(",")).map(String::new).collect(Collectors.toList())); + } + String userName = request.getParameter("username"); + if (StringUtils.isNotBlank(userName)) { + param.setUserName(userName); + } + String jobNum = request.getParameter("jobNum"); + if (StringUtils.isNotBlank(jobNum)) { + param.setJobNum(jobNum); + } + String taxAgentId = request.getParameter("taxAgentId"); + if (StringUtils.isNotBlank(taxAgentId)) { + param.setTaxAgentId(Long.parseLong(taxAgentId)); + } + String departmentIds = request.getParameter("departmentIdsStr"); + if (StringUtils.isNotBlank(departmentIds)) { + param.setDepartmentIds(Arrays.stream(departmentIds.split(",")).map(BigDecimal::new).collect(Collectors.toList())); + } + String subcompanyIds = request.getParameter("subcompanyIdsStr"); + if (StringUtils.isNotBlank(subcompanyIds)) { + param.setSubcompanyIds(Arrays.stream(subcompanyIds.split(",")).map(BigDecimal::new).collect(Collectors.toList())); + } + String positions = request.getParameter("positionsStr"); + if (StringUtils.isNotBlank(positions)) { + param.setPositions(Arrays.stream(positions.split(",")).map(BigDecimal::new).collect(Collectors.toList())); + } + String siSchemeId = request.getParameter("siSchemeId"); + if (StringUtils.isNotBlank(siSchemeId)) { + param.setSiSchemeId(Long.valueOf(siSchemeId)); + } + String fundSchemeId = request.getParameter("fundSchemeId"); + if (StringUtils.isNotBlank(fundSchemeId)) { + param.setFundSchemeId(Long.valueOf(fundSchemeId)); + } + String otherSchemeId = request.getParameter("otherSchemeId"); + if (StringUtils.isNotBlank(otherSchemeId)) { + param.setOtherSchemeId(Long.valueOf(otherSchemeId)); + } + return param; + } + } From 7d9ad3d79eb242cec33684d70aa014d8f2c0ef1b Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Tue, 11 Jul 2023 10:14:28 +0800 Subject: [PATCH 28/52] =?UTF-8?q?=E4=B8=8D=E5=85=81=E8=AE=B8=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E8=96=AA=E8=B5=84=E6=A1=A3=E6=A1=88=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salary/service/impl/SalaryArchiveServiceImpl.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/com/engine/salary/service/impl/SalaryArchiveServiceImpl.java b/src/com/engine/salary/service/impl/SalaryArchiveServiceImpl.java index c92a45063..b6c786fc4 100644 --- a/src/com/engine/salary/service/impl/SalaryArchiveServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryArchiveServiceImpl.java @@ -313,9 +313,9 @@ public class SalaryArchiveServiceImpl extends Service implements SalaryArchiveSe throw new SalaryRunTimeException("薪资档案参数为空!"); } SalarySysConfPO canDelete = getSalarySysConfService(user).getOneByCode(SalarySysConstant.SALARY_ARCHIVE_DELETE); -// if(Objects.isNull(canDelete) || StringUtils.equals(canDelete.getConfValue(),"0") ){ -// throw new SalaryRunTimeException("不允许删除薪资档案,请先开启删除档案规则配置!"); -// } + if(Objects.isNull(canDelete) || StringUtils.equals(canDelete.getConfValue(),"0") ){ + throw new SalaryRunTimeException("不允许删除薪资档案,请先开启删除档案规则配置!"); + } List salaryArchiveList = getSalaryArchiveMapper().listSome(SalaryArchivePO.builder().ids(salaryArchiveIds).build()); //查询当前登录人员管理的个税扣缴义务人 From 287fcae68e73cb8ec628522f89499b4b1c4d474c Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Tue, 11 Jul 2023 10:22:14 +0800 Subject: [PATCH 29/52] =?UTF-8?q?=E5=B7=A5=E8=B5=84=E5=8D=95=E5=AE=9A?= =?UTF-8?q?=E6=97=B6=E5=8F=91=E9=80=81sql?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resource/sqlupgrade/DM/sql202307100103.sql | 16 ++++++++++++++++ resource/sqlupgrade/JC/sql202307100103.sql | 16 ++++++++++++++++ resource/sqlupgrade/Mysql/sql202307100103.sql | 5 +++++ resource/sqlupgrade/Oracle/sql202307100103.sql | 15 +++++++++++++++ .../sqlupgrade/SQLServer/sql202307100103.sql | 6 ++++++ 5 files changed, 58 insertions(+) create mode 100644 resource/sqlupgrade/DM/sql202307100103.sql create mode 100644 resource/sqlupgrade/JC/sql202307100103.sql create mode 100644 resource/sqlupgrade/Mysql/sql202307100103.sql create mode 100644 resource/sqlupgrade/Oracle/sql202307100103.sql create mode 100644 resource/sqlupgrade/SQLServer/sql202307100103.sql diff --git a/resource/sqlupgrade/DM/sql202307100103.sql b/resource/sqlupgrade/DM/sql202307100103.sql new file mode 100644 index 000000000..ffdfcf84f --- /dev/null +++ b/resource/sqlupgrade/DM/sql202307100103.sql @@ -0,0 +1,16 @@ +alter table hrsa_salary_template + add auto_send_cycle_type NUMBER null; +/ + +alter table hrsa_salary_template + add auto_send_status NUMBER null; +/ + +alter table hrsa_salary_template + add auto_send_day_of_month varchar2(200) NULL; +/ + +alter table hrsa_salary_template + add auto_send_time_of_day varchar2(200) NULL; +/ + diff --git a/resource/sqlupgrade/JC/sql202307100103.sql b/resource/sqlupgrade/JC/sql202307100103.sql new file mode 100644 index 000000000..ffdfcf84f --- /dev/null +++ b/resource/sqlupgrade/JC/sql202307100103.sql @@ -0,0 +1,16 @@ +alter table hrsa_salary_template + add auto_send_cycle_type NUMBER null; +/ + +alter table hrsa_salary_template + add auto_send_status NUMBER null; +/ + +alter table hrsa_salary_template + add auto_send_day_of_month varchar2(200) NULL; +/ + +alter table hrsa_salary_template + add auto_send_time_of_day varchar2(200) NULL; +/ + diff --git a/resource/sqlupgrade/Mysql/sql202307100103.sql b/resource/sqlupgrade/Mysql/sql202307100103.sql new file mode 100644 index 000000000..d283335e1 --- /dev/null +++ b/resource/sqlupgrade/Mysql/sql202307100103.sql @@ -0,0 +1,5 @@ +ALTER TABLE hrsa_salary_template +ADD COLUMN auto_send_status int NULL, +ADD COLUMN auto_send_cycle_type int NULL, +ADD COLUMN auto_send_day_of_month varchar(200) NULL, +ADD COLUMN auto_send_time_of_day varchar(50) NULL; \ No newline at end of file diff --git a/resource/sqlupgrade/Oracle/sql202307100103.sql b/resource/sqlupgrade/Oracle/sql202307100103.sql new file mode 100644 index 000000000..73836e82e --- /dev/null +++ b/resource/sqlupgrade/Oracle/sql202307100103.sql @@ -0,0 +1,15 @@ +alter table hrsa_salary_template + add auto_send_cycle_type NUMBER null +/ + +alter table hrsa_salary_template + add auto_send_status NUMBER null +/ + +alter table hrsa_salary_template + add auto_send_day_of_month varchar2(200) NULL +/ + +alter table hrsa_salary_template + add auto_send_time_of_day varchar2(200) NULL +/ \ No newline at end of file diff --git a/resource/sqlupgrade/SQLServer/sql202307100103.sql b/resource/sqlupgrade/SQLServer/sql202307100103.sql new file mode 100644 index 000000000..bd867842c --- /dev/null +++ b/resource/sqlupgrade/SQLServer/sql202307100103.sql @@ -0,0 +1,6 @@ +ALTER TABLE hrsa_salary_template +ADD auto_send_status int NULL, +auto_send_cycle_type int NULL, +auto_send_day_of_month varchar(200) NULL, +auto_send_time_of_day varchar(50) NULL +GO \ No newline at end of file From bb6cf386cb499ff67cfc27d0b033d608b960d956 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Tue, 11 Jul 2023 11:05:35 +0800 Subject: [PATCH 30/52] =?UTF-8?q?=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../engine/salary/biz/SysSalaryItemBiz.java | 10 +++++ .../salaryitem/SysSalaryItemMapper.java | 4 +- .../mapper/salaryitem/SysSalaryItemMapper.xml | 7 ++++ .../service/impl/SalaryItemServiceImpl.java | 38 +++++++++---------- 4 files changed, 38 insertions(+), 21 deletions(-) diff --git a/src/com/engine/salary/biz/SysSalaryItemBiz.java b/src/com/engine/salary/biz/SysSalaryItemBiz.java index 4ff63dac4..19ed10802 100644 --- a/src/com/engine/salary/biz/SysSalaryItemBiz.java +++ b/src/com/engine/salary/biz/SysSalaryItemBiz.java @@ -38,4 +38,14 @@ public class SysSalaryItemBiz { sqlSession.close(); } } + + public SysSalaryItemPO selectOneByName(String name) { + SqlSession sqlSession = MyBatisFactory.sqlSessionFactory.openSession(); + try { + SysSalaryItemMapper mapper = sqlSession.getMapper(SysSalaryItemMapper.class); + return mapper.selectOneByName(name); + } finally { + sqlSession.close(); + } + } } diff --git a/src/com/engine/salary/mapper/salaryitem/SysSalaryItemMapper.java b/src/com/engine/salary/mapper/salaryitem/SysSalaryItemMapper.java index f210fe344..baf9716cb 100644 --- a/src/com/engine/salary/mapper/salaryitem/SysSalaryItemMapper.java +++ b/src/com/engine/salary/mapper/salaryitem/SysSalaryItemMapper.java @@ -1,7 +1,6 @@ package com.engine.salary.mapper.salaryitem; import com.engine.salary.entity.salaryitem.po.SysSalaryItemPO; -import org.apache.ibatis.annotations.Mapper; import java.util.List; @@ -62,5 +61,6 @@ public interface SysSalaryItemMapper { * @return 返回影响行数 */ int delete(SysSalaryItemPO SysSalaryItemPO); - + + SysSalaryItemPO selectOneByName(String name); } \ No newline at end of file diff --git a/src/com/engine/salary/mapper/salaryitem/SysSalaryItemMapper.xml b/src/com/engine/salary/mapper/salaryitem/SysSalaryItemMapper.xml index ed5027616..f8faf9c90 100644 --- a/src/com/engine/salary/mapper/salaryitem/SysSalaryItemMapper.xml +++ b/src/com/engine/salary/mapper/salaryitem/SysSalaryItemMapper.xml @@ -609,5 +609,12 @@ AND delete_type = 0 + + \ No newline at end of file diff --git a/src/com/engine/salary/service/impl/SalaryItemServiceImpl.java b/src/com/engine/salary/service/impl/SalaryItemServiceImpl.java index 248ab4b6b..3c78cef40 100644 --- a/src/com/engine/salary/service/impl/SalaryItemServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryItemServiceImpl.java @@ -140,27 +140,27 @@ public class SalaryItemServiceImpl extends Service implements SalaryItemService .sorted(new Comparator() { @Override public int compare(SalaryItemPO o1, SalaryItemPO o2) { - if(o1 == null) + if (o1 == null) return 1; - if(o2 == null) + if (o2 == null) return -1; - if(o1 == null && o2 == null) + if (o1 == null && o2 == null) return 0; - if(o1.getSortedIndex() == null && o2.getSortedIndex() == null){ - Integer systemType1=o1.getSystemType(); - Integer systemType2=o2.getSystemType(); - if(systemType1 == null) - systemType1=0; - if(systemType2 == null) - systemType2=0; + if (o1.getSortedIndex() == null && o2.getSortedIndex() == null) { + Integer systemType1 = o1.getSystemType(); + Integer systemType2 = o2.getSystemType(); + if (systemType1 == null) + systemType1 = 0; + if (systemType2 == null) + systemType2 = 0; return systemType1.compareTo(systemType2); - }else{ - Integer sortedIndex1=o1.getSortedIndex(); - Integer sortedIndex2=o2.getSortedIndex(); - if(sortedIndex1 == null) - sortedIndex1=0; - if(sortedIndex2 == null) - sortedIndex2=0; + } else { + Integer sortedIndex1 = o1.getSortedIndex(); + Integer sortedIndex2 = o2.getSortedIndex(); + if (sortedIndex1 == null) + sortedIndex1 = 0; + if (sortedIndex2 == null) + sortedIndex2 = 0; return sortedIndex2.compareTo(sortedIndex1); } } @@ -203,8 +203,8 @@ public class SalaryItemServiceImpl extends Service implements SalaryItemService throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98326, "薪资项目名称已存在,请重新命名")); } // 名称不能和已有的系统薪资项目重名 - List sysSalaryItemPOS = sysSalaryItemBiz.listSome(SysSalaryItemPO.builder().name(saveParam.getName()).build()); - if (CollectionUtils.isNotEmpty(sysSalaryItemPOS)) { + SysSalaryItemPO sysSalaryItem = sysSalaryItemBiz.selectOneByName(saveParam.getName()); + if (sysSalaryItem != null) { throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98328, "自定义薪资项目的名称不能和系统薪资项目的名称重名")); } SalaryItemPO salaryItemPO = SalaryItemBO.convert2SalaryItemPO(saveParam, (long) user.getUID()); From 83604ba5342d005b35755317a8b170b333bc83a4 Mon Sep 17 00:00:00 2001 From: sy Date: Tue, 11 Jul 2023 11:10:32 +0800 Subject: [PATCH 31/52] =?UTF-8?q?=E8=96=AA=E9=85=AC=E7=B3=BB=E7=BB=9F-?= =?UTF-8?q?=E7=A6=8F=E5=88=A9=E5=8F=B0=E8=B4=A6=EF=BC=8C=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E5=8F=B0=E8=B4=A6=E5=88=97=E8=A1=A8=E8=BF=94=E5=9B=9E=E5=8F=B0?= =?UTF-8?q?=E8=B4=A6=E7=8A=B6=E6=80=81=E5=80=BC=E8=BF=94=E5=9B=9E=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../engine/salary/entity/siaccount/bo/InsuranceAccountBO.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/com/engine/salary/entity/siaccount/bo/InsuranceAccountBO.java b/src/com/engine/salary/entity/siaccount/bo/InsuranceAccountBO.java index cc31abebf..8aa28ab09 100644 --- a/src/com/engine/salary/entity/siaccount/bo/InsuranceAccountBO.java +++ b/src/com/engine/salary/entity/siaccount/bo/InsuranceAccountBO.java @@ -54,8 +54,8 @@ public class InsuranceAccountBO { .id(e.getId()) .accountant(e.getAccountant()) .billMonth(e.getBillMonth()) - .billStatus(queryLabelId(e.getBillStatus()).getDefaultLabel()) -// .billStatus(e.getBillStatus().toString()) +// .billStatus(queryLabelId(e.getBillStatus()).getDefaultLabel()) + .billStatus(e.getBillStatus().toString()) .fundNum(e.getFundNum()) .fundPay(SalaryEntityUtil.thousandthConvert(e.getFundPay())) .lastTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(e.getUpdateTime())) From ad37ba9af02451f6240a0611cf78e9036d30586d Mon Sep 17 00:00:00 2001 From: sy Date: Tue, 11 Jul 2023 11:30:57 +0800 Subject: [PATCH 32/52] =?UTF-8?q?=E8=96=AA=E9=85=AC=E7=B3=BB=E7=BB=9F-?= =?UTF-8?q?=E8=96=AA=E8=B5=84=E6=A1=A3=E6=A1=88=EF=BC=8C=E9=AB=98=E7=BA=A7?= =?UTF-8?q?=E6=90=9C=E7=B4=A2=E4=B8=AD=E5=B7=A5=E5=8F=B7=E3=80=81=E5=88=86?= =?UTF-8?q?=E9=83=A8=E7=AD=9B=E9=80=89=E9=97=AE=E9=A2=98=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/engine/salary/web/SalaryArchiveController.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/com/engine/salary/web/SalaryArchiveController.java b/src/com/engine/salary/web/SalaryArchiveController.java index af9aad165..a367bd940 100644 --- a/src/com/engine/salary/web/SalaryArchiveController.java +++ b/src/com/engine/salary/web/SalaryArchiveController.java @@ -442,6 +442,10 @@ public class SalaryArchiveController { if (StringUtils.isNotBlank(username)) { param.setUsername(username); } + String workcode = request.getParameter("workcode"); + if (StringUtils.isNotBlank(workcode)) { + param.setWorkcode(workcode); + } String taxAgentId = request.getParameter("taxAgentId"); if (StringUtils.isNotBlank(taxAgentId)) { param.setTaxAgentId(Long.valueOf(taxAgentId)); @@ -450,6 +454,10 @@ public class SalaryArchiveController { if (StringUtils.isNotBlank(departmentIds)) { param.setDepartmentIds(Arrays.stream(departmentIds.split(",")).map(Long::valueOf).collect(Collectors.toList())); } + String subcompanyIds = request.getParameter("subcompanyIds"); + if (StringUtils.isNotBlank(subcompanyIds)) { + param.setSubcompanyIds(Arrays.stream(subcompanyIds.split(",")).map(Long::valueOf).collect(Collectors.toList())); + } String positionIds = request.getParameter("positionIds"); if (StringUtils.isNotBlank(positionIds)) { param.setPositionIds(Arrays.stream(positionIds.split(",")).map(Long::valueOf).collect(Collectors.toList())); From fa950fb4dd45d336ed80e303516ae2dfaaae03a1 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Tue, 11 Jul 2023 13:23:07 +0800 Subject: [PATCH 33/52] =?UTF-8?q?=E8=96=AA=E8=B5=84=E9=A1=B9=E7=9B=AE?= =?UTF-8?q?=E6=8E=92=E5=BA=8F=E6=AF=94=E8=BE=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/SalaryItemServiceImpl.java | 22 ++++--------------- 1 file changed, 4 insertions(+), 18 deletions(-) diff --git a/src/com/engine/salary/service/impl/SalaryItemServiceImpl.java b/src/com/engine/salary/service/impl/SalaryItemServiceImpl.java index c2c89f31b..99b2730ab 100644 --- a/src/com/engine/salary/service/impl/SalaryItemServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryItemServiceImpl.java @@ -140,27 +140,13 @@ public class SalaryItemServiceImpl extends Service implements SalaryItemService .sorted(new Comparator() { @Override public int compare(SalaryItemPO o1, SalaryItemPO o2) { - if(o1 == null) - return 1; - if(o2 == null) - return -1; - if(o1 == null && o2 == null) - return 0; if(o1.getSortedIndex() == null && o2.getSortedIndex() == null){ - Integer systemType1=o1.getSystemType(); - Integer systemType2=o2.getSystemType(); - if(systemType1 == null) - systemType1=0; - if(systemType2 == null) - systemType2=0; + 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(); - Integer sortedIndex2=o2.getSortedIndex(); - if(sortedIndex1 == null) - sortedIndex1=0; - if(sortedIndex2 == null) - sortedIndex2=0; + Integer sortedIndex1=o1.getSortedIndex() == null ? 0 : o1.getSortedIndex(); + Integer sortedIndex2=o2.getSortedIndex() == null ? 0 : o2.getSortedIndex(); return sortedIndex2.compareTo(sortedIndex1); } } From be895829c20dae75f9cb17e8985105015821d245 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Tue, 11 Jul 2023 15:29:13 +0800 Subject: [PATCH 34/52] =?UTF-8?q?=E5=B7=A5=E8=B5=84=E5=8D=95=E5=8F=8D?= =?UTF-8?q?=E9=A6=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salaryBill/dto/SalarySendInfoListDTO.java | 6 ++ .../salaryBill/po/SalarySendInfoPO.java | 15 ++++ .../salarybill/BillConfimStatusEnum.java | 70 +++++++++++++++++++ .../enums/salarybill/BillReadStatusEnum.java | 70 +++++++++++++++++++ .../salarybill/SalarySendInfoMapper.xml | 14 +++- .../salary/service/SalaryBillService.java | 6 ++ .../impl/SalaryArchiveServiceImpl.java | 6 +- .../service/impl/SalaryBillServiceImpl.java | 13 ++++ .../service/impl/SalarySendServiceImpl.java | 41 ++++++++++- .../sys/service/SalarySysConfService.java | 6 ++ .../impl/SalarySysConfServiceImpl.java | 9 ++- .../salary/web/SalaryBillController.java | 24 +++++++ .../web/SalarySystemConfigController.java | 29 ++++++++ .../salary/wrapper/SalarySendWrapper.java | 9 ++- .../wrapper/SalarySystemConfigWrapper.java | 4 ++ 15 files changed, 312 insertions(+), 10 deletions(-) create mode 100644 src/com/engine/salary/enums/salarybill/BillConfimStatusEnum.java create mode 100644 src/com/engine/salary/enums/salarybill/BillReadStatusEnum.java diff --git a/src/com/engine/salary/entity/salaryBill/dto/SalarySendInfoListDTO.java b/src/com/engine/salary/entity/salaryBill/dto/SalarySendInfoListDTO.java index 6f976855a..ed7626794 100644 --- a/src/com/engine/salary/entity/salaryBill/dto/SalarySendInfoListDTO.java +++ b/src/com/engine/salary/entity/salaryBill/dto/SalarySendInfoListDTO.java @@ -48,6 +48,12 @@ public class SalarySendInfoListDTO { @TableTitle(title = "发送状态", dataIndex = "sendStatus", key = "sendStatus") private String sendStatus; + @TableTitle(title = "查看状态", dataIndex = "billReadStatus", key = "billReadStatus") + private String billReadStatus; + + @TableTitle(title = "确认状态", dataIndex = "billConfirmStatus", key = "billConfirmStatus") + private String billConfirmStatus; + private String email; private Long salaryAcctRecordId; /** diff --git a/src/com/engine/salary/entity/salaryBill/po/SalarySendInfoPO.java b/src/com/engine/salary/entity/salaryBill/po/SalarySendInfoPO.java index 5efa58c05..b14d9cd6a 100644 --- a/src/com/engine/salary/entity/salaryBill/po/SalarySendInfoPO.java +++ b/src/com/engine/salary/entity/salaryBill/po/SalarySendInfoPO.java @@ -52,6 +52,21 @@ public class SalarySendInfoPO { */ private Integer sendStatus; + /** + * 查看状态。0:未查看、1:已查看 + */ + private Integer billReadStatus; + + /** + * 确认状态 0:未确认、1:已确认 + */ + private Integer billConfirmStatus; + + /** + * 操作发送工资单人员id + */ + private Long sendEmployeeId; + /** * 发送时间 */ diff --git a/src/com/engine/salary/enums/salarybill/BillConfimStatusEnum.java b/src/com/engine/salary/enums/salarybill/BillConfimStatusEnum.java new file mode 100644 index 000000000..c9df6d20e --- /dev/null +++ b/src/com/engine/salary/enums/salarybill/BillConfimStatusEnum.java @@ -0,0 +1,70 @@ +package com.engine.salary.enums.salarybill; + +import com.engine.salary.enums.BaseEnum; + +import java.util.Arrays; + +/** + * @ClassName BillReadStatusEnum + * @author Harryxzy + * @date 2023/7/10 17:13 + * @description 工资单确认 + */ +public enum BillConfimStatusEnum implements BaseEnum { + + UNCONFIRMED(0, "未确认", 93286), + CONFIRMED(1, "已确认", 93212); + + private int value; + + private String defaultLabel; + + private int labelId; + + BillConfimStatusEnum(int value, String defaultLabel, int labelId) { + this.value = value; + this.defaultLabel = defaultLabel; + this.labelId = labelId; + } + + @Override + public Integer getValue() { + return value; + } + + @Override + public String getDefaultLabel() { + return defaultLabel; + } + + @Override + public Integer getLabelId() { + return labelId; + } + + public static String getDefaultLabelByValue(Integer value) { + if (value == null) { + return ""; + } + BillConfimStatusEnum[] enumAry = BillConfimStatusEnum.values(); + for(int i = 0; i < Arrays.asList(enumAry).size(); i++){ + if (Integer.valueOf(enumAry[i].getValue()).equals(value)) { + return enumAry[i].getDefaultLabel(); + } + } + return ""; + } + + public static String getNameByValue(Integer value) { + if (value == null) { + return ""; + } + BillConfimStatusEnum[] enumAry = BillConfimStatusEnum.values(); + for(int i = 0; i < Arrays.asList(enumAry).size(); i++){ + if (Integer.valueOf(enumAry[i].getValue()).equals(value)) { + return enumAry[i].name(); + } + } + return ""; + } +} diff --git a/src/com/engine/salary/enums/salarybill/BillReadStatusEnum.java b/src/com/engine/salary/enums/salarybill/BillReadStatusEnum.java new file mode 100644 index 000000000..09fd47107 --- /dev/null +++ b/src/com/engine/salary/enums/salarybill/BillReadStatusEnum.java @@ -0,0 +1,70 @@ +package com.engine.salary.enums.salarybill; + +import com.engine.salary.enums.BaseEnum; + +import java.util.Arrays; + +/** + * @ClassName BillReadStatusEnum + * @author Harryxzy + * @date 2023/7/10 17:13 + * @description 工资单查看 + */ +public enum BillReadStatusEnum implements BaseEnum { + + UNREAD(0, "未查看", 93286), + READED(1, "已查看", 93212); + + private int value; + + private String defaultLabel; + + private int labelId; + + BillReadStatusEnum(int value, String defaultLabel, int labelId) { + this.value = value; + this.defaultLabel = defaultLabel; + this.labelId = labelId; + } + + @Override + public Integer getValue() { + return value; + } + + @Override + public String getDefaultLabel() { + return defaultLabel; + } + + @Override + public Integer getLabelId() { + return labelId; + } + + public static String getDefaultLabelByValue(Integer value) { + if (value == null) { + return ""; + } + BillReadStatusEnum[] enumAry = BillReadStatusEnum.values(); + for(int i = 0; i < Arrays.asList(enumAry).size(); i++){ + if (Integer.valueOf(enumAry[i].getValue()).equals(value)) { + return enumAry[i].getDefaultLabel(); + } + } + return ""; + } + + public static String getNameByValue(Integer value) { + if (value == null) { + return ""; + } + BillReadStatusEnum[] enumAry = BillReadStatusEnum.values(); + for(int i = 0; i < Arrays.asList(enumAry).size(); i++){ + if (Integer.valueOf(enumAry[i].getValue()).equals(value)) { + return enumAry[i].name(); + } + } + return ""; + } +} diff --git a/src/com/engine/salary/mapper/salarybill/SalarySendInfoMapper.xml b/src/com/engine/salary/mapper/salarybill/SalarySendInfoMapper.xml index 0b96d4c22..0ef304bee 100644 --- a/src/com/engine/salary/mapper/salarybill/SalarySendInfoMapper.xml +++ b/src/com/engine/salary/mapper/salarybill/SalarySendInfoMapper.xml @@ -36,6 +36,9 @@ , t.delete_type , t.tenant_key , t.salary_acct_type + , t.bill_read_status + , t.bill_confirm_status + , t.send_employee_id update hrsa_salary_send_info @@ -168,6 +171,8 @@ t1.send_status, t1.employee_id, t1.salary_month, + t1.bill_read_status as billReadStatus, + t1.bill_confirm_status as billConfirmStatus, e.email @@ -709,9 +714,6 @@ salary_month=#{salaryMonth}, - - use_type=#{useType}, - salary_acct_record_id=#{salaryAcctRecordId}, @@ -745,6 +747,12 @@ tenant_key=#{tenantKey}, + + bill_read_status=#{billReadStatus}, + + + bill_confirm_status=#{billConfirmStatus}, + WHERE id = #{id} AND delete_type = 0 diff --git a/src/com/engine/salary/service/SalaryBillService.java b/src/com/engine/salary/service/SalaryBillService.java index 9a37671a0..23bd54597 100644 --- a/src/com/engine/salary/service/SalaryBillService.java +++ b/src/com/engine/salary/service/SalaryBillService.java @@ -30,6 +30,12 @@ public interface SalaryBillService { */ List> getSendInfoList(Long sendId, List ids); + /** + * 确认工资单 + * @param salaryInfoId + */ + void confirmSalaryBill(Long salaryInfoId); + /** * 工资单撤回 * diff --git a/src/com/engine/salary/service/impl/SalaryArchiveServiceImpl.java b/src/com/engine/salary/service/impl/SalaryArchiveServiceImpl.java index c92a45063..b6c786fc4 100644 --- a/src/com/engine/salary/service/impl/SalaryArchiveServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryArchiveServiceImpl.java @@ -313,9 +313,9 @@ public class SalaryArchiveServiceImpl extends Service implements SalaryArchiveSe throw new SalaryRunTimeException("薪资档案参数为空!"); } SalarySysConfPO canDelete = getSalarySysConfService(user).getOneByCode(SalarySysConstant.SALARY_ARCHIVE_DELETE); -// if(Objects.isNull(canDelete) || StringUtils.equals(canDelete.getConfValue(),"0") ){ -// throw new SalaryRunTimeException("不允许删除薪资档案,请先开启删除档案规则配置!"); -// } + if(Objects.isNull(canDelete) || StringUtils.equals(canDelete.getConfValue(),"0") ){ + throw new SalaryRunTimeException("不允许删除薪资档案,请先开启删除档案规则配置!"); + } List salaryArchiveList = getSalaryArchiveMapper().listSome(SalaryArchivePO.builder().ids(salaryArchiveIds).build()); //查询当前登录人员管理的个税扣缴义务人 diff --git a/src/com/engine/salary/service/impl/SalaryBillServiceImpl.java b/src/com/engine/salary/service/impl/SalaryBillServiceImpl.java index 8700fb87f..97b3a6e28 100644 --- a/src/com/engine/salary/service/impl/SalaryBillServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryBillServiceImpl.java @@ -24,6 +24,7 @@ import com.engine.salary.entity.salaryacct.po.SalaryAcctEmployeePO; import com.engine.salary.entity.salaryacct.po.SalaryAcctResultPO; import com.engine.salary.entity.salarysob.po.SalarySobPO; import com.engine.salary.entity.taxagent.po.TaxAgentPO; +import com.engine.salary.enums.salarybill.BillConfimStatusEnum; import com.engine.salary.enums.salarybill.MessageChannelEnum; import com.engine.salary.enums.salarybill.SalarySendStatusEnum; import com.engine.salary.enums.salarybill.SalaryTemplateWhetherEnum; @@ -42,6 +43,7 @@ import com.weaver.util.threadPool.entity.LocalRunnable; import lombok.extern.slf4j.Slf4j; import org.apache.commons.beanutils.BeanUtils; import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.math.NumberUtils; import weaver.hrm.User; @@ -426,6 +428,17 @@ public class SalaryBillServiceImpl extends Service implements SalaryBillService .buildDetailList(list, salaryAcctEmployees, salaryAcctResultValues); } + @Override + public void confirmSalaryBill(Long salaryInfoId) { + SalarySendInfoPO sendInfoPO = getSalarySendInfoMapper().getById(salaryInfoId); + if(ObjectUtils.isEmpty(sendInfoPO)){ + throw new SalaryRunTimeException("工资单不存在或已被删除!"); + } + sendInfoPO.setBillConfirmStatus(BillConfimStatusEnum.CONFIRMED.getValue()); + sendInfoPO.setUpdateTime(new Date()); + getSalarySendInfoMapper().updateIgnoreNull(sendInfoPO); + } + public List> getSendInfoList(Long sendId, List ids) { SalarySendPO salarySend = getSalarySendMapper().getById(sendId); diff --git a/src/com/engine/salary/service/impl/SalarySendServiceImpl.java b/src/com/engine/salary/service/impl/SalarySendServiceImpl.java index 4c5645fdc..6d9c2d9e5 100644 --- a/src/com/engine/salary/service/impl/SalarySendServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalarySendServiceImpl.java @@ -1,7 +1,7 @@ package com.engine.salary.service.impl; -import com.alibaba.fastjson.JSON; import cn.hutool.core.lang.Validator; +import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.api.formmode.mybatis.util.SqlProxyHandle; import com.cloudstore.dev.api.bean.MessageBean; @@ -37,6 +37,8 @@ import com.engine.salary.entity.salarysob.po.SalarySobPO; import com.engine.salary.entity.taxagent.po.TaxAgentPO; import com.engine.salary.enums.salaryaccounting.SalaryAcctRecordStatusEnum; import com.engine.salary.enums.salaryarchive.SalaryArchiveFieldTypeEnum; +import com.engine.salary.enums.salarybill.BillConfimStatusEnum; +import com.engine.salary.enums.salarybill.BillReadStatusEnum; import com.engine.salary.enums.salarybill.SalarySendStatusEnum; import com.engine.salary.enums.salarybill.SalaryTemplateReplenishRuleEnum; import com.engine.salary.enums.salaryitem.SalaryDataTypeEnum; @@ -48,6 +50,8 @@ import com.engine.salary.mapper.salaryacct.SalaryAcctResultMapper; import com.engine.salary.mapper.salarybill.SalarySendInfoMapper; import com.engine.salary.mapper.salarybill.SalarySendMapper; import com.engine.salary.service.*; +import com.engine.salary.sys.constant.SalarySysConstant; +import com.engine.salary.sys.entity.po.SalarySysConfPO; import com.engine.salary.sys.entity.vo.OrderRuleVO; import com.engine.salary.sys.service.SalarySysConfService; import com.engine.salary.sys.service.impl.SalarySysConfServiceImpl; @@ -63,12 +67,14 @@ import com.google.common.collect.Lists; import dm.jdbc.util.IdGenerator; import org.apache.commons.beanutils.BeanUtils; import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.math.NumberUtils; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import weaver.common.MessageUtil; +import weaver.general.BaseBean; import weaver.hrm.User; import weaver.hrm.company.SubCompanyComInfo; import weaver.hrm.resource.ResourceComInfo; @@ -475,6 +481,12 @@ public class SalarySendServiceImpl extends Service implements SalarySendService throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(100511, "当前账号无法查看此工资单")); } SalarySendInfoPO salarySendInfo = salarySendInfos.get(0); + // 更新查看状态 + if(salarySendInfo.getBillReadStatus() == null || NumberUtils.compare(salarySendInfo.getBillReadStatus(),BillReadStatusEnum.UNREAD.getValue()) == 0 ){ + salarySendInfo.setBillReadStatus(BillReadStatusEnum.READED.getValue()); + salarySendInfo.setUpdateTime(new Date()); + getSalarySendInfoMapper().updateIgnoreNull(salarySendInfo); + } // List salarySends = new LambdaQueryChainWrapper<>(mapper) // .eq(SalarySendPO::getDeleteType, 0) // .eq(SalarySendPO::getTenantKey, currentTenantKey) @@ -598,6 +610,12 @@ public class SalarySendServiceImpl extends Service implements SalarySendService handleSalaryWatermark(salaryTemplate, salarySendInfo, currentEmployeeId); map.put("salaryTemplate", salaryTemplate); map.put("salaryAcctResult", salaryAcctResultS); + // 工资单发送人、是否已确认 + map.put("confirmStatus", salarySendInfo.getBillConfirmStatus() == null ? "0" : salarySendInfo.getBillConfirmStatus().toString()); + map.put("sendEmployeeId", salarySendInfo.getSalarySendId()); + BaseBean baseBean = new BaseBean(); + String workFlowId = baseBean.getPropValue("hrmSalary", "feedbackWorkflowId"); + map.put("feedbackWorkflowId",workFlowId); return map; } @@ -643,8 +661,27 @@ public class SalarySendServiceImpl extends Service implements SalarySendService queryParam.setOrderRule(orderRule); List page = salarySendInfoMapper.list(queryParam); - return SalaryPageUtil.buildPage(queryParam.getCurrent(), queryParam.getPageSize(), + PageInfo pageInfo = SalaryPageUtil.buildPage(queryParam.getCurrent(), queryParam.getPageSize(), page, SalarySendInfoListDTO.class); + SalarySysConfPO needFeedBack = getSalarySysConfService(user).getOneByCode(SalarySysConstant.SALARY_SEND_FEEDBACK); + if(ObjectUtils.isNotEmpty(needFeedBack) && StringUtils.equals(needFeedBack.getConfValue(),"1")){ + // 默认为空时,未读未确认 + pageInfo.getList().stream().forEach(dto -> { + if(StringUtils.isBlank(((SalarySendInfoListDTO)dto).getBillReadStatus() )){ + ((SalarySendInfoListDTO) dto).setBillReadStatus(BillReadStatusEnum.UNREAD.getDefaultLabel()); + }else{ + ((SalarySendInfoListDTO) dto).setBillReadStatus( + BillReadStatusEnum.getDefaultLabelByValue( Integer.valueOf(((SalarySendInfoListDTO)dto).getBillReadStatus()) )); + } + if(StringUtils.isBlank(((SalarySendInfoListDTO)dto).getBillConfirmStatus() )){ + ((SalarySendInfoListDTO) dto).setBillConfirmStatus(BillConfimStatusEnum.UNCONFIRMED.getDefaultLabel()); + }else { + ((SalarySendInfoListDTO) dto).setBillConfirmStatus( + BillConfimStatusEnum.getDefaultLabelByValue( Integer.valueOf(((SalarySendInfoListDTO)dto).getBillConfirmStatus()) )); + } + }); + } + return pageInfo; } @Override diff --git a/src/com/engine/salary/sys/service/SalarySysConfService.java b/src/com/engine/salary/sys/service/SalarySysConfService.java index 5f0414164..2e62f7401 100644 --- a/src/com/engine/salary/sys/service/SalarySysConfService.java +++ b/src/com/engine/salary/sys/service/SalarySysConfService.java @@ -108,4 +108,10 @@ public interface SalarySysConfService { * @param setting */ void saveArchiveDelete(String setting); + + /** + * 保存工资单反馈 + * @param param + */ + void saveSalarySendFeedback(SalarySysConfPO param); } diff --git a/src/com/engine/salary/sys/service/impl/SalarySysConfServiceImpl.java b/src/com/engine/salary/sys/service/impl/SalarySysConfServiceImpl.java index e6746462c..bf3a6afd4 100644 --- a/src/com/engine/salary/sys/service/impl/SalarySysConfServiceImpl.java +++ b/src/com/engine/salary/sys/service/impl/SalarySysConfServiceImpl.java @@ -421,7 +421,6 @@ public class SalarySysConfServiceImpl extends Service implements SalarySysConfSe if (StringUtils.isBlank(param.getConfValue())) { throw new SalaryRunTimeException("无效规则!"); } - saveSettingByType(param.getConfValue(), WITHDRAW_TAX_DECLARATION, "个税申报撤回", "basic"); } @@ -433,6 +432,14 @@ public class SalarySysConfServiceImpl extends Service implements SalarySysConfSe saveSettingByType(setting, SALARY_ARCHIVE_DELETE, "薪资、社保福利档案删除规则", "basic"); } + @Override + public void saveSalarySendFeedback(SalarySysConfPO param) { + if (StringUtils.isBlank(param.getConfValue())) { + throw new SalaryRunTimeException("无效规则!"); + } + saveSettingByType(param.getConfValue(), SALARY_SEND_FEEDBACK, "工资单反馈", "basic"); + } + /** * 保存或者修改应用设置 * diff --git a/src/com/engine/salary/web/SalaryBillController.java b/src/com/engine/salary/web/SalaryBillController.java index 785d8aa88..080e982d7 100644 --- a/src/com/engine/salary/web/SalaryBillController.java +++ b/src/com/engine/salary/web/SalaryBillController.java @@ -545,6 +545,30 @@ public class SalaryBillController { } return new ResponseResult>(user).run(getSalarySendWrapper(user)::mySalaryBill, salaryInfoId); } + + /** + * 确认工资单 + * + * @param salaryInfoId + * @return + */ + @GET + @Path("/confirmSalaryBill") + @Produces(MediaType.APPLICATION_JSON) + public String confirmSalaryBill(@Context HttpServletRequest request, @Context HttpServletResponse response, @QueryParam(value = "salaryInfoId") Long salaryInfoId) { + User user = null; + String recipient = request.getParameter("recipient"); + String em_auth_userid = request.getParameter("em_auth_userid"); + log.info("salary recipient: {} em_auth_userid: {}", recipient, em_auth_userid); + if (StringUtils.isNotBlank(recipient) && NumberUtils.isCreatable(recipient)) { + user = new User(Integer.parseInt(recipient)); + } else if (StringUtils.isNotBlank(em_auth_userid) && NumberUtils.isCreatable(em_auth_userid)) { + user = new User(Integer.parseInt(em_auth_userid)); + } else { + user = HrmUserVarify.getUser(request, response); + } + return new ResponseResult>(user).run(getSalarySendWrapper(user)::confirmSalaryBill, salaryInfoId); + } /******** 工资单发放 end ***********************************************************************************************/ /** diff --git a/src/com/engine/salary/web/SalarySystemConfigController.java b/src/com/engine/salary/web/SalarySystemConfigController.java index 4d070abac..9614ef61a 100644 --- a/src/com/engine/salary/web/SalarySystemConfigController.java +++ b/src/com/engine/salary/web/SalarySystemConfigController.java @@ -181,6 +181,13 @@ public class SalarySystemConfigController { return new ResponseResult(user).run(getSalarySystemConfigWrapper(user)::saveMatchEmployeeModeRule, param); } + /** + * 薪资核算人员匹配规则 + * @param request + * @param response + * @param param + * @return + */ @POST @Path("/saveSalaryAcctEmployeeRule") @Produces(MediaType.APPLICATION_JSON) @@ -189,6 +196,28 @@ public class SalarySystemConfigController { return new ResponseResult(user).run(getSalarySystemConfigWrapper(user)::saveSalaryAcctEmployeeRule, param.getRule()); } + /** + * 工资单反馈 + * @param request + * @param response + * @param param + * @return + */ + @POST + @Path("/saveSalarySendFeedback") + @Produces(MediaType.APPLICATION_JSON) + public String saveSalarySendFeedback(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalarySysConfPO param) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getSalarySystemConfigWrapper(user)::saveSalarySendFeedback, param); + } + + /** + * 撤回个税申报 + * @param request + * @param response + * @param param + * @return + */ @POST @Path("/saveWithDrawTaxDeclaration") @Produces(MediaType.APPLICATION_JSON) diff --git a/src/com/engine/salary/wrapper/SalarySendWrapper.java b/src/com/engine/salary/wrapper/SalarySendWrapper.java index 1613de006..5fbf57805 100644 --- a/src/com/engine/salary/wrapper/SalarySendWrapper.java +++ b/src/com/engine/salary/wrapper/SalarySendWrapper.java @@ -1,5 +1,6 @@ package com.engine.salary.wrapper; +import cn.hutool.core.util.ObjectUtil; import com.api.browser.bean.SearchConditionGroup; import com.api.browser.bean.SearchConditionItem; import com.api.browser.bean.SearchConditionOption; @@ -327,7 +328,6 @@ public class SalarySendWrapper extends Service implements SalarySendWrapperProxy PageInfo pageInfo = getSalarySendService(user).salarySendInfoListPage(queryParam); - return pageInfo; } @@ -691,6 +691,13 @@ public class SalarySendWrapper extends Service implements SalarySendWrapperProxy return PayrollCheckTypeEnum.parseByValue(conf.getConfValue()); } + + public void confirmSalaryBill(Long salaryInfoId) { + if(ObjectUtil.isNull(salaryInfoId)){ + throw new SalaryRunTimeException("工资单id不能为空!"); + } + getSalaryBillService(user).confirmSalaryBill(salaryInfoId); + } } diff --git a/src/com/engine/salary/wrapper/SalarySystemConfigWrapper.java b/src/com/engine/salary/wrapper/SalarySystemConfigWrapper.java index 16ec870b5..7e93e06bb 100644 --- a/src/com/engine/salary/wrapper/SalarySystemConfigWrapper.java +++ b/src/com/engine/salary/wrapper/SalarySystemConfigWrapper.java @@ -151,4 +151,8 @@ public class SalarySystemConfigWrapper extends Service { public void saveArchiveDelete(String setting) { getSalarySysConfService(user).saveArchiveDelete(setting); } + + public void saveSalarySendFeedback(SalarySysConfPO param) { + getSalarySysConfService(user).saveSalarySendFeedback(param); + } } From 5dc2dadd4642c2f628d573be983577a6424c5c67 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Tue, 11 Jul 2023 17:28:15 +0800 Subject: [PATCH 35/52] =?UTF-8?q?=E5=B7=A5=E8=B5=84=E5=8D=95=E8=87=AA?= =?UTF-8?q?=E5=8A=A8=E7=A1=AE=E8=AE=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salarybill/BillConfimStatusEnum.java | 17 ++--- .../salarybill/SalarySendInfoMapper.java | 6 ++ .../salarybill/SalarySendInfoMapper.xml | 19 ++++++ .../salary/service/SalarySendService.java | 13 ++++ .../service/impl/SalarySendServiceImpl.java | 47 ++++++++------ .../sys/constant/SalarySysConstant.java | 6 ++ .../timer/AutoConfirmSalaryBillCronJob.java | 63 +++++++++++++++++++ 7 files changed, 145 insertions(+), 26 deletions(-) create mode 100644 src/com/engine/salary/timer/AutoConfirmSalaryBillCronJob.java diff --git a/src/com/engine/salary/enums/salarybill/BillConfimStatusEnum.java b/src/com/engine/salary/enums/salarybill/BillConfimStatusEnum.java index c9df6d20e..112c86034 100644 --- a/src/com/engine/salary/enums/salarybill/BillConfimStatusEnum.java +++ b/src/com/engine/salary/enums/salarybill/BillConfimStatusEnum.java @@ -5,21 +5,22 @@ import com.engine.salary.enums.BaseEnum; import java.util.Arrays; /** - * @ClassName BillReadStatusEnum + * @ClassName BillConfimStatusEnum * @author Harryxzy - * @date 2023/7/10 17:13 + * @date 2023/7/10 17:03 * @description 工资单确认 */ public enum BillConfimStatusEnum implements BaseEnum { UNCONFIRMED(0, "未确认", 93286), - CONFIRMED(1, "已确认", 93212); + CONFIRMED(1, "已确认", 93212), + AUTOCONFIRMED(3, "自动确认", 93212); - private int value; + private final int value; - private String defaultLabel; + private final String defaultLabel; - private int labelId; + private final int labelId; BillConfimStatusEnum(int value, String defaultLabel, int labelId) { this.value = value; @@ -48,7 +49,7 @@ public enum BillConfimStatusEnum implements BaseEnum { } BillConfimStatusEnum[] enumAry = BillConfimStatusEnum.values(); for(int i = 0; i < Arrays.asList(enumAry).size(); i++){ - if (Integer.valueOf(enumAry[i].getValue()).equals(value)) { + if (enumAry[i].getValue().equals(value)) { return enumAry[i].getDefaultLabel(); } } @@ -61,7 +62,7 @@ public enum BillConfimStatusEnum implements BaseEnum { } BillConfimStatusEnum[] enumAry = BillConfimStatusEnum.values(); for(int i = 0; i < Arrays.asList(enumAry).size(); i++){ - if (Integer.valueOf(enumAry[i].getValue()).equals(value)) { + if (enumAry[i].getValue().equals(value)) { return enumAry[i].name(); } } diff --git a/src/com/engine/salary/mapper/salarybill/SalarySendInfoMapper.java b/src/com/engine/salary/mapper/salarybill/SalarySendInfoMapper.java index 140c47376..93f184d84 100644 --- a/src/com/engine/salary/mapper/salarybill/SalarySendInfoMapper.java +++ b/src/com/engine/salary/mapper/salarybill/SalarySendInfoMapper.java @@ -101,4 +101,10 @@ public interface SalarySendInfoMapper { void deleteBySalaryAcctRecordIds(@Param("salaryAcctRecordId") Collection ids); List getNeedSendInfoList(@Param("salarySendIds") List salarySendIds); + + /** + * 自动确认工资单 + * @param needAutoIds + */ + void autoConfirmSalaryBill(@Param("ids") List needAutoIds); } \ No newline at end of file diff --git a/src/com/engine/salary/mapper/salarybill/SalarySendInfoMapper.xml b/src/com/engine/salary/mapper/salarybill/SalarySendInfoMapper.xml index 0ef304bee..c3f5e23bd 100644 --- a/src/com/engine/salary/mapper/salarybill/SalarySendInfoMapper.xml +++ b/src/com/engine/salary/mapper/salarybill/SalarySendInfoMapper.xml @@ -687,6 +687,12 @@ AND tenant_key = #{tenantKey} + + AND bill_confirm_status = #{billConfirmStatus} + + + AND bill_read_status = #{billReadStatus} + ORDER BY id DESC + + \ No newline at end of file diff --git a/src/com/engine/salary/service/SalaryBillBaseSetService.java b/src/com/engine/salary/service/SalaryBillBaseSetService.java index 42a2b5f45..4ea8ef0a6 100644 --- a/src/com/engine/salary/service/SalaryBillBaseSetService.java +++ b/src/com/engine/salary/service/SalaryBillBaseSetService.java @@ -1,5 +1,6 @@ package com.engine.salary.service; +import com.engine.salary.entity.salaryBill.dto.SalaryBillAckFeedbackDTO; import com.engine.salary.entity.salaryBill.dto.SalaryBillWatermarkDTO; import com.engine.salary.entity.salaryBill.param.SalaryBaseSetSaveParam; @@ -28,7 +29,7 @@ public interface SalaryBillBaseSetService { // SalaryBillAckFeedbackDTO getAckFeedbackSetting(); /** - * 保存工资单水印设置 + * 保存工资单模板基础设置 * * @param saveParam * @return @@ -41,4 +42,10 @@ public interface SalaryBillBaseSetService { * @return */ String previewWaterMark(Map wmSetting); + + /** + * 获取默认工资单确认反馈设置 + * @return + */ + SalaryBillAckFeedbackDTO getDefaultAckFeedbackSetting(); } diff --git a/src/com/engine/salary/service/impl/SalaryBillBaseSetServiceImpl.java b/src/com/engine/salary/service/impl/SalaryBillBaseSetServiceImpl.java index 28d96c728..476717d7c 100644 --- a/src/com/engine/salary/service/impl/SalaryBillBaseSetServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryBillBaseSetServiceImpl.java @@ -6,6 +6,7 @@ import com.engine.core.impl.Service; import com.engine.salary.constant.SalaryDefaultTenantConstant; import com.engine.salary.entity.datacollection.DataCollectionEmployee; import com.engine.salary.entity.salaryBill.bo.SalaryBillBO; +import com.engine.salary.entity.salaryBill.dto.SalaryBillAckFeedbackDTO; import com.engine.salary.entity.salaryBill.dto.SalaryBillWatermarkDTO; import com.engine.salary.entity.salaryBill.param.SalaryBaseSetSaveParam; import com.engine.salary.entity.salaryBill.po.SalaryBillWatermarkPO; @@ -13,7 +14,12 @@ import com.engine.salary.enums.salarybill.SalaryTemplateWatermarkTypeEnum; import com.engine.salary.service.SalaryBillBaseSetService; import com.engine.salary.service.SalaryBillWatermarkService; import com.engine.salary.service.SalaryEmployeeService; +import com.engine.salary.sys.constant.SalarySysConstant; +import com.engine.salary.sys.entity.po.SalarySysConfPO; +import com.engine.salary.sys.service.SalarySysConfService; +import com.engine.salary.sys.service.impl.SalarySysConfServiceImpl; import com.engine.salary.util.JsonUtil; +import com.engine.salary.util.SalaryEntityUtil; import com.google.common.collect.Lists; import dm.jdbc.util.IdGenerator; import org.apache.commons.collections.CollectionUtils; @@ -21,10 +27,9 @@ import org.apache.commons.lang.math.NumberUtils; import org.apache.commons.lang3.StringUtils; import weaver.hrm.User; -import java.util.Date; -import java.util.List; -import java.util.Map; -import java.util.Objects; +import java.util.*; + +import static com.engine.salary.sys.constant.SalarySysConstant.*; /** * @Description: 工资单水印 @@ -42,6 +47,10 @@ public class SalaryBillBaseSetServiceImpl extends Service implements SalaryBillB return ServiceUtil.getService(SalaryEmployeeServiceImpl.class, user); } + public SalarySysConfService getSalarySysConfService(User user) { + return ServiceUtil.getService(SalarySysConfServiceImpl.class, user); + } + @Override public SalaryBillWatermarkDTO getWatermarkSetting() { List list = getSalaryBillWatermarkService(user).listAll(); @@ -96,23 +105,16 @@ public class SalaryBillBaseSetServiceImpl extends Service implements SalaryBillB .build()); -// // 工资单确认和反馈 =========================================================== -// new LambdaUpdateChainWrapper<>(salaryBillAckFeedbackMapper) -// .eq(SalaryBillAckFeedbackPO::getDeleteType, 0) -// .eq(SalaryBillAckFeedbackPO::getTenantKey, tenantKey) -// .set(SalaryBillAckFeedbackPO::getDeleteType, 3) -// .update(); -// salaryBillAckFeedbackMapper.insert(SalaryBillAckFeedbackPO.builder() -// .id(IdGenerator.generate()) -// .ackStatus(saveParam.getAckStatus() ? NumberUtils.INTEGER_ONE : NumberUtils.INTEGER_ZERO) -// .feedbackStatus(saveParam.getFeedbackStatus() ? NumberUtils.INTEGER_ONE : NumberUtils.INTEGER_ZERO) -// .createTime(now) -// .updateTime(now) -// .creator(employeeId) -// .deleteType(NumberUtils.INTEGER_ZERO) -// .tenantKey(tenantKey) -// .build()); - + // 工资单确认和反馈 =========================================================== + SalaryBillAckFeedbackDTO ackFeedbackSetting = saveParam.getAckFeedbackSetting(); + // 1.保存确认反馈开关状态 + getSalarySysConfService(user).saveSettingByType(ackFeedbackSetting.getAckStatus(), SALARY_SEND_FEEDBACK, "工资单确认反馈状态", "billSend"); + if(StringUtils.equals(ackFeedbackSetting.getAckStatus(),"1")){ + // 2.保存反馈地址 + getSalarySysConfService(user).saveSettingByType(ackFeedbackSetting.getFeedBackUrl(), SALARY_FEEDBACK_URL, "工资单反馈地址", "billSend"); + // 3.保存自动确认时间 + getSalarySysConfService(user).saveSettingByType(ackFeedbackSetting.getAutoAckDays().toString(), SALARY_AUTO_ACK_DAYS, "工资单反馈自动确认", "billSend"); + } return StringUtils.EMPTY; } @@ -126,4 +128,29 @@ public class SalaryBillBaseSetServiceImpl extends Service implements SalaryBillB DataCollectionEmployee simpleEmployee = getSalaryEmployeeService(user).getEmployeeById(Long.valueOf(user.getUID())); return SalaryBillBO.handleWmText(wmText, wmTextFieldIds, simpleEmployee); } + + @Override + public SalaryBillAckFeedbackDTO getDefaultAckFeedbackSetting() { + // 获取反馈开启状态、自动确认时长、反馈地址 + List codes = Arrays.asList(SalarySysConstant.SALARY_SEND_FEEDBACK, SalarySysConstant.SALARY_AUTO_ACK_DAYS, SalarySysConstant.SALARY_FEEDBACK_URL); + List sysConfList= getSalarySysConfService(user).getListByCodes(codes); + Map sysConfMap = SalaryEntityUtil.convert2Map(sysConfList, SalarySysConfPO::getConfKey, SalarySysConfPO::getConfValue); + + SalaryBillAckFeedbackDTO defaultAckFeedBackDTO = SalaryBillAckFeedbackDTO.builder().build(); + String ackStatus = sysConfMap.getOrDefault(SalarySysConstant.SALARY_SEND_FEEDBACK, "0"); + if (StringUtils.equals(ackStatus,"0")) { + // 未开启工资单确认 + defaultAckFeedBackDTO.setAckStatus("0"); + defaultAckFeedBackDTO.setAutoAckDays(0); + return defaultAckFeedBackDTO; + } + defaultAckFeedBackDTO.setAckStatus(ackStatus); + // 获取超时自动确认时间 + Integer autoAckDays = Integer.valueOf(sysConfMap.getOrDefault(SalarySysConstant.SALARY_AUTO_ACK_DAYS, "7")); + defaultAckFeedBackDTO.setAutoAckDays(autoAckDays); + // 反馈地址 + String feedbackUrl = sysConfMap.getOrDefault(SalarySysConstant.SALARY_FEEDBACK_URL, ""); + defaultAckFeedBackDTO.setFeedBackUrl(feedbackUrl); + return defaultAckFeedBackDTO; + } } diff --git a/src/com/engine/salary/sys/constant/SalarySysConstant.java b/src/com/engine/salary/sys/constant/SalarySysConstant.java index fca545078..b6d49d941 100644 --- a/src/com/engine/salary/sys/constant/SalarySysConstant.java +++ b/src/com/engine/salary/sys/constant/SalarySysConstant.java @@ -82,13 +82,17 @@ public class SalarySysConstant { public static final String SALARY_ARCHIVE_DELETE = "salaryArchiveDelete"; /** - * 工资单反馈 + * 工资单确认反馈状态 */ public static final String SALARY_SEND_FEEDBACK = "SALARY_SEND_FEEDBACK"; /** * 工资单反馈自动确认 */ - public static final String SALARY_AUTO_CONFIRM = "SALARY_AUTO_CONFIRM"; + public static final String SALARY_AUTO_ACK_DAYS = "SALARY_AUTO_ACK_DAYS"; + /** + * 工资单反馈地址 + */ + public static final String SALARY_FEEDBACK_URL = "SALARY_FEEDBACK_URL"; } diff --git a/src/com/engine/salary/sys/service/SalarySysConfService.java b/src/com/engine/salary/sys/service/SalarySysConfService.java index 2e62f7401..e92637840 100644 --- a/src/com/engine/salary/sys/service/SalarySysConfService.java +++ b/src/com/engine/salary/sys/service/SalarySysConfService.java @@ -114,4 +114,20 @@ public interface SalarySysConfService { * @param param */ void saveSalarySendFeedback(SalarySysConfPO param); + + /** + * 根据code返回list + * @param codes + * @return + */ + List getListByCodes(List codes); + + /** + * 保存或者修改应用设置 + * @param confValue + * @param confKey + * @param title + * @param app + */ + void saveSettingByType(String confValue, String confKey, String title, String app); } diff --git a/src/com/engine/salary/sys/service/impl/SalarySysConfServiceImpl.java b/src/com/engine/salary/sys/service/impl/SalarySysConfServiceImpl.java index bf3a6afd4..eb0001d40 100644 --- a/src/com/engine/salary/sys/service/impl/SalarySysConfServiceImpl.java +++ b/src/com/engine/salary/sys/service/impl/SalarySysConfServiceImpl.java @@ -440,6 +440,14 @@ public class SalarySysConfServiceImpl extends Service implements SalarySysConfSe saveSettingByType(param.getConfValue(), SALARY_SEND_FEEDBACK, "工资单反馈", "basic"); } + @Override + public List getListByCodes(List codes) { + if(CollectionUtils.isEmpty(codes)){ + return Collections.emptyList(); + } + return getSalarySysConfMapper().getListByCodes(codes); + } + /** * 保存或者修改应用设置 * @@ -448,7 +456,8 @@ public class SalarySysConfServiceImpl extends Service implements SalarySysConfSe * @param title * @param app */ - private void saveSettingByType(String confValue, String confKey, String title, String app) { + @Override + public void saveSettingByType(String confValue, String confKey, String title, String app) { SalarySysConfPO po = getOneByCode(confKey); if (po == null) { SalarySysConfPO build = SalarySysConfPO.builder() diff --git a/src/com/engine/salary/timer/AutoConfirmSalaryBillCronJob.java b/src/com/engine/salary/timer/AutoConfirmSalaryBillCronJob.java index af2128b8f..79abafde8 100644 --- a/src/com/engine/salary/timer/AutoConfirmSalaryBillCronJob.java +++ b/src/com/engine/salary/timer/AutoConfirmSalaryBillCronJob.java @@ -45,7 +45,7 @@ public class AutoConfirmSalaryBillCronJob extends BaseCronJob { if(ObjectUtils.isEmpty(feedbackPO) || StringUtils.equals(feedbackPO.getConfValue(), "0")){ return; } - SalarySysConfPO salaryAutoConfirmPO = getSalarySysConfService(user).getOneByCode(SalarySysConstant.SALARY_AUTO_CONFIRM); + SalarySysConfPO salaryAutoConfirmPO = getSalarySysConfService(user).getOneByCode(SalarySysConstant.SALARY_AUTO_ACK_DAYS); Long timeOutDays = ObjectUtils.isNotEmpty(salaryAutoConfirmPO) && NumberUtils.isCreatable(salaryAutoConfirmPO.getConfValue()) ? Long.valueOf(salaryAutoConfirmPO.getConfValue()) : 7L; LocalDateTime now = LocalDateTime.now(); diff --git a/src/com/engine/salary/wrapper/SalaryBillBaseSetWrapper.java b/src/com/engine/salary/wrapper/SalaryBillBaseSetWrapper.java index 033dbd18e..63f0b3d37 100644 --- a/src/com/engine/salary/wrapper/SalaryBillBaseSetWrapper.java +++ b/src/com/engine/salary/wrapper/SalaryBillBaseSetWrapper.java @@ -3,6 +3,7 @@ package com.engine.salary.wrapper; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; import com.engine.salary.entity.salaryBill.dto.SalaryBaseSetFormDTO; +import com.engine.salary.entity.salaryBill.dto.SalaryBillAckFeedbackDTO; import com.engine.salary.entity.salaryBill.dto.SalaryBillWatermarkDTO; import com.engine.salary.entity.salaryBill.param.SalaryBaseSetSaveParam; import com.engine.salary.service.SalaryBillBaseSetService; @@ -45,7 +46,7 @@ public class SalaryBillBaseSetWrapper extends Service { public SalaryBaseSetFormDTO getBaseSetForm() { SalaryBaseSetFormDTO dto = new SalaryBaseSetFormDTO(); SalaryBillWatermarkDTO salaryBillWatermark = getSalaryBillBaseSetService(user).getWatermarkSetting(); -// SalaryBillAckFeedbackDTO salaryBillAckFeedback = salaryBillBaseSetService.getAckFeedbackSetting(); + SalaryBillAckFeedbackDTO salaryBillAckFeedback = getSalaryBillBaseSetService(user).getDefaultAckFeedbackSetting(); if (Objects.isNull(salaryBillWatermark)) { dto.setWatermarkStatus(false); @@ -57,16 +58,16 @@ public class SalaryBillBaseSetWrapper extends Service { dto.setWatermarkSetting(salaryBillWatermark.getWmSetting()); dto.setWatermark(salaryBillWatermark.getWatermarkType()); } -// if (Objects.nonNull(salaryBillAckFeedback)) { -// data.put("ackStatus", salaryBillAckFeedback.getAckStatus()); -// data.put("feedbackStatus", salaryBillAckFeedback.getFeedbackStatus()); -// } + if (Objects.nonNull(salaryBillAckFeedback)) { + // 工资单反馈默认设置 + dto.setAckFeedbackSetting(salaryBillAckFeedback); + } return dto; } /** - * 保存工资单水印设置 + * 保存工资单模板基础设置 * * @param saveParam * @return From d5977c053b757c0096b577e22eb8d8b73dbc903b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Thu, 13 Jul 2023 09:19:16 +0800 Subject: [PATCH 39/52] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resource/sql/薪酬还原脚本.sql | 3 +++ 1 file changed, 3 insertions(+) diff --git a/resource/sql/薪酬还原脚本.sql b/resource/sql/薪酬还原脚本.sql index caafbb73e..4ad486304 100644 --- a/resource/sql/薪酬还原脚本.sql +++ b/resource/sql/薪酬还原脚本.sql @@ -173,6 +173,9 @@ delete from hrsa_statreportlogs_detail where 1=1 delete from hrsa_statreportlogs where 1=1 ; +delete from hrsa_salary_bill_watermark where 1=1 +; + -- INSERT INTO hrsa_tax_agent_base(id, devolution_status, create_time, update_time, creator, delete_type, tenant_key) VALUES (1653303537239, 0, '2022-05-23 18:58:53', '2022-05-23 19:12:12', 1, 0, 'all_teams'); From 30d61e352f8b37346b526a8cb054af2a64923325 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Thu, 13 Jul 2023 11:50:02 +0800 Subject: [PATCH 40/52] =?UTF-8?q?=E5=B7=A5=E8=B5=84=E5=8D=95=E7=A1=AE?= =?UTF-8?q?=E8=AE=A4=E5=8F=8D=E9=A6=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salaryBill/dto/SalarySendInfoListDTO.java | 5 +++ .../salaryBill/dto/SalarySendListDTO.java | 5 +++ .../dto/SalaryTemplateBaseSetDTO.java | 16 +++++++ .../dto/SalaryTemplateShowSetDTO.java | 17 ++++++++ .../param/SalaryTemplateSaveParam.java | 16 +++++++ .../salaryBill/po/SalaryTemplatePO.java | 18 ++++++++ .../salarybill/SalaryTemplateMapper.xml | 12 ++++++ .../service/impl/SalarySendServiceImpl.java | 43 +++++++++---------- .../impl/SalaryTemplateServiceImpl.java | 3 ++ .../salary/wrapper/SalarySendWrapper.java | 14 +----- .../salary/wrapper/SalaryTemplateWrapper.java | 16 +++++++ 11 files changed, 129 insertions(+), 36 deletions(-) diff --git a/src/com/engine/salary/entity/salaryBill/dto/SalarySendInfoListDTO.java b/src/com/engine/salary/entity/salaryBill/dto/SalarySendInfoListDTO.java index ed7626794..00548b4b6 100644 --- a/src/com/engine/salary/entity/salaryBill/dto/SalarySendInfoListDTO.java +++ b/src/com/engine/salary/entity/salaryBill/dto/SalarySendInfoListDTO.java @@ -61,5 +61,10 @@ public class SalarySendInfoListDTO { */ private Integer salaryAcctType; + /** + * 该模板是否开启了工资单反馈确认 + */ + private boolean needAck; + } diff --git a/src/com/engine/salary/entity/salaryBill/dto/SalarySendListDTO.java b/src/com/engine/salary/entity/salaryBill/dto/SalarySendListDTO.java index c4c72bda0..915045c89 100644 --- a/src/com/engine/salary/entity/salaryBill/dto/SalarySendListDTO.java +++ b/src/com/engine/salary/entity/salaryBill/dto/SalarySendListDTO.java @@ -141,5 +141,10 @@ public class SalarySendListDTO { */ // private Integer haveBackCalc; + /** + * 工资单确认反馈状态 + */ + private Integer ackFeedbackStatus; + } diff --git a/src/com/engine/salary/entity/salaryBill/dto/SalaryTemplateBaseSetDTO.java b/src/com/engine/salary/entity/salaryBill/dto/SalaryTemplateBaseSetDTO.java index b09f269b0..910e38e10 100644 --- a/src/com/engine/salary/entity/salaryBill/dto/SalaryTemplateBaseSetDTO.java +++ b/src/com/engine/salary/entity/salaryBill/dto/SalaryTemplateBaseSetDTO.java @@ -66,4 +66,20 @@ public class SalaryTemplateBaseSetDTO { // 发送时间 private String autoSendTimeOfDay; + + /** + * 工资单确认反馈状态 + */ + private Boolean ackFeedbackStatus; + + /** + * 自动确认超时天数 + */ + private Integer autoAckDays; + + /** + * 反馈流程地址 + * + */ + private String feedbackUrl; } diff --git a/src/com/engine/salary/entity/salaryBill/dto/SalaryTemplateShowSetDTO.java b/src/com/engine/salary/entity/salaryBill/dto/SalaryTemplateShowSetDTO.java index 8f976ec9d..86aaeb0d6 100644 --- a/src/com/engine/salary/entity/salaryBill/dto/SalaryTemplateShowSetDTO.java +++ b/src/com/engine/salary/entity/salaryBill/dto/SalaryTemplateShowSetDTO.java @@ -54,4 +54,21 @@ public class SalaryTemplateShowSetDTO { // 薪资项为0时不显示") private Boolean salaryItemZeroStatus; + + /** + * 工资单确认反馈状态 + */ + private Boolean ackFeedbackStatus; + + /** + * 自动确认超时天数 + */ + private Integer autoAckDays; + + /** + * 反馈流程地址 + * + */ + private String feedbackUrl; + } diff --git a/src/com/engine/salary/entity/salaryBill/param/SalaryTemplateSaveParam.java b/src/com/engine/salary/entity/salaryBill/param/SalaryTemplateSaveParam.java index 2dc7643d2..ff8af0607 100644 --- a/src/com/engine/salary/entity/salaryBill/param/SalaryTemplateSaveParam.java +++ b/src/com/engine/salary/entity/salaryBill/param/SalaryTemplateSaveParam.java @@ -88,6 +88,22 @@ public class SalaryTemplateSaveParam { // 补发薪资项目设置 private List replenishSalaryItemSetting; + /** + * 工资单确认反馈状态 + */ + private Boolean ackFeedbackStatus; + + /** + * 自动确认超时天数 + */ + private Integer autoAckDays; + + /** + * 反馈流程地址 + * + */ + private String feedbackUrl; + public static void checkParam(SalaryTemplateSaveParam saveParam) { if (saveParam.getSalarySobId() == null) { throw new SalaryRunTimeException("薪资账套表的主键id必传;"); diff --git a/src/com/engine/salary/entity/salaryBill/po/SalaryTemplatePO.java b/src/com/engine/salary/entity/salaryBill/po/SalaryTemplatePO.java index f5c416305..fd8e1a1c9 100644 --- a/src/com/engine/salary/entity/salaryBill/po/SalaryTemplatePO.java +++ b/src/com/engine/salary/entity/salaryBill/po/SalaryTemplatePO.java @@ -170,5 +170,23 @@ public class SalaryTemplatePO { */ private String tenantKey; + /** + * 工资单确认反馈状态 + */ + private Integer ackFeedbackStatus; + + /** + * 自动确认超时天数 + */ + private Integer autoAckDays; + + /** + * 反馈流程地址 + * + */ + private String feedbackUrl; + + + private Collection salarySobIds; } diff --git a/src/com/engine/salary/mapper/salarybill/SalaryTemplateMapper.xml b/src/com/engine/salary/mapper/salarybill/SalaryTemplateMapper.xml index 56cd60808..5eb01a1ed 100644 --- a/src/com/engine/salary/mapper/salarybill/SalaryTemplateMapper.xml +++ b/src/com/engine/salary/mapper/salarybill/SalaryTemplateMapper.xml @@ -84,6 +84,9 @@ auto_send_cycle_type, auto_send_day_of_month, auto_send_time_of_day, + ack_feedback_status, + auto_ack_days, + feedback_url, create_time, update_time, creator, @@ -513,6 +516,15 @@ auto_send_time_of_day=#{autoSendTimeOfDay}, + + ack_feedback_status=#{ackFeedbackStatus}, + + + auto_ack_days=#{autoAckDays}, + + + feedback_url=#{feedbackUrl}, + create_time=#{createTime}, diff --git a/src/com/engine/salary/service/impl/SalarySendServiceImpl.java b/src/com/engine/salary/service/impl/SalarySendServiceImpl.java index b0da29ed7..6f951f136 100644 --- a/src/com/engine/salary/service/impl/SalarySendServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalarySendServiceImpl.java @@ -50,8 +50,6 @@ import com.engine.salary.mapper.salaryacct.SalaryAcctResultMapper; import com.engine.salary.mapper.salarybill.SalarySendInfoMapper; import com.engine.salary.mapper.salarybill.SalarySendMapper; import com.engine.salary.service.*; -import com.engine.salary.sys.constant.SalarySysConstant; -import com.engine.salary.sys.entity.po.SalarySysConfPO; import com.engine.salary.sys.entity.vo.OrderRuleVO; import com.engine.salary.sys.service.SalarySysConfService; import com.engine.salary.sys.service.impl.SalarySysConfServiceImpl; @@ -74,7 +72,6 @@ import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import weaver.common.MessageUtil; -import weaver.general.BaseBean; import weaver.hrm.User; import weaver.hrm.company.SubCompanyComInfo; import weaver.hrm.resource.ResourceComInfo; @@ -423,11 +420,6 @@ public class SalarySendServiceImpl extends Service implements SalarySendService } Long salaryAcctId = salarySend.getSalaryAccountingId(); SalarySobCycleDTO salarySobCycleDTO = getSalaryAcctRecordService(user).getSalarySobCycleById(salaryAcctId); -// SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM"); -// List salaryAcctRecordPOS = getSalaryAcctRecordService(user).listBySalarySobIds(Collections.singletonList(salarySobCycleDTO.getSalarySobId())); -// // 是否有回算记录 -// boolean haveBackCalc = salaryAcctRecordPOS.stream().filter(PO -> Objects.equals(PO.getBackCalcStatus(), NumberUtils.INTEGER_ONE) && -// Objects.equals(sdf.format(PO.getSalaryMonth()), SalaryDateUtil.MONTH_FORMATTER.format(salarySobCycleDTO.getSalaryMonth()))).collect(Collectors.toList()).size() > 0; String template = ""; // 获取默认模板 List salaryTemplates = getSalaryTemplateService(user).getDefaultTemplates(Collections.singletonList(salarySend.getSalarySobId())); @@ -481,14 +473,18 @@ public class SalarySendServiceImpl extends Service implements SalarySendService throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(100511, "当前账号无法查看此工资单")); } SalarySendInfoPO salarySendInfo = salarySendInfos.get(0); + // 获取默认模板信息 + SalarySendPO salarySendPO = getSalarySendMapper().getById(salarySendInfo.getSalarySendId()); + if(ObjectUtils.isEmpty(salarySendPO)) + throw new SalaryRunTimeException("工资单不存在"); + List salaryTemplates = getSalaryTemplateService(user).getDefaultTemplates(Collections.singletonList(salarySendPO.getSalarySobId())); + Integer ackFeedbackStatus = salaryTemplates.get(0).getAckFeedbackStatus(); // 更新查看状态 - SalarySysConfPO feedbackPO = getSalarySysConfService(user).getOneByCode(SalarySysConstant.SALARY_SEND_FEEDBACK); - if (feedbackPO != null && StringUtils.equals(feedbackPO.getConfValue(),"1")){ - if(salarySendInfo.getBillReadStatus() == null || NumberUtils.compare(salarySendInfo.getBillReadStatus(),BillReadStatusEnum.UNREAD.getValue()) == 0 ){ - salarySendInfo.setBillReadStatus(BillReadStatusEnum.READED.getValue()); - salarySendInfo.setUpdateTime(new Date()); - getSalarySendInfoMapper().updateIgnoreNull(salarySendInfo); - } + if ( (ackFeedbackStatus!=null && NumberUtils.compare(ackFeedbackStatus,1) == 1) + && (salarySendInfo.getBillReadStatus() == null || NumberUtils.compare(salarySendInfo.getBillReadStatus(),BillReadStatusEnum.UNREAD.getValue()) == 0)) { + salarySendInfo.setBillReadStatus(BillReadStatusEnum.READED.getValue()); + salarySendInfo.setUpdateTime(new Date()); + getSalarySendInfoMapper().updateIgnoreNull(salarySendInfo); } // List salarySends = new LambdaQueryChainWrapper<>(mapper) // .eq(SalarySendPO::getDeleteType, 0) @@ -614,17 +610,14 @@ public class SalarySendServiceImpl extends Service implements SalarySendService map.put("salaryTemplate", salaryTemplate); map.put("salaryAcctResult", salaryAcctResultS); // 工资单发送人、是否已确认 - if (feedbackPO != null && StringUtils.equals(feedbackPO.getConfValue(),"1")){ + if (ackFeedbackStatus!=null && NumberUtils.compare(ackFeedbackStatus,1) == 1) { map.put("confirmStatus", salarySendInfo.getBillConfirmStatus() == null ? "0" : salarySendInfo.getBillConfirmStatus().toString()); - map.put("sendEmployeeId", salarySendInfo.getSalarySendId()); - BaseBean baseBean = new BaseBean(); - String workFlowId = baseBean.getPropValue("hrmSalary", "feedbackWorkflowId"); - map.put("feedbackWorkflowId",workFlowId); + map.put("sendEmployeeId", salarySendInfo.getSendEmployeeId()); + map.put("feedbackWorkflowUrl",salaryTemplates.get(0).getFeedbackUrl()); }else{ map.put("confirmStatus", "1"); } - return map; } @@ -671,8 +664,12 @@ public class SalarySendServiceImpl extends Service implements SalarySendService List page = salarySendInfoMapper.list(queryParam); PageInfo pageInfo = SalaryPageUtil.buildPage(queryParam.getCurrent(), queryParam.getPageSize(), page, SalarySendInfoListDTO.class); - SalarySysConfPO needFeedBack = getSalarySysConfService(user).getOneByCode(SalarySysConstant.SALARY_SEND_FEEDBACK); - if(ObjectUtils.isNotEmpty(needFeedBack) && StringUtils.equals(needFeedBack.getConfValue(),"1")){ + SalarySendPO salarySendPO = getSalarySendMapper().getById(queryParam.getSalarySendId()); + if (ObjectUtils.isEmpty(salarySendPO)) + throw new SalaryRunTimeException("工资单不存在或已被删除"); + List salaryTemplates = getSalaryTemplateService(user).getDefaultTemplates(Collections.singletonList(salarySendPO.getSalarySobId())); + Integer ackFeedbackStatus = salaryTemplates.get(0).getAckFeedbackStatus(); + if (ackFeedbackStatus!=null && NumberUtils.compare(ackFeedbackStatus,1) == 1) { // 默认为空时,未读未确认 pageInfo.getList().stream().forEach(obj -> { SalarySendInfoListDTO dto = (SalarySendInfoListDTO) obj; diff --git a/src/com/engine/salary/service/impl/SalaryTemplateServiceImpl.java b/src/com/engine/salary/service/impl/SalaryTemplateServiceImpl.java index 8c6bc6650..72ed6c76e 100644 --- a/src/com/engine/salary/service/impl/SalaryTemplateServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryTemplateServiceImpl.java @@ -197,6 +197,9 @@ public class SalaryTemplateServiceImpl extends Service implements SalaryTemplate salaryTemplateNew.setSalaryItemZeroStatus(saveParam.getSalaryItemZeroStatus()?1:0); salaryTemplateNew.setAutoSendStatus(saveParam.getAutoSendStatus()?1:0); salaryTemplateNew.setAutoSendCycleType(saveParam.getAutoSendCycleType()); + salaryTemplateNew.setAckFeedbackStatus(saveParam.getAckFeedbackStatus()?1:0); + salaryTemplateNew.setAutoAckDays(saveParam.getAutoAckDays()); + salaryTemplateNew.setFeedbackUrl(saveParam.getFeedbackUrl()); // todo 薪资项目设置检查校验 salaryTemplateNew.setSalaryItemSetting(saveParam.getSalaryItemSetting() != null ? JSONUtil.toJsonStr(saveParam.getSalaryItemSetting()) : ""); salaryTemplateNew.setReplenishSalaryItemSetting(saveParam.getReplenishSalaryItemSetting() != null ? JSONUtil.toJsonStr(saveParam.getReplenishSalaryItemSetting()) : ""); diff --git a/src/com/engine/salary/wrapper/SalarySendWrapper.java b/src/com/engine/salary/wrapper/SalarySendWrapper.java index 5fbf57805..0b6548fda 100644 --- a/src/com/engine/salary/wrapper/SalarySendWrapper.java +++ b/src/com/engine/salary/wrapper/SalarySendWrapper.java @@ -148,22 +148,10 @@ public class SalarySendWrapper extends Service implements SalarySendWrapperProxy // todo 目前就一个回算,那么没有冻结且是回算,就展示补发名称 e.setTemplate(NumberUtils.INTEGER_ONE.equals(e.getSalaryAcctType()) ? optional.get().getReplenishName() : optional.get().getName()); e.setTemplateId(optional.get().getId()); + e.setAckFeedbackStatus(optional.get().getAckFeedbackStatus() == null ? 0 : optional.get().getAckFeedbackStatus()); } -// e.setHaveBackCalc(NumberUtils.INTEGER_ZERO); }); } - // 薪资核算ID - Set salaryAcctIds = SalaryEntityUtil.properties(pageList, SalarySendListDTO::getSalaryAcctId); - // 获取是回算的薪资核算ID - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); - List salaryAcctRecordPOS = getSalaryAcctRecordService(user).getBackCalcRecordByIds(salaryAcctIds); -// Set backCalcSalarySobs = SalaryEntityUtil.properties(salaryAcctRecordPOS, salaryAcctRecordPO -> salaryAcctRecordPO.getSalarySobId() + "-" + sdf.format(salaryAcctRecordPO.getSalaryMonth())); -// // 判断是否回算过,haveBackCalc 属性 -// pageList.stream().forEach(salarySendDTO -> { -// if (backCalcSalarySobs.contains(salarySendDTO.getSalarySobId() + "-" + sdf.format(salarySendDTO.getSalaryYearMonth()))) { -// salarySendDTO.setHaveBackCalc(NumberUtils.INTEGER_ONE); -// } -// }); List columns = buildWeaTableColumns(); WeaTable table = new WeaTable(); table.setColumns(columns); diff --git a/src/com/engine/salary/wrapper/SalaryTemplateWrapper.java b/src/com/engine/salary/wrapper/SalaryTemplateWrapper.java index 216fd2ecf..640a498d2 100644 --- a/src/com/engine/salary/wrapper/SalaryTemplateWrapper.java +++ b/src/com/engine/salary/wrapper/SalaryTemplateWrapper.java @@ -20,6 +20,7 @@ import com.engine.salary.util.SalaryI18nUtil; import com.engine.salary.util.page.PageInfo; import com.mzlion.core.utils.BeanUtils; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.math.NumberUtils; import weaver.hrm.User; @@ -60,6 +61,10 @@ public class SalaryTemplateWrapper extends Service { return ServiceUtil.getService(TaxAgentServiceImpl.class, user); } + private SalaryBillBaseSetService getSalaryBillBaseSetService(User user) { + return ServiceUtil.getService(SalaryBillBaseSetServiceImpl.class, user); + } + /** * 工资单模板列表 * @@ -154,6 +159,8 @@ public class SalaryTemplateWrapper extends Service { salaryTemplateBaseSetDTO.setSalarySob(po.getSalarySobId()); salaryTemplateBaseSetDTO.setSendEmail(po.getSendEmailId()); salaryTemplateBaseSetDTO.setAutoSendStatus(po.getAutoSendStatus() == null ? false : po.getAutoSendStatus().equals(SalaryTemplateWhetherEnum.TRUE.getValue())); + salaryTemplateBaseSetDTO.setAckFeedbackStatus(po.getAckFeedbackStatus() == null ? false : NumberUtils.compare(po.getAckFeedbackStatus(), 1) == 1); + salaryTemplateBaseSetDTO.setAutoAckDays(ObjectUtils.isEmpty(po.getAutoAckDays()) ? 7 : po.getAutoAckDays()); // 规则赋值 如果为ALL传“” 如果为byRule传薪资项目ID salaryTemplateBaseSetDTO.setReplenishRule(SalaryTemplateReplenishRuleEnum.ALL.getValue().equals(po.getReplenishRule()) ? "" : po.getReplenishRule()); // 规则设置赋值 @@ -182,6 +189,13 @@ public class SalaryTemplateWrapper extends Service { // WeaForm salaryTemplateBase = SalaryFormatUtil.getInstance().buildForm(SalaryTemplateBaseSetDTO.class, SalaryTemplateBaseSetDTO.builder().salarySobOptions(salarySobOptions).sendEmailOptions(sendEmailOptions).build()); + if(id == null){ + // 新建,获取默认的确认反馈信息 + SalaryBillAckFeedbackDTO defaultAckFeedback = getSalaryBillBaseSetService(user).getDefaultAckFeedbackSetting(); + salaryTemplateBaseSetDTO.setAckFeedbackStatus(StringUtils.equals(defaultAckFeedback.getAckStatus(),"1")); + salaryTemplateBaseSetDTO.setAutoAckDays(defaultAckFeedback.getAutoAckDays()); + salaryTemplateBaseSetDTO.setFeedbackUrl(defaultAckFeedback.getFeedBackUrl()); + } Map salaryTemplateBase = new HashMap<>(); salaryTemplateBase.put("data", salaryTemplateBaseSetDTO); salaryTemplateBase.put("salarySobOptions", salarySobOptions); @@ -215,6 +229,8 @@ public class SalaryTemplateWrapper extends Service { salaryTemplateShowSetDTO.setTextContentPosition(po.getTextContentPosition().toString()); salaryTemplateShowSetDTO.setSalaryItemNullStatus(po.getSalaryItemNullStatus().equals(SalaryTemplateWhetherEnum.TRUE.getValue())); salaryTemplateShowSetDTO.setSalaryItemZeroStatus(po.getSalaryItemZeroStatus().equals(SalaryTemplateWhetherEnum.TRUE.getValue())); + salaryTemplateShowSetDTO.setAckFeedbackStatus(po.getAckFeedbackStatus() != null && NumberUtils.compare(po.getAckFeedbackStatus(),1) == 1); + salaryTemplateShowSetDTO.setAutoAckDays(ObjectUtils.isEmpty(po.getAutoAckDays()) ? 7 : po.getAutoAckDays()); } Map salaryTemplateShowSet = new HashMap<>(); From 1d32b4b015ddcb730484bd6e4c61fa02b64ccf76 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Thu, 13 Jul 2023 14:36:11 +0800 Subject: [PATCH 41/52] =?UTF-8?q?=E6=8E=88=E6=9D=83=E6=96=87=E4=BB=B6id?= =?UTF-8?q?=E8=BF=87=E9=95=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/api/salary/listener/InitListener.java | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/src/com/api/salary/listener/InitListener.java b/src/com/api/salary/listener/InitListener.java index b96ed8e0d..18fb3cb4f 100644 --- a/src/com/api/salary/listener/InitListener.java +++ b/src/com/api/salary/listener/InitListener.java @@ -18,30 +18,33 @@ public class InitListener implements AbstractResourceModelListener { BaseBean bb = new BaseBean(); String cId = new License().getCId(); String defaultCloseNonStandard149 = bb.getPropValue("hrmSalary", "defaultCloseNonStandard149"); - if(StringUtils.isNotBlank(cId) && "true".equals(defaultCloseNonStandard149)) { + if (StringUtils.isNotBlank(cId) && "true".equals(defaultCloseNonStandard149)) { + if (cId.length() > 7) { + cId = cId.substring(cId.length() - 7); + } int cid = Integer.parseInt(cId); - if(!hasMenuInfo(cid, "left", menuid)) { + if (!hasMenuInfo(cid, "left", menuid)) { bb.writeLog("149新薪酬管理 添加默认菜单控制"); insertMenuInfo(cid, "left", menuid); } } } - private void insertMenuInfo(int cid,String type,int id){ + private void insertMenuInfo(int cid, String type, int id) { RecordSet rs = new RecordSet(); BaseBean bb = new BaseBean(); - bb.writeLog("FunctionUpgradeUtil.getMenuId(cid,id):" + FunctionUpgradeUtil.getMenuId(cid,id)); - String sql ="INSERT INTO menucontrollist (type,menuid,isopen) VALUES('"+type+"','"+FunctionUpgradeUtil.getMenuId(cid,id)+"','"+FunctionUpgradeUtil.getMenuStatus(id,-1,cid)+"')"; + bb.writeLog("FunctionUpgradeUtil.getMenuId(cid,id):" + FunctionUpgradeUtil.getMenuId(cid, id)); + String sql = "INSERT INTO menucontrollist (type,menuid,isopen) VALUES('" + type + "','" + FunctionUpgradeUtil.getMenuId(cid, id) + "','" + FunctionUpgradeUtil.getMenuStatus(id, -1, cid) + "')"; rs.execute(sql); } private boolean hasMenuInfo(int cid, String type, int id) { RecordSet rs = new RecordSet(); String sql = "select count(1) as count from menucontrollist where type = ? and menuid = ?"; - rs.executeQuery(sql,type, FunctionUpgradeUtil.getMenuId(cid,id)); - if(rs.next()) { + rs.executeQuery(sql, type, FunctionUpgradeUtil.getMenuId(cid, id)); + if (rs.next()) { int count = rs.getInt("count"); - if(count > 0) { + if (count > 0) { return true; } } From 385726fa76c73b756b88c042d743247f78fb4f23 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Thu, 13 Jul 2023 16:51:01 +0800 Subject: [PATCH 42/52] =?UTF-8?q?=E6=89=80=E6=9C=89=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../engine/salary/wrapper/SalarySystemConfigWrapper.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/com/engine/salary/wrapper/SalarySystemConfigWrapper.java b/src/com/engine/salary/wrapper/SalarySystemConfigWrapper.java index 16ec870b5..4b287af19 100644 --- a/src/com/engine/salary/wrapper/SalarySystemConfigWrapper.java +++ b/src/com/engine/salary/wrapper/SalarySystemConfigWrapper.java @@ -12,6 +12,7 @@ import com.engine.salary.sys.entity.vo.OrderRuleVO; import com.engine.salary.sys.enums.TaxDeclarationFunctionEnum; import com.engine.salary.sys.service.SalarySysConfService; import com.engine.salary.sys.service.impl.SalarySysConfServiceImpl; +import com.engine.salary.util.SalaryEntityUtil; import com.engine.salary.util.page.PageInfo; import com.engine.salary.util.page.SalaryPageUtil; import com.engine.salary.util.valid.RuntimeTypeEnum; @@ -48,6 +49,11 @@ public class SalarySystemConfigWrapper extends Service { o.put("log", log); o.put("version", version); o.put("openFormulaForcedEditing", openFormulaForcedEditing); + + + List confPOS = getSalarySysConfService(user).listSome(SalarySysConfPO.builder().build()); + Map map = SalaryEntityUtil.convert2Map(confPOS, SalarySysConfPO::getConfKey, SalarySysConfPO::getConfValue); + o.putAll(map); return o; } From 152eeaa68e16b36615c4fe4ae0cf0581946390fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Thu, 13 Jul 2023 16:55:23 +0800 Subject: [PATCH 43/52] =?UTF-8?q?=E6=89=80=E6=9C=89=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/engine/salary/wrapper/SalarySystemConfigWrapper.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/com/engine/salary/wrapper/SalarySystemConfigWrapper.java b/src/com/engine/salary/wrapper/SalarySystemConfigWrapper.java index 4b287af19..87b083e02 100644 --- a/src/com/engine/salary/wrapper/SalarySystemConfigWrapper.java +++ b/src/com/engine/salary/wrapper/SalarySystemConfigWrapper.java @@ -44,11 +44,13 @@ public class SalarySystemConfigWrapper extends Service { String log = baseBean.getPropValue("hrmSalary", "log"); String version = baseBean.getPropValue("hrmSalary", "version"); String openFormulaForcedEditing = baseBean.getPropValue("hrmSalary", "openFormulaForcedEditing"); + String showEncryptOperationButton = baseBean.getPropValue("hrmSalary", "showEncryptOperationButton"); Map o = new HashMap<>(); o.put("log", log); o.put("version", version); o.put("openFormulaForcedEditing", openFormulaForcedEditing); + o.put("showEncryptOperationButton", showEncryptOperationButton); List confPOS = getSalarySysConfService(user).listSome(SalarySysConfPO.builder().build()); From 6279f0d8c95c4a00b6ee1382d40b51e3219dc933 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Fri, 14 Jul 2023 09:55:36 +0800 Subject: [PATCH 44/52] =?UTF-8?q?=E5=B7=A5=E8=B5=84=E5=8D=95=E5=8F=8D?= =?UTF-8?q?=E9=A6=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salarybill/SalarySendInfoMapper.java | 7 +++ .../salarybill/SalarySendInfoMapper.xml | 14 ++++++ .../mapper/salarybill/SalarySendMapper.java | 2 + .../mapper/salarybill/SalarySendMapper.xml | 12 +++++ .../salarybill/SalaryTemplateMapper.xml | 20 +++++--- .../salary/service/SalarySendService.java | 4 +- .../salary/service/SalaryTemplateService.java | 6 +++ .../service/impl/SalarySendServiceImpl.java | 21 ++++++--- .../impl/SalaryTemplateServiceImpl.java | 5 ++ .../timer/AutoConfirmSalaryBillCronJob.java | 46 +++++++++++-------- 10 files changed, 103 insertions(+), 34 deletions(-) diff --git a/src/com/engine/salary/mapper/salarybill/SalarySendInfoMapper.java b/src/com/engine/salary/mapper/salarybill/SalarySendInfoMapper.java index 93f184d84..2da9e21b9 100644 --- a/src/com/engine/salary/mapper/salarybill/SalarySendInfoMapper.java +++ b/src/com/engine/salary/mapper/salarybill/SalarySendInfoMapper.java @@ -107,4 +107,11 @@ public interface SalarySendInfoMapper { * @param needAutoIds */ void autoConfirmSalaryBill(@Param("ids") List needAutoIds); + + /** + * 根据薪资账套id获取已发送,确认状态为未确认的工资单 + * @param salarySobIds + * @return + */ + List listUnConfirmedSendInfo(@Param("salarySobIds") List salarySobIds); } \ No newline at end of file diff --git a/src/com/engine/salary/mapper/salarybill/SalarySendInfoMapper.xml b/src/com/engine/salary/mapper/salarybill/SalarySendInfoMapper.xml index 506afd10c..b8e3c1f55 100644 --- a/src/com/engine/salary/mapper/salarybill/SalarySendInfoMapper.xml +++ b/src/com/engine/salary/mapper/salarybill/SalarySendInfoMapper.xml @@ -717,6 +717,20 @@ + diff --git a/src/com/engine/salary/mapper/salarybill/SalarySendMapper.java b/src/com/engine/salary/mapper/salarybill/SalarySendMapper.java index ef1e6f6cb..95e3e73ed 100644 --- a/src/com/engine/salary/mapper/salarybill/SalarySendMapper.java +++ b/src/com/engine/salary/mapper/salarybill/SalarySendMapper.java @@ -65,4 +65,6 @@ public interface SalarySendMapper { void deleteBySalaryAcctRecordIds(@Param("salaryAcctRecordId") Collection ids); List getNeedSendListBySalarySobIds(@Param("salarySobIds")List salarySobIds); + + List getByIds(@Param("ids") List salarySendId); } \ No newline at end of file diff --git a/src/com/engine/salary/mapper/salarybill/SalarySendMapper.xml b/src/com/engine/salary/mapper/salarybill/SalarySendMapper.xml index 5b87e3774..c78a00525 100644 --- a/src/com/engine/salary/mapper/salarybill/SalarySendMapper.xml +++ b/src/com/engine/salary/mapper/salarybill/SalarySendMapper.xml @@ -252,6 +252,18 @@ + diff --git a/src/com/engine/salary/mapper/salarybill/SalaryTemplateMapper.xml b/src/com/engine/salary/mapper/salarybill/SalaryTemplateMapper.xml index 5eb01a1ed..d48505e58 100644 --- a/src/com/engine/salary/mapper/salarybill/SalaryTemplateMapper.xml +++ b/src/com/engine/salary/mapper/salarybill/SalaryTemplateMapper.xml @@ -48,13 +48,16 @@ , t.salary_item_null_status , t.salary_item_zero_status , t.salary_item_setting - , replenish_name - , replenish_rule - , replenish_salary_item_setting - , auto_send_status - , auto_send_cycle_type - , auto_send_day_of_month - , auto_send_time_of_day + , t.replenish_name + , t.replenish_rule + , t.replenish_salary_item_setting + , t.auto_send_status + , t.auto_send_cycle_type + , t.auto_send_day_of_month + , t.auto_send_time_of_day + , t.ack_feedback_status + , t.auto_ack_days + , t.feedback_url , t.create_time , t.update_time , t.creator @@ -324,6 +327,9 @@ AND auto_send_status = #{autoSendStatus} + + AND ack_feedback_status = #{ackFeedbackStatus} + AND salary_sob_id IN diff --git a/src/com/engine/salary/service/SalarySendService.java b/src/com/engine/salary/service/SalarySendService.java index f0cab60a3..90da3440f 100644 --- a/src/com/engine/salary/service/SalarySendService.java +++ b/src/com/engine/salary/service/SalarySendService.java @@ -207,11 +207,13 @@ public interface SalarySendService { * @return * @return */ - List listAllUnConfirmedSendInfo(); + List listUnConfirmedSendInfo(List salarySobIds); /** * 自动确认工资单 * @param needAutoIds */ void autoConfirmSalaryBill(List needAutoIds); + + List getByIds(List salarySendId); } diff --git a/src/com/engine/salary/service/SalaryTemplateService.java b/src/com/engine/salary/service/SalaryTemplateService.java index 37c13637e..bdf8826cb 100644 --- a/src/com/engine/salary/service/SalaryTemplateService.java +++ b/src/com/engine/salary/service/SalaryTemplateService.java @@ -125,4 +125,10 @@ public interface SalaryTemplateService { * 获取所有设置了定时发送的默认工资单模板 */ List getAutoSendTemplate(); + + /** + * 获取所有开启了工资单确认反馈的默认工资单模板 + * @return + */ + List listNeedAckDefaultTemplate(); } diff --git a/src/com/engine/salary/service/impl/SalarySendServiceImpl.java b/src/com/engine/salary/service/impl/SalarySendServiceImpl.java index 6f951f136..38e07dc39 100644 --- a/src/com/engine/salary/service/impl/SalarySendServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalarySendServiceImpl.java @@ -1620,12 +1620,10 @@ public class SalarySendServiceImpl extends Service implements SalarySendService } @Override - public List listAllUnConfirmedSendInfo() { - return getSalarySendInfoMapper().listSome( - SalarySendInfoPO.builder() - .billConfirmStatus(BillConfimStatusEnum.UNCONFIRMED.getValue()) - .sendStatus(1) - .build()); + public List listUnConfirmedSendInfo(List salarySobIds) { + if(CollectionUtils.isEmpty(salarySobIds)) + return Collections.emptyList(); + return getSalarySendInfoMapper().listUnConfirmedSendInfo(salarySobIds); } @Override @@ -1633,6 +1631,15 @@ public class SalarySendServiceImpl extends Service implements SalarySendService if(CollectionUtils.isEmpty(needAutoSendIds)){ return; } - getSalarySendInfoMapper().autoConfirmSalaryBill(needAutoSendIds); + List> partition = Lists.partition((List) needAutoSendIds, 500); + partition.forEach(getSalarySendInfoMapper()::autoConfirmSalaryBill); + } + + @Override + public List getByIds(List salarySendId) { + if(CollectionUtils.isEmpty(salarySendId)){ + return Collections.emptyList(); + } + return getSalarySendMapper().getByIds(salarySendId); } } diff --git a/src/com/engine/salary/service/impl/SalaryTemplateServiceImpl.java b/src/com/engine/salary/service/impl/SalaryTemplateServiceImpl.java index 72ed6c76e..7d0b790c5 100644 --- a/src/com/engine/salary/service/impl/SalaryTemplateServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryTemplateServiceImpl.java @@ -355,4 +355,9 @@ public class SalaryTemplateServiceImpl extends Service implements SalaryTemplate public List getAutoSendTemplate() { return mapper.listSome(SalaryTemplatePO.builder().autoSendStatus(NumberUtils.INTEGER_ONE).useType(NumberUtils.INTEGER_ONE).deleteType(NumberUtils.INTEGER_ZERO).build()); } + + @Override + public List listNeedAckDefaultTemplate() { + return mapper.listSome(SalaryTemplatePO.builder().useType(NumberUtils.INTEGER_ONE).ackFeedbackStatus(NumberUtils.INTEGER_ONE).build()); + } } diff --git a/src/com/engine/salary/timer/AutoConfirmSalaryBillCronJob.java b/src/com/engine/salary/timer/AutoConfirmSalaryBillCronJob.java index 79abafde8..9ddee0497 100644 --- a/src/com/engine/salary/timer/AutoConfirmSalaryBillCronJob.java +++ b/src/com/engine/salary/timer/AutoConfirmSalaryBillCronJob.java @@ -2,22 +2,24 @@ package com.engine.salary.timer; import com.engine.common.util.ServiceUtil; import com.engine.salary.entity.salaryBill.po.SalarySendInfoPO; +import com.engine.salary.entity.salaryBill.po.SalarySendPO; +import com.engine.salary.entity.salaryBill.po.SalaryTemplatePO; import com.engine.salary.service.SalarySendService; +import com.engine.salary.service.SalaryTemplateService; import com.engine.salary.service.impl.SalarySendServiceImpl; -import com.engine.salary.sys.constant.SalarySysConstant; -import com.engine.salary.sys.entity.po.SalarySysConfPO; -import com.engine.salary.sys.service.SalarySysConfService; -import com.engine.salary.sys.service.impl.SalarySysConfServiceImpl; +import com.engine.salary.service.impl.SalaryTemplateServiceImpl; import com.engine.salary.util.SalaryDateUtil; +import com.engine.salary.util.SalaryEntityUtil; import org.apache.commons.lang3.ObjectUtils; -import org.apache.commons.lang3.StringUtils; -import org.apache.commons.lang3.math.NumberUtils; import weaver.hrm.User; import weaver.interfaces.schedule.BaseCronJob; import java.time.LocalDateTime; import java.time.temporal.ChronoUnit; +import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.stream.Collectors; /** @@ -31,8 +33,8 @@ public class AutoConfirmSalaryBillCronJob extends BaseCronJob { return ServiceUtil.getService(SalarySendServiceImpl.class, user); } - private SalarySysConfService getSalarySysConfService(User user) { - return ServiceUtil.getService(SalarySysConfServiceImpl.class, user); + private SalaryTemplateService getSalaryTemplateService(User user) { + return ServiceUtil.getService(SalaryTemplateServiceImpl.class, user); } @Override @@ -40,20 +42,26 @@ public class AutoConfirmSalaryBillCronJob extends BaseCronJob { User user = new User(); user.setUid(1); user.setLoginid("sysadmin"); - // 获取超时时间 - SalarySysConfPO feedbackPO = getSalarySysConfService(user).getOneByCode(SalarySysConstant.SALARY_SEND_FEEDBACK); - if(ObjectUtils.isEmpty(feedbackPO) || StringUtils.equals(feedbackPO.getConfValue(), "0")){ - return; - } - SalarySysConfPO salaryAutoConfirmPO = getSalarySysConfService(user).getOneByCode(SalarySysConstant.SALARY_AUTO_ACK_DAYS); - Long timeOutDays = ObjectUtils.isNotEmpty(salaryAutoConfirmPO) && NumberUtils.isCreatable(salaryAutoConfirmPO.getConfValue()) ? - Long.valueOf(salaryAutoConfirmPO.getConfValue()) : 7L; + // 获取所有需要确认反馈的默认工资单模板 + List templates = getSalaryTemplateService(user).listNeedAckDefaultTemplate(); + // key:薪资账套id,value:对应的自动确认天数 + Map salarySobAckDaysMap = SalaryEntityUtil.convert2Map(templates, SalaryTemplatePO::getSalarySobId, SalaryTemplatePO::getAutoAckDays); + // 根据薪资账套id获取已发送,确认状态为未确认的工资单 + List unConfirmedList = getSalarySendService(user).listUnConfirmedSendInfo(new ArrayList<>(salarySobAckDaysMap.keySet())); + List sendList = getSalarySendService(user).getByIds(unConfirmedList.stream().map(SalarySendInfoPO::getSalarySendId).distinct().collect(Collectors.toList())); + // key:工资单发放id,value:自动确认超时天数 + HashMap autoAckDaysMap = new HashMap<>(); + sendList.stream().forEach(send -> { + Integer autoAckDays = salarySobAckDaysMap.getOrDefault(send.getSalarySobId(), 7); + autoAckDaysMap.put(send.getId(), autoAckDays); + }); LocalDateTime now = LocalDateTime.now(); - // 获取所有确认状态为 未确认的工资单 - List unConfirmedList = getSalarySendService(user).listAllUnConfirmedSendInfo(); List needAutoIds = unConfirmedList.stream().filter(po -> { LocalDateTime sendDateTime = SalaryDateUtil.dateToLocalDateTime(po.getSendTime()); - LocalDateTime autoDateTime = sendDateTime.plus(timeOutDays, ChronoUnit.DAYS); + Integer autoDays = autoAckDaysMap.get(po.getSalarySendId()); + if (ObjectUtils.isEmpty(autoDays)) + return false; + LocalDateTime autoDateTime = sendDateTime.plus(autoDays, ChronoUnit.DAYS); return !autoDateTime.isAfter(now); }).map(SalarySendInfoPO::getId).collect(Collectors.toList()); // 自动确认 From fbdf93cf5b899a83d084c636d37981d48eb1c354 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Mon, 17 Jul 2023 10:20:54 +0800 Subject: [PATCH 45/52] =?UTF-8?q?=E5=8F=96=E6=B6=88=E4=B8=8D=E7=94=A8?= =?UTF-8?q?=E7=B3=BB=E7=BB=9F=E7=AE=97=E7=A8=8E=E6=97=B6=E4=B8=80=E7=B3=BB?= =?UTF-8?q?=E5=88=97=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/SalaryAcctRecordServiceImpl.java | 52 +++++++++---------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/src/com/engine/salary/service/impl/SalaryAcctRecordServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctRecordServiceImpl.java index 25201e0b8..459873c3e 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctRecordServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctRecordServiceImpl.java @@ -329,32 +329,32 @@ public class SalaryAcctRecordServiceImpl extends Service implements SalaryAcctRe // 获取个税申报功能状态 TaxDeclarationFunctionEnum taxDeclarationFunctionEnum = getSalarySysConfService(user).getTaxDeclaration(); - if (taxDeclarationFunctionEnum.getValue().equals(TaxDeclarationFunctionEnum.CLOSURE.getValue())) { - // 关闭了个税申报功能 - // 如果某个月(薪资所属期)还未归档,不可以新建之后月份的薪资核算 - SalaryAcctRecordPO notArchivedSalaryAcctRecordPO = salaryAcctRecords.stream() - .filter(e -> Objects.equals(e.getStatus(), SalaryAcctRecordStatusEnum.NOT_ARCHIVED.getValue()) - && e.getSalaryMonth().before(SalaryDateUtil.localDateToDate(salarySobCycleDTO.getSalaryMonth().atDay(1)))) - .findAny() - .orElse(null); - if (Objects.nonNull(notArchivedSalaryAcctRecordPO)) { - throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98754, "薪资所属期{0}的薪资核算结果还未归档,不能新建薪资所属期{1}的薪资核算") - .replace("{0}", SalaryDateUtil.localDate2YearMonth(notArchivedSalaryAcctRecordPO.getTaxCycle()).toString()) - .replace("{1}", salarySobCycleDTO.getTaxCycle().toString())); - } - // 如果有某个月(薪资所属期)已经归档了,不可以新建之前月份的薪资核算 - SalaryAcctRecordPO havaSalaryAcctRecordPO = salaryAcctRecords.stream() - .filter(e -> Objects.equals(e.getStatus(), SalaryAcctRecordStatusEnum.ARCHIVED.getValue()) - && e.getTaxCycle().after(SalaryDateUtil.localDateToDate(salarySobCycleDTO.getSalaryMonth().atDay(1)))) - .findAny() - .orElse(null); - if (Objects.nonNull(havaSalaryAcctRecordPO)) { - throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98755, "薪资所属期{0}的薪资核算结果已经归档,不能新建薪资所属期{1}的薪资核算") - .replace("{0}", SalaryDateUtil.localDate2YearMonth(havaSalaryAcctRecordPO.getSalaryMonth()).toString()) - .replace("{1}", salarySobCycleDTO.getSalaryMonth().toString())); - } - - } +// if (taxDeclarationFunctionEnum.getValue().equals(TaxDeclarationFunctionEnum.CLOSURE.getValue())) { +// // 关闭了个税申报功能 +// // 如果某个月(薪资所属期)还未归档,不可以新建之后月份的薪资核算 +// SalaryAcctRecordPO notArchivedSalaryAcctRecordPO = salaryAcctRecords.stream() +// .filter(e -> Objects.equals(e.getStatus(), SalaryAcctRecordStatusEnum.NOT_ARCHIVED.getValue()) +// && e.getSalaryMonth().before(SalaryDateUtil.localDateToDate(salarySobCycleDTO.getSalaryMonth().atDay(1)))) +// .findAny() +// .orElse(null); +// if (Objects.nonNull(notArchivedSalaryAcctRecordPO)) { +// throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98754, "薪资所属期{0}的薪资核算结果还未归档,不能新建薪资所属期{1}的薪资核算") +// .replace("{0}", SalaryDateUtil.localDate2YearMonth(notArchivedSalaryAcctRecordPO.getTaxCycle()).toString()) +// .replace("{1}", salarySobCycleDTO.getTaxCycle().toString())); +// } +// // 如果有某个月(薪资所属期)已经归档了,不可以新建之前月份的薪资核算 +// SalaryAcctRecordPO havaSalaryAcctRecordPO = salaryAcctRecords.stream() +// .filter(e -> Objects.equals(e.getStatus(), SalaryAcctRecordStatusEnum.ARCHIVED.getValue()) +// && e.getTaxCycle().after(SalaryDateUtil.localDateToDate(salarySobCycleDTO.getSalaryMonth().atDay(1)))) +// .findAny() +// .orElse(null); +// if (Objects.nonNull(havaSalaryAcctRecordPO)) { +// throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98755, "薪资所属期{0}的薪资核算结果已经归档,不能新建薪资所属期{1}的薪资核算") +// .replace("{0}", SalaryDateUtil.localDate2YearMonth(havaSalaryAcctRecordPO.getSalaryMonth()).toString()) +// .replace("{1}", salarySobCycleDTO.getSalaryMonth().toString())); +// } +// +// } if (taxDeclarationFunctionEnum.getValue().equals(TaxDeclarationFunctionEnum.OPEN.getValue())) { // 开启了个税申报功能 // 如果某个月(税款所属期)已经归档了,不可以新建之前月份的薪资核算 From 8221d4da69c7dc0daa70d27a3806dcbc24c184a9 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Mon, 17 Jul 2023 11:27:40 +0800 Subject: [PATCH 46/52] =?UTF-8?q?=E5=B7=A5=E8=B5=84=E5=8D=95=E5=8F=8D?= =?UTF-8?q?=E9=A6=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salaryBill/dto/SalaryTemplateShowSetDTO.java | 16 ---------------- .../mapper/salarybill/SalarySendInfoMapper.xml | 2 +- .../impl/SalaryBillBaseSetServiceImpl.java | 1 + .../service/impl/SalarySendServiceImpl.java | 10 ++++++---- .../salary/wrapper/SalaryTemplateWrapper.java | 4 +--- 5 files changed, 9 insertions(+), 24 deletions(-) diff --git a/src/com/engine/salary/entity/salaryBill/dto/SalaryTemplateShowSetDTO.java b/src/com/engine/salary/entity/salaryBill/dto/SalaryTemplateShowSetDTO.java index 86aaeb0d6..4b5efcd1c 100644 --- a/src/com/engine/salary/entity/salaryBill/dto/SalaryTemplateShowSetDTO.java +++ b/src/com/engine/salary/entity/salaryBill/dto/SalaryTemplateShowSetDTO.java @@ -55,20 +55,4 @@ public class SalaryTemplateShowSetDTO { // 薪资项为0时不显示") private Boolean salaryItemZeroStatus; - /** - * 工资单确认反馈状态 - */ - private Boolean ackFeedbackStatus; - - /** - * 自动确认超时天数 - */ - private Integer autoAckDays; - - /** - * 反馈流程地址 - * - */ - private String feedbackUrl; - } diff --git a/src/com/engine/salary/mapper/salarybill/SalarySendInfoMapper.xml b/src/com/engine/salary/mapper/salarybill/SalarySendInfoMapper.xml index b8e3c1f55..e6f733971 100644 --- a/src/com/engine/salary/mapper/salarybill/SalarySendInfoMapper.xml +++ b/src/com/engine/salary/mapper/salarybill/SalarySendInfoMapper.xml @@ -724,12 +724,12 @@ LEFT JOIN hrsa_salary_send s ON t.salary_send_id = s.id WHERE t.delete_type = 0 - AND t.bill_confirm_status = 0 AND t.send_status = 1 AND s.salary_sob_id IN #{salarySobId} + AND (t.bill_confirm_status = 0 or bill_confirm_status is null) diff --git a/src/com/engine/salary/service/impl/SalaryBillBaseSetServiceImpl.java b/src/com/engine/salary/service/impl/SalaryBillBaseSetServiceImpl.java index 476717d7c..73a5a184b 100644 --- a/src/com/engine/salary/service/impl/SalaryBillBaseSetServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryBillBaseSetServiceImpl.java @@ -142,6 +142,7 @@ public class SalaryBillBaseSetServiceImpl extends Service implements SalaryBillB // 未开启工资单确认 defaultAckFeedBackDTO.setAckStatus("0"); defaultAckFeedBackDTO.setAutoAckDays(0); + defaultAckFeedBackDTO.setFeedBackUrl("/"); return defaultAckFeedBackDTO; } defaultAckFeedBackDTO.setAckStatus(ackStatus); diff --git a/src/com/engine/salary/service/impl/SalarySendServiceImpl.java b/src/com/engine/salary/service/impl/SalarySendServiceImpl.java index 38e07dc39..9fd325cf6 100644 --- a/src/com/engine/salary/service/impl/SalarySendServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalarySendServiceImpl.java @@ -480,8 +480,7 @@ public class SalarySendServiceImpl extends Service implements SalarySendService List salaryTemplates = getSalaryTemplateService(user).getDefaultTemplates(Collections.singletonList(salarySendPO.getSalarySobId())); Integer ackFeedbackStatus = salaryTemplates.get(0).getAckFeedbackStatus(); // 更新查看状态 - if ( (ackFeedbackStatus!=null && NumberUtils.compare(ackFeedbackStatus,1) == 1) - && (salarySendInfo.getBillReadStatus() == null || NumberUtils.compare(salarySendInfo.getBillReadStatus(),BillReadStatusEnum.UNREAD.getValue()) == 0)) { + if (salarySendInfo.getBillReadStatus() == null || NumberUtils.compare(salarySendInfo.getBillReadStatus(),BillReadStatusEnum.UNREAD.getValue()) == 0) { salarySendInfo.setBillReadStatus(BillReadStatusEnum.READED.getValue()); salarySendInfo.setUpdateTime(new Date()); getSalarySendInfoMapper().updateIgnoreNull(salarySendInfo); @@ -610,7 +609,7 @@ public class SalarySendServiceImpl extends Service implements SalarySendService map.put("salaryTemplate", salaryTemplate); map.put("salaryAcctResult", salaryAcctResultS); // 工资单发送人、是否已确认 - if (ackFeedbackStatus!=null && NumberUtils.compare(ackFeedbackStatus,1) == 1) { + if (ackFeedbackStatus!=null && NumberUtils.compare(ackFeedbackStatus,1) == 0) { map.put("confirmStatus", salarySendInfo.getBillConfirmStatus() == null ? "0" : salarySendInfo.getBillConfirmStatus().toString()); map.put("sendEmployeeId", salarySendInfo.getSendEmployeeId()); map.put("feedbackWorkflowUrl",salaryTemplates.get(0).getFeedbackUrl()); @@ -669,7 +668,7 @@ public class SalarySendServiceImpl extends Service implements SalarySendService throw new SalaryRunTimeException("工资单不存在或已被删除"); List salaryTemplates = getSalaryTemplateService(user).getDefaultTemplates(Collections.singletonList(salarySendPO.getSalarySobId())); Integer ackFeedbackStatus = salaryTemplates.get(0).getAckFeedbackStatus(); - if (ackFeedbackStatus!=null && NumberUtils.compare(ackFeedbackStatus,1) == 1) { + if (ackFeedbackStatus!=null && NumberUtils.compare(ackFeedbackStatus,1) == 0) { // 默认为空时,未读未确认 pageInfo.getList().stream().forEach(obj -> { SalarySendInfoListDTO dto = (SalarySendInfoListDTO) obj; @@ -769,6 +768,9 @@ public class SalarySendServiceImpl extends Service implements SalarySendService Map map = JsonUtil.parseMap(salaryTemplateContent, Object.class); return SalaryTemplatePO.builder() .id(Long.valueOf(map.getOrDefault("id", "0").toString())) + .ackFeedbackStatus(Integer.valueOf(map.getOrDefault("ackFeedbackStatus", "0").toString())) + .autoAckDays(Integer.valueOf(map.getOrDefault("autoAckDays", "0").toString())) + .feedbackUrl(map.getOrDefault("feedbackUrl", "").toString()) .name(map.getOrDefault("name", "").toString()) .salarySobId(Long.valueOf(map.getOrDefault("salarySobId", "0").toString())) .useType(Integer.valueOf(map.getOrDefault("useType", "0").toString())) diff --git a/src/com/engine/salary/wrapper/SalaryTemplateWrapper.java b/src/com/engine/salary/wrapper/SalaryTemplateWrapper.java index 640a498d2..d5d7a68cf 100644 --- a/src/com/engine/salary/wrapper/SalaryTemplateWrapper.java +++ b/src/com/engine/salary/wrapper/SalaryTemplateWrapper.java @@ -159,7 +159,7 @@ public class SalaryTemplateWrapper extends Service { salaryTemplateBaseSetDTO.setSalarySob(po.getSalarySobId()); salaryTemplateBaseSetDTO.setSendEmail(po.getSendEmailId()); salaryTemplateBaseSetDTO.setAutoSendStatus(po.getAutoSendStatus() == null ? false : po.getAutoSendStatus().equals(SalaryTemplateWhetherEnum.TRUE.getValue())); - salaryTemplateBaseSetDTO.setAckFeedbackStatus(po.getAckFeedbackStatus() == null ? false : NumberUtils.compare(po.getAckFeedbackStatus(), 1) == 1); + salaryTemplateBaseSetDTO.setAckFeedbackStatus(po.getAckFeedbackStatus() == null ? false : NumberUtils.compare(po.getAckFeedbackStatus(), 1) == 0); salaryTemplateBaseSetDTO.setAutoAckDays(ObjectUtils.isEmpty(po.getAutoAckDays()) ? 7 : po.getAutoAckDays()); // 规则赋值 如果为ALL传“” 如果为byRule传薪资项目ID salaryTemplateBaseSetDTO.setReplenishRule(SalaryTemplateReplenishRuleEnum.ALL.getValue().equals(po.getReplenishRule()) ? "" : po.getReplenishRule()); @@ -229,8 +229,6 @@ public class SalaryTemplateWrapper extends Service { salaryTemplateShowSetDTO.setTextContentPosition(po.getTextContentPosition().toString()); salaryTemplateShowSetDTO.setSalaryItemNullStatus(po.getSalaryItemNullStatus().equals(SalaryTemplateWhetherEnum.TRUE.getValue())); salaryTemplateShowSetDTO.setSalaryItemZeroStatus(po.getSalaryItemZeroStatus().equals(SalaryTemplateWhetherEnum.TRUE.getValue())); - salaryTemplateShowSetDTO.setAckFeedbackStatus(po.getAckFeedbackStatus() != null && NumberUtils.compare(po.getAckFeedbackStatus(),1) == 1); - salaryTemplateShowSetDTO.setAutoAckDays(ObjectUtils.isEmpty(po.getAutoAckDays()) ? 7 : po.getAutoAckDays()); } Map salaryTemplateShowSet = new HashMap<>(); From 1b289319a4f070e8adae0613d2fa4812474c0125 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Mon, 17 Jul 2023 11:52:10 +0800 Subject: [PATCH 47/52] =?UTF-8?q?=E5=B7=A5=E8=B5=84=E5=8D=95=E5=8F=8D?= =?UTF-8?q?=E9=A6=88sql?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resource/sqlupgrade/DM/sql202307170403.sql | 24 +++++++++++++++++++ resource/sqlupgrade/GS/sql202307170403.sql | 24 +++++++++++++++++++ resource/sqlupgrade/JC/sql202307170403.sql | 24 +++++++++++++++++++ resource/sqlupgrade/Mysql/sql202307170403.sql | 9 +++++++ .../sqlupgrade/Oracle/sql202307170403.sql | 23 ++++++++++++++++++ resource/sqlupgrade/PG/sql202307170403.sql | 9 +++++++ .../sqlupgrade/SQLServer/sql202307170403.sql | 11 +++++++++ resource/sqlupgrade/ST/sql202307170403.sql | 24 +++++++++++++++++++ 8 files changed, 148 insertions(+) create mode 100644 resource/sqlupgrade/DM/sql202307170403.sql create mode 100644 resource/sqlupgrade/GS/sql202307170403.sql create mode 100644 resource/sqlupgrade/JC/sql202307170403.sql create mode 100644 resource/sqlupgrade/Mysql/sql202307170403.sql create mode 100644 resource/sqlupgrade/Oracle/sql202307170403.sql create mode 100644 resource/sqlupgrade/PG/sql202307170403.sql create mode 100644 resource/sqlupgrade/SQLServer/sql202307170403.sql create mode 100644 resource/sqlupgrade/ST/sql202307170403.sql diff --git a/resource/sqlupgrade/DM/sql202307170403.sql b/resource/sqlupgrade/DM/sql202307170403.sql new file mode 100644 index 000000000..bc59c53ae --- /dev/null +++ b/resource/sqlupgrade/DM/sql202307170403.sql @@ -0,0 +1,24 @@ +alter table hrsa_salary_send_info +add bill_read_status NUMBER null; +/ + +alter table hrsa_salary_send_info +add bill_confirm_status NUMBER null; +/ + +alter table hrsa_salary_send_info +add send_employee_id NUMBER(38,0) NULL; +/ + +alter table hrsa_salary_template +add ack_feedback_status NUMBER NULL; +/ + +alter table hrsa_salary_template +add auto_ack_days NUMBER NULL; +/ + +alter table hrsa_salary_template +add feedback_url VARCHAR2(500) NULL; +/ + diff --git a/resource/sqlupgrade/GS/sql202307170403.sql b/resource/sqlupgrade/GS/sql202307170403.sql new file mode 100644 index 000000000..bc59c53ae --- /dev/null +++ b/resource/sqlupgrade/GS/sql202307170403.sql @@ -0,0 +1,24 @@ +alter table hrsa_salary_send_info +add bill_read_status NUMBER null; +/ + +alter table hrsa_salary_send_info +add bill_confirm_status NUMBER null; +/ + +alter table hrsa_salary_send_info +add send_employee_id NUMBER(38,0) NULL; +/ + +alter table hrsa_salary_template +add ack_feedback_status NUMBER NULL; +/ + +alter table hrsa_salary_template +add auto_ack_days NUMBER NULL; +/ + +alter table hrsa_salary_template +add feedback_url VARCHAR2(500) NULL; +/ + diff --git a/resource/sqlupgrade/JC/sql202307170403.sql b/resource/sqlupgrade/JC/sql202307170403.sql new file mode 100644 index 000000000..bc59c53ae --- /dev/null +++ b/resource/sqlupgrade/JC/sql202307170403.sql @@ -0,0 +1,24 @@ +alter table hrsa_salary_send_info +add bill_read_status NUMBER null; +/ + +alter table hrsa_salary_send_info +add bill_confirm_status NUMBER null; +/ + +alter table hrsa_salary_send_info +add send_employee_id NUMBER(38,0) NULL; +/ + +alter table hrsa_salary_template +add ack_feedback_status NUMBER NULL; +/ + +alter table hrsa_salary_template +add auto_ack_days NUMBER NULL; +/ + +alter table hrsa_salary_template +add feedback_url VARCHAR2(500) NULL; +/ + diff --git a/resource/sqlupgrade/Mysql/sql202307170403.sql b/resource/sqlupgrade/Mysql/sql202307170403.sql new file mode 100644 index 000000000..a01647d03 --- /dev/null +++ b/resource/sqlupgrade/Mysql/sql202307170403.sql @@ -0,0 +1,9 @@ +ALTER TABLE hrsa_salary_send_info +ADD COLUMN bill_read_status int NULL, +ADD COLUMN bill_confirm_status int NULL, +ADD COLUMN send_employee_id BIGINT NULL; + +ALTER TABLE hrsa_salary_template +ADD COLUMN ack_feedback_status int NULL, +ADD COLUMN auto_ack_days int NULL, +ADD COLUMN feedback_url varchar(500) NULL; \ No newline at end of file diff --git a/resource/sqlupgrade/Oracle/sql202307170403.sql b/resource/sqlupgrade/Oracle/sql202307170403.sql new file mode 100644 index 000000000..8765e111d --- /dev/null +++ b/resource/sqlupgrade/Oracle/sql202307170403.sql @@ -0,0 +1,23 @@ +alter table hrsa_salary_send_info +add bill_read_status NUMBER null +/ + +alter table hrsa_salary_send_info +add bill_confirm_status NUMBER null +/ + +alter table hrsa_salary_send_info +add send_employee_id NUMBER(38,0) NULL +/ + +alter table hrsa_salary_template +add ack_feedback_status NUMBER NULL +/ + +alter table hrsa_salary_template +add auto_ack_days NUMBER NULL +/ + +alter table hrsa_salary_template +add feedback_url VARCHAR2(500) NULL +/ \ No newline at end of file diff --git a/resource/sqlupgrade/PG/sql202307170403.sql b/resource/sqlupgrade/PG/sql202307170403.sql new file mode 100644 index 000000000..a01647d03 --- /dev/null +++ b/resource/sqlupgrade/PG/sql202307170403.sql @@ -0,0 +1,9 @@ +ALTER TABLE hrsa_salary_send_info +ADD COLUMN bill_read_status int NULL, +ADD COLUMN bill_confirm_status int NULL, +ADD COLUMN send_employee_id BIGINT NULL; + +ALTER TABLE hrsa_salary_template +ADD COLUMN ack_feedback_status int NULL, +ADD COLUMN auto_ack_days int NULL, +ADD COLUMN feedback_url varchar(500) NULL; \ No newline at end of file diff --git a/resource/sqlupgrade/SQLServer/sql202307170403.sql b/resource/sqlupgrade/SQLServer/sql202307170403.sql new file mode 100644 index 000000000..de0724f06 --- /dev/null +++ b/resource/sqlupgrade/SQLServer/sql202307170403.sql @@ -0,0 +1,11 @@ +ALTER TABLE hrsa_salary_send_info +ADD bill_read_status int NULL, +bill_confirm_status int NULL, +send_employee_id BIGINT NULL +GO + +ALTER TABLE hrsa_salary_template +ADD ack_feedback_status int NULL, +auto_ack_days int NULL, +feedback_url varchar(500) NULL +GO \ No newline at end of file diff --git a/resource/sqlupgrade/ST/sql202307170403.sql b/resource/sqlupgrade/ST/sql202307170403.sql new file mode 100644 index 000000000..bc59c53ae --- /dev/null +++ b/resource/sqlupgrade/ST/sql202307170403.sql @@ -0,0 +1,24 @@ +alter table hrsa_salary_send_info +add bill_read_status NUMBER null; +/ + +alter table hrsa_salary_send_info +add bill_confirm_status NUMBER null; +/ + +alter table hrsa_salary_send_info +add send_employee_id NUMBER(38,0) NULL; +/ + +alter table hrsa_salary_template +add ack_feedback_status NUMBER NULL; +/ + +alter table hrsa_salary_template +add auto_ack_days NUMBER NULL; +/ + +alter table hrsa_salary_template +add feedback_url VARCHAR2(500) NULL; +/ + From e83302caac64b6ae567b58ebf84f62ccf139bf35 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Mon, 17 Jul 2023 12:11:31 +0800 Subject: [PATCH 48/52] =?UTF-8?q?=E5=B7=A5=E8=B5=84=E5=8D=95=E5=8F=8D?= =?UTF-8?q?=E9=A6=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../engine/salary/service/impl/SalarySendServiceImpl.java | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/com/engine/salary/service/impl/SalarySendServiceImpl.java b/src/com/engine/salary/service/impl/SalarySendServiceImpl.java index 9fd325cf6..f6b149e70 100644 --- a/src/com/engine/salary/service/impl/SalarySendServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalarySendServiceImpl.java @@ -477,8 +477,6 @@ public class SalarySendServiceImpl extends Service implements SalarySendService SalarySendPO salarySendPO = getSalarySendMapper().getById(salarySendInfo.getSalarySendId()); if(ObjectUtils.isEmpty(salarySendPO)) throw new SalaryRunTimeException("工资单不存在"); - List salaryTemplates = getSalaryTemplateService(user).getDefaultTemplates(Collections.singletonList(salarySendPO.getSalarySobId())); - Integer ackFeedbackStatus = salaryTemplates.get(0).getAckFeedbackStatus(); // 更新查看状态 if (salarySendInfo.getBillReadStatus() == null || NumberUtils.compare(salarySendInfo.getBillReadStatus(),BillReadStatusEnum.UNREAD.getValue()) == 0) { salarySendInfo.setBillReadStatus(BillReadStatusEnum.READED.getValue()); @@ -609,10 +607,9 @@ public class SalarySendServiceImpl extends Service implements SalarySendService map.put("salaryTemplate", salaryTemplate); map.put("salaryAcctResult", salaryAcctResultS); // 工资单发送人、是否已确认 - if (ackFeedbackStatus!=null && NumberUtils.compare(ackFeedbackStatus,1) == 0) { + if (NumberUtils.compare(salaryTemplate.getAckFeedbackStatus(),1) == 0) { map.put("confirmStatus", salarySendInfo.getBillConfirmStatus() == null ? "0" : salarySendInfo.getBillConfirmStatus().toString()); map.put("sendEmployeeId", salarySendInfo.getSendEmployeeId()); - map.put("feedbackWorkflowUrl",salaryTemplates.get(0).getFeedbackUrl()); }else{ map.put("confirmStatus", "1"); } From 88892f1aac04772158650fea4a6e5b7b8a5bc781 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Mon, 17 Jul 2023 12:36:20 +0800 Subject: [PATCH 49/52] =?UTF-8?q?=E5=B7=A5=E8=B5=84=E5=8D=95=E5=8F=8D?= =?UTF-8?q?=E9=A6=88fixBug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salaryBill/bo/SalaryTemplateBO.java | 3 ++ .../salarybill/SalaryTemplateMapper.xml | 36 +++++++++++++++++++ 2 files changed, 39 insertions(+) diff --git a/src/com/engine/salary/entity/salaryBill/bo/SalaryTemplateBO.java b/src/com/engine/salary/entity/salaryBill/bo/SalaryTemplateBO.java index a72575661..a12f0e81f 100644 --- a/src/com/engine/salary/entity/salaryBill/bo/SalaryTemplateBO.java +++ b/src/com/engine/salary/entity/salaryBill/bo/SalaryTemplateBO.java @@ -77,6 +77,9 @@ public class SalaryTemplateBO { .autoSendStatus(saveParam.getAutoSendStatus()?1:0) .autoSendDayOfMonth(saveParam.getAutoSendDayOfMonth()) .autoSendTimeOfDay(saveParam.getAutoSendTimeOfDay()) + .ackFeedbackStatus(saveParam.getAckFeedbackStatus()?1:0) + .autoAckDays(saveParam.getAutoAckDays()) + .feedbackUrl(saveParam.getFeedbackUrl()) .createTime(new Date()) .updateTime(new Date()) .creator(employeeId) diff --git a/src/com/engine/salary/mapper/salarybill/SalaryTemplateMapper.xml b/src/com/engine/salary/mapper/salarybill/SalaryTemplateMapper.xml index d48505e58..29a016b93 100644 --- a/src/com/engine/salary/mapper/salarybill/SalaryTemplateMapper.xml +++ b/src/com/engine/salary/mapper/salarybill/SalaryTemplateMapper.xml @@ -621,6 +621,15 @@ auto_send_time_of_day, + + ack_feedback_status, + + + auto_ack_days, + + + feedback_url, + create_time, @@ -707,6 +716,15 @@ #{autoSendTimeOfDay}, + + #{ackFeedbackStatus}, + + + #{autoAckDays}, + + + #{feedbackUrl}, + #{createTime}, @@ -803,6 +821,15 @@ auto_send_time_of_day, + + ack_feedback_status, + + + auto_ack_days, + + + feedback_url, + create_time, @@ -889,6 +916,15 @@ #{autoSendTimeOfDay}, + + #{ackFeedbackStatus}, + + + #{autoAckDays}, + + + #{feedbackUrl}, + #{createTime}, From 5d6a471fb8e04c5a8a19d0f193c0be5b8c28524c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Mon, 17 Jul 2023 14:37:15 +0800 Subject: [PATCH 50/52] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=9C=AA=E9=80=82?= =?UTF-8?q?=E9=85=8D=E6=95=B0=E6=8D=AE=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resource/sqlupgrade/GS/sql202307170403.sql | 24 ---------------------- resource/sqlupgrade/ST/sql202307170403.sql | 24 ---------------------- 2 files changed, 48 deletions(-) delete mode 100644 resource/sqlupgrade/GS/sql202307170403.sql delete mode 100644 resource/sqlupgrade/ST/sql202307170403.sql diff --git a/resource/sqlupgrade/GS/sql202307170403.sql b/resource/sqlupgrade/GS/sql202307170403.sql deleted file mode 100644 index bc59c53ae..000000000 --- a/resource/sqlupgrade/GS/sql202307170403.sql +++ /dev/null @@ -1,24 +0,0 @@ -alter table hrsa_salary_send_info -add bill_read_status NUMBER null; -/ - -alter table hrsa_salary_send_info -add bill_confirm_status NUMBER null; -/ - -alter table hrsa_salary_send_info -add send_employee_id NUMBER(38,0) NULL; -/ - -alter table hrsa_salary_template -add ack_feedback_status NUMBER NULL; -/ - -alter table hrsa_salary_template -add auto_ack_days NUMBER NULL; -/ - -alter table hrsa_salary_template -add feedback_url VARCHAR2(500) NULL; -/ - diff --git a/resource/sqlupgrade/ST/sql202307170403.sql b/resource/sqlupgrade/ST/sql202307170403.sql deleted file mode 100644 index bc59c53ae..000000000 --- a/resource/sqlupgrade/ST/sql202307170403.sql +++ /dev/null @@ -1,24 +0,0 @@ -alter table hrsa_salary_send_info -add bill_read_status NUMBER null; -/ - -alter table hrsa_salary_send_info -add bill_confirm_status NUMBER null; -/ - -alter table hrsa_salary_send_info -add send_employee_id NUMBER(38,0) NULL; -/ - -alter table hrsa_salary_template -add ack_feedback_status NUMBER NULL; -/ - -alter table hrsa_salary_template -add auto_ack_days NUMBER NULL; -/ - -alter table hrsa_salary_template -add feedback_url VARCHAR2(500) NULL; -/ - From 1ea80b8fe99df61d70fb35a3b04c3b4d359a3a0a Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Mon, 17 Jul 2023 15:01:14 +0800 Subject: [PATCH 51/52] =?UTF-8?q?=E5=B7=A5=E8=B5=84=E5=8D=95=E5=8F=8D?= =?UTF-8?q?=E9=A6=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salarybill/BillConfimStatusEnum.java | 2 +- .../salarybill/SalarySendInfoMapper.xml | 2 +- .../salary/service/SalaryBillService.java | 6 +++++ .../service/impl/SalaryBillServiceImpl.java | 11 +++++++++ .../salary/web/SalaryBillController.java | 24 +++++++++++++++++++ .../salary/wrapper/SalarySendWrapper.java | 7 ++++++ 6 files changed, 50 insertions(+), 2 deletions(-) diff --git a/src/com/engine/salary/enums/salarybill/BillConfimStatusEnum.java b/src/com/engine/salary/enums/salarybill/BillConfimStatusEnum.java index 89ca4e758..2a1626532 100644 --- a/src/com/engine/salary/enums/salarybill/BillConfimStatusEnum.java +++ b/src/com/engine/salary/enums/salarybill/BillConfimStatusEnum.java @@ -14,7 +14,7 @@ public enum BillConfimStatusEnum implements BaseEnum { UNCONFIRMED(0, "未确认", 93286), CONFIRMED(1, "已确认", 93212), - AUTOCONFIRMED(2, "自动确认", 93212); + FEEDBACK(2, "已反馈", 0); private final int value; diff --git a/src/com/engine/salary/mapper/salarybill/SalarySendInfoMapper.xml b/src/com/engine/salary/mapper/salarybill/SalarySendInfoMapper.xml index e6f733971..7d4001131 100644 --- a/src/com/engine/salary/mapper/salarybill/SalarySendInfoMapper.xml +++ b/src/com/engine/salary/mapper/salarybill/SalarySendInfoMapper.xml @@ -788,7 +788,7 @@ UPDATE hrsa_salary_send_info set - bill_confirm_status = 2 + bill_confirm_status = 1 where delete_type = 0 diff --git a/src/com/engine/salary/service/SalaryBillService.java b/src/com/engine/salary/service/SalaryBillService.java index 23bd54597..0f8b9030a 100644 --- a/src/com/engine/salary/service/SalaryBillService.java +++ b/src/com/engine/salary/service/SalaryBillService.java @@ -36,6 +36,12 @@ public interface SalaryBillService { */ void confirmSalaryBill(Long salaryInfoId); + /** + * 工资单反馈 + * @param salaryInfoId + */ + void feedBackSalaryBill(Long salaryInfoId); + /** * 工资单撤回 * diff --git a/src/com/engine/salary/service/impl/SalaryBillServiceImpl.java b/src/com/engine/salary/service/impl/SalaryBillServiceImpl.java index ed8dc4351..6b438b564 100644 --- a/src/com/engine/salary/service/impl/SalaryBillServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryBillServiceImpl.java @@ -436,6 +436,17 @@ public class SalaryBillServiceImpl extends Service implements SalaryBillService getSalarySendInfoMapper().updateIgnoreNull(sendInfoPO); } + @Override + public void feedBackSalaryBill(Long salaryInfoId) { + SalarySendInfoPO sendInfoPO = getSalarySendInfoMapper().getById(salaryInfoId); + if(ObjectUtils.isEmpty(sendInfoPO)){ + throw new SalaryRunTimeException("工资单不存在或已被删除!"); + } + sendInfoPO.setBillConfirmStatus(BillConfimStatusEnum.FEEDBACK.getValue()); + sendInfoPO.setUpdateTime(new Date()); + getSalarySendInfoMapper().updateIgnoreNull(sendInfoPO); + } + public List> getSendInfoList(Long sendId, List ids) { SalarySendPO salarySend = getSalarySendMapper().getById(sendId); diff --git a/src/com/engine/salary/web/SalaryBillController.java b/src/com/engine/salary/web/SalaryBillController.java index 080e982d7..ea5cdeece 100644 --- a/src/com/engine/salary/web/SalaryBillController.java +++ b/src/com/engine/salary/web/SalaryBillController.java @@ -569,6 +569,30 @@ public class SalaryBillController { } return new ResponseResult>(user).run(getSalarySendWrapper(user)::confirmSalaryBill, salaryInfoId); } + + /** + * 工资单反馈 + * + * @param salaryInfoId + * @return + */ + @GET + @Path("/feedBackSalaryBill") + @Produces(MediaType.APPLICATION_JSON) + public String feedBackSalaryBill(@Context HttpServletRequest request, @Context HttpServletResponse response, @QueryParam(value = "salaryInfoId") Long salaryInfoId) { + User user = null; + String recipient = request.getParameter("recipient"); + String em_auth_userid = request.getParameter("em_auth_userid"); + log.info("salary recipient: {} em_auth_userid: {}", recipient, em_auth_userid); + if (StringUtils.isNotBlank(recipient) && NumberUtils.isCreatable(recipient)) { + user = new User(Integer.parseInt(recipient)); + } else if (StringUtils.isNotBlank(em_auth_userid) && NumberUtils.isCreatable(em_auth_userid)) { + user = new User(Integer.parseInt(em_auth_userid)); + } else { + user = HrmUserVarify.getUser(request, response); + } + return new ResponseResult>(user).run(getSalarySendWrapper(user)::feedBackSalaryBill, salaryInfoId); + } /******** 工资单发放 end ***********************************************************************************************/ /** diff --git a/src/com/engine/salary/wrapper/SalarySendWrapper.java b/src/com/engine/salary/wrapper/SalarySendWrapper.java index 0b6548fda..60a480841 100644 --- a/src/com/engine/salary/wrapper/SalarySendWrapper.java +++ b/src/com/engine/salary/wrapper/SalarySendWrapper.java @@ -686,6 +686,13 @@ public class SalarySendWrapper extends Service implements SalarySendWrapperProxy } getSalaryBillService(user).confirmSalaryBill(salaryInfoId); } + + public void feedBackSalaryBill(Long salaryInfoId) { + if(ObjectUtil.isNull(salaryInfoId)){ + throw new SalaryRunTimeException("工资单id不能为空!"); + } + getSalaryBillService(user).feedBackSalaryBill(salaryInfoId); + } } From 5e227febee027fce2c59ae1e8040b86d1f4157e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Tue, 18 Jul 2023 17:59:20 +0800 Subject: [PATCH 52/52] =?UTF-8?q?=E5=85=B3=E9=97=AD=E7=B3=BB=E7=BB=9F?= =?UTF-8?q?=E7=AE=97=E7=A8=8E=E5=90=8E=EF=BC=8C=E7=B3=BB=E7=BB=9F=E8=96=AA?= =?UTF-8?q?=E8=B5=84=E9=A1=B9=E7=9B=AE=E5=8F=AF=E5=88=A0=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salary/wrapper/SalaryFieldWrapper.java | 19 ++++++++++++++++--- .../salary/wrapper/SalaryItemWrapper.java | 15 ++++++++++++++- 2 files changed, 30 insertions(+), 4 deletions(-) diff --git a/src/com/engine/salary/wrapper/SalaryFieldWrapper.java b/src/com/engine/salary/wrapper/SalaryFieldWrapper.java index 00ec26ebf..38f53c4fb 100644 --- a/src/com/engine/salary/wrapper/SalaryFieldWrapper.java +++ b/src/com/engine/salary/wrapper/SalaryFieldWrapper.java @@ -25,6 +25,9 @@ import com.engine.salary.service.impl.SalaryFormulaServiceImpl; import com.engine.salary.service.impl.SalaryItemServiceImpl; import com.engine.salary.service.impl.SalarySobItemServiceImpl; import com.engine.salary.service.impl.SysSalaryItemServiceImpl; +import com.engine.salary.sys.enums.TaxDeclarationFunctionEnum; +import com.engine.salary.sys.service.SalarySysConfService; +import com.engine.salary.sys.service.impl.SalarySysConfServiceImpl; import com.engine.salary.util.SalaryEntityUtil; import com.engine.salary.util.SalaryI18nUtil; import com.engine.salary.util.page.Column; @@ -49,11 +52,11 @@ import java.util.*; public class SalaryFieldWrapper extends Service { private SalaryItemService getSalaryItemService(User user) { - return ServiceUtil.getService(SalaryItemServiceImpl.class, user); + return ServiceUtil.getService(SalaryItemServiceImpl.class, user); } private SalaryFormulaService getSalaryFormulaService(User user) { - return ServiceUtil.getService(SalaryFormulaServiceImpl.class, user); + return ServiceUtil.getService(SalaryFormulaServiceImpl.class, user); } @@ -69,6 +72,10 @@ public class SalaryFieldWrapper extends Service { return ServiceUtil.getService(SysSalaryItemServiceImpl.class, user); } + private SalarySysConfService getSalarySysConfService(User user) { + return ServiceUtil.getService(SalarySysConfServiceImpl.class, user); + } + /** * 薪资项目列表 * @@ -100,6 +107,9 @@ public class SalaryFieldWrapper extends Service { salaryItemListDTOPage.getColumns().clear(); salaryItemListDTOPage.setColumns(fieldColumns); + //是否需要系统算税,不需要则去除系统项目 + TaxDeclarationFunctionEnum taxDeclarationFunctionEnum = getSalarySysConfService(user).getTaxDeclaration(); + // 被薪资账套引用的薪资项目 if (CollectionUtils.isNotEmpty(salaryItemList)) { // 查询系统薪资项目 @@ -109,7 +119,9 @@ public class SalaryFieldWrapper extends Service { List salaryItemListDTOS = SalaryItemBO.convert2ListDTO(salaryItemList, Collections.emptyList(), sysSalaryItemPOS); //系统项目不删除 salaryItemListDTOS.forEach(dto -> { - if (StringUtils.isNotBlank(dto.getSystemName()) || usingItemIds.contains(dto.getId()) || usingCodes.contains(dto.getCode())) { + if ((taxDeclarationFunctionEnum != TaxDeclarationFunctionEnum.CLOSURE && StringUtils.isNotBlank(dto.getSystemName())) + || usingItemIds.contains(dto.getId()) + || usingCodes.contains(dto.getCode())) { dto.setCanDelete(false); } }); @@ -207,6 +219,7 @@ public class SalaryFieldWrapper extends Service { /** * 保存字段排序信息 + * * @param salaryItemPOS */ public void saveSortedIndex(List salaryItemPOS) { diff --git a/src/com/engine/salary/wrapper/SalaryItemWrapper.java b/src/com/engine/salary/wrapper/SalaryItemWrapper.java index 3a03a30d3..84355ade6 100644 --- a/src/com/engine/salary/wrapper/SalaryItemWrapper.java +++ b/src/com/engine/salary/wrapper/SalaryItemWrapper.java @@ -18,6 +18,9 @@ import com.engine.salary.enums.salaryitem.SalaryDataTypeEnum; import com.engine.salary.exception.SalaryRunTimeException; import com.engine.salary.service.*; import com.engine.salary.service.impl.*; +import com.engine.salary.sys.enums.TaxDeclarationFunctionEnum; +import com.engine.salary.sys.service.SalarySysConfService; +import com.engine.salary.sys.service.impl.SalarySysConfServiceImpl; import com.engine.salary.util.SalaryEntityUtil; import com.engine.salary.util.SalaryI18nUtil; import com.engine.salary.util.page.PageInfo; @@ -61,6 +64,10 @@ public class SalaryItemWrapper extends Service { return ServiceUtil.getService(SalarySobBackItemServiceImpl.class, user); } + private SalarySysConfService getSalarySysConfService(User user) { + return ServiceUtil.getService(SalarySysConfServiceImpl.class, user); + } + /** * 薪资项目列表 * @@ -89,6 +96,10 @@ public class SalaryItemWrapper extends Service { salaryItemListDTOPage.setPageNum(page.getPageNum()); salaryItemListDTOPage.setTotal(page.getTotal()); + //是否需要系统算税,不需要则去除系统项目 + TaxDeclarationFunctionEnum taxDeclarationFunctionEnum = getSalarySysConfService(user).getTaxDeclaration(); + + // 被薪资账套引用的薪资项目 if (CollectionUtils.isNotEmpty(salaryItemList)) { //2、填充公式内容 @@ -101,7 +112,9 @@ public class SalaryItemWrapper extends Service { List salaryItemListDTOS = SalaryItemBO.convert2ListDTO(salaryItemList, expressFormulas, sysSalaryItemPOS); //系统项目不删除 salaryItemListDTOS.forEach(dto -> { - if (StringUtils.isNotBlank(dto.getSystemName()) || usingItemIds.contains(dto.getId()) || usingCodes.contains(dto.getCode())) { + if ((taxDeclarationFunctionEnum != TaxDeclarationFunctionEnum.CLOSURE && StringUtils.isNotBlank(dto.getSystemName())) + || usingItemIds.contains(dto.getId()) + || usingCodes.contains(dto.getCode())) { dto.setCanDelete(false); } });