Files
klp-oa/klp-wms/src/main/java/com/klp/controller/WmsStockIoController.java
Joshi 47cff10785 feat(stock): 添加退库功能- 在 IWmsStockIoService接口中添加 scanReturnStockByBo 方法
- 在 WmsStockIo 模型中添加 parentId 字段用于关联原出库单
- 在 WmsStockIoBo 中添加 parentId 字段
- 在 WmsStockIoController 中添加 scanReturnStock 控制器方法
- 在 WmsStockIoServiceImpl 中实现 scanReturnStockByBo 方法的业务逻辑
2025-08-12 10:12:13 +08:00

187 lines
6.0 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package com.klp.controller;
import java.util.List;
import java.util.Arrays;
import java.util.Map;
import com.klp.domain.WmsStockIo;
import com.klp.domain.WmsStockIoDetail;
import com.klp.domain.bo.WmsStockIoDetailBo;
import com.klp.domain.vo.WmsStockIoDetailVo;
import lombok.RequiredArgsConstructor;
import javax.servlet.http.HttpServletResponse;
import javax.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import com.klp.common.annotation.RepeatSubmit;
import com.klp.common.annotation.Log;
import com.klp.common.core.controller.BaseController;
import com.klp.common.core.domain.PageQuery;
import com.klp.common.core.domain.R;
import com.klp.common.core.validate.AddGroup;
import com.klp.common.core.validate.EditGroup;
import com.klp.common.enums.BusinessType;
import com.klp.common.utils.poi.ExcelUtil;
import com.klp.domain.vo.WmsStockIoVo;
import com.klp.domain.bo.WmsStockIoBo;
import com.klp.service.IWmsStockIoService;
import com.klp.common.core.page.TableDataInfo;
import com.klp.domain.bo.WmsStockIoWithDetailBo;
/**
* 出入库单主表
*
* @author Joshi
* @date 2025-07-18
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/wms/stockIo")
public class WmsStockIoController extends BaseController {
private final IWmsStockIoService iWmsStockIoService;
/**
* 查询出入库单主列表
*/
@GetMapping("/list")
public TableDataInfo<WmsStockIoVo> list(WmsStockIoBo bo, PageQuery pageQuery) {
return iWmsStockIoService.queryPageList(bo, pageQuery);
}
/**
* 导出出入库单主列表
*/
@Log(title = "出入库单主", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(WmsStockIoBo bo, HttpServletResponse response) {
List<WmsStockIoVo> list = iWmsStockIoService.queryList(bo);
ExcelUtil.exportExcel(list, "出入库单主", WmsStockIoVo.class, response);
}
/**
* 获取出入库单主详细信息
*
* @param stockIoId 主键
*/
@GetMapping("/{stockIoId}")
public R<WmsStockIoVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long stockIoId) {
return R.ok(iWmsStockIoService.queryById(stockIoId));
}
/**
* 新增出入库单主
*/
@Log(title = "出入库单主", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody WmsStockIoBo bo) {
return toAjax(iWmsStockIoService.insertByBo(bo));
}
/**
* 批量新增主表和明细
*/
@PostMapping("/withDetail")
public R<Void> addWithDetail(@RequestBody WmsStockIoWithDetailBo bo) {
iWmsStockIoService.addWithDetail(bo);
return R.ok();
}
/**
* 修改出入库单主
*/
@Log(title = "出入库单主", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody WmsStockIoBo bo) {
return toAjax(iWmsStockIoService.updateByBo(bo));
}
/**
* 删除出入库单主
*
* @param stockIoIds 主键串
*/
@Log(title = "出入库单主", businessType = BusinessType.DELETE)
@DeleteMapping("/{stockIoIds}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] stockIoIds) {
return toAjax(iWmsStockIoService.deleteWithValidByIds(Arrays.asList(stockIoIds), true));
}
/**
* 审核出入库/移库单
*/
@Log(title = "出入库单主", businessType = BusinessType.UPDATE)
@PostMapping("/audit/{stockIoId}")
public R<Void> audit(@NotNull(message = "主键不能为空") @PathVariable Long stockIoId) {
return toAjax(iWmsStockIoService.auditStockIo(stockIoId));
}
/**
* 撤销出入库/移库单
*/
@Log(title = "出入库单主", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PostMapping("/cancel/{stockIoId}")
public R<Void> cancel(@NotNull(message = "主键不能为空") @PathVariable Long stockIoId) {
return toAjax(iWmsStockIoService.cancelStockIo(stockIoId));
}
/**
* 根据ioType和stockIoId联查明细
*/
@GetMapping("/detailByTypeAndId")
public R<List<WmsStockIoDetailVo>> detailByTypeAndId(@RequestParam String ioType, @RequestParam Long stockIoId) {
return R.ok(iWmsStockIoService.detailByTypeAndId(ioType, stockIoId));
}
/**
* 更新出入库单状态
*/
@Log(title = "出入库单主", businessType = BusinessType.UPDATE)
@PostMapping("/updateStatus/{stockIoId}")
public R<Void> updateStatus(@NotNull(message = "主键不能为空") @PathVariable Long stockIoId,
@RequestParam Integer status) {
return toAjax(iWmsStockIoService.updateStatus(stockIoId, status));
}
/**
* 扫码枪专用根据明细ID直接入库无需审核整单
*/
@PostMapping("/scanInStock")
public R<Void> scanInStock(@RequestBody WmsStockIoDetailBo bo) {
try {
boolean result = iWmsStockIoService.scanInStockByBo(bo);
return toAjax(result);
} catch (Exception e) {
return R.fail(e.getMessage());
}
}
@PostMapping("/scanOutStock")
public R<Void> scanOutStock(@RequestBody WmsStockIoDetailBo bo) {
try {
boolean result = iWmsStockIoService.scanOutStockByBo(bo);
return toAjax(result);
} catch (Exception e) {
return R.fail(e.getMessage());
}
}
//退库操作
@PostMapping("/scanReturnStock")
public R<Void> scanReturnStock(@RequestBody WmsStockIoBo bo) {
try {
boolean result = iWmsStockIoService.scanReturnStockByBo(bo);
return toAjax(result);
} catch (Exception e) {
return R.fail(e.getMessage());
}
}
}