diff --git a/resource/com/customization/salary/CustomSalarySendWrapper.java b/resource/com/customization/salary/CustomSalarySendWrapper.java new file mode 100644 index 000000000..04881dbdd --- /dev/null +++ b/resource/com/customization/salary/CustomSalarySendWrapper.java @@ -0,0 +1,66 @@ +package com.customization.salary; + +import com.engine.common.util.ServiceUtil; +import com.engine.core.cfg.annotation.ServiceDynamicProxy; +import com.engine.core.cfg.annotation.ServiceMethodDynamicProxy; +import com.engine.core.impl.aop.AbstractServiceProxy; +import com.engine.salary.entity.salaryBill.param.SalarySendGrantParam; +import com.engine.salary.entity.salaryBill.param.SalarySendWithdrawParam; +import com.engine.salary.enums.salarysend.SalarySendGrantTypeEnum; +import com.engine.salary.exception.SalaryRunTimeException; +import com.engine.salary.service.SalaryBillService; +import com.engine.salary.service.SalarySendRangeService; +import com.engine.salary.service.impl.SalaryBillServiceImpl; +import com.engine.salary.service.impl.SalarySendRangeServiceImpl; +import com.engine.salary.wrapper.SalarySendWrapper; +import com.engine.salary.wrapper.proxy.SalarySendWrapperProxy; +import weaver.hrm.User; + +import java.util.List; +import java.util.Map; + +@ServiceDynamicProxy(target = SalarySendWrapper.class, desc = "工资单发送") +public class CustomSalarySendWrapper extends AbstractServiceProxy implements SalarySendWrapperProxy { + + private SalaryBillService getSalaryBillService(User user) { + return ServiceUtil.getService(SalaryBillServiceImpl.class, user); + } + + + private SalarySendRangeService getSalarySendRangeService(User user) { + return ServiceUtil.getService(SalarySendRangeServiceImpl.class, user); + } + + @Override + @ServiceMethodDynamicProxy(desc = "拦截工资单发送方法") + public Map grant(SalarySendGrantParam queryParam) { + Long salarySendId = queryParam.getSalarySendId(); + List ids = queryParam.getIds(); + + if (queryParam.getSalarySendRangeIds() != null) { + //如果传了范围id,则使用范围id发放 + ids = getSalarySendRangeService(new User()) + .getSendInfoIdsBySendId(queryParam.getSalarySendId(), queryParam.getSalarySendRangeIds(), SalarySendGrantTypeEnum.GRANT); + if (ids.isEmpty()) {// 由于查出来是空的,会导致全部发放,在此进行拦截 + throw new SalaryRunTimeException("工资发放范围内没有匹配员工"); + } + } + + List> sendInfoList = getSalaryBillService(new User()).getSendInfoList(salarySendId, ids); + //解析sendInfoList,拼接短信内容 + System.out.println("发送短信"); + + //todo do some thing + + Map result = (Map) executeMethod(queryParam); + + //todo do some thing + + return result; + } + + @Override + public Map withdraw(SalarySendWithdrawParam queryParam) { + return null; + } +}