煤科院现场调试提交

This commit is contained in:
hehaibing-1996
2024-12-21 18:46:18 +08:00
parent 85a35ac34f
commit ce4a2fbe3a
12 changed files with 468 additions and 136 deletions

View File

@ -50,17 +50,14 @@ namespace WCS.BLL.DbModels
/// <summary>
/// 入库的库位表ID
/// </summary>
[SugarColumn(ColumnName = "store_id", IsNullable = false, ColumnDescription = "库位ID")]
[SugarColumn(ColumnName = "store_id", IsNullable = true, ColumnDescription = "库位ID")]
public int StoreId { get; set; }
/// <summary>
/// 入库的库位编码
/// </summary>
[SugarColumn(ColumnName = "store_code", Length = 50, IsNullable = false, ColumnDescription = "库位编码")]
[SugarColumn(ColumnName = "store_code", Length = 50, IsNullable = true, ColumnDescription = "库位编码")]
public string StoreCode { get; set; }
[Navigate(NavigateType.OneToOne, nameof(StoreId))]
public StoreInfo StoreInfo { get; set; }
#endregion
#region
@ -70,6 +67,10 @@ namespace WCS.BLL.DbModels
[SugarColumn(ColumnName = "task_id", IsNullable = false, ColumnDescription = "任务Id同一个库位只支持1-7")]
public int TaskID { get; set; } = 0;
///真主键
[SugarColumn(ColumnName = "item_no", Length = 128, IsNullable = false, ColumnDescription = "出库单据号")]
public string ItemNo { get; set; } = string.Empty;
/// <summary>
/// Guid
/// </summary>
@ -85,7 +86,7 @@ namespace WCS.BLL.DbModels
/// <summary>
/// 出库单据号
/// </summary>
[SugarColumn(ColumnName = "order_number", Length = 50, IsNullable = false, ColumnDescription = "出库单据号")]
[SugarColumn(ColumnName = "order_number", Length = 128, IsNullable = false, ColumnDescription = "出库单据号")]
public string OrderNumber { get; set; }
/// <summary>

View File

@ -48,17 +48,14 @@ namespace WCS.BLL.DbModels
/// <summary>
/// 入库的库位表ID
/// </summary>
[SugarColumn(ColumnName = "store_id", IsNullable = false, ColumnDescription = "库位ID")]
[SugarColumn(ColumnName = "store_id", IsNullable = true, ColumnDescription = "库位ID")]
public int StoreId { get; set; }
/// <summary>
/// 入库的库位编码
/// </summary>
[SugarColumn(ColumnName = "store_code", Length = 50, IsNullable = false, ColumnDescription = "库位编码")]
[SugarColumn(ColumnName = "store_code", Length = 50, IsNullable = true, ColumnDescription = "库位编码")]
public string StoreCode { get; set; }
[Navigate(NavigateType.OneToOne, nameof(StoreId))]
public StoreInfo StoreInfo { get; set; }
#endregion
#region
@ -68,6 +65,10 @@ namespace WCS.BLL.DbModels
[SugarColumn(ColumnName = "task_id", IsNullable = false, ColumnDescription = "任务Id同一个库位只支持1-7")]
public int TaskID { get; set; }
///真主键
[SugarColumn(ColumnName = "item_no", Length = 128, IsNullable = false, ColumnDescription = "出库单据号")]
public string ItemNo { get; set; } = string.Empty;
/// <summary>
/// Guid
/// </summary>
@ -83,7 +84,7 @@ namespace WCS.BLL.DbModels
/// <summary>
/// 出库单据号
/// </summary>
[SugarColumn(ColumnName = "order_number", Length = 50, IsNullable = false, ColumnDescription = "出库单据号")]
[SugarColumn(ColumnName = "order_number", Length = 128, IsNullable = false, ColumnDescription = "出库单据号")]
public string OrderNumber { get; set; }
/// <summary>

View File

