From 79e43ccffd15afcd99934ee43b706f6133398079 Mon Sep 17 00:00:00 2001
From: 啊鑫 <t2856754968@163.com>
Date: 星期一, 07 七月 2025 15:29:56 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 MES.Service/service/MesCgsqManager.cs |  219 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 219 insertions(+), 0 deletions(-)

diff --git a/MES.Service/service/MesCgsqManager.cs b/MES.Service/service/MesCgsqManager.cs
new file mode 100644
index 0000000..528efde
--- /dev/null
+++ b/MES.Service/service/MesCgsqManager.cs
@@ -0,0 +1,219 @@
+锘縰sing 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;
+
+            // 鏃堕棿鏍煎紡杞崲鍑芥暟锛孍RP鏃堕棿鏍煎紡涓� "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; // 濡傛灉杞崲澶辫触锛岃繑鍥瀗ull
+            }
+            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;
+            // 鏃堕棿鏍煎紡杞崲鍑芥暟锛孍RP鏃堕棿鏍煎紡涓� "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; // 濡傛灉杞崲澶辫触锛岃繑鍥瀗ull
+            }
+
+
+
+            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;
+        }
+
+    }
+}
\ No newline at end of file

--
Gitblit v1.9.3