From c8ce453f742ac8dc60c137c2d7e78e9ac60460dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=B6=E5=9D=A4?= <997828819@qq.com> Date: Fri, 17 May 2024 13:29:23 +0800 Subject: [PATCH] 1 --- WCS.BLL/DbModels/OrderLight.cs | 38 +++++ WCS.BLL/Services/IService/IOutstoreService.cs | 9 +- WCS.BLL/Services/Service/InstoreService.cs | 3 +- WCS.BLL/Services/Service/OutstoreService.cs | 134 +++++++++++++++++- .../OutStore/OutOrderMatDetailModelSingle.cs | 22 +++ WCS.WebApi/Controllers/OutstoreController.cs | 7 +- 6 files changed, 201 insertions(+), 12 deletions(-) create mode 100644 WCS.BLL/DbModels/OrderLight.cs create mode 100644 WCS.Model/ApiModel/OutStore/OutOrderMatDetailModelSingle.cs diff --git a/WCS.BLL/DbModels/OrderLight.cs b/WCS.BLL/DbModels/OrderLight.cs new file mode 100644 index 0000000..21fa02a --- /dev/null +++ b/WCS.BLL/DbModels/OrderLight.cs @@ -0,0 +1,38 @@ +using SqlSugar; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using WCS.Model.ApiModel.OutStore; + +namespace WCS.BLL.DbModels +{ + [SugarTable("order_light")] + public class OrderLight + { + /// + /// 主键 自增Id + /// + [SugarColumn(ColumnName = "id", IsPrimaryKey = true, IsNullable = false, IsIdentity = true)] + public int Id { get; set; } + + /// + /// 出库单据号 + /// + [SugarColumn(ColumnName = "order_number", Length = 50, IsNullable = false, ColumnDescription = "出库单据号")] + public string OrderNumber { get; set; } + + /// + /// 单据执行状态: 待发料, 开始发料, 暂停发料, 发料完成 + /// + [SugarColumn(ColumnName = "order_exe_status", IsNullable = true, ColumnDescription = "执行状态:\t待发料,\t开始发料,\t暂停发料,\t发料完成")] + public OutOrderExeStatus OutOrderExeStatus { get; set; } = OutOrderExeStatus.待发料; + + /// + /// 单灯颜色 + /// + [SugarColumn(ColumnName = "lightcolor", Length = 50, IsNullable = false, ColumnDescription = "单灯颜色")] + public string LightColor { get; set; } + } +} diff --git a/WCS.BLL/Services/IService/IOutstoreService.cs b/WCS.BLL/Services/IService/IOutstoreService.cs index bcff720..8726265 100644 --- a/WCS.BLL/Services/IService/IOutstoreService.cs +++ b/WCS.BLL/Services/IService/IOutstoreService.cs @@ -4,6 +4,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; using WCS.Model; +using WCS.Model.ApiModel.OutStore; namespace WCS.BLL.Services.IService { @@ -21,10 +22,14 @@ namespace WCS.BLL.Services.IService public Task GetOutOrderMatDetail(GetOutOrderDetailRequest request); - public Task GoInOutstore(GetOutOrderDetailRequest request); + public Task GoInOutstore(GetOutOrderDetailRequest request); + + public Task GoOutOutstore(GetOutOrderDetailRequest request); public Task GoInOutstoreSingle(GetOutOrderDetailRequest request); - public Task GoOutOutstore(GetOutOrderDetailRequest request); + public Task SingleLightConfirmOutstore(OutOrderMatDetailModelSingle request); + + public Task GoOutOutstoreSingle(GetOutOrderDetailRequest request); } } diff --git a/WCS.BLL/Services/Service/InstoreService.cs b/WCS.BLL/Services/Service/InstoreService.cs index 2436126..991a12e 100644 --- a/WCS.BLL/Services/Service/InstoreService.cs +++ b/WCS.BLL/Services/Service/InstoreService.cs @@ -12,6 +12,7 @@ using WCS.BLL.Tool.Api.ApiModel; using WCS.DAL.Db; using WCS.DAL.DbModels; using WCS.Model; +using WCS.Model.ApiModel.InOutRecord; namespace WCS.BLL.Services.Service { @@ -439,7 +440,7 @@ namespace WCS.BLL.Services.Service ior.MatSupplier = matSnListDetail.MatSupplier; ior.StoreCode = request.ShelfCode; ior.StoreId = SI[0].Id; - ior.Direction = 0; + ior.Direction = DirectionEnum.入库; ior.OperateTime = DateTime.Now; ior.OperateUser = request.UserName; int count1 = DbHelp.db.Insertable(ior).ExecuteCommand(); diff --git a/WCS.BLL/Services/Service/OutstoreService.cs b/WCS.BLL/Services/Service/OutstoreService.cs index 076d6e0..e10f390 100644 --- a/WCS.BLL/Services/Service/OutstoreService.cs +++ b/WCS.BLL/Services/Service/OutstoreService.cs @@ -2,6 +2,7 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Runtime.InteropServices; using System.Text; using System.Threading.Tasks; using TouchSocket.Sockets; @@ -12,6 +13,7 @@ using WCS.BLL.Services.IService; using WCS.DAL.Db; using WCS.DAL.DbModels; using WCS.Model; +using WCS.Model.ApiModel.InOutRecord; using WCS.Model.ApiModel.OutStore; namespace WCS.BLL.Services.Service @@ -551,7 +553,31 @@ namespace WCS.BLL.Services.Service order.OutOrderExeStatus = OutOrderExeStatus.开始发料; DbHelp.db.Updateable(order).ExecuteCommand(); } - //返回需求明细 + //获取亮灯颜色 + List UsedColor = new List(); + string LightColor = ""; + List ol = DbHelp.db.Queryable().OrderBy(it => it.Id, OrderByType.Asc).ToList(); + foreach (OrderLight orderLight in ol) + { + UsedColor.Add(orderLight.LightColor); + if (orderLight.OrderNumber == request.OrderNumber) + { + LightColor = orderLight.LightColor; + break; + } + } + if (LightColor == "") + { + foreach (OrderLight orderLight in ol) + { + if (orderLight.OrderNumber == null) + { + LightColor = orderLight.LightColor; + DbHelp.db.Updateable().SetColumns(it => it.OrderNumber, request.OrderNumber).Where(it => it.LightColor == LightColor).ExecuteCommand(); + break; + } + } + } //获取出库需求 List outorderdetal = DbHelp.db.Queryable() .WhereIF(request.OrderId != 0, t => t.OrderId == request.OrderId) @@ -564,17 +590,18 @@ namespace WCS.BLL.Services.Service { OutDetail od = new OutDetail(); od.OrderId = outdetail.OrderId; - od.OrderNumber= outdetail.OrderNumber; - od.MatCode=outdetail.MatCode; - od.MatBatch=outdetail.MatBatch; + od.OrderNumber = outdetail.OrderNumber; + od.MatCode = outdetail.MatCode; + od.MatBatch = outdetail.MatBatch; od.ReqQty = outdetail.ReqQty; od.CreateTime = outdetail.CreateTime; od.CreateUser = outdetail.CreateUser; od.MatName = outdetail.MatName; od.OutQty = outdetail.OutQty; - od.LightColor = ""; + od.LightColor = LightColor; orcs.Data.Add(od); } + //亮灯 //返回 return new OutResponseCommonSingle() @@ -619,7 +646,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 @@ -804,5 +831,100 @@ namespace WCS.BLL.Services.Service }; } + + public async Task GoOutOutstoreSingle(GetOutOrderDetailRequest request) + { + + //获取出库单 + var order = await DbHelp.db.Queryable() + .WhereIF(request.OrderId != 0, t => t.Id == request.OrderId) + .WhereIF(!string.IsNullOrEmpty(request.OrderNumber), t => t.OrderNumber == request.OrderNumber) + .FirstAsync(); + if (order == null) + { + return new ResponseCommon() + { + Code = 201, + Message = $"不存在对应的出库单据{request.OrderNumber}!", + Data = null + }; + } + + //判断出库状态 + bool isComplete = true; + List ood = DbHelp.db.Queryable().Where(it => it.OrderNumber == request.OrderNumber).ToList(); + foreach (OutOrderDetail detail in ood) + { + if (detail.ReqQty > detail.OutQty) + { + isComplete = false; + break; + } + } + if (isComplete == false) + { + order.OutOrderExeStatus = OutOrderExeStatus.暂停发料; + DbHelp.db.Updateable(order).ExecuteCommand(); + } + else + { + order.OutOrderExeStatus = OutOrderExeStatus.发料完成; + DbHelp.db.Updateable(order).ExecuteCommand(); + } + DbHelp.db.Updateable().SetColumns(it => it.OrderNumber == null).Where(it => it.OrderNumber == request.OrderNumber).ExecuteCommand(); + //灭灯 + + return new ResponseCommon() + { + Code = 200, + Message = "Success", + Data = null + }; + + } + + public async Task SingleLightConfirmOutstore(OutOrderMatDetailModelSingle request) + { + InOutRecord ior = new InOutRecord(); + List id = DbHelp.db.Queryable().Where(it => it.MatSN == request.MatSn).ToList(); + if (id.Count == 0) + { + return new ResponseCommon() + { + Code = 201, + Message = $"此SN不在库存中{request.MatSn}!", + 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().Where(it => it.MatSN == request.MatSn).ExecuteCommand(); + //更新需求表 + List odd = DbHelp.db.Queryable().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() + { + Code = 200, + Message = $"出库成功", + Data = null + }; + } } } diff --git a/WCS.Model/ApiModel/OutStore/OutOrderMatDetailModelSingle.cs b/WCS.Model/ApiModel/OutStore/OutOrderMatDetailModelSingle.cs new file mode 100644 index 0000000..5a1ab48 --- /dev/null +++ b/WCS.Model/ApiModel/OutStore/OutOrderMatDetailModelSingle.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace WCS.Model.ApiModel.OutStore +{ + public class OutOrderMatDetailModelSingle + { + public int orderId { get; set; } + public string orderNumber { get; set; } + public string MatSn { get; set; } + public string MatCode { get; set; } + public string MatName { get; set; } + public string MatSpec { get; set; } + public string MatBatch { get; set; } + public int MatQty { get; set; } + public string MatCustomer { get; set; } + public string MatSupplier { get; set; } + public int Qty { get; set; } + public string userName { get; set; } + } +} diff --git a/WCS.WebApi/Controllers/OutstoreController.cs b/WCS.WebApi/Controllers/OutstoreController.cs index d370fe7..217e661 100644 --- a/WCS.WebApi/Controllers/OutstoreController.cs +++ b/WCS.WebApi/Controllers/OutstoreController.cs @@ -4,6 +4,7 @@ using WCS.BLL.Manager; using WCS.BLL.Services.IService; using WCS.BLL.Services.Service; using WCS.Model; +using WCS.Model.ApiModel.OutStore; namespace WebApi.Controllers { @@ -252,7 +253,7 @@ namespace WebApi.Controllers //TODO try { - return await _outstoreService.GoOutOutstore(request); + return await _outstoreService.GoOutOutstoreSingle(request); } catch (Exception ex) { @@ -271,12 +272,12 @@ namespace WebApi.Controllers /// [Route("singleLightConfirmOutstore")] [HttpPost(Name = "singleLightConfirmOutstore")] - public async Task singleLightConfirmOutstore(GetOutOrderDetailRequest request) + public async Task singleLightConfirmOutstore(OutOrderMatDetailModelSingle request) { //TODO try { - return await _outstoreService.GoOutOutstore(request); + return await _outstoreService.SingleLightConfirmOutstore(request); } catch (Exception ex) {