diff --git a/WCS.BLL/DbModels/InOutRecord.cs b/WCS.BLL/DbModels/InOutRecord.cs
index 080816f..253d1ef 100644
--- a/WCS.BLL/DbModels/InOutRecord.cs
+++ b/WCS.BLL/DbModels/InOutRecord.cs
@@ -140,7 +140,7 @@ namespace WCS.BLL.DbModels
/// 货架的组别、区域(区分单个软件管哪些货架的,前端的配置文件配置一个组别,查询时只显示当前组别的货架)
///
[SugarColumn(ColumnName = "group_name", Length = 50, IsNullable = false, DefaultValue = "0", ColumnDescription = "货架的组别、区域(区分单个软件管哪些货架的,前端的配置文件配置一个组别,查询时只显示当前组别的货架)")]
- public string GroupName { get; set; }
+ public string GroupName { get; set; } = string.Empty;
///
/// 序号
diff --git a/WCS.BLL/DbModels/StockTakingOrder.cs b/WCS.BLL/DbModels/StockTakingOrder.cs
index ccd2e36..07757b8 100644
--- a/WCS.BLL/DbModels/StockTakingOrder.cs
+++ b/WCS.BLL/DbModels/StockTakingOrder.cs
@@ -56,6 +56,12 @@ namespace WCS.BLL.DbModels
[SugarColumn(ColumnName = "update_time", IsNullable = false, ColumnDescription = "更新时间")]
public DateTime UpdateTime { get; set; } = DateTime.Now;
+ ///
+ /// 货架的组别、区域(区分单个软件管哪些货架的,前端的配置文件配置一个组别,查询时只显示当前组别的货架)
+ ///
+ [SugarColumn(ColumnName = "group_name", Length = 50, IsNullable = true, DefaultValue = "0", ColumnDescription = "货架的组别、区域(区分单个软件管哪些货架的,前端的配置文件配置一个组别,查询时只显示当前组别的货架)")]
+ public string GroupName { get; set; } = string.Empty;
+
///
/// 序号
///
diff --git a/WCS.BLL/HardWare/SmartShelf.cs b/WCS.BLL/HardWare/SmartShelf.cs
index 4c02971..73f0295 100644
--- a/WCS.BLL/HardWare/SmartShelf.cs
+++ b/WCS.BLL/HardWare/SmartShelf.cs
@@ -23,7 +23,6 @@ namespace WCS.BLL.HardWare
ShelfCode = shelfInfo.ShelfCode;
RowCounts = shelfInfo.Rowcounts;
ColumnCounts = shelfInfo.Columncounts;
- //CurrentMode = shelfInfo.CurrentMode;
SetCurrentMode(Mode.待机模式);
ClientIp = shelfInfo.ClientIp;
LightId = shelfInfo.LightId;
@@ -326,6 +325,7 @@ namespace WCS.BLL.HardWare
{
try
{
+ Logs.Write("GoInOutstoreByWebSocket", LogsType.Outstore);
//找到对应的模组
var module = Modules.Where(t => t.ModuleId == moduleId).First();
if (module == null)
@@ -341,16 +341,12 @@ namespace WCS.BLL.HardWare
module.Reset(TcpCleint);
//判断此货架是否还有出库模式的模块
- var isExistOuting = Modules.Where(t => t.CurrentMode == Mode.出库模式).Any();
- if (isExistOuting)
+ #region 判断是否退出入库 是否亮下一次灯逻辑
+ var isExsistOut = CurrentOutStoreMatSNs.Any();
+ //本次亮灯的物料已全部取出
+ if (!isExsistOut)
{
- //还有继续出的就不管
- }
- //这里的处理逻辑应与出库出了最后一盘料相同
- else
- {
- #region 继续出库进程
- Logs.Write($"GoInOutstoreByModule货架【{ShelfCode}】,丢失删除的料刚好为货架需要出库的最后一盘料", LogsType.Outstore);
+ Logs.Write($"货架【{ShelfCode}】,本次亮灯的物料已全部取出", LogsType.Outstore);
CurrentOutOrder = null;
//退出出库模式
@@ -373,9 +369,10 @@ namespace WCS.BLL.HardWare
.Any();
if (!isLastShelf)
{
- Logs.Write($"GoInOutstoreByModule发料单{OrderNumber},最后一个出库货架,触发精准发料机制!查询是否还存在待出库物料", LogsType.Outstore);
+ Logs.Write($"发料单{OrderNumber},最后一个出库货架,触发精准发料机制!查询是否还存在待出库物料", LogsType.Outstore);
var outOrder = DbHelp.db.Queryable()
.Where(t => t.OrderNumber == OrderNumber)
+ .WhereIF(!string.IsNullOrEmpty(LocalFile.Config.GroupName), t => t.GroupName == LocalFile.Config.GroupName)
.First();
if (outOrder != null)
{
@@ -391,7 +388,7 @@ namespace WCS.BLL.HardWare
LocalStatic.CurrentOutStoreColor = LocalStatic.CurrentOutStoreColor == (byte)0x02 ? (byte)0x04 : (byte)0x02;
//存在待出库 然后之前又没亮灯的情况 => 继续分批次亮灯
- Logs.Write($"GoInOutstoreByModule发料单{OrderNumber},还有物料未出!", LogsType.Outstore);
+ Logs.Write($"发料单{OrderNumber},还有物料未出!", LogsType.Outstore);
var outOrderDetailCount = outOrderMatDetails.GroupBy(t => t.MatCode)
.Select(o => new { count = o.Count(), bb = o })
.Where(o => o.count >= 2)
@@ -403,13 +400,13 @@ namespace WCS.BLL.HardWare
var matCode = outOrderDetailCount.First().bb.Key;
outOrderMatDetails = outOrderMatDetails.Where(t => t.MatCode == matCode)
.ToList();
- Logs.Write($"GoInOutstoreByModule发料单{OrderNumber},本次亮灯物料{matCode}!", LogsType.Outstore);
+ Logs.Write($"发料单{OrderNumber},本次亮灯物料{matCode}!", LogsType.Outstore);
}
//相同物料不存在盘数超过n的情况,剩余物料全部亮灯
else
{
//剩余物料全出
- Logs.Write($"GoInOutstoreByModule发料单{OrderNumber},剩余所有物料灯全亮(发送命令)!", LogsType.Outstore);
+ Logs.Write($"发料单{OrderNumber},剩余所有物料灯全亮(发送命令)!", LogsType.Outstore);
}
var shelfIds = outOrderMatDetails.Select(t => t.StoreInfo.ShelfId)
@@ -430,7 +427,6 @@ namespace WCS.BLL.HardWare
shelfs.ForEach(shelf =>
{
var matDetails = outOrderMatDetails.Where(t => t.StoreInfo.ShelfCode == shelf.ShelfCode)
-
.Distinct()
.ToList();
shelf.GoInOutstore(matDetails, outOrder, OutOperateUser);
@@ -439,17 +435,45 @@ namespace WCS.BLL.HardWare
}
else
{
- Logs.Write($"GoInOutstoreByModule发料单{OrderNumber},当前物料已发完!", LogsType.Outstore);
+ #region 当前单据物料已发完
+ Logs.Write($"发料单{OrderNumber},当前物料已发完!", LogsType.Outstore);
+ //清空发料单缓存
+ var outingShelfs = ShelfManager.Shelves.Where(t => t.OrderNumber == OrderNumber).ToList();
+ outingShelfs.ForEach(t =>
+ {
+ t.OrderNumber = string.Empty;
+ });
+
+ Task.Run(() =>
+ {
+ //判断是否是当前订单最后一个出库货架
+ var isOuting = ShelfManager.Shelves.Where(t => t.CurrentMode == Mode.出库模式 && t.OrderNumber == OrderNumber)
+ .Any();
+ //WebSocket通知前台以更新左侧出库单列表的状态
+ if (!isOuting)
+ {
+ #region WebSocket
+ var messageMode = new WebSocketMessageModel()
+ {
+ IsWarning = false,
+ ClientIp = WebSocketIpAddress,
+ WarningType = WarningTypeEnum.通知刷新出库单列表,
+ };
+ WarningManager.SendWarning(messageMode);
+ #endregion
+ }
+ });
+ #endregion
}
}
else
{
- Logs.Write($"GoInOutstoreByModule发料单{OrderNumber},OutOrder为null,肯定是有问题", LogsType.Outstore);
+ Logs.Write($"发料单{OrderNumber},OutOrder为null,肯定是有问题", LogsType.Outstore);
}
}
else
{
- Logs.Write($"GoInOutstoreByModule发料单{OrderNumber},非最后一个出库货架!", LogsType.Outstore);
+ Logs.Write($"发料单{OrderNumber},非最后一个出库货架!", LogsType.Outstore);
var otherShelfs = ShelfManager.Shelves
.Where(t => t.OrderNumber == OrderNumber)
.Where(t => t.CurrentMode == Mode.出库模式)
@@ -462,7 +486,7 @@ namespace WCS.BLL.HardWare
if (shelf is SmartShelf)
{
var smartShelf = (SmartShelf)shelf;
- Logs.Write($"GoInOutstoreByModule货架【{smartShelf.ShelfCode}】待取物料{string.Join(",", smartShelf.CurrentOutStoreMatSNs)}", LogsType.Outstore);
+ Logs.Write($"货架【{smartShelf.ShelfCode}】待取物料{string.Join(",", smartShelf.CurrentOutStoreMatSNs)}", LogsType.Outstore);
}
}
catch
@@ -471,17 +495,50 @@ namespace WCS.BLL.HardWare
}
#endregion
}
- });
- #endregion
- }
- }
+ else
+ {
+ #region 当前单据物料已发完
+ Logs.Write($"发料单{OrderNumber},当前物料已发完!", LogsType.Outstore);
+ //清空发料单缓存
+ var outingShelfs = ShelfManager.Shelves.Where(t => t.OrderNumber == OrderNumber).ToList();
+ outingShelfs.ForEach(t =>
+ {
+ t.OrderNumber = string.Empty;
+ });
+ Task.Run(() =>
+ {
+ //判断是否是当前订单最后一个出库货架
+ var isOuting = ShelfManager.Shelves.Where(t => t.CurrentMode == Mode.出库模式 && t.OrderNumber == OrderNumber)
+ .Any();
+ //WebSocket通知前台以更新左侧出库单列表的状态
+ if (!isOuting)
+ {
+ #region WebSocket
+ var messageMode = new WebSocketMessageModel()
+ {
+ IsWarning = false,
+ ClientIp = WebSocketIpAddress,
+ WarningType = WarningTypeEnum.通知刷新出库单列表,
+ };
+ WarningManager.SendWarning(messageMode);
+ #endregion
+ }
+ });
+ #endregion
+ }
+ });
+ }
+ #endregion
+ }
else
{
//继续亮灯
Logs.Write($"GoInOutstoreByModule货架【{ShelfCode}】,模组【{module.ModuleCode}】,存在需要继续出的物料,继续亮灯。", LogsType.Outstore);
module.GoInOutStoreMode(TcpCleint, module.CurrentOutSns);
+ Thread.Sleep(20);
WarningLight.GreenLight(TcpCleint);
+ Logs.Write("GoInOutstoreByWebSocket", LogsType.Outstore);
}
}
catch (Exception e)
@@ -528,6 +585,7 @@ namespace WCS.BLL.HardWare
.Select(mat => mat.MatSN)
.ToList();
t.GoInOutStoreMode(TcpCleint, outMatSns);
+ Thread.Sleep(20);//出库每块板子之间增加15ms的间隔
});
//所有板子亮灯后 亮警示灯
WarningLight.GreenLight(TcpCleint);
@@ -637,25 +695,25 @@ namespace WCS.BLL.HardWare
SetCurrentMode(Mode.待机模式);
Logs.Write($"货架【{ShelfCode}】,结束退出出库", LogsType.Outstore);
- Task.Run(() =>
- {
- //判断是否是当前订单最后一个出库货架
- var isOuting = ShelfManager.Shelves.Where(t => t.CurrentMode == Mode.出库模式 && t.OrderNumber == OrderNumber)
- .Any();
- //WebSocket通知前台以更新左侧出库单列表的状态
- if (!isOuting)
- {
- #region WebSocket
- var messageMode = new WebSocketMessageModel()
- {
- IsWarning = false,
- ClientIp = WebSocketIpAddress,
- WarningType = WarningTypeEnum.通知刷新出库单列表,
- };
- WarningManager.SendWarning(messageMode);
- #endregion
- }
- });
+ //Task.Run(() =>
+ //{
+ // //判断是否是当前订单最后一个出库货架
+ // var isOuting = ShelfManager.Shelves.Where(t => t.CurrentMode == Mode.出库模式 && t.OrderNumber == OrderNumber)
+ // .Any();
+ // //WebSocket通知前台以更新左侧出库单列表的状态
+ // if (!isOuting)
+ // {
+ // #region WebSocket
+ // var messageMode = new WebSocketMessageModel()
+ // {
+ // IsWarning = false,
+ // ClientIp = WebSocketIpAddress,
+ // WarningType = WarningTypeEnum.通知刷新出库单列表,
+ // };
+ // WarningManager.SendWarning(messageMode);
+ // #endregion
+ // }
+ //});
}
catch (Exception ex)
{
@@ -773,17 +831,7 @@ namespace WCS.BLL.HardWare
//报警灯闪一下
WarningLight.SuccessLightGreenEnd(TcpCleint);
- //通知前台刷新
- Task.Run(() =>
- {
- var messageMode = new WebSocketMessageModel()
- {
- IsWarning = false,
- ClientIp = WebSocketIpAddress,
- WarningType = WarningTypeEnum.通知刷新盘点
- };
- WarningManager.SendWarning(messageMode);
- });
+
return true;
}
@@ -1133,48 +1181,6 @@ namespace WCS.BLL.HardWare
ExceptionMessages.Add($"{storeInfo.StoreCode}物料{storeInfo.CurrentMatSn}丢失,库存数据已删除,请重新扫码后入库");
#endregion
- //#region 【后台】丢失的数据处理
- //Task.Run(() =>
- //{
- // try
- // {
- // DbHelp.db.BeginTran();
- // //库位表字段清空
- // storeInfo.CurrentMatSn = string.Empty;
- // DbHelp.db.Updateable(storeInfo).ExecuteCommand();
-
- // //库存表记录删除、插入出入记录
- // var inventoryDetail = DbHelp.db.Queryable().Where(t => t.StoreId == storeInfo.Id).First();
- // if (inventoryDetail != null)
- // {
- // var inOutRecord = new MatInventoryDetailService()
- // {
- // StoreCode = storeInfo.StoreCode,
- // StoreId = storeInfo.Id,
- // StoreInfo = storeInfo,
-
- // MatSN = inventoryDetail.MatSN,
- // MatCode = inventoryDetail.MatCode,
- // MatName = inventoryDetail.MatName,
- // MatBatch = inventoryDetail.MatBatch,
- // MatQty = inventoryDetail.MatQty,
- // MatSpec = inventoryDetail.MatSpec,
- // MatCustomer = inventoryDetail.MatCustomer,
- // MatSupplier = inventoryDetail.MatSupplier,
-
- // Direction = DirectionEnum.丢失,
- // };
- // DbHelp.db.Insertable(inOutRecord).ExecuteCommand();
- // DbHelp.db.Deleteable(inventoryDetail).ExecuteCommand();
- // }
- // DbHelp.db.CommitTran();
- // }
- // catch (Exception e)
- // {
- // DbHelp.db.RollbackTran();
- // }
- //});
- //#endregion
#region 不处理、WebSocket通知前台
var exceptionMessage = storeInfo.StoreCode + $"进入入库自检发现物料{storeInfo.CurrentMatSn}丢失,请确认是否删除?";
var warningModel = new WebSocketMessageModel()
@@ -1728,11 +1734,11 @@ namespace WCS.BLL.HardWare
return;
}
- #region 校验项通过 处理出库逻辑
//当前库位的SN
var matSN = storeInfo.CurrentMatSn;
try
{
+ #region 校验项通过 处理出库逻辑
DbHelp.db.BeginTran();
//库存明细表 删除
;
@@ -1759,6 +1765,7 @@ namespace WCS.BLL.HardWare
MatSupplier = inventoryDetail.MatSupplier,
OrderNumber = orderMatDetails.OrderNumber,
+ OperateUser = OutOperateUser,
Direction = orderMatDetails.IsMXPD == false ? DirectionEnum.出库 : DirectionEnum.盘点下架,
};
//库位表 修改
@@ -1793,7 +1800,7 @@ namespace WCS.BLL.HardWare
//确认本次出库
module.ComfirmOutstore(TcpCleint, data[TcpCleint.PreFixLength + 3]);
- //更新时间 避免被自动退出
+ //更新时间 避免超时被自动退出
Task.Run(() =>
{
var shelves = ShelfManager.Shelves.Where(t => t.CurrentMode == Mode.出库模式 && t.OrderNumber == OrderNumber).ToList();
@@ -1803,14 +1810,13 @@ namespace WCS.BLL.HardWare
}
});
-
//当前柜子是否还存在未出库的
Logs.Write($"货架【{ShelfCode}】,用户取出物料{matSN}", LogsType.Outstore);
CurrentOutStoreMatSNs.RemoveAll(t => t == matSN);//删除本次已出的物料SN
Logs.Write($"货架【{ShelfCode}】,当前货架剩余物料{string.Join(",", CurrentOutStoreMatSNs)}", LogsType.Outstore);
+ #endregion
- var isExsistOut = CurrentOutStoreMatSNs.Any();
-
+ #region 刷新出库明细逻辑
var tempOrder = CurrentOutOrder;
var isMXPD = orderMatDetails.IsMXPD == true;
//通知前台刷新
@@ -1818,7 +1824,6 @@ namespace WCS.BLL.HardWare
{
//更新订单状态
UpdateOutOrderStatus(tempOrder);
-
var messageMode = new WebSocketMessageModel()
{
IsWarning = false,
@@ -1827,7 +1832,10 @@ namespace WCS.BLL.HardWare
};
WarningManager.SendWarning(messageMode);
});
+ #endregion
+ #region 判断是否退出入库 是否亮下一次灯逻辑
+ var isExsistOut = CurrentOutStoreMatSNs.Any();
//本次亮灯的物料已全部取出
if (!isExsistOut)
{
@@ -1857,6 +1865,7 @@ namespace WCS.BLL.HardWare
Logs.Write($"发料单{OrderNumber},最后一个出库货架,触发精准发料机制!查询是否还存在待出库物料", LogsType.Outstore);
var outOrder = DbHelp.db.Queryable()
.Where(t => t.OrderNumber == OrderNumber)
+ .WhereIF(!string.IsNullOrEmpty(LocalFile.Config.GroupName), t => t.GroupName == LocalFile.Config.GroupName)
.First();
if (outOrder != null)
{
@@ -1911,7 +1920,6 @@ namespace WCS.BLL.HardWare
shelfs.ForEach(shelf =>
{
var matDetails = outOrderMatDetails.Where(t => t.StoreInfo.ShelfCode == shelf.ShelfCode)
-
.Distinct()
.ToList();
shelf.GoInOutstore(matDetails, outOrder, OutOperateUser);
@@ -1921,6 +1929,32 @@ namespace WCS.BLL.HardWare
else
{
Logs.Write($"发料单{OrderNumber},当前物料已发完!", LogsType.Outstore);
+ //清空发料单缓存
+ var outingShelfs = ShelfManager.Shelves.Where(t => t.OrderNumber == OrderNumber).ToList();
+ outingShelfs.ForEach(t =>
+ {
+ t.OrderNumber = string.Empty;
+ });
+
+ Task.Run(() =>
+ {
+ //判断是否是当前订单最后一个出库货架
+ var isOuting = ShelfManager.Shelves.Where(t => t.CurrentMode == Mode.出库模式 && t.OrderNumber == OrderNumber)
+ .Any();
+ //WebSocket通知前台以更新左侧出库单列表的状态
+ if (!isOuting)
+ {
+ #region WebSocket
+ var messageMode = new WebSocketMessageModel()
+ {
+ IsWarning = false,
+ ClientIp = WebSocketIpAddress,
+ WarningType = WarningTypeEnum.通知刷新出库单列表,
+ };
+ WarningManager.SendWarning(messageMode);
+ #endregion
+ }
+ });
}
}
else
@@ -1952,9 +1986,38 @@ namespace WCS.BLL.HardWare
}
#endregion
}
+ else
+ {
+ //清空发料单缓存
+ var outingShelfs = ShelfManager.Shelves.Where(t => t.OrderNumber == OrderNumber).ToList();
+ outingShelfs.ForEach(t =>
+ {
+ t.OrderNumber = string.Empty;
+ });
+
+ Task.Run(() =>
+ {
+ //判断是否是当前订单最后一个出库货架
+ var isOuting = ShelfManager.Shelves.Where(t => t.CurrentMode == Mode.出库模式 && t.OrderNumber == OrderNumber)
+ .Any();
+ //WebSocket通知前台以更新左侧出库单列表的状态
+ if (!isOuting)
+ {
+ #region WebSocket
+ var messageMode = new WebSocketMessageModel()
+ {
+ IsWarning = false,
+ ClientIp = WebSocketIpAddress,
+ WarningType = WarningTypeEnum.通知刷新出库单列表,
+ };
+ WarningManager.SendWarning(messageMode);
+ #endregion
+ }
+ });
+ }
});
}
-
+ #endregion
}
catch (Exception ex)
@@ -1963,7 +2026,6 @@ namespace WCS.BLL.HardWare
//报警灯报警
WarningLight.WaringLightAlwaysRed(TcpCleint);
}
- #endregion
}
public void UpdateOutOrderStatus(OutOrder order)
@@ -2047,7 +2109,7 @@ namespace WCS.BLL.HardWare
.First();
if (storeInfo == null)
{
- //TO DO 库位未找到
+ Logs.Write($"[OutstoreExceptionReturnProcess]boardId{boardId};lightNumber{lightNumber}库位未找到!", LogsType.Outstore);
return;
}
//已放物料丢失了 物料多放了 储位恢复正常
@@ -2077,6 +2139,7 @@ namespace WCS.BLL.HardWare
//自动消除本地缓存的报警
warnings.ForEach(warning =>
{
+ Logs.Write($"ClearWarning,{warning.Guid}", LogsType.Outstore);
WarningManager.ClearWarning(warning, SolveTypeEnum.忽略);
});
ProcessingExceptions.RemoveAll(t => t.BoardId == boardId);
@@ -2090,8 +2153,6 @@ namespace WCS.BLL.HardWare
WarningType = WarningTypeEnum.出库中未扫描上架,
StoreId = storeInfo.Id,
StoreCode = storeInfo.StoreCode,
- //ModuleId = module.ModuleId,
- //ModuleCode = module.ModuleCode,
ShelfCode = ShelfCode,
ShelfId = ShelfId,
WarningMessage = exceptionMessage,
@@ -2305,7 +2366,6 @@ namespace WCS.BLL.HardWare
var storeInfo = storeInfos.Where(t => t.LightNumber == index + 1).First();
if (storeInfo != null)
{
-
#region 不处理、WebSocket通知前台
var exceptionMessage = storeInfo.StoreCode + $"自检发现物料{storeInfo.CurrentMatSn}丢失,请确认是否删除?";
var warningModel = new WebSocketMessageModel()
@@ -2323,58 +2383,10 @@ namespace WCS.BLL.HardWare
WarningManager.SendWarning(warningModel);
#endregion
- //#region 【后台】丢失的数据处理
- //Task.Run(() =>
- //{
- // try
- // {
- // DbHelp.db.BeginTran();
- // //库位表字段清空
- // storeInfo.CurrentMatSN = string.Empty;
- // DbHelp.db.Updateable(storeInfo).ExecuteCommand();
- // //库存表记录删除、插入出入记录
- // var inventoryDetail = DbHelp.db.Queryable().Where(t => t.StoreCode == storeInfo.StoreCode).First();
- // if (inventoryDetail != null)
- // {
- // var inOutRecord = new InOutRecord()
- // {
- // StoreCode = storeInfo.StoreCode,
- // StoreId = storeInfo.Id,
- // StoreInfo = storeInfo,
-
- // R = storeInfo.R,
- // C = storeInfo.C,
- // Wei = storeInfo.Wei,
- // WarehouseCode = inventoryDetail.WarehouseCode,
-
- // MatSN = inventoryDetail.MatSN,
- // MatCode = inventoryDetail.MatCode,
- // MatName = inventoryDetail.MatName,
- // MatBatch = inventoryDetail.MatBatch,
- // MatQty = inventoryDetail.MatQty,
- // MatSpec = inventoryDetail.MatSpec,
-
- // OrderNumber = inventoryDetail.OrderNumber,
- // OrderProdNumber = inventoryDetail.OrderProdNumber,
- // OrderMaterialCode = inventoryDetail.OrderMaterialCode,
- // OrderMaterialName = inventoryDetail.OrderMaterialName,
- // OrderMaterialSpec = inventoryDetail.OrderMaterialSpec,
-
- // GroupName = LocalFile.Config.GroupName,
-
- // Direction = DirectionEnum.丢失,
- // };
- // DbHelp.db.Insertable(inOutRecord).ExecuteCommand();
- // DbHelp.db.Deleteable(inventoryDetail).ExecuteCommand();
- // }
- // DbHelp.db.CommitTran();
- // }
- // catch (Exception e)
- // {
- // DbHelp.db.RollbackTran();
- // }
- //});
- //#endregion
+ IsWarning = true;
+ Logs.Write($"货架自检【{ShelfCode},库位{storeInfo.StoreCode}发现物料丢失,开始发送红灯】", LogsType.Instore);
+ WarningLight.WaringLightAlwaysRed(TcpCleint);
+ Logs.Write($"货架自检【{ShelfCode},库位{storeInfo.StoreCode}发现物料丢失,发送红灯完成】", LogsType.Instore);
}
//库位未配置、返回数据异常
else
@@ -2403,11 +2415,11 @@ namespace WCS.BLL.HardWare
};
WarningManager.SendWarning(warningModel);
#endregion
- //#region 【记录缓存异常信息】
- //var shelfStatus = LocalStatic.ShelfStatuses.Where(t => t.ShelfCode == storeInfo.ShelfCode).First();
- //LocalStatic.CheckErr.Add($"库位{storeInfo.StoreCode}:存在物料未扫描上架,请取出后重新扫描上架!");
- //#endregion
- //WaringLightAlwaysRed(shelfStatus.ClientIp, shelfStatus.LightId);
+
+ IsWarning = true;
+ Logs.Write($"货架自检【{ShelfCode},库位{storeInfo.StoreCode}存在物料未扫描上架,开始发送红灯】", LogsType.Instore);
+ WarningLight.WaringLightAlwaysRed(TcpCleint);
+ Logs.Write($"货架自检【{ShelfCode},库位{storeInfo.StoreCode}存在物料未扫描上架,发送红灯完成】", LogsType.Instore);
}
else
{
diff --git a/WCS.BLL/Manager/MXBackgroundThread.cs b/WCS.BLL/Manager/MXBackgroundThread.cs
index bab8644..e7877e3 100644
--- a/WCS.BLL/Manager/MXBackgroundThread.cs
+++ b/WCS.BLL/Manager/MXBackgroundThread.cs
@@ -282,8 +282,11 @@ namespace WCS.BLL.Manager
if (shelf is SmartShelf)
{
var smartShelf = (SmartShelf)shelf;
- smartShelf?.WarningLight.CloseLight(smartShelf.TcpCleint);
- Logs.Write($"【定时任务】:监测警示灯关灯机制,关【{shelf.ShelfCode}】灯发送指令成功!");
+ if(smartShelf.IsWarning == false)
+ {
+ smartShelf?.WarningLight.CloseLight(smartShelf.TcpCleint);
+ Logs.Write($"【定时任务】:监测警示灯关灯机制,关【{shelf.ShelfCode}】灯发送指令成功!");
+ }
}
}
catch (Exception ex)
diff --git a/WCS.BLL/Manager/TCPClientManager.cs b/WCS.BLL/Manager/TCPClientManager.cs
index f20200f..b099252 100644
--- a/WCS.BLL/Manager/TCPClientManager.cs
+++ b/WCS.BLL/Manager/TCPClientManager.cs
@@ -53,23 +53,28 @@ namespace WCS.BLL.Manager
}
var data = e.ByteBlock.Buffer.Take((int)e.ByteBlock.Length).ToArray();
- Logs.Write($"【接收】{BitConverter.ToString(data)}", LogsType.Instructions);
+
+ Task.Run(() =>
+ {
+ Logs.Write($"【接收{clientIpHost}】{BitConverter.ToString(data)}", LogsType.Instructions);
+ });
+
e.ByteBlock.Clear();
var len = data.Length;
if (tcpCleint.ShelfTypeName == "信息化货架")
{
- Logs.Write($"【信息化货架开始处理接收数据】{BitConverter.ToString(data)}", LogsType.Instructions);
+ Logs.Write($"【信息化货架开始处理接收数据】{BitConverter.ToString(data)}", LogsType.InstructionsProcess);
Helper.ReturnDataProcess(TcpCleint, data);
- Logs.Write($"【信息化货架完成处理接收数据】{BitConverter.ToString(data)}", LogsType.Instructions);
+ Logs.Write($"【信息化货架完成处理接收数据】{BitConverter.ToString(data)}", LogsType.InstructionsProcess);
return EasyTask.CompletedTask;
}
if (tcpCleint.ShelfTypeName == "液晶货架")
{
- Logs.Write($"【液晶货架开始处理接收数据】{BitConverter.ToString(data)}", LogsType.Instructions);
+ Logs.Write($"【液晶货架开始处理接收数据】{BitConverter.ToString(data)}", LogsType.InstructionsProcess);
//Helper.ReturnDataProcess(TcpCleint, data);
- Logs.Write($"【液晶货架完成处理接收数据】{BitConverter.ToString(data)}", LogsType.Instructions);
+ Logs.Write($"【液晶货架完成处理接收数据】{BitConverter.ToString(data)}", LogsType.InstructionsProcess);
return EasyTask.CompletedTask;
}
@@ -85,7 +90,7 @@ namespace WCS.BLL.Manager
{
continue;
}
- Logs.Write($"【处理单条指令 开始】{BitConverter.ToString(dataTemp)}", LogsType.Instructions);
+ Logs.Write($"【处理单条指令 开始】{BitConverter.ToString(dataTemp)}", LogsType.InstructionsProcess);
index += (TcpCleint.PreFixLength + TcpCleint.DataLength - 1);//每次循环index会+1 所以这里-1
//获取板子ID
var boardId = (dataTemp[TcpCleint.PreFixLength + 0] << 8) + dataTemp[TcpCleint.PreFixLength + 1];
@@ -109,7 +114,7 @@ namespace WCS.BLL.Manager
var smartShelf = shelf as SmartShelf;
smartShelf?.ProtocolProcess(dataTemp, boardId, lightNumber);
}
- Logs.Write($"【处理单条指令 结束】{BitConverter.ToString(dataTemp)}", LogsType.Instructions);
+ Logs.Write($"【处理单条指令 结束】{BitConverter.ToString(dataTemp)}", LogsType.InstructionsProcess);
}
}
return EasyTask.CompletedTask;
diff --git a/WCS.BLL/Manager/WarningManager.cs b/WCS.BLL/Manager/WarningManager.cs
index e364b98..54fdcd1 100644
--- a/WCS.BLL/Manager/WarningManager.cs
+++ b/WCS.BLL/Manager/WarningManager.cs
@@ -51,7 +51,7 @@ namespace WCS.BLL.Manager
{
Warnings.Add(warning);
//发送WebSocket记录
- Logs.Write(JsonConvert.SerializeObject(warning),LogsType.WebSocket);
+ Logs.Write(JsonConvert.SerializeObject(warning), LogsType.WebSocket);
WebSoceketManager.TrySendMessage(warning.ClientIp, JsonConvert.SerializeObject(warning));
warning.LastSendTime = DateTime.Now;
@@ -95,16 +95,20 @@ namespace WCS.BLL.Manager
//货架是否还存在报警信息
shelfIsWarning = Warnings.Where(t => t.ShelfId == warning.ShelfId)
+ .Where(t => t.IsWarning)
.Any();
//对应货架如果不存在报警信息了 指示灯回到对应的状态
+ Logs.Write($"shelfIsWarning{shelfIsWarning}", LogsType.WebSocket);
if (!shelfIsWarning)
{
+ Logs.Write("货架不存在报警信息", LogsType.WebSocket);
var shelf = ShelfManager.Shelves.Where(t => t.ShelfId == warning.ShelfId)
.FirstOrDefault();
if (shelf != null)
{
try
{
+ Logs.Write("smartShelf?.ClearWarning();", LogsType.WebSocket);
var smartShelf = shelf as SmartShelf;
smartShelf?.ClearWarning();
smartShelf.IsWarning = false;
@@ -117,6 +121,7 @@ namespace WCS.BLL.Manager
}
#region 重新发指令进入对应模式
+ Logs.Write($"GoInRightMode", LogsType.WebSocket);
GoInRightMode(warning);
#endregion
@@ -194,7 +199,7 @@ namespace WCS.BLL.Manager
#region 如果是出库 删除正在出库缓存的数据
if (warning.WarningType == WarningTypeEnum.出库自检丢失)
{
- Logs.Write($"【出库自检】发现物料{inventoryDetail.MatSN}丢失,用户点击【处理】,删除数据",LogsType.Outstore);
+ Logs.Write($"【出库自检】发现物料{inventoryDetail.MatSN}丢失,用户点击【处理】,删除数据", LogsType.Outstore);
//清掉需要出库的缓存
var shelf = ShelfManager.Shelves
.Where(t => t.ShelfId == warning.ShelfId)
@@ -207,10 +212,11 @@ namespace WCS.BLL.Manager
//删除货架上缓存的那一条数据
smartShelf.CurrentOutStoreMatSNs.RemoveAll(t => t == inventoryDetail.MatSN);
Logs.Write($"【出库自检】发现物料{inventoryDetail.MatSN}丢失,已删除货架缓存,剩余物料为{string.Join(",", smartShelf.CurrentOutStoreMatSNs)}", LogsType.Outstore);
-
+
//删除模组上缓存的那一条数据
var module = smartShelf.Modules.Where(t => t.ModuleId == warning.ModuleId).FirstOrDefault();
- if (module != null) {
+ if (module != null)
+ {
module.CurrentOutSns.RemoveAll(t => t == inventoryDetail.MatSN);
Logs.Write($"【出库自检】发现物料{inventoryDetail.MatSN}丢失,已删除模组缓存,剩余物料为{string.Join(",", module.CurrentOutSns)}", LogsType.Outstore);
}
@@ -246,6 +252,8 @@ namespace WCS.BLL.Manager
var moduleOtherError = WarningManager.Warnings.Where(t => t.ShelfId == warning.ShelfId && t.ModuleId == warning.ModuleId).Any();
if (moduleOtherError)
{
+ var guids = WarningManager.Warnings.Where(t => t.ShelfId == warning.ShelfId && t.ModuleId == warning.ModuleId).Select(t => t.Guid.ToString()).ToList();
+ Logs.Write($"模组还存在其他异常 暂时不进入对应模式.{string.Join("''", guids)}", LogsType.WebSocket);
return;
}
@@ -253,6 +261,7 @@ namespace WCS.BLL.Manager
.FirstOrDefault();
if (shelf != null)
{
+ Logs.Write($"shelf != null", LogsType.WebSocket);
var smartShelf = shelf as SmartShelf;
if (smartShelf != null)
{
@@ -266,8 +275,7 @@ namespace WCS.BLL.Manager
smartShelf.WarningLight.BlueLight(smartShelf.TcpCleint);
break;
case Mode.出库模式:
- //module.GoInOutStoreMode(smartShelf.TcpCleint, module.CurrentOutSns);
- //smartShelf.WarningLight.GreenLight(smartShelf.TcpCleint);
+ Logs.Write("smartShelf.GoInOutstoreByWebSocket", LogsType.WebSocket);
smartShelf.GoInOutstoreByWebSocket(module.ModuleId);
break;
case Mode.待机模式:
@@ -278,6 +286,14 @@ namespace WCS.BLL.Manager
}
}
}
+ else
+ {
+ Logs.Write($"smartShelf != null", LogsType.WebSocket);
+ }
+ }
+ else
+ {
+ Logs.Write($"shelf == null", LogsType.WebSocket);
}
}
catch (Exception e)
diff --git a/WCS.BLL/Services/Service/InterfaceRecordService.cs b/WCS.BLL/Services/Service/InterfaceRecordService.cs
index 0251674..b336d6a 100644
--- a/WCS.BLL/Services/Service/InterfaceRecordService.cs
+++ b/WCS.BLL/Services/Service/InterfaceRecordService.cs
@@ -40,7 +40,7 @@ namespace WCS.BLL.Services.Service
}
var totalCount = await recordsQueryable.CountAsync();
var records = await recordsQueryable
- .OrderByDescending(t => t.Id)
+ //.OrderByDescending(t => t.Id)
.Skip((request.PageNumber - 1) * request.PageSize).Take(request.PageSize)
.ToListAsync();
//生成序号
@@ -48,10 +48,6 @@ namespace WCS.BLL.Services.Service
{
records[i].RowNumber = (request.PageNumber - 1) * request.PageSize + i + 1;
}
- //Task.WaitAll(new Task[] { recordsTask, totalCountTask });
-
- //var records = recordsTask.Result;
- //var totalCount = totalCountTask.Result;
return new PageQueryResponse()
{
diff --git a/WCS.BLL/Services/Service/MatInventoryDetailService.cs b/WCS.BLL/Services/Service/MatInventoryDetailService.cs
index 31c0c4c..4fd67a4 100644
--- a/WCS.BLL/Services/Service/MatInventoryDetailService.cs
+++ b/WCS.BLL/Services/Service/MatInventoryDetailService.cs
@@ -41,6 +41,7 @@ namespace WCS.BLL.Services.Service
;
var totalCount = await recordsQueryable.CountAsync();
+ var totalQty = await recordsQueryable.SumAsync((id, si) => id.MatQty);
var records = await recordsQueryable
.OrderByDescending((id, si) => id.Id)
.Skip((request.PageNumber - 1) * request.PageSize).Take(request.PageSize)
@@ -55,7 +56,7 @@ namespace WCS.BLL.Services.Service
return new PageQueryResponse()
{
Code = 200,
- Message = $"success",
+ Message = $"{totalQty}",
Data = new PageQueryResponseData()
{
TotalCount = totalCount,
diff --git a/WCS.BLL/Services/Service/OutstoreService.cs b/WCS.BLL/Services/Service/OutstoreService.cs
index 476a8ab..8883af8 100644
--- a/WCS.BLL/Services/Service/OutstoreService.cs
+++ b/WCS.BLL/Services/Service/OutstoreService.cs
@@ -487,7 +487,8 @@ namespace WCS.BLL.Services.Service
//获取后台当前正在进行出库的订单 将出库状态反馈给前端
var outingOrderNumbers = ShelfManager.Shelves
- .Where(t => t.CurrentMode == HardWare.Mode.出库模式).Select(t => t.OrderNumber)
+ .Where(t => t.CurrentMode == HardWare.Mode.出库模式)
+ .Select(t => t.OrderNumber)
.ToList();
foreach (var record in records)
{
diff --git a/WCS.BLL/Services/Service/StockTakingService.cs b/WCS.BLL/Services/Service/StockTakingService.cs
index 74e71a9..06f6337 100644
--- a/WCS.BLL/Services/Service/StockTakingService.cs
+++ b/WCS.BLL/Services/Service/StockTakingService.cs
@@ -4,6 +4,7 @@ using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
+using WCS.BLL.Config;
using WCS.BLL.DbModels;
using WCS.BLL.Manager;
using WCS.BLL.Services.IService;
@@ -12,6 +13,7 @@ using WCS.DAL.DbModels;
using WCS.Model;
using WCS.Model.ApiModel.InOutRecord;
using WCS.Model.ApiModel.Stocktaking;
+using WCS.Model.WebSocketModel;
namespace WCS.BLL.Services.Service
{
@@ -100,7 +102,8 @@ namespace WCS.BLL.Services.Service
{
StocktakingOrderNumber = request.StocktakingOrderNumber,
StocktakingOrderSource = request.StocktakingOrderSource,
- CreateUser = request.UserName
+ CreateUser = request.UserName,
+ GroupName = LocalFile.Config.GroupName,
};
var stockTakingOrderId = await DbHelp.db.Insertable(stockTakingOrder).ExecuteReturnIdentityAsync();
stockTakingOrder.Id = stockTakingOrderId;
@@ -180,6 +183,7 @@ namespace WCS.BLL.Services.Service
{
StocktakingOrderNumber = request.StocktakingOrderNumber,
StocktakingOrderSource = request.StocktakingOrderSource,
+ GroupName = LocalFile.Config.GroupName,
CreateUser = request.UserName
};
var stockTakingOrderId = await DbHelp.db.Insertable(stockTakingOrder).ExecuteReturnIdentityAsync();
@@ -242,6 +246,7 @@ namespace WCS.BLL.Services.Service
//获取库存数据 生成盘点单据
var inventoryDetails = await DbHelp.db.Queryable()
.Where(t => request.List.Contains(t.MatSN))
+ .WhereIF(!string.IsNullOrEmpty(LocalFile.Config.GroupName), t => t.GroupName == LocalFile.Config.GroupName)
.ToListAsync();
if (inventoryDetails == null || inventoryDetails.Count == 0)
{
@@ -260,6 +265,7 @@ namespace WCS.BLL.Services.Service
{
StocktakingOrderNumber = request.StocktakingOrderNumber,
StocktakingOrderSource = request.StocktakingOrderSource,
+ GroupName = LocalFile.Config.GroupName,
CreateUser = request.UserName
};
var stockTakingOrderId = await DbHelp.db.Insertable(stockTakingOrder).ExecuteReturnIdentityAsync();
@@ -317,7 +323,8 @@ namespace WCS.BLL.Services.Service
var recordsQueryable = DbHelp.db.Queryable()
.WhereIF(!string.IsNullOrEmpty(request.StocktakingOrderNumber), t => t.StocktakingOrderNumber.Contains(request.StocktakingOrderNumber))
- .WhereIF(!string.IsNullOrEmpty(request.StocktakingOrderSource), t => t.StocktakingOrderSource != null && t.StocktakingOrderSource.Contains(request.StocktakingOrderSource));
+ .WhereIF(!string.IsNullOrEmpty(request.StocktakingOrderSource), t => t.StocktakingOrderSource != null && t.StocktakingOrderSource.Contains(request.StocktakingOrderSource))
+ .WhereIF(!string.IsNullOrEmpty(LocalFile.Config.GroupName), t => t.GroupName == LocalFile.Config.GroupName);
switch (request.StocktakingOrderStatus)
{
@@ -396,6 +403,7 @@ namespace WCS.BLL.Services.Service
var records = await recordsQueryable
.Where(t => t.StocktakingOrderStatus != StocktakingOrderStatus.已提交)
+ .WhereIF(!string.IsNullOrEmpty(LocalFile.Config.GroupName), t => t.GroupName == LocalFile.Config.GroupName)
.OrderByDescending(t => t.UpdateTime)
.Take(40)
.ToListAsync();
@@ -493,6 +501,14 @@ namespace WCS.BLL.Services.Service
Message = $"操作失败:不存在Id为{request.StockTakingOrderId}的盘点单!",
};
}
+ if (order.StocktakingOrderStatus == StocktakingOrderStatus.已提交)
+ {
+ return new ResponseCommon()
+ {
+ Code = 201,
+ Message = $"操作失败:盘点单据:{request.StockTakingOrderNumber}已提交!",
+ };
+ }
}
else if (!string.IsNullOrEmpty(request.StockTakingOrderNumber))
{
@@ -794,6 +810,19 @@ namespace WCS.BLL.Services.Service
#endregion
DbHelp.db.CommitTran();
+
+ //通知前台刷新
+ Task.Run(() =>
+ {
+ var messageMode = new WebSocketMessageModel()
+ {
+ IsWarning = false,
+ ClientIp = shelf.WebSocketIpAddress,
+ WarningType = WarningTypeEnum.通知刷新盘点
+ };
+ WarningManager.SendWarning(messageMode);
+ });
+
//更新时间 避免被自动退出
Task.Run(() =>
{
diff --git a/WCS.BLL/Tool/Logs.cs b/WCS.BLL/Tool/Logs.cs
index 0973352..6950125 100644
--- a/WCS.BLL/Tool/Logs.cs
+++ b/WCS.BLL/Tool/Logs.cs
@@ -46,6 +46,10 @@ namespace WCS.BLL
///
Instore,
WebSocket,
+ ///
+ /// 指令发送接收
+ ///
+ InstructionsProcess,
}
///
diff --git a/WCS.BLL/Tool/TCPClient.cs b/WCS.BLL/Tool/TCPClient.cs
index 8d9c66b..21dd0b0 100644
--- a/WCS.BLL/Tool/TCPClient.cs
+++ b/WCS.BLL/Tool/TCPClient.cs
@@ -252,10 +252,11 @@ namespace WCS.BLL
tcpClient.Send(message);
Task.Run(() =>
{
- Logs.Write($"【发送】{BitConverter.ToString(message)}", LogsType.Instructions);
+ var clientIpHost = tcpClient.IP + ":" + tcpClient.Port;
+ Logs.Write($"【发送{clientIpHost}】{BitConverter.ToString(message)}", LogsType.Instructions);
});
//发送自带15ms间隔
- Thread.Sleep(15);
+ Thread.Sleep(18);
}
}
catch (Exception ex)
diff --git a/货架标准上位机/App.xaml.cs b/货架标准上位机/App.xaml.cs
index 02490c8..c41b9c6 100644
--- a/货架标准上位机/App.xaml.cs
+++ b/货架标准上位机/App.xaml.cs
@@ -25,7 +25,7 @@ namespace 货架标准上位机
}
else
{
- MainWindow = new MainWindow1();
+ MainWindow = new MainWindow2();
}
MainWindow.ShowDialog();
diff --git a/货架标准上位机/Fonts/iconfont.ttf b/货架标准上位机/Fonts/iconfont.ttf
index 02b62ec..5878b6a 100644
Binary files a/货架标准上位机/Fonts/iconfont.ttf and b/货架标准上位机/Fonts/iconfont.ttf differ
diff --git a/货架标准上位机/Models/JsConfig.cs b/货架标准上位机/Models/JsConfig.cs
index ba7c8d9..ad72217 100644
--- a/货架标准上位机/Models/JsConfig.cs
+++ b/货架标准上位机/Models/JsConfig.cs
@@ -95,6 +95,8 @@ namespace 货架标准上位机
/// 登录历史
///
public List SaveLogin { get; set; }
+
+ public string LastSaveLoginPassword { get; set; }
///
/// 登录历史数量
///
diff --git a/货架标准上位机/Resources/主页.png b/货架标准上位机/Resources/主页.png
index e5b75de..e68e6e6 100644
Binary files a/货架标准上位机/Resources/主页.png and b/货架标准上位机/Resources/主页.png differ
diff --git a/货架标准上位机/Resources/入库.png b/货架标准上位机/Resources/入库.png
new file mode 100644
index 0000000..324017d
Binary files /dev/null and b/货架标准上位机/Resources/入库.png differ
diff --git a/货架标准上位机/Resources/出库.png b/货架标准上位机/Resources/出库.png
new file mode 100644
index 0000000..29d3026
Binary files /dev/null and b/货架标准上位机/Resources/出库.png differ
diff --git a/货架标准上位机/Resources/数据.png b/货架标准上位机/Resources/数据.png
deleted file mode 100644
index 68fc991..0000000
Binary files a/货架标准上位机/Resources/数据.png and /dev/null differ
diff --git a/货架标准上位机/Resources/权限.png b/货架标准上位机/Resources/权限.png
index 723e7fa..01eeee7 100644
Binary files a/货架标准上位机/Resources/权限.png and b/货架标准上位机/Resources/权限.png differ
diff --git a/货架标准上位机/Resources/查询.png b/货架标准上位机/Resources/查询.png
new file mode 100644
index 0000000..3c0f5f8
Binary files /dev/null and b/货架标准上位机/Resources/查询.png differ
diff --git a/货架标准上位机/Resources/模式.png b/货架标准上位机/Resources/模式.png
deleted file mode 100644
index 27b51ce..0000000
Binary files a/货架标准上位机/Resources/模式.png and /dev/null differ
diff --git a/货架标准上位机/Resources/物料.png b/货架标准上位机/Resources/物料.png
new file mode 100644
index 0000000..27c4b5a
Binary files /dev/null and b/货架标准上位机/Resources/物料.png differ
diff --git a/货架标准上位机/Resources/盘点.png b/货架标准上位机/Resources/盘点.png
new file mode 100644
index 0000000..7a7f845
Binary files /dev/null and b/货架标准上位机/Resources/盘点.png differ
diff --git a/货架标准上位机/Resources/设置.png b/货架标准上位机/Resources/设置.png
deleted file mode 100644
index 3e87d66..0000000
Binary files a/货架标准上位机/Resources/设置.png and /dev/null differ
diff --git a/货架标准上位机/Resources/调试.png b/货架标准上位机/Resources/调试.png
new file mode 100644
index 0000000..51d8d4d
Binary files /dev/null and b/货架标准上位机/Resources/调试.png differ
diff --git a/货架标准上位机/Resources/货架.png b/货架标准上位机/Resources/货架.png
new file mode 100644
index 0000000..3cddab5
Binary files /dev/null and b/货架标准上位机/Resources/货架.png differ
diff --git a/货架标准上位机/ViewModels/InOutRecordViewModel.cs b/货架标准上位机/ViewModels/InOutRecordViewModel.cs
index e39ab3e..3a13a23 100644
--- a/货架标准上位机/ViewModels/InOutRecordViewModel.cs
+++ b/货架标准上位机/ViewModels/InOutRecordViewModel.cs
@@ -381,7 +381,11 @@ namespace 货架标准上位机.ViewModel
public int PageSize
{
get => pageSize;
- set { SetProperty(ref pageSize, value); }
+ set
+ {
+ SetProperty(ref pageSize, value);
+ BtnSearch(true);
+ }
}
diff --git a/货架标准上位机/ViewModels/InterfaceRecordViewModel.cs b/货架标准上位机/ViewModels/InterfaceRecordViewModel.cs
index afd9379..c5252ce 100644
--- a/货架标准上位机/ViewModels/InterfaceRecordViewModel.cs
+++ b/货架标准上位机/ViewModels/InterfaceRecordViewModel.cs
@@ -255,7 +255,11 @@ namespace 货架标准上位机.ViewModel
public int PageSize
{
get => pageSize;
- set { SetProperty(ref pageSize, value); }
+ set
+ {
+ SetProperty(ref pageSize, value);
+ BtnSearch(true);
+ }
}
diff --git a/货架标准上位机/ViewModels/MXViewModel/MXPDViewModel.cs b/货架标准上位机/ViewModels/MXViewModel/MXPDViewModel.cs
index c98af57..5638b66 100644
--- a/货架标准上位机/ViewModels/MXViewModel/MXPDViewModel.cs
+++ b/货架标准上位机/ViewModels/MXViewModel/MXPDViewModel.cs
@@ -185,7 +185,7 @@ namespace 货架标准上位机.ViewModel
var Result = ApiHelp.GetDataFromHttp(LocalFile.Config.ApiIpHost + "outStore/goInOutstore", body, "POST");
if (Result != null && Result.Code == 200)
{
- Growl.Warning("已成功开始出库!");
+ Growl.Warning("已成功开始盘点!");
RefreshDataGridItemSource();
}
else if (Result != null)
diff --git a/货架标准上位机/ViewModels/MatBaseInfoViewModel.cs b/货架标准上位机/ViewModels/MatBaseInfoViewModel.cs
index 9439e36..abebc98 100644
--- a/货架标准上位机/ViewModels/MatBaseInfoViewModel.cs
+++ b/货架标准上位机/ViewModels/MatBaseInfoViewModel.cs
@@ -439,7 +439,11 @@ namespace 货架标准上位机.ViewModel
public int PageSize
{
get => pageSize;
- set { SetProperty(ref pageSize, value); }
+ set
+ {
+ SetProperty(ref pageSize, value);
+ BtnSearch(true);
+ }
}
diff --git a/货架标准上位机/ViewModels/MatInfoViewModel.cs b/货架标准上位机/ViewModels/MatInfoViewModel.cs
index 810ebac..5c259ba 100644
--- a/货架标准上位机/ViewModels/MatInfoViewModel.cs
+++ b/货架标准上位机/ViewModels/MatInfoViewModel.cs
@@ -372,7 +372,11 @@ namespace 货架标准上位机.ViewModel
public int PageSize
{
get => pageSize;
- set { SetProperty(ref pageSize, value); }
+ set
+ {
+ SetProperty(ref pageSize, value);
+ BtnSearch(true);
+ }
}
diff --git a/货架标准上位机/ViewModels/MatInventoryDetailViewModel.cs b/货架标准上位机/ViewModels/MatInventoryDetailViewModel.cs
index f8954cf..9f93da9 100644
--- a/货架标准上位机/ViewModels/MatInventoryDetailViewModel.cs
+++ b/货架标准上位机/ViewModels/MatInventoryDetailViewModel.cs
@@ -78,6 +78,10 @@ namespace 货架标准上位机.ViewModel
set { SetProperty(ref shelfCode, value); }
}
+ private string totalQtyStr;
+
+ public string TotalQtyStr { get => totalQtyStr; set { SetProperty(ref totalQtyStr, value); } }
+
///
/// 物料编码
@@ -220,6 +224,8 @@ namespace 货架标准上位机.ViewModel
MatName = string.Empty;
MatSN = string.Empty;
StoreCode = string.Empty;
+ ShelfCode = string.Empty;
+ MatBatch = string.Empty;
}
public ICommand BtnSearchCommand { get => new DelegateCommand(BtnSearchReset); }
@@ -261,6 +267,11 @@ namespace 货架标准上位机.ViewModel
DataGridItemSource = Result.Data.Lists;
MaxPage = Result.Data.MaxPage;
TotalCount = Result.Data.TotalCount;
+ TotalQtyStr = "物料总数量" + Result.Message;
+ }
+ else
+ {
+ TotalQtyStr = string.Empty;
}
}
catch (Exception ex)
@@ -331,6 +342,9 @@ namespace 货架标准上位机.ViewModel
MatCode = MatCode,
StoreCode = StoreCode,
+ ShelfTypeId = SelectedShelfTypeItem == null ? 0 : SelectedShelfTypeItem.Id,
+ ShelfCode = ShelfCode,
+
UserName = LocalStatic.CurrentUser,
DeviceType = LocalFile.Config.DeviceType,
PageNumber = 1,
@@ -429,6 +443,9 @@ namespace 货架标准上位机.ViewModel
MatCode = MatCode,
StoreCode = StoreCode,
+ ShelfTypeId = SelectedShelfTypeItem == null ? 0 : SelectedShelfTypeItem.Id,
+ ShelfCode = ShelfCode,
+
UserName = LocalStatic.CurrentUser,
DeviceType = LocalFile.Config.DeviceType,
PageNumber = CurrentPage,
@@ -543,7 +560,11 @@ namespace 货架标准上位机.ViewModel
public int PageSize
{
get => pageSize;
- set { SetProperty(ref pageSize, value); }
+ set
+ {
+ SetProperty(ref pageSize, value);
+ BtnSearch(true);
+ }
}
diff --git a/货架标准上位机/ViewModels/ModuleInfoViewModel.cs b/货架标准上位机/ViewModels/ModuleInfoViewModel.cs
index b5fde19..0b91e51 100644
--- a/货架标准上位机/ViewModels/ModuleInfoViewModel.cs
+++ b/货架标准上位机/ViewModels/ModuleInfoViewModel.cs
@@ -279,7 +279,11 @@ namespace 货架标准上位机.ViewModel
public int PageSize
{
get => pageSize;
- set { SetProperty(ref pageSize, value); }
+ set
+ {
+ SetProperty(ref pageSize, value);
+ BtnSearch(true);
+ }
}
diff --git a/货架标准上位机/ViewModels/OutInventoryDocumentViewModel.cs b/货架标准上位机/ViewModels/OutInventoryDocumentViewModel.cs
index dd9c295..6ae3c98 100644
--- a/货架标准上位机/ViewModels/OutInventoryDocumentViewModel.cs
+++ b/货架标准上位机/ViewModels/OutInventoryDocumentViewModel.cs
@@ -468,7 +468,11 @@ namespace 货架标准上位机.ViewModels
public int PageSize
{
get => pageSize;
- set { SetProperty(ref pageSize, value); }
+ set
+ {
+ SetProperty(ref pageSize, value);
+ BtnSearch(true);
+ }
}
diff --git a/货架标准上位机/ViewModels/OutInventoryViewModel.cs b/货架标准上位机/ViewModels/OutInventoryViewModel.cs
index b3c44fc..e9a2e3f 100644
--- a/货架标准上位机/ViewModels/OutInventoryViewModel.cs
+++ b/货架标准上位机/ViewModels/OutInventoryViewModel.cs
@@ -277,7 +277,8 @@ namespace 货架标准上位机.ViewModel
{
if (Result.Data.Count > 0)
{
- DataGridItemSource = new ObservableCollection(Result.Data);
+ var list = Result.Data.OrderBy(t => t.IsSended).ToList();
+ DataGridItemSource = new ObservableCollection(list);
OrderStatus = Result.Message;
}
else
diff --git a/货架标准上位机/ViewModels/ShelfInfoViewModel.cs b/货架标准上位机/ViewModels/ShelfInfoViewModel.cs
index 71347d9..167566a 100644
--- a/货架标准上位机/ViewModels/ShelfInfoViewModel.cs
+++ b/货架标准上位机/ViewModels/ShelfInfoViewModel.cs
@@ -254,7 +254,11 @@ namespace 货架标准上位机.ViewModel
public int PageSize
{
get => pageSize;
- set { SetProperty(ref pageSize, value); }
+ set
+ {
+ SetProperty(ref pageSize, value);
+ BtnSearch(true);
+ }
}
diff --git a/货架标准上位机/ViewModels/StocktakingDocumentViewModel.cs b/货架标准上位机/ViewModels/StocktakingDocumentViewModel.cs
index 3e10719..03f3fc0 100644
--- a/货架标准上位机/ViewModels/StocktakingDocumentViewModel.cs
+++ b/货架标准上位机/ViewModels/StocktakingDocumentViewModel.cs
@@ -292,6 +292,7 @@ namespace 货架标准上位机.ViewModels
{
//成功后直接跳转
MainWindow1.viewModel.GoToStockTakingView = true;
+ MainWindow2.viewModel.SelectedValue = "物料盘点";
Growl.Success("已跳转到物料盘点页面!");
}
else if (Result != null)
@@ -452,7 +453,11 @@ namespace 货架标准上位机.ViewModels
public int PageSize
{
get => pageSize;
- set { SetProperty(ref pageSize, value); }
+ set
+ {
+ SetProperty(ref pageSize, value);
+ BtnSearch(true);
+ }
}
diff --git a/货架标准上位机/ViewModels/StocktakingViewModel.cs b/货架标准上位机/ViewModels/StocktakingViewModel.cs
index cc5bb3d..9d9d470 100644
--- a/货架标准上位机/ViewModels/StocktakingViewModel.cs
+++ b/货架标准上位机/ViewModels/StocktakingViewModel.cs
@@ -254,6 +254,7 @@ namespace 货架标准上位机.ViewModel
if (SelectedOutOrder == null)
{
//选择的单据为空无法进行查询
+ Logs.Write("选择的单据为空无法进行查询!");
return;
}
#region 调用接口获取盘点单物料明细
@@ -261,21 +262,26 @@ namespace 货架标准上位机.ViewModel
{
var body = new GetStockTakingOrderMatDetailRequest()
{
- StockTakingOrderId = selectedOutOrder.Id,
- StockTakingOrderNumber = selectedOutOrder.StocktakingOrderNumber,
+ StockTakingOrderId = SelectedOutOrder.Id,
+ StockTakingOrderNumber = SelectedOutOrder.StocktakingOrderNumber,
UserName = LocalStatic.CurrentUser,
DeviceType = LocalFile.Config.DeviceType,
};
+ Logs.Write("[刷新盘点明细1]!");
var Result = ApiHelp.GetDataFromHttp>>(LocalFile.Config.ApiIpHost + "stockTaking/getStockTakingOrderMatDetail", body, "POST");
if (Result != null && Result.Code == 200)
{
+ Logs.Write("[刷新盘点明细]Result != null && Result.Code == 200!");
if (Result.Data.Count > 0)
{
- DataGridItemSource = new ObservableCollection(Result.Data);
+ Logs.Write("[刷新盘点明细2]Result.Data.Count>0");
+ var list = Result.Data.OrderBy(t => t.IsStocktaking).ToList();
+ DataGridItemSource = new ObservableCollection(list);
}
else
{
+ Logs.Write("[刷新盘点明细2]Result.Data.Count<=0,该单据未查询到盘点明细");
App.Current.Dispatcher.Invoke(() =>
{
DataGridItemSource?.Clear();
@@ -286,10 +292,12 @@ namespace 货架标准上位机.ViewModel
}
else if (Result != null)
{
+ Logs.Write("[刷新盘点明细2]Result != null");
Growl.Warning(Result.Message);
}
else
{
+ Logs.Write("[刷新盘点明细2]调用接口失败");
Growl.Warning("调用接口失败!");
}
});
diff --git a/货架标准上位机/ViewModels/StoreInfoViewModel.cs b/货架标准上位机/ViewModels/StoreInfoViewModel.cs
index fc5302a..357a28f 100644
--- a/货架标准上位机/ViewModels/StoreInfoViewModel.cs
+++ b/货架标准上位机/ViewModels/StoreInfoViewModel.cs
@@ -263,7 +263,11 @@ namespace 货架标准上位机.ViewModel
public int PageSize
{
get => pageSize;
- set { SetProperty(ref pageSize, value); }
+ set
+ {
+ SetProperty(ref pageSize, value);
+ BtnSearch(true);
+ }
}
diff --git a/货架标准上位机/Views/HomeView.xaml b/货架标准上位机/Views/HomeView.xaml
index c12de53..7582b93 100644
--- a/货架标准上位机/Views/HomeView.xaml
+++ b/货架标准上位机/Views/HomeView.xaml
@@ -10,10 +10,10 @@
xmlns:pi="https://github.com/ping9719/wpfex"
d:DesignHeight="737" d:DesignWidth="1192" LoadedVisibleFirst="loadFir" IsVisibleChanged="vis">
-
+
-
-
+
+
@@ -27,12 +27,12 @@
-
-
+
+
+ -->
diff --git a/货架标准上位机/Views/MXWindows/MXOutInventoryView.xaml b/货架标准上位机/Views/MXWindows/MXOutInventoryView.xaml
index 1268104..7f66b5a 100644
--- a/货架标准上位机/Views/MXWindows/MXOutInventoryView.xaml
+++ b/货架标准上位机/Views/MXWindows/MXOutInventoryView.xaml
@@ -112,11 +112,9 @@
-
-
diff --git a/货架标准上位机/Views/MainWindows/MainWindow2.xaml b/货架标准上位机/Views/MainWindows/MainWindow2.xaml
index 7a4de24..46587b9 100644
--- a/货架标准上位机/Views/MainWindows/MainWindow2.xaml
+++ b/货架标准上位机/Views/MainWindows/MainWindow2.xaml
@@ -97,107 +97,260 @@
-
-
-
-
+
-
+
-
+
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
-
+
+
-
+
-
+
+
-
+
-
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
+
+
-
+
-
+
+
-
+
-
+
-
+
-
+
+
-
+
-
+
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -206,11 +359,6 @@
-
-
-
-
-
diff --git a/货架标准上位机/Views/MatInventoryDetailView.xaml b/货架标准上位机/Views/MatInventoryDetailView.xaml
index 1ea47be..c11a0f4 100644
--- a/货架标准上位机/Views/MatInventoryDetailView.xaml
+++ b/货架标准上位机/Views/MatInventoryDetailView.xaml
@@ -58,7 +58,7 @@
ItemsSource="{Binding Items}"
Text="{Binding MatCode}"
DisplayMemberPath="MatCode"/>
-
+
@@ -126,7 +126,7 @@
-
+
+
+
+
diff --git a/货架标准上位机/Views/StockTakingView.xaml b/货架标准上位机/Views/StockTakingView.xaml
index 914cc5d..7592afe 100644
--- a/货架标准上位机/Views/StockTakingView.xaml
+++ b/货架标准上位机/Views/StockTakingView.xaml
@@ -126,7 +126,7 @@
-
+
diff --git a/货架标准上位机/Views/Windows/UserLoginView.xaml.cs b/货架标准上位机/Views/Windows/UserLoginView.xaml.cs
index 248a92c..7192f8b 100644
--- a/货架标准上位机/Views/Windows/UserLoginView.xaml.cs
+++ b/货架标准上位机/Views/Windows/UserLoginView.xaml.cs
@@ -42,6 +42,8 @@ namespace 货架标准上位机
{
ComboBoxId.ItemsSource = LocalFile.Config.Sys.SaveLogin;
ComboBoxId.SelectedIndex = 0;
+
+ PasswordBoxPass.Password = LocalFile.Config.Sys.LastSaveLoginPassword;
}
}
@@ -74,8 +76,8 @@ namespace 货架标准上位机
PassWord = pass,
IsNoLogin = false,
};
- if (LocalFile.Config.IsMx)
- body.IsNoLogin = true;
+ //if (LocalFile.Config.IsMx)
+ // body.IsNoLogin = true;
var Result = ApiHelp.GetDataFromHttp>(LocalFile.Config.ApiIpHost + "user/userLogin",
body, "POST");
if (Result != null && Result.Code != 200)
@@ -99,6 +101,7 @@ namespace 货架标准上位机
{
LocalFile.Config.Sys.SaveLogin.RemoveAll(t => t == loginName);
LocalFile.Config.Sys.SaveLogin.Insert(0, loginName);
+ LocalFile.Config.Sys.LastSaveLoginPassword = pass;
LocalFile.Config.Sys.SaveLogin = LocalFile.Config.Sys.SaveLogin.Take(LocalFile.Config.Sys.SaveLoginCount).ToList();
LocalFile.SaveConfig();
}
diff --git a/货架标准上位机/data/jsconfig.json b/货架标准上位机/data/jsconfig.json
index 93d951d..8500eee 100644
--- a/货架标准上位机/data/jsconfig.json
+++ b/货架标准上位机/data/jsconfig.json
@@ -2,9 +2,9 @@
//连接不上加:SslMode=none;
"MySql": "server=localhost;Database=db1;Uid=root;Pwd=123456;Convert Zero Datetime=True",
//货架服务器的IP和端口号
- "ApiIpHost": "http://192.168.9.21:8888/",
+ "ApiIpHost": "http://127.0.0.1:8888/",
//WebSocket的地址
- "WebSocketUrl": "ws://192.168.9.21:7789/ws",
+ "WebSocketUrl": "ws://127.0.0.1:7789/ws",
//货架分区
"GroupName": [ "A0-2" ],
//设备类型 可以配置为每个电脑不一样
diff --git a/货架标准上位机/货架标准上位机 - Backup.csproj b/货架标准上位机/货架标准上位机 - Backup.csproj
new file mode 100644
index 0000000..c0bb730
--- /dev/null
+++ b/货架标准上位机/货架标准上位机 - Backup.csproj
@@ -0,0 +1,141 @@
+
+
+
+ WinExe
+ net472
+ enable
+ true
+ latest
+ 重庆盟讯电子科技有限公司
+ Copyright © 2024
+ 1.0.0
+ 1.0.0
+ Resources\Logo.ico
+ 重庆盟讯电子科技有限公司
+ 货架标准上位机
+ 货架标准上位机
+
+
+
+ 1701;1702;8601;8618;8625
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..\..\..\..\..\Windows\assembly\GAC_MSIL\Interop.BarTender\10.1.4.1__109ff779a1b4cbc7\Interop.BarTender.dll
+ True
+
+
+
+
+
+
+
+ PreserveNewest
+
+
+
+ PreserveNewest
+
+
+
+
+
+
+
+
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ Never
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PreserveNewest
+
+
+ Code
+
+
+ Code
+
+
+ Code
+
+
+
+
+
+ Designer
+
+
+ Designer
+
+
+
+
diff --git a/货架标准上位机/货架标准上位机.csproj b/货架标准上位机/货架标准上位机.csproj
index dad7ff1..aad4143 100644
--- a/货架标准上位机/货架标准上位机.csproj
+++ b/货架标准上位机/货架标准上位机.csproj
@@ -1,142 +1,150 @@
-
- WinExe
- net472
- enable
- true
- latest
- 重庆盟讯电子科技有限公司
- Copyright © 2024
- 1.0.0
- 1.0.0
- Resources\Logo.ico
- 重庆盟讯电子科技有限公司
- 货架标准上位机
- 货架标准上位机
-
+
+ WinExe
+ net472
+ enable
+ true
+ latest
+ 重庆盟讯电子科技有限公司
+ Copyright © 2024
+ 1.0.0
+ 1.0.0
+ Resources\Logo.ico
+ 重庆盟讯电子科技有限公司
+ 货架标准上位机
+ 货架标准上位机
+
-
- 1701;1702;8601;8618;8625
-
+
+ 1701;1702;8601;8618;8625
+
-
-
-
-
-
-
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
- ..\..\..\..\..\Windows\assembly\GAC_MSIL\Interop.BarTender\10.1.4.1__109ff779a1b4cbc7\Interop.BarTender.dll
- True
-
-
-
-
+
+
+ ..\..\..\..\..\Windows\assembly\GAC_MSIL\Interop.BarTender\10.1.4.1__109ff779a1b4cbc7\Interop.BarTender.dll
+ True
+
+
+
+
-
-
- PreserveNewest
-
-
-
- PreserveNewest
-
-
-
-
-
-
-
-
-
+
+
+ PreserveNewest
+
+
+
+ PreserveNewest
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
- PreserveNewest
-
-
- PreserveNewest
-
-
- PreserveNewest
-
-
- PreserveNewest
-
-
- PreserveNewest
-
-
- Never
-
-
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ Never
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
- PreserveNewest
-
-
- Code
-
-
- Code
-
-
- Code
-
-
+
+
+ PreserveNewest
+
+
+ Code
+
+
+ Code
+
+
+ Code
+
+
-
-
- Designer
-
-
- Designer
-
-
+
+
+ Designer
+
+
+ Designer
+
+