From d5051e5293179c99df2e3489ad5f2f73f4061667 Mon Sep 17 00:00:00 2001
From: dengjunjie <dengjunjie@hnkhzn.com>
Date: 星期六, 25 十月 2025 11:53:38 +0800
Subject: [PATCH] 优化WCS与ERP交互逻辑
---
新建文件夹/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/CabinOrderServices.cs | 327 ------------------------------------------------------
1 files changed, 1 insertions(+), 326 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 25416b5..f35bfb2 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"
@@ -41,12 +41,11 @@
private readonly IInventory_BatchServices _inventory_BatchServices;
private readonly IInventoryInfoService _inventoryInfoService;
private readonly ICabinOrderDetailServices _cabinOrderDetailServices;
- private readonly IDeliveryOrderServices _eliveryOrderServices;
private readonly ISupplyTaskService _supplyTaskService;
private readonly ISupplyTaskHtyService _supplyTaskHtyService;
public IRepository<Dt_CabinOrder> Repository => BaseDal;
- public CabinOrderServices(IRepository<Dt_CabinOrder> BaseDal, IBasicService basicService, IMedicineGoodsServices medicineGoodsServices, IUnitOfWorkManage unitOfWorkManage, IInventory_BatchServices inventory_BatchServices, IInventoryInfoService inventoryInfoService, ICabinOrderDetailServices cabinOrderDetailServices, ICabinOrderHtyServices cabinOrderHtyServices, ICabinOrderDetailHtyServices cabinOrderDetailHtyServices, ISupplyTaskService supplyTaskService, ISupplyTaskHtyService supplyTaskHtyService, IDeliveryOrderServices eliveryOrderServices) : base(BaseDal)
+ public CabinOrderServices(IRepository<Dt_CabinOrder> BaseDal, IBasicService basicService, IMedicineGoodsServices medicineGoodsServices, IUnitOfWorkManage unitOfWorkManage, IInventory_BatchServices inventory_BatchServices, IInventoryInfoService inventoryInfoService, ICabinOrderDetailServices cabinOrderDetailServices, ICabinOrderHtyServices cabinOrderHtyServices, ICabinOrderDetailHtyServices cabinOrderDetailHtyServices, ISupplyTaskService supplyTaskService, ISupplyTaskHtyService supplyTaskHtyService) : base(BaseDal)
{
_basicService = basicService;
_medicineGoodsServices = medicineGoodsServices;
@@ -56,7 +55,6 @@
_cabinOrderDetailServices = cabinOrderDetailServices;
_supplyTaskService = supplyTaskService;
_supplyTaskHtyService = supplyTaskHtyService;
- _eliveryOrderServices = eliveryOrderServices;
}
@@ -289,125 +287,6 @@
}
return content;
}
- static string SearchDate = "2025-09-10 00:00:00";
- /// <summary>
- /// 鑾峰彇涓婃父绯荤粺鐨勫叆搴撳崟
- /// </summary>
- /// <param name="searchDate"></param>
- /// <returns></returns>
- public WebResponseContent GetUpstreamOrder()
- {
- var responseContent = new WebResponseContent();
- try
- {
- // 璇锋眰鍦板潃
- var url = "http://121.37.118.63:80/GYZ2/95fck/inOrder";
- //var url = "http://127.0.0.1:4523/m2/5660322-5340849-default/363009261";
-
- if (string.IsNullOrEmpty(SearchDate)) SearchDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
- //// 璇锋眰鍙傛暟
- var requestData = new
- {
- searchDate = SearchDate
- //searchDate = "2022-10-10 20:45:16" // 姝g‘鐨勬牸寮�
- };
- SearchDate = DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd HH:mm:ss");
- // 鍙戣捣璇锋眰
- var result = HttpHelper.Post(url, requestData.ToJsonString());
-
- // 鍙嶅簭鍒楀寲
- var response = JsonConvert.DeserializeObject<UpstreamResponse<UpstreamOrderInfo>>(result);
-
- if (response.resultCode != "0")
- {
- // 璋冪敤寮傚父鎺ュ彛
- SendErrorToUpstream(1, "", response.resultMsg ?? "涓婃父鎺ュ彛杩斿洖澶辫触", "");
- return responseContent.Error(response.resultMsg ?? "涓婃父鎺ュ彛杩斿洖澶辫触");
- }
-
- if (response.data == null || !response.data.Any())
- {
- return responseContent.OK("鏃犳柊鍏ュ簱鍗曟暟鎹�");
- }
- // 鑾峰彇鎵�鏈夊凡瀛樺湪鐨勫叆搴撳崟鍙�
- var existingOrderNos = BaseDal.Db.Queryable<Dt_CabinOrder>()
- .Select(x => x.Order_no)
- .ToList();
-
- // 杩囨护鎺夊凡瀛樺湪鐨勫叆搴撳崟
- var newOrders = response.data
- .Where(order => !existingOrderNos.Contains(order.order_no))
- .ToList();
-
- if (!newOrders.Any())
- {
- return responseContent.OK("鎵�鏈夊叆搴撳崟宸插瓨鍦紝鏃犻渶鏂板");
- }
-
- Db.Ado.BeginTran();
- try
- {
- List<Dt_CabinOrder> _CabinOrders = new List<Dt_CabinOrder>();
- //瀛樺偍鍏ュ簱鍗曞彿
- List<string> orderNos = new List<string>();
-
- foreach (var order in newOrders)
- {
- if (order.order_type == "1") //姝e父鍏ュ簱
- {
- responseContent = CreateInboundOrder(order);
- List<Dt_CabinOrder>? dt_CabinOrders = responseContent.Data as List<Dt_CabinOrder>;
- if (dt_CabinOrders != null) _CabinOrders.AddRange(dt_CabinOrders);
- }
- else
- {
- //鍒涘缓鍑哄簱鍗�
- #region 杞崲涓哄嚭搴撳崟
- UpstramOutOrderInfo upstramOutOrderInfo = new UpstramOutOrderInfo()
- {
- order_no = order.order_no,
- order_type = order.order_type,
- warehouse_no = order.warehouse_no,
- details=new List<UpstreamOutOrderDetail>()
- };
- foreach (var item in order.details)
- {
- UpstreamOutOrderDetail detail = new UpstreamOutOrderDetail()
- {
- batch_num = item.batch_num,
- goods_no = item.goods_no,
- order_qty = item.order_qty,
- exp_date = item.exp_date,
- };
- upstramOutOrderInfo.details.Add(detail);
- }
- _eliveryOrderServices.CreateOutboundOrder(upstramOutOrderInfo);
- #endregion
- }
- };
- BaseDal.Db.InsertNav(_CabinOrders).Include(x => x.Details).ExecuteCommand();
-
- //鍦ㄤ笅鍙戠粰wcs
- //EdiIn(); //鍙戠粰涓嬫父
- //濡傛灉杩欎釜鏂规硶鎴愬姛浜嗭紝閭d箞灏辫皟鐢–ompleteOrder鎺ュ彛锛岀劧鍚庢敼鍙�
- Db.Ado.CommitTran();
- return responseContent.OK("鍚屾鍏ュ簱鍗曟垚鍔�");
- }
- catch (Exception ex)
- {
- Db.Ado.RollbackTran();
- SendErrorToUpstream(1, "", ex.Message, "");
- return responseContent.Error("鍚屾澶辫触: " + ex.Message);
- }
- }
- catch (Exception ex)
- {
- // 鍏ㄥ眬寮傚父鏃讹紝涔熸帹閫佸紓甯哥粰涓婃父
- SendErrorToUpstream(1, "", ex.Message, "");
- return responseContent.Error("鍚屾澶辫触: " + ex.Message);
- }
- }
-
#region 鍒涘缓鍏ュ簱鍗�
/// <summary>
@@ -578,209 +457,5 @@
return webResponseContent;
}
#endregion
-
- /// <summary>
- /// 浼犵粰wcs
- /// </summary>
- public WebResponseContent EdiIn()
- {
- try
- {
- //2.鏌ヨ绗﹀悎鏉′欢鐨勮鍗曪紙琛ㄥご = 鏂板缓 && 鍖呭惈鏈夋晥鏄庣粏锛�
- //var orders = BaseDal.Db.Queryable<Dt_CabinOrder>()
- // .Where(o => o.OdrderStatus == "鏂板缓")
- // .Includes(o => o.Details, d => d.MedicineGoods)
- // .ToList();
- //鏌ュ嚭鍖呭惈鍏ㄩ儴鐨勫叆搴撳崟锛屽寘鍚叏閮ㄦ槑缁�+涓�涓槑缁嗗搴斾竴涓晢鍝�
- var reslut = WarehouseEnum.绔嬪簱.ObjToInt().ToString("000");
- var orders = BaseDal.Db.CopyNew()
- .Queryable<Dt_CabinOrder>()
- .Where(o => o.OdrderStatus == "鏂板缓" && o.Warehouse_no == reslut)
- .Includes(o => o.Details, d => d.MedicineGoods)
- .ToList();
- // 3. 鍐嶈繃婊ゆ帀涓嶇鍚堟潯浠剁殑鏄庣粏锛堝彧淇濈暀 Status=0锛�
- foreach (var order in orders)
- {
- Console.WriteLine($"璁㈠崟 {order.Order_no} 鍘熸槑缁嗘暟锛歿order.Details.Count}");
- order.Details = order.Details.Where(d => d.Status == 0).ToList();
- Console.WriteLine($"璁㈠崟 {order.Order_no} 杩囨护鍚庢槑缁嗘暟锛歿order.Details.Count}");
- }
-
-
- if (orders == null || !orders.Any())
- {
- Console.WriteLine("娌℃湁绗﹀悎鏉′欢鐨勮鍗曢渶瑕佹帹閫�");
- return WebResponseContent.Instance.Error("娌℃湁绗﹀悎鏉′欢鐨勮鍗曢渶瑕佹帹閫�");
- }
-
- // 4. 閬嶅巻璁㈠崟锛岀粍瑁� DTO 骞舵帹閫�
- foreach (var order in orders)
- {
- // 浠庣涓�涓湁 MedicineGoods 鐨勬槑缁嗕腑鍙栧嚭 MaterielErpType
- string materialCode = order.Details
- .Select(d => d.MedicineGoods?.MaterielErpType)
- .FirstOrDefault(x => !string.IsNullOrEmpty(x)) ?? "YY"; // 榛樿鍊糦Y
-
- var ediDto = new ToediInInfo
- {
-
- //瀹㈡埛浠g爜
- customerCode = "905",
- //鐗╂枡绫诲瀷
- materialCode = materialCode,
- //鍏ュ簱鍗曞彿
- externalOrderNo = order.Order_no,
- //鍏ュ簱鍗曠被鍨�
- inOrderType = order.Order_type == "1" ? "10" : "20",
- //浼樺厛绾�
- priority = 0,
- //鏄惁鍙栨秷
- Is_cancel = 0,
- details = order.Details.Select(d => new ToediInDetail
- {
- //鎵瑰彿
- batchNo = d.Batch_num,
- //浜у搧
- productCode = d.Goods_no,
- //sku鍚嶇О
- productName = d.MedicineGoods?.MaterielName,
- //sku瑙勬牸
- productSpecifications = d.MedicineGoods?.MaterielSpec,
- //鏁伴噺
- quantity = (int)d.Order_qty,
- //鏁堟湡
- validityPeriod = d.Exp_date,
- //鐢熶骇鍘傚
- manufacturer = d.MedicineGoods?.Factory,
- //鎴垮彿
- libraryNo = order.Warehouse_no,
- }).ToList()
- };
-
- var url = "http://172.16.1.2:9357/file-admin/api/in/ediIn";
- //var url = "http://127.0.0.1:4523/m2/5660322-5340849-default/363019549";
- var result = HttpHelper.Post(url, ediDto.ToJsonString());
- var resp = JsonConvert.DeserializeObject<TowcsResponse<object>>(result);
-
- if (resp != null && resp.code == "0")
- {
- // 鏇存柊琛ㄥご鐘舵��
- BaseDal.Db.Updateable<Dt_CabinOrder>()
- .SetColumns(o => new Dt_CabinOrder { OdrderStatus = "寮�濮�" })
- .Where(o => o.Id == order.Id)
- .ExecuteCommand();
-
- // 鏇存柊鏄庣粏鐘舵�佷负宸插悓姝� //杩欓噷瑕佹槸灏嗘柊寤�--銆嬪紑濮嬬姸鎬�,鍦ㄥ悗绔帴鍙h繑鍥炴垜浠殑鏃跺�欏湪杩斿洖宸插畬鎴�
- BaseDal.Db.Updateable<Dt_CabinOrderDetail>()
- .SetColumns(d => new Dt_CabinOrderDetail { Status = 1, OrderDetailStatus = "寮�濮�" })
- .Where(d => d.OrderId == order.Id && d.Status == 0)
- .ExecuteCommand();
-
- Console.WriteLine($"璁㈠崟 {order.Order_no} 鎺ㄩ�佹垚鍔�");
- }
- else
- {
- SendErrorToUpstream(3, order.Order_no, resp?.msg ?? "WCS 鎺ㄩ�佸け璐�", "");
- Console.WriteLine($"璁㈠崟 {order.Order_no} 鎺ㄩ�佸け璐ワ細{resp?.msg}");
- return new WebResponseContent { Status = false, Message = "璁㈠崟鎺ㄩ�佸け璐�" };
- }
- }
- return new WebResponseContent { Status = true, Message = "鎺ㄩ�佹垚鍔�" };
- }
- catch (Exception ex)
- {
-
- Console.WriteLine("EdiIn 寮傚父锛�" + ex.Message);
- return new WebResponseContent { Status = false, Message = ex.Message };
- }
- }
-
-
- /// <summary>
- /// 鍏ュ簱鎶ュ畬鎴愭帴鍙�
- /// </summary>
- /// <param name="order_no">鍏ュ簱鍗曞彿</param> //鍏堟鏌ユ槸鍚︽墍鏈夋槑缁嗛兘宸插畬鎴愶紝濡傛灉鏄紝閭d箞鏇存柊琛ㄥご鐘舵�佷负宸插畬鎴�
- /// <returns></returns>
- public WebResponseContent CompleteAllOrders()
- {
- var responseContent = new WebResponseContent();
- try
- {
- #region 鏌ユ壘鎵�鏈夊凡瀹屾垚鍏ュ簱鍗�
- var inorders = BaseDal.QueryData(x => x.OdrderStatus == "宸插畬鎴�").Select(x => x.Order_no).Distinct().ToList();
- foreach (var inorder in inorders)
- {
- //var Orders = BaseDal.QueryData(x => x.Order_no == inorder);
- var Orders = BaseDal.Db.Queryable<Dt_CabinOrder>().Where(x => x.Order_no == inorder).Includes(x => x.Details).ToList();
- if (!Orders.Where(x => x.OdrderStatus != "宸插畬鎴�").Any())
- {
- BaseDal.Db.Ado.BeginTran();
- BaseDal.DeleteAndMoveIntoHty(Orders, OperateTypeEnum.鑷姩瀹屾垚);
- foreach (var item in Orders)
- {
- _cabinOrderDetailServices.Repository.DeleteAndMoveIntoHty(item.Details, OperateTypeEnum.鑷姩瀹屾垚);
- }
- // 璋冪敤涓婃父鎺ュ彛
- var url = "http://121.37.118.63:80/GYZ2/95fck/inOrderOk";
- var result = HttpHelper.Post(url, new { order_no = inorder }.ToJsonString());
- var response = JsonConvert.DeserializeObject<UpstreamOrderResponse>(result);
- if (response.resultCode == "0")
- {
- // 鎻愪氦浜嬪姟
- BaseDal.Db.Ado.CommitTran();
- }
- else
- {
- BaseDal.Db.Ado.RollbackTran();
- SendErrorToUpstream(2, "", $"涓婃父鎺ュ彛杩斿洖澶辫触: {response.resultMsg}", inorder);
- }
- }
- }
- #endregion
- return responseContent.OK();
- }
- catch (Exception ex)
- {
- BaseDal.Db.Ado.RollbackTran();
- return responseContent.Error("鎵归噺澶勭悊澶辫触锛�" + ex.Message);
- }
- }
-
-
-
-
-
- /// <summary>
- /// 鎺ㄩ�佸紓甯镐俊鎭粰涓婃父绯荤粺1.鍏ュ簱鍗曟帴鍙o紱2.鍏ュ簱鍗曟姤瀹屾垚鎺ュ彛锛�3.鍑哄簱鍗曟帴鍙o紱4.鍑哄簱鎶ュ畬鎴愭帴鍙o紱5.鑽搧鍩虹淇℃伅鍚屾鎺ュ彛锛�6.渚涘簲鍟嗕俊鎭帴鍙o紱7.瀹㈡埛淇℃伅鎺ュ彛锛�8.搴撳瓨
- /// </summary>
- public void SendErrorToUpstream(int type, string code, string message, string remark)
- {
- try
- {
- var url = "http://121.37.118.63:80/GYZ2/95fck/lexceptionLogog";
-
- var requestData = new
- {
- type = type.ToString(),
- code = code,
- message = message,
- remark = remark
- };
-
- var result = HttpHelper.Post(url, requestData.ToJsonString());
- // 鍙互鍙嶅簭鍒楀寲妫�鏌� resultCode 鏄惁涓�0
- }
- catch (Exception e)
- {
- // 杩欓噷涓嶈鍐嶆姏寮傚父浜嗭紝閬垮厤姝诲惊鐜�
- Console.WriteLine("寮傚父鎺ュ彛鎺ㄩ�佸け璐ワ細" + e.Message);
- }
- }
-
-
-
-
-
-
}
}
--
Gitblit v1.9.3