/// <summary> /// 表体 /// </summary> /// <param name="apidata"></param> /// <param name="rdds"></param> /// <param name="rdsds"></param> /// <param name="listfd"></param> /// <param name="dt"></param> public void SetSfcBodyData(Model.APIData apidata, System.Data.DataSet rdds, System.Data.DataSet rdsds, List <Model.Fieldcmps> listfd, Model.Synergismlogdt dt) { //赋值 apidata.SfcBodyData = new List <U8.Interface.Bus.ApiService.Model.BodyRow>(); //表体 int rowno = 0; //来源单据行号 for (int i = 0; i < rdsds.Tables[0].Rows.Count; i++) { rowno = i; Model.BodyRow lmu8nv = new Model.BodyRow(); foreach (Model.Fieldcmps fd in listfd) { SetSfcBodyCols(listfd, fd, ref i, ref rowno, apidata, dt, lmu8nv, rdds, rdsds); } apidata.SfcBodyData.Add(lmu8nv); } }
/// <summary> /// /// </summary> /// <param name="fd"></param> /// <param name="i"></param> /// <param name="rowno"></param> /// <param name="apidata"></param> /// <param name="dt"></param> /// <param name="lmu8nv"></param> /// <param name="rdds"></param> /// <param name="rdsds"></param> private void SetSfcBodyCols(List <Model.Fieldcmps> listfd, Model.Fieldcmps fd, ref int i, ref int rowno, Model.APIData apidata, Model.Synergismlogdt dt, Model.BodyRow lmu8nv, DataSet rdds, DataSet rdsds) { try { if (fd.Cardsection == DAL.Constant.Fixvalue_Cardsection_Body) { Model.U8NameValue u8nv = new Model.U8NameValue(); if (dt.Cvouchertype == "FC31" || dt.Cvouchertype == "FC32" || dt.Cvouchertype == "MO21") { u8nv.U8FieldName = fd.Fieldname; //生产制作区分大小写 } else { u8nv.U8FieldName = fd.Fieldname.ToLower(); } switch (fd.Ctype) { case DAL.Constant.Fieldcmps_Ctype_Const: //固定值 Common.FieldcmpsBodyConstCheck(fd, dt.Cvouchertype); u8nv.U8FieldValue = fd.Cvalue; break; case DAL.Constant.Fieldcmps_Ctype_Source: // 完全参照 BLL.Common.ErrorMsg(fd.Cvalue.Split(','), 2, "完全参照格式不正确"); BLL.Common.ErrorMsg(fd.Cvalue.Split(',')[1].Split('|'), 2, "完全参照格式不正确"); string[] u8value = fd.Cvalue.Split(',')[1].Split('|'); if (u8value[0] == DAL.Constant.Fixvalue_Cardsection_Title) { u8nv.U8FieldValue = rdds.Tables[0].Rows[0][u8value[1]].ToDataString(); } if (u8value[0] == DAL.Constant.Fixvalue_Cardsection_Body) { u8nv.U8FieldValue = rdsds.Tables[0].Rows[i][u8value[1]].ToDataString(); } break; case DAL.Constant.Fieldcmps_Ctype_MutiValue: // 分账套 u8nv.U8FieldValue = DAL.Common.GetVauleByAccid(fd.Autoid, dt.Accid); break; case DAL.Constant.Fieldcmps_Ctype_Funtion: // 函数 u8nv.U8FieldValue = DAL.Common.GetFunValue(apidata, apidata.HeadData, lmu8nv.BodyCols, rdds.Tables[0].Rows[0], rdsds.Tables[0].Rows[i], fd, dt, rowno); #region 默认值 刘忻洲添加 2014.11.20 if (dt.TaskType == 1) { if (string.IsNullOrEmpty(u8nv.U8FieldValue)) { u8nv.U8FieldValue = DAL.Common.GetDefaultValueByTaskIdFunctionId(dt.Id.ToString(), fd.Id, fd.Autoid, fd.Cfunid); } if (u8nv.U8FieldValue == "[null]") { u8nv.U8FieldValue = ""; } } #endregion break; default: u8nv.U8FieldValue = null; break; } lmu8nv.BodyCols.Add(u8nv); #region 添加表体子表 DataSet dschild = new DataSet(); dschild = ((SfcOp)dt.OP).SetFromTabetsChild(dt, apidata.Fristsynergismlogdt, apidata); List <List <Model.U8NameValue> > childData = SetSfcBodyChildRows(listfd, fd, ref i, ref rowno, apidata, dt, rdds, rdsds, dschild); lmu8nv.ChildData = childData; #endregion } } catch (Exception ex) { #region 默认值 刘忻洲修改 2014.11.20 if (dt.TaskType == 1) { string msg = string.Format("表体第{3}行,字段-{0}({2})取值发生错误,错误信息:{1}", fd.Carditemname, ex.Message.ToString(), fd.Fieldname, i + 1); if (fd.Ctype == DAL.Constant.Fieldcmps_Ctype_Funtion) // 函数 { Model.U8NameValue u8nv = new Model.U8NameValue(); if (dt.Cvouchertype == "FC31" || dt.Cvouchertype == "FC32" || dt.Cvouchertype == "MO21") { u8nv.U8FieldName = fd.Fieldname;//生产制作区分大小写 } else { u8nv.U8FieldName = fd.Fieldname.ToLower(); } u8nv.U8FieldValue = DAL.Common.GetDefaultValueByTaskIdFunctionId(dt.Id.ToString(), fd.Id, fd.Autoid, fd.Cfunid); if (string.IsNullOrEmpty(u8nv.U8FieldValue)) { throw new Exception(msg); } if (u8nv.U8FieldValue == "[null]") { u8nv.U8FieldValue = ""; } lmu8nv.BodyCols.Add(u8nv); #region 添加表体子表 List <List <Model.U8NameValue> > childData = SetSfcBodyChildRows(listfd, fd, ref i, ref rowno, apidata, dt, rdds, rdsds, rdsds); lmu8nv.ChildData = childData; #endregion } else { throw new Exception(msg); } } #endregion } }