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"; 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 } }