Exemplo n.º 1
0
        /// <summary>
        /// 移除空的浇次计划,及关联的炉次计划
        /// </summary>
        /// <param name="current"></param>
        private void RemoveEmptyJc(Mod_TPP_LGPC_LSB current)
        {
            // 炉次数据
            var jcData = LCLSBList.Where(w => w.C_FK == current.C_ID);

            if (jcData.All(w => w.C_STATE == "1"))
            {
                LCLSBList.RemoveAll(x => jcData.Contains(x));
                LSBList.Remove(current);
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// 加载浇次计划
        /// </summary>
        private void InitLsb()
        {
            var result = bll_lsb.GetModelList(_strCCMID);

            foreach (var item in result)
            {
                item.N_SORT = result.IndexOf(item) + 1;
            }

            LSBList.Clear();
            LSBList.AddRange(result);
        }
Exemplo n.º 3
0
        /// <summary>
        /// 移除炉次计划将移除的订单炉次计划添加到最后浇次中,考虑浇次最大炉数
        /// </summary>
        /// <param name="current"></param>
        /// <param name="lcNum"></param>
        private void RemoveLcWithLessOrd(Mod_TPP_LGPC_LSB current, int lcNum)
        {
            // 浇次炉次数据
            var jcData = LCLSBList.Where(w => w.C_FK == current.C_ID);

            var removeLcData = GetLast(current, lcNum);

            RemoveLcWithMoreOrd(current, lcNum);
            removeLcData.RemoveAll(x => x.C_STATE == "1");

            // 将炉次计划添加到最后浇次中,或新增浇次并满足最低炉次
            var lastJc = LSBList.Where(w => w.N_GROUP == current.N_GROUP).OrderBy(w => w.N_SORT).LastOrDefault();

            if (lastJc == current)
            {
                // 如果当前浇次就是最后一个浇次,新增浇次
                lastJc = current.Clone();
                LSBList.Add(lastJc);
            }

            ReplaceLc(lastJc, removeLcData);
        }
Exemplo n.º 4
0
        /// <summary>
        /// 添加炉次计划,考虑浇次计划,合并浇次计划
        /// </summary>
        /// <param name="current"></param>
        /// <param name="lcNum"></param>
        public void Add(Mod_TPP_LGPC_LSB current, int lcNum)
        {
            var grpJc = LSBList.Where(w => w.N_GROUP == current.N_GROUP).OrderByDescending(w => w.N_SORT).ToList();

            foreach (var item in grpJc)
            {
                if (lcNum == 0 || item == current)
                {
                    break;
                }

                // 炉次数据
                var jcData = LCLSBList.Where(w => w.C_FK == item.C_ID).Where(w => w.C_STATE != "1");
                foreach (var lcItem in jcData.OrderByDescending(w => w.N_SORT))
                {
                    if (lcNum == 0)
                    {
                        break;
                    }

                    LCLSBList.Remove(lcItem);
                    AddOrdLc(current, lcItem);

                    lcNum--;
                }
                AddFullLc(item, new List <Mod_TPP_LGPC_LCLSB> {
                });
                RemoveEmptyJc(item);
                CountLs(item);
            }

            if (lcNum > 0)
            {
                AddLc(current, lcNum);
            }

            CountLs(current);
        }
Exemplo n.º 5
0
        /// <summary>
        /// 递归替换炉次计划
        /// 满足最小炉次,如果超过最大炉次新增浇次计划
        /// </summary>
        /// <param name="current"></param>
        /// <param name="replaceLcData"></param>
        private void ReplaceLc(Mod_TPP_LGPC_LSB current, List <Mod_TPP_LGPC_LCLSB> replaceLcData)
        {
            // 浇次炉次数据
            var jcData = LCLSBList.Where(w => w.C_FK == current.C_ID);

            // 替换的不是订单类型的炉次
            Replace(current, replaceLcData);

            if (replaceLcData.Count > 0)
            {
                // 添加最少浇次炉次数据
                AddFullLc(current, replaceLcData);
            }

            if (replaceLcData.Count > 0)
            {
                // 新增浇次递归,满足最低炉次
                var addJc = current.Clone();
                LSBList.Add(addJc);
                ReplaceLc(addJc, replaceLcData);
            }

            CountLs(current);
        }