From 98427842978f3e1d72ae23b7d9c4aafd0c3759fa Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Fri, 30 Jun 2023 15:58:55 +0800 Subject: [PATCH 1/9] =?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-=20=E6=A8=A1=E6=9D=BF=E4=BF=9D?= =?UTF-8?q?=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salaryBill/bo/SalaryTemplateBO.java | 3 ++ .../param/SalaryTemplateSaveParam.java | 14 ++++++++ .../salaryBill/po/SalaryTemplatePO.java | 16 +++++++++ .../salarybill/SalaryTemplateMapper.xml | 33 +++++++++++++++++++ .../impl/SalaryTemplateServiceImpl.java | 2 ++ 5 files changed, 68 insertions(+) diff --git a/src/com/engine/salary/entity/salaryBill/bo/SalaryTemplateBO.java b/src/com/engine/salary/entity/salaryBill/bo/SalaryTemplateBO.java index a7767953a..7a18ca271 100644 --- a/src/com/engine/salary/entity/salaryBill/bo/SalaryTemplateBO.java +++ b/src/com/engine/salary/entity/salaryBill/bo/SalaryTemplateBO.java @@ -74,6 +74,9 @@ public class SalaryTemplateBO { .replenishName(saveParam.getReplenishName()) .replenishRule(saveParam.getReplenishRule()) .replenishSalaryItemSetting((saveParam.getSalaryItemSetting() != null ? JsonUtil.toJsonString(saveParam.getReplenishSalaryItemSetting()) : "")) + .autoSendStatus(saveParam.getAutoSendStatus()?1:0) + .autoSendDayOfMonth(saveParam.getAutoSendDayOfMonth()) + .autoSendTimeOfDay(saveParam.getAutoSendTimeOfDay()) .createTime(new Date()) .updateTime(new Date()) .creator(employeeId) diff --git a/src/com/engine/salary/entity/salaryBill/param/SalaryTemplateSaveParam.java b/src/com/engine/salary/entity/salaryBill/param/SalaryTemplateSaveParam.java index 66d55f5b1..f979eecbc 100644 --- a/src/com/engine/salary/entity/salaryBill/param/SalaryTemplateSaveParam.java +++ b/src/com/engine/salary/entity/salaryBill/param/SalaryTemplateSaveParam.java @@ -12,6 +12,7 @@ import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import java.util.List; +import java.util.Objects; /** * @Description: 工资单模板 @@ -62,6 +63,15 @@ public class SalaryTemplateSaveParam { // 薪资项为0时不显示开启状态。false:关、true:开 private Boolean salaryItemZeroStatus; + // 是否启用工资单定时发送。0:未启用、1:已启用 + private Boolean autoSendStatus; + + // 每月几号自动发送工资单 + private String autoSendDayOfMonth; + + // 自动发放时间 + private String autoSendTimeOfDay; + // 薪资项目设置 private List salaryItemSetting; @@ -116,5 +126,9 @@ public class SalaryTemplateSaveParam { if (CollectionUtils.isEmpty(saveParam.getReplenishSalaryItemSetting())) { throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(140509, "补发工资单模板的薪资项目设置不能为空")); } + + if (Objects.isNull(saveParam.getAutoSendStatus())) { + 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 1ffbc0622..acd962c1e 100644 --- a/src/com/engine/salary/entity/salaryBill/po/SalaryTemplatePO.java +++ b/src/com/engine/salary/entity/salaryBill/po/SalaryTemplatePO.java @@ -124,6 +124,22 @@ public class SalaryTemplatePO { */ private String replenishSalaryItemSetting; + + /** + * 是否启用工资单定时发送。0:未启用、1:已启用 + */ + private Integer autoSendStatus; + + /** + * 每月几号自动发送工资单 + */ + private String autoSendDayOfMonth; + + /** + * 自动发放时间 + */ + private String autoSendTimeOfDay; + /** * 创建时间 */ diff --git a/src/com/engine/salary/mapper/salarybill/SalaryTemplateMapper.xml b/src/com/engine/salary/mapper/salarybill/SalaryTemplateMapper.xml index 253861502..bb4eda856 100644 --- a/src/com/engine/salary/mapper/salarybill/SalaryTemplateMapper.xml +++ b/src/com/engine/salary/mapper/salarybill/SalaryTemplateMapper.xml @@ -51,6 +51,9 @@ , replenish_name , replenish_rule , replenish_salary_item_setting + , auto_send_status + , auto_send_day_of_month + , auto_send_time_of_day , t.create_time , t.update_time , t.creator @@ -76,6 +79,9 @@ replenish_name, replenish_rule, replenish_salary_item_setting, + auto_send_status, + auto_send_day_of_month, + auto_send_time_of_day, create_time, update_time, creator, @@ -490,6 +496,15 @@ replenish_salary_item_setting=#{replenishSalaryItemSetting}, + + auto_send_status=#{autoSendStatus}, + + + auto_send_day_of_month=#{autoSendDayOfMonth}, + + + auto_send_time_of_day=#{autoSendTimeOfDay}, + create_time=#{createTime}, @@ -568,6 +583,15 @@ replenish_salary_item_setting, + + auto_send_status, + + + auto_send_day_of_month, + + + auto_send_time_of_day, + create_time, @@ -642,6 +666,15 @@ #{replenishSalaryItemSetting}, + + #{autoSendStatus}, + + + #{autoSendDayOfMonth}, + + + #{autoSendTimeOfDay}, + #{createTime}, diff --git a/src/com/engine/salary/service/impl/SalaryTemplateServiceImpl.java b/src/com/engine/salary/service/impl/SalaryTemplateServiceImpl.java index 0e270fed8..8a67e9079 100644 --- a/src/com/engine/salary/service/impl/SalaryTemplateServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryTemplateServiceImpl.java @@ -132,6 +132,7 @@ 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, @@ -190,6 +191,7 @@ public class SalaryTemplateServiceImpl extends Service implements SalaryTemplate salaryTemplateNew.setTextContentPosition(saveParam.getTextContentPosition()); salaryTemplateNew.setSalaryItemNullStatus(saveParam.getSalaryItemNullStatus()?1:0); salaryTemplateNew.setSalaryItemZeroStatus(saveParam.getSalaryItemZeroStatus()?1:0); + salaryTemplateNew.setAutoSendStatus(saveParam.getAutoSendStatus()?1:0); // todo 薪资项目设置检查校验 salaryTemplateNew.setSalaryItemSetting(saveParam.getSalaryItemSetting() != null ? JSONUtil.toJsonStr(saveParam.getSalaryItemSetting()) : ""); salaryTemplateNew.setReplenishSalaryItemSetting(saveParam.getReplenishSalaryItemSetting() != null ? JSONUtil.toJsonStr(saveParam.getReplenishSalaryItemSetting()) : ""); From faa2b9c16e5f844e7c1d21bb1c6ac23bbe05c10f Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Mon, 3 Jul 2023 09:44:10 +0800 Subject: [PATCH 2/9] =?UTF-8?q?=E5=B7=A5=E8=B5=84=E5=8D=95=E6=A8=A1?= =?UTF-8?q?=E6=9D=BF=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entity/salaryBill/dto/SalaryTemplateBaseSetDTO.java | 9 +++++++++ src/com/engine/salary/wrapper/SalaryTemplateWrapper.java | 1 + 2 files changed, 10 insertions(+) diff --git a/src/com/engine/salary/entity/salaryBill/dto/SalaryTemplateBaseSetDTO.java b/src/com/engine/salary/entity/salaryBill/dto/SalaryTemplateBaseSetDTO.java index 0ad55269b..fbd2fc833 100644 --- a/src/com/engine/salary/entity/salaryBill/dto/SalaryTemplateBaseSetDTO.java +++ b/src/com/engine/salary/entity/salaryBill/dto/SalaryTemplateBaseSetDTO.java @@ -54,4 +54,13 @@ public class SalaryTemplateBaseSetDTO { //消息中心") private Boolean msgStatus; + + // 是否启用工资单定时发送 + private Boolean auto_send_status; + + // 每月几号自动发送工资单 + private String auto_send_day_of_month; + + // 发送时间 + private String auto_send_time_of_day; } diff --git a/src/com/engine/salary/wrapper/SalaryTemplateWrapper.java b/src/com/engine/salary/wrapper/SalaryTemplateWrapper.java index 7639f4e13..0c14e3fb3 100644 --- a/src/com/engine/salary/wrapper/SalaryTemplateWrapper.java +++ b/src/com/engine/salary/wrapper/SalaryTemplateWrapper.java @@ -153,6 +153,7 @@ public class SalaryTemplateWrapper extends Service { salaryTemplateBaseSetDTO.setMsgStatus(po.getMsgStatus().equals(SalaryTemplateWhetherEnum.TRUE.getValue())); salaryTemplateBaseSetDTO.setSalarySob(po.getSalarySobId()); salaryTemplateBaseSetDTO.setSendEmail(po.getSendEmailId()); + salaryTemplateBaseSetDTO.setAuto_send_status(po.getAutoSendStatus() == null ? false : po.getAutoSendStatus().equals(SalaryTemplateWhetherEnum.TRUE.getValue())); // 规则赋值 如果为ALL传“” 如果为byRule传薪资项目ID salaryTemplateBaseSetDTO.setReplenishRule(SalaryTemplateReplenishRuleEnum.ALL.getValue().equals(po.getReplenishRule()) ? "" : po.getReplenishRule()); // 规则设置赋值 From 11c416601d567ba6b0275d49c60d735062139db4 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Mon, 3 Jul 2023 11:21:49 +0800 Subject: [PATCH 3/9] =?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=E6=B8=B2=E6=9F=93bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entity/salaryBill/dto/SalaryTemplateBaseSetDTO.java | 6 +++--- src/com/engine/salary/wrapper/SalaryTemplateWrapper.java | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/com/engine/salary/entity/salaryBill/dto/SalaryTemplateBaseSetDTO.java b/src/com/engine/salary/entity/salaryBill/dto/SalaryTemplateBaseSetDTO.java index fbd2fc833..aaac80788 100644 --- a/src/com/engine/salary/entity/salaryBill/dto/SalaryTemplateBaseSetDTO.java +++ b/src/com/engine/salary/entity/salaryBill/dto/SalaryTemplateBaseSetDTO.java @@ -56,11 +56,11 @@ public class SalaryTemplateBaseSetDTO { private Boolean msgStatus; // 是否启用工资单定时发送 - private Boolean auto_send_status; + private Boolean autoSendStatus; // 每月几号自动发送工资单 - private String auto_send_day_of_month; + private String autoSendDayOfMonth; // 发送时间 - private String auto_send_time_of_day; + private String autoSendTimeOfDay; } diff --git a/src/com/engine/salary/wrapper/SalaryTemplateWrapper.java b/src/com/engine/salary/wrapper/SalaryTemplateWrapper.java index 0c14e3fb3..bb2bc96e9 100644 --- a/src/com/engine/salary/wrapper/SalaryTemplateWrapper.java +++ b/src/com/engine/salary/wrapper/SalaryTemplateWrapper.java @@ -153,7 +153,7 @@ public class SalaryTemplateWrapper extends Service { salaryTemplateBaseSetDTO.setMsgStatus(po.getMsgStatus().equals(SalaryTemplateWhetherEnum.TRUE.getValue())); salaryTemplateBaseSetDTO.setSalarySob(po.getSalarySobId()); salaryTemplateBaseSetDTO.setSendEmail(po.getSendEmailId()); - salaryTemplateBaseSetDTO.setAuto_send_status(po.getAutoSendStatus() == null ? false : po.getAutoSendStatus().equals(SalaryTemplateWhetherEnum.TRUE.getValue())); + salaryTemplateBaseSetDTO.setAutoSendStatus(po.getAutoSendStatus() == null ? false : po.getAutoSendStatus().equals(SalaryTemplateWhetherEnum.TRUE.getValue())); // 规则赋值 如果为ALL传“” 如果为byRule传薪资项目ID salaryTemplateBaseSetDTO.setReplenishRule(SalaryTemplateReplenishRuleEnum.ALL.getValue().equals(po.getReplenishRule()) ? "" : po.getReplenishRule()); // 规则设置赋值 From 8dc388316865e8119ae2580c5c4406cb94c30c3f Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Mon, 3 Jul 2023 17:46:11 +0800 Subject: [PATCH 4/9] =?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?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salarybill/SalarySendInfoMapper.java | 2 + .../salarybill/SalarySendInfoMapper.xml | 18 ++++- .../salarybill/SalaryTemplateMapper.xml | 9 ++- .../salary/service/SalarySendService.java | 7 ++ .../salary/service/SalaryTemplateService.java | 5 ++ .../service/impl/SalarySendServiceImpl.java | 5 ++ .../impl/SalaryTemplateServiceImpl.java | 6 +- .../salary/timer/AutoSendSalaryJob.java | 80 +++++++++++++++++++ 8 files changed, 127 insertions(+), 5 deletions(-) create mode 100644 src/com/engine/salary/timer/AutoSendSalaryJob.java diff --git a/src/com/engine/salary/mapper/salarybill/SalarySendInfoMapper.java b/src/com/engine/salary/mapper/salarybill/SalarySendInfoMapper.java index ab67d35c0..5f971a4e3 100644 --- a/src/com/engine/salary/mapper/salarybill/SalarySendInfoMapper.java +++ b/src/com/engine/salary/mapper/salarybill/SalarySendInfoMapper.java @@ -99,4 +99,6 @@ public interface SalarySendInfoMapper { void updateIgnoreNull(SalarySendInfoPO po); void deleteBySalaryAcctRecordIds(@Param("salaryAcctRecordId") Collection ids); + + List getNeedSendInfoId(@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 95a44fd54..238365585 100644 --- a/src/com/engine/salary/mapper/salarybill/SalarySendInfoMapper.xml +++ b/src/com/engine/salary/mapper/salarybill/SalarySendInfoMapper.xml @@ -684,7 +684,23 @@ ORDER BY id DESC - + 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 a5a05aabda5c47128bb41ab8ff06c0cd7edbfca3 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Tue, 4 Jul 2023 14:35:51 +0800 Subject: [PATCH 5/9] =?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 c78839d8c0c70e323e5b19c3a3ed8ad1cdf1430c Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Tue, 4 Jul 2023 18:03:57 +0800 Subject: [PATCH 6/9] =?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 9/9] =?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; /** * 每月几号自动发送工资单