コード例 #1
0
 private void MatchHutoMapping(IEnumerable<HuToMapping> huToMappingList, MrpMiPlan mrpMiPlan)
 {
     //胶料没有匹配上,只匹配胶料为空的来源组织
     var itemHuToMappings = huToMappingList.Where(p => string.IsNullOrWhiteSpace(p.Item));
     //匹配路线
     var sourceFlowHuToMapping = itemHuToMappings.Where(p => p.Flow == mrpMiPlan.SourceFlow).FirstOrDefault();
     if (sourceFlowHuToMapping != null)
     {
         //找到匹配路线返回
         mrpMiPlan.HuTo = sourceFlowHuToMapping.HuTo;
     }
     else
     {
         //没有匹配上路线,就匹配路线路线为空的
         sourceFlowHuToMapping = itemHuToMappings.Where(p => string.IsNullOrWhiteSpace(p.Flow)).FirstOrDefault();
         if (sourceFlowHuToMapping != null)
         {
             //找到匹配路线为空的返回
             mrpMiPlan.HuTo = sourceFlowHuToMapping.HuTo;
         }
         else
         {
             //没有找到,返回默认
         }
     }
 }
コード例 #2
0
 public JsonResult _WebMrpMiPlan(string flow, string itemCode)
 {
     if (!string.IsNullOrEmpty(flow) && !string.IsNullOrEmpty(itemCode))
     {
         var plan = new MrpMiPlan();
         var item = itemMgr.GetCacheItem(itemCode);
         plan.Item = item.Code;
         plan.ItemDescription = item.Description;
         plan.Uom = item.Uom;
         var flowDetails = genericMgr.FindAll<FlowDetail>("from FlowDetail where Flow = ? and Item = ?",
             new object[] { flow, itemCode });
         if (flowDetails == null || flowDetails.Count() == 0)
         {
             SaveErrorMessage(string.Format(Resources.EXT.ControllerLan.Con_TheItemIsNotInFlowNow, item, flow));
             return null;
         }
         else
         {
             plan.UnitCount = (float)flowDetails.First().UnitCount;
         }
         return this.Json(plan);
     }
     return null;
 }
コード例 #3
0
        public void SetHuTo(IList<HuToMapping> huToMappingList, MrpMiPlan mrpMiPlan)
        {
            foreach (var huToMapping in huToMappingList)
            {
                if (huToMapping.FgList == null)
                {
                    if (!string.IsNullOrWhiteSpace(huToMapping.Fg))
                    {
                        var item = this.itemMgr.GetCacheItem(huToMapping.Fg);
                        //支持断面和车型
                        if (item.ItemCategory == "MODEL" || item.ItemCategory == "ZHDM")
                        {
                            huToMapping.FgList = this.bomMgr.GetFlatBomDetail(huToMapping.Fg, DateTime.Now).Select(p => p.Item).ToList();
                        }
                        else
                        {
                            huToMapping.FgList = new List<string>();
                            huToMapping.FgList.Add(huToMapping.Fg);
                        }
                    }
                    else
                    {
                        huToMapping.FgList = new List<string>();
                    }
                }
            }

            var sourcePartyHuToMappings = huToMappingList.Where(p => p.Party == mrpMiPlan.SourceParty);
            //匹配胶料
            var itemHuToMappings = sourcePartyHuToMappings.Where(p => p.Item == mrpMiPlan.Item);
            if (itemHuToMappings != null && itemHuToMappings.Count() > 0)
            {
                //匹配来源物料
                var parentItemHuToMappings = itemHuToMappings.Where(p => p.FgList.Contains(mrpMiPlan.ParentItem));
                if (parentItemHuToMappings != null && parentItemHuToMappings.Count() > 0)
                {
                    //匹配来源路线
                    var sourceFlowHuToMapping = parentItemHuToMappings.Where(p => p.Flow == mrpMiPlan.SourceFlow).FirstOrDefault();
                    if (sourceFlowHuToMapping != null)
                    {
                        //最严格的匹配:匹配了来源路线
                        mrpMiPlan.HuTo = sourceFlowHuToMapping.HuTo;
                    }
                    else
                    {
                        //没有匹配上来源路线,找来源路线为空的
                        var flowHuToMapping = parentItemHuToMappings.Where(p => string.IsNullOrWhiteSpace(p.Flow)).FirstOrDefault();
                        if (flowHuToMapping != null)
                        {
                            //匹配上了来源路线为空的
                            mrpMiPlan.HuTo = flowHuToMapping.HuTo;
                        }
                        else
                        {
                            //没有匹配上,找上一级的匹配:来源物料为空的
                            var parentItemHuToMapping = itemHuToMappings.Where(p => p.FgList.Count() == 0).FirstOrDefault();
                            if (parentItemHuToMapping != null)
                            {
                                //找到为空的物料 就返回
                                mrpMiPlan.HuTo = parentItemHuToMapping.HuTo;
                            }
                            else
                            {
                                //没有找到取默认的
                                MatchHutoMapping(sourcePartyHuToMappings, mrpMiPlan);
                            }
                        }
                    }
                }
                else
                {
                    //匹配来源物料为空
                    var parentItemHuToMapping = itemHuToMappings.Where(p => p.FgList.Count() == 0).FirstOrDefault();
                    if (parentItemHuToMapping != null)
                    {
                        //找到为空的物料 就返回
                        mrpMiPlan.HuTo = parentItemHuToMapping.HuTo;
                    }
                    else
                    {
                        //没有找到取默认的
                        MatchHutoMapping(sourcePartyHuToMappings, mrpMiPlan);
                    }
                }
            }
            else
            {
                //没有找到取默认的
                MatchHutoMapping(sourcePartyHuToMappings, mrpMiPlan);
            }
        }
