using MailKit.Search;
|
using Masuit.Tools;
|
using Newtonsoft.Json;
|
using WIDESEA_Common;
|
using WIDESEA_Core;
|
using WIDESEA_Core.BaseRepository;
|
using WIDESEA_Core.BaseServices;
|
using WIDESEA_Core.Const;
|
using WIDESEA_Core.Helper;
|
using WIDESEA_IBusinessesRepository;
|
using WIDESEA_IOrderRepository;
|
using WIDESEA_IOrderServices;
|
using WIDESEA_IServices;
|
using WIDESEA_IStorageTaskRepository;
|
using WIDESEA_IStorageTaskServices;
|
using WIDESEA_Model.Models;
|
using WIDESEA_Model.Models.Order;
|
using WIDESEA_OrderRepository;
|
|
namespace WIDESEA_OrderServices
|
{
|
public class Dt_InboundOrderService : ServiceBase<Dt_InboundOrder, IDt_InboundOrderRepository>, IDt_InboundOrderService
|
{
|
private readonly IUnitOfWorkManage _unitOfWorkManage;
|
private readonly ISys_ConfigService _configService;
|
private readonly IDt_WareAreaInfoRepository _wareAreaInfoRepository;
|
|
public Dt_InboundOrderService(IDt_InboundOrderRepository BaseDal,
|
IUnitOfWorkManage unitOfWorkManage,
|
ISys_ConfigService configService,
|
IDt_WareAreaInfoRepository wareAreaInfoRepository) : base(BaseDal)
|
{
|
_unitOfWorkManage = unitOfWorkManage;
|
_configService = configService;
|
_wareAreaInfoRepository = wareAreaInfoRepository;
|
}
|
|
public override WebResponseContent UpdateData(SaveModel saveModel)
|
{
|
var quantity = saveModel.MainData["quantity"].ToString();
|
var wareHouseId = saveModel.MainData["wareHouseId"].ToString();
|
|
Dt_WareAreaInfo? wareinfo = _wareAreaInfoRepository.QueryFirst(x => x.WareAreaCode == wareHouseId);
|
|
if (wareinfo == null)
|
{
|
return WebResponseContent.Instance.Error("未找到仓库信息!");
|
}
|
saveModel.MainData.Add("warehouseName", wareinfo.WareAreaName.ToString());
|
return base.UpdateData(saveModel);
|
}
|
|
/// <summary>
|
/// 查询入库单据信息
|
/// </summary>
|
/// <param name="OrderNo"></param>
|
/// <returns></returns>
|
public WebResponseContent GetInboundOrderInfo(string OrderNo)
|
{
|
WebResponseContent content=new WebResponseContent();
|
try
|
{
|
var InboundOrder = BaseDal.QueryFirst(x => x.OrderNo == OrderNo);
|
if (InboundOrder == null)
|
{
|
return content.Error($"未找到该单号数据请人工确认");
|
}
|
return content.OK(data: InboundOrder);
|
}
|
catch (Exception ex)
|
{
|
return content.Error(ex.Message);
|
}
|
}
|
|
/// <summary>
|
/// 打印
|
/// </summary>
|
/// <param name="keys"></param>
|
/// <returns></returns>
|
public WebResponseContent PrintOrder(int[] keys)
|
{
|
WebResponseContent content = new WebResponseContent();
|
try
|
{
|
List<Dt_InboundOrder> inboundOrders = new List<Dt_InboundOrder>();
|
foreach (var item in keys)
|
{
|
var InboundOrder = BaseDal.QueryFirst(x => x.Id == item);
|
if(InboundOrder != null)
|
{
|
inboundOrders.Add(InboundOrder);
|
}
|
}
|
content = PrintInbound(inboundOrders);
|
return content;
|
}
|
catch (Exception ex)
|
{
|
return content.Error("未知错误,请联系管理员");
|
}
|
}
|
|
/// <summary>
|
/// 多次打印
|
/// </summary>
|
/// <param name="keys"></param>
|
/// <param name="num"></param>
|
/// <returns></returns>
|
public WebResponseContent MultiplePrintOrder(int keys,int num)
|
{
|
WebResponseContent content = new WebResponseContent();
|
try
|
{
|
List<Dt_InboundOrder> inboundOrders = new List<Dt_InboundOrder>();
|
var InboundOrder = BaseDal.QueryFirst(x => x.Id == keys);
|
for (int i = 0; i < num; i++)
|
{
|
if (InboundOrder != null)
|
{
|
inboundOrders.Add(InboundOrder);
|
}
|
}
|
|
content = PrintInbound(inboundOrders);
|
return content;
|
}
|
catch (Exception ex)
|
{
|
return content.Error("未知错误,请联系管理员");
|
}
|
}
|
|
/// <summary>
|
/// 拆分
|
/// </summary>
|
/// <param name="id"></param>
|
/// <param name="num"></param>
|
/// <returns></returns>
|
public WebResponseContent SplitOrder(int id,int num)
|
{
|
WebResponseContent content = new WebResponseContent();
|
try
|
{
|
var originalOrder = BaseDal.QueryFirst(x => x.Id == id);
|
if (originalOrder == null)
|
{
|
return content.Error("未找到该入库单信息");
|
}
|
if(originalOrder.Quantity < num || num <= 0 || originalOrder.Quantity - num == 0)
|
{
|
return content.Error("拆分数量不合法");
|
}
|
Dt_InboundOrder orderNew = new Dt_InboundOrder()
|
{
|
OrderNo = GetOrderPintCode("OrderNoIn"),
|
UpperOrderNo = originalOrder.UpperOrderNo,
|
DemandClassification = originalOrder.DemandClassification,
|
OrderType = originalOrder.OrderType,
|
WarehouseName = originalOrder.WarehouseName,
|
Datetime = originalOrder.Datetime,
|
LineNumber = originalOrder.LineNumber,
|
ProductDrawingNumber = originalOrder.ProductDrawingNumber,
|
MaterialNo = originalOrder.MaterialNo,
|
MaterialName = originalOrder.MaterialName,
|
Weight = originalOrder.Weight,
|
WareHouseId = originalOrder.WareHouseId,
|
Specs = originalOrder.Specs,
|
Unit = originalOrder.Unit,
|
Texture = originalOrder.Texture,
|
Quantity = num,
|
OrderStatus = originalOrder.OrderStatus,
|
};
|
originalOrder.Quantity = originalOrder.Quantity - num;
|
|
BaseDal.AddData(orderNew);
|
BaseDal.UpdateData(originalOrder);
|
return content.OK();
|
}
|
catch (Exception ex)
|
{
|
return content.Error("未知错误,请联系管理员");
|
}
|
}
|
|
|
/// <summary>
|
/// 打印托盘码
|
/// </summary>
|
/// <param name="num"></param>
|
/// <returns></returns>
|
public WebResponseContent PrintPalletCode(int num)
|
{
|
WebResponseContent content = new WebResponseContent();
|
try
|
{
|
List<string> PalletCodes = new List<string>();
|
for (int i = 0; i < num; i++)
|
{
|
PalletCodes.Add(GetOrderPintCode("PalletCodes"));
|
}
|
content= PrintPallet(PalletCodes);
|
return content.OK();
|
}
|
catch (Exception ex)
|
{
|
return content.Error("未知错误,请联系管理员");
|
}
|
}
|
|
/// <summary>
|
/// 获取订单编号
|
/// </summary>
|
/// <param name="printCode"></param>
|
/// <returns></returns>
|
public string GetOrderPintCode(string printCode)
|
{
|
string PrintCode = "";
|
var PrintSetting = SqlSugarHelper.DbWMS.Queryable<Dt_PrintSetting>().Where(x => x.PrintCode == printCode).ToList().FirstOrDefault();
|
|
if (PrintSetting.Spare1 == DateTime.Now.ToString("yyyyMMdd"))
|
{
|
PrintCode = PrintSetting.Spare1 + PrintSetting.PrintNo.ToString().PadLeft(PrintSetting.Spare2, '0');
|
PrintSetting.PrintNo = PrintSetting.PrintNo + 1;
|
}
|
else
|
{
|
PrintSetting.Spare1 = DateTime.Now.ToString("yyyyMMdd");
|
PrintSetting.PrintNo = 2;
|
PrintCode = PrintSetting.Spare1 + 1.ToString().PadLeft(PrintSetting.Spare2, '0');
|
}
|
SqlSugarHelper.DbWMS.Updateable(PrintSetting).ExecuteCommand();
|
return PrintCode;
|
}
|
|
/// <summary>
|
/// 调用打印托盘码接口
|
/// </summary>
|
/// <param name="palletCodes"></param>
|
/// <returns></returns>
|
/// <exception cref="InvalidOperationException"></exception>
|
public WebResponseContent PrintPallet(List<string> palletCodes)
|
{
|
var configs = _configService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress);
|
var Base = configs.FirstOrDefault(x => x.ConfigKey == SysConfigConst.PrintIPAddress)?.ConfigValue;
|
var ipAddress = configs.FirstOrDefault(x => x.ConfigKey == SysConfigConst.PrintPalletCodes)?.ConfigValue;
|
if (Base == null || ipAddress == null)
|
{
|
throw new InvalidOperationException("WMS IP 未配置");
|
}
|
var IpAddress = Base + ipAddress;
|
var result = HttpsClient.PostAsync(IpAddress, palletCodes.ToJsonString()).Result;
|
return JsonConvert.DeserializeObject<WebResponseContent>(result);
|
}
|
|
/// <summary>
|
/// 调用打印单据接口
|
/// </summary>
|
/// <param name="orders"></param>
|
/// <returns></returns>
|
/// <exception cref="InvalidOperationException"></exception>
|
public WebResponseContent PrintInbound(List<Dt_InboundOrder> orders)
|
{
|
var configs = _configService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress);
|
var Base = configs.FirstOrDefault(x => x.ConfigKey == SysConfigConst.PrintIPAddress)?.ConfigValue;
|
var ipAddress = configs.FirstOrDefault(x => x.ConfigKey == SysConfigConst.PrintInboundOrder)?.ConfigValue;
|
if (Base == null || ipAddress == null)
|
{
|
throw new InvalidOperationException("WMS IP 未配置");
|
}
|
var IpAddress = Base + ipAddress;
|
var result = HttpsClient.PostAsync(IpAddress, orders.ToJsonString()).Result;
|
return JsonConvert.DeserializeObject<WebResponseContent>(result);
|
}
|
}
|
}
|