//using Furion.DatabaseAccessor;
|
//using Furion.DatabaseAccessor.Extensions;
|
//using Furion.DependencyInjection;
|
//using Furion.DynamicApiController;
|
//using Furion.FriendlyException;
|
//using Admin.NET.Core;
|
//using Mapster;
|
//using Microsoft.AspNetCore.Mvc;
|
//using Microsoft.EntityFrameworkCore;
|
//using System.Linq.Dynamic.Core;
|
//using Microsoft.AspNetCore.Http;
|
//using System.Text;
|
//using System.Web;
|
//using SixLabors.ImageSharp;
|
//using OfficeOpenXml.FormulaParsing.Excel.Functions.Information;
|
//using Furion;
|
//using Serilog;
|
//using Furion.RemoteRequest.Extensions;
|
//using HttpMethod = System.Net.Http.HttpMethod;
|
|
//namespace Admin.NET.Application
|
//{
|
// /// <summary>
|
// /// 领料单服务
|
// /// </summary>
|
// [ApiDescriptionSettings("单据管理", Name = "WmsTakeMaterialOrder", Order = 100)]
|
// [Route("api/[Controller]")]
|
// public class WmsTakeMaterialOrderService : IWmsTakeMaterialOrderService, IDynamicApiController, ITransient
|
// {
|
// private readonly IRepository<WmsTakeMaterialOrder,MasterDbContextLocator> _wmsTakeMaterialOrderRep;
|
// private readonly IRepository<SysDictType, MasterDbContextLocator> _sysDictTypeRep;
|
// private readonly IRepository<SysDictData, MasterDbContextLocator> _sysDictDataRep;
|
// private readonly ISysExcelTemplateService _sysExcelTemplateService;
|
// private readonly static object _lock = new();
|
// private readonly IRepository<WmsTakeMaterialOrderDetail, MasterDbContextLocator> _wmsTakeMaterialOrderDetailRep;
|
// private readonly IRepository<WmsOrderType, MasterDbContextLocator> _wmsOrderTypeRep;
|
// private readonly IRepository<WmsPlace, MasterDbContextLocator> _wmsPlaceRep;
|
// private readonly IRepository<WmsMaterialStock, MasterDbContextLocator> _wmsMaterialStockRep;
|
// private readonly IRepository<WmsMaterialContainer, MasterDbContextLocator> _wmsMaterialContainerRep;
|
// private readonly IRepository<WmsSortOrder, MasterDbContextLocator> _wmsSortOrderRep;
|
// private readonly IRepository<WmsTask, MasterDbContextLocator> _wmsTaskRep;
|
|
// public WmsTakeMaterialOrderService(
|
// IRepository<WmsTakeMaterialOrder,MasterDbContextLocator> wmsTakeMaterialOrderRep
|
// ,IRepository<SysDictType, MasterDbContextLocator> sysDictTypeRep
|
// ,IRepository<SysDictData, MasterDbContextLocator> sysDictDataRep
|
// ,ISysExcelTemplateService sysExcelTemplateService
|
// ,IRepository<WmsTakeMaterialOrderDetail, MasterDbContextLocator> wmsTakeMaterialOrderDetailRep
|
// , IRepository<WmsOrderType, MasterDbContextLocator> wmsOrderTypeRep
|
// , IRepository<WmsPlace, MasterDbContextLocator> wmsPlaceRep
|
// , IRepository<WmsMaterialStock, MasterDbContextLocator> wmsMaterialStockRep
|
// , IRepository<WmsMaterialContainer, MasterDbContextLocator> wmsMaterialContainerRep
|
// , IRepository<WmsSortOrder, MasterDbContextLocator> wmsSortOrderRep
|
// , IRepository<WmsTask, MasterDbContextLocator> wmsTaskRep
|
// )
|
// {
|
// _wmsTakeMaterialOrderRep = wmsTakeMaterialOrderRep;
|
// _sysDictTypeRep = sysDictTypeRep;
|
// _sysDictDataRep = sysDictDataRep;
|
// _sysExcelTemplateService = sysExcelTemplateService;
|
// _wmsTakeMaterialOrderDetailRep = wmsTakeMaterialOrderDetailRep;
|
// _wmsOrderTypeRep = wmsOrderTypeRep;
|
// _wmsPlaceRep = wmsPlaceRep;
|
// _wmsMaterialStockRep = wmsMaterialStockRep;
|
// _wmsMaterialContainerRep = wmsMaterialContainerRep;
|
// _wmsSortOrderRep = wmsSortOrderRep;
|
// _wmsTaskRep = wmsTaskRep;
|
// }
|
|
// /// <summary>
|
// /// 分页查询领料单
|
// /// </summary>
|
// /// <param name="input"></param>
|
// /// <returns></returns>
|
// [HttpGet("page")]
|
// public async Task<PageResult<WmsTakeMaterialOrderOutput>> Page([FromQuery] WmsTakeMaterialOrderSearch input)
|
// {
|
// var wmsTakeMaterialOrders = await _wmsTakeMaterialOrderRep.DetachedEntities
|
// .Where(!string.IsNullOrEmpty(input.MoveType), u => EF.Functions.Like(u.MoveType, $"%{input.MoveType.Trim()}%"))
|
// .Where(!string.IsNullOrEmpty(input.NO), u => EF.Functions.Like(u.NO, $"%{input.NO.Trim()}%"))
|
// .Where(!string.IsNullOrEmpty(input.WBSElementcode), u => EF.Functions.Like(u.WBSElementcode, $"%{input.WBSElementcode.Trim()}%"))
|
// .Where(!string.IsNullOrEmpty(input.BenefitingDepartcode), u => EF.Functions.Like(u.BenefitingDepartcode, $"%{input.BenefitingDepartcode.Trim()}%"))
|
// .Where(!string.IsNullOrEmpty(input.CostCenterID), u => EF.Functions.Like(u.CostCenterID, $"%{input.CostCenterID.Trim()}%"))
|
// .Where(!string.IsNullOrEmpty(input.FI_Client_Analysis_H), u => EF.Functions.Like(u.FI_Client_Analysis_H, $"%{input.FI_Client_Analysis_H.Trim()}%"))
|
// .Where(input.IsInnerCompany != null, u => u.IsInnerCompany == input.IsInnerCompany)
|
// .Where(!string.IsNullOrEmpty(input.PickerID), u => EF.Functions.Like(u.PickerID, $"%{input.PickerID.Trim()}%"))
|
// .Where(!string.IsNullOrEmpty(input.WarehouseCentername), u => EF.Functions.Like(u.WarehouseCentername, $"%{input.WarehouseCentername.Trim()}%"))
|
// .Where(!string.IsNullOrEmpty(input.Companyname), u => EF.Functions.Like(u.Companyname, $"%{input.Companyname.Trim()}%"))
|
// .Where(input.OrderStatus != null, u => u.OrderStatus == input.OrderStatus)
|
// .OrderBy(PageInputOrder.OrderBuilder<WmsTakeMaterialOrderSearch>(input))
|
// .ProjectToType<WmsTakeMaterialOrderOutput>()
|
// .ToADPagedListAsync(input.PageNo, input.PageSize);
|
// return wmsTakeMaterialOrders;
|
// }
|
|
// /// <summary>
|
// /// 不分页查询领料单列表
|
// /// </summary>
|
// /// <param name="input">领料单查询参数</param>
|
// /// <returns>(领料单)实例列表</returns>
|
// [HttpGet("listNonPage")]
|
// public async Task<List<WmsTakeMaterialOrderOutput>> ListNonPageAsync([FromQuery] WmsTakeMaterialOrderSearchNonPage input)
|
// {
|
// var pMoveType = input.MoveType?.Trim() ?? "";
|
// var pNO = input.NO?.Trim() ?? "";
|
// var pWBSElementcode = input.WBSElementcode?.Trim() ?? "";
|
// var pBenefitingDepartcode = input.BenefitingDepartcode?.Trim() ?? "";
|
// var pCostCenterID = input.CostCenterID?.Trim() ?? "";
|
// var pFI_Client_Analysis_H = input.FI_Client_Analysis_H?.Trim() ?? "";
|
// var pIsInnerCompany = input.IsInnerCompany;
|
// var pPickerID = input.PickerID?.Trim() ?? "";
|
// var pWarehouseCentername = input.WarehouseCentername?.Trim() ?? "";
|
// var pCompanyname = input.Companyname?.Trim() ?? "";
|
// var pOrderStatus = input.OrderStatus;
|
// var wmsTakeMaterialOrders = await _wmsTakeMaterialOrderRep.DetachedEntities
|
// .Where(!string.IsNullOrEmpty(pMoveType), u => EF.Functions.Like(u.MoveType, $"%{pMoveType}%"))
|
// .Where(!string.IsNullOrEmpty(pNO), u => EF.Functions.Like(u.NO, $"%{pNO}%"))
|
// .Where(!string.IsNullOrEmpty(pWBSElementcode), u => EF.Functions.Like(u.WBSElementcode, $"%{pWBSElementcode}%"))
|
// .Where(!string.IsNullOrEmpty(pBenefitingDepartcode), u => EF.Functions.Like(u.BenefitingDepartcode, $"%{pBenefitingDepartcode}%"))
|
// .Where(!string.IsNullOrEmpty(pCostCenterID), u => EF.Functions.Like(u.CostCenterID, $"%{pCostCenterID}%"))
|
// .Where(!string.IsNullOrEmpty(pFI_Client_Analysis_H), u => EF.Functions.Like(u.FI_Client_Analysis_H, $"%{pFI_Client_Analysis_H}%"))
|
// .Where(pIsInnerCompany != null, u => u.IsInnerCompany == pIsInnerCompany)
|
// .Where(!string.IsNullOrEmpty(pPickerID), u => EF.Functions.Like(u.PickerID, $"%{pPickerID}%"))
|
// .Where(!string.IsNullOrEmpty(pWarehouseCentername), u => EF.Functions.Like(u.WarehouseCentername, $"%{pWarehouseCentername}%"))
|
// .Where(!string.IsNullOrEmpty(pCompanyname), u => EF.Functions.Like(u.Companyname, $"%{pCompanyname}%"))
|
// .Where(pOrderStatus != null, u => u.OrderStatus == pOrderStatus)
|
// .OrderBy(PageInputOrder.OrderNonPageBuilder(input))
|
// .ProjectToType<WmsTakeMaterialOrderOutput>()
|
// .ToListAsync();
|
// return wmsTakeMaterialOrders;
|
// }
|
|
// /// <summary>
|
// /// 获取单据明细
|
// /// </summary>
|
// /// <param name="input"></param>
|
// /// <returns></returns>
|
// [HttpGet("PageDetail")]
|
// public async Task<PageResult<WmsTakeMaterialOrderDetailOutput>> PageDetail([FromQuery] TakePageDetailInput input)
|
// {
|
// var wmsOrders = await _wmsTakeMaterialOrderDetailRep.DetachedEntities
|
// .Where(input.Id != null, u => u.OrderId == input.Id)
|
// .ProjectToType<WmsTakeMaterialOrderDetailOutput>()
|
// .ToADPagedListAsync(input.PageNo, input.PageSize);
|
// return wmsOrders;
|
// }
|
|
// /// <summary>
|
// /// 分页查询物料库存
|
// /// </summary>
|
// /// <param name="input"></param>
|
// /// <returns></returns>
|
// [HttpGet("stockPage")]
|
// public async Task<PageResult<TakeMaterialStockOutput>> StockPage([FromQuery] TakeMaterialStockSearch input)
|
// {
|
// //从未执行和执行中的任务中获取库位进行筛选(未写)
|
|
// //查询所有被锁定库位和待出的库存
|
// var lockPlace = await _wmsPlaceRep.DetachedEntities.Where(x => x.Islock == YesOrNot.Y || x.PlaceStatus == PlaceStatus.DAICHU).Select(x => x.PlaceCode).ToListAsync();
|
|
// var wmsMaterialStocks = await _wmsMaterialStockRep.DetachedEntities
|
// .Where(u => u.StockNumber != 0)
|
// .Where(!string.IsNullOrEmpty(input.MaterialNo), u => EF.Functions.Like(u.MaterialNo, $"%{input.MaterialNo.Trim()}%"))
|
// .Where(!string.IsNullOrEmpty(input.MaterialName), u => EF.Functions.Like(u.MaterialName, $"%{input.MaterialName.Trim()}%"))
|
// .Where(!string.IsNullOrEmpty(input.ProjectCode), u => EF.Functions.Like(u.ProjectCode, $"%{input.ProjectCode.Trim()}%"))
|
// .Where(!string.IsNullOrEmpty(input.ContractCode), u => EF.Functions.Like(u.ContractCode, $"%{input.ContractCode.Trim()}%"))
|
// .Where(!string.IsNullOrEmpty(input.TACode), u => EF.Functions.Like(u.TACode, $"%{input.TACode.Trim()}%"))
|
// .Where(input.SearchBeginTime != null && input.SearchEndTime != null, u => u.CreatedTime >= DateTime.Parse(input.SearchBeginTime.Trim()) &&
|
// u.CreatedTime <= DateTime.Parse(input.SearchEndTime.Trim()))
|
// .Where(u => u.AreaId == 472817877401669)
|
// .Where(u => !lockPlace.Contains(u.PlaceCode))
|
// .ProjectToType<TakeMaterialStockOutput>()
|
// .ToADPagedListAsync(input.PageNo, input.PageSize);
|
// return wmsMaterialStocks;
|
// }
|
|
// /// <summary>
|
// /// 物料编码下拉框
|
// /// </summary>
|
// /// <returns></returns>
|
// [HttpGet("GetMaterialNoList")]
|
// public async Task<List<MaterialNoListOutput>> GetMaterialNoList()
|
// {
|
// // 查询库位表状态为存货的库位作为查询库存的条件 固定库区
|
// List<string> wmsPlaceCodes = await _wmsPlaceRep.Where(u => u.PlaceStatus == PlaceStatus.CUNHUO && u.AreaId == 472817877401669)
|
// .Select(t => t.PlaceCode).ToListAsync();
|
// //从未执行和执行中的任务中获取库位进行筛选(未写)
|
// //查询所有被锁定库位和待出的库存
|
// var lockPlace = await _wmsPlaceRep.DetachedEntities.Where(x => x.Islock == YesOrNot.Y || x.PlaceStatus == PlaceStatus.DAICHU).Select(x => x.PlaceCode).ToListAsync();
|
// //查询库存
|
// var wmsMaterialStocks = await _wmsMaterialStockRep.DetachedEntities
|
// .ToListAsync();
|
// //未执行或执行中的明细托盘相关库存不继续显示
|
// wmsMaterialStocks = wmsMaterialStocks
|
// .Where(u => !lockPlace.Contains(u.PlaceCode))
|
// .GroupBy(x => x.MaterialNo).Select(x => x.First()).ToList();
|
// List<MaterialNoListOutput> MaterialNoListOutputLists = new List<MaterialNoListOutput>();
|
// foreach (var item in wmsMaterialStocks)
|
// {
|
// MaterialNoListOutput MaterialNoListOutput = new MaterialNoListOutput();
|
// MaterialNoListOutput.Code = item.MaterialNo;
|
// MaterialNoListOutput.MaterialNo = item.MaterialNo;
|
// MaterialNoListOutputLists.Add(MaterialNoListOutput);
|
// }
|
// return MaterialNoListOutputLists;
|
// }
|
|
// /// <summary>
|
// /// 项目编码下拉框
|
// /// </summary>
|
// /// <returns></returns>
|
// [HttpGet("GetProjectCodeList")]
|
// public async Task<List<ProjectCodeListOutput>> GetProjectCodeList()
|
// {
|
// // 查询库位表状态为存货的库位作为查询库存的条件 固定库区
|
// List<string> wmsPlaceCodes = await _wmsPlaceRep.Where(u => u.PlaceStatus == PlaceStatus.CUNHUO && u.AreaId == 472817877401669)
|
// .Select(t => t.PlaceCode).ToListAsync();
|
// //从未执行和执行中的任务中获取库位进行筛选(未写)
|
// //查询所有被锁定库位和待出的库存
|
// var lockPlace = await _wmsPlaceRep.DetachedEntities.Where(x => x.Islock == YesOrNot.Y || x.PlaceStatus == PlaceStatus.DAICHU).Select(x => x.PlaceCode).ToListAsync();
|
// //查询库存
|
// var wmsMaterialStocks = await _wmsMaterialStockRep.DetachedEntities
|
// .ToListAsync();
|
// //未执行或执行中的明细托盘相关库存不继续显示
|
// wmsMaterialStocks = wmsMaterialStocks
|
// .Where(u => !lockPlace.Contains(u.PlaceCode))
|
// .GroupBy(x => x.ProjectCode).Select(x => x.First()).ToList();
|
// List<ProjectCodeListOutput> ProjectCodeListOutputLists = new List<ProjectCodeListOutput>();
|
// foreach (var item in wmsMaterialStocks)
|
// {
|
// ProjectCodeListOutput ProjectCodeListOutput = new ProjectCodeListOutput();
|
// ProjectCodeListOutput.Code = item.ProjectCode;
|
// ProjectCodeListOutput.ProjectCode = item.ProjectCode;
|
// ProjectCodeListOutputLists.Add(ProjectCodeListOutput);
|
// }
|
// return ProjectCodeListOutputLists;
|
// }
|
|
// /// <summary>
|
// /// 增加领料单
|
// /// </summary>
|
// /// <param name="input"></param>
|
// /// <returns></returns>
|
// [HttpPost("add")]
|
// public async Task Add(AddWmsTakeMaterialOrderInput input)
|
// {
|
// // 查询单据小类是“生产入库”的Id
|
// var wmsOrderType = await _wmsOrderTypeRep.FirstOrDefaultAsync(z => z.Name.Contains("领料出库"));
|
// var wmsTakeMaterialOrder = input.Adapt<WmsTakeMaterialOrder>();
|
// wmsTakeMaterialOrder.SOID = 66666;
|
// wmsTakeMaterialOrder.OrderLargeCategory = wmsOrderType != null ? wmsOrderType.Pid : 0;
|
// wmsTakeMaterialOrder.OrderSubclass = wmsOrderType != null ? wmsOrderType.Id : 0;
|
// wmsTakeMaterialOrder.OrderStatus = OrderStatusEnum.WEIXIAFA;
|
// await _wmsTakeMaterialOrderRep.InsertAsync(wmsTakeMaterialOrder);
|
// }
|
|
// /// <summary>
|
// /// 增加领料单(yigo系统获取)
|
// /// </summary>
|
// /// <param name="input"></param>
|
// /// <returns></returns>
|
// [HttpPost("TakeOrderAdd")]
|
// [UnitOfWork]
|
// public async Task TakeOrderAdd()
|
// {
|
// //获取领料申请单
|
// string url = App.Configuration["YiGoWebApi:QueryOutBoundNotice"];
|
// var Billdate_S = DateTime.Now.AddDays(-15).ToString("yyyy-MM-dd");
|
// var Billdate_E = DateTime.Now.AddDays(15).ToString("yyyy-MM-dd");
|
// //写日志文件
|
// //Log.Error($"[TransferContainerCode][ContainerCode:{input.ContainerCode}][url:{url}]");
|
// var response = await url.SetHttpMethod(System.Net.Http.HttpMethod.Post)
|
// .SetBody(new Dictionary<string, object> {
|
// { "Billdate_S", Billdate_S },
|
// { "Billdate_E", Billdate_E},
|
// }, "application/json").PostAsStringAsync();
|
// var Data = response.FromJson<WmsTakeMaterialOrderOutputByYiGO>();
|
// var wmsOrderType = await _wmsOrderTypeRep.FirstOrDefaultAsync(z => z.Name.Contains("领料出库"));
|
// foreach (var item in Data.Data)
|
// {
|
// item.Id = Yitter.IdGenerator.YitIdHelper.NextId();
|
// var wmsTakeMaterialOrder = item.Adapt<WmsTakeMaterialOrder>();
|
// var isExcit = await _wmsTakeMaterialOrderRep.AnyAsync(x => x.NO == item.NO);
|
// if (!isExcit)
|
// {
|
// wmsTakeMaterialOrder.OrderLargeCategory = wmsOrderType != null ? wmsOrderType.Pid : 0;
|
// wmsTakeMaterialOrder.OrderSubclass = wmsOrderType != null ? wmsOrderType.Id : 0;
|
// await _wmsTakeMaterialOrderRep.InsertNowAsync(wmsTakeMaterialOrder);
|
// foreach (var item1 in item.Dtls)
|
// {
|
// var wmsTakeMaterialDeatail = item1.Adapt<WmsTakeMaterialOrderDetail>();
|
// wmsTakeMaterialDeatail.OrderId = item.Id;
|
// await _wmsTakeMaterialOrderDetailRep.InsertNowAsync(wmsTakeMaterialDeatail);
|
// }
|
// }
|
// }
|
// }
|
// /// <summary>
|
// /// 领料下架接口(yigo系统)
|
// /// </summary>
|
// /// <param name="input"></param>
|
// /// <returns></returns>
|
// [HttpPost("ReturnTakeOrder")]
|
// [UnifyResult(typeof(object))]
|
// [UnitOfWork]
|
// public async Task<object> ReturnTakeOrder([FromBody] ReturnTakeOrderInput input)
|
// {
|
// try
|
// {
|
// //创建指定名称的订单操作
|
// string url = App.Configuration["YiGoWebApi:CreateTX211"];
|
// //获取主单据
|
// var wmsTakeMaterialOrderModal = await _wmsTakeMaterialOrderRep.FirstOrDefaultAsync(x => x.Id == input.Id);
|
// if (wmsTakeMaterialOrderModal == null) throw Oops.Oh("单据信息不存在!");
|
// // 写日志文件
|
// Log.Error($"[领料下架][单据号:{wmsTakeMaterialOrderModal.NO}][url:{url}]");
|
|
// var response = await url.SetHttpMethod(HttpMethod.Post)
|
// .SetBody(input, "application/json")
|
// .PostAsAsync<ReturnTakeOrderOutput>();
|
// // 写日志文件
|
// Log.Error($"[领料下架][单据号:{wmsTakeMaterialOrderModal.NO}][response:{response.ToJson()}]");
|
|
// return XnRestfulResultProvider.RESTfulResult(response);
|
// }
|
// catch (Exception ex)
|
// {
|
// throw Oops.Oh(ex.Message);
|
// }
|
// }
|
|
|
// /// <summary>
|
// /// 下发领料单
|
// /// </summary>
|
// /// <param name="input"></param>
|
// /// <returns></returns>
|
// [HttpPost("DistributeOrder")]
|
// [UnitOfWork]
|
// public async Task DistributeOrder(DistributeOrderInput input)
|
// {
|
// // 查询单据小类是“生产入库”的Id
|
// var wmsOrderType = await _wmsOrderTypeRep.FirstOrDefaultAsync(z => z.Name.Contains("领料出库"));
|
// //获取领料单据
|
// var wmsTakeMaterialOrder = await _wmsTakeMaterialOrderRep
|
// .Where(x=>x.Id == input.Id && x.OrderLargeCategory == wmsOrderType.Pid && x.OrderSubclass == wmsOrderType.Id)
|
// .ProjectToType<WmsTakeMaterialOrder>()
|
// .FirstOrDefaultAsync();
|
// if (wmsTakeMaterialOrder == null) throw Oops.Oh("单据不存在!");
|
// wmsTakeMaterialOrder.OrderStatus = OrderStatusEnum.YIXIAFA;
|
// //更改单据状态为已下发
|
// await _wmsTakeMaterialOrderRep.UpdateAsync(wmsTakeMaterialOrder);
|
// //根据领料单明细生成分拣单
|
// foreach (var item in wmsTakeMaterialOrder.WmsTakeMaterialOrderDetail)
|
// {
|
// //获取所有为该明细物料编码的库存(不为完成状态的出库任务的库位要排除,待开发)
|
// var wmsMaterialStocks = await _wmsMaterialStockRep.DetachedEntities.Where(x => x.MaterialNo == item.Materialcode)
|
// .OrderBy(n=>n.CreatedTime)
|
// .OrderByDescending(n => n.StockNumber)
|
// .ToListAsync();
|
// List<FjStock> FjStockList = new List<FjStock>();
|
// //优先从库位为空的库存进行分拣
|
// var fjstockModel = wmsMaterialStocks.Where(p => p.PlaceCode == "N/A").ToList();
|
// if (fjstockModel != null)
|
// {
|
// foreach (var a in fjstockModel)
|
// {
|
// var FjStockModal = a.Adapt<FjStock>();
|
// FjStockModal.FjQty = a.StockNumber;
|
// if (item.DistributeQty + a.StockNumber > item.Qty)
|
// {
|
// FjStockModal.FjQty = item.Qty - item.DistributeQty;
|
// item.DistributeQty = item.Qty;
|
// FjStockList.Add(FjStockModal);
|
// break;
|
// }
|
// else
|
// {
|
// item.DistributeQty += a.StockNumber;
|
// };
|
// FjStockList.Add(FjStockModal);
|
// }
|
// }
|
// if (item.DistributeQty < item.Qty)
|
// {
|
// foreach (var b in wmsMaterialStocks.Where(x=>x.PlaceCode!="N/A"))
|
// {
|
// var FjStockModal = b.Adapt<FjStock>();
|
// FjStockModal.FjQty = b.StockNumber;
|
// if (item.DistributeQty + b.StockNumber > item.Qty)
|
// {
|
// FjStockModal.FjQty = item.Qty - item.DistributeQty;
|
// item.DistributeQty = item.Qty;
|
// FjStockList.Add(FjStockModal);
|
// break;
|
// }
|
// else
|
// {
|
// item.DistributeQty += b.StockNumber;
|
// };
|
// FjStockList.Add(FjStockModal);
|
// }
|
// }
|
|
// if (item.DistributeQty< item.Qty) throw Oops.Oh(item.Materialname+"库存数量不足!");
|
// //循环需要出库的库存生成任务和分拣单
|
// foreach (var stock in FjStockList)
|
// {
|
// //获取库位信息
|
// var wmsPlacModal = await _wmsPlaceRep.FirstOrDefaultAsync(x => x.PlaceCode == stock.PlaceCode);
|
// //物料和容器的关系
|
// var fjcvmModelList = await _wmsMaterialContainerRep.Where(z =>
|
// z.ContainerCode == stock.ContainerCode && z.BindStatus == CommonStatus.ENABLE).ToListAsync();
|
// if (wmsPlacModal!=null)
|
// {
|
// //任务
|
// var takmodel = new WmsTask()
|
// {
|
// TaskNo = Yitter.IdGenerator.YitIdHelper.NextId().ToString(),
|
// TaskModel = TaskModel.QUANZIDONG,
|
// TaskType = TaskType.CHUKU,
|
// TaskLevel = 1,
|
// TaskStatus = TaskStatusEnum.WEIZHIXING,
|
// OrderNo = fjcvmModelList.FirstOrDefault().OrderNo,
|
// OrderDetailsId = item.Id,
|
// ContainerCode = stock.ContainerCode,
|
// SourcePlace = stock.PlaceCode,
|
// ToPlace = wmsPlacModal.Aisle.ToString(), //目标位
|
// AreaName = "绝缘立库",
|
// IsRead = true, //WCS是否可以读取
|
// SendTimes = 1, //发送次数
|
// Aisle = wmsPlacModal.Aisle,
|
// TaskDodeviceStatus = TaskDodeviceStatusEnum.W,
|
// Description = "物料"
|
// };
|
// await _wmsTaskRep.InsertAsync(takmodel);
|
// }
|
// // 新增分拣
|
// var wmsSortOrder = new WmsSortOrder()
|
// {
|
// OrderNo = wmsTakeMaterialOrder.NO,
|
// Materialcode = stock.MaterialNo,
|
// Materialname = stock.MaterialName,
|
// OrderDetailID = item.Id,
|
// ContainerOrderNo = fjcvmModelList.FirstOrDefault().OrderNo,
|
// ProjectCode = item.ProjectCode,
|
// TACode = item.TACode,
|
// PartCode = item.PartCode,
|
// PlaceCode = item.PlaceCode,
|
// ContainerCode = stock.ContainerCode,
|
// SortQuantity = stock.FjQty,
|
// ActualQuantity = new decimal(0.00),
|
// SortStatus = SortStatusEnum.WEIFENJIAN
|
// };
|
// await _wmsSortOrderRep.InsertNowAsync(wmsSortOrder);
|
// }
|
// }
|
|
// }
|
|
// /// <summary>
|
// /// 删除领料单
|
// /// </summary>
|
// /// <param name="input"></param>
|
// /// <returns></returns>
|
// [HttpPost("delete")]
|
// public async Task Delete(DeleteWmsTakeMaterialOrderInput input)
|
// {
|
// var wmsTakeMaterialOrder = await _wmsTakeMaterialOrderRep.FirstOrDefaultAsync(u => u.Id == input.Id);
|
// await _wmsTakeMaterialOrderRep.DeleteAsync(wmsTakeMaterialOrder);
|
// }
|
|
// /// <summary>
|
// /// 更新领料单
|
// /// </summary>
|
// /// <param name="input"></param>
|
// /// <returns></returns>
|
// [HttpPost("edit")]
|
// public async Task Update(UpdateWmsTakeMaterialOrderInput input)
|
// {
|
// var isExist = await _wmsTakeMaterialOrderRep.AnyAsync(u => u.Id == input.Id, false);
|
// if (!isExist) throw Oops.Oh(ErrorCode.D3000);
|
|
// var wmsTakeMaterialOrder = input.Adapt<WmsTakeMaterialOrder>();
|
// await _wmsTakeMaterialOrderRep.UpdateAsync(wmsTakeMaterialOrder,ignoreNullValues:true);
|
// }
|
|
// /// <summary>
|
// /// 获取领料单
|
// /// </summary>
|
// /// <param name="input"></param>
|
// /// <returns></returns>
|
// [HttpGet("detail")]
|
// public async Task<WmsTakeMaterialOrderOutput> Get([FromQuery] QueryeWmsTakeMaterialOrderInput input)
|
// {
|
// return (await _wmsTakeMaterialOrderRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id)).Adapt<WmsTakeMaterialOrderOutput>();
|
// }
|
|
// /// <summary>
|
// /// 获取领料单列表
|
// /// </summary>
|
// /// <param name="input"></param>
|
// /// <returns></returns>
|
// [HttpGet("list")]
|
// public async Task<List<WmsTakeMaterialOrderOutput>> List([FromQuery] WmsTakeMaterialOrderInput input)
|
// {
|
// return await _wmsTakeMaterialOrderRep.DetachedEntities.ProjectToType<WmsTakeMaterialOrderOutput>().ToListAsync();
|
// }
|
// /// <summary>
|
// /// Excel模板导入领料单功能
|
// /// </summary>
|
// /// <param name="file">Excel模板文件</param>
|
// /// <param name="importExcelType">Excel导入方式</param>
|
// /// <returns>导入的记录数</returns>
|
// [HttpPost("fromExcel")]
|
// public async Task<int> FromExcelAsync(IFormFile file, [FromQuery] ImportExcelType importExcelType)
|
// {
|
// int size = 200;
|
// var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("WmsTakeMaterialOrder", "v2");
|
// if (excelTemplate == null) throw Oops.Oh(ErrorCode.Excel002);
|
// var keys = excelTemplate.UnionUniqueFields.Split(",") ?? Array.Empty<string>();
|
// for (var i = 0; i < keys.Length; i++)
|
// {
|
// keys[i] = keys[i]?.Trim() ?? string.Empty;
|
// }
|
// ExcelUtil.FromExcel(file, excelTemplate.HeadStartLine, excelTemplate.DataStartLine, out List<string> headers, out List<List<object?>> data, out string sheetName);
|
// List<WmsTakeMaterialOrderOutput> wmsTakeMaterialOrderList = DataConvertUtil.ToObjectList(headers, data, sheetName, keys, excelTemplate?.DataStartLine ?? 2, out Dictionary<string, WmsTakeMaterialOrderOutput> dict);
|
// List<Dictionary<string, object>> uniqueKeyValueDictList = wmsTakeMaterialOrderList.ParseUniqueKeyValueDictList(keys.ToList(), excelTemplate?.DataStartLine ?? 2, sheetName);
|
// var filters = DataConvertUtil.GetExpressionListByUniqueDict<WmsTakeMaterialOrder>(keys.ToList(), uniqueKeyValueDictList, size);
|
// var selectKeys = keys.ToList();
|
// if(!selectKeys.Contains("Id")) selectKeys.Add("Id");
|
// var selector = DataConvertUtil.GetSelectExpressionListByUniqueDict<WmsTakeMaterialOrder, WmsTakeMaterialOrderOutput>(selectKeys);
|
// List<WmsTakeMaterialOrder> updates = new();
|
// List<WmsTakeMaterialOrder> adds = new();
|
|
// lock (_lock)
|
// {
|
// foreach (var filter in filters)
|
// {
|
// var wmsTakeMaterialOrderExistSubList = _wmsTakeMaterialOrderRep.Where(filter).Select(selector).ToList();
|
// wmsTakeMaterialOrderExistSubList.ForEach(x =>
|
// {
|
// var k = DataConvertUtil.GetKey(x, keys);
|
// if (dict.ContainsKey(k)) dict[k].Id = x.Id;
|
// });
|
// }
|
// foreach (var wmsTakeMaterialOrder in wmsTakeMaterialOrderList)
|
// {
|
// if (wmsTakeMaterialOrder.Id > 0)
|
// {
|
// if (importExcelType == ImportExcelType.ADD_AND_UPDATE) updates.Add(wmsTakeMaterialOrder.Adapt<WmsTakeMaterialOrder>());
|
// }
|
// else
|
// {
|
// adds.Add(wmsTakeMaterialOrder.Adapt<WmsTakeMaterialOrder>());
|
// }
|
// }
|
|
// if (importExcelType == ImportExcelType.ADD_AND_UPDATE) updates.ForEach(x => _wmsTakeMaterialOrderRep.Update(x));
|
|
|
// var maxId = _wmsTakeMaterialOrderRep.DetachedEntities.OrderByDescending(x => x.Id).Select(x => x.Id).FirstOrDefault();
|
// adds.ForEach(x => x.Id = ++maxId);
|
// Db.GetDbContext().Set<WmsTakeMaterialOrder>().AddRange(adds);
|
// Db.GetDbContext().SaveChanges();
|
|
// }
|
// await Task.CompletedTask;
|
// return adds.Count;
|
// }
|
|
// /// <summary>
|
// /// 根据版本下载领料单的Excel导入模板
|
// /// </summary>
|
// /// <param name="version">模板版本</param>
|
// /// <returns>下载的模板文件</returns>
|
// [HttpGet("downloadExcelTemplate")]
|
// public async Task<IActionResult> DownloadExcelTemplate([FromQuery] string version)
|
// {
|
// var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("WmsTakeMaterialOrder", version);
|
// if (excelTemplate == null) throw Oops.Oh(ErrorCode.Excel002);
|
// var path = Path.Combine(@"\", excelTemplate.TemplateFileName);
|
// Stream ms = FileUtil.Download(path, excelTemplate.TemplateFileName);
|
// var fileName = HttpUtility.UrlEncode($"{excelTemplate.Name}导入模板.xlsx", Encoding.GetEncoding("UTF-8"));
|
// return new FileStreamResult(ms, "application/octet-stream") { FileDownloadName = fileName };
|
// }
|
// /// <summary>
|
// /// 根据领料单查询参数导出Excel
|
// /// </summary>
|
// /// <param name="input">领料单查询参数</param>
|
// /// <returns>导出的Excel文件</returns>
|
// [HttpGet("toExcel")]
|
// public async Task<IActionResult> ToExcelAsync([FromQuery] WmsTakeMaterialOrderSearchNonPage input)
|
// {
|
// var wmsTakeMaterialOrderList = await ListNonPageAsync(input);
|
// MemoryStream ms = new();
|
// DataConvertUtil.ToExcelData(wmsTakeMaterialOrderList, _sysDictTypeRep, _sysDictDataRep, out List<string> headers,
|
// out List<List<object>> data, out string sheetName);
|
// var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("WmsTakeMaterialOrder", "v1");
|
// if (excelTemplate != null)
|
// {
|
// ExcelUtil.ToExcel(excelTemplate.TemplateFileName, headers, data, sheetName, excelTemplate.HeadStartLine, excelTemplate.DataStartLine, ms);
|
// }
|
// else
|
// {
|
// ExcelUtil.ToExcel(headers, data, sheetName, ms);
|
// }
|
// ms.Position = 0;
|
// var fileName = HttpUtility.UrlEncode($"{sheetName}[{DateTimeOffset.Now:yyyy-MM-dd}].xlsx", Encoding.GetEncoding("UTF-8"));
|
// return new FileStreamResult(ms, "application/octet-stream") { FileDownloadName = fileName };
|
// }
|
// }
|
//}
|