仓储执行单;

This commit is contained in:
王奎兴
2026-06-24 17:45:44 +08:00
parent ce8e340116
commit a6e727e04a
74 changed files with 21701 additions and 0 deletions
@@ -0,0 +1,83 @@
package com.mhd.oms.interfaces.facade.executionInMaterialDetail;
import com.mhd.common.core.web.controller.BaseController;
import com.mhd.common.core.web.domain.AjaxResult;
import com.mhd.common.core.web.page.TableDataInfo;
import com.mhd.oms.domain.executionInMaterialDetail.repository.po.ExecutionInMaterialDetailPO;
import com.mhd.oms.domain.executionInMaterialDetail.repository.todo.ExecutionInMaterialDetailDO;
import com.mhd.oms.domain.executionInMaterialDetail.repository.todo.ExecutionInMaterialDetailDTO;
import com.mhd.oms.domain.executionInMaterialDetail.service.ExecutionInMaterialDetailApplicationService;
import com.mhd.oms.domain.executionInMaterialDetail.service.ExecutionInMaterialDetailAssembler;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
/**
* 物料明细Api
*
* @author gen
* @date 2024-05-21
*/
@RestController
@RequestMapping("/executionInMaterialDetailApi")
public class ExecutionInMaterialDetailApi extends BaseController {
@Autowired
private ExecutionInMaterialDetailApplicationService inMaterialDetailApplicationService;
@Resource
private ExecutionInMaterialDetailAssembler inMaterialDetailAssembler;
/**
* 分页查询物料明细列表
*/
@ApiOperation("查询物料明细列表")
@GetMapping("/list")
public TableDataInfo list(ExecutionInMaterialDetailDTO inMaterialDetailDTO)
{
//转换实体
ExecutionInMaterialDetailDO inMaterialDetailDO = inMaterialDetailAssembler.toDO(inMaterialDetailDTO);
startPage();
List<ExecutionInMaterialDetailPO> list = inMaterialDetailApplicationService.queryList(inMaterialDetailDO);
return getDataTable(list);
}
/**
* 编辑物料明细
*/
@ApiOperation("编辑物料明细")
@PostMapping("/edit")
public AjaxResult edit(@RequestBody ExecutionInMaterialDetailDTO inMaterialDetailDTO)
{
//转换实体
ExecutionInMaterialDetailDO inMaterialDetailDO = inMaterialDetailAssembler.toDOByEdit(inMaterialDetailDTO);
if(inMaterialDetailDTO.getMaterialDetailId() != null){
return toAjax(inMaterialDetailApplicationService.update(inMaterialDetailDO));
}else {
return toAjax(inMaterialDetailApplicationService.insert(inMaterialDetailDO));
}
}
/**
* 批量删除物料明细
*/
@ApiOperation("批量删除物料明细")
@DeleteMapping("/deleteByIds/{materialDetailIds}")
public AjaxResult delete(@PathVariable Long[] materialDetailIds)
{
return toAjax(inMaterialDetailApplicationService.delete(materialDetailIds));
}
/**
* 获取物料明细详细信息
*/
@ApiOperation("获取物料明细")
@GetMapping(value = "/getInfo/{materialDetailId}")
public AjaxResult getInfo(@PathVariable("materialDetailId") Long materialDetailId)
{
return AjaxResult.success(inMaterialDetailApplicationService.getInfo(materialDetailId));
}
}
@@ -0,0 +1,261 @@
package com.mhd.oms.interfaces.facade.executionStockInOrder;
import com.mhd.common.core.web.controller.BaseController;
import com.mhd.common.core.web.domain.AjaxResult;
import com.mhd.common.core.web.page.TableDataInfo;
import com.mhd.oms.domain.executionInMaterialDetail.repository.po.ExecutionInMaterialDetailPO;
import com.mhd.oms.domain.executionStockInOrder.repository.facade.IExecutionStockInOrderService;
import com.mhd.oms.domain.executionStockInOrder.repository.po.ExecutionStockInOrderPO;
import com.mhd.oms.domain.executionStockInOrder.repository.todo.ExecutionStockInOrderDO;
import com.mhd.oms.domain.executionStockInOrder.repository.todo.ExecutionStockInOrderDTO;
import com.mhd.oms.domain.executionStockInOrder.repository.vo.DeliveryDataDTO;
import com.mhd.oms.domain.executionStockInOrder.repository.vo.StockInDataDTO;
import com.mhd.oms.domain.executionStockInOrder.service.ExecutionStockInOrderApplicationService;
import com.mhd.oms.domain.executionStockInOrder.service.ExecutionStockInOrderAssembler;
import com.mhd.system.api.domain.InMaterialDetailTZPD;
import com.mhd.system.api.domain.StockInOrderTZPD;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 入库单Api
*
* @author gen
* @date 2024-05-21
*/
@RestController
@RequestMapping("/executionStockInOrderApi")
public class ExecutionStockInOrderApi extends BaseController {
@Autowired
private ExecutionStockInOrderApplicationService stockInOrderApplicationService;
@Resource
private ExecutionStockInOrderAssembler stockInOrderAssembler;
@Autowired
private IExecutionStockInOrderService reservationStockInOrderService;
/**
* 分页查询入库单列表
*/
@ApiOperation("查询入库单列表")
@GetMapping("/list")
public TableDataInfo list(ExecutionStockInOrderDTO stockInOrderDTO)
{
//转换实体
ExecutionStockInOrderDO stockInOrderDO = stockInOrderAssembler.toDO(stockInOrderDTO);
startPage();
List<ExecutionStockInOrderPO> list = stockInOrderApplicationService.queryList(stockInOrderDO);
return getDataTable(list);
}
/**
* 编辑入库单
*/
@ApiOperation("编辑入库单")
@PostMapping("/edit")
public AjaxResult edit(@RequestBody ExecutionStockInOrderDTO stockInOrderDTO)
{
//转换实体
ExecutionStockInOrderDO stockInOrderDO = stockInOrderAssembler.toDOByEdit(stockInOrderDTO);
if(stockInOrderDTO.getInOrderId() != null){
return toAjax(stockInOrderApplicationService.update(stockInOrderDO));
}else {
return toAjax(stockInOrderApplicationService.insert(stockInOrderDO));
}
}
/**
* 批量删除入库单
*/
@ApiOperation("批量删除入库单")
@DeleteMapping("/deleteByIds/{inOrderIds}")
public AjaxResult delete(@PathVariable Long[] inOrderIds)
{
return toAjax(stockInOrderApplicationService.delete(inOrderIds));
}
/**
* 获取入库单详细信息
*/
@ApiOperation("获取入库单")
@GetMapping(value = "/getInfo/{inOrderId}")
public AjaxResult getInfo(@PathVariable("inOrderId") Long inOrderId)
{
return AjaxResult.success(stockInOrderApplicationService.getInfo(inOrderId));
}
/**
* 导入入库单
*/
// @ApiOperation("导入入库单")
// @PostMapping(value = "/importData")
// public AjaxResult importData(
// @RequestParam("file") MultipartFile file,
// @RequestParam("warehouseId") Long warehouseId,
// @RequestParam("warehouseCode") String warehouseCode,
// @RequestParam("warehouseName") String warehouseName)
// {
// return AjaxResult.success(stockInOrderApplicationService.importData(file, warehouseId, warehouseCode, warehouseName));
// }
/**
* 审核入库单
*/
@ApiOperation("审核入库单")
@PostMapping(value = "/auditState")
public AjaxResult auditState(@RequestBody ExecutionStockInOrderDTO stockInOrderDTO) {
ExecutionStockInOrderDO stockInOrderDO = stockInOrderAssembler.toDO(stockInOrderDTO);
return AjaxResult.success(stockInOrderApplicationService.auditState(stockInOrderDO));
}
/**
* 下发入库单
*/
@ApiOperation("下发入库单")
@PostMapping(value = "/issueOrder")
public AjaxResult issueOrder(@RequestBody ExecutionStockInOrderDTO stockInOrderDTO) {
ExecutionStockInOrderDO stockInOrderDO = stockInOrderAssembler.toDO(stockInOrderDTO);
return AjaxResult.success(stockInOrderApplicationService.issueOrder(stockInOrderDO));
}
/**
* wms回传出入库结果
*/
@ApiOperation("wms回传出入库结果")
@GetMapping(value = "/returnResult")
public AjaxResult returnResult(@RequestParam("orderNumber") String orderNumber, @RequestParam("status") Long status, @RequestParam("type") String type) {
return AjaxResult.success(stockInOrderApplicationService.returnResult(orderNumber, status, type));
}
/**
* 取消入库单
*/
@ApiOperation("取消入库单")
@PostMapping(value = "/cancelOrder")
public AjaxResult cancelOrder(@RequestBody ExecutionStockInOrderDTO stockInOrderDTO) {
ExecutionStockInOrderDO stockInOrderDO = stockInOrderAssembler.toDO(stockInOrderDTO);
return AjaxResult.success(stockInOrderApplicationService.cancelOrder(stockInOrderDO));
}
/**
* 关闭入库单
*/
@ApiOperation("关闭入库单")
@PostMapping(value = "/closeOrder")
public AjaxResult closeOrder(@RequestBody ExecutionStockInOrderDTO stockInOrderDTO) {
ExecutionStockInOrderDO stockInOrderDO = stockInOrderAssembler.toDO(stockInOrderDTO);
return AjaxResult.success(stockInOrderApplicationService.closeOrder(stockInOrderDO));
}
@ApiOperation("wms推送入库单")
@PostMapping(value = "/pushInOrder")
public AjaxResult pushInOrder(@RequestBody StockInOrderTZPD stockInOrder) {
return AjaxResult.success(stockInOrderApplicationService.pushInOrder(stockInOrder));
}
@ApiOperation("wms推送入库单明细")
@PostMapping(value = "/pushInOrderDetail")
public AjaxResult pushInOrderDetail(@RequestBody InMaterialDetailTZPD inMaterialDetail) {
return AjaxResult.success(stockInOrderApplicationService.pushInOrderDetail(inMaterialDetail));
}
/**
* 入仓通知单打印查询
*/
@ApiOperation("入仓通知单打印查询")
@PostMapping("/queryNoticePrint")
public AjaxResult queryNoticePrint(@RequestBody ExecutionStockInOrderDTO stockInOrderDTO) {
List<ExecutionStockInOrderPO> headerList = stockInOrderApplicationService.queryNoticePrint(stockInOrderDTO);
List<ExecutionInMaterialDetailPO> detailList = stockInOrderApplicationService.queryNoticePrintDetail(stockInOrderDTO);
Map<String, Object> result = new HashMap<>();
if (!headerList.isEmpty()) {
result.put("header", headerList.get(0));
}
result.put("detailList", detailList);
return AjaxResult.success(result);
}
/**
* 上传并解析Excel文件
* @param file Excel文件
* @param sheetName 工作表名称(出库导入/参考数据)
* @return 解析后的出库数据
*/
@PostMapping("/parseExcel")
public ResponseEntity<Map<String, Object>> parseExcel(
@RequestParam("file") MultipartFile file) {
try {
DeliveryDataDTO deliveryDataDTO = reservationStockInOrderService.parseExcelFile(file, "");
Map<String, Object> result = new HashMap<>();
result.put("result", deliveryDataDTO);
result.put("code",200);
return new ResponseEntity<>(result, HttpStatus.OK);
} catch (IllegalArgumentException e) {
return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
} catch (Exception e) {
return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR);
}
}
/**
* 接口1:仅解析Excel文件(返回解析结果,不保存)
* 用途:预览Excel解析数据
*/
@PostMapping("/parse-excel")
public ResponseEntity<Map<String, Object>> parseStockInExcel(
@RequestParam("file") MultipartFile file,
@RequestParam(value = "sheetName", required = false) String sheetName) {
try {
StockInDataDTO resultDTO = reservationStockInOrderService.parseStockInExcel(file, sheetName);
Map<String, Object> result = new HashMap<>();
result.put("result", resultDTO);
result.put("code",200);
return new ResponseEntity<>(result, HttpStatus.OK);
} catch (IllegalArgumentException e) {
// 参数错误(如文件为空)
// LOGGER.error("Excel解析参数错误:{}", e.getMessage());
return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
} catch (Exception e) {
// 其他解析异常
// LOGGER.error("Excel解析失败:{}", e.getMessage(), e);
return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR);
}
}
@ApiOperation("批量推送")
@PostMapping("/batchPush")
public AjaxResult batchPush(@RequestBody List<Long> idList){
if(idList == null || idList.isEmpty()){
return AjaxResult.error("没有数据需要推送");
}
return stockInOrderApplicationService.batchPush(idList);
}
@ApiOperation("查询入库单列表")
@GetMapping("/list1")
public TableDataInfo list1(ExecutionStockInOrderDTO stockInOrderDTO)
{
//转换实体
ExecutionStockInOrderDO stockInOrderDO = stockInOrderAssembler.toDO(stockInOrderDTO);
startPage();
List<ExecutionStockInOrderPO> list = stockInOrderApplicationService.queryList1(stockInOrderDO);
return getDataTable(list);
}
}
@@ -0,0 +1,233 @@
package com.mhd.oms.interfaces.facade.executionStockOutOrder;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.mhd.common.core.web.controller.BaseController;
import com.mhd.common.core.web.domain.AjaxResult;
import com.mhd.common.core.web.page.TableDataInfo;
import com.mhd.oms.domain.executionOutMaterialDetail.repository.po.ExecutionOutMaterialDetailPO;
import com.mhd.oms.domain.executionStockOutOrder.entity.ExecutionStockOutOrder;
import com.mhd.oms.domain.executionStockOutOrder.repository.facade.IExecutionStockOutOrderService;
import com.mhd.oms.domain.executionStockOutOrder.repository.po.ExecutionStockOutOrderPO;
import com.mhd.oms.domain.executionStockOutOrder.repository.todo.ExecutionStockOutOrderDO;
import com.mhd.oms.domain.executionStockOutOrder.repository.todo.ExecutionStockOutOrderDTO;
import com.mhd.oms.domain.executionStockOutOrder.service.ExecutionStockOutOrderApplicationService;
import com.mhd.oms.domain.executionStockOutOrder.service.ExecutionStockOutOrderAssembler;
import com.mhd.system.api.domain.OutMaterialDetailTZPD;
import com.mhd.system.api.domain.StockOutOrderTZPD;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 出库单Api
*
* @author gen
* @date 2024-05-28
*/
@Slf4j
@RestController
@RequestMapping("/executionStockOutOrderApi")
public class ExecutionStockOutOrderApi extends BaseController {
@Autowired
private ExecutionStockOutOrderApplicationService stockOutOrderApplicationService;
@Resource
private ExecutionStockOutOrderAssembler stockOutOrderAssembler;
@Autowired
private IExecutionStockOutOrderService stockOutOrderService;
/**
* 分页查询出库单列表
*/
@ApiOperation("查询出库单列表")
@GetMapping("/list")
public TableDataInfo list(ExecutionStockOutOrderDTO stockOutOrderDTO)
{
//转换实体
ExecutionStockOutOrderDO stockOutOrderDO = stockOutOrderAssembler.toDO(stockOutOrderDTO);
startPage();
List<ExecutionStockOutOrderPO> list = stockOutOrderApplicationService.queryList(stockOutOrderDO);
return getDataTable(list);
}
/**
* 编辑出库单
*/
@ApiOperation("编辑出库单")
@PostMapping("/edit")
public AjaxResult edit(@RequestBody ExecutionStockOutOrderDTO stockOutOrderDTO)
{
//转换实体
ExecutionStockOutOrderDO stockOutOrderDO = stockOutOrderAssembler.toDOByEdit(stockOutOrderDTO);
if(stockOutOrderDTO.getOutOrderId() != null){
return toAjax(stockOutOrderApplicationService.update(stockOutOrderDO));
}else {
return toAjax(stockOutOrderApplicationService.insert(stockOutOrderDO));
}
}
/**
* 批量删除出库单
*/
@ApiOperation("批量删除出库单")
@DeleteMapping("/deleteByIds/{outOrderIds}")
public AjaxResult delete(@PathVariable Long[] outOrderIds)
{
return toAjax(stockOutOrderApplicationService.delete(outOrderIds));
}
/**
* 获取出库单详细信息
*/
@ApiOperation("获取出库单")
@GetMapping(value = "/getInfo/{outOrderId}")
public AjaxResult getInfo(@PathVariable("outOrderId") Long outOrderId)
{
return AjaxResult.success(stockOutOrderApplicationService.getInfoChildren(outOrderId));
}
/**
* 根据出库单号获取出库单详细信息
*/
@ApiOperation("获取出库单")
@GetMapping(value = "/getInfoOutOrderNumber")
public AjaxResult getInfoOutOrderNumber(String outOrderNumber)
{
// 根据出库单号查询出库单,再按出库单ID查询详情,保证与出库管理页面一致
ExecutionStockOutOrder stockOutOrder = stockOutOrderService.getOne(new LambdaQueryWrapper<ExecutionStockOutOrder>()
.eq(ExecutionStockOutOrder::getOutOrderNumber, outOrderNumber));
if (stockOutOrder == null) {
return AjaxResult.error("出库单不存在");
}
return AjaxResult.success(stockOutOrderApplicationService.getInfoChildren(stockOutOrder.getOutOrderId()));
}
/**
* 根据来源单号/出库单号(orderNumber)获取出库单详细信息
* 方便交接作业单等场景直接用 orderNumber 调用,内部仍然通过 outOrderNumber 精确匹配出库单
*/
@ApiOperation("根据orderNumber获取出库单详情")
@GetMapping("/getInfoByOrderNumber")
public AjaxResult getInfoByOrderNumber(@RequestParam("orderNumber") String orderNumber) {
if (orderNumber == null || orderNumber.trim().isEmpty()) {
return AjaxResult.error("orderNumber不能为空");
}
ExecutionStockOutOrder stockOutOrder = stockOutOrderService.getOne(new LambdaQueryWrapper<ExecutionStockOutOrder>()
.eq(ExecutionStockOutOrder::getOutOrderNumber, orderNumber));
if (stockOutOrder == null) {
return AjaxResult.error("出库单不存在");
}
return AjaxResult.success(stockOutOrderApplicationService.getInfoChildren(stockOutOrder.getOutOrderId()));
}
/**
* 审核出库单
*/
@ApiOperation("审核出库单")
@PostMapping(value = "/auditState")
public AjaxResult auditState(@RequestBody ExecutionStockOutOrderDTO stockOutOrderDTO) {
ExecutionStockOutOrderDO stockOutOrderDO = stockOutOrderAssembler.toDO(stockOutOrderDTO);
return AjaxResult.success(stockOutOrderApplicationService.auditState(stockOutOrderDO));
}
/**
* 下发出库单
*/
@ApiOperation("下发出库单")
@PostMapping(value = "/issueOrder")
public AjaxResult issueOrder(@RequestBody ExecutionStockOutOrderDTO stockOutOrderDTO) {
ExecutionStockOutOrderDO stockOutOrderDO = stockOutOrderAssembler.toDO(stockOutOrderDTO);
return AjaxResult.success(stockOutOrderApplicationService.issueOrder(stockOutOrderDO));
}
@ApiOperation("关闭出库单")
@PostMapping("/close")
public AjaxResult close(@RequestBody ExecutionStockOutOrderDTO stockOutOrderDTO)
{
//转换实体
ExecutionStockOutOrderDO stockOutOrderDO = stockOutOrderAssembler.toDOByEdit(stockOutOrderDTO);
return toAjax(stockOutOrderApplicationService.close(stockOutOrderDO));
}
@ApiOperation("wms推送入库单")
@PostMapping(value = "/pushOutOrder")
public AjaxResult pushOutOrder(@RequestBody StockOutOrderTZPD stockOutOrder) {
return AjaxResult.success(stockOutOrderApplicationService.pushOutOrder(stockOutOrder));
}
@ApiOperation("wms推送入库单明细")
@PostMapping(value = "/pushOutOrderDetail")
public AjaxResult pushOutOrderDetail(@RequestBody OutMaterialDetailTZPD outMaterialDetail) {
return AjaxResult.success(stockOutOrderApplicationService.pushOutOrderDetail(outMaterialDetail));
}
/**
* 出库单提货单打印
*/
@ApiOperation("出库单提货单打印")
@PostMapping("/queryOutStockNoticePrint")
public AjaxResult queryOutStockNoticePrint(@RequestBody ExecutionStockOutOrderDTO stockOutOrderDTO) {
List<ExecutionStockOutOrderPO> headerList = stockOutOrderApplicationService.queryOutStockNoticePrint(stockOutOrderDTO);
List<ExecutionOutMaterialDetailPO> detailList = stockOutOrderApplicationService.queryOutStockNoticePrintDetail(stockOutOrderDTO);
Map<String, Object> result = new HashMap<>();
if (!headerList.isEmpty()) {
result.put("header", headerList.get(0));
}
result.put("detailList", detailList);
return AjaxResult.success(result);
}
@ApiOperation("批量推送")
@PostMapping("/batchPush")
public AjaxResult batchPush(@RequestBody List<Long> idList){
if(idList == null || idList.isEmpty()){
return AjaxResult.error("没有数据需要推送");
}
return stockOutOrderApplicationService.batchPush(idList);
}
@ApiOperation("批量推送")
@PostMapping("/batchPushByNumber")
public AjaxResult batchPushByNumber(@RequestBody List<String> numberList){
if(numberList == null || numberList.isEmpty()){
return AjaxResult.error("没有数据需要推送");
}
return stockOutOrderApplicationService.batchPushByNumber(numberList);
}
@ApiOperation("退货")
@GetMapping("/returnGoods")
public AjaxResult returnGoods(@RequestParam("invoiceNumber") String invoiceNumber, @RequestParam("transportationNumber") String transportationNumber, @RequestParam("orderId") String orderId, @RequestParam("pictureUrl") String pictureUrl) {
if (invoiceNumber == null || invoiceNumber.trim().isEmpty()) {
return AjaxResult.error("发票编号不能为空");
}
stockOutOrderApplicationService.returnGoods(invoiceNumber, transportationNumber, orderId, pictureUrl);
return AjaxResult.success();
}
@ApiOperation("查询出库单列表")
@GetMapping("/list1")
public TableDataInfo list1(ExecutionStockOutOrderDTO stockOutOrderDTO)
{
//转换实体
ExecutionStockOutOrderDO stockOutOrderDO = stockOutOrderAssembler.toDO(stockOutOrderDTO);
startPage();
List<ExecutionStockOutOrderPO> list = stockOutOrderApplicationService.queryList1(stockOutOrderDO);
return getDataTable(list);
}
}