1.增加手动自检功能,主页增加状态显示

This commit is contained in:
hehaibing-1996
2024-06-11 14:03:06 +08:00
parent a87a93ea11
commit 95437c2ccf
24 changed files with 576 additions and 123 deletions

View File

@ -3,6 +3,6 @@ namespace WCS.BLL.Services.IService
{
public interface IHomerService
{
}
}

View File

@ -21,6 +21,7 @@ namespace WCS.BLL.Services.IService
public Task<ResponseBase> GetOutOrderListByStatus(GetOutOrderListByStatusRequest request);
public Task<ResponseBase> GetOutOrderDetail(GetOutOrderDetailRequest request);
public Task<ResponseBase> GetOutOrderDetailSingleLight(GetOutOrderDetailRequest request);
public Task<ResponseBase> GetOutOrderMatDetail(GetOutOrderDetailRequest request);

View File

@ -12,5 +12,7 @@ namespace WCS.BLL.Services.IService
public interface ISelfCheckService
{
public Task<ResponseBase> StartSelfCheckByShelfCode(StartSelfCheckByShelfCodeRequest request);
public Task<ResponseBase> StartSelfCheckByGroupName(List<string> GroupNames);
}
}

View File

@ -562,6 +562,74 @@ namespace WCS.BLL.Services.Service
};
}
/// <summary>
/// 单灯查询物料明细 PDA要求返回数据种data需要增加一层details
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
public async Task<ResponseBase> GetOutOrderDetailSingleLight(GetOutOrderDetailRequest request)
{
OutOrder outOrder = null;
#region
if (request.OrderId != 0)
{
outOrder = await DbHelp.db.Queryable<OutOrder>().Where(t => t.Id == request.OrderId).FirstAsync();
if (outOrder == null)
{
return new ResponseCommon()
{
Code = 201,
Message = $"查询失败不存在Id为{request.OrderId}的出库单!",
};
}
}
else if (!string.IsNullOrEmpty(request.OrderNumber))
{
outOrder = await DbHelp.db.Queryable<OutOrder>().Where(t => t.OrderNumber == request.OrderNumber)
.FirstAsync();
if (outOrder == null)
{
return new ResponseCommon()
{
Code = 201,
Message = $"查询失败:不存在出库单据号为{request.OrderNumber}的出库单!",
};
}
}
else
{
return new ResponseCommon()
{
Code = 201,
Message = $"查询失败:缺少必要参数!",
};
}
#endregion
#region
var orderDetailTask = DbHelp.db.Queryable<OutOrderDetail>()
.Where(t => t.OrderId == outOrder.Id)
.ToListAsync();
var orderDetail = await orderDetailTask;
//生成序号
for (int i = 0; i < orderDetail.Count; i++)
{
orderDetail[i].RowNumber = i + 1;
}
#endregion
return new ResponseCommonModify<OutOrderDetail>()
{
Code = 200,
Message = "Success",
Data = new ResponseCommonDataDetail<OutOrderDetail>
{
Details = orderDetail
}
};
}
public async Task<ResponseBase> GetOutOrderMatDetail(GetOutOrderDetailRequest request)
{
OutOrder outOrder = null;
@ -925,7 +993,7 @@ namespace WCS.BLL.Services.Service
return new OutResponseCommonSingle()
{
Code = 200,
Message = "Success",
Message = LightColor,
Data = orcs.Data
};
}
@ -1296,48 +1364,92 @@ namespace WCS.BLL.Services.Service
public async Task<ResponseBase> SingleLightConfirmOutstore(OutOrderMatDetailModelSingle request)
{
InOutRecord ior = new InOutRecord();
List<InventoryDetail> id = DbHelp.db.Queryable<InventoryDetail>().Where(it => it.MatSN == request.MatSn).ToList();
if (id.Count == 0)
try
{
//单据校验
var order = await DbHelp.db.Queryable<OutOrder>()
.Where(it => it.Id == request.OrderId)
.Where(it => it.OrderNumber == request.OrderNumber)
.FirstAsync();
if (order == null)
{
return new ResponseCommon()
{
Code = 201,
Message = $"系统不存在单据[{request.OrderNumber}]!",
Data = null
};
}
//物料校验
var invetoryDetail = await DbHelp.db.Queryable<InventoryDetail>()
.Where(it => it.Id == request.MatId)
.Where(it => it.MatSN == request.MatSn)
.FirstAsync();
if (invetoryDetail == null)
{
return new ResponseCommon()
{
Code = 201,
Message = $"库存中不存在物料[{request.MatSn}]!",
Data = null
};
}
//物料需求明细校验
var outOrderDetail = await DbHelp.db.Queryable<OutOrderDetail>().Where(it => it.OrderNumber == request.OrderNumber)
.Where(it => it.MatCode == invetoryDetail.MatCode)
.FirstAsync();
if (outOrderDetail == null)
{
return new ResponseCommon()
{
Code = 201,
Message = $"单据[{request.OrderNumber}]需求不包含物料[{invetoryDetail.MatCode}]!",
Data = null
};
}
var inOutRecord = new InOutRecord();
inOutRecord.StoreId = invetoryDetail.StoreId;
inOutRecord.StoreCode = invetoryDetail.StoreCode;
inOutRecord.MatSN = invetoryDetail.MatSN;
inOutRecord.MatCode = invetoryDetail.MatCode;
inOutRecord.MatName = invetoryDetail.MatName;
inOutRecord.MatSpec = invetoryDetail.MatSpec;
inOutRecord.MatBatch = invetoryDetail.MatBatch;
inOutRecord.MatQty = invetoryDetail.MatQty;
inOutRecord.MatSupplier = invetoryDetail.MatSupplier;
inOutRecord.MatCustomer = invetoryDetail.MatCustomer;
inOutRecord.OrderNumber = order.OrderNumber;
inOutRecord.Direction = DirectionEnum.;
inOutRecord.OperateUser = request.UserName;
inOutRecord.OperateTime = DateTime.Now;
//保存出库记录
int count = DbHelp.db.Insertable(inOutRecord).ExecuteCommand();
//删除库存
DbHelp.db.Deleteable<InventoryDetail>().Where(it => it.MatSN == request.MatSn).ExecuteCommand();
//更新需求表
outOrderDetail.OutQty += invetoryDetail.MatQty;
DbHelp.db.Updateable(outOrderDetail).ExecuteCommand();
return new ResponseCommon()
{
Code = 201,
Message = $"此SN不在库存中{request.MatSn}!",
Code = 200,
Message = $"出库成功",
Data = null
};
}
ior.StoreId = id[0].StoreId;
ior.StoreCode = id[0].StoreCode;
ior.MatSN = request.MatSn;
ior.MatCode = request.MatCode;
ior.MatName = request.MatName;
ior.MatSpec = request.MatSpec;
ior.MatBatch = request.MatBatch;
ior.MatQty = request.Qty;
ior.MatSupplier = request.MatSupplier;
ior.MatCustomer = request.MatCustomer;
ior.OrderNumber = request.orderNumber;
ior.Direction = DirectionEnum.;
ior.OperateUser = request.userName;
ior.OperateTime = DateTime.Now;
//保存出库记录
int count = DbHelp.db.Insertable(ior).ExecuteCommand();
//删除库存
DbHelp.db.Deleteable<InventoryDetail>().Where(it => it.MatSN == request.MatSn).ExecuteCommand();
//更新需求表
List<OutOrderDetail> odd = DbHelp.db.Queryable<OutOrderDetail>().Where(it => it.OrderNumber == request.orderNumber).Where(it => it.MatCode == request.MatCode).ToList();
odd[0].OutQty += request.Qty;
DbHelp.db.Updateable(odd[0]).ExecuteCommand();
return new ResponseCommon()
catch (Exception ex)
{
Code = 200,
Message = $"出库成功",
Data = null
};
return new ResponseCommon()
{
Code = 300,
Message = $"出库发生异常!",
Data = null
};
}
}
}
}

