Ejemplo n.º 1
0
    private Dictionary <string, ListStatusByFac> BuildMonthObj(JArray Monthstatusjarr)
    {
        Dictionary <string, ListStatusByFac> MonthstatusObj = new Dictionary <string, ListStatusByFac>();

        foreach (JObject statusobj in Monthstatusjarr)
        {
            string           ObjFactory = statusobj["车间"].ToString();
            string           ObjTime    = statusobj["时间"].ToString();
            string           KeyStr     = ObjFactory + "|" + ObjTime;
            ListStatusbyRule newLStatu  = new ListStatusbyRule(statusobj["RuleId"].ToString(), ObjTime, ObjFactory, statusobj["项目"].ToString(), statusobj["规则类"].ToString(), float.Parse(((JValue)statusobj["阀值"]).Value.ToString()), (bool)(((JValue)statusobj["自动"]).Value));
            newLStatu.CollectionValue = float.Parse(((JValue)statusobj["采集值"]).Value.ToString());
            newLStatu.ListValue       = (bool)(((JValue)statusobj["挂牌"]).Value);
            if (MonthstatusObj.ContainsKey(KeyStr))              //有这个车间
            {
                MonthstatusObj[KeyStr].Factory_List_Status.Add(newLStatu);
            }
            else              //暂时没有这个车间
            {
                ListStatusByFac newfac = new ListStatusByFac(ObjFactory, ObjTime);
                newfac.Factory_List_Status.Add(newLStatu);
                MonthstatusObj.Add(KeyStr, newfac);
            }
        }
        return(MonthstatusObj);
    }
Ejemplo n.º 2
0
    public string CreateStatus()
    {
        string DBcommand;
        string source          = ConfigurationManager.ConnectionStrings["EPInfoSys"].ConnectionString.ToString();
        JArray Monthstatusjarr = JArray.Parse(this._MonthstatusStr);
        Dictionary <string, ListStatusByFac> MonthstatusObj = BuildMonthObj(Monthstatusjarr);
        string ListRulesStr = this.ReadRules();
        JArray LRulesObj    = JArray.Parse(ListRulesStr);

        foreach (JObject Ruleobj in LRulesObj)
        {
            //看Monthstatus有没有这个规则结果。如果有,那么更新则使用update语句,如果没有这个Id的规则结果,则使用insert语句
            string ObjFactory = Ruleobj["车间"].ToString();
            string ObjTime    = this._Time;
            string KeyStr     = ObjFactory + "|" + ObjTime;
            string Objid      = Ruleobj["RuleId"].ToString();
            int    hasrule;
            if (MonthstatusObj.ContainsKey(KeyStr))
            {
                hasrule = MonthstatusObj[KeyStr].Factory_List_Status.FindIndex(delegate(ListStatusbyRule sch) { return(sch.RuleId == Objid); });
            }
            else
            {
                hasrule = -1;
            }
            //不管有没有这个规则,都需要先实例化由rule生成的规则结果类,以录入或覆盖原来的规则
            ListStatusbyRule newLStatu = new ListStatusbyRule(Ruleobj["RuleId"].ToString(), ObjTime, ObjFactory, Ruleobj["项目"].ToString(), Ruleobj["规则"].ToString(), float.Parse(((JValue)Ruleobj["阀值"]).Value.ToString()), true);
            newLStatu.GetCValueFromDB();
            newLStatu.ListValue = newLStatu.SetListValue();
            int ifauto;
            int lvalue;
            if (newLStatu.IfAuto)
            {
                ifauto = 1;
            }
            else
            {
                ifauto = 0;
            }
            if (newLStatu.ListValue)
            {
                lvalue = 1;
            }
            else
            {
                lvalue = 0;
            }
            if (hasrule == -1)                          //没有这个规则
            {
                if (MonthstatusObj.ContainsKey(KeyStr)) //有车间无规则,直接在车间里面加这个规则
                {
                    MonthstatusObj[KeyStr].Factory_List_Status.Add(newLStatu);
                }
                else                  //规则车间都没有
                {
                    ListStatusByFac newfac = new ListStatusByFac(ObjFactory, ObjTime);
                    newfac.Factory_List_Status.Add(newLStatu);
                    MonthstatusObj.Add(KeyStr, newfac);
                }
                DBcommand =
                    @"INSERT INTO [EPInfoSystem].[dbo].[ListStatus]
											   ([时间]
											   ,[车间]
											   ,[项目]
											   ,[RuleId]
											   ,[规则类]
											   ,[阀值]
											   ,[采集值]
											   ,[自动]
											   ,[挂牌])
										 VALUES
											   ('"                                             + this._Time + @"'
											   ,'"                                             + ObjFactory + @"'
											   ,'"                                             + newLStatu.Type + @"'
											   ,'"                                             + newLStatu.RuleId + @"'
											   ,'"                                             + newLStatu.RuleType + @"'
											   ,'"                                             + newLStatu.ThresHold + @"'
											   ,'"                                             + newLStatu.CollectionValue + @"'
											   ,"                                             + ifauto + @"
											   ,"                                             + lvalue + @"
												)"                                                ;
            }
            else              //有这个规则,修改Month类中的这个规则,然后使用update语句而不是insert
            {
                MonthstatusObj[KeyStr].Factory_List_Status[hasrule] = newLStatu;
                DBcommand = @"
								UPDATE [EPInfoSystem].[dbo].[ListStatus]
								   SET 
									   [车间] = '"                                     + ObjFactory + @"'
									  ,[项目] = '"                                     + newLStatu.Type + @"'									
									  ,[规则类] = '"                                     + newLStatu.RuleType + @"'
									  ,[阀值] = "                                     + newLStatu.ThresHold + @"
									  ,[采集值] ="                                     + newLStatu.CollectionValue + @"
									  ,[自动] = "                                     + ifauto + @"
									  ,[挂牌] = "                                     + lvalue + @"
								 WHERE [时间] ='"                                 + this._Time + "'AND [RuleId]=" + newLStatu.RuleId;
            }
            DBOper dbcom = new DBOper(source, DBcommand);
            string _ret  = dbcom.ReturnRows();
        }
        return(JsonConvertHelper.SerializeObject(MonthstatusObj));
    }