This commit is contained in:
钱涛 2022-05-19 16:36:18 +08:00
parent ed0ba7ed6d
commit 2c03d4bc27
14 changed files with 606 additions and 360 deletions

View File

@ -0,0 +1,65 @@
package com.engine.salary.entity.agency.bo;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.weaver.common.distribution.genid.IdGenerator;
import com.weaver.hrm.salary.entity.agency.dto.PaymentAgencyFormDTO;
import com.weaver.hrm.salary.entity.agency.dto.PaymentAgencyListDTO;
import com.weaver.hrm.salary.entity.agency.po.PaymentAgencyPO;
import com.weaver.hrm.salary.enums.sicategory.DeleteTypeEnum;
import java.time.LocalDateTime;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
/**
* @Description:
* @Author: zhangheng
* @CreateDate: 2022/4/20 20:59
* @Version: v1.0
*/
public class PaymentAgencyBO {
public static Wrapper<PaymentAgencyPO> buildPaymentAgencyListWrapper(Long employeeId, String tenantKey) {
LambdaQueryWrapper<PaymentAgencyPO> lambdaQueryWrapper = Wrappers.lambdaQuery();
lambdaQueryWrapper.eq(PaymentAgencyPO::getTenantKey, tenantKey);
lambdaQueryWrapper.eq(PaymentAgencyPO::getDeleteType, DeleteTypeEnum.NOT_DELETED.getValue());
lambdaQueryWrapper.orderByDesc(PaymentAgencyPO::getUpdateTime);
return lambdaQueryWrapper;
}
public static List<PaymentAgencyListDTO> buildPaymentAgencyDTOList(List<PaymentAgencyPO> paymentAgencyPOS, Long employeeId, String tenantKey) {
if (CollectionUtils.isEmpty(paymentAgencyPOS)) {
return Collections.emptyList();
}
return paymentAgencyPOS.stream().map(e -> PaymentAgencyListDTO.builder()
.id(e.getId())
.agencyName(e.getAgencyName())
.remarks(e.getRemarks()).build()
).collect(Collectors.toList());
}
public static PaymentAgencyFormDTO buildPaymentAgencyFormDTO(PaymentAgencyPO paymentAgencyPO, Long employeeId, String tenantKey) {
PaymentAgencyFormDTO paymentAgencyFormDTO = PaymentAgencyFormDTO.builder().build();
paymentAgencyFormDTO.setId(paymentAgencyPO.getId());
paymentAgencyFormDTO.setAgencyName(paymentAgencyPO.getAgencyName());
paymentAgencyFormDTO.setRemarks(paymentAgencyFormDTO.getRemarks());
return paymentAgencyFormDTO;
}
public static PaymentAgencyPO buildPaymentAgencyPO(PaymentAgencyFormDTO paymentAgencyFormDTO, Long employeeId, String tenantKey) {
return PaymentAgencyPO.builder()
.id(IdGenerator.generate())
.agencyName(paymentAgencyFormDTO.getAgencyName())
.createTime(LocalDateTime.now())
.creator(employeeId)
.tenantKey(tenantKey)
.deleteType(DeleteTypeEnum.NOT_DELETED.getValue())
.updateTime(LocalDateTime.now())
.remarks(paymentAgencyFormDTO.getRemarks())
.build();
}
}

View File

@ -0,0 +1,65 @@
package com.engine.salary.entity.agency.dto;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.weaver.common.component.form.item.WeaFormItemType;
import com.weaver.hrm.salary.annotation.SalaryForm;
import com.weaver.hrm.salary.annotation.SalaryFormItem;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
/**
* @Description:
* @Author: zhangheng
* @CreateDate: 2022/4/20 21:31
* @Version: v1.0
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ApiModel("代缴机构表单")
public class PaymentAgencyFormDTO {
@ApiModelProperty("主键id")
@JsonSerialize(using = ToStringSerializer.class)
private Long id;
@SalaryForm(
label = "名称",
labelId = 84756,
items = {
@SalaryFormItem(
itemType = WeaFormItemType.INPUT,
required = true,
maxLength = "50"
)
}
)
@NotBlank(message = "name is required")
@Size(max = 50, message = "the maximum lenth is 50")
@ApiModelProperty("名称")
private String agencyName;
@SalaryForm(
label = "备注",
labelId = 84961,
items = {
@SalaryFormItem(
itemType = WeaFormItemType.TEXTAREA,
maxLength = "50"
)
}
)
@NotBlank(message = "name is required")
@Size(max = 60, message = "the maximum lenth is 60")
@ApiModelProperty("名称")
private String remarks;
}

View File

@ -0,0 +1,61 @@
package com.engine.salary.entity.agency.dto;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.weaver.common.authority.format.Operates;
import com.weaver.common.authority.format.TableColumn;
import com.weaver.common.authority.format.TableOperates;
import com.weaver.common.authority.format.WeaFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @Description:
* @Author: zhangheng
* @CreateDate: 2022/4/20 20:41
* @Version: v1.0
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ApiModel("代缴机构列表")
@TableOperates(value = {
@Operates(index = 0, text = "编辑", labelId = 87058),
@Operates(index = 1, text = "删除", labelId = 87061)
})
public class PaymentAgencyListDTO {
/**
* 主键id
*/
@ApiModelProperty("主键id")
@JsonSerialize(using = ToStringSerializer.class)
private Long id;
/**
* 社保福利代缴机构
*/
@WeaFormat(
label = "社保福利代缴机构",
labelId = 112448,
tableColumn = @TableColumn(width = "200")
)
@ApiModelProperty("社保福利代缴机构")
private String agencyName;
/**
* 备注
*/
@WeaFormat(
label = "备注",
labelId = 84961,
tableColumn = @TableColumn(width = "300")
)
@ApiModelProperty("备注")
private String remarks;
}

View File

@ -0,0 +1,73 @@
package com.engine.salary.entity.agency.po;
import com.baomidou.mybatisplus.annotation.TableName;
import com.weaver.common.elog.annotation.ElogTransform;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.time.LocalDateTime;
/**
* @Description:
* @Author: zhangheng
* @CreateDate: 2022/4/20 20:24
* @Version: v1.0
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@TableName("hrsa_payment_agency")
@ElogTransform(name = "数据采集-累计专项附加扣除表")
public class PaymentAgencyPO {
/**
* 主键id
*/
@ElogTransform(name = "主键id")
private Long id;
/**
* 机构名称
*/
@ElogTransform(name = "机构名称")
private String agencyName;
/**
* 备注
*/
@ElogTransform(name = "备注")
private String remarks;
/**
* 创建时间
*/
@ElogTransform(name = "创建时间", ignore = true)
private LocalDateTime createTime;
/**
* 更新时间
*/
@ElogTransform(name = "更新时间", ignore = true)
private LocalDateTime updateTime;
/**
* 创建人
*/
@ElogTransform(name = "创建人", ignore = true)
private Long creator;
/**
* 是否已删除0未删除1已删除
*/
@ElogTransform(name = "是否已删除", ignore = true)
private Integer deleteType;
/**
* 租户ID
*/
@ElogTransform(name = "租户key", ignore = true)
private String tenantKey;
}

View File

