1.出库单据、生成出库单据、计算物料时增加货架类型用于区分信息化货架和智能货架的物料 实现分开出

This commit is contained in:
hehaibing-1996
2024-05-21 10:32:52 +08:00
parent 649e22b4ce
commit b2f9c7cc22
48 changed files with 976 additions and 125 deletions

View File

@ -130,7 +130,7 @@ namespace WCS.BLL.Services.Service
}
IShelfBase shelf = null;
if (!request.IsSingleLightIn)
if (!request.SingleLightIn)
{
//获取货架
shelf = ShelfManager.Shelves.Where(t => t.ShelfCode == request.ShelfCode).FirstOrDefault();
@ -164,13 +164,13 @@ namespace WCS.BLL.Services.Service
{
materialBar = request.MatSn
};
var Result = ApiHelp.GetDataFromHttp<ResponseCommon<List<queryByBarResponse>>>("http://192.168.2.23:9213/integrate/instock/queryBybar", body, "POST");
var Result = ApiHelp.GetDataFromHttp<ResponseCommon<List<queryByBarResponse>>>("http://192.168.2.23:9213/integrate/instock/queryBybar", body, "POST", true);
//查询到物料信息
if (Result != null && Result.Code == 200 && Result.Data != null && Result.Data.Count > 0)
{
var data = Result.Data.First();
if (!request.IsSingleLightIn && shelf != null)
if (!request.SingleLightIn && shelf != null)
shelf.InStoreData = new MatInfoResponse()
{
materialBar = data.materialBar,
@ -239,7 +239,7 @@ namespace WCS.BLL.Services.Service
if (matInfo != null)
{
//TODO 改成wcs的实体
if (!request.IsSingleLightIn && shelf != null)
if (!request.SingleLightIn && shelf != null)
shelf.InStoreData = new MatInfoResponse()
{
materialBar = matInfo.MatSn,
@ -468,7 +468,7 @@ namespace WCS.BLL.Services.Service
data1[5] = 0x03;
data1[6] = 0x02;
data1[7] = 0x02;
byte[] senddata1 = Tool.Helper.Crc16(data1,data1.Length,false);
byte[] senddata1 = Tool.Helper.Crc16(data1, data1.Length, false);
tCPClient.Send(senddata1); //报警灯短亮一次
byte[] data2 = new byte[8];
@ -489,7 +489,7 @@ namespace WCS.BLL.Services.Service
Message = $"入库成功!",
Data = rcs.Data,
};
}
}
}

View File

@ -128,16 +128,16 @@ namespace WCS.BLL.Services.Service
var inventortyDetails = await DbHelp.db.Queryable<InventoryDetail>()
.WhereIF(!string.IsNullOrEmpty(request.MatName), t => t.MatName.Contains(request.MatName))
.WhereIF(!string.IsNullOrEmpty(request.MatCode), t => t.MatCode.Contains(request.MatCode))
.WhereIF(!string.IsNullOrEmpty(request.MatBatch), t => t.MatBatch.Contains(request.MatBatch))
.Where(t => t.StoreInfo.ShelfTypeId == request.ShelfTypeId)
.GroupBy(t => t.MatCode)
.GroupBy(t => t.MatBatch)
.Select(t => new MatInventorySummaryModel
{
MatCode = t.MatCode,
MatName = t.MatName,
MatBatch = t.MatBatch,
MatSpec = t.MatSpec,
MatCustomer = t.MatCustomer,
MatSupplier = t.MatSupplier,
MatBatch = t.MatBatch,
TotalQty = SqlFunc.AggregateSum(t.MatQty)
})
.ToListAsync();

View File

@ -1,19 +1,12 @@
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
using TouchSocket.Sockets;
using WCS.BLL.Config;
using WCS.BLL.DbModels;
using WCS.BLL.Manager;
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.MatInventoryDetail;
using WCS.Model.ApiModel.OutStore;
namespace WCS.BLL.Services.Service
@ -23,6 +16,53 @@ namespace WCS.BLL.Services.Service
public OutstoreService()
{
}
public async Task<ResponseCommon<List<MatInventorySummaryModel>>> importMat(List<OutImportMatModel> list)
{
//数据校验
if (list == null || list.Count == 0)
{
return new ResponseCommon<List<MatInventorySummaryModel>>()
{
Code = 201,
Message = "导入失败:导入文件中没有内容!"
};
}
//需求数量
var errorCount = list.Where(t => t. <= 0).ToList();
if (errorCount != null && errorCount.Count > 0)
{
return new ResponseCommon<List<MatInventorySummaryModel>>()
{
Code = 201,
Message = "导入失败需求数量需要大于0"
};
}
//每一个物料进行搜索库存
var returnList = new List<MatInventorySummaryModel>();
foreach (var item in list)
{
var inventoryCount = await DbHelp.db.Queryable<InventoryDetail>()
.Where(t => t.MatCode == item.)
.Where(t => t.MatBatch == item.)
.Where(t => t.IsLocked == false)
.SumAsync(t => t.MatQty);
var info = inventoryCount < item. ? "库存数量小于需求数量" : string.Empty;
returnList.Add(new MatInventorySummaryModel()
{
MatCode = item.,
MatName = item.,
MatBatch = item.,
NeedQty = item.,
TotalQty = inventoryCount,
Info = info
});
}
return new ResponseCommon<List<MatInventorySummaryModel>>()
{
Code = 200,
Data = returnList
};
}
public async Task<ResponseBase> SysOutOrderByMatCode(SysOutOrderByMatCodeRequest request)
{
@ -35,6 +75,24 @@ namespace WCS.BLL.Services.Service
Message = "出库单据同步失败:缺少需要出库的物料类型!"
};
}
//补齐货架类型名称
if (string.IsNullOrEmpty(request.ShelfTypeName))
{
var shelfType = await DbHelp.db.Queryable<ShelfTypeInfo>()
.Where(t => t.Id == request.ShelfTypeId)
.FirstAsync();
if (shelfType == null)
{
return new ResponseBase()
{
Code = 201,
Message = $"出库单据同步失败缺少必要参数ShelfTypeId"
};
}
else
request.ShelfTypeName = shelfType.ShelfTypeName;
}
//保存数据
await DbHelp.db.BeginTranAsync();
try
@ -44,6 +102,8 @@ namespace WCS.BLL.Services.Service
OrderNumber = request.OrderNumber,
OrderSource = request.OrderSource,
OrderType = request.OrderType,
ShelfTypeId = request.ShelfTypeId,
ShelfTypeName = request.ShelfTypeName,
SyncType = SyncTypeEnum.ByMatCode,
CreateUser = request.UserName,
};
@ -645,7 +705,8 @@ namespace WCS.BLL.Services.Service
.Where(t => t.MatCode == outOrderDetail.MatCode)
.WhereIF(!string.IsNullOrEmpty(outOrderDetail.MatBatch), t => t.MatBatch == outOrderDetail.MatBatch)
.Where(t => t.IsLocked == false)//未锁定的物料
.OrderBy(t => t.MatBatch)//先进先出
.Where(t => t.StoreInfo.ShelfTypeId == order.ShelfTypeId)
.OrderBy(t => t.MatBatch)//按批次先进先出
//(t => t.MatQty)//零散料先出
.ToList();
@ -873,7 +934,7 @@ namespace WCS.BLL.Services.Service
}
DbHelp.db.Updateable<OrderLight>().SetColumns(it => it.OrderNumber == null).Where(it => it.OrderNumber == request.OrderNumber).ExecuteCommand();
//灭灯
return new ResponseCommon()
{
Code = 200,
@ -911,11 +972,11 @@ namespace WCS.BLL.Services.Service
ior.OperateUser = request.userName;
ior.OperateTime = DateTime.Now;
//保存出库记录
int count= DbHelp.db.Insertable(ior).ExecuteCommand();
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();
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();
@ -926,5 +987,7 @@ namespace WCS.BLL.Services.Service
Data = null
};
}
}
}