using SqlSugar;
|
using System;
|
using System.Collections.Generic;
|
using MES.Service.DB;
|
using MES.Service.Modes;
|
using MES.Service.Dto.webApi;
|
using System.Globalization;
|
using MES.Service.service.BasicData;
|
|
namespace MES.Service.service
|
{
|
public class MesOutwareManager : Repository<MesOutware>
|
{
|
|
|
private readonly MesOutwareDetailsManager outwareDetailsManager = new();
|
//当前类已经继承了 Repository 增、删、查、改的方法
|
|
//这里面写的代码不会给覆盖,如果要重新生成请删除 MesOutwareManager.cs
|
|
|
|
|
public bool SaveList(List<ErpOut> OutWare)
|
{
|
var result = OutWare.Select(Save).ToList();
|
return result.All(b => b);
|
}
|
|
public bool Save(ErpOut OutWare)
|
{
|
var OutWares = OutWare.ErpOutWares;
|
var mesOutWares = MapErptoMesOutware(OutWares);
|
var ErpOutWareDetails = MapErptoMesOutwareDetails(OutWare.ErpOutWareDetailss);
|
|
return UseTransaction(db =>
|
{
|
switch (OutWares.Type)
|
{
|
case "3":
|
return UpdateData(db, mesOutWares, ErpOutWareDetails) ? 1 : 0;
|
case "2":
|
case "4":
|
return SaveOrUpdateData(db, mesOutWares, ErpOutWareDetails)
|
? 1
|
: 0;
|
default:
|
throw new NotImplementedException(
|
$"type没有{OutWares.Type}这个类型");
|
}
|
}) > 0;
|
}
|
|
private bool SaveOrUpdateData(SqlSugarScope db, MesOutware mesOutware,
|
List<MesOutwareDetails> mesOutwareDetails)
|
{
|
|
|
if (mesOutware.OutwareNo != null && mesOutware.OutwareType != null)
|
{
|
|
db.Deleteable<MesOutware>()
|
.Where(it => it.OutwareNo == mesOutware.OutwareNo &&
|
it.OutwareType == mesOutware.OutwareType)
|
.ExecuteCommand();
|
|
};
|
|
|
if (mesOutwareDetails.Count > 0)
|
{
|
|
// var mesWomcab = mesWomcabs.Select(s => new { CAB001 = s.Cab001, CAB002 = s.Cab002, CAB003 = s.Cab003 }).ToList();
|
var mesOutwareDetail = mesOutwareDetails.Select(s => new { OutwareNo = s.OutwareNo, OutwareType = s.OutwareType }).ToList();
|
|
|
/*db.Deleteable<Womcab>()
|
.Where(it => mesWomcab
|
.Any(p => p.CAB001 == it.Cab001
|
&& p.CAB002 == it.Cab002
|
&& p.CAB003 == it.Cab003))
|
.ExecuteCommand();*/
|
db.Deleteable<MesOutwareDetails>()
|
.Where(it => mesOutwareDetail
|
.Any(p => p.OutwareNo == it.OutwareNo
|
&& p.OutwareType == it.OutwareType))
|
.ExecuteCommand();
|
|
};
|
|
|
// var orUpdate = db.Insertable(mesOutware).ExecuteCommand();
|
//var baOrUpdate = db.Insertable(mesOutwareDetails).ExecuteCommand();
|
|
|
var orUpdate = base.Insert(mesOutware);
|
var baOrUpdate = outwareDetailsManager.InsertRange(mesOutwareDetails);
|
|
if (orUpdate && baOrUpdate) return true;
|
throw new NotImplementedException("插入或更新失败");
|
|
|
}
|
|
private bool UpdateData(SqlSugarScope db, MesOutware mesOutware,
|
List<MesOutwareDetails> mesOutwareDetails)
|
{
|
//根据单别和单号进行删除
|
var update = db.Deleteable<MesOutware>()
|
.Where(it => it.OutwareNo == mesOutware.OutwareNo &&
|
it.OutwareType == mesOutware.OutwareType)
|
.ExecuteCommand() > 0;
|
|
|
//var mesWomcab = mesWomcabs.Select(s => new { CAB001 = s.Cab001, CAB002 = s.Cab002, CAB003 = s.Cab003 }).ToList();
|
var mesOutwareDetail = mesOutwareDetails.Select(s => new { OutwareNo = s.OutwareNo, OutwareType = s.OutwareType }).ToList();
|
|
|
|
//var insertOrUpdate = db.Deleteable<Womcab>().Where(it => mesWomcab.Any(p => p.CAB001 == it.Cab001 && p.CAB002 == it.Cab002 && p.CAB003 == it.Cab003)).ExecuteCommand() > 0;
|
var insertOrUpdate = db.Deleteable<MesOutwareDetails>().Where(it => mesOutwareDetail.Any(p => p.OutwareNo == it.OutwareNo && p.OutwareType == it.OutwareType)).ExecuteCommand() > 0;
|
|
|
if (update && insertOrUpdate) return true;
|
throw new NotImplementedException("更新失败");
|
}
|
|
private MesOutware MapErptoMesOutware(ErpOutWare dto)
|
{
|
|
|
|
var entity = new MesOutware
|
{
|
OutwareType = dto.OutType,
|
OutwareNo = dto.OutNo,
|
CustNo = dto.CustNo,
|
|
BillDate = dto.BillDate,
|
BusinessBy = dto.BusinessBy,
|
WorkshopCenterCode = dto.WorkCode,
|
|
DeliveryCust = dto.DeliveryCust,
|
QuickNo = dto.QuickNo,
|
CheckBy = dto.CheckBy,
|
|
CheckDate = dto.CheckDate,
|
CreateBy = dto.CreateBy,
|
CreateDate = dto.CreateDate,
|
|
Remarks = dto.Remarks,
|
|
DeliveryAddress = dto.DeliveryAddress,
|
Type = dto.Type
|
|
|
|
};
|
|
|
|
return entity;
|
}
|
|
private List<MesOutwareDetails> MapErptoMesOutwareDetails(List<ErpOutWareDetails> dtoList)
|
{
|
var outwareList = new List<MesOutwareDetails>();
|
|
foreach (var dto in dtoList)
|
{
|
var OutwareDetails = new MesOutwareDetails
|
{
|
|
OrderType = dto.OrderType,
|
OrderNumber = dto.OrderNumber,
|
OrderNo = dto.OrderNo,
|
ItemNo = dto.ItemNo,
|
ItemName = dto.ItemName,
|
ItemModel = dto.ItemModel,
|
DepotCode = dto.DepotCode,
|
Quantity = dto.Quantity,
|
OutQuantity = dto.OutQuantity,
|
OutwareType = dto.OutType,
|
OutwareNo = dto.OutNo,
|
Type = dto.Type,
|
Remarks = dto.Remarks
|
|
};
|
|
|
|
outwareList.Add(OutwareDetails);
|
}
|
|
return outwareList;
|
}
|
|
|
public bool Delete(YFDelete data)
|
{
|
|
|
return UseTransaction(db =>
|
{
|
var update = db.Deleteable<Womcaa>()
|
.Where(it => it.Caa001 == data.FBillNo &&
|
it.SrcBillType == data.FBillTypeID)
|
.ExecuteCommand() > 0;
|
|
var insertOrUpdate = db.Deleteable<Womcab>()
|
.Where(it => it.Cab001 == data.FBillNo &&
|
it.Cab002 == data.FBillTypeID)
|
.ExecuteCommand() > 0;
|
|
|
|
if (update && insertOrUpdate) return 1;
|
throw new NotImplementedException("删除失败");
|
}) > 0;
|
|
|
}
|
|
|
|
|
|
}
|
}
|