@ -1,7 +1,13 @@
package com.engine.salary.entity.taxagent.bo;
import com.cloudstore.eccom.pc.table.WeaTable;
import com.cloudstore.eccom.pc.table.WeaTableColumn;
import com.cloudstore.eccom.pc.table.WeaTableOperate;
import com.cloudstore.eccom.pc.table.WeaTableOperates;
import com.engine.salary.constant.SalaryDefaultTenantConstant;
import com.engine.salary.entity.agency.po.PaymentAgencyPO;
import com.engine.salary.entity.datacollection.DataCollectionEmployee;
import com.engine.salary.entity.hrm.PositionInfo;
import com.engine.salary.entity.taxagent.dto.TaxAgentEmployeeDTO;
import com.engine.salary.entity.taxagent.dto.TaxAgentListDTO;
import com.engine.salary.entity.taxagent.dto.TaxAgentManageRangeListDTO;
@ -9,6 +15,7 @@ import com.engine.salary.entity.taxagent.dto.TaxAgentSubAdminListDTO;
import com.engine.salary.entity.taxagent.param.TaxAgentManageRangeSaveParam;
import com.engine.salary.entity.taxagent.param.TaxAgentSaveParam;
import com.engine.salary.entity.taxagent.param.TaxAgentSubAdminRangeSaveParam;
import com.engine.salary.entity.taxagent.po.TaxAgentAdminPO;
import com.engine.salary.entity.taxagent.po.TaxAgentManageRangePO;
import com.engine.salary.entity.taxagent.po.TaxAgentPO;
import com.engine.salary.entity.taxagent.po.TaxAgentSubAdminPO;
@ -19,18 +26,11 @@ import com.engine.salary.util.SalaryEntityUtil;
import com.engine.salary.util.SalaryI18nUtil;
import com.google.common.base.Joiner;
import com.google.common.collect.Lists;
import com.weaver.common.component.table.WeaTable;
import com.weaver.common.component.table.column.WeaTableColumn;
import com.weaver.common.component.table.operate.WeaTableOperate;
import com.weaver.common.component.table.permission.Permission;
import com.weaver.common.distribution.genid.IdGenerator;
import com.weaver.common.hrm.cache.HrmDepartmentComInfo;
import com.weaver.common.hrm.cache.HrmEmployeeComInfo;
import com.weaver.common.hrm.cache.HrmPositionComInfo;
import com.weaver.common.hrm.domain.employee.HrmStatus;
import com.weaver.hrm.salary.entity.agency.po.PaymentAgencyPO;
import com.weaver.hrm.salary.entity.taxagent.po.TaxAgentAdminPO;
import com.weaver.teams.domain.user.SimpleEmployee;
import dm.jdbc.util.IdGenerator;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
@ -76,71 +76,67 @@ public class TaxAgentBO {
*
* @param weaTable
* @param isOpenDevolution
* @param employeeId
* @param tenantKey
* @param size
*/
public static void buildTaxAgentTable(WeaTable<LinkedHashMap> weaTable, boolean isOpenDevolution, Long employeeId, String tenantKey, int size) {
public static void buildTaxAgentTable(WeaTable weaTable, boolean isOpenDevolution) {
// 表格表头
List<WeaTableColumn> columns = new ArrayList<>();
String name = SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 91558, "个税扣缴义务人名称");
String employeeRange = SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 86125, "人员范围");
String admins = SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 106259, "管理员");
String subAdmins = SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 106283, "分管理员");
String paymentAgency = SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 112448, "社保福利代缴机构");
String description = SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 84961, "备注");
String name = SalaryI18nUtil.getI18nLabel(91558, "个税扣缴义务人名称");
String employeeRange = SalaryI18nUtil.getI18nLabel(86125, "人员范围");
String admins = SalaryI18nUtil.getI18nLabel(106259, "管理员");
String subAdmins = SalaryI18nUtil.getI18nLabel(106283, "分管理员");
// String paymentAgency = SalaryI18nUtil.getI18nLabel(112448, "社保福利代缴机构");
String description = SalaryI18nUtil.getI18nLabel(84961, "备注");
if (isOpenDevolution) {
columns.add(new WeaTableColumn(name, "name", "20%"));
columns.add(new WeaTableColumn(employeeRange, "employeeRange", "20%"));
columns.add(new WeaTableColumn(admins, "admins", "20%"));
// columns.add(new WeaTableColumn(subAdmins, "subAdmins", "20%"));
columns.add(new WeaTableColumn(paymentAgency, "paymentAgency", "30%"));
// columns.add(new WeaTableColumn(paymentAgency, "paymentAgency", "30%"));
columns.add(new WeaTableColumn(description, "description", "20%"));
} else {
columns.add(new WeaTableColumn(name, "name", "40%"));
columns.add(new WeaTableColumn(employeeRange, "employeeRange", "20%"));
columns.add(new WeaTableColumn(paymentAgency, "paymentAgency", "30%"));
// columns.add(new WeaTableColumn(paymentAgency, "paymentAgency", "30%"));
columns.add(new WeaTableColumn(description, "description", "40%"));
}
weaTable.setColumns(columns);
List<WeaTableOperate> operates = weaTable.getOperates();
operates.add(new WeaTableOperate(SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 59943, "编辑"), 0));
operates.add(new WeaTableOperate(SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 59942, "删除"), 1));
WeaTableOperates operates = weaTable.getOperates();
operates.getOperate().add(new WeaTableOperate(SalaryI18nUtil.getI18nLabel(59943, "编辑"), null, "0"));
operates.getOperate().add(new WeaTableOperate(SalaryI18nUtil.getI18nLabel(59942, "删除"), null, "1"));
// if (isOpenDevolution) {
// operates.add(new WeaTableOperate(SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 106247, "管理范围及分权设置"), 2));
// operates.add(new WeaTableOperate(SalaryI18nUtil.getI18nLabel( 106247, "管理范围及分权设置"), 2));
// }
weaTable.setOperatesPermission(getDefaultOperatesPermission(operates.size(), size));
// weaTable.setOperatesPermission(getDefaultOperatesPermission(operates.getOperate().size(), size));
// weaTable.setCheckBoxPermission(getDefaultCheckBoxPermission(size));
//
// weaTable.setTableType(WeaTableTypeEnum.CHECKBOX);
}
private static List<List<Permission>> getDefaultOperatesPermission(int operateSize, int recordSize) {
List<List<Permission>> permissionList = Lists.newArrayList();
for (int i = 0; i < recordSize; i++) {
List<Permission> permissions = Lists.newArrayList();
for (int j = 0; j < operateSize; j++) {
permissions.add(new Permission(true, false));
}
permissionList.add(permissions);
}
return permissionList;
}
private static List<Permission> getDefaultCheckBoxPermission(int recordSize) {
List<Permission> permissionList = Lists.newArrayList();
for (int i = 0; i < recordSize; i++) {
permissionList.add(new Permission(true, false));
}
return permissionList;
}
// private static List<List<Permission>> getDefaultOperatesPermission(int operateSize, int recordSize) {
// List<List<Permission>> permissionList = Lists.newArrayList();
// for (int i = 0; i < recordSize; i++) {
// List<Permission> permissions = Lists.newArrayList();
// for (int j = 0; j < operateSize; j++) {
// permissions.add(new Permission(true, false));
// }
// permissionList.add(permissions);
// }
// return permissionList;
// }
//
// private static List<Permission> getDefaultCheckBoxPermission(int recordSize) {
// List<Permission> permissionList = Lists.newArrayList();
// for (int i = 0; i < recordSize; i++) {
// permissionList.add(new Permission(true, false));
// }
// return permissionList;
// }
/**
* 表数据转列表数据
*
* @param taxAgents
* @param tenantKey
* @return
*/
public static List<TaxAgentListDTO> convertToListDTO(Collection<TaxAgentPO> taxAgents) {
@ -148,12 +144,12 @@ public class TaxAgentBO {
return Collections.emptyList();
}
return taxAgents.stream()
.map(e -> TaxAgentListDTO.builder()
.id(e.getId())
.name(e.getName())
.description(e.getDescription())
.build())
.collect(Collectors.toList());
.map(e -> TaxAgentListDTO.builder()
.id(e.getId())
.name(e.getName())
.description(e.getDescription())
.build())
.collect(Collectors.toList());
}
/**
@ -173,7 +169,7 @@ public class TaxAgentBO {
* @return
*/
public static List<Map<String, Object>> convertToTableListDTO(List<TaxAgentPO> taxAgents, List<PaymentAgencyPO> paymentAgencyPOS, List<TaxAgentAdminPO> taxAgentAdmins,
List<SimpleEmployee> adminList,
List<DataCollectionEmployee> adminList,
String setLabel) {
return convertToTableListDTO(Boolean.TRUE, taxAgents, paymentAgencyPOS, taxAgentAdmins, adminList, setLabel);
}
@ -187,26 +183,26 @@ public class TaxAgentBO {
*/
public static List<Map<String, Object>> convertToTableListDTO(Boolean isDevolution, List<TaxAgentPO> taxAgents, List<PaymentAgencyPO> paymentAgencyPOS,
List<TaxAgentAdminPO> taxAgentAdmins,
List<SimpleEmployee> adminList, String setLabel) {
List<DataCollectionEmployee> adminList, String setLabel) {
if (CollectionUtils.isEmpty(taxAgents)) {
return Collections.emptyList();
}
return taxAgents.stream()
.map(e -> {
Map<String, Object> map = new LinkedHashMap<>();
map.put("id", e.getId());
map.put("name", e.getName());
map.put("employeeRange", setLabel);
if (isDevolution) {
List<Long> empIds = taxAgentAdmins.stream().filter(t -> t.getTaxAgentId().equals(e.getId())).map(TaxAgentAdminPO::getEmployeeId).collect(Collectors.toList());
List<String> admins = adminList.stream().filter(a -> empIds.contains(a.getId())).map(SimpleEmployee::getUsername).collect(Collectors.toList());
map.put("admins", CollectionUtils.isEmpty(admins) ? "" : Joiner.on(",").join(admins));
map.put("subAdmins", setLabel);
}
map.put("paymentAgency", buildPaymentAgency(e.getPaymentAgency(), paymentAgencyPOS));
map.put("description", e.getDescription());
return map;
}).collect(Collectors.toList());
.map(e -> {
Map<String, Object> map = new LinkedHashMap<>();
map.put("id", e.getId());
map.put("name", e.getName());
map.put("employeeRange", setLabel);
if (isDevolution) {
List<Long> empIds = taxAgentAdmins.stream().filter(t -> t.getTaxAgentId().equals(e.getId())).map(TaxAgentAdminPO::getEmployeeId).collect(Collectors.toList());
List<String> admins = adminList.stream().filter(a -> empIds.contains(a.getEmployeeId())).map(DataCollectionEmployee::getUsername).collect(Collectors.toList());
map.put("admins", CollectionUtils.isEmpty(admins) ? "" : Joiner.on(",").join((Iterable<?>) admins));
map.put("subAdmins", setLabel);
}
map.put("paymentAgency", buildPaymentAgency(e.getPaymentAgency(), paymentAgencyPOS));
map.put("description", e.getDescription());
return map;
}).collect(Collectors.toList());
}
public static List<Map<String, Object>> buildPaymentAgency(String originStr, List<PaymentAgencyPO> paymentAgencyPOS) {
@ -242,14 +238,14 @@ public class TaxAgentBO {
}
Date now = new Date();
return TaxAgentPO.builder()
.id(saveParam.getId())
.name(saveParam.getName())
.description(saveParam.getDescription())
.createTime(now)
.updateTime(now)
.creator(employeeId)
.tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY)
.build();
.id(saveParam.getId())
.name(saveParam.getName())
.description(saveParam.getDescription())
.createTime(now)
.updateTime(now)
.creator(employeeId)
.tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY)
.build();
}
/**
@ -265,16 +261,16 @@ public class TaxAgentBO {
return Collections.emptyList();
}
return list.stream()
.map(e -> {
Optional<String> optionalUsername = subAdminList.stream().filter(a -> e.getEmployeeId().equals(a.getEmployeeId())).map(DataCollectionEmployee::getUsername).findFirst();
return TaxAgentSubAdminListDTO.builder()
.id(e.getId())
.subAdmin(optionalUsername.isPresent() ? optionalUsername.get() : "")
.range(range)
.description(e.getRemark())
.build();
})
.collect(Collectors.toList());
.map(e -> {
Optional<String> optionalUsername = subAdminList.stream().filter(a -> e.getEmployeeId().equals(a.getEmployeeId())).map(DataCollectionEmployee::getUsername).findFirst();
return TaxAgentSubAdminListDTO.builder()
.id(e.getId())
.subAdmin(optionalUsername.isPresent() ? optionalUsername.get() : "")
.range(range)
.description(e.getRemark())
.build();
})
.collect(Collectors.toList());
}
/**
@ -288,13 +284,13 @@ public class TaxAgentBO {
* @param hrmStatusList
* @return
*/
public static List<TaxAgentManageRangeListDTO> convert2ListDTO(List<TaxAgentManageRangePO> taxAgentManageRanges, List<HrmEmployeeComInfo> employeeComInfos,
public static List<TaxAgentManageRangeListDTO> convert2ListDTO(List<TaxAgentManageRangePO> taxAgentManageRanges, List<DataCollectionEmployee> employeeComInfos,
List<HrmDepartmentComInfo> departmentComInfos, List<HrmDepartmentComInfo> subDepartmentComInfos,
List<HrmPositionComInfo> positionComInfos, List<HrmStatus> hrmStatusList) {
List<PositionInfo> positionComInfos, List<HrmStatus> hrmStatusList) {
if (CollectionUtils.isEmpty(taxAgentManageRanges)) {
return Collections.emptyList();
}
Map<Long, String> employeeComInfoMap = SalaryEntityUtil.convert2Map(employeeComInfos, HrmEmployeeComInfo::getId, HrmEmployeeComInfo::getUsername);
Map<Long, String> employeeComInfoMap = SalaryEntityUtil.convert2Map(employeeComInfos, DataCollectionEmployee::getEmployeeId, DataCollectionEmployee::getUsername);
Map<Long, String> departmentComInfoMap = SalaryEntityUtil.convert2Map(departmentComInfos, HrmDepartmentComInfo::getId, HrmDepartmentComInfo::getName);
Map<Long, String> subDepartmentComInfoMap = SalaryEntityUtil.convert2Map(subDepartmentComInfos, HrmDepartmentComInfo::getId, HrmDepartmentComInfo::getName);
Map<Long, String> positionComInfoMap = SalaryEntityUtil.convert2Map(positionComInfos, HrmPositionComInfo::getId, HrmPositionComInfo::getName);
@ -302,20 +298,20 @@ public class TaxAgentBO {
Map<String, String> hrmStatusNameMap = SalaryEntityUtil.convert2Map(hrmStatusList, hrmStatus -> String.valueOf(hrmStatus.getCodeId()), HrmStatus::getName);
return taxAgentManageRanges.stream()
.map(taxAgentManageRange -> {
TargetTypeEnum targetTypeEnum = TargetTypeEnum.parseByValue(taxAgentManageRange.getTargetType());
return TaxAgentManageRangeListDTO.builder()
.id(taxAgentManageRange.getId())
.targetType(targetTypeEnum)
.targetTypeName(Optional.ofNullable(targetTypeEnum)
.map(e -> SalaryI18nUtil.getI18nLabel(e.getLabelId(), e.getDefaultLabel()))
.orElse(StringUtils.EMPTY))
.targetId(taxAgentManageRange.getTargetId())
.targetName(buildTargetName(taxAgentManageRange, employeeComInfoMap, departmentComInfoMap, subDepartmentComInfoMap, positionComInfoMap))
.employeeStatus(buildEmployeeStatus(hrmStatusNameMap, taxAgentManageRange.getEmployeeStatus()))
.build();
})
.collect(Collectors.toList());
.map(taxAgentManageRange -> {
TargetTypeEnum targetTypeEnum = TargetTypeEnum.parseByValue(taxAgentManageRange.getTargetType());
return TaxAgentManageRangeListDTO.builder()
.id(taxAgentManageRange.getId())
.targetType(targetTypeEnum)
.targetTypeName(Optional.ofNullable(targetTypeEnum)
.map(e -> SalaryI18nUtil.getI18nLabel(e.getLabelId(), e.getDefaultLabel()))
.orElse(StringUtils.EMPTY))
.targetId(taxAgentManageRange.getTargetId())
.targetName(buildTargetName(taxAgentManageRange, employeeComInfoMap, departmentComInfoMap, subDepartmentComInfoMap, positionComInfoMap))
.employeeStatus(buildEmployeeStatus(hrmStatusNameMap, taxAgentManageRange.getEmployeeStatus()))
.build();
})
.collect(Collectors.toList());
}
private static String buildEmployeeStatus(Map<String, String> hrmStatusNameMap, String employeeStatus) {
@ -364,7 +360,7 @@ public class TaxAgentBO {
}
public static Result handleSubAdminRange(List<TaxAgentManageRangePO> taxAgentManageRanges, TaxAgentManageRangeSaveParam saveParam, Long taxAgentId, Long subAdminId,
Long employeeId, String tenantKey) {
Long employeeId, String tenantKey) {
return handleManageRange(taxAgentManageRanges, saveParam, TaxAgentRangeTypeEnum.SUBADMIN, taxAgentId, subAdminId, employeeId, tenantKey);
}
@ -380,17 +376,17 @@ public class TaxAgentBO {
* @return
*/
private static Result handleManageRange(List<TaxAgentManageRangePO> taxAgentManageRanges, TaxAgentManageRangeSaveParam saveParam,
TaxAgentRangeTypeEnum rangeTypeEnum, Long taxAgentId, Long subAdminId, Long employeeId, String tenantKey) {
TaxAgentRangeTypeEnum rangeTypeEnum, Long taxAgentId, Long subAdminId, Long employeeId, String tenantKey) {
Date now = new Date();
Result handleResult = Result.builder()
.needInsertTaxAgentManageRanges(Lists.newArrayList())
.needUpdateTaxAgentManageRanges(Lists.newArrayList())
.build();
.needInsertTaxAgentManageRanges(Lists.newArrayList())
.needUpdateTaxAgentManageRanges(Lists.newArrayList())
.build();
if (CollectionUtils.isEmpty(saveParam.getTargetParams())) {
return handleResult;
}
Map<String, TaxAgentManageRangePO> taxAgentManageRangeMap = SalaryEntityUtil.convert2Map(taxAgentManageRanges,
e -> e.getIncludeType() + "-" + e.getTargetType() + "-" + e.getTargetId() + "-" + e.getRangeType());
e -> e.getIncludeType() + "-" + e.getTargetType() + "-" + e.getTargetId() + "-" + e.getRangeType());
for (TaxAgentSubAdminRangeSaveParam.TaxAgentSubAdminRangeTargetParam targetParam : saveParam.getTargetParams()) {
String key = saveParam.getIncludeType() + "-" + targetParam.getTargetType().getValue() + "-" + targetParam.getTargetId() + "-" + rangeTypeEnum.getValue();
if (taxAgentManageRangeMap.containsKey(key)) {
@ -401,20 +397,20 @@ public class TaxAgentBO {
continue;
}
TaxAgentManageRangePO taxAgentManageRange = TaxAgentManageRangePO.builder()
.id(IdGenerator.generate())
.taxAgentId(taxAgentId)
.taxAgentSubAdminId(subAdminId)
.rangeType(rangeTypeEnum.getValue())
.targetType(targetParam.getTargetType().getValue())
.targetId(targetParam.getTargetId())
.employeeStatus(JsonUtil.toJsonString(saveParam.getEmployeeStatus()))
.includeType(saveParam.getIncludeType())
.creator(employeeId)
.createTime(now)
.updateTime(now)
.tenantKey(tenantKey)
.deleteType(0)
.build();
.id(IdGenerator.generate())
.taxAgentId(taxAgentId)
.taxAgentSubAdminId(subAdminId)
.rangeType(rangeTypeEnum.getValue())
.targetType(targetParam.getTargetType().getValue())
.targetId(targetParam.getTargetId())
.employeeStatus(JsonUtil.toJsonString(saveParam.getEmployeeStatus()))
.includeType(saveParam.getIncludeType())
.creator(employeeId)
.createTime(now)
.updateTime(now)
.tenantKey(tenantKey)
.deleteType(0)
.build();
handleResult.getNeedInsertTaxAgentManageRanges().add(taxAgentManageRange);
}
return handleResult;

View File

@ -94,4 +94,5 @@ public class TaxAgentManageRangePO {
private Collection<Long> taxAgentIds;
private Collection<Long> ids;
}

View File

@ -3,6 +3,7 @@ package com.engine.salary.mapper.taxagent;
import com.engine.salary.entity.taxagent.po.TaxAgentManageRangePO;
import org.apache.ibatis.annotations.Mapper;
import java.util.Collection;
import java.util.List;
@Mapper
@ -64,4 +65,5 @@ public interface TaxAgentManageRangeMapper {
*/
int delete(TaxAgentManageRangePO taxAgentManageRange);
void deleteByIds(Collection<Long> ids);
}

View File

@ -281,5 +281,16 @@
WHERE id = #{id} AND delete_type = 0
</delete>
<delete id="deleteByIds">
UPDATE hrsa_tax_agent_manage_range
SET delete_type=1
WHERE
id IN
<foreach collection="ids" open="(" item="id" separator="," close=")">
#{id}
</foreach>
AND delete_type = 0
</delete>
</mapper>

View File

@ -1,9 +1,14 @@
package com.engine.salary.service;
import com.engine.salary.entity.taxagent.dto.TaxAgentManageRangeEmployeeDTO;
import com.engine.salary.entity.taxagent.dto.TaxAgentManageRangeListDTO;
import com.engine.salary.entity.taxagent.param.TaxAgentRangeQueryParam;
import com.engine.salary.entity.taxagent.param.TaxAgentRangeSaveParam;
import com.engine.salary.entity.taxagent.param.TaxAgentSubAdminRangeQueryParam;
import com.engine.salary.entity.taxagent.param.TaxAgentSubAdminRangeSaveParam;
import com.engine.salary.entity.taxagent.po.TaxAgentManageRangePO;
import com.engine.salary.enums.salarysob.SalaryEmployeeStatusEnum;
import com.engine.salary.util.page.PageInfo;
import java.util.Collection;
import java.util.List;
@ -50,7 +55,7 @@ public interface TaxAgentManageRangeService {
* @param taxAgentSubAdminIds
* @return
*/
// List<TaxAgentManageRangeEmployeeDTO> listSalaryEmployeeBySubAdminIds(SalaryEmployeeStatusEnum employeeStatus, List<Long> taxAgentSubAdminIds);
List<TaxAgentManageRangeEmployeeDTO> listSalaryEmployeeBySubAdminIds(SalaryEmployeeStatusEnum employeeStatus, List<Long> taxAgentSubAdminIds);
/**
* 根据查询条件查询分管理员的人员范围
@ -59,7 +64,7 @@ public interface TaxAgentManageRangeService {
* @param includeType 0-从范围中排除/1-关联人员范围
* @return
*/
// Page<TaxAgentManageRangeListDTO> listPageByParamAndIncludeType(TaxAgentSubAdminRangeQueryParam queryParam, Integer includeType);
PageInfo<TaxAgentManageRangeListDTO> listPageByParamAndIncludeType(TaxAgentSubAdminRangeQueryParam queryParam, Integer includeType);
/**
* 根据查询条件查询个税扣缴义务人的人员范围
@ -68,7 +73,7 @@ public interface TaxAgentManageRangeService {
* @param includeType 0-从范围中排除/1-关联人员范围
* @return
*/
// PageInfo<TaxAgentManageRangeListDTO> listPageByParamAndIncludeType(TaxAgentRangeQueryParam queryParam, Integer includeType);
PageInfo<TaxAgentManageRangeListDTO> listPageByParamAndIncludeType(TaxAgentRangeQueryParam queryParam, Integer includeType);
/**
* 根据分管理员id集合查询范围列表
@ -76,7 +81,7 @@ public interface TaxAgentManageRangeService {
* @param taxAgentSubAdminIds
* @return
*/
// List<TaxAgentManageRangePO> listBySubAdminIds(Collection<Long> taxAgentSubAdminIds);
List<TaxAgentManageRangePO> listBySubAdminIds(Collection<Long> taxAgentSubAdminIds);
/**
* 保存

View File

@ -134,10 +134,9 @@ public interface TaxAgentV2Service {
* 更新代缴机构
*
* @param taxAgentPO
* @param employeeId
* @return
*/
String paymentAgencyUpdate(TaxAgentPO taxAgentPO, Long employeeId);
String paymentAgencyUpdate(TaxAgentPO taxAgentPO);
/**
* 编辑个税扣缴义务人

View File

@ -5,29 +5,30 @@ import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapp
import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper;
import com.engine.core.impl.Service;
import com.engine.salary.entity.datacollection.DataCollectionEmployee;
import com.engine.salary.entity.taxagent.bo.TaxAgentBO;
import com.engine.salary.entity.taxagent.dto.TaxAgentManageRangeEmployeeDTO;
import com.engine.salary.entity.taxagent.dto.TaxAgentManageRangeListDTO;
import com.engine.salary.entity.taxagent.param.TaxAgentManageRangeQueryParam;
import com.engine.salary.entity.taxagent.param.TaxAgentRangeQueryParam;
import com.engine.salary.entity.taxagent.param.TaxAgentRangeSaveParam;
import com.engine.salary.entity.taxagent.param.*;
import com.engine.salary.entity.taxagent.po.TaxAgentManageRangePO;
import com.engine.salary.entity.taxagent.po.TaxAgentPO;
import com.engine.salary.entity.taxagent.po.TaxAgentSubAdminPO;
import com.engine.salary.enums.SalaryJobFlagEnum;
import com.engine.salary.enums.salarysob.SalaryEmployeeStatusEnum;
import com.engine.salary.enums.salarysob.TargetTypeEnum;
import com.engine.salary.enums.taxagent.TaxAgentRangeTypeEnum;
import com.engine.salary.exception.SalaryRunTimeException;
import com.engine.salary.mapper.datacollection.EmployMapper;
import com.engine.salary.mapper.taxagent.TaxAgentManageRangeMapper;
import com.engine.salary.service.TaxAgentEmpService;
import com.engine.salary.service.TaxAgentManageRangeService;
import com.engine.salary.service.TaxAgentService;
import com.engine.salary.service.*;
import com.engine.salary.util.JsonUtil;
import com.engine.salary.util.SalaryEntityUtil;
import com.engine.salary.util.SalaryI18nUtil;
import com.engine.salary.util.page.PageInfo;
import com.engine.salary.util.page.PageUtil;
import com.google.common.collect.Lists;
import com.weaver.common.async.bean.AsyncBean;
import com.weaver.common.async.consumer.anno.method.AsyncListener;
import com.weaver.common.cache.tablecache.impl.ComInfoCache;
import com.weaver.common.component.table.page.Page;
import com.weaver.common.hrm.cache.HrmDepartmentComInfo;
import com.weaver.common.hrm.cache.HrmEmployeeComInfo;
import com.weaver.common.hrm.cache.HrmPositionComInfo;
@ -36,14 +37,8 @@ import com.weaver.common.hrm.domain.queue.HrmCommonQueue;
import com.weaver.common.hrm.service.employee.HrmCommonHrmStatusService;
import com.weaver.datasecurity.interceptor.DSTenantKeyThreadVar;
import com.weaver.hrm.salary.common.SalaryEmployee;
import com.weaver.hrm.salary.entity.taxagent.bo.TaxAgentBO;
import com.weaver.hrm.salary.entity.taxagent.param.*;
import com.weaver.hrm.salary.entity.taxagent.po.TaxAgentPO;
import com.weaver.hrm.salary.entity.taxagent.po.TaxAgentSubAdminPO;
import com.weaver.hrm.salary.exception.SalaryRunTimeException;
import com.weaver.hrm.salary.service.*;
import com.weaver.hrm.salary.util.SalaryI18nUtil;
import com.weaver.hrm.salary.util.SalaryPageUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
@ -67,7 +62,7 @@ public class TaxAgentManageRangeServiceImpl extends Service implements TaxAgentM
private TaxAgentManageRangeMapper taxAgentManageRangeMapper;
private TaxAgentService taxAgentService;
private TaxAgentV2Service taxAgentService;
private TaxAgentSubAdminService taxAgentSubAdminService;
@ -101,32 +96,33 @@ public class TaxAgentManageRangeServiceImpl extends Service implements TaxAgentM
return convertTaxAgentEmployee(employeeStatus, taxAgentIds, allTaxAgentManageRanges);
}
// @Override
// public List<TaxAgentManageRangePO> listBySubAdminIds(Collection<Long> taxAgentSubAdminIds) {
// if (CollectionUtils.isEmpty(taxAgentSubAdminIds)) {
// return Lists.newArrayList();
// }
// return new LambdaQueryChainWrapper<>(taxAgentManageRangeMapper)
// .eq(TaxAgentManageRangePO::getTenantKey, tenantKey)
// .eq(TaxAgentManageRangePO::getDeleteType, 0)
// .eq(TaxAgentManageRangePO::getRangeType, TaxAgentRangeTypeEnum.SUBADMIN.getValue())
// .in(TaxAgentManageRangePO::getTaxAgentSubAdminId, taxAgentSubAdminIds)
// .orderByDesc(TaxAgentManageRangePO::getId)
// .list();
// }
@Override
public List<TaxAgentManageRangePO> listBySubAdminIds(Collection<Long> taxAgentSubAdminIds) {
if (CollectionUtils.isEmpty(taxAgentSubAdminIds)) {
return Lists.newArrayList();
}
taxAgentManageRangeMapper.listSome(TaxAgentManageRangePO.builder().rangeType(TaxAgentRangeTypeEnum.SUBADMIN.getValue()).build())
return new LambdaQueryChainWrapper<>(taxAgentManageRangeMapper)
.eq(TaxAgentManageRangePO::getTenantKey)
.eq(TaxAgentManageRangePO::getDeleteType, 0)
.eq(TaxAgentManageRangePO::getRangeType, TaxAgentRangeTypeEnum.SUBADMIN.getValue())
.in(TaxAgentManageRangePO::getTaxAgentSubAdminId, taxAgentSubAdminIds)
.orderByDesc(TaxAgentManageRangePO::getId)
.list();
}
// @Override
// public List<TaxAgentManageRangeEmployeeDTO> listSalaryEmployeeBySubAdminIds(List<Long> taxAgentIds) {
// return listSalaryEmployeeBySubAdminIds(null, taxAgentIds);
// }
@Override
public List<TaxAgentManageRangeEmployeeDTO> listSalaryEmployeeBySubAdminIds(List<Long> taxAgentIds) {
return listSalaryEmployeeBySubAdminIds(null, taxAgentIds);
}
// @Override
// public List<TaxAgentManageRangeEmployeeDTO> listSalaryEmployeeBySubAdminIds(SalaryEmployeeStatusEnum employeeStatus, List<Long> taxAgentSubAdminIds) {
// List<TaxAgentManageRangePO> allTaxAgentManageRanges = this.listBySubAdminIds(taxAgentSubAdminIds);
// List<Long> taxAgentIds = allTaxAgentManageRanges.stream().map(TaxAgentManageRangePO::getTaxAgentId).distinct().collect(Collectors.toList());
//
// return convertTaxAgentEmployee(employeeStatus, taxAgentIds, allTaxAgentManageRanges);
// }
@Override
public List<TaxAgentManageRangeEmployeeDTO> listSalaryEmployeeBySubAdminIds(SalaryEmployeeStatusEnum employeeStatus, List<Long> taxAgentSubAdminIds) {
List<TaxAgentManageRangePO> allTaxAgentManageRanges = this.listBySubAdminIds(taxAgentSubAdminIds);
List<Long> taxAgentIds = allTaxAgentManageRanges.stream().map(TaxAgentManageRangePO::getTaxAgentId).distinct().collect(Collectors.toList());
return convertTaxAgentEmployee(employeeStatus, taxAgentIds, allTaxAgentManageRanges);
}
private List<TaxAgentManageRangeEmployeeDTO> convertTaxAgentEmployee(SalaryEmployeeStatusEnum employeeStatus, List<Long> taxAgentIds, List<TaxAgentManageRangePO> allTaxAgentManageRanges) {
return taxAgentIds.stream().distinct().map(e -> {
@ -159,7 +155,7 @@ public class TaxAgentManageRangeServiceImpl extends Service implements TaxAgentM
* @return
*/
private List<DataCollectionEmployee> getManageRangeSalaryEmployees(SalaryEmployeeStatusEnum employeeStatus, Long taxAgentId,
List<TaxAgentManageRangePO> allTaxAgentManageRanges) {
List<TaxAgentManageRangePO> allTaxAgentManageRanges) {
List<TaxAgentManageRangePO> includeAllTaxAgentManageRanges = allTaxAgentManageRanges.stream().filter(f -> f.getIncludeType().equals(NumberUtils.INTEGER_ONE)).collect(Collectors.toList());
if (CollectionUtils.isEmpty(includeAllTaxAgentManageRanges)) {
return Collections.emptyList();
@ -263,7 +259,7 @@ public class TaxAgentManageRangeServiceImpl extends Service implements TaxAgentM
// private List<TaxAgentManageRangePO> listBySubAdminIdAndIncludeType(Long subAdminId, Integer includeType) {
//
// return new LambdaQueryChainWrapper<>(taxAgentManageRangeMapper)
// .eq(TaxAgentManageRangePO::getTenantKey, tenantKey)
// .eq(TaxAgentManageRangePO::getTenantKey)
// .eq(TaxAgentManageRangePO::getDeleteType, 0)
// .eq(TaxAgentManageRangePO::getTaxAgentSubAdminId, subAdminId)
// .eq(TaxAgentManageRangePO::getRangeType, TaxAgentRangeTypeEnum.SUBADMIN.getValue())
@ -324,9 +320,9 @@ public class TaxAgentManageRangeServiceImpl extends Service implements TaxAgentM
.collect(Collectors.toList());
List<HrmPositionComInfo> positionComInfos = comInfoCache.getCacheList(HrmPositionComInfo.class, positionIds);
// 分页参数
Page<TaxAgentManageRangeListDTO> dtoPage = SalaryPageUtil.buildPage(queryParam.getCurrent(), queryParam.getPageSize());
PageInfo<TaxAgentManageRangeListDTO> dtoPage = PageUtil.buildPage(queryParam.getCurrent(), queryParam.getPageSize(), TaxAgentManageRangeListDTO.class);
// 查询人员状态
List<HrmStatus> hrmStatusList = hrmCommonHrmStatusService.list(tenantKey);
List<HrmStatus> hrmStatusList = hrmCommonHrmStatusService.list();
// 薪资账套的人员范围po转换成列表dto
List<TaxAgentManageRangeListDTO> taxAgentManageRangeList = TaxAgentBO.convert2ListDTO(taxAgentManageRanges, employeeComInfos, departmentComInfos, subDepartmentComInfos, positionComInfos, hrmStatusList);
// 根据对象名称过滤
@ -337,7 +333,7 @@ public class TaxAgentManageRangeServiceImpl extends Service implements TaxAgentM
}
// 填充总数和当页数据
dtoPage.setTotal(taxAgentManageRangeList.size());
dtoPage.setRecords(SalaryPageUtil.subList((int) dtoPage.getCurrent(), (int) dtoPage.getSize(), taxAgentManageRangeList));
dtoPage.setList(PageUtil.subList(dtoPage.getPageNum(), dtoPage.getSize(), taxAgentManageRangeList));
return dtoPage;
}
@ -346,22 +342,20 @@ public class TaxAgentManageRangeServiceImpl extends Service implements TaxAgentM
*
* @param saveParam 保存参数
* @param employeeId 人员id
* @param tenantKey 租户key
*/
@Override
@Transactional(rollbackFor = Exception.class)
public void save(TaxAgentRangeSaveParam saveParam, Long employeeId, String tenantKey) {
public void save(TaxAgentRangeSaveParam saveParam, Long employeeId) {
// 查询薪资账套
TaxAgentPO taxAgent = taxAgentService.getById(saveParam.getTaxAgentId(), tenantKey);
TaxAgentPO taxAgent = taxAgentService.getById(saveParam.getTaxAgentId());
if (Objects.isNull(taxAgent)) {
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 108605, "参数错误,个税扣缴义务人不存在或者已被删除"));
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(108605, "参数错误,个税扣缴义务人不存在或者已被删除"));
}
// 查询已有的管理范围
List<TaxAgentManageRangePO> taxAgentManageAllRanges = listByTaxAgentId(saveParam.getTaxAgentId(), tenantKey);
List<TaxAgentManageRangePO> taxAgentManageAllRanges = listByTaxAgentId(saveParam.getTaxAgentId());
List<TaxAgentManageRangePO> taxAgentManageRanges = taxAgentManageAllRanges.stream().filter(f -> f.getIncludeType().equals(saveParam.getIncludeType())).collect(Collectors.toList());
// 处理一下本次的保存参数如果原来添加过对应的人员/部门/岗位那么本次不需要新增只需要更新
TaxAgentBO.Result result = TaxAgentBO.handleTaxAgentRange(taxAgentManageRanges, saveParam, taxAgent.getId(), employeeId, tenantKey);
TaxAgentBO.Result result = TaxAgentBO.handleTaxAgentRange(taxAgentManageRanges, saveParam, taxAgent.getId(), employeeId);
/** 检查当前个税扣缴义务人的所有人员范围与所有分管理员的管理范围===========================start */
List<TaxAgentManageRangePO> allRanges = Lists.newArrayList(taxAgentManageAllRanges);
@ -371,17 +365,17 @@ public class TaxAgentManageRangeServiceImpl extends Service implements TaxAgentM
allRanges = allRanges.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(
Comparator.comparing(f -> f.getTaxAgentId() + "." + f.getRangeType() + "." + f.getTargetType() + "." + f.getTargetId() + "." + f.getEmployeeStatus() + "." + f.getIncludeType()))
), ArrayList::new));
List<SalaryEmployee> allSalaryEmployees = this.getManageRangeSalaryEmployees(null, saveParam.getTaxAgentId(), allRanges, tenantKey);
List<DataCollectionEmployee> allSalaryEmployees = this.getManageRangeSalaryEmployees(null, saveParam.getTaxAgentId(), allRanges);
// 如果是排除是否会对分管理范围产生影响
List<TaxAgentManageRangePO> allSubAdminRanges = listSunAdminRangeByTaxAgentId(saveParam.getTaxAgentId(), tenantKey);
List<TaxAgentManageRangePO> allSubAdminRanges = listSunAdminRangeByTaxAgentId(saveParam.getTaxAgentId());
if (saveParam.getIncludeType().equals(NumberUtils.INTEGER_ZERO)) {
List<SalaryEmployee> allSubAdminSalaryEmployees = this.getManageRangeSalaryEmployees(null, saveParam.getTaxAgentId(), allSubAdminRanges, tenantKey);
List<DataCollectionEmployee> allSubAdminSalaryEmployees = this.getManageRangeSalaryEmployees(null, saveParam.getTaxAgentId(), allSubAdminRanges);
List<Long> allSalaryEmployeeIds = allSalaryEmployees.stream().map(SalaryEmployee::getEmployeeId).collect(Collectors.toList());
List<Long> allSalaryEmployeeIds = allSalaryEmployees.stream().map(DataCollectionEmployee::getEmployeeId).collect(Collectors.toList());
allSubAdminSalaryEmployees.removeIf(a -> allSalaryEmployeeIds.contains(a.getEmployeeId()));
if (CollectionUtils.isNotEmpty(allSubAdminSalaryEmployees)) {
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 110122, "分管理员包含该范围,不能删除"));
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(110122, "分管理员包含该范围,不能删除"));
}
}
/** 检查当前个税扣缴义务人的所有人员范围与所有分管理员的管理范围===========================end */
@ -396,10 +390,8 @@ public class TaxAgentManageRangeServiceImpl extends Service implements TaxAgentM
/** 同步本地人员范围的关联人员=========================== */
taskExecutor.execute(() -> {
try {
DSTenantKeyThreadVar.tenantKey.set(tenantKey);
syncLocalEmp(saveParam.getTaxAgentId(), allSalaryEmployees, allSubAdminRanges, employeeId, tenantKey);
syncLocalEmp(saveParam.getTaxAgentId(), allSalaryEmployees, allSubAdminRanges, employeeId);
} finally {
DSTenantKeyThreadVar.tenantKey.remove();
}
});
@ -410,45 +402,32 @@ public class TaxAgentManageRangeServiceImpl extends Service implements TaxAgentM
* 获取个税口角义务人的管理范围
*
* @param taxAgentId
* @param tenantKey
* @return
*/
private List<TaxAgentManageRangePO> listByTaxAgentId(Long taxAgentId, String tenantKey) {
return new LambdaQueryChainWrapper<>(taxAgentManageRangeMapper)
.eq(TaxAgentManageRangePO::getTenantKey, tenantKey)
.eq(TaxAgentManageRangePO::getDeleteType, 0)
.eq(TaxAgentManageRangePO::getTaxAgentId, taxAgentId)
.eq(TaxAgentManageRangePO::getRangeType, TaxAgentRangeTypeEnum.TAXAGENT.getValue())
.orderByDesc(TaxAgentManageRangePO::getId)
.list();
private List<TaxAgentManageRangePO> listByTaxAgentId(Long taxAgentId) {
return taxAgentManageRangeMapper.listSome(TaxAgentManageRangePO.builder().taxAgentId(taxAgentId).rangeType(TaxAgentRangeTypeEnum.TAXAGENT.getValue()).build());
}
private List<TaxAgentManageRangePO> listSunAdminRangeByTaxAgentId(Long taxAgentId, String tenantKey) {
return new LambdaQueryChainWrapper<>(taxAgentManageRangeMapper)
.eq(TaxAgentManageRangePO::getTenantKey, tenantKey)
.eq(TaxAgentManageRangePO::getDeleteType, 0)
.eq(TaxAgentManageRangePO::getTaxAgentId, taxAgentId)
.eq(TaxAgentManageRangePO::getRangeType, TaxAgentRangeTypeEnum.SUBADMIN.getValue())
.orderByDesc(TaxAgentManageRangePO::getId)
.list();
private List<TaxAgentManageRangePO> listSunAdminRangeByTaxAgentId(Long taxAgentId) {
return taxAgentManageRangeMapper.listSome(TaxAgentManageRangePO.builder().taxAgentId(taxAgentId).rangeType(TaxAgentRangeTypeEnum.SUBADMIN.getValue()).build());
}
@Override
@Transactional(rollbackFor = Exception.class)
public void save4SubAdmin(TaxAgentSubAdminRangeSaveParam saveParam, Long employeeId, String tenantKey) {
public void save4SubAdmin(TaxAgentSubAdminRangeSaveParam saveParam, Long employeeId) {
// 查询薪资账套
TaxAgentSubAdminPO taxAgentSubAdmin = taxAgentSubAdminService.getById(saveParam.getSubAdminId(), tenantKey);
TaxAgentSubAdminPO taxAgentSubAdmin = taxAgentSubAdminService.getById(saveParam.getSubAdminId());
if (Objects.isNull(taxAgentSubAdmin)) {
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 106687, "参数错误,分管理员不存在或者已被删除"));
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(106687, "参数错误,分管理员不存在或者已被删除"));
}
// 查询已有的管理范围
List<TaxAgentManageRangePO> taxAgentManageAllRanges = listBySubAdminId(saveParam.getSubAdminId(), tenantKey);
List<TaxAgentManageRangePO> taxAgentManageAllRanges = listBySubAdminId(saveParam.getSubAdminId());
List<TaxAgentManageRangePO> taxAgentManageRanges = taxAgentManageAllRanges.stream().filter(f -> f.getIncludeType().equals(saveParam.getIncludeType())).collect(Collectors.toList());
// 处理一下本次的保存参数如果原来添加过对应的人员/部门/岗位那么本次不需要新增只需要更新
TaxAgentBO.Result result = TaxAgentBO.handleSubAdminRange(taxAgentManageRanges, saveParam, taxAgentSubAdmin.getTaxAgentId(), taxAgentSubAdmin.getId(), employeeId, tenantKey);
TaxAgentBO.Result result = TaxAgentBO.handleSubAdminRange(taxAgentManageRanges, saveParam, taxAgentSubAdmin.getTaxAgentId(), taxAgentSubAdmin.getId(), employeeId);
// 当前库中所有分管理员的管理范围
List<TaxAgentManageRangePO> allSubAdminRangesExist = listSunAdminRangeByTaxAgentId(taxAgentSubAdmin.getTaxAgentId(), tenantKey);
List<TaxAgentManageRangePO> allSubAdminRangesExist = listSunAdminRangeByTaxAgentId(taxAgentSubAdmin.getTaxAgentId());
/** 检查当前分管理员的范围与其他分管理员人员范围===========================start */
// 当前分管理员的范围
List<TaxAgentManageRangePO> allSubAdminRangesCuttent = Lists.newArrayList(taxAgentManageAllRanges);
@ -458,13 +437,13 @@ public class TaxAgentManageRangeServiceImpl extends Service implements TaxAgentM
allSubAdminRangesCuttent.addAll(result.getNeedUpdateTaxAgentManageRanges());
// 当前分管理员的所有人员
List<SalaryEmployee> currentSubAdminSalaryEmployees = this.getManageRangeSalaryEmployees(null, taxAgentSubAdmin.getTaxAgentId(), allSubAdminRangesCuttent, tenantKey);
List<SalaryEmployee> currentSubAdminSalaryEmployees = this.getManageRangeSalaryEmployees(null, taxAgentSubAdmin.getTaxAgentId(), allSubAdminRangesCuttent);
// 其他分管理员的所有人员
List<SalaryEmployee> otherSubAdminSalaryEmployees = this.getManageRangeSalaryEmployees(null, taxAgentSubAdmin.getTaxAgentId(), otherSubAdminRangesExist, tenantKey);
List<SalaryEmployee> otherSubAdminSalaryEmployees = this.getManageRangeSalaryEmployees(null, taxAgentSubAdmin.getTaxAgentId(), otherSubAdminRangesExist);
for (SalaryEmployee se : currentSubAdminSalaryEmployees) {
Optional<SalaryEmployee> optionalSe = otherSubAdminSalaryEmployees.stream().filter(f -> f.getEmployeeId().equals(se.getEmployeeId())).findFirst();
if (optionalSe.isPresent()) {
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 110149, "不可包含其他分管理员的人员"));
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(110149, "不可包含其他分管理员的人员"));
}
}
/** 检查当前分管理员的范围与其他分管理员人员范围===========================end */
@ -479,14 +458,14 @@ public class TaxAgentManageRangeServiceImpl extends Service implements TaxAgentM
Comparator.comparing(f -> f.getTaxAgentSubAdminId() + "." + f.getRangeType() + "." + f.getTargetType() + "." + f.getTargetId() + "." + f.getEmployeeStatus() + "." + f.getIncludeType()))
), ArrayList::new));
// 所属个税扣缴义务人的所有人员
List<TaxAgentManageRangePO> allRanges = listByTaxAgentId(taxAgentSubAdmin.getTaxAgentId(), tenantKey);
List<SalaryEmployee> allSalaryEmployees = this.getManageRangeSalaryEmployees(null, taxAgentSubAdmin.getTaxAgentId(), allRanges, tenantKey);
List<TaxAgentManageRangePO> allRanges = listByTaxAgentId(taxAgentSubAdmin.getTaxAgentId());
List<SalaryEmployee> allSalaryEmployees = this.getManageRangeSalaryEmployees(null, taxAgentSubAdmin.getTaxAgentId(), allRanges);
// 所有分管理员的所有人员
List<SalaryEmployee> allSubAdminSalaryEmployees = this.getManageRangeSalaryEmployees(null, taxAgentSubAdmin.getTaxAgentId(), allSubAdminRanges, tenantKey);
List<SalaryEmployee> allSubAdminSalaryEmployees = this.getManageRangeSalaryEmployees(null, taxAgentSubAdmin.getTaxAgentId(), allSubAdminRanges);
List<Long> allSalaryEmployeeIds = allSalaryEmployees.stream().map(SalaryEmployee::getEmployeeId).collect(Collectors.toList());
allSubAdminSalaryEmployees.removeIf(a -> allSalaryEmployeeIds.contains(a.getEmployeeId()));
if (CollectionUtils.isNotEmpty(allSubAdminSalaryEmployees)) {
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 110125, "超出了整体人员范围"));
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(110125, "超出了整体人员范围"));
}
/** 检查当前分管理员的范围与所属个税扣缴义务人的人员范围===========================end */
@ -502,7 +481,7 @@ public class TaxAgentManageRangeServiceImpl extends Service implements TaxAgentM
taskExecutor.execute(() -> {
try {
DSTenantKeyThreadVar.tenantKey.set(tenantKey);
syncLocalEmp(taxAgentSubAdmin.getTaxAgentId(), allSalaryEmployees, finalAllSubAdminRanges, employeeId, tenantKey);
syncLocalEmp(taxAgentSubAdmin.getTaxAgentId(), allSalaryEmployees, finalAllSubAdminRanges, employeeId);
} finally {
DSTenantKeyThreadVar.tenantKey.remove();
}
@ -514,36 +493,23 @@ public class TaxAgentManageRangeServiceImpl extends Service implements TaxAgentM
* 根据分管理员id获取管理范围列表
*
* @param subAdminId
* @param tenantKey
* @return
*/
private List<TaxAgentManageRangePO> listBySubAdminId(Long subAdminId, String tenantKey) {
return new LambdaQueryChainWrapper<>(taxAgentManageRangeMapper)
.eq(TaxAgentManageRangePO::getTenantKey, tenantKey)
.eq(TaxAgentManageRangePO::getDeleteType, 0)
.eq(TaxAgentManageRangePO::getTaxAgentSubAdminId, subAdminId)
.eq(TaxAgentManageRangePO::getRangeType, TaxAgentRangeTypeEnum.SUBADMIN.getValue())
.orderByDesc(TaxAgentManageRangePO::getId)
.list();
private List<TaxAgentManageRangePO> listBySubAdminId(Long subAdminId) {
return taxAgentManageRangeMapper.listSome(TaxAgentManageRangePO.builder().taxAgentSubAdminId(subAdminId).rangeType(TaxAgentRangeTypeEnum.SUBADMIN.getValue()).build());
}
private List<TaxAgentManageRangePO> listByIds(Collection<Long> ids, String tenantKey) {
private List<TaxAgentManageRangePO> listByIds(Collection<Long> ids) {
if (CollectionUtils.isEmpty(ids)) {
return Collections.emptyList();
}
return new LambdaQueryChainWrapper<>(taxAgentManageRangeMapper)
.eq(TaxAgentManageRangePO::getTenantKey, tenantKey)
.eq(TaxAgentManageRangePO::getDeleteType, 0)
.in(TaxAgentManageRangePO::getId, ids)
.orderByDesc(TaxAgentManageRangePO::getId)
.list();
return taxAgentManageRangeMapper.listSome(TaxAgentManageRangePO.builder().ids(ids).build());
}
@Override
@Transactional(rollbackFor = Exception.class)
public void deleteByIds(Collection<Long> ids, Long employeeId, String tenantKey) {
public void deleteByIds(Collection<Long> ids, Long employeeId) {
// 查询管理范围
List<TaxAgentManageRangePO> taxAgentManageRanges = listByIds(ids, tenantKey);
List<TaxAgentManageRangePO> taxAgentManageRanges = listByIds(ids);
if (CollectionUtils.isEmpty(taxAgentManageRanges)) {
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98604, "数据不存在或已被删除"));
}
@ -552,34 +518,28 @@ public class TaxAgentManageRangeServiceImpl extends Service implements TaxAgentM
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(110159, "一次只能删一个个税个税扣缴义务人的范围"));
}
Collection<Long> finalIds = ids;
taxAgentManageRanges = this.listByTaxAgentIds(taxAgentIds, tenantKey);
taxAgentManageRanges = this.listByTaxAgentIds(taxAgentIds);
List<TaxAgentManageRangePO> allManageRanges = taxAgentManageRanges.stream().filter(f -> !finalIds.contains(f.getId())).collect(Collectors.toList());
List<TaxAgentManageRangePO> allRanges = allManageRanges.stream().filter(f -> f.getRangeType().equals(TaxAgentRangeTypeEnum.TAXAGENT.getValue())).collect(Collectors.toList());
List<TaxAgentManageRangePO> allSubAdminRanges = allManageRanges.stream().filter(f -> f.getRangeType().equals(TaxAgentRangeTypeEnum.SUBADMIN.getValue())).collect(Collectors.toList());
Long taxAgentId = taxAgentIds.get(0);
List<SalaryEmployee> allSalaryEmployees = this.getManageRangeSalaryEmployees(null, taxAgentId, allRanges, tenantKey);
List<DataCollectionEmployee> allSalaryEmployees = this.getManageRangeSalaryEmployees(null, taxAgentId, allRanges);
List<SalaryEmployee> allSubAdminSalaryEmployees = this.getManageRangeSalaryEmployees(null, taxAgentId, allSubAdminRanges, tenantKey);
List<DataCollectionEmployee> allSubAdminSalaryEmployees = this.getManageRangeSalaryEmployees(null, taxAgentId, allSubAdminRanges);
allSalaryEmployees.forEach(f -> {
allSubAdminSalaryEmployees.removeIf(a -> a.getEmployeeId().equals(f.getEmployeeId()));
});
if (CollectionUtils.isNotEmpty(allSubAdminSalaryEmployees)) {
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 110160, "分管理员存在超出整体人员范围以外的人员,不可删除"));
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(110160, "分管理员存在超出整体人员范围以外的人员,不可删除"));
}
// 删除管理范围
new LambdaUpdateChainWrapper<>(taxAgentManageRangeMapper)
.eq(TaxAgentManageRangePO::getDeleteType, 0)
.eq(TaxAgentManageRangePO::getTenantKey, tenantKey)
.in(TaxAgentManageRangePO::getId, ids)
.set(TaxAgentManageRangePO::getDeleteType, 1)
.update();
taxAgentManageRangeMapper.deleteByIds(ids);
/** 同步本地人员范围的关联人员=========================== */
taskExecutor.execute(() -> {
try {
DSTenantKeyThreadVar.tenantKey.set(tenantKey);
syncLocalEmp(taxAgentId, allSalaryEmployees, allSubAdminRanges, employeeId, tenantKey);
syncLocalEmp(taxAgentId, allSalaryEmployees, allSubAdminRanges, employeeId);
} finally {
DSTenantKeyThreadVar.tenantKey.remove();
}
});
// 记录日志 todo
@ -589,12 +549,12 @@ public class TaxAgentManageRangeServiceImpl extends Service implements TaxAgentM
public void deleteByTaxAgentIds(Collection<Long> taxAgentIds, String tenantKey) {
new LambdaUpdateChainWrapper<>(taxAgentManageRangeMapper)
.eq(TaxAgentManageRangePO::getDeleteType, 0)
.eq(TaxAgentManageRangePO::getTenantKey, tenantKey)
.eq(TaxAgentManageRangePO::getTenantKey)
.in(TaxAgentManageRangePO::getTaxAgentId, taxAgentIds)
.set(TaxAgentManageRangePO::getDeleteType, 1)
.update();
// 删除管理范围下的所有人员
taxAgentEmployeeService.deleteByTaxAgentIds(taxAgentIds, tenantKey);
taxAgentEmployeeService.deleteByTaxAgentIds(taxAgentIds);
}
@Override
@ -604,12 +564,12 @@ public class TaxAgentManageRangeServiceImpl extends Service implements TaxAgentM
}
new LambdaUpdateChainWrapper<>(taxAgentManageRangeMapper)
.eq(TaxAgentManageRangePO::getDeleteType, 0)
.eq(TaxAgentManageRangePO::getTenantKey, tenantKey)
.eq(TaxAgentManageRangePO::getTenantKey)
.in(TaxAgentManageRangePO::getTaxAgentSubAdminId, subAdminIds)
.set(TaxAgentManageRangePO::getDeleteType, 1)
.update();
// 删除管理范围下的所有人员
taxAgentSubAdminEmployeeService.deleteBySubAdminIds(subAdminIds, tenantKey);
taxAgentSubAdminEmployeeService.deleteBySubAdminIds(subAdminIds);
}
@AsyncListener(topic = "hrm_resource_queue")
@ -623,10 +583,8 @@ public class TaxAgentManageRangeServiceImpl extends Service implements TaxAgentM
// 开始同步
taskExecutor.execute(() -> {
try {
DSTenantKeyThreadVar.tenantKey.set(tenantKey);
handleSyncTaxAgentEmpData(tenantKey);
handleSyncTaxAgentEmpData();
} finally {
DSTenantKeyThreadVar.tenantKey.remove();
}
});
}
@ -634,11 +592,11 @@ public class TaxAgentManageRangeServiceImpl extends Service implements TaxAgentM
/**
* 同步处理所有人员泛微
*
* @param tenantKey
* @param
*/
private void handleSyncTaxAgentEmpData(String tenantKey) {
private void handleSyncTaxAgentEmpData() {
List<TaxAgentManageRangePO> allManageRanges = new LambdaQueryChainWrapper<>(taxAgentManageRangeMapper)
.eq(TaxAgentManageRangePO::getTenantKey, tenantKey)
.eq(TaxAgentManageRangePO::getTenantKey)
.eq(TaxAgentManageRangePO::getDeleteType, 0)
.orderByDesc(TaxAgentManageRangePO::getId)
.list();
@ -652,17 +610,17 @@ public class TaxAgentManageRangeServiceImpl extends Service implements TaxAgentM
taxAgentIds.forEach(taxAgentId -> {
// 当前个税扣缴义务人的所有范围
List<TaxAgentManageRangePO> allRanges = allManageRanges.stream().filter(f -> f.getTaxAgentId().equals(taxAgentId) && f.getRangeType().equals(TaxAgentRangeTypeEnum.TAXAGENT.getValue())).collect(Collectors.toList());
List<SalaryEmployee> allSalaryEmployees = this.getManageRangeSalaryEmployees(null, taxAgentId, allRanges, tenantKey);
List<DataCollectionEmployee> allSalaryEmployees = this.getManageRangeSalaryEmployees(null, taxAgentId, allRanges);
taxAgentEmpSaveParamList.add(getTaxAgentEmpSyncParam(taxAgentId, allSalaryEmployees));
List<TaxAgentManageRangePO> allSubAdminRanges = allManageRanges.stream().filter(f -> f.getTaxAgentId().equals(taxAgentId) && f.getRangeType().equals(TaxAgentRangeTypeEnum.SUBADMIN.getValue())).collect(Collectors.toList());
subAdminEmpSaveParamList.addAll(getTaxAgentSubAdminEmpSyncParam(taxAgentId, allSubAdminRanges, tenantKey));
subAdminEmpSaveParamList.addAll(getTaxAgentSubAdminEmpSyncParam(taxAgentId, allSubAdminRanges));
});
Long employeeId = 0L;
// 同步管理员的人员
taxAgentEmployeeService.syncTaxAgentEmployee(taxAgentEmpSaveParamList, employeeId, tenantKey);
taxAgentEmployeeService.syncTaxAgentEmployee(taxAgentEmpSaveParamList, employeeId);
// 同步分管理员的人员
taxAgentSubAdminEmployeeService.syncTaxAgentSubAdminEmployee(subAdminEmpSaveParamList, employeeId, tenantKey);
taxAgentSubAdminEmployeeService.syncTaxAgentSubAdminEmployee(subAdminEmpSaveParamList, employeeId);
}
/**
@ -672,7 +630,7 @@ public class TaxAgentManageRangeServiceImpl extends Service implements TaxAgentM
* @param allSalaryEmployees
* @return
*/
private TaxAgentEmpSaveParam getTaxAgentEmpSyncParam(Long taxAgentId, List<SalaryEmployee> allSalaryEmployees) {
private TaxAgentEmpSaveParam getTaxAgentEmpSyncParam(Long taxAgentId, List<DataCollectionEmployee> allSalaryEmployees) {
return TaxAgentEmpSaveParam.builder()
.taxAgentId(taxAgentId)
.salaryEmployeeList(allSalaryEmployees)
@ -684,15 +642,14 @@ public class TaxAgentManageRangeServiceImpl extends Service implements TaxAgentM
*
* @param taxAgentId
* @param allSubAdminRanges
* @param tenantKey
* @return
*/
private List<TaxAgentSubAdminEmpSaveParam> getTaxAgentSubAdminEmpSyncParam(Long taxAgentId, List<TaxAgentManageRangePO> allSubAdminRanges, String tenantKey) {
private List<TaxAgentSubAdminEmpSaveParam> getTaxAgentSubAdminEmpSyncParam(Long taxAgentId, List<TaxAgentManageRangePO> allSubAdminRanges) {
List<Long> allSubAdminIds = allSubAdminRanges.stream().map(TaxAgentManageRangePO::getTaxAgentSubAdminId).distinct().collect(Collectors.toList());
List<TaxAgentSubAdminEmpSaveParam> subAdminEmpSaveParamList = Lists.newArrayList();
allSubAdminIds.forEach(e -> {
List<TaxAgentManageRangePO> singSubAdminRanges = allSubAdminRanges.stream().filter(r -> e.equals(r.getTaxAgentSubAdminId())).collect(Collectors.toList());
List<SalaryEmployee> subAdminSalaryEmployees = this.getManageRangeSalaryEmployees(null, taxAgentId, singSubAdminRanges, tenantKey);
List<DataCollectionEmployee> subAdminSalaryEmployees = this.getManageRangeSalaryEmployees(null, taxAgentId, singSubAdminRanges);
subAdminEmpSaveParamList.add(TaxAgentSubAdminEmpSaveParam.builder()
.taxAgentId(taxAgentId)
@ -710,15 +667,14 @@ public class TaxAgentManageRangeServiceImpl extends Service implements TaxAgentM
* @param allSalaryEmployees 个税扣缴义务人下的所有人员
* @param allSubAdminRanges
* @param employeeId
* @param tenantKey
*/
private void syncLocalEmp(Long taxAgentId, List<SalaryEmployee> allSalaryEmployees, List<TaxAgentManageRangePO> allSubAdminRanges, Long employeeId, String tenantKey) {
private void syncLocalEmp(Long taxAgentId, List<DataCollectionEmployee> allSalaryEmployees, List<TaxAgentManageRangePO> allSubAdminRanges, Long employeeId) {
List<TaxAgentEmpSaveParam> taxAgentEmpSaveParamList = Collections.singletonList(getTaxAgentEmpSyncParam(taxAgentId, allSalaryEmployees));
// 同步个税扣缴义务人的人员
taxAgentEmployeeService.syncTaxAgentEmployee(taxAgentEmpSaveParamList, employeeId, tenantKey);
taxAgentEmployeeService.syncTaxAgentEmployee(taxAgentEmpSaveParamList, employeeId);
List<TaxAgentSubAdminEmpSaveParam> subAdminEmpSaveParamList = getTaxAgentSubAdminEmpSyncParam(taxAgentId, allSubAdminRanges, tenantKey);
List<TaxAgentSubAdminEmpSaveParam> subAdminEmpSaveParamList = getTaxAgentSubAdminEmpSyncParam(taxAgentId, allSubAdminRanges);
// 同步分管理员的人员
taxAgentSubAdminEmployeeService.syncTaxAgentSubAdminEmployee(subAdminEmpSaveParamList, employeeId, tenantKey);
taxAgentSubAdminEmployeeService.syncTaxAgentSubAdminEmployee(subAdminEmpSaveParamList, employeeId);
}
}

View File

@ -50,7 +50,6 @@ public class TaxAgentV2ServiceImpl extends Service implements TaxAgentV2Service
private EmployMapper employMapper;
//
// private ExtEmployeeService extEmployeeService;
private TaxAgentBaseService taxAgentBaseService;
@ -261,11 +260,11 @@ public class TaxAgentV2ServiceImpl extends Service implements TaxAgentV2Service
return StringUtils.EMPTY + taxAgent.getId();
}
// @Override
// public String paymentAgencyUpdate(TaxAgentPO taxAgentPO, Long employeeId) {
// taxAgentMapper.updateById(taxAgentPO);
// return "";
// }
@Override
public String paymentAgencyUpdate(TaxAgentPO taxAgentPO) {
taxAgentMapper.update(taxAgentPO);
return "";
}
@Override
@Transactional(rollbackFor = Exception.class)

View File

@ -1,6 +1,5 @@
package com.engine.salary.util.page;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import org.apache.commons.collections4.CollectionUtils;
@ -17,10 +16,22 @@ public class PageUtil {
}
public static <T> Page<T> buildPage(Integer pageNo, Integer pageSize) {
public static <T> PageInfo<T> buildPage(Integer pageNo, Integer pageSize) {
pageNo = pageNo == null || pageNo <= 0 ? 1 : pageNo;
pageSize = pageSize == null || pageSize <= 0 ? 10 : pageSize;
return new Page(pageNo, pageSize, true);
PageInfo<T> pageInfo = new PageInfo<>();
pageInfo.setPageNum(pageNo);
pageInfo.setPageSize(pageSize);
return pageInfo;
}
public static <T> PageInfo<T> buildPage(Integer pageNo, Integer pageSize,Class<T> clazz) {
pageNo = pageNo == null || pageNo <= 0 ? 1 : pageNo;
pageSize = pageSize == null || pageSize <= 0 ? 10 : pageSize;
PageInfo<T> pageInfo = new PageInfo<>(clazz);
pageInfo.setPageNum(pageNo);
pageInfo.setPageSize(pageSize);
return pageInfo;
}
/**

View File

@ -1,38 +1,38 @@
package com.engine.salary.wrapper;
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import com.cloudstore.eccom.pc.table.WeaTable;
import com.cloudstore.eccom.result.WeaResultMsg;
import com.engine.salary.entity.agency.po.PaymentAgencyPO;
import com.engine.salary.entity.datacollection.DataCollectionEmployee;
import com.engine.salary.entity.taxagent.bo.TaxAgentBO;
import com.engine.salary.entity.taxagent.dto.TaxAgentManageRangeListDTO;
import com.engine.salary.entity.taxagent.param.TaxAgentAdminChangeCheckParam;
import com.engine.salary.entity.taxagent.param.TaxAgentQueryParam;
import com.engine.salary.entity.taxagent.param.TaxAgentRangeQueryParam;
import com.engine.salary.entity.taxagent.param.TaxAgentSaveParam;
import com.engine.salary.entity.taxagent.po.TaxAgentAdminPO;
import com.engine.salary.entity.taxagent.po.TaxAgentPO;
import com.engine.salary.service.TaxAgentAdminService;
import com.engine.salary.service.TaxAgentBaseService;
import com.engine.salary.service.TaxAgentManageRangeService;
import com.engine.salary.service.TaxAgentV2Service;
import com.engine.salary.service.*;
import com.engine.salary.util.SalaryAssert;
import com.engine.salary.util.SalaryI18nUtil;
import com.engine.salary.util.page.PageInfo;
import com.engine.salary.util.page.PageUtil;
import com.google.common.collect.Maps;
import com.weaver.common.authority.format.FormatManager;
import com.weaver.common.component.browser.combination.TypesBrowserOption;
import com.weaver.common.component.form.WeaForm;
import com.weaver.common.component.form.item.WeaFormItem;
import com.weaver.common.component.form.item.WeaFormOption;
import com.weaver.common.component.table.WeaTable;
import com.weaver.common.component.table.page.Page;
import com.weaver.common.hrm.domain.employee.HrmStatus;
import com.weaver.framework.util.JsonUtil;
import com.weaver.hrm.salary.entity.agency.po.PaymentAgencyPO;
import com.weaver.hrm.salary.entity.siarchives.po.InsuranceEmployeeStatusPO;
import com.weaver.hrm.salary.entity.taxagent.bo.TaxAgentBO;
import com.weaver.hrm.salary.entity.taxagent.dto.TaxAgentEmployeeOptionDTO;
import com.weaver.hrm.salary.entity.taxagent.dto.TaxAgentFormDTO;
import com.weaver.hrm.salary.entity.taxagent.dto.TaxAgentManageRangeFormDTO;
import com.weaver.hrm.salary.entity.taxagent.dto.TaxAgentManageRangeListDTO;
import com.weaver.hrm.salary.entity.taxagent.param.*;
import com.weaver.hrm.salary.exception.SalaryRunTimeException;
import com.weaver.hrm.salary.service.*;
import com.weaver.hrm.salary.util.SalaryAssert;
import com.weaver.hrm.salary.util.SalaryFormatUtil;
import com.weaver.hrm.salary.util.SalaryI18nUtil;
import com.weaver.hrm.salary.util.SalaryPageUtil;
import com.weaver.teams.domain.user.SimpleEmployee;
import com.weaver.teams.security.context.UserContext;
import org.apache.commons.collections.CollectionUtils;
@ -60,7 +60,7 @@ public class TaxAgentWrapper {
private TaxAgentV2Service taxAgentService;
private HrmCommonEmployeeService employeeService;
private SalaryEmployeeService employeeService;
private TaxAgentManageRangeService taxAgentManageRangeService;
@ -106,7 +106,7 @@ public class TaxAgentWrapper {
* @param currentEmployeeId
* @return
*/
public WeaTable<LinkedHashMap> list(TaxAgentQueryParam queryParam, Long currentEmployeeId) {
public Map<String,Object> list(TaxAgentQueryParam queryParam, Long currentEmployeeId) {
// 是否是总管理员
Boolean isChief = taxAgentService.isChief(currentEmployeeId);
// 是否开启分权
@ -122,46 +122,54 @@ public class TaxAgentWrapper {
if (isOpenDevolution) {
List<TaxAgentPO> list = taxAgentService.list(queryParam);
// 1.判断自己是否是管理员 如果是管理员就是能够操作所属个税扣缴义务人下的所有人的数据
List<TaxAgentAdminPO> taxAgentAdminList = taxAgentAdminService.listByTaxAgentIdsAndEmployeeId(list.stream().map(TaxAgentPO::getId).collect(Collectors.toList()),
currentEmployeeId);
List<TaxAgentAdminPO> taxAgentAdminList = taxAgentAdminService.listByTaxAgentIdsAndEmployeeId(list.stream().map(TaxAgentPO::getId).collect(Collectors.toList()), currentEmployeeId);
// 是管理员的列表
List<Long> adminTaxAgentIds = taxAgentAdminList.stream().map(TaxAgentAdminPO::getTaxAgentId).collect(Collectors.toList());
// 分页参数
Page<TaxAgentPO> dtoPage = SalaryPageUtil.buildPage(queryParam.getCurrent(), queryParam.getPageSize());
list = list.stream().filter(f -> adminTaxAgentIds.contains(f.getId())).collect(Collectors.toList());
// 分页参数
// 填充总数和当页数据
PageInfo<TaxAgentPO> dtoPage = PageUtil.buildPage(queryParam.getCurrent(), queryParam.getPageSize());
dtoPage.setTotal(list.size());
dtoPage.setRecords(SalaryPageUtil.subList((int) dtoPage.getCurrent(), (int) dtoPage.getSize(), list));
dtoPage.setList(PageUtil.subList(dtoPage.getPageNum(), dtoPage.getSize(), list));
page = dtoPage;
}
}
Page<Map<String, Object>> listPage = new Page<>(page.getCurrent(), page.getSize(), page.getTotal(), page.isSearchCount());
PageInfo<Map<String, Object>> listPage = new PageInfo<>();
String setLabel = SalaryI18nUtil.getI18nLabel(currentTenantKey, currentEmployeeId, 94614, "设置");
String setLabel = SalaryI18nUtil.getI18nLabel(94614, "设置");
if (isOpenDevolution) {
List<Long> taxAgentIds = page.getRecords().stream().map(TaxAgentPO::getId).collect(Collectors.toList());
List<TaxAgentPO> list = page.getList();
List<Long> taxAgentIds = list.stream().map(TaxAgentPO::getId).collect(Collectors.toList());
List<TaxAgentAdminPO> taxAgentAdmins = taxAgentAdminService.listByTaxAgentIds(taxAgentIds);
List<SimpleEmployee> adminList = employeeService.getEmployeeByIds(taxAgentAdmins.stream().map(TaxAgentAdminPO::getEmployeeId).distinct().collect(Collectors.toList()),
currentTenantKey);
listPage.setRecords(TaxAgentBO.convertToTableListDTO(page.getRecords(), paymentAgencyPOS, taxAgentAdmins, adminList, setLabel));
List<DataCollectionEmployee> adminList = employeeService.listByIds(taxAgentAdmins.stream().map(TaxAgentAdminPO::getEmployeeId).distinct().collect(Collectors.toList()));
listPage.setList(TaxAgentBO.convertToTableListDTO(page.getList(), null, taxAgentAdmins, adminList, setLabel));
} else {
listPage.setRecords(TaxAgentBO.convertToTableListDTO(page.getRecords(), paymentAgencyPOS, setLabel));
listPage.setList(TaxAgentBO.convertToTableListDTO(page.getList(), null, setLabel));
}
WeaTable<LinkedHashMap> weaTable = FormatManager.<LinkedHashMap>getInstance().genTable(LinkedHashMap.class, listPage);
//构造表格
TaxAgentBO.buildTaxAgentTable(weaTable, isOpenDevolution, currentEmployeeId, listPage.getRecords().size());
WeaTable weaTable =new WeaTable();
TaxAgentBO.buildTaxAgentTable(weaTable, isOpenDevolution);
if (isChief) {
// 在外展示操作按钮
weaTable.getOperates().get(0).setOuter(Boolean.TRUE);
// weaTable.getOperates().get(0).setOuter(Boolean.TRUE);
} else {
// 去掉增删改权限
weaTable.getOperates().clear();
weaTable.getCheckBoxPermission().clear();
weaTable.getOperates().getOperate().clear();
// weaTable.getCheckBoxPermission().clear();
}
weaTable.setModule("hrmsalary");
return weaTable;
WeaResultMsg result = new WeaResultMsg(false);
result.putAll(weaTable.makeDataResult());
result.success();
Map<String, Object> datas = new HashMap<>();
datas.put("pageInfo", listPage);
datas.put("dataKey", result.getResultMap());
return datas;
}
public List<Map<String, Object>> paymentAgencyList(TaxAgentQueryParam queryParam, Long currentEmployeeId) {
@ -173,42 +181,42 @@ public class TaxAgentWrapper {
}
public String paymentAgencySave(TaxAgentSaveParam param, Long currentEmploueeId) {
List<TaxAgentPO> taxAgentPOS = taxAgentService.listByIds(Collections.singletonList(param.getId()));
SalaryAssert.notEmpty(taxAgentPOS, "data is not exist");
TaxAgentPO taxAgentPO = taxAgentPOS.get(0);
List<String> errorList = new ArrayList<>();
List<String> resultList = new ArrayList<>();
if (StringUtils.isNotBlank(taxAgentPO.getPaymentAgency())) {
List<String> originList = new ArrayList<>(Arrays.asList(taxAgentPO.getPaymentAgency().split(",")));
List<String> list = new ArrayList<>(Arrays.asList(param.getPaymentAgency().split(",")));
originList.removeAll(list);
if (CollectionUtils.isNotEmpty(originList)) {
originList.stream().forEach(e -> {
List<InsuranceEmployeeStatusPO> employeeStatusPOS = new LambdaQueryChainWrapper<>(siEmployeeStatusMapper)
.eq(InsuranceEmployeeStatusPO::getTenantKey)
.eq(InsuranceEmployeeStatusPO::getPaymentAgency, Long.valueOf(e))
.eq(InsuranceEmployeeStatusPO::getPaymentOrganization, param.getId())
.list();
if (CollectionUtils.isNotEmpty(employeeStatusPOS)) {
errorList.add(e);
}
});
}
if (CollectionUtils.isNotEmpty(errorList)) {
List<PaymentAgencyPO> paymentAgencyPOS = paymentAgencyService.listAll(currentTenantKey);
errorList.forEach(e -> {
Optional<PaymentAgencyPO> optionalPaymentAgencyPO = paymentAgencyPOS.stream().filter(po -> Objects.equals(e, String.valueOf(po.getId()))).findFirst();
optionalPaymentAgencyPO.ifPresent(paymentAgencyPO -> resultList.add(paymentAgencyPO.getAgencyName()));
});
}
}
if (CollectionUtils.isNotEmpty(resultList)) {
return SalaryI18nUtil.getI18nLabel(currentTenantKey, currentEmploueeId, 115128, "有员工在") + String.join(",", resultList) + SalaryI18nUtil.getI18nLabel(currentTenantKey,
currentEmploueeId, 115129, "缴纳社保福利,不可取消关联");
} else {
taxAgentPO.setPaymentAgency(param.getPaymentAgency());
taxAgentService.paymentAgencyUpdate(taxAgentPO, currentEmploueeId);
}
// List<TaxAgentPO> taxAgentPOS = taxAgentService.listByIds(Collections.singletonList(param.getId()));
// SalaryAssert.notEmpty(taxAgentPOS, "data is not exist");
// TaxAgentPO taxAgentPO = taxAgentPOS.get(0);
// List<String> errorList = new ArrayList<>();
// List<String> resultList = new ArrayList<>();
// if (StringUtils.isNotBlank(taxAgentPO.getPaymentAgency())) {
// List<String> originList = new ArrayList<>(Arrays.asList(taxAgentPO.getPaymentAgency().split(",")));
// List<String> list = new ArrayList<>(Arrays.asList(param.getPaymentAgency().split(",")));
// originList.removeAll(list);
// if (CollectionUtils.isNotEmpty(originList)) {
// originList.stream().forEach(e -> {
// List<InsuranceEmployeeStatusPO> employeeStatusPOS = new LambdaQueryChainWrapper<>(siEmployeeStatusMapper)
// .eq(InsuranceEmployeeStatusPO::getTenantKey)
// .eq(InsuranceEmployeeStatusPO::getPaymentAgency, Long.valueOf(e))
// .eq(InsuranceEmployeeStatusPO::getPaymentOrganization, param.getId())
// .list();
// if (CollectionUtils.isNotEmpty(employeeStatusPOS)) {
// errorList.add(e);
// }
// });
// }
// if (CollectionUtils.isNotEmpty(errorList)) {
// List<PaymentAgencyPO> paymentAgencyPOS = paymentAgencyService.listAll(currentTenantKey);
// errorList.forEach(e -> {
// Optional<PaymentAgencyPO> optionalPaymentAgencyPO = paymentAgencyPOS.stream().filter(po -> Objects.equals(e, String.valueOf(po.getId()))).findFirst();
// optionalPaymentAgencyPO.ifPresent(paymentAgencyPO -> resultList.add(paymentAgencyPO.getAgencyName()));
// });
// }
// }
// if (CollectionUtils.isNotEmpty(resultList)) {
// return SalaryI18nUtil.getI18nLabel(currentTenantKey, currentEmploueeId, 115128, "有员工在") + String.join(",", resultList) + SalaryI18nUtil.getI18nLabel(currentTenantKey,
// currentEmploueeId, 115129, "缴纳社保福利,不可取消关联");
// } else {
// taxAgentPO.setPaymentAgency(param.getPaymentAgency());
// taxAgentService.paymentAgencyUpdate(taxAgentPO, currentEmploueeId);
// }
return "";
}
@ -217,7 +225,6 @@ public class TaxAgentWrapper {
*
* @param id
* @param currentEmployeeId
* @param currentTenantKey
* @return
*/
public WeaForm getFrom(Long id, Long currentEmployeeId) {
@ -271,7 +278,6 @@ public class TaxAgentWrapper {
*
* @param saveParam
* @param currentEmployeeId
* @param currentTenantKey
* @return
*/
public String save(TaxAgentSaveParam saveParam, Long currentEmployeeId) {
@ -283,7 +289,6 @@ public class TaxAgentWrapper {
*
* @param saveParam
* @param currentEmployeeId
* @param currentTenantKey
* @return
*/
public String update(TaxAgentSaveParam saveParam, Long currentEmployeeId) {
@ -295,7 +300,6 @@ public class TaxAgentWrapper {
*
* @param checkParam
* @param currentEmployeeId
* @param currentTenantKey
* @return
*/
public Boolean adminChangeCheck(TaxAgentAdminChangeCheckParam checkParam, Long currentEmployeeId) {
@ -307,7 +311,6 @@ public class TaxAgentWrapper {
*
* @param ids
* @param currentEmployeeId
* @param currentTenantKey
* @return
*/
public String delete(Collection<Long> ids, Long currentEmployeeId) {
@ -318,7 +321,6 @@ public class TaxAgentWrapper {
* 个税扣缴义务人下拉列表
*
* @param currentEmployeeId
* @param currentTenantKey
* @return
*/
public List<Map<String, Object>> selectList(Long currentEmployeeId) {
@ -333,8 +335,8 @@ public class TaxAgentWrapper {
* @param tenantKey
* @return
*/
public WeaTable<TaxAgentManageRangeListDTO> listRangeInclude(TaxAgentRangeQueryParam queryParam, Long employeeId, String tenantKey) {
Page<TaxAgentManageRangeListDTO> listPage = taxAgentManageRangeService.listPageByParamAndIncludeType(queryParam, NumberUtils.INTEGER_ONE, tenantKey);
public PageInfo<TaxAgentManageRangeListDTO> listRangeInclude(TaxAgentRangeQueryParam queryParam) {
PageInfo<TaxAgentManageRangeListDTO> listPage = taxAgentManageRangeService.listPageByParamAndIncludeType(queryParam, NumberUtils.INTEGER_ONE);
WeaTable<TaxAgentManageRangeListDTO> weaTable = SalaryFormatUtil.<TaxAgentManageRangeListDTO>getInstance().buildTable(TaxAgentManageRangeListDTO.class, listPage);
weaTable.setModule("hrmsalary");
weaTable.setPageUid("taxAgentRangeIncludeList");