private object[] LoadDataSource()
        {
            string byTimeType = UCGroupConditions1.UserSelectByTimeType;

            string exceptionOrDuty = UCGroupConditions1.UserExceptionOrDuty;
            string dataField       = "ExceptionCode";

            if (exceptionOrDuty == NewReportExceptionOrDuty.Exception)
            {
                dataField = "ExceptionDesc";
            }
            else if (exceptionOrDuty == NewReportExceptionOrDuty.Duty)
            {
                dataField = "DutyDesc";
            }

            //内部SQL
            ReportSQLEngine engineInner = new ReportSQLEngine(this.DataProvider, this.languageComponent1);

            engineInner.DetailedCoreTable = GetCoreTableDetail();
            engineInner.Formular          = "SUM(lostmanhour) AS lostmanhour";
            engineInner.WhereCondition    = this.UCWhereConditions1.GetWhereSQLStatement(preferredTableInner, byTimeType, true, 0);
            engineInner.GroupFieldsX      = this.UCGroupConditions1.GetGroupFieldList(preferredTableInner, "X");
            engineInner.GroupFieldsY      = this.UCGroupConditions1.GetGroupFieldList(preferredTableInner, "Y");
            if (engineInner.GroupFieldsY.Trim().Length > 0)
            {
                engineInner.GroupFieldsY += ",";
            }
            engineInner.GroupFieldsY += dataField;


            //外部SQL
            string groupFields = string.Empty;

            groupFields += this.UCGroupConditions1.GetGroupFieldAliasList(preferredTable, "X");
            if (groupFields.IndexOf("dweek") == 0 || groupFields.IndexOf("dmonth") == 0)
            {
                groupFields += ",year";
            }
            groupFields += "," + dataField;
            string groupFieldsY = this.UCGroupConditions1.GetGroupFieldAliasList(preferredTable, "Y");

            if (groupFieldsY.Trim().Length > 0)
            {
                groupFields += "," + groupFieldsY;
            }

            ReportSQLEngine engine = new ReportSQLEngine(this.DataProvider, this.languageComponent1);

            engine.DetailedCoreTable = engineInner.GetReportSQL();
            engine.Formular          = groupFields + ",**.lostmanhour, **.lostmanhour / SUM(**.lostmanhour) OVER() AS lostmanhourpercent";
            engine.WhereCondition    = string.Empty;
            engine.GroupFieldsX      = string.Empty;
            engine.GroupFieldsY      = string.Empty;
            engine.OrderFields       = groupFields;

            return(engine.GetReportDataSource(byTimeType, 0));;
        }