View File

@ -7,6 +7,7 @@ using WCS.BLL.Manager;
using WCS.BLL.Services.IService;
using WCS.Model;
using WCS.Model.ApiModel.SelfCheck;
using WCS.Model.WebSocketModel;
namespace WCS.BLL.Services.Service
{
@ -42,5 +43,76 @@ namespace WCS.BLL.Services.Service
Message = $"货架{string.Join(",", request.ShelfCodes)}已开始自检!",
};
}
public async Task<ResponseBase> StartSelfCheckByGroupName(List<string> GroupNames)
{
if (GroupNames == null || GroupNames.Count == 0)
{
return new ResponseCommon()
{
Code = 201,
Message = $"参数为空!",
};
}
//获取货架
var shelfs = ShelfManager.Shelves
.Where(t => GroupNames.Contains(t.GroupName))
.ToList();
var cleintIps = shelfs.Select(t => t.ClientIp).Distinct().ToList();
foreach (var ip in cleintIps)
{
var currentIdShelfs = shelfs.Where(t => t.ClientIp == ip)
.ToList();
Task.Run(() =>
{
foreach(var shelf in currentIdShelfs)
{
Task.Run(() =>
{
var warningModel = new WebSocketMessageModel()
{
IsWarning = false,
ClientIsReceived = true,
WarningType = WarningTypeEnum.,
StoreId = 0,
StoreCode = "",
ShelfCode = shelf.ShelfCode,
ShelfId = shelf.ShelfId,
ClientIp = shelf.WebSocketIpAddress,
WarningMessage = $"货架【{shelf.ShelfCode}】开始自检"
};
WarningManager.SendWarning(warningModel);
});
shelf.ShelfCheck();
Task.Run(() =>
{
var warningModel = new WebSocketMessageModel()
{
IsWarning = false,
ClientIsReceived = true,
WarningType = WarningTypeEnum.,
StoreId = 0,
StoreCode = "",
ShelfCode = shelf.ShelfCode,
ShelfId = shelf.ShelfId,
ClientIp = shelf.WebSocketIpAddress,
WarningMessage = $"货架【{shelf.ShelfCode}】已完成自检"
};
WarningManager.SendWarning(warningModel);
});
Thread.Sleep(10);
}
});
}
return new ResponseCommon()
{
Code = 200,
Message = $"已成功开始自检!",
};
}
}
}