예제 #1
0
        public async Task <IActionResult> GetZbCom([FromForm] InZBCom model)
        {
            var data = await comService.GetZbComData(model);

            return(Ok(new ResutModel <OutZBCom>
            {
                data = data,
                errorCode = 0,
                errorMsg = ""
            }));
        }
예제 #2
0
        public async Task <OutZBCom> GetZbComData(InZBCom model)
        {
            var outZbCom = new OutZBCom
            {
                Head = new List <OutZBCom_Head>(),
                Body = new List <OutZBCom_Body>()
            };

            var head = new List <OutZBCom_Head>();

            var data = await ohSetRepository.QueryFirstOrDefaultAsync <OhSet>("select * from OH_Set");

            outZbCom.UpdateTime = data.UpdateTime.ToString("yyyy-MM-dd HH:mm");

            head.Add(new OutZBCom_Head
            {
                Name = "名称"
            });


            if (model.Info == null || model.ZB == null)
            {
                return(new OutZBCom());
            }

            head.AddRange(model.ZB.Select(item => new OutZBCom_Head {
                Name = $"{item.Name}  {item.StartTime} 至  {item.EndTime}"
            }));

            var dt    = new DataTable();
            var typeC = string.Empty;

            foreach (var t in model.Info)
            {
                var table = string.Empty;
                switch (t.Type)
                {
                case "bm":
                    table = "OH_CBXX";
                    typeC = "1";
                    break;

                case "lx":
                    table = "OH_AJLX";
                    typeC = "2";
                    break;

                case "xz":
                    table = "OH_AJXZ";
                    typeC = "3";
                    break;

                case "ay":
                    table = "OH_AY";
                    typeC = "4";
                    break;

                case "cbr":
                    table = "OH_CBXX";
                    typeC = "5";
                    break;

                case "qt":
                    table = "";
                    typeC = "0";
                    break;
                }

                if (table != "")
                {
                    var name = await ohSetRepository.QueryFirstOrDefaultAsync <dynamic>($"select name from {table} where Id=@Id", new
                    {
                        Id = t.Data.ToString()
                    });

                    _logger.LogWarning($"sql 语句返回 dynamic   {JsonConvert.SerializeObject(data)}");
                    head.Add(new OutZBCom_Head
                    {
                        Name = name
                    });
                }
                foreach (var t1 in model.ZB)
                {
                    var databag = await ohSetRepository.QueryAsync <OhZb>("select * from OH_ZB where IsEnable=1 and CID=0 and ID=@ID", new
                    {
                        t1.ID
                    });

                    foreach (var item in databag)
                    {
                        var Body = new OutZBCom_Body
                        {
                            Row = new List <OutZBCom_Row>()
                        };
                        var array = Method.GetInteger(item.Formula).Split(",").GroupBy(p => p).Select(p => p.Key).ToArray();

                        foreach (var t2 in array)
                        {
                            var re = await ohSetRepository.GetComList(t1.StartTime, t1.EndTime, t2.ToString(), typeC, t.Data);

                            item.Formula = item.Formula.Replace("'" + t2.ToString() + "'", re);
                        }
                        var Ret = double.Parse(dt.Compute(item.Formula, "false").ToString() ?? string.Empty).ToString("0.##");

                        Body.Row.Add(new OutZBCom_Row
                        {
                            val = Ret
                        });
                        outZbCom.Body.Add(Body);
                    }
                }
            }
            outZbCom.Head = head;
            return(outZbCom);
        }