@ -49,17 +49,14 @@ namespace WCS.BLL.DbModels
/// <summary>
/// 入库的库位表ID
/// </summary>
[SugarColumn(ColumnName = "store_id", IsNullable = false, ColumnDescription = "库位ID")]
[SugarColumn(ColumnName = "store_id", IsNullable = true, ColumnDescription = "库位ID")]
public int StoreId { get; set; }
/// <summary>
/// 入库的库位编码
/// </summary>
[SugarColumn(ColumnName = "store_code", Length = 50, IsNullable = false, ColumnDescription = "库位编码")]
[SugarColumn(ColumnName = "store_code", Length = 50, IsNullable = true, ColumnDescription = "库位编码")]
public string StoreCode { get; set; }
[Navigate(NavigateType.OneToOne, nameof(StoreId))]
public StoreInfo StoreInfo { get; set; }
#endregion
#region
@ -69,6 +66,10 @@ namespace WCS.BLL.DbModels
[SugarColumn(ColumnName = "task_id", IsNullable = false, ColumnDescription = "任务Id同一个库位只支持1-7")]
public int TaskID { get; set; }
///真主键
[SugarColumn(ColumnName = "item_no", Length = 128, IsNullable = false, ColumnDescription = "出库单据号")]
public string ItemNo { get; set; } = string.Empty;
/// <summary>
/// Guid
/// </summary>
@ -84,7 +85,7 @@ namespace WCS.BLL.DbModels
/// <summary>
/// 出库单据号
/// </summary>
[SugarColumn(ColumnName = "order_number", Length = 50, IsNullable = false, ColumnDescription = "出库单据号")]
[SugarColumn(ColumnName = "order_number", Length = 128, IsNullable = false, ColumnDescription = "出库单据号")]
public string OrderNumber { get; set; }
/// <summary>

View File

