cnf
7 天以前 75c6229509e8e0888a0cbb21906468e43ce83b13
DevApp/Gs.DevApp/DevFrm/Ck/UcBlclSelect.cs
@@ -12,24 +12,59 @@
        private readonly string _webServiceName = "WomdaaManager/";
        private string daaId = "";
        private string orgId = "";
        /// <summary>
        ///
        /// 构造函数
        /// </summary>
        /// <param name="_daaGuid">daaGuid</param>
        /// <param name="_orgId">生产组织</param>
        public UcBlclSelect(string _daaGuid, string _orgId)
        {
            InitializeComponent();
            InitializeGridSettings();
            this.daaId = _daaGuid;
            this.orgId = _orgId;
            Gs.DevApp.ToolBox.UtilityHelper.SetGridViewParameter(gridView1, null, null, null, "", null, null, false);
            getPageList(1);
            getPageListWithFilter(2); // 使用过滤方法
            SetupButtonClickEvent();
        }
        /// <summary>
        /// 重载构造函数 - 筛选掉kbsl为0的数据
        /// </summary>
        /// <param name="_daaGuid">daaGuid</param>
        /// <param name="_orgId">生产组织</param>
        /// <param name="_type">类型标识</param>
        public UcBlclSelect(string _daaGuid, string _orgId, string _type)
        {
            InitializeComponent();
            InitializeGridSettings();
            this.daaId = _daaGuid;
            this.orgId = _orgId;
            Gs.DevApp.ToolBox.UtilityHelper.SetGridViewParameter(gridView1, null, null, null, "", null, null, false);
            getPageListWithFilter(1); // 使用过滤方法
            SetupButtonClickEvent();
        }
        /// <summary>
        /// 初始化网格设置
        /// </summary>
        private void InitializeGridSettings()
        {
            this.gridView1.CustomDrawColumnHeader += (s, e) => { Gs.DevApp.ToolBox.UtilityHelper.CustomDrawColumnHeader(s, e); };
            this.gridView1.MouseUp += (s, e) => { Gs.DevApp.ToolBox.UtilityHelper.CustomMouseUp(s, e, gcMain, gridView1); };
            this.colChkInt.OptionsColumn.AllowSort = DevExpress.Utils.DefaultBoolean.False;
            this.colChkInt.OptionsFilter.AllowAutoFilter = false;
            this.colChkInt.OptionsFilter.AllowFilter = false;
            this.colChkInt.OptionsFilter.AllowInHeaderSearch = DevExpress.Utils.DefaultBoolean.False;
            this.daaId = _daaGuid;
            this.orgId = _orgId;
            Gs.DevApp.ToolBox.UtilityHelper.SetGridViewParameter(gridView1, null, null, null, "", null, null, false);
            getPageList(1);
        }
        /// <summary>
        /// 设置按钮点击事件
        /// </summary>
        private void SetupButtonClickEvent()
        {
            btnIn.Click += (s, e) =>
            {
                gridView1.PostEditor();
@@ -51,23 +86,25 @@
                                itemName = dr["itemName"].ToString(),
                                itemNo = dr["itemNo"].ToString(),
                                gdh = dr["gdh"].ToString(),
                        });
                                kbsl = dr["kbsl"].ToString()
                            });
                        }
                    }
                }
                UpdateParent?.Invoke(this, new UpdateParentEventArgs { DynamicList = list }); Close();
                UpdateParent?.Invoke(this, new UpdateParentEventArgs { DynamicList = list });
                Close();
            };
        }
        /// <summary>
        ///     选择后的回调事件
        /// 选择后的回调事件
        /// </summary>
        public event EventHandler<UpdateParentEventArgs> UpdateParent;
        /// <summary>
        /// 获取页面数据(不过滤)
        /// </summary>
        /// <param name="curPage">第几页</param>
        /// <param name="pageSize">每页几条</param>
        private void getPageList(int curPage)
        {
            var _obj = new
@@ -88,12 +125,148 @@
                gcMain.BindingContext = new BindingContext();
                gcMain.DataSource = dt;
                gcMain.ForceInitialize();
                gridView1.BestFitColumns(); Gs.DevApp.ToolBox.UtilityHelper.SetGridLayout(gridView1);
                gridView1.BestFitColumns();
                Gs.DevApp.ToolBox.UtilityHelper.SetGridLayout(gridView1);
            }
            catch (Exception ex)
            {
                MsgHelper.Warning("提示:" + ex.Message);
            }
        }
        /// <summary>
        /// 获取页面数据并筛选掉kbsl为0的数据
        /// </summary>
        /// <param name="curPage">第几页</param>
        private void getPageListWithFilter(int curPage)
        {
            var _obj = new
            {
                currentPage = 1,
                everyPageSize = 999999,
                sortName = "",
                keyWhere = "",
                daaGuid = daaId
            };
            var json = JsonConvert.SerializeObject(_obj);
            try
            {
                var strReturn = UtilityHelper.HttpPost("",
                    _webServiceName + "GetListSelectDab", json);
                var dd = UtilityHelper.ReturnToTablePage(strReturn);
                var dt = dd.rtnData.list;
                DataTable filteredDt = FilterZeroKbsl(dt);
                if (curPage == 1)
                {
                    // 筛选掉kbsl为0的数据
                    filteredDt = FilterZeroKbsl(dt);
                }
                else
                {
                    // 过滤dab006(需领用量)小于等于ylQty(已领用量)的数据
                    filteredDt = FilterByDab006AndYlQty(dt);
                }
                gcMain.BindingContext = new BindingContext();
                gcMain.DataSource = filteredDt;
                gcMain.ForceInitialize();
                gridView1.BestFitColumns();
                Gs.DevApp.ToolBox.UtilityHelper.SetGridLayout(gridView1);
            }
            catch (Exception ex)
            {
                MsgHelper.Warning("提示:" + ex.Message);
            }
        }
        /// <summary>
        /// 筛选掉kbsl为0的数据
        /// </summary>
        /// <param name="sourceTable">源数据表</param>
        /// <returns>过滤后的数据表</returns>
        private DataTable FilterZeroKbsl(DataTable sourceTable)
        {
            if (sourceTable == null || sourceTable.Rows.Count == 0)
                return sourceTable;
            // 创建新的DataTable来存储过滤后的数据
            DataTable filteredTable = sourceTable.Clone();
            foreach (DataRow row in sourceTable.Rows)
            {
                // 检查kbsl列是否存在且不为0
                if (sourceTable.Columns.Contains("kbsl"))
                {
                    object kbslValue = row["kbsl"];
                    decimal kbsl = 0;
                    // 尝试转换为decimal
                    if (kbslValue != null && kbslValue != DBNull.Value &&
                        decimal.TryParse(kbslValue.ToString(), out kbsl))
                    {
                        if (kbsl > 0) // 只保留kbsl大于0的行
                        {
                            filteredTable.ImportRow(row);
                        }
                    }
                }
                else
                {
                    // 如果没有kbsl列,保留所有行
                    filteredTable.ImportRow(row);
                }
            }
            return filteredTable;
        }
        /// <summary>
        /// 过滤dab006(需领用量)小于等于ylQty(已领用量)的数据
        /// </summary>
        /// <param name="sourceTable">源数据表</param>
        /// <returns>过滤后的数据表</returns>
        private DataTable FilterByDab006AndYlQty(DataTable sourceTable)
        {
            if (sourceTable == null || sourceTable.Rows.Count == 0)
                return sourceTable;
            // 创建新的DataTable来存储过滤后的数据
            DataTable filteredTable = sourceTable.Clone();
            foreach (DataRow row in sourceTable.Rows)
            {
                // 检查dab006和ylQty列是否存在
                if (sourceTable.Columns.Contains("dab006") && sourceTable.Columns.Contains("ylQty"))
                {
                    object dab006Value = row["dab006"];
                    object ylQtyValue = row["ylQty"];
                    decimal dab006 = 0;
                    decimal ylQty = 0;
                    // 尝试转换为decimal
                    bool dab006Valid = dab006Value != null && dab006Value != DBNull.Value &&
                                      decimal.TryParse(dab006Value.ToString(), out dab006);
                    bool ylQtyValid = ylQtyValue != null && ylQtyValue != DBNull.Value &&
                                     decimal.TryParse(ylQtyValue.ToString(), out ylQty);
                    // 过滤条件:dab006 >= ylQty
                    if (dab006Valid && ylQtyValid && dab006 <= ylQty)
                    {
                        filteredTable.ImportRow(row);
                    }
                }
                else
                {
                    // 如果没有这两个列,保留所有行
                    filteredTable.ImportRow(row);
                }
            }
            return filteredTable;
        }
    }
}