领悦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 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, 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);

View File

@ -273,4 +273,6 @@ public interface TaxAgentService {
List<TaxAgentConfig> getConfig();
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.taxagent.po.TaxAgentPO;
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.salaryaccounting.SalaryAcctRecordStatusEnum;
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.UfSbgjjMapper;
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.SalaryEntityUtil;
import com.engine.salary.util.SalaryI18nUtil;
@ -123,6 +126,10 @@ public class LySalaryReportServiceImpl extends Service implements LySalaryReport
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
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());
//能查看哪些档案
salaryArchivePOList = getAuthService(user).auth(salaryArchivePOList, AuthFilterTypeEnum.DATA_OPT , SalaryArchivePO.class);
BaseBean baseBean = new BaseBean();
String gwzjField = baseBean.getPropValue("lySalaryReport", "gwzj_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.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值
Long ndyssyzeItemId = SalaryEntityUtil.string2Long(baseBean.getPropValue("lySalaryReport", "xzdazjtj_ndyssrze_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");
if (!zj.equals(new Long("0")) && !zj.equals(new Long("1")) && !zj.equals(new Long("2"))) {
// 年度预算收入总额*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);
BigDecimal yjdjxValSum = zjSumValueMap.computeIfAbsent("yjdjx", k -> new BigDecimal("0"));
zjSumValueMap.put("yjdjx", yjdjxValSum.add(yjdjxVal));
@ -2906,8 +2927,12 @@ public class LySalaryReportServiceImpl extends Service implements LySalaryReport
// 计算年度收入总额占比
reportDTOS.stream().forEach(dto -> {
if (NumberUtils.isCreatable(dto.getNdsrze())) {
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());
if (allNdsrzeSumVal[0].compareTo(new BigDecimal("0")) == 0) {
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", "职级", "zj"));
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", "月度标准工资总额", "ydbzgzze"));
columns.add(new WeaTableColumn("150px", "月度绩效总额", "ydjxze"));
columns.add(new WeaTableColumn("150px", "1季度绩效总额", "yjdjxze"));
columns.add(new WeaTableColumn("150px", "2季度绩效总额", "ejdjxze"));
columns.add(new WeaTableColumn("150px", "3季度绩效总额", "sjdjxze"));
columns.add(new WeaTableColumn("150px", "4季度绩效总额", "sijdjxze"));
columns.add(new WeaTableColumn("150px", "1季度绩效总额(万元)", "yjdjxze"));
columns.add(new WeaTableColumn("150px", "2季度绩效总额(万元)", "ejdjxze"));
columns.add(new WeaTableColumn("150px", "3季度绩效总额(万元)", "sjdjxze"));
columns.add(new WeaTableColumn("150px", "4季度绩效总额(万元)", "sijdjxze"));
columns.add(new WeaTableColumn("150px", "年终奖总额", "nzjze"));
columns.add(new WeaTableColumn("150px", "季度绩效总额", "jdjxze"));
columns.add(new WeaTableColumn("150px", "季度绩效总额(万元)", "jdjxze"));
Map<String, Object> map = new HashMap<>();
// if (param.isExport()) {
@ -2996,8 +3021,8 @@ public class LySalaryReportServiceImpl extends Service implements LySalaryReport
}
@Override
public XSSFWorkbook exportXcdazjtjReport() {
Map<String, Object> resultMap = listLyXcdazjtjReport();
public XSSFWorkbook exportXcdazjtjReport(LySalaryReportQueryParam param) {
Map<String, Object> resultMap = listLyXcdazjtjReport(param);
List<LyDazjtjReportDTO> dataList = (List<LyDazjtjReportDTO>) resultMap.get("data");
List<WeaTableColumn> columns = (List<WeaTableColumn>) resultMap.get("columns");
// Map<String, Object> sum = (Map<String, Object>) resultMap.get("sum");
@ -3021,9 +3046,11 @@ public class LySalaryReportServiceImpl extends Service implements LySalaryReport
}
@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());
//能查看哪些档案
salaryArchivePOList = getAuthService(user).auth(salaryArchivePOList, AuthFilterTypeEnum.DATA_OPT , SalaryArchivePO.class);
BaseBean baseBean = new BaseBean();
String gwzjField = baseBean.getPropValue("lySalaryReport", "gwzj_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.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值
Long ndyssyzeItemId = SalaryEntityUtil.string2Long(baseBean.getPropValue("lySalaryReport", "xzdazjtj_ndyssrze_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");
if (!archive.getLyzj().equals(new Integer("0")) && !archive.getLyzj().equals(new Integer("1")) && !archive.getLyzj().equals(new Integer("2"))) {
// 年度预算收入总额*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);
BigDecimal yjdjxValSum = zjSumValueMap.computeIfAbsent("yjdjx", k -> new BigDecimal("0"));
zjSumValueMap.put("yjdjx", yjdjxValSum.add(yjdjxVal));
@ -3190,8 +3230,12 @@ public class LySalaryReportServiceImpl extends Service implements LySalaryReport
// 计算年度收入总额占比
reportDTOS.stream().forEach(dto -> {
if (NumberUtils.isCreatable(dto.getNdsrze())) {
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());
if (allNdsrzeSumVal[0].compareTo(new BigDecimal("0")) == 0) {
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", "职务角色", "zwjs"));
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", "月度标准工资总额", "ydbzgzze"));
columns.add(new WeaTableColumn("150px", "月度绩效总额", "ydjxze"));
columns.add(new WeaTableColumn("150px", "1季度绩效总额", "yjdjxze"));
columns.add(new WeaTableColumn("150px", "2季度绩效总额", "ejdjxze"));
columns.add(new WeaTableColumn("150px", "3季度绩效总额", "sjdjxze"));
columns.add(new WeaTableColumn("150px", "4季度绩效总额", "sijdjxze"));
columns.add(new WeaTableColumn("150px", "1季度绩效总额(万元)", "yjdjxze"));
columns.add(new WeaTableColumn("150px", "2季度绩效总额(万元)", "ejdjxze"));
columns.add(new WeaTableColumn("150px", "3季度绩效总额(万元)", "sjdjxze"));
columns.add(new WeaTableColumn("150px", "4季度绩效总额(万元)", "sijdjxze"));
columns.add(new WeaTableColumn("150px", "年终奖总额", "nzjze"));
columns.add(new WeaTableColumn("150px", "季度绩效总额", "jdjxze"));
columns.add(new WeaTableColumn("150px", "季度绩效总额(万元)", "jdjxze"));
Map<String, Object> map = new HashMap<>();
// if (param.isExport()) {
@ -3271,8 +3315,8 @@ public class LySalaryReportServiceImpl extends Service implements LySalaryReport
}
@Override
public XSSFWorkbook exportXcdazwjstjReport() {
Map<String, Object> resultMap = listLyXcdazwjstjReport();
public XSSFWorkbook exportXcdazwjstjReport(LySalaryReportQueryParam param) {
Map<String, Object> resultMap = listLyXcdazwjstjReport(param);
List<LyDazjtjReportDTO> dataList = (List<LyDazjtjReportDTO>) resultMap.get("data");
List<WeaTableColumn> columns = (List<WeaTableColumn>) resultMap.get("columns");
// Map<String, Object> sum = (Map<String, Object>) resultMap.get("sum");
@ -3311,8 +3355,9 @@ public class LySalaryReportServiceImpl extends Service implements LySalaryReport
} catch (UnsupportedEncodingException e) {
}
List<String> excluedeTxyy = Arrays.stream(excludeTxyy.split(",")).collect(Collectors.toList());
String sql = "select yg,ndyqsrze,txrq,dxyy from uf_txda where txrq >=? and txrq<=? ";
rs.executeQuery(sql, Arrays.asList(startDate, endDate));
String excluedeTxyyStr = "'" + StringUtils.join(excluedeTxyy, "','") + "'";
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<>();
while (rs.next()) {
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 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()));
});
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>();
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());
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);
zjTxze = zjTxze.add(txValue);
allNdtxzeSumVal[0] = allNdtxzeSumVal[0].add(txValue);
@ -3412,12 +3513,20 @@ public class LySalaryReportServiceImpl extends Service implements LySalaryReport
BigDecimal txZrc = BigDecimal.valueOf(zrc);
reportDTOS.stream().forEach(dto -> {
if (dto.getTxrc() != null) {
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 (txZrc.compareTo(new BigDecimal("0")) == 0) {
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())) {
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());
if (allNdtxzeSumVal[0].compareTo(new BigDecimal("0")) == 0) {
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", "调薪人次", "txrc"));
columns.add(new WeaTableColumn("150px", "占周期内调薪总人数比例", "zzqntxzrsbl"));
columns.add(new WeaTableColumn("150px", "年度调薪总额", "ndtxze"));
columns.add(new WeaTableColumn("150px", "年度调薪总额(万元)", "ndtxze"));
columns.add(new WeaTableColumn("150px", "占周期内调薪总额比例", "zzqntxzebl"));
Map<String, Object> map = new HashMap<>();
@ -3546,8 +3655,9 @@ public class LySalaryReportServiceImpl extends Service implements LySalaryReport
} catch (UnsupportedEncodingException e) {
}
List<String> excluedeTxyy = Arrays.stream(excludeTxyy.split(",")).collect(Collectors.toList());
String sql = "select yg,ndyqsrze,txrq,dxyy from uf_txda where txrq >=? and txrq<=? ";
rs.executeQuery(sql, Arrays.asList(startDate, endDate));
String excluedeTxyyStr = "'" + StringUtils.join(excluedeTxyy, "','") + "'";
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<>();
while (rs.next()) {
Date txrqDate = SalaryDateUtil.dateStrToLocalDate(rs.getString("txrq"));
@ -3560,6 +3670,35 @@ public class LySalaryReportServiceImpl extends Service implements LySalaryReport
.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 pqField = baseBean.getPropValue("lySalaryReport", "pq_field_id");
@ -3617,13 +3756,25 @@ public class LySalaryReportServiceImpl extends Service implements LySalaryReport
// 所有档案赋值职级
lyTxdaList.stream().forEach(txdaPO -> {
// int zj = empZjMap.get(txdaPO.getYg()) == null ? -1 : empZjMap.get(txdaPO.getYg());
// txdaPO.setLyzj(zj);
int zj = empZjMap.get(txdaPO.getYg()) == null ? -1 : empZjMap.get(txdaPO.getYg());
txdaPO.setLyzj(zj);
txdaPO.setLypq(Utils.null2String(empPqMap.get(txdaPO.getYg())));
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());
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>();
@ -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());
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);
zwjsTxze = zwjsTxze.add(txValue);
allNdtxzeSumVal[0] = allNdtxzeSumVal[0].add(txValue);
@ -3668,12 +3832,20 @@ public class LySalaryReportServiceImpl extends Service implements LySalaryReport
BigDecimal txZrc = BigDecimal.valueOf(zrc);
reportDTOS.stream().forEach(dto -> {
if (dto.getTxrc() != null) {
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 (allNdtxzeSumVal[0].compareTo(new BigDecimal("0")) == 0) {
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())) {
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());
if (allNdtxzeSumVal[0].compareTo(new BigDecimal("0")) == 0) {
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", "调薪人次", "txrc"));
columns.add(new WeaTableColumn("150px", "占周期内调薪总人数比例", "zzqntxzrsbl"));
columns.add(new WeaTableColumn("150px", "年度调薪总额", "ndtxze"));
columns.add(new WeaTableColumn("150px", "年度调薪总额(万元)", "ndtxze"));
columns.add(new WeaTableColumn("150px", "占周期内调薪总额比例", "zzqntxzebl"));
Map<String, Object> map = new HashMap<>();

View File

@ -864,5 +864,11 @@ public class TaxAgentServiceImpl extends Service implements TaxAgentService {
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) {
return getLySalaryReportService(user).listLyXcdazjtjReport();
return getLySalaryReportService(user).listLyXcdazjtjReport(param);
}
public XSSFWorkbook exportXcdazjtjReport(LySalaryReportQueryParam param) {
return getLySalaryReportService(user).exportXcdazjtjReport();
return getLySalaryReportService(user).exportXcdazjtjReport(param);
}
public Map<String, Object> listLyXcdazwjstjReport(LySalaryReportQueryParam param) {
return getLySalaryReportService(user).listLyXcdazwjstjReport();
return getLySalaryReportService(user).listLyXcdazwjstjReport(param);
}
public XSSFWorkbook exportXcdazwjstjReport(LySalaryReportQueryParam param) {
return getLySalaryReportService(user).exportXcdazwjstjReport();
return getLySalaryReportService(user).exportXcdazwjstjReport(param);
}
public Map<String, Object> listLyTxdazjtjReport(LySalaryReportQueryParam param) {