/// <summary>
    /// 创建原因:获取当前已经存在的属性样品总条数
    /// 创建人:胡方扬
    /// 创建日期:2013-07-09
    /// </summary>
    /// <returns></returns>
    public int GetDustyCoutForBaseInfor()
    {
        int CountNum = 0;

        if (!String.IsNullOrEmpty(strBaseInfor_Id))
        {
            DataTable dt = new TMisMonitorDustattributeSo2ornoxLogic().SelectByTable(new TMisMonitorDustattributeSo2ornoxVo {
                BASEINFOR_ID = strBaseInfor_Id
            });
            CountNum = dt.Rows.Count;
        }

        return(CountNum);
    }
    /// <summary>
    /// 创建原因:根据原始记录表基本数据ID获取当前项目的属性表数据信息
    /// 创建人:胡方扬
    /// 创建日期:2013-07-09
    /// </summary>
    /// <returns></returns>
    public string getAttInfor()
    {
        string result = "";

        if (!String.IsNullOrEmpty(strBaseInfor_Id))
        {
            TMisMonitorDustattributeSo2ornoxVo objDustAtt = new TMisMonitorDustattributeSo2ornoxVo();
            objDustAtt.BASEINFOR_ID = strBaseInfor_Id;
            objDustAtt.SORT_FIELD   = "ID";
            objDustAtt.SORT_TYPE    = "desc";
            DataTable objDt    = new TMisMonitorDustattributeSo2ornoxLogic().SelectByTable(objDustAtt, intPageIndex, intPageSize);
            int       CountNum = new TMisMonitorDustattributeSo2ornoxLogic().GetSelectResultCount(objDustAtt);
            result = LigerGridDataToJson(objDt, CountNum);
        }
        return(result);
    }
