From 9aa2afe228a7a3e5734916c7126587a94379c775 Mon Sep 17 00:00:00 2001
From: hao <1836460075@qq.com>
Date: 星期一, 28 四月 2025 10:42:29 +0800
Subject: [PATCH] 1

---
 StandardInterface/MES.Service/Dto/webApi/ErpShzdDetail.cs       |   24 ++
 StandardInterface/MES.Service/service/ShtzdManager.cs           |  144 ++++++++++++++
 StandardInterface/MESApplication/Controllers/ShtzdController.cs |  264 ++++++++++++++++++++++++++
 StandardInterface/MES.Service/Modes/Shtzd.cs                    |   50 +++++
 StandardInterface/MES.Service/Dto/webApi/ErpShzd.cs             |   14 +
 StandardInterface/MES.Service/Modes/ShtzdDetail.cs              |   94 +++++++++
 StandardInterface/MES.Service/Dto/webApi/Sh.cs                  |    7 
 7 files changed, 597 insertions(+), 0 deletions(-)

diff --git a/StandardInterface/MES.Service/Dto/webApi/ErpShzd.cs b/StandardInterface/MES.Service/Dto/webApi/ErpShzd.cs
new file mode 100644
index 0000000..24a29ac
--- /dev/null
+++ b/StandardInterface/MES.Service/Dto/webApi/ErpShzd.cs
@@ -0,0 +1,14 @@
+锘縩amespace MES.Service.Dto.webApi;
+
+public class ErpShzd
+{
+    public int ERPID { get; set; }
+    public string? Type { get; set; }
+    public string? FBillNo { get; set; }      //鍗曟嵁缂栧彿
+    public string? FStockID { get; set; }        //浠撳簱
+    public string? FSupplierId { get; set; }      //渚涘簲鍟�
+    public string? FDate { get; set; }            //鍗曟嵁鏃ユ湡
+    public string? FNote { get; set; }            //澶囨敞
+    public string? F_ZJXF_sfgx { get; set; }      //鏄惁渚涘崗
+
+}
\ No newline at end of file
diff --git a/StandardInterface/MES.Service/Dto/webApi/ErpShzdDetail.cs b/StandardInterface/MES.Service/Dto/webApi/ErpShzdDetail.cs
new file mode 100644
index 0000000..4c3760b
--- /dev/null
+++ b/StandardInterface/MES.Service/Dto/webApi/ErpShzdDetail.cs
@@ -0,0 +1,24 @@
+锘縩amespace MES.Service.Dto.webApi;
+
+public class ErpShzdDetail
+{
+    public int ERPID { get; set; }
+    public int EID { get; set; }
+
+    public string? LineNo { get; set; }      //鏀舵枡閫氱煡鍗曞垎褰曞唴鐮� 
+    public string?  FORDERBILLNO   { get; set; }      //閲囪喘鍗曞彿 
+    public string?   FMATERIALID   { get; set; }      //鐗╂枡缂栫爜 
+    public string?  FPOQTY         { get; set; }      //閲囪喘璁㈠崟鏁伴噺
+    public string?  FACTRECEIVEQTY { get; set; }      //鏈搴旀敹鏁伴噺 
+    public string? FACTREQTY { get; set; }            //鏈瀹炴敹鏁伴噺 
+    public string?  FUNITID        { get; set; }      //閲囪喘鍗曚綅
+    public string?  FSTOCKUNITID   { get; set; }      //搴撳瓨鍗曚綅 
+    public string?  FDESCRIPTION   { get; set; }      //澶囨敞 
+    public string?  FSRCBILLNO     { get; set; }      //閲囪喘鍗旾D  
+    public string?  FSRCENTRYID    { get; set; }      //閲囪喘鍗曡ID  
+    public string? FXSHTH { get; set; }               //閿�鍞鍗曞彿
+    public string? FMtoNo{ get; set; }               //璁″垝璺熻釜鍙�
+    public string? FLot { get; set; }               //鎵瑰彿
+
+
+}
\ No newline at end of file
diff --git a/StandardInterface/MES.Service/Dto/webApi/Sh.cs b/StandardInterface/MES.Service/Dto/webApi/Sh.cs
new file mode 100644
index 0000000..3c0e2d3
--- /dev/null
+++ b/StandardInterface/MES.Service/Dto/webApi/Sh.cs
@@ -0,0 +1,7 @@
+锘縩amespace MES.Service.Dto.webApi;
+
+public class Sh
+{
+    public ErpShzd ErpShtzd { get; set; }
+    public List<ErpShzdDetail> ErpShzdDetail { get; set; }
+}
\ No newline at end of file
diff --git a/StandardInterface/MES.Service/Modes/Shtzd.cs b/StandardInterface/MES.Service/Modes/Shtzd.cs
new file mode 100644
index 0000000..4e983d0
--- /dev/null
+++ b/StandardInterface/MES.Service/Modes/Shtzd.cs
@@ -0,0 +1,50 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using SqlSugar;
+namespace MES.Service.Modes
+{
+    /// <summary>
+    /// 
+    ///</summary>
+    [SugarTable("SHTZD")]
+    public class Shtzd
+    {
+
+        /// <summary>
+        /// 鍗曟嵁缂栧彿 
+        ///</summary>
+        [SugarColumn(ColumnName = "ID", IsPrimaryKey = true)]
+        public int ID { get; set; }
+        /// <summary>
+        /// 鍗曟嵁缂栧彿 
+        ///</summary>
+        [SugarColumn(ColumnName="DELIVERYNO"    )]
+         public string Deliveryno { get; set; }
+        /// <summary>
+        /// 浠撳簱 
+        ///</summary>
+         [SugarColumn(ColumnName="DEPOTNO"    )]
+         public string Depotno { get; set; }
+        /// <summary>
+        /// 渚涘簲鍟� 
+        ///</summary>
+         [SugarColumn(ColumnName="SUPPLIERID"    )]
+         public string Supplierid { get; set; }
+        /// <summary>
+        /// 鍗曟嵁鏃ユ湡 
+        ///</summary>
+         [SugarColumn(ColumnName="FDATE"    )]
+         public string Fdate { get; set; }
+        /// <summary>
+        /// 澶囨敞 
+        ///</summary>
+         [SugarColumn(ColumnName="REMARK"    )]
+         public string Remark { get; set; }
+        /// <summary>
+        /// 鏄惁渚涘崗 
+        ///</summary>
+         [SugarColumn(ColumnName="F_ZJXF_SFGX"    )]
+         public string FZjxfSfgx { get; set; }
+    }
+}
diff --git a/StandardInterface/MES.Service/Modes/ShtzdDetail.cs b/StandardInterface/MES.Service/Modes/ShtzdDetail.cs
new file mode 100644
index 0000000..71195c9
--- /dev/null
+++ b/StandardInterface/MES.Service/Modes/ShtzdDetail.cs
@@ -0,0 +1,94 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using SqlSugar;
+namespace MES.Service.Modes
+{
+    /// <summary>
+    /// 
+    ///</summary>
+    [SugarTable("SHTZD_DETAIL")]
+    public class ShtzdDetail
+    {
+        /// <summary>
+        /// 鏀舵枡閫氱煡鍗曞垎褰曞唴鐮� 
+        ///</summary>
+        [SugarColumn(ColumnName = "ERPID", IsPrimaryKey = true)]
+        public Int32 Erpid { get; set; }
+        /// <summary>
+        /// 鏀舵枡閫氱煡鍗曞垎褰曞唴鐮� 
+        ///</summary>
+        [SugarColumn(ColumnName = "EID")]
+        public Int32 Eid { get; set; }
+        /// <summary>
+        /// 鏀舵枡閫氱煡鍗曞垎褰曞唴鐮� 
+        ///</summary>
+        [SugarColumn(ColumnName="LINENO"    )]
+         public string Lineno { get; set; }
+        /// <summary>
+        /// 璁㈠崟鍗曞彿 
+        ///</summary>
+         [SugarColumn(ColumnName="FBILLNO"    )]
+         public string Fbillno { get; set; }
+        /// <summary>
+        /// 鐗╂枡缂栫爜 
+        ///</summary>
+         [SugarColumn(ColumnName="PRODUCTCODE"    )]
+         public string Productcode { get; set; }
+        /// <summary>
+        /// 璁㈠崟鏁伴噺 
+        ///</summary>
+         [SugarColumn(ColumnName="PURCHASEQTY"    )]
+         public string Purchaseqty { get; set; }
+        /// <summary>
+        /// 鏈搴旀敹鏁伴噺 
+        ///</summary>
+         [SugarColumn(ColumnName="DELIVERYQTY"    )]
+         public string Deliveryqty { get; set; }
+        /// <summary>
+        /// 浜よ揣鏁伴噺 
+        ///</summary>
+         [SugarColumn(ColumnName="INCLUDEQTY"    )]
+         public string Includeqty { get; set; }
+        /// <summary>
+        /// 鏀舵枡鍗曚綅 
+        ///</summary>
+         [SugarColumn(ColumnName="PURCHASEUNIT"    )]
+         public string Purchaseunit { get; set; }
+        /// <summary>
+        /// 搴撳瓨鍗曚綅 
+        ///</summary>
+         [SugarColumn(ColumnName="INVENTORYUNIT"    )]
+         public string Inventoryunit { get; set; }
+        /// <summary>
+        /// 澶囨敞 
+        ///</summary>
+         [SugarColumn(ColumnName="REMARK"    )]
+         public string Remark { get; set; }
+        /// <summary>
+        /// 婧愬崟鍗曞彿 
+        ///</summary>
+         [SugarColumn(ColumnName="SALESORDERID"    )]
+         public string Salesorderid { get; set; }
+        /// <summary>
+        /// 婧愬崟鍒嗗綍鍐呯爜 
+        ///</summary>
+         [SugarColumn(ColumnName="ORDERLINEID"    )]
+         public string Orderlineid { get; set; }
+        /// <summary>
+        /// 閿�鍞鍗曞彿 
+        ///</summary>
+         [SugarColumn(ColumnName="FXSHTH"    )]
+         public string Fxshth { get; set; }
+        /// <summary>
+        /// 璁″垝璺熻釜鍙� 
+        ///</summary>
+         [SugarColumn(ColumnName="FMTONO"    )]
+         public string Fmtono { get; set; }
+        /// <summary>
+        /// 鎵瑰彿 
+        ///</summary>
+         [SugarColumn(ColumnName="FLOT"    )]
+         public string Flot { get; set; }
+    }
+}
diff --git a/StandardInterface/MES.Service/service/ShtzdManager.cs b/StandardInterface/MES.Service/service/ShtzdManager.cs
new file mode 100644
index 0000000..0d0ec6c
--- /dev/null
+++ b/StandardInterface/MES.Service/service/ShtzdManager.cs
@@ -0,0 +1,144 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using MES.Service.DB;
+using MES.Service.Modes;
+using MES.Service.Dto.webApi;
+
+namespace MES.Service.service
+{
+    public class ShtzdManager : Repository<Shtzd>
+    {
+        public bool Save(Sh sh)
+        {
+            var SH = sh.ErpShtzd;
+            var mesShtzd = GetMesShtzd(SH);
+            var shtzdDetails = GetMesShtzdDetail(sh.ErpShzdDetail);
+
+            return UseTransaction(db =>
+            {
+                return SH.Type switch
+                {
+                    "2" or "4" or "5" => SaveOrUpdateData(db, mesShtzd, shtzdDetails) ? 1 : 0,
+                    "3" => UpdateData(db, mesShtzd, shtzdDetails) ? 1 : 0,
+                    _ => throw new NotImplementedException($"绫诲瀷 Type = {SH.Type} 涓嶅瓨鍦�")
+                };
+            }) > 0;
+        }
+        public bool SaveList(List<Sh> shList)
+        {
+            return UseTransaction(db =>
+            {
+                foreach (var sh in shList)
+                {
+                    var SH = sh.ErpShtzd;
+                    var mesShtzd = GetMesShtzd(SH);
+                    var shtzdDetails = GetMesShtzdDetail(sh.ErpShzdDetail);
+
+                    switch (SH.Type)
+                    {
+                        case "2":
+                        case "4":
+                        case "5":
+                            SaveOrUpdateData(db, mesShtzd, shtzdDetails);
+                            break;
+                        case "3":
+                            UpdateData(db, mesShtzd, shtzdDetails);
+                            break;
+                        default:
+                            throw new NotImplementedException($"绫诲瀷 Type = {SH.Type} 鏆備笉鏀寔澶勭悊");
+                    }
+                }
+                return shList.Count;
+            }) > 0;
+        }
+
+        public Shtzd GetMesShtzd(ErpShzd sh)
+        {
+            return new Shtzd
+            {
+                ID = Convert.ToInt32(sh.ERPID),
+                Deliveryno = sh.FBillNo,
+                Depotno = sh.FStockID,
+                Supplierid = sh.FSupplierId,
+                Fdate = sh.FDate,
+                Remark = sh.FNote,
+                FZjxfSfgx = sh.F_ZJXF_sfgx
+            };
+        }
+
+        public List<ShtzdDetail> GetMesShtzdDetail(List<ErpShzdDetail> erpShzdDetails)
+        {
+            return erpShzdDetails.Select(s => new ShtzdDetail
+            {
+                Erpid = Convert.ToInt32(s.ERPID),
+                Eid = Convert.ToInt32(s.EID),
+                Lineno = s.LineNo,
+                Fbillno = s.FORDERBILLNO,
+                Productcode = s.FMATERIALID,
+                Purchaseqty = s.FPOQTY,
+                Deliveryqty = s.FACTRECEIVEQTY,
+                Includeqty = s.FACTREQTY,
+                Purchaseunit = s.FUNITID,
+                Inventoryunit = s.FSTOCKUNITID,
+                Remark = s.FDESCRIPTION,
+                Salesorderid = s.FSRCBILLNO,
+                Orderlineid = s.FSRCENTRYID,
+                Fxshth = s.FXSHTH,
+                Fmtono = s.FMtoNo,
+                Flot = s.FLot
+            }).ToList();
+        }
+
+        protected int UseTransaction(Func<SqlSugarScope, int> action)
+        {
+            try
+            {
+                Db.Ado.BeginTran();
+                var affectedRows = action.Invoke(Db);
+                Db.Ado.CommitTran();
+                return affectedRows;
+            }
+            catch (Exception)
+            {
+                Db.Ado.RollbackTran();
+                throw;
+            }
+        }
+
+        private bool SaveOrUpdateData(SqlSugarScope db, Shtzd header, List<ShtzdDetail> details)
+        {
+            var exists = db.Queryable<Shtzd>().Any(x => x.ID == header.ID);
+            if (exists)
+            {
+                db.Updateable(header).ExecuteCommand();
+                db.Deleteable<ShtzdDetail>().Where(x => x.Eid == header.ID).ExecuteCommand();
+            }
+            else
+            {
+                db.Insertable(header).ExecuteCommand();
+            }
+
+            foreach (var item in details)
+            {
+                item.Eid = header.ID;
+            }
+            db.Insertable(details).ExecuteCommand();
+            return true;
+        }
+
+        private bool UpdateData(SqlSugarScope db, Shtzd header, List<ShtzdDetail> details)
+        {
+            db.Updateable(header).ExecuteCommand();
+            db.Deleteable<ShtzdDetail>().Where(x => x.Eid == header.ID).ExecuteCommand();
+
+            foreach (var item in details)
+            {
+                item.Eid = header.ID;
+            }
+            db.Insertable(details).ExecuteCommand();
+            return true;
+        }
+    }
+}
diff --git a/StandardInterface/MESApplication/Controllers/ShtzdController.cs b/StandardInterface/MESApplication/Controllers/ShtzdController.cs
new file mode 100644
index 0000000..1463422
--- /dev/null
+++ b/StandardInterface/MESApplication/Controllers/ShtzdController.cs
@@ -0,0 +1,264 @@
+锘縰sing Microsoft.AspNetCore.Mvc;
+using Microsoft.Extensions.Logging;
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+using System.Dynamic;
+using MES.Service.Modes;
+using MES.Service.service;
+using MES.Service.util;
+using MES.Service.Dto.webApi;
+using Newtonsoft.Json;
+
+namespace MESApplication.Controllers
+{
+    [ApiController]
+    [Route("api/[controller]")]
+    public class ShtzdController : ControllerBase
+    {
+
+        private ShtzdManager m = new ShtzdManager();
+
+        private readonly MessageCenterManager _manager = new();
+        private readonly Shtzd Tz = new();
+
+        private readonly string METHOD = "POST";
+
+        private readonly string TableName = "SHTZD";
+
+        private readonly string URL = "http://localhost:10054/api/Shtzd/";
+        [HttpPost("Save")]
+        public ResponseResult Save(Sh Sh)
+        {
+            var entity = new MessageCenter();
+            entity.TableName = TableName;
+            entity.Url = URL + "Save";
+            entity.Method = METHOD;
+            entity.Data = JsonConvert.SerializeObject(Sh);
+            entity.Status = 1;
+            entity.CreateBy = "PL017";
+            try
+            {
+                dynamic resultInfos = new ExpandoObject();
+                var save = m.Save(Sh);
+
+                resultInfos.tbBillList = save;
+
+                entity.Result = 0;
+                if (save) entity.Result = 1;
+
+                entity.DealWith = 1;
+                _manager.save(entity);
+
+                return new ResponseResult
+                {
+                    status = 0,
+                    message = "OK",
+                    data = resultInfos
+                };
+            }
+            catch (Exception ex)
+            {
+                entity.Result = 0;
+
+                entity.DealWith = 0;
+
+                entity.ResultData = ex.Message;
+
+                _manager.save(entity);
+
+                return ResponseResult.ResponseError(ex);
+            }
+        }
+
+        [HttpPost("SaveList")]
+        public ResponseResult SaveList(List<Sh> units)
+        {
+            var entity = new MessageCenter();
+            entity.TableName = TableName;
+            entity.Url = URL + "SaveList";
+            entity.Method = METHOD;
+            entity.Data = JsonConvert.SerializeObject(units);
+            entity.Status = 1;
+            entity.CreateBy = "PL017";
+            try
+            {
+                dynamic resultInfos = new ExpandoObject();
+                var save = m.SaveList(units);
+                resultInfos.tbBillList = save;
+
+                entity.Result = 0;
+                if (save) entity.Result = 1;
+
+                entity.DealWith = 1;
+                _manager.save(entity);
+
+                return new ResponseResult
+                {
+                    status = 0,
+                    message = "OK",
+                    data = resultInfos
+                };
+            }
+            catch (Exception ex)
+            {
+                entity.Result = 0;
+
+                entity.DealWith = 0;
+
+                entity.ResultData = ex.Message;
+
+                _manager.save(entity);
+
+                return ResponseResult.ResponseError(ex);
+            }
+        }
+
+
+        /// <summary>
+        /// 鑾峰彇鎵�鏈�
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost("GetList")]
+        public ResponseResult GetList()
+        {
+            try
+            {
+                dynamic resultInfos = new ExpandoObject();
+                resultInfos.tbBillList = m.GetList();
+                return new ResponseResult
+                {
+                    status = 0,
+                    message = "OK",
+                    data = resultInfos
+                };
+            }
+            catch (Exception ex)
+            {
+                return ResponseResult.ResponseError(ex);
+            }
+        }
+
+
+        /// <summary>
+        /// 鏍规嵁涓婚敭鑾峰彇
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost("GetById")]
+        public ResponseResult GetById(int id)
+        {
+            try
+            {
+                dynamic resultInfos = new ExpandoObject();
+                resultInfos.tbBillList = m.GetById(id);
+                return new ResponseResult
+                {
+                    status = 0,
+                    message = "OK",
+                    data = resultInfos
+                };
+            }
+            catch (Exception ex)
+            {
+                return ResponseResult.ResponseError(ex);
+            }
+        }
+
+        /// <summary>
+        /// 鏍规嵁涓婚敭鍒犻櫎
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost("DeleteByIds")]
+        public ResponseResult DeleteByIds([FromBody] object[] ids)
+        {
+            try
+            {
+                dynamic resultInfos = new ExpandoObject();
+                resultInfos.tbBillList = m.DeleteByIds(ids);
+                return new ResponseResult
+                {
+                    status = 0,
+                    message = "OK",
+                    data = resultInfos
+                };
+            }
+            catch (Exception ex)
+            {
+                return ResponseResult.ResponseError(ex);
+            }
+        }
+
+        /// <summary>
+        /// 娣诲姞 
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost("Insert")]
+        public ResponseResult Add([FromBody] Shtzd data)
+        {
+            try
+            {
+                dynamic resultInfos = new ExpandoObject();
+                resultInfos.tbBillList = m.Insert(data);
+                return new ResponseResult
+                {
+                    status = 0,
+                    message = "OK",
+                    data = resultInfos
+                };
+            }
+            catch (Exception ex)
+            {
+                return ResponseResult.ResponseError(ex);
+            }
+        }
+        /// <summary>
+        /// 娣诲姞杩斿洖鑷
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost("InsertReturnIdentity")]
+        public ResponseResult InsertReturnIdentity([FromBody] Shtzd data)
+        {
+            try
+            {
+                dynamic resultInfos = new ExpandoObject();
+                resultInfos.tbBillList = m.InsertReturnIdentity(data);
+                return new ResponseResult
+                {
+                    status = 0,
+                    message = "OK",
+                    data = resultInfos
+                };
+            }
+            catch (Exception ex)
+            {
+                return ResponseResult.ResponseError(ex);
+            }
+        }
+
+        /// <summary>
+        /// 淇敼
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost("Update")]
+        public ResponseResult Update([FromBody] Shtzd data)
+        {
+            try
+            {
+                dynamic resultInfos = new ExpandoObject();
+                resultInfos.tbBillList = m.Update(data);
+                return new ResponseResult
+                {
+                    status = 0,
+                    message = "OK",
+                    data = resultInfos
+                };
+            }
+            catch (Exception ex)
+            {
+                return ResponseResult.ResponseError(ex);
+            }
+        }
+    }
+}

--
Gitblit v1.9.3