From 1187038ba8c66d6325df3aee437ede4ce25839fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A6=81=E6=AD=A2=E5=91=B5=E5=91=B5?= Date: Tue, 9 Dec 2025 09:39:07 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E5=BA=93=E5=AD=98=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/MaterialInventoryController.java | 114 ++++++++++++++++++ 1 file changed, 114 insertions(+) create mode 100644 zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/admin/MaterialInventoryController.java diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/admin/MaterialInventoryController.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/admin/MaterialInventoryController.java new file mode 100644 index 0000000..8c0c8dc --- /dev/null +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/admin/MaterialInventoryController.java @@ -0,0 +1,114 @@ +package com.zt.plat.module.qms.resource.material.controller.admin; + +import com.zt.plat.framework.apilog.core.annotation.ApiAccessLog; +import com.zt.plat.framework.business.annotation.FileUploadController; +import com.zt.plat.framework.business.controller.AbstractFileUploadController; +import com.zt.plat.framework.business.interceptor.BusinessControllerMarker; +import com.zt.plat.framework.common.pojo.CommonResult; +import com.zt.plat.framework.common.pojo.PageParam; +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.framework.common.pojo.vo.BatchDeleteReqVO; +import com.zt.plat.framework.common.util.object.BeanUtils; +import com.zt.plat.framework.excel.core.util.ExcelUtils; +import com.zt.plat.module.qms.resource.material.controller.vo.MaterialInventoryInboundDetailPageReqVO; +import com.zt.plat.module.qms.resource.material.controller.vo.MaterialInventoryInboundDetailRespVO; +import com.zt.plat.module.qms.resource.material.controller.vo.MaterialInventoryInboundDetailSaveReqVO; +import com.zt.plat.module.qms.resource.material.dal.dataobject.MaterialInventoryInboundDetailDO; +import com.zt.plat.module.qms.resource.material.service.MaterialInventoryInboundDetailService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.annotation.Resource; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.Valid; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.IOException; +import java.util.List; + +import static com.zt.plat.framework.apilog.core.enums.OperateTypeEnum.EXPORT; +import static com.zt.plat.framework.common.pojo.CommonResult.success; + +@Tag(name = "管理后台 - 入库明细,出库明细,含领用出库、退货出库、盘亏出库、销毁出库等") +@RestController +@RequestMapping("/qms/resource/material-inventory") +@Validated +@FileUploadController(source = "qms.materiainfo") +public class MaterialInventoryController extends AbstractFileUploadController implements BusinessControllerMarker{ + + static { + FileUploadController annotation = MaterialInventoryController.class.getAnnotation(FileUploadController.class); + if (annotation != null) { + setFileUploadInfo(annotation); + } + } + + @Resource + private MaterialInventoryInboundDetailService materialInventoryInboundDetailService; + + @PostMapping("/create") + @Operation(summary = "创建入库明细,出库明细,含领用出库、退货出库、盘亏出库、销毁出库等") + @PreAuthorize("@ss.hasPermission('qms:material-inventory-inbound-detail:create')") + public CommonResult createMaterialInventoryInboundDetail(@Valid @RequestBody MaterialInventoryInboundDetailSaveReqVO createReqVO) { + return success(materialInventoryInboundDetailService.createMaterialInventoryInboundDetail(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新入库明细,出库明细,含领用出库、退货出库、盘亏出库、销毁出库等") + @PreAuthorize("@ss.hasPermission('qms:material-inventory-inbound-detail:update')") + public CommonResult updateMaterialInventoryInboundDetail(@Valid @RequestBody MaterialInventoryInboundDetailSaveReqVO updateReqVO) { + materialInventoryInboundDetailService.updateMaterialInventoryInboundDetail(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除入库明细,出库明细,含领用出库、退货出库、盘亏出库、销毁出库等") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('qms:material-inventory-inbound-detail:delete')") + public CommonResult deleteMaterialInventoryInboundDetail(@RequestParam("id") Long id) { + materialInventoryInboundDetailService.deleteMaterialInventoryInboundDetail(id); + return success(true); + } + + @DeleteMapping("/delete-list") + @Parameter(name = "ids", description = "编号", required = true) + @Operation(summary = "批量删除入库明细,出库明细,含领用出库、退货出库、盘亏出库、销毁出库等") + @PreAuthorize("@ss.hasPermission('qms:material-inventory-inbound-detail:delete')") + public CommonResult deleteMaterialInventoryInboundDetailList(@RequestBody BatchDeleteReqVO req) { + materialInventoryInboundDetailService.deleteMaterialInventoryInboundDetailListByIds(req.getIds()); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得入库明细,出库明细,含领用出库、退货出库、盘亏出库、销毁出库等") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('qms:material-inventory-inbound-detail:query')") + public CommonResult getMaterialInventoryInboundDetail(@RequestParam("id") Long id) { + MaterialInventoryInboundDetailDO materialInventoryInboundDetail = materialInventoryInboundDetailService.getMaterialInventoryInboundDetail(id); + return success(BeanUtils.toBean(materialInventoryInboundDetail, MaterialInventoryInboundDetailRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得入库明细,出库明细,含领用出库、退货出库、盘亏出库、销毁出库等分页") +// @PreAuthorize("@ss.hasPermission('qms:material-inventory-inbound-detail:query')") + public CommonResult> getMaterialInventoryInboundDetailPage(@Valid MaterialInventoryInboundDetailPageReqVO pageReqVO) { + PageResult pageResult = materialInventoryInboundDetailService.getMaterialInventoryInboundDetailPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, MaterialInventoryInboundDetailRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出入库明细,出库明细,含领用出库、退货出库、盘亏出库、销毁出库等 Excel") + @PreAuthorize("@ss.hasPermission('qms:material-inventory-inbound-detail:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportMaterialInventoryInboundDetailExcel(@Valid MaterialInventoryInboundDetailPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = materialInventoryInboundDetailService.getMaterialInventoryInboundDetailPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "入库明细,出库明细,含领用出库、退货出库、盘亏出库、销毁出库等.xls", "数据", MaterialInventoryInboundDetailRespVO.class, + BeanUtils.toBean(list, MaterialInventoryInboundDetailRespVO.class)); + } + +} \ No newline at end of file