¶Ô±ÈÐÂÎļþ |
| | |
| | | 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; |
| | | } |
| | | |
| | | } |
| | | } |