diff --git a/oms_web/oms_vue/src/views/inventory/execution/index.vue b/oms_web/oms_vue/src/views/inventory/execution/index.vue
index 7b565dd6..8c8ca0dc 100644
--- a/oms_web/oms_vue/src/views/inventory/execution/index.vue
+++ b/oms_web/oms_vue/src/views/inventory/execution/index.vue
@@ -287,7 +287,7 @@
-
+
¥ {{ formatCurrency(scope.row.price) }}
diff --git a/oms_web/oms_vue/src/views/inventory/info/index.vue b/oms_web/oms_vue/src/views/inventory/info/index.vue
index 875bfdc7..25687146 100644
--- a/oms_web/oms_vue/src/views/inventory/info/index.vue
+++ b/oms_web/oms_vue/src/views/inventory/info/index.vue
@@ -21,11 +21,6 @@
-
-
-
-
-
搜索
重置
@@ -56,7 +51,6 @@
-
{{ scope.row.inventoryNum }}
@@ -448,7 +442,6 @@ export default {
productName: null,
type: null,
vendorCode: null,
- warehouseId: null,
orderByColumn:'outer_num desc, usable_num desc, inventory_num desc, purchase_num desc, bind_num',
isAsc: 'desc'
},
@@ -652,13 +645,9 @@ export default {
},
/** 处理在库现存 */
handleInventoryInner(row) {
- if (!row.warehouseId) {
- this.$modal.msgError("仓库信息不存在,无法查看在库现存");
- return;
- }
this.inventoryInnerQuery.pageNum = 1;
this.inventoryInnerQuery.productCode = row.productCode;
- this.inventoryInnerQuery.warehouseId = row.warehouseId;
+ this.inventoryInnerQuery.warehouseId = null;
this.currentInventoryInnerProductName = row.productName;
this.currentInventoryInnerTotal = row.inventoryNum;
this.inventoryInnerVisible = true;
@@ -697,13 +686,9 @@ export default {
},
/** 处理在途库存 */
handlePurchaseStock(row) {
- if (!row.warehouseId) {
- this.$modal.msgError("仓库信息不存在,无法查看在途库存");
- return;
- }
this.purchaseStockQuery.pageNum = 1;
this.purchaseStockQuery.productCode = row.productCode;
- this.purchaseStockQuery.warehouseId = row.warehouseId;
+ this.purchaseStockQuery.warehouseId = null;
this.currentPurchaseStockProductName = row.productName;
this.currentPurchaseStockTotal = row.purchaseNum;
this.purchaseStockVisible = true;
@@ -723,13 +708,9 @@ export default {
},
/** 处理锁单量 */
handleBindOrder(row) {
- if (!row.warehouseId) {
- this.$modal.msgError("仓库信息不存在,无法查看锁单量");
- return;
- }
this.bindOrderQuery.pageNum = 1;
this.bindOrderQuery.productCode = row.productCode;
- this.bindOrderQuery.warehouseId = row.warehouseId;
+ this.bindOrderQuery.warehouseId = null;
this.currentBindOrderProductName = row.productName;
this.currentBindOrderTotal = row.bindNum;
this.bindOrderVisible = true;
diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/controller/vue/VueInventoryOuterController.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/controller/vue/VueInventoryOuterController.java
index a2d48384..f55688ad 100644
--- a/ruoyi-sip/src/main/java/com/ruoyi/sip/controller/vue/VueInventoryOuterController.java
+++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/controller/vue/VueInventoryOuterController.java
@@ -25,6 +25,8 @@ import java.io.InputStream;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
/**
* 出库单Controller (Vue)
@@ -124,6 +126,18 @@ public class VueInventoryOuterController extends BaseController
if (inventoryInfoExcelDtoList.size()!=quantity.intValue()){
return AjaxResult.error("导入数据应等于发货数量");
}
+ List repeatSnList = inventoryInfoExcelDtoList.stream()
+ .map(InventoryInfoExcelDto::getProductSn)
+ .filter(sn -> sn != null && !sn.trim().isEmpty())
+ .collect(Collectors.groupingBy(String::trim, Collectors.counting()))
+ .entrySet()
+ .stream()
+ .filter(entry -> entry.getValue() > 1)
+ .map(Map.Entry::getKey)
+ .collect(Collectors.toList());
+ if (!repeatSnList.isEmpty()) {
+ throw new ServiceException("文件中存在重复SN码:" + repeatSnList);
+ }
return AjaxResult.success(innerService.getInventoryInfoList(inventoryInfoExcelDtoList, productCode,orderType));
} catch (IOException e) {
@@ -150,6 +164,18 @@ public class VueInventoryOuterController extends BaseController
if (CollUtil.isEmpty(inventoryInfoExcelDtoList)) {
return AjaxResult.error("导入数据为空");
}
+ List repeatSnList = inventoryInfoExcelDtoList.stream()
+ .map(InventoryInfoExcelDto::getProductSn)
+ .filter(sn -> sn != null && !sn.trim().isEmpty())
+ .collect(Collectors.groupingBy(String::trim, Collectors.counting()))
+ .entrySet()
+ .stream()
+ .filter(entry -> entry.getValue() > 1)
+ .map(Map.Entry::getKey)
+ .collect(Collectors.toList());
+ if (!repeatSnList.isEmpty()) {
+ throw new ServiceException("文件中存在重复SN码:" + repeatSnList);
+ }
return AjaxResult.success(innerService.validateAndGetAssignDeliveryList(
inventoryInfoExcelDtoList, productCode, orderType, purchaseNo));
diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/controller/vue/VueOmsInventoryInnerController.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/controller/vue/VueOmsInventoryInnerController.java
index 93a578fd..8fe80ce3 100644
--- a/ruoyi-sip/src/main/java/com/ruoyi/sip/controller/vue/VueOmsInventoryInnerController.java
+++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/controller/vue/VueOmsInventoryInnerController.java
@@ -19,6 +19,8 @@ import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.util.Collections;
import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
/**
* 入库单信息(Vue) Controller
@@ -125,6 +127,18 @@ public class VueOmsInventoryInnerController extends BaseController {
ExcelUtil util = new ExcelUtil<>(WarehouseInnerExcelDto.class);
try {
List excelList = util.importExcel(file.getInputStream());
+ List repeatSnList = excelList.stream()
+ .map(WarehouseInnerExcelDto::getProductSn)
+ .filter(sn -> sn != null && !sn.trim().isEmpty())
+ .collect(Collectors.groupingBy(String::trim, Collectors.counting()))
+ .entrySet()
+ .stream()
+ .filter(entry -> entry.getValue() > 1)
+ .map(Map.Entry::getKey)
+ .collect(Collectors.toList());
+ if (!repeatSnList.isEmpty()) {
+ throw new ServiceException("文件中存在重复SN码:" + repeatSnList);
+ }
return AjaxResult.success(inventoryInfoService.fillBaseInfo(excelList));
} catch (ServiceException e) {
return AjaxResult.error(e.getMessage());
diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/dto/inventory/ProductInventoryQueryDTO.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/dto/inventory/ProductInventoryQueryDTO.java
index d0303def..fd41c22c 100644
--- a/ruoyi-sip/src/main/java/com/ruoyi/sip/dto/inventory/ProductInventoryQueryDTO.java
+++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/dto/inventory/ProductInventoryQueryDTO.java
@@ -10,6 +10,4 @@ public class ProductInventoryQueryDTO {
/** 产品编码 */
private String productCode;
- /** 仓库ID */
- private Long warehouseId;
}
diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/llm/tools/ProjectOrderInfoToolProvider.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/llm/tools/ProjectOrderInfoToolProvider.java
index 735fadfe..b7c424ed 100644
--- a/ruoyi-sip/src/main/java/com/ruoyi/sip/llm/tools/ProjectOrderInfoToolProvider.java
+++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/llm/tools/ProjectOrderInfoToolProvider.java
@@ -177,6 +177,7 @@ public class ProjectOrderInfoToolProvider extends AbstractMcpToolProvider {
item.put("requiredDeliveryDate", formatDate(orderInfo.getDeliveryTime()));
item.put("contractCode", orderInfo.getOrderCode());
item.put("projectName", orderInfo.getProjectName());
+ item.put("h3cSales", projectInfo == null ? "" : projectInfo.getH3cPerson());
item.put("agentName", orderInfo.getAgentName());
item.put("orderStatus", DictUtils.getDictLabel("order_status", orderInfo.getOrderStatus()));
item.put("orderStockingStatus", resolveOrderStockingStatus(orderInfo));
diff --git a/ruoyi-sip/src/main/resources/mapper/inventory/OmsInventoryInnerMapper.xml b/ruoyi-sip/src/main/resources/mapper/inventory/OmsInventoryInnerMapper.xml
index 012c9b4d..bb891d7c 100644
--- a/ruoyi-sip/src/main/resources/mapper/inventory/OmsInventoryInnerMapper.xml
+++ b/ruoyi-sip/src/main/resources/mapper/inventory/OmsInventoryInnerMapper.xml
@@ -105,7 +105,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
inner join oms_inventory_info as t2 on t1.inner_code = t2.inner_code
and t2.product_code = #{productCode}
- and t2.warehouse_id = #{warehouseId}
group by t1.id
having inventory_num > 0
diff --git a/ruoyi-sip/src/main/resources/mapper/sip/OmsPurchaseOrderMapper.xml b/ruoyi-sip/src/main/resources/mapper/sip/OmsPurchaseOrderMapper.xml
index 307efb68..2676ed19 100644
--- a/ruoyi-sip/src/main/resources/mapper/sip/OmsPurchaseOrderMapper.xml
+++ b/ruoyi-sip/src/main/resources/mapper/sip/OmsPurchaseOrderMapper.xml
@@ -261,7 +261,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
inner join oms_purchase_order_item as t2 on t1.id = t2.purchase_id
and t2.product_code = #{productCode}
- and t1.warehouse_id = #{warehouseId}
and t2.quantity - t2.inner_quantity > 0
order by t1.create_time desc
@@ -285,13 +284,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
from oms_inventory_info
and product_code = #{productCode}
- and warehouse_id = #{warehouseId}
group by order_code
) as t6 on t1.order_code = t6.order_code
and t2.product_code = #{productCode}
- and t3.warehouse_id = #{warehouseId}
group by t1.id
having bind_num != 0
diff --git a/ruoyi-sip/src/main/resources/mapper/system/ProductInfoMapper.xml b/ruoyi-sip/src/main/resources/mapper/system/ProductInfoMapper.xml
index 289ebed2..1417c150 100644
--- a/ruoyi-sip/src/main/resources/mapper/system/ProductInfoMapper.xml
+++ b/ruoyi-sip/src/main/resources/mapper/system/ProductInfoMapper.xml
@@ -131,37 +131,33 @@