港湾批量调薪 逻辑调整支持多义务人

This commit is contained in:
Harryxzy 2025-02-10 11:21:25 +08:00
parent 1732d41275
commit 8c194074e7
2 changed files with 60 additions and 45 deletions

View File

@ -35,6 +35,7 @@ import com.engine.salary.enums.UserStatusEnum;
import com.engine.salary.enums.datacollection.UseEmployeeTypeEnum;
import com.engine.salary.enums.salaryaccounting.LockStatusEnum;
import com.engine.salary.enums.salaryaccounting.SalaryAcctResultDataSourceEnum;
import com.engine.salary.enums.salaryarchive.SalaryArchiveStatusEnum;
import com.engine.salary.enums.salaryitem.SalaryDataTypeEnum;
import com.engine.salary.exception.SalaryRunTimeException;
import com.engine.salary.mapper.sys.SalarySysConfMapper;
@ -1708,15 +1709,19 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc
String gwFieldId = baseBean.getPropValue("shgwSalary", "gw_field_id");
if (param.getTxcj() == 0) {
// 第一层级带出所有的被调薪人
rs.execute("select bdxr,gskjywr from uf_pltxjzgljmb ");
rs.execute("select bdxr from uf_pltxjzgljmb ");
List<SalaryAcctEmployeePO> allEmps = new ArrayList<>();
// 查询所有义务人信息
List<TaxAgentPO> taxAgentPOS = getTaxAgentService(user).listAll();
Map<String, Long> taxAgentMap = SalaryEntityUtil.convert2Map(taxAgentPOS, TaxAgentPO::getName, TaxAgentPO::getId);
Map<Long, String> taxAgentNameMap = SalaryEntityUtil.convert2Map(taxAgentPOS, TaxAgentPO::getId, TaxAgentPO::getName);
List<Long> empIds = new ArrayList<>();
while (rs.next()) {
Long taxAgentId = taxAgentMap.getOrDefault(StringUtils.isBlank(rs.getString("gskjywr")) ? "" : rs.getString("gskjywr"), -1L);
allEmps.add(SalaryAcctEmployeePO.builder().employeeId(Long.valueOf(rs.getInt("bdxr"))).taxAgentId(taxAgentId).build());
// Long taxAgentId = taxAgentMap.getOrDefault(StringUtils.isBlank(rs.getString("gskjywr")) ? "" : rs.getString("gskjywr"), -1L);
if (!empIds.contains(Long.valueOf(rs.getInt("bdxr")))) {
allEmps.add(SalaryAcctEmployeePO.builder().employeeId(Long.valueOf(rs.getInt("bdxr"))).build());
empIds.add(Long.valueOf(rs.getInt("bdxr")));
}
}
// 查询这些人的基本工资
Long salaryItemId = Long.valueOf(bb.getPropValue("shgwSalary", "pltxSalaryItemId").trim());
@ -1727,9 +1732,11 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc
throw new SalaryRunTimeException("薪资项目不存在");
}
// 查询这些人的薪资档案
List<Long> empIds = allEmps.stream().map(SalaryAcctEmployeePO::getEmployeeId).collect(Collectors.toList());
List<String> taxAgentEmpList = allEmps.stream().map(emp -> emp.getTaxAgentId() + "-" + emp.getEmployeeId()).collect(Collectors.toList());
// List<Long> empIds = allEmps.stream().map(SalaryAcctEmployeePO::getEmployeeId).collect(Collectors.toList());
// List<String> taxAgentEmpList = allEmps.stream().map(emp -> emp.getTaxAgentId() + "-" + emp.getEmployeeId()).collect(Collectors.toList());
List<SalaryArchivePO> salaryArchivePOS = getSalaryArchiveService(user).listSome(SalaryArchivePO.builder().employeeIds(empIds).build());
// 过滤停薪的
salaryArchivePOS = salaryArchivePOS.stream().filter(archivePO -> archivePO.getRunStatus() != SalaryArchiveStatusEnum.STOP_FROM_SUSPEND.getValue() && archivePO.getRunStatus() != SalaryArchiveStatusEnum.STOP_FROM_PENDING.getValue()).collect(Collectors.toList());
List<DataCollectionEmployee> employeeList = getSalaryEmployeeService(user).listByIds(empIds);
// 查询这些人的去年绩效分数
int lastYear = new Integer(param.getSxrq()) - 1;
@ -1761,8 +1768,9 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc
});
Map<Long, DataCollectionEmployee> employeeMap = SalaryEntityUtil.convert2Map(employeeList, DataCollectionEmployee::getEmployeeId);
// 过滤薪资档案
salaryArchivePOS = salaryArchivePOS.stream().filter(po -> taxAgentEmpList.contains(po.getTaxAgentId()+"-"+po.getEmployeeId())).collect(Collectors.toList());
// 过滤薪资档案 250206逻辑变更不再过滤个税扣缴义务人了展示所有义务人下的数据
// salaryArchivePOS = salaryArchivePOS.stream().filter(po -> taxAgentEmpList.contains(po.getTaxAgentId()+"-"+po.getEmployeeId())).collect(Collectors.toList());
Map<Long, List<SalaryArchivePO>> archiveGroupByEmp = SalaryEntityUtil.group2Map(salaryArchivePOS, SalaryArchivePO::getEmployeeId);
// key:义务人id-人员id value:薪资档案id
Map<String, Long> salaryArchiveMap = SalaryEntityUtil.convert2Map(salaryArchivePOS, s -> s.getTaxAgentId() + "-" + s.getEmployeeId(), SalaryArchivePO::getId);
List<Long> salaryItemList = new ArrayList<>();
@ -1773,37 +1781,41 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc
Map<String, SalaryArchiveItemPO> salaryArchiveItemMap = SalaryEntityUtil.convert2Map(salaryArchiveItemList, po -> po.getSalaryArchiveId()+"_"+po.getSalaryItemId());
allEmps.stream().forEach(emp -> {
DataCollectionEmployee e = employeeMap.getOrDefault(emp.getEmployeeId(), DataCollectionEmployee.builder().build());
// 获取他的薪资档案id
Long archiveId = salaryArchiveMap.get(emp.getTaxAgentId() + "-" + emp.getEmployeeId());
pltxEmployeeDTO dto = pltxEmployeeDTO.builder().employee(emp.getEmployeeId())
.employeeName(e.getUsername())
.bmId(e.getDepartmentId())
.bmName(e.getDepartmentName())
.jobTitleId(gwEmpGwIdMap.getOrDefault(weaver.general.Util.null2String(emp.getEmployeeId()), 0L))
.jobTitleName(gwEmpGwMap.getOrDefault(weaver.general.Util.null2String(emp.getEmployeeId()), ""))
.gskjywr(taxAgentNameMap.get(emp.getTaxAgentId())).build();
Double lastYearJxValue = lastYearJxMap.get(emp.getEmployeeId()) == null ? new Double(0) : lastYearJxMap.get(emp.getEmployeeId());
dto.setQnjxfs(lastYearJxValue);
if (archiveId != null) {
SalaryArchiveItemPO salaryArchiveItemPO = salaryArchiveItemMap.get(archiveId + "_" + salaryItemId);
if (salaryArchiveItemPO != null) {
Double jbgz = Double.valueOf(StringUtils.isBlank(salaryArchiveItemPO.getItemValue()) ? "0" : salaryArchiveItemPO.getItemValue());
Double gwgz = new Double(0);
SalaryArchiveItemPO gwgzArchiveItemPO = salaryArchiveItemMap.get(archiveId + "_" + gwgzItemId);
if (gwgzArchiveItemPO != null) {
gwgz = Double.valueOf(StringUtils.isBlank(gwgzArchiveItemPO.getItemValue()) ? "0" : gwgzArchiveItemPO.getItemValue());
}
Double jxgz = new Double(0);
SalaryArchiveItemPO jxgzArchiveItemPO = salaryArchiveItemMap.get(archiveId + "_" + jxgzId);
if (jxgzArchiveItemPO != null) {
jxgz = Double.valueOf(StringUtils.isBlank(jxgzArchiveItemPO.getItemValue()) ? "0" : jxgzArchiveItemPO.getItemValue());
}
dto.setJbgz(jbgz);
// 获取该人员有几条档案
List<SalaryArchivePO> salaryArchivePOList = archiveGroupByEmp.get(emp.getEmployeeId());
for (SalaryArchivePO salaryArchivePO : salaryArchivePOList) {
// 获取他的薪资档案id
Long archiveId = salaryArchiveMap.get(salaryArchivePO.getTaxAgentId() + "-" + emp.getEmployeeId());
pltxEmployeeDTO dto = pltxEmployeeDTO.builder().employee(emp.getEmployeeId())
.employeeName(e.getUsername())
.bmId(e.getDepartmentId())
.bmName(e.getDepartmentName())
.jobTitleId(gwEmpGwIdMap.getOrDefault(weaver.general.Util.null2String(emp.getEmployeeId()), 0L))
.jobTitleName(gwEmpGwMap.getOrDefault(weaver.general.Util.null2String(emp.getEmployeeId()), ""))
.gskjywr(taxAgentNameMap.get(salaryArchivePO.getTaxAgentId())).build();
Double lastYearJxValue = lastYearJxMap.get(emp.getEmployeeId()) == null ? new Double(0) : lastYearJxMap.get(emp.getEmployeeId());
dto.setQnjxfs(lastYearJxValue);
if (archiveId != null) {
SalaryArchiveItemPO salaryArchiveItemPO = salaryArchiveItemMap.get(archiveId + "_" + salaryItemId);
if (salaryArchiveItemPO != null) {
Double jbgz = Double.valueOf(StringUtils.isBlank(salaryArchiveItemPO.getItemValue()) ? "0" : salaryArchiveItemPO.getItemValue());
Double gwgz = new Double(0);
SalaryArchiveItemPO gwgzArchiveItemPO = salaryArchiveItemMap.get(archiveId + "_" + gwgzItemId);
if (gwgzArchiveItemPO != null) {
gwgz = Double.valueOf(StringUtils.isBlank(gwgzArchiveItemPO.getItemValue()) ? "0" : gwgzArchiveItemPO.getItemValue());
}
Double jxgz = new Double(0);
SalaryArchiveItemPO jxgzArchiveItemPO = salaryArchiveItemMap.get(archiveId + "_" + jxgzId);
if (jxgzArchiveItemPO != null) {
jxgz = Double.valueOf(StringUtils.isBlank(jxgzArchiveItemPO.getItemValue()) ? "0" : jxgzArchiveItemPO.getItemValue());
}
dto.setJbgz(jbgz);
dto.setHjgz(jbgz+gwgz+jxgz);
dto.setHjgz(jbgz+gwgz+jxgz);
}
}
result.add(dto);
}
result.add(dto);
});
} else {
// 是二六层级获取中间建模的值直接拉过来
@ -1904,12 +1916,12 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc
baseBean.writeLog("批量调薪过滤查看, 查看人:" + param.getSpr() + ",查看时间:" + SalaryDateUtil.getFormatLocalDate(new Date()) + ",层级:" + param.getTxcj());
if (param.getTxcj() == 0) {
// 一级
rs.execute(" SELECT bdxr,gskjywr FROM uf_pltxjzgljmb where dxyjspr= " + param.getSpr());
baseBean.writeLog("exc sql => SELECT bdxr,gskjywr FROM uf_pltxjzgljmb where dxyjspr= " + param.getSpr());
rs.execute(" SELECT bdxr FROM uf_pltxjzgljmb where dxyjspr= " + param.getSpr());
baseBean.writeLog("exc sql => SELECT bdxr FROM uf_pltxjzgljmb where dxyjspr= " + param.getSpr());
while (rs.next()) {
int bdxr = rs.getInt("bdxr");
String gskjywr = rs.getString("gskjywr");
canManageList.add(pltxEmployeeDTO.builder().employee(Long.valueOf(bdxr)).gskjywr(gskjywr).build());
// String gskjywr = rs.getString("gskjywr");
canManageList.add(pltxEmployeeDTO.builder().employee(Long.valueOf(bdxr)).build());
}
} else {
buildCanManageList(param, fieldList, canManageList);
@ -1922,8 +1934,8 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc
BaseBean baseBean = new BaseBean();
Integer txcj = param.getTxcj();
RecordSet rs = new RecordSet();
rs.execute("SELECT bdxr,gskjywr FROM uf_pltxjzgljmb where " + fieldList.get(txcj) + "=" + param.getSpr());
baseBean.writeLog("exc sql => SELECT bdxr,gskjywr FROM uf_pltxjzgljmb where " + fieldList.get(txcj) + "=" + param.getSpr());
rs.execute("SELECT bdxr FROM uf_pltxjzgljmb where " + fieldList.get(txcj) + "=" + param.getSpr());
baseBean.writeLog("exc sql => SELECT bdxr FROM uf_pltxjzgljmb where " + fieldList.get(txcj) + "=" + param.getSpr());
// List<Integer> sprList = new ArrayList<>();
// for (int i = txcj; i > 0 ; i--) {
@ -1958,8 +1970,8 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc
while (rs.next()) {
int bdxr = rs.getInt("bdxr");
String gskjywr = rs.getString("gskjywr");
canManageList.add(pltxEmployeeDTO.builder().employee(Long.valueOf(bdxr)).gskjywr(gskjywr).build());
// String gskjywr = rs.getString("gskjywr");
canManageList.add(pltxEmployeeDTO.builder().employee(Long.valueOf(bdxr)).build());
}
}

View File

@ -1877,14 +1877,17 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe
List<GwPltxDt1PO> gwPltxDt1POS = getGwPltxDt1Service(user).listSome(GwPltxDt1PO.builder().mainid(param.getRequestId()).build());
// 获取能够管理的权限
List<pltxEmployeeDTO> pltxEmployeeDTOS = getSalaryAcctExcelService(user).pltxFilterData(PltxInitEmployeeParam.builder().txcj(param.getTxcj()).spr(param.getSpr()).build());
List<String> canManageEmps = pltxEmployeeDTOS.stream().map(DTO -> DTO.getGskjywr()+"_split"+DTO.getEmployee()).collect(Collectors.toList());
// List<String> canManageEmps = pltxEmployeeDTOS.stream().map(DTO -> DTO.getGskjywr()+"_split"+DTO.getEmployee()).collect(Collectors.toList());
// 20250206逻辑变更 不再根据义务人过滤
List<String> canManageEmps = pltxEmployeeDTOS.stream().map(DTO -> DTO.getEmployee().toString()).collect(Collectors.toList());
if (!isCreator && CollectionUtils.isEmpty(canManageEmps)) {
// 不是创建人也没有管理权限
return Collections.emptyList();
}
if (!isCreator) {
// 不是创建人,要分权
gwPltxDt1POS = gwPltxDt1POS.stream().filter(po -> canManageEmps.contains(po.getGskjywr()+"_split"+po.getXm().toString())).collect(Collectors.toList());
// gwPltxDt1POS = gwPltxDt1POS.stream().filter(po -> canManageEmps.contains(po.getGskjywr()+"_split"+po.getXm().toString())).collect(Collectors.toList());
gwPltxDt1POS = gwPltxDt1POS.stream().filter(po -> canManageEmps.contains(po.getXm().toString())).collect(Collectors.toList());
}
Map<Long, DataCollectionEmployee> empMap = SalaryEntityUtil.convert2Map(getSalaryEmployeeService(user).listAll(UseEmployeeTypeEnum.ORG), DataCollectionEmployee::getEmployeeId);