Files
WMS-Api/src/WMS.Web.Api/Controllers/TestController.cs

273 lines
11 KiB
C#

using ERP;
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.Tasks;
using WMS.Web.Core.Dto;
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;
namespace WMS.Web.Api.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class TestController : ControllerBase
{
private readonly IErpService _erpService;
private IInStockTaskService _inStockTaskService;
private IBasicsRepositories _transactionRepositories;
private readonly IOpsService _opsService;
private readonly IBoxService _boxService;
private readonly IOutStockTaskRepositories _outStockTaskRepositories;
private readonly IOutStockTaskService _outStockTaskService;
private readonly IBoxInventoryRepositories _boxInventoryRepositories;
public TestController(IErpService erpService, IInStockTaskService inStockTaskService, IBoxInventoryRepositories boxInventoryRepositories,
IBasicsRepositories transactionRepositories, IOpsService opsService, IBoxService boxService,
IOutStockTaskRepositories outStockTaskRepositories, IOutStockTaskService outStockTaskService)
{
_boxInventoryRepositories = boxInventoryRepositories;
this._erpService = erpService;
this._inStockTaskService = inStockTaskService;
this._transactionRepositories = transactionRepositories;
_opsService = opsService;
_boxService = boxService;
_outStockTaskRepositories = outStockTaskRepositories;
_outStockTaskService = outStockTaskService;
}
[HttpGet]
[Route("hj")]
public async Task<string> TestHJ()
{
//var list = await GetList();
//var c = await _erpService.BillQueryForSubStock(null,null);
//var bc2 = await _erpService.BillQueryForDeliveryNoticeOutStock(new List<string>() { "FHTZD8022232" }, DateTime.Now.AddDays(-10));
//var bc = await _erpService.BillQueryForTransferOutOutStock(null, DateTime.Now.AddDays(-10));
//var b=await _erpService.BillQueryForAssembledAppOutStock_Assembly(null, DateTime.Now.AddDays(-1));
// var b2 = await _erpService.BillQueryForAssembledAppOutStock_Dassembly(null, DateTime.Now.AddDays(-10));
//var b = await _outStockTaskService.Sync(new List<string>() { "FHTZD8022232" });
//var result = await this._outStockTaskService.Sync(null);
//var t=await _outStockTaskRepositories.Get(1);
// t.Details[0].Remark = "sdf";
// t.Details[0].ErpDetails[0].SaleBillNo = "sdfsfsbbbb";
// var s = await _outStockTaskRepositories.Edit(t);
//await _boxService.Sync(list);
//var res = await this._erpService.BillQueryForAssembledAppOutStock_Dassembly(null,DateTime.Now.AddDays(-300));
//var result= await this._erpService.BillQueryForPurchaseInStock();
//var result = await this._erpService.BillQueryForOrg();
//var result = await this._erpService.BillQueryForMaterial();
//if (!result.IsSuccess)
// return "";
//return JsonConvert.SerializeObject(result.Data);
return "";
}
[HttpGet]
[Route("Refresh")]
public async Task<string> Refresh()
{
var result = await this._outStockTaskService.Sync(null);
return "";
}
[HttpGet]
[Route("tf")]
public async Task<string> TestTF()
{
////var result = await this._erpService.BillQueryForOrg();
//var result = await this._erpService.BillQueryForBillType();
//if (!result.IsSuccess)
// return "";
//return JsonConvert.SerializeObject(result.Data);
// var result = await this._erpService.BillQueryForSupplier();
var result= await this._erpService.BillQueryForTransferDirect();
var tt = JsonConvert.SerializeObject(result.Data);
//var tttt = new List<string>() { "ABCD14200999" };
//var boxInventorys = await _boxInventoryRepositories.Get(142);
//var data = new List<BoxInventory>();
//var entity = new BoxInventory();
//entity.Id = 34;
//entity.BoxId = 142;
//entity.OrgCode = "101";
//entity.StockCode = "CK003";
//entity.SubStockId = 2949;
//var det = new BoxInventoryDetails();
//det.Id = 266;
//det.Fid = 34;
//det.MaterialId = 4799560;
//det.SerialNumbers = new List<string>() { "ABCD143001", "ABCD142002" };
//det.Qty = 2;
//entity.Details.Add(det);
//boxInventorys.Details.ForEach(x=>
//{
// x.SerialNumbers.RemoveAll(t => tttt.Contains(t));
// //x.SerialNumbers.AddRange(tttt);
// x.Qty = 3;
//});
//data.Add(boxInventorys);
//var result= await _boxInventoryRepositories.UpdateRange(data);
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)>();
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<(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)>();
var materials_result = await _erpService.BillQueryForMaterial();
var materials = materials_result.Data.ToList();
var m = materials.FirstOrDefault(f => f.MaterialNumber.Contains(number));
return (m.MaterialId, m.MaterialNumber, m.MaterialName);
}
/// <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 (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.Equals(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()
{
//3.同步数据
var result = await _inStockTaskService.Sysn();
return result;
}
}
}