|
|
|
@ -31,6 +31,7 @@ import com.engine.salary.entity.salarysob.po.SalarySobItemPO;
|
|
|
|
import com.engine.salary.entity.salarysob.po.SalarySobPO;
|
|
|
|
import com.engine.salary.entity.salarysob.po.SalarySobPO;
|
|
|
|
import com.engine.salary.entity.taxagent.po.TaxAgentPO;
|
|
|
|
import com.engine.salary.entity.taxagent.po.TaxAgentPO;
|
|
|
|
import com.engine.salary.enums.UserStatusEnum;
|
|
|
|
import com.engine.salary.enums.UserStatusEnum;
|
|
|
|
|
|
|
|
import com.engine.salary.enums.auth.AuthFilterTypeEnum;
|
|
|
|
import com.engine.salary.enums.ly.LyPushStatusEnum;
|
|
|
|
import com.engine.salary.enums.ly.LyPushStatusEnum;
|
|
|
|
import com.engine.salary.enums.salaryaccounting.SalaryAcctRecordStatusEnum;
|
|
|
|
import com.engine.salary.enums.salaryaccounting.SalaryAcctRecordStatusEnum;
|
|
|
|
import com.engine.salary.enums.salaryarchive.SalaryArchiveStatusEnum;
|
|
|
|
import com.engine.salary.enums.salaryarchive.SalaryArchiveStatusEnum;
|
|
|
|
@ -39,6 +40,8 @@ import com.engine.salary.exception.SalaryRunTimeException;
|
|
|
|
import com.engine.salary.mapper.ly.LySalaryReportMapper;
|
|
|
|
import com.engine.salary.mapper.ly.LySalaryReportMapper;
|
|
|
|
import com.engine.salary.mapper.ly.UfSbgjjMapper;
|
|
|
|
import com.engine.salary.mapper.ly.UfSbgjjMapper;
|
|
|
|
import com.engine.salary.service.*;
|
|
|
|
import com.engine.salary.service.*;
|
|
|
|
|
|
|
|
import com.engine.salary.service.auth.AuthService;
|
|
|
|
|
|
|
|
import com.engine.salary.service.auth.AuthServiceImpl;
|
|
|
|
import com.engine.salary.util.SalaryDateUtil;
|
|
|
|
import com.engine.salary.util.SalaryDateUtil;
|
|
|
|
import com.engine.salary.util.SalaryEntityUtil;
|
|
|
|
import com.engine.salary.util.SalaryEntityUtil;
|
|
|
|
import com.engine.salary.util.SalaryI18nUtil;
|
|
|
|
import com.engine.salary.util.SalaryI18nUtil;
|
|
|
|
@ -123,6 +126,10 @@ public class LySalaryReportServiceImpl extends Service implements LySalaryReport
|
|
|
|
return ServiceUtil.getService(SalaryArchiveServiceImpl.class, user);
|
|
|
|
return ServiceUtil.getService(SalaryArchiveServiceImpl.class, user);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public AuthService getAuthService(User user) {
|
|
|
|
|
|
|
|
return ServiceUtil.getService(AuthServiceImpl.class, user);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* 查询所有记录
|
|
|
|
* 查询所有记录
|
|
|
|
*
|
|
|
|
*
|
|
|
|
@ -2756,9 +2763,11 @@ public class LySalaryReportServiceImpl extends Service implements LySalaryReport
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
public Map<String, Object> listLyXcdazjtjReport() {
|
|
|
|
public Map<String, Object> listLyXcdazjtjReport(LySalaryReportQueryParam param) {
|
|
|
|
// 查询所有发薪的薪资档案
|
|
|
|
// 查询所有发薪的薪资档案
|
|
|
|
List<SalaryArchivePO> salaryArchivePOList = getSalaryArchiveService(user).listSome(SalaryArchivePO.builder().runStatusList(Arrays.asList(SalaryArchiveStatusEnum.FIXED.getValue(), SalaryArchiveStatusEnum.SUSPEND.getValue())).build());
|
|
|
|
List<SalaryArchivePO> salaryArchivePOList = getSalaryArchiveService(user).listSome(SalaryArchivePO.builder().runStatusList(Arrays.asList(SalaryArchiveStatusEnum.FIXED.getValue(), SalaryArchiveStatusEnum.SUSPEND.getValue())).build());
|
|
|
|
|
|
|
|
//能查看哪些档案
|
|
|
|
|
|
|
|
salaryArchivePOList = getAuthService(user).auth(salaryArchivePOList, AuthFilterTypeEnum.DATA_OPT , SalaryArchivePO.class);
|
|
|
|
BaseBean baseBean = new BaseBean();
|
|
|
|
BaseBean baseBean = new BaseBean();
|
|
|
|
String gwzjField = baseBean.getPropValue("lySalaryReport", "gwzj_field_id");
|
|
|
|
String gwzjField = baseBean.getPropValue("lySalaryReport", "gwzj_field_id");
|
|
|
|
String pqField = baseBean.getPropValue("lySalaryReport", "pq_field_id");
|
|
|
|
String pqField = baseBean.getPropValue("lySalaryReport", "pq_field_id");
|
|
|
|
@ -2804,6 +2813,18 @@ public class LySalaryReportServiceImpl extends Service implements LySalaryReport
|
|
|
|
salaryArchivePO.setLypq(Utils.null2String(empPqMap.get(salaryArchivePO.getEmployeeId())));
|
|
|
|
salaryArchivePO.setLypq(Utils.null2String(empPqMap.get(salaryArchivePO.getEmployeeId())));
|
|
|
|
salaryArchivePO.setLyxm(Utils.null2String(employeeMap.get(salaryArchivePO.getEmployeeId()) == null ? "" : employeeMap.get(salaryArchivePO.getEmployeeId()).getSubcompanyid()));
|
|
|
|
salaryArchivePO.setLyxm(Utils.null2String(employeeMap.get(salaryArchivePO.getEmployeeId()) == null ? "" : employeeMap.get(salaryArchivePO.getEmployeeId()).getSubcompanyid()));
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
if (CollectionUtils.isNotEmpty(param.getPqList())) {
|
|
|
|
|
|
|
|
salaryArchivePOList = salaryArchivePOList.stream().filter(po -> param.getPqList().contains(po.getLypq())).collect(Collectors.toList());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if (CollectionUtils.isNotEmpty(param.getXmList())) {
|
|
|
|
|
|
|
|
salaryArchivePOList = salaryArchivePOList.stream().filter(po -> param.getXmList().contains(po.getLyxm())).collect(Collectors.toList());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if (StringUtils.isNotBlank(param.getZj())) {
|
|
|
|
|
|
|
|
Integer zjVal = SalaryEntityUtil.string2Integer(param.getZj()) == null ? -100 : SalaryEntityUtil.string2Integer(param.getZj());
|
|
|
|
|
|
|
|
salaryArchivePOList = salaryArchivePOList.stream().filter(po -> zjVal.equals(po.getLyzj())).collect(Collectors.toList());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
// 过滤职级为0的
|
|
|
|
|
|
|
|
salaryArchivePOList = salaryArchivePOList.stream().filter(salaryArchivePO -> salaryArchivePO.getLyzj() != null && salaryArchivePO.getLyzj() != 0).collect(Collectors.toList());
|
|
|
|
// 获取薪资档案字段id值
|
|
|
|
// 获取薪资档案字段id值
|
|
|
|
Long ndyssyzeItemId = SalaryEntityUtil.string2Long(baseBean.getPropValue("lySalaryReport", "xzdazjtj_ndyssrze_field_id"));
|
|
|
|
Long ndyssyzeItemId = SalaryEntityUtil.string2Long(baseBean.getPropValue("lySalaryReport", "xzdazjtj_ndyssrze_field_id"));
|
|
|
|
Long ydbzgzItemId = SalaryEntityUtil.string2Long(baseBean.getPropValue("lySalaryReport", "xzdazjtj_ydbzgz_field_id"));
|
|
|
|
Long ydbzgzItemId = SalaryEntityUtil.string2Long(baseBean.getPropValue("lySalaryReport", "xzdazjtj_ydbzgz_field_id"));
|
|
|
|
@ -2854,7 +2875,7 @@ public class LySalaryReportServiceImpl extends Service implements LySalaryReport
|
|
|
|
BigDecimal sjdjxVal = new BigDecimal("0");
|
|
|
|
BigDecimal sjdjxVal = new BigDecimal("0");
|
|
|
|
if (!zj.equals(new Long("0")) && !zj.equals(new Long("1")) && !zj.equals(new Long("2"))) {
|
|
|
|
if (!zj.equals(new Long("0")) && !zj.equals(new Long("1")) && !zj.equals(new Long("2"))) {
|
|
|
|
// 年度预算收入总额*(1-固定比例)*20%
|
|
|
|
// 年度预算收入总额*(1-固定比例)*20%
|
|
|
|
BigDecimal gdblVal = SalaryEntityUtil.string2BigDecimalDefault0(archiveValueMap.get(gdffblItemId));
|
|
|
|
BigDecimal gdblVal = SalaryEntityUtil.string2BigDecimalDefault0(archiveValueMap.get(gdffblItemId)).divide(new BigDecimal("100"));
|
|
|
|
yjdjxVal = (new BigDecimal("1").subtract(gdblVal)).multiply(new BigDecimal("0.2")).multiply(ndsrzezbVal);
|
|
|
|
yjdjxVal = (new BigDecimal("1").subtract(gdblVal)).multiply(new BigDecimal("0.2")).multiply(ndsrzezbVal);
|
|
|
|
BigDecimal yjdjxValSum = zjSumValueMap.computeIfAbsent("yjdjx", k -> new BigDecimal("0"));
|
|
|
|
BigDecimal yjdjxValSum = zjSumValueMap.computeIfAbsent("yjdjx", k -> new BigDecimal("0"));
|
|
|
|
zjSumValueMap.put("yjdjx", yjdjxValSum.add(yjdjxVal));
|
|
|
|
zjSumValueMap.put("yjdjx", yjdjxValSum.add(yjdjxVal));
|
|
|
|
@ -2906,8 +2927,12 @@ public class LySalaryReportServiceImpl extends Service implements LySalaryReport
|
|
|
|
// 计算年度收入总额占比
|
|
|
|
// 计算年度收入总额占比
|
|
|
|
reportDTOS.stream().forEach(dto -> {
|
|
|
|
reportDTOS.stream().forEach(dto -> {
|
|
|
|
if (NumberUtils.isCreatable(dto.getNdsrze())) {
|
|
|
|
if (NumberUtils.isCreatable(dto.getNdsrze())) {
|
|
|
|
BigDecimal ndsrze = SalaryEntityUtil.string2BigDecimalDefault0(dto.getNdsrze());
|
|
|
|
if (allNdsrzeSumVal[0].compareTo(new BigDecimal("0")) == 0) {
|
|
|
|
dto.setNdsrzezb(ndsrze.divide(allNdsrzeSumVal[0], 4, RoundingMode.HALF_UP).multiply(new BigDecimal("100")).setScale(2, RoundingMode.HALF_UP).toPlainString());
|
|
|
|
dto.setNdsrzezb("0"+"%");
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
BigDecimal ndsrze = SalaryEntityUtil.string2BigDecimalDefault0(dto.getNdsrze());
|
|
|
|
|
|
|
|
dto.setNdsrzezb(ndsrze.divide(allNdsrzeSumVal[0], 4, RoundingMode.HALF_UP).multiply(new BigDecimal("100")).setScale(2, RoundingMode.HALF_UP).toPlainString()+"%");
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
@ -2961,16 +2986,16 @@ public class LySalaryReportServiceImpl extends Service implements LySalaryReport
|
|
|
|
columns.add(new WeaTableColumn("150px", "项目", "lyxm"));
|
|
|
|
columns.add(new WeaTableColumn("150px", "项目", "lyxm"));
|
|
|
|
columns.add(new WeaTableColumn("150px", "职级", "zj"));
|
|
|
|
columns.add(new WeaTableColumn("150px", "职级", "zj"));
|
|
|
|
columns.add(new WeaTableColumn("150px", "在职人数", "zzrs"));
|
|
|
|
columns.add(new WeaTableColumn("150px", "在职人数", "zzrs"));
|
|
|
|
columns.add(new WeaTableColumn("150px", "年度收入总额", "ndsrze"));
|
|
|
|
columns.add(new WeaTableColumn("150px", "年度收入总额(万元)", "ndsrze"));
|
|
|
|
columns.add(new WeaTableColumn("150px", "年度收入总额占比", "ndsrzezb"));
|
|
|
|
columns.add(new WeaTableColumn("150px", "年度收入总额占比", "ndsrzezb"));
|
|
|
|
columns.add(new WeaTableColumn("150px", "月度标准工资总额", "ydbzgzze"));
|
|
|
|
columns.add(new WeaTableColumn("150px", "月度标准工资总额", "ydbzgzze"));
|
|
|
|
columns.add(new WeaTableColumn("150px", "月度绩效总额", "ydjxze"));
|
|
|
|
columns.add(new WeaTableColumn("150px", "月度绩效总额", "ydjxze"));
|
|
|
|
columns.add(new WeaTableColumn("150px", "1季度绩效总额", "yjdjxze"));
|
|
|
|
columns.add(new WeaTableColumn("150px", "1季度绩效总额(万元)", "yjdjxze"));
|
|
|
|
columns.add(new WeaTableColumn("150px", "2季度绩效总额", "ejdjxze"));
|
|
|
|
columns.add(new WeaTableColumn("150px", "2季度绩效总额(万元)", "ejdjxze"));
|
|
|
|
columns.add(new WeaTableColumn("150px", "3季度绩效总额", "sjdjxze"));
|
|
|
|
columns.add(new WeaTableColumn("150px", "3季度绩效总额(万元)", "sjdjxze"));
|
|
|
|
columns.add(new WeaTableColumn("150px", "4季度绩效总额", "sijdjxze"));
|
|
|
|
columns.add(new WeaTableColumn("150px", "4季度绩效总额(万元)", "sijdjxze"));
|
|
|
|
columns.add(new WeaTableColumn("150px", "年终奖总额", "nzjze"));
|
|
|
|
columns.add(new WeaTableColumn("150px", "年终奖总额", "nzjze"));
|
|
|
|
columns.add(new WeaTableColumn("150px", "季度绩效总额", "jdjxze"));
|
|
|
|
columns.add(new WeaTableColumn("150px", "季度绩效总额(万元)", "jdjxze"));
|
|
|
|
|
|
|
|
|
|
|
|
Map<String, Object> map = new HashMap<>();
|
|
|
|
Map<String, Object> map = new HashMap<>();
|
|
|
|
// if (param.isExport()) {
|
|
|
|
// if (param.isExport()) {
|
|
|
|
@ -2996,8 +3021,8 @@ public class LySalaryReportServiceImpl extends Service implements LySalaryReport
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
public XSSFWorkbook exportXcdazjtjReport() {
|
|
|
|
public XSSFWorkbook exportXcdazjtjReport(LySalaryReportQueryParam param) {
|
|
|
|
Map<String, Object> resultMap = listLyXcdazjtjReport();
|
|
|
|
Map<String, Object> resultMap = listLyXcdazjtjReport(param);
|
|
|
|
List<LyDazjtjReportDTO> dataList = (List<LyDazjtjReportDTO>) resultMap.get("data");
|
|
|
|
List<LyDazjtjReportDTO> dataList = (List<LyDazjtjReportDTO>) resultMap.get("data");
|
|
|
|
List<WeaTableColumn> columns = (List<WeaTableColumn>) resultMap.get("columns");
|
|
|
|
List<WeaTableColumn> columns = (List<WeaTableColumn>) resultMap.get("columns");
|
|
|
|
// Map<String, Object> sum = (Map<String, Object>) resultMap.get("sum");
|
|
|
|
// Map<String, Object> sum = (Map<String, Object>) resultMap.get("sum");
|
|
|
|
@ -3021,9 +3046,11 @@ public class LySalaryReportServiceImpl extends Service implements LySalaryReport
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
public Map<String, Object> listLyXcdazwjstjReport() {
|
|
|
|
public Map<String, Object> listLyXcdazwjstjReport(LySalaryReportQueryParam param) {
|
|
|
|
// 查询所有发薪的薪资档案
|
|
|
|
// 查询所有发薪的薪资档案
|
|
|
|
List<SalaryArchivePO> salaryArchivePOList = getSalaryArchiveService(user).listSome(SalaryArchivePO.builder().runStatusList(Arrays.asList(SalaryArchiveStatusEnum.FIXED.getValue(), SalaryArchiveStatusEnum.SUSPEND.getValue())).build());
|
|
|
|
List<SalaryArchivePO> salaryArchivePOList = getSalaryArchiveService(user).listSome(SalaryArchivePO.builder().runStatusList(Arrays.asList(SalaryArchiveStatusEnum.FIXED.getValue(), SalaryArchiveStatusEnum.SUSPEND.getValue())).build());
|
|
|
|
|
|
|
|
//能查看哪些档案
|
|
|
|
|
|
|
|
salaryArchivePOList = getAuthService(user).auth(salaryArchivePOList, AuthFilterTypeEnum.DATA_OPT , SalaryArchivePO.class);
|
|
|
|
BaseBean baseBean = new BaseBean();
|
|
|
|
BaseBean baseBean = new BaseBean();
|
|
|
|
String gwzjField = baseBean.getPropValue("lySalaryReport", "gwzj_field_id");
|
|
|
|
String gwzjField = baseBean.getPropValue("lySalaryReport", "gwzj_field_id");
|
|
|
|
String pqField = baseBean.getPropValue("lySalaryReport", "pq_field_id");
|
|
|
|
String pqField = baseBean.getPropValue("lySalaryReport", "pq_field_id");
|
|
|
|
@ -3087,6 +3114,19 @@ public class LySalaryReportServiceImpl extends Service implements LySalaryReport
|
|
|
|
salaryArchivePO.setLypq(Utils.null2String(empPqMap.get(salaryArchivePO.getEmployeeId())));
|
|
|
|
salaryArchivePO.setLypq(Utils.null2String(empPqMap.get(salaryArchivePO.getEmployeeId())));
|
|
|
|
salaryArchivePO.setLyxm(Utils.null2String(employeeMap.get(salaryArchivePO.getEmployeeId()) == null ? "" : employeeMap.get(salaryArchivePO.getEmployeeId()).getSubcompanyid()));
|
|
|
|
salaryArchivePO.setLyxm(Utils.null2String(employeeMap.get(salaryArchivePO.getEmployeeId()) == null ? "" : employeeMap.get(salaryArchivePO.getEmployeeId()).getSubcompanyid()));
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (CollectionUtils.isNotEmpty(param.getPqList())) {
|
|
|
|
|
|
|
|
salaryArchivePOList = salaryArchivePOList.stream().filter(po -> param.getPqList().contains(po.getLypq())).collect(Collectors.toList());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if (CollectionUtils.isNotEmpty(param.getXmList())) {
|
|
|
|
|
|
|
|
salaryArchivePOList = salaryArchivePOList.stream().filter(po -> param.getXmList().contains(po.getLyxm())).collect(Collectors.toList());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if (CollectionUtils.isNotEmpty(param.getZwjsList())) {
|
|
|
|
|
|
|
|
salaryArchivePOList = salaryArchivePOList.stream().filter(po -> param.getZwjsList().contains(po.getLyzwjs())).collect(Collectors.toList());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
// 过滤职级为0的
|
|
|
|
|
|
|
|
salaryArchivePOList = salaryArchivePOList.stream().filter(salaryArchivePO -> salaryArchivePO.getLyzj() != null && salaryArchivePO.getLyzj() != 0).collect(Collectors.toList());
|
|
|
|
|
|
|
|
|
|
|
|
// 获取薪资档案字段id值
|
|
|
|
// 获取薪资档案字段id值
|
|
|
|
Long ndyssyzeItemId = SalaryEntityUtil.string2Long(baseBean.getPropValue("lySalaryReport", "xzdazjtj_ndyssrze_field_id"));
|
|
|
|
Long ndyssyzeItemId = SalaryEntityUtil.string2Long(baseBean.getPropValue("lySalaryReport", "xzdazjtj_ndyssrze_field_id"));
|
|
|
|
Long ydbzgzItemId = SalaryEntityUtil.string2Long(baseBean.getPropValue("lySalaryReport", "xzdazjtj_ydbzgz_field_id"));
|
|
|
|
Long ydbzgzItemId = SalaryEntityUtil.string2Long(baseBean.getPropValue("lySalaryReport", "xzdazjtj_ydbzgz_field_id"));
|
|
|
|
@ -3137,7 +3177,7 @@ public class LySalaryReportServiceImpl extends Service implements LySalaryReport
|
|
|
|
BigDecimal sjdjxVal = new BigDecimal("0");
|
|
|
|
BigDecimal sjdjxVal = new BigDecimal("0");
|
|
|
|
if (!archive.getLyzj().equals(new Integer("0")) && !archive.getLyzj().equals(new Integer("1")) && !archive.getLyzj().equals(new Integer("2"))) {
|
|
|
|
if (!archive.getLyzj().equals(new Integer("0")) && !archive.getLyzj().equals(new Integer("1")) && !archive.getLyzj().equals(new Integer("2"))) {
|
|
|
|
// 年度预算收入总额*(1-固定比例)*20%
|
|
|
|
// 年度预算收入总额*(1-固定比例)*20%
|
|
|
|
BigDecimal gdblVal = SalaryEntityUtil.string2BigDecimalDefault0(archiveValueMap.get(gdffblItemId));
|
|
|
|
BigDecimal gdblVal = SalaryEntityUtil.string2BigDecimalDefault0(archiveValueMap.get(gdffblItemId)).divide(new BigDecimal("100"));;
|
|
|
|
yjdjxVal = (new BigDecimal("1").subtract(gdblVal)).multiply(new BigDecimal("0.2")).multiply(ndsrzezbVal);
|
|
|
|
yjdjxVal = (new BigDecimal("1").subtract(gdblVal)).multiply(new BigDecimal("0.2")).multiply(ndsrzezbVal);
|
|
|
|
BigDecimal yjdjxValSum = zjSumValueMap.computeIfAbsent("yjdjx", k -> new BigDecimal("0"));
|
|
|
|
BigDecimal yjdjxValSum = zjSumValueMap.computeIfAbsent("yjdjx", k -> new BigDecimal("0"));
|
|
|
|
zjSumValueMap.put("yjdjx", yjdjxValSum.add(yjdjxVal));
|
|
|
|
zjSumValueMap.put("yjdjx", yjdjxValSum.add(yjdjxVal));
|
|
|
|
@ -3190,8 +3230,12 @@ public class LySalaryReportServiceImpl extends Service implements LySalaryReport
|
|
|
|
// 计算年度收入总额占比
|
|
|
|
// 计算年度收入总额占比
|
|
|
|
reportDTOS.stream().forEach(dto -> {
|
|
|
|
reportDTOS.stream().forEach(dto -> {
|
|
|
|
if (NumberUtils.isCreatable(dto.getNdsrze())) {
|
|
|
|
if (NumberUtils.isCreatable(dto.getNdsrze())) {
|
|
|
|
BigDecimal ndsrze = SalaryEntityUtil.string2BigDecimalDefault0(dto.getNdsrze());
|
|
|
|
if (allNdsrzeSumVal[0].compareTo(new BigDecimal("0")) == 0) {
|
|
|
|
dto.setNdsrzezb(ndsrze.divide(allNdsrzeSumVal[0], 4, RoundingMode.HALF_UP).multiply(new BigDecimal("100")).setScale(2, RoundingMode.HALF_UP).toPlainString());
|
|
|
|
dto.setNdsrzezb("0%");
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
BigDecimal ndsrze = SalaryEntityUtil.string2BigDecimalDefault0(dto.getNdsrze());
|
|
|
|
|
|
|
|
dto.setNdsrzezb(ndsrze.divide(allNdsrzeSumVal[0], 4, RoundingMode.HALF_UP).multiply(new BigDecimal("100")).setScale(2, RoundingMode.HALF_UP).toPlainString()+"%");
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
@ -3236,16 +3280,16 @@ public class LySalaryReportServiceImpl extends Service implements LySalaryReport
|
|
|
|
columns.add(new WeaTableColumn("150px", "项目", "lyxm"));
|
|
|
|
columns.add(new WeaTableColumn("150px", "项目", "lyxm"));
|
|
|
|
columns.add(new WeaTableColumn("150px", "职务角色", "zwjs"));
|
|
|
|
columns.add(new WeaTableColumn("150px", "职务角色", "zwjs"));
|
|
|
|
columns.add(new WeaTableColumn("150px", "在职人数(发薪员工)", "zzrs"));
|
|
|
|
columns.add(new WeaTableColumn("150px", "在职人数(发薪员工)", "zzrs"));
|
|
|
|
columns.add(new WeaTableColumn("150px", "年度收入总额", "ndsrze"));
|
|
|
|
columns.add(new WeaTableColumn("150px", "年度收入总额(万元)", "ndsrze"));
|
|
|
|
columns.add(new WeaTableColumn("150px", "年度收入总额占比", "ndsrzezb"));
|
|
|
|
columns.add(new WeaTableColumn("150px", "年度收入总额占比", "ndsrzezb"));
|
|
|
|
columns.add(new WeaTableColumn("150px", "月度标准工资总额", "ydbzgzze"));
|
|
|
|
columns.add(new WeaTableColumn("150px", "月度标准工资总额", "ydbzgzze"));
|
|
|
|
columns.add(new WeaTableColumn("150px", "月度绩效总额", "ydjxze"));
|
|
|
|
columns.add(new WeaTableColumn("150px", "月度绩效总额", "ydjxze"));
|
|
|
|
columns.add(new WeaTableColumn("150px", "1季度绩效总额", "yjdjxze"));
|
|
|
|
columns.add(new WeaTableColumn("150px", "1季度绩效总额(万元)", "yjdjxze"));
|
|
|
|
columns.add(new WeaTableColumn("150px", "2季度绩效总额", "ejdjxze"));
|
|
|
|
columns.add(new WeaTableColumn("150px", "2季度绩效总额(万元)", "ejdjxze"));
|
|
|
|
columns.add(new WeaTableColumn("150px", "3季度绩效总额", "sjdjxze"));
|
|
|
|
columns.add(new WeaTableColumn("150px", "3季度绩效总额(万元)", "sjdjxze"));
|
|
|
|
columns.add(new WeaTableColumn("150px", "4季度绩效总额", "sijdjxze"));
|
|
|
|
columns.add(new WeaTableColumn("150px", "4季度绩效总额(万元)", "sijdjxze"));
|
|
|
|
columns.add(new WeaTableColumn("150px", "年终奖总额", "nzjze"));
|
|
|
|
columns.add(new WeaTableColumn("150px", "年终奖总额", "nzjze"));
|
|
|
|
columns.add(new WeaTableColumn("150px", "季度绩效总额", "jdjxze"));
|
|
|
|
columns.add(new WeaTableColumn("150px", "季度绩效总额(万元)", "jdjxze"));
|
|
|
|
|
|
|
|
|
|
|
|
Map<String, Object> map = new HashMap<>();
|
|
|
|
Map<String, Object> map = new HashMap<>();
|
|
|
|
// if (param.isExport()) {
|
|
|
|
// if (param.isExport()) {
|
|
|
|
@ -3271,8 +3315,8 @@ public class LySalaryReportServiceImpl extends Service implements LySalaryReport
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
public XSSFWorkbook exportXcdazwjstjReport() {
|
|
|
|
public XSSFWorkbook exportXcdazwjstjReport(LySalaryReportQueryParam param) {
|
|
|
|
Map<String, Object> resultMap = listLyXcdazwjstjReport();
|
|
|
|
Map<String, Object> resultMap = listLyXcdazwjstjReport(param);
|
|
|
|
List<LyDazjtjReportDTO> dataList = (List<LyDazjtjReportDTO>) resultMap.get("data");
|
|
|
|
List<LyDazjtjReportDTO> dataList = (List<LyDazjtjReportDTO>) resultMap.get("data");
|
|
|
|
List<WeaTableColumn> columns = (List<WeaTableColumn>) resultMap.get("columns");
|
|
|
|
List<WeaTableColumn> columns = (List<WeaTableColumn>) resultMap.get("columns");
|
|
|
|
// Map<String, Object> sum = (Map<String, Object>) resultMap.get("sum");
|
|
|
|
// Map<String, Object> sum = (Map<String, Object>) resultMap.get("sum");
|
|
|
|
@ -3311,8 +3355,9 @@ public class LySalaryReportServiceImpl extends Service implements LySalaryReport
|
|
|
|
} catch (UnsupportedEncodingException e) {
|
|
|
|
} catch (UnsupportedEncodingException e) {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
List<String> excluedeTxyy = Arrays.stream(excludeTxyy.split(",")).collect(Collectors.toList());
|
|
|
|
List<String> excluedeTxyy = Arrays.stream(excludeTxyy.split(",")).collect(Collectors.toList());
|
|
|
|
String sql = "select yg,ndyqsrze,txrq,dxyy from uf_txda where txrq >=? and txrq<=? ";
|
|
|
|
String excluedeTxyyStr = "'" + StringUtils.join(excluedeTxyy, "','") + "'";
|
|
|
|
rs.executeQuery(sql, Arrays.asList(startDate, endDate));
|
|
|
|
String sql = "select yg,ndyqsrze,txrq,dxyy from uf_txda where txrq >=? and txrq<=? and dxyy not in ("+excluedeTxyyStr+") ";
|
|
|
|
|
|
|
|
rs.executeQuery(sql, Arrays.asList(param.getStartDate(), param.getEndDate()));
|
|
|
|
List<LyTxdaPO> lyTxdaList = new ArrayList<>();
|
|
|
|
List<LyTxdaPO> lyTxdaList = new ArrayList<>();
|
|
|
|
while (rs.next()) {
|
|
|
|
while (rs.next()) {
|
|
|
|
Date txrqDate = SalaryDateUtil.dateStrToLocalDate(rs.getString("txrq"));
|
|
|
|
Date txrqDate = SalaryDateUtil.dateStrToLocalDate(rs.getString("txrq"));
|
|
|
|
@ -3326,6 +3371,36 @@ public class LySalaryReportServiceImpl extends Service implements LySalaryReport
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
List<Long> ygIds = lyTxdaList.stream().map(LyTxdaPO::getYg).collect(Collectors.toList());
|
|
|
|
|
|
|
|
if (CollectionUtils.isNotEmpty(ygIds)) {
|
|
|
|
|
|
|
|
// 查询所有发薪的薪资档案
|
|
|
|
|
|
|
|
List<SalaryArchivePO> salaryArchivePOList = getSalaryArchiveService(user).listSome(SalaryArchivePO.builder().employeeIds(ygIds).build());
|
|
|
|
|
|
|
|
//能查看哪些档案
|
|
|
|
|
|
|
|
salaryArchivePOList = getAuthService(user).auth(salaryArchivePOList, AuthFilterTypeEnum.DATA_OPT , SalaryArchivePO.class);
|
|
|
|
|
|
|
|
List<Long> empIds = salaryArchivePOList.stream().map(SalaryArchivePO::getEmployeeId).collect(Collectors.toList());
|
|
|
|
|
|
|
|
lyTxdaList = lyTxdaList.stream().filter(txdaPO -> empIds.contains(txdaPO.getYg())).collect(Collectors.toList());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
List<Long> employeeIdList = lyTxdaList.stream().map(LyTxdaPO::getYg).distinct().collect(Collectors.toList());
|
|
|
|
|
|
|
|
Map<Long, BigDecimal> rzNdyqsrzeMap = new HashMap<>();
|
|
|
|
|
|
|
|
if (CollectionUtils.isNotEmpty(employeeIdList)) {
|
|
|
|
|
|
|
|
List<LyTxdaPO> lyTxdaRzList = new ArrayList<>();
|
|
|
|
|
|
|
|
List<List<Long>> employeeIdPartition = Lists.partition(employeeIdList, 800);
|
|
|
|
|
|
|
|
for(List<Long> part : employeeIdPartition) {
|
|
|
|
|
|
|
|
// 查询这些人入职时候的数据
|
|
|
|
|
|
|
|
sql = "select yg,ndyqsrze,txrq,dxyy from uf_txda where yg in ("+StringUtils.join(part, ",")+") and dxyy in ("+excluedeTxyyStr+") ";
|
|
|
|
|
|
|
|
rs.execute(sql);
|
|
|
|
|
|
|
|
while (rs.next()) {
|
|
|
|
|
|
|
|
lyTxdaRzList.add(LyTxdaPO.builder()
|
|
|
|
|
|
|
|
.yg(NumberUtils.isCreatable(rs.getString("yg")) ? Long.valueOf(rs.getString("yg")) : -1L)
|
|
|
|
|
|
|
|
.ndyqsrze(SalaryEntityUtil.string2BigDecimalDefault0(rs.getString("ndyqsrze")))
|
|
|
|
|
|
|
|
.dxyy(rs.getString("dxyy"))
|
|
|
|
|
|
|
|
.build());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
rzNdyqsrzeMap = SalaryEntityUtil.convert2Map(lyTxdaRzList, LyTxdaPO::getYg, LyTxdaPO::getNdyqsrze);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
String gwzjField = baseBean.getPropValue("lySalaryReport", "gwzj_field_id");
|
|
|
|
String gwzjField = baseBean.getPropValue("lySalaryReport", "gwzj_field_id");
|
|
|
|
String pqField = baseBean.getPropValue("lySalaryReport", "pq_field_id");
|
|
|
|
String pqField = baseBean.getPropValue("lySalaryReport", "pq_field_id");
|
|
|
|
// 查询职等职级信息
|
|
|
|
// 查询职等职级信息
|
|
|
|
@ -3370,6 +3445,19 @@ public class LySalaryReportServiceImpl extends Service implements LySalaryReport
|
|
|
|
txdaPO.setLyxm(Utils.null2String(employeeMap.get(txdaPO.getYg()) == null ? "" : employeeMap.get(txdaPO.getYg()).getSubcompanyid()));
|
|
|
|
txdaPO.setLyxm(Utils.null2String(employeeMap.get(txdaPO.getYg()) == null ? "" : employeeMap.get(txdaPO.getYg()).getSubcompanyid()));
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (CollectionUtils.isNotEmpty(param.getPqList())) {
|
|
|
|
|
|
|
|
lyTxdaList = lyTxdaList.stream().filter(po -> param.getPqList().contains(po.getLypq())).collect(Collectors.toList());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if (CollectionUtils.isNotEmpty(param.getXmList())) {
|
|
|
|
|
|
|
|
lyTxdaList = lyTxdaList.stream().filter(po -> param.getXmList().contains(po.getLyxm())).collect(Collectors.toList());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if (StringUtils.isNotBlank(param.getZj())) {
|
|
|
|
|
|
|
|
Integer zjVal = SalaryEntityUtil.string2Integer(param.getZj()) == null ? -100 : SalaryEntityUtil.string2Integer(param.getZj());
|
|
|
|
|
|
|
|
lyTxdaList = lyTxdaList.stream().filter(po -> zjVal.equals(po.getLyzj())).collect(Collectors.toList());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
// 过滤职级为0的
|
|
|
|
|
|
|
|
lyTxdaList = lyTxdaList.stream().filter(salaryArchivePO -> salaryArchivePO.getLyzj() != null && salaryArchivePO.getLyzj() != 0).collect(Collectors.toList());
|
|
|
|
|
|
|
|
|
|
|
|
// 调薪档案根据职级分组
|
|
|
|
// 调薪档案根据职级分组
|
|
|
|
List<LyTxdaDTO> reportDTOS = new ArrayList<LyTxdaDTO>();
|
|
|
|
List<LyTxdaDTO> reportDTOS = new ArrayList<LyTxdaDTO>();
|
|
|
|
Map<String, List<LyTxdaPO>> archiveGroupByZj = SalaryEntityUtil.group2Map(lyTxdaList, po -> po.getLyzj() + "_split" + po.getLypq() + "_split" + po.getLyxm());
|
|
|
|
Map<String, List<LyTxdaPO>> archiveGroupByZj = SalaryEntityUtil.group2Map(lyTxdaList, po -> po.getLyzj() + "_split" + po.getLypq() + "_split" + po.getLyxm());
|
|
|
|
@ -3387,7 +3475,20 @@ public class LySalaryReportServiceImpl extends Service implements LySalaryReport
|
|
|
|
// 计算每个人的调薪总额
|
|
|
|
// 计算每个人的调薪总额
|
|
|
|
List<LyTxdaPO> sortedTxDTO = ygEntry.getValue().stream().sorted((o1, o2) -> o2.getTxrq().compareTo(o1.getTxrq())).collect(Collectors.toList());
|
|
|
|
List<LyTxdaPO> sortedTxDTO = ygEntry.getValue().stream().sorted((o1, o2) -> o2.getTxrq().compareTo(o1.getTxrq())).collect(Collectors.toList());
|
|
|
|
BigDecimal ndyqsrze = sortedTxDTO.get(0).getNdyqsrze() == null ? new BigDecimal("0") : sortedTxDTO.get(0).getNdyqsrze();
|
|
|
|
BigDecimal ndyqsrze = sortedTxDTO.get(0).getNdyqsrze() == null ? new BigDecimal("0") : sortedTxDTO.get(0).getNdyqsrze();
|
|
|
|
BigDecimal ndyqsrzeLast = sortedTxDTO.get(sortedTxDTO.size()-1).getNdyqsrze() == null ? new BigDecimal("0") : sortedTxDTO.get(sortedTxDTO.size()-1).getNdyqsrze();
|
|
|
|
BigDecimal ndyqsrzeLast = new BigDecimal("0");
|
|
|
|
|
|
|
|
if (ygEntry.getValue().size() == 1) {
|
|
|
|
|
|
|
|
// 获取入职时数据
|
|
|
|
|
|
|
|
BigDecimal rzValue = rzNdyqsrzeMap.get(ygEntry.getKey());
|
|
|
|
|
|
|
|
if (rzValue == null) {
|
|
|
|
|
|
|
|
baseBean.writeLog(ygEntry.getKey() + "未找到入职调薪数据");
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
ndyqsrzeLast = rzValue;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
// 获取周期内上一次的数据
|
|
|
|
|
|
|
|
ndyqsrzeLast = sortedTxDTO.get(sortedTxDTO.size()-1).getNdyqsrze() == null ? new BigDecimal("0") : sortedTxDTO.get(sortedTxDTO.size()-1).getNdyqsrze();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
BigDecimal txValue = ndyqsrze.subtract(ndyqsrzeLast);
|
|
|
|
BigDecimal txValue = ndyqsrze.subtract(ndyqsrzeLast);
|
|
|
|
zjTxze = zjTxze.add(txValue);
|
|
|
|
zjTxze = zjTxze.add(txValue);
|
|
|
|
allNdtxzeSumVal[0] = allNdtxzeSumVal[0].add(txValue);
|
|
|
|
allNdtxzeSumVal[0] = allNdtxzeSumVal[0].add(txValue);
|
|
|
|
@ -3412,12 +3513,20 @@ public class LySalaryReportServiceImpl extends Service implements LySalaryReport
|
|
|
|
BigDecimal txZrc = BigDecimal.valueOf(zrc);
|
|
|
|
BigDecimal txZrc = BigDecimal.valueOf(zrc);
|
|
|
|
reportDTOS.stream().forEach(dto -> {
|
|
|
|
reportDTOS.stream().forEach(dto -> {
|
|
|
|
if (dto.getTxrc() != null) {
|
|
|
|
if (dto.getTxrc() != null) {
|
|
|
|
BigDecimal txrc = BigDecimal.valueOf(dto.getTxrc());
|
|
|
|
if (txZrc.compareTo(new BigDecimal("0")) == 0) {
|
|
|
|
dto.setZzqntxzrsbl(txrc.divide(txZrc, 4, RoundingMode.HALF_UP).multiply(new BigDecimal("100")).setScale(2, RoundingMode.HALF_UP).toPlainString());
|
|
|
|
dto.setZzqntxzrsbl("0%");
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
BigDecimal txrc = BigDecimal.valueOf(dto.getTxrc());
|
|
|
|
|
|
|
|
dto.setZzqntxzrsbl(txrc.divide(txZrc, 4, RoundingMode.HALF_UP).multiply(new BigDecimal("100")).setScale(2, RoundingMode.HALF_UP).toPlainString()+"%");
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (NumberUtils.isCreatable(dto.getNdtxze())) {
|
|
|
|
if (NumberUtils.isCreatable(dto.getNdtxze())) {
|
|
|
|
BigDecimal ndtxze = new BigDecimal(dto.getNdtxze());
|
|
|
|
if (allNdtxzeSumVal[0].compareTo(new BigDecimal("0")) == 0) {
|
|
|
|
dto.setZzqntxzebl(ndtxze.divide(allNdtxzeSumVal[0], 4, RoundingMode.HALF_UP).multiply(new BigDecimal("100")).setScale(2, RoundingMode.HALF_UP).toPlainString());
|
|
|
|
dto.setZzqntxzebl("0%");
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
BigDecimal ndtxze = new BigDecimal(dto.getNdtxze());
|
|
|
|
|
|
|
|
dto.setZzqntxzebl(ndtxze.divide(allNdtxzeSumVal[0], 4, RoundingMode.HALF_UP).multiply(new BigDecimal("100")).setScale(2, RoundingMode.HALF_UP).toPlainString()+"%");
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
@ -3478,7 +3587,7 @@ public class LySalaryReportServiceImpl extends Service implements LySalaryReport
|
|
|
|
columns.add(new WeaTableColumn("150px", "职级", "zj"));
|
|
|
|
columns.add(new WeaTableColumn("150px", "职级", "zj"));
|
|
|
|
columns.add(new WeaTableColumn("150px", "调薪人次", "txrc"));
|
|
|
|
columns.add(new WeaTableColumn("150px", "调薪人次", "txrc"));
|
|
|
|
columns.add(new WeaTableColumn("150px", "占周期内调薪总人数比例", "zzqntxzrsbl"));
|
|
|
|
columns.add(new WeaTableColumn("150px", "占周期内调薪总人数比例", "zzqntxzrsbl"));
|
|
|
|
columns.add(new WeaTableColumn("150px", "年度调薪总额", "ndtxze"));
|
|
|
|
columns.add(new WeaTableColumn("150px", "年度调薪总额(万元)", "ndtxze"));
|
|
|
|
columns.add(new WeaTableColumn("150px", "占周期内调薪总额比例", "zzqntxzebl"));
|
|
|
|
columns.add(new WeaTableColumn("150px", "占周期内调薪总额比例", "zzqntxzebl"));
|
|
|
|
|
|
|
|
|
|
|
|
Map<String, Object> map = new HashMap<>();
|
|
|
|
Map<String, Object> map = new HashMap<>();
|
|
|
|
@ -3546,8 +3655,9 @@ public class LySalaryReportServiceImpl extends Service implements LySalaryReport
|
|
|
|
} catch (UnsupportedEncodingException e) {
|
|
|
|
} catch (UnsupportedEncodingException e) {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
List<String> excluedeTxyy = Arrays.stream(excludeTxyy.split(",")).collect(Collectors.toList());
|
|
|
|
List<String> excluedeTxyy = Arrays.stream(excludeTxyy.split(",")).collect(Collectors.toList());
|
|
|
|
String sql = "select yg,ndyqsrze,txrq,dxyy from uf_txda where txrq >=? and txrq<=? ";
|
|
|
|
String excluedeTxyyStr = "'" + StringUtils.join(excluedeTxyy, "','") + "'";
|
|
|
|
rs.executeQuery(sql, Arrays.asList(startDate, endDate));
|
|
|
|
String sql = "select yg,ndyqsrze,txrq,dxyy from uf_txda where txrq >=? and txrq<=? and dxyy not in ("+excluedeTxyyStr+") ";
|
|
|
|
|
|
|
|
rs.executeQuery(sql, Arrays.asList(param.getStartDate(), param.getEndDate()));
|
|
|
|
List<LyTxdaPO> lyTxdaList = new ArrayList<>();
|
|
|
|
List<LyTxdaPO> lyTxdaList = new ArrayList<>();
|
|
|
|
while (rs.next()) {
|
|
|
|
while (rs.next()) {
|
|
|
|
Date txrqDate = SalaryDateUtil.dateStrToLocalDate(rs.getString("txrq"));
|
|
|
|
Date txrqDate = SalaryDateUtil.dateStrToLocalDate(rs.getString("txrq"));
|
|
|
|
@ -3560,6 +3670,35 @@ public class LySalaryReportServiceImpl extends Service implements LySalaryReport
|
|
|
|
.build());
|
|
|
|
.build());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
List<Long> ygIds = lyTxdaList.stream().map(LyTxdaPO::getYg).collect(Collectors.toList());
|
|
|
|
|
|
|
|
if (CollectionUtils.isNotEmpty(ygIds)) {
|
|
|
|
|
|
|
|
// 查询所有发薪的薪资档案
|
|
|
|
|
|
|
|
List<SalaryArchivePO> salaryArchivePOList = getSalaryArchiveService(user).listSome(SalaryArchivePO.builder().employeeIds(ygIds).build());
|
|
|
|
|
|
|
|
//能查看哪些档案
|
|
|
|
|
|
|
|
salaryArchivePOList = getAuthService(user).auth(salaryArchivePOList, AuthFilterTypeEnum.DATA_OPT , SalaryArchivePO.class);
|
|
|
|
|
|
|
|
List<Long> empIds = salaryArchivePOList.stream().map(SalaryArchivePO::getEmployeeId).collect(Collectors.toList());
|
|
|
|
|
|
|
|
lyTxdaList = lyTxdaList.stream().filter(txdaPO -> empIds.contains(txdaPO.getYg())).collect(Collectors.toList());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
List<Long> employeeIdList = lyTxdaList.stream().map(LyTxdaPO::getYg).distinct().collect(Collectors.toList());
|
|
|
|
|
|
|
|
Map<Long, BigDecimal> rzNdyqsrzeMap = new HashMap<>();
|
|
|
|
|
|
|
|
if (CollectionUtils.isNotEmpty(employeeIdList)) {
|
|
|
|
|
|
|
|
List<LyTxdaPO> lyTxdaRzList = new ArrayList<>();
|
|
|
|
|
|
|
|
List<List<Long>> employeeIdPartition = Lists.partition(employeeIdList, 800);
|
|
|
|
|
|
|
|
for(List<Long> part : employeeIdPartition) {
|
|
|
|
|
|
|
|
// 查询这些人入职时候的数据
|
|
|
|
|
|
|
|
sql = "select yg,ndyqsrze,txrq,dxyy from uf_txda where yg in ("+StringUtils.join(part, ",")+") and dxyy in ("+excluedeTxyyStr+") ";
|
|
|
|
|
|
|
|
rs.execute(sql);
|
|
|
|
|
|
|
|
while (rs.next()) {
|
|
|
|
|
|
|
|
lyTxdaRzList.add(LyTxdaPO.builder()
|
|
|
|
|
|
|
|
.yg(NumberUtils.isCreatable(rs.getString("yg")) ? Long.valueOf(rs.getString("yg")) : -1L)
|
|
|
|
|
|
|
|
.ndyqsrze(SalaryEntityUtil.string2BigDecimalDefault0(rs.getString("ndyqsrze")))
|
|
|
|
|
|
|
|
.dxyy(rs.getString("dxyy"))
|
|
|
|
|
|
|
|
.build());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
rzNdyqsrzeMap = SalaryEntityUtil.convert2Map(lyTxdaRzList, LyTxdaPO::getYg, LyTxdaPO::getNdyqsrze);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
String gwzjField = baseBean.getPropValue("lySalaryReport", "gwzj_field_id");
|
|
|
|
String gwzjField = baseBean.getPropValue("lySalaryReport", "gwzj_field_id");
|
|
|
|
String pqField = baseBean.getPropValue("lySalaryReport", "pq_field_id");
|
|
|
|
String pqField = baseBean.getPropValue("lySalaryReport", "pq_field_id");
|
|
|
|
@ -3617,13 +3756,25 @@ public class LySalaryReportServiceImpl extends Service implements LySalaryReport
|
|
|
|
|
|
|
|
|
|
|
|
// 所有档案赋值职级
|
|
|
|
// 所有档案赋值职级
|
|
|
|
lyTxdaList.stream().forEach(txdaPO -> {
|
|
|
|
lyTxdaList.stream().forEach(txdaPO -> {
|
|
|
|
// int zj = empZjMap.get(txdaPO.getYg()) == null ? -1 : empZjMap.get(txdaPO.getYg());
|
|
|
|
int zj = empZjMap.get(txdaPO.getYg()) == null ? -1 : empZjMap.get(txdaPO.getYg());
|
|
|
|
// txdaPO.setLyzj(zj);
|
|
|
|
txdaPO.setLyzj(zj);
|
|
|
|
txdaPO.setLypq(Utils.null2String(empPqMap.get(txdaPO.getYg())));
|
|
|
|
txdaPO.setLypq(Utils.null2String(empPqMap.get(txdaPO.getYg())));
|
|
|
|
txdaPO.setLyxm(Utils.null2String(employeeMap.get(txdaPO.getYg()) == null ? "" : employeeMap.get(txdaPO.getYg()).getSubcompanyid()));
|
|
|
|
txdaPO.setLyxm(Utils.null2String(employeeMap.get(txdaPO.getYg()) == null ? "" : employeeMap.get(txdaPO.getYg()).getSubcompanyid()));
|
|
|
|
String zwjs = empZwjsMap.get(txdaPO.getYg()) == null ? "" : empZwjsMap.get(txdaPO.getYg());
|
|
|
|
String zwjs = empZwjsMap.get(txdaPO.getYg()) == null ? "" : empZwjsMap.get(txdaPO.getYg());
|
|
|
|
txdaPO.setLyzwjs(zwjs);
|
|
|
|
txdaPO.setLyzwjs(zwjs);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
if (CollectionUtils.isNotEmpty(param.getPqList())) {
|
|
|
|
|
|
|
|
lyTxdaList = lyTxdaList.stream().filter(po -> param.getPqList().contains(po.getLypq())).collect(Collectors.toList());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if (CollectionUtils.isNotEmpty(param.getXmList())) {
|
|
|
|
|
|
|
|
lyTxdaList = lyTxdaList.stream().filter(po -> param.getXmList().contains(po.getLyxm())).collect(Collectors.toList());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if (CollectionUtils.isNotEmpty(param.getZwjsList())) {
|
|
|
|
|
|
|
|
lyTxdaList = lyTxdaList.stream().filter(po -> param.getZwjsList().contains(po.getLyzwjs())).collect(Collectors.toList());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
// 过滤职级为0的
|
|
|
|
|
|
|
|
lyTxdaList = lyTxdaList.stream().filter(salaryArchivePO -> salaryArchivePO.getLyzj() != null && salaryArchivePO.getLyzj() != 0).collect(Collectors.toList());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 调薪档案根据职级分组
|
|
|
|
// 调薪档案根据职级分组
|
|
|
|
List<LyTxdaDTO> reportDTOS = new ArrayList<LyTxdaDTO>();
|
|
|
|
List<LyTxdaDTO> reportDTOS = new ArrayList<LyTxdaDTO>();
|
|
|
|
@ -3642,7 +3793,20 @@ public class LySalaryReportServiceImpl extends Service implements LySalaryReport
|
|
|
|
// 计算每个人的调薪总额
|
|
|
|
// 计算每个人的调薪总额
|
|
|
|
List<LyTxdaPO> sortedTxDTO = ygEntry.getValue().stream().sorted((o1, o2) -> o2.getTxrq().compareTo(o1.getTxrq())).collect(Collectors.toList());
|
|
|
|
List<LyTxdaPO> sortedTxDTO = ygEntry.getValue().stream().sorted((o1, o2) -> o2.getTxrq().compareTo(o1.getTxrq())).collect(Collectors.toList());
|
|
|
|
BigDecimal ndyqsrze = sortedTxDTO.get(0).getNdyqsrze() == null ? new BigDecimal("0") : sortedTxDTO.get(0).getNdyqsrze();
|
|
|
|
BigDecimal ndyqsrze = sortedTxDTO.get(0).getNdyqsrze() == null ? new BigDecimal("0") : sortedTxDTO.get(0).getNdyqsrze();
|
|
|
|
BigDecimal ndyqsrzeLast = sortedTxDTO.get(sortedTxDTO.size()-1).getNdyqsrze() == null ? new BigDecimal("0") : sortedTxDTO.get(sortedTxDTO.size()-1).getNdyqsrze();
|
|
|
|
BigDecimal ndyqsrzeLast = new BigDecimal("0");
|
|
|
|
|
|
|
|
if (ygEntry.getValue().size() == 1) {
|
|
|
|
|
|
|
|
// 获取入职时数据
|
|
|
|
|
|
|
|
BigDecimal rzValue = rzNdyqsrzeMap.get(ygEntry.getKey());
|
|
|
|
|
|
|
|
if (rzValue == null) {
|
|
|
|
|
|
|
|
baseBean.writeLog(ygEntry.getKey() + "为找到入职调薪数据");
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
ndyqsrzeLast = rzValue;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
// 获取周期内上一次的数据
|
|
|
|
|
|
|
|
ndyqsrzeLast = sortedTxDTO.get(sortedTxDTO.size()-1).getNdyqsrze() == null ? new BigDecimal("0") : sortedTxDTO.get(sortedTxDTO.size()-1).getNdyqsrze();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
BigDecimal txValue = ndyqsrze.subtract(ndyqsrzeLast);
|
|
|
|
BigDecimal txValue = ndyqsrze.subtract(ndyqsrzeLast);
|
|
|
|
zwjsTxze = zwjsTxze.add(txValue);
|
|
|
|
zwjsTxze = zwjsTxze.add(txValue);
|
|
|
|
allNdtxzeSumVal[0] = allNdtxzeSumVal[0].add(txValue);
|
|
|
|
allNdtxzeSumVal[0] = allNdtxzeSumVal[0].add(txValue);
|
|
|
|
@ -3668,12 +3832,20 @@ public class LySalaryReportServiceImpl extends Service implements LySalaryReport
|
|
|
|
BigDecimal txZrc = BigDecimal.valueOf(zrc);
|
|
|
|
BigDecimal txZrc = BigDecimal.valueOf(zrc);
|
|
|
|
reportDTOS.stream().forEach(dto -> {
|
|
|
|
reportDTOS.stream().forEach(dto -> {
|
|
|
|
if (dto.getTxrc() != null) {
|
|
|
|
if (dto.getTxrc() != null) {
|
|
|
|
BigDecimal txrc = BigDecimal.valueOf(dto.getTxrc());
|
|
|
|
if (allNdtxzeSumVal[0].compareTo(new BigDecimal("0")) == 0) {
|
|
|
|
dto.setZzqntxzrsbl(txrc.divide(txZrc, 4, RoundingMode.HALF_UP).multiply(new BigDecimal("100")).setScale(2, RoundingMode.HALF_UP).toPlainString());
|
|
|
|
dto.setZzqntxzrsbl("0%");
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
BigDecimal txrc = BigDecimal.valueOf(dto.getTxrc());
|
|
|
|
|
|
|
|
dto.setZzqntxzrsbl(txrc.divide(txZrc, 4, RoundingMode.HALF_UP).multiply(new BigDecimal("100")).setScale(2, RoundingMode.HALF_UP).toPlainString()+"%");
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (NumberUtils.isCreatable(dto.getNdtxze())) {
|
|
|
|
if (NumberUtils.isCreatable(dto.getNdtxze())) {
|
|
|
|
BigDecimal ndtxze = new BigDecimal(dto.getNdtxze());
|
|
|
|
if (allNdtxzeSumVal[0].compareTo(new BigDecimal("0")) == 0) {
|
|
|
|
dto.setZzqntxzebl(ndtxze.divide(allNdtxzeSumVal[0], 4, RoundingMode.HALF_UP).multiply(new BigDecimal("100")).setScale(2, RoundingMode.HALF_UP).toPlainString());
|
|
|
|
dto.setZzqntxzebl("0%");
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
BigDecimal ndtxze = new BigDecimal(dto.getNdtxze());
|
|
|
|
|
|
|
|
dto.setZzqntxzebl(ndtxze.divide(allNdtxzeSumVal[0], 4, RoundingMode.HALF_UP).multiply(new BigDecimal("100")).setScale(2, RoundingMode.HALF_UP).toPlainString()+"%");
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
@ -3727,7 +3899,7 @@ public class LySalaryReportServiceImpl extends Service implements LySalaryReport
|
|
|
|
columns.add(new WeaTableColumn("150px", "职务角色", "zwjs"));
|
|
|
|
columns.add(new WeaTableColumn("150px", "职务角色", "zwjs"));
|
|
|
|
columns.add(new WeaTableColumn("150px", "调薪人次", "txrc"));
|
|
|
|
columns.add(new WeaTableColumn("150px", "调薪人次", "txrc"));
|
|
|
|
columns.add(new WeaTableColumn("150px", "占周期内调薪总人数比例", "zzqntxzrsbl"));
|
|
|
|
columns.add(new WeaTableColumn("150px", "占周期内调薪总人数比例", "zzqntxzrsbl"));
|
|
|
|
columns.add(new WeaTableColumn("150px", "年度调薪总额", "ndtxze"));
|
|
|
|
columns.add(new WeaTableColumn("150px", "年度调薪总额(万元)", "ndtxze"));
|
|
|
|
columns.add(new WeaTableColumn("150px", "占周期内调薪总额比例", "zzqntxzebl"));
|
|
|
|
columns.add(new WeaTableColumn("150px", "占周期内调薪总额比例", "zzqntxzebl"));
|
|
|
|
|
|
|
|
|
|
|
|
Map<String, Object> map = new HashMap<>();
|
|
|
|
Map<String, Object> map = new HashMap<>();
|
|
|
|
|