仓库-GP12查询条件,描述,PDA入库出库功能调整

This commit is contained in:
2024-05-06 16:04:11 +08:00
parent 09880cbc5f
commit 1d5326e885
6 changed files with 84 additions and 38 deletions

View File

@@ -255,7 +255,7 @@ namespace ZR.Admin.WebApi.Controllers
return SUCCESS(null);
}
(int, int) data = _WmOutOrderService.DoMaterialOut(doMaterialOut, "HttpContext.GetName()");
(int, int) data = _WmOutOrderService.DoMaterialOut(doMaterialOut, "PDA出库");
return SUCCESS(data);
}

View File

@@ -90,7 +90,10 @@ namespace ZR.Model.MES.wms.Dto
/// 上件数
/// </summary>
public int PreviousNumber { get; set; }
/// <summary>
/// 工单状态 0-初态 1-上线 2-已完成
/// </summary>
public int Status { get; set; }
}

View File

@@ -75,11 +75,11 @@ namespace ZR.Service.Utils
}
string des1 = material.Description;
string des2 = material.ProductName;
if (string.IsNullOrEmpty(des1))
if (!string.IsNullOrEmpty(des1))
{
resultionPackageCode.ProductionDescribe = des1;
}
if (string.IsNullOrEmpty(des2))
else if (!string.IsNullOrEmpty(des2))
{
resultionPackageCode.ProductionDescribe = des2;
}

View File

@@ -26,6 +26,12 @@ namespace ZR.Service.mes.wms
{
ResultionPackageCodeDto resultionPackage = ResolutionPackage(wmgoods.packagelist[i]);
// XXX 入库时查出此批次号箱已入库,则跳过
bool hasWarehouse = Context.Queryable<WmGoodsNowProduction>().Where(it => it.PackageCodeClient == resultionPackage.PatchCode).Any();
if (hasWarehouse)
{
continue;
}
WmGoodsNowProduction wmGood = new WmGoodsNowProduction();
wmGood.Id = SnowFlakeSingle.Instance.NextId().ToString();
@@ -244,7 +250,7 @@ namespace ZR.Service.mes.wms
}
// 检查是否可入库(ok 可入库,其余返回情况)
// 检查是否可入库(返回ok 可入库,其余返回情况)【使用中接口】
public string checkWarehousing(string production_packcode, string location, bool isStrict)
{
try
@@ -279,8 +285,14 @@ namespace ZR.Service.mes.wms
string package_no = resultionPackage.PatchCode.Split("_")[1];
var inspect= Context.Queryable<WmFgentryInspect>()
.Where(it => it.Workorder == resultionPackage.WorkoderID)
.Where(it => it.Packcode.EndsWith(package_no)).First();
if(inspect == null)
.Where(it => it.Packcode.EndsWith(package_no))
.OrderByDescending(it=>it.CreatedTime)
.First();
// XXX 添加校验如果是编号为4号的打印机打出来的就跳过GP12满箱与测试标签校验
if (inspect.Machine != "4")
{
// 其余不变
if (inspect == null)
{
return "GP12 异常错误 GP12无此箱记录 ";
}
@@ -288,11 +300,11 @@ namespace ZR.Service.mes.wms
{
return "该箱号GP12 检验不合格,不得入库";
}
if (inspect.Result == 0|| inspect.Result==null)
if (inspect.Result == 0 || inspect.Result == null)
{
return "该箱号GP12 未检验,不得入库";
}
}
// 3.isStrict = TRUE时判断是否是满箱标签
string packingCode = resultionPackage.PatchCode.Split('_')[1];
bool isExist = Context.Queryable<WmPackingrecord>()
@@ -321,7 +333,7 @@ namespace ZR.Service.mes.wms
string PackageCode = Getpack_no(resultionPackage.WorkoderID, flow_num.ToString("000"));
if (PackageCode == null)
{
return "该标签不可追溯!请入临时仓库!";
return "该标签可能为测试标签,不可追溯!请入临时仓库!";
}
}
return "ok";

View File

