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.DeptInfo;
import com.engine.salary.entity.hrm.HrmStatus;
import com.engine.salary.entity.hrm.PositionInfo;
import com.engine.salary.entity.hrm.SubCompanyInfo;
import com.engine.salary.entity.taxagent.dto.TaxAgentEmployeeDTO;
import com.engine.salary.entity.taxagent.dto.TaxAgentListDTO;
import com.engine.salary.entity.taxagent.dto.TaxAgentManageRangeListDTO;
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;
import com.engine.salary.enums.salarysob.TargetTypeEnum;
import com.engine.salary.enums.taxagent.TaxAgentRangeTypeEnum;
import com.engine.salary.util.JsonUtil;
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 dm.jdbc.util.IdGenerator;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import java.util.*;
import java.util.stream.Collectors;
/**
* 个税扣缴义务人
*
Copyright: Copyright (c) 2022
* Company: 泛微软件
*
* @author qiantao
* @version 1.0
**/
public class TaxAgentBO {
@Override
public String toString() {
return "TaxAgentBO{}";
}
/**
* 根据个税扣缴义务人id和用户id判断是否匹配
*
* @param taxAgentEmployees
* @param taxAgentId
* @param employeeId
* @return
*/
public static boolean checkTaxAgentAndEmployee(List taxAgentEmployees, Long taxAgentId, Long employeeId) {
if (CollectionUtils.isEmpty(taxAgentEmployees) && taxAgentId == null) {
return false;
}
return taxAgentEmployees.stream().anyMatch(t -> t.getTaxAgentId().equals(taxAgentId) && employeeId.equals(t.getEmployeeId()));
}
/**
* 构建表格
*
* @param weaTable
* @param isOpenDevolution
*/
public static void buildTaxAgentTable(WeaTable weaTable, boolean isOpenDevolution) {
// 表格表头
List columns = new ArrayList<>();
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(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(description, "description", "40%"));
}
weaTable.setColumns(columns);
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( 106247, "管理范围及分权设置"), 2));
// }
// weaTable.setOperatesPermission(getDefaultOperatesPermission(operates.getOperate().size(), size));
// weaTable.setCheckBoxPermission(getDefaultCheckBoxPermission(size));
//
// weaTable.setTableType(WeaTableTypeEnum.CHECKBOX);
}
// private static List> getDefaultOperatesPermission(int operateSize, int recordSize) {
// List> permissionList = Lists.newArrayList();
// for (int i = 0; i < recordSize; i++) {
// List permissions = Lists.newArrayList();
// for (int j = 0; j < operateSize; j++) {
// permissions.add(new Permission(true, false));
// }
// permissionList.add(permissions);
// }
// return permissionList;
// }
//
// private static List getDefaultCheckBoxPermission(int recordSize) {
// List permissionList = Lists.newArrayList();
// for (int i = 0; i < recordSize; i++) {
// permissionList.add(new Permission(true, false));
// }
// return permissionList;
// }
/**
* 表数据转列表数据
*
* @param taxAgents
* @return
*/
public static List convertToListDTO(Collection taxAgents) {
if (CollectionUtils.isEmpty(taxAgents)) {
return Collections.emptyList();
}
return taxAgents.stream()
.map(e -> TaxAgentListDTO.builder()
.id(e.getId())
.name(e.getName())
.description(e.getDescription())
.build())
.collect(Collectors.toList());
}
/**
* 表数据转列表数据
*
* @param taxAgents
* @return
*/
public static List