From bee57301e2868fb64c998504794d17bb26bd71d2 Mon Sep 17 00:00:00 2001
From: maven <2163098428@qq.com>
Date: 星期二, 17 三月 2026 16:58:18 +0800
Subject: [PATCH] yys 1.需要加上库位,库位暂时分为外购、自制、委外三种类型 2.生产订单加上库存数量,方便实时查看 3.发货订单增加撤销功能
---
src/main/java/com/ruoyi/sales/dto/SalesLedgerDto.java | 1
src/main/java/com/ruoyi/stock/dto/StockOutRecordDto.java | 6 +
src/main/java/com/ruoyi/production/dto/ProductOrderDto.java | 4
src/main/java/com/ruoyi/sales/service/ShippingInfoService.java | 9 +
src/main/java/com/ruoyi/sales/pojo/SalesLedgerProduct.java | 8 +
src/main/java/com/ruoyi/procurementrecord/pojo/ReturnSaleProduct.java | 2
src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java | 46 +++++++
src/main/java/com/ruoyi/sales/service/impl/ShippingInfoServiceImpl.java | 62 +++++++++
src/main/java/com/ruoyi/sales/service/ISalesLedgerProductService.java | 1
src/main/java/com/ruoyi/basic/dto/ProductAndModelDto.java | 2
src/main/resources/application-dev.yml | 2
src/main/resources/mapper/stock/StockUninventoryMapper.xml | 2
src/main/java/com/ruoyi/sales/controller/SalesLedgerProductController.java | 54 ++++++--
src/main/java/com/ruoyi/sales/controller/ShippingInfoController.java | 6 +
src/main/java/com/ruoyi/procurementrecord/service/ReturnManagementService.java | 2
src/main/java/com/ruoyi/production/service/impl/ProductOrderServiceImpl.java | 18 ++
src/main/java/com/ruoyi/stock/dto/StockInventoryDto.java | 5
src/main/resources/mapper/procurementrecord/ReturnManagementMapper.xml | 6
src/main/resources/mapper/stock/StockOutRecordMapper.xml | 1
src/main/resources/mapper/stock/StockInventoryMapper.xml | 5
src/main/java/com/ruoyi/stock/dto/StockUninventoryDto.java | 4
src/main/resources/mapper/sales/ShippingInfoMapper.xml | 34 +++++
src/main/resources/mapper/stock/StockInRecordMapper.xml | 1
src/main/java/com/ruoyi/sales/pojo/ShippingInfo.java | 2
src/main/java/com/ruoyi/stock/dto/StockInRecordDto.java | 5
src/main/java/com/ruoyi/sales/dto/SalesLedgerProductDto.java | 16 ++
src/main/java/com/ruoyi/procurementrecord/service/impl/ReturnManagementServiceImpl.java | 15 ++
src/main/java/com/ruoyi/production/controller/ProductOrderController.java | 4
src/main/java/com/ruoyi/procurementrecord/pojo/ReturnManagement.java | 2
src/main/java/com/ruoyi/sales/mapper/ShippingInfoMapper.java | 5
30 files changed, 291 insertions(+), 39 deletions(-)
diff --git a/src/main/java/com/ruoyi/basic/dto/ProductAndModelDto.java b/src/main/java/com/ruoyi/basic/dto/ProductAndModelDto.java
index 18d15aa..8c1865f 100644
--- a/src/main/java/com/ruoyi/basic/dto/ProductAndModelDto.java
+++ b/src/main/java/com/ruoyi/basic/dto/ProductAndModelDto.java
@@ -44,7 +44,7 @@
/**
- * 浜у搧绫诲瀷(1-鐗╂枡,2-浜у搧)
+ * 浜у搧绫诲瀷(1=鑷埗,2=澶栬喘,3=濮斿)
*/
@ApiModelProperty(value = "1=鑷埗,2=澶栬喘,3=濮斿")
private Integer productType;
diff --git a/src/main/java/com/ruoyi/procurementrecord/pojo/ReturnManagement.java b/src/main/java/com/ruoyi/procurementrecord/pojo/ReturnManagement.java
index ab08a34..25071a0 100644
--- a/src/main/java/com/ruoyi/procurementrecord/pojo/ReturnManagement.java
+++ b/src/main/java/com/ruoyi/procurementrecord/pojo/ReturnManagement.java
@@ -60,7 +60,7 @@
@ApiModelProperty("缁撶畻浜�")
private String settler;
- @ApiModelProperty("鐘舵��")
+ @ApiModelProperty("鐘舵�� 0-寰呭鐞� 1-宸插鐞� 2-宸叉挙閿�")
private Integer status;
@ApiModelProperty("鍒涘缓鏃堕棿")
diff --git a/src/main/java/com/ruoyi/procurementrecord/pojo/ReturnSaleProduct.java b/src/main/java/com/ruoyi/procurementrecord/pojo/ReturnSaleProduct.java
index 89eeab9..205f388 100644
--- a/src/main/java/com/ruoyi/procurementrecord/pojo/ReturnSaleProduct.java
+++ b/src/main/java/com/ruoyi/procurementrecord/pojo/ReturnSaleProduct.java
@@ -49,7 +49,7 @@
@ApiModelProperty("閫�璐т骇鍝侀噾棰�")
private BigDecimal amount;
- @ApiModelProperty("閫�璐х姸鎬� 0 鏈��鍥� 1宸查��璐�")
+ @ApiModelProperty("閫�璐х姸鎬� 0 鏈��鍥� 1宸查��璐� 2-宸叉挙閿�")
private Integer status;
@ApiModelProperty("澶囨敞")
diff --git a/src/main/java/com/ruoyi/procurementrecord/service/ReturnManagementService.java b/src/main/java/com/ruoyi/procurementrecord/service/ReturnManagementService.java
index 1a2de96..0214d25 100644
--- a/src/main/java/com/ruoyi/procurementrecord/service/ReturnManagementService.java
+++ b/src/main/java/com/ruoyi/procurementrecord/service/ReturnManagementService.java
@@ -7,6 +7,8 @@
import com.ruoyi.procurementrecord.pojo.ReturnManagement;
import com.ruoyi.sales.dto.SalesLedgerDto;
+import java.math.BigDecimal;
+
/**
* @author :yys
* @date : 2025/9/17 10:33
diff --git a/src/main/java/com/ruoyi/procurementrecord/service/impl/ReturnManagementServiceImpl.java b/src/main/java/com/ruoyi/procurementrecord/service/impl/ReturnManagementServiceImpl.java
index c3e2b8f..74196ea 100644
--- a/src/main/java/com/ruoyi/procurementrecord/service/impl/ReturnManagementServiceImpl.java
+++ b/src/main/java/com/ruoyi/procurementrecord/service/impl/ReturnManagementServiceImpl.java
@@ -1,5 +1,6 @@
package com.ruoyi.procurementrecord.service.impl;
+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.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -18,9 +19,12 @@
import com.ruoyi.procurementrecord.service.ReturnSaleProductService;
import com.ruoyi.procurementrecord.utils.StockUtils;
import com.ruoyi.sales.dto.SalesLedgerDto;
+import com.ruoyi.sales.dto.SalesLedgerProductDto;
import com.ruoyi.sales.mapper.SalesLedgerMapper;
import com.ruoyi.sales.pojo.SalesLedger;
import com.ruoyi.sales.pojo.ShippingInfo;
+import com.ruoyi.sales.pojo.ShippingInfoDetail;
+import com.ruoyi.sales.service.ShippingInfoDetailService;
import com.ruoyi.sales.service.ShippingInfoService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
@@ -46,6 +50,8 @@
@Autowired
private ReturnSaleProductService returnSaleProductService;
+ @Autowired
+ private ShippingInfoDetailService shippingInfoDetailService;
@Autowired
private ShippingInfoService shippingInfoService;
@Autowired
@@ -94,13 +100,13 @@
@Override
public SalesLedgerDto getReturnManagementDtoByShippingIdId(Long shippingId) {
- ShippingInfo byId = shippingInfoService.getById(shippingId);
+ ShippingInfoDetail byId = shippingInfoDetailService.getById(shippingId);
SalesLedger salesLedger = salesLedgerMapper.selectById(byId.getSalesLedgerId());
SalesLedgerDto salesLedgerDto = new SalesLedgerDto();
BeanUtils.copyProperties(salesLedger, salesLedgerDto);
-// List<SalesLedgerProductDto> salesLedgerProductDtos = shippingInfoService.getReturnManagementDtoById(byId.getId());
-// salesLedgerDto.setProductDtoData(salesLedgerProductDtos);
+ List<SalesLedgerProductDto> salesLedgerProductDtos = shippingInfoService.getReturnManagementDtoById(byId.getId());
+ salesLedgerDto.setProductDtoData(salesLedgerProductDtos);
return salesLedgerDto;
}
@@ -127,6 +133,8 @@
// 鏃犺川閲忛棶棰橈紝鍏ュ悎鏍煎簱
stockUtils.addStock(returnSaleProduct.getProductModelId(),returnSaleProduct.getNum(), StockInQualifiedRecordTypeEnum.RETURN_HE_IN.getCode(),returnSaleProduct.getId());
}
+ returnSaleProduct.setStatus(1);
+ returnSaleProductService.updateById(returnSaleProduct);
}
// salesRefundAmountOrder.setRefundAmount(bigDecimal);
// salesRefundAmountOrder.setNotRefundedAmount(salesRefundAmountOrder.getRefundedAmount());
@@ -155,4 +163,5 @@
return returnManagementDtoById;
}
+
}
diff --git a/src/main/java/com/ruoyi/production/controller/ProductOrderController.java b/src/main/java/com/ruoyi/production/controller/ProductOrderController.java
index 4cb0c68..9acc6b1 100644
--- a/src/main/java/com/ruoyi/production/controller/ProductOrderController.java
+++ b/src/main/java/com/ruoyi/production/controller/ProductOrderController.java
@@ -19,7 +19,7 @@
import java.math.BigDecimal;
import java.util.List;
-@RequestMapping("productOrder")
+@RequestMapping("/productOrder")
@RestController
@Api(tags = "鐢熶骇璁㈠崟")
public class ProductOrderController {
@@ -88,7 +88,7 @@
@ApiOperation("鏂板鐢熶骇璁㈠崟")
- @PostMapping("addProductOrder")
+ @PostMapping("/addProductOrder")
public R addProductOrder(@RequestBody ProductOrder productOrder) {
return R.ok(productOrderService.addProductOrder(productOrder));
}
diff --git a/src/main/java/com/ruoyi/production/dto/ProductOrderDto.java b/src/main/java/com/ruoyi/production/dto/ProductOrderDto.java
index f4aa238..068f344 100644
--- a/src/main/java/com/ruoyi/production/dto/ProductOrderDto.java
+++ b/src/main/java/com/ruoyi/production/dto/ProductOrderDto.java
@@ -60,4 +60,8 @@
//鏄惁鍙戣揣(鍙拌处椤甸潰棰滆壊鎺у埗)
private Boolean isFh;
+
+ @ApiModelProperty(value = "搴撳瓨鏁伴噺")
+ @Excel(name = "搴撳瓨鏁伴噺")
+ private BigDecimal inventoryQuantity;
}
diff --git a/src/main/java/com/ruoyi/production/service/impl/ProductOrderServiceImpl.java b/src/main/java/com/ruoyi/production/service/impl/ProductOrderServiceImpl.java
index 2ef08c1..9e03eec 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProductOrderServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProductOrderServiceImpl.java
@@ -16,6 +16,8 @@
import com.ruoyi.production.service.ProductOrderService;
import com.ruoyi.quality.mapper.QualityInspectMapper;
import com.ruoyi.quality.pojo.QualityInspect;
+import com.ruoyi.stock.dto.StockInventoryDto;
+import com.ruoyi.stock.service.impl.StockInventoryServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -64,9 +66,23 @@
@Autowired
private StockUtils stockUtils;
+ @Autowired
+ private StockInventoryServiceImpl stockInventoryService;
+
@Override
public IPage<ProductOrderDto> pageProductOrder(Page page, ProductOrderDto productOrder) {
- return productOrderMapper.pageProductOrder(page, productOrder);
+ IPage<ProductOrderDto> productOrderDtoIPage = productOrderMapper.pageProductOrder(page, productOrder);
+ productOrderDtoIPage.getRecords().forEach(productOrderDto -> {
+ // 鑾峰彇浜у搧鍚堟牸搴撳瓨
+ StockInventoryDto stockInventoryDto = new StockInventoryDto();
+ stockInventoryDto.setProductModelId(productOrderDto.getProductModelId());
+ Page page1 = new Page<>(1,1);
+ IPage<StockInventoryDto> stockInventoryDtoIPage = stockInventoryService.pagestockInventory(page1,stockInventoryDto);
+ if(stockInventoryDtoIPage.getTotal() > 0){
+ productOrderDto.setInventoryQuantity(stockInventoryDtoIPage.getRecords().get(0).getQualitity());
+ }
+ });
+ return productOrderDtoIPage;
}
@Override
diff --git a/src/main/java/com/ruoyi/sales/controller/SalesLedgerProductController.java b/src/main/java/com/ruoyi/sales/controller/SalesLedgerProductController.java
index 8632313..bb63617 100644
--- a/src/main/java/com/ruoyi/sales/controller/SalesLedgerProductController.java
+++ b/src/main/java/com/ruoyi/sales/controller/SalesLedgerProductController.java
@@ -2,18 +2,28 @@
import javax.servlet.http.HttpServletResponse;
+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.utils.poi.ExcelUtil;
import com.ruoyi.framework.web.domain.R;
import com.ruoyi.procurementrecord.dto.ProcurementPageDto;
import com.ruoyi.procurementrecord.dto.ProcurementPageDtoCopy;
+import com.ruoyi.procurementrecord.mapper.ReturnManagementMapper;
+import com.ruoyi.procurementrecord.mapper.ReturnSaleProductMapper;
import com.ruoyi.procurementrecord.service.ProcurementRecordService;
+import com.ruoyi.procurementrecord.service.ReturnManagementService;
import com.ruoyi.procurementrecord.utils.StockUtils;
import com.ruoyi.sales.dto.SalesLedgerProductDto;
+import com.ruoyi.sales.mapper.ShippingInfoDetailMapper;
+import com.ruoyi.sales.mapper.ShippingInfoMapper;
import com.ruoyi.sales.pojo.SalesLedgerProduct;
+import com.ruoyi.sales.pojo.ShippingInfoDetail;
import com.ruoyi.sales.service.ISalesLedgerProductService;
+import com.ruoyi.sales.service.ShippingInfoService;
+import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
@@ -29,6 +39,7 @@
import java.math.BigDecimal;
import java.util.List;
+import java.util.Map;
/**
* 浜у搧淇℃伅Controller
@@ -46,6 +57,12 @@
private ProcurementRecordService procurementRecordService;
@Autowired
private StockUtils stockUtils;
+
+ @Autowired
+ private ShippingInfoService shippingInfoService;
+
+ @Autowired
+ private ReturnManagementService returnManagementService;
/**
@@ -67,6 +84,14 @@
return AjaxResult.success(list);
}
+ @ApiOperation("鍙戣揣閫�璐ф挙閿�")
+ @PostMapping("/cancelDelivery")
+ @Transactional(rollbackFor = Exception.class)
+ public AjaxResult cancelDelivery(@RequestBody SalesLedgerProduct salesLedgerProduct) {
+ return AjaxResult.success(salesLedgerProductService.cancelDelivery(salesLedgerProduct));
+ }
+
+
/**
* 鏌ヨ浜у搧淇℃伅鍒楄〃
@@ -76,26 +101,23 @@
{
List<SalesLedgerProduct> list = salesLedgerProductService.selectSalesLedgerProductList(salesLedgerProduct);
list.forEach(item -> {
- if (item.getFutureTickets().compareTo(BigDecimal.ZERO) == 0) {
- item.setFutureTickets(item.getQuantity());
- }
+ // 鑾峰彇鍙戣揣鏁伴噺,閫�璐ф暟閲�
+ Map<String, BigDecimal> map = shippingInfoService.getNumberOfSalesLedgerProduct(item.getId());
+ item.setShippingNum(map.get("shippingNum"));
+ item.setReturnNum(map.get("returnNum"));
+ if (item.getFutureTickets().compareTo(BigDecimal.ZERO) == 0) {
+ item.setFutureTickets(item.getQuantity());
+ }
if (item.getFutureTicketsAmount().compareTo(BigDecimal.ZERO) == 0) {
item.setFutureTicketsAmount(item.getTaxInclusiveTotalPrice());
}
-// ProcurementPageDto procurementDto = new ProcurementPageDto();
-// procurementDto.setSalesLedgerProductId(item.getId());
-// procurementDto.setProductCategory(item.getProductCategory());
-// IPage<ProcurementPageDtoCopy> result = procurementRecordService.listPageCopyByProduction(new Page<>(1,-1), procurementDto);
-// BigDecimal stockQuantity = stockUtils.getStockQuantity(item.getProductModelId()).get("stockQuantity");
-
-// ProcurementPageDtoCopy procurementDtoCopy = result.getRecords().get(0);
- if (item.getApproveStatus() != 2) {
- if (item.getHasSufficientStock() == 0) {
- item.setApproveStatus(0);
- }else {
- item.setApproveStatus(1);
- }
+ if (item.getApproveStatus() != 2) {
+ if (item.getHasSufficientStock() == 0) {
+ item.setApproveStatus(0);
+ }else {
+ item.setApproveStatus(1);
}
+ }
});
return AjaxResult.success(list);
}
diff --git a/src/main/java/com/ruoyi/sales/controller/ShippingInfoController.java b/src/main/java/com/ruoyi/sales/controller/ShippingInfoController.java
index 0cf0797..2f77dc4 100644
--- a/src/main/java/com/ruoyi/sales/controller/ShippingInfoController.java
+++ b/src/main/java/com/ruoyi/sales/controller/ShippingInfoController.java
@@ -60,6 +60,12 @@
@Autowired
private StockUtils stockUtils;
+ @GetMapping("/getByCustomerName")
+ @ApiOperation("閫氳繃瀹㈡埛鍚嶇О鏌ヨ")
+ public AjaxResult getByCustomerName(String customerName) {
+ return AjaxResult.success(shippingInfoService.getShippingInfoByCustomerName(customerName));
+ }
+
@GetMapping("/listPage")
@ApiOperation("鍙戣揣淇℃伅鍒楄〃")
diff --git a/src/main/java/com/ruoyi/sales/dto/SalesLedgerDto.java b/src/main/java/com/ruoyi/sales/dto/SalesLedgerDto.java
index 78169a0..05bd888 100644
--- a/src/main/java/com/ruoyi/sales/dto/SalesLedgerDto.java
+++ b/src/main/java/com/ruoyi/sales/dto/SalesLedgerDto.java
@@ -43,6 +43,7 @@
private Boolean hasChildren = false;
private List<SalesLedgerProduct> productData;
+ private List<SalesLedgerProductDto> productDtoData;
private List<String> tempFileIds;
private List<CommonFile> SalesLedgerFiles;
diff --git a/src/main/java/com/ruoyi/sales/dto/SalesLedgerProductDto.java b/src/main/java/com/ruoyi/sales/dto/SalesLedgerProductDto.java
index 41b380a..e76030d 100644
--- a/src/main/java/com/ruoyi/sales/dto/SalesLedgerProductDto.java
+++ b/src/main/java/com/ruoyi/sales/dto/SalesLedgerProductDto.java
@@ -3,6 +3,7 @@
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.framework.aspectj.lang.annotation.Excel;
import com.ruoyi.sales.pojo.SalesLedgerProduct;
+import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@@ -13,6 +14,15 @@
@Data
public class SalesLedgerProductDto extends SalesLedgerProduct {
+
+ /**
+ * 涓氬姟鍛�
+ */
+ private String salesman;
+ /**
+ * 鍙戣揣鏁伴噺
+ */
+ private BigDecimal shippingNum;
/**
* 閲囪喘鍚堝悓鍙�
@@ -57,4 +67,10 @@
private Integer approvalStatus;
+ @ApiModelProperty(value = "鏈��璐ф暟")
+ private BigDecimal unQuantity;
+
+ @ApiModelProperty(value = "閫�璐ф�绘暟")
+ private BigDecimal totalReturnNum;
+
}
diff --git a/src/main/java/com/ruoyi/sales/mapper/ShippingInfoMapper.java b/src/main/java/com/ruoyi/sales/mapper/ShippingInfoMapper.java
index 9ab16d5..4b74ed9 100644
--- a/src/main/java/com/ruoyi/sales/mapper/ShippingInfoMapper.java
+++ b/src/main/java/com/ruoyi/sales/mapper/ShippingInfoMapper.java
@@ -3,6 +3,7 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.sales.dto.SalesLedgerProductDto;
import com.ruoyi.sales.dto.ShippingInfoDto;
import com.ruoyi.sales.pojo.ShippingInfo;
import org.apache.ibatis.annotations.Param;
@@ -17,4 +18,8 @@
IPage<ShippingInfoDto> listPage(Page page, @Param("req") ShippingInfo req);
List<ShippingInfo> listAll();
+
+ List<ShippingInfo> getShippingInfoByCustomerName(String customerName);
+
+ List<SalesLedgerProductDto> getReturnManagementDtoById(@Param("shippingId")Long shippingId);
}
diff --git a/src/main/java/com/ruoyi/sales/pojo/SalesLedgerProduct.java b/src/main/java/com/ruoyi/sales/pojo/SalesLedgerProduct.java
index 1df16bd..0947aa4 100644
--- a/src/main/java/com/ruoyi/sales/pojo/SalesLedgerProduct.java
+++ b/src/main/java/com/ruoyi/sales/pojo/SalesLedgerProduct.java
@@ -235,4 +235,12 @@
@TableField(exist = false)
private Integer hasSufficientStock;
+
+ @ApiModelProperty(value = "鍙戣揣鏁伴噺")
+ @TableField(exist = false)
+ private BigDecimal shippingNum;
+
+ @ApiModelProperty(value = "閫�璐ф暟閲�")
+ @TableField(exist = false)
+ private BigDecimal returnNum;
}
diff --git a/src/main/java/com/ruoyi/sales/pojo/ShippingInfo.java b/src/main/java/com/ruoyi/sales/pojo/ShippingInfo.java
index 4bd72bc..86fab48 100644
--- a/src/main/java/com/ruoyi/sales/pojo/ShippingInfo.java
+++ b/src/main/java/com/ruoyi/sales/pojo/ShippingInfo.java
@@ -38,7 +38,7 @@
@ApiModelProperty(value = "閿�鍞姤浠蜂骇鍝佽〃id")
private Long salesLedgerProductId;
- @ApiModelProperty(value = "鐘舵�� 寰呭鏍� 瀹℃牳涓� 锛屽鏍告嫆缁� 瀹℃牳閫氳繃 宸插彂璐�")
+ @ApiModelProperty(value = "鐘舵�� 寰呭鏍� 瀹℃牳涓� 锛屽鏍告嫆缁� 瀹℃牳閫氳繃 鍙戣揣涓� 宸插彂璐� 宸叉挙閿�")
@Excel(name = "鐘舵��")
private String status;
diff --git a/src/main/java/com/ruoyi/sales/service/ISalesLedgerProductService.java b/src/main/java/com/ruoyi/sales/service/ISalesLedgerProductService.java
index 47e0616..bd02e21 100644
--- a/src/main/java/com/ruoyi/sales/service/ISalesLedgerProductService.java
+++ b/src/main/java/com/ruoyi/sales/service/ISalesLedgerProductService.java
@@ -31,4 +31,5 @@
R judgmentInventory(SalesLedgerProduct salesLedgerProduct);
+ String cancelDelivery(SalesLedgerProduct salesLedgerProduct);
}
diff --git a/src/main/java/com/ruoyi/sales/service/ShippingInfoService.java b/src/main/java/com/ruoyi/sales/service/ShippingInfoService.java
index d9a3a8c..fbd1d19 100644
--- a/src/main/java/com/ruoyi/sales/service/ShippingInfoService.java
+++ b/src/main/java/com/ruoyi/sales/service/ShippingInfoService.java
@@ -3,11 +3,14 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.sales.dto.SalesLedgerProductDto;
import com.ruoyi.sales.dto.ShippingInfoDto;
import com.ruoyi.sales.pojo.ShippingInfo;
import java.io.IOException;
+import java.math.BigDecimal;
import java.util.List;
+import java.util.Map;
/**
* @author :yys
@@ -19,4 +22,10 @@
boolean deductStock(ShippingInfoDto req) throws IOException;
boolean delete(List<Long> ids);
+
+ List<ShippingInfo> getShippingInfoByCustomerName(String customerName);
+
+ List<SalesLedgerProductDto> getReturnManagementDtoById(Long id);
+
+ Map<String ,BigDecimal> getNumberOfSalesLedgerProduct(Long id);
}
diff --git a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java
index 68b52cb..ade3d09 100644
--- a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java
+++ b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java
@@ -9,6 +9,10 @@
import com.ruoyi.common.enums.StockOutQualifiedRecordTypeEnum;
import com.ruoyi.common.enums.StockInUnQualifiedRecordTypeEnum;
import com.ruoyi.framework.web.domain.R;
+import com.ruoyi.procurementrecord.mapper.ReturnManagementMapper;
+import com.ruoyi.procurementrecord.mapper.ReturnSaleProductMapper;
+import com.ruoyi.procurementrecord.pojo.ReturnManagement;
+import com.ruoyi.procurementrecord.pojo.ReturnSaleProduct;
import com.ruoyi.procurementrecord.utils.StockUtils;
import com.ruoyi.production.dto.ProductStructureDto;
import com.ruoyi.production.mapper.*;
@@ -81,6 +85,9 @@
private QualityInspectMapper qualityInspectMapper;
private ShippingInfoMapper shippingInfoMapper;
private ShippingInfoServiceImpl shippingInfoService;
+ private ReturnSaleProductMapper returnSaleProductMapper;
+ private ReturnManagementMapper returnManagementMapper;
+
private StockUtils stockUtils;
@@ -100,9 +107,6 @@
@Override
public List<SalesLedgerProduct> selectSalesLedgerProductList(SalesLedgerProduct salesLedgerProduct) {
-// LambdaQueryWrapper<SalesLedgerProduct> queryWrapper = new LambdaQueryWrapper<>();
-// queryWrapper.eq(SalesLedgerProduct::getSalesLedgerId, salesLedgerProduct.getSalesLedgerId())
-// .eq(SalesLedgerProduct::getType, salesLedgerProduct.getType());
List<SalesLedgerProduct> salesLedgerProducts = salesLedgerProductMapper.selectSalesLedgerProductList(salesLedgerProduct);
if(!CollectionUtils.isEmpty(salesLedgerProducts)){
salesLedgerProducts.forEach(item -> {
@@ -523,4 +527,40 @@
return R.ok();
}
}
+
+ @Override
+ public String cancelDelivery(SalesLedgerProduct salesLedgerProduct) {
+ List<ShippingInfo> shippingInfos = shippingInfoMapper.selectList(new QueryWrapper<ShippingInfo>()
+ .lambda()
+ .eq(ShippingInfo::getSalesLedgerProductId, salesLedgerProduct.getId())
+ .in(ShippingInfo::getStatus, "宸插彂璐�", "鍙戣揣涓�"));
+ if(CollectionUtils.isEmpty(shippingInfos)){
+ throw new RuntimeException("娌℃湁鍙彇娑堢殑鍙戣揣淇℃伅");
+ }
+ shippingInfos.forEach(item -> {
+ item.setStatus("宸叉挙閿�");
+ shippingInfoMapper.updateById(item);
+ });
+ List<ReturnSaleProduct> returnSaleProducts = returnSaleProductMapper.selectList(new LambdaQueryWrapper<ReturnSaleProduct>()
+ .eq(ReturnSaleProduct::getReturnSaleLedgerProductId, salesLedgerProduct.getId())
+ .eq(ReturnSaleProduct::getStatus, 1));
+ if(CollectionUtils.isEmpty(returnSaleProducts)){
+ throw new RuntimeException("娌℃湁鍙彇娑堢殑閫�璐т俊鎭�");
+ }
+ returnSaleProducts.forEach(item -> {
+ item.setStatus(2);
+ returnSaleProductMapper.updateById(item);
+ });
+ List<ReturnManagement> returnManagements = returnManagementMapper.selectList(new QueryWrapper<ReturnManagement>()
+ .lambda()
+ .in(ReturnManagement::getId, returnSaleProducts.stream().map(ReturnSaleProduct::getReturnManagementId).collect(Collectors.toSet())));
+ if(CollectionUtils.isEmpty(returnManagements)){
+ throw new RuntimeException("娌℃湁鍙彇娑堢殑閫�璐т俊鎭�");
+ }
+ returnManagements.forEach(item -> {
+ item.setStatus(2);
+ returnManagementMapper.updateById(item);
+ });
+ return "鎾ら攢鎴愬姛";
+ }
}
diff --git a/src/main/java/com/ruoyi/sales/service/impl/ShippingInfoServiceImpl.java b/src/main/java/com/ruoyi/sales/service/impl/ShippingInfoServiceImpl.java
index c33bb62..d0587a9 100644
--- a/src/main/java/com/ruoyi/sales/service/impl/ShippingInfoServiceImpl.java
+++ b/src/main/java/com/ruoyi/sales/service/impl/ShippingInfoServiceImpl.java
@@ -9,7 +9,12 @@
import com.ruoyi.common.enums.FileNameType;
import com.ruoyi.common.enums.StockOutQualifiedRecordTypeEnum;
import com.ruoyi.other.service.impl.TempFileServiceImpl;
+import com.ruoyi.procurementrecord.mapper.ReturnManagementMapper;
+import com.ruoyi.procurementrecord.mapper.ReturnSaleProductMapper;
+import com.ruoyi.procurementrecord.pojo.ReturnManagement;
+import com.ruoyi.procurementrecord.pojo.ReturnSaleProduct;
import com.ruoyi.procurementrecord.utils.StockUtils;
+import com.ruoyi.sales.dto.SalesLedgerProductDto;
import com.ruoyi.sales.dto.ShippingInfoDto;
import com.ruoyi.sales.mapper.SalesLedgerProductMapper;
import com.ruoyi.sales.mapper.ShippingInfoDetailMapper;
@@ -26,10 +31,7 @@
import java.io.IOException;
import java.math.BigDecimal;
-import java.util.Collections;
-import java.util.List;
-import java.util.Objects;
-import java.util.Optional;
+import java.util.*;
import java.util.stream.Collectors;
/**
@@ -59,6 +61,58 @@
@Autowired
private ShippingInfoDetailService shippingInfoDetailService;
+ @Autowired
+ private ReturnManagementMapper returnManagementMapper;
+
+ @Autowired
+ private ReturnSaleProductMapper returnSaleProductMapper;
+
+ @Override
+ public List<SalesLedgerProductDto> getReturnManagementDtoById(Long shippingId) {
+ return shippingInfoMapper.getReturnManagementDtoById(shippingId );
+
+ }
+
+ /**
+ * 鑾峰彇閿�鍞骇鍝佸崟鐨勫凡鍙戣揣鏁伴噺
+ * @param id
+ * @return
+ */
+ @Override
+ public Map<String, BigDecimal> getNumberOfSalesLedgerProduct(Long salesLedgerProductId) {
+ Map<String, BigDecimal> map = new HashMap<>();
+ map.put("shippingNum",BigDecimal.ZERO); // 鍙戣揣鏁伴噺
+ map.put("returnNum",BigDecimal.ZERO); // 閫�璐ф暟閲�
+ List<ShippingInfo> shippingInfos = shippingInfoMapper.selectList(new LambdaQueryWrapper<ShippingInfo>()
+ .eq(ShippingInfo::getSalesLedgerProductId, salesLedgerProductId)
+ // 鍙瓫閫夆�滃彂璐т腑鈥濆拰鈥滃凡鍙戣揣鈥濅袱绉嶇姸鎬�
+ .in(ShippingInfo::getStatus, "鍙戣揣涓�", "宸插彂璐�"));
+ if(CollectionUtils.isEmpty(shippingInfos)){
+ return map;
+ }
+ List<ShippingInfoDetail> shippingInfoDetails = shippingInfoDetailMapper.selectList(new LambdaQueryWrapper<ShippingInfoDetail>()
+ .in(ShippingInfoDetail::getShippingInfoId, shippingInfos.stream().map(ShippingInfo::getId).collect(Collectors.toList())));
+ if(CollectionUtils.isEmpty(shippingInfoDetails)){
+ return map;
+ }
+ // 鑾峰彇鍙戣揣鏁伴噺
+ map.put("shippingNum",shippingInfoDetails.stream().map(ShippingInfoDetail::getShippingNum).reduce(BigDecimal.ZERO, BigDecimal::add));
+ // 鑾峰彇閫�璐ф暟閲�
+ List<ReturnSaleProduct> returnSaleProducts = returnSaleProductMapper.selectList(new LambdaQueryWrapper<ReturnSaleProduct>()
+ .eq(ReturnSaleProduct::getReturnSaleLedgerProductId, salesLedgerProductId)
+ .eq(ReturnSaleProduct::getStatus,1));
+ if(CollectionUtils.isEmpty(returnSaleProducts)){
+ return map;
+ }
+ map.put("returnNum",returnSaleProducts.stream().map(ReturnSaleProduct::getNum).reduce(BigDecimal.ZERO, BigDecimal::add));
+ return map;
+ }
+
+ @Override
+ public List<ShippingInfo> getShippingInfoByCustomerName(String customerName) {
+ return shippingInfoMapper.getShippingInfoByCustomerName(customerName);
+ }
+
@Override
public IPage<ShippingInfoDto> listPage(Page page, ShippingInfo req) {
IPage<ShippingInfoDto> listPage = shippingInfoMapper.listPage(page, req);
diff --git a/src/main/java/com/ruoyi/stock/dto/StockInRecordDto.java b/src/main/java/com/ruoyi/stock/dto/StockInRecordDto.java
index 9f47fd6..cabba21 100644
--- a/src/main/java/com/ruoyi/stock/dto/StockInRecordDto.java
+++ b/src/main/java/com/ruoyi/stock/dto/StockInRecordDto.java
@@ -7,6 +7,11 @@
@Data
public class StockInRecordDto extends StockInRecord {
/**
+ * 浜у搧灞炴�� 1=鑷埗,2=澶栬喘,3=濮斿
+ */
+ private Integer productType;
+
+ /**
* 浜у搧鍚嶇О
*/
private String productName;
diff --git a/src/main/java/com/ruoyi/stock/dto/StockInventoryDto.java b/src/main/java/com/ruoyi/stock/dto/StockInventoryDto.java
index 125b52b..461c0a3 100644
--- a/src/main/java/com/ruoyi/stock/dto/StockInventoryDto.java
+++ b/src/main/java/com/ruoyi/stock/dto/StockInventoryDto.java
@@ -11,6 +11,11 @@
@Data
public class StockInventoryDto extends StockInventory {
+ /**
+ * 浜у搧灞炴�� 1=鑷埗,2=澶栬喘,3=濮斿
+ */
+ private Integer productType;
+
private String productName;
private String model;
private String unit;
diff --git a/src/main/java/com/ruoyi/stock/dto/StockOutRecordDto.java b/src/main/java/com/ruoyi/stock/dto/StockOutRecordDto.java
index 3e3abf9..a4a9bd9 100644
--- a/src/main/java/com/ruoyi/stock/dto/StockOutRecordDto.java
+++ b/src/main/java/com/ruoyi/stock/dto/StockOutRecordDto.java
@@ -9,6 +9,12 @@
@AllArgsConstructor
@NoArgsConstructor
public class StockOutRecordDto extends StockOutRecord {
+
+ /**
+ * 浜у搧灞炴�� 1=鑷埗,2=澶栬喘,3=濮斿
+ */
+ private Integer productType;
+
/**
* 浜у搧鍚嶇О
*/
diff --git a/src/main/java/com/ruoyi/stock/dto/StockUninventoryDto.java b/src/main/java/com/ruoyi/stock/dto/StockUninventoryDto.java
index 404c58a..9dc756f 100644
--- a/src/main/java/com/ruoyi/stock/dto/StockUninventoryDto.java
+++ b/src/main/java/com/ruoyi/stock/dto/StockUninventoryDto.java
@@ -7,6 +7,10 @@
@Data
public class StockUninventoryDto extends StockUninventory {
+ /**
+ * 浜у搧灞炴�� 1=鑷埗,2=澶栬喘,3=濮斿
+ */
+ private Integer productType;
private String productName;
private String model;
private String unit;
diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml
index 40dc00c..76a1144 100644
--- a/src/main/resources/application-dev.yml
+++ b/src/main/resources/application-dev.yml
@@ -64,7 +64,7 @@
druid:
# 涓诲簱鏁版嵁婧�
master:
- url: jdbc:mysql://localhost:3306/product-inventory-management-new?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+ url: jdbc:mysql://localhost:3306/product-inventory-management-jtwy?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: root
password: 123456
# 浠庡簱鏁版嵁婧�
diff --git a/src/main/resources/mapper/procurementrecord/ReturnManagementMapper.xml b/src/main/resources/mapper/procurementrecord/ReturnManagementMapper.xml
index 1b84282..93a70be 100644
--- a/src/main/resources/mapper/procurementrecord/ReturnManagementMapper.xml
+++ b/src/main/resources/mapper/procurementrecord/ReturnManagementMapper.xml
@@ -10,7 +10,8 @@
sl.sales_contract_no,
sl.salesman
from return_management rm
- left join shipping_info si on rm.shipping_id = si.id
+ left join shipping_info_detail sii on rm.shipping_id = sii.id
+ left join shipping_info si on sii.shipping_info_id = si.id
left join customer c on rm.customer_id = c.id
left join sales_ledger sl on si.sales_ledger_id = sl.id
<where>
@@ -48,7 +49,8 @@
sl.sales_contract_no,
sl.salesman
from return_management rm
- left join shipping_info si on rm.shipping_id = si.id
+ left join shipping_info_detail sii on rm.shipping_id = sii.id
+ left join shipping_info si on sii.shipping_info_id = si.id
left join customer c on rm.customer_id = c.id
left join sales_ledger sl on si.sales_ledger_id = sl.id
where rm.id = #{id}
diff --git a/src/main/resources/mapper/sales/ShippingInfoMapper.xml b/src/main/resources/mapper/sales/ShippingInfoMapper.xml
index 828178d..54c2608 100644
--- a/src/main/resources/mapper/sales/ShippingInfoMapper.xml
+++ b/src/main/resources/mapper/sales/ShippingInfoMapper.xml
@@ -20,9 +20,11 @@
s.tenant_id,
sl.sales_contract_no,
sl.customer_name,
- s.shipping_total AS shipping_total
+ s.shipping_total AS shipping_total,
+ slp.id as salesLedgerProductId
FROM shipping_info s
LEFT JOIN sales_ledger sl ON s.sales_ledger_id = sl.id
+ LEFT JOIN sales_ledger_product slp ON s.sales_ledger_product_id = slp.id and slp.type = 1
WHERE 1=1
<if test="req.salesContractNo != null and req.salesContractNo != ''">
AND sl.sales_contract_no LIKE CONCAT('%',#{req.salesContractNo},'%')
@@ -54,4 +56,34 @@
FROM shipping_info s
LEFT JOIN sales_ledger sl ON s.sales_ledger_id = sl.id
</select>
+ <select id="getShippingInfoByCustomerName" resultType="com.ruoyi.sales.pojo.ShippingInfo">
+ select *,sid.id as id from shipping_info_detail sid
+ left join shipping_info si on si.id = sid.shipping_info_id
+ left join sales_ledger sl on si.sales_ledger_id = sl.id
+ where (si.status = '宸插彂璐�' or si.status = '鍙戣揣涓�') and sl.customer_name = #{customerName}
+ </select>
+ <select id="getReturnManagementDtoById" resultType="com.ruoyi.sales.dto.SalesLedgerProductDto">
+ SELECT
+ slp.*,
+ si.shipping_num,
+ GREATEST(si.shipping_num - COALESCE(rs.total_return_num, 0), 0) AS un_quantity,
+ COALESCE(rs.total_return_num, 0) AS total_return_num
+ FROM shipping_info_detail si
+ LEFT JOIN sales_ledger_product slp ON si.sales_ledger_product_id = slp.id and slp.type = 1
+ LEFT JOIN (
+ SELECT
+ return_sale_ledger_product_id,
+ SUM(num) AS total_return_num
+ FROM return_sale_product rsp
+ left join return_management rm on rm.id = rsp.return_management_id
+ left join shipping_info_detail si on si.id = rm.shipping_id
+ WHERE 1=1
+ GROUP BY return_sale_ledger_product_id
+ ) rs ON rs.return_sale_ledger_product_id = slp.id
+ <where>
+ <if test="shippingId != null">
+ si.id = #{shippingId}
+ </if>
+ </where>
+ </select>
</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/stock/StockInRecordMapper.xml b/src/main/resources/mapper/stock/StockInRecordMapper.xml
index d5c3f38..fc2b81d 100644
--- a/src/main/resources/mapper/stock/StockInRecordMapper.xml
+++ b/src/main/resources/mapper/stock/StockInRecordMapper.xml
@@ -14,6 +14,7 @@
LEFT JOIN product as p on pm.product_id = p.id
LEFT JOIN sys_user as u on sir.create_user = u.user_id
<where>
+ pm.product_type = #{params.productType}
<if test="params.timeStr != null and params.timeStr != ''">
and sir.create_time like concat('%',#{params.timeStr},'%')
</if>
diff --git a/src/main/resources/mapper/stock/StockInventoryMapper.xml b/src/main/resources/mapper/stock/StockInventoryMapper.xml
index 7fe1f4f..9baadb9 100644
--- a/src/main/resources/mapper/stock/StockInventoryMapper.xml
+++ b/src/main/resources/mapper/stock/StockInventoryMapper.xml
@@ -68,10 +68,13 @@
from stock_inventory si
left join product_model pm on si.product_model_id = pm.id
left join product p on pm.product_id = p.id
- where 1 = 1
+ where pm.product_type = #{ew.productType}
<if test="ew.productName != null and ew.productName !=''">
and p.product_name like concat('%',#{ew.productName},'%')
</if>
+ <if test="ew.productModelId != null and ew.productModelId !=''">
+ and pm.id = #{ew.productModelId}
+ </if>
</select>
<select id="listStockInventoryExportData" resultType="com.ruoyi.stock.execl.StockInventoryExportData">
select si.qualitity,
diff --git a/src/main/resources/mapper/stock/StockOutRecordMapper.xml b/src/main/resources/mapper/stock/StockOutRecordMapper.xml
index a441de9..122bb4c 100644
--- a/src/main/resources/mapper/stock/StockOutRecordMapper.xml
+++ b/src/main/resources/mapper/stock/StockOutRecordMapper.xml
@@ -29,6 +29,7 @@
LEFT JOIN product as p on pm.product_id = p.id
LEFT JOIN sys_user as u on sor.create_user = u.user_id
<where>
+ pm.product_type = #{params.productType}
<if test="params.timeStr != null and params.timeStr != ''">
and sor.create_time like concat('%',#{params.timeStr},'%')
</if>
diff --git a/src/main/resources/mapper/stock/StockUninventoryMapper.xml b/src/main/resources/mapper/stock/StockUninventoryMapper.xml
index b171ae2..d72b6cb 100644
--- a/src/main/resources/mapper/stock/StockUninventoryMapper.xml
+++ b/src/main/resources/mapper/stock/StockUninventoryMapper.xml
@@ -59,7 +59,7 @@
from stock_uninventory su
left join product_model pm on su.product_model_id = pm.id
left join product p on pm.product_id = p.id
- where 1 = 1
+ where pm.product_type = #{ew.productType}
<if test="ew.productName != null and ew.productName !=''">
and p.product_name like concat('%',#{ew.productName},'%')
</if>
--
Gitblit v1.9.3