半小时内看板

首先,我将首先定义文章的目标受众。 本文不是关于看板如何工作的。 本文适用于那些知道如何使用该技术并希望快速而又不花很多钱的人,创建了一个工具,使您可以可视化看板并使用它。 由于我们的预算是最小的,即使不是零,我们也会尝试以最小的方式解决所有问题。 我们需要一个用于存储信息的数据库,一个白板可视化工具和两个功能:

  • 创建卡;
  • 更换卡并沿轨道移动。

为了最大程度地减少开发工作,将使用http请求来启动功能的执行,稍后我将创建一个可在另一篇文章中查看的Web界面(而该链接丢失)。

我相信我将拥有一个包含以下内容的板(您可以指定配置):


作为数据库,您可以使用现有的所有内容,我将使用MS SQL并仅创建一个表(在我的情况下,一堆这样的数据库在企业中运转,因此拥有一台平板电脑无法应对)

create table tasks( ID int IDENTITY(1,1) PRIMARY KEY, Project nvarchar(250) default 'Unknown', Track nvarchar(250) default 'To Do', Worker nvarchar(250) default 'Unknown', [Description] nvarchar(1000) DEFAULT '', UpdDate datetime default GETDATE(), CrtDate datetime default GETDATE() ) 

从定义中可以看到,我将按照编号1、2、3的顺序自动为任务编号。将任务分为多个轨道-轨道。 项目-项目。 指示艺术家-工人。 在-说明中保留简短说明,并提供两个日期:CrtDate-创建日期,UpdDate-任务的最后更新日期,例如,移至该轨道。

我们将使用FastReport Desktop报告生成器可视化该板。 本文末尾提供了代码和报告文件的链接。 该演示是免费的,涵盖了此类任务,它非常实用。 因此,下载报告并在设计器中将其打开



您不喜欢的所有内容都可以自行更改。 例如,添加新曲目等。 记住要自定义报告到您的数据库。



板准备好了。 现在创建第一个任务



为此,我们在Azure中实现一个函数,该函数会将新记录插入表中

 #r "Newtonsoft.Json" using System.Net; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Primitives; using Newtonsoft.Json; using System.Data.SqlClient; public static async Task<IActionResult> Run(HttpRequest req, ILogger log) { log.LogInformation("Create task function processed a request."); string requestBody = await new StreamReader(req.Body).ReadToEndAsync(); log.LogInformation($"{requestBody}"); dynamic data = JsonConvert.DeserializeObject(requestBody); string project = data?.project; if (project==null) {return new BadRequestObjectResult($"Please pass a Project in the request body");} string worker = data?.worker; if (worker==null) {return new BadRequestObjectResult($"Please pass a Worker in the request body");} string description = data?.description??""; var your_username = "ufocombat"; var your_password = "***"; using (SqlConnection conn = new SqlConnection($"Server=tcp:fast,1433;Initial Catalog=FastReportSQL;Persist Security Info=False;User ID={your_username};Password={your_password};MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;")) { conn.Open(); SqlCommand cmd = new SqlCommand($"INSERT INTO tasks(Project,Worker,Description) VALUES (@p,@w,@d)", conn); cmd.Parameters.AddWithValue("p",project); cmd.Parameters.AddWithValue("w",worker); cmd.Parameters.AddWithValue("d",description); cmd.ExecuteNonQuery(); conn.Close(); } return new OkObjectResult($"Task created {DateTime.Now}"); } 

不要忘记指定您的用户名和密码来连接数据库。 打开任何可以发送Web请求的程序。 我拿邮递员。 插入链接的地址,并以json格式填写正文卡。 如果重复使用,该请求将被保存。 我们发送一个请求。 如果一切成功,那么我们将获得在服务器上创建卡的日期和时间。



在FastReport中运行报告:



若要更改卡或移动,请在Azure中创建一个功能

 #r "Newtonsoft.Json" using System.Net; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Primitives; using Newtonsoft.Json; using System.Data.SqlClient; public static async Task<IActionResult> Run(HttpRequest req, ILogger log) { log.LogInformation("Update task function processed a request."); string requestBody = await new StreamReader(req.Body).ReadToEndAsync(); log.LogInformation($"{requestBody}"); dynamic data = JsonConvert.DeserializeObject(requestBody); string ID = data?.id; if (ID == null) {return new BadRequestObjectResult($"Please pass an ID in the request body");} string paras = "UpdDate=@u"; string description = data?.description; if (description != null) { paras += ", Description=@d"; } string track = data?.track; if (track != null) { paras += ", Track=@t"; } string worker = data?.worker; if (worker != null) { paras += ", Worker=@w"; } var your_username = "ufocombat"; var your_password = "***; if (paras!="") { using (SqlConnection conn = new SqlConnection($"Server=tcp:fast,1433;Initial Catalog=FastReportSQL;Persist Security Info=False;User ID={your_username};Password={your_password};MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;")) { conn.Open(); SqlCommand cmd = new SqlCommand($"UPDATE tasks SET {paras} WHERE ID=@id", conn); cmd.Parameters.AddWithValue("id",ID); cmd.Parameters.AddWithValue("u",DateTime.Now.AddHours(3)); if (description != null) { cmd.Parameters.AddWithValue("d",description); } if (worker != null ) { cmd.Parameters.AddWithValue("w",worker); } if (track != null) { cmd.Parameters.AddWithValue("t",track); } cmd.ExecuteNonQuery(); conn.Close(); } } return new OkObjectResult($"Task created {DateTime.Now}"); } 

有了它的帮助,我们将更改卡的除ID以外的任何字段,包括Track。

要将卡移至其他轨道,请调用http请求:



FastReport可以使用报表中内置的脚本了解将该卡放置在哪一列中:

  if (string.Compare(track,"Doing",false)==0) { Shape1.Left = Units.Centimeters * 6.75F; } else if (string.Compare(track,"Done",false)==0) { Shape1.Left = Units.Centimeters * 13.25F; } else { Shape1.Left = 0; } 

如果决定添加列,请更改脚本,以使卡的缩进与新轨道的名称匹配。 结果,我们得到:



所以总结一下需要做什么

  1. 下载FastReport演示
  2. 下载现成的看板报告
  3. 我们在服务器上创建一个盘子
  4. 我们创建了两个管理卡功能

对项目很有用,如果您使用代码,则可以快速适应您的任务。 在以下文章中,我将展示如何在网站上放置报告,这样我就完全不用理会台式机版本了。 该报告将在很酷的项目经理的平板电脑和手机上提供:),敬请期待...

下载看板报告

Source: https://habr.com/ru/post/zh-CN472012/


All Articles