领悦4张报表增加搜索框;删除往期累计数据action

This commit is contained in:
Harryxzy 2025-09-18 15:15:48 +08:00
parent a55b20234f
commit 1751dae127
7 changed files with 358 additions and 51 deletions

View File

@ -0,0 +1,114 @@
package com.engine.salary.action;
import com.engine.common.util.ServiceUtil;
import com.engine.salary.entity.datacollection.AddUpSituation;
import com.engine.salary.entity.taxagent.po.TaxAgentPO;
import com.engine.salary.mapper.datacollection.AddUpSituationMapper;
import com.engine.salary.service.TaxAgentService;
import com.engine.salary.service.impl.TaxAgentServiceImpl;
import com.engine.salary.util.db.MapperProxyFactory;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.math.NumberUtils;
import weaver.conn.RecordSet;
import weaver.general.Util;
import weaver.hrm.User;
import weaver.interfaces.workflow.action.Action;
import weaver.soa.workflow.request.Property;
import weaver.soa.workflow.request.RequestInfo;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* @ClassName LyClearAddUpSituationAction
* @author Harryxzy
* @date 2025/9/18 10:36
* @description 领悦 - 删除往期累计数据
*/
@Slf4j
public class LyClearAddUpSituationAction implements Action {
/**
* 个税扣缴义务人
*/
private String taxAgentNameField;
/**
* 员工
*/
private String ygField;
// 是否执行action的字段, 0代表不执行其余代表执行
private String enableField;
public String getEnableField() {
return enableField;
}
public void setEnableField(String enableField) {
this.enableField = enableField;
}
private TaxAgentService getTaxAgentService(User user) {
return ServiceUtil.getService(TaxAgentServiceImpl.class, user);
}
private AddUpSituationMapper getAddUpSituationMapper() {
return MapperProxyFactory.getProxy(AddUpSituationMapper.class);
}
@Override
public String execute(RequestInfo requestInfo) {
try {
Property[] properties = requestInfo.getMainTableInfo().getProperty();
Map<String, String> fieldMap = Arrays.stream(properties).collect(Collectors.toMap(Property::getName,
property -> Util.null2String(property.getValue())));
String enable = fieldMap.get(enableField);
if (StringUtils.isNotBlank(enable) && enable.equals("0")) {
// 不执行action
return SUCCESS;
}
String taxAgentName = fieldMap.get(taxAgentNameField);
String ygId = fieldMap.get(ygField);
if (StringUtils.isEmpty(taxAgentName) || !NumberUtils.isCreatable(ygId)) {
log.error("删除往期累计情况数据失败,义务人,员工不能为空", taxAgentName, ygId);
requestInfo.getRequestManager().setMessage("删除往期累计情况数据失败,义务人,员工不能为空");
return FAILURE_AND_CONTINUE;
}
User user = new User();
user.setUid(1);
// 获取个税扣缴义务人id
List<TaxAgentPO> taxAgentPOS = getTaxAgentService(user).listByName(taxAgentName);
if (CollectionUtils.isEmpty(taxAgentPOS)) {
log.error("删除往期累计情况数据失败,义务人不存在", taxAgentName);
requestInfo.getRequestManager().setMessage("删除往期累计情况数据失败,义务人不存在");
return FAILURE_AND_CONTINUE;
}
// 查询往期累计情况数据
AddUpSituation param = AddUpSituation.builder().taxAgentId(taxAgentPOS.get(0).getId()).employeeIds(Collections.singletonList(Long.valueOf(ygId))).build();
List<AddUpSituation> addUpSituationList = getAddUpSituationMapper().listSome(param);
if (CollectionUtils.isNotEmpty(addUpSituationList)) {
// 根据税款所属期排序
List<AddUpSituation> sortedAddUpSituation = addUpSituationList.stream().sorted((o1, o2) -> o2.getTaxYearMonth().compareTo(o1.getTaxYearMonth())).collect(Collectors.toList());
Long id = sortedAddUpSituation.get(0).getId();
RecordSet rs = new RecordSet();
String sql = "update hrsa_add_up_situation set delete_type=4 where id=" + id;
rs.execute(sql);
}
} catch (Exception e) {
log.error("删除往期累计数据异常", e);
requestInfo.getRequestManager().setMessage(e.getMessage());
return FAILURE_AND_CONTINUE;
}
return SUCCESS;
}
}

