using SqlSugar;
|
using System;
|
using System.Collections.Generic;
|
using MES.Service.DB;
|
using MES.Service.Modes;
|
using MES.Service.Dto.webApi;
|
|
namespace MES.Service.service
|
{
|
public class MesReturnwareManager : Repository<MesReturnware>
|
{
|
|
|
private readonly MesReturnwareDetailsManager ReturnwareDetailsManager = new();
|
//当前类已经继承了 Repository 增、删、查、改的方法
|
|
//这里面写的代码不会给覆盖,如果要重新生成请删除 MesReturnwareManager.cs
|
|
|
public bool SaveList(List<ErpReturn> ReturnWare)
|
{
|
var result = ReturnWare.Select(Save).ToList();
|
return result.All(b => b);
|
}
|
|
public bool Save(ErpReturn ReturnWare)
|
{
|
var ReturnWares = ReturnWare.ErpReturnWares;
|
var mesReturnWares = MapErptoMesReturnware(ReturnWares);
|
var ErpReturnWareDetails = MapErptoMesReturnwareDetails(ReturnWare.ErpReturnWareDetailss);
|
|
return UseTransaction(db =>
|
{
|
switch (ReturnWares.Type)
|
{
|
case "3":
|
return UpdateData(db, mesReturnWares, ErpReturnWareDetails) ? 1 : 0;
|
case "2":
|
case "4":
|
return SaveOrUpdateData(db, mesReturnWares, ErpReturnWareDetails)
|
? 1
|
: 0;
|
default:
|
throw new NotImplementedException(
|
$"type没有{ReturnWares.Type}这个类型");
|
}
|
}) > 0;
|
}
|
|
private bool SaveOrUpdateData(SqlSugarScope db, MesReturnware mesReturnware,
|
List<MesReturnwareDetails> mesReturnwareDetails)
|
{
|
|
|
if (mesReturnware.ReturnNo != null && mesReturnware.ReturnType != null)
|
{
|
|
db.Deleteable<MesReturnware>()
|
.Where(it => it.ReturnNo == mesReturnware.ReturnNo &&
|
it.ReturnType == mesReturnware.ReturnType)
|
.ExecuteCommand();
|
|
};
|
|
|
if (mesReturnwareDetails.Count > 0)
|
{
|
|
// var mesWomcab = mesWomcabs.Select(s => new { CAB001 = s.Cab001, CAB002 = s.Cab002, CAB003 = s.Cab003 }).ToList();
|
var mesReturnwareDetail = mesReturnwareDetails.Select(s => new { ReturnwareNo = s.ReturnNo, ReturnwareType = s.ReturnType }).ToList();
|
|
|
/*db.Deleteable<Womcab>()
|
.Where(it => mesWomcab
|
.Any(p => p.CAB001 == it.Cab001
|
&& p.CAB002 == it.Cab002
|
&& p.CAB003 == it.Cab003))
|
.ExecuteCommand();*/
|
db.Deleteable<MesReturnwareDetails>()
|
.Where(it => mesReturnwareDetail
|
.Any(p => p.ReturnwareNo == it.ReturnNo
|
&& p.ReturnwareType == it.ReturnType))
|
.ExecuteCommand();
|
|
};
|
|
|
// var orUpdate = db.Insertable(mesOutware).ExecuteCommand();
|
//var baOrUpdate = db.Insertable(mesOutwareDetails).ExecuteCommand();
|
|
|
var orUpdate = base.Insert(mesReturnware);
|
var baOrUpdate = ReturnwareDetailsManager.InsertRange(mesReturnwareDetails);
|
|
if (orUpdate && baOrUpdate) return true;
|
throw new NotImplementedException("插入或更新失败");
|
|
|
}
|
|
private bool UpdateData(SqlSugarScope db, MesReturnware mesReturnware,
|
List<MesReturnwareDetails> mesReturnwareDetails)
|
{
|
//根据单别和单号进行删除
|
var update = db.Deleteable<MesReturnware>()
|
.Where(it => it.ReturnNo == mesReturnware.ReturnNo &&
|
it.ReturnType == mesReturnware.ReturnType)
|
.ExecuteCommand() > 0;
|
|
|
//var mesWomcab = mesWomcabs.Select(s => new { CAB001 = s.Cab001, CAB002 = s.Cab002, CAB003 = s.Cab003 }).ToList();
|
var mesReturnwareDetail = mesReturnwareDetails.Select(s => new { ReturnwareNo = s.ReturnNo, ReturnwareType = s.ReturnType }).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<MesReturnwareDetails>().Where(it => mesReturnwareDetail.Any(p => p.ReturnwareNo == it.ReturnNo && p.ReturnwareType == it.ReturnType)).ExecuteCommand() > 0;
|
|
|
if (update && insertOrUpdate) return true;
|
throw new NotImplementedException("更新失败");
|
}
|
|
private MesReturnware MapErptoMesReturnware(ErpReturnWare dto)
|
{
|
|
|
|
var entity = new MesReturnware
|
{
|
ReturnType = dto.ReturnType,
|
ReturnNo = dto.ReturnNo,
|
CustNo = dto.CustNo,
|
BillDate = dto.BillDate,
|
BusinessBy = dto.BusinessBy,
|
WorkshopCenterCode = dto.WorkCode,
|
Remarks = dto.Remarks,
|
CreateBy = dto.CreateBy,
|
CreateDate = dto.CreateDate,
|
Type = dto.Type,
|
Over=dto.Over ?? 0
|
};
|
|
|
|
return entity;
|
}
|
|
private List<MesReturnwareDetails> MapErptoMesReturnwareDetails(List<ErpReturnWareDetails> dtoList)
|
{
|
var returnwareList = new List<MesReturnwareDetails>();
|
|
foreach (var dto in dtoList)
|
{
|
var ReturnwareDetails = new MesReturnwareDetails
|
{
|
|
|
ItemNo = dto.ItemNo,
|
ItemName = dto.ItemName,
|
ItemModel = dto.ItemModel,
|
Quantity = dto.Quantity,
|
Type = dto.Type,
|
DepotCode = dto.DepotCode,
|
ReturnType = dto.ReturnType,
|
ReturnNo = dto.ReturnNo,
|
ReturnOrder = dto.ReturnOrder,
|
OrderType = dto.OrderType,
|
OrderNumber = dto.OrderNumber,
|
OrderNo = dto.OrderNo,
|
ActualQuantity = dto.ActQuantity,
|
CustItemNo = dto.CustItemNo,
|
CustItemName = dto.CustItemName,
|
CustItemModel = dto.CustItemModel,
|
Remarks=dto.Remarks
|
|
};
|
|
|
|
returnwareList.Add(ReturnwareDetails);
|
}
|
|
return returnwareList;
|
}
|
|
|
public bool Delete(YFDelete data)
|
{
|
|
|
return UseTransaction(db =>
|
{
|
var update = db.Deleteable<MesReturnware>()
|
.Where(it => it.ReturnNo == data.FBillNo &&
|
it.ReturnType == data.FBillTypeID)
|
.ExecuteCommand() > 0;
|
|
var insertOrUpdate = db.Deleteable<MesReturnwareDetails>()
|
.Where(it => it.ReturnNo == data.FBillNo &&
|
it.ReturnType == data.FBillTypeID)
|
.ExecuteCommand() > 0;
|
|
|
|
if (update && insertOrUpdate) return 1;
|
throw new NotImplementedException("删除失败");
|
}) > 0;
|
|
|
}
|
|
|
}
|
}
|