diff --git a/ZR.Admin.WebApi/Controllers/mes/wms/WmOutOrderController.cs b/ZR.Admin.WebApi/Controllers/mes/wms/WmOutOrderController.cs index 4384957d..999df646 100644 --- a/ZR.Admin.WebApi/Controllers/mes/wms/WmOutOrderController.cs +++ b/ZR.Admin.WebApi/Controllers/mes/wms/WmOutOrderController.cs @@ -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); } diff --git a/ZR.Model/MES/wms/Dto/WmFgentryInspectDto.cs b/ZR.Model/MES/wms/Dto/WmFgentryInspectDto.cs index 5cba4887..a3432479 100644 --- a/ZR.Model/MES/wms/Dto/WmFgentryInspectDto.cs +++ b/ZR.Model/MES/wms/Dto/WmFgentryInspectDto.cs @@ -90,7 +90,10 @@ namespace ZR.Model.MES.wms.Dto /// 上件数 /// public int PreviousNumber { get; set; } - + /// + /// 工单状态 0-初态 1-上线 2-已完成 + /// + public int Status { get; set; } } diff --git a/ZR.Service/Utils/MaterialUtils.cs b/ZR.Service/Utils/MaterialUtils.cs index effcf5ef..51b182e9 100644 --- a/ZR.Service/Utils/MaterialUtils.cs +++ b/ZR.Service/Utils/MaterialUtils.cs @@ -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; } diff --git a/ZR.Service/mes/wms/WMentryWarehousing_productService.cs b/ZR.Service/mes/wms/WMentryWarehousing_productService.cs index b313960b..88bac97d 100644 --- a/ZR.Service/mes/wms/WMentryWarehousing_productService.cs +++ b/ZR.Service/mes/wms/WMentryWarehousing_productService.cs @@ -26,6 +26,12 @@ namespace ZR.Service.mes.wms { ResultionPackageCodeDto resultionPackage = ResolutionPackage(wmgoods.packagelist[i]); + // XXX 入库时查出此批次号箱已入库,则跳过 + bool hasWarehouse = Context.Queryable().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,20 +285,26 @@ namespace ZR.Service.mes.wms string package_no = resultionPackage.PatchCode.Split("_")[1]; var inspect= Context.Queryable() .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") { - return "GP12 异常错误 GP12无此箱记录 "; + // 其余不变 + if (inspect == null) + { + return "GP12 异常错误 GP12无此箱记录 "; + } + if (inspect.Result == 2) + { + return "该箱号GP12 检验不合格,不得入库"; + } + if (inspect.Result == 0 || inspect.Result == null) + { + return "该箱号GP12 未检验,不得入库"; + } } - if (inspect.Result == 2) - { - return "该箱号GP12 检验不合格,不得入库"; - } - if (inspect.Result == 0|| inspect.Result==null) - { - return "该箱号GP12 未检验,不得入库"; - } - // 3.isStrict = TRUE时判断是否是满箱标签 string packingCode = resultionPackage.PatchCode.Split('_')[1]; bool isExist = Context.Queryable() @@ -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"; diff --git a/ZR.Service/mes/wms/WmFgentryInspectService.cs b/ZR.Service/mes/wms/WmFgentryInspectService.cs index 70dec7ee..7a8afb06 100644 --- a/ZR.Service/mes/wms/WmFgentryInspectService.cs +++ b/ZR.Service/mes/wms/WmFgentryInspectService.cs @@ -84,12 +84,18 @@ namespace ZR.Service.mes.wms /// public PagedInfo 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() .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() + .Where(it => it.Partnumber == inspect.Partnumber) + .First(); + if (material == null) + { + inspect.ProductDescription = "此零件号不在物料清单内!"; + } + else + { + inspect.ProductDescription = !string.IsNullOrEmpty(material.Description) ? material.Description : material.ProductName; + } } diff --git a/ZR.Service/mes/wms/WmOutOrderService.cs b/ZR.Service/mes/wms/WmOutOrderService.cs index 7d8fb379..5d291105 100644 --- a/ZR.Service/mes/wms/WmOutOrderService.cs +++ b/ZR.Service/mes/wms/WmOutOrderService.cs @@ -678,21 +678,36 @@ namespace ZR.Service.mes.wms { return "该箱号未入库!请先入库"; } - - // 4.获取出库单号对应的出库计划 - // List 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 materialOutorders = Context.Queryable() + .LeftJoin((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().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() .Where(it => it.FkOutOrderId == shipment_num)