---
# System prepended metadata

title: 後端

---

 # 後端 

:::info
## ComplexReport表尾
::: 
```
protected override void EndBuilder(JArray[] toaData)
        { 
                this.ComplexReport.FinishOR();
                this.ReturnTOTA.TotaBody = new TxnReportResultViewModel<ReportResultViewModel>
                {
                    ReportData = new ReportResultViewModel
                    {
                        ConversationId = this.ConversationID,
                        Unid = this.FirstUnid
                    }
                };
        }
```


:::info
####當報表無TOTA
:::
```
 var toadata = new ColumnViewModel[] { };
```
:::info
####當報表無LocalData
:::
```
var localData = new ColumnViewModel[] { };
```
:::info
####只有系統及輸入資料
:::
![](https://i.imgur.com/gzI8Yzd.png)
```
protected override void Builder(TitaViewModel titaModel, JArray[] toaData)
        {
            //純印輸入資料
            var toadata = new ColumnViewModel[] { };
            var reportId = "H27307R1";
            var reportInfo = new ReportInfoViewModel();
            var localData = new ColumnViewModel[] { };
            ReportResultViewModel r = this.GenerateSimpleReport(toadata, localData, reportInfo, reportId);
            this.ReturnTOTA.TotaBody = new TxnReportResultViewModel<ReportResultViewModel>
            {
                ReportData = new ReportResultViewModel
                {
                    ConversationId = r.ConversationId,
                    Unid = r.Unid
                }
            };
        }
```

:::info
####轉數字
:::
```
 int PAYAMT = Convert.ToInt32(temp.PAYAMT);
```


:::info
####this.ReqData,要用前端包進來的東西用的,未經ViewModel處理
:::

![](https://i.imgur.com/YnXhmME.png)


:::info
localData using toaData
:::
string HIGHRISK = toadata[0][0]["HIGHRISK"].ToString();
![](https://i.imgur.com/GyNwGg9.png)

:::info
依次印多個報表
:::
![](https://i.imgur.com/nOKvjlY.png)

:::info
資料傳回前端用
:::
H37501

:::info
toaData裡有4個不同Msgid的資料用成一個
:::
![](https://i.imgur.com/4pTLKIh.png)

:::info
在多個toaData裡抓一個key value
傳回前端
:::
![](https://i.imgur.com/KVRjctm.png)
```
 var target  = toaData.Where(x=> x[0].ToObject<JObject>().Value<string>("vMsgID") == msgId3);
                    JObject jobj2 = target.ToArray()[0][0].ToObject<JObject>();
                    object txnData = new { DEBT3 = jobj2["DEBT3"] };
```
:::info
![](https://i.imgur.com/sWI2ZSo.png)

:::
:::info
產報表也顯示畫面時，第二次傳回值會壞掉
要重新轉型一次
:::
```
var _titaBody2 = JsonConvert.DeserializeObject(titaModel.TitaBody.ToString()); // 解第二次回傳資料格式不同
titaModel.TitaBody = _titaBody2; // 替換TitaBody
```
:::info
顯示畫面又印報表，要加按鈕
:::
```
 var reportInfoVModel = new ReportInfoViewModel()
 {
   NextPageMode = NextPageModeEnum.Auto,
   AvailableButtons = AvailableButtonsEnum.R
 };
this.ComplexReport = this.CreateComplexReportService(reportID, reportInfoVModel, "", "");
```
:::info
SimpleReport have tota and localData
:::
```
public class TxnLogic : SimpleReportBase
    {
        public TxnLogic(ILogHelper logHelper, IConfigHelper configHelper, PlatFormEnum platFormEnum, IMapper mapper) : base(logHelper, configHelper, platFormEnum, mapper)
        {
        }
        protected override bool IsWait => true;
        protected override void Builder(TitaViewModel titaModel, JArray[] toaData)
        {
            foreach (var jArray in toaData)
            {
                //取 toa 資料
                JObject jObj = jArray[0].ToObject<JObject>();
                var msgId = jObj.Value<string>("vMsgID");
                if (msgId == "H37443O1")
                {
                    var todata = ColumnViewModelUtil.FromJson(jObj, msgId);
                    string reportId = "H37443R1";
                    //取 data 資料
                    var localData = GetLocalData(titaModel, toaData);
                    var reportInfo = new ReportInfoViewModel();
                    ReportResultViewModel r = this.GenerateSimpleReport(todata, localData.ToArray(), reportInfo, reportId);
                    this.ReturnTOTA.TotaBody = new TxnReportResultViewModel<ReportResultViewModel>
                    {
                        ReportData = new ReportResultViewModel
                        {
                            ConversationId = r.ConversationId,
                            Unid = r.Unid
                        }
                    };
                }
            }
        }
        private List<ColumnViewModel> GetLocalData(TitaViewModel tita, JArray[] toaData)
        {
            var NBANKAMT = tita.TitaBody["NBANKAMT"];

            List<ColumnViewModel> loVar = new List<ColumnViewModel>();
            loVar.Add(new ColumnViewModel
            {
                Type = "P_NBANKAMT",
                Value = NBANKAMT
            });
            return loVar;
        }

    }
```
:::info
SimpleReport have no tota and localData
:::
```
public class TxnLogic : SimpleReportBase
    {
        public TxnLogic(ILogHelper logHelper, IConfigHelper configHelper, PlatFormEnum platFormEnum, IMapper mapper) : base(logHelper, configHelper, platFormEnum, mapper)
        {
        }
        protected override bool IsWait => true;
        protected override void Builder(TitaViewModel titaModel, JArray[] toaData)
        {
            var toadata = new ColumnViewModel[] { };
            string reportId = "H37443R1";
            var reportInfo = new ReportInfoViewModel();
            var localData = GetLocalData(titaModel, toaData);
            ReportResultViewModel r = this.GenerateSimpleReport(toadata, localData.ToArray(), reportInfo, reportId);
            this.ReturnTOTA.TotaBody = new TxnReportResultViewModel<ReportResultViewModel>
            {
                ReportData = new ReportResultViewModel
                {
                    ConversationId = r.ConversationId,
                    Unid = r.Unid
                }
            };
        }
        private List<ColumnViewModel> GetLocalData(TitaViewModel tita, JArray[] toaData)
        {
            var NBANKAMT = tita.TitaBody["NBANKAMT"];

            List<ColumnViewModel> loVar = new List<ColumnViewModel>();
            loVar.Add(new ColumnViewModel
            {
                Type = "P_NBANKAMT",
                Value = NBANKAMT
            });
            return loVar;
        }

    }
```
:::info
顯示加列印報表
:::
```
//Startup

namespace PSTHL.H77705
{
    public class Startup
    {
        public Startup()
        {
        }

        /// <summary>
        /// 程式進入點
        /// </summary>
        /// <param name="reqData"></param>
        /// <returns>TotaBody內會有一個Unid，前端需再透過API匯出報表</returns>
        public async Task<TotaViewModel> RunBiz(TitaViewModel reqData)
        {
            try
            {
                #region 建立固定項目(log, config, db connection等等)

                var titaHeader = reqData.TitaHeader;
                var container = IocUtil.CreateContainer()
                                    .AddPlatForm(PlatFormEnum.Saving)
                                    .AddTxnLocalConfigHelper(titaHeader)
                                    .SetDapperHelper(PlatFormEnum.Saving)
                                    .RegisterTxnLogic(typeof(Startup));

                #endregion 建立固定項目(log, config, db connection等等)

                // 執行交易主邏輯
                string caseName = reqData.TitaHeader.CaseName;
                string buttonType = reqData.TitaBody["ButtonType"];
                ITxnLogic txnLogic;
                //H77705R1 H77705O1
                switch (buttonType)
                {
                    case "R":
                        txnLogic = container.ResolveTxnLogic("H77705R1");
                        break;
                    default:
                        txnLogic = container.ResolveTxnLogic("H77705O1");
                        break;
                }
                TotaViewModel result = await txnLogic.Run(reqData);
                return result;
            }
            catch (System.Exception ex)
            {
                throw ex;
            }
        }
    }
}

//
```