BPM流程中用到異步請求, 工作記錄
//前端定義對象,最后轉成字符串, 發送到C#的接口
var num=$.MvcSheetUI.GetElement("OTC09_01").SheetGridView().RowCount; //子表行數 var jsonobj = {}; //定義JSON jsonobj.rows=[]; //定義成員數組 for(var i=1;i<=num;i++) { var obj={}; //定義數組成員 obj.qty=$.MvcSheetUI.GetControlValue("OTC09_01.BGSL",i); obj.predate=$.MvcSheetUI.GetControlValue("OTC09_01.BGRQ",i); obj.socode=$.MvcSheetUI.GetControlValue("OTC09_01.DDH",i); obj.rowno=$.MvcSheetUI.GetControlValue("OTC09_01.RowNo",i); jsonobj.rows.push(obj); //把成員加入數組 } $.MvcSheetUI.SetControlValue("jsonobj",JSON.stringify(jsonobj)); //以JSON格式轉成字符串
C#接收到解析
public WSResult OTC09ToERP(string jsonStr) { //提取JSON行數組 JObject jsonObj = (JObject)JsonConvert.DeserializeObject(jsonStr); JArray jsonArr = (JArray)JsonConvert.DeserializeObject(jsonObj["rows"].ToString()); int num = jsonArr.Count; //構建ERP SQL字符串 string sqlTests = string.Empty; for (var i = 0; i < num; i++) { JObject jsonRow = (JObject)JsonConvert.DeserializeObject(jsonArr[i].ToString()); //變更數量,件數,發貨日期,完工日期 string sqlTest = @"update SO_SODetails set iQuantity={0},iNum={0}/(ISNULL(b.cInvDefine13,1)),dPreDate={1},dPreMoDate={1},cScloser={4} from SO_SODetails a inner join inventory b on a.cInvCode=b.cInvCode where a.cSOCode='{2}' and a.iRowNo={3} "; //處理空值 string val1, val2,val3 = val1 = val2 = val3 = string.Empty; val1 = jsonRow["qty"].ToString() == "" ? "iQuantity" : jsonRow["qty"].ToString(); val2 = jsonRow["predate"].ToString() == "" ? "dPreDate" : "'" + jsonRow["predate"].ToString() + "'"; val3 = jsonRow["qty"].ToString() == "0" ? "'EAI'" : "cScloser"; //格式化占位符 sqlTests += string.Format(sqlTest, val1, val2, jsonRow["socode"].ToString(), jsonRow["rowno"].ToString(),val3); } //執行ERP變更 SqlCon con = new SqlCon("ERP"); try { con.open(); if (con.ENQuery(sqlTests) > 0) { r._message = "訂單變更成功"; r._result = "1"; r._state = "successful"; } } catch (Exception) { throw; } finally { con.close(); } return r; }
