汇通建设 增加导出、搜索
This commit is contained in:
parent
17f6d1e7ca
commit
1c6b55f8f5
|
|
@ -35,5 +35,11 @@ public class HtjsApprovalParam extends BaseQueryParam {
|
|||
|
||||
List<HtXcssItemDTO> htXcssItemDTOList;
|
||||
|
||||
String userName;
|
||||
|
||||
List<Long> departmentIds;
|
||||
|
||||
boolean sum;
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -145,6 +145,10 @@ public interface SalaryAcctExcelService {
|
|||
*/
|
||||
Map<String, Object> exportTemplateList(SalaryAcctResultTemplateSaveParam param);
|
||||
|
||||
XSSFWorkbook exportHtjsXcssDataDetail(HtjsApprovalParam param);
|
||||
|
||||
XSSFWorkbook exportXczfsqDataDetail(HtjsApprovalParam param);
|
||||
|
||||
//
|
||||
// /**
|
||||
// * 薪资核算结果校验异常导出
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ package com.engine.salary.service.impl;
|
|||
|
||||
import cn.hutool.core.util.NumberUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.api.formmode.mybatis.util.SqlProxyHandle;
|
||||
import com.cloudstore.dev.api.util.Util_DataCache;
|
||||
import com.engine.common.util.ServiceUtil;
|
||||
|
|
@ -17,10 +18,7 @@ import com.engine.salary.entity.salaryacct.bo.SalaryAcctConfig;
|
|||
import com.engine.salary.entity.salaryacct.bo.SalaryAcctEmployeeBO;
|
||||
import com.engine.salary.entity.salaryacct.bo.SalaryAcctResultBO;
|
||||
import com.engine.salary.entity.salaryacct.bo.SalaryAcctResultLogBO;
|
||||
import com.engine.salary.entity.salaryacct.dto.SalaryAccEmployeeListDTO;
|
||||
import com.engine.salary.entity.salaryacct.dto.SalaryAcctImportFieldDTO;
|
||||
import com.engine.salary.entity.salaryacct.dto.SalaryAcctResultTemplateDTO;
|
||||
import com.engine.salary.entity.salaryacct.dto.SalaryComparisonResultListDTO;
|
||||
import com.engine.salary.entity.salaryacct.dto.*;
|
||||
import com.engine.salary.entity.salaryacct.param.*;
|
||||
import com.engine.salary.entity.salaryacct.po.*;
|
||||
import com.engine.salary.entity.salaryitem.po.SalaryItemPO;
|
||||
|
|
@ -71,9 +69,11 @@ import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
|||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.util.StopWatch;
|
||||
import weaver.file.ImageFileManager;
|
||||
import weaver.general.BaseBean;
|
||||
import weaver.hrm.User;
|
||||
|
||||
import java.io.InputStream;
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
|
@ -1585,6 +1585,68 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc
|
|||
|
||||
return resultMap;
|
||||
}
|
||||
|
||||
@Override
|
||||
public XSSFWorkbook exportHtjsXcssDataDetail(HtjsApprovalParam param) {
|
||||
param.setSum(true);
|
||||
// 获取需要查询的薪资项目
|
||||
BaseBean baseBean = new BaseBean();
|
||||
String xcssConfig = baseBean.getPropValue("htjsSalaryApproval", "xcss_config");
|
||||
try {
|
||||
xcssConfig = new String(xcssConfig.getBytes("ISO-8859-1"), "UTF-8");
|
||||
} catch (UnsupportedEncodingException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
List<HtXcssItemDTO> htXcssItemDTOList = JSON.parseArray(xcssConfig, HtXcssItemDTO.class);
|
||||
param.setHtXcssItemDTOList(htXcssItemDTOList);
|
||||
Map<String, Object> resultMap = getSalaryAcctResultService(user).htjsXcssDataDetail(param);
|
||||
List<Map<String, Object>> resultList = ((PageInfo<Map<String, Object>>) resultMap.get("pageInfo")).getList();
|
||||
List<WeaTableColumnGroup> columns = (List<WeaTableColumnGroup>)resultMap.get("columns");
|
||||
List<Object> columnList = columns.stream().map(WeaTableColumnGroup::getText).collect(Collectors.toList());
|
||||
|
||||
List<List<Object>> rows = new ArrayList<>();
|
||||
rows.add(columnList);
|
||||
for (Map<String, Object> result : resultList) {
|
||||
List<Object> singleRow = new ArrayList<>();
|
||||
for (WeaTableColumnGroup column : columns) {
|
||||
singleRow.add(result.getOrDefault(column.getColumn(),""));
|
||||
}
|
||||
rows.add(singleRow);
|
||||
}
|
||||
String sheetName = "薪酬送审";
|
||||
return ExcelUtilPlus.genWorkbookV2(rows, sheetName);
|
||||
}
|
||||
|
||||
@Override
|
||||
public XSSFWorkbook exportXczfsqDataDetail(HtjsApprovalParam param) {
|
||||
param.setSum(true);
|
||||
// 获取需要查询的薪资项目
|
||||
BaseBean baseBean = new BaseBean();
|
||||
String xcssConfig = baseBean.getPropValue("htjsSalaryApproval", "xczf_config");
|
||||
try {
|
||||
xcssConfig = new String(xcssConfig.getBytes("ISO-8859-1"), "UTF-8");
|
||||
} catch (UnsupportedEncodingException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
List<HtXcssItemDTO> htXcssItemDTOList = JSON.parseArray(xcssConfig, HtXcssItemDTO.class);
|
||||
param.setHtXcssItemDTOList(htXcssItemDTOList);
|
||||
Map<String, Object> resultMap = getSalaryAcctResultService(user).htjsXcssDataDetail(param);
|
||||
List<Map<String, Object>> resultList = ((PageInfo<Map<String, Object>>) resultMap.get("pageInfo")).getList();
|
||||
List<WeaTableColumnGroup> columns = (List<WeaTableColumnGroup>)resultMap.get("columns");
|
||||
List<Object> columnList = columns.stream().map(WeaTableColumnGroup::getText).collect(Collectors.toList());
|
||||
|
||||
List<List<Object>> rows = new ArrayList<>();
|
||||
rows.add(columnList);
|
||||
for (Map<String, Object> result : resultList) {
|
||||
List<Object> singleRow = new ArrayList<>();
|
||||
for (WeaTableColumnGroup column : columns) {
|
||||
singleRow.add(result.getOrDefault(column.getColumn(),""));
|
||||
}
|
||||
rows.add(singleRow);
|
||||
}
|
||||
String sheetName = "薪酬支付申请";
|
||||
return ExcelUtilPlus.genWorkbookV2(rows, sheetName);
|
||||
}
|
||||
// @Override
|
||||
// public Map<String, Object> exportCheckResult(
|
||||
// SalaryCheckResultExportParam exportParam,
|
||||
|
|
|
|||
|
|
@ -1323,9 +1323,20 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe
|
|||
List<SalaryAcctEmployeePO> salaryAcctEmployeePOList = getSalaryAcctEmployeeService(user).listBySalaryAcctRecordIds(salaryAcctRecordIds);
|
||||
// 根据单位过滤
|
||||
salaryAcctEmployeePOList = salaryAcctEmployeePOList.stream().filter(acctEmp -> acctEmp.getSubcompanyId() != null && acctEmp.getSubcompanyId().equals(param.getSubcompanyId())).collect(Collectors.toList());
|
||||
if (CollectionUtils.isNotEmpty(param.getDepartmentIds())) {
|
||||
salaryAcctEmployeePOList = salaryAcctEmployeePOList.stream().filter(acctEmp -> param.getDepartmentIds().contains(acctEmp.getDepartmentId())).collect(Collectors.toList());
|
||||
}
|
||||
if (StringUtils.isNotBlank(param.getUserName())) {
|
||||
Set<Long> empIdList = SalaryEntityUtil.properties(salaryAcctEmployeePOList, SalaryAcctEmployeePO::getEmployeeId);
|
||||
List<DataCollectionEmployee> employeeList = getSalaryEmployeeService(user).listByIds(empIdList.stream().collect(Collectors.toList()));
|
||||
List<Long> empIds = employeeList.stream().filter(emp -> emp.getUsername().contains(param.getUserName())).map(DataCollectionEmployee::getEmployeeId).collect(Collectors.toList());
|
||||
salaryAcctEmployeePOList = salaryAcctEmployeePOList.stream().filter(acctEmp -> empIds.contains(acctEmp.getEmployeeId())).collect(Collectors.toList());
|
||||
}
|
||||
// 分页
|
||||
PageInfo<SalaryAcctEmployeePO> salaryAcctEmployeePageInfo = SalaryPageUtil.buildPage(param.getCurrent(), param.getPageSize(), salaryAcctEmployeePOList, SalaryAcctEmployeePO.class);
|
||||
|
||||
if (param.isSum()) {
|
||||
salaryAcctEmployeePageInfo.setList(salaryAcctEmployeePOList);
|
||||
}
|
||||
|
||||
Map<String, Long> salaryItemNameMap = SalaryEntityUtil.convert2Map(getSalaryItemService(user).listAll(), SalaryItemPO::getName, SalaryItemPO::getId);
|
||||
for(HtXcssItemDTO dto : param.getHtXcssItemDTOList()) {
|
||||
|
|
@ -1430,54 +1441,54 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe
|
|||
}
|
||||
// 明细数据
|
||||
Map<String, Object> dataList = htjsXcssList(param);
|
||||
// 获取累计数据
|
||||
BaseBean baseBean = new BaseBean();
|
||||
String itemId = baseBean.getPropValue("htjsSalaryApproval", "xczf_sum_item_id");
|
||||
BigDecimal totalValueLastMonth = new BigDecimal(0);
|
||||
BigDecimal totalValue = new BigDecimal(0);
|
||||
if (NumberUtils.isCreatable(itemId)) {
|
||||
SalaryItemPO salaryItemPO = getSalaryItemService(user).getById(Long.valueOf(itemId));
|
||||
// 获取截至本月上一个月的核算记录
|
||||
Date lastMonthDate = SalaryDateUtil.localDateToDate(SalaryDateUtil.dateToLocalDate(param.getSalaryMonthDate()).plusMonths(-1));
|
||||
List<SalaryAcctRecordPO> salaryAcctRecordPOS = getSalaryAcctRecordService(user).listBySalaryMonth(LocalDateRange.builder().endDate(lastMonthDate).build());
|
||||
salaryAcctRecordPOS = salaryAcctRecordPOS.stream().filter(record -> record.getStatus() > SalaryAcctRecordStatusEnum.NOT_ARCHIVED.getValue()).collect(Collectors.toList());
|
||||
// 获取薪资核算人员
|
||||
List<Long> salaryAcctRecordIds = salaryAcctRecordPOS.stream().map(SalaryAcctRecordPO::getId).collect(Collectors.toList());
|
||||
List<SalaryAcctEmployeePO> salaryAcctEmployeeList = getSalaryAcctEmployeeService(user).listBySalaryAcctRecordIds(salaryAcctRecordIds);
|
||||
// 过滤单位
|
||||
salaryAcctEmployeeList = salaryAcctEmployeeList.stream().filter(acctEmp -> acctEmp.getSubcompanyId() != null && param.getSubcompanyId().equals(acctEmp.getSubcompanyId())).collect(Collectors.toList());
|
||||
List<Long> salaryAcctEmpIds = SalaryEntityUtil.properties(salaryAcctEmployeeList, SalaryAcctEmployeePO::getId, Collectors.toList());
|
||||
// 获取薪资核算结果
|
||||
List<SalaryAcctResultPO> resultPOList = listByAcctEmployeeIdsAndSalaryItemIds(salaryAcctEmpIds, Collections.singletonList(salaryItemPO.getId()));
|
||||
totalValueLastMonth = resultPOList.stream()
|
||||
.map(SalaryAcctResultPO::getResultValue)
|
||||
.filter(NumberUtils::isCreatable)
|
||||
.map(BigDecimal::new)
|
||||
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||
|
||||
// 获取本月的数据
|
||||
salaryAcctRecordPOS = getSalaryAcctRecordService(user).listBySalaryMonth(LocalDateRange.builder().fromDate(param.getSalaryMonthDate()).endDate(param.getSalaryMonthDate()).build());
|
||||
salaryAcctRecordPOS = salaryAcctRecordPOS.stream().filter(record -> record.getStatus() > SalaryAcctRecordStatusEnum.NOT_ARCHIVED.getValue()).collect(Collectors.toList());
|
||||
// 获取薪资核算人员
|
||||
salaryAcctRecordIds = salaryAcctRecordPOS.stream().map(SalaryAcctRecordPO::getId).collect(Collectors.toList());
|
||||
salaryAcctEmployeeList = getSalaryAcctEmployeeService(user).listBySalaryAcctRecordIds(salaryAcctRecordIds);
|
||||
// 过滤单位
|
||||
salaryAcctEmployeeList = salaryAcctEmployeeList.stream().filter(acctEmp -> acctEmp.getSubcompanyId() != null && param.getSubcompanyId().equals(acctEmp.getSubcompanyId())).collect(Collectors.toList());
|
||||
salaryAcctEmpIds = SalaryEntityUtil.properties(salaryAcctEmployeeList, SalaryAcctEmployeePO::getId, Collectors.toList());
|
||||
// 获取薪资核算结果
|
||||
resultPOList = listByAcctEmployeeIdsAndSalaryItemIds(salaryAcctEmpIds, Collections.singletonList(salaryItemPO.getId()));
|
||||
BigDecimal thisMonthValue = resultPOList.stream()
|
||||
.map(SalaryAcctResultPO::getResultValue)
|
||||
.filter(NumberUtils::isCreatable)
|
||||
.map(BigDecimal::new)
|
||||
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||
totalValue = totalValueLastMonth.add(thisMonthValue);
|
||||
}
|
||||
// // 获取累计数据
|
||||
// BaseBean baseBean = new BaseBean();
|
||||
// // String itemId = baseBean.getPropValue("htjsSalaryApproval", "xczf_sum_item_id");
|
||||
// BigDecimal totalValueLastMonth = new BigDecimal(0);
|
||||
// BigDecimal totalValue = new BigDecimal(0);
|
||||
// if (NumberUtils.isCreatable(itemId)) {
|
||||
// SalaryItemPO salaryItemPO = getSalaryItemService(user).getById(Long.valueOf(itemId));
|
||||
// // 获取截至本月上一个月的核算记录
|
||||
// Date lastMonthDate = SalaryDateUtil.localDateToDate(SalaryDateUtil.dateToLocalDate(param.getSalaryMonthDate()).plusMonths(-1));
|
||||
// List<SalaryAcctRecordPO> salaryAcctRecordPOS = getSalaryAcctRecordService(user).listBySalaryMonth(LocalDateRange.builder().endDate(lastMonthDate).build());
|
||||
// salaryAcctRecordPOS = salaryAcctRecordPOS.stream().filter(record -> record.getStatus() > SalaryAcctRecordStatusEnum.NOT_ARCHIVED.getValue()).collect(Collectors.toList());
|
||||
// // 获取薪资核算人员
|
||||
// List<Long> salaryAcctRecordIds = salaryAcctRecordPOS.stream().map(SalaryAcctRecordPO::getId).collect(Collectors.toList());
|
||||
// List<SalaryAcctEmployeePO> salaryAcctEmployeeList = getSalaryAcctEmployeeService(user).listBySalaryAcctRecordIds(salaryAcctRecordIds);
|
||||
// // 过滤单位
|
||||
// salaryAcctEmployeeList = salaryAcctEmployeeList.stream().filter(acctEmp -> acctEmp.getSubcompanyId() != null && param.getSubcompanyId().equals(acctEmp.getSubcompanyId())).collect(Collectors.toList());
|
||||
// List<Long> salaryAcctEmpIds = SalaryEntityUtil.properties(salaryAcctEmployeeList, SalaryAcctEmployeePO::getId, Collectors.toList());
|
||||
// // 获取薪资核算结果
|
||||
// List<SalaryAcctResultPO> resultPOList = listByAcctEmployeeIdsAndSalaryItemIds(salaryAcctEmpIds, Collections.singletonList(salaryItemPO.getId()));
|
||||
// totalValueLastMonth = resultPOList.stream()
|
||||
// .map(SalaryAcctResultPO::getResultValue)
|
||||
// .filter(NumberUtils::isCreatable)
|
||||
// .map(BigDecimal::new)
|
||||
// .reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||
//
|
||||
// // 获取本月的数据
|
||||
// salaryAcctRecordPOS = getSalaryAcctRecordService(user).listBySalaryMonth(LocalDateRange.builder().fromDate(param.getSalaryMonthDate()).endDate(param.getSalaryMonthDate()).build());
|
||||
// salaryAcctRecordPOS = salaryAcctRecordPOS.stream().filter(record -> record.getStatus() > SalaryAcctRecordStatusEnum.NOT_ARCHIVED.getValue()).collect(Collectors.toList());
|
||||
// // 获取薪资核算人员
|
||||
// salaryAcctRecordIds = salaryAcctRecordPOS.stream().map(SalaryAcctRecordPO::getId).collect(Collectors.toList());
|
||||
// salaryAcctEmployeeList = getSalaryAcctEmployeeService(user).listBySalaryAcctRecordIds(salaryAcctRecordIds);
|
||||
// // 过滤单位
|
||||
// salaryAcctEmployeeList = salaryAcctEmployeeList.stream().filter(acctEmp -> acctEmp.getSubcompanyId() != null && param.getSubcompanyId().equals(acctEmp.getSubcompanyId())).collect(Collectors.toList());
|
||||
// salaryAcctEmpIds = SalaryEntityUtil.properties(salaryAcctEmployeeList, SalaryAcctEmployeePO::getId, Collectors.toList());
|
||||
// // 获取薪资核算结果
|
||||
// resultPOList = listByAcctEmployeeIdsAndSalaryItemIds(salaryAcctEmpIds, Collections.singletonList(salaryItemPO.getId()));
|
||||
// BigDecimal thisMonthValue = resultPOList.stream()
|
||||
// .map(SalaryAcctResultPO::getResultValue)
|
||||
// .filter(NumberUtils::isCreatable)
|
||||
// .map(BigDecimal::new)
|
||||
// .reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||
// totalValue = totalValueLastMonth.add(thisMonthValue);
|
||||
// }
|
||||
Map<String, Object> resultMap = new HashMap<>();
|
||||
resultMap.put("columns", dataList.get("columns"));
|
||||
resultMap.put("data", dataList.get("data"));
|
||||
resultMap.put("ljjhzf",totalValue);
|
||||
resultMap.put("ljyzf", totalValueLastMonth);
|
||||
// resultMap.put("ljjhzf",totalValue);
|
||||
// resultMap.put("ljyzf", totalValueLastMonth);
|
||||
return resultMap;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -961,6 +961,37 @@ public class SalaryAcctController {
|
|||
return new ResponseResult<HtjsApprovalParam, Map<String, Object>>(user).run(getSalaryAcctResultWrapper(user)::htjsXcssDataDetail, param);
|
||||
}
|
||||
|
||||
/**
|
||||
* 薪酬送审 数据穿透 导出
|
||||
* @param request
|
||||
* @param response
|
||||
* @param param
|
||||
* @return
|
||||
*/
|
||||
@POST
|
||||
@Path("/htjs/exportXcssDataDetail")
|
||||
@Produces(MediaType.APPLICATION_OCTET_STREAM)
|
||||
public Response exportHtjsXcssDataDetail(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody HtjsApprovalParam param) {
|
||||
try {
|
||||
User user = HrmUserVarify.getUser(request, response);
|
||||
XSSFWorkbook workbook = getSalaryAcctExcelWrapper(user).exportHtjsXcssDataDetail(param);
|
||||
String fileName = "薪酬送审" + LocalDate.now();
|
||||
try {
|
||||
fileName = URLEncoder.encode(fileName + ".xlsx", "UTF-8");
|
||||
} catch (UnsupportedEncodingException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
StreamingOutput output = outputStream -> {
|
||||
workbook.write(outputStream);
|
||||
outputStream.flush();
|
||||
};
|
||||
response.setContentType("application/octet-stream");
|
||||
return Response.ok(output).header("Content-disposition", "attachment;filename=" + fileName).header("Cache-Control", "no-cache").build();
|
||||
} catch (Exception e) {
|
||||
log.error("薪酬送审结果导出异常", e);
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
|
|
@ -993,6 +1024,38 @@ public class SalaryAcctController {
|
|||
return new ResponseResult<HtjsApprovalParam, Map<String, Object>>(user).run(getSalaryAcctResultWrapper(user)::htjsXczfsqDataDetail, param);
|
||||
}
|
||||
|
||||
/**
|
||||
* 薪酬支付申请 数据穿透 导出
|
||||
* @param request
|
||||
* @param response
|
||||
* @param param
|
||||
* @return
|
||||
*/
|
||||
@POST
|
||||
@Path("/htjs/exportXczfsqDataDetail")
|
||||
@Produces(MediaType.APPLICATION_OCTET_STREAM)
|
||||
public Response exportXczfsqDataDetail(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody HtjsApprovalParam param) {
|
||||
try {
|
||||
User user = HrmUserVarify.getUser(request, response);
|
||||
XSSFWorkbook workbook = getSalaryAcctExcelWrapper(user).exportXczfsqDataDetail(param);
|
||||
String fileName = "薪酬支付申请" + LocalDate.now();
|
||||
try {
|
||||
fileName = URLEncoder.encode(fileName + ".xlsx", "UTF-8");
|
||||
} catch (UnsupportedEncodingException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
StreamingOutput output = outputStream -> {
|
||||
workbook.write(outputStream);
|
||||
outputStream.flush();
|
||||
};
|
||||
response.setContentType("application/octet-stream");
|
||||
return Response.ok(output).header("Content-disposition", "attachment;filename=" + fileName).header("Cache-Control", "no-cache").build();
|
||||
} catch (Exception e) {
|
||||
log.error("薪酬支付申请导出异常", e);
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 薪酬支付申请list
|
||||
* @param request
|
||||
|
|
|
|||
|
|
@ -92,6 +92,14 @@ public class SalaryAcctExcelWrapper extends Service {
|
|||
return getSalaryAcctExcelService(user).exportComparisonResultTemplate(exportParam);
|
||||
}
|
||||
|
||||
public XSSFWorkbook exportHtjsXcssDataDetail(HtjsApprovalParam param) {
|
||||
return getSalaryAcctExcelService(user).exportHtjsXcssDataDetail(param);
|
||||
}
|
||||
|
||||
public XSSFWorkbook exportXczfsqDataDetail(HtjsApprovalParam param) {
|
||||
return getSalaryAcctExcelService(user).exportXczfsqDataDetail(param);
|
||||
}
|
||||
|
||||
// /**
|
||||
// * 薪资核算结果校验异常导出
|
||||
// *
|
||||
|
|
|
|||
Loading…
Reference in New Issue