package com.engine.salary.wrapper;
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.TaxAgentEmployeeOptionDTO;
import com.engine.salary.entity.taxagent.dto.TaxAgentFormDTO;
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.enums.UserStatusEnum;
import com.engine.salary.exception.SalaryRunTimeException;
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.component.browser.combination.TypesBrowserOption;
import com.weaver.common.component.form.WeaForm;
import com.weaver.common.component.form.item.WeaFormOption;
import com.weaver.common.hrm.domain.employee.HrmStatus;
import com.weaver.hrm.salary.entity.taxagent.dto.TaxAgentManageRangeFormDTO;
import com.weaver.hrm.salary.entity.taxagent.param.*;
import com.weaver.hrm.salary.service.*;
import com.weaver.hrm.salary.util.SalaryFormatUtil;
import com.weaver.teams.security.context.UserContext;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.math.NumberUtils;
import org.springframework.beans.BeanUtils;
import java.util.*;
import java.util.stream.Collectors;
/**
* 个税扣缴义务人
*
Copyright: Copyright (c) 2022
* Company: 泛微软件
*
* @author qiantao
* @version 1.0
**/
public class TaxAgentWrapper {
private TaxAgentBaseService taxAgentBaseService;
private TaxAgentAdminService taxAgentAdminService;
private TaxAgentV2Service taxAgentService;
private SalaryEmployeeService employeeService;
private TaxAgentManageRangeService taxAgentManageRangeService;
private PaymentAgencyService paymentAgencyService;
private SIEmployeeStatusMapper siEmployeeStatusMapper;
private HrmCommonHrmStatusService hrmCommonHrmStatusService;
private HrmConfigSetCache hrmConfigSetCache;
/**
* 是否是薪酬模块总管理员
*
* @param currentEmployeeId
* @return
*/
public Boolean isChief(Long currentEmployeeId) {
return taxAgentService.isChief(currentEmployeeId);
}
/**
* 权限信息
*
* @param currentEmployeeId
* @return
*/
public Map permission(Long currentEmployeeId) {
Map resultMap = Maps.newHashMap();
Boolean isChief = isChief(currentEmployeeId);
Boolean isDefaultOpen = taxAgentService.isDefaultOpen(currentEmployeeId);
Boolean isAdminEnable = taxAgentService.isAdminEnable(currentEmployeeId);
resultMap.put("isChief", isChief);
resultMap.put("isDefaultOpen", isDefaultOpen);
resultMap.put("isAdminEnable", isAdminEnable);
return resultMap;
}
/**
* 个税口角义务人列表
*
* @param queryParam
* @param currentEmployeeId
* @return
*/
public Map list(TaxAgentQueryParam queryParam, Long currentEmployeeId) {
// 是否是总管理员
Boolean isChief = taxAgentService.isChief(currentEmployeeId);
// 是否开启分权
boolean isOpenDevolution = taxAgentBaseService.isOpenDevolution();
// List paymentAgencyPOS = paymentAgencyService.listAll(currentTenantKey);
PageInfo page = null;
if (isChief) {
page = taxAgentService.listPage(queryParam);
} else {
// 分权情况下,根据自己作为管理员过滤列表
if (isOpenDevolution) {
List list = taxAgentService.list(queryParam);
// 1.判断自己是否是管理员, 如果是管理员,就是能够操作所属个税扣缴义务人下的所有人的数据
List taxAgentAdminList = taxAgentAdminService.listByTaxAgentIdsAndEmployeeId(list.stream().map(TaxAgentPO::getId).collect(Collectors.toList()), currentEmployeeId);
// 是管理员的列表
List adminTaxAgentIds = taxAgentAdminList.stream().map(TaxAgentAdminPO::getTaxAgentId).collect(Collectors.toList());
list = list.stream().filter(f -> adminTaxAgentIds.contains(f.getId())).collect(Collectors.toList());
// 分页参数
// 填充总数和当页数据
PageInfo dtoPage = PageUtil.buildPage(queryParam.getCurrent(), queryParam.getPageSize());
dtoPage.setTotal(list.size());
dtoPage.setList(PageUtil.subList(dtoPage.getPageNum(), dtoPage.getSize(), list));
page = dtoPage;
}
}
PageInfo