using AngleSharp.Dom;
|
using MES.Service.DB;
|
using MES.Service.Dto.webApi;
|
using MES.Service.Modes;
|
using SqlSugar;
|
using System.Data;
|
using System.Globalization;
|
using DbType = System.Data.DbType;
|
|
namespace MES.Service.service;
|
|
public class MesSalesOrderManager : Repository<MesSalesOrder>
|
{
|
//当前类已经继承了 Repository 增、删、查、改的方法
|
|
//这里面写的代码不会给覆盖,如果要重新生成请删除 SalesOrderManager.cs
|
|
private readonly MesSalesOrderDetailManager _MesSalesOrderDetailManagerManager = new();
|
|
public bool SaveList(List<ErpSales> rohIns)
|
{
|
var result = rohIns.Select(Save).ToList();
|
return result.All(b => b);
|
}
|
|
public bool Save(ErpSales sales)
|
{
|
var salesErpOrder = sales.ErpOrder;
|
var mesSalesOrder = MapErpORDERtoMesSalesOrder(salesErpOrder);
|
var mesSalesOrderDetails = MapErpDETAILtoMesSalesOrderDetail(sales.ErpDetails);
|
|
return UseTransaction(db =>
|
{
|
switch (salesErpOrder.Type)
|
{
|
case "3":
|
return UpdateData(db, mesSalesOrder, mesSalesOrderDetails) ? 1 : 0;
|
case "2":
|
return SaveOrUpdateData(db, mesSalesOrder, mesSalesOrderDetails)
|
? 1
|
: 0;
|
default:
|
throw new NotImplementedException(
|
$"type没有{salesErpOrder.Type}这个类型");
|
}
|
}) > 0;
|
}
|
private bool SaveOrUpdateData(SqlSugarScope db, MesSalesOrder mesSalesOrder,
|
List<MesSalesOrderDetail> mesSalesOrderDetails)
|
{
|
|
if (mesSalesOrder.OrderId != null && mesSalesOrder.OrderType != null)
|
{
|
|
db.Deleteable<MesSalesOrder>()
|
.Where(it => it.OrderId == mesSalesOrder.OrderId &&
|
it.OrderType == mesSalesOrder.OrderType)
|
.ExecuteCommand();
|
|
};
|
if (mesSalesOrderDetails.Count > 0)
|
{
|
|
var mesSalesOrderDetail = mesSalesOrderDetails.Select(s => new { s.OrderId, s.LineNumber }).ToList();
|
|
db.Deleteable<MesSalesOrderDetail>()
|
.Where(it => mesSalesOrderDetails
|
.Any(p => p.OrderId == it.OrderId
|
&& p.LineNumber == it.LineNumber))
|
.ExecuteCommand();
|
|
};
|
|
var orUpdate = db.Insertable(mesSalesOrder).ExecuteCommand();
|
var baOrUpdate = db.Insertable(mesSalesOrderDetails).ExecuteCommand();
|
|
return orUpdate > 0 && baOrUpdate > 0;
|
throw new NotImplementedException("插入或更新失败");
|
|
|
}
|
private bool UpdateData(SqlSugarScope db, MesSalesOrder mesSalesOrder,
|
List<MesSalesOrderDetail> mesSalesOrderDetails)
|
{
|
//根据单别和单号进行删除
|
var update = db.Deleteable<MesSalesOrder>()
|
.Where(it => it.OrderId == mesSalesOrder.OrderId &&
|
it.OrderType == mesSalesOrder.OrderType)
|
.ExecuteCommand() > 0;
|
|
var mesSalesOrderDetail = mesSalesOrderDetails.Select(s => new { s.OrderId, s.LineNumber }).ToList();
|
|
var insertOrUpdate = db.Deleteable<MesSalesOrderDetail>().Where(it => mesSalesOrderDetail.Any(p => p.OrderId == it.OrderId && p.LineNumber==it.LineNumber)).ExecuteCommand() > 0;
|
|
|
if (update && insertOrUpdate) return true;
|
throw new NotImplementedException("更新失败");
|
}
|
|
private MesSalesOrder MapErpORDERtoMesSalesOrder(ErpORDER dto)
|
{
|
var entity = new MesSalesOrder
|
{
|
OrderId = dto.FBillNo,
|
OrderType = dto.FBillTypeID,
|
DocumentDate = DateTime.TryParseExact(dto.FDate, "yyyy-MM-dd", CultureInfo.InvariantCulture, DateTimeStyles.None, out DateTime documentDate) ? (DateTime?)documentDate : null,
|
CustomerId = dto.FCustId,
|
CustomerOrderId= dto.F_UNW_Text_KHDD,
|
DepartmentId= dto.FSaleDeptId,
|
TotalQuantity = long.TryParse(dto.FNote, out long quantity) ? (long?)quantity : null,
|
Remarks =dto.F_UNW_LargeText_TBKHBZ,
|
ApprovalDate = DateTime.TryParse(dto.FApproveDate, out DateTime approveDate) ? (DateTime?)approveDate : null,
|
Approver = dto.FApproverId
|
};
|
return entity;
|
}
|
|
private List<MesSalesOrderDetail> MapErpDETAILtoMesSalesOrderDetail(List<ErpDETAIL> dtoList)
|
{
|
var detailList = new List<MesSalesOrderDetail>();
|
|
foreach (var dto in dtoList)
|
{
|
var mesSalesOrderDetail = new MesSalesOrderDetail
|
{
|
|
OrderId= dto.F_UNW_Text_xsddh,
|
LineNumber = dto.LineNumber,
|
ProductCode =dto.FMaterialId,
|
ProductName =dto.FMaterialName,
|
ProductSpec=dto.FMaterialModel,
|
ScheduledDeliveryDate = DateTime.TryParse(dto.FMinPlanDeliveryDate, out DateTime scheduledDeliveryDate) ? (DateTime?)scheduledDeliveryDate : null,
|
OrderQuantity = long.TryParse(dto.FQty, out long quantity) ? (long?)quantity : null,
|
Unit = dto.FUnitID,
|
UnitPrice = long.TryParse(dto.FPrice, out long price) ? (long?)price : null,
|
Amount = long.TryParse(dto.FAmount, out long amount) ? (long?)amount : null,
|
|
|
};
|
detailList.Add(mesSalesOrderDetail);
|
}
|
return detailList;
|
}
|
|
|
public bool Delete(YFDelete data)
|
{
|
|
return UseTransaction(db =>
|
{
|
var update = db.Deleteable<MesSalesOrder>()
|
.Where(it => it.OrderId == data.FBillNo &&
|
it.OrderType == data.FBillTypeID)
|
.ExecuteCommand() > 0;
|
|
var insertOrUpdate = db.Deleteable<MesSalesOrderDetail>()
|
.Where(it => it.OrderId == data.FBillNo
|
&& it.LineNumber == data.FBillTypeID)
|
.ExecuteCommand() > 0;
|
|
|
|
if (update && insertOrUpdate) return 1;
|
throw new NotImplementedException("删除失败");
|
}) > 0;
|
|
|
}
|
|
|
|
}
|