diff --git a/WCS.BLL/DbModels/OutOrder.cs b/WCS.BLL/DbModels/OutOrder.cs
index 5fb7a59..c0e7957 100644
--- a/WCS.BLL/DbModels/OutOrder.cs
+++ b/WCS.BLL/DbModels/OutOrder.cs
@@ -81,6 +81,12 @@ namespace WCS.BLL.DbModels
[SugarColumn(ColumnName = "create_user", Length = 100, IsNullable = true, ColumnDescription = "操作员")]
public string CreateUser { get; set; }
+ ///
+ /// 是否是盟讯公司盘点生成的出库单
+ ///
+ [SugarColumn(ColumnName = "is_MXPD", IsNullable = true, ColumnDescription = "是否是盟讯公司盘点生成的出库单")]
+ public bool? IsMXPD { get; set; } = false;
+
///
/// 用于绑定DataGrid中是否选择
///
diff --git a/WCS.BLL/DbModels/OutOrderMatDetail.cs b/WCS.BLL/DbModels/OutOrderMatDetail.cs
index 3b284fd..4061dca 100644
--- a/WCS.BLL/DbModels/OutOrderMatDetail.cs
+++ b/WCS.BLL/DbModels/OutOrderMatDetail.cs
@@ -127,6 +127,12 @@ namespace WCS.BLL.DbModels
[SugarColumn(ColumnName = "create_user", Length = 100, IsNullable = true, ColumnDescription = "操作员")]
public string CreateUser { get; set; }
+ ///
+ /// 是否是盟讯公司盘点生成的出库单
+ ///
+ [SugarColumn(ColumnName = "is_MXPD", IsNullable = true, ColumnDescription = "是否是盟讯公司盘点生成的出库单")]
+ public bool? IsMXPD { get; set; } = false;
+
///
/// 用于绑定中显示序号
///
diff --git a/WCS.BLL/HardWare/SmartShelf.cs b/WCS.BLL/HardWare/SmartShelf.cs
index 1fa7268..bf6a5cd 100644
--- a/WCS.BLL/HardWare/SmartShelf.cs
+++ b/WCS.BLL/HardWare/SmartShelf.cs
@@ -1456,7 +1456,7 @@ namespace WCS.BLL.HardWare
MatSupplier = inventoryDetail.MatSupplier,
OrderNumber = orderMatDetails.OrderNumber,
- Direction = DirectionEnum.出库,
+ Direction = orderMatDetails.IsMXPD == false ? DirectionEnum.出库 : DirectionEnum.盘点下架,
};
//库位表 修改
storeInfo.CurrentMatSn = string.Empty;
@@ -1509,6 +1509,7 @@ namespace WCS.BLL.HardWare
var isExsistOut = CurrentOutStoreMatSNs.Any();
var tempOrder = CurrentOutOrder;
+ var isMXPD = orderMatDetails.IsMXPD == true;
//通知前台刷新
Task.Run(() =>
{
@@ -1519,7 +1520,7 @@ namespace WCS.BLL.HardWare
{
IsWarning = false,
ClientIp = WebSocketIpAddress,
- WarningType = WarningTypeEnum.通知刷新出库
+ WarningType = isMXPD ? WarningTypeEnum.通知刷新盟讯盘点 : WarningTypeEnum.通知刷新出库
};
WarningManager.SendWarning(messageMode);
});
diff --git a/WCS.BLL/Services/IService/IGenerateService.cs b/WCS.BLL/Services/IService/IGenerateService.cs
index e9051a1..c7d1ac3 100644
--- a/WCS.BLL/Services/IService/IGenerateService.cs
+++ b/WCS.BLL/Services/IService/IGenerateService.cs
@@ -15,5 +15,7 @@ namespace WCS.BLL.Services.IService
public Task generateStockTakingNumber();
public Task generateOutOrderNumber();
+
+ public Task generateMXPDOutOrderNumber();
}
}
diff --git a/WCS.BLL/Services/Service/GenerateService.cs b/WCS.BLL/Services/Service/GenerateService.cs
index f89c77f..fb2ee2e 100644
--- a/WCS.BLL/Services/Service/GenerateService.cs
+++ b/WCS.BLL/Services/Service/GenerateService.cs
@@ -134,6 +134,15 @@ namespace WCS.BLL.Services.Service
}
}
+ public async Task generateMXPDOutOrderNumber()
+ {
+ lock (stockTakingFlag)
+ {
+ var serialNumber = GetSerialNumber(DocumentTypeEnum.出库单据);
+ return "PDOUT" + DateTime.Now.ToString("yyyyMMdd") + serialNumber.ToString().PadLeft(4, '0');
+ }
+ }
+
public int GetSerialNumber(DocumentTypeEnum documentType)
{
var documentSerialNumber = DbHelp.db.Queryable()
diff --git a/WCS.BLL/Services/Service/OutstoreService.cs b/WCS.BLL/Services/Service/OutstoreService.cs
index ef0ac61..8f73893 100644
--- a/WCS.BLL/Services/Service/OutstoreService.cs
+++ b/WCS.BLL/Services/Service/OutstoreService.cs
@@ -131,6 +131,7 @@ namespace WCS.BLL.Services.Service
{
Code = 200,
Message = $"出库单据同步成功!\r\n出库单据号为{request.OrderNumber}",
+ Data = request.OrderNumber
}; ;
}
catch (Exception ex)
@@ -231,7 +232,7 @@ namespace WCS.BLL.Services.Service
MatQty = t.MatQty,
MatSupplier = t.MatSupplier,
MatCustomer = t.MatCustomer,
- CreateUser = request.UserName
+ CreateUser = request.UserName,
};
await DbHelp.db.Insertable(orderMatDetail).ExecuteCommandAsync();
}).ToList();
@@ -289,12 +290,14 @@ namespace WCS.BLL.Services.Service
outOrder = new OutOrder()
{
OrderNumber = request.OrderNumber,
+ OrderType = request.OrderType,
OutOrderExeStatus = OutOrderExeStatus.开始发料,
OrderSource = "WCS前端",
SyncType = SyncTypeEnum.ByMatSn,
ShelfTypeName = "智能货架",
ShelfTypeId = 0,
GroupName = LocalFile.Config.GroupName,
+ IsMXPD = request.IsMXPD,
};
outOrder.Id = await DbHelp.db.Insertable(outOrder).ExecuteReturnIdentityAsync();
outOrder = await DbHelp.db.Queryable().Where(t => t.OrderNumber == request.OrderNumber)
@@ -327,7 +330,8 @@ namespace WCS.BLL.Services.Service
MatQty = item.MatQty,
MatSupplier = item.MatSupplier,
MatCustomer = item.MatCustomer,
- CreateUser = request.UserName
+ CreateUser = request.UserName,
+ IsMXPD = request.IsMXPD,
};
await DbHelp.db.Insertable(orderMatDetail).ExecuteCommandAsync();
}
@@ -362,7 +366,8 @@ namespace WCS.BLL.Services.Service
MatQty = item.MatQty,
MatSupplier = item.MatSupplier,
MatCustomer = item.MatCustomer,
- CreateUser = request.UserName
+ CreateUser = request.UserName,
+ IsMXPD = request.IsMXPD,
};
await DbHelp.db.Insertable(orderMatDetail).ExecuteCommandAsync();
}
@@ -396,7 +401,7 @@ namespace WCS.BLL.Services.Service
return new ResponseCommon()
{
Code = 200,
- Message = $"Success",
+ Message = outOrder.OrderNumber,
Data = request.SnList
};
@@ -466,7 +471,10 @@ namespace WCS.BLL.Services.Service
};
}
//直接查询
- var recordsQueryable = DbHelp.db.Queryable().Where(t => request.OrderExeStatus.Contains(t.OutOrderExeStatus));
+ var recordsQueryable = DbHelp.db.Queryable()
+ .Where(t => request.OrderExeStatus.Contains(t.OutOrderExeStatus))
+ .WhereIF(request.IsMXPD != null, t => t.IsMXPD == request.IsMXPD)
+ .WhereIF(LocalFile.Config.IsMx, t => t.CreateTime > DateTime.Now.AddDays(-3));
var totalCount = await recordsQueryable.CountAsync();
var records = await recordsQueryable
@@ -693,7 +701,7 @@ namespace WCS.BLL.Services.Service
var matCode = outOrderDetailCount.First().bb.Key;
outOrderMatDetails = outOrderMatDetails.Where(t => t.MatCode == matCode)
.ToList();
- Logs.Write($"出库单{order.OrderNumber},本次亮灯物料{matCode}!",LogsType.Outstore);
+ Logs.Write($"出库单{order.OrderNumber},本次亮灯物料{matCode}!", LogsType.Outstore);
//分批次亮灯再计算一次出哪些货架 以免亮大灯不亮小灯
shelfIds = outOrderMatDetails.Select(t => t.StoreInfo.ShelfId)
@@ -843,7 +851,7 @@ namespace WCS.BLL.Services.Service
Dictionary> dict = new Dictionary>();
foreach (OutOrderMatDetail oomd in outOrderMatDetails)
{
- List mi= DbHelp.db.Queryable().Where(it => it.ModuleCode == oomd.StoreCode).ToList();
+ List mi = DbHelp.db.Queryable().Where(it => it.ModuleCode == oomd.StoreCode).ToList();
if (mi.Count != 0)
{
if (!StoreCode.Contains(oomd.StoreCode))
@@ -875,7 +883,7 @@ namespace WCS.BLL.Services.Service
{
string sendIP = v.Key;
TCPClient tCPClient = TCPClientManager.GetTCPClientByIPHost(sendIP);
- byte[] lightOn = Helper.OutstoreLight(v.Value, LightColor,1);
+ byte[] lightOn = Helper.OutstoreLight(v.Value, LightColor, 1);
tCPClient.Send(lightOn);
Thread.Sleep(100);
}
@@ -895,12 +903,12 @@ namespace WCS.BLL.Services.Service
foreach (string shelfcode in WarnLightShelfCode)
{
List si = DbHelp.db.Queryable().Where(it => it.ShelfCode == shelfcode).ToList();
- if (si.Count != 0)
+ if (si.Count != 0)
{
for (int i = 0; i < si.Count; i++)
{
TCPClient tCPClient = TCPClientManager.GetTCPClientByIPHost(si[i].ClientIp);
- byte[] warnlightOn = Helper.OutstoreWarnLight(si[i].LightId,LightColor,1,0);
+ byte[] warnlightOn = Helper.OutstoreWarnLight(si[i].LightId, LightColor, 1, 0);
tCPClient.Send(warnlightOn);
Thread.Sleep(100);
}
@@ -1199,7 +1207,7 @@ namespace WCS.BLL.Services.Service
}
catch (Exception ee)
{
- Logs.Write("查询出库单据:"+request.OrderNumber+"对应库位灯颜色失败,"+ ee.Message);
+ Logs.Write("查询出库单据:" + request.OrderNumber + "对应库位灯颜色失败," + ee.Message);
}
Dictionary> dict = new Dictionary>();
foreach (OutOrderMatDetail oomd in outOrderMatDetails)
@@ -1236,7 +1244,7 @@ namespace WCS.BLL.Services.Service
{
string sendIP = v.Key;
TCPClient tCPClient = TCPClientManager.GetTCPClientByIPHost(sendIP);
- byte[] lightOn = Helper.OutstoreLight(v.Value, LightColor,0);
+ byte[] lightOn = Helper.OutstoreLight(v.Value, LightColor, 0);
tCPClient.Send(lightOn);
Thread.Sleep(100);
}
diff --git a/WCS.Model/ApiModel/InOutRecord/InOutRecordModel.cs b/WCS.Model/ApiModel/InOutRecord/InOutRecordModel.cs
index 4cad1a5..6782aa6 100644
--- a/WCS.Model/ApiModel/InOutRecord/InOutRecordModel.cs
+++ b/WCS.Model/ApiModel/InOutRecord/InOutRecordModel.cs
@@ -40,5 +40,6 @@ namespace WCS.Model.ApiModel.InOutRecord
出库 = 1,
丢失 = 2,
盘点 = 3,
+ 盘点下架 = 4,
}
}
diff --git a/WCS.Model/ApiModel/MXBackgroundThread/ElectronicSiloPushRequest.cs b/WCS.Model/ApiModel/MXBackgroundThread/ElectronicSiloPushRequest.cs
new file mode 100644
index 0000000..4213f55
--- /dev/null
+++ b/WCS.Model/ApiModel/MXBackgroundThread/ElectronicSiloPushRequest.cs
@@ -0,0 +1,17 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace WCS.Model.ApiModel.MXBackgroundThread
+{
+ public class ElectronicSiloPushRequest
+ {
+ public string materialCode { get; set; }
+ public string warehouseCode { get; set; }
+ }
+
+ public class ElectronicSiloPushDto
+ {
+ public string materialBar { get; set; }
+ }
+}
diff --git a/WCS.Model/ApiModel/OutStore/GetOutOrderListByStatusRequest.cs b/WCS.Model/ApiModel/OutStore/GetOutOrderListByStatusRequest.cs
index bfedf5d..3d1018e 100644
--- a/WCS.Model/ApiModel/OutStore/GetOutOrderListByStatusRequest.cs
+++ b/WCS.Model/ApiModel/OutStore/GetOutOrderListByStatusRequest.cs
@@ -10,5 +10,7 @@ namespace WCS.Model
public class GetOutOrderListByStatusRequest : PageQueryRequestBase
{
public List OrderExeStatus { get; set; }
+
+ public bool? IsMXPD { get; set; }
}
}
diff --git a/WCS.Model/ApiModel/OutStore/SysOutOrderByMatSnRequest.cs b/WCS.Model/ApiModel/OutStore/SysOutOrderByMatSnRequest.cs
index e60189d..bff9ecf 100644
--- a/WCS.Model/ApiModel/OutStore/SysOutOrderByMatSnRequest.cs
+++ b/WCS.Model/ApiModel/OutStore/SysOutOrderByMatSnRequest.cs
@@ -17,6 +17,11 @@ namespace WCS.Model
///
public string OrderType { get; set; }
+ ///
+ /// 是否是盟讯公司盘点生成的出库单
+ ///
+ public bool IsMXPD { get; set; } = false;
+
public List SnList { get; set; }
}
}
diff --git a/WCS.Model/WebSocketModel/WebSocketMessageModel.cs b/WCS.Model/WebSocketModel/WebSocketMessageModel.cs
index 4838fcf..34b693c 100644
--- a/WCS.Model/WebSocketModel/WebSocketMessageModel.cs
+++ b/WCS.Model/WebSocketModel/WebSocketMessageModel.cs
@@ -56,5 +56,6 @@ namespace WCS.Model.WebSocketModel
恢复正常 = 50,
通知刷新出库 = 51,
通知刷新盘点 = 52,
+ 通知刷新盟讯盘点 = 53,
}
}
diff --git a/WCS.WebApi/Controllers/OutstoreController.cs b/WCS.WebApi/Controllers/OutstoreController.cs
index 7481c2d..33bfcad 100644
--- a/WCS.WebApi/Controllers/OutstoreController.cs
+++ b/WCS.WebApi/Controllers/OutstoreController.cs
@@ -106,7 +106,12 @@ namespace WebApi.Controllers
{
if (string.IsNullOrEmpty(request.OrderNumber))
{
- request.OrderNumber = await _generateService.generateOutOrderNumber();
+ if (request.IsMXPD)
+ {
+ request.OrderNumber = await _generateService.generateMXPDOutOrderNumber();
+ }
+ else
+ request.OrderNumber = await _generateService.generateOutOrderNumber();
}
return await _outstoreService.SysOutOrderByMatSn(request);
}
diff --git a/货架标准上位机/ViewModels/MXViewModel/MXOutInventoryViewModel.cs b/货架标准上位机/ViewModels/MXViewModel/MXOutInventoryViewModel.cs
index c343196..b0b6de5 100644
--- a/货架标准上位机/ViewModels/MXViewModel/MXOutInventoryViewModel.cs
+++ b/货架标准上位机/ViewModels/MXViewModel/MXOutInventoryViewModel.cs
@@ -231,6 +231,7 @@ namespace 货架标准上位机.ViewModel
{
var body = new GetOutOrderListByStatusRequest()
{
+ IsMXPD = false,
OrderExeStatus = new List() { OutOrderExeStatus.开始发料, OutOrderExeStatus.发料完成 }
};
var Result = ApiHelp.GetDataFromHttp>(LocalFile.Config.ApiIpHost + "outstore/getOutOrderListByStatus", body, "POST");
diff --git a/货架标准上位机/ViewModels/MXViewModel/MXPDViewModel.cs b/货架标准上位机/ViewModels/MXViewModel/MXPDViewModel.cs
new file mode 100644
index 0000000..c98af57
--- /dev/null
+++ b/货架标准上位机/ViewModels/MXViewModel/MXPDViewModel.cs
@@ -0,0 +1,429 @@
+using HandyControl.Controls;
+using HandyControl.Data;
+using MiniExcelLibs;
+using Newtonsoft.Json;
+using Ping9719.WpfEx.Mvvm;
+using System;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.Data.SqlClient;
+using System.IO;
+using System.Linq;
+using System.Net;
+using System.Security.Cryptography.X509Certificates;
+using System.Text;
+using System.Text.RegularExpressions;
+using System.Threading;
+using System.Threading.Tasks;
+using System.Web.UI.WebControls;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Input;
+using TouchSocket.Core;
+using WCS.Model;
+using WCS.Model.ApiModel.MatInventoryDetail;
+using WCS.Model.ApiModel.MXBackgroundThread;
+using WCS.Model.ApiModel.OutStore;
+using WCS.Model.ApiModel.Stocktaking;
+using 货架标准上位机.Api;
+using 货架标准上位机.ViewModel;
+
+namespace 货架标准上位机.ViewModel
+{
+ public class MXPDViewModel : BindableBase
+ {
+ public MXPDViewModel()
+ {
+ RefreshOutOrderList();
+ }
+
+ #region Property
+ private OutOrderModel selectedOutOrder;
+ public OutOrderModel SelectedOutOrder
+ {
+ get { return selectedOutOrder; }
+ set
+ {
+ SetProperty(ref selectedOutOrder, value);
+ if (selectedOutOrder != null)
+ {
+ SelectedOutOrderNumber = selectedOutOrder.OrderNumber;
+ RefreshDataGridItemSource();
+ }
+ else
+ {
+ DataGridItemSource?.Clear();
+ }
+ }
+ }
+
+ private string selectedOutOrderNumber;
+ public string SelectedOutOrderNumber
+ {
+ get => selectedOutOrderNumber;
+ set
+ {
+ SetProperty(ref selectedOutOrderNumber, value);
+ }
+ }
+
+
+ private ObservableCollection outOrderList;
+ public ObservableCollection OutOrderList
+ {
+ get => outOrderList;
+ set
+ {
+ SetProperty(ref outOrderList, value);
+ }
+ }
+
+ private ObservableCollection dataGridItemSource;
+ public ObservableCollection DataGridItemSource
+ {
+ get { return dataGridItemSource; }
+ set
+ {
+ SetProperty(ref dataGridItemSource, value);
+ RefreshCount();
+ }
+ }
+
+ //单据总盘数
+ private int totalPan;
+ public int TotalPan
+ {
+ get => totalPan; set
+ {
+ SetProperty(ref totalPan, value);
+ }
+ }
+
+ private int sendedPan;
+ public int SendedPan
+ {
+ get => sendedPan; set
+ {
+ SetProperty(ref sendedPan, value);
+ }
+ }
+
+ private int totalCount;
+ public int TotalCount
+ {
+ get => totalCount;
+ set { SetProperty(ref totalCount, value); }
+ }
+
+
+ private string orderStatus;
+ public string OrderStatus
+ {
+ get { return orderStatus; }
+ set
+ {
+ SetProperty(ref orderStatus, value);
+ }
+ }
+
+ public void RefreshCount()
+ {
+ Task.Run(() =>
+ {
+ SendedPan = dataGridItemSource.Where(t => t.IsSended).Count();
+ TotalPan = dataGridItemSource.Count();
+ TotalCount = dataGridItemSource.Sum(t => t.MatQty);
+ });
+ }
+
+
+ private string matCode;
+ public string MatCode
+ {
+ get => matCode;
+ set { SetProperty(ref matCode, value); }
+ }
+
+ private string wareHouseCode;
+ public string WareHouseCode
+ {
+ get => wareHouseCode;
+ set { SetProperty(ref wareHouseCode, value); }
+ }
+ #endregion
+
+ #region Command
+ public ICommand BtnOutOrderCommand { get => new DelegateCommand(BtnOutOrder); }
+ public void BtnOutOrder()
+ {
+ var window = new MXOutOrderView();
+ window.Owner = Application.Current.MainWindow;
+ window.ShowDialog();
+ }
+
+
+ public ICommand BtnStartCommand { get => new DelegateCommand(BtnStart); }
+ public void BtnStart()
+ {
+ try
+ {
+ //判断是否选择单据
+ if (SelectedOutOrder == null)
+ {
+ Growl.Warning("未选择单据!");
+ return;
+ }
+
+ #region 调用接口开始出库
+ var body = new GetOutOrderDetailRequest()
+ {
+ OrderId = selectedOutOrder.Id,
+ OrderNumber = selectedOutOrder.OrderNumber,
+ UserName = LocalStatic.CurrentUser,
+ DeviceType = LocalFile.Config.DeviceType,
+ };
+ var Result = ApiHelp.GetDataFromHttp(LocalFile.Config.ApiIpHost + "outStore/goInOutstore", body, "POST");
+ if (Result != null && Result.Code == 200)
+ {
+ Growl.Warning("已成功开始出库!");
+ RefreshDataGridItemSource();
+ }
+ else if (Result != null)
+ {
+ Growl.Warning(Result.Message);
+ }
+ else
+ {
+ Growl.Warning("调用接口失败!");
+ }
+ #endregion
+ }
+ catch (Exception ex)
+ {
+ Growl.Error("出现异常:" + ex.Message);
+ }
+ finally
+ {
+ }
+ }
+
+ public ICommand BtnPauseCommand { get => new DelegateCommand(BtnPause); }
+ public void BtnPause()
+ {
+ try
+ {
+ //判断是否选择单据
+ if (SelectedOutOrder == null)
+ {
+ Growl.Warning("未选择单据!");
+ return;
+ }
+ #region 调用接口结束出库
+ var body = new GetOutOrderDetailRequest()
+ {
+ OrderId = selectedOutOrder.Id,
+ OrderNumber = selectedOutOrder.OrderNumber,
+ UserName = LocalStatic.CurrentUser,
+ DeviceType = LocalFile.Config.DeviceType,
+ };
+ var Result = ApiHelp.GetDataFromHttp(LocalFile.Config.ApiIpHost + "outStore/goOutOutstore", body, "POST");
+ if (Result != null && Result.Code == 200)
+ {
+ Growl.Warning("已成功结束盘点!");
+ RefreshDataGridItemSource();
+ }
+ else if (Result != null)
+ {
+ Growl.Warning(Result.Message);
+ }
+ else
+ {
+ Growl.Warning("操作失败:调用接口失败!");
+ }
+ #endregion
+ }
+ catch (Exception ex)
+ {
+ Growl.Error("出现异常:" + ex.Message);
+ }
+ finally
+ {
+ }
+ }
+
+ public ICommand BtnQueryCommand { get => new DelegateCommand(BtnQuery); }
+ public void BtnQuery()
+ {
+ try
+ {
+ //请求WMS获取物料明细
+ var request = new ElectronicSiloPushRequest()
+ {
+ materialCode = MatCode,
+ warehouseCode = WareHouseCode
+ };
+ var requeststr = JsonConvert.SerializeObject(request);
+ var result = ApiHelp.MXGetDataFromHttp>(requeststr, "http://192.168.2.23:9213/integrate/inOut/electronicSiloPush", "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)
+ {
+ var count = Result.Data.Lists.Count;
+ //是否生成盘点单 实际上是出库单
+ var dialogResult = HandyControl.Controls.MessageBox.Show($"共查询到有{count}盘物料,是否生成盘点单?", "提示", MessageBoxButton.YesNo);
+ if (dialogResult == MessageBoxResult.Yes)
+ {
+ #region 调用接口保存出库单据
+ var body1 = new SysOutOrderByMatSnRequest()
+ {
+ IsMXPD = true,
+ OrderType = "出库",
+ OrderSource = "WCS前端",
+ SnList = Result.Data.Lists.Select(t => t.MatSN).ToList(),
+ DeviceType = LocalFile.Config.DeviceType,
+ UserName = LocalStatic.CurrentUser
+ };
+ var Result1 = ApiHelp.GetDataFromHttp(LocalFile.Config.ApiIpHost + "outstore/sysOutOrderByMatSn", body1, "POST");
+ if (Result1 != null && Result1.Code == 200)
+ {
+ //出库单据保存成功 刷新左侧出库单列表
+ MXPDView.viewModel.RefreshOutOrderList(Result1.Message.ToString());
+ Growl.Success("盘点单据保存成功,请点击【开始盘点】进行盘点下架!");
+ }
+ else if (Result1 != null)
+ {
+ Growl.Warning(Result1.Message);
+ }
+ #endregion
+ }
+ else
+ return;
+ }
+ else if (Result != null && Result.Code == 200 && (Result.Data == null || Result.Data.Lists == null || Result.Data.Lists.Count == 0))
+ {
+ HandyControl.Controls.MessageBox.Show($"未查询到需要盘点的明细!所推荐物料在此货架上不存在,请确认是否在其他货架上!\r\n{string.Join(",\r\n", matSns)}");
+ DataGridItemSource = null;
+ }
+ else
+ {
+ HandyControl.Controls.MessageBox.Show($"未查询到需要盘点的明细!请重试!");
+ DataGridItemSource = null;
+ }
+ }
+ catch (Exception e)
+ {
+ HandyControl.Controls.MessageBox.Show($"未查询到需要盘点的明细!请重试!");
+ DataGridItemSource = null;
+ }
+ #endregion
+ }
+ else
+ {
+ Growl.Warning("获取WMS系统库存数据失败!" + result?.message);
+ }
+
+ }
+ catch (Exception ex)
+ {
+
+ }
+ finally
+ {
+ //dia.Close();
+ //dia.Collapse();
+ }
+ }
+
+ public void RefreshOutOrderList(string OrderNumber = "")
+ {
+ #region 调用接口获取发料单
+ try
+ {
+ var body = new GetOutOrderListByStatusRequest()
+ {
+ OrderExeStatus = new List() { OutOrderExeStatus.开始发料, OutOrderExeStatus.发料完成 },
+ IsMXPD = true,
+ };
+ var Result = ApiHelp.GetDataFromHttp>(LocalFile.Config.ApiIpHost + "outstore/getOutOrderListByStatus", body, "POST");
+ if (Result != null && Result.Code == 200)
+ {
+ OutOrderList = new ObservableCollection(Result.Data.Lists);
+ if (!string.IsNullOrEmpty(OrderNumber))
+ {
+ SelectedOutOrder = OutOrderList.Where(t => t.OrderNumber == OrderNumber).FirstOrDefault();
+ }
+ }
+ else if (Result != null && !string.IsNullOrEmpty(Result.Message))
+ {
+ Growl.Warning(Result.Message);
+ }
+ }
+ catch (Exception ex)
+ {
+ Growl.Warning(ex.Message);
+ }
+ #endregion
+ }
+
+ public void RefreshDataGridItemSource()
+ {
+ if (SelectedOutOrder == null)
+ {
+ //选择的单据为空无法进行查询
+ return;
+ }
+ #region 调用接口获取出库单物料明细
+ Task.Run(() =>
+ {
+ var body = new GetOutOrderDetailRequest()
+ {
+ OrderId = selectedOutOrder.Id,
+ OrderNumber = selectedOutOrder.OrderNumber,
+ UserName = LocalStatic.CurrentUser,
+ DeviceType = LocalFile.Config.DeviceType,
+
+ };
+ var Result = ApiHelp.GetDataFromHttp>>(LocalFile.Config.ApiIpHost + "outStore/getOutOrderMatDetail", body, "POST");
+ if (Result != null && Result.Code == 200)
+ {
+ if (Result.Data.Count > 0)
+ {
+ DataGridItemSource = new ObservableCollection(Result.Data);
+ OrderStatus = Result.Message;
+ }
+ else
+ {
+ App.Current.Dispatcher.Invoke(() =>
+ {
+ DataGridItemSource?.Clear();
+ });
+ Growl.Warning("该单据未查询到发料明细!");
+ }
+ }
+ else if (Result != null)
+ {
+ Growl.Warning(Result.Message);
+ }
+ else
+ {
+ Growl.Warning("调用接口失败!");
+ }
+ });
+ #endregion
+ }
+ #endregion
+ }
+}
diff --git a/货架标准上位机/Views/MXWindows/MXMainWindow.xaml b/货架标准上位机/Views/MXWindows/MXMainWindow.xaml
index 55b1e73..f8ac1c8 100644
--- a/货架标准上位机/Views/MXWindows/MXMainWindow.xaml
+++ b/货架标准上位机/Views/MXWindows/MXMainWindow.xaml
@@ -127,7 +127,7 @@
- 盘点单据
+ PDA盘点单
@@ -139,7 +139,7 @@
- 物料盘点
+ PDA盘点
@@ -147,6 +147,18 @@
+
+
+
+
+ 物料盘点
+
+
+
+
+
+
+
diff --git a/货架标准上位机/Views/MXWindows/MXOutInventoryView.xaml b/货架标准上位机/Views/MXWindows/MXOutInventoryView.xaml
index 0c98816..f3f7713 100644
--- a/货架标准上位机/Views/MXWindows/MXOutInventoryView.xaml
+++ b/货架标准上位机/Views/MXWindows/MXOutInventoryView.xaml
@@ -133,7 +133,7 @@
-
+
diff --git a/货架标准上位机/Views/MXWindows/MXPDView.xaml b/货架标准上位机/Views/MXWindows/MXPDView.xaml
new file mode 100644
index 0000000..3719740
--- /dev/null
+++ b/货架标准上位机/Views/MXWindows/MXPDView.xaml
@@ -0,0 +1,235 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/货架标准上位机/Views/MXWindows/MXPDView.xaml.cs b/货架标准上位机/Views/MXWindows/MXPDView.xaml.cs
new file mode 100644
index 0000000..4a001f2
--- /dev/null
+++ b/货架标准上位机/Views/MXWindows/MXPDView.xaml.cs
@@ -0,0 +1,59 @@
+using Ping9719.WpfEx;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Input;
+using System.Windows.Media;
+using System.Windows.Media.Imaging;
+using System.Windows.Shapes;
+using System.Text.RegularExpressions;
+using 货架标准上位机.ViewModel;
+
+namespace 货架标准上位机
+{
+ public partial class MXPDView : UserControlBase
+ {
+ public static MXPDViewModel viewModel { get; set; } = new MXPDViewModel();
+ public MXPDView()
+ {
+ InitializeComponent();
+ this.DataContext = viewModel;
+ }
+
+ private void DataGrid_SelectedCellsChanged(object sender, SelectedCellsChangedEventArgs e)
+ {
+ try
+ {
+ DataGrid datagrid = sender as DataGrid;
+ datagrid.UnselectAllCells();
+ }
+ catch
+ {
+ }
+ }
+
+ private void TextBlock_MouseDown(object sender, MouseButtonEventArgs e)
+ {
+ viewModel.RefreshOutOrderList(viewModel.SelectedOutOrderNumber);
+ }
+ private void ListView_PreviewMouseWheel(object sender, MouseWheelEventArgs e)
+ {
+ if (!e.Handled)
+ {
+ e.Handled = true;
+ // 激发一个鼠标滚轮事件,冒泡给外层ListView接收到
+ var eventArg = new MouseWheelEventArgs(e.MouseDevice, e.Timestamp, e.Delta);
+ eventArg.RoutedEvent = UIElement.MouseWheelEvent;
+ eventArg.Source = sender;
+ var parent = ((Control)sender).Parent as UIElement;
+ parent.RaiseEvent(eventArg);
+ }
+ }
+ }
+}
diff --git a/货架标准上位机/WebSocket.cs b/货架标准上位机/WebSocket.cs
index 90638d4..758acaf 100644
--- a/货架标准上位机/WebSocket.cs
+++ b/货架标准上位机/WebSocket.cs
@@ -108,6 +108,10 @@ namespace 货架标准上位机
StockTakingView.viewModel.RefreshDataGridItemSource();
client.Send(e.DataFrame.ToText());
break;
+ case WarningTypeEnum.通知刷新盟讯盘点:
+ MXPDView.viewModel.RefreshDataGridItemSource();
+ client.Send(e.DataFrame.ToText());
+ break;
case WarningTypeEnum.恢复正常:
var SolvedGuids = warning.SolvedGuids;
SolvedGuids.ForEach(guid =>