Beispiel #1
0
        public string GetReport()
        {
            BulletinBLL      bulletinbll      = new BulletinBLL();
            Bulletin_dealBLL bulletin_dealbll = new Bulletin_dealBLL();
            WSSJBGBLL        wssjbgbll        = new WSSJBGBLL();
            //查询条件
            var TimeStart     = Request["TimeStart"] ?? "";
            var TimeEnd       = Request["TimeEnd"] ?? "";
            var dlrsswtype    = Request["dlrsswtype"] ?? "";
            var sgtype        = Request["sgtype"] ?? "";
            var wssjtype      = Request["wssjtype"] ?? "";
            var bjnf          = Request["bjnf"] ?? "";
            var type          = int.Parse(Request["type"] ?? "0");
            var returnListObj = new List <Object>();
            var data          = new object();
            //统计时间
            var times = DateTime.Now;
            var timee = DateTime.Now;

            if (TimeStart.Length > 0)
            {
                times = DateTime.Parse(TimeStart);
            }
            if (TimeEnd.Length > 0)
            {
                timee = DateTime.Parse(TimeEnd).AddDays(1);
            }
            //事故事件类型统计

            var count  = 0;
            var count1 = 0;
            var count2 = 0;

            #region 权限
            string where = new AuthorizeBLL().GetModuleDataAuthority(ERCHTMS.Code.OperatorProvider.Provider.Current(), HttpContext.Request.Cookies["currentmoduleId"].Value, "CREATEUSERDEPTCODE", "CREATEUSERORGCODE");
            string sqlwhere = " and IsSubmit_Deal=1 ";
            if (!string.IsNullOrEmpty(where))
            {
                sqlwhere += " and " + where;
            }
            else
            {
                Operator user = ERCHTMS.Code.OperatorProvider.Provider.Current();
                sqlwhere += string.Format(" and CREATEUSERDEPTCODE like '{0}%'", user.DeptCode);
            }
            #endregion
            switch (type)
            {
            //按事故事件类型统计
            case 0:
                var list = bulletin_dealbll.GetList(sqlwhere).Where(e => e.SGTYPE_DEAL != null && (TimeStart.Length > 0 ? e.HAPPENTIME_DEAL >= times : 1 == 1) &&
                                                                    (TimeEnd.Length > 0 ? e.HAPPENTIME_DEAL <= timee : 1 == 1));
                if (list != null)
                {
                    count = list.Count();
                    var date = list.ToList().GroupBy(e => e.SGTYPENAME_DEAL);
                    foreach (var item in date)
                    {
                        var itemCount = decimal.Parse(item.Count().ToString());
                        returnListObj.Add(new { text = item.Key, value = itemCount, bfb = decimal.Round((itemCount / count) * 100, 2) });
                    }
                }
                break;

            //按事故等级统计
            case 1:
                var list1 = bulletin_dealbll.GetList(sqlwhere).Where(e => e.SGTYPENAME_DEAL.Contains("事故") && e.SGLEVEL_DEAL != null && (TimeStart.Length > 0 ? e.HAPPENTIME_DEAL >= times : 1 == 1) &&
                                                                     (TimeEnd.Length > 0 ? e.HAPPENTIME_DEAL <= timee : 1 == 1) && (sgtype.Length > 0 ? e.SGTYPE_DEAL == sgtype : 1 == 1));
                if (list1 != null)
                {
                    count = list1.Count();
                    var date = list1.ToList().GroupBy(e => e.SGLEVELNAME_DEAL);
                    foreach (var item in date)
                    {
                        var itemCount = decimal.Parse(item.Count().ToString());
                        returnListObj.Add(new { text = item.Key, value = itemCount, bfb = decimal.Round((itemCount / count) * 100, 2) });
                    }
                }

                break;

            //按伤亡人数统计
            case 2:
                var list2 = bulletin_dealbll.GetList(sqlwhere).Where(e => e.SGTYPENAME_DEAL.Contains("人身伤亡事故") && e.SGLEVEL_DEAL != null && (TimeStart.Length > 0 ? e.HAPPENTIME_DEAL >= times : 1 == 1) &&
                                                                     (TimeEnd.Length > 0 ? e.HAPPENTIME_DEAL <= timee : 1 == 1) && (sgtype.Length > 0 ? e.SGTYPE_DEAL == sgtype : 1 == 1));
                count = list2.Count();
                if (list2 != null && count > 0)
                {
                    var query = from l in list2
                                group l by new { l.SGLEVELNAME_DEAL } into tab
                        select new
                    {
                        text  = tab.Key.SGLEVELNAME_DEAL,
                        value = tab.Count(),
                        swnum = list2.Where(e => e.SGLEVELNAME_DEAL == tab.Key.SGLEVELNAME_DEAL).Sum(p => p.SWNUM_DEAL),
                        zsnum = list2.Where(e => e.SGLEVELNAME_DEAL == tab.Key.SGLEVELNAME_DEAL).Sum(p => p.ZSNUM_DEAL),
                        sznum = list2.Where(e => e.SGLEVELNAME_DEAL == tab.Key.SGLEVELNAME_DEAL).Sum(p => p.SZNUM_DEAL),
                        qsnum = list2.Where(e => e.SGLEVELNAME_DEAL == tab.Key.SGLEVELNAME_DEAL).Sum(p => p.QSNUM_DEAL)
                    };
                    returnListObj.AddRange(query);
                }
                break;

            //人身伤害事故类别统计
            case 3:
                var list3 = bulletin_dealbll.GetList(sqlwhere).Where(e => e.SGTYPENAME_DEAL.Contains("人身伤亡事故") && e.RSSHSGTYPE_DEAL != null && (TimeStart.Length > 0 ? e.HAPPENTIME_DEAL >= times : 1 == 1) &&
                                                                     (TimeEnd.Length > 0 ? e.HAPPENTIME_DEAL <= timee : 1 == 1) && (sgtype.Length > 0 ? e.SGTYPE_DEAL == sgtype : 1 == 1));
                count = list3.Count();
                if (list3 != null && count > 0)
                {
                    var query = from l in list3
                                group l by new { l.RSSHSGTYPENAME_DEAL } into tab
                        select new
                    {
                        text  = tab.Key.RSSHSGTYPENAME_DEAL,
                        value = tab.Count(),
                        swnum = list3.Where(e => e.RSSHSGTYPENAME_DEAL == tab.Key.RSSHSGTYPENAME_DEAL).Sum(p => p.SWNUM_DEAL),
                        zsnum = list3.Where(e => e.RSSHSGTYPENAME_DEAL == tab.Key.RSSHSGTYPENAME_DEAL).Sum(p => p.ZSNUM_DEAL),
                        sznum = list3.Where(e => e.RSSHSGTYPENAME_DEAL == tab.Key.RSSHSGTYPENAME_DEAL).Sum(p => p.SZNUM_DEAL),
                        qsnum = list3.Where(e => e.RSSHSGTYPENAME_DEAL == tab.Key.RSSHSGTYPENAME_DEAL).Sum(p => p.QSNUM_DEAL)
                    };
                    var listnow = query.ToList();
                    returnListObj.AddRange(query);
                }
                break;

            //伤亡事故原因统计
            case 4:
                var listXXX = bulletin_dealbll.GetList(sqlwhere);
                var list4   = bulletin_dealbll.GetList(sqlwhere).Where(e => (TimeStart.Length > 0 ? e.HAPPENTIME_DEAL >= times : 1 == 1) &&
                                                                       (TimeEnd.Length > 0 ? e.HAPPENTIME_DEAL <= timee : 1 == 1) && (e.SGTYPENAME_DEAL != null ? e.SGTYPENAME_DEAL.Contains("人身伤亡事故") : e.SGTYPENAME_DEAL != null) &&
                                                                       (sgtype.Length > 0 ? e.SGTYPE_DEAL == sgtype : 1 == 1));
                count = list4.Count();

                var xwtext  = "A不安全行为";
                int xwswnum = 0;
                int xwzsnum = 0;
                int xwsznum = 0;
                int xwqsnum = 0;
                int xwvalue = 0;
                var zttext  = "B不安全状态";
                int ztswnum = 0;
                int ztzsnum = 0;
                int ztsznum = 0;
                int ztqsnum = 0;
                int ztvalue = 0;
                //查询包含不安全行为的数据有多少条
                #region  安全行为的数据
                var entityXW     = dataItemBLL.GetEntityByCode("AEM_BAQXW");
                var listXWdetail = dataItemDetailBLL.GetListByCode(entityXW.ItemCode);
                foreach (DataRow row in listXWdetail.Rows)
                {
                    count1++;
                    //是否包含
                    var itemname = row["ItemName"].ToString();
                    var listxw   = list4.Where(e => (e.BAQXWNAME != null) && e.BAQXWNAME.Contains(row["ItemName"].ToString())).ToList();
                    int swnum1   = 0;
                    int zsnum1   = 0;
                    int sznum1   = 0;
                    int qsnum1   = 0;
                    int value1   = 0;
                    if (listxw != null)
                    {
                        value1 = listxw.Count();
                        foreach (var item in listxw)
                        {
                            xwswnum += item.SWNUM_DEAL.Value;
                            xwzsnum += item.ZSNUM_DEAL.Value;
                            xwsznum += item.SZNUM_DEAL.Value;
                            xwqsnum += item.QSNUM_DEAL.Value;

                            swnum1 += item.SWNUM_DEAL.Value;
                            zsnum1 += item.ZSNUM_DEAL.Value;
                            sznum1 += item.SZNUM_DEAL.Value;
                            qsnum1 += item.QSNUM_DEAL.Value;
                        }
                        xwvalue += value1;
                        returnListObj.Add(new { type = 1, text = row["ItemName"].ToString(), value = value1, swnum = swnum1, zsnum = zsnum1, sznum = sznum1, qsnum = qsnum1 });
                    }
                    else
                    {
                        returnListObj.Add(new { type = 1, text = row["ItemName"].ToString(), value = value1, swnum = swnum1, zsnum = zsnum1, sznum = sznum1, qsnum = qsnum1 });
                    }
                }
                returnListObj.Insert(0, new { type = 1, text = xwtext, value = xwvalue, swnum = xwsznum, zsnum = xwzsnum, sznum = xwsznum, qsnum = xwqsnum });

                #endregion


                #region  安全状态的数据
                var entityZT     = dataItemBLL.GetEntityByCode("AEM_BAQZT");
                var listZTdetail = dataItemDetailBLL.GetListByCode(entityZT.ItemCode);
                foreach (DataRow row in listZTdetail.Rows)
                {
                    count2++;
                    count1++;
                    //是否包含
                    var listzt = list4.Where(e => (e.BAQZTNAME != null) && e.BAQZTNAME.Contains(row["ItemName"].ToString()));
                    int swnum2 = 0;
                    int zsnum2 = 0;
                    int sznum2 = 0;
                    int qsnum2 = 0;
                    int value2 = 0;
                    if (listzt != null)
                    {
                        value2 = listzt.Count();
                        foreach (var item in listzt)
                        {
                            ztswnum += item.SWNUM_DEAL.Value;
                            ztzsnum += item.ZSNUM_DEAL.Value;
                            ztsznum += item.SZNUM_DEAL.Value;
                            ztqsnum += item.QSNUM_DEAL.Value;

                            swnum2 += item.SWNUM_DEAL.Value;
                            zsnum2 += item.ZSNUM_DEAL.Value;
                            sznum2 += item.SZNUM_DEAL.Value;
                            qsnum2 += item.QSNUM_DEAL.Value;
                        }
                        ztvalue += value2;

                        returnListObj.Add(new { type = 1, text = row["ItemName"].ToString(), value = value2, swnum = swnum2, zsnum = zsnum2, sznum = sznum2, qsnum = qsnum2 });
                    }
                    else
                    {
                        returnListObj.Add(new { type = 1, text = row["ItemName"].ToString(), value = value2, swnum = swnum2, zsnum = zsnum2, sznum = sznum2, qsnum = qsnum2 });
                    }
                }
                returnListObj.Insert(count1 - count2 + 1, new { type = 1, text = zttext, value = ztvalue, swnum = ztsznum, zsnum = ztzsnum, sznum = ztsznum, qsnum = ztqsnum });
                #endregion


                #region 间接原因
                var entityJJYY = dataItemBLL.GetEntityByCode("AEM_JJYY");
                var listJJYY   = dataItemDetailBLL.GetListByCode(entityJJYY.ItemCode);
                foreach (DataRow row in listJJYY.Rows)
                {
                    count2++;
                    //是否包含
                    var listjjyy = list4.Where(e => (e.JJYYNAME != null) && e.JJYYNAME.Contains(row["ItemName"].ToString()));
                    int swnum3   = 0;
                    int zsnum3   = 0;
                    int sznum3   = 0;
                    int qsnum3   = 0;
                    int value3   = 0;
                    if (listjjyy != null)
                    {
                        value3 = listjjyy.Count();
                        foreach (var item in listjjyy)
                        {
                            swnum3 += item.SWNUM_DEAL.Value;
                            zsnum3 += item.ZSNUM_DEAL.Value;
                            sznum3 += item.SZNUM_DEAL.Value;
                            qsnum3 += item.QSNUM_DEAL.Value;
                        }
                        //xwvalue += value3;
                        returnListObj.Add(new { type = 2, text = row["ItemName"].ToString(), value = value3, swnum = swnum3, zsnum = zsnum3, sznum = sznum3, qsnum = qsnum3 });
                    }
                    else
                    {
                        returnListObj.Add(new { type = 2, text = row["ItemName"].ToString(), value = value3, swnum = swnum3, zsnum = zsnum3, sznum = sznum3, qsnum = qsnum3 });
                    }
                }
                #endregion
                count1 = count1 + 2;
                break;

            //按年份统计
            case 5:
                var listYear = new List <int>();
                if (bjnf.Length > 0 && bjnf != "0")
                {
                    //近五年
                    if (bjnf == "1")
                    {
                        timee = DateTime.Now;
                        for (int i = 1; i < 5; i++)
                        {
                            listYear.Add(times.Year - i);
                        }
                        times = DateTime.Now.AddYears(-5);
                    }
                    //近十年
                    if (bjnf == "2")
                    {
                        timee = DateTime.Now;
                        for (int i = 1; i < 10; i++)
                        {
                            listYear.Add(times.Year - i);
                        }
                        times = DateTime.Now.AddYears(-10);
                    }
                }
                var list5 = bulletin_dealbll.GetList(sqlwhere).Where(e => e.HAPPENTIME_DEAL != null &&
                                                                     (TimeStart.Length > 0 ? e.HAPPENTIME_DEAL.Value.Year >= times.Year : 1 == 1) &&
                                                                     (TimeEnd.Length > 0 ? e.HAPPENTIME_DEAL.Value.Year <= timee.Year : 1 == 1) &&
                                                                     (sgtype == "-1" ? e.SGTYPENAME_DEAL.Contains("事件") : 1 == 1) && //所有的事件
                                                                     (sgtype == "-2" ? e.SGTYPENAME_DEAL.Contains("事故") : 1 == 1) && //所有的事故
                                                                     ((sgtype.Length > 0 && sgtype != "-1" && sgtype != "-2") ? e.SGTYPE_DEAL == sgtype : 1 == 1) //选择了具体的事故或者事件
                                                                     );
                count = list5.Count();
                if (list5 != null && count > 0)
                {
                    var query = from l in list5
                                group l by new { l.HAPPENTIME_DEAL.Value.Year } into tab
                        select new
                    {
                        text  = tab.Key.Year,
                        value = list5.Where(e => e.HAPPENTIME_DEAL.Value.Year == tab.Key.Year).Count(),
                        swnum = list5.Where(e => e.HAPPENTIME_DEAL.Value.Year == tab.Key.Year).Sum(p => p.SWNUM_DEAL),
                        zsnum = list5.Where(e => e.HAPPENTIME_DEAL.Value.Year == tab.Key.Year).Sum(p => p.ZSNUM_DEAL),
                        sznum = list5.Where(e => e.HAPPENTIME_DEAL.Value.Year == tab.Key.Year).Sum(p => p.SZNUM_DEAL),
                        qsnum = list5.Where(e => e.HAPPENTIME_DEAL.Value.Year == tab.Key.Year).Sum(p => p.QSNUM_DEAL)
                    };
                    var listQuery = query.ToList();
                    foreach (var item in query)
                    {
                        if (listYear.Contains(item.text))
                        {
                            continue;
                        }
                        else
                        {
                            listYear.Remove(item.text);
                        }
                    }
                    foreach (var item in listYear)
                    {
                        returnListObj.Add(new { text = item, value = 0, swnum = 0, zsnum = 0, sznum = 0, qsnum = 0 });
                    }

                    returnListObj.AddRange(query);
                }
                break;

            //按未遂事件类型统计
            case 6:
                var list6 = wssjbgbll_deal.GetList(sqlwhere).Where(e => e.WssjType_Deal != null && (TimeStart.Length > 0 ? e.HappenTime_Deal >= times : 1 == 1) &&
                                                                   (TimeEnd.Length > 0 ? e.HappenTime_Deal <= timee : 1 == 1));
                count = list6.Count();
                if (list6 != null && count > 0)
                {
                    var date = list6.ToList().GroupBy(e => e.WssjTypeName_Deal);
                    foreach (var item in date)
                    {
                        var itemCount = decimal.Parse(item.Count().ToString());
                        returnListObj.Add(new { text = item.Key, value = itemCount, bfb = decimal.Round((itemCount / count) * 100, 2) });
                    }
                }
                break;

            //年度变化统计
            case 7:
                var listYearWS = new List <int>();
                if (bjnf.Length > 0 && bjnf != "0")
                {
                    //近五年
                    if (bjnf == "1")
                    {
                        timee = DateTime.Now;
                        for (int i = 1; i < 5; i++)
                        {
                            listYearWS.Add(times.Year - i);
                        }
                        times = DateTime.Now.AddYears(-5);
                    }
                    //近十年
                    if (bjnf == "2")
                    {
                        timee = DateTime.Now;
                        for (int i = 1; i < 10; i++)
                        {
                            listYearWS.Add(times.Year - i);
                        }
                        times = DateTime.Now.AddYears(-10);
                    }
                }

                var list7 = wssjbgbll_deal.GetList(sqlwhere).Where(e => e.HappenTime_Deal != null && (bjnf != "0" ? e.HappenTime_Deal.Value.Year >= times.Year : 1 == 1) &&
                                                                   (bjnf != "0" ? e.HappenTime_Deal.Value.Year <= timee.Year : 1 == 1) && wssjtype.Length > 0 ? e.WssjType_Deal == wssjtype : 1 == 1);
                count = list7.Count();
                if (list7 != null && count > 0)
                {
                    var date = list7.ToList().GroupBy(e => e.HappenTime_Deal.Value.Year);
                    foreach (var item in date)
                    {
                        var itemCount = decimal.Parse(item.Count().ToString());
                        returnListObj.Add(new { text = item.Key, value = itemCount });
                        listYearWS.Remove(item.Key);
                    }
                }


                foreach (var item in listYearWS)
                {
                    returnListObj.Add(new { text = item, value = 0 });
                }

                break;

            default:
                break;
            }

            data = new { list = returnListObj, count = count, count1 = count1, count2 = count2 };
            var json = Newtonsoft.Json.JsonConvert.SerializeObject(data);
            return(json);
        }
Beispiel #2
0
        public ActionResult GetListJson(string queryJson)
        {
            var data = wssjbg_dealbll.GetList(queryJson);

            return(ToJsonResult(data));
        }