@ -45,7 +45,7 @@ namespace WCS.BLL.HardWare
ModuleCode = module.ModuleCode,
BoardId = module.BoardId,
IsEnable = module.IsEnable,
CurrentMode = module.CurrentMode
CurrentMode = TaskModeEnum.
});
}
ModulesStr = string.Join(";", MXL4Modules.Select(t => t.ModuleCode));
@ -70,73 +70,129 @@ namespace WCS.BLL.HardWare
await Task.Delay(2000);
continue;
}
//查询属于本货架的任务
var currentShelfTasks = DbHelp.db.Queryable<CurrentTask>()
.Where(t => t.ShelfId == this.ShelfId)
.Where(t => t.IsSended == false)
.OrderBy(t => t.CreateTime)
.ToList();
//获取因为任务需要刷新的module
var haveTaskModules = currentShelfTasks.Select(t => t.ModuleId).Distinct().ToList();
MXL4Modules.ForEach(t =>
{
if (haveTaskModules.Contains(t.ModuleId))
{ t.IsNeedRefresh = true; }
});
//查询是否有需要刷新的
var needRefreshModules = MXL4Modules.Where(t => t.IsNeedRefresh)
.ToList();
foreach (var module in needRefreshModules)
{
//查询当前是否有任务
var currentTasks = DbHelp.db.Queryable<CurrentTask>()
.Where(t => t.ModuleId == module.ModuleId)
.Where(t => t.IsSended == false)
.OrderBy(t => t.CreateTime)
.ToList();
//入库、出库、盘点等任务
if (currentTasks != null && currentTasks.Count > 0)
try
{
var firstTask = currentTasks.First();
var taskMode = currentTasks.First().TaskMode;
#region Continue
if (module.CurrentMode == TaskModeEnum.)
//查询当前是否有任务
var currentTasks = currentShelfTasks.Where(t => t.ModuleId == module.ModuleId)
.OrderBy(t => t.CreateTime)
.ToList();
//入库、出库、盘点等任务
if (currentTasks != null && currentTasks.Count > 0)
{
//进入对应模式
switch (taskMode)
var firstTask = currentTasks.First();
var taskMode = currentTasks.First().TaskMode;
#region Continue
if (module.CurrentMode == TaskModeEnum.)
{
case (TaskModeEnum.):
module.GoInInstoreMode(TcpCleint);
break;
case (TaskModeEnum.):
module.GoInOutstoreMode(TcpCleint);
break;
case (TaskModeEnum.):
module.GoInStocktakingMode(TcpCleint);
break;
default:
break;
//进入对应模式
switch (taskMode)
{
case (TaskModeEnum.):
module.GoInInstoreMode(TcpCleint);
break;
case (TaskModeEnum.):
module.GoInOutstoreMode(TcpCleint);
break;
case (TaskModeEnum.):
module.GoInStocktakingMode(TcpCleint);
break;
default:
break;
}
//等待10ms这边将状态成功更新了来
await Task.Delay(10);
}
//等待10ms这边将状态成功更新了来
await Task.Delay(10);
}
else
{
taskMode = module.CurrentMode;
}
#endregion
//只显示当前模式的任务
currentTasks = currentTasks.Where(t => t.TaskMode == taskMode).ToList();
//这个分支应该很少跑到 有刷新必然有新任务
if (currentTasks == null || currentTasks.Count == 0)
{
Logs.Write($"【后台发送线程】{module.ModuleCode}当前模式{module.CurrentMode},需要刷新!但是没有对应的新任务!");
var tasks = DbHelp.db.Queryable<CurrentTask>()
.Where(t => t.ModuleId == module.ModuleId)
.Where(t => t.IsSended == true)
.Where(t => t.TaskMode == taskMode)
.OrderBy(t => t.CreateTime)
.ToList();
if (tasks != null && tasks.Count > 0)
{
Logs.Write($"【后台发送线程】{module.ModuleCode}当前模式{module.CurrentMode},需要刷新!但是没有对应的新任务!有已发送的任务未完成故不处理!");
module.IsNeedRefresh = false;
continue;
}
//退出对应模式到待机模式! 后续持续刷新数据!
else
{
Logs.Write($"【后台发送线程】{module.ModuleCode}当前模式{module.CurrentMode},需要刷新!但是没有对应的新任务!没有已发送未完成的任务!退出当前模式!");
taskMode = module.CurrentMode;
}
#endregion
//只显示当前模式的任务
currentTasks = currentTasks.Where(t => t.TaskMode == taskMode).ToList();
//这个分支应该很少跑到 有刷新必然有新任务
if (currentTasks == null || currentTasks.Count == 0)
{
Logs.Write($"【后台发送线程】{module.ModuleCode}当前模式{module.CurrentMode},需要刷新!但是没有对应的新任务!");
var tasks = DbHelp.db.Queryable<CurrentTask>()
.Where(t => t.ModuleId == module.ModuleId)
.Where(t => t.IsSended == true)
.Where(t => t.TaskMode == taskMode)
.OrderBy(t => t.CreateTime)
.ToList();
if (tasks != null && tasks.Count > 0)
{
Logs.Write($"【后台发送线程】{module.ModuleCode}当前模式{module.CurrentMode},需要刷新!但是没有对应的新任务!有已发送的任务未完成故不处理!");
module.IsNeedRefresh = false;
continue;
}
//退出对应模式到待机模式! 后续持续刷新数据!
else
{
Logs.Write($"【后台发送线程】{module.ModuleCode}当前模式{module.CurrentMode},需要刷新!但是没有对应的新任务!没有已发送未完成的任务!退出当前模式!");
// 退出对应模式
switch (taskMode)
{
case (TaskModeEnum.):
module.GoOutInstoreMode(TcpCleint);
break;
case (TaskModeEnum.):
module.GoOutOutstoreMode(TcpCleint);
break;
case (TaskModeEnum.):
module.GoOutStocktakingMode(TcpCleint);
break;
default:
break;
}
continue;
}
}
//按照任务顺序给其发送数据
foreach (var currentTask in currentTasks)
{
module.SendTaskId(currentTask.TaskID, TcpCleint);
module.SendMatCode(currentTask.MatCode, TcpCleint);
module.SendMatName(currentTask.MatName, TcpCleint);
module.SendMatSpec(currentTask.MatSpec, TcpCleint);
module.SendMatBatch(currentTask.MatBatch, TcpCleint);
module.SendMatQty(currentTask.Qty, TcpCleint);
currentTask.IsSended = true;
DbHelp.db.Updateable(currentTask).ExecuteCommand();
}
//发送完毕后就不刷新了
module.IsNeedRefresh = false;
continue;
}
//不存在入库、出库、盘点等任务 应该变成待机
else
{
//退出对应模式到待机模式! 后续持续刷新数据!
if (module.CurrentMode != TaskModeEnum.)
{
// 退出对应模式
switch (taskMode)
switch (module.CurrentMode)
{
case (TaskModeEnum.):
module.GoOutInstoreMode(TcpCleint);
@ -152,57 +208,23 @@ namespace WCS.BLL.HardWare
}
continue;
}
}
//按照任务顺序给其发送数据
foreach (var currentTask in currentTasks)
{
module.SendTaskId(currentTask.TaskID, TcpCleint);
module.SendMatCode(currentTask.MatCode, TcpCleint);
module.SendMatName(currentTask.MatName, TcpCleint);
module.SendMatSpec(currentTask.MatSpec, TcpCleint);
module.SendMatBatch(currentTask.MatBatch, TcpCleint);
module.SendMatQty(currentTask.Qty, TcpCleint);
currentTask.IsSended = true;
DbHelp.db.Updateable(currentTask).ExecuteCommand();
//向上层系统获取数据
//获取成功 有数据 绑定对应数据
//获取成功 无数据
module.StandbyNoInfoDisplay(TcpCleint);
module.IsNeedRefresh = false;//未获取到库存数据 回没有库位显示信息给硬件
//获取失败 跳过此次循环后继续获取
}
//发送完毕后就不刷新了
module.IsNeedRefresh = false;
continue;
}
//不存在入库、出库、盘点等任务 应该变成待机
else
catch (Exception ex)
{
//退出对应模式到待机模式! 后续持续刷新数据!
if (module.CurrentMode != TaskModeEnum.)
{
// 退出对应模式
switch (module.CurrentMode)
{
case (TaskModeEnum.):
module.GoOutInstoreMode(TcpCleint);
break;
case (TaskModeEnum.):
module.GoOutOutstoreMode(TcpCleint);
break;
case (TaskModeEnum.):
module.GoOutStocktakingMode(TcpCleint);
break;
default:
break;
}
continue;
}
//向上层系统获取数据
//获取成功 有数据 绑定对应数据
//获取成功 无数据
module.StandbyNoInfoDisplay(TcpCleint);
module.IsNeedRefresh = false;//未获取到库存数据 回没有库位显示信息给硬件
//获取失败 跳过此次循环后继续获取
Logs.Write($"【后台发送线程】遇到异常{ex.Message},{ex.StackTrace}");
}
}
}
catch (Exception ex)
@ -429,13 +451,14 @@ namespace WCS.BLL.HardWare
.FirstOrDefault();
if (module != null)
{
module.SetCurrentMode(TaskModeEnum.);
module.IsNeedRefresh = true;
}
else
{
Logs.Write($"【回到待机模式】货架【{ShelfCode}】通过板子ID【{boardId}】未找到对应模组!");
}
//TO DO 所有退出后货架才待机
SetCurrentMode(TaskModeEnum.);
}
/// <summary>
@ -526,6 +549,7 @@ namespace WCS.BLL.HardWare
StoreCode = task.StoreCode,
TaskID = task.TaskID,
Guid = task.Guid,
ItemNo = task.ItemNo,
TaskMode = task.TaskMode,
OrderNumber = task.OrderNumber,
ButtonColor = task.ButtonColor,
@ -583,6 +607,7 @@ namespace WCS.BLL.HardWare
StoreCode = task.StoreCode,
TaskID = task.TaskID,
Guid = task.Guid,
ItemNo = task.ItemNo,
TaskMode = task.TaskMode,
OrderNumber = task.OrderNumber,
ButtonColor = task.ButtonColor,
@ -640,6 +665,7 @@ namespace WCS.BLL.HardWare
StoreCode = task.StoreCode,
TaskID = task.TaskID,
Guid = task.Guid,
ItemNo = task.ItemNo,
TaskMode = task.TaskMode,
OrderNumber = task.OrderNumber,
ButtonColor = task.ButtonColor,

