using HslCommunication; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using WIDESEA_Core; using WIDESEA_Core.Helper; using WIDESEA_ISquareCabinServices; using WIDESEA_Model.Models; using static WIDESEA_DTO.SquareCabin.OrderDto; namespace WIDESEA_SquareCabinServices { public partial class Business { #region 获取ERP入库单 //static string SearchInOrderDate = "2025-11-01 00:00:00"; //public WebResponseContent GetInOrder() //{ // WebResponseContent content = new WebResponseContent(); // try // { // var url = "http://121.37.118.63:80/GYZ2/95fck/inOrder"; // string GetOutOrderDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); // if (string.IsNullOrEmpty(SearchInOrderDate)) SearchInOrderDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); // var requestData = new { searchDate = SearchInOrderDate }; // //SearchInOrderDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); // var result = HttpHelper.Post(url, requestData.ToJsonString()); // var response = JsonConvert.DeserializeObject>(result); // if (response == null) return content; // if (response.data.Count < 1) // { // SearchInOrderDate = GetOutOrderDate; // return content; // } // var ordernos = response.data.Select(x => x.order_no).ToList(); // var existingOrderNos = _cabinOrderServices.Repository.QueryData(x => ordernos.Contains(x.Order_no)).Select(x => x.Order_no).Distinct().ToList(); // var newOrders = response.data.Where(order => !existingOrderNos.Contains(order.order_no)).ToList(); // if (newOrders.Count < 1) // { // SearchInOrderDate = GetOutOrderDate; // return content; // } // int messQty = 0; // foreach (var order in newOrders) // { // try // { // if (order.order_type == "1") // { // content = _cabinOrderServices.CreateInboundOrder(order); // if (!content.Status) messQty++; // } // 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() // }; // 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); // } // #endregion // content = _deliveryOrderServices.CreateOutboundOrder(upstramOutOrderInfo); // if (!content.Status) messQty++; // } // else if (order.order_type == "5")//报溢入库 // { // content = _cabinOrderServices.CreateCheckInOrder(order); // if (!content.Status) messQty++; // } // } // catch (Exception ex) // { // continue; // } // } // if (messQty == 0) SearchInOrderDate = GetOutOrderDate; // return content.OK(); // } // catch (Exception ex) // { // Console.WriteLine("获取ERP入库单信息异常:" + ex.Message); // return content.Error(ex.Message); // } //} #endregion #region 获取ERP出库单 //static string SearchOutOrderDate = "2025-11-01 00:00:00"; //public WebResponseContent GetOutOrder() //{ // WebResponseContent content = new WebResponseContent(); // try // { // //var url = "http://121.37.118.63:80/GYZ2/95fck/outOrder"; // var url = "http://127.0.0.1:4523/m2/5660322-5340849-default/366751306?apifoxApiId=366751306"; // string GetOutOrderDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); // if (string.IsNullOrEmpty(SearchOutOrderDate)) SearchOutOrderDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); // var requestData = new { searchDate = SearchOutOrderDate }; // var result = HttpHelper.Post(url, requestData.ToJsonString()); // var response = JsonConvert.DeserializeObject>(result); // if (response == null) return content; // if (response.data.Count < 1) // { // SearchOutOrderDate = GetOutOrderDate; // return content; // } // var ordernos = response.data.Select(x => x.order_no).ToList(); // var existingOutOrderNos = _deliveryOrderServices.Repository.QueryData(x => ordernos.Contains(x.Out_no)).Select(x => x.Out_no).Distinct().ToList(); // var newOutOrders = response.data.Where(outorder => !existingOutOrderNos.Contains(outorder.order_no)).ToList(); // if (newOutOrders.Count < 1) // { // SearchOutOrderDate = GetOutOrderDate; // return content; // } // int messQty = 0; // foreach (var outorder in newOutOrders) // { // if (outorder.order_type == "1")// 正常出库单 // { // content = _deliveryOrderServices.CreateOutboundOrder(outorder); // if (!content.Status) messQty++; // } // else if (outorder.order_type == "2")//出库退货 // { // #region 转换成入库单 // UpstreamOrderInfo order = new UpstreamOrderInfo() // { // order_no = outorder.order_no, // order_type = outorder.order_type, // warehouse_no = outorder.warehouse_no, // details = new List() // }; // 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); // } // #endregion // content = _cabinOrderServices.CreateInboundOrder(order); // if (!content.Status) messQty++; // } // else if (outorder.order_type == "6")//报损出库 // { // content = _deliveryOrderServices.CreateCheckOutOrder(outorder); // if (!content.Status) messQty++; // } // } // if (messQty == 0) SearchOutOrderDate = GetOutOrderDate; // } // catch (Exception ex) // { // content.Error(ex.Message); // } // return content; //} #endregion #region 获取ERP入库单 static string SearchInOrderDate = "2025-11-01 00:00:00"; public WebResponseContent GetInOrder() { WebResponseContent content = new WebResponseContent(); try { var url = "http://121.37.118.63:80/GYZ2/95fck/inOrder"; string GetOutOrderDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); if (string.IsNullOrEmpty(SearchInOrderDate)) SearchInOrderDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); var requestData = new { searchDate = SearchInOrderDate }; var result = HttpHelper.Post(url, requestData.ToJsonString()); var response = JsonConvert.DeserializeObject>(result); if (response == null) return content; if (response.data.Count < 1) { SearchInOrderDate = GetOutOrderDate; return content; } var ordernos = response.data.Select(x => x.order_no).ToList(); // 关键修改:按订单类型分别检查对应的表 var inOrderTypes = new List { "1", "5" }; // 入库类型 var outOrderTypes = new List { "3" }; // 出库类型 // 检查入库单表(只检查入库类型的订单)是否存在 var existingInOrderNos = _cabinOrderServices.Repository.QueryData(x => ordernos.Contains(x.Order_no)) .Select(x => x.Order_no).Distinct().ToList(); // 检查出库单表(只检查出库类型的订单) var existingOutOrderNos = _deliveryOrderServices.Repository.QueryData(x => ordernos.Contains(x.Out_no)) .Select(x => x.Out_no).Distinct().ToList(); // 筛选新订单:入库类型检查入库表,出库类型检查出库表 选出不包含已存在在 var newOrders = response.data.Where(order => (inOrderTypes.Contains(order.order_type) && !existingInOrderNos.Contains(order.order_no)) || (outOrderTypes.Contains(order.order_type) && !existingOutOrderNos.Contains(order.order_no)) ).ToList(); if (newOrders.Count < 1) { SearchInOrderDate = GetOutOrderDate; return content; } int messQty = 0; foreach (var order in newOrders) { try { if (order.order_type == "1") { content = _cabinOrderServices.CreateInboundOrder(order); if (!content.Status) messQty++; } else if (order.order_type == "3")//入库退料 { #region 转换为出库单 UpstramOutOrderInfo upstramOutOrderInfo = new UpstramOutOrderInfo() { order_no = order.order_no, order_type = order.order_type, client_no=order.supplier_no, client_name=order.supplier_name, account_time=order.account_time, warehouse_no = order.warehouse_no, details = new List() }; 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); } #endregion content = _deliveryOrderServices.CreateOutboundOrder(upstramOutOrderInfo); if (!content.Status) messQty++; } else if (order.order_type == "5")//报溢入库 { content = _cabinOrderServices.CreateCheckInOrder(order); if (!content.Status) messQty++; } } catch (Exception ex) { continue; } } if (messQty == 0) SearchInOrderDate = GetOutOrderDate; return content.OK(); } catch (Exception ex) { Console.WriteLine("获取ERP入库单信息异常:" + ex.Message); return content.Error(ex.Message); } } #endregion #region 获取ERP出库单 static string SearchOutOrderDate = "2025-11-01 00:00:00"; public WebResponseContent GetOutOrder() { WebResponseContent content = new WebResponseContent(); try { var url = "http://121.37.118.63:80/GYZ2/95fck/outOrder"; string GetOutOrderDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); if (string.IsNullOrEmpty(SearchOutOrderDate)) SearchOutOrderDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); var requestData = new { searchDate = SearchOutOrderDate }; var result = HttpHelper.Post(url, requestData.ToJsonString()); var response = JsonConvert.DeserializeObject>(result); if (response == null) return content; if (response.data.Count < 1) { SearchOutOrderDate = GetOutOrderDate; return content; } var ordernos = response.data.Select(x => x.order_no).ToList(); // 按订单类型分别检查对应的表 var outOrderTypes = new List { "1", "6" }; // 出库类型 var inOrderTypes = new List { "2" }; // 入库类型 // 检查出库单表(只检查出库类型的订单) var existingOutOrderNos = _deliveryOrderServices.Repository.QueryData(x => ordernos.Contains(x.Out_no)) .Select(x => x.Out_no).Distinct().ToList(); // 检查入库单表(只检查入库类型的订单) var existingInOrderNos = _cabinOrderServices.Repository.QueryData(x => ordernos.Contains(x.Order_no)) .Select(x => x.Order_no).Distinct().ToList(); // 筛选新订单:出库类型检查出库表,入库类型检查入库表 var newOrders = response.data.Where(order => (outOrderTypes.Contains(order.order_type) && !existingOutOrderNos.Contains(order.order_no)) || (inOrderTypes.Contains(order.order_type) && !existingInOrderNos.Contains(order.order_no)) ).ToList(); if (newOrders.Count < 1) { SearchOutOrderDate = GetOutOrderDate; return content; } int messQty = 0; foreach (var outorder in newOrders) { if (outorder.order_type == "1")// 正常出库单 { content = _deliveryOrderServices.CreateOutboundOrder(outorder); if (!content.Status) messQty++; } else if (outorder.order_type == "2")//出库退货 { #region 转换成入库单 UpstreamOrderInfo order = new UpstreamOrderInfo() { order_no = outorder.order_no, order_type = outorder.order_type, supplier_no=outorder.client_no, supplier_name=outorder.client_name, account_time=outorder.account_time, warehouse_no = outorder.warehouse_no, details = new List() }; 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); } #endregion content = _cabinOrderServices.CreateInboundOrder(order); if (!content.Status) messQty++; } else if (outorder.order_type == "6")//报损出库 { content = _deliveryOrderServices.CreateCheckOutOrder(outorder); if (!content.Status) messQty++; } } if (messQty == 0) SearchOutOrderDate = GetOutOrderDate; } catch (Exception ex) { content.Error(ex.Message); } return content; } #endregion } }