港湾批量调薪性能优化

This commit is contained in:
Harryxzy 2024-07-29 16:06:48 +08:00
parent 52a0392be5
commit f529143e62
2 changed files with 34 additions and 1 deletions

View File

@ -26,6 +26,13 @@ public class pltxEmployeeDTO {
private String bmName;
// 岗位信息
private Long jobTitleId;
// 岗位名称
private String jobTitleName;
// 个税扣缴义务人
private String gskjywr;

View File

@ -1696,6 +1696,9 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc
List<pltxEmployeeDTO> result = new ArrayList<>();
RecordSet rs = new RecordSet();
BaseBean bb = new BaseBean();
if (StringUtils.isBlank(param.getSxrq())) {
throw new SalaryRunTimeException("生效日期不能为空");
}
if (param.getTxcj() == 0) {
// 第一层级带出所有的被调薪人
rs.execute("select bdxr,gskjywr from uf_pltxjzgljmb ");
@ -1721,6 +1724,20 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc
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());
List<DataCollectionEmployee> employeeList = getSalaryEmployeeService(user).listByIds(empIds);
// 查询这些人的去年绩效分数
int lastYear = new Integer(param.getSxrq()) - 1;
List<List<Long>> partition = Lists.partition(empIds, 500);
Map<Long, Double> lastYearJxMap = new HashMap<>();
partition.forEach(part -> {
String empIdStr = StringUtils.join(part, ",");
rs.execute("select jxjg,ygxm from uf_jxjjmb where nd = '" + lastYear +"' and ygxm in ( "+ empIdStr + " )");
while (rs.next()) {
double jxjg = rs.getDouble("jxjg") == -1 ? 0 : rs.getDouble("jxjg");
int ygxm = rs.getInt("ygxm");
lastYearJxMap.put(Long.valueOf(ygxm), jxjg);
}
});
Map<Long, DataCollectionEmployee> employeeMap = SalaryEntityUtil.convert2Map(employeeList, DataCollectionEmployee::getEmployeeId);
// 过滤薪资档案
salaryArchivePOS = salaryArchivePOS.stream().filter(po -> taxAgentEmpList.contains(po.getTaxAgentId()+"-"+po.getEmployeeId())).collect(Collectors.toList());
@ -1740,7 +1757,11 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc
.employeeName(e.getUsername())
.bmId(e.getDepartmentId())
.bmName(e.getDepartmentName())
.jobTitleId(e.getJobtitleId())
.jobTitleName(e.getJobtitleName())
.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) {
@ -1801,14 +1822,17 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc
*/
@Override
public List<pltxEmployeeDTO> pltxFilterData(PltxInitEmployeeParam param) {
BaseBean baseBean = new BaseBean();
ValidUtil.doValidator(param);
RecordSet rs = new RecordSet();
List<String> fieldList = Arrays.asList("dxyjspr", "dxejspr", "dxsajspr", "dxsijspr", "dxwjspr", "dxljspr");
List<pltxEmployeeDTO> canManageList = new ArrayList<>();
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());
while (rs.next()) {
int bdxr = rs.getInt("bdxr");
String gskjywr = rs.getString("gskjywr");
@ -1817,14 +1841,16 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc
} else {
buildCanManageList(param, fieldList, canManageList);
}
baseBean.writeLog("批量调薪过滤查看, 结果" + canManageList.stream().map(pltxEmployeeDTO::getEmployee));
return canManageList;
}
private void buildCanManageList(PltxInitEmployeeParam param, List<String> fieldList, List<pltxEmployeeDTO> canManageList ) {
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());
// List<Integer> sprList = new ArrayList<>();
// for (int i = txcj; i > 0 ; i--) {