diff --git a/src/com/engine/salary/entity/salaryBill/dto/SalarySendBaseInfoDTO.java b/src/com/engine/salary/entity/salaryBill/dto/SalarySendBaseInfoDTO.java index 9ce265dee..05b69d9bf 100644 --- a/src/com/engine/salary/entity/salaryBill/dto/SalarySendBaseInfoDTO.java +++ b/src/com/engine/salary/entity/salaryBill/dto/SalarySendBaseInfoDTO.java @@ -46,4 +46,9 @@ public class SalarySendBaseInfoDTO { // 能否发送 private Boolean canSend; + + /** + * 是否支持导出工资单pdf + */ + private Boolean showPdfBtn; } diff --git a/src/com/engine/salary/entity/salaryacct/param/SalaryAcctResultQueryParam.java b/src/com/engine/salary/entity/salaryacct/param/SalaryAcctResultQueryParam.java index f5b3d3bce..8ebe19131 100644 --- a/src/com/engine/salary/entity/salaryacct/param/SalaryAcctResultQueryParam.java +++ b/src/com/engine/salary/entity/salaryacct/param/SalaryAcctResultQueryParam.java @@ -2,6 +2,7 @@ package com.engine.salary.entity.salaryacct.param; import com.engine.salary.common.BaseQueryParam; import com.engine.salary.common.LocalDateRange; +import com.engine.salary.enums.common.FilterEnum; import com.engine.salary.enums.salarysob.SalaryEmployeeStatusEnum; import com.engine.salary.util.valid.DataCheck; import lombok.AllArgsConstructor; @@ -27,7 +28,7 @@ import java.util.List; public class SalaryAcctResultQueryParam extends BaseQueryParam { //薪资核算记录id - @DataCheck(require = true,message = "参数错误,薪资核算记录ID不能为空") + @DataCheck(require = true, message = "参数错误,薪资核算记录ID不能为空") private Long salaryAcctRecordId; //人员姓名 @@ -63,4 +64,17 @@ public class SalaryAcctResultQueryParam extends BaseQueryParam { //薪资项目id private Collection salaryItemIds; + + //其他条件 + private List otherConditions; + + + @Data + @NoArgsConstructor + @AllArgsConstructor + public static class OtherCondition { + private Long itemId; + private FilterEnum filter; + private List params; + } } diff --git a/src/com/engine/salary/entity/salaryformula/dto/SalaryFormulaEmployeeDTO.java b/src/com/engine/salary/entity/salaryformula/dto/SalaryFormulaEmployeeDTO.java index 558a608aa..eb07db215 100644 --- a/src/com/engine/salary/entity/salaryformula/dto/SalaryFormulaEmployeeDTO.java +++ b/src/com/engine/salary/entity/salaryformula/dto/SalaryFormulaEmployeeDTO.java @@ -60,6 +60,7 @@ public class SalaryFormulaEmployeeDTO { private String dissmissdate; //状态 + @SalaryFormulaVar(defaultLabel = "状态", labelId = 98621, dataType = "string") private String status; @SalaryFormulaVar(defaultLabel = "状态", labelId = 98622, dataType = "string") diff --git a/src/com/engine/salary/enums/common/FilterEnum.java b/src/com/engine/salary/enums/common/FilterEnum.java new file mode 100644 index 000000000..602bcadbd --- /dev/null +++ b/src/com/engine/salary/enums/common/FilterEnum.java @@ -0,0 +1,120 @@ +package com.engine.salary.enums.common; + +import com.engine.salary.enums.BaseEnum; +import org.apache.commons.lang3.StringUtils; +import org.apache.commons.lang3.math.NumberUtils; + +import java.math.BigDecimal; +import java.util.List; +import java.util.function.Predicate; + +public enum FilterEnum implements BaseEnum { + + BT("BT", "包含", 1) { + @Override + public Predicate filter(List params) { + return a -> a.contentEquals(params.get(0)); + } + }, + EQ("EQ", "等于", 1) { + @Override + public Predicate filter(List params) { + return a -> a.equals(params.get(0)); + } + }, + NE("NE", "不等于", 1) { + @Override + public Predicate filter(List params) { + return a -> !a.equals(params.get(0)); + } + }, + GT("GT", "大于", 1) { + @Override + public Predicate filter(List params) { + return a -> { + if (NumberUtils.isCreatable(a) && NumberUtils.isCreatable(params.get(0))) { + return new BigDecimal(a).compareTo(new BigDecimal(params.get(0))) > 0; + } + return false; + }; + } + }, + LT("LT", "小于", 1) { + @Override + public Predicate filter(List params) { + return a -> { + if (NumberUtils.isCreatable(a) && NumberUtils.isCreatable(params.get(0))) { + return new BigDecimal(a).compareTo(new BigDecimal(params.get(0))) < 0; + } + return false; + }; + } + }, + GE("GE", "大于等于", 1) { + @Override + public Predicate filter(List params) { + return a -> { + if (NumberUtils.isCreatable(a) && NumberUtils.isCreatable(params.get(0))) { + return new BigDecimal(a).compareTo(new BigDecimal(params.get(0))) >= 0; + } + return false; + }; + } + }, + LE("LE", "小于等于", 1) { + @Override + public Predicate filter(List params) { + return a -> { + if (NumberUtils.isCreatable(a) && NumberUtils.isCreatable(params.get(0))) { + return new BigDecimal(a).compareTo(new BigDecimal(params.get(0))) <= 0; + } + return false; + }; + } + }, + ISEMPTY("ISEMPTY", "为空", 1) { + @Override + public Predicate filter(List params) { + return StringUtils::isEmpty; + } + }, + ISNOTEMPTY("ISNOTEMPTY", "包含", 1) { + @Override + public Predicate filter(List params) { + return StringUtils::isNotEmpty; + } + }; + + + FilterEnum(String value, String defaultLabel, int labelId) { + this.value = value; + this.defaultLabel = defaultLabel; + this.labelId = labelId; + } + + private String value; + + private String defaultLabel; + + private int labelId; + + public abstract Predicate filter(List params); + + + @Override + public String getValue() { + return value; + } + + @Override + public Integer getLabelId() { + return labelId; + } + + @Override + public String getDefaultLabel() { + return defaultLabel; + } + + +} diff --git a/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java index b47c5b8fc..ae8cd76c8 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java @@ -24,6 +24,7 @@ import com.engine.salary.entity.salarysob.po.*; import com.engine.salary.entity.taxagent.po.TaxAgentAdminPO; import com.engine.salary.entity.taxagent.po.TaxAgentPO; import com.engine.salary.enums.SalaryValueTypeEnum; +import com.engine.salary.enums.common.FilterEnum; import com.engine.salary.enums.UserStatusEnum; import com.engine.salary.enums.salaryaccounting.LockStatusEnum; import com.engine.salary.enums.salaryaccounting.SalaryAcctRecordStatusEnum; @@ -46,6 +47,7 @@ import com.engine.salary.util.SalaryEntityUtil; import com.engine.salary.util.SalaryI18nUtil; import com.engine.salary.util.db.MapperProxyFactory; import com.engine.salary.util.page.PageInfo; +import com.engine.salary.util.page.SalaryPageUtil; import com.google.common.collect.Lists; import com.google.common.collect.Maps; import com.google.common.collect.Sets; @@ -310,8 +312,35 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe @Override public PageInfo> listPageByParam(SalaryAcctResultQueryParam queryParam) { - // 查询薪资核算人员(分页) - PageInfo page = getSalaryAcctEmployeeService(user).listPageByResultQueryParam(queryParam); + PageInfo page = null; + //其他条件 + List otherConditions = queryParam.getOtherConditions(); + if (CollectionUtils.isNotEmpty(otherConditions)) { + List items = SalaryEntityUtil.properties(otherConditions, SalaryAcctResultQueryParam.OtherCondition::getItemId, Collectors.toList()); + List list = listBySalaryAcctRecordIdsAndSalaryItemIds(Collections.singletonList(queryParam.getSalaryAcctRecordId()), items); + for (int i = 0; i < otherConditions.size(); i++) { + SalaryAcctResultQueryParam.OtherCondition otherCondition = otherConditions.get(i); + Long itemId = otherCondition.getItemId(); + FilterEnum filter = otherCondition.getFilter(); + List params = otherCondition.getParams(); + list = list.stream().filter(a -> Objects.equals(a.getSalaryItemId(), itemId)).filter(a -> filter.filter(params).test(a.getResultValue())).collect(Collectors.toList()); + } + List salaryAcctEmpId = SalaryEntityUtil.properties(list, SalaryAcctResultPO::getSalaryAcctEmpId, Collectors.toList()); + + if (CollectionUtils.isEmpty(salaryAcctEmpId)) { + //条件不满足直接返回空列表 + page = SalaryPageUtil.buildPage(queryParam.getCurrent(), queryParam.getPageSize(), new ArrayList<>(), SalaryAcctEmployeePO.class); + } else { + queryParam.setIds(salaryAcctEmpId); + // 查询薪资核算人员(分页) + page = getSalaryAcctEmployeeService(user).listPageByResultQueryParam(queryParam); + } + } else { + // 查询薪资核算人员(分页) + page = getSalaryAcctEmployeeService(user).listPageByResultQueryParam(queryParam); + } + + // 查询薪资核算结果 List> data = listBySalaryAcctEmployees(page.getList(), queryParam); // 薪资核算结果的分页结果 @@ -404,9 +433,9 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe // 查询人员信息 List employeeIds = SalaryEntityUtil.properties(salaryAcctEmployeePOS, SalaryAcctEmployeePO::getEmployeeId, Collectors.toList()); List simpleEmployees = getSalaryEmployeeService(user).getEmployeeByIdsAll(employeeIds); - simpleEmployees.forEach(e->{ + simpleEmployees.forEach(e -> { UserStatusEnum userStatusEnum = UserStatusEnum.parseByValue(Integer.parseInt(e.getStatus())); - if(userStatusEnum != null){ + if (userStatusEnum != null) { e.setStatusName(userStatusEnum.getDefaultLabel()); } }); diff --git a/src/com/engine/salary/service/impl/SalarySendServiceImpl.java b/src/com/engine/salary/service/impl/SalarySendServiceImpl.java index 5bd58ad12..90d055358 100644 --- a/src/com/engine/salary/service/impl/SalarySendServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalarySendServiceImpl.java @@ -87,6 +87,7 @@ import java.util.*; import java.util.stream.Collectors; import static com.engine.salary.cache.SalaryCacheKey.SALARY_CACHE_SMS_CODE; +import static com.engine.salary.constant.HrmSalaryPayrollConf.GEN_PDF; /** * @Description: 工资单发放 @@ -455,6 +456,7 @@ public class SalarySendServiceImpl extends Service implements SalarySendService .sendNum(salarySend.getSendNum()) .sendTotal(salarySend.getSendTotal()) .canSend(canSend) + .showPdfBtn(GEN_PDF) // .salaryAcctType(salarySend.getSalaryAcctType().toString()) // .haveBackCalc(haveBackCalc ? NumberUtils.INTEGER_ONE : NumberUtils.INTEGER_ZERO) .build();