Пример #1
0
        /// <summary>
        /// 查询漏检统计
        /// </summary>
        /// <param name="sw">参见OmitCheckCount_SW</param>
        /// <returns>参见HUCheck_OmitCount_Model</returns>
        public static IEnumerable <HUCheck_OmitCount_Model> getOmitCheckModel1(OmitCheckCount_SW sw)
        {
            var result = new List <HUCheck_OmitCount_Model>();

            if (string.IsNullOrEmpty(sw.DateBegin))//开始时间为空
            {
                return(result);
            }
            if (string.IsNullOrEmpty(sw.DateEnd))//结束时间为空
            {
                return(result);
            }
            if (string.IsNullOrEmpty(sw.ORGNO))//组织机构编码
            {
                return(result);
            }
            //根据机构编码获取下属组织机构 注意:这个函数含本级及所有下级的
            DataTable dtOrg = BaseDT.T_SYS_ORG.getDT(new T_SYS_ORGSW {
                TopORGNO = sw.ORGNO
            });

            DataTable dtHU = BaseDT.T_IPSFR_USER.getDT(
                new T_IPSFR_USER_SW
            {
                ISENABLE = "1",
                BYORGNO  = sw.ORGNO,
                HNAME    = sw.PhoneHname,
                HID      = sw.HID
            });
            //获取具体巡检情况
            DataTable dtPatrol = BaseDT.T_IPSFR_ROUTERAIL_PATROL.getDT(
                new T_IPSFR_ROUTERAIL_PATROL_SW
            {
                DateBegin  = sw.DateBegin,
                DateEnd    = sw.DateEnd,
                orgNo      = sw.ORGNO,
                PhoneHname = sw.PhoneHname,
                HID        = sw.HID
            });
            DateTime dt1 = Convert.ToDateTime(sw.DateBegin);
            DateTime dt2 = Convert.ToDateTime(sw.DateEnd);

            DataRow[] drOrg = dtOrg.Select("", "ORGNO");                        //取所有
            int       days  = ClsStr.getDateDiff(sw.DateBegin, sw.DateEnd) + 1; //日期包含天数

            for (int i = 0; i < drOrg.Length; i++)
            {
                HUCheck_OmitCount_Model m = new HUCheck_OmitCount_Model();
                string orgNo = drOrg[i]["ORGNO"].ToString();
                m.ORGNo = orgNo;
                string orgName = BaseDT.T_SYS_ORG.getName(dtOrg, orgNo);
                m.ORGName = orgName;
                //巡检与漏检
                string CCHr = BaseDT.T_IPSFR_ROUTERAIL_PATROL.getCountByOrgNo(dtPatrol, orgNo, "").ToString();
                if (CCHr != "0")
                {
                    string Chr0 = BaseDT.T_IPSFR_ROUTERAIL_PATROL.getCountByOrgNo(dtPatrol, orgNo, "1").ToString();
                    string Chr1 = ClsStr.getDiff(CCHr, Chr0).ToString("F0");
                    string Chr2 = ClsStr.getPercent(Chr0, CCHr).ToString("F0");
                    m.OmitCount0 = CCHr;       //总
                    m.OmitCount1 = Chr0;       //完成
                    m.OmitCount2 = Chr1;       //未完成
                    m.OmitCount3 = Chr2 + "%"; //完成率
                }
                result.Add(m);
            }
            if (PublicCls.OrgIsZhen(sw.ORGNO)) //显示所有护林员
            {
                DataRow[] drHU = dtHU.Select("", "");
                for (int k = 0; k < drHU.Length; k++)//循环护林员
                {
                    HUCheck_OmitCount_Model m = new HUCheck_OmitCount_Model();
                    string HID = dtHU.Rows[k]["HID"].ToString();
                    m.HID     = HID;
                    m.ORGName = dtHU.Rows[k]["HNAME"].ToString();//护林员姓名与机构名称共用一个

                    string CCHr1 = BaseDT.T_IPSFR_ROUTERAIL_PATROL.getCountByHID(dtPatrol, HID, "").ToString();
                    if (CCHr1 != "0")
                    {
                        string Chr0 = BaseDT.T_IPSFR_ROUTERAIL_PATROL.getCountByHID(dtPatrol, HID, "1").ToString();
                        string Chr1 = ClsStr.getDiff(CCHr1, Chr0).ToString("F0");
                        string Chr2 = ClsStr.getPercent(Chr0, CCHr1).ToString("F0");
                        m.OmitCount0 = CCHr1;      //总
                        m.OmitCount1 = Chr0;       //完成
                        m.OmitCount2 = Chr1;       //未完成
                        m.OmitCount3 = Chr2 + "%"; //完成率
                    }
                    result.Add(m);
                }
            }
            dtHU.Clear();
            dtHU.Dispose();
            dtPatrol.Clear();
            dtPatrol.Dispose();
            dtOrg.Clear();
            dtOrg.Dispose();
            return(result);
        }