View File

@ -87,7 +87,7 @@ namespace WCS.BLL.HardWare
public string ModuleCode { get; set; }
public int BoardId { get; set; }
public bool IsEnable { get; set; }
public TaskModeEnum CurrentMode { get; set; }
public TaskModeEnum CurrentMode { get; set; } = TaskModeEnum.;
public bool IsNeedRefresh { get; set; } = true;

View File

@ -62,7 +62,7 @@ namespace WCS.BLL.Manager
}
//手动修改后台配置后再进行CodeFirst 数据库的生成、表的生成
//如果不配置此参数 每次启动都会持续几十秒才能成功启动后端
if (LocalFile.Config.IsResetDBOrTable)
if (true)
{
#region
DbHelp.db.DbMaintenance.CreateDatabase();

View File

@ -0,0 +1,234 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WCS.BLL.DbModels.Task;
using WCS.BLL.DbModels;
using WCS.BLL.HardWare;
using WCS.DAL.Db.AuthDb;
using WCS.DAL.Db;
using WCS.DAL;
using WCS.Model.ApiModel.InOutRecord;
using WCS.Model.ApiModel.MXBackgroundThread;
using WCS.Model;
using WCS.BLL.Tool;
using SqlSugar;
using WCS.BLL.Config;
using WCS.Model.ApiModel.MKYBackgroundThread;
using System.Text.RegularExpressions;
using System.Reflection;
namespace WCS.BLL.Manager
{
public static class MKYBackgroundThread
{
public static void InitBackgroundThread()
{
#region WMS接口获取具体的库存列表并展示在液晶标签上
Task.Run(() =>
{
while (true)
{
//每5秒同步一次
Thread.Sleep(5000);
try
{
}
catch (Exception ex)
{
Logs.Write("【定时任务】刷新库存显示时发生异常!" + ex.Message);
}
}
});
#endregion
#region WMS系统
Task.Run(() =>
{
while (true)
{
//回传数据的时间间隔
Thread.Sleep(2000);
try
{
//获取已完成未提交的任务
var finsishedTaks = DbHelp.db.Queryable<FinishedTask>()
.Where(t => t.FinishTime > DateTime.Now.AddDays(-1))//只上传1天内的 后续调整
.OrderBy(t => t.FinishTime)
.ToList();
//循环进行上传
for (int i = 0; i < finsishedTaks.Count; i++)
{
var finishedTask = finsishedTaks[i];
try
{
//////上传单据
////#region 上传单据
////var request = new SysOrderRequest()
////{
//// guid = finishedTask.Guid.ToString(),
//// itemNo = finishedTask.ItemNo,
//// matCode = finishedTask.MatCode,
//// matBatch = finishedTask.MatBatch,
//// matSN = finishedTask.MatSN,
//// orderNumber = finishedTask.OrderNumber,
//// orderType = (int)finishedTask.TaskMode,
//// storeCode = finishedTask.StoreCode,
//// qty = finishedTask.Qty,
////};
////var result = ApiHelp.GetDataFromHttp<SysOrderResponse>(@"http://172.16.129.8:8989/ztwcs/stockBillBack", request, "POST", true);
////if (result != null && (result.code == 200))
////{
//// //上传成功
//// var uploadedTask = new UploadededTask()
//// {
//// ShelfId = finishedTask.ShelfId,
//// ShelfCode = finishedTask.ShelfCode,
//// ModuleId = finishedTask.ModuleId,
//// ModuleCode = finishedTask.ModuleCode,
//// StoreId = finishedTask.StoreId,
//// StoreCode = finishedTask.StoreCode,
//// TaskID = finishedTask.TaskID,
//// ItemNo = finishedTask.ItemNo,
//// Guid = finishedTask.Guid,
//// TaskMode = finishedTask.TaskMode,
//// OrderNumber = finishedTask.OrderNumber,
//// ButtonColor = finishedTask.ButtonColor,
//// MatCode = finishedTask.MatCode,
//// MatName = finishedTask.MatName,
//// MatSpec = finishedTask.MatSpec,
//// MatBatch = finishedTask.MatBatch,
//// MatSN = finishedTask.MatSN,
//// Qty = finishedTask.Qty,
//// CreateTime = finishedTask.CreateTime,
//// FinishQty = finishedTask.FinishQty,
//// FinishTime = finishedTask.FinishTime,
//// UploadTime = DateTime.Now,
//// };
//// DbHelp.db.Insertable(uploadedTask).ExecuteCommand();
//// DbHelp.db.Deleteable(finishedTask).ExecuteCommand();
////}
////#endregion
//为了调试
Random random = new Random();
int number = random.Next(1 , 100);
if (number <= 30)
{
//上传成功
var uploadedTask = new UploadededTask()
{
ShelfId = finishedTask.ShelfId,
ShelfCode = finishedTask.ShelfCode,
ModuleId = finishedTask.ModuleId,
ModuleCode = finishedTask.ModuleCode,
StoreId = finishedTask.StoreId,
StoreCode = finishedTask.StoreCode,
TaskID = finishedTask.TaskID,
ItemNo = finishedTask.ItemNo,
Guid = finishedTask.Guid,
TaskMode = finishedTask.TaskMode,
OrderNumber = finishedTask.OrderNumber,
ButtonColor = finishedTask.ButtonColor,
MatCode = finishedTask.MatCode,
MatName = finishedTask.MatName,
MatSpec = finishedTask.MatSpec,
MatBatch = finishedTask.MatBatch,
MatSN = finishedTask.MatSN,
Qty = finishedTask.Qty,
CreateTime = finishedTask.CreateTime,
FinishQty = finishedTask.FinishQty,
FinishTime = finishedTask.FinishTime,
UploadTime = DateTime.Now,
};
DbHelp.db.Insertable(uploadedTask).ExecuteCommand();
DbHelp.db.Deleteable(finishedTask).ExecuteCommand();
}
}
catch (Exception ex)
{
Logs.Write($"【定时任务回传数据至WMS系统】{finishedTask.ItemNo}发生异常," + ex.Message, LogsType.Info);
Logs.Write($"【定时任务回传数据至WMS系统】{finishedTask.ItemNo}发生异常" + ex.StackTrace, LogsType.Info);
}
Thread.Sleep(500);
}
}
catch (Exception e)
{
Logs.Write("【定时任务回传数据至WMS系统】发生异常" + e.Message, LogsType.Info);
Logs.Write("【定时任务回传数据至WMS系统】发生异常" + e.StackTrace, LogsType.Info);
}
}
});
#endregion
//#region 定时任务:监测警示灯关灯机制
////判断灯颜色和模式是否对应
//Task.Run(() =>
//{
// while (true)
// {
// //间隔5秒查询一次
// Thread.Sleep(5000);
// try
// {
// //待机模式未关灯
// var shelves = ShelfManager.Shelves.Where(t => t.CurrentMode == TaskModeEnum.待机模式 && t.LightColor != WarningLight.LightColorEnum.关闭)
// .Where(t => t.SetCurrentModeTime < DateTime.Now.AddSeconds(-5))
// .ToList();
// foreach (var shelf in shelves)
// {
// try
// {
// if (shelf is SmartShelf)
// {
// var smartShelf = (SmartShelf)shelf;
// if (smartShelf.IsWarning == false)
// {
// smartShelf?.WarningLight.CloseLight(smartShelf.TcpCleint);
// Logs.Write($"【定时任务】:监测警示灯关灯机制,关【{shelf.ShelfCode}】灯发送指令成功!");
// }
// }
// }
// catch (Exception ex)
// {
// Logs.Write($"【定时任务】:监测警示灯关灯机制,关【{shelf.ShelfCode}】灯发生异常" + ex.Message);
// }
// }
// //出库模式未亮灯
// var outShelves = ShelfManager.Shelves.Where(t => t.CurrentMode == TaskModeEnum.出库模式 && t.LightColor == WarningLight.LightColorEnum.关闭)
// .Where(t => t.SetCurrentModeTime < DateTime.Now.AddSeconds(-5))
// .ToList();
// foreach (var shelf in outShelves)
// {
// try
// {
// if (shelf is SmartShelf)
// {
// var smartShelf = (SmartShelf)shelf;
// smartShelf?.WarningLight.GreenLight(smartShelf.TcpCleint);
// Logs.Write($"【定时任务】:监测警示灯关灯机制,出库开灯【{shelf.ShelfCode}】发送指令成功!");
// }
// }
// catch (Exception ex)
// {
// Logs.Write($"【定时任务】:监测警示灯关灯机制,出库开灯【{shelf.ShelfCode}】发生异常" + ex.Message);
// }
// }
// }
// catch (Exception ex)
// {
// Logs.Write("【定时任务】:监测警示灯关灯机制发生异常" + ex.Message);
// }
// }
//});
//#endregion
}
}
}

View File

@ -39,15 +39,15 @@ namespace WCS.BLL.Services.Service
var storeCodeList = request.List.Select(t => t.StoreCode)
.Distinct()
.ToList();
var stores = DbHelp.db.Queryable<StoreInfo>()
var moduleInfo = DbHelp.db.Queryable<ModuleInfo>()
.LeftJoin<ShelfTypeInfo>((si, sti) => si.ShelfTypeId == sti.Id)
.Where((si, sti) => sti.ShelfTypeName == "液晶货架")
.Where((si, sti) => storeCodeList.Contains(si.StoreCode))
.Select((st, sti) => st)
.Where((si, sti) => sti.ShelfTypeName == "液晶标签货架")
.Where((si, sti) => storeCodeList.Contains(si.ModuleCode))
.Select((si, sti) => si)
.ToList();
if (stores.Count < storeCodeList.Count)
if (moduleInfo.Count < storeCodeList.Count)
{
var storeCodesInDB = stores.Select(t => t.StoreCode).ToList();
var storeCodesInDB = moduleInfo.Select(t => t.ModuleCode).ToList();
storeCodeList.RemoveAll(t => storeCodesInDB.Contains(t));
return new ResponseCommon<object>
{
@ -72,20 +72,36 @@ namespace WCS.BLL.Services.Service
};
}
//获取taskId
var list = new List<int>() { 1, 2, 3, 4, 5, 6, 7 };
//已存在的taskID
var exsitIds = currenTasks.Select(t => t.TaskID)
.ToList();
exsitIds.ForEach(t =>
{
list.RemoveAll(l => l == t);
});
var tasks = new List<CurrentTask>();
//生成任务数据
foreach (var orderDetail in request.List)
{
var store = stores.Where(t => t.StoreCode == orderDetail.StoreCode).First();
var taskId = list.First();
list.RemoveAll(l => l == taskId);
var module = moduleInfo.Where(t => t.ModuleCode == orderDetail.StoreCode).First();
var task = new CurrentTask()
{
StoreId = store.Id,
StoreCode = store.StoreCode,
ModuleId = module.Id,
ModuleCode = module.ModuleCode,
ShelfId = module.ShelfId,
ShelfCode = module.ShelfCode,
Guid = orderDetail.Guid,
ItemNo = orderDetail.ItemNo,
TaskMode = request.OrderType,
OrderNumber = request.OrderNumber,
ButtonColor = request.Corlor,
TaskID = taskId,
ButtonColor = DbModels.Task.ButtonColorEnum.绿,
MatCode = orderDetail.MatCode,
MatName = orderDetail.MatName,
MatSpec = orderDetail.MatSpec,

View File

@ -0,0 +1,35 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace WCS.Model.ApiModel.MKYBackgroundThread
{
public class SysOrderRequest
{
public string itemNo { get; set; }
public string guid { get; set; }
public string matCode { get; set; }
public string matBatch { get; set; }
public string matSN { get; set; }
public string orderNumber { get; set; }
public int orderType { get; set; }
public string storeCode { get; set; }
public int qty { get; set; }
}
}

View File

@ -0,0 +1,13 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace WCS.Model.ApiModel.MKYBackgroundThread
{
public class SysOrderResponse
{
public int code { get; set; }
public string message { get; set; }
public object data { get; set; }
}
}

View File

@ -11,7 +11,7 @@ namespace WCS.Model.ApiModel.MXL4
/// <summary>
/// 按钮颜色
/// </summary>
public ButtonColorEnum Corlor { get; set; }
public string Corlor { get; set; }
/// <summary>
/// 任务单号
@ -36,6 +36,11 @@ namespace WCS.Model.ApiModel.MXL4
/// </summary>
public Guid Guid { get; set; }
/// <summary>
///系统那边的主键
/// </summary>
public string ItemNo { get; set; }
/// <summary>
/// 库位编码
/// </summary>

View File

@ -37,7 +37,8 @@ namespace WebApi
ShelfManager.InitShelves();
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>ط<EFBFBD><D8B7>߳<EFBFBD>
WarningManager.StartWarningMessageThread();
//WarningManager.StartWarningMessageThread();
MKYBackgroundThread.InitBackgroundThread();
//<2F><>Ѷ<EFBFBD><D1B6>˾<EFBFBD><CBBE>̨<EFBFBD>߳<EFBFBD>
if (LocalFile.Config.IsMx)
@ -73,7 +74,6 @@ namespace WebApi
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
builder.Services.AddScoped<IInstoreService, InstoreService>();
builder.Services.AddScoped<IOutstoreService, OutstoreService>();
builder.Services.AddScoped<IHomerService, HomerService>();