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;
using System.Net;
using System.Reflection;
using Swifter.Tools;
using Tiger.Model.Entitys.MES.Position;
using Microsoft.CodeAnalysis.Options;
using System.IO;
using System.Runtime.Loader;
using MailKit.Search;
using Tiger.Model.DigitalTwin;
namespace Tiger.Api.Controllers.Test
{
///
/// 测试控制器
///
public partial class TestController : ControllerBase
{
///
/// GetAsync
///
///
[HttpGet]
public IActionResult GetDBSchemaAsync()
{
return Ok(Biz.Db.DbMaintenance.GetTableInfoList());
}
[HttpGet]
public IActionResult GetEntitys(string AssemblyName, string NameSpace)
{
Assembly assembly = Assembly.Load(AssemblyName);
Type[] types = assembly.GetTypes();
var entitys = types.Where(q => q.GetInterfaces().Contains(typeof(iEntity)) && q.IsClass).ToList();
var data = entitys.Select(q => new
{
q.Namespace,
q.FullName,
Properties = q.GetProperties().Select(p => new { p.Name, Type = p.PropertyType.Name }).ToList()
});
return Ok(data);
}
///
/// GetAsync
///
///
[HttpGet]
public async Task GetAsync(string param)
{
//var data = await Biz.Db.Queryable().Where(q => q.PARAM_CODE == param).FirstAsync();
//var data = Cache.SysParam["Blue"];
//var data = Cache.SysParam.Groups;
//var data = Cache.CodeRule["X0001"];
//取号测试
//var data = Biz.Db.Queryable().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 = Cache.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 = Cache.CodeRule["X0001"].Generate("PDFG", 5);
//var data1 = Cache.CodeRule["X0001"].TryGenerate("PDFG", 6);
//条码规则验证
//Expression> 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 = Cache.CodeRule.Rules.Where(predicate.Compile());
//var data = Cache.CodeRule.Verify("AB23#7930000002010", predicate.Compile());
return Ok("");
}
///
/// Get2Async
///
///
[HttpGet]
public async Task Get2Async(string param)
{
var auth = new AuthOption() { UserId = "admin", ByOrg = true, ByWh = true };
//var data = await Biz.Db.Queryable().Where(q => q.BILLTYPE == 11)
// //.ByAuth("admin", DbAuth.Org | DbAuth.Wh)
// .ByAuth(auth)
// .ToListAsync();
//data = await Biz.Db.Queryable().ByAuth("admin", DbAuth.Org).Where(q => q.BILLTYPE == 11).ToListAsync();
//var data = await Biz.Db.Queryable().Where(q => q.BILLTYPE == 11).ToListAsync();
//var dtl = await Biz.Db.Queryable().ByAuth("admin", DbAuth.Org | DbAuth.Wh).Where(q => q.BILLCODE == "AH3301-221000108").ToListAsync();
var query = Biz.Db.Queryable().ByAuth("admin", DbAuth.Org | DbAuth.Wh).Where(t => t.SN == "barcode.SN").First();//
var data = Biz.Db.Queryable((q, s) => new JoinQueryInfos(JoinType.Inner, q.ORDER_NO == s.WORK_ORDER))
.ByAuth(auth)//.ByAuth("admin", DbAuth.Org | DbAuth.Wh)
.Where((q, s) => s.SN == "input.SN" && q.ACT_LINE == "CurLine.LINE_CODE" && (q.STATUS == BIZ_MES_WO_BATCH.STATUSs.Release.GetValue() || q.STATUS == BIZ_MES_WO_BATCH.STATUSs.Working.GetValue()))
.Select((q, s) => new { Batch = q, SN = s }).First();
return Ok(data);
}
///
/// Get3Async
///
///
[HttpGet]
public async Task 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().Where(q =>1!= 1).ToListAsync();
//foreach (var item in data)
//{
// item.UPDATE_TIME = DateTime.Now;
// item.UPDATE_USER = "admin";
//}
//Biz.Db.Fastest().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("SP_SYS_GET_MENU", root);//返回dt
var data = Biz.Db.Ado.UseStoredProcedure().SqlQuery("SP_SYS_GET_MENU", root);//返回List
;
//var data = Biz.Db.Queryable()
// .IncludesAllFirstLayer()
//c .ToList();
//var data1 = Biz.Db.Queryable().Where(q => q.ROLE_CODE == "administrators")
// .IncludesAllFirstLayer()
// .ToList();
//var data = Biz.Db.Queryable().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().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(data);
}
///
///
///
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>>();
//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");
}
///
/// D1Async
///
///
[HttpGet]
public async Task D1Async(string param)
{
Work.DoAsync(() => { HttpHelper.GetAsync("http://172.16.80.40:9529/api/_Test/DoSomething?duration=10&code=01"); ConsoleExt.WriteLine($"{DateTime.Now:HH:mm:ss.fff} - 01 Finished", ConsoleColor.Blue); });
Work.DoAsync(() => { HttpHelper.GetAsync("http://172.16.80.40:9529/api/_Test/DoSomething?duration=10&code=02"); ConsoleExt.WriteLine($"{DateTime.Now:HH:mm:ss.fff} - 02 Finished", ConsoleColor.Blue); });
Work.DoAsync(() => { HttpHelper.GetAsync("http://172.16.80.40:9529/api/_Test/DoSomething?duration=10&code=03"); ConsoleExt.WriteLine($"{DateTime.Now:HH:mm:ss.fff} - 03 Finished", ConsoleColor.Blue); });
Work.DoAsync(() => { HttpHelper.GetAsync("http://172.16.80.40:9529/api/_Test/DoSomething?duration=10&code=04"); ConsoleExt.WriteLine($"{DateTime.Now:HH:mm:ss.fff} - 04 Finished", ConsoleColor.Blue); });
Work.DoAsync(() => { HttpHelper.GetAsync("http://172.16.80.40:9529/api/_Test/DoSomething?duration=10&code=05"); ConsoleExt.WriteLine($"{DateTime.Now:HH:mm:ss.fff} - 05 Finished", ConsoleColor.Blue); });
Work.DoAsync(() => { HttpHelper.GetAsync("http://172.16.80.40:9529/api/_Test/DoSomething?duration=10&code=06"); ConsoleExt.WriteLine($"{DateTime.Now:HH:mm:ss.fff} - 06 Finished", ConsoleColor.Blue); });
Work.DoAsync(() => { HttpHelper.GetAsync("http://172.16.80.40:9529/api/_Test/DoSomething?duration=10&code=07"); ConsoleExt.WriteLine($"{DateTime.Now:HH:mm:ss.fff} - 07 Finished", ConsoleColor.Blue); });
Work.DoAsync(() => { HttpHelper.GetAsync("http://172.16.80.40:9529/api/_Test/DoSomething?duration=10&code=08"); ConsoleExt.WriteLine($"{DateTime.Now:HH:mm:ss.fff} - 08 Finished", ConsoleColor.Blue); });
Work.DoAsync(() => { HttpHelper.GetAsync("http://172.16.80.40:9529/api/_Test/DoSomething?duration=10&code=09"); ConsoleExt.WriteLine($"{DateTime.Now:HH:mm:ss.fff} - 09 Finished", ConsoleColor.Blue); });
Work.DoAsync(() => { HttpHelper.GetAsync("http://172.16.80.40:9529/api/_Test/DoSomething?duration=10&code=10"); ConsoleExt.WriteLine($"{DateTime.Now:HH:mm:ss.fff} - 10 Finished", ConsoleColor.Blue); });
Work.DoAsync(() => { HttpHelper.GetAsync("http://172.16.80.40:9529/api/_Test/DoSomething?duration=10&code=11"); ConsoleExt.WriteLine($"{DateTime.Now:HH:mm:ss.fff} - 11 Finished", ConsoleColor.Blue); });
Work.DoAsync(() => { HttpHelper.GetAsync("http://172.16.80.40:9529/api/_Test/DoSomething?duration=10&code=12"); ConsoleExt.WriteLine($"{DateTime.Now:HH:mm:ss.fff} - 12 Finished", ConsoleColor.Blue); });
Work.DoAsync(() => { HttpHelper.GetAsync("http://172.16.80.40:9529/api/_Test/DoSomething?duration=10&code=13"); ConsoleExt.WriteLine($"{DateTime.Now:HH:mm:ss.fff} - 13 Finished", ConsoleColor.Blue); });
Work.DoAsync(() => { HttpHelper.GetAsync("http://172.16.80.40:9529/api/_Test/DoSomething?duration=10&code=14"); ConsoleExt.WriteLine($"{DateTime.Now:HH:mm:ss.fff} - 14 Finished", ConsoleColor.Blue); });
Work.DoAsync(() => { HttpHelper.GetAsync("http://172.16.80.40:9529/api/_Test/DoSomething?duration=10&code=15"); ConsoleExt.WriteLine($"{DateTime.Now:HH:mm:ss.fff} - 15 Finished", ConsoleColor.Blue); });
Work.DoAsync(() => { HttpHelper.GetAsync("http://172.16.80.40:9529/api/_Test/DoSomething?duration=10&code=16"); ConsoleExt.WriteLine($"{DateTime.Now:HH:mm:ss.fff} - 16 Finished", ConsoleColor.Blue); });
Work.DoAsync(() => { HttpHelper.GetAsync("http://172.16.80.40:9529/api/_Test/DoSomething?duration=10&code=17"); ConsoleExt.WriteLine($"{DateTime.Now:HH:mm:ss.fff} - 17 Finished", ConsoleColor.Blue); });
Work.DoAsync(() => { HttpHelper.GetAsync("http://172.16.80.40:9529/api/_Test/DoSomething?duration=10&code=18"); ConsoleExt.WriteLine($"{DateTime.Now:HH:mm:ss.fff} - 18 Finished", ConsoleColor.Blue); });
Work.DoAsync(() => { HttpHelper.GetAsync("http://172.16.80.40:9529/api/_Test/DoSomething?duration=10&code=19"); ConsoleExt.WriteLine($"{DateTime.Now:HH:mm:ss.fff} - 19 Finished", ConsoleColor.Blue); });
Work.DoAsync(() => { HttpHelper.GetAsync("http://172.16.80.40:9529/api/_Test/DoSomething?duration=10&code=20"); ConsoleExt.WriteLine($"{DateTime.Now:HH:mm:ss.fff} - 20 Finished", ConsoleColor.Blue); });
Work.DoAsync(() => { HttpHelper.GetAsync("http://172.16.80.40:9529/api/_Test/DoSomething?duration=10&code=21"); ConsoleExt.WriteLine($"{DateTime.Now:HH:mm:ss.fff} - 21 Finished", ConsoleColor.Blue); });
Work.DoAsync(() => { HttpHelper.GetAsync("http://172.16.80.40:9529/api/_Test/DoSomething?duration=10&code=22"); ConsoleExt.WriteLine($"{DateTime.Now:HH:mm:ss.fff} - 22 Finished", ConsoleColor.Blue); });
Work.DoAsync(() => { HttpHelper.GetAsync("http://172.16.80.40:9529/api/_Test/DoSomething?duration=10&code=23"); ConsoleExt.WriteLine($"{DateTime.Now:HH:mm:ss.fff} - 23 Finished", ConsoleColor.Blue); });
Work.DoAsync(() => { HttpHelper.GetAsync("http://172.16.80.40:9529/api/_Test/DoSomething?duration=10&code=24"); ConsoleExt.WriteLine($"{DateTime.Now:HH:mm:ss.fff} - 24 Finished", ConsoleColor.Blue); });
Work.DoAsync(() => { HttpHelper.GetAsync("http://172.16.80.40:9529/api/_Test/DoSomething?duration=10&code=25"); ConsoleExt.WriteLine($"{DateTime.Now:HH:mm:ss.fff} - 25 Finished", ConsoleColor.Blue); });
Work.DoAsync(() => { HttpHelper.GetAsync("http://172.16.80.40:9529/api/_Test/DoSomething?duration=10&code=26"); ConsoleExt.WriteLine($"{DateTime.Now:HH:mm:ss.fff} - 26 Finished", ConsoleColor.Blue); });
Work.DoAsync(() => { HttpHelper.GetAsync("http://172.16.80.40:9529/api/_Test/DoSomething?duration=10&code=27"); ConsoleExt.WriteLine($"{DateTime.Now:HH:mm:ss.fff} - 27 Finished", ConsoleColor.Blue); });
Work.DoAsync(() => { HttpHelper.GetAsync("http://172.16.80.40:9529/api/_Test/DoSomething?duration=10&code=28"); ConsoleExt.WriteLine($"{DateTime.Now:HH:mm:ss.fff} - 28 Finished", ConsoleColor.Blue); });
Work.DoAsync(() => { HttpHelper.GetAsync("http://172.16.80.40:9529/api/_Test/DoSomething?duration=10&code=29"); ConsoleExt.WriteLine($"{DateTime.Now:HH:mm:ss.fff} - 29 Finished", ConsoleColor.Blue); });
Work.DoAsync(() => { HttpHelper.GetAsync("http://172.16.80.40:9529/api/_Test/DoSomething?duration=10&code=30"); ConsoleExt.WriteLine($"{DateTime.Now:HH:mm:ss.fff} - 30 Finished", ConsoleColor.Blue); });
ConsoleExt.WriteLine($"{DateTime.Now:HH:mm:ss.fff} - Send Finished", ConsoleColor.Blue);
//Logger.Scheduler.Info("这是一次成功的测试");
//var data = iBiz.Biz.Db.Queryable()
// .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(jObj.First?.First?.ToString() ?? "");
//var t = JsonConvert.DeserializeObject("");
var data = DI.Resolve().show();
return Ok(data);
}
[HttpGet]
public async Task D2Async(string param)
{
DI.Resolve().set(param);
return Ok($"设置{param}成功");
}
[HttpPost]
public async Task 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));
}
///
/// CloseShelfAllLight
///
///
///
[HttpPost]
public async Task 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();
//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)}]灭灯失败")}");
}
}
///
/// 测试控制器
///
[ApiController]
[Route("api/[controller]/[action]")]
public partial class _TestController : ControllerBase
{
[HttpGet]
public async Task DoSomething(int duration, string code)
{
var begin = DateTime.Now;
Work.Do(() => {
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($"{code.IsNullOrEmpty("", code + ": ")}{begin:mmssfff} completed");
}
[HttpPost]
public async Task MESSubmitAsync([FromBody] ApiAction action)
{
var data = action.Data.Data;
var act = Biz.Db.Queryable().First(q => q.ID == data);
var result = act.OPTION_1?.ToString().JsonToObject>();
return Ok(result?.ToJson());
}
[HttpPost]
public async Task InterfaceAsync([FromBody] ApiAction action)
{
var data = action.Data;
//var json = new {
// SN = "V025720241120000161",
// ItemCode = "160305330",
// Qty = 1700,
// Unit = "PCS",
// Supplier = "V0381",
// DeliveryDate = DateTime.Now,
// ProdDate = DateTime.Now,
// BatchNo = "20241120",
// ValidityDays = 365,
// SerialNo = 161,
// ItemName = "L-CW1323GA 两个装彩盒 隔板 材质300g单粉裱YF加强过哑膜 105 mm 85 mm 3 mm 南泰 ",
// Warehouse = "W0001",
// ItemModel = "材料 零件 商品",
//};
//var result = action.GetResponse("GetSnInfo success.", json, true);
//var json = new List