| | |
| | | import cn.iocoder.yudao.framework.common.util.object.BeanUtils; |
| | | import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.materialstock.vo.MesWmMaterialStockAdjustReqVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.materialstock.vo.MesWmMaterialStockFreezeReqVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.materialstock.vo.MesWmMaterialStockImportExcelVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.materialstock.vo.MesWmMaterialStockImportReqVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.materialstock.vo.MesWmMaterialStockImportRespVO; |
| | | 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.MesWmMaterialStockFreezeReqVO; |
| | | 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.md.vendor.MesMdVendorDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.materialstock.MesWmMaterialStockDO; |
| | | 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.mdm.api.unit.MdmUnitMeasureApi; |
| | | import cn.iocoder.yudao.module.mdm.api.unit.dto.MdmUnitMeasureRespDTO; |
| | | |
| | | import cn.iocoder.yudao.module.mes.service.md.vendor.MesMdVendorService; |
| | | import cn.iocoder.yudao.module.mes.service.wm.materialstock.MesWmMaterialStockService; |
| | | import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseAreaService; |
| | | import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseLocationService; |
| | |
| | | @Resource |
| | | private MesWmWarehouseAreaService areaService; |
| | | @Resource |
| | | private MesMdVendorService vendorService; |
| | | private SrmSupplierApi srmSupplierApi; |
| | | |
| | | @GetMapping("/get") |
| | | @Operation(summary = "获得库存记录") |
| | |
| | | return success(materialStockService.adjustMaterialStockOut(reqVO)); |
| | | } |
| | | |
| | | @PostMapping("/move") |
| | | @Operation(summary = "库存移库") |
| | | @PreAuthorize("@ss.hasPermission('mes:wm-material-stock:update')") |
| | | public CommonResult<Boolean> moveMaterialStock(@Valid @RequestBody MesWmMaterialStockMoveReqVO reqVO) { |
| | | materialStockService.moveMaterialStock(reqVO); |
| | | return success(true); |
| | | } |
| | | |
| | | @GetMapping("/export-excel") |
| | | @Operation(summary = "导出库存台账 Excel") |
| | | @PreAuthorize("@ss.hasPermission('mes:wm-material-stock:export')") |
| | |
| | | PageResult<MesWmMaterialStockDO> pageResult = materialStockService.getMaterialStockPage(pageReqVO); |
| | | ExcelUtils.write(response, "库存台账.xls", "数据", MesWmMaterialStockRespVO.class, |
| | | buildRespVOList(pageResult.getList())); |
| | | } |
| | | |
| | | @GetMapping("/import-template") |
| | | @Operation(summary = "下载库存现有量导入模板") |
| | | @PreAuthorize("@ss.hasPermission('mes:wm-material-stock:import')") |
| | | public void importTemplate(HttpServletResponse response) throws IOException { |
| | | // 输出示例数据,方便使用者参考 |
| | | List<MesWmMaterialStockImportExcelVO> list = List.of( |
| | | MesWmMaterialStockImportExcelVO.builder().itemCode("M001").warehouse("原料仓") |
| | | .location("A区").area("A-01").batchCode("B20260101").vendor("XX供应商") |
| | | .operationType("覆盖").quantity(new BigDecimal("100")).build() |
| | | ); |
| | | ExcelUtils.write(response, "库存现有量导入模板.xls", "库存列表", |
| | | MesWmMaterialStockImportExcelVO.class, list); |
| | | } |
| | | |
| | | @PostMapping("/import") |
| | | @Operation(summary = "导入库存现有量") |
| | | @PreAuthorize("@ss.hasPermission('mes:wm-material-stock:import')") |
| | | public CommonResult<MesWmMaterialStockImportRespVO> importExcel( |
| | | @Valid MesWmMaterialStockImportReqVO importReqVO) throws Exception { |
| | | List<MesWmMaterialStockImportExcelVO> list = ExcelUtils.read( |
| | | importReqVO.getFile(), MesWmMaterialStockImportExcelVO.class); |
| | | return success(materialStockService.importMaterialStockList(list)); |
| | | } |
| | | |
| | | // ==================== 拼接 VO ==================== |
| | |
| | | convertSet(list, MesWmMaterialStockDO::getLocationId)); |
| | | Map<Long, MesWmWarehouseAreaDO> areaMap = areaService.getWarehouseAreaMap( |
| | | convertSet(list, MesWmMaterialStockDO::getAreaId)); |
| | | Map<Long, MesMdVendorDO> vendorMap = vendorService.getVendorMap( |
| | | convertSet(list, MesWmMaterialStockDO::getVendorId)); |
| | | Map<Long, SrmSupplierRespDTO> vendorMap = srmSupplierApi.getSupplierList( |
| | | convertSet(list, MesWmMaterialStockDO::getVendorId)).getCheckedData().stream() |
| | | .collect(Collectors.toMap(SrmSupplierRespDTO::getId, s -> s)); |
| | | // 2. 构建结果 |
| | | return BeanUtils.toBean(list, MesWmMaterialStockRespVO.class, vo -> { |
| | | MapUtils.findAndThen(itemMap, vo.getItemId(), item -> { |