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.Dto.service;
|
|
namespace MES.Service.service
|
{
|
public class CgsqManager : Repository<Cgsq>
|
{
|
|
private readonly CgsqDetailManager CgsqDetailManager = new();
|
|
public bool Save(CgsqDto Cgsq)
|
{
|
// var CgsqDto = Cgsq.CgsqMain;
|
var mesCgsq = ConvertErpToCgsq(Cgsq);
|
var mesCgsqDatas = ConvertErpToCgsqDetail(Cgsq);
|
|
return UseTransaction(db =>
|
{
|
switch (Cgsq.Type)
|
{
|
// case "2":
|
// return InsertData(db, mesSalesReturn, mesSalesReturnDatas,
|
// rohInErpRohIn.FBILLTYPE)
|
// ? 1
|
// : 0;
|
case "3":
|
return UpdateData(db, mesCgsq, mesCgsqDatas) ? 1 : 0;
|
case "2":
|
case "4":
|
return SaveOrUpdateData(db, mesCgsq, mesCgsqDatas, Cgsq.Type)
|
? 1
|
: 0;
|
default:
|
throw new NotImplementedException(
|
$"type没有{Cgsq.Type}这个类型");
|
}
|
}) > 0;
|
}
|
|
private bool UpdateData(SqlSugarScope db, Cgsq mesCgsq,
|
List<CgsqDetail> mesCgsqDatas)
|
{
|
var decimals = mesCgsqDatas.Select(s => s.ERPID).ToArray();
|
var update = base.DeleteById(mesCgsq.ERPID);
|
var insertOrUpdate = db
|
.Deleteable<CgsqDetail>().In(decimals)
|
.ExecuteCommand() > 0;
|
|
if (update && insertOrUpdate) return true;
|
throw new NotImplementedException("更新失败");
|
}
|
|
// 插入或更新数据的方法
|
private bool SaveOrUpdateData(SqlSugarScope db, Cgsq mesCgsq,
|
List<CgsqDetail> mesCgsqDatas, string type)
|
{
|
if (mesCgsq.ERPID != null)
|
base.DeleteById(mesCgsq.ERPID);
|
|
if (mesCgsqDatas.Count > 0)
|
db.Deleteable<CgsqDetail>()
|
.Where(s => s.ERPHID == mesCgsq.ERPID).ExecuteCommand();
|
|
//var orUpdate = base.Insert(mesCgsq);
|
//var baOrUpdate = CgsqDetailManager.InsertRange(mesCgsqDatas);
|
//if (orUpdate && baOrUpdate) return true;
|
|
var update_res = UseTransaction(db =>
|
{
|
|
db.Insertable(mesCgsq).ExecuteCommand();
|
|
for (int i = 0; i < mesCgsqDatas.Count; i++)
|
{
|
var item = mesCgsqDatas[i];
|
//item.PID = id;
|
db.Insertable(item).IgnoreColumns(true).ExecuteCommand();
|
}
|
|
return 1;
|
});
|
|
if (update_res == 1) return true;
|
throw new NotImplementedException("插入或更新失败");
|
}
|
|
// 批量保存记录的方法
|
public bool SaveList(List<CgsqDto> CgsqOrder)
|
{
|
var result = CgsqOrder.Select(Save).ToList();
|
return result.All(b => b);
|
}
|
|
private Cgsq ConvertErpToCgsq(
|
CgsqDto erpDto)
|
{
|
DateTime parsedDate;
|
|
// 时间格式转换函数,ERP时间格式为 "yyyy-MM-dd HH:mm:ss"
|
DateTime? ParseDateTime(string dateStr)
|
{
|
if (DateTime.TryParseExact(dateStr, "yyyy-MM-dd HH:mm:ss",
|
CultureInfo.InvariantCulture,
|
DateTimeStyles.None,
|
out parsedDate))
|
return parsedDate;
|
|
return null; // 如果转换失败,返回null
|
}
|
var main = erpDto.CgsqMain;
|
var CgsqOrder = new Cgsq
|
{
|
ERPID=main.ERPID,
|
Fbilltypeid = main.Fbilltypeid,
|
Fbillno = main.Fbillno,
|
Fapplicationdate = main.Fapplicationdate,
|
Frequesttype = main.Frequesttype,
|
FUnwComboZjmj = main.FUnwComboZjmj,
|
ApplyingOrganizationId = main.ApplyingOrganizationId,
|
Fapplicationdeptid = main.Fapplicationdeptid,
|
Fapplicantid = main.Fapplicantid,
|
Fcurrencyid = main.Fcurrencyid,
|
Facctype = main.Facctype,
|
Fdocumentstatus = main.Fdocumentstatus,
|
Fnote = main.Fnote,
|
Fcreatorid = main.Fcreatorid,
|
Fcreatedate = main.Fcreatedate,
|
Fapproverid = main.Fapproverid,
|
Fapprovedate = main.Fapprovedate,
|
Fclosestatus = main.Fclosestatus,
|
Fclosedate = main.Fclosedate,
|
Fcloserid = main.Fcloserid,
|
Fclosereason = main.Fclosereason,
|
Fmodifierid = main.Fmodifierid,
|
Fmodifydate = main.Fmodifydate,
|
Fmanualclose = main.Fmanualclose
|
};
|
|
// var single = base.GetSingle(it => it.ERPID == main.ERPID);
|
// if (single != null) CgsqOrder.ERPID = single.ERPID;
|
|
return CgsqOrder;
|
}
|
|
private List<CgsqDetail> ConvertErpToCgsqDetail(
|
CgsqDto erpDtoList)
|
|
{
|
var CgsqOrderSubList =
|
new List<CgsqDetail>();
|
|
DateTime parsedDate;
|
// 时间格式转换函数,ERP时间格式为 "yyyy-MM-dd HH:mm:ss"
|
DateTime? ParseDateTime(string dateStr)
|
{
|
if (DateTime.TryParseExact(dateStr, "yyyy-MM-dd HH:mm:ss",
|
CultureInfo.InvariantCulture,
|
DateTimeStyles.None,
|
out parsedDate))
|
return parsedDate;
|
|
return null; // 如果转换失败,返回null
|
}
|
|
|
|
foreach (var erpDto in erpDtoList.CgsqDT)
|
{
|
var CgsqOrderSub = new CgsqDetail
|
{
|
ERPID = erpDto.ERPID,
|
ERPHID = erpDto.ERPHID,
|
LineNumber = erpDto.LineNumber,
|
FUnwTextXsddh = erpDto.FUnwTextXsddh,
|
OwnerOrganizationId = erpDto.OwnerOrganizationId,
|
Fmaterialid = erpDto.Fmaterialid,
|
Fmaterialmodel = erpDto.Fmaterialmodel,
|
Fmaterialname = erpDto.Fmaterialname,
|
Funitid = erpDto.Funitid,
|
Freqqty = erpDto.Freqqty,
|
Fapproveqty = erpDto.Fapproveqty,
|
Farrivaldate = erpDto.Farrivaldate,
|
Fsuggestpurdate = erpDto.Fsuggestpurdate,
|
BuyerOrganizationId = erpDto.BuyerOrganizationId,
|
Fsuggestsupplierid = erpDto.Fsuggestsupplierid,
|
WarehouseId = erpDto.WarehouseId,
|
Freqstockunitid = erpDto.Freqstockunitid,
|
Freqstockqty = erpDto.Freqstockqty,
|
Fpriceunitid = erpDto.Fpriceunitid,
|
Fpriceunitqty = erpDto.Fpriceunitqty,
|
Fleadtime = erpDto.Fleadtime,
|
Fmtono = erpDto.Fmtono,
|
Freqtraceno = erpDto.Freqtraceno,
|
Fdemandbillno = erpDto.Fdemandbillno,
|
Fdemandbillentryseq = erpDto.Fdemandbillentryseq,
|
Fmrpterminatestatus = erpDto.Fmrpterminatestatus,
|
Fterminaterid = erpDto.Fterminaterid,
|
Fterminatedate = erpDto.Fterminatedate
|
|
};
|
|
/*var single = CgsqDetailManager.GetSingle(it =>
|
it.ERPID == CgsqOrderSub.ERPID);
|
if (single != null) CgsqOrderSub.ERPID = single.ERPID;*/
|
|
CgsqOrderSubList.Add(CgsqOrderSub);
|
}
|
|
return CgsqOrderSubList;
|
}
|
|
}
|
}
|