先进先出
This commit is contained in:
@@ -26,7 +26,7 @@ namespace ZR.Service.mes.wms
|
||||
[AppService(ServiceType = typeof(IWmOutOrderService), ServiceLifetime = LifeTime.Transient)]
|
||||
public class WmOutOrderService : BaseService<WmOutOrder>, IWmOutOrderService
|
||||
{
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 查询出货单(物料+客户)列表
|
||||
@@ -38,9 +38,9 @@ namespace ZR.Service.mes.wms
|
||||
var predicate = Expressionable.Create<WmOutOrder>()
|
||||
.AndIF(!string.IsNullOrEmpty(parm.ShipmentNum), it => it.ShipmentNum.Contains(parm.ShipmentNum))
|
||||
.AndIF(!string.IsNullOrEmpty(parm.CustomNo), it => it.CustomNo.Contains(parm.CustomNo))
|
||||
.AndIF(parm.Year>0, it => it.Year == parm.Year)
|
||||
.AndIF(parm.Week>0, it => it.Year == parm.Week)
|
||||
.AndIF(parm.Date>0, it => it.Year == parm.Date)
|
||||
.AndIF(parm.Year > 0, it => it.Year == parm.Year)
|
||||
.AndIF(parm.Week > 0, it => it.Year == parm.Week)
|
||||
.AndIF(parm.Date > 0, it => it.Year == parm.Date)
|
||||
;
|
||||
var response = Queryable()
|
||||
.Where(predicate.ToExpression())
|
||||
@@ -147,11 +147,11 @@ namespace ZR.Service.mes.wms
|
||||
/// </summary>
|
||||
/// <param name="primarys"></param>
|
||||
/// <returns></returns>
|
||||
public int Delete_fk_matrial(string[] primarys)
|
||||
public int Delete_fk_matrial(string[] primarys)
|
||||
{
|
||||
if(primarys.Count()>0)
|
||||
if (primarys.Count() > 0)
|
||||
{
|
||||
for(int i = 0; i < primarys.Length; i++)
|
||||
for (int i = 0; i < primarys.Length; i++)
|
||||
{
|
||||
Context.Deleteable<WmMaterialOutorder>().Where(it => it.FkOutorderId == primarys[i]).ExecuteCommand();
|
||||
}
|
||||
@@ -223,7 +223,7 @@ namespace ZR.Service.mes.wms
|
||||
|
||||
List<WmMaterial> materialList = Context.Queryable<WmMaterial>()
|
||||
.Where(predicate.ToExpression())
|
||||
|
||||
|
||||
.OrderByDescending(it => it.CreatedTime)
|
||||
.ToPageList(parm.PageNum, parm.PageSize, ref total);
|
||||
|
||||
@@ -251,13 +251,13 @@ namespace ZR.Service.mes.wms
|
||||
material_num = material_num + (int)product.GoodsNumLogic;
|
||||
}
|
||||
}
|
||||
if(material_num>0)
|
||||
if (material_num > 0)
|
||||
{
|
||||
wmMaterialQuery_Stock_item.stockQuantity = material_num;
|
||||
material_stockQuantity_list.Add(wmMaterialQuery_Stock_item);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -276,18 +276,18 @@ namespace ZR.Service.mes.wms
|
||||
public List<WmMaterialQuery_print> Queryoutoder_matrials(string shipment_num)
|
||||
{
|
||||
|
||||
List<WmMaterialQuery_print> stockList = Context.Queryable<WmMaterialOutorder>()
|
||||
.LeftJoin<WmMaterial>((mo, m) => mo.FkMaterialId == m.Id)
|
||||
.Where(mo => mo.FkOutorderId == shipment_num)
|
||||
.Select((mo, m) => new WmMaterialQuery_print()
|
||||
{
|
||||
//物料号
|
||||
Partnumber = m.Partnumber,
|
||||
// 描述
|
||||
ProductName = m.ProductName,
|
||||
//需求零件数
|
||||
RequireOutNum = mo.OuthouseNum
|
||||
}).ToList();
|
||||
List<WmMaterialQuery_print> stockList = Context.Queryable<WmMaterialOutorder>()
|
||||
.LeftJoin<WmMaterial>((mo, m) => mo.FkMaterialId == m.Id)
|
||||
.Where(mo => mo.FkOutorderId == shipment_num)
|
||||
.Select((mo, m) => new WmMaterialQuery_print()
|
||||
{
|
||||
//物料号
|
||||
Partnumber = m.Partnumber,
|
||||
// 描述
|
||||
ProductName = m.ProductName,
|
||||
//需求零件数
|
||||
RequireOutNum = mo.OuthouseNum
|
||||
}).ToList();
|
||||
|
||||
|
||||
if (stockList != null && stockList.Count > 0)
|
||||
@@ -305,16 +305,16 @@ namespace ZR.Service.mes.wms
|
||||
stock.ItemNum = num ?? 0;
|
||||
|
||||
// 需求箱数
|
||||
List<WmGoodsNowProduction> list= Context.Queryable<WmGoodsNowProduction>()
|
||||
.Where(it => it.Partnumber == stock.Partnumber).OrderByDescending(it=>it.PackageCodeClient).ToList();
|
||||
List<WmGoodsNowProduction> list = Context.Queryable<WmGoodsNowProduction>()
|
||||
.Where(it => it.Partnumber == stock.Partnumber).OrderByDescending(it => it.PackageCodeClient).ToList();
|
||||
|
||||
int sum = 0;
|
||||
foreach (var item in list)
|
||||
{
|
||||
sum = sum + item.GoodsNumLogic??0;
|
||||
if(sum>= stock.RequireOutNum)
|
||||
sum = sum + item.GoodsNumLogic ?? 0;
|
||||
if (sum >= stock.RequireOutNum)
|
||||
{
|
||||
stock.Require_pack_num=list.IndexOf(item)+1;
|
||||
stock.Require_pack_num = list.IndexOf(item) + 1;
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -358,7 +358,7 @@ namespace ZR.Service.mes.wms
|
||||
.Where(it => it.Partnumber == partnumber)
|
||||
.OrderBy(it => it.PackageCodeClient)
|
||||
.ToList();
|
||||
|
||||
|
||||
// 判断要出多少批次的货
|
||||
List<WmOutOrderPlan> wmOutOrderPlans = new List<WmOutOrderPlan>();
|
||||
// 当前累计批次货物总数
|
||||
@@ -377,6 +377,7 @@ namespace ZR.Service.mes.wms
|
||||
// 获得批次的总零件数
|
||||
orderPlan.PartnumberNum = witem.GoodsNumLogic;
|
||||
orderPlan.RequireNum = require_num;
|
||||
orderPlan.ReceivedNum = 0;
|
||||
orderPlan.Patchtime = Resolution_bath(witem.PackageCodeOriginal);
|
||||
wmOutOrderPlans.Add(orderPlan);
|
||||
// 实际值计算
|
||||
@@ -387,7 +388,7 @@ namespace ZR.Service.mes.wms
|
||||
if (wmOutOrderPlans.Count > 0)
|
||||
{
|
||||
// 根据批次号下划线前进行聚合
|
||||
List < WmOutOrderPlan > material_plan_item = wmOutOrderPlans.GroupBy(it => it.Patchcode_short).Select(g => new
|
||||
List<WmOutOrderPlan> material_plan_item = wmOutOrderPlans.GroupBy(it => it.Patchcode_short).Select(g => new
|
||||
WmOutOrderPlan
|
||||
{
|
||||
FkOutOrderId = g.Max(p => p.FkOutOrderId),
|
||||
@@ -396,14 +397,15 @@ namespace ZR.Service.mes.wms
|
||||
WarehouseCode = g.Max(p => p.WarehouseCode),
|
||||
MaterialCode = g.Max(p => p.MaterialCode),
|
||||
PackageNum = g.Count(),
|
||||
PartnumberNum = g.Sum(p=>p.PartnumberNum),
|
||||
PartnumberNum = g.Sum(p => p.PartnumberNum),
|
||||
RequireNum = g.Max(p => p.RequireNum),
|
||||
ReceivedNum = 0,
|
||||
Patchtime = g.Max(p => p.Patchtime),
|
||||
}).ToList();
|
||||
|
||||
planList=planList.Concat(material_plan_item).ToList();
|
||||
planList = planList.Concat(material_plan_item).ToList();
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
@@ -413,14 +415,14 @@ namespace ZR.Service.mes.wms
|
||||
{
|
||||
witem.Id = count;
|
||||
witem.Outorder = count;
|
||||
|
||||
|
||||
count++;
|
||||
witem.Inventory_pack_num = Context.Queryable<WmGoodsNowProduction>()
|
||||
.Where(it=>it.PackageCodeClient.Contains(witem.Patchcode))
|
||||
.Where(it => it.PackageCodeClient.Contains(witem.Patchcode))
|
||||
.Count();
|
||||
witem.Inventory_num = Context.Queryable<WmGoodsNowProduction>()
|
||||
.Where(it => it.PackageCodeClient.Contains( witem.Patchcode))
|
||||
.Sum(it=>it.GoodsNumLogic)??0;
|
||||
.Where(it => it.PackageCodeClient.Contains(witem.Patchcode))
|
||||
.Sum(it => it.GoodsNumLogic) ?? 0;
|
||||
|
||||
|
||||
}
|
||||
@@ -444,36 +446,79 @@ namespace ZR.Service.mes.wms
|
||||
{
|
||||
foreach (var item in doMaterialOut.PatchCode)
|
||||
{
|
||||
UseTran2(() =>
|
||||
//TODO 保证 同一出货单下 同一物料下最早批次
|
||||
// 取出同一出货单下 同一物料下 未满箱的最早批次
|
||||
WmOutOrderPlan plan_item =Context.Queryable<WmOutOrderPlan>()
|
||||
.Where(it => it.FkOutOrderId == shipnumber)
|
||||
.Where(it => it.Patchcode == item).First();
|
||||
var plan_earliest = Context.Queryable<WmOutOrderPlan>()
|
||||
.Where(it => it.FkOutOrderId == shipnumber)
|
||||
.Where(it=>it.MaterialCode== plan_item.MaterialCode)
|
||||
.Where(it=>it.PackageNum>it.ReceivedPackNum)
|
||||
.OrderBy(it=>it.Outorder)
|
||||
.First();
|
||||
//已经出库完成,没有可以出库的了
|
||||
if(plan_earliest != null)
|
||||
{
|
||||
return (100, 100);
|
||||
}
|
||||
if (plan_earliest.Id == plan_earliest.Id)
|
||||
{
|
||||
WmGoodsOutRecord record = new WmGoodsOutRecord();
|
||||
record.Id = SnowFlakeSingle.Instance.NextId().ToString();
|
||||
WmGoodsNowProduction nowProduction = Context.Queryable<WmGoodsNowProduction>()
|
||||
.Where(it => it.PackageCodeClient == item).First();
|
||||
|
||||
if (nowProduction != null)
|
||||
// TODO 每次出库要出库计划累加
|
||||
|
||||
Context.Updateable<WmOutOrderPlan>()
|
||||
.SetColumns(it => it.ReceivedPackNum == it.ReceivedPackNum + 1)
|
||||
.Where(it => it.FkOutOrderId == shipnumber)
|
||||
.Where(it => it.Patchcode == item)
|
||||
.ExecuteCommand();
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
UseTran2(() =>
|
||||
{
|
||||
record.FkNowProductionId = nowProduction.Id;
|
||||
record.PackageCodeClient = nowProduction.PackageCodeClient;
|
||||
record.PackageCode = nowProduction.PackageCode;
|
||||
record.PackageCodeOriginal = nowProduction.PackageCodeOriginal;
|
||||
record.LocationCode = nowProduction.LocationCode;
|
||||
record.Partnumber = nowProduction.Partnumber;
|
||||
record.GoodsNumLogic = nowProduction.GoodsNumLogic;
|
||||
record.GoodsNumAction = nowProduction.GoodsNumAction;
|
||||
record.EntryWarehouseTime = nowProduction.EntryWarehouseTime;
|
||||
record.OutTime = DateTime.Now;
|
||||
record.CreatedTime = DateTime.Now;
|
||||
record.CreatedBy = Createby;
|
||||
record.FkOutOrderId = shipnumber;
|
||||
sum_insert = Context.Insertable(record).ExecuteCommand();
|
||||
sum_delete += Context.Deleteable<WmGoodsNowProduction>()
|
||||
.Where(it => it.PackageCodeClient == item)
|
||||
.ExecuteCommand();
|
||||
}
|
||||
WmGoodsOutRecord record = new WmGoodsOutRecord();
|
||||
record.Id = SnowFlakeSingle.Instance.NextId().ToString();
|
||||
WmGoodsNowProduction nowProduction = Context.Queryable<WmGoodsNowProduction>()
|
||||
.Where(it => it.PackageCodeClient == item).First();
|
||||
|
||||
if (nowProduction != null)
|
||||
{
|
||||
record.FkNowProductionId = nowProduction.Id;
|
||||
record.PackageCodeClient = nowProduction.PackageCodeClient;
|
||||
record.PackageCode = nowProduction.PackageCode;
|
||||
record.PackageCodeOriginal = nowProduction.PackageCodeOriginal;
|
||||
record.LocationCode = nowProduction.LocationCode;
|
||||
record.Partnumber = nowProduction.Partnumber;
|
||||
record.GoodsNumLogic = nowProduction.GoodsNumLogic;
|
||||
record.GoodsNumAction = nowProduction.GoodsNumAction;
|
||||
record.EntryWarehouseTime = nowProduction.EntryWarehouseTime;
|
||||
record.OutTime = DateTime.Now;
|
||||
record.CreatedTime = DateTime.Now;
|
||||
record.CreatedBy = Createby;
|
||||
record.FkOutOrderId = shipnumber;
|
||||
sum_insert = Context.Insertable(record).ExecuteCommand();
|
||||
sum_delete += Context.Deleteable<WmGoodsNowProduction>()
|
||||
.Where(it => it.PackageCodeClient == item)
|
||||
.ExecuteCommand();
|
||||
}
|
||||
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
// 不在最早批次内
|
||||
return (200, 200);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
}
|
||||
@@ -517,7 +562,7 @@ namespace ZR.Service.mes.wms
|
||||
/// <param name="production_packcode"></param>
|
||||
/// <param name="shipment_num"></param>
|
||||
/// <returns></returns>
|
||||
public string CheckProductionOut(string production_packcode, string shipment_num)
|
||||
public string CheckProductionOut(string parnumber, string production_packcode, string shipment_num)
|
||||
{
|
||||
try
|
||||
{
|
||||
@@ -540,13 +585,19 @@ namespace ZR.Service.mes.wms
|
||||
{
|
||||
return "标签解析异常!请检查标签";
|
||||
}
|
||||
// 3.判断是否已入库
|
||||
bool isExistedWarehouse = Context.Queryable<WmGoodsNowProduction>().Where(it => it.PackageCodeClient == resultionPackage.PatchCode).Any();
|
||||
if (!isExistedWarehouse)
|
||||
//3 判断箱子是否配置零件号
|
||||
if (parnumber != resultionPackage.PartNumner)
|
||||
{
|
||||
return "该箱号未入库!请先入库";
|
||||
return "此箱子不在选择的物料号";
|
||||
}
|
||||
|
||||
// 3.判断是否已入库
|
||||
//bool isExistedWarehouse = Context.Queryable<WmGoodsNowProduction>().Where(it => it.PackageCodeClient == resultionPackage.PatchCode).Any();
|
||||
//if (!isExistedWarehouse)
|
||||
//{
|
||||
// return "该箱号未入库!请先入库";
|
||||
//}
|
||||
|
||||
// 4.获取出库单号对应的出库计划
|
||||
List<WmOutOrderPlan> orderPlans = Generate_outorderplan(shipment_num);
|
||||
// 5.配对是否符合出库条件
|
||||
@@ -565,7 +616,7 @@ namespace ZR.Service.mes.wms
|
||||
{
|
||||
return "此箱标签存在异常不可出库!";
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -577,7 +628,15 @@ namespace ZR.Service.mes.wms
|
||||
/// <exception cref="NotImplementedException"></exception>
|
||||
public int PersistenceOutorderplan(string shipment_num)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
List<WmOutOrderPlan> orderPlans = Generate_outorderplan(shipment_num);
|
||||
|
||||
var x = Context.Storageable(orderPlans)
|
||||
.WhereColumns(it => it.FkOutOrderId)
|
||||
.WhereColumns(it => it.MaterialCode)
|
||||
.ToStorage();
|
||||
int result = x.AsInsertable.ExecuteCommand(); //执行插入
|
||||
x.AsUpdateable.ExecuteCommand(); //执行更新
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user