You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
291 lines
14 KiB
291 lines
14 KiB
using Microsoft.AspNetCore.Mvc;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Data;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using WcfControlMonitorLib;
|
|
|
|
namespace WcfControlMonitorWebLib.Controllers
|
|
{
|
|
|
|
[ApiController, Route("api/monitortask")]
|
|
public class MonitorTaskController : ControllerBase
|
|
{
|
|
DataView dv = new DataView();
|
|
string o;
|
|
SControlMonitor WcfControl = new SControlMonitor(false);
|
|
|
|
/// <summary>
|
|
/// 获取数据
|
|
/// </summary>
|
|
/// <param name="id">设备指令索引</param>
|
|
/// <param name="fid">调度任务索引</param>
|
|
/// <param name="barcode"></param>
|
|
/// <param name="deviceIndex"></param>
|
|
/// <param name="deviceStatus">设备状态 等待执行 已发送 执行中</param>
|
|
/// <param name="sort"></param>
|
|
/// <param name="offset"></param>
|
|
/// <param name="limit"></param>
|
|
/// <returns></returns>
|
|
[HttpGet]
|
|
public IActionResult Get(
|
|
[FromQuery] string id,
|
|
[FromQuery] string fid,
|
|
[FromQuery] string barcode,
|
|
[FromQuery] string deviceIndex,
|
|
[FromQuery] string deviceStatus,
|
|
[FromQuery] string sort,
|
|
[FromQuery] int? offset,
|
|
[FromQuery] int? limit)
|
|
{
|
|
|
|
if (offset == null)
|
|
{
|
|
offset = 0;
|
|
}
|
|
if (limit == null)
|
|
{
|
|
limit = 30;
|
|
}
|
|
#region 排序信息需要转一下
|
|
if (sort?.Length > 1)
|
|
{
|
|
var format = sort?.StartsWith("~") == true ? "{0} DESC" : "{0}";
|
|
if ((bool)sort?.StartsWith("~"))
|
|
{
|
|
switch (sort.Substring(2))
|
|
{
|
|
//barcode,fid,TaskKind,ftaskLevel,id,DeviceIndex,DeviceName,DeviceStatus,AheadDetect,StartZ,StartX,StartY,EndZ,EndX,EndY,StartTime,Status
|
|
//条码 as barcode, 调度任务索引 AS fid,任务类型 as TaskKind,优先级 as ftaskLevel,设备指令索引 as id,
|
|
//设备索引 as DeviceIndex,设备名称 as DeviceName,设备命令索引 as OrderIndex,设备命令名称 as OrderName,
|
|
//设备状态 as DeviceStatus,执行检测未通过提示 as AheadDetect,起点Z as StartZ,起点X as StartX ,起点Y as StartY,
|
|
//终点Z as EndZ,终点X as EndX,终点Y as EndY,开始时间 AS StartTime,F_Status AS Status
|
|
case "arcode":
|
|
sort = string.Format(format, "条码");
|
|
break;
|
|
case "d":
|
|
sort = string.Format(format, "设备指令索引");
|
|
break;
|
|
case "askKind":
|
|
sort = string.Format(format, "任务类型");
|
|
break;
|
|
case "taskLevel":
|
|
sort = string.Format(format, "优先级");
|
|
break;
|
|
case "eviceIndex":
|
|
sort = string.Format(format, "设备索引");
|
|
break;
|
|
case "eviceName":
|
|
sort = string.Format(format, "设备名称");
|
|
break;
|
|
case "rderIndex":
|
|
sort = string.Format(format, "设备命令索引");
|
|
break;
|
|
case "rderName":
|
|
sort = string.Format(format, "设备命令名称");
|
|
break;
|
|
case "eviceStatus":
|
|
sort = string.Format(format, "设备状态");
|
|
break;
|
|
case "headDetect":
|
|
sort = string.Format(format, "执行检测未通过提示");
|
|
break;
|
|
case "tartZ":
|
|
sort = string.Format(format, "起点Z");
|
|
break;
|
|
case "tartX":
|
|
sort = string.Format(format, "起点X");
|
|
break;
|
|
case "tartY":
|
|
sort = string.Format(format, "起点Y");
|
|
break;
|
|
case "ndZ":
|
|
sort = string.Format(format, "终点Z");
|
|
break;
|
|
case "ndX":
|
|
sort = string.Format(format, "终点X");
|
|
break;
|
|
case "ndY":
|
|
sort = string.Format(format, "终点Y");
|
|
break;
|
|
case "tartTime":
|
|
sort = string.Format(format, "开始时间");
|
|
break;
|
|
|
|
default:
|
|
sort = "调度任务索引";
|
|
break;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
switch (sort.Substring(1))
|
|
{
|
|
case "arcode":
|
|
sort = string.Format(format, "条码");
|
|
break;
|
|
case "d":
|
|
sort = string.Format(format, "设备指令索引");
|
|
break;
|
|
case "askKind":
|
|
sort = string.Format(format, "任务类型");
|
|
break;
|
|
case "taskLevel":
|
|
sort = string.Format(format, "优先级");
|
|
break;
|
|
case "eviceIndex":
|
|
sort = string.Format(format, "设备索引");
|
|
break;
|
|
case "eviceName":
|
|
sort = string.Format(format, "设备名称");
|
|
break;
|
|
case "rderIndex":
|
|
sort = string.Format(format, "设备命令索引");
|
|
break;
|
|
case "rderName":
|
|
sort = string.Format(format, "设备命令名称");
|
|
break;
|
|
case "eviceStatus":
|
|
sort = string.Format(format, "设备状态");
|
|
break;
|
|
case "headDetect":
|
|
sort = string.Format(format, "执行检测未通过提示");
|
|
break;
|
|
case "tartZ":
|
|
sort = string.Format(format, "起点Z");
|
|
break;
|
|
case "tartX":
|
|
sort = string.Format(format, "起点X");
|
|
break;
|
|
case "tartY":
|
|
sort = string.Format(format, "起点Y");
|
|
break;
|
|
case "ndZ":
|
|
sort = string.Format(format, "终点Z");
|
|
break;
|
|
case "ndX":
|
|
sort = string.Format(format, "终点X");
|
|
break;
|
|
case "ndY":
|
|
sort = string.Format(format, "终点Y");
|
|
break;
|
|
case "tartTime":
|
|
sort = string.Format(format, "开始时间");
|
|
break;
|
|
|
|
default:
|
|
sort = "调度任务索引";
|
|
break;
|
|
}
|
|
}
|
|
|
|
}
|
|
else
|
|
{
|
|
sort = "调度任务索引";
|
|
}
|
|
#endregion
|
|
#region 拼接 where 条件
|
|
//barcode,fid,TaskKind,ftaskLevel,id,DeviceIndex,DeviceName,DeviceStatus,AheadDetect,StartZ,StartX,StartY,EndZ,EndX,EndY,StartTime,Status
|
|
//条码 as barcode, 调度任务索引 AS fid,任务类型 as TaskKind,优先级 as ftaskLevel,设备指令索引 as id,
|
|
//设备索引 as DeviceIndex,设备名称 as DeviceName,设备命令索引 as OrderIndex,设备命令名称 as OrderName,
|
|
//设备状态 as DeviceStatus,执行检测未通过提示 as AheadDetect,起点Z as StartZ,起点X as StartX ,起点Y as StartY,
|
|
//终点Z as EndZ,终点X as EndX,终点Y as EndY,开始时间 AS StartTime,F_Status AS Status
|
|
var where = "1=1";
|
|
if (!string.IsNullOrEmpty(barcode))
|
|
{
|
|
where = $"{where} AND 条码 = '{barcode}'";
|
|
}
|
|
if (!string.IsNullOrEmpty(fid))
|
|
{
|
|
where = $"{where} AND 调度任务索引 = {fid}";
|
|
}
|
|
if (!string.IsNullOrEmpty(id))
|
|
{
|
|
where = $"{where} AND 设备指令索引 = {id}";
|
|
}
|
|
if (!string.IsNullOrEmpty(deviceIndex))
|
|
{
|
|
where = $"{where} AND 设备索引 = {deviceIndex}";
|
|
}
|
|
if (!string.IsNullOrEmpty(deviceStatus))
|
|
{
|
|
switch (deviceStatus)
|
|
{
|
|
case "0":
|
|
deviceStatus = "等待执行";
|
|
break;
|
|
case "1":
|
|
deviceStatus = "已发送";
|
|
break;
|
|
case "2":
|
|
deviceStatus = "执行中";
|
|
break;
|
|
|
|
}
|
|
where = $"{where} AND 设备状态 = '{deviceStatus}'";
|
|
}
|
|
|
|
#endregion
|
|
var sql = $"SELECT top {limit} barcode,fid,TaskKind,ftaskLevel,id,DeviceIndex,DeviceName,OrderName,DeviceStatus,AheadDetect,StartZ,StartX,StartY,EndZ,EndX,EndY,StartTime,Status FROM (SELECT 条码 as barcode, 调度任务索引 AS FID,任务类型 as TaskKind,优先级 as ftaskLevel,设备指令索引 as id,设备索引 as DeviceIndex,设备名称 as DeviceName,设备命令索引 as OrderIndex,设备命令名称 as OrderName,设备状态 as DeviceStatus,执行检测未通过提示 as AheadDetect,起点Z as StartZ,起点X as StartX ,起点Y as StartY,终点Z as EndZ,终点X as EndX,终点Y as EndY,开始时间 AS StartTime,F_Status AS Status,ROW_NUMBER() OVER (ORDER BY {sort}) AS ROW_NUM FROM V_Monitor_Task WHERE {where}) AS T WHERE ROW_NUM > {offset}";
|
|
var sqlAll = $"SELECT barcode,fid,TaskKind,ftaskLevel,id,DeviceIndex,DeviceName,OrderName,DeviceStatus,AheadDetect,StartZ,StartX,StartY,EndZ,EndX,EndY,StartTime,Status FROM (SELECT 条码 as barcode, 调度任务索引 AS FID,任务类型 as TaskKind,优先级 as ftaskLevel,设备指令索引 as id,设备索引 as DeviceIndex,设备名称 as DeviceName,设备命令索引 as OrderIndex,设备命令名称 as OrderName,设备状态 as DeviceStatus,执行检测未通过提示 as AheadDetect,起点Z as StartZ,起点X as StartX ,起点Y as StartY,终点Z as EndZ,终点X as EndX,终点Y as EndY,开始时间 AS StartTime,F_Status AS Status,ROW_NUMBER() OVER (ORDER BY {sort}) AS ROW_NUM FROM V_Monitor_Task WHERE {where}) AS T WHERE ROW_NUM > 0";
|
|
|
|
DataView dv1 = CStaticClass.dbo.ExceSQL(sqlAll.ToString()).Tables[0].DefaultView;//满足的条件的所有数据 返回总记录条数用
|
|
|
|
dv = CStaticClass.dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
|
|
|
|
var items = new dynamic[dv.Count];
|
|
for (int i = 0; i < dv.Count; i++)
|
|
{
|
|
items[i] = new
|
|
{
|
|
//barcode,fid,TaskKind,ftaskLevel,id,DeviceIndex,DeviceName,DeviceStatus,AheadDetect,StartZ,StartX,StartY,EndZ,EndX,EndY,StartTime,Status
|
|
id = Convert.ToInt32(dv[i]["id"]),
|
|
barcode = Convert.ToString(dv[i]["barcode"]),
|
|
taskKind = Convert.ToString(dv[i]["taskKind"]),
|
|
fid = Convert.ToString(dv[i]["fid"]),
|
|
ftaskLevel = Convert.ToInt32(dv[i]["ftaskLevel"]),
|
|
deviceIndex = Convert.ToString(dv[i]["DeviceIndex"]),
|
|
deviceName = Convert.ToString(dv[i]["DeviceName"]),
|
|
ordername = Convert.ToString(dv[i]["OrderName"]),
|
|
deviceStatus = Convert.ToString(dv[i]["DeviceStatus"]),
|
|
aheadDetect = Convert.ToString(dv[i]["AheadDetect"]),
|
|
startZ = Convert.ToInt32(dv[i]["StartZ"]),
|
|
startX = Convert.ToString(dv[i]["StartX"]),
|
|
startY = Convert.ToString(dv[i]["StartY"]),
|
|
endZ = Convert.ToString(dv[i]["EndZ"]),
|
|
endX = Convert.ToString(dv[i]["EndX"]),
|
|
endY = Convert.ToString(dv[i]["EndY"]),
|
|
startTime = Convert.ToString(dv[i]["StartTime"]),
|
|
status = Convert.ToString(dv[i]["Status"])
|
|
};
|
|
}
|
|
return Ok(new { total = dv1.Count, items });
|
|
}
|
|
|
|
/// <summary>
|
|
/// 操作
|
|
/// </summary>
|
|
/// <param name="id">指令编号</param>
|
|
/// <param name="action">900删除 920重发 999完成</param>
|
|
/// <param name="device">设备编号</param>
|
|
/// <returns></returns>
|
|
[HttpPost]
|
|
public IActionResult Post(
|
|
[FromMember] int id,
|
|
[FromMember] int action,
|
|
[FromMember] int device)
|
|
{
|
|
// 写入数据库
|
|
WcfControl.ModifyMonitorTask(device, id, action, out o);
|
|
if (!string.IsNullOrEmpty(o))
|
|
{
|
|
return StatusCode(422);
|
|
}
|
|
return StatusCode(200);
|
|
}
|
|
|
|
}
|
|
}
|