using HslCommunication.WebSocket;
|
using Microsoft.Extensions.Logging;
|
using Newtonsoft.Json;
|
using SqlSugar;
|
using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.Text;
|
using System.Threading.Tasks;
|
using WIDESEA_Common.OrderEnum;
|
using WIDESEA_Core;
|
using WIDESEA_Core.BaseRepository;
|
using WIDESEA_Core.BaseServices;
|
using WIDESEA_Core.CodeConfigEnum;
|
using WIDESEA_Core.Enums;
|
using WIDESEA_Core.Helper;
|
using WIDESEA_ICheckService;
|
using WIDESEA_IOutboundService;
|
using WIDESEA_Model.Models;
|
using WIDESEA_Model.Models.Check;
|
|
namespace WIDESEA_CheckService
|
{
|
|
public class ReCheckOrderService : ServiceBase<Dt_ReCheckOrder, IRepository<Dt_ReCheckOrder>>, IReCheckOrderService
|
{
|
private readonly IUnitOfWorkManage _unitOfWorkManage;
|
private readonly WebSocketServer _webSocketServer;
|
private readonly ILogger<ReCheckOrderService> _logger;
|
|
public readonly IOutboundService _outboundService;
|
public IRepository<Dt_ReCheckOrder> Repository => BaseDal;
|
public ReCheckOrderService(IRepository<Dt_ReCheckOrder> BaseDal, IUnitOfWorkManage unitOfWorkManage, WebSocketServer webSocketServer, ILogger<ReCheckOrderService> logger, IOutboundService outboundService) : base(BaseDal)
|
{
|
_unitOfWorkManage = unitOfWorkManage;
|
_webSocketServer = webSocketServer;
|
_logger = logger;
|
_outboundService = outboundService;
|
}
|
|
public async Task<WebResponseContent> ReceiveReCheckOrder(Dt_ReCheckOrder models, int operateType)
|
{
|
try
|
{
|
return operateType switch
|
{
|
1 =>await AddReCheckOrder(models),
|
2 =>await UpdateReCheckOrder(models),
|
3 => DeleteReCheckOrder(models),
|
|
_ => WebResponseContent.Instance.OK(),
|
};
|
}
|
catch (Exception ex)
|
{
|
_logger.LogInformation("ReCheckOrderService ReceiveReCheckOrder: " + ex.Message);
|
return WebResponseContent.Instance.Error(ex.Message);
|
}
|
}
|
|
public async Task<WebResponseContent> AddReCheckOrder(Dt_ReCheckOrder model)
|
{
|
try
|
{
|
|
if (BaseDal.QueryFirst(x => x.OrderNo == model.OrderNo) != null)
|
{
|
return WebResponseContent.Instance.Error($"单号重复");
|
}
|
|
model.Creater = "MES";
|
model.CreateDate = DateTime.Now;
|
BaseDal.AddData(model);
|
var outboundOrders = ConvertToOutboundOrders(model);
|
|
await _outboundService.OutboundOrderService.ReceiveOutboundOrder(outboundOrders, 1);
|
return WebResponseContent.Instance.OK();
|
}
|
catch (Exception ex)
|
{
|
_logger.LogInformation("ReCheckOrderService AddReCheckOrder: " + ex.Message);
|
return WebResponseContent.Instance.Error(ex.Message);
|
}
|
}
|
public async Task<WebResponseContent> UpdateReCheckOrder(Dt_ReCheckOrder model)
|
{
|
try
|
{
|
|
var recheckOrder = Db.Queryable<Dt_ReCheckOrder>().Where(x => x.OrderNo == model.OrderNo).First();
|
if (recheckOrder == null)
|
{
|
return WebResponseContent.Instance.Error($"未找到单信息");
|
}
|
var isupdate = false;
|
if (recheckOrder.SignSeq == model.SignSeq)
|
{
|
isupdate = true;
|
}
|
recheckOrder.OrderNo = model.OrderNo;
|
recheckOrder.MaterielCode = model.MaterielCode;
|
recheckOrder.BatchNo = model.BatchNo;
|
recheckOrder.Unit = model.Unit;
|
recheckOrder.Result = model.Result;
|
recheckOrder.InspectionNumber = model.InspectionNumber;
|
recheckOrder.SignSeq = model.SignSeq;
|
recheckOrder.Qty = model.Qty;
|
recheckOrder.WarehouseCode = model.WarehouseCode;
|
recheckOrder.FactoryArea = model.FactoryArea;
|
recheckOrder.Modifier = "MES";
|
recheckOrder.ModifyDate = DateTime.Now;
|
|
BaseDal.UpdateData(recheckOrder);
|
|
if (isupdate)
|
{
|
_outboundService.OutboundOrderService.Db.Deleteable<Dt_OutboundOrder>().Where(x => x.OrderNo == model.OrderNo).ExecuteCommand();
|
_outboundService.OutboundOrderDetailService.Db.Deleteable<Dt_OutboundOrderDetail>()
|
.Where(p => SqlFunc.Subqueryable<Dt_OutboundOrder>().Where(s => s.Id == p.OrderId && s.OrderNo == model.OrderNo).Any()).ExecuteCommand();
|
|
var outboundOrders = ConvertToOutboundOrders(model);
|
await _outboundService.OutboundOrderService.ReceiveOutboundOrder(outboundOrders, 1);
|
}
|
return WebResponseContent.Instance.OK();
|
}
|
catch (Exception ex)
|
{
|
_logger.LogInformation("ReCheckOrderService UpdateReCheckOrder: " + ex.Message);
|
return WebResponseContent.Instance.Error(ex.Message);
|
}
|
}
|
|
public WebResponseContent DeleteReCheckOrder(Dt_ReCheckOrder model)
|
{
|
try
|
{
|
|
var recheckOrder = Db.Queryable<Dt_ReCheckOrder>().Where(x => x.OrderNo == model.OrderNo).First();
|
if (recheckOrder == null)
|
{
|
return WebResponseContent.Instance.Error($"未找到单信息");
|
}
|
|
BaseDal.DeleteData(recheckOrder);
|
|
_outboundService.OutboundOrderService.Db.Deleteable<Dt_OutboundOrder>().Where(x => x.OrderNo == model.OrderNo).ExecuteCommand();
|
_outboundService.OutboundOrderDetailService.Db.Deleteable<Dt_OutboundOrderDetail>()
|
.Where(p => SqlFunc.Subqueryable<Dt_OutboundOrder>().Where(s => s.Id == p.OrderId && s.OrderNo == model.OrderNo).Any()).ExecuteCommand();
|
|
|
return WebResponseContent.Instance.OK();
|
}
|
catch (Exception ex)
|
{
|
_logger.LogInformation("ReCheckOrderService DeleteReCheckOrder: " + ex.Message);
|
return WebResponseContent.Instance.Error(ex.Message);
|
}
|
}
|
|
|
|
public Dt_OutboundOrder ConvertToOutboundOrders(Dt_ReCheckOrder reCheckOrder)
|
{
|
|
var outboundOrder = new Dt_OutboundOrder()
|
{
|
WarehouseId = 0,
|
OrderNo = reCheckOrder.OrderNo,
|
UpperOrderNo = reCheckOrder.OrderNo,
|
OrderType = InOrderTypeEnum.ReCheck.ObjToInt(),
|
OrderStatus = 0,
|
CreateType = 0,
|
BusinessType = "",
|
IsBatch = 0,
|
FactoryArea = reCheckOrder.FactoryArea,
|
Remark = "",
|
DepartmentCode = "",
|
DepartmentName = "",
|
Details = new List<Dt_OutboundOrderDetail>()
|
};
|
outboundOrder.Details.Add(
|
new Dt_OutboundOrderDetail
|
{
|
OrderId = 0,
|
MaterielCode = reCheckOrder.MaterielCode,
|
MaterielName = "",
|
BatchNo = reCheckOrder.BatchNo,
|
OrderQuantity = reCheckOrder.Qty,
|
BarcodeQty = (decimal)reCheckOrder.Qty,
|
BarcodeUnit = reCheckOrder.Unit,
|
LockQuantity = 0,
|
lineNo = "",
|
OverOutQuantity = 0,
|
OrderDetailStatus = 0,
|
Unit = reCheckOrder.Unit,
|
RowNo = 0,
|
SupplyCode = "",
|
WarehouseCode = reCheckOrder.WarehouseCode,
|
}
|
);
|
return outboundOrder;
|
}
|
|
}
|
}
|