Merge branch 'feature/智能货架'
This commit is contained in:
@ -42,7 +42,7 @@ namespace WCS.BLL.DbModels
|
||||
[SugarColumn(ColumnName = "mat_spec", Length = 150, IsNullable = true, ColumnDescription = "物料规格")]
|
||||
public string? MatSpec { get; set; }
|
||||
|
||||
|
||||
|
||||
[SugarColumn(ColumnName = "mat_unit", Length = 100, IsNullable = true, ColumnDescription = "物料单位")]
|
||||
public string? MatUnit { get; set; }
|
||||
|
||||
@ -75,6 +75,13 @@ namespace WCS.BLL.DbModels
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnName = "is_printed", ColumnDescription = "是否已打印")]
|
||||
public bool IsPrinted { get; set; } = false;
|
||||
|
||||
/// <summary>
|
||||
/// 打印次数
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnName = "printed_times", DefaultValue = "0", ColumnDescription = "打印次数")]
|
||||
public int PrintedTimes { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Desc:更新人
|
||||
/// Default:
|
||||
|
@ -12,7 +12,7 @@ namespace WCS.DAL.DbModels
|
||||
///模组信息表
|
||||
///</summary>
|
||||
[SugarTable("module_info")]
|
||||
public partial class ModuleInfo
|
||||
public class ModuleInfo
|
||||
{
|
||||
|
||||
/// <summary>
|
||||
@ -80,5 +80,16 @@ namespace WCS.DAL.DbModels
|
||||
|
||||
[SugarColumn(ColumnName = "current_mode", IsNullable = true, ColumnDescription = "串联后大货架编码;大货架编码:未串联时是与货架编码是一对一的关系;串联后与货架编码是一对多的关系")]
|
||||
public Mode CurrentMode { get; set; } = Mode.待机模式;
|
||||
|
||||
/// <summary>
|
||||
/// 序号
|
||||
/// </summary>
|
||||
[SugarColumn(IsIgnore = true)]
|
||||
public int RowNumber { get; set; }
|
||||
/// <summary>
|
||||
/// 是否已经选择
|
||||
/// </summary>
|
||||
[SugarColumn(IsIgnore = true)]
|
||||
public bool IsSelected { get; set; }
|
||||
}
|
||||
}
|
||||
|
@ -50,6 +50,12 @@ namespace WCS.BLL.DbModels
|
||||
[SugarColumn(ColumnName = "create_user", Length = 100, IsNullable = true, ColumnDescription = "创建人")]
|
||||
public string CreateUser { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 更新时间
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnName = "update_time", IsNullable = false, ColumnDescription = "更新时间")]
|
||||
public DateTime UpdateTime { get; set; } = DateTime.Now;
|
||||
|
||||
/// <summary>
|
||||
/// 序号
|
||||
/// </summary>
|
||||
|
@ -87,5 +87,16 @@ namespace WCS.DAL.DbModels
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnName = "offset_voltage", IsNullable = true, ColumnDescription = "电压偏移值")]
|
||||
public decimal OffsetVoltage { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 序号
|
||||
/// </summary>
|
||||
[SugarColumn(IsIgnore = true)]
|
||||
public int RowNumber { get; set; }
|
||||
/// <summary>
|
||||
/// 是否已经选择
|
||||
/// </summary>
|
||||
[SugarColumn(IsIgnore = true)]
|
||||
public bool IsSelected { get; set; }
|
||||
}
|
||||
}
|
||||
|
@ -45,49 +45,6 @@ namespace WCS.BLL.HardWare
|
||||
|
||||
ModuleIds = Modules.Select(t => t.BoardId).ToList();
|
||||
});
|
||||
|
||||
////初始化TCPCleint
|
||||
//TcpCleint = new TCPClient("192.168.0.11:20002", "192.168.0.154:20003");
|
||||
//TcpCleint.tcpClient.Received += (client, e) =>
|
||||
//{
|
||||
// var data = e.ByteBlock.Buffer.Take((int)e.ByteBlock.Length).ToArray();
|
||||
// e.ByteBlock.Clear();
|
||||
// var len = data.Length;
|
||||
// for (int index = 0; index < data.Length - TcpCleint.PreFixLength; index++)
|
||||
// {
|
||||
// //协议拆包 通过前缀校验是否为完整数据包
|
||||
// var prefixInData = data.Skip(index).Take(TcpCleint.PreFixLength);
|
||||
// var isEqual = prefixInData.SequenceEqual(TcpCleint.Prefix);
|
||||
// if (isEqual)
|
||||
// {
|
||||
// var dataTemp = data.Skip(index).Take(TcpCleint.PreFixLength + TcpCleint.DataLength).ToArray();
|
||||
// if (dataTemp.Length < TcpCleint.PreFixLength + TcpCleint.DataLength)//拆包后不满足一条指令的长度
|
||||
// {
|
||||
// continue;
|
||||
// }
|
||||
// index += (TcpCleint.PreFixLength + TcpCleint.DataLength - 1);//每次循环index会+1 所以这里-1
|
||||
// //获取板子ID
|
||||
// var boardIds = (data[TcpCleint.PreFixLength + 0] << 8) + data[TcpCleint.PreFixLength + 1];
|
||||
// var lightNumber = Convert.ToInt32(data[TcpCleint.PreFixLength + 3]);
|
||||
|
||||
// //协议处理 判断功能位
|
||||
// switch (dataTemp[TcpCleint.PreFixLength + 2])
|
||||
// {
|
||||
// case 0x01://进入入库模式信号
|
||||
// GoInInstoreProcess(dataTemp, boardIds, lightNumber);
|
||||
// break;
|
||||
// case 0x03://正常入库信号
|
||||
// InStoreReturnProcess(dataTemp);
|
||||
// break;
|
||||
// default:
|
||||
// ;
|
||||
// break;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// return EasyTask.CompletedTask;
|
||||
//};
|
||||
//TcpCleint.Connect();
|
||||
}
|
||||
|
||||
|
||||
@ -748,6 +705,7 @@ namespace WCS.BLL.HardWare
|
||||
}
|
||||
//获取当前板所有库位
|
||||
var storeInfos = DbHelp.db.Queryable<StoreInfo>()
|
||||
.Where(t => t.ShelfId == ShelfId)
|
||||
.Where(t => t.BoardId == boardId)
|
||||
.ToList();
|
||||
//当前板子的灯数量
|
||||
@ -915,7 +873,9 @@ namespace WCS.BLL.HardWare
|
||||
{
|
||||
var boardId = (data[TcpCleint.PreFixLength + 0] << 8) + data[TcpCleint.PreFixLength + 1];
|
||||
var number = Convert.ToInt32(data[TcpCleint.PreFixLength + 3]);
|
||||
var storeInfo = DbHelp.db.Queryable<StoreInfo>().Where(t => t.BoardId == boardId
|
||||
var storeInfo = DbHelp.db.Queryable<StoreInfo>().Where(t =>
|
||||
t.ShelfId == ShelfId
|
||||
&& t.BoardId == boardId
|
||||
&& t.LightNumber == number).First();
|
||||
|
||||
if (storeInfo == null)
|
||||
@ -1062,6 +1022,7 @@ namespace WCS.BLL.HardWare
|
||||
Logs.Write("协议处理5.1");
|
||||
lightNumber = (int)data[TcpCleint.PreFixLength + 4];
|
||||
var storeInfo = DbHelp.db.Queryable<StoreInfo>()
|
||||
.Where(t => t.ShelfId == ShelfId)
|
||||
.Where(t => t.BoardId == boardId && t.LightNumber == lightNumber)
|
||||
.First();
|
||||
Logs.Write("协议处理5.2");
|
||||
@ -1202,6 +1163,7 @@ namespace WCS.BLL.HardWare
|
||||
}
|
||||
//获取当前板所有库位
|
||||
var storeInfos = DbHelp.db.Queryable<StoreInfo>()
|
||||
.Where(t => t.ShelfId == ShelfId)
|
||||
.Where(t => t.BoardId == boardId)
|
||||
.ToList();
|
||||
//当前板子的灯数量
|
||||
@ -1310,6 +1272,7 @@ namespace WCS.BLL.HardWare
|
||||
}
|
||||
lightNumber = Convert.ToInt32(data[TcpCleint.PreFixLength + 3]);
|
||||
var storeInfo = DbHelp.db.Queryable<StoreInfo>().Where(t => t.BoardId == boardId
|
||||
&& t.ShelfId == ShelfId
|
||||
&& t.LightNumber == lightNumber)
|
||||
.First();
|
||||
if (storeInfo == null)
|
||||
@ -1423,9 +1386,19 @@ namespace WCS.BLL.HardWare
|
||||
//确认本次出库
|
||||
module.ComfirmOutstore(TcpCleint, data[TcpCleint.PreFixLength + 3]);
|
||||
|
||||
|
||||
|
||||
//当前柜子是否还存在未出库的
|
||||
CurrentOutStoreMatSNs.RemoveAll(t => t == matSN);//删除本次已出的物料SN
|
||||
var isExsistOut = CurrentOutStoreMatSNs.Any();
|
||||
|
||||
var tempOrder = CurrentOutOrder;
|
||||
//通知前台刷新
|
||||
Task.Run(() =>
|
||||
{
|
||||
//更新订单状态
|
||||
UpdateOutOrderStatus(tempOrder);
|
||||
|
||||
var messageMode = new WebSocketMessageModel()
|
||||
{
|
||||
IsWarning = false,
|
||||
@ -1435,18 +1408,9 @@ namespace WCS.BLL.HardWare
|
||||
WarningManager.SendWarning(messageMode);
|
||||
});
|
||||
|
||||
//当前柜子是否还存在未出库的
|
||||
CurrentOutStoreMatSNs.RemoveAll(t => t == matSN);//删除本次已出的物料SN
|
||||
var isExsistOut = CurrentOutStoreMatSNs.Any();
|
||||
|
||||
//本次亮灯的物料已全部取出
|
||||
if (!isExsistOut)
|
||||
{
|
||||
|
||||
|
||||
//更新订单状态
|
||||
UpdateOutOrderStatus(CurrentOutOrder);
|
||||
|
||||
CurrentOutOrder = null;
|
||||
|
||||
//退出出库模式
|
||||
@ -1547,7 +1511,6 @@ namespace WCS.BLL.HardWare
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
@ -1634,6 +1597,7 @@ namespace WCS.BLL.HardWare
|
||||
{
|
||||
lightNumber = (int)data[TcpCleint.PreFixLength + 4];
|
||||
var storeInfo = DbHelp.db.Queryable<StoreInfo>()
|
||||
.Where(t => t.ShelfId == ShelfId)
|
||||
.Where(t => t.BoardId == boardId && t.LightNumber == lightNumber)
|
||||
.First();
|
||||
if (storeInfo == null)
|
||||
|
@ -92,6 +92,7 @@ namespace WCS.BLL.HardWare
|
||||
//TO DO 退出对应的模式 然后再发送进入入库模式
|
||||
}
|
||||
var storeInfos = DbHelp.db.Queryable<StoreInfo>()
|
||||
.Where(t => t.ModuleId == ModuleId)
|
||||
.Where(t => t.BoardId == BoardId)
|
||||
.OrderBy(t => t.LightNumber)
|
||||
.ToList();
|
||||
@ -156,6 +157,7 @@ namespace WCS.BLL.HardWare
|
||||
return;
|
||||
}
|
||||
var storeInfos = DbHelp.db.Queryable<StoreInfo>()
|
||||
.Where(t => t.ModuleId == ModuleId)
|
||||
.Where(t => t.BoardId == BoardId)
|
||||
.OrderBy(t => t.LightNumber)
|
||||
.ToList();
|
||||
@ -184,7 +186,7 @@ namespace WCS.BLL.HardWare
|
||||
public void GoInOutStoreMode(TCPClient tcpClient, List<string> outSns)
|
||||
{
|
||||
CurrentOutSns = outSns;
|
||||
var storeInfos = DbHelp.db.Queryable<StoreInfo>()
|
||||
var storeInfos = DbHelp.db.Queryable<StoreInfo>().Where(t => t.ModuleId == ModuleId)
|
||||
.Where(t => t.BoardId == BoardId)
|
||||
.OrderBy(t => t.LightNumber)
|
||||
.ToList();
|
||||
@ -247,7 +249,7 @@ namespace WCS.BLL.HardWare
|
||||
{
|
||||
CurrentStockTakingSns = stockTakingSns;
|
||||
|
||||
var storeInfos = DbHelp.db.Queryable<StoreInfo>()
|
||||
var storeInfos = DbHelp.db.Queryable<StoreInfo>().Where(t => t.ModuleId == ModuleId)
|
||||
.Where(t => t.BoardId == BoardId)
|
||||
.OrderBy(t => t.LightNumber)
|
||||
.ToList();
|
||||
@ -277,7 +279,7 @@ namespace WCS.BLL.HardWare
|
||||
|
||||
tcpClient.Send(tcpClient.GenerateMessage(BoardId, GoInStockTakingModeData));
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 已确认过的物料
|
||||
/// </summary>
|
||||
@ -286,7 +288,7 @@ namespace WCS.BLL.HardWare
|
||||
{
|
||||
CurrentStockTakingSns = stockTakingSns;
|
||||
|
||||
var storeInfos = DbHelp.db.Queryable<StoreInfo>()
|
||||
var storeInfos = DbHelp.db.Queryable<StoreInfo>().Where(t => t.ModuleId == ModuleId)
|
||||
.Where(t => t.BoardId == BoardId)
|
||||
.OrderBy(t => t.LightNumber)
|
||||
.ToList();
|
||||
@ -317,14 +319,14 @@ namespace WCS.BLL.HardWare
|
||||
|
||||
tcpClient.Send(tcpClient.GenerateMessage(BoardId, ConfirmStockTakingData));
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 单个确认物料
|
||||
/// </summary>
|
||||
/// <param name="tcpClient"></param>
|
||||
public void ConfirmStockTakingSingle(TCPClient tcpClient, int lightNumber)
|
||||
{
|
||||
var storeInfos = DbHelp.db.Queryable<StoreInfo>()
|
||||
var storeInfos = DbHelp.db.Queryable<StoreInfo>().Where(t => t.ModuleId == ModuleId)
|
||||
.Where(t => t.BoardId == BoardId)
|
||||
.OrderBy(t => t.LightNumber)
|
||||
.ToList();
|
||||
|
@ -28,7 +28,7 @@ namespace WCS.BLL.Manager
|
||||
.ToList();
|
||||
foreach (var ip in ips)
|
||||
{
|
||||
var tcpCleint = new TCPClient(ip, "192.168.9.183:20003");
|
||||
var tcpCleint = new TCPClient(ip, "");
|
||||
//配置断线重连
|
||||
tcpCleint.tcpClient.Received += (client, e) =>
|
||||
{
|
||||
@ -102,9 +102,49 @@ namespace WCS.BLL.Manager
|
||||
Logs.Write("协议处理完毕!");
|
||||
return EasyTask.CompletedTask;
|
||||
};
|
||||
//配置首次连接后复位操作
|
||||
tcpCleint.tcpClient.Connected += (client, e) =>
|
||||
{
|
||||
var clientIpHost = client.IP + ":" + client.Port;
|
||||
var TcpCleint = TCPClientManager.GetTCPClientByIPHost(clientIpHost);
|
||||
if (TcpCleint == null)
|
||||
{
|
||||
return EasyTask.CompletedTask;
|
||||
}
|
||||
//首次连接
|
||||
if (TcpCleint.IsFirstConnected == false)
|
||||
{
|
||||
InitStatus(TcpCleint);
|
||||
TcpCleint.IsFirstConnected = true;
|
||||
}
|
||||
return EasyTask.CompletedTask;
|
||||
};
|
||||
|
||||
TCPClients.Add(tcpCleint);
|
||||
tcpCleint.Connect();
|
||||
}
|
||||
|
||||
//启动线程监听所有TCP是否已经完成首次连接
|
||||
Task.Run(() =>
|
||||
{
|
||||
while (true)
|
||||
{
|
||||
Thread.Sleep(1000);
|
||||
var noFirstConnectedClients = TCPClientManager.TCPClients.Where(t => t.IsFirstConnected == false)
|
||||
.ToList();
|
||||
if (noFirstConnectedClients.Count == 0)
|
||||
{
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
noFirstConnectedClients.ForEach(t =>
|
||||
{
|
||||
t.ReConnectAsync();
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
//后台启动时给所有板子、警示灯发送复位操作 保持状态一致
|
||||
@ -133,6 +173,30 @@ namespace WCS.BLL.Manager
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
//后台启动时给所有板子、警示灯发送复位操作 保持状态一致
|
||||
public static void InitStatus(TCPClient tcpClient)
|
||||
{
|
||||
Task.Run(() =>
|
||||
{
|
||||
try
|
||||
{
|
||||
Thread.Sleep(1000);
|
||||
|
||||
//板子复位
|
||||
new SmartShelfModule()
|
||||
{
|
||||
BoardId = 2047
|
||||
}.Reset(tcpClient);
|
||||
//报警灯复位
|
||||
new WarningLight().CloseLight(tcpClient);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Logs.Write($"[{tcpClient.RemoteIPHost}]:启动时复位异常,{ex.Message}");
|
||||
}
|
||||
});
|
||||
}
|
||||
public static TCPClient GetTCPClientByIPHost(string IpHost)
|
||||
{
|
||||
return TCPClients.Where(t => t.RemoteIPHost == IpHost).FirstOrDefault();
|
||||
|
@ -144,6 +144,7 @@ namespace WCS.BLL.Manager
|
||||
{
|
||||
//获取库位
|
||||
var storeInfo = DbHelp.db.Queryable<StoreInfo>()
|
||||
.Where(t => t.ShelfId == warning.ShelfId)
|
||||
.Where(t => t.Id == warning.StoreId)
|
||||
.First();
|
||||
if (storeInfo != null)
|
||||
|
@ -14,7 +14,7 @@ namespace WCS.BLL.Services.IService
|
||||
|
||||
public Task<PageQueryResponse<MatBaseInfo>> exportMatBaseInfo(GetMatBaseInfoRequest request);
|
||||
|
||||
public Task<ResponseCommon<List<string>>> importMatBaseInfo(List<MatBaseInfoImportModel> lists,string userName,string deviceType);
|
||||
public Task<ResponseCommon<List<string>>> importMatBaseInfo(List<MatBaseInfoImportModel> lists, string userName, string deviceType);
|
||||
|
||||
public Task<ResponseCommon<object>> addOrUpdateMatBaseInfo(AddMatBaseInfoRequest<MatBaseInfo> request);
|
||||
|
||||
@ -24,5 +24,7 @@ namespace WCS.BLL.Services.IService
|
||||
|
||||
|
||||
public Task<PageQueryResponse<MatInfo>> getMatInfo(GetMatInfoRequest request);
|
||||
|
||||
public Task<ResponseCommon> printedMatInfo(PrintedMatInfoRequest request);
|
||||
}
|
||||
}
|
||||
|
@ -29,5 +29,22 @@ namespace WCS.BLL.Services.IService
|
||||
|
||||
|
||||
public Task<ResponseCommon<object>> GenerateStoreInfo();
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 查询货架列表
|
||||
/// </summary>
|
||||
/// <param name="request"></param>
|
||||
/// <returns></returns>
|
||||
public Task<PageQueryResponse<ModuleInfo>> GetModules(GetModulesRequest request);
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 查询货架列表
|
||||
/// </summary>
|
||||
/// <param name="request"></param>
|
||||
/// <returns></returns>
|
||||
public Task<PageQueryResponse<StoreInfo>> GetStores(GetStoresRequest request);
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -78,9 +78,10 @@ namespace WCS.BLL.Services.Service
|
||||
MatQty = request.MatQty,
|
||||
ModifyUser = request.UserName
|
||||
};
|
||||
matInfo.Id = DbHelp.db.Insertable(matInfo).ExecuteReturnIdentity();
|
||||
matInfoList.Add(matInfo);
|
||||
}
|
||||
DbHelp.db.Insertable(matInfoList).ExecuteCommand();
|
||||
|
||||
matBaseInfo.SerialNumber = startNumber + request.TotalCount;
|
||||
DbHelp.db.Updateable(matBaseInfo).ExecuteCommand();
|
||||
DbHelp.db.CommitTran();
|
||||
|
@ -49,7 +49,7 @@ namespace WCS.BLL.Services.Service
|
||||
//生成序号
|
||||
for (int i = 0; i < records.Count; i++)
|
||||
{
|
||||
records[i].RowNumber = (request.PageNumber - 1) * 10 + i + 1;
|
||||
records[i].RowNumber = (request.PageNumber - 1) * request.PageSize + i + 1;
|
||||
}
|
||||
|
||||
return new PageQueryResponse<InOutRecord>()
|
||||
|
@ -153,7 +153,7 @@ namespace WCS.BLL.Services.Service
|
||||
}
|
||||
|
||||
#region 获取物料数据 //调用接口或者直接查询数据库
|
||||
//TODO做成配置 调用接口
|
||||
// 调用接口
|
||||
if (LocalFile.Config.IsAccessWMS)
|
||||
{
|
||||
#region 调用WMS接口获取物料信息
|
||||
|
@ -45,7 +45,7 @@ namespace WCS.BLL.Services.Service
|
||||
//生成序号
|
||||
for (int i = 0; i < records.Count; i++)
|
||||
{
|
||||
records[i].RowNumber = (request.PageNumber - 1) * 10 + i + 1;
|
||||
records[i].RowNumber = (request.PageNumber - 1) * request.PageSize + i + 1;
|
||||
}
|
||||
//Task.WaitAll(new Task[] { recordsTask, totalCountTask });
|
||||
|
||||
|
@ -23,7 +23,10 @@ namespace WCS.BLL.Services.Service
|
||||
/// </summary>
|
||||
public class MatBaseInfoService : IMatBaseInfoService
|
||||
{
|
||||
public MatBaseInfoService() { }
|
||||
public MatBaseInfoService()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public async Task<PageQueryResponse<MatBaseInfo>> getMatBaseInfo(GetMatBaseInfoRequest request)
|
||||
{
|
||||
@ -42,7 +45,7 @@ namespace WCS.BLL.Services.Service
|
||||
//生成序号
|
||||
for (int i = 0; i < records.Count; i++)
|
||||
{
|
||||
records[i].RowNumber = (request.PageNumber - 1) * 10 + i + 1;
|
||||
records[i].RowNumber = (request.PageNumber - 1) * request.PageSize + i + 1;
|
||||
}
|
||||
|
||||
return new PageQueryResponse<MatBaseInfo>()
|
||||
@ -410,8 +413,6 @@ namespace WCS.BLL.Services.Service
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
public async Task<PageQueryResponse<MatInfo>> getMatInfo(GetMatInfoRequest request)
|
||||
{
|
||||
try
|
||||
@ -420,6 +421,8 @@ namespace WCS.BLL.Services.Service
|
||||
.WhereIF(!string.IsNullOrEmpty(request.MatCode), t => t.MatCode.Contains(request.MatCode))
|
||||
.WhereIF(!string.IsNullOrEmpty(request.MatName), t => t.MatName.Contains(request.MatName))
|
||||
.WhereIF(!string.IsNullOrEmpty(request.MatSpec), t => t.MatSpec.Contains(request.MatSpec))
|
||||
.WhereIF(!string.IsNullOrEmpty(request.MatBatch), t => t.MatBatch.Contains(request.MatBatch))
|
||||
.WhereIF(request.IsPrinted != null, t => t.IsPrinted == request.IsPrinted)
|
||||
.WhereIF(!string.IsNullOrEmpty(request.MatSN), t => t.MatSn.Contains(request.MatSN));
|
||||
var totalCount = await recordsQueryable.CountAsync();
|
||||
var records = await recordsQueryable
|
||||
@ -428,7 +431,7 @@ namespace WCS.BLL.Services.Service
|
||||
//生成序号
|
||||
for (int i = 0; i < records.Count; i++)
|
||||
{
|
||||
records[i].RowNumber = (request.PageNumber - 1) * 10 + i + 1;
|
||||
records[i].RowNumber = (request.PageNumber - 1) * request.PageSize + i + 1;
|
||||
}
|
||||
|
||||
return new PageQueryResponse<MatInfo>()
|
||||
@ -454,5 +457,51 @@ namespace WCS.BLL.Services.Service
|
||||
}
|
||||
}
|
||||
|
||||
public async Task<ResponseCommon> printedMatInfo(PrintedMatInfoRequest request)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
||||
if (request == null || request.PrintedMatInfoIds == null || request.PrintedMatInfoIds.Count == 0)
|
||||
{
|
||||
return new ResponseCommon()
|
||||
{
|
||||
Code = 300,
|
||||
Message = $"操作失败:参数为null",
|
||||
};
|
||||
}
|
||||
|
||||
DbHelp.db.BeginTran();
|
||||
//获取打印的具体数据
|
||||
var matInfos = await DbHelp.db.Queryable<MatInfo>()
|
||||
.Where(t => request.PrintedMatInfoIds.Contains(t.Id))
|
||||
.ToListAsync();
|
||||
//打印次数加一
|
||||
matInfos.ForEach(matInfo =>
|
||||
{
|
||||
matInfo.IsPrinted = true;
|
||||
matInfo.PrintedTimes = matInfo.PrintedTimes + 1;
|
||||
});
|
||||
await DbHelp.db.Updateable(matInfos).ExecuteCommandAsync();
|
||||
DbHelp.db.CommitTran();
|
||||
|
||||
return new ResponseCommon()
|
||||
{
|
||||
Code = 200,
|
||||
Message = $"Success",
|
||||
};
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
DbHelp.db.RollbackTran();
|
||||
return new ResponseCommon()
|
||||
{
|
||||
Code = 300,
|
||||
Message = $"操作失败:{ex.Message}",
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -47,7 +47,7 @@ namespace WCS.BLL.Services.Service
|
||||
//生成序号
|
||||
for (int i = 0; i < records.Count; i++)
|
||||
{
|
||||
records[i].RowNumber = (request.PageNumber - 1) * 10 + i + 1;
|
||||
records[i].RowNumber = (request.PageNumber - 1) * request.PageSize + i + 1;
|
||||
}
|
||||
|
||||
return new PageQueryResponse<InventoryDetail>()
|
||||
|
@ -208,7 +208,7 @@ namespace WCS.BLL.Services.Service
|
||||
//生成序号
|
||||
for (int i = 0; i < records.Count; i++)
|
||||
{
|
||||
records[i].RowNumber = (request.PageNumber - 1) * 10 + i + 1;
|
||||
records[i].RowNumber = (request.PageNumber - 1) * request.PageSize + i + 1;
|
||||
}
|
||||
|
||||
return new PageQueryResponse<OutOrder>()
|
||||
@ -378,7 +378,7 @@ namespace WCS.BLL.Services.Service
|
||||
return new ResponseCommon<List<OutOrderMatDetail>>
|
||||
{
|
||||
Code = 200,
|
||||
Message = "Success",
|
||||
Message = outOrder.OrderStatus.ToString(),
|
||||
Data = orderMatDetail
|
||||
};
|
||||
}
|
||||
@ -619,7 +619,7 @@ namespace WCS.BLL.Services.Service
|
||||
.WhereIF(!string.IsNullOrEmpty(outOrderDetail.MatBatch), t => t.MatBatch == outOrderDetail.MatBatch)
|
||||
.Where(t => t.IsLocked == false)//未锁定的物料
|
||||
.OrderBy(t => t.MatBatch)//先进先出
|
||||
//(t => t.MatQty)//零散料先出
|
||||
//(t => t.MatQty)//零散料先出
|
||||
.ToList();
|
||||
|
||||
//2.2按照搜索出来的库存和当前未出的数量 计算需要出的SN
|
||||
|
@ -345,7 +345,7 @@ namespace WCS.BLL.Services.Service
|
||||
//生成序号
|
||||
for (int i = 0; i < records.Count; i++)
|
||||
{
|
||||
records[i].RowNumber = (request.PageNumber - 1) * 10 + i + 1;
|
||||
records[i].RowNumber = (request.PageNumber - 1) * request.PageSize + i + 1;
|
||||
}
|
||||
|
||||
return new PageQueryResponse<StockTakingOrder>()
|
||||
@ -386,9 +386,6 @@ namespace WCS.BLL.Services.Service
|
||||
case Model.ApiModel.Stocktaking.StocktakingOrderStatus.部分盘点:
|
||||
recordsQueryable = recordsQueryable.Where(t => t.StocktakingOrderStatus == StocktakingOrderStatus.部分盘点);
|
||||
break;
|
||||
case Model.ApiModel.Stocktaking.StocktakingOrderStatus.已提交:
|
||||
recordsQueryable = recordsQueryable.Where(t => t.StocktakingOrderStatus == StocktakingOrderStatus.已提交);
|
||||
break;
|
||||
case Model.ApiModel.Stocktaking.StocktakingOrderStatus.盘点完成:
|
||||
recordsQueryable = recordsQueryable.Where(t => t.StocktakingOrderStatus == StocktakingOrderStatus.盘点完成);
|
||||
break;
|
||||
@ -397,7 +394,8 @@ namespace WCS.BLL.Services.Service
|
||||
}
|
||||
|
||||
var records = await recordsQueryable
|
||||
.OrderByDescending(t => t.CreateTime)
|
||||
.Where(t => t.StocktakingOrderStatus != StocktakingOrderStatus.已提交)
|
||||
.OrderByDescending(t => t.UpdateTime)
|
||||
.Take(40)
|
||||
.ToListAsync();
|
||||
|
||||
@ -507,6 +505,14 @@ namespace WCS.BLL.Services.Service
|
||||
Message = $"操作失败:不存在单据号为{request.StockTakingOrderNumber}的盘点单!",
|
||||
};
|
||||
}
|
||||
if (order.StocktakingOrderStatus == StocktakingOrderStatus.已提交)
|
||||
{
|
||||
return new ResponseCommon()
|
||||
{
|
||||
Code = 201,
|
||||
Message = $"操作失败:盘点单据:{request.StockTakingOrderNumber}已提交!",
|
||||
};
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -562,6 +568,10 @@ namespace WCS.BLL.Services.Service
|
||||
shelf.GoInStocktaking(matDetails, order);
|
||||
shelf.OrderNumber = order.StocktakingOrderNumber;
|
||||
});
|
||||
//更新Order
|
||||
order.UpdateTime = DateTime.Now;
|
||||
DbHelp.db.Updateable(order).ExecuteCommand();
|
||||
|
||||
//返回
|
||||
return new ResponseCommon()
|
||||
{
|
||||
@ -698,16 +708,24 @@ namespace WCS.BLL.Services.Service
|
||||
};
|
||||
}
|
||||
//返回具体的单据信息
|
||||
var stockTakinbgOrder = await DbHelp.db.Queryable<StockTakingOrderMatDetail>()
|
||||
var stockTakinOrderMatDetail = await DbHelp.db.Queryable<StockTakingOrderMatDetail>()
|
||||
.Where(t => t.StocktakingOrderId == stockTakingOrder.Id)
|
||||
.Where(t => t.MatSN == request.MatSN)
|
||||
.FirstAsync();
|
||||
return new ResponseCommon<StockTakingOrderMatDetail>()
|
||||
{
|
||||
Code = 200,
|
||||
Message = "success",
|
||||
Data = stockTakinbgOrder
|
||||
};
|
||||
if (stockTakinOrderMatDetail != null)
|
||||
return new ResponseCommon<StockTakingOrderMatDetail>()
|
||||
{
|
||||
Code = 200,
|
||||
Message = "success",
|
||||
Data = stockTakinOrderMatDetail
|
||||
};
|
||||
else
|
||||
return new ResponseCommon<StockTakingOrderMatDetail>()
|
||||
{
|
||||
Code = 201,
|
||||
Message = "不是本次盘点的物料!",
|
||||
Data = null
|
||||
};
|
||||
}
|
||||
|
||||
public async Task<ResponseBase> confirmStocktakingOrder(ConfirmStocktakingOrderRequest request)
|
||||
@ -736,6 +754,8 @@ namespace WCS.BLL.Services.Service
|
||||
DbHelp.db.Updateable(stockTakingMatDetail)
|
||||
.ExecuteCommand();
|
||||
|
||||
|
||||
|
||||
#region 发送指令 对应货架对应模组确认盘点
|
||||
//判断货架是否已进入盘点模式
|
||||
var shelf = ShelfManager.Shelves
|
||||
@ -771,6 +791,32 @@ namespace WCS.BLL.Services.Service
|
||||
#endregion
|
||||
|
||||
DbHelp.db.CommitTran();
|
||||
|
||||
#region 更新Order状态
|
||||
Task.Run(() =>
|
||||
{
|
||||
//获取Order
|
||||
var order = DbHelp.db.Queryable<StockTakingOrder>().Where(t => t.Id == stockTakingMatDetail.StocktakingOrderId).First();
|
||||
if (order != null)
|
||||
{
|
||||
var orderDetails = DbHelp.db.Queryable<StockTakingOrderMatDetail>()
|
||||
.Where(t => t.StocktakingOrderId == stockTakingMatDetail.StocktakingOrderId)
|
||||
.ToList();
|
||||
var stocktakedDetailCount = orderDetails.Where(t => t.IsStocktaking).Count();
|
||||
if (stocktakedDetailCount < orderDetails.Count && order.StocktakingOrderStatus == StocktakingOrderStatus.未盘点)
|
||||
{
|
||||
order.StocktakingOrderStatus = StocktakingOrderStatus.部分盘点;
|
||||
DbHelp.db.Updateable(order).ExecuteCommand();
|
||||
}
|
||||
else if (stocktakedDetailCount == orderDetails.Count)
|
||||
{
|
||||
order.StocktakingOrderStatus = StocktakingOrderStatus.盘点完成;
|
||||
DbHelp.db.Updateable(order).ExecuteCommand();
|
||||
}
|
||||
}
|
||||
});
|
||||
#endregion
|
||||
|
||||
return new ResponseCommon()
|
||||
{
|
||||
Code = 200,
|
||||
|
@ -36,7 +36,7 @@ namespace WCS.BLL.Services.Service
|
||||
//生成序号
|
||||
for (int i = 0; i < records.Count; i++)
|
||||
{
|
||||
records[i].RowNumber = (request.PageNumber - 1) * 10 + i + 1;
|
||||
records[i].RowNumber = (request.PageNumber - 1) * request.PageSize + i + 1;
|
||||
}
|
||||
return new PageQueryResponse<ShelfInfo>()
|
||||
{
|
||||
@ -236,8 +236,11 @@ namespace WCS.BLL.Services.Service
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
async Task<ResponseCommon<object>> IStoreInfoService.GenerateStoreInfo()
|
||||
/// <summary>
|
||||
/// TODO HardCode 根据模组信息生成库位
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public async Task<ResponseCommon<object>> GenerateStoreInfo()
|
||||
{
|
||||
var shelfInfo = await DbHelp.db.Queryable<ShelfInfo>().Where(t => t.ShelfCode == "C04-1").FirstAsync();
|
||||
var ModuleInfos = await DbHelp.db.Queryable<ModuleInfo>().Where(t => t.ShelfId == shelfInfo.Id).ToListAsync();
|
||||
@ -262,7 +265,93 @@ namespace WCS.BLL.Services.Service
|
||||
}
|
||||
});
|
||||
|
||||
return new ResponseCommon<object>() { Message = "111"};
|
||||
return new ResponseCommon<object>() { Message = "111" };
|
||||
}
|
||||
|
||||
#region 模组管理
|
||||
public async Task<PageQueryResponse<ModuleInfo>> GetModules(GetModulesRequest request)
|
||||
{
|
||||
try
|
||||
{
|
||||
var recordsQueryable = DbHelp.db.Queryable<ModuleInfo>()
|
||||
.WhereIF(!string.IsNullOrEmpty(request.ModuleCode), t => t.ModuleCode.Contains(request.ModuleCode))
|
||||
.WhereIF(!string.IsNullOrEmpty(request.ShelfCode), t => t.ShelfCode.Contains(request.ShelfCode));
|
||||
var totalCount = await recordsQueryable.CountAsync();
|
||||
var records = await recordsQueryable
|
||||
.Skip((request.PageNumber - 1) * request.PageSize).Take(request.PageSize)
|
||||
.ToListAsync();
|
||||
//生成序号
|
||||
for (int i = 0; i < records.Count; i++)
|
||||
{
|
||||
records[i].RowNumber = (request.PageNumber - 1) * request.PageSize + i + 1;
|
||||
}
|
||||
return new PageQueryResponse<ModuleInfo>()
|
||||
{
|
||||
Code = 200,
|
||||
Message = $"success",
|
||||
Data = new PageQueryResponseData<ModuleInfo>()
|
||||
{
|
||||
TotalCount = totalCount,
|
||||
MaxPage = request.PageSize == 0 ? 0 : (int)Math.Ceiling((decimal)totalCount / request.PageSize),
|
||||
Count = records.Count,
|
||||
Lists = records.ToList()
|
||||
}
|
||||
};
|
||||
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return new PageQueryResponse<ModuleInfo>()
|
||||
{
|
||||
Code = 300,
|
||||
Message = $"操作失败:{ex.Message}",
|
||||
};
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region 库位管理
|
||||
public async Task<PageQueryResponse<StoreInfo>> GetStores(GetStoresRequest request)
|
||||
{
|
||||
try
|
||||
{
|
||||
var recordsQueryable = DbHelp.db.Queryable<StoreInfo>()
|
||||
.WhereIF(!string.IsNullOrEmpty(request.ShelfCode), t => t.ShelfCode.Contains(request.ShelfCode))
|
||||
.WhereIF(!string.IsNullOrEmpty(request.ModuleCode), t => t.ModuleCode.Contains(request.ModuleCode))
|
||||
.WhereIF(!string.IsNullOrEmpty(request.StoreCode), t => t.StoreCode.Contains(request.StoreCode))
|
||||
.WhereIF(!string.IsNullOrEmpty(request.CurrentMatSN), t => t.CurrentMatSn.Contains(request.CurrentMatSN))
|
||||
;
|
||||
var totalCount = await recordsQueryable.CountAsync();
|
||||
var records = await recordsQueryable
|
||||
.Skip((request.PageNumber - 1) * request.PageSize).Take(request.PageSize)
|
||||
.ToListAsync();
|
||||
//生成序号
|
||||
for (int i = 0; i < records.Count; i++)
|
||||
{
|
||||
records[i].RowNumber = (request.PageNumber - 1) * request.PageSize + i + 1;
|
||||
}
|
||||
return new PageQueryResponse<StoreInfo>()
|
||||
{
|
||||
Code = 200,
|
||||
Message = $"success",
|
||||
Data = new PageQueryResponseData<StoreInfo>()
|
||||
{
|
||||
TotalCount = totalCount,
|
||||
MaxPage = request.PageSize == 0 ? 0 : (int)Math.Ceiling((decimal)totalCount / request.PageSize),
|
||||
Count = records.Count,
|
||||
Lists = records.ToList()
|
||||
}
|
||||
};
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return new PageQueryResponse<StoreInfo>()
|
||||
{
|
||||
Code = 300,
|
||||
Message = $"操作失败:{ex.Message}",
|
||||
};
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
@ -17,6 +17,9 @@ namespace WCS.BLL
|
||||
|
||||
public bool IsOnline { get; set; } = false;
|
||||
|
||||
//第一次连接是否已连接
|
||||
public bool IsFirstConnected { get; set; } = false;
|
||||
|
||||
//can模块协议前缀
|
||||
public readonly byte[] Prefix = new byte[] { 0x08, 0x00, 0x00 };
|
||||
//can模块协议前缀长度
|
||||
@ -76,7 +79,6 @@ namespace WCS.BLL
|
||||
tcpClient.Received += (client, e) =>
|
||||
{
|
||||
var data = e.ByteBlock.Buffer.Take((int)e.ByteBlock.Length).ToArray();
|
||||
//e.ByteBlock.Clear();
|
||||
Logs.Write($"校验发送接收,收到数据" + BitConverter.ToString(data));
|
||||
var len = data.Length;
|
||||
for (int index = 0; index < data.Length - PreFixLength; index++)
|
||||
@ -106,7 +108,7 @@ namespace WCS.BLL
|
||||
}
|
||||
Logs.Write($"校验发送接收处理完毕" + BitConverter.ToString(data));
|
||||
return null;
|
||||
|
||||
|
||||
};
|
||||
|
||||
tcpClient.Connected += (client, e) =>
|
||||
@ -114,7 +116,7 @@ namespace WCS.BLL
|
||||
this.IsOnline = true;
|
||||
return EasyTask.CompletedTask;
|
||||
};
|
||||
|
||||
|
||||
tcpClient.Disconnected += (client, e) =>
|
||||
{
|
||||
this.IsOnline = false;
|
||||
@ -128,12 +130,12 @@ namespace WCS.BLL
|
||||
{
|
||||
try
|
||||
{
|
||||
//TODO如果指令未回应n次 则取消重发
|
||||
//TODO如果指令已发两次 则取消重发
|
||||
Console.WriteLine(Thread.CurrentThread.ManagedThreadId);
|
||||
await Task.Delay(100);
|
||||
if (MessageList.Count > 0)
|
||||
{
|
||||
var failedMessage = MessageList.Where(t => t.Value.SendTimes >= 3).ToList();
|
||||
var failedMessage = MessageList.Where(t => t.Value.SendTimes >= 2).ToList();
|
||||
foreach (var message in failedMessage)
|
||||
{
|
||||
Logs.Write(BitConverter.ToString(message.Value.Message) +
|
||||
@ -152,15 +154,12 @@ namespace WCS.BLL
|
||||
await Task.Delay(10);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
catch (Exception ex)
|
||||
|
Reference in New Issue
Block a user