wbc
2025-07-28 26f0f84329828e976551e3ac9904eae01f98bea2
DevApp/Gs.DevApp/DevFrm/WOM/Frm_WompbaGx.cs
@@ -8,6 +8,8 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlTypes;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
@@ -46,6 +48,9 @@
            }, lbGuid);
            getPageList(1);
            pageBar1.PagerEvent += PageBar1_PagerEvent;
            // 添加CustomRowCellEdit事件处理,为每行提供独立的下拉数据
            // gvMx1.CustomRowCellEdit += GvMx1_CustomRowCellEdit;
             gvMx1.ShownEditor += GvMx1_ShownEditor;
            //选存组织(变明细中的物料和车间)
            txt_erpSczz.EditChanged += (s, e) =>
            {
@@ -79,18 +84,27 @@
                        lst = ee.StringList;
                        var _obj = lst;
                        var strReturn = UtilityHelper.HttpPost("",
                            "WompbaManager/SelectPbaToView",
                            "WompbaGxManager/SelectPbaToView",
                            JsonConvert.SerializeObject(_obj));
                        var dt = UtilityHelper.ReturnToList(strReturn);
                        DataTable _newTable = dt.rtnData;
                   DataTable _oldTable = (DataTable)gcMx1.DataSource;
                        // 添加新列存储工序列表(如果不存在)
                        if (!_oldTable.Columns.Contains("GxList"))
                        {
                            _oldTable.Columns.Add("GxList", typeof(List<CboItemEntity>));
                        }
                        DataRow[] sourceRows = _newTable.Select();
                        for (int i = 0; i < sourceRows.Length; i++)
                        {
                            _oldTable.ImportRow(sourceRows[i]);
                            //根据编码获取对应维护工序
                            _getListSCGX(sourceRows[i]["itemId"].ToString());
                            // 为每行获取并存储对应的工序列表
                            var gxList = _getListSCGXForRow(sourceRows[i]["itemId"].ToString());
                            int newRowIndex = _oldTable.Rows.Count - 1;
                            _oldTable.Rows[newRowIndex]["GxList"] = gxList;
                        }
                        gcMx1.BindingContext = new BindingContext();
                        gcMx1.DataSource = _oldTable;
@@ -397,7 +411,8 @@
                        Bz = row["daa009"].ToString(),//备注
                        Blsj = row["prepareTime"].ToString(),//预计备料时间
                        Pcsl = row["daa008"].ToString(),//排产数量
                        Yjwgsj = row["mesEndProd"].ToString()//预计完工时间
                        Yjwgsj = row["mesEndProd"].ToString(),//预计完工时间
                        GxId  = row["daa030"].ToString()//工序ID
                    });
                }
            }
