From ca0565e53494417b3779759f8d3898e07bfd5929 Mon Sep 17 00:00:00 2001
From: liyong <18434998025@163.com>
Date: 星期二, 20 一月 2026 14:09:16 +0800
Subject: [PATCH] Merge remote-tracking branch 'refs/remotes/origin/jtwy' into sqd-hb

---
 src/main/java/com/ruoyi/sales/controller/ShipmentApprovalController.java |  129 +++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 129 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/ruoyi/sales/controller/ShipmentApprovalController.java b/src/main/java/com/ruoyi/sales/controller/ShipmentApprovalController.java
new file mode 100644
index 0000000..a34f809
--- /dev/null
+++ b/src/main/java/com/ruoyi/sales/controller/ShipmentApprovalController.java
@@ -0,0 +1,129 @@
+package com.ruoyi.sales.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.exception.ServiceException;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.framework.web.controller.BaseController;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.procurementrecord.dto.ProcurementAddDto;
+import com.ruoyi.procurementrecord.dto.ProcurementRecordOutAdd;
+import com.ruoyi.procurementrecord.pojo.ProcurementRecordOut;
+import com.ruoyi.procurementrecord.pojo.ProcurementRecordStorage;
+import com.ruoyi.procurementrecord.service.ProcurementRecordOutService;
+import com.ruoyi.procurementrecord.service.ProcurementRecordService;
+import com.ruoyi.sales.mapper.ShipmentApprovalMapper;
+import com.ruoyi.sales.mapper.ShippingInfoMapper;
+import com.ruoyi.sales.pojo.SalesLedgerProduct;
+import com.ruoyi.sales.pojo.ShipmentApproval;
+import com.ruoyi.sales.pojo.ShippingInfo;
+import com.ruoyi.sales.service.ISalesLedgerProductService;
+import com.ruoyi.sales.service.ShipmentApprovalService;
+import com.ruoyi.sales.service.ShippingInfoService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.math.BigDecimal;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.util.List;
+
+@RestController
+@RequestMapping("/shipmentApproval")
+@Api(tags = "鍙戣揣瀹℃壒绠$悊")
+public class ShipmentApprovalController extends BaseController {
+
+    @Autowired
+    private ShipmentApprovalService shipmentApprovalService;
+    @Autowired
+    private ShipmentApprovalMapper shipmentApprovalMapper;
+
+    @Autowired
+    private ISalesLedgerProductService salesLedgerProductService;
+    @Autowired
+    private ProcurementRecordOutService procurementRecordOutService;
+    @Autowired
+    private ProcurementRecordService procurementRecordStorageService;
+
+    @GetMapping("/listPage")
+    @ApiOperation("鍙戣揣瀹℃壒鍒楄〃")
+    public AjaxResult listPage(Page page, ShipmentApproval req) {
+        IPage<ShipmentApproval> listPage = shipmentApprovalService.listPage(page,req);
+        return AjaxResult.success(listPage);
+    }
+
+    @PostMapping("/update")
+    @ApiOperation("鍙戣揣瀹℃壒,鏇存柊鍙戣揣瀹℃壒鐘舵��")
+    @Transactional(rollbackFor = Exception.class)
+    public AjaxResult update(@RequestBody ShipmentApproval req) {
+
+        //  鏌ヨ鍙戣揣瀹℃壒
+        ShipmentApproval shipmentApproval = shipmentApprovalMapper.selectById(req.getId());
+        if (shipmentApproval == null) {
+            return AjaxResult.error("鍙戣揣瀹℃壒涓嶅瓨鍦�");
+        }
+
+        //  鏇存柊鍙戣揣瀹℃壒鐘舵��
+        shipmentApproval.setApproveStatus(req.getApproveStatus());
+        boolean update = shipmentApprovalService.updateById(shipmentApproval);
+        if (!update) {
+            //  浜嬪姟鍥炴粴
+            throw new ServiceException("鍙戣揣瀹℃壒鏇存柊澶辫触");
+        }
+        //  鏌ヨ鍏宠仈鐨勯攢鍞彴璐︿骇鍝�
+        SalesLedgerProduct salesLedgerProduct = salesLedgerProductService.getById(shipmentApproval.getSalesLedgerProductId());
+        if (salesLedgerProduct == null) {
+            //  鎶涘紓甯镐簨鍔″洖婊�
+            throw new ServiceException("閿�鍞彴璐︿笉瀛樺湪锛屽鎵瑰洖婊�");
+        }
+
+        //  鍚屾鏇存柊閿�鍞彴璐︿骇鍝佺殑瀹℃壒鐘舵��
+        salesLedgerProduct.setApproveStatus(req.getApproveStatus());
+        salesLedgerProductService.updateById(salesLedgerProduct);
+
+        //  瀹℃壒閫氳繃
+        if (req.getApproveStatus() == 3) {
+            // 鏌ヨ閲囪喘鍏ュ簱璁板綍
+            LambdaQueryWrapper<ProcurementRecordStorage> lambdaQueryWrapper = new LambdaQueryWrapper<ProcurementRecordStorage>()
+                    .eq(ProcurementRecordStorage::getSalesLedgerProductId, req.getSalesLedgerProductId());
+            ProcurementRecordStorage procurementRecordStorage = procurementRecordStorageService.getOne(lambdaQueryWrapper);
+
+            if (procurementRecordStorage == null) {
+                // 淇濊瘉鍓嶉潰鐨勪慨鏀瑰叏閮ㄥ洖婊�
+                throw new ServiceException("閲囪喘璁板綍涓嶅瓨鍦紝瀹℃壒鍥炴粴");
+            }
+
+            //  鐢熸垚鍑哄簱璁板綍
+            ProcurementRecordOutAdd procurementRecordOutAdd = new ProcurementRecordOutAdd();
+            procurementRecordOutAdd.setId(procurementRecordStorage.getId());
+            procurementRecordOutAdd.setSalesLedgerProductId(Math.toIntExact(salesLedgerProduct.getId()));
+            procurementRecordOutAdd.setType(2);
+            procurementRecordOutAdd.setUserId(Math.toIntExact(getUserId()));
+            procurementRecordOutAdd.setQuantity(salesLedgerProduct.getQuantity().toPlainString());
+            procurementRecordOutAdd.setTime(LocalDate.now().toString());
+
+            procurementRecordOutService.stockout(procurementRecordOutAdd);
+        }
+
+        return AjaxResult.success();
+    }
+
+
+
+    /**
+     * 瀵煎嚭鍙戣揣淇℃伅绠$悊
+     */
+    @PostMapping("/export")
+    @ApiOperation("瀵煎嚭鍙戣揣瀹℃壒")
+    public void export(HttpServletResponse response) {
+        List<ShipmentApproval> list = shipmentApprovalService.list(null);
+        ExcelUtil<ShipmentApproval> util = new ExcelUtil<ShipmentApproval>(ShipmentApproval.class);
+        util.exportExcel(response, list, "鍙戣揣瀹℃壒");
+    }
+
+}

--
Gitblit v1.9.3