|
|
|
|
@ -10,16 +10,10 @@ import cn.iocoder.yudao.framework.common.util.number.NumberUtils;
|
|
|
|
|
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
|
|
|
|
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
|
|
|
|
|
import cn.iocoder.yudao.framework.ratelimiter.core.annotation.RateLimiter;
|
|
|
|
|
import cn.iocoder.yudao.module.erp.controller.admin.product.vo.product.ErpProductRespVO;
|
|
|
|
|
import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO;
|
|
|
|
|
import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductUnitDO;
|
|
|
|
|
import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.check.ErpStockCheckApproveRecordRespVO;
|
|
|
|
|
import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.check.ErpStockCheckAuditReqVO;
|
|
|
|
|
import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.check.ErpStockCheckGenerateByLocationReqVO;
|
|
|
|
|
import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.check.ErpStockCheckGenerateByProductReqVO;
|
|
|
|
|
import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.check.ErpStockCheckPageReqVO;
|
|
|
|
|
import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.check.ErpStockCheckRespVO;
|
|
|
|
|
import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.check.ErpStockCheckSaveReqVO;
|
|
|
|
|
import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.check.ErpStockCheckSubmitReqVO;
|
|
|
|
|
import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.check.*;
|
|
|
|
|
import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockCheckApproveRecordDO;
|
|
|
|
|
import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockCheckDO;
|
|
|
|
|
import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockCheckItemDO;
|
|
|
|
|
@ -186,6 +180,64 @@ public class ErpStockCheckController {
|
|
|
|
|
ExcelUtils.write(response, "库存盘点单.xls", "数据", ErpStockCheckRespVO.class, list);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@GetMapping("/record-page")
|
|
|
|
|
@Operation(summary = "获得库存盘点记录分页")
|
|
|
|
|
@PreAuthorize("@ss.hasPermission('erp:stock-check:query')")
|
|
|
|
|
public CommonResult<PageResult<ErpStockCheckRecordRespVO>> getStockCheckRecordPage(
|
|
|
|
|
@Valid ErpStockCheckRecordPageReqVO pageReqVO) {
|
|
|
|
|
return success(buildStockCheckRecordVOPageResult(stockCheckService.getStockCheckRecordPage(pageReqVO)));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@GetMapping("/record-export-excel")
|
|
|
|
|
@Operation(summary = "导出库存盘点记录 Excel")
|
|
|
|
|
@PreAuthorize("@ss.hasPermission('erp:stock-check:export')")
|
|
|
|
|
@ApiAccessLog(operateType = EXPORT)
|
|
|
|
|
public void exportStockCheckRecordExcel(@Valid ErpStockCheckRecordPageReqVO pageReqVO,
|
|
|
|
|
HttpServletResponse response) throws IOException {
|
|
|
|
|
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
|
|
|
|
|
List<ErpStockCheckRecordRespVO> list = buildStockCheckRecordVOPageResult(
|
|
|
|
|
stockCheckService.getStockCheckRecordPage(pageReqVO)).getList();
|
|
|
|
|
ExcelUtils.write(response, "库存盘点记录.xls", "数据", ErpStockCheckRecordRespVO.class, list);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private PageResult<ErpStockCheckRecordRespVO> buildStockCheckRecordVOPageResult(PageResult<ErpStockCheckItemDO> pageResult) {
|
|
|
|
|
if (CollUtil.isEmpty(pageResult.getList())) {
|
|
|
|
|
return PageResult.empty(pageResult.getTotal());
|
|
|
|
|
}
|
|
|
|
|
Map<Long, ErpStockCheckDO> stockCheckMap = stockCheckService.getStockCheckMap(
|
|
|
|
|
convertSet(pageResult.getList(), ErpStockCheckItemDO::getCheckId));
|
|
|
|
|
Map<Long, ErpProductRespVO> productMap = productService.getProductVOMap(
|
|
|
|
|
convertSet(pageResult.getList(), ErpStockCheckItemDO::getProductId));
|
|
|
|
|
Map<Long, ErpProductUnitDO> unitMap = productUnitService.getProductUnitMap(convertSet(productMap.values(), ErpProductRespVO::getUnitId));
|
|
|
|
|
Map<Long, ErpWarehouseDO> warehouseMap = warehouseService.getWarehouseMap(
|
|
|
|
|
convertSet(pageResult.getList(), ErpStockCheckItemDO::getWarehouseId));
|
|
|
|
|
Map<Long, WarehouseAreaDO> areaMap = warehouseAreaService.getWarehouseAreaMap(
|
|
|
|
|
convertSet(pageResult.getList(), ErpStockCheckItemDO::getAreaId));
|
|
|
|
|
Map<Long, AdminUserRespDTO> userMap = adminUserApi.getUserMap(convertListByFlatMap(stockCheckMap.values(),
|
|
|
|
|
stockCheck -> Stream.of(NumberUtils.parseLong(stockCheck.getCreator()))));
|
|
|
|
|
return BeanUtils.toBean(pageResult, ErpStockCheckRecordRespVO.class, record -> {
|
|
|
|
|
MapUtils.findAndThen(stockCheckMap, record.getCheckId(), stockCheck -> {
|
|
|
|
|
record.setNo(stockCheck.getNo())
|
|
|
|
|
.setCheckTime(stockCheck.getCheckTime())
|
|
|
|
|
.setSourceType(stockCheck.getSourceType())
|
|
|
|
|
.setCategoryType(stockCheck.getCategoryType())
|
|
|
|
|
.setCheckStatus(stockCheck.getCheckStatus())
|
|
|
|
|
.setStatus(stockCheck.getStatus())
|
|
|
|
|
.setCreator(stockCheck.getCreator())
|
|
|
|
|
.setCreateTime(stockCheck.getCreateTime());
|
|
|
|
|
MapUtils.findAndThen(userMap, NumberUtils.parseLong(stockCheck.getCreator()), user -> record.setCreatorName(user.getNickname()));
|
|
|
|
|
});
|
|
|
|
|
MapUtils.findAndThen(productMap, record.getProductId(), product -> record.setProductName(product.getName())
|
|
|
|
|
.setProductBarCode(product.getBarCode()).setCategoryName(product.getCategoryName()));
|
|
|
|
|
MapUtils.findAndThen(productMap, record.getProductId(), product ->
|
|
|
|
|
MapUtils.findAndThen(unitMap, product.getUnitId(), unit -> record.setProductUnitName(unit.getName())));
|
|
|
|
|
MapUtils.findAndThen(warehouseMap, record.getWarehouseId(), warehouse -> record.setWarehouseName(warehouse.getName()));
|
|
|
|
|
if (record.getAreaName() == null) {
|
|
|
|
|
MapUtils.findAndThen(areaMap, record.getAreaId(), area -> record.setAreaName(area.getAreaName()));
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private PageResult<ErpStockCheckRespVO> buildStockCheckVOPageResult(PageResult<ErpStockCheckDO> pageResult) {
|
|
|
|
|
if (CollUtil.isEmpty(pageResult.getList())) {
|
|
|
|
|
return PageResult.empty(pageResult.getTotal());
|
|
|
|
|
|