kyy
2025-11-28 47f38ba0d8dad9d01e39f9ecb1c05ea64974790b
WebApi/Gs.Sys/Services/FmController.cs
@@ -253,6 +253,10 @@
            string keyMeth = model.keyMeth;
            string keyNo = model.keyNo;
            string idtype = model.idtype;//这个仅仅是更新工单状态的时候有
            string? keyList = model.keyList;//从存储过程来 zb/只取主表数据 mx1/取明细1的数据
            if (string.IsNullOrEmpty(keyList))
                keyList = "";
            try
            {
@@ -271,48 +275,33 @@
                if (dset.Tables[0].Rows.Count <= 0)
                    return "";
                // 2025-11-05处理 keyProduce 为 prc_cgthsq_sm_Erp 采购退货的特殊情况
                if (keyProduce == "prc_cgthsq_sm_Erp")
                {
                    // 从数据集提取 erpid 和 F_WPVT_INTEGER_L6W 的值(字段名根据实际情况调整)
                    string erpid = dset.Tables[0].Rows[0]["erpid"].ToString();
                    string fWpvtIntegerL6w = dset.Tables[0].Rows[0]["F_WPVT_INTEGER_L6W"].ToString();
                    // 构建 datajson 内容(仅包含两个字段)
                    var dataJsonContent = new
                    {
                        erpid = erpid,
                        F_WPVT_INTEGER_L6W = fWpvtIntegerL6w
                    };
                    // 保持和原有格式一致的外层结构
                    var specialObj = new
                    {
                        mesid = dset.Tables[0].Rows[0][0].ToString(), // 沿用原有 mesid 的取值逻辑(第一列)
                        taskname = keyTaskName,
                        optype = keyMeth,
                        datajson = JsonConvert.SerializeObject(dataJsonContent) // 将两个字段序列化为 datajson
                    };
                    return JsonConvert.SerializeObject(specialObj);
                }
                // 原有逻辑(非特殊情况)
              // 原有逻辑(非特殊情况)
                if (string.IsNullOrEmpty(idtype))
                {
                    string _mesGuid = dset.Tables[0].Rows[0][0].ToString();
                    dynamic _datajson = new ExpandoObject();
                    if (dset.Tables.Count > 1)
                    {
                        if (keyMeth.ToLower() == "toclose".ToLower() || keyMeth.ToLower() == "closure".ToLower() || keyMeth.ToLower() == "unfinish")
                        {
                            _datajson = dset.Tables[1].Rows[0].RowToDynamic();
                        }
                        else
                        {
                            _datajson = dset.Tables[0].Rows[0].RowToDynamic();
                            List<dynamic> _lst = dset.Tables[1].TableToDynamicList();
                            ((IDictionary<string, object>)_datajson)[keyChild] = _lst;
                        }
                            // 1.仅取主表数据,不处理子表
                            if ( keyList.ToLower() == "zb".ToLower() )
                            {
                                _datajson = dset.Tables[0].Rows[0].RowToDynamic();
                            }
                            // 2.取子表第一行数据
                            else if (keyMeth.ToLower() == "toclose"
                                     || keyMeth.ToLower() == "closure"
                                     || keyMeth.ToLower() == "unfinish")
                            {
                                _datajson = dset.Tables[1].Rows[0].RowToDynamic();
                            }
                            // 3.其他操作:主表+子表挂载到keyChild
                            else
                            {
                                _datajson = dset.Tables[0].Rows[0].RowToDynamic();
                                List<dynamic> _lst = dset.Tables[1].TableToDynamicList();
                                ((IDictionary<string, object>)_datajson)[keyChild] = _lst;
                            }
                    }
                    var _obj = new
                    {