using HandyControl.Controls; using HandyControl.Data; using MiniExcelLibs; using Newtonsoft.Json; using Ping9719.WpfEx.Mvvm; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net; using System.Text; using System.Text.RegularExpressions; using System.Threading; using System.Threading.Tasks; using System.Windows.Controls; using System.Windows.Input; using TouchSocket.Core; using System.Windows.Markup; using System.Security.Policy; using WCS.Model.ApiModel.MXBackgroundThread; using 智能仓储WCS管理系统; using WCS.Model.ApiModel.MatInventoryDetail; using 智能仓储WCS管理系统.Api; using System.Runtime.CompilerServices; using WCS.Model; namespace 智能仓储WCS管理系统.ViewModel { public class MXOutOrderDetailViewViewModel : BindableBase { /// /// /// /// /// /// /// /// 是否是首盘发料 public MXOutOrderDetailViewViewModel( string billNumber, string warehouseCode , string orderProdNumbers, string orderWorkNumbers , int isFirstSend = 0, string reportSide = null ) { BillNumber = billNumber; OrderProdNumbers = orderProdNumbers; OrderWorkNumbers = orderWorkNumbers; WarehouseCode = warehouseCode; Task.Run(() => { var request = new RecommendedBarCodeRequest() { pickBillNumber = billNumber, warehouseCode = warehouseCode, warehouseType = 20 }; var requeststr = JsonConvert.SerializeObject(request); var url = string.Empty; if (isFirstSend == 0) { url = LocalFile.Config.RecommendedBarCode; } else if (isFirstSend == 1) { request = new FistPushRecommendedBarCodeRequest() { pickBillNumber = billNumber, warehouseCode = warehouseCode, warehouseType = 20, reportSide = reportSide, }; requeststr = JsonConvert.SerializeObject(request); url = LocalFile.Config.FirstSendRecommendedBarCode; } //后续料 else { url = LocalFile.Config.ElectronicSiloPush; } var result = ApiHelp.MXGetDataFromHttp>(requeststr, url, "POST", true); if (result != null && result.code == 200 && result.data != null && result.data.Count() > 0) { //获取推荐的条码 var matSns = result.data.Select(t => t.materialBar).ToList(); //调用 比对库存数据 获取库存中有的数据 #region 调用接口 比对库存数据 获取库存中有的数据 try { var body = new CompareMatInventoryDetailRequest() { MatSns = matSns, }; var Result = ApiHelp.GetDataFromHttp>(LocalFile.Config.ApiIpHost + "matInventoryDetail/compareMatInventoryDetail", body, "POST", true); //查询到物料信息 if (Result != null && Result.Data != null && Result.Data.Lists != null && Result.Data.Lists.Count != 0) { DataGridItemSource = Result.Data.Lists; } else if (Result != null && Result.Code == 200 && (Result.Data == null || Result.Data.Lists == null || Result.Data.Lists.Count == 0)) { var content = $"MES/WMS系统按先进先出推荐物料条码在此货架上不存在,请确认物料是否在其他货架(B区)上!或者确认是否是物料上架后丢失(复制物料条码后在[出入记录]功能中通过物料SN查询确认是否丢失,如果确认是此货架上丢失,重新上架再次进行出库操作),具体条码如下:\r\n{string.Join(",\r\n", matSns)}"; //MessageBox.Show($"未查询到领料明细!所推荐物料在此货架上不存在,请确认是否在其他货架上!或者是否已经丢失?(复制物料条码后在[出入记录]功能中即可查询)\r\n{string.Join(",\r\n", matSns)}"); TipView.Show(content, "提示", true); DataGridItemSource = null; } else { MessageBox.Show($"未查询到领料明细!请重试!"); DataGridItemSource = null; } } catch (Exception e) { MessageBox.Show($"未查询到领料明细!请重试!"); DataGridItemSource = null; } #endregion } else if (result != null && result.code == 200 && (result.data == null || result.data.Count == 0)) { Growl.Warning("未查询到物料明细!MES推荐物料明细为空!请确认该单据是否已发或咨询MES系统相关负责人!"); DataGridItemSource = null; } else { Growl.Warning("未查询到领料明细!请求MES接口失败!请确认该单据是否已发或咨询MES系统相关负责人!"); DataGridItemSource = null; } }); } #region Property private int selectedCount; public int SelectedCount { get { return selectedCount; } set { SetProperty(ref selectedCount, value); } } private int selectedPan; public int SelectedPan { get { return selectedPan; } set { SetProperty(ref selectedPan, value); } } //发料单号 private string billNumber; public string BillNumber { get { return billNumber; } set { SetProperty(ref billNumber, value); } } //订单号 private string orderProdNumbers; public string OrderProdNumbers { get { return orderProdNumbers; } set { SetProperty(ref orderProdNumbers, value); } } //工单号 private string orderWorkNumbers; public string OrderWorkNumbers { get { return orderWorkNumbers; } set { SetProperty(ref orderWorkNumbers, value); } } //输入的仓库代码 private string warehouseCode; public string WarehouseCode { get { return warehouseCode; } set { SetProperty(ref warehouseCode, value); } } private List dataGridItemSource; public List DataGridItemSource { get { return dataGridItemSource; } set { SetProperty(ref dataGridItemSource, value); RefreshCount(); } } public void RefreshCount() { Task.Run(() => { try { SelectedCount = dataGridItemSource.Where(t => t.IsSelected == true).Sum(t => t.MatQty); SelectedPan = dataGridItemSource.Where(t => t.IsSelected == true).Count(); } catch { } }); } #endregion #region Command #endregion } }