using AutoMapper;
|
using Castle.Core.Resource;
|
using Org.BouncyCastle.Asn1.Cmp;
|
using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.Text;
|
using System.Threading;
|
using System.Threading.Tasks;
|
using WIDESEA_Common.OrderEnum;
|
using WIDESEA_Common.StockEnum;
|
using WIDESEA_Common.WareHouseEnum;
|
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_DTO.ERP;
|
using WIDESEA_DTO.Outbound;
|
using WIDESEA_External.ERPService;
|
using WIDESEA_External.Model;
|
using WIDESEA_IBasicRepository;
|
using WIDESEA_IBasicService;
|
using WIDESEA_IOutboundRepository;
|
using WIDESEA_IOutboundService;
|
using WIDESEA_IRecordService;
|
using WIDESEA_IStockRepository;
|
using WIDESEA_IStockService;
|
using WIDESEA_Model.Models;
|
|
namespace WIDESEA_OutboundService
|
{
|
public partial class ProCollectOutOrderService : ServiceBase<Dt_ProCollectOutOrder, IProCollectOutOrderRepository>, IProCollectOutOrderService
|
{
|
private readonly IUnitOfWorkManage _unitOfWorkManage;
|
private readonly IBasicRepository _basicRepository;
|
private readonly IMapper _mapper;
|
private readonly IInvokeERPService _invokeERPService;
|
private readonly IProCollectOutOrderDetailRepository _proCollectOutOrderDetailRepository;
|
|
public IProCollectOutOrderRepository Repository => BaseDal;
|
|
public ProCollectOutOrderService(IProCollectOutOrderRepository BaseDal, IUnitOfWorkManage unitOfWorkManage, IBasicRepository basicRepository, IMapper mapper, IInvokeERPService invokeERPService,IProCollectOutOrderDetailRepository proCollectOutOrderDetailRepository) : base(BaseDal)
|
{
|
_unitOfWorkManage = unitOfWorkManage;
|
_basicRepository = basicRepository;
|
_mapper = mapper;
|
_invokeERPService = invokeERPService;
|
_proCollectOutOrderDetailRepository = proCollectOutOrderDetailRepository;
|
}
|
|
public WebResponseContent ProductOutOrder(ErpProOutLingOrder erpProOutLingOrder)
|
{
|
WebResponseContent content = new WebResponseContent();
|
try
|
{
|
Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseCode == erpProOutLingOrder.WaType);
|
if (warehouse == null)
|
{
|
return content.Error($"未找到该仓库信息");
|
}
|
Dt_ProCollectOutOrder proCollectOutOrder = BaseDal.Db.Queryable<Dt_ProCollectOutOrder>().Where(x=>x.ProCollectOutOrderNo==erpProOutLingOrder.OrderNo).Includes(x=>x.Details).First();
|
if (_proCollectOutOrderDetailRepository.QueryFirst(x=>x.RowId==erpProOutLingOrder.RowId)!=null)
|
{
|
return content.Error($"成品领料单,行号{erpProOutLingOrder.RowId}已存在");
|
}
|
if (proCollectOutOrder!=null)
|
{
|
if (proCollectOutOrder.ProOrderStatus!= OutOrderStatusEnum.未开始.ObjToInt())
|
{
|
return content.Error($"当前单据已开始执行");
|
}
|
else
|
{
|
Dt_ProCollectOutOrderDetail proCollectOutOrderDetail = _mapper.Map<Dt_ProCollectOutOrderDetail>(erpProOutLingOrder);
|
proCollectOutOrderDetail.ProCollectOrderId = proCollectOutOrder.Id;
|
_proCollectOutOrderDetailRepository.AddData(proCollectOutOrderDetail);
|
return content.OK("接收成功");
|
}
|
}
|
else
|
{
|
Dt_ProCollectOutOrderDetail proCollectOutOrderDetail = _mapper.Map<Dt_ProCollectOutOrderDetail>(erpProOutLingOrder);
|
|
Dt_ProCollectOutOrder collectOutOrder = new Dt_ProCollectOutOrder()
|
{
|
WarehouseId = warehouse.WarehouseId,
|
ProCollectOutOrderNo = erpProOutLingOrder.OrderNo,
|
ProOrderType = ErpProOutTypeEnum.ProCollect.ObjToInt(),
|
ProOrderStatus = OutOrderStatusEnum.未开始.ObjToInt(),
|
Details=new List<Dt_ProCollectOutOrderDetail> { proCollectOutOrderDetail }
|
};
|
BaseDal.Db.InsertNav(collectOutOrder).Include(x=>x.Details).ExecuteCommand();
|
return content.OK("接收成功");
|
}
|
}
|
catch (Exception ex)
|
{
|
content.Error(ex.Message);
|
}
|
return content;
|
}
|
}
|
}
|