From 3212f32acdce5938956131ecfb530e361250f82f Mon Sep 17 00:00:00 2001
From: dengjunjie <dengjunjie@hnkhzn.com>
Date: 星期六, 25 十月 2025 18:51:56 +0800
Subject: [PATCH] 优化出入库流程、盘点流程
---
新建文件夹/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/Business.cs | 661 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 661 insertions(+), 0 deletions(-)
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/Business.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/Business.cs"
new file mode 100644
index 0000000..2bbf5a6
--- /dev/null
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/Business.cs"
@@ -0,0 +1,661 @@
+锘縰sing HslCommunication;
+using Newtonsoft.Json;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.Enums;
+using WIDESEA_Core.Helper;
+using WIDESEA_IBasicService;
+using WIDESEA_ISquareCabinServices;
+using WIDESEA_IWMsInfoServices;
+using static WIDESEA_DTO.SquareCabin.OrderDto;
+using WIDESEA_Model.Models;
+using WIDESEA_SquareCabinServices;
+using static WIDESEA_DTO.SquareCabin.TowcsDto;
+using WIDESEA_Common.WareHouseEnum;
+using WIDESEA_DTO.SquareCabin;
+
+namespace WIDESEA_WMSServer
+{
+ public class Business : IBusiness
+ {
+ private readonly ICabinOrderServices _cabinOrderServices;
+ private readonly ICabinOrderDetailServices _cabinDetailServices;
+ private readonly IDeliveryOrderServices _deliveryOrderServices;
+ private readonly IDeliveryOrderDetailServices _deliveryOrderDetailServices;
+ private readonly IBasicService _basicService;
+ private readonly IUnitOfWorkManage _unitOfWorkManage;
+ private readonly IInventory_BatchServices _inventory_BatchServices;
+ private readonly IInventoryInfoService _inventoryInfoService;
+ private readonly ISupplyTaskService _supplyTaskService;
+ private readonly ITacticsService _tacticsService;
+ public Business(IDeliveryOrderServices deliveryOrderServices, IBasicService basicService, IUnitOfWorkManage unitOfWorkManage, IInventory_BatchServices inventory_BatchServices, IInventoryInfoService inventoryInfoService, IDeliveryOrderDetailServices deliveryOrderDetailServices, ISupplyTaskService supplyTaskService, ICabinOrderServices cabinOrderServices, ITacticsService tacticsService, ICabinOrderDetailServices cabinDetailServices)
+ {
+ _deliveryOrderServices = deliveryOrderServices;
+ _basicService = basicService;
+ _unitOfWorkManage = unitOfWorkManage;
+ _inventory_BatchServices = inventory_BatchServices;
+ _inventoryInfoService = inventoryInfoService;
+ _deliveryOrderDetailServices = deliveryOrderDetailServices;
+ _supplyTaskService = supplyTaskService;
+ _cabinOrderServices = cabinOrderServices;
+ _tacticsService = tacticsService;
+ _cabinDetailServices = cabinDetailServices;
+ }
+ #region 鑾峰彇ERP鍏ュ簱鍗�
+ static string SearchInDate = "2025-09-10 00:00:00";
+ /// <summary>
+ /// 鑾峰彇涓婃父绯荤粺鐨勫叆搴撳崟
+ /// </summary>
+ /// <param name="SearchInDate"></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(SearchInDate)) SearchInDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
+ //// 璇锋眰鍙傛暟
+ var requestData = new
+ {
+ searchDate = SearchInDate
+ //searchDate = "2022-10-10 20:45:16" // 姝g‘鐨勬牸寮�
+ };
+ SearchInDate = 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 = _cabinOrderServices.Db.Queryable<Dt_CabinOrder>()
+ .Select(x => x.Order_no)
+ .Distinct().ToList();
+
+ // 杩囨护鎺夊凡瀛樺湪鐨勫叆搴撳崟
+ var newOrders = response.data
+ .Where(order => !existingOrderNos.Contains(order.order_no))
+ .ToList();
+
+ if (!newOrders.Any())
+ {
+ return responseContent.OK("鎵�鏈夊叆搴撳崟宸插瓨鍦紝鏃犻渶鏂板");
+ }
+
+ _unitOfWorkManage.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 = _cabinOrderServices.CreateInboundOrder(order);
+ List<Dt_CabinOrder>? dt_CabinOrders = responseContent.Data as List<Dt_CabinOrder>;
+ if (dt_CabinOrders != null) _CabinOrders.AddRange(dt_CabinOrders);
+ }
+ else if (order.order_type == "3")//鍏ュ簱閫�鏂�
+ {
+ //鍒涘缓鍑哄簱鍗�
+ #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);
+ }
+ _deliveryOrderServices.CreateOutboundOrder(upstramOutOrderInfo);
+ #endregion
+ }
+ else if (order.order_type == "5")//鎶ユ孩鍏ュ簱
+ {
+ _cabinOrderServices.CreateCheckInOrder(order);
+ }
+ };
+ _cabinOrderServices.Db.InsertNav(_CabinOrders).Include(x => x.Details).ExecuteCommand();
+
+ //鍦ㄤ笅鍙戠粰wcs
+ //EdiIn(); //鍙戠粰涓嬫父
+ //濡傛灉杩欎釜鏂规硶鎴愬姛浜嗭紝閭d箞灏辫皟鐢–ompleteOrder鎺ュ彛锛岀劧鍚庢敼鍙�
+ _unitOfWorkManage.CommitTran();
+ return responseContent.OK("鍚屾鍏ュ簱鍗曟垚鍔�");
+ }
+ catch (Exception ex)
+ {
+ _unitOfWorkManage.RollbackTran();
+ SendErrorToUpstream(1, "", ex.Message, "");
+ return responseContent.Error("鍚屾澶辫触: " + ex.Message);
+ }
+ }
+ catch (Exception ex)
+ {
+ // 鍏ㄥ眬寮傚父鏃讹紝涔熸帹閫佸紓甯哥粰涓婃父
+ SendErrorToUpstream(1, "", ex.Message, "");
+ return responseContent.Error("鍚屾澶辫触: " + ex.Message);
+ }
+ }
+ #endregion
+
+ #region 鑾峰彇ERP鍑哄簱鍗�
+ static string SearchOutDate = "2025-09-10 00:00:00";
+ public WebResponseContent GetUpstreamOutOrder()
+ {
+ var responseContent = new WebResponseContent();
+ try
+ {
+ var url = "http://121.37.118.63:80/GYZ2/95fck/outOrder";
+ //var url = "http://127.0.0.1:4523/m1/5660322-5340849-default/GYZ2/95fck/outOrder";
+ if (string.IsNullOrEmpty(SearchOutDate)) SearchOutDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
+ //// 璇锋眰鍙傛暟
+ var requestData = new
+ {
+ searchDate = SearchOutDate
+ //searchDate = "2022-10-10 20:45:16" // 姝g‘鐨勬牸寮�
+ };
+ SearchOutDate = DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd HH:mm:ss");
+
+ var result = HttpHelper.Post(url, requestData.ToJsonString());
+ var response = JsonConvert.DeserializeObject<UpstreamResponse<UpstramOutOrderInfo>>(result);
+
+ if (response.resultCode != "0")
+ {
+ SendErrorToUpstream(3, "", response.resultMsg ?? "涓婃父鎺ュ彛杩斿洖澶辫触", "");
+ return responseContent.Error(response.resultMsg ?? "涓婃父鎺ュ彛杩斿洖澶辫触");
+ }
+
+ if (response.data == null || !response.data.Any())
+ {
+ return responseContent.OK("鏃犳柊鍑哄簱鍗曟暟鎹�");
+ }
+
+ // 宸插瓨鍦ㄥ嚭搴撳崟鍙�
+ var existingOutOrderNos = _deliveryOrderServices.Db.Queryable<Dt_DeliveryOrder>()
+ .Select(x => x.Out_no)
+ .Distinct().ToList();
+
+ // 鏂板嚭搴撳崟
+ var newOutOrders = response.data
+ .Where(outorder => !existingOutOrderNos.Contains(outorder.order_no))
+ .ToList();
+
+ List<string> order_no = newOutOrders.Select(x => x.order_no).ToList();
+
+ if (!newOutOrders.Any())
+ {
+ return responseContent.OK("鎵�鏈夊嚭搴撳崟宸插瓨鍦紝鏃犻渶鏂板");
+ }
+
+ _unitOfWorkManage.BeginTran();
+ try
+ {
+ List<Dt_DeliveryOrder> _DeliveryOrders = new List<Dt_DeliveryOrder>();
+ List<string> orderNos = new List<string>();
+
+ foreach (var outorder in newOutOrders)
+ {
+ if (outorder.order_type == "1") // 姝e父鍑哄簱鍗�
+ {
+ _deliveryOrderServices.CreateOutboundOrder(outorder);//鍒涘缓鍑哄簱鍗曘�佸鐞嗗簱瀛樸�佹坊鍔犲嚭搴撲换鍔�
+ }
+ else if (outorder.order_type == "2")//鍑哄簱閫�璐�
+ {
+ // 鍒涘缓鍑哄簱閫�璐у崟 - 杩欓噷闇�瑕佹牴鎹笟鍔¢�昏緫瀹炵幇
+ // 鏆傛椂璺宠繃鎴栧疄鐜伴��璐ч�昏緫
+ //continue;
+ #region 杞崲鎴愬叆搴撳崟
+ UpstreamOrderInfo order = new UpstreamOrderInfo()
+ {
+ order_no = outorder.order_no,
+ order_type = outorder.order_type,
+ warehouse_no = outorder.warehouse_no,
+ details = new List<UpstreamOrderDetail>()
+ };
+ foreach (var item in outorder.details)
+ {
+ UpstreamOrderDetail detail = new UpstreamOrderDetail()
+ {
+ batch_num = item.batch_num,
+ goods_no = item.goods_no,
+ order_qty = item.order_qty,
+ exp_date = item.exp_date,
+ };
+ order.details.Add(detail);
+ }
+ responseContent = _cabinOrderServices.CreateInboundOrder(order);
+ List<Dt_CabinOrder>? dt_CabinOrders = responseContent.Data as List<Dt_CabinOrder>;
+ if (dt_CabinOrders != null && dt_CabinOrders.Count > 0)
+ _cabinOrderServices.Db.InsertNav(dt_CabinOrders).Include(x => x.Details).ExecuteCommand();
+ #endregion
+ }
+ else if (outorder.order_type == "6")//鎶ユ崯鍑哄簱
+ {
+ _deliveryOrderServices.CreateCheckOutOrder(outorder);
+ }
+ }
+
+ // 鎵归噺鎻掑叆鍑哄簱鍗曞拰鏄庣粏
+ //if (_DeliveryOrders.Any())
+ //{
+ // BaseDal.Db.InsertNav(_DeliveryOrders).Include(x => x.Details).ExecuteCommand();
+ //}
+ //涓嬪彂鍑哄簱鍗曚换鍔$粰wcs
+
+
+ _unitOfWorkManage.CommitTran();
+ //var tex = CreateSupplyTask(order_no);
+ //if (!tex)
+ //{
+ // return responseContent.Error("鍒涘缓渚涘簲浠诲姟澶辫触");
+ //}
+ return responseContent.OK($"鍚屾鍑哄簱鍗曟垚鍔燂紝鍏眥_DeliveryOrders.Count}鏉�");
+ }
+ catch (Exception ex)
+ {
+ _unitOfWorkManage.RollbackTran();
+ SendErrorToUpstream(3, "", ex.Message, "");
+ return responseContent.Error("鍚屾澶辫触: " + ex.Message);
+ }
+ }
+ catch (Exception ex)
+ {
+ SendErrorToUpstream(3, "", ex.Message, "");
+ return responseContent.Error("鍚屾澶辫触: " + ex.Message);
+ }
+ }
+ #endregion
+
+ #region 涓嬪彂绔嬪簱鍏ュ簱鍗�
+ 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 = _cabinOrderServices.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 == "5" ? "20" : "10",
+ //浼樺厛绾�
+ 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")
+ {
+ // 鏇存柊琛ㄥご鐘舵��
+ _cabinOrderServices.Db.Updateable<Dt_CabinOrder>()
+ .SetColumns(o => new Dt_CabinOrder { OdrderStatus = "寮�濮�" })
+ .Where(o => o.Id == order.Id)
+ .ExecuteCommand();
+
+ // 鏇存柊鏄庣粏鐘舵�佷负宸插悓姝� //杩欓噷瑕佹槸灏嗘柊寤�--銆嬪紑濮嬬姸鎬�,鍦ㄥ悗绔帴鍙h繑鍥炴垜浠殑鏃跺�欏湪杩斿洖宸插畬鎴�
+ _cabinDetailServices.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 };
+ }
+ }
+ #endregion
+
+ #region 涓嬪彂绔嬪簱鍑哄簱鍗�
+ public WebResponseContent EdiOut()
+ {
+ var responseContent = new WebResponseContent();
+ try
+ {
+ // 1. 鏌ヨ绗﹀悎鏉′欢鐨勮鍗曪紙琛ㄥご=鏂板缓 && 鍖呭惈鏈夋晥鏄庣粏锛�
+ var outOrders = _deliveryOrderServices.Db.CopyNew().Queryable<Dt_DeliveryOrder>()
+ .Where(o => o.OutStatus == "鏂板缓" && o.Warehouse_no == WarehouseEnum.绔嬪簱.ObjToInt().ToString("000"))
+ .Includes(o => o.Details, d => d.MedicineGoods)
+ .ToList();
+
+ // 2. 鍐嶈繃婊ゆ帀涓嶇鍚堟潯浠剁殑鏄庣粏锛堝彧淇濈暀 Status=0 锛�
+ foreach (var order in outOrders)
+ {
+ order.Details = order.Details.Where(d => d.Status == 0).ToList();
+ }
+
+ if (outOrders == null || !outOrders.Any())
+ {
+ Console.WriteLine("娌℃湁绗﹀悎鏉′欢鐨勮鍗曢渶瑕佹帹閫�");
+ return responseContent.Error("娌℃湁绗﹀悎鏉′欢鐨勮鍗曢渶瑕佹帹閫�");
+ }
+
+ foreach (var order in outOrders)
+ {
+ try
+ {
+ string materialCode = "YY";//榛樿鍊�
+ //鑾峰彇褰撳墠璁㈠崟鐨勭涓�涓槑缁嗛」
+ var firstDetail = order.Details.FirstOrDefault();
+ if (firstDetail?.MedicineGoods != null && !string.IsNullOrEmpty(firstDetail.MedicineGoods.MaterielErpType))
+ {
+ //濡傛灉鏉′欢婊¤冻锛屽皢鐗╂枡浠g爜璁剧疆涓虹涓�涓槑缁嗛」瀵瑰簲鐨勮嵂鍝佺墿鏂欎唬鐮�
+ materialCode = firstDetail.MedicineGoods.MaterielErpType;
+ }
+ switch (order.Out_type)
+ {
+ case "1"://姝e父鍑哄簱
+ case "3"://鍏ュ簱閫�璐�
+ order.Out_type = "10";//涓�鑸氦鏄撳嚭搴撳崟
+ break;
+ case "6"://鐩樹簭鍑哄簱
+ order.Out_type = "30";//鐩樹簭鍑哄簱鍗�
+ break;
+ }
+ // 3. 缁勮 DTO
+ var ediDto = new TowcsDto.ToediOutInfo
+ {
+ customerCode = "905",
+ materialCode = materialCode,
+ externalOrderNo = order.Out_no,
+ outOrderType = order.Out_type,//20鏄洏鐐瑰嚭搴撳崟
+ priority = 1,
+ Is_cancel = 0,
+ details = order.Details.Select(d => new TowcsDto.ToeOutdiInDetail
+ {
+ batchNo = d.Batch_num,
+ productCode = d.Goods_no,
+ productName = d.MedicineGoods?.MaterielName,
+ productSpecifications = d.MedicineGoods?.MaterielModel,
+ quantity = (int)d.Order_qty,
+ //stocktakingDetails = order.Out_type == "3"
+ // ? new List<ToOutediInStock>
+ // {
+ // new ToOutediInStock { palletCode = "FC00001", quantity = d.Order_qty.ToString() }
+ // }
+ // : null
+ }).ToList()
+ };
+
+ // 4. 璋冪敤鎺ュ彛
+ var url = "http://172.16.1.2:9357/file-admin/api/out/ediOut";
+ //var url = "http://127.0.0.1:4523/m2/5660322-5340849-default/363076920";
+
+ var result = HttpHelper.Post(url, ediDto.ToJsonString());
+ var resp = JsonConvert.DeserializeObject<TowcsDto.TowcsResponse<object>>(result);
+
+ if (resp != null && resp.code == "0")
+ {
+ // 鏇存柊琛ㄥご鐘舵��
+ _cabinDetailServices.Db.Updateable<Dt_DeliveryOrder>()
+ .SetColumns(o => new Dt_DeliveryOrder { OutStatus = "寮�濮�" })
+ .Where(o => o.Id == order.Id)
+ .ExecuteCommand();
+
+ // 鏇存柊鏄庣粏鐘舵��
+ _deliveryOrderDetailServices.Db.Updateable<Dt_DeliveryOrderDetail>()
+ .SetColumns(d => new Dt_DeliveryOrderDetail { Status = 1, OotDetailStatus = "寮�濮�" })
+ .Where(d => d.DeliveryOrderId == order.Id && d.Status == 0)
+ .ExecuteCommand();
+ Console.WriteLine($"璁㈠崟 {order.Out_no} 鎺ㄩ�佹垚鍔�");
+ }
+ else
+ {
+ SendErrorToUpstream(3, order.Out_no, resp?.msg ?? "WCS 鎺ㄩ�佸け璐�", "");
+ Console.WriteLine($"璁㈠崟 {order.Out_no} 鎺ㄩ�佸け璐ワ細{resp?.msg}");
+ }
+ //鍒犻櫎鍏ㄩ儴鐘朵负宸插畬鎴愮殑鏄庣粏鍜岃〃澶达紝绉诲叆鍘嗗彶琛�
+ }
+ catch (Exception ex)
+ {
+ SendErrorToUpstream(3, order.Out_no, ex.Message, "");
+ Console.WriteLine($"璁㈠崟 {order.Out_no} 鎺ㄩ�佸紓甯革細{ex.Message}");
+ }
+ }
+
+ return responseContent.OK("鍑哄簱璁㈠崟鎺ㄩ�佸畬鎴�");
+ }
+ catch (Exception ex)
+ {
+ Console.WriteLine("EdiOut 寮傚父锛�" + ex.Message);
+ return responseContent.Error("鍑哄簱璁㈠崟鎺ㄩ�佸け璐ワ細" + ex.Message);
+ }
+ }
+ #endregion
+
+ #region 鍏ュ簱瀹屾垚涓婃姤ERP
+ /// <summary>
+ /// 鍏ュ簱鎶ュ畬鎴愭帴鍙�
+ /// </summary>
+ /// <param name="order_no">鍏ュ簱鍗曞彿</param> //鍏堟鏌ユ槸鍚︽墍鏈夋槑缁嗛兘宸插畬鎴愶紝濡傛灉鏄紝閭d箞鏇存柊琛ㄥご鐘舵�佷负宸插畬鎴�
+ /// <returns></returns>
+ public WebResponseContent CompleteAllOrders()
+ {
+ var responseContent = new WebResponseContent();
+ try
+ {
+ #region 鏌ユ壘鎵�鏈夊凡瀹屾垚鍏ュ簱鍗�
+ var inorders = _cabinOrderServices.Repository.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 = _cabinOrderServices.Db.Queryable<Dt_CabinOrder>().Where(x => x.Order_no == inorder).Includes(x => x.Details).ToList();
+ if (!Orders.Where(x => x.OdrderStatus != "宸插畬鎴�").Any())
+ {
+ _unitOfWorkManage.BeginTran();
+ _cabinOrderServices.Repository.DeleteAndMoveIntoHty(Orders, OperateTypeEnum.鑷姩瀹屾垚);
+ foreach (var item in Orders)
+ {
+ _cabinDetailServices.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")
+ {
+ // 鎻愪氦浜嬪姟
+ _unitOfWorkManage.CommitTran();
+ }
+ else
+ {
+ _unitOfWorkManage.RollbackTran();
+ SendErrorToUpstream(2, "", $"涓婃父鎺ュ彛杩斿洖澶辫触: {response.resultMsg}", inorder);
+ }
+ }
+ }
+ #endregion
+ return responseContent.OK();
+ }
+ catch (Exception ex)
+ {
+ _unitOfWorkManage.RollbackTran();
+ return responseContent.Error("鎵归噺澶勭悊澶辫触锛�" + ex.Message);
+ }
+ }
+ #endregion
+
+ #region 鍑哄簱瀹屾垚涓婃姤ERP
+ /// <summary>
+ /// 鍑哄簱鎶ュ畬鎴愭帴鍙�
+ /// </summary>
+ /// <param name="out_no">鍑哄簱鍗曞彿</param>
+ /// <returns></returns>
+ public WebResponseContent CompleteAllOutOrders()
+ {
+ var responseContent = new WebResponseContent();
+ try
+ {
+ #region 鏌ユ壘鎵�鏈夊凡瀹屾垚鍑哄簱鍗�
+ var outorders = _deliveryOrderServices.Repository.QueryData(x => x.OutStatus == "宸插畬鎴�").Select(x => x.Out_no).Distinct().ToList();
+ foreach (var outorder in outorders)
+ {
+ var Orders = _deliveryOrderServices.Db.Queryable<Dt_DeliveryOrder>().Where(x => x.Out_no == outorder).Includes(x => x.Details).ToList();
+ if (!Orders.Where(x => x.OutStatus != "宸插畬鎴�").Any())
+ {
+ _unitOfWorkManage.BeginTran();
+ _deliveryOrderServices.Repository.DeleteAndMoveIntoHty(Orders, OperateTypeEnum.鑷姩瀹屾垚);
+ foreach (var item in Orders)
+ {
+ _deliveryOrderDetailServices.Repository.DeleteAndMoveIntoHty(item.Details, OperateTypeEnum.鑷姩瀹屾垚);
+ }
+ var url = "http://121.37.118.63:80/GYZ2/95fck/outOrderOk";
+ var requestDate = new
+ {
+ order_no = outorder
+ };
+ var result = HttpHelper.Post(url, requestDate.ToJsonString());
+ var response = JsonConvert.DeserializeObject<UpstreamOrderResponse>(result);
+ if (response.resultCode == "0") _unitOfWorkManage.CommitTran();
+ else
+ {
+ _unitOfWorkManage.RollbackTran();
+ SendErrorToUpstream(4, "", $"涓婃父鎺ュ彛杩斿洖澶辫触: {response.resultMsg}", outorder);
+ }
+ }
+ }
+ #endregion
+
+ return responseContent.OK();
+ }
+ catch (Exception ex)
+ {
+ _unitOfWorkManage.RollbackTran();
+ return responseContent.Error("鎵归噺澶勭悊澶辫触锛�" + ex.Message);
+ }
+ }
+ #endregion
+
+ #region 鎺ㄩ�佸紓甯镐笂鎶RP
+ /// <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);
+ }
+ }
+ #endregion
+ }
+}
--
Gitblit v1.9.3