@@ -575,6 +590,7 @@
            var _sbSqlWhere = " and 1=1 and dpt_id=" + workGuid;
            var pgq = new PageQueryModel(1, 999999, "a.line_no", "asc", "", _sbSqlWhere.ToString());
            var json = JsonConvert.SerializeObject(pgq);
            try
            {
                var strReturn = UtilityHelper.HttpPost("", "MesWorkshopLineManager/GetListPage", json);
@@ -610,50 +626,118 @@
        /// <summary>
        /// 当前产品带出生产工序
        /// 为指定行获取生产工序列表
        /// </summary>
        /// <param name="itemID"></param>
        private void _getListSCGX(string itemID)
        /// <returns></returns>
        private List<CboItemEntity> _getListSCGXForRow(string itemID)
        {
            repSCGX.Items.Clear();
            var gxList = new List<CboItemEntity>();
            if (string.IsNullOrEmpty(itemID))
                return;
            var _sbSqlWhere = " and 1=1 and t.id=" + itemID;
            var pgq = new PageQueryModel(1, 999999, "a.line_no", "asc", "", _sbSqlWhere.ToString());
            var json = JsonConvert.SerializeObject(pgq);
                return gxList;
            var _sbSqlWhere = " and 1=1 and a.item_id =" + itemID;
            var pgq = new PageQueryModel(1, 999999, "a.GUID", "asc", "", _sbSqlWhere.ToString());
            var requestData = new
            {
                Paging = pgq,       // 分页参数
                ItemInfo = new { itemid = itemID }  // 额外参数
            };
            var json = JsonConvert.SerializeObject(requestData);
            try
            {
                var strReturn = UtilityHelper.HttpPost("", "MesWorkshopLineManager/GetListPage", json);
                var strReturn = UtilityHelper.HttpPost("", _webServiceName + "SelectPbaGx", json);
                var dd = UtilityHelper.ReturnToTablePage(strReturn);
                DataTable dt = dd.rtnData.list;
                foreach (DataRow dr in dt.Rows)
                {
                    repSCGX.Items.Add((new CboItemEntity(dr["id"].ToString(), dr["name"].ToString())));
                    gxList.Add(new CboItemEntity(dr["gxId"].ToString(), dr["gxName"].ToString()));
                }
            }
            catch (Exception ex)
            {
                MsgHelper.Warning("提示:" + ex.Message);
            }
            return gxList;
        }
        private void repSCGX_SelectedIndexChanged(object sender, EventArgs e)
        /// <summary>
        /// 当编辑器显示时动态设置下拉数据
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void GvMx1_ShownEditor(object sender, EventArgs e)
        {
            ComboBoxEdit comboBox = sender as ComboBoxEdit;
            if (comboBox != null)
            GridView view = sender as GridView;
            // 检查是否为编辑状态
            if (toolBarMenu1.currentAction != "edit" && toolBarMenu1.currentAction != "add")
                return;
            if (view.FocusedColumn.FieldName == "daa030ProcName")
            {
                GridView myView = (gcMx1.MainView as GridView);
                int dataIndex = myView.GetDataSourceRowIndex(myView.FocusedRowHandle);
                CboItemEntity _itm = comboBox.EditValue as CboItemEntity;
                string _val = _itm.Value.ToString();
                string _txt = _itm.Text.ToString();
                gvMx1.CloseEditor();
                gvMx1.PostEditor();
                gvMx1.UpdateCurrentRow();
                gvMx1.SetRowCellValue(dataIndex, "daa030ProcName", _txt);
                gvMx1.SetRowCellValue(dataIndex, "daa030", _val);
                var dataRow = view.GetDataRow(view.FocusedRowHandle);
                if (dataRow != null && dataRow["GxList"] != null)
                {
                    var gxList = dataRow["GxList"] as List<CboItemEntity>;
                    if (gxList != null)
                    {
                        var comboEdit = view.ActiveEditor as ComboBoxEdit;
                        if (comboEdit != null)
                        {
                            // 清空Items
                            comboEdit.Properties.Items.Clear();
                            // 只添加Text字符串,不添加整个对象
                            foreach (var item in gxList)
                            {
                                comboEdit.Properties.Items.Add(item.Text);
                            }
                            // 存储映射关系到Tag中
                            comboEdit.Tag = gxList;
                            // 绑定选择事件
                            comboEdit.SelectedIndexChanged -= ComboEdit_SelectedIndexChanged;
                            comboEdit.SelectedIndexChanged += ComboEdit_SelectedIndexChanged;
                        }
                    }
                }
            }
        }
        /// <summary>
        /// 处理下拉选择事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void ComboEdit_SelectedIndexChanged(object sender, EventArgs e)
        {
            var comboBox = sender as ComboBoxEdit;
            if (comboBox != null && comboBox.Tag is List<CboItemEntity> gxList)
            {
                var selectedText = comboBox.Text;
                var selectedItem = gxList.FirstOrDefault(x => x.Text == selectedText);
                if (selectedItem != null)
                {
                    var myView = (gcMx1.MainView as GridView);
                    int dataIndex = myView.GetDataSourceRowIndex(myView.FocusedRowHandle);
                    myView.CloseEditor();
                    myView.PostEditor();
                    myView.UpdateCurrentRow();
                    myView.SetRowCellValue(dataIndex, "daa030ProcName", selectedItem.Text);
                    myView.SetRowCellValue(dataIndex, "daa030", selectedItem.Value);
                }
            }
        }
        /// <summary>
        /// 工具条事件