Files
WMS-Api/src/WMS.Web.Api/Controllers/TestController.cs
18942506660 a5ce608812 修复不过
2024-03-05 11:33:01 +08:00

314 lines
12 KiB
C#

using ERP;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore.Storage;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.ServiceModel;
using System.Threading;
using System.Threading.Tasks;
using WMS.Web.Core.Dto;
using WMS.Web.Core.Dto.Erp.Customer;
using WMS.Web.Core.Internal.Results;
using WMS.Web.Domain.Entitys;
using WMS.Web.Domain.Infrastructure;
using WMS.Web.Domain.IService;
using WMS.Web.Domain.IService.Public;
using Microsoft.Extensions.Hosting;
using WMS.Web.Domain.Options;
using Microsoft.Extensions.Options;
using WMS.Web.Domain.Values;
using WMS.Web.Core.Dto.Erp;
namespace WMS.Web.Api.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class TestController : ControllerBase
{
private readonly IErpService _erpService;
private IInStockTaskService _inStockTaskService;
private readonly IBasicsRepositories _basicsRepositories;
private IBasicsRepositories _transactionRepositories;
private readonly IOpsService _opsService;
private readonly IBoxService _boxService;
private readonly IOutStockTaskRepositories _outStockTaskRepositories;
private readonly IOutStockTaskService _outStockTaskService;
private readonly IBoxInventoryRepositories _boxInventoryRepositories;
private readonly ITakeStockService _takeStockService;
private readonly ITakeStockRepositories _takeStockRepositories;
private readonly IInStockTaskRepositories _inStockTaskRepositories;
private readonly IOutStockService _outStockService;
private readonly IWebHostEnvironment _env;
private readonly AppOptions _options;
public TestController(IErpService erpService, IInStockTaskService inStockTaskService, IBoxInventoryRepositories boxInventoryRepositories,
IBasicsRepositories transactionRepositories, IOpsService opsService, IBoxService boxService, IBasicsRepositories basicsRepositories,
IOutStockTaskRepositories outStockTaskRepositories, IOutStockTaskService outStockTaskService, IOptions<AppOptions> options,
ITakeStockService takeStockService, ITakeStockRepositories takeStockRepositories, IOutStockService outStockService, IInStockTaskRepositories inStockTaskRepositories,
IWebHostEnvironment env)
{
_inStockTaskRepositories = inStockTaskRepositories;
_basicsRepositories = basicsRepositories;
_options = options?.Value;
_boxInventoryRepositories = boxInventoryRepositories;
this._erpService = erpService;
this._inStockTaskService = inStockTaskService;
this._transactionRepositories = transactionRepositories;
_opsService = opsService;
_boxService = boxService;
_outStockTaskRepositories = outStockTaskRepositories;
_outStockTaskService = outStockTaskService;
_takeStockService = takeStockService;
_takeStockRepositories = takeStockRepositories;
_outStockService = outStockService;
_env = env;
}
[HttpGet]
[Route("hj")]
public async Task<string> TestHJ()
{
var st= await _erpService.BillQueryForDeliveryNoticeOutStock();
return "";
}
/// <summary>
/// 出库任务单手动同步金蝶数据
/// </summary>
/// <returns></returns>
[HttpGet]
[Route("Refresh")]
public async Task<string> Refresh()
{
if (!_env.IsDevelopment()) return "";
var result = await this._outStockTaskService.Sync(null);
return "";
}
/// <summary>
/// 手动同步老ops箱信息
/// </summary>
/// <returns></returns>
[HttpGet]
[Route("RefreshOpsBox")]
public async Task<string> RefreshOpsBox()
{
if (!_env.IsDevelopment()) return "";
var result = await _boxService.Sync();
return "";
}
[HttpGet]
[Route("tf")]
public async Task<string> TestTF()
{
if (!_env.IsDevelopment()) return "";
////var result = await this._erpService.BillQueryForOrg();
//var result = await this._erpService.BillQueryForBillType();
var result = await this._erpService.BillQueryForMaterial();
//var list = new List<TestMar>();
//foreach (var item in result.Data.ToList())
//{
// var t = new TestMar();
// t.MaterialNumber = item.MaterialNumber;
// t.BarCode = item.BarCode;
// list.Add(t);
//}
var tt = JsonConvert.SerializeObject(result);
return tt;
}
/// <summary>
/// 根据物料Id获取物料编码
/// </summary>
/// <param name="materialIds"></param>
/// <returns></returns>
[HttpGet]
[Route("GetMaterial")]
public async Task<List<(int Id, string Number, string name)>> GetMaterial([FromQuery] List<int> materialIds)
{
List<(int Id, string Number, string name)> mList = new List<(int Id, string Number, string name)>();
if (!_env.IsDevelopment()) return mList;
var materials_result = await _erpService.BillQueryForMaterial();
var materials = materials_result.Data.ToList();
foreach (var mid in materialIds)
{
var m = materials.FirstOrDefault(f => f.MaterialId == mid);
mList.Add((m.MaterialId, m.MaterialNumber, m.MaterialName));
}
return mList;
}
/// <summary>
/// 根据物料编码获取物料Id
/// </summary>
/// <param name="number"></param>
/// <returns></returns>
[HttpGet]
[Route("GetMaterialId/{number}")]
public async Task<List<(int Id, string Number, string name)>> GetMaterialId([FromRoute] string number)
{
List<(int Id, string Number, string name)> mList = new List<(int Id, string Number, string name)>();
if (!_env.IsDevelopment()) return mList;
var materials_result = await _erpService.BillQueryForMaterial();
var materials = materials_result.Data.ToList();
var mL = materials.Where(f => f.MaterialNumber.Contains(number))
.Select(s=>new {
Id=s.MaterialId,
Number=s.MaterialNumber,
name=s.MaterialName }).ToList();
foreach(var m in mL)
{
mList.Add((m.Id, m.Number, m.name));
}
return mList;
}
/// <summary>
/// 自动生成箱信息
/// </summary>
/// <param name="str"></param>
/// <param name="number"></param>
/// <param name="materialNumbers"></param>
/// <returns></returns>
[HttpGet]
[Route("SCBox/{str}/{number}")]
public async Task<Result> SCBox([FromRoute] string str, [FromRoute] int number, [FromQuery] List<string> materialNumbers)
{
if (!_env.IsDevelopment()) return Result.ReSuccess();
if (materialNumbers == null)
materialNumbers = new List<string>();
var list = await GetList(str, number, materialNumbers);
await _boxService.Sync(list);
return Result.ReSuccess();
}
private async Task<List<OpsBoxResponse>> GetList(string str, int number, List<string> materialNumbers)
{
var materials_result = await _erpService.BillQueryForMaterial();
var materials = materials_result.Data.ToList();
List<int> mIds = materials.Where(w => materialNumbers.Contains(w.MaterialNumber)).Select(s => s.MaterialId).ToList();
int jn = 3;
if (mIds.Count() <= 0)
mIds= materials.Skip((new Random()).Next(1000, 10000)).Take(4).Select(s => s.MaterialId).ToList();
jn = mIds.Count() - 1;
List<OpsBoxResponse> list = new List<OpsBoxResponse>();
for (int i = 0; i < number; i++)
{
List<OpsBoxDetailsResponse> Details = new List<OpsBoxDetailsResponse>();
for (int j = 0; j <= jn; j++)
{
var ran = (new Random()).Next(5, 10);
List<OpsSerialNumbersResponse> SerialNumbers = new List<OpsSerialNumbersResponse>();
for (int g = 0; g < ran; g++)
{
OpsSerialNumbersResponse or = new OpsSerialNumbersResponse()
{
SerialNumber = await GetStr(),
BarCereateUser = "01",
BarCreateTime = DateTime.Now
};
SerialNumbers.Add(or);
}
var mi = (new Random()).Next(1000, 20000);
OpsBoxDetailsResponse d = new OpsBoxDetailsResponse()
{
MaterialId = mIds[j],
Qty = ran,
SerialNumbers = SerialNumbers
};
Details.Add(d);
}
OpsBoxResponse response = new OpsBoxResponse()
{
BoxBillNo = str + ((new Random()).Next(500, 2000) + i).ToString(),
OpsBoxId = 100 + i,
CompleteCartonTime = DateTime.Now,
CompleteCartonUser = "02",
CreateTime = DateTime.Now,
CreateUser = "01",
OrgId = 0,
SupplierId = 10897,
Details = Details
};
list.Add(response);
}
return list;
}
private Task<string> GetStr()
{
var characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
var Charsarr = new char[11];
var random = new Random();
for (int i = 0; i < Charsarr.Length; i++)
{
Charsarr[i] = characters[random.Next(characters.Length)];
}
return Task.FromResult(new String(Charsarr));
}
/// <summary>
/// 测试:同步入库单
/// </summary>
/// <returns></returns>
[HttpGet]
[Route("InStock")]
public async Task<Result> InStock()
{
if (!_env.IsDevelopment()) return Result.ReSuccess();
//3.同步数据
var result = await _inStockTaskService.Sysn();
return result;
}
/// <summary>
/// 测试-接口是否正常
/// </summary>
/// <returns></returns>
[HttpGet]
[Route("lst")]
public string Lst()
{
var successStr = "tongfei test lst->数据库链接地址:" + _options.DBConnectionString+",单点项目链接地址:"+_options.SingleBaseUrl;
return successStr;
}
/// <summary>
/// 测试-单点接口是否正常
/// </summary>
/// <returns></returns>
[HttpGet]
[Route("lst1")]
public async Task<string> Lst1()
{
var result = await _basicsRepositories.GetUcStockAsync(ManagementSystemCode.GLXT0004.ToString(), "", 1);
return JsonConvert.SerializeObject(result);
}
/// <summary>
/// 测试-单点接口是否正常
/// </summary>
/// <returns></returns>
[HttpGet]
[Route("lst2")]
public async Task<string> Lst2()
{
var ids = new List<int>();
ids.Add(1);
var result = await _inStockTaskRepositories.GetList(ids);
return JsonConvert.SerializeObject(result);
}
}
}