using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.Threading.Tasks;
|
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.Extensions.Logging;
|
using Newtonsoft.Json;
|
using Tiger.Model;
|
using Rhea.Common;
|
using Tiger.Model.SeaStone.Shelf;
|
using System.Threading;
|
using SqlSugar;
|
using Tiger.IBusiness;
|
using Autofac;
|
using System.Data;
|
using System.Linq.Expressions;
|
using Apache.NMS.ActiveMQ.Commands;
|
using Tiger.Model.Sharetronic.Shelf;
|
using Newtonsoft.Json.Linq;
|
using Tiger.Api.iBiz;
|
|
namespace Tiger.Api.Controllers.Test
|
{
|
/// <summary>
|
/// 测试控制器
|
/// </summary>
|
public partial class TestController : ControllerBase
|
{
|
/// <summary>
|
/// GetAsync
|
/// </summary>
|
/// <returns></returns>
|
[HttpGet]
|
public IActionResult GetDBSchemaAsync()
|
{
|
return Ok(Biz.Db.DbMaintenance.GetTableInfoList());
|
}
|
|
/// <summary>
|
/// GetAsync
|
/// </summary>
|
/// <returns></returns>
|
[HttpGet]
|
public async Task<IActionResult> GetAsync(string param)
|
{
|
//var data = await Biz.Db.Queryable<SYS_PARAM>().Where(q => q.PARAM_CODE == param).FirstAsync();
|
//var data = Biz.SysParam["Blue"];
|
//var data = Biz.SysParam.Groups;
|
//var data = Biz.CodeRule["X0001"];
|
//取号测试
|
//var data = Biz.Db.Queryable<BAS_CODE_RULE>().Where(q => q.RULE_CODE == "X0001").IncludesAllFirstLayer().First();
|
//var key = string.Join("|", data.Details.Where(q => q.DATA_TYPE == BAS_CODE_DTL.DATA_TYPEs.DbCheck.GetValue()).Select(q => q.GenerateValue));
|
//key = "1|2|3";
|
//for (int i = 0; i < 10; i++)
|
//{
|
// var index = i;
|
// Task.Run(() =>
|
// {
|
// try
|
// {
|
// var dtl = data.Details.First(q => q.RULE_SEQ == 6);
|
// var sn = Biz.CodeRule.FetchSerialNo(key, dtl, index.ToString(), false);
|
// Console.WriteLine($"{index}: {DateTime.Now:HH:mm:ss.fff} > 取号完成[{sn}]");
|
// }
|
// catch (Exception ex)
|
// {
|
// Console.WriteLine($"{index}: {DateTime.Now:HH:mm:ss.fff} > 取号失败:{ex.Message}");
|
// }
|
// });
|
//}
|
//var data = Biz.CodeRule["X0001"].Generate("PDFG", 5);
|
//var data1 = Biz.CodeRule["X0001"].TryGenerate("PDFG", 6);
|
//条码规则验证
|
//Expression<Func<BAS_CODE_RULE, bool>> predicate = q => true;
|
////predicate = predicate.And(q => q.RULE_CODE == "X0002" || q.RULE_CODE == "X0001");
|
//predicate = predicate.And(q => q.RULE_TYPE == 0);
|
////var data = Biz.CodeRule.Rules.Where(predicate.Compile());
|
//var data = Biz.CodeRule.Verify("AB23#7930000002010", predicate.Compile());
|
return Ok("");
|
}
|
|
/// <summary>
|
/// Get2Async
|
/// </summary>
|
/// <returns></returns>
|
[HttpGet]
|
public async Task<IActionResult> Get2Async(string param)
|
{
|
//var auth = new AuthOption() { UserId = "admin", ByOrg = true, ByWh = true };
|
//var data = await Biz.Db.Queryable<BIZ_ERP_PO>().Where(q => q.BILLTYPE == 11)
|
// //.ByAuth("admin", DbAuth.Org | DbAuth.Wh)
|
// .ByAuth(auth)
|
// .ToListAsync();
|
//data = await Biz.Db.Queryable<BIZ_ERP_PO>().ByAuth("admin", DbAuth.Org).Where(q => q.BILLTYPE == 11).ToListAsync();
|
var data = await Biz.Db.Queryable<BIZ_ERP_PO>().Where(q => q.BILLTYPE == 11).ToListAsync();
|
//var dtl = await Biz.Db.Queryable<BIZ_ERP_PO_DTL>().ByAuth("admin", DbAuth.Org | DbAuth.Wh).Where(q => q.BILLCODE == "AH3301-221000108").ToListAsync();
|
return Ok(data);
|
}
|
|
/// <summary>
|
/// Get3Async
|
/// </summary>
|
/// <returns></returns>
|
[HttpGet]
|
public async Task<IActionResult> Get3Async(string param)
|
{
|
//var b = new Barcode("AA0930230891113222980001#CBF");
|
//var cutSerial = Convert.ToString(b.ReprintNo ?? 0, 2);
|
//cutSerial = cutSerial == "0" ? "1" : cutSerial;
|
//var orglSn = b.SN.Split("#")[0];
|
|
//var nSplitSn = $"{orglSn}#CA{Convert.ToString(Convert.ToInt32(cutSerial + "0", 2), 16).ToUpper()}";
|
//var nRemainSn = $"{orglSn}#CB{Convert.ToString(Convert.ToInt32(cutSerial + "1", 2), 16).ToUpper()}";
|
|
//var data = nSplitSn;
|
|
//var t = Biz.T("WMS.ProdMReq.ScanItem.LocationIsNull", "dasdsa", "asdasda");
|
|
//var data = Biz.WmsItem.Suggest("test12345", "K33084103", "", "", "", "", new() { ByOrg = true, UserId = "admin", }, (decimal)100000);
|
//foreach (var item in data.Data)
|
//{
|
// //item.Items.First().AddToPool("XCSJ", nameof(BIZ_ERP_PROD_OUT), "test12345", null, 100000, false);
|
//}
|
|
//var data = 0;
|
//try
|
//{
|
// data = Biz.Db.Ado.UseStoredProcedure().ExecuteCommand("pkg_ImportItemFromSRM", new SugarParameter("dlvyNo", "BAD202308240443"));
|
//}
|
//catch (System.Exception ex)
|
//{
|
|
//}
|
//var data = await Biz.Db.Queryable<WMS_WAREHOUSE>().Where(q =>1!= 1).ToListAsync();
|
//foreach (var item in data)
|
//{
|
// item.UPDATE_TIME = DateTime.Now;
|
// item.UPDATE_USER = "admin";
|
//}
|
//Biz.Db.Fastest<WMS_WAREHOUSE>().BulkUpdate(data, new string[] { "ID" }, new string[] { "UPDATE_TIME", "UPDATE_USER" });
|
//Biz.Db.Insertable(data, "Interface").ExecuteCommand();
|
|
//var root = new SugarParameter("root", "system01");
|
//var dt = Biz.Db.Ado.UseStoredProcedure().GetDataTable("PKG_SYS_GET_MENU", root);//返回dt
|
//var data = Biz.Db.Ado.UseStoredProcedure().SqlQuery<SYS_MENU>("PKG_SYS_GET_MENU", root);//返回List
|
;
|
//var data = Biz.Db.Queryable<BIZ_SRM_DLVY>()
|
// .IncludesAllFirstLayer()
|
//c .ToList();
|
|
//var data1 = Biz.Db.Queryable<SYS_ROLE>().Where(q => q.ROLE_CODE == "administrators")
|
// .IncludesAllFirstLayer()
|
// .ToList();
|
//var data = Biz.Db.Queryable<SYS_MENU>().Where(q => q.FUNC_CODE == "system01")
|
// .AsNavQueryable().Includes(q1 => q1.Children, q2 => q2.Children, q3 => q3.Children, q4 => q4.Children)
|
// .ToList();
|
|
//var data = Biz.Db.Queryable<BIZ_ERP_PO>().Where(q => q.BILLCODE == "AH3301-211200047")
|
// .Includes(q => q.Details).First();
|
//var d9 = data.Details.First(q => q.BILLLINE == 9);
|
//var d10 = d9.Clone();
|
//d9.QTY = 9;
|
//d10.BILLLINE = 10;
|
//data.Details.Add(d10);
|
////保存到数据库
|
//var db = Business.Biz.Db;
|
//var dbTran = db.UseTran(async () =>
|
//{
|
// db.InsertNav(data).Include(q => q.Details, new() { OneToManyIfExistsNoInsert = true }).ExecuteCommand();
|
//});
|
//if (!dbTran.IsSuccess)
|
//{
|
// throw dbTran.ErrorException;
|
//}
|
return Ok("");
|
}
|
/// <summary>
|
///
|
/// </summary>
|
private void TestAsyncSuggest()
|
{
|
var begin = DateTime.Now;
|
var ElapsedTime = 0.0;
|
//Debug.WriteLine($"Async suggest begin at {begin:T}");
|
var order = "";
|
var warehouse = "";
|
var erpwh = "";
|
var region = "";
|
var shelf = "";
|
var option = new AuthOption() { ByOrg = true, UserId = "admin", };
|
var dic = new Dictionary<string, Result<List<SuggestItem>>>();
|
//foreach (var item in dic)
|
//{
|
// var key = item.Key;
|
// Work.DoAsync(() => {
|
// dic[item.Key] = Biz.WmsItem.Suggest(order, item.Key, erpwh, warehouse, region, shelf, option, 1);
|
// });
|
//}
|
//while (!dic.Any(q => q.Value.IsNormal)) ;
|
ElapsedTime = (DateTime.Now - begin).TotalSeconds;
|
//Debug.WriteLine($"Async suggest end, elapsed total {ElapsedTime} seconds");
|
}
|
|
/// <summary>
|
/// D1Async
|
/// </summary>
|
/// <returns></returns>
|
[HttpGet]
|
public async Task<IActionResult> D1Async(string param)
|
{
|
//Logger.Scheduler.Info("这是一次成功的测试");
|
//var data = iBiz.Biz.Db.Queryable<BAS_CODE_RULE>()
|
// .IncludesAllFirstLayer()
|
// .ToList();
|
//var data = iBiz.WMS.WmsItem.Get("123");
|
//var data1 = iBiz.WMS.WmsItem.Get("123");
|
|
//var s = "{\"GetChuteInfoResult\":{\"IsSuccess\":true,\"ItemCode\":\"0\",\"ResultValue\":\"{\\\"shelfNo\\\":\\\"A31F\\\",\\\"ledStartIndex\\\":26,\\\"ledNum\\\":1,\\\"ledAddrs\\\":[501],\\\"ledAddressList\\\":[{\\\"ledAddress\\\":501,\\\"isOccupy\\\":true}]}\",\"Type\":\"\"}}";
|
//JObject jObj = JObject.Parse(s.IsNullOrEmpty("{}"));
|
//var r = JsonConvert.DeserializeObject<ShelfApiResult>(jObj.First?.First?.ToString() ?? "");
|
//var t = JsonConvert.DeserializeObject<ShelfApiResult>("");
|
|
var data = DI.Resolve<ITest>().show();
|
return Ok(data);
|
}
|
|
[HttpGet]
|
public async Task<IActionResult> D2Async(string param)
|
{
|
DI.Resolve<ITest>().set(param);
|
return Ok($"设置{param}成功");
|
}
|
|
[HttpPost]
|
public async Task<IActionResult> TestTask([FromBody] ApiAction action)
|
{
|
string msg = "";
|
await Task.Run(() =>
|
{
|
msg = "成功";
|
});
|
await Task.Run(() =>
|
{
|
Thread.Sleep(10*60*1000);
|
msg = "异步成功";
|
Logger.Default.Info(msg);
|
});
|
return Ok(action.GetResponse(msg));
|
}
|
|
/// <summary>
|
/// CloseShelfAllLight
|
/// </summary>
|
/// <param name="action"></param>
|
/// <returns></returns>
|
[HttpPost]
|
public async Task<IActionResult> CloseShelfAllLightAsync([FromBody] ApiAction action)
|
{
|
var shelfs = action.Data.ToString().Split(new string[]{ "," }, StringSplitOptions.RemoveEmptyEntries).Select(q => q + "F").ToList();
|
shelfs.AddRange(shelfs.Select(q => q.Substring(0, q.Length - 1) + "R").ToList());
|
var success = new List<string>();
|
//foreach (var shelf in shelfs)
|
//{
|
// var result = await Share.Shelf.DownAll(shelf);
|
// if (result.IsSuccess)
|
// {
|
// success.Add(shelf);
|
// }
|
//}
|
shelfs.RemoveAll(q => success.Contains(q));
|
return Ok($"{(success.IsNullOrEmpty() ? "" : $"货架[{string.Join(",", success)}]灭灯成功")}{(shelfs.IsNullOrEmpty() ? "" : $"货架[{string.Join(",", shelfs)}]灭灯失败")}");
|
}
|
|
}
|
|
/// <summary>
|
/// 测试控制器
|
/// </summary>
|
[ApiController]
|
[Route("api/[controller]/[action]")]
|
public partial class _TestController : ControllerBase
|
{
|
[HttpGet]
|
public async Task<IActionResult> DoSomething(int duration)
|
{
|
var begin = DateTime.Now;
|
while ((DateTime.Now - begin).TotalSeconds <= duration)
|
{
|
Thread.Sleep(1000);
|
var total = (DateTime.Now - begin).TotalSeconds;
|
var percent = total / duration;
|
ConsoleExt.WriteLine($"Working {begin:mmssfff} ... {(percent > 1 ? 1 : percent):P0} ...", ConsoleColor.Green);
|
}
|
Logger.Default.Info($"{begin:mmssfff} completed");
|
return Ok($"{begin:mmssfff} completed");
|
}
|
|
[HttpGet]
|
public async Task<IActionResult> DoSomething1(int duration)
|
{
|
var begin = DateTime.Now;
|
|
return Ok($"{begin:mmssfff} completed");
|
}
|
|
/// <summary>
|
/// SendMQTTAsync
|
/// </summary>
|
/// <param name="action"></param>
|
/// <returns></returns>
|
[HttpPost]
|
public async Task<IActionResult> SendMQTTAsync([FromBody] ApiAction action)
|
{
|
string msg = "";
|
await Task.Run(() =>
|
{
|
msg = action.ID;
|
MQTTHelper.Send("TestSendMQTT001", new MQTTMessage()
|
{
|
Type = "TestSendMQTT001",
|
Content = "TestSendMQTT001,测试消息!",
|
Data = "",
|
DataType = typeof(String).Name,
|
IsSuccessed = true,
|
});
|
});
|
return Ok(MQTTHelper.Send(action.GetResponse(msg)));
|
}
|
|
/// <summary>
|
/// DeleteMQTTTopicAsync
|
/// </summary>
|
/// <param name="action"></param>
|
/// <returns></returns>
|
[HttpPost]
|
public async Task<IActionResult> DeleteMQTTTopicAsync([FromBody] ApiAction action)
|
{
|
string msg = "";
|
await Task.Run(() =>
|
{
|
msg = MQTTHelper.DeleteTopic(action.ID) ? "删除Topic成功" : "删除Topic失败";
|
});
|
return Ok(action.GetResponse(msg));
|
}
|
}
|
}
|