コード例 #4
0
        private IList<MrpMiPlan> GetMrpMiPlanList(int[] Ids, int[] Sequences, string[] Items, string[] HuTos, double[] CurrentQtys)
        {
            var planList = genericMgr.FindAllIn<MrpMiPlan>
                ("from MrpMiPlan where Id in(? ", Ids.Where(p => p > 0).Select(p => (object)p));

            for (int i = 0; i < Ids.Length; i++)
            {
                if (Ids[i] > 0)
                {
                    var plan = planList.Single(p => p.Id == Ids[i]);
                    plan.Sequence = Sequences[i];
                    plan.HuTo = HuTos[i];
                    plan.CurrentCheQty = CurrentQtys[i];
                }
                else
                {
                    var newPlan = new MrpMiPlan();
                    newPlan.Item = Items[i];
                    var flowDetails = genericMgr.FindAll<FlowDetail>("from FlowDetail where Flow = ? and Item = ?",
                        new object[] { planList.First().ProductLine, newPlan.Item });
                    if (flowDetails == null || flowDetails.Count() == 0)
                    {
                        throw new BusinessException(string.Format(Resources.EXT.ControllerLan.Con_TheItemIsNotInFlowNow, newPlan.Item, planList.First().ProductLine));
                    }

                    //newPlan.AdjustQty = 0;
                    newPlan.Bom = string.IsNullOrWhiteSpace(flowDetails.First().Bom) ? newPlan.Item : flowDetails.First().Bom;
                    //newPlan.CheQty = 0;
                    newPlan.UnitCount = (double)flowDetails.First().UnitCount;
                    newPlan.InvQty = 0;
                    newPlan.LocationFrom = flowDetails.First().LocationFrom;
                    newPlan.LocationTo = flowDetails.First().LocationTo;

                    if (string.IsNullOrWhiteSpace(newPlan.LocationFrom)
                        || string.IsNullOrWhiteSpace(newPlan.LocationTo))
                    {
                        var flowMaster = this.genericMgr.FindById<FlowMaster>(flowDetails.First().Flow);
                        if (string.IsNullOrWhiteSpace(newPlan.LocationFrom))
                        {
                            newPlan.LocationFrom = flowMaster.LocationFrom;
                        }
                        if (string.IsNullOrWhiteSpace(newPlan.LocationTo))
                        {
                            newPlan.LocationTo = flowMaster.LocationTo;
                        }
                    }

                    newPlan.MaxStock = (double)flowDetails.First().MaxStock;
                    newPlan.MrpPriority = flowDetails.First().MrpPriority;
                    //newPlan.ParentItem = null;
                    newPlan.PlanDate = planList.First().PlanDate;
                    newPlan.PlanVersion = planList.First().PlanVersion;
                    newPlan.ProductLine = planList.First().ProductLine;
                    //newPlan.Qty =0;
                    newPlan.SafeStock = (double)flowDetails.First().SafeStock;
                    //newPlan.Sequence = flowDetails.First().Sequence;
                    newPlan.Uom = flowDetails.First().Uom;
                    newPlan.WorkHour = itemMgr.GetCacheItem(newPlan.Item).WorkHour;

                    newPlan.Sequence = Sequences[i];
                    newPlan.HuTo = HuTos[i];
                    newPlan.CurrentCheQty = CurrentQtys[i];
                    planList.Add(newPlan);
                }
            }
            return planList;
        }