예제 #1
0
        public override object ConvertFrom(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value)
        {
            //return base.ConvertFrom(context, culture, value);
            QcProTaskJobDescriptor ds = context.Instance as QcProTaskJobDescriptor;
            QcJob  job = ds.RowObject as QcJob;
            string v   = value.ToString();

            if (job != null)
            {
                var s = 类别s.Where(t => t.Name == v).FirstOrDefault();
                select = s;
                if (s != null)
                {
                    if (job["方案ID"].Length > s.Code.Length)
                    {
                        if (job["方案ID"].Substring(0, s.Code.Length) != s.Code)
                        {
                            job["方案ID"] = "";
                        }
                    }
                    return(s.Code);
                }
            }
            return("");
        }
예제 #2
0
        /// <summary>
        /// 根据启动类型自动创建系统作业,但缺省了方案ID,不成功时返回null
        /// </summary>
        /// <param name="starttype"></param>
        /// <returns></returns>
        public static QcJob Get_CreatQuickJob(string starttype)
        {
            QcTask task = QcTask.Get_CreatQuickTask();

            if (task != null)
            {
                QcJob chekjob = QcJob.GetJob(task).Where(t => t["启动类型"] == starttype).FirstOrDefault();
                if (chekjob == null)
                {
                    QcJob job = new QcJob(task);
                    job.Name     = string.Format("我的 {0} 快速作业", starttype);
                    job["启动类型"]  = starttype;
                    job["作业员"]   = QcUser.User.UserID;
                    job["作业优先级"] = "1";
                    job["作业状态"]  = "未启动";
                    job["作业描述"]  = "该作业为系统自动分配的快速作业";
                    job["备注"]    = "#*9999*#";
                    job.Update();
                    return(job);
                }
                else
                {
                    return(chekjob);
                }
            }
            else
            {
                return(null);
            }
        }
예제 #3
0
        public override object ConvertFrom(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value)
        {
            //return base.ConvertFrom(context, culture, value);
            QcProTaskJobDescriptor ds = context.Instance as QcProTaskJobDescriptor;
            QcJob job = ds.RowObject as QcJob;

            string v = value.ToString();

            if (v.IndexOf('|') > 0)
            {
                v = v.Split('|')[1];
            }
            if (job != null)
            {
                var s = 方案s.Where(t => t["方案ID"] == v).FirstOrDefault();
                if (s != null)
                {
                    job["产品级别编码"]   = s["产品级别编码"];
                    job["产品类别编码"]   = s["产品类别编码"];
                    job["质量评价模型类型"] = s["产品类别名称"];
                }
            }
            QcCheckProject cp = 方案s.First(t => t.Name == value.ToString());

            return(cp.Code);
        }
예제 #4
0
 public static void ResetSetNetworkRecentlyFile()
 {
     lst_recentlyfile.Clear();
     QcJob.GetMyJob(QcUser.User).Where(t => !string.IsNullOrEmpty(t["方案ID"])).OrderBy(t => t["修改日期"]).ToList().ForEach(j => lst_recentlyfile.Add(j.Code));
     if (NearestFileChanged != null)
     {
         NearestFileChanged(lst_recentlyfile);
     }
 }
예제 #5
0
        public string GetNextCode()
        {
            string prefix = DbHelper.GetDateTime().ToString("yyyy-MM-dd") + "-";

            return(QcCode.GetNextNumber(prefix,
                                        QcJob.GetJob("作业编号 like '" + prefix + "%'"),
                                        11, 4, "0000"
                                        ));
        }
예제 #6
0
        /// <summary>
        /// 根据名称,类型,方案创建作业,不成功时返回null
        /// </summary>
        /// <param name="jobname"></param>
        /// <param name="starttype"></param>
        /// <param name="chkprjid"></param>
        /// <returns></returns>
        public static QcJob CreatQuickJob(string jobname, string starttype, string productlevelcode, string producttypecode, string chkprjid)
        {
            QcTask task = QcTask.Get_CreatQuickTask();

            if (task != null)
            {
                QcJob job = new QcJob(task);
                job.Name      = jobname;
                job["启动类型"]   = starttype;
                job["作业员"]    = QcUser.User.UserID;
                job["产品级别编码"] = productlevelcode;
                job["产品类别编码"] = producttypecode;
                job["方案ID"]   = chkprjid;
                job["作业优先级"]  = "1";
                job["作业状态"]   = "未启动";
                job["修改日期"]   = DateTime.Now.ToString();
                job.Update();
                return(job);
            }
            else
            {
                return(null);
            }
        }
예제 #7
0
        public static IEnumerable <QcCheckData> GetCheckData(QcJob job)
        {
            var rows = DbHelper.Query("select * from " + QcCheckData.TableName + " where 作业编号='" + job.Code + "'");

            return(rows.Select(t => new QcCheckData(t)));
        }
예제 #8
0
        public static IEnumerable <QcEvaData> GetEvaData(QcJob job)
        {
            // QcProductLevel level = QcProductLevel.QcProductLevels.FirstOrDefault(t => t.Code == job["产品级别编码"]);
            QcCheckProject prj = QcCheckProject.GetCheckProjectByid(job["方案ID"]);


            if (prj != null)
            {
                QcProductType type = QcProductType.GetProductTypeById(prj["产品类别编码"]);

                Dictionary <string, QcCheckEntry> lst = new Dictionary <string, QcCheckEntry>();
                type.Nodes.ForEach(t => t.Nodes.ForEach(tt => tt.Nodes.ForEach(ttt => lst.Add(ttt.Code, ttt))));

                /* var rows = DbHelper.Query("select distinct d.数据名称,j.作业编号,d.数据id,r.检查项编码,e.错误id,e.错漏数量,e.检查对象,e.错误描述,e.错漏类别 from qc_pro_checkdata d,qc_pro_job j,qc_ins_checkproject p,qc_ins_checkrule r,qc_ins_erorecode e " +
                 * "where j.作业编号=d.作业编号  and e.规则id=r.规则id  and e.数据id=d.数据id and e.错漏类别!='Undefined' and j.作业编号='" + job.Code + "'");
                 * */
                /*var rows = DbHelper.Query("select  dd.数据名称,dd.作业编号,dd.数据id,dd.检查项编码,e.错误id,e.错漏数量,e.检查对象,e.错误描述,e.错漏类别  " +
                 * " from  (select distinct d.数据名称,j.作业编号,d.数据id,r.检查项编码 " +
                 * " from qc_pro_checkdata d,qc_pro_job j,qc_ins_checkrule r " +
                 * "where j.作业编号=d.作业编号 and  r.方案id=j.方案id    and " +
                 * "j.作业编号 = '" + job.Code + "') dd  left join qc_ins_erorecode e on e.数据id=dd.数据id");
                 * */
                string sql = "select distinct d.数据名称,d.作业编号,d.数据id,ce.检查项编码,ce.结果值枚举 " +
                             " from qc_pro_checkdata d,qc_pro_job j,qc_pro_producttype pt,qc_eva_quaelement qe,qc_eva_subquaelement sqe,qc_eva_checkentry ce " +
                             " where   j.作业编号=d.作业编号 and  j.产品类别编码=pt.产品类别编码 and pt.产品类别编码=qe.产品类别编码 and qe.质量元素编码=sqe.质量元素编码 and sqe.质量子元素编码=ce.质量子元素编码 and " +
                             " j.作业编号 like '" + job.Code + "' order by d.数据名称  ";
#if GenErrorCode
                string errorsql = "select cd.数据id,cr.检查项编码,ec.错误id,ec.错漏数量,ec.检查对象,ec.错误描述,ec.错漏类别,ec.描述类型,ec.参数 " +
                                  " from qc_ins_erorecode ec, Qc_Pro_Checkdata cd, Qc_Ins_Checkrule cr,qc_pro_job j " +
                                  " where j.方案id=cr.方案id  and cd.作业编号=j.作业编号 and ec.数据id=cd.数据id and ec.规则id=cr.规则id and j.作业编号='" + job.Code + "'";
                var    errors      = DbHelper.Query(errorsql);
                var    errorgroups = errors.GroupBy(t => t["数据id"].ToString());
                string crsql       = "select * from  Qc_Pro_Job j,Qc_Ins_Checkproject cp,qc_ins_checkrule cr where  j.方案id=cp.方案id and cp.方案id=cr.方案id  and  j.作业编号='" + job.Code + "'";
                var    crs         = DbHelper.Query(crsql).Select(t => new { ID = t["规则ID"], Code = t["检查项编码"] });
#endif
                var rows = DbHelper.Query(sql);
                if (rows == null)
                {
                    return(null);
                }


                var datas             = rows.Select(t => new QcEvaDataRow(t, lst[t.Field <string>("检查项编码")]));
                List <QcEvaData> data = new List <QcEvaData>();


                foreach (var ds in datas.GroupBy(dst => dst.数据ID))
                {
                    #if GenErrorCode
                    var errorgroup = errorgroups.FirstOrDefault(t => t.Key == ds.First().数据ID);
#endif
                    string recodesql  = "select * from qc_eva_checkrecode t where 数据ID='" + ds.First().数据ID + "'";
                    var    recoderows = DbHelper.Query(recodesql);
                    IEnumerable <QcEvaCheckReCode> recodes = null;
                    if (recoderows != null)
                    {
                        recodes = recoderows.Select(t => new QcEvaCheckReCode(t));
                    }
                    QcEvaData evadata = new QcEvaData(ds.First());
                    data.Add(evadata);
                    foreach (var qds in ds.GroupBy(qdst => qdst.质量元素编码))
                    {
                        QcEvaQaData evaqadata = new QcEvaQaData(qds.First().checkentry.Parent.Parent);
                        evadata.Add(evaqadata);
                        foreach (var sqds in qds.GroupBy(sqdst => sqdst.质量子元素编码))
                        {
                            QcEvaSubQaData subqadata = new QcEvaSubQaData(sqds.First().checkentry.Parent);
                            evaqadata.Add(subqadata);
                            foreach (var ceds  in sqds.GroupBy(cedst => cedst.检查项编码))
                            {
                                QcEvaCheckReCode recode = null;
                                if (recodes != null)
                                {
                                    recode = recodes.FirstOrDefault(t => t["检查项编码"] == ceds.First().检查项编码);
                                }
                                QcEvaCheckData checkdata = new QcEvaCheckData(ceds.First(), recode);
                                subqadata.Add(checkdata);
#if GenErrorCode
                                if (errorgroup != null)
                                {
                                    //foreach (var dr in errorgroup.Where(
                                    //   t => (t["数据id"].ToString() == ceds.First().数据ID) && (t["检查项编码"].ToString() == ceds.First().检查项编码)))
                                    // {
                                    //     checkdata.Add(new QcEvaDataRow(dr, ceds.First().checkentry));
                                    // }
                                }
                                else
                                {
                                    var dr = ceds.First();

                                    int  count      = r.Next() % 4 + 65;
                                    char change     = (char)count;
                                    int  n          = 1;
                                    var  checkentry = dr.checkentry;
                                    //"Y/N", "R:R0", "M;M0", "A?B?C?D?"
                                    switch (checkentry["结果值枚举"])
                                    {
                                    case "M;M0":
                                        n = 1;
                                        break;

                                    default:
                                        n = r.Next() % 6 + 5;
                                        break;
                                    }
                                    for (int i = 0; i < n; i++)
                                    {
                                        QcErrorCode er = new QcErrorCode();
                                        switch (checkentry["结果值枚举"])
                                        {
                                        case "M;M0":
                                            er["参数"] = "M=5";
                                            break;

                                        case "R:R0":
                                            er["参数"] = "N=" + (2000 + r.Next() % 13000).ToString();
                                            break;

                                        default:
                                            n = r.Next() % 6 + 5;
                                            break;
                                        }
                                        er["检查对象"] = "11111";
                                        er["错误描述"] = "AAA";
                                        er["数据ID"] = dr.数据ID;
                                        er["作业编号"] = dr["作业编号"];
                                        er["描述类型"] = "1";
                                        er["是否确认"] = "1";
                                        er["错漏数量"] = "1";
                                        er["错漏类别"] = change.ToString();
                                        er["规则ID"] = crs.Where(t => t.Code.ToString() == dr.检查项编码).First().ID.ToString();
                                        er.Update();
                                    }
                                }
#endif
                            }
                        }
                    }
                    evadata.Calc();
                }
                return(data);
            }
            return(null);
        }
예제 #9
0
 /// <summary>
 /// 清除当前作业的检查数据,请谨慎使用该方法
 /// </summary>
 /// <returns></returns>
 public static void ClearnAllCheckData(QcJob job)
 {
     DbHelper.Execute("delete from " + QcCheckData.TableName + " where 作业编号='" + job.Code + "'");
 }