View File

@ -57,4 +57,17 @@ public class LySalaryReportQueryParam extends BaseQueryParam {
private String startDate; private String startDate;
private String endDate; private String endDate;
// 片区
private List<String> pqList;
// 项目
private List<String> xmList;
// 职级
private String zj;
// 职务角色
private List<String> zwjsList;
} }

View File

@ -155,13 +155,13 @@ public interface LySalaryReportService {
Map<String, String> getHszb(String ffgsqc); Map<String, String> getHszb(String ffgsqc);
Map<String, Object> listLyXcdazjtjReport(); Map<String, Object> listLyXcdazjtjReport(LySalaryReportQueryParam param);
XSSFWorkbook exportXcdazjtjReport(); XSSFWorkbook exportXcdazjtjReport(LySalaryReportQueryParam param);
Map<String, Object> listLyXcdazwjstjReport(); Map<String, Object> listLyXcdazwjstjReport(LySalaryReportQueryParam param);
XSSFWorkbook exportXcdazwjstjReport(); XSSFWorkbook exportXcdazwjstjReport(LySalaryReportQueryParam param);
Map<String, Object> listLyTxdazjtjReport(LySalaryReportQueryParam param); Map<String, Object> listLyTxdazjtjReport(LySalaryReportQueryParam param);

View File

@ -273,4 +273,6 @@ public interface TaxAgentService {
List<TaxAgentConfig> getConfig(); List<TaxAgentConfig> getConfig();
List<UploadConfigResponse.Result> parseConfig(List<TaxAgentConfig> configs); List<UploadConfigResponse.Result> parseConfig(List<TaxAgentConfig> configs);
List<TaxAgentPO> listByName(String name);
} }

View File

@ -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<>();

View File

@ -864,5 +864,11 @@ public class TaxAgentServiceImpl extends Service implements TaxAgentService {
return results; return results;
} }
@Override
public List<TaxAgentPO> listByName(String name) {
if (StringUtils.isBlank(name)) {
return Collections.emptyList();
}
return getTaxAgentMapper().listByName(name);
}
} }

View File

@ -349,19 +349,19 @@ public class LySalaryWrapper extends Service {
} }
public Map<String, Object> listLyXcdazjtjReport(LySalaryReportQueryParam param) { public Map<String, Object> listLyXcdazjtjReport(LySalaryReportQueryParam param) {
return getLySalaryReportService(user).listLyXcdazjtjReport(); return getLySalaryReportService(user).listLyXcdazjtjReport(param);
} }
public XSSFWorkbook exportXcdazjtjReport(LySalaryReportQueryParam param) { public XSSFWorkbook exportXcdazjtjReport(LySalaryReportQueryParam param) {
return getLySalaryReportService(user).exportXcdazjtjReport(); return getLySalaryReportService(user).exportXcdazjtjReport(param);
} }
public Map<String, Object> listLyXcdazwjstjReport(LySalaryReportQueryParam param) { public Map<String, Object> listLyXcdazwjstjReport(LySalaryReportQueryParam param) {
return getLySalaryReportService(user).listLyXcdazwjstjReport(); return getLySalaryReportService(user).listLyXcdazwjstjReport(param);
} }
public XSSFWorkbook exportXcdazwjstjReport(LySalaryReportQueryParam param) { public XSSFWorkbook exportXcdazwjstjReport(LySalaryReportQueryParam param) {
return getLySalaryReportService(user).exportXcdazwjstjReport(); return getLySalaryReportService(user).exportXcdazwjstjReport(param);
} }
public Map<String, Object> listLyTxdazjtjReport(LySalaryReportQueryParam param) { public Map<String, Object> listLyTxdazjtjReport(LySalaryReportQueryParam param) {