@@ -84,12 +84,18 @@ namespace ZR.Service.mes.wms
/// <returns></returns>
public PagedInfo<WmFgentryInspect_parentDto> GetList_first(WmFgentryInspectQueryDto parm)
{
bool useTime = false;
if (string.IsNullOrEmpty(parm.Workorder) && string.IsNullOrEmpty(parm.Packcode) && string.IsNullOrEmpty(parm.Partnumber))
{
useTime = true;
}
var predicate = Expressionable.Create<WmFgentryInspect>()
.AndIF(!string.IsNullOrEmpty(parm.Workorder), it => it.Workorder.Contains(parm.Workorder))
.AndIF(!string.IsNullOrEmpty(parm.Packcode), it => it.Packcode.Contains(parm.Packcode))
.AndIF(!string.IsNullOrEmpty(parm.Partnumber), it => it.Partnumber.Contains(parm.Partnumber))
.AndIF(parm.starttime != null && parm.starttime > new DateTime(1999, 1, 1), it => it.CreatedTime > parm.starttime)
.AndIF(parm.endtime != null && parm.endtime > new DateTime(1999, 1, 1), it => it.CreatedTime < parm.endtime)
// XXX 调整搜索逻辑,当搜索工单号零件号或标签时,屏蔽时间的判定
.AndIF(useTime && parm.starttime > new DateTime(1999, 1, 1), it => it.CreatedTime > parm.starttime)
.AndIF(useTime && parm.endtime > new DateTime(1999, 1, 1), it => it.CreatedTime < parm.endtime)
;
@@ -117,18 +123,28 @@ namespace ZR.Service.mes.wms
ProductDescription =w.ProductDescription,
Specifications=w.Specifications,
PreviousNumber = w.PreviousNumber,
Colour = w.Colour
Colour = w.Colour,
Status = w.Status
})
.ToList();
foreach (var inspect in inspects)
{
inspect.Result_good = Queryable().Where(it => it.Workorder == inspect.Workorder).Where(it => it.Result == 1).Count();
inspect.Result_bad = Queryable().Where(it => it.Workorder == inspect.Workorder).Where(it => it.Result == 2).Count();
inspect.Result_null = Queryable().Where(it => it.Workorder == inspect.Workorder).Where(it => it.Result == 0 || it.Result == null).Count();
// 描述来源调整为物料清单
WmMaterial material = Context.Queryable<WmMaterial>()
.Where(it => it.Partnumber == inspect.Partnumber)
.First();
if (material == null)
{
inspect.ProductDescription = "此零件号不在物料清单内!";
}
else
{
inspect.ProductDescription = !string.IsNullOrEmpty(material.Description) ? material.Description : material.ProductName;
}
}

View File

@@ -678,21 +678,36 @@ namespace ZR.Service.mes.wms
{
return "该箱号未入库!请先入库";
}
// 4.获取出库单号对应的出库计划
// List<WmOutOrderPlan> orderPlans = Generate_outorderplan(shipment_num);
// 5.配对是否符合出库条件
//foreach (var orderPlan in orderPlans)
//{
// // 存在匹配条件: 箱标签批次号包含计划短批次号
// if (orderPlan != null && resultionPackage.PatchCode.Contains(orderPlan.Patchcode_short))
// {
// return "ok";
// }
//}
// 3.2 判断是否是计划中的物料(大概率不执行)
bool flag1 = false;
List<WmMaterial> materialOutorders = Context.Queryable<WmMaterialOutorder>()
.LeftJoin<WmMaterial>((wmo,wm)=>wmo.FkMaterialId == wm.Id)
.Where(wmo => wmo.FkOutorderId == shipment_num)
.Select((wmo, wm) => new WmMaterial
{
Partnumber = wm.Partnumber
})
.ToList();
foreach(WmMaterial materialOption in materialOutorders)
{
if (materialOption.Partnumber == resultionPackage.PartNumner)
{
flag1 = true;
}
}
if (!flag1)
{
return "该箱标签物料号不在出库单物料清单内!";
}
// 4. 判断出库单是否启用出库规则
var shipment = Context.Queryable<WmOutOrder>().Where(it => it.ShipmentNum == shipment_num).First();
if (shipment.Status == 0)
{
return "ok";
}
// 5. 确保出最早批次
string short_path = resultionPackage.PatchCode.Split('_')[0];
// 严格规则
// 严格规则(出库规则判断)
return CheckRuleJudgmentFirstInFirstOut(shipment_num, short_path, parnumber);
/*WmOutOrderPlan plan_item = Context.Queryable<WmOutOrderPlan>()
.Where(it => it.FkOutOrderId == shipment_num)