From 2b49f7643d15b74889d190f216630559006ed93a Mon Sep 17 00:00:00 2001
From: yanjinhui <3306209981@qq.com>
Date: 星期一, 01 十二月 2025 09:48:43 +0800
Subject: [PATCH] pad和后端的优化
---
新建文件夹/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/CabinOrderServices.cs | 113 ++++++++++++++++++++++++++++++++++++++++++++++++++------
1 files changed, 101 insertions(+), 12 deletions(-)
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/CabinOrderServices.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/CabinOrderServices.cs"
index e9578a4..2c182d4 100644
--- "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/CabinOrderServices.cs"
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/CabinOrderServices.cs"
@@ -12,6 +12,7 @@
using System.Transactions;
using WIDESEA_Common;
using WIDESEA_Common.LocationEnum;
+using WIDESEA_Common.MaterielEnum;
using WIDESEA_Common.OrderEnum;
using WIDESEA_Common.StockEnum;
using WIDESEA_Common.TaskEnum;
@@ -103,15 +104,72 @@
/// <param name="pageNo"></param>
/// <param name="orderNo"></param>
/// <returns></returns>
+ //public WebResponseContent GetCabinOrderDetail(int pageNo, string orderNo)
+ //{
+ // WebResponseContent content = new WebResponseContent();
+ // Dt_CabinOrder cabinOrder = Db.Queryable<Dt_CabinOrder>().Includes(x => x.Details).First(x => x.Order_no == orderNo);
+ // List<Dt_CabinOrderDetail> cabinOrderDetails = cabinOrder.Details.Where(x => x.Status == 2 && x.OrderDetailStatus != "宸插畬鎴�").ToList();
+ // content.OK(data: cabinOrderDetails);
+ // return content;
+ //}
+
public WebResponseContent GetCabinOrderDetail(int pageNo, string orderNo)
{
WebResponseContent content = new WebResponseContent();
- Dt_CabinOrder cabinOrder = Db.Queryable<Dt_CabinOrder>().Includes(x => x.Details).First(x => x.Order_no == orderNo);
- List<Dt_CabinOrderDetail> cabinOrderDetails = cabinOrder.Details.Where(x => x.Status == 2 && x.OrderDetailStatus != "宸插畬鎴�").ToList();
- content.OK(data: cabinOrderDetails);
+ try
+ {
+ Dt_CabinOrder cabinOrder = Db.Queryable<Dt_CabinOrder>().Includes(x => x.Details).First(x => x.Order_no == orderNo);
+ List<Dt_CabinOrderDetail> cabinOrderDetails = cabinOrder.Details.Where(x => x.Status == 2 && x.OrderDetailStatus != "宸插畬鎴�").ToList();
+
+ // 鑾峰彇鎵�鏈夌墿鏂欑紪鍙�
+ var materielCodes = cabinOrderDetails.Select(x => x.Goods_no).Distinct().ToList();
+
+ // 鑾峰彇鐗╂枡淇℃伅
+ var materiels = Db.Queryable<Dt_MaterielInfo>()
+ .Where(x => materielCodes.Contains(x.MaterielCode))
+ .ToList()
+ .ToDictionary(x => x.MaterielCode, x => x);
+
+ // 缁勫悎鏁版嵁
+ var result = cabinOrderDetails.Select(detail =>
+ {
+ var materiel = materiels.ContainsKey(detail.Goods_no) ? materiels[detail.Goods_no] : null;
+
+ return new
+ {
+ // 璁㈠崟鏄庣粏瀛楁
+ detail.Id,
+ detail.Batch_num,
+ detail.Goods_no,
+ detail.Order_qty,
+ detail.Order_Inqty,
+ detail.Status,
+ detail.OrderDetailStatus,
+ detail.Exp_date,//鏁堟湡
+
+ // 鐗╂枡淇℃伅瀛楁
+ MaterielName = materiel?.MaterielName ?? "",
+ item = materiel?.item ?? "", // 鍝佸悕/閫氱敤鍚�
+ MaterielSpec = materiel?.MaterielSpec ?? "", // 鐗╂枡瑙勬牸
+ Factory = materiel?.Factory ?? "", // 鐢熶骇鍘傚
+ MaterielUnit = materiel?.MaterielUnit ?? "", // 鍩烘湰鍗曚綅
+ MaterielStoragecondition = materiel?.MaterielStoragecondition, // 瀛樺偍鏉′欢/鏁堟湡
+ MaterielModel = materiel?.MaterielModel ?? "" // 鐗╂枡鍨嬪彿
+ };
+ }).ToList();
+ int pageSize = 5; // 姣忛〉鏄剧ず5鏉�
+ var pagedResult = result
+ .Skip((pageNo - 1) * pageSize)
+ .Take(pageSize)
+ .ToList();
+ content.OK(data: pagedResult);
+ }
+ catch (Exception ex)
+ {
+ content.Error(ex.Message);
+ }
return content;
}
-
/// <summary>
/// Pad鍏ュ簱瀹屾垚
@@ -142,6 +200,15 @@
cabinOrderDetail.Order_Inqty += Inqty;
if (cabinOrderDetail.Order_Inqty > cabinOrderDetail.Order_qty)
return WebResponseContent.Instance.Error($"鍏ュ簱鏁伴噺涓嶅彲瓒呭嚭鍗曟嵁鏁伴噺");
+ //澶т欢搴撴暣绠辨牎楠�
+ if (warehouseCode == WarehouseEnum.澶т欢搴�.ObjToInt().ToString("000")&& (materielInfo.MaterielSourceType==MaterielSourceTypeEnum.SelfMadePart))
+ {
+ var BoxRule = materielInfo.BoxQty;
+ if (BoxRule > 0 && Inqty % BoxRule != 0)
+ {
+ return WebResponseContent.Instance.Error($"澶т欢搴撳彧鍏佽瀛樻斁鏁寸璐х墿锛佸綋鍓嶅叆搴撴暟閲� {Convert.ToInt32(Inqty)} 涓嶆槸绠辫 {Convert.ToInt32(BoxRule)} 鐨勬暣鏁板��");
+ }
+ }
#region 澶勭悊鍏ュ簱鍗曪紝璐т綅锛屽簱瀛橈紝搴撳瓨鎵规淇℃伅
_unitOfWorkManage.BeginTran();
@@ -162,6 +229,7 @@
#region 璐т綅
var location = _locationInfoService.Repository.QueryFirst(x => x.LocationCode == LocationCode);
if (location == null) return WebResponseContent.Instance.Error($"璇风淮鎶よ揣浣嶇紪鍙枫�恵LocationCode}銆戠殑璐т綅淇℃伅");
+
//if (location.EnableStatus == EnableStatusEnum.Disable.ObjToInt())
// return WebResponseContent.Instance.Error($"璐т綅缂栧彿銆恵LocationCode}銆戝凡绂佺敤锛岃鎭㈠姝e父鍐嶄娇鐢�");
if (location.WarehouseCode != cabinOrderDetail.Reservoirarea)
@@ -321,6 +389,16 @@
{
string WareCodeMJ = WarehouseEnum.楹荤簿搴�.ObjToInt().ToString("000");
string WareCodeLD = WarehouseEnum.鍐峰喕搴�.ObjToInt().ToString("000");
+ #region 妫�鏌ユ槸鍚︽湁鏈畬鎴愮殑鐩樼偣浠诲姟
+ var dt_bath = _inventory_BatchServices.Repository.QueryData(x => order.details.Select(d => d.goods_no).Contains(x.MaterielCode)).ToList();
+ if (dt_bath.Count>=1)
+ {
+ foreach (var item in dt_bath)
+ {
+ if (item.SupplyQuantity > 0) throw new Exception($"鍏ュ簱鍗曘�恵order.order_no}銆戠墿鏂欑紪鍙枫�恵dt_bath[0].MaterielCode}銆戝瓨鍦ㄦ湭瀹屾垚鐨勭洏鐩堝叆搴撲换鍔★紝璇峰鐞嗗畬鎴愬悗鍐嶈繘琛屾甯稿叆搴撴搷浣�");
+ }
+ }
+ #endregion
List<Dt_CabinOrder> dt_CabinOrders = new List<Dt_CabinOrder>();
#region 鐗规畩鑽搧鍏ョ壒娈婂簱鎴�
if (order.warehouse_no == WareCodeMJ || order.warehouse_no == WareCodeLD)
@@ -850,17 +928,22 @@
if (order.warehouse_no == WareCodeMJ || order.warehouse_no == WareCodeLD)
{
- List<Dt_Inventory_Batch> inventory_Batchs = _inventory_BatchServices.Repository.QueryData(x => codes.Contains(x.MaterielCode));
- List<Dt_InventoryInfo> _InventoryInfos = _inventoryInfoService.Repository.QueryData(x => codes.Contains(x.MaterielCode));
+ List<Dt_Inventory_Batch> inventory_Batchs = _inventory_BatchServices.Repository.QueryData(x => codes.Contains(x.MaterielCode)).ToList();
+ List<Dt_InventoryInfo> _InventoryInfos = _inventoryInfoService.Repository.QueryData(x => codes.Contains(x.MaterielCode)).ToList();
#region 搴撳瓨銆佸簱瀛樻壒娆″钩璐�
foreach (var item in order.details)
{
//鎵惧簱瀛樻壒娆′俊鎭�
- Dt_Inventory_Batch inventory_Batch = inventory_Batchs.Where(x => x.MaterielCode == item.goods_no && x.BatchNo == item.batch_num).First();
+ Dt_Inventory_Batch inventory_Batch = inventory_Batchs.Where(x => x.MaterielCode == item.goods_no && x.BatchNo == item.batch_num).FirstOrDefault();
+ if (inventory_Batch==null)
+ {
+ _messageInfoService.AddMessageInfo(MessageGroupByEnum.InOrderAlarm, "ERP鎶ユ姤婧㈠叆搴撻敊璇�", $"鐩樼泩鍏ュ簱鍗曘�恵order.order_no}銆戠墿鏂欑紪鍙枫�恵item.goods_no}銆戠墿鏂欐壒娆°�恵item.batch_num}銆戠殑鐗╂枡鎵规淇℃伅閿欒");
+ throw new Exception($"鐩樼泩鍏ュ簱鍗曘�恵order.order_no}銆戠墿鏂欑紪鍙枫�恵item.goods_no}銆戠墿鏂欐壒娆°�恵item.batch_num}銆戠殑鐗╂枡鎵规淇℃伅閿欒");
+ }
if (inventory_Batch.SupplyQuantity != item.order_qty)
{
_messageInfoService.AddMessageInfo(MessageGroupByEnum.InOrderAlarm, "ERP鎶ユ姤婧㈠叆搴撻敊璇�", $"鐩樼泩鍏ュ簱鍗曘�恵order.order_no}銆戠墿鏂欑紪鍙枫�恵item.goods_no}銆戠墿鏂欐壒娆°�恵item.batch_num}銆戠殑鐩樼泩鏁伴噺鏈夎");
- throw new Exception($"鐩樼泩鍏ュ簱鍗曘�恵order.order_no}銆戠墿鏂欑紪鍙枫�恵item.goods_no}銆戠墿鏂欐壒娆°�恵item.batch_num}銆戠殑鐩樼泩鏁伴噺鏈夎");
+ throw new Exception($"鐩樼泩鍏ュ簱鍗曘�恵order.order_no}銆戠墿鏂欑紪鍙枫�恵item.goods_no}銆戠墿鏂欐壒娆°�恵item.batch_num}銆戠殑鐨勭洏鐩堟暟閲忔湁璇�");
}
//鎵炬墍鏈夊簱瀛�
List<Dt_InventoryInfo> inventoryInfos = _InventoryInfos.Where(x => x.MaterielCode == inventory_Batch.MaterielCode && x.BatchNo == inventory_Batch.BatchNo).ToList();
@@ -949,7 +1032,12 @@
foreach (var item in order.details)
{
//鎵惧簱瀛樻壒娆′俊鎭�
- Dt_Inventory_Batch inventory_Batch = inventory_Batchs.Where(x => x.MaterielCode == item.goods_no && x.BatchNo == item.batch_num).First();
+ Dt_Inventory_Batch inventory_Batch = inventory_Batchs.Where(x => x.MaterielCode == item.goods_no && x.BatchNo == item.batch_num).FirstOrDefault();
+ if (inventory_Batch == null)
+ {
+ _messageInfoService.AddMessageInfo(MessageGroupByEnum.InOrderAlarm, "ERP鎶ユ姤婧㈠叆搴撻敊璇�", $"鐩樼泩鍏ュ簱鍗曘�恵order.order_no}銆戠墿鏂欑紪鍙枫�恵item.goods_no}銆戠墿鏂欐壒娆°�恵item.batch_num}銆戠殑鎵规淇℃伅娌℃湁鎵惧埌");
+ throw new Exception($"鐩樼泩鍏ュ簱鍗曘�恵order.order_no}銆戠墿鏂欑紪鍙枫�恵item.goods_no}銆戠墿鏂欐壒娆°�恵item.batch_num}銆戠殑鎵规淇℃伅閿欒");
+ }
var Qty = Math.Abs(inventory_Batch.SupplyQuantity);
if (Qty != item.order_qty)
{
@@ -1156,7 +1244,8 @@
}
catch (Exception ex)
{
- throw ex;
+ //throw ex;
+ return content.Error(ex.Message);
}
//return content;
return content.OK($"鐩樼泩鍏ュ簱鍗曞垱寤烘垚鍔�");
@@ -1194,8 +1283,8 @@
}
else
{
- var url = "http://121.37.118.63:80/GYZ2/95fck/outOrderOk";
- if (cabinOrder.Order_type == "2") url = "http://121.37.118.63:80/GYZ2/95fck/outOrderOk";
+ var url = "http://192.168.1.100:80/GYZ2/95fck/outOrderOk";
+ if (cabinOrder.Order_type == "2") url = "http://192.168.1.100:80/GYZ2/95fck/outOrderOk";
var requestDate = new
{
order_no = cabinOrder.Order_no
--
Gitblit v1.9.3