Пример #3
0
    /// <summary>
    /// 获取监测项目信息
    /// </summary>
    /// <returns></returns>
    private string getFourGridInfo(string strThreeGridId)
    {
        string strSortname  = Request.Params["sortname"];
        string strSortorder = Request.Params["sortorder"];
        //当前页面
        int intPageIndex = Convert.ToInt32(Request.Params["page"]);
        //每页记录数
        int intPageSize = Convert.ToInt32(Request.Params["pagesize"]);

        DataTable dt = new TMisMonitorResultLogic().getItemInfoInAlloction_QHD(strThreeGridId, "'01','00'", "0", "", "", intPageIndex, intPageSize);

        //退回意见
        for (int i = 0; i < dt.Rows.Count; i++)
        {
            TMisMonitorResultVo     objResutlVo     = new TMisMonitorResultLogic().Details(dt.Rows[i]["ID"].ToString());
            TMisMonitorSampleInfoVo objSampleInfoVo = new TMisMonitorSampleInfoLogic().Details(objResutlVo.SAMPLE_ID);
            TMisMonitorSubtaskVo    objSubtaskVo    = new TMisMonitorSubtaskLogic().Details(objSampleInfoVo.SUBTASK_ID);

            TMisReturnInfoVo objReturnInfoVo = new TMisReturnInfoVo();
            objReturnInfoVo.TASK_ID        = objSubtaskVo.TASK_ID;
            objReturnInfoVo.SUBTASK_ID     = objSubtaskVo.ID;
            objReturnInfoVo.RESULT_ID      = dt.Rows[i]["ID"].ToString();
            objReturnInfoVo.CURRENT_STATUS = SerialType.Monitor_007;
            objReturnInfoVo.BACKTO_STATUS  = SerialType.Monitor_006;
            objReturnInfoVo        = new TMisReturnInfoLogic().Details(objReturnInfoVo);
            dt.Rows[i]["REMARK_1"] = objReturnInfoVo.SUGGESTION;

            //获取原始记录表的采样编号
            DataTable dtInfo        = new DataTable();
            DataRow[] drInfo        = dtInfo.Select("1=2");
            string    strFiter_Code = "";
            TMisMonitorDustinforVo objDustinforVo = new TMisMonitorDustinforVo();
            objDustinforVo.SUBTASK_ID = dt.Rows[i]["ID"].ToString();
            objDustinforVo            = new TMisMonitorDustinforLogic().Details(objDustinforVo);
            if (objDustinforVo.ID.Length > 0)
            {
                TMisMonitorDustattributeVo objDustattributeVo = new TMisMonitorDustattributeVo();
                objDustattributeVo.BASEINFOR_ID = objDustinforVo.ID;
                dtInfo = new TMisMonitorDustattributeLogic().SelectByTable(objDustattributeVo);
                if (dtInfo.Rows.Count > 0)
                {
                    drInfo = dtInfo.Select("FITER_CODE<>'平均'");
                }
                else
                {
                    TMisMonitorDustattributeSo2ornoxVo objDustattributeSo2ornoxVo = new TMisMonitorDustattributeSo2ornoxVo();
                    objDustattributeSo2ornoxVo.BASEINFOR_ID = objDustinforVo.ID;
                    dtInfo = new TMisMonitorDustattributeSo2ornoxLogic().SelectByTable(objDustattributeSo2ornoxVo);
                    if (dtInfo.Rows.Count > 0)
                    {
                        drInfo = dtInfo.Select("FITER_CODE<>'平均'");
                    }
                    else
                    {
                        TMisMonitorDustattributePmVo DustattributePmVo = new TMisMonitorDustattributePmVo();
                        DustattributePmVo.BASEINFOR_ID = objDustinforVo.ID;
                        dtInfo = new TMisMonitorDustattributePmLogic().SelectByTable(DustattributePmVo);
                        if (dtInfo.Rows.Count > 0)
                        {
                            drInfo = dtInfo.Select("FITER_CODE<>'平均'");
                        }
                    }
                }
                for (int j = 0; j < drInfo.Length; j++)
                {
                    strFiter_Code += drInfo[j]["FITER_CODE"].ToString() + ",";
                }
                dt.Rows[i]["REMARK_2"] = strFiter_Code.TrimEnd(',');
            }
        }

        int    intTotalCount = new TMisMonitorResultLogic().getItemInfoCountInAlloction_QHD(strThreeGridId, "'01','00'", "0", "", "");
        string strJson       = CreateToJson(dt, intTotalCount);

        return(strJson);
    }
    /// <summary>
    /// 创建原因:根据指定监测项目属性ID 更新指定列的数据
    /// 创建人:胡方扬
    /// 创建时间:2013-07-09
    /// </summary>
    /// <returns></returns>
    public bool UpdateAttValue()
    {
        bool blFlag = false;

        if (!String.IsNullOrEmpty(strAttInfor_Id) && !String.IsNullOrEmpty(strUpdateCell))
        {
            blFlag = new TMisMonitorDustattributeSo2ornoxLogic().UpdateCell(strAttInfor_Id, strUpdateCell, strUpdateCellValue);

            Regex r = new Regex("^\\d+(\\.)?\\d*$");
            TMisMonitorDustattributeSo2ornoxVo So2ornoxVo = new TMisMonitorDustattributeSo2ornoxVo();
            So2ornoxVo = new TMisMonitorDustattributeSo2ornoxLogic().Details(strAttInfor_Id);
            if (blFlag)
            {
                switch (strUpdateCell)
                {
                case "SO2_POTENCY":            //SO2浓度
                    //计算SO2折算浓度:((21/(21-含氧量))*SO2浓度)/折算系数
                    decimal dPOTENCY = r.IsMatch(So2ornoxVo.SO2_POTENCY) ? decimal.Parse(So2ornoxVo.SO2_POTENCY) : 0;
                    decimal dOXYGEN  = r.IsMatch(So2ornoxVo.SMOKE_OXYGEN) ? decimal.Parse(So2ornoxVo.SMOKE_OXYGEN) : 0;
                    TMisMonitorDustinforVo DustinforVo = new TMisMonitorDustinforLogic().Details(So2ornoxVo.BASEINFOR_ID);
                    decimal dMODUL_NUM   = r.IsMatch(DustinforVo.MODUL_NUM) ? decimal.Parse(DustinforVo.MODUL_NUM) : 0;
                    decimal dPER_POTENCY = 0;
                    if (dMODUL_NUM != 0)
                    {
                        dPER_POTENCY = ((21 / (21 - dOXYGEN)) * dPOTENCY) / dMODUL_NUM;
                        blFlag       = new TMisMonitorDustattributeSo2ornoxLogic().UpdateCell(strAttInfor_Id, "SO2_PER_POTENCY", Math.Round(dPER_POTENCY, 0).ToString());
                    }
                    else
                    {
                        if (So2ornoxVo.SAMPLE_CODE == "平均")
                        {
                            //更新结果表
                            TMisMonitorResultVo objResultVo = new TMisMonitorResultLogic().Details(DustinforVo.SUBTASK_ID);
                            DataTable           dt          = new TMisMonitorSampleInfoLogic().SelectResultForSO2(objResultVo.SAMPLE_ID);
                            DataRow[]           dr;
                            dr = dt.Select("ITEM_NAME='二氧化硫'");
                            if (dr.Length > 0)
                            {
                                objResultVo             = new TMisMonitorResultVo();
                                objResultVo.ID          = dr[0]["ID"].ToString();
                                objResultVo.ITEM_RESULT = strUpdateCellValue;
                                blFlag = new TMisMonitorResultLogic().Edit(objResultVo);
                            }
                        }
                    }
                    //计算SO2排放量:(SO2浓度*标态流量)/1000000
                    decimal dSPEED = r.IsMatch(So2ornoxVo.NM_SPEED) ? decimal.Parse(So2ornoxVo.NM_SPEED) : 0;
                    blFlag = new TMisMonitorDustattributeSo2ornoxLogic().UpdateCell(strAttInfor_Id, "SO2_DISCHARGE", Math.Round((dPOTENCY * dSPEED) / 1000000, 3).ToString());
                    break;

                case "SO2_PER_POTENCY":
                    DustinforVo = new TMisMonitorDustinforLogic().Details(So2ornoxVo.BASEINFOR_ID);
                    dMODUL_NUM  = r.IsMatch(DustinforVo.MODUL_NUM) ? decimal.Parse(DustinforVo.MODUL_NUM) : 0;
                    if (dMODUL_NUM != 0 && So2ornoxVo.SAMPLE_CODE == "平均")
                    {
                        //更新结果表
                        TMisMonitorResultVo objResultVo = new TMisMonitorResultLogic().Details(DustinforVo.SUBTASK_ID);
                        DataTable           dt          = new TMisMonitorSampleInfoLogic().SelectResultForSO2(objResultVo.SAMPLE_ID);
                        DataRow[]           dr;
                        dr = dt.Select("ITEM_NAME='二氧化硫'");
                        if (dr.Length > 0)
                        {
                            objResultVo             = new TMisMonitorResultVo();
                            objResultVo.ID          = dr[0]["ID"].ToString();
                            objResultVo.ITEM_RESULT = strUpdateCellValue;
                            blFlag = new TMisMonitorResultLogic().Edit(objResultVo);
                        }
                    }
                    break;

                case "NOX_POTENCY":            //NOX浓度
                    //计算NOX折算浓度:((21/(21-含氧量))*NOX浓度)/折算系数
                    dPOTENCY     = r.IsMatch(So2ornoxVo.NOX_POTENCY) ? decimal.Parse(So2ornoxVo.NOX_POTENCY) : 0;
                    dOXYGEN      = r.IsMatch(So2ornoxVo.SMOKE_OXYGEN) ? decimal.Parse(So2ornoxVo.SMOKE_OXYGEN) : 0;
                    DustinforVo  = new TMisMonitorDustinforLogic().Details(So2ornoxVo.BASEINFOR_ID);
                    dMODUL_NUM   = r.IsMatch(DustinforVo.MODUL_NUM) ? decimal.Parse(DustinforVo.MODUL_NUM) : 0;
                    dPER_POTENCY = 0;
                    if (dMODUL_NUM != 0)
                    {
                        dPER_POTENCY = ((21 / (21 - dOXYGEN)) * dPOTENCY) / dMODUL_NUM;
                        blFlag       = new TMisMonitorDustattributeSo2ornoxLogic().UpdateCell(strAttInfor_Id, "NOX_PER_POTENCY", Math.Round(dPER_POTENCY, 0).ToString());
                    }
                    else
                    {
                        if (So2ornoxVo.SAMPLE_CODE == "平均")
                        {
                            //更新结果表
                            TMisMonitorResultVo objResultVo = new TMisMonitorResultLogic().Details(DustinforVo.SUBTASK_ID);
                            DataTable           dt          = new TMisMonitorSampleInfoLogic().SelectResultForSO2(objResultVo.SAMPLE_ID);
                            DataRow[]           dr;
                            dr = dt.Select("ITEM_NAME='氮氧化物'");
                            if (dr.Length > 0)
                            {
                                objResultVo             = new TMisMonitorResultVo();
                                objResultVo.ID          = dr[0]["ID"].ToString();
                                objResultVo.ITEM_RESULT = strUpdateCellValue;
                                blFlag = new TMisMonitorResultLogic().Edit(objResultVo);
                            }
                        }
                    }
                    //计算NOX排放量:(SO2浓度*标态流量)/1000000
                    dSPEED = r.IsMatch(So2ornoxVo.NM_SPEED) ? decimal.Parse(So2ornoxVo.NM_SPEED) : 0;
                    blFlag = new TMisMonitorDustattributeSo2ornoxLogic().UpdateCell(strAttInfor_Id, "NOX_DISCHARGE", Math.Round((dPOTENCY * dSPEED) / 1000000, 3).ToString());
                    break;

                case "NOX_PER_POTENCY":
                    DustinforVo = new TMisMonitorDustinforLogic().Details(So2ornoxVo.BASEINFOR_ID);
                    dMODUL_NUM  = r.IsMatch(DustinforVo.MODUL_NUM) ? decimal.Parse(DustinforVo.MODUL_NUM) : 0;
                    if (dMODUL_NUM != 0 && So2ornoxVo.SAMPLE_CODE == "平均")
                    {
                        //更新结果表
                        TMisMonitorResultVo objResultVo = new TMisMonitorResultLogic().Details(DustinforVo.SUBTASK_ID);
                        DataTable           dt          = new TMisMonitorSampleInfoLogic().SelectResultForSO2(objResultVo.SAMPLE_ID);
                        DataRow[]           dr;
                        dr = dt.Select("ITEM_NAME='氮氧化物'");
                        if (dr.Length > 0)
                        {
                            objResultVo             = new TMisMonitorResultVo();
                            objResultVo.ID          = dr[0]["ID"].ToString();
                            objResultVo.ITEM_RESULT = strUpdateCellValue;
                            blFlag = new TMisMonitorResultLogic().Edit(objResultVo);
                        }
                    }
                    break;

                default:
                    break;
                }
            }
        }
        return(blFlag);
    }
    /// <summary>
    /// 创建原因:计算原始记录表的平均数据
    /// 创建人:魏林
    /// 创建时间:2014-04-16
    /// </summary>
    /// <returns></returns>
    public string AvgAttInfor()
    {
        Regex   r = new Regex("^\\d+(\\.)?\\d*$");
        bool    iSuccess = true;
        decimal SMOKE_TEMPERATURE = 0, SMOKE_OXYGEN = 0, SMOKE_SPEED = 0, NM_SPEED = 0;
        decimal SO2_POTENCY = 0, SO2_PER_POTENCY = 0, SO2_DISCHARGE = 0;
        decimal NOX_POTENCY = 0, NOX_PER_POTENCY = 0, NOX_DISCHARGE = 0;
        decimal SMOKE_TEMPERATURE_COut = 0, SMOKE_OXYGEN_COut = 0, SMOKE_SPEED_COut = 0, NM_SPEED_COut = 0, SO2_POTENCY_COut = 0, SO2_PER_POTENCY_COut = 0, SO2_DISCHARGE_COut = 0, NOX_POTENCY_COut = 0, NOX_PER_POTENCY_COut = 0, NOX_DISCHARGE_COut = 0;
        int     iPRECISION = 0; //平均值的小数位位数

        if (!String.IsNullOrEmpty(strBaseInfor_Id))
        {
            TMisMonitorDustattributeSo2ornoxVo objDustAtt = new TMisMonitorDustattributeSo2ornoxVo();
            objDustAtt.BASEINFOR_ID = strBaseInfor_Id;
            objDustAtt.SORT_FIELD   = "ID";
            DataTable dt = new TMisMonitorDustattributeSo2ornoxLogic().SelectByTable(objDustAtt);
            if (dt.Rows[dt.Rows.Count - 1]["SAMPLE_CODE"].ToString() == "平均")
            {
                objDustAtt.SORT_FIELD = "";
                objDustAtt.ID         = dt.Rows[dt.Rows.Count - 1]["ID"].ToString();
                for (int i = 0; i < dt.Rows.Count - 1; i++)
                {
                    if (r.IsMatch(dt.Rows[i]["SMOKE_TEMPERATURE"].ToString()))
                    {
                        SMOKE_TEMPERATURE += decimal.Parse(dt.Rows[i]["SMOKE_TEMPERATURE"].ToString());
                    }
                    else
                    {
                        SMOKE_TEMPERATURE_COut = GetNumber(dt.Rows[i]["SMOKE_TEMPERATURE"].ToString());
                        SMOKE_TEMPERATURE     += SMOKE_TEMPERATURE_COut / 2;
                    }

                    if (r.IsMatch(dt.Rows[i]["SMOKE_OXYGEN"].ToString()))
                    {
                        SMOKE_OXYGEN += decimal.Parse(dt.Rows[i]["SMOKE_OXYGEN"].ToString());
                    }
                    else
                    {
                        SMOKE_OXYGEN_COut = GetNumber(dt.Rows[i]["SMOKE_OXYGEN"].ToString());
                        SMOKE_OXYGEN     += SMOKE_OXYGEN_COut / 2;
                    }

                    if (r.IsMatch(dt.Rows[i]["SMOKE_SPEED"].ToString()))
                    {
                        SMOKE_SPEED += decimal.Parse(dt.Rows[i]["SMOKE_SPEED"].ToString());
                    }
                    else
                    {
                        SMOKE_SPEED_COut = GetNumber(dt.Rows[i]["SMOKE_SPEED"].ToString());
                        SMOKE_SPEED     += SMOKE_SPEED_COut / 2;
                    }

                    if (r.IsMatch(dt.Rows[i]["NM_SPEED"].ToString()))
                    {
                        NM_SPEED += decimal.Parse(dt.Rows[i]["NM_SPEED"].ToString());
                    }
                    else
                    {
                        NM_SPEED_COut = GetNumber(dt.Rows[i]["NM_SPEED"].ToString());
                        NM_SPEED     += NM_SPEED_COut / 2;
                    }

                    if (r.IsMatch(dt.Rows[i]["SO2_POTENCY"].ToString()))
                    {
                        SO2_POTENCY += decimal.Parse(dt.Rows[i]["SO2_POTENCY"].ToString());
                    }
                    else
                    {
                        SO2_POTENCY_COut = GetNumber(dt.Rows[i]["SO2_POTENCY"].ToString());
                        SO2_POTENCY     += SO2_POTENCY_COut / 2;
                    }

                    if (r.IsMatch(dt.Rows[i]["SO2_PER_POTENCY"].ToString()))
                    {
                        SO2_PER_POTENCY += decimal.Parse(dt.Rows[i]["SO2_PER_POTENCY"].ToString());
                    }
                    else
                    {
                        SO2_PER_POTENCY_COut = GetNumber(dt.Rows[i]["SO2_PER_POTENCY"].ToString());
                        SO2_PER_POTENCY     += SO2_PER_POTENCY_COut / 2;
                    }

                    if (r.IsMatch(dt.Rows[i]["SO2_DISCHARGE"].ToString()))
                    {
                        SO2_DISCHARGE += decimal.Parse(dt.Rows[i]["SO2_DISCHARGE"].ToString());
                    }
                    else
                    {
                        SO2_DISCHARGE_COut = GetNumber(dt.Rows[i]["SO2_DISCHARGE"].ToString());
                        SO2_DISCHARGE     += SO2_DISCHARGE_COut / 2;
                    }

                    if (r.IsMatch(dt.Rows[i]["NOX_POTENCY"].ToString()))
                    {
                        NOX_POTENCY += decimal.Parse(dt.Rows[i]["NOX_POTENCY"].ToString());
                    }
                    else
                    {
                        NOX_POTENCY_COut = GetNumber(dt.Rows[i]["NOX_POTENCY"].ToString());
                        NOX_POTENCY     += NOX_POTENCY_COut / 2;
                    }

                    if (r.IsMatch(dt.Rows[i]["NOX_PER_POTENCY"].ToString()))
                    {
                        NOX_PER_POTENCY += decimal.Parse(dt.Rows[i]["NOX_PER_POTENCY"].ToString());
                    }
                    else
                    {
                        NOX_PER_POTENCY_COut = GetNumber(dt.Rows[i]["NOX_PER_POTENCY"].ToString());
                        NOX_PER_POTENCY     += NOX_PER_POTENCY_COut / 2;
                    }

                    if (r.IsMatch(dt.Rows[i]["NOX_DISCHARGE"].ToString()))
                    {
                        NOX_DISCHARGE += decimal.Parse(dt.Rows[i]["NOX_DISCHARGE"].ToString());
                    }
                    else
                    {
                        NOX_DISCHARGE_COut = GetNumber(dt.Rows[i]["NOX_DISCHARGE"].ToString());
                        NOX_DISCHARGE     += NOX_DISCHARGE_COut / 2;
                    }
                }
                iPRECISION = dt.Rows[0]["SMOKE_TEMPERATURE"].ToString().Contains('.') ? dt.Rows[0]["SMOKE_TEMPERATURE"].ToString().Split('.')[1].Length : 0;
                if (SMOKE_TEMPERATURE_COut != 0 && Math.Round(SMOKE_TEMPERATURE / (dt.Rows.Count - 1), iPRECISION) < SMOKE_TEMPERATURE_COut)
                {
                    objDustAtt.SMOKE_TEMPERATURE = SMOKE_TEMPERATURE_COut.ToString() + "(L)";
                }
                else
                {
                    objDustAtt.SMOKE_TEMPERATURE = Math.Round(SMOKE_TEMPERATURE / (dt.Rows.Count - 1), iPRECISION).ToString();
                }

                iPRECISION = dt.Rows[0]["SMOKE_OXYGEN"].ToString().Contains('.') ? dt.Rows[0]["SMOKE_OXYGEN"].ToString().Split('.')[1].Length : 0;
                if (SMOKE_OXYGEN_COut != 0 && Math.Round(SMOKE_OXYGEN / (dt.Rows.Count - 1), iPRECISION) < SMOKE_OXYGEN_COut)
                {
                    objDustAtt.SMOKE_OXYGEN = SMOKE_OXYGEN_COut.ToString() + "(L)";
                }
                else
                {
                    objDustAtt.SMOKE_OXYGEN = Math.Round(SMOKE_OXYGEN / (dt.Rows.Count - 1), iPRECISION).ToString();
                }

                iPRECISION = dt.Rows[0]["SMOKE_SPEED"].ToString().Contains('.') ? dt.Rows[0]["SMOKE_SPEED"].ToString().Split('.')[1].Length : 0;
                if (SMOKE_SPEED_COut != 0 && Math.Round(SMOKE_SPEED / (dt.Rows.Count - 1), iPRECISION) < SMOKE_SPEED_COut)
                {
                    objDustAtt.SMOKE_SPEED = SMOKE_SPEED_COut.ToString() + "(L)";
                }
                else
                {
                    objDustAtt.SMOKE_SPEED = Math.Round(SMOKE_SPEED / (dt.Rows.Count - 1), iPRECISION).ToString();
                }

                iPRECISION = dt.Rows[0]["NM_SPEED"].ToString().Contains('.') ? dt.Rows[0]["NM_SPEED"].ToString().Split('.')[1].Length : 0;
                if (NM_SPEED_COut != 0 && Math.Round(NM_SPEED / (dt.Rows.Count - 1), iPRECISION) < NM_SPEED_COut)
                {
                    objDustAtt.NM_SPEED = NM_SPEED_COut.ToString() + "(L)";
                }
                else
                {
                    objDustAtt.NM_SPEED = Math.Round(NM_SPEED / (dt.Rows.Count - 1), iPRECISION).ToString();
                }

                iPRECISION = dt.Rows[0]["SO2_POTENCY"].ToString().Contains('.') ? dt.Rows[0]["SO2_POTENCY"].ToString().Split('.')[1].Length : 0;
                if (SO2_POTENCY_COut != 0 && Math.Round(SO2_POTENCY / (dt.Rows.Count - 1), iPRECISION) < SO2_POTENCY_COut)
                {
                    objDustAtt.SO2_POTENCY = SO2_POTENCY_COut.ToString() + "(L)";
                }
                else
                {
                    objDustAtt.SO2_POTENCY = Math.Round(SO2_POTENCY / (dt.Rows.Count - 1), iPRECISION).ToString();
                }

                iPRECISION = dt.Rows[0]["SO2_PER_POTENCY"].ToString().Contains('.') ? dt.Rows[0]["SO2_PER_POTENCY"].ToString().Split('.')[1].Length : 0;
                if (SO2_PER_POTENCY_COut != 0 && Math.Round(SO2_PER_POTENCY / (dt.Rows.Count - 1), iPRECISION) < SO2_PER_POTENCY_COut)
                {
                    objDustAtt.SO2_PER_POTENCY = SO2_PER_POTENCY_COut.ToString() + "(L)";
                }
                else
                {
                    objDustAtt.SO2_PER_POTENCY = Math.Round(SO2_PER_POTENCY / (dt.Rows.Count - 1), iPRECISION).ToString();
                }

                iPRECISION = dt.Rows[0]["SO2_DISCHARGE"].ToString().Contains('.') ? dt.Rows[0]["SO2_DISCHARGE"].ToString().Split('.')[1].Length : 0;
                if (SO2_DISCHARGE_COut != 0 && Math.Round(SO2_DISCHARGE / (dt.Rows.Count - 1), iPRECISION) < SO2_DISCHARGE_COut)
                {
                    objDustAtt.SO2_DISCHARGE = SO2_DISCHARGE_COut.ToString() + "(L)";
                }
                else
                {
                    objDustAtt.SO2_DISCHARGE = Math.Round(SO2_DISCHARGE / (dt.Rows.Count - 1), iPRECISION).ToString();
                }

                iPRECISION = dt.Rows[0]["NOX_POTENCY"].ToString().Contains('.') ? dt.Rows[0]["NOX_POTENCY"].ToString().Split('.')[1].Length : 0;
                if (NOX_POTENCY_COut != 0 && Math.Round(NOX_POTENCY / (dt.Rows.Count - 1), iPRECISION) < NOX_POTENCY_COut)
                {
                    objDustAtt.NOX_POTENCY = NOX_POTENCY_COut.ToString() + "(L)";
                }
                else
                {
                    objDustAtt.NOX_POTENCY = Math.Round(NOX_POTENCY / (dt.Rows.Count - 1), iPRECISION).ToString();
                }

                iPRECISION = dt.Rows[0]["NOX_PER_POTENCY"].ToString().Contains('.') ? dt.Rows[0]["NOX_PER_POTENCY"].ToString().Split('.')[1].Length : 0;
                if (NOX_PER_POTENCY_COut != 0 && Math.Round(NOX_PER_POTENCY / (dt.Rows.Count - 1), iPRECISION) < NOX_PER_POTENCY_COut)
                {
                    objDustAtt.NOX_PER_POTENCY = NOX_PER_POTENCY_COut.ToString() + "(L)";
                }
                else
                {
                    objDustAtt.NOX_PER_POTENCY = Math.Round(NOX_PER_POTENCY / (dt.Rows.Count - 1), iPRECISION).ToString();
                }

                iPRECISION = dt.Rows[0]["NOX_DISCHARGE"].ToString().Contains('.') ? dt.Rows[0]["NOX_DISCHARGE"].ToString().Split('.')[1].Length : 0;
                if (NOX_DISCHARGE_COut != 0 && Math.Round(NOX_DISCHARGE / (dt.Rows.Count - 1), iPRECISION) < NOX_DISCHARGE_COut)
                {
                    objDustAtt.NOX_DISCHARGE = NOX_DISCHARGE_COut.ToString() + "(L)";
                }
                else
                {
                    objDustAtt.NOX_DISCHARGE = Math.Round(NOX_DISCHARGE / (dt.Rows.Count - 1), iPRECISION).ToString();
                }

                iSuccess = new TMisMonitorDustattributeSo2ornoxLogic().Edit(objDustAtt);
            }
            else
            {
                objDustAtt.SORT_FIELD  = "";
                objDustAtt.ID          = GetSerialNumber("t_mis_dutyAttSo2InforID");
                objDustAtt.SAMPLE_CODE = "平均";
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    if (r.IsMatch(dt.Rows[i]["SMOKE_TEMPERATURE"].ToString()))
                    {
                        SMOKE_TEMPERATURE += decimal.Parse(dt.Rows[i]["SMOKE_TEMPERATURE"].ToString());
                    }
                    else
                    {
                        SMOKE_TEMPERATURE_COut = GetNumber(dt.Rows[i]["SMOKE_TEMPERATURE"].ToString());
                        SMOKE_TEMPERATURE     += SMOKE_TEMPERATURE_COut / 2;
                    }

                    if (r.IsMatch(dt.Rows[i]["SMOKE_OXYGEN"].ToString()))
                    {
                        SMOKE_OXYGEN += decimal.Parse(dt.Rows[i]["SMOKE_OXYGEN"].ToString());
                    }
                    else
                    {
                        SMOKE_OXYGEN_COut = GetNumber(dt.Rows[i]["SMOKE_OXYGEN"].ToString());
                        SMOKE_OXYGEN     += SMOKE_OXYGEN_COut / 2;
                    }

                    if (r.IsMatch(dt.Rows[i]["SMOKE_SPEED"].ToString()))
                    {
                        SMOKE_SPEED += decimal.Parse(dt.Rows[i]["SMOKE_SPEED"].ToString());
                    }
                    else
                    {
                        SMOKE_SPEED_COut = GetNumber(dt.Rows[i]["SMOKE_SPEED"].ToString());
                        SMOKE_SPEED     += SMOKE_SPEED_COut / 2;
                    }

                    if (r.IsMatch(dt.Rows[i]["NM_SPEED"].ToString()))
                    {
                        NM_SPEED += decimal.Parse(dt.Rows[i]["NM_SPEED"].ToString());
                    }
                    else
                    {
                        NM_SPEED_COut = GetNumber(dt.Rows[i]["NM_SPEED"].ToString());
                        NM_SPEED     += NM_SPEED_COut / 2;
                    }

                    if (r.IsMatch(dt.Rows[i]["SO2_POTENCY"].ToString()))
                    {
                        SO2_POTENCY += decimal.Parse(dt.Rows[i]["SO2_POTENCY"].ToString());
                    }
                    else
                    {
                        SO2_POTENCY_COut = GetNumber(dt.Rows[i]["SO2_POTENCY"].ToString());
                        SO2_POTENCY     += SO2_POTENCY_COut / 2;
                    }

                    if (r.IsMatch(dt.Rows[i]["SO2_PER_POTENCY"].ToString()))
                    {
                        SO2_PER_POTENCY += decimal.Parse(dt.Rows[i]["SO2_PER_POTENCY"].ToString());
                    }
                    else
                    {
                        SO2_PER_POTENCY_COut = GetNumber(dt.Rows[i]["SO2_PER_POTENCY"].ToString());
                        SO2_PER_POTENCY     += SO2_PER_POTENCY_COut / 2;
                    }

                    if (r.IsMatch(dt.Rows[i]["SO2_DISCHARGE"].ToString()))
                    {
                        SO2_DISCHARGE += decimal.Parse(dt.Rows[i]["SO2_DISCHARGE"].ToString());
                    }
                    else
                    {
                        SO2_DISCHARGE_COut = GetNumber(dt.Rows[i]["SO2_DISCHARGE"].ToString());
                        SO2_DISCHARGE     += SO2_DISCHARGE_COut / 2;
                    }

                    if (r.IsMatch(dt.Rows[i]["NOX_POTENCY"].ToString()))
                    {
                        NOX_POTENCY += decimal.Parse(dt.Rows[i]["NOX_POTENCY"].ToString());
                    }
                    else
                    {
                        NOX_POTENCY_COut = GetNumber(dt.Rows[i]["NOX_POTENCY"].ToString());
                        NOX_POTENCY     += NOX_POTENCY_COut / 2;
                    }

                    if (r.IsMatch(dt.Rows[i]["NOX_PER_POTENCY"].ToString()))
                    {
                        NOX_PER_POTENCY += decimal.Parse(dt.Rows[i]["NOX_PER_POTENCY"].ToString());
                    }
                    else
                    {
                        NOX_PER_POTENCY_COut = GetNumber(dt.Rows[i]["NOX_PER_POTENCY"].ToString());
                        NOX_PER_POTENCY     += NOX_PER_POTENCY_COut / 2;
                    }

                    if (r.IsMatch(dt.Rows[i]["NOX_DISCHARGE"].ToString()))
                    {
                        NOX_DISCHARGE += decimal.Parse(dt.Rows[i]["NOX_DISCHARGE"].ToString());
                    }
                    else
                    {
                        NOX_DISCHARGE_COut = GetNumber(dt.Rows[i]["NOX_DISCHARGE"].ToString());
                        NOX_DISCHARGE     += NOX_DISCHARGE_COut / 2;
                    }
                }
                iPRECISION = dt.Rows[0]["SMOKE_TEMPERATURE"].ToString().Contains('.') ? dt.Rows[0]["SMOKE_TEMPERATURE"].ToString().Split('.')[1].Length : 0;
                if (SMOKE_TEMPERATURE_COut != 0 && Math.Round(SMOKE_TEMPERATURE / (dt.Rows.Count - 1), iPRECISION) < SMOKE_TEMPERATURE_COut)
                {
                    objDustAtt.SMOKE_TEMPERATURE = SMOKE_TEMPERATURE_COut.ToString() + "(L)";
                }
                else
                {
                    objDustAtt.SMOKE_TEMPERATURE = Math.Round(SMOKE_TEMPERATURE / (dt.Rows.Count - 1), iPRECISION).ToString();
                }

                iPRECISION = dt.Rows[0]["SMOKE_OXYGEN"].ToString().Contains('.') ? dt.Rows[0]["SMOKE_OXYGEN"].ToString().Split('.')[1].Length : 0;
                if (SMOKE_OXYGEN_COut != 0 && Math.Round(SMOKE_OXYGEN / (dt.Rows.Count - 1), iPRECISION) < SMOKE_OXYGEN_COut)
                {
                    objDustAtt.SMOKE_OXYGEN = SMOKE_OXYGEN_COut.ToString() + "(L)";
                }
                else
                {
                    objDustAtt.SMOKE_OXYGEN = Math.Round(SMOKE_OXYGEN / (dt.Rows.Count - 1), iPRECISION).ToString();
                }

                iPRECISION = dt.Rows[0]["SMOKE_SPEED"].ToString().Contains('.') ? dt.Rows[0]["SMOKE_SPEED"].ToString().Split('.')[1].Length : 0;
                if (SMOKE_SPEED_COut != 0 && Math.Round(SMOKE_SPEED / (dt.Rows.Count - 1), iPRECISION) < SMOKE_SPEED_COut)
                {
                    objDustAtt.SMOKE_SPEED = SMOKE_SPEED_COut.ToString() + "(L)";
                }
                else
                {
                    objDustAtt.SMOKE_SPEED = Math.Round(SMOKE_SPEED / (dt.Rows.Count - 1), iPRECISION).ToString();
                }

                iPRECISION = dt.Rows[0]["NM_SPEED"].ToString().Contains('.') ? dt.Rows[0]["NM_SPEED"].ToString().Split('.')[1].Length : 0;
                if (NM_SPEED_COut != 0 && Math.Round(NM_SPEED / (dt.Rows.Count - 1), iPRECISION) < NM_SPEED_COut)
                {
                    objDustAtt.NM_SPEED = NM_SPEED_COut.ToString() + "(L)";
                }
                else
                {
                    objDustAtt.NM_SPEED = Math.Round(NM_SPEED / (dt.Rows.Count - 1), iPRECISION).ToString();
                }

                iPRECISION = dt.Rows[0]["SO2_POTENCY"].ToString().Contains('.') ? dt.Rows[0]["SO2_POTENCY"].ToString().Split('.')[1].Length : 0;
                if (SO2_POTENCY_COut != 0 && Math.Round(SO2_POTENCY / (dt.Rows.Count - 1), iPRECISION) < SO2_POTENCY_COut)
                {
                    objDustAtt.SO2_POTENCY = SO2_POTENCY_COut.ToString() + "(L)";
                }
                else
                {
                    objDustAtt.SO2_POTENCY = Math.Round(SO2_POTENCY / (dt.Rows.Count - 1), iPRECISION).ToString();
                }

                iPRECISION = dt.Rows[0]["SO2_PER_POTENCY"].ToString().Contains('.') ? dt.Rows[0]["SO2_PER_POTENCY"].ToString().Split('.')[1].Length : 0;
                if (SO2_PER_POTENCY_COut != 0 && Math.Round(SO2_PER_POTENCY / (dt.Rows.Count - 1), iPRECISION) < SO2_PER_POTENCY_COut)
                {
                    objDustAtt.SO2_PER_POTENCY = SO2_PER_POTENCY_COut.ToString() + "(L)";
                }
                else
                {
                    objDustAtt.SO2_PER_POTENCY = Math.Round(SO2_PER_POTENCY / (dt.Rows.Count - 1), iPRECISION).ToString();
                }

                iPRECISION = dt.Rows[0]["SO2_DISCHARGE"].ToString().Contains('.') ? dt.Rows[0]["SO2_DISCHARGE"].ToString().Split('.')[1].Length : 0;
                if (SO2_DISCHARGE_COut != 0 && Math.Round(SO2_DISCHARGE / (dt.Rows.Count - 1), iPRECISION) < SO2_DISCHARGE_COut)
                {
                    objDustAtt.SO2_DISCHARGE = SO2_DISCHARGE_COut.ToString() + "(L)";
                }
                else
                {
                    objDustAtt.SO2_DISCHARGE = Math.Round(SO2_DISCHARGE / (dt.Rows.Count - 1), iPRECISION).ToString();
                }

                iPRECISION = dt.Rows[0]["NOX_POTENCY"].ToString().Contains('.') ? dt.Rows[0]["NOX_POTENCY"].ToString().Split('.')[1].Length : 0;
                if (NOX_POTENCY_COut != 0 && Math.Round(NOX_POTENCY / (dt.Rows.Count - 1), iPRECISION) < NOX_POTENCY_COut)
                {
                    objDustAtt.NOX_POTENCY = NOX_POTENCY_COut.ToString() + "(L)";
                }
                else
                {
                    objDustAtt.NOX_POTENCY = Math.Round(NOX_POTENCY / (dt.Rows.Count - 1), iPRECISION).ToString();
                }

                iPRECISION = dt.Rows[0]["NOX_PER_POTENCY"].ToString().Contains('.') ? dt.Rows[0]["NOX_PER_POTENCY"].ToString().Split('.')[1].Length : 0;
                if (NOX_PER_POTENCY_COut != 0 && Math.Round(NOX_PER_POTENCY / (dt.Rows.Count - 1), iPRECISION) < NOX_PER_POTENCY_COut)
                {
                    objDustAtt.NOX_PER_POTENCY = NOX_PER_POTENCY_COut.ToString() + "(L)";
                }
                else
                {
                    objDustAtt.NOX_PER_POTENCY = Math.Round(NOX_PER_POTENCY / (dt.Rows.Count - 1), iPRECISION).ToString();
                }

                iPRECISION = dt.Rows[0]["NOX_DISCHARGE"].ToString().Contains('.') ? dt.Rows[0]["NOX_DISCHARGE"].ToString().Split('.')[1].Length : 0;
                if (NOX_DISCHARGE_COut != 0 && Math.Round(NOX_DISCHARGE / (dt.Rows.Count - 1), iPRECISION) < NOX_DISCHARGE_COut)
                {
                    objDustAtt.NOX_DISCHARGE = NOX_DISCHARGE_COut.ToString() + "(L)";
                }
                else
                {
                    objDustAtt.NOX_DISCHARGE = Math.Round(NOX_DISCHARGE / (dt.Rows.Count - 1), iPRECISION).ToString();
                }

                iSuccess = new TMisMonitorDustattributeSo2ornoxLogic().Create(objDustAtt);
            }
            //更新结果表
            TMisMonitorDustinforVo objDustinforVo = new TMisMonitorDustinforLogic().Details(strBaseInfor_Id);
            TMisMonitorResultVo    objResultVo    = new TMisMonitorResultLogic().Details(objDustinforVo.SUBTASK_ID);
            dt = new TMisMonitorSampleInfoLogic().SelectResultForSO2(objResultVo.SAMPLE_ID);
            DataRow[] dr;
            //二氧化硫
            dr = dt.Select("ITEM_NAME='二氧化硫'");
            if (dr.Length > 0)
            {
                objResultVo    = new TMisMonitorResultVo();
                objResultVo.ID = dr[0]["ID"].ToString();
                if (objDustinforVo.MODUL_NUM.Length > 0)
                {
                    objResultVo.ITEM_RESULT = objDustAtt.SO2_PER_POTENCY;
                }
                else
                {
                    objResultVo.ITEM_RESULT = objDustAtt.SO2_POTENCY;
                }
                iSuccess = new TMisMonitorResultLogic().Edit(objResultVo);
            }
            //氮氧化物
            dr = dt.Select("ITEM_NAME='氮氧化物'");
            if (dr.Length > 0)
            {
                objResultVo    = new TMisMonitorResultVo();
                objResultVo.ID = dr[0]["ID"].ToString();
                if (objDustinforVo.MODUL_NUM.Length > 0)
                {
                    objResultVo.ITEM_RESULT = objDustAtt.NOX_PER_POTENCY;
                }
                else
                {
                    objResultVo.ITEM_RESULT = objDustAtt.NOX_POTENCY;
                }
                iSuccess = new TMisMonitorResultLogic().Edit(objResultVo);
            }
        }
        return(iSuccess ? "1" : "0");
    }