From 9571956561915d24ebfc0915117e7df24ea3058d Mon Sep 17 00:00:00 2001
From: gongchunyi <deslre0381@gmail.com>
Date: 星期五, 03 四月 2026 10:52:05 +0800
Subject: [PATCH] fix: 发货审批通过库存不扣减
---
src/main/java/com/ruoyi/sales/controller/ShippingInfoController.java | 117 ++++++++++++++++++++++++++++++++++++++--------------------
1 files changed, 77 insertions(+), 40 deletions(-)
diff --git a/src/main/java/com/ruoyi/sales/controller/ShippingInfoController.java b/src/main/java/com/ruoyi/sales/controller/ShippingInfoController.java
index b07730d..4f00394 100644
--- a/src/main/java/com/ruoyi/sales/controller/ShippingInfoController.java
+++ b/src/main/java/com/ruoyi/sales/controller/ShippingInfoController.java
@@ -3,30 +3,35 @@
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.approve.mapper.ApproveProcessMapper;
-import com.ruoyi.approve.service.impl.ApproveProcessServiceImpl;
+// import com.ruoyi.approve.mapper.ApproveProcessMapper;
+// import com.ruoyi.approve.service.impl.ApproveProcessServiceImpl;
+// import com.ruoyi.approve.vo.ApproveProcessVO;
+// import com.ruoyi.common.enums.FileNameType;
+import com.ruoyi.approve.service.IApproveProcessService;
import com.ruoyi.approve.vo.ApproveProcessVO;
-import com.ruoyi.common.enums.FileNameType;
import com.ruoyi.common.utils.OrderUtils;
+// import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.framework.aspectj.lang.annotation.Log;
import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
+// import com.ruoyi.framework.security.LoginUser;
import com.ruoyi.framework.security.LoginUser;
import com.ruoyi.framework.web.controller.BaseController;
import com.ruoyi.framework.web.domain.AjaxResult;
-import com.ruoyi.other.service.impl.TempFileServiceImpl;
+// import com.ruoyi.other.service.impl.TempFileServiceImpl;
+// import com.ruoyi.procurementrecord.utils.StockUtils;
import com.ruoyi.sales.dto.ShippingInfoDto;
-import com.ruoyi.sales.mapper.ShipmentApprovalMapper;
+// import com.ruoyi.sales.mapper.ShipmentApprovalMapper;
import com.ruoyi.sales.mapper.ShippingInfoMapper;
import com.ruoyi.sales.pojo.SalesLedger;
import com.ruoyi.sales.pojo.SalesLedgerProduct;
-import com.ruoyi.sales.pojo.ShipmentApproval;
+// import com.ruoyi.sales.pojo.ShipmentApproval;
import com.ruoyi.sales.pojo.ShippingInfo;
import com.ruoyi.sales.service.ISalesLedgerProductService;
import com.ruoyi.sales.service.ISalesLedgerService;
import com.ruoyi.sales.service.ShippingInfoService;
-import com.ruoyi.sales.service.impl.CommonFileServiceImpl;
+// import com.ruoyi.sales.service.impl.CommonFileServiceImpl;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.collections4.CollectionUtils;
@@ -36,6 +41,7 @@
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
+// import java.time.LocalDate;
import java.time.LocalDate;
import java.util.List;
@@ -50,25 +56,30 @@
@Autowired
private ShippingInfoService shippingInfoService;
- @Autowired
- private ShipmentApprovalMapper shipmentApprovalMapper;
+
+ // @Autowired
+ // private CommonFileServiceImpl commonFileService;
+
+ @Autowired
+ private IApproveProcessService approveProcessService;
+
+ // @Autowired
+ // private StockUtils stockUtils;
+
@Autowired
private ISalesLedgerProductService salesLedgerProductService;
@Autowired
- private TempFileServiceImpl tempFileService;
+ private ISalesLedgerService salesLedgerService;
@Autowired
- private CommonFileServiceImpl commonFileService;
-
- @Autowired
- private ApproveProcessServiceImpl approveProcessService;
+ private com.ruoyi.sales.mapper.SalesLedgerProductMapper salesLedgerProductMapper;
@GetMapping("/listPage")
@ApiOperation("鍙戣揣淇℃伅鍒楄〃")
public AjaxResult listPage(Page page, ShippingInfo req) {
- IPage<ShippingInfo> listPage = shippingInfoService.listPage(page,req);
+ IPage<ShippingInfoDto> listPage = shippingInfoService.listPage(page,req);
return AjaxResult.success(listPage);
}
@@ -78,21 +89,55 @@
@Log(title = "鍙戣揣淇℃伅绠$悊", businessType = BusinessType.INSERT)
public AjaxResult add(@RequestBody ShippingInfoDto req) throws Exception {
LoginUser loginUser = SecurityUtils.getLoginUser();
- String sh = OrderUtils.countTodayByCreateTime(shippingInfoMapper, "SH");
- // 鍙戣揣瀹℃壒
+
+ if (req.getSalesLedgerId() == null) {
+ return AjaxResult.error("鍏宠仈璁㈠崟 ID 涓嶈兘涓虹┖");
+ }
+
+ SalesLedger salesLedger = salesLedgerService.getById(req.getSalesLedgerId());
+ if (salesLedger == null) {
+ return AjaxResult.error("鍏宠仈璁㈠崟涓嶅瓨鍦�");
+ }
+
+ // 妫�鏌ユ槸鍚﹀凡缁忓湪瀹℃壒涓垨宸插彂璐�
+ if (salesLedger.getDeliveryStatus() != null && salesLedger.getDeliveryStatus() >= 2 && !salesLedger.getDeliveryStatus().equals(3)) {
+ return AjaxResult.error("璇ヨ鍗曞凡鍦ㄥ鎵逛腑鎴栧凡鍙戣揣锛屾棤娉曢噸澶嶅彂璧�");
+ }
+
+ String shNo = OrderUtils.countTodayByCreateTime(shippingInfoMapper, "SH");
+
+ // 鍙戣捣璁㈠鎵�
ApproveProcessVO approveProcessVO = new ApproveProcessVO();
approveProcessVO.setApproveType(7);
approveProcessVO.setApproveDeptId(loginUser.getCurrentDeptId());
- approveProcessVO.setApproveReason(req.getType() + ":" +sh);
+ // 瀹℃壒鐞嗙敱鍖呭惈鍚堝悓鍙凤紝鐢ㄤ簬鍚庣画瀹℃壒閫氳繃鍚庢壘鍥炶鍗�
+ approveProcessVO.setApproveReason("鍙戣揣瀹℃壒:" + salesLedger.getSalesContractNo());
approveProcessVO.setApproveUserIds(req.getApproveUserIds());
approveProcessVO.setApproveUser(loginUser.getUserId());
approveProcessVO.setApproveTime(LocalDate.now().toString());
approveProcessService.addApprove(approveProcessVO);
- // 娣诲姞鍙戣揣娑堟伅
- req.setShippingNo(sh);
- req.setStatus("寰呭鏍�");
- boolean save = shippingInfoService.save(req);
- return save ? AjaxResult.success() : AjaxResult.error();
+
+ // 鏇存柊閿�鍞彴璐︾姸鎬佷负 2 (瀹℃壒涓�)
+ salesLedger.setDeliveryStatus(2);
+ salesLedgerService.updateById(salesLedger);
+
+ // 涓鸿鍗曚笅鐨勬瘡涓�涓骇鍝佺敓鎴愬彂璐у彴璐﹁褰� (鏄剧ず鍗曚釜浜у搧)
+ List<SalesLedgerProduct> products = salesLedgerProductMapper.selectList(new LambdaQueryWrapper<SalesLedgerProduct>()
+ .eq(SalesLedgerProduct::getSalesLedgerId, salesLedger.getId()));
+
+ if (CollectionUtils.isNotEmpty(products)) {
+ for (SalesLedgerProduct product : products) {
+ ShippingInfo si = new ShippingInfo();
+ si.setSalesLedgerId(salesLedger.getId());
+ si.setSalesLedgerProductId(product.getId());
+ si.setShippingNo(shNo);
+ si.setStatus("寰呭鏍�");
+ si.setType(req.getType()); // 鏉ユ簮/绫诲瀷
+ shippingInfoService.save(si);
+ }
+ }
+
+ return AjaxResult.success("鍙戣揣瀹℃壒宸插彂璧�");
}
@ApiOperation("鍙戣揣鎵e簱瀛�")
@@ -100,20 +145,7 @@
@Transactional(rollbackFor = Exception.class)
@Log(title = "鍙戣揣淇℃伅绠$悊", businessType = BusinessType.UPDATE)
public AjaxResult deductStock(@RequestBody ShippingInfoDto req) throws IOException {
- ShippingInfo byId = shippingInfoService.getById(req.getId());
- if (byId == null) {
- return AjaxResult.error("鍙戣揣淇℃伅涓嶅瓨鍦�");
- }
- byId.setExpressNumber(req.getExpressNumber());
- byId.setExpressCompany(req.getExpressCompany());
- byId.setStatus("宸插彂璐�");
- byId.setShippingCarNumber(req.getShippingCarNumber());
- boolean update = shippingInfoService.updateById(req);
- // 杩佺Щ鏂囦欢
- if(CollectionUtils.isNotEmpty(req.getTempFileIds())){
- tempFileService.migrateTempFilesToFormal(req.getId(), req.getTempFileIds(), FileNameType.SHIP.getValue());
- }
- return update ? AjaxResult.success() : AjaxResult.error();
+ return shippingInfoService.deductStock( req) ? AjaxResult.success() : AjaxResult.error();
}
@PostMapping("/update")
@@ -134,9 +166,8 @@
@Transactional(rollbackFor = Exception.class)
@Log(title = "鍙戣揣淇℃伅绠$悊", businessType = BusinessType.DELETE)
public AjaxResult delete(@RequestBody List<Long> ids) {
- commonFileService.deleteByBusinessIds(ids, FileNameType.SHIP.getValue());
- boolean delete = shippingInfoService.removeBatchByIds(ids);
- return delete ? AjaxResult.success("鍒犻櫎鎴愬姛") : AjaxResult.error("鍒犻櫎澶辫触");
+
+ return shippingInfoService.delete(ids) ? AjaxResult.success("鍒犻櫎鎴愬姛") : AjaxResult.error("鍒犻櫎澶辫触");
}
@Autowired
@@ -153,4 +184,10 @@
util.exportExcel(response, list, "鍙戣揣淇℃伅");
}
+
+ @GetMapping("/getByCustomerName")
+ @ApiOperation("閫氳繃瀹㈡埛鍚嶇О鏌ヨ")
+ public AjaxResult getByCustomerName(String customerName) {
+ return AjaxResult.success(shippingInfoService.getShippingInfoByCustomerName(customerName));
+ }
}
--
Gitblit v1.9.3