Пример #2
0
        /// <summary>
        /// 漏检统计 Model
        /// </summary>
        /// <param name="sw"></param>
        /// <returns></returns>
        public static IEnumerable <HUCheck_OmitCount_Model> getOmitCheckModel(OmitCheckCount_SW sw)
        {
            var result = new List <HUCheck_OmitCount_Model>();

            if (string.IsNullOrEmpty(sw.DateBegin))//开始时间为空
            {
                return(result);
            }
            if (string.IsNullOrEmpty(sw.DateEnd))//结束时间为空
            {
                return(result);
            }
            if (string.IsNullOrEmpty(sw.ORGNO))//组织机构编码
            {
                return(result);
            }

            DateTime dt1  = Convert.ToDateTime(sw.DateBegin);
            DateTime dt2  = Convert.ToDateTime(sw.DateEnd);
            int      days = ClsStr.getDateDiff(sw.DateBegin, sw.DateEnd) + 1;//日期包含天数

            //根据机构编码获取下属组织机构 注意:这个函数含本级及所有下级的
            //DataTable dtOrg = BaseDT.T_SYS_ORG.getDT(new T_SYS_ORGSW { TopORGNO = sw.ORGNO });
            DataTable dt = BaseDT.T_IPSFR_ROUTERAIL_PATROL.getDTByOrgNoToDate(new PatrolRouteStat_SW {
                DateBegin = sw.DateBegin, DateEnd = sw.DateEnd, TopORGNO = sw.ORGNO
            });

            DataTable dtHU = BaseDT.T_IPSFR_USER.getDTByOrgSum(new T_IPSFR_USER_SW {
                BYORGNO = sw.ORGNO, ISENABLE = "1"
            });

            if (PublicCls.OrgIsZhen(sw.ORGNO) == false)//市、县处理
            {
                //只获取该市下面的县 县下面的乡
                T_SYS_ORGSW swOrg = new T_SYS_ORGSW();
                swOrg.SYSFLAG  = ConfigCls.getSystemFlag();
                swOrg.TopORGNO = sw.ORGNO;

                if (PublicCls.OrgIsShi(sw.ORGNO))
                {
                    swOrg.GetContyORGNOByCity = sw.ORGNO;//获取所有县
                }
                if (PublicCls.OrgIsXian(sw.ORGNO))
                {
                    swOrg.GetXZOrgNOByConty = sw.ORGNO;//获取所有镇
                }
                DataTable dtOrg = BaseDT.T_SYS_ORG.getDT(swOrg);
                DataRow[] drOrg = dtOrg.Select("", "ORGNO");//取所有

                for (int i = 0; i < drOrg.Length; i++)
                {
                    HUCheck_OmitCount_Model m = new HUCheck_OmitCount_Model();
                    m.ORGName = drOrg[i]["ORGNAME"].ToString();
                    m.ORGNo   = drOrg[i]["ORGNO"].ToString();
                    string CHr = dtHU.Compute("sum(C)", "BYORGNO=" + m.ORGNo).ToString(); //计算该单位下总人数
                    CHr       = (string.IsNullOrEmpty(CHr) ? "0" : CHr);
                    m.HUCount = CHr;                                                      //考勤人数
                    string cList = "";
                    for (DateTime tm = dt1; tm <= dt2; tm = tm.AddDays(1))
                    {
                        string tm1 = PublicClassLibrary.ClsSwitch.SwitDate(tm).ToString();
                        if (string.IsNullOrEmpty(cList) == false)
                        {
                            cList += ",";
                        }
                        string tmp = dt.Compute("sum(C)", "BYORGNO='" + m.ORGNo + "' and ROUTEDATE='" + tm1 + "'").ToString(); //计算该日期下人数
                        cList += (string.IsNullOrEmpty(tmp) ? "0" : tmp);                                                      //各日期以逗号分隔
                    }
                    m.DayCountList = cList;                                                                                    //日期考勤列表
                    if (CHr != "0")
                    {
                        CHr = (int.Parse(CHr) * days).ToString();

                        string Chr0 = dt.Compute("sum(C)", "BYORGNO='" + m.ORGNo + "'").ToString();
                        Chr0 = (string.IsNullOrEmpty(Chr0) ? "0" : Chr0);; // BaseDT.T_IPS_REALDATATEMPORARY.getCountByOrgNo(dtHRRealData, orgNo).ToString();
                        string Chr1 = ClsStr.getDiff(CHr, Chr0).ToString("F0");
                        Chr1 = (string.IsNullOrEmpty(Chr1) ? "0" : Chr1);
                        string Chr2 = ClsStr.getPercent(Chr0, CHr).ToString("F0");
                        Chr2         = (string.IsNullOrEmpty(Chr2) ? "0" : Chr2);
                        m.OmitCount0 = Chr0;       //总
                        m.OmitCount1 = Chr0;       //完成
                        m.OmitCount2 = Chr1;       //完成
                        m.OmitCount3 = Chr2 + "%"; //完成率
                    }
                    result.Add(m);
                }
                dtOrg.Clear();
                dtOrg.Dispose();
            }
            else//显示乡的,乡的列出各个护林员
            {
                DataRow[] drOrg = dtHU.Select("", "");//取所有

                for (int i = 0; i < drOrg.Length; i++)
                {
                    HUCheck_OmitCount_Model m = new HUCheck_OmitCount_Model();
                    m.ORGName = drOrg[i]["hname"].ToString();
                    m.ORGNo   = drOrg[i]["hid"].ToString();
                    string CHr = "1";                                    // dtHU.Compute("BYORGNO=" + m.ORGNo, "").ToString();//计算该单位下总人数
                    m.HUCount = (string.IsNullOrEmpty(CHr) ? "0" : CHr); //考勤人数
                    string cList = "";
                    for (DateTime tm = dt1; tm <= dt2; tm = tm.AddDays(1))
                    {
                        if (string.IsNullOrEmpty(cList) == false)
                        {
                            cList += ",";
                        }
                        string tmp = dt.Compute("sum(C)", "BYORGNO='" + m.ORGNo + "' and ROUTEDATE='" + PublicClassLibrary.ClsSwitch.SwitDate(tm).ToString() + "'").ToString(); //计算该日期下人数
                        cList += (string.IsNullOrEmpty(tmp) ? "0" : tmp);                                                                                                       //各日期以逗号分隔
                    }
                    m.DayCountList = cList;                                                                                                                                     //日期考勤列表
                    if (CHr != "0")
                    {
                        CHr = (int.Parse(CHr) * days).ToString();

                        string Chr0 = dt.Compute("sum(C)", "BYORGNO='" + m.ORGNo + "'").ToString();
                        Chr0 = (string.IsNullOrEmpty(Chr0) ? "0" : Chr0);; // BaseDT.T_IPS_REALDATATEMPORARY.getCountByOrgNo(dtHRRealData, orgNo).ToString();
                        string Chr1 = ClsStr.getDiff(CHr, Chr0).ToString("F0");
                        Chr1 = (string.IsNullOrEmpty(Chr1) ? "0" : Chr1);
                        string Chr2 = ClsStr.getPercent(Chr0, CHr).ToString("F0");
                        Chr2         = (string.IsNullOrEmpty(Chr2) ? "0" : Chr2);
                        m.OmitCount0 = CHr;        //总
                        m.OmitCount1 = Chr0;       //完成
                        m.OmitCount2 = Chr1;       //完成
                        m.OmitCount3 = Chr2 + "%"; //完成率
                    }
                    result.Add(m);
                }
            }
            dtHU.Clear();
            dtHU.Dispose();

            //根据机构编码获取所有护林员信息
            // DataTable dtHU = BaseDT.T_IPSFR_USER.getDT(new T_IPSFR_USER_SW { BYORGNO = sw.ORGNO, ISENABLE = "1" });

            dt.Clear();
            dt.Dispose();

            if (1 == 1)
            {
                HUCheck_OmitCount_Model m = new HUCheck_OmitCount_Model();
                m.ORGName = "合计";
                string HUCount = result.Sum(item => Convert.ToDecimal(item.HUCount)).ToString();//总数
                string CHr     = result.Sum(item => Convert.ToDecimal(item.OmitCount0)).ToString();
                string Chr0    = result.Sum(item => Convert.ToDecimal(item.OmitCount1)).ToString();
                string Chr1    = result.Sum(item => Convert.ToDecimal(item.OmitCount2)).ToString();
                //string OmitCount2 = result.Sum(item => Convert.ToDecimal(item.OmitCount2)).ToString();
                m.HUCount = (string.IsNullOrEmpty(HUCount) ? "0" : HUCount);

                m.OmitCount0 = CHr;                                                                //总
                m.OmitCount1 = Chr0;                                                               //完成
                m.OmitCount2 = Chr1;                                                               //未完成
                m.OmitCount3 = ClsStr.getPercent(m.OmitCount1, m.OmitCount0).ToString("F0") + "%"; //完成率

                int[] arrI = new int[days];
                foreach (var v in result)
                {
                    string[] a = v.DayCountList.Split(',');//组合列表
                    for (int i = 0; i < days; i++)
                    {
                        if (string.IsNullOrEmpty(arrI[i].ToString()))
                        {
                            arrI[i] = 0;
                        }
                        arrI[i] += int.Parse(a[i]);
                    }
                }
                string cList = "";
                for (int i = 0; i < days; i++)
                {
                    if (string.IsNullOrEmpty(cList) == false)
                    {
                        cList += ",";
                    }
                    cList += arrI[i];
                }
                m.DayCountList = cList;
                //m.LineCount2 = ClsStr.getPercent(LineCount0, LineCount).ToString("F0") + "%";
                //m.PointCount = PointCount;
                //m.PointCount0 = PointCount0;
                //m.PointCount1 = result.Sum(item => Convert.ToDecimal(item.PointCount1)).ToString();
                result.Insert(0, m);
            }
            return(result);
        }