恒石成品库WCS
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.

218 lines
9.2 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/applyrecord")]
public class ApplyRecordController: ControllerBase
{
DataView dv = new DataView();
/// <summary>
/// 获取数据
/// </summary>
/// <param name="id">申请编号</param>
/// <param name="wareHouse">仓库编号</param>
/// <param name="applyDeviceCode">申请设备</param>
/// <param name="applyTimeFrom">申请时间开始</param>
/// <param name="applyTimeTo">申请时间To</param>
/// <param name="sort"></param>
/// <param name="offset"></param>
/// <param name="limit"></param>
/// <returns></returns>
[HttpGet]
public IActionResult Get(
[FromQuery] string id,
[FromQuery] string wareHouse,
[FromQuery] string applyDeviceCode,
[FromQuery] string applyTimeFrom,
[FromQuery] string applyTimeTo,
[FromQuery] string sort,
[FromQuery] int? offset,
[FromQuery] int? limit)
{
//CONTROL_APPLY_ID as id,CONTROL_APPLY_TYPE as aplyType,WAREHOUSE_CODE as wareHouse,DEVICE_CODE as applyDeviceCode,STOCK_BARCODE as barCode,
//CONTROL_APPLY_PARAMETER as PARAMETER,CONTROL_APPLY_PARA01 as PARA01,CONTROL_APPLY_PARA02 as PARA02,APPLY_TASK_STATUS as status,
//CREATE_TIME as applyTime,CONTROL_APPLY_REMARK as REMARK
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))
{
case "d":
sort = string.Format(format, "CONTROL_APPLY_ID");
break;
case "pplyDeviceIndex":
sort = string.Format(format, "DEVICE_CODE");
break;
default:
sort = string.Format(format, "CREATE_TIME");
break;
}
}
else
{
switch (sort.Substring(1))
{
case "d":
sort = string.Format(format, "CONTROL_APPLY_ID");
break;
case "pplyDeviceIndex":
sort = string.Format(format, "DEVICE_CODE");
break;
default:
sort = string.Format(format, "CREATE_TIME");
break;
}
}
}
else
{
sort = "CREATE_TIME";
}
#endregion
#region 拼接 where 条件
var where = "1=1";
if (!string.IsNullOrEmpty(id))
{
where = $"{where} AND CONTROL_APPLY_ID = {id}";
}
if (!string.IsNullOrEmpty(wareHouse))
{
where = $"{where} AND WAREHOUSE_CODE = {wareHouse}";
}
if (!string.IsNullOrEmpty(applyDeviceCode))
{
where = $"{where} AND DEVICE_CODE = '{applyDeviceCode}'";
}
if (!string.IsNullOrEmpty(applyTimeFrom))
{
where = $"{where} AND CREATE_TIME >= '{applyTimeFrom}'";
}
if (!string.IsNullOrEmpty(applyTimeTo))
{
where = $"{where} AND CREATE_TIME <= '{applyTimeTo}'";
}
#endregion
var sql = $"SELECT TOP {limit} CONTROL_APPLY_ID as id,CONTROL_APPLY_TYPE as aplyType,WAREHOUSE_CODE as wareHouse,DEVICE_CODE as applyDeviceCode,STOCK_BARCODE as barCode,CONTROL_APPLY_PARAMETER as PARAMETER,CONTROL_APPLY_PARA01 as PARA01,CONTROL_APPLY_PARA02 as PARA02,APPLY_TASK_STATUS as status,CREATE_TIME as applyTime,CONTROL_APPLY_REMARK as REMARK FROM (SELECT CONTROL_APPLY_ID,CONTROL_APPLY_TYPE,WAREHOUSE_CODE,DEVICE_CODE,STOCK_BARCODE,CONTROL_APPLY_PARAMETER,CONTROL_APPLY_PARA01,CONTROL_APPLY_PARA02,APPLY_TASK_STATUS,CREATE_TIME,CONTROL_APPLY_REMARK,ROW_NUMBER() OVER (ORDER BY {sort}) AS ROW_NUM FROM IO_CONTROL_APPLY_WCS WHERE {where}) AS T WHERE ROW_NUM > {offset}";
var sqlAll = $"SELECT CONTROL_APPLY_ID as id,CONTROL_APPLY_TYPE as aplyType,WAREHOUSE_CODE as wareHouse,DEVICE_CODE as applyDeviceCode,STOCK_BARCODE as barCode,CONTROL_APPLY_PARAMETER as PARAMETER,CONTROL_APPLY_PARA01 as PARA01,CONTROL_APPLY_PARA02 as PARA02,APPLY_TASK_STATUS as status,CREATE_TIME as applyTime,CONTROL_APPLY_REMARK as REMARK FROM (SELECT CONTROL_APPLY_ID,CONTROL_APPLY_TYPE,WAREHOUSE_CODE,DEVICE_CODE,STOCK_BARCODE,CONTROL_APPLY_PARAMETER,CONTROL_APPLY_PARA01,CONTROL_APPLY_PARA02,APPLY_TASK_STATUS,CREATE_TIME,CONTROL_APPLY_REMARK,ROW_NUMBER() OVER (ORDER BY CREATE_TIME) AS ROW_NUM FROM IO_CONTROL_APPLY_WCS 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
{
//CONTROL_APPLY_ID as id,CONTROL_APPLY_TYPE as aplyType,WAREHOUSE_CODE as wareHouse,DEVICE_CODE as applyDeviceCode,STOCK_BARCODE as barCode,
//CONTROL_APPLY_PARAMETER as PARAMETER,CONTROL_APPLY_PARA01 as PARA01,CONTROL_APPLY_PARA02 as PARA02,APPLY_TASK_STATUS as status,
//CREATE_TIME as applyTime,CONTROL_APPLY_REMARK as REMARK
id = Convert.ToInt32(dv[i]["id"]),
aplyType = Convert.ToString(dv[i]["aplyType"]),
wareHouse = Convert.ToString(dv[i]["wareHouse"]),
applyDeviceCode = Convert.ToString(dv[i]["applyDeviceCode"]),
barCode = Convert.ToString(dv[i]["barCode"]),
remark = Convert.ToString(dv[i]["REMARK"]),
status = Convert.ToString(dv[i]["status"]),
applyTime = Convert.ToString(dv[i]["applyTime"])
};
}
return Ok(new { total = dv1.Count, items });
}
/// <summary>
///
/// </summary>
/// <returns></returns>
[HttpGet("wareHouse")]
public IActionResult GetControlTaskKind()
{
var sql = $"select F_WarehouseIndex,F_Description from T_Warehouse ";
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
{
id = Convert.ToInt32(dv[i]["F_WarehouseIndex"]),
name = Convert.ToString(dv[i]["F_Description"]),
};
}
return Ok(new { total = dv.Count, items });
}
/// <summary>
/// 批量处理 删除
/// </summary>
/// <param name="data">id CONTROL_APPLY_ID</param>
/// <returns></returns>
[HttpPost("batch")]
public IActionResult Batch(
[FromMember] string[] data)
{
int count = 0;
// 写入数据库
foreach (var item in data)
{
var sql = $"delete from IO_CONTROL_APPLY_WCS where CONTROL_APPLY_ID={item}";
if (CStaticClass.dbo.ExecuteSql(sql.ToString()) > 0)
{
count++;
}
}
if (count > 0)
{
return StatusCode(200);
}
else
{
return StatusCode(422);
}
}
/// <summary>
/// king kun
/// </summary>
/// <returns></returns>
[HttpGet("wmsApply")]
public IActionResult GetErrorApply()
{
var sql1 = $"select F_DeviceIndex,F_ErrorCode,F_DeviceName from T_Base_Device where F_ErrorCode !=0 and F_DeviceKindIndex in (1,2)";
dv = CStaticClass.dbo.ExceSQL(sql1.ToString()).Tables[0].DefaultView;
var items = new dynamic[dv.Count];
for (int i = 0; i < dv.Count; i++)
{
items[i] = new
{
device_code = Convert.ToInt32(dv[i]["F_DeviceIndex"]),
stock_barcode = Convert.ToString(dv[i]["F_DeviceName"]),
control_apply_remark = Convert.ToString(dv[i]["F_ErrorCode"]),
};
}
return Ok(new { total = dv.Count, items });
}
}
}