feat: 全部范围部分发放撤回功能
This commit is contained in:
parent
0aabfcd68a
commit
fc81955b15
|
|
@ -0,0 +1,8 @@
|
|||
package com.api.salary.web;
|
||||
|
||||
import javax.ws.rs.Path;
|
||||
|
||||
@Path("/bs/hrmsalary/salarySendRange")
|
||||
public class SalarySendRangeController extends com.engine.salary.web.SalarySendRangeController{
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,71 @@
|
|||
package com.engine.salary.biz;
|
||||
|
||||
import com.engine.common.util.ServiceUtil;
|
||||
import com.engine.salary.entity.salaryBill.dto.SalarySendUserInfoDTO;
|
||||
import com.engine.salary.entity.salaryBill.po.SalarySendRangeObj;
|
||||
import com.engine.salary.entity.taxagent.dto.TaxAgentEmployeeTaxAgentDTO;
|
||||
import com.engine.salary.mapper.salarybill.SalarySendRangeObjMapper;
|
||||
import com.engine.salary.service.TaxAgentService;
|
||||
import com.engine.salary.service.impl.TaxAgentServiceImpl;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.apache.ibatis.session.SqlSession;
|
||||
import weaver.conn.mybatis.MyBatisFactory;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.function.Consumer;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static com.engine.salary.constant.SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY;
|
||||
|
||||
public class SalarySendRangeObjBiz {
|
||||
private TaxAgentService getTaxAgentService() {
|
||||
return ServiceUtil.getService(TaxAgentServiceImpl.class);
|
||||
}
|
||||
|
||||
public <R> R applyMapper(Function<SalarySendRangeObjMapper, R> mapper) {
|
||||
try (SqlSession sqlSession = MyBatisFactory.sqlSessionFactory.openSession()) {
|
||||
final SalarySendRangeObjMapper salarySendRangeObjMapper = sqlSession.getMapper(SalarySendRangeObjMapper.class);
|
||||
R apply = mapper.apply(salarySendRangeObjMapper);
|
||||
sqlSession.commit();
|
||||
return apply;
|
||||
}
|
||||
}
|
||||
|
||||
public void runMapper(Consumer<SalarySendRangeObjMapper> mapper) {
|
||||
try (SqlSession sqlSession = MyBatisFactory.sqlSessionFactory.openSession()) {
|
||||
final SalarySendRangeObjMapper salarySendRangeObjMapper = sqlSession.getMapper(SalarySendRangeObjMapper.class);
|
||||
mapper.accept(salarySendRangeObjMapper);
|
||||
sqlSession.commit();
|
||||
}
|
||||
}
|
||||
|
||||
public List<SalarySendUserInfoDTO> getSalarySendUserInfoDTOs(List<Long> employees) {
|
||||
List<SalarySendUserInfoDTO> userDTOs = applyMapper(mapper -> mapper.getUserInfoByEmployeeIds(employees));
|
||||
Map<Long, SalarySendUserInfoDTO> userMap = userDTOs.stream()
|
||||
.collect(Collectors.toMap(SalarySendUserInfoDTO::getResourceId, Function.identity()));
|
||||
|
||||
List<Long> employeeIds = userDTOs.stream()
|
||||
.map(SalarySendUserInfoDTO::getResourceId)
|
||||
.collect(Collectors.toList());
|
||||
Collection<TaxAgentEmployeeTaxAgentDTO> employeeAgents
|
||||
= getTaxAgentService().listAllTaxAgentsAsRange(employeeIds);
|
||||
for (TaxAgentEmployeeTaxAgentDTO employeeAgent : employeeAgents) {
|
||||
SalarySendUserInfoDTO info = userMap.get(employeeAgent.getEmployeeId());
|
||||
if (info != null) {
|
||||
if (CollectionUtils.isEmpty(info.getTaxAgentIds())) {
|
||||
info.setTaxAgentIds(new ArrayList<>());
|
||||
}
|
||||
info.getTaxAgentIds().addAll(Optional.ofNullable(employeeAgent.getTaxAgentIds()).orElse(Collections.emptyList()));
|
||||
}
|
||||
}
|
||||
return userDTOs;
|
||||
}
|
||||
|
||||
public void replaceAllByRangeId(Long rangeId, List<SalarySendRangeObj> rangeObjs) {
|
||||
runMapper(mapper -> {
|
||||
mapper.deleteByRangeIds(Collections.singletonList(rangeId), DEFAULT_TENANT_KEY);
|
||||
mapper.batchInsert(rangeObjs);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,186 @@
|
|||
package com.engine.salary.entity.salaryBill.bo;
|
||||
|
||||
import com.engine.salary.entity.salaryBill.dto.SalarySendUserInfoDTO;
|
||||
import com.engine.salary.entity.salaryBill.po.SalarySendRangeObj;
|
||||
import com.engine.salary.enums.salarysend.SalarySendRangeTargetTypeEnum;
|
||||
import com.engine.salary.enums.salarysend.SalarySendRangeTypeEnum;
|
||||
import com.google.common.collect.Sets;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* @Description: 工资单发放范围
|
||||
*/
|
||||
@NoArgsConstructor
|
||||
public class SalarySendRangeBO {
|
||||
private static final SalarySendRangeItem EMPTY_ITEM = new SalarySendRangeItem(null, null, Collections.emptySet());
|
||||
|
||||
private static final Integer INCLUDED = 1;
|
||||
private static final Integer EXCLUDED = -1;
|
||||
private static final Integer NOT_IN = 0;
|
||||
|
||||
/**
|
||||
* 索引map
|
||||
*/
|
||||
private final Map<SalarySendRangeTargetTypeEnum, Map<SalarySendRangeTypeEnum, SalarySendRangeItem>> indexMap
|
||||
= new HashMap<>(6);
|
||||
|
||||
/**
|
||||
* 排除所有人
|
||||
*/
|
||||
private boolean isExcludeAll = false;
|
||||
|
||||
/**
|
||||
* 增加所有人
|
||||
*/
|
||||
private boolean isIncludeAll = false;
|
||||
|
||||
public boolean putNew(SalarySendRangeObj salarySendRangeObj) {
|
||||
//如果已经设置了排除所有人 或者 添加所有人, 直接跳过处理
|
||||
if (isExcludeAll || isIncludeAll) {
|
||||
return true;
|
||||
}
|
||||
Integer rangeType = salarySendRangeObj.getRangeType();
|
||||
SalarySendRangeTypeEnum rangeTypeE = SalarySendRangeTypeEnum.fromValue(rangeType);
|
||||
|
||||
Integer targetType = salarySendRangeObj.getTargetType();
|
||||
SalarySendRangeTargetTypeEnum targetTypeE = SalarySendRangeTargetTypeEnum.fromValue(targetType);
|
||||
|
||||
if (rangeTypeE == null || targetTypeE == null) {
|
||||
return false;
|
||||
}
|
||||
//所有人 筛选
|
||||
if (targetTypeE == SalarySendRangeTargetTypeEnum.ALL) {
|
||||
isIncludeAll = rangeTypeE == SalarySendRangeTypeEnum.INCLUDE_OBJ;
|
||||
isExcludeAll = rangeTypeE == SalarySendRangeTypeEnum.EXCLUDE_OBJ;
|
||||
}
|
||||
//未存入时插入
|
||||
indexMap.computeIfAbsent(targetTypeE, k -> {
|
||||
Map<SalarySendRangeTypeEnum, SalarySendRangeItem> value = new HashMap<>();
|
||||
SalarySendRangeItem rangeItem =
|
||||
new SalarySendRangeItem(rangeTypeE, targetTypeE, Sets.newHashSet(salarySendRangeObj.getTargetId()));
|
||||
value.put(rangeTypeE, rangeItem);
|
||||
return value;
|
||||
});
|
||||
//已存在时更新
|
||||
indexMap.computeIfPresent(targetTypeE, (k, v) -> {
|
||||
SalarySendRangeItem item = v.get(rangeTypeE);
|
||||
if (null == item) {
|
||||
item = new SalarySendRangeItem(rangeTypeE, targetTypeE, Sets.newHashSet(salarySendRangeObj.getTargetId()));
|
||||
} else {
|
||||
item.getTargetIds().add(salarySendRangeObj.getTargetId());
|
||||
}
|
||||
v.put(rangeTypeE, item);
|
||||
return v;
|
||||
});
|
||||
return true;
|
||||
}
|
||||
|
||||
private Set<Long> getTargetIds(SalarySendRangeTargetTypeEnum targetType, SalarySendRangeTypeEnum rangeType) {
|
||||
Map<SalarySendRangeTypeEnum, SalarySendRangeItem> itemMap = indexMap.get(targetType);
|
||||
if (itemMap != null) {
|
||||
SalarySendRangeItem item = itemMap.getOrDefault(rangeType, EMPTY_ITEM);
|
||||
return item.getTargetIds();
|
||||
}
|
||||
return Collections.emptySet();
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断是否在人员范围内
|
||||
* 如果已经有 所有人 的范围设置,不判断是否有其他范围直接返回
|
||||
*
|
||||
* @param targetType 目标类型
|
||||
* @param targetId 目标id
|
||||
* @return 是否在范围内
|
||||
*/
|
||||
private int doJudgeInRange(SalarySendRangeTargetTypeEnum targetType, Long targetId) {
|
||||
//如果所有人范围已经设置
|
||||
if (isExcludeAll) {
|
||||
return EXCLUDED;
|
||||
}
|
||||
Set<Long> includeTargetIds = getTargetIds(targetType, SalarySendRangeTypeEnum.INCLUDE_OBJ);
|
||||
Set<Long> excludeTargetIds = getTargetIds(targetType, SalarySendRangeTypeEnum.EXCLUDE_OBJ);
|
||||
if (excludeTargetIds.contains(targetId)) {
|
||||
return EXCLUDED;
|
||||
} else if (includeTargetIds.contains(targetId)) {
|
||||
return INCLUDED;
|
||||
} else {
|
||||
//默认值是是否选择所有人
|
||||
return isIncludeAll ? INCLUDED : NOT_IN;
|
||||
}
|
||||
}
|
||||
|
||||
private int doJudgeInRange(SalarySendRangeTargetTypeEnum targetType, Collection<Long> targetIds) {
|
||||
if (CollectionUtils.isEmpty(targetIds)) {
|
||||
return NOT_IN;
|
||||
}
|
||||
//如果所有人范围已经设置
|
||||
if (isExcludeAll) {
|
||||
return EXCLUDED;
|
||||
}
|
||||
if (isIncludeAll) {
|
||||
return INCLUDED;
|
||||
}
|
||||
Set<Long> includeTargetIds = getTargetIds(targetType, SalarySendRangeTypeEnum.INCLUDE_OBJ);
|
||||
Set<Long> excludeTargetIds = getTargetIds(targetType, SalarySendRangeTypeEnum.EXCLUDE_OBJ);
|
||||
if (targetIds.stream().anyMatch(excludeTargetIds::contains)) {
|
||||
return EXCLUDED;
|
||||
} else if (targetIds.stream().anyMatch(includeTargetIds::contains)) {
|
||||
return INCLUDED;
|
||||
} else {
|
||||
return NOT_IN;
|
||||
}
|
||||
}
|
||||
|
||||
public boolean judgeInRange(SalarySendUserInfoDTO dto) {
|
||||
//如果所有人范围已经设置
|
||||
if (isExcludeAll) {
|
||||
return false;
|
||||
}
|
||||
Integer isInRange = NOT_IN;
|
||||
// 默认值为是否选择所有人
|
||||
boolean result = isIncludeAll;
|
||||
for (SalarySendRangeTargetTypeEnum targetType : SalarySendRangeTargetTypeEnum.values()) {
|
||||
switch (targetType) {
|
||||
case DEPT:
|
||||
isInRange = doJudgeInRange(targetType, dto.getDepartmentId());
|
||||
break;
|
||||
case USER:
|
||||
isInRange = doJudgeInRange(targetType, dto.getResourceId());
|
||||
break;
|
||||
case POSITION:
|
||||
isInRange = doJudgeInRange(targetType, dto.getJobTitle());
|
||||
break;
|
||||
case TAX_AGENT:
|
||||
isInRange = doJudgeInRange(targetType, dto.getTaxAgentIds());
|
||||
break;
|
||||
case SUB_COMPANY:
|
||||
isInRange = doJudgeInRange(targetType, dto.getSubCompanyId());
|
||||
break;
|
||||
}
|
||||
if (isInRange.equals(EXCLUDED)) {
|
||||
//如果被排除,返回false
|
||||
return false;
|
||||
} else {
|
||||
// 只要没有被排除,在范围内即为true
|
||||
result |= isInRange.equals(INCLUDED);
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Data
|
||||
private static class SalarySendRangeItem {
|
||||
private SalarySendRangeTypeEnum rangeType;
|
||||
|
||||
private SalarySendRangeTargetTypeEnum targetType;
|
||||
|
||||
private Set<Long> targetIds;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,36 @@
|
|||
package com.engine.salary.entity.salaryBill.dto;
|
||||
|
||||
import com.cloudstore.eccom.pc.table.WeaTableType;
|
||||
import com.engine.salary.annotation.SalaryTable;
|
||||
import com.engine.salary.annotation.SalaryTableColumn;
|
||||
import com.engine.salary.annotation.TableTitle;
|
||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@SalaryTable(pageId = "a4fa2487-d36a82d0dc050a5465f1252f9ecaa107",
|
||||
tableType = WeaTableType.CHECKBOX)
|
||||
public class SalarySendRangeListDTO {
|
||||
@JsonSerialize(using = ToStringSerializer.class)
|
||||
@SalaryTableColumn(column = "id", display = false)
|
||||
private Long id;
|
||||
|
||||
private String grantType;
|
||||
|
||||
@SalaryTableColumn(text = "对象", width = "50%", column = "includeObj")
|
||||
@TableTitle(title = "对象", key = "includeObj", dataIndex = "includeObj")
|
||||
private List<SalarySendRangeObjDTO> includeObj;
|
||||
|
||||
@SalaryTableColumn(text = "对象中排除", width = "50%", column = "excludeObj")
|
||||
@TableTitle(title = "对象中排除", key = "excludeObj", dataIndex = "excludeObj")
|
||||
private List<SalarySendRangeObjDTO> excludeObj;
|
||||
}
|
||||
|
|
@ -0,0 +1,44 @@
|
|||
package com.engine.salary.entity.salaryBill.dto;
|
||||
|
||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* 工资单发放撤回筛选范围对象
|
||||
*/
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Data
|
||||
@Builder
|
||||
public class SalarySendRangeObjDTO {
|
||||
|
||||
/**
|
||||
* id
|
||||
*/
|
||||
@JsonSerialize(using = ToStringSerializer.class)
|
||||
private Long targetId;
|
||||
|
||||
/**
|
||||
* 名称
|
||||
*/
|
||||
private String targetName;
|
||||
|
||||
/**
|
||||
* 类型
|
||||
*/
|
||||
private Integer targetType;
|
||||
|
||||
/**
|
||||
* 类型名称
|
||||
*/
|
||||
private String targetTypeName;
|
||||
|
||||
/**
|
||||
* @see com.engine.salary.enums.salarysend.SalarySendRangeTypeEnum
|
||||
*/
|
||||
private Integer rangeType;
|
||||
}
|
||||
|
|
@ -0,0 +1,38 @@
|
|||
package com.engine.salary.entity.salaryBill.dto;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Data
|
||||
public class SalarySendUserInfoDTO {
|
||||
/**
|
||||
* 岗位
|
||||
*/
|
||||
private Long jobTitle;
|
||||
|
||||
/**
|
||||
* 部门
|
||||
*/
|
||||
private Long departmentId;
|
||||
|
||||
/**
|
||||
* 分部
|
||||
*/
|
||||
private Long subCompanyId;
|
||||
|
||||
|
||||
/**
|
||||
* 人员id
|
||||
*/
|
||||
private Long resourceId;
|
||||
|
||||
/**
|
||||
* 个税扣缴义务人id
|
||||
*/
|
||||
private List<Long> taxAgentIds;
|
||||
}
|
||||
|
|
@ -7,6 +7,7 @@ import lombok.Data;
|
|||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Description: 工资单发放参数
|
||||
|
|
@ -26,6 +27,11 @@ public class SalarySendGrantParam {
|
|||
// @ApiModelProperty("工资单发放Id")
|
||||
private Long salarySendId;
|
||||
|
||||
/**
|
||||
* 工资单发放范围id
|
||||
*/
|
||||
private List<Long> salarySendRangeIds;
|
||||
|
||||
public static String checkParam(SalarySendGrantParam param, Long employeeId, String tenantKey) {
|
||||
if (param.getSalarySendId() == null) {
|
||||
throw new SalaryRunTimeException("工资单发放Id必传");
|
||||
|
|
|
|||
|
|
@ -0,0 +1,30 @@
|
|||
package com.engine.salary.entity.salaryBill.param;
|
||||
|
||||
import com.engine.salary.common.BaseQueryParam;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
//@ApiModel("工资单发放范围查询参数")
|
||||
public class SalarySendRangeQueryParam extends BaseQueryParam {
|
||||
/**
|
||||
* 发放类型
|
||||
* @see com.engine.salary.enums.salarysend.SalarySendGrantTypeEnum
|
||||
*/
|
||||
private String grantType;
|
||||
|
||||
/**
|
||||
* 发放单id
|
||||
*/
|
||||
private Long salarySendId;
|
||||
|
||||
/**
|
||||
* 对象名称关键字
|
||||
*/
|
||||
private String targetName;
|
||||
}
|
||||
|
|
@ -0,0 +1,122 @@
|
|||
package com.engine.salary.entity.salaryBill.param;
|
||||
|
||||
import com.alibaba.nacos.client.naming.utils.CollectionUtils;
|
||||
import com.engine.salary.entity.salaryBill.po.SalarySendRangeObj;
|
||||
import com.engine.salary.entity.salaryBill.po.SalarySendRangePO;
|
||||
import com.engine.salary.enums.salarysend.SalarySendGrantTypeEnum;
|
||||
import com.engine.salary.enums.salarysend.SalarySendRangeTypeEnum;
|
||||
import com.engine.salary.exception.SalaryRunTimeException;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import weaver.hrm.User;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static com.engine.salary.constant.SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class SalarySendRangeSaveParam {
|
||||
/**
|
||||
* 发放id
|
||||
*/
|
||||
private Long salarySendId;
|
||||
|
||||
|
||||
/**
|
||||
* 发放范围id
|
||||
*/
|
||||
private Long salarySendRangeId;
|
||||
|
||||
|
||||
/**
|
||||
* 发放/撤回
|
||||
*
|
||||
* @see SalarySendGrantTypeEnum
|
||||
*/
|
||||
private String grantType;
|
||||
|
||||
|
||||
private List<SalarySendRangeTargetParam> includeObjParams;
|
||||
|
||||
|
||||
private List<SalarySendRangeTargetParam> excludeObjParams;
|
||||
|
||||
public static void checkParam(SalarySendRangeSaveParam saveParam, Long employeeId, String tenantKey) {
|
||||
if (saveParam.getSalarySendId() == null) {
|
||||
throw new SalaryRunTimeException("工资单发放id不能为空");
|
||||
}
|
||||
|
||||
if (saveParam.getGrantType() == null) {
|
||||
throw new SalaryRunTimeException("操作类型不能为空");
|
||||
}
|
||||
|
||||
if (CollectionUtils.isEmpty(saveParam.getIncludeObjParams())) {
|
||||
throw new SalaryRunTimeException("对象不能为空");
|
||||
}
|
||||
}
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public static class SalarySendRangeTargetParam {
|
||||
|
||||
/**
|
||||
* 对象不能为空
|
||||
*/
|
||||
private Long targetId;
|
||||
|
||||
/**
|
||||
* 对象类型不能为空
|
||||
* @see com.engine.salary.enums.salarysend.SalarySendRangeTargetTypeEnum
|
||||
*/
|
||||
private Integer targetType;
|
||||
}
|
||||
|
||||
public SalarySendRangePO toSalarySendRangePO(User user) {
|
||||
return SalarySendRangePO.builder()
|
||||
.id(salarySendRangeId)
|
||||
.grantType(grantType)
|
||||
.salarySendId(salarySendId)
|
||||
.updateTime(new Date())
|
||||
.creator((long) user.getUID())
|
||||
.deleteType(0)
|
||||
.tenantKey(DEFAULT_TENANT_KEY)
|
||||
.createTime(salarySendId == null ? new Date() : null)
|
||||
.build();
|
||||
}
|
||||
|
||||
public List<SalarySendRangeObj> toSalarySendRangeObj(User user) {
|
||||
List<SalarySendRangeObj> includeObjs = includeObjParams.stream()
|
||||
.map(obj -> mapObj(user, obj))
|
||||
.map(obj->obj.setRangeType(SalarySendRangeTypeEnum.INCLUDE_OBJ.getValue()))
|
||||
.collect(Collectors.toList());
|
||||
List<SalarySendRangeObj> excludeObjs = excludeObjParams.stream()
|
||||
.map(obj -> mapObj(user, obj))
|
||||
.map(obj -> obj.setRangeType(SalarySendRangeTypeEnum.EXCLUDE_OBJ.getValue()))
|
||||
.collect(Collectors.toList());
|
||||
List<SalarySendRangeObj> rangeObjs = new ArrayList<>();
|
||||
rangeObjs.addAll(includeObjs);
|
||||
rangeObjs.addAll(excludeObjs);
|
||||
return rangeObjs;
|
||||
}
|
||||
|
||||
private SalarySendRangeObj mapObj(User user, SalarySendRangeTargetParam obj) {
|
||||
return SalarySendRangeObj.builder()
|
||||
.salarySendRangeId(salarySendRangeId)
|
||||
.salarySendId(salarySendId)
|
||||
.targetId(obj.getTargetId())
|
||||
.targetType(obj.getTargetType())
|
||||
.deleteType(0)
|
||||
.tenantKey(DEFAULT_TENANT_KEY)
|
||||
.updateTime(new Date())
|
||||
.createTime(new Date())
|
||||
.creator((long) user.getUID())
|
||||
.build();
|
||||
}
|
||||
}
|
||||
|
|
@ -7,6 +7,7 @@ import lombok.Data;
|
|||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Description: 工资单撤回参数
|
||||
|
|
@ -26,6 +27,8 @@ public class SalarySendWithdrawParam {
|
|||
// @ApiModelProperty("工资单发放Id")
|
||||
private Long salarySendId;
|
||||
|
||||
private List<Long> salarySendRangeIds;
|
||||
|
||||
public static String checkParam(SalarySendWithdrawParam param, Long employeeId, String tenantKey) {
|
||||
if (param.getSalarySendId() == null) {
|
||||
throw new SalaryRunTimeException("工资单发放Id必传");
|
||||
|
|
|
|||
|
|
@ -1,10 +1,12 @@
|
|||
package com.engine.salary.entity.salaryBill.po;
|
||||
package com.engine.salary.entity.salaryBill.po;
|
||||
|
||||
import java.util.Date;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 工资单发放范围项目表
|
||||
|
|
@ -13,6 +15,7 @@ import lombok.NoArgsConstructor;
|
|||
@Builder
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Accessors(chain = true)
|
||||
public class SalarySendRangeObj {
|
||||
/**
|
||||
* 主键id
|
||||
|
|
|
|||
|
|
@ -1,11 +1,12 @@
|
|||
package com.engine.salary.entity.salaryBill.po;
|
||||
package com.engine.salary.entity.salaryBill.po;
|
||||
|
||||
import java.util.Date;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 工资单发放范围表
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -0,0 +1,50 @@
|
|||
package com.engine.salary.enums.salarysend;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Objects;
|
||||
|
||||
public enum SalarySendGrantTypeEnum {
|
||||
GRANT("grant", "发放", 98590),
|
||||
WITHDRAW("withdraw", "撤回", 93351);
|
||||
|
||||
private String value;
|
||||
|
||||
private String defaultLabel;
|
||||
|
||||
private int labelId;
|
||||
|
||||
SalarySendGrantTypeEnum(String value, String defaultLabel, int labelId) {
|
||||
this.value = value;
|
||||
this.defaultLabel = defaultLabel;
|
||||
this.labelId = labelId;
|
||||
}
|
||||
|
||||
public String getValue() {
|
||||
return value;
|
||||
}
|
||||
|
||||
public String getDefaultLabel() {
|
||||
return defaultLabel;
|
||||
}
|
||||
|
||||
public int getLabelId() {
|
||||
return labelId;
|
||||
}
|
||||
|
||||
public static String getDefaultLabelByValue(String value, Long employeeId, String tenantKey) {
|
||||
return Arrays.stream(SalarySendGrantTypeEnum.values()).filter(r -> r.getValue().equals(value)).findFirst()
|
||||
.map(SalarySendGrantTypeEnum::getDefaultLabel)
|
||||
.orElse(StrUtil.EMPTY);
|
||||
}
|
||||
|
||||
public SalarySendGrantTypeEnum fromValue(String value) {
|
||||
for (SalarySendGrantTypeEnum salarySendGrantTypeEnum : values()) {
|
||||
if (Objects.equals(salarySendGrantTypeEnum.getValue(), value)) {
|
||||
return salarySendGrantTypeEnum;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
|
@ -1,32 +0,0 @@
|
|||
package com.engine.salary.enums.salarysend;
|
||||
|
||||
import com.engine.salary.enums.BaseEnum;
|
||||
import com.engine.salary.util.SalaryI18nUtil;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Optional;
|
||||
|
||||
/**
|
||||
* @Description: 范围类型
|
||||
* @Author: lfc
|
||||
* @Date: 2022/11/14 09:33
|
||||
*/
|
||||
@AllArgsConstructor
|
||||
@Getter
|
||||
public enum SalarySendOperateTypeEnum implements BaseEnum<String> {
|
||||
GRANT("grant", "发放", 98590),
|
||||
WITHDRAW("withdraw", "撤回", 93351);
|
||||
|
||||
private final String value;
|
||||
|
||||
private final String defaultLabel;
|
||||
|
||||
private final int labelId;
|
||||
|
||||
public static String getDefaultLabelByValue(String value, Long employeeId, String tenantKey) {
|
||||
Optional<SalarySendOperateTypeEnum> optional = Arrays.stream(SalarySendOperateTypeEnum.values()).filter(r->r.getValue().equals(value)).findFirst();
|
||||
return optional.isPresent()? SalaryI18nUtil.getI18nLabel(optional.get().getLabelId(), optional.get().getDefaultLabel()):"";
|
||||
}
|
||||
}
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package com.engine.salary.enums.salarysend;
|
||||
package com.engine.salary.enums.salarysend;
|
||||
|
||||
import com.engine.salary.enums.BaseEnum;
|
||||
import lombok.AllArgsConstructor;
|
||||
|
|
@ -22,7 +22,22 @@ public enum SalarySendRangeTargetTypeEnum implements BaseEnum<Integer> {
|
|||
|
||||
private final int labelId;
|
||||
|
||||
public static SalarySendRangeTargetTypeEnum parseByValue(Integer value) {
|
||||
@Override
|
||||
public Integer getLabelId() {
|
||||
return labelId;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Integer getValue() {
|
||||
return value;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDefaultLabel() {
|
||||
return defaultLabel;
|
||||
}
|
||||
|
||||
public static SalarySendRangeTargetTypeEnum fromValue(Integer value) {
|
||||
for (SalarySendRangeTargetTypeEnum targetTypeEnum : SalarySendRangeTargetTypeEnum.values()) {
|
||||
if (Objects.equals(targetTypeEnum.getValue(), value)) {
|
||||
return targetTypeEnum;
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
package com.engine.salary.enums.salarysend;
|
||||
package com.engine.salary.enums.salarysend;
|
||||
|
||||
import com.engine.salary.enums.BaseEnum;
|
||||
import com.engine.salary.util.SalaryI18nUtil;
|
||||
|
|
@ -21,8 +21,33 @@ public enum SalarySendRangeTypeEnum implements BaseEnum<Integer> {
|
|||
|
||||
private final int labelId;
|
||||
|
||||
@Override
|
||||
public Integer getLabelId() {
|
||||
return labelId;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Integer getValue() {
|
||||
return value;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDefaultLabel() {
|
||||
return defaultLabel;
|
||||
}
|
||||
|
||||
public static String getDefaultLabelByValue(Integer value, Long employeeId, String tenantKey) {
|
||||
Optional<SalarySendRangeTypeEnum> optional = Arrays.stream(SalarySendRangeTypeEnum.values()).filter(r->Integer.valueOf(r.getValue()).equals(value)).findFirst();
|
||||
return optional.isPresent()? SalaryI18nUtil.getI18nLabel(optional.get().getLabelId(), optional.get().getDefaultLabel()):"";
|
||||
}
|
||||
|
||||
public static SalarySendRangeTypeEnum fromValue(int value) {
|
||||
for (SalarySendRangeTypeEnum salarySendRangeTypeEnum : values()) {
|
||||
boolean equals = salarySendRangeTypeEnum.getValue().equals(value);
|
||||
if (equals) {
|
||||
return salarySendRangeTypeEnum;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,9 +1,11 @@
|
|||
package com.engine.salary.mapper.salarybill;
|
||||
package com.engine.salary.mapper.salarybill;
|
||||
|
||||
import com.engine.salary.entity.salaryBill.dto.SalarySendRangeListDTO;
|
||||
import com.engine.salary.entity.salaryBill.param.SalarySendRangeQueryParam;
|
||||
import com.engine.salary.entity.salaryBill.po.SalarySendRangePO;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.List;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
public interface SalarySendRangeMapper {
|
||||
int deleteByPrimaryKey(Long id);
|
||||
|
|
@ -16,9 +18,17 @@ public interface SalarySendRangeMapper {
|
|||
|
||||
List<SalarySendRangePO> selectByAll(SalarySendRangePO salarySendRangePO);
|
||||
|
||||
List<SalarySendRangePO> selectAllBySalarySendIdAndGrantType(@Param("salarySendId") Long salarySendId, @Param("grantType") String grantType);
|
||||
List<SalarySendRangePO> selectBySendIdAndGrantType(@Param("salarySendId") Long salarySendId,
|
||||
@Param("grantType") String grantType);
|
||||
|
||||
List<Long> selectIdsBySendIdAndGrantType(@Param("salarySendId") Long salarySendId,
|
||||
@Param("grantType") String grantType);
|
||||
|
||||
int updateBatchSelective(List<SalarySendRangePO> list);
|
||||
|
||||
int batchInsert(@Param("list") List<SalarySendRangePO> list);
|
||||
|
||||
List<SalarySendRangeListDTO> selectByParam(@Param("queryParam") SalarySendRangeQueryParam queryParam);
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -13,6 +13,12 @@
|
|||
<result column="delete_type" jdbcType="INTEGER" property="deleteType" />
|
||||
<result column="tenant_key" jdbcType="VARCHAR" property="tenantKey" />
|
||||
</resultMap>
|
||||
|
||||
<resultMap id="RangeListMap" type="com.engine.salary.entity.salaryBill.dto.SalarySendRangeListDTO">
|
||||
<result column="id" jdbcType="BIGINT" property="id"/>
|
||||
<result column="grant_type" jdbcType="VARCHAR" property="grantType"/>
|
||||
</resultMap>
|
||||
|
||||
<sql id="Base_Column_List">
|
||||
<!--@mbg.generated-->
|
||||
id, salary_send_id, grant_type, creator, create_time, update_time, delete_type, tenant_key
|
||||
|
|
@ -25,11 +31,15 @@
|
|||
where id = #{id,jdbcType=BIGINT}
|
||||
</select>
|
||||
<delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
|
||||
<!--@mbg.generated-->
|
||||
delete from hrsa_salary_send_range
|
||||
where id = #{id,jdbcType=BIGINT}
|
||||
update hrsa_salary_send_range
|
||||
set delete_type = 1
|
||||
where id = #{id,jdbcType=BIGINT} and delete_type = 0
|
||||
</delete>
|
||||
<insert id="insertSelective" keyColumn="id" keyProperty="id" parameterType="com.engine.salary.entity.salaryBill.po.SalarySendRangePO" useGeneratedKeys="true">
|
||||
|
||||
|
||||
<insert id="insertSelective" keyColumn="id" keyProperty="id"
|
||||
parameterType="com.engine.salary.entity.salaryBill.po.SalarySendRangePO"
|
||||
useGeneratedKeys="true">
|
||||
<!--@mbg.generated-->
|
||||
insert into hrsa_salary_send_range
|
||||
<trim prefix="(" suffix=")" suffixOverrides=",">
|
||||
|
|
@ -79,6 +89,64 @@
|
|||
</if>
|
||||
</trim>
|
||||
</insert>
|
||||
<insert id="insertSelective" databaseId="oracle"
|
||||
parameterType="com.engine.salary.entity.salaryBill.po.SalarySendRangePO">
|
||||
<!--@mbg.generated-->
|
||||
<selectKey keyProperty="id" resultType="long" order="AFTER">
|
||||
select HRSA_S_S_R_ID.currval from dual
|
||||
</selectKey>
|
||||
insert into hrsa_salary_send_range
|
||||
<trim prefix="(" suffix=")" suffixOverrides=",">
|
||||
id,
|
||||
<if test="salarySendId != null">
|
||||
salary_send_id,
|
||||
</if>
|
||||
<if test="grantType != null">
|
||||
grant_type,
|
||||
</if>
|
||||
<if test="creator != null">
|
||||
creator,
|
||||
</if>
|
||||
<if test="createTime != null">
|
||||
create_time,
|
||||
</if>
|
||||
<if test="updateTime != null">
|
||||
update_time,
|
||||
</if>
|
||||
<if test="deleteType != null">
|
||||
delete_type,
|
||||
</if>
|
||||
<if test="tenantKey != null">
|
||||
tenant_key,
|
||||
</if>
|
||||
</trim>
|
||||
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
||||
#{id,jdbcType=BIGINT},
|
||||
<if test="salarySendId != null">
|
||||
#{salarySendId,jdbcType=BIGINT},
|
||||
</if>
|
||||
<if test="grantType != null">
|
||||
#{grantType,jdbcType=VARCHAR},
|
||||
</if>
|
||||
<if test="creator != null">
|
||||
#{creator,jdbcType=BIGINT},
|
||||
</if>
|
||||
<if test="createTime != null">
|
||||
#{createTime,jdbcType=TIMESTAMP},
|
||||
</if>
|
||||
<if test="updateTime != null">
|
||||
#{updateTime,jdbcType=TIMESTAMP},
|
||||
</if>
|
||||
<if test="deleteType != null">
|
||||
#{deleteType,jdbcType=INTEGER},
|
||||
</if>
|
||||
<if test="tenantKey != null">
|
||||
#{tenantKey,jdbcType=VARCHAR},
|
||||
</if>
|
||||
</trim>
|
||||
</insert>
|
||||
|
||||
|
||||
<update id="updateByPrimaryKeySelective" parameterType="com.engine.salary.entity.salaryBill.po.SalarySendRangePO">
|
||||
<!--@mbg.generated-->
|
||||
update hrsa_salary_send_range
|
||||
|
|
@ -107,6 +175,8 @@
|
|||
</set>
|
||||
where id = #{id,jdbcType=BIGINT}
|
||||
</update>
|
||||
|
||||
|
||||
<select id="selectByAll" resultMap="BaseResultMap">
|
||||
<!--@mbg.generated-->
|
||||
select
|
||||
|
|
@ -139,13 +209,22 @@
|
|||
</if>
|
||||
</where>
|
||||
</select>
|
||||
<select id="selectAllBySalarySendIdAndGrantType" resultMap="BaseResultMap">
|
||||
<!--@mbg.generated-->
|
||||
|
||||
|
||||
<select id="selectBySendIdAndGrantType" resultMap="BaseResultMap">
|
||||
select
|
||||
<include refid="Base_Column_List"/>
|
||||
from hrsa_salary_send_range
|
||||
where salary_send_id=#{salarySendId,jdbcType=BIGINT} and grant_type=#{grantType,jdbcType=VARCHAR}
|
||||
<where>
|
||||
delete_type = 0
|
||||
and salary_send_id=#{salarySendId,jdbcType=BIGINT}
|
||||
<if test="grantType != null and grantType != ''">
|
||||
and grant_type=#{grantType,jdbcType=VARCHAR}
|
||||
</if>
|
||||
</where>
|
||||
</select>
|
||||
|
||||
|
||||
<update id="updateBatchSelective" parameterType="java.util.List">
|
||||
<!--@mbg.generated-->
|
||||
update hrsa_salary_send_range
|
||||
|
|
@ -205,6 +284,8 @@
|
|||
#{item.id,jdbcType=BIGINT}
|
||||
</foreach>
|
||||
</update>
|
||||
|
||||
|
||||
<insert id="batchInsert" keyColumn="id" keyProperty="id" parameterType="map" useGeneratedKeys="true">
|
||||
<!--@mbg.generated-->
|
||||
insert into hrsa_salary_send_range
|
||||
|
|
@ -217,4 +298,61 @@
|
|||
#{item.tenantKey,jdbcType=VARCHAR})
|
||||
</foreach>
|
||||
</insert>
|
||||
<insert id="batchInsert" databaseId="sqlserver">
|
||||
<foreach collection="list" item="item" separator=";">
|
||||
insert into hrsa_salary_send_range
|
||||
(salary_send_id, grant_type, creator, create_time, update_time, delete_type, tenant_key
|
||||
)
|
||||
values
|
||||
(#{item.salarySendId,jdbcType=BIGINT}, #{item.grantType,jdbcType=VARCHAR}, #{item.creator,jdbcType=BIGINT},
|
||||
#{item.createTime,jdbcType=TIMESTAMP}, #{item.updateTime,jdbcType=TIMESTAMP}, #{item.deleteType,jdbcType=INTEGER},
|
||||
#{item.tenantKey,jdbcType=VARCHAR})
|
||||
</foreach>
|
||||
</insert>
|
||||
<insert id="batchInsert" databaseId="oracle">
|
||||
<!--@mbg.generated-->
|
||||
insert into hrsa_salary_send_range
|
||||
(salary_send_id, grant_type, creator, create_time, update_time, delete_type, tenant_key
|
||||
)
|
||||
select
|
||||
<foreach collection="list" item="item" separator=",">
|
||||
#{item.salarySendId,jdbcType=BIGINT}, #{item.grantType,jdbcType=VARCHAR}, #{item.creator,jdbcType=BIGINT},
|
||||
#{item.createTime,jdbcType=TIMESTAMP}, #{item.updateTime,jdbcType=TIMESTAMP}, #{item.deleteType,jdbcType=INTEGER},
|
||||
#{item.tenantKey,jdbcType=VARCHAR}
|
||||
</foreach>
|
||||
from dual
|
||||
</insert>
|
||||
|
||||
|
||||
<select id="selectIdsBySendIdAndGrantType" resultType="java.lang.Long">
|
||||
select
|
||||
id
|
||||
from hrsa_salary_send_range
|
||||
<where>
|
||||
delete_type = 0
|
||||
and salary_send_id=#{salarySendId,jdbcType=BIGINT}
|
||||
<if test="grantType != null and grantType != ''">
|
||||
and grant_type=#{grantType,jdbcType=VARCHAR}
|
||||
</if>
|
||||
</where>
|
||||
</select>
|
||||
|
||||
|
||||
<select id="selectByParam" resultMap="RangeListMap">
|
||||
select r.id,
|
||||
r.grant_type
|
||||
from hrsa_salary_send_range r
|
||||
<where>
|
||||
delete_type = 0
|
||||
<if test="queryParam.grantType != null">
|
||||
and r.grant_type = #{queryParam.grantType}
|
||||
</if>
|
||||
<if test="queryParam.salarySendId">
|
||||
and r.salary_send_id = #{queryParam.salarySendId}
|
||||
</if>
|
||||
</where>
|
||||
<if test="queryParam.orderRule != null">
|
||||
order by ${queryParam.orderRule.orderRule} ${queryParam.orderRule.ascOrDesc}
|
||||
</if>
|
||||
</select>
|
||||
</mapper>
|
||||
|
|
@ -1,5 +1,6 @@
|
|||
package com.engine.salary.mapper.salarybill;
|
||||
package com.engine.salary.mapper.salarybill;
|
||||
|
||||
import com.engine.salary.entity.salaryBill.dto.SalarySendUserInfoDTO;
|
||||
import com.engine.salary.entity.salaryBill.po.SalarySendRangeObj;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
|
|
@ -23,9 +24,12 @@ public interface SalarySendRangeObjMapper {
|
|||
|
||||
int updateBatchSelective(List<SalarySendRangeObj> list);
|
||||
|
||||
void deleteByRangeIds(@Param("salarySendRangeIds") List<Long> salarySendRangeIds,
|
||||
@Param("tenantKey") String tenantKey);
|
||||
|
||||
int batchInsert(@Param("list") List<SalarySendRangeObj> list);
|
||||
|
||||
int deleteBySalarySendIds(@Param("salarySendIds") Collection<Long> salarySendIds);
|
||||
|
||||
|
||||
List<SalarySendUserInfoDTO> getUserInfoByEmployeeIds(@Param("employeeIds") List<Long> employeeIds);
|
||||
}
|
||||
|
|
@ -293,7 +293,7 @@
|
|||
</foreach>
|
||||
</insert>
|
||||
<insert id="batchInsert" databaseId="sqlserver">
|
||||
<foreach collection="list" item="item" separator=",">
|
||||
<foreach collection="list" item="item" separator=";">
|
||||
insert into hrsa_salary_send_range_obj
|
||||
(salary_send_id, salary_send_range_id, range_type, target_type, target_id, creator,
|
||||
create_time, update_time, delete_type, tenant_key)
|
||||
|
|
@ -329,4 +329,34 @@
|
|||
)
|
||||
and delete_type = 0
|
||||
</update>
|
||||
|
||||
<update id="deleteByRangeIds">
|
||||
update hrsa_salary_send_range_obj
|
||||
set delete_type = 1
|
||||
where delete_type = 0
|
||||
and salary_send_range_id in (
|
||||
<foreach collection="salarySendRangeIds" item="salarySendId" separator=",">
|
||||
#{salarySendId}
|
||||
</foreach>
|
||||
)
|
||||
</update>
|
||||
|
||||
<resultMap id="userInfoMap" type="com.engine.salary.entity.salaryBill.dto.SalarySendUserInfoDTO">
|
||||
<result column="id" property="resourceId" jdbcType="BIGINT"/>
|
||||
<result column="departmentid" property="departmentId" jdbcType="BIGINT"/>
|
||||
<result column="subcompanyid1" property="subCompanyId" jdbcType="BIGINT"/>
|
||||
<result column="jobtitle" property="jobTitle" jdbcType="BIGINT"/>
|
||||
</resultMap>
|
||||
<select id="getUserInfoByEmployeeIds" resultMap="userInfoMap">
|
||||
select id,
|
||||
departmentid,
|
||||
subcompanyid1,
|
||||
jobtitle
|
||||
from hrmresource
|
||||
where id in (
|
||||
<foreach collection="employeeIds" item="item" separator=",">
|
||||
#{item}
|
||||
</foreach>
|
||||
)
|
||||
</select>
|
||||
</mapper>
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package com.engine.salary.service;
|
||||
package com.engine.salary.service;
|
||||
|
||||
import com.engine.salary.entity.salaryBill.po.SalarySendRangeObj;
|
||||
|
||||
|
|
@ -20,13 +20,6 @@ public interface SalarySendRangeObjService {
|
|||
*/
|
||||
List<SalarySendRangeObj> listBySalarySendIdAndRangeIds(Long salarySendId, List<Long> rangeIds);
|
||||
|
||||
/**
|
||||
* 保存筛选范围对象
|
||||
*
|
||||
* @param listObj
|
||||
*/
|
||||
void batchInsert(List<SalarySendRangeObj> listObj);
|
||||
|
||||
/**
|
||||
* 根据工资饭发放id删除
|
||||
*
|
||||
|
|
@ -34,22 +27,16 @@ public interface SalarySendRangeObjService {
|
|||
*/
|
||||
void deleteBySalarySendIds(Collection<Long> salarySendIds);
|
||||
|
||||
/**
|
||||
* 根据范围id删除
|
||||
*
|
||||
* @param rangeIds
|
||||
* @param currentEmployeeId
|
||||
* @param currentTenantKey
|
||||
*/
|
||||
void deleteByRangeIds(Collection<Long> rangeIds, Long currentEmployeeId);
|
||||
void replaceAllByRangeIds(Long rangeIds, List<SalarySendRangeObj> rangeObjs);
|
||||
|
||||
/**
|
||||
* 根据发放id和范围id获取发放信息id
|
||||
*
|
||||
* @param salarySendId
|
||||
* @param rangeIds
|
||||
* @param employeeId
|
||||
* @return
|
||||
*/
|
||||
List<Long> getSendInfoIdsBySalarySendIdAndRangeIds(Long salarySendId, List<Long> rangeIds, Long employeeId);
|
||||
List<Long> getSendInfoIdsBySalarySendIdAndRangeIds(Long salarySendId, List<Long> rangeIds);
|
||||
|
||||
void deleteBySalarySendRangeIds(List<Long> salarySendRangeIds);
|
||||
}
|
||||
|
|
@ -1,31 +1,24 @@
|
|||
package com.engine.salary.service;
|
||||
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.SalarySendPO;
|
||||
import com.engine.salary.entity.salaryBill.po.SalaryTemplatePO;
|
||||
import com.engine.salary.entity.salaryBill.dto.SalarySendRangeListDTO;
|
||||
import com.engine.salary.entity.salaryBill.param.SalarySendRangeQueryParam;
|
||||
import com.engine.salary.entity.salaryBill.param.SalarySendRangeSaveParam;
|
||||
import com.engine.salary.util.page.PageInfo;
|
||||
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @Description: 工资单发放范围
|
||||
*/
|
||||
public interface SalarySendRangeService {
|
||||
void save();
|
||||
void save(SalarySendRangeSaveParam param);
|
||||
|
||||
void listPage();
|
||||
|
||||
void listDTO();
|
||||
|
||||
void listByIds();
|
||||
|
||||
void getById(Long id);
|
||||
PageInfo<SalarySendRangeListDTO> listPage(SalarySendRangeQueryParam queryParam);
|
||||
|
||||
void deleteBySalarySendIds(Collection<Long> sendIds);
|
||||
|
||||
void getSendInfoIdsBySendId(Collection<Long> sendIds);
|
||||
void deleteByIds(List<Long> sendRangeIds);
|
||||
|
||||
List<Long> getSendInfoIdsBySendId(Long sendId, List<Long> sendRangeIds);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -84,6 +84,7 @@ public interface SalarySendService {
|
|||
*/
|
||||
PageInfo<SalarySendInfoListDTO> salarySendInfoListPage(SalarySendInfoQueryParam queryParam);
|
||||
|
||||
List<SalarySendInfoListDTO> salarySendInfoList(Long salarySendId);
|
||||
/**
|
||||
* 我的工资单列表详情
|
||||
*
|
||||
|
|
|
|||
|
|
@ -1,61 +1,101 @@
|
|||
package com.engine.salary.service.impl;
|
||||
package com.engine.salary.service.impl;
|
||||
|
||||
import com.engine.common.util.ServiceUtil;
|
||||
import com.engine.core.impl.Service;
|
||||
import com.engine.hrm.service.RolesMembersService;
|
||||
import com.engine.hrm.service.impl.RolesMembersServiceImpl;
|
||||
import com.engine.salary.biz.SalarySendRangeObjBiz;
|
||||
import com.engine.salary.entity.salaryBill.bo.SalarySendRangeBO;
|
||||
import com.engine.salary.entity.salaryBill.dto.SalarySendInfoListDTO;
|
||||
import com.engine.salary.entity.salaryBill.dto.SalarySendUserInfoDTO;
|
||||
import com.engine.salary.entity.salaryBill.po.SalarySendRangeObj;
|
||||
import com.engine.salary.mapper.salarybill.SalarySendRangeObjMapper;
|
||||
import com.engine.salary.enums.salarysend.SalarySendRangeTargetTypeEnum;
|
||||
import com.engine.salary.exception.SalaryRunTimeException;
|
||||
import com.engine.salary.service.SalarySendRangeObjService;
|
||||
import com.google.common.collect.Lists;
|
||||
import com.engine.salary.service.SalarySendService;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.apache.ibatis.session.SqlSession;
|
||||
import weaver.conn.mybatis.MyBatisFactory;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.function.Function;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static com.engine.salary.constant.SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY;
|
||||
|
||||
public class SalarySendRangeObjServiceImpl extends Service implements SalarySendRangeObjService {
|
||||
|
||||
private <R> R runSalarySendRangeObjMapper(Function<SalarySendRangeObjMapper, R> mapper) {
|
||||
try (SqlSession sqlSession = MyBatisFactory.sqlSessionFactory.openSession()) {
|
||||
final SalarySendRangeObjMapper salarySendRangeObjMapper = sqlSession.getMapper(SalarySendRangeObjMapper.class);
|
||||
return mapper.apply(salarySendRangeObjMapper);
|
||||
}
|
||||
private SalarySendService getSalarySendService() {
|
||||
return ServiceUtil.getService(SalarySendServiceImpl.class, user);
|
||||
}
|
||||
|
||||
private RolesMembersService getRolesMembersService() {
|
||||
return ServiceUtil.getService(RolesMembersServiceImpl.class, user);
|
||||
}
|
||||
|
||||
private final SalarySendRangeObjBiz salarySendRangeObjBiz = new SalarySendRangeObjBiz();
|
||||
|
||||
@Override
|
||||
public List<SalarySendRangeObj> listBySalarySendIdAndRangeIds(Long salarySendId, List<Long> rangeIds) {
|
||||
if (salarySendId == null || CollectionUtils.isEmpty(rangeIds)) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
return runSalarySendRangeObjMapper(mapper ->
|
||||
return salarySendRangeObjBiz.applyMapper(mapper ->
|
||||
mapper.listBySalarySendIdAndRangeIds(salarySendId, rangeIds, DEFAULT_TENANT_KEY)
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void batchInsert(List<SalarySendRangeObj> listObj) {
|
||||
if (listObj == null) {
|
||||
return;
|
||||
}
|
||||
List<List<SalarySendRangeObj>> p = Lists.partition(listObj, 150);
|
||||
p.forEach(list-> runSalarySendRangeObjMapper(m->m.batchInsert(list)));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteBySalarySendIds(Collection<Long> salarySendIds) {
|
||||
runSalarySendRangeObjMapper(mapper->mapper.deleteBySalarySendIds(salarySendIds));
|
||||
salarySendRangeObjBiz.runMapper(mapper -> mapper.deleteBySalarySendIds(salarySendIds));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteByRangeIds(Collection<Long> rangeIds, Long currentEmployeeId) {
|
||||
|
||||
public void replaceAllByRangeIds(Long rangeIds, List<SalarySendRangeObj> rangeObjs) {
|
||||
for (SalarySendRangeObj rangeObj : rangeObjs) {
|
||||
SalarySendRangeTargetTypeEnum targetEnum = SalarySendRangeTargetTypeEnum.fromValue(rangeObj.getTargetType());
|
||||
if (targetEnum == null) {
|
||||
throw new SalaryRunTimeException("传入范围类型非法");
|
||||
}
|
||||
if (rangeObj.getTargetType().equals(SalarySendRangeTargetTypeEnum.ALL.getValue())) {
|
||||
rangeObj.setTargetId(0L);
|
||||
}
|
||||
}
|
||||
salarySendRangeObjBiz.replaceAllByRangeId(rangeIds, rangeObjs);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Long> getSendInfoIdsBySalarySendIdAndRangeIds(Long salarySendId, List<Long> rangeIds, Long employeeId) {
|
||||
return null;
|
||||
public List<Long> getSendInfoIdsBySalarySendIdAndRangeIds(Long salarySendId, List<Long> rangeIds) {
|
||||
// 获取范围
|
||||
List<SalarySendRangeObj> rangeList =
|
||||
salarySendRangeObjBiz.applyMapper(mapper -> mapper.listBySalarySendIdAndRangeIds(salarySendId, rangeIds, DEFAULT_TENANT_KEY));
|
||||
|
||||
// 初始化范围操作类
|
||||
SalarySendRangeBO rangeBO = new SalarySendRangeBO();
|
||||
for (SalarySendRangeObj rangeObj : rangeList) {
|
||||
rangeBO.putNew(rangeObj);
|
||||
}
|
||||
// 获取当前发放单人员详情
|
||||
List<SalarySendInfoListDTO> sendInfoList = getSalarySendService().salarySendInfoList(salarySendId);
|
||||
// 获取全部人员id
|
||||
List<Long> employeeIds = sendInfoList.stream().map(SalarySendInfoListDTO::getEmployeeId)
|
||||
.distinct().collect(Collectors.toList());
|
||||
// 查找人员的多维度关联id
|
||||
List<SalarySendUserInfoDTO> userInfos =
|
||||
salarySendRangeObjBiz.getSalarySendUserInfoDTOs(employeeIds);
|
||||
// 筛选在范围中的人员id
|
||||
Set<Long> empIds = userInfos.stream()
|
||||
.filter(rangeBO::judgeInRange)
|
||||
.map(SalarySendUserInfoDTO::getResourceId)
|
||||
.distinct().collect(Collectors.toSet());
|
||||
// 返回发放详情的id
|
||||
return sendInfoList.stream().filter(s -> empIds.contains(s.getEmployeeId()))
|
||||
.map(SalarySendInfoListDTO::getId)
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteBySalarySendRangeIds(List<Long> salarySendRangeIds) {
|
||||
salarySendRangeObjBiz.runMapper(mapper -> mapper.deleteByRangeIds(salarySendRangeIds, DEFAULT_TENANT_KEY));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,34 +1,172 @@
|
|||
package com.engine.salary.service.impl;
|
||||
package com.engine.salary.service.impl;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.engine.common.util.ServiceUtil;
|
||||
import com.engine.core.impl.Service;
|
||||
import com.engine.salary.biz.EmployBiz;
|
||||
import com.engine.salary.entity.datacollection.DataCollectionEmployee;
|
||||
import com.engine.salary.entity.hrm.DeptInfo;
|
||||
import com.engine.salary.entity.hrm.PositionInfo;
|
||||
import com.engine.salary.entity.hrm.SubCompanyInfo;
|
||||
import com.engine.salary.entity.salaryBill.dto.SalarySendRangeListDTO;
|
||||
import com.engine.salary.entity.salaryBill.dto.SalarySendRangeObjDTO;
|
||||
import com.engine.salary.entity.salaryBill.param.SalarySendRangeQueryParam;
|
||||
import com.engine.salary.entity.salaryBill.param.SalarySendRangeSaveParam;
|
||||
import com.engine.salary.entity.salaryBill.po.SalarySendRangeObj;
|
||||
import com.engine.salary.entity.salaryBill.po.SalarySendRangePO;
|
||||
import com.engine.salary.entity.taxagent.po.TaxAgentPO;
|
||||
import com.engine.salary.enums.salarysend.SalarySendRangeTargetTypeEnum;
|
||||
import com.engine.salary.enums.salarysend.SalarySendRangeTypeEnum;
|
||||
import com.engine.salary.exception.SalaryRunTimeException;
|
||||
import com.engine.salary.mapper.salarybill.SalarySendRangeMapper;
|
||||
import com.engine.salary.service.SalaryEmployeeService;
|
||||
import com.engine.salary.service.SalarySendRangeObjService;
|
||||
import com.engine.salary.service.SalarySendRangeService;
|
||||
import com.engine.salary.service.TaxAgentService;
|
||||
import com.engine.salary.util.db.MapperProxyFactory;
|
||||
import com.engine.salary.util.page.PageInfo;
|
||||
import com.engine.salary.util.page.SalaryPageUtil;
|
||||
import org.apache.ibatis.session.SqlSession;
|
||||
import weaver.conn.mybatis.MyBatisFactory;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.*;
|
||||
import java.util.function.Consumer;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static com.engine.salary.constant.SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY;
|
||||
|
||||
public class SalarySendRangeServiceImpl extends Service implements SalarySendRangeService {
|
||||
@Override
|
||||
public void save() {
|
||||
private SalaryEmployeeService getSalaryEmployeeService() {
|
||||
return ServiceUtil.getService(SalaryEmployeeServiceImpl.class, user);
|
||||
}
|
||||
|
||||
private TaxAgentService getTaxAgentService() {
|
||||
return ServiceUtil.getService(TaxAgentServiceImpl.class, user);
|
||||
}
|
||||
|
||||
private EmployBiz employBiz = new EmployBiz();
|
||||
|
||||
private <R> R applyMapper(Function<SalarySendRangeMapper, R> mapper) {
|
||||
try (SqlSession sqlSession = MyBatisFactory.sqlSessionFactory.openSession()) {
|
||||
final SalarySendRangeMapper salarySendRangeMapper = sqlSession.getMapper(SalarySendRangeMapper.class);
|
||||
R apply = mapper.apply(salarySendRangeMapper);
|
||||
sqlSession.commit();
|
||||
return apply;
|
||||
}
|
||||
}
|
||||
|
||||
private void runMapper(Consumer<SalarySendRangeMapper> mapper) {
|
||||
try (SqlSession sqlSession = MyBatisFactory.sqlSessionFactory.openSession()) {
|
||||
final SalarySendRangeMapper salarySendRangeMapper = sqlSession.getMapper(SalarySendRangeMapper.class);
|
||||
mapper.accept(salarySendRangeMapper);
|
||||
sqlSession.commit();
|
||||
}
|
||||
}
|
||||
|
||||
private SalarySendRangeObjService getSalarySendRangeObjService() {
|
||||
return ServiceUtil.getService(SalarySendRangeObjServiceImpl.class, user);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void listPage() {
|
||||
public void save(SalarySendRangeSaveParam param) {
|
||||
SalarySendRangeSaveParam.checkParam(param, (long) user.getUID(), DEFAULT_TENANT_KEY);
|
||||
SalarySendRangePO salarySendRangePO = param.toSalarySendRangePO(user);
|
||||
|
||||
// 如果传入id, 则做查询后更新
|
||||
if (salarySendRangePO.getId() != null) {
|
||||
SalarySendRangePO oldInfo = applyMapper(mapper -> mapper.selectByPrimaryKey(salarySendRangePO.getId()));
|
||||
if (oldInfo == null) {
|
||||
throw new SalaryRunTimeException("传入发放范围不存在");
|
||||
}
|
||||
runMapper(mapper -> mapper.updateByPrimaryKeySelective(salarySendRangePO));
|
||||
} else {
|
||||
runMapper(mapper -> mapper.insertSelective(salarySendRangePO));
|
||||
}
|
||||
param.setSalarySendRangeId(salarySendRangePO.getId());
|
||||
|
||||
List<SalarySendRangeObj> rangeObjs = param.toSalarySendRangeObj(user);
|
||||
getSalarySendRangeObjService().replaceAllByRangeIds(salarySendRangePO.getId(), rangeObjs);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void listDTO() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void listByIds() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void getById(Long id) {
|
||||
|
||||
public PageInfo<SalarySendRangeListDTO> listPage(SalarySendRangeQueryParam queryParam) {
|
||||
if (StrUtil.isEmpty(queryParam.getTargetName())) {
|
||||
SalaryPageUtil.start(queryParam.getCurrent(), queryParam.getPageSize());
|
||||
}
|
||||
SalarySendRangeMapper mapper = MapperProxyFactory.getProxy(SalarySendRangeMapper.class);
|
||||
List<SalarySendRangeListDTO> listDTOs = mapper.selectByParam(queryParam);
|
||||
PageInfo<SalarySendRangeListDTO> page = new PageInfo<>(listDTOs, SalarySendRangeListDTO.class);
|
||||
listDTOs = listDTOs.stream().map(s -> {
|
||||
List<SalarySendRangeObj> rangeObjs = getSalarySendRangeObjService().listBySalarySendIdAndRangeIds(queryParam.getSalarySendId(),
|
||||
Collections.singletonList(s.getId()));
|
||||
Map<Integer, List<SalarySendRangeObjDTO>> groupedMap = rangeObjs.stream()
|
||||
.map(rangeObj -> {
|
||||
SalarySendRangeTargetTypeEnum typeEnum = SalarySendRangeTargetTypeEnum.fromValue(rangeObj.getTargetType());
|
||||
if (typeEnum == null) {
|
||||
return null;
|
||||
}
|
||||
String targetName = null;
|
||||
switch (typeEnum) {
|
||||
case USER:
|
||||
DataCollectionEmployee employee =
|
||||
getSalaryEmployeeService().getEmployeeById(rangeObj.getTargetId());
|
||||
targetName = Optional.ofNullable(employee)
|
||||
.map(DataCollectionEmployee::getUsername)
|
||||
.orElse(null);
|
||||
break;
|
||||
case DEPT:
|
||||
targetName = employBiz.getDeptInfoList(Collections.singletonList(rangeObj.getTargetId()))
|
||||
.stream().findFirst()
|
||||
.map(DeptInfo::getName).orElse(null);
|
||||
break;
|
||||
case SUB_COMPANY:
|
||||
targetName = employBiz.getSubCompanyInfoList(Collections.singletonList(rangeObj.getTargetId()))
|
||||
.stream().findFirst()
|
||||
.map(SubCompanyInfo::getName).orElse(null);
|
||||
break;
|
||||
case POSITION:
|
||||
targetName = employBiz.listPositionInfo(Collections.singletonList(rangeObj.getTargetId()))
|
||||
.stream().findFirst()
|
||||
.map(PositionInfo::getName).orElse(null);
|
||||
break;
|
||||
case TAX_AGENT:
|
||||
targetName = Optional.ofNullable(getTaxAgentService().getById(rangeObj.getTargetId()))
|
||||
.map(TaxAgentPO::getName).orElse(null);
|
||||
break;
|
||||
}
|
||||
return SalarySendRangeObjDTO.builder()
|
||||
.targetType(rangeObj.getTargetType())
|
||||
.targetTypeName(typeEnum.getDefaultLabel())
|
||||
.targetName(targetName)
|
||||
.rangeType(rangeObj.getRangeType())
|
||||
.targetId(rangeObj.getTargetId())
|
||||
.build();
|
||||
}).filter(Objects::nonNull)
|
||||
.collect(Collectors.groupingBy(SalarySendRangeObjDTO::getRangeType));
|
||||
//如果有查询,则做筛选
|
||||
if (StrUtil.isNotEmpty(queryParam.getTargetName())) {
|
||||
boolean nameLike = false;
|
||||
for (List<SalarySendRangeObjDTO> value : groupedMap.values()) {
|
||||
nameLike |= value.stream()
|
||||
.anyMatch(item -> Optional.ofNullable(item.getTargetName()).orElse("")
|
||||
.contains(queryParam.getTargetName()));
|
||||
}
|
||||
if (!nameLike) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
s.setIncludeObj(groupedMap.getOrDefault(SalarySendRangeTypeEnum.INCLUDE_OBJ.getValue(), Collections.emptyList()));
|
||||
s.setExcludeObj(groupedMap.getOrDefault(SalarySendRangeTypeEnum.EXCLUDE_OBJ.getValue(), Collections.emptyList()));
|
||||
return s;
|
||||
}).filter(Objects::nonNull)
|
||||
.collect(Collectors.toList());
|
||||
if (StrUtil.isNotEmpty(queryParam.getTargetName())) {
|
||||
page.setTotal(listDTOs.size());
|
||||
List<SalarySendRangeListDTO> list = SalaryPageUtil.subList(queryParam.getCurrent(), queryParam.getPageSize(), listDTOs);
|
||||
page.setList(list);
|
||||
}
|
||||
return page;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -37,7 +175,23 @@ public class SalarySendRangeServiceImpl extends Service implements SalarySendRan
|
|||
}
|
||||
|
||||
@Override
|
||||
public void getSendInfoIdsBySendId(Collection<Long> sendIds) {
|
||||
public void deleteByIds(List<Long> sendRangeIds) {
|
||||
runMapper(mapper-> {
|
||||
for (Long sendRangeId : sendRangeIds) {
|
||||
mapper.deleteByPrimaryKey(sendRangeId);
|
||||
}
|
||||
});
|
||||
getSalarySendRangeObjService().deleteBySalarySendRangeIds(sendRangeIds);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Long> getSendInfoIdsBySendId(Long sendId, List<Long> sendRangeIds) {
|
||||
List<Long> rangeIdList =
|
||||
applyMapper(mapper -> mapper.selectIdsBySendIdAndGrantType(sendId, null));
|
||||
|
||||
rangeIdList = rangeIdList.stream()
|
||||
.filter(sendRangeIds::contains)
|
||||
.collect(Collectors.toList());
|
||||
return getSalarySendRangeObjService().getSendInfoIdsBySalarySendIdAndRangeIds(sendId, rangeIdList);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -76,6 +76,10 @@ public class SalarySendServiceImpl extends Service implements SalarySendService
|
|||
private SalarySendBiz mapper = new SalarySendBiz();
|
||||
private SalarySendInfoBiz salarySendInfoMapper = new SalarySendInfoBiz();
|
||||
|
||||
private SalarySendRangeService getSalarySendRangeService(User user) {
|
||||
return ServiceUtil.getService(SalarySendRangeServiceImpl.class, user);
|
||||
}
|
||||
|
||||
|
||||
private SalaryTemplateService getSalaryTemplateService(User user) {
|
||||
return ServiceUtil.getService(SalaryTemplateServiceImpl.class, user);
|
||||
|
|
@ -453,6 +457,11 @@ public class SalarySendServiceImpl extends Service implements SalarySendService
|
|||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<SalarySendInfoListDTO> salarySendInfoList(Long salarySendId) {
|
||||
return salarySendInfoMapper.list(SalarySendInfoQueryParam.builder().salarySendId(salarySendId).build());
|
||||
}
|
||||
|
||||
@Override
|
||||
public PageInfo<SalaryMySalaryBillListDTO> mySalaryBillListPage(SalaryBillQueryParam queryParam) {
|
||||
List<SalaryMySalaryBillListDTO> list = salarySendInfoMapper.mySalaryBillList(queryParam);
|
||||
|
|
@ -659,6 +668,12 @@ public class SalarySendServiceImpl extends Service implements SalarySendService
|
|||
Long salarySendId = param.getSalarySendId();
|
||||
Collection<Long> ids = param.getIds();
|
||||
|
||||
if (param.getSalarySendRangeIds() != null) {
|
||||
//如果传了范围id,则使用范围id发放
|
||||
ids = getSalarySendRangeService(user)
|
||||
.getSendInfoIdsBySendId(salarySendId, param.getSalarySendRangeIds());
|
||||
}
|
||||
|
||||
SalarySendPO salarySend = mapper.getById(salarySendId);
|
||||
if (salarySend == null) {
|
||||
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(100512, "工资单发放不存在"));
|
||||
|
|
@ -916,6 +931,12 @@ public class SalarySendServiceImpl extends Service implements SalarySendService
|
|||
Long salarySendId = param.getSalarySendId();
|
||||
Collection<Long> ids = param.getIds();
|
||||
|
||||
if (param.getSalarySendRangeIds() != null) {
|
||||
//如果传了范围id,则使用范围id撤回
|
||||
ids = getSalarySendRangeService(user)
|
||||
.getSendInfoIdsBySendId(salarySendId, param.getSalarySendRangeIds());
|
||||
}
|
||||
|
||||
SalarySendPO salarySend = mapper.getById(salarySendId);
|
||||
if (salarySend == null) {
|
||||
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(100512, "工资单发放不存在"));
|
||||
|
|
|
|||
|
|
@ -0,0 +1,58 @@
|
|||
package com.engine.salary.web;
|
||||
|
||||
import com.engine.common.util.ServiceUtil;
|
||||
import com.engine.salary.entity.salaryBill.dto.SalarySendRangeListDTO;
|
||||
import com.engine.salary.entity.salaryBill.param.SalarySendRangeQueryParam;
|
||||
import com.engine.salary.entity.salaryBill.param.SalarySendRangeSaveParam;
|
||||
import com.engine.salary.util.ResponseResult;
|
||||
import com.engine.salary.util.page.PageInfo;
|
||||
import com.engine.salary.wrapper.SalarySendRangeWrapper;
|
||||
import io.swagger.v3.oas.annotations.parameters.RequestBody;
|
||||
import weaver.hrm.HrmUserVarify;
|
||||
import weaver.hrm.User;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import javax.ws.rs.POST;
|
||||
import javax.ws.rs.Path;
|
||||
import javax.ws.rs.Produces;
|
||||
import javax.ws.rs.core.Context;
|
||||
import javax.ws.rs.core.MediaType;
|
||||
import java.util.Collection;
|
||||
|
||||
/**
|
||||
* @Description: 工资单范围
|
||||
*/
|
||||
public class SalarySendRangeController {
|
||||
private SalarySendRangeWrapper getSalarySendRangeWrapper(User user) {
|
||||
return ServiceUtil.getService(SalarySendRangeWrapper.class, user);
|
||||
}
|
||||
|
||||
@POST
|
||||
@Path("/save")
|
||||
@Produces(MediaType.APPLICATION_JSON)
|
||||
public String save(@Context HttpServletRequest request, @Context HttpServletResponse response,
|
||||
@RequestBody SalarySendRangeSaveParam saveParam) {
|
||||
User user = HrmUserVarify.getUser(request, response);
|
||||
return new ResponseResult<SalarySendRangeSaveParam, Void>(user).run(getSalarySendRangeWrapper(user)::save, saveParam);
|
||||
}
|
||||
|
||||
@POST
|
||||
@Path("/deleteByIds")
|
||||
@Produces(MediaType.APPLICATION_JSON)
|
||||
public String deleteByIds(@Context HttpServletRequest request, @Context HttpServletResponse response,
|
||||
@RequestBody Collection<Long> ids) {
|
||||
User user = HrmUserVarify.getUser(request, response);
|
||||
return new ResponseResult<Collection<Long>, Void>(user).run(getSalarySendRangeWrapper(user)::deleteByIds, ids);
|
||||
}
|
||||
|
||||
@POST
|
||||
@Path("/listPage")
|
||||
@Produces(MediaType.APPLICATION_JSON)
|
||||
public String save(@Context HttpServletRequest request, @Context HttpServletResponse response,
|
||||
@RequestBody SalarySendRangeQueryParam queryParam) {
|
||||
User user = HrmUserVarify.getUser(request, response);
|
||||
return new ResponseResult<SalarySendRangeQueryParam, PageInfo<SalarySendRangeListDTO>>(user).run(getSalarySendRangeWrapper(user)::listPage, queryParam);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,36 @@
|
|||
package com.engine.salary.wrapper;
|
||||
|
||||
import com.engine.common.util.ServiceUtil;
|
||||
import com.engine.core.impl.Service;
|
||||
import com.engine.salary.entity.salaryBill.dto.SalarySendRangeListDTO;
|
||||
import com.engine.salary.entity.salaryBill.param.SalarySendRangeQueryParam;
|
||||
import com.engine.salary.entity.salaryBill.param.SalarySendRangeSaveParam;
|
||||
import com.engine.salary.service.SalarySendRangeService;
|
||||
import com.engine.salary.service.impl.SalarySendRangeServiceImpl;
|
||||
import com.engine.salary.util.page.PageInfo;
|
||||
import weaver.hrm.User;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
|
||||
public class SalarySendRangeWrapper extends Service {
|
||||
private SalarySystemConfigWrapper getSalarySysConfService(User user) {
|
||||
return ServiceUtil.getService(SalarySystemConfigWrapper.class, user);
|
||||
}
|
||||
|
||||
private SalarySendRangeService getSalarySendRangeService(User user) {
|
||||
return ServiceUtil.getService(SalarySendRangeServiceImpl.class, user);
|
||||
}
|
||||
|
||||
public PageInfo<SalarySendRangeListDTO> listPage(SalarySendRangeQueryParam queryParam) {
|
||||
return getSalarySendRangeService(user).listPage(queryParam);
|
||||
}
|
||||
|
||||
public void save(SalarySendRangeSaveParam saveParam) {
|
||||
getSalarySendRangeService(user).save(saveParam);
|
||||
}
|
||||
|
||||
public void deleteByIds(Collection<Long> ids) {
|
||||
getSalarySendRangeService(user).deleteByIds(new ArrayList<>(ids));
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue