Ejemplo n.º 1
0
        public virtual bool Edit(DbConn PubConn, tb_version_model model)
        {
            List <ProcedureParameter> Par = new List <ProcedureParameter>()
            {
                //
                new ProcedureParameter("@taskid", model.taskid),
                //
                new ProcedureParameter("@version", model.version),
                //
                new ProcedureParameter("@versioncreatetime", model.versioncreatetime),
                //压缩文件二进制文件
                new ProcedureParameter("@zipfile", model.zipfile),
                //
                new ProcedureParameter("@zipfilename", model.zipfilename),
                new ProcedureParameter("@commit_id", model.commit_id)

                // new ProcedureParameter("@assemblyversion",   model.assemblyversion??string.Empty)
            };

            Par.Add(new ProcedureParameter("@id", model.id));

            int rev = PubConn.ExecuteSql("update tb_version set taskid=@taskid,version=@version,versioncreatetime=@versioncreatetime,zipfile=@zipfile,zipfilename=@zipfilename,Commit_ID=@commit_id where id=@id", Par);

            return(rev == 1);
        }
        public static bool AddVersion(tb_version_model model)
        {
            tb_version_dal dal = new tb_version_dal();

            using (DbConn PubConn = DbConfig.CreateConn(Config.TaskConnectString))
            {
                PubConn.Open();
                return(dal.Add(PubConn, model));
            }
        }
        public JsonResult GetVersion(int taskid, int version)

        {
            // http: //10.1.13.28:8046/OpenApi/GetVersion
            return(this.Visit(Core.EnumUserRole.None, () =>
            {
                using (DbConn PubConn = DbConfig.CreateConn(Config.TaskConnectString))
                {
                    PubConn.Open();
                    tb_version_dal dal = new tb_version_dal();
                    tb_version_model model = dal.GetSimpleVersion(PubConn, taskid, version);
                    return Json(model);
                }
            }));
        }
        public JsonResult Copy(int id)
        {
            tb_task_model     model         = new tb_task_model();
            tb_version_model  vermodel      = new tb_version_model();
            tb_tempdata_model tempdatamodel = new tb_tempdata_model();

            return(this.Visit(Core.EnumUserRole.Admin, () =>
            {
                try
                {
                    tb_task_dal dal = new tb_task_dal();
                    tb_version_dal dalversion = new tb_version_dal();
                    tb_tempdata_dal tempdatadal = new tb_tempdata_dal();

                    using (DbConn PubConn = DbConfig.CreateConn(Config.TaskConnectString))
                    {
                        PubConn.Open();

                        //取出需要复制的数据
                        model = dal.GetOneTask(PubConn, id);
                        tempdatamodel = tempdatadal.GetByTaskID(PubConn, id);
                        vermodel = dalversion.GetCurrentVersion(PubConn, id, model.taskversion);

                        //分别插入
                        model.taskstate = 0;
                        model.taskcreatetime = DateTime.Now;
                        model.taskversion = 1;
                        int taskid = dal.AddTask(PubConn, model);

                        vermodel.taskid = taskid;
                        vermodel.version = 1;
                        vermodel.versioncreatetime = DateTime.Now;
                        vermodel.commit_id = string.Empty;
                        dalversion.Add(PubConn, vermodel);

                        tempdatamodel.taskid = taskid;
                        tempdatamodel.tempdatalastupdatetime = DateTime.Now;
                        tempdatadal.Add(PubConn, tempdatamodel);
                    }
                    return Json(new { code = 1, state = "复制成功" });
                }
                catch (Exception ex)
                {
                    return Json(new { code = -1, msg = ex.Message });
                }
            }));
        }
Ejemplo n.º 5
0
 public List <tb_version_model> GetTaskVersion(DbConn PubConn, int taskid)
 {
     return(SqlHelper.Visit(ps =>
     {
         ps.Add("@taskid", taskid);
         string sql = "select version,zipfilename from tb_version where taskid=@taskid";
         DataSet ds = new DataSet();
         PubConn.SqlToDataSet(ds, sql, ps.ToParameters());
         List <tb_version_model> model = new List <tb_version_model>();
         foreach (DataRow dr in ds.Tables[0].Rows)
         {
             tb_version_model m = CreateModel(dr);
             model.Add(m);
         }
         return model;
     }));
 }
Ejemplo n.º 6
0
        public virtual bool Add(DbConn PubConn, tb_version_model model)
        {
            List <ProcedureParameter> Par = new List <ProcedureParameter>()
            {
                //
                new ProcedureParameter("@taskid", model.taskid),
                //
                new ProcedureParameter("@version", model.version),
                //
                new ProcedureParameter("@versioncreatetime", model.versioncreatetime),
                //压缩文件二进制文件
                new ProcedureParameter("@zipfile", model.zipfile),
                //
                new ProcedureParameter("@zipfilename", model.zipfilename)
            };
            int rev = PubConn.ExecuteSql(@"insert into tb_version(taskid,version,versioncreatetime,zipfile,zipfilename)
										   values(@taskid,@version,@versioncreatetime,@zipfile,@zipfilename)"                                        , Par);

            return(rev == 1);
        }
Ejemplo n.º 7
0
        public virtual tb_version_model CreateModel(DataRow dr)
        {
            var o = new tb_version_model();

            //
            if (dr.Table.Columns.Contains("id"))
            {
                o.id = dr["id"].Toint();
            }
            //
            if (dr.Table.Columns.Contains("taskid"))
            {
                o.taskid = dr["taskid"].Toint();
            }
            //
            if (dr.Table.Columns.Contains("version"))
            {
                o.version = dr["version"].Toint();
            }
            //
            if (dr.Table.Columns.Contains("versioncreatetime"))
            {
                o.versioncreatetime = dr["versioncreatetime"].ToDateTime();
            }
            //压缩文件二进制文件
            if (dr.Table.Columns.Contains("zipfile"))
            {
                o.zipfile = dr["zipfile"].ToBytes();
            }
            //
            if (dr.Table.Columns.Contains("zipfilename"))
            {
                o.zipfilename = dr["zipfilename"].Tostring();
            }
            //
            if (dr.Table.Columns.Contains("assemblyversion"))
            {
                o.assemblyversion = dr["assemblyversion"].Tostring();
            }
            return(o);
        }
        public JsonResult Rollback(int versionid)
        {
            return(this.Visit(Core.EnumUserRole.Admin, () =>
            {
                try
                {
                    string currentVersion = "1.01";
                    var latestVersion = TaskHelper.GetLatestBusinessVersion();
                    if (latestVersion != null)
                    {
                        double version;
                        double.TryParse(latestVersion.businessversion, out version);
                        currentVersion = (version + 0.01).ToString("F2");
                    }

                    List <taskjson_model> taskjsonList = new List <taskjson_model>();
                    var versioninfo = TaskHelper.GetBusinessVersion(versionid);
                    if (versioninfo != null)
                    {
                        var taskList = GetTaskJsonList(versioninfo.taskjson);
                        foreach (var item in taskList)
                        {
                            var totask = TaskHelper.GetTask(item.id);
                            if (totask != null)
                            {
                                var totaskversion = TaskHelper.GetVersion(totask.id, totask.taskversion);
                                var fromtaskversion = TaskHelper.GetVersion(totask.id, item.v);
                                //停止原来的任务
                                bool result = TaskHelper.AddTaskCommand(new tb_command_model
                                {
                                    command = "",
                                    commandcreatetime = DateTime.Now,
                                    taskid = totask.id,
                                    nodeid = totask.nodeid,
                                    commandname = EnumTaskCommandName.StopTask.ToString(),
                                    commandstate = (int)EnumTaskCommandState.None
                                });
                                var model = new tb_version_model
                                {
                                    taskid = totask.id,
                                    version = totaskversion.version + 1,
                                    versioncreatetime = DateTime.Now,
                                    zipfile = fromtaskversion.zipfile,
                                    zipfilename = fromtaskversion.zipfilename
                                };
                                TaskHelper.AddVersion(model);
                                TaskHelper.AddTaskCommand(new tb_command_model
                                {
                                    command = "",
                                    commandcreatetime = DateTime.Now,
                                    taskid = totask.id,
                                    nodeid = totask.nodeid,
                                    commandname = EnumTaskCommandName.StartTask.ToString(),
                                    commandstate = (int)EnumTaskCommandState.None
                                });
                                totask.taskversion = model.version;
                                totask.taskupdatetime = DateTime.Now;
                                totask.businessversion = currentVersion;
                                TaskHelper.UpdateTask(totask);
                                taskjsonList.Add(new taskjson_model {
                                    id = totask.id, v = model.version, n = 1
                                });
                            }
                        }
                        using (DbConn PubConn = DbConfig.CreateConn(Config.TaskConnectString))
                        {
                            PubConn.Open();
                            tb_businessversion_dal dal = new tb_businessversion_dal();
                            var result = dal.Add(PubConn, new tb_businessversion_model
                            {
                                createtime = DateTime.Now,
                                businessversion = currentVersion,
                                description = "【回滚操作】" + versioninfo.description,
                                taskjson = JsonConvert.SerializeObject(taskjsonList)
                            });
                            if (!result)
                            {
                                return Json(new { code = -1, msg = "回滚版本发布失败" });
                            }
                        }
                    }
                    else
                    {
                        return Json(new { code = -1, msg = "版本不存在" });
                    }
                }
                catch (Exception ex)
                {
                    return Json(new { code = -1, msg = ex.Message });
                }
                return Json(new { code = 1, msg = "回滚成功" });
            }));
        }
        public JsonResult Sync(string ids, string description)
        {
            List <string> idList = ids.Split(',').ToList();

            return(this.Visit(Core.EnumUserRole.Admin, () =>
            {
                try
                {
                    string currentVersion = "1.0";
                    var latestVersion = TaskHelper.GetLatestBusinessVersion();
                    if (latestVersion != null)
                    {
                        double version;
                        double.TryParse(latestVersion.businessversion, out version);
                        currentVersion = (version + 0.1).ToString("F1");
                    }

                    List <taskjson_model> taskjsonList = new List <taskjson_model>();
                    List <tb_tasksyncmap_model> tasksynclist = TaskHelper.GetTaskSyncMapList();
                    foreach (var item in tasksynclist)
                    {
                        if (idList.Exists(id => id == item.id.ToString()))
                        {
                            //有些任务可能已经删除掉,就不再同步
                            var totask = TaskHelper.GetTask(item.totaskid);
                            if (totask != null)
                            {
                                var totaskversion = TaskHelper.GetVersion(totask.id, totask.taskversion);
                                var fromtask = TaskHelper.GetTask(item.fromtaskid);
                                var fromtaskversion = TaskHelper.GetVersion(fromtask.id, fromtask.taskversion);
                                //停止原来的任务
                                bool result = TaskHelper.AddTaskCommand(new tb_command_model
                                {
                                    command = "",
                                    commandcreatetime = DateTime.Now,
                                    taskid = totask.id,
                                    nodeid = totask.nodeid,
                                    commandname = EnumTaskCommandName.StopTask.ToString(),
                                    commandstate = (int)EnumTaskCommandState.None
                                });
                                //复制源任务到发布任务,并启动同步后的任务
                                var model = new tb_version_model
                                {
                                    taskid = totask.id,
                                    version = totaskversion.version + 1,
                                    versioncreatetime = DateTime.Now,
                                    zipfile = fromtaskversion.zipfile,
                                    zipfilename = fromtaskversion.zipfilename,
                                    commit_id = string.Empty
                                };
                                TaskHelper.AddVersion(model);
                                TaskHelper.AddTaskCommand(new tb_command_model
                                {
                                    command = "",
                                    commandcreatetime = DateTime.Now,
                                    taskid = totask.id,
                                    nodeid = totask.nodeid,
                                    commandname = EnumTaskCommandName.StartTask.ToString(),
                                    commandstate = (int)EnumTaskCommandState.None
                                });
                                totask.taskversion = model.version;
                                totask.taskupdatetime = DateTime.Now;
                                totask.businessversion = currentVersion;
                                TaskHelper.UpdateTask(totask);
                                taskjsonList.Add(new taskjson_model {
                                    id = totask.id, v = model.version, n = 1
                                });
                            }
                        }
                        else
                        {
                            var totask = TaskHelper.GetTask(item.totaskid);
                            if (totask != null)
                            {
                                taskjsonList.Add(new taskjson_model {
                                    id = totask.id, v = totask.taskversion, n = 0
                                });
                            }
                        }
                    }

                    using (DbConn PubConn = DbConfig.CreateConn(Config.TaskConnectString))
                    {
                        PubConn.Open();
                        tb_businessversion_dal dal = new tb_businessversion_dal();
                        var result = dal.Add(PubConn, new tb_businessversion_model
                        {
                            createtime = DateTime.Now,
                            businessversion = currentVersion,
                            description = description,
                            taskjson = JsonConvert.SerializeObject(taskjsonList)
                        });
                        if (!result)
                        {
                            return Json(new { code = -1, msg = "业务版本发布失败" });
                        }
                    }
                }
                catch (Exception ex)
                {
                    return Json(new { code = -1, msg = ex.Message });
                }
                return Json(new { code = 1, msg = "" });
            }));
        }
        public JsonResult Update2(HttpPostedFileBase TaskDll, tb_task_model model, string commitId, string tempdatajson)
        {
            HttpPostedFileBase file = Request.Files[0];

            return(this.Visit(Core.EnumUserRole.Admin, () =>
            {
                try
                {
                    tb_task_dal dal = new tb_task_dal();
                    tb_version_dal dalversion = new tb_version_dal();
                    tb_tempdata_dal tempdatadal = new tb_tempdata_dal();
                    byte[] dllbyte = null;
                    string filename = "";
                    int change = model.taskversion;
                    if (change == -1)
                    {
                        if (TaskDll == null)
                        {
                            return Json(new { code = -1, message = "没有文件" });
                        }
                        filename = TaskDll.FileName;
                        Stream dll = TaskDll.InputStream;
                        dllbyte = new byte[dll.Length];
                        dll.Read(dllbyte, 0, Convert.ToInt32(dll.Length));
                        //model.taskcreateuserid = Common.GetUserId(this);
                    }
                    using (DbConn PubConn = DbConfig.CreateConn(Config.TaskConnectString))
                    {
                        PubConn.Open();
                        var task = dal.GetOneTask(PubConn, model.id);
                        if (task.taskstate == (int)Dyd.BaseService.TaskManager.Core.EnumTaskState.Running)
                        {
                            return Json(new { code = -1, message = "当前任务在运行中,请停止后提交" });
                        }
                        if (change == -1)
                        {
                            model.taskversion = dalversion.GetVersion(PubConn, model.id);
                        }
                        model.taskupdatetime = DateTime.Now;
                        dal.UpdateTask(PubConn, model);
                        if (change == -1)
                        {
                            tb_version_model versionModel = dalversion.GetCurrentVersion(PubConn, model.id, model.taskversion);
                            if (versionModel != null)
                            {
                                versionModel.zipfile = dllbyte;
                                versionModel.versioncreatetime = DateTime.Now;
                                versionModel.zipfile = dllbyte;
                                versionModel.zipfilename = System.IO.Path.GetFileName(filename);
                                versionModel.commit_id = commitId;
                                // versionModel.assemblyversion = "";
                                dalversion.Edit(PubConn, versionModel);
                            }
                            else

                            {
                                dalversion.Add(PubConn, new tb_version_model()
                                {
                                    taskid = model.id,
                                    version = model.taskversion,
                                    versioncreatetime = DateTime.Now,
                                    zipfile = dllbyte,
                                    commit_id = commitId,
                                    zipfilename = System.IO.Path.GetFileName(filename)
                                });
                            }
                        }
                        tempdatadal.UpdateByTaskID(PubConn, new tb_tempdata_model()
                        {
                            taskid = model.id,
                            tempdatajson = tempdatajson,
                            tempdatalastupdatetime = DateTime.Now
                        });
                        return Json(new { code = 0, message = "上传成功" });
                    }
                }
                catch (Exception exp)
                {
                    return Json(new { code = -1, message = exp.Message });
                }
            }));
        }
Ejemplo n.º 11
0
        public void FillByte(DbConn dbConn, int taskid, int version, tb_version_model model)

        {
            string sql = $@"select s.zipfile from tb_version s where s.taskid={taskid} and s.version={version}";

            IDbConnection conn         = dbConn.GetConnection();
            SqlCommand    cmd          = null;
            SqlDataReader rd           = null;
            MemoryStream  memoryStream = null;
            int           bufferSize   = 32 * 1024;

            // Size of the BLOB buffer.
            byte[] outbyte = new byte[bufferSize];  // The BLOB byte[] buffer to be filled by GetBytes.
            long   retval;                          // The bytes returned from GetBytes.
            long   startIndex = 0;                  // The starting position in the BLOB output.

            try
            {
                cmd = (SqlCommand)conn.CreateCommand();


                cmd.CommandType = CommandType.Text;
                cmd.CommandText = sql;
                //img= new MemoryStream((byte[])cmd.ExecuteScalar());
                rd = cmd.ExecuteReader(CommandBehavior.SequentialAccess);

                while (rd.Read())
                {
                    // Get the publisher id, which must occur before getting the logo.


                    // Create a file to hold the output.
                    memoryStream = new MemoryStream();
                    var bw = new BinaryWriter(memoryStream);

                    // Reset the starting byte for the new BLOB.
                    startIndex = 0;

                    // Read the bytes into outbyte[] and retain the number of bytes returned.
                    retval = rd.GetBytes(0, startIndex, outbyte, 0, bufferSize);

                    // Continue reading and writing while there are bytes beyond the size of the buffer.
                    while (retval == bufferSize)
                    {
                        bw.Write(outbyte);
                        bw.Flush();

                        // Reposition the start index to the end of the last buffer and fill the buffer.
                        startIndex += bufferSize;
                        retval      = rd.GetBytes(0, startIndex, outbyte, 0, bufferSize);
                    }

                    // Write the remaining buffer.
                    if (retval > 0)                        // if file size can divide to buffer size
                    {
                        bw.Write(outbyte, 0, (int)retval); //original MSDN source had retval-1, a bug
                    }
                    bw.Flush();
                    // bw.Close();
                    //fs.Seek(0, SeekOrigin.Begin);
                    model.zipfile = new byte[memoryStream.Length];
                    model.zipfile = memoryStream.ToArray();
                    bw.Close();
                    // Close the output file.
                }

                //img.Read(model.zipfile,0,(int)img.Length);
            }
            finally
            {
                rd?.Close();

                cmd?.Dispose();

                memoryStream?.Close();
                memoryStream?.Dispose();
            }
        }