| | |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.materialstock.vo.MesWmMaterialStockMoveReqVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.materialstock.vo.MesWmMaterialStockPageReqVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.materialstock.vo.MesWmMaterialStockRespVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.materialstock.vo.MesWmMaterialStockListReqVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.materialstock.vo.MesWmMaterialStockBagPageReqVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.materialstock.vo.MesWmMaterialStockBagRespVO; |
| | | import cn.iocoder.yudao.module.mes.dal.mysql.wm.materialstockbag.MesWmMaterialStockBagMapper; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.materialstock.vo.MesWmStockSummaryRespVO; |
| | | import cn.iocoder.yudao.module.srm.api.supplier.SrmSupplierApi; |
| | | import cn.iocoder.yudao.module.srm.api.supplier.dto.SrmSupplierRespDTO; |
| | | import cn.iocoder.yudao.module.mdm.api.item.MdmItemApi; |
| | | import cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemRespDTO; |
| | | |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.materialstock.MesWmMaterialStockDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.materialstockbag.MesWmMaterialStockBagDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseAreaDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseLocationDO; |
| | |
| | | private MesWmWarehouseAreaService areaService; |
| | | @Resource |
| | | private SrmSupplierApi srmSupplierApi; |
| | | @Resource |
| | | private MesWmMaterialStockBagMapper materialStockBagMapper; |
| | | |
| | | @GetMapping("/get") |
| | | @Operation(summary = "获得库存记录") |
| | |
| | | @Valid MesWmMaterialStockPageReqVO pageReqVO) { |
| | | PageResult<MesWmMaterialStockDO> pageResult = materialStockService.getMaterialStockPage(pageReqVO); |
| | | return success(new PageResult<>(buildRespVOList(pageResult.getList()), pageResult.getTotal())); |
| | | } |
| | | |
| | | @GetMapping("/bag-details") |
| | | @Operation(summary = "查询库存袋码明细") |
| | | @PreAuthorize("@ss.hasPermission('mes:wm-material-stock:query')") |
| | | public CommonResult<PageResult<MesWmMaterialStockBagRespVO>> getMaterialStockBagDetails( |
| | | @Valid MesWmMaterialStockBagPageReqVO pageReqVO) { |
| | | PageResult<MesWmMaterialStockBagRespVO> result = new PageResult<>(); |
| | | PageResult<cn.iocoder.yudao.module.mes.dal.dataobject.wm.materialstockbag.MesWmMaterialStockBagDO> page = |
| | | materialStockBagMapper.selectPage(pageReqVO); |
| | | return success(new PageResult<>(BeanUtils.toBean(page.getList(), MesWmMaterialStockBagRespVO.class), page.getTotal())); |
| | | } |
| | | |
| | | @PutMapping("/update-frozen") |
| | |
| | | return success(true); |
| | | } |
| | | |
| | | @GetMapping("/summary-by-item") |
| | | @Operation(summary = "按品种汇总库存数量") |
| | | @PreAuthorize("@ss.hasPermission('mes:wm-material-stock:query')") |
| | | public CommonResult<List<MesWmStockSummaryRespVO>> getStockSummaryByItem( |
| | | MesWmMaterialStockListReqVO reqVO) { |
| | | return success(materialStockService.getStockSummaryByItem(reqVO)); |
| | | } |
| | | |
| | | @GetMapping("/summary-by-batch") |
| | | @Operation(summary = "按批次汇总库存数量") |
| | | @PreAuthorize("@ss.hasPermission('mes:wm-material-stock:query')") |
| | | public CommonResult<List<MesWmStockSummaryRespVO>> getStockSummaryByBatch( |
| | | MesWmMaterialStockListReqVO reqVO) { |
| | | return success(materialStockService.getStockSummaryByBatch(reqVO)); |
| | | } |
| | | |
| | | @GetMapping("/summary-by-warehouse") |
| | | @Operation(summary = "按仓库汇总库存数量") |
| | | @PreAuthorize("@ss.hasPermission('mes:wm-material-stock:query')") |
| | | public CommonResult<List<MesWmStockSummaryRespVO>> getStockSummaryByWarehouse( |
| | | MesWmMaterialStockListReqVO reqVO) { |
| | | return success(materialStockService.getStockSummaryByWarehouse(reqVO)); |
| | | } |
| | | |
| | | @GetMapping("/export-excel") |
| | | @Operation(summary = "导出库存台账 Excel") |
| | | @PreAuthorize("@ss.hasPermission('mes:wm-material-stock:export')") |
| | |
| | | convertSet(list, MesWmMaterialStockDO::getLocationId)); |
| | | Map<Long, MesWmWarehouseAreaDO> areaMap = areaService.getWarehouseAreaMap( |
| | | convertSet(list, MesWmMaterialStockDO::getAreaId)); |
| | | Map<Long, Long> bagCountMap = materialStockBagMapper.selectListByMaterialStockIds( |
| | | convertSet(list, MesWmMaterialStockDO::getId)).stream() |
| | | .collect(Collectors.groupingBy(MesWmMaterialStockBagDO::getMaterialStockId, Collectors.counting())); |
| | | Map<Long, SrmSupplierRespDTO> vendorMap = srmSupplierApi.getSupplierList( |
| | | convertSet(list, MesWmMaterialStockDO::getVendorId)).getCheckedData().stream() |
| | | .collect(Collectors.toMap(SrmSupplierRespDTO::getId, s -> s)); |
| | |
| | | area -> vo.setAreaName(area.getName())); |
| | | MapUtils.findAndThen(vendorMap, vo.getVendorId(), |
| | | vendor -> vo.setVendorName(vendor.getName())); |
| | | vo.setBagCount(bagCountMap.getOrDefault(vo.getId(), 0L)); |
| | | vo.setBagDetailSupported(bagCountMap.containsKey(vo.getId())); |
| | | // 计算可用量 = 在库数量 - 冻结数量 - 占用量 |
| | | BigDecimal quantity = vo.getQuantity() != null ? vo.getQuantity() : BigDecimal.ZERO; |
| | | BigDecimal frozenQty = vo.getFrozenQuantity() != null ? vo.getFrozenQuantity() : BigDecimal.ZERO; |