Ejemplo n.º 2
0
        private object[] LoadDataSource(bool isForCompare, bool roundDate)
        {
            string inputOutput  = UCWhereConditions1.UserSelectInputOutput;
            string byTimeType   = UCGroupConditions1.UserSelectByTimeType;
            string compareType  = UCGroupConditions1.UserSelectCompareType;
            string completeType = UCGroupConditions1.UserSelectCompleteType;

            if (!isForCompare)
            {
                compareType = string.Empty;
            }

            //用于环比同期比时的修改时间过滤条件
            int dateAdjust = 0;

            if (string.Compare(compareType, NewReportCompareType.LastYear, true) == 0)
            {
                dateAdjust = -12;
            }
            else if (string.Compare(compareType, NewReportCompareType.Previous, true) == 0)
            {
                dateAdjust = -1;
            }

            bool bigSSChecked = UCGroupConditions1.BigSSChecked;
            bool opResChecked = UCGroupConditions1.OPChecked || UCGroupConditions1.ResChecked;
            bool segSSChecked = UCGroupConditions1.SegChecked || UCGroupConditions1.SSChecked;


            //拼内部SQL
            string groupFieldsXInner = this.UCGroupConditions1.GetGroupFieldList(preferredTableInner, "X");
            string groupFieldsYInner = this.UCGroupConditions1.GetGroupFieldList(preferredTableInner, "Y");

            if (groupFieldsYInner.Trim().Length > 0)
            {
                groupFieldsYInner += ",";
            }
            groupFieldsYInner += "tblmesentitylist.tpcode";
            if (groupFieldsYInner.IndexOf("shiftday") < 0 && byTimeType != NewReportByTimeType.ShiftDay)
            {
                groupFieldsYInner += ",**.shiftday";
            }

            ReportSQLEngine engineInner = new ReportSQLEngine(this.DataProvider, this.languageComponent1);

            engineInner.DetailedCoreTable = GetDetailedCoreTable();
            engineInner.Formular          = GetFormularInner(inputOutput, compareType, completeType, bigSSChecked, opResChecked, segSSChecked);
            engineInner.WhereCondition    = this.UCWhereConditions1.GetWhereSQLStatement(preferredTableInner, byTimeType, roundDate, dateAdjust);
            engineInner.GroupFieldsX      = groupFieldsXInner;
            engineInner.GroupFieldsY      = groupFieldsYInner;


            //拼外部SQL
            string groupFieldsX = this.UCGroupConditions1.GetGroupFieldAliasList(preferredTable, "X");
            string groupFieldsY = this.UCGroupConditions1.GetGroupFieldAliasList(preferredTable, "Y");

            ReportSQLEngine engine = new ReportSQLEngine(this.DataProvider, this.languageComponent1);

            engine.DetailedCoreTable = engineInner.GetReportSQL();
            engine.Formular          = GetFormular(inputOutput, compareType, completeType, bigSSChecked, opResChecked, segSSChecked);
            engine.WhereCondition    = string.Empty;
            engine.HavingCondition   = GetHavingCondition(inputOutput, compareType, completeType, bigSSChecked, opResChecked, segSSChecked);
            engine.GroupFieldsX      = groupFieldsX;
            engine.GroupFieldsY      = groupFieldsY;

            return(engine.GetReportDataSource(byTimeType, dateAdjust));;
        }
        private object[] LoadDataSource(bool isForCompare, bool roundDate)
        {
            string inputOutput  = UCWhereConditions1.UserSelectInputOutput;
            string byTimeType   = UCGroupConditions1.UserSelectByTimeType;
            string compareType  = UCGroupConditions1.UserSelectCompareType;
            string completeType = UCGroupConditions1.UserSelectCompleteType;

            if (!isForCompare)
            {
                compareType = string.Empty;
            }

            //用于环比同期比时的修改时间过滤条件
            int dateAdjust = 0;

            if (string.Compare(compareType, NewReportCompareType.LastYear, true) == 0)
            {
                dateAdjust = -12;
            }
            else if (string.Compare(compareType, NewReportCompareType.Previous, true) == 0)
            {
                dateAdjust = -1;
            }

            bool bigSSChecked = UCGroupConditions1.BigSSChecked;
            bool opResChecked = UCGroupConditions1.OPChecked || UCGroupConditions1.ResChecked;
            bool segSSChecked = UCGroupConditions1.SegChecked || UCGroupConditions1.SSChecked;


            //内部SQL
            string groupFieldsYInner = this.UCGroupConditions1.GetGroupFieldList(preferredTableInner, "Y");

            if (groupFieldsYInner.Trim().Length > 0)
            {
                groupFieldsYInner += ",";
            }
            groupFieldsYInner += "**.ecsgcode";

            ReportSQLEngine engineInner = new ReportSQLEngine(this.DataProvider, this.languageComponent1);

            engineInner.DetailedCoreTable = GetCoreTableDetail();
            engineInner.Formular          = GetFormular(inputOutput, compareType, completeType, bigSSChecked, opResChecked, segSSChecked);
            engineInner.WhereCondition    = this.UCWhereConditions1.GetWhereSQLStatement(preferredTableInner, byTimeType, roundDate, dateAdjust);
            engineInner.GroupFieldsX      = string.Empty;;
            engineInner.GroupFieldsY      = groupFieldsYInner;


            //外部SQL
            string groupFields = string.Empty;

            groupFields += this.UCGroupConditions1.GetGroupFieldAliasList(preferredTable, "Y");
            if (groupFields.Trim().Length > 0)
            {
                groupFields += ",";
            }
            groupFields += "**.ecsgcode";

            ReportSQLEngine engine = new ReportSQLEngine(this.DataProvider, this.languageComponent1);

            engine.DetailedCoreTable = engineInner.GetReportSQL();
            engine.Formular          = groupFields + ",**.errorcount, **.errorcount / SUM(**.errorcount) OVER() AS errorpercent";
            engine.WhereCondition    = string.Empty;
            engine.GroupFieldsX      = string.Empty;
            engine.GroupFieldsY      = string.Empty;
            engine.OrderFields       = groupFields;

            return(engine.GetReportDataSource(byTimeType, dateAdjust));;
        }
Ejemplo n.º 4
0
        private string GetCoreTableDetail(bool isForCompare, bool roundDate)
        {
            string returnValue = string.Empty;

            string inputOutput  = UCWhereConditions1.UserSelectInputOutput;
            string byTimeType   = UCGroupConditions1.UserSelectByTimeType;
            string compareType  = UCGroupConditions1.UserSelectCompareType;
            string completeType = UCGroupConditions1.UserSelectCompleteType;

            if (!isForCompare)
            {
                compareType = string.Empty;
            }

            //用于环比同期比时的修改时间过滤条件
            int dateAdjust = 0;

            if (string.Compare(compareType, NewReportCompareType.LastYear, true) == 0)
            {
                dateAdjust = -12;
            }
            else if (string.Compare(compareType, NewReportCompareType.Previous, true) == 0)
            {
                dateAdjust = -1;
            }

            bool bigSSChecked = UCGroupConditions1.BigSSChecked;
            bool opResChecked = UCGroupConditions1.OPChecked || UCGroupConditions1.ResChecked;
            bool segSSChecked = UCGroupConditions1.SegChecked || UCGroupConditions1.SSChecked;

            string groupFieldsXForError = this.UCGroupConditions1.GetGroupFieldList(preferredTableForError, "X");
            string groupFieldsYForError = this.UCGroupConditions1.GetGroupFieldList(preferredTableForError, "Y");

            ReportSQLEngine engineForError = new ReportSQLEngine(this.DataProvider, this.languageComponent1);

            engineForError.CoreTableAlias    = GetCoreTableAliasForError();
            engineForError.DetailedCoreTable = GetCoreTableDetailForError();
            engineForError.Formular          = GetFormularForError(inputOutput, compareType, completeType, bigSSChecked, opResChecked, segSSChecked);
            engineForError.WhereCondition    = this.UCWhereConditions1.GetWhereSQLStatement(preferredTableForError, byTimeType, roundDate, dateAdjust);
            engineForError.GroupFieldsX      = groupFieldsXForError;
            engineForError.GroupFieldsY      = groupFieldsYForError;

            string errorSQL = engineForError.GetReportSQL();

            string groupFieldsXForOutput = this.UCGroupConditions1.GetGroupFieldList(preferredTableForOutput, "X");
            string groupFieldsYForOutput = this.UCGroupConditions1.GetGroupFieldList(preferredTableForOutput, "Y");

            ReportSQLEngine engineForOutput = new ReportSQLEngine(this.DataProvider, this.languageComponent1);

            engineForOutput.CoreTableAlias = GetCoreTableAliasForOutput();
            engineForOutput.Formular       = GetFormularForOutput(inputOutput, compareType, completeType, bigSSChecked, opResChecked, segSSChecked);
            engineForOutput.WhereCondition = this.UCWhereConditions1.GetWhereSQLStatement(preferredTableForOutput, byTimeType, roundDate, dateAdjust);
            engineForOutput.GroupFieldsX   = groupFieldsXForOutput;
            engineForOutput.GroupFieldsY   = groupFieldsYForOutput;

            string outputSQL = engineForOutput.GetReportSQL();

            //抓到SQL后,把错误的地方替换掉
            string replaceWhere = "AND tblline2crew.sscode = tblrptsoqty.sscode AND tblline2crew.shiftcode = tblrptsoqty.shiftcode";
            string replaceAt    = "";

            if (outputSQL.Contains(replaceWhere))
            {
                replaceAt = " left outer join tblmesentitylist tblmesentitylist on tblmesentitylist.serial = tblrptsoqty.tblmesentitylist_serial "
                            + "AND tblline2crew.shiftcode = tblmesentitylist.shiftcode AND tblline2crew.sscode = tblmesentitylist.sscode ";
                outputSQL = outputSQL.Replace(replaceWhere, replaceAt);
            }
            if (outputSQL.Contains("tblitemclass tblitemclass ON tblitemclass.firstclass = tblrptsoqty.firstclass"))
            {
                replaceWhere = "tblitemclass tblitemclass ON tblitemclass.firstclass = tblrptsoqty.firstclass";
                replaceAt    = " tblmaterial tblmaterial ON tblmaterial.mcode = tblrptsoqty.itemcode "
                               + "LEFT OUTER JOIN tblitemclass tblitemclass ON tblitemclass.itemgroup = tblmaterial.mgroup ";
                outputSQL = outputSQL.Replace(replaceWhere, replaceAt);
            }


            string groupFieldAliasX = this.UCGroupConditions1.GetGroupFieldAliasList(preferredTable, "X");
            string groupFieldAliasY = this.UCGroupConditions1.GetGroupFieldAliasList(preferredTable, "Y");

            returnValue += "SELECT " + GetFieldWithTableName("a", groupFieldAliasX, groupFieldAliasY) + ",output,errorcount " + "\r\n";
            returnValue += "FROM " + "\r\n";
            returnValue += "(" + outputSQL + ") a " + "\r\n";
            returnValue += "LEFT OUTER JOIN (" + errorSQL + ") b " + "\r\n";
            returnValue += GetJoinOnSQL("a", "b", groupFieldAliasX, groupFieldAliasY);

            return(returnValue);
        }