From 1a09e10891586f227bec656d92ad27382f0412a2 Mon Sep 17 00:00:00 2001
From: hao <1836460075@qq.com>
Date: 星期一, 18 八月 2025 15:14:12 +0800
Subject: [PATCH] 直接调拨申请单

---
 .vs/slnx.sqlite                                                |    0 
 StandardInterface/MES.Service/Dto/webApi/ERPZJDB.cs            |   49 +++++++
 StandardInterface/MES.Service/service/DbckaManager.cs          |    3 
 StandardInterface/MES.Service/service/ZjdbManager.cs           |  142 ++++++++++++++++++++
 StandardInterface/MES.Service/Modes/MesInvItemDbsq.cs          |   38 +++++
 StandardInterface/MES.Service/service/WomcaaManager.cs         |   48 +++---
 StandardInterface/MESApplication/Controllers/ZJdbController.cs |  103 ++++++++++++++
 7 files changed, 358 insertions(+), 25 deletions(-)

diff --git a/.vs/slnx.sqlite b/.vs/slnx.sqlite
index 0200bd8..eb885f4 100644
--- a/.vs/slnx.sqlite
+++ b/.vs/slnx.sqlite
Binary files differ
diff --git a/StandardInterface/MES.Service/Dto/webApi/ERPZJDB.cs b/StandardInterface/MES.Service/Dto/webApi/ERPZJDB.cs
new file mode 100644
index 0000000..3ecc243
--- /dev/null
+++ b/StandardInterface/MES.Service/Dto/webApi/ERPZJDB.cs
@@ -0,0 +1,49 @@
+锘縰sing System.Collections.Generic;
+
+namespace MES.Service.Dto.webApi
+{
+    public class ERPZJDB
+    {
+      
+        public ERPZJDBA ERPZJDBA { get; set; } = new ERPZJDBA();
+        public List<ERPZJDBB> ERPZJDBB { get; set; } = new List<ERPZJDBB>();
+    }
+
+    public class ERPZJDBA
+    {
+        public string? billno { get; set; }      // 鍗曟嵁缂栫爜
+        public string? dj_lx { get; set; }       // 鍗曟嵁绫诲瀷
+        public string? db_lx1 { get; set; }      // 璋冩嫧绫诲瀷
+        public string? db_fx { get; set; }       // 璋冩嫧鏂瑰悜
+        public string? db_lx { get; set; }       // 璋冩嫧绫诲瀷
+        public string? yw_lx { get; set; }       // 涓氬姟绫诲瀷
+        public string? dj_zt { get; set; }       // 鍗曟嵁鐘舵��
+        public string? sq_bm { get; set; }       // 鐢宠閮ㄩ棬
+        public string? dc_kc { get; set; }       // 璋冨嚭搴撳瓨缁勭粐
+        public string? dr_kc { get; set; }       // 璋冨叆搴撳瓨缁勭粐
+        public string? dc_hz { get; set; }       // 璋冨嚭璐т富
+        public string? dr_hz { get; set; }       // 璋冨叆璐т富
+        public string? dr_ck { get; set; }       // 璋冨叆浠撳簱
+        public string? dc_bm { get; set; }       // 璋冨嚭閮ㄩ棬
+        public string? dr_bm { get; set; }       // 璋冨叆閮ㄩ棬
+        public string? bz { get; set; }          // 澶囨敞
+        public string type { get; set; }        // type
+        public string? erpid { get; set; }       // 璋冩嫧鍑哄簱鍗昳d
+    }
+
+    public class ERPZJDBB
+    {
+        public string? itemid { get; set; }      // 鐗╂枡缂栫爜
+        public string? unit { get; set; }        // 鍗曚綅
+        public string? quantity { get; set; }    // 鐢宠鏁伴噺
+        public string? dc_org { get; set; }      // 璋冨嚭缁勭粐
+        public string? dc_depot { get; set; }    // 璋冨嚭浠撳簱
+        public string? dr_org { get; set; }      // 璋冨叆缁勭粐
+        public string? dr_depot { get; set; }    // 璋冨叆浠撳簱
+        public string? dc_hz { get; set; }       // 璋冨嚭璐т富
+        public string? dr_hz { get; set; }       // 璋冨叆璐т富
+        public string? bz { get; set; }          // 澶囨敞
+        public string? erpid { get; set; }       // 璋冩嫧鍑哄簱琛宨d
+        public string? eid { get; set; }         // 璋冩嫧鍑哄簱澶磇d
+    }
+}
diff --git a/StandardInterface/MES.Service/Modes/MesInvItemDbsq.cs b/StandardInterface/MES.Service/Modes/MesInvItemDbsq.cs
index fdd5138..0819536 100644
--- a/StandardInterface/MES.Service/Modes/MesInvItemDbsq.cs
+++ b/StandardInterface/MES.Service/Modes/MesInvItemDbsq.cs
@@ -211,5 +211,43 @@
         ///</summary>
         [SugarColumn(ColumnName = "ERPID")]
         public string? Erpid { get; set; }
+
+        /// <summary>
+        ///  璋冨嚭搴撳瓨缁勭粐
+        ///</summary>
+        [SugarColumn(ColumnName = "DC_KC")]
+        public string? DcKc { get; set; }
+        /// <summary>
+        ///  璋冨叆搴撳瓨缁勭粐
+        ///</summary>
+        [SugarColumn(ColumnName = "DR_KC")]
+        public string? DrKc { get; set; }
+
+
+        /// <summary>
+        ///  璋冨叆璐т富
+        ///</summary>
+        [SugarColumn(ColumnName = "DR_HZ")]
+        public string? DrHz { get; set; }
+        /// <summary>
+        ///  璋冨叆浠撳簱
+        ///</summary>
+        [SugarColumn(ColumnName = "DR_CK")]
+        public string? DrCk { get; set; }
+        /// <summary>
+        ///  璋冨嚭閮ㄩ棬
+        ///</summary>
+        [SugarColumn(ColumnName = "DC_BM")]
+        public string? DcBm { get; set; }
+        /// <summary>
+        ///  璋冨叆閮ㄩ棬
+        ///</summary>
+        [SugarColumn(ColumnName = "DR_BM")]
+        public string? DrBm { get; set; }
+        /// <summary>
+        ///  MES绫诲瀷
+        ///</summary>
+        [SugarColumn(ColumnName = "TYPE2")]
+        public string? Type2 { get; set; }
     }
 }
diff --git a/StandardInterface/MES.Service/service/DbckaManager.cs b/StandardInterface/MES.Service/service/DbckaManager.cs
index 5df6e9b..7bfdc3a 100644
--- a/StandardInterface/MES.Service/service/DbckaManager.cs
+++ b/StandardInterface/MES.Service/service/DbckaManager.cs
@@ -59,7 +59,8 @@
                 CreateDate = DateTime.Now,
                 CreateBy = "System",
                 DbStatus="鏈皟鎷�",
-                Status=1
+                Status=1,
+                Type2 = "鍒嗗竷寮忚皟鎷ㄥ崟",
             };
 
             //    var single = base.GetSingle(it => it.Erpid == entity.Erpid);
diff --git a/StandardInterface/MES.Service/service/WomcaaManager.cs b/StandardInterface/MES.Service/service/WomcaaManager.cs
index 84b5753..37adb77 100644
--- a/StandardInterface/MES.Service/service/WomcaaManager.cs
+++ b/StandardInterface/MES.Service/service/WomcaaManager.cs
@@ -98,8 +98,30 @@
         List<Womcab> mesWomcabs)
     {
 
+        //瀹氫箟杈撳叆鍙傛暟
+        var inputParam1 = new SugarParameter("P_WORK_NO", mesWomcaa.Caa001);
+        // 瀹氫箟杈撳嚭鍙傛暟
+        var outParam1 = new SugarParameter("c_Result", null, true);
+        var outParam2 = new SugarParameter("C_MSG", null, true);
+        // 浣跨敤 SqlSugar 鎵ц瀛樺偍杩囩▼
+        Db.Ado.ExecuteCommand(
+            "BEGIN PRC_UPDATE_DAA2(:P_WORK_NO,:c_Result,:C_MSG); END;",
+            inputParam1, outParam1, outParam2);
+        // 鑾峰彇杈撳嚭鍙傛暟鐨勫��
+        var result = int.Parse((string)outParam1.Value);
+        var message = outParam2.Value == DBNull.Value
+            ? string.Empty
+            : (string)outParam2.Value;
+        if (result == 1)
+        {
+            //瀛樺偍杩囩▼澶辫触鍒欎簨鍔¤繘琛屽洖婊�
+            db.Ado.RollbackTran();
+            throw new Exception(message);
+        }
 
-      
+        // 鎻愪氦浜嬪姟
+        db.Ado.CommitTran();
+
 
         var decimals = mesWomcabs.Select(s => s.Id).ToArray();
 
@@ -119,29 +141,7 @@
 
         if (update && insertOrUpdate)
         {
-            //瀹氫箟杈撳叆鍙傛暟
-            var inputParam1 = new SugarParameter("P_WORK_NO", mesWomcaa.Caa001);
-            // 瀹氫箟杈撳嚭鍙傛暟
-            var outParam1 = new SugarParameter("c_Result", null, true);
-            var outParam2 = new SugarParameter("C_MSG", null, true);
-            // 浣跨敤 SqlSugar 鎵ц瀛樺偍杩囩▼
-            Db.Ado.ExecuteCommand(
-                "BEGIN PRC_UPDATE_DAA2(:P_WORK_NO,:c_Result,:C_MSG); END;",
-                inputParam1, outParam1, outParam2);
-            // 鑾峰彇杈撳嚭鍙傛暟鐨勫��
-            var result = int.Parse((string)outParam1.Value);
-            var message = outParam2.Value == DBNull.Value
-                ? string.Empty
-                : (string)outParam2.Value;
-            if (result == 1)
-            {
-                //瀛樺偍杩囩▼澶辫触鍒欎簨鍔¤繘琛屽洖婊�
-                db.Ado.RollbackTran();
-                throw new Exception(message);
-            }
-
-            // 鎻愪氦浜嬪姟
-            db.Ado.CommitTran();
+         
             return true;
         }
         throw new NotImplementedException("鏇存柊澶辫触");
diff --git a/StandardInterface/MES.Service/service/ZjdbManager.cs b/StandardInterface/MES.Service/service/ZjdbManager.cs
new file mode 100644
index 0000000..bcf870e
--- /dev/null
+++ b/StandardInterface/MES.Service/service/ZjdbManager.cs
@@ -0,0 +1,142 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using MES.Service.DB;
+using MES.Service.Dto.webApi;
+using MES.Service.Modes;
+
+namespace MES.Service.service
+{
+    public class ERPZJDBManager : Repository<MesInvItemDbsq>
+    {
+        public bool SaveList(List<ERPZJDB> list)
+        {
+            var result = list.Select(Save).ToList();
+            return result.All(b => b);
+        }
+
+        public bool Save(ERPZJDB data)
+        {
+            var head = MapErpToMesHead(data.ERPZJDBA);
+            var details = MapErpDbckbToDbckb(data.ERPZJDBB);
+
+            return UseTransaction(db =>
+            {
+                switch (data.ERPZJDBA.type)
+                {
+                    case "3":
+                        return UpdateData(db, head, details) ? 1 : 0;
+                    case "2":
+                    case "4":
+                    case "5":
+                        return SaveOrUpdateData(db, head, details) ? 1 : 0;
+                    default:
+                        throw new NotImplementedException($"type娌℃湁 {data.ERPZJDBA.type} 杩欎釜绫诲瀷");
+                }
+            }) > 0;
+        }
+
+        private MesInvItemDbsq MapErpToMesHead(ERPZJDBA dto)
+        {
+            var entity = new MesInvItemDbsq
+            {
+                BillNo = dto.billno,//鍗曟嵁缂栫爜
+                Djlx = dto.dj_lx,   //鍗曟嵁绫诲瀷
+                DbLx1 = dto.db_lx1, //璋冩嫧绫诲瀷
+                DbFx = dto.db_fx,   //璋冩嫧鏂瑰悜
+                DbLx = dto.db_lx,   //璋冩嫧绫诲瀷
+                YwLx = dto.yw_lx,   //涓氬姟绫诲瀷
+                DjZt = dto.dj_zt,   //鍗曟嵁鐘舵��
+                SqBm = dto.sq_bm,   //鐢宠閮ㄩ棬
+                DcKc = dto.dc_kc,   //璋冨嚭搴撳瓨缁勭粐
+                DrKc = dto.dr_kc,   //璋冨叆搴撳瓨缁勭粐
+                DcHz = dto.dc_hz,   //璋冨嚭璐т富
+                DrHz = dto.dr_hz,   //璋冨叆璐т富
+                DrCk = dto.dr_ck,   //璋冨叆浠撳簱
+                DcBm = dto.dc_bm,   //璋冨嚭閮ㄩ棬
+                DrBm = dto.dr_bm,   //璋冨叆閮ㄩ棬 
+                Type2 = "鐩存帴璋冩嫧鍗�",   //   
+                Remark = dto.bz,
+                Erpid = dto.erpid,
+                CreateDate = DateTime.Now,
+                CreateBy = "System",
+                DbStatus = "鏈皟鎷�",
+                Status = 1
+            };
+
+            var single = Db.Queryable<MesInvItemDbsq>()
+                           .Where(it => it.Erpid == entity.Erpid)
+                           .First();
+            if (single != null)
+                entity.Id = single.Id;
+
+            return entity;
+        }
+
+        private List<MesInvItemDbsqItems> MapErpDbckbToDbckb(List<ERPZJDBB> list)
+        {
+            var result = new List<MesInvItemDbsqItems>();
+
+            foreach (var dto in list)
+            {
+                var item = new MesInvItemDbsqItems
+                {
+                    ItemId = Convert.ToDecimal(dto.itemid),
+                    ItemUnit = Convert.ToDecimal(dto.unit),
+                    SqNum = decimal.TryParse(dto.quantity, out var qty) ? qty : 0,
+                    DcOrg = dto.dc_org,
+                    DcDepot = dto.dc_depot,
+                    DrOrg = dto.dr_org,
+                    DrDepot = dto.dr_depot,
+                    DcHz = dto.dc_hz,
+                    DrHz = dto.dr_hz,
+                    Remark = dto.bz,
+                    Erpid = dto.erpid,
+                    Eid = dto.eid,
+                };
+
+                var existing = Db.Queryable<MesInvItemDbsqItems>().Where(s => s.Erpid == item.Erpid).Single();
+                if (existing != null) item.Id = existing.Id;
+
+                result.Add(item);
+            }
+
+            return result;
+        }
+
+        private bool SaveOrUpdateData(SqlSugarScope db, MesInvItemDbsq head, List<MesInvItemDbsqItems> details)
+        {
+            if (head.Id != null)
+                base.DeleteById(head.Id);
+
+            db.Deleteable<MesInvItemDbsqItems>()
+              .Where(d => d.Eid == head.Erpid)
+              .ExecuteCommand();
+
+            var insertedHead = db.Insertable(head)
+                .IgnoreColumns(true)
+                .ExecuteReturnIdentity();
+            if (insertedHead <= 0)
+                throw new Exception("涓昏〃鎻掑叆澶辫触锛屾湭杩斿洖ID");
+
+            var success = db.Insertable(details)
+                .PageSize(10)
+                .IgnoreColumnsNull()
+                .ExecuteCommand() > 0;
+
+            if (insertedHead >= 0 && success) return true;
+            throw new NotImplementedException("鎻掑叆鎴栨洿鏂板け璐�");
+        }
+
+        private bool UpdateData(SqlSugarScope db, MesInvItemDbsq head, List<MesInvItemDbsqItems> details)
+        {
+            var ids = details.Select(d => d.Id).ToArray();
+            var deletedHead = base.DeleteById(head.Id);
+            var deletedDetails = db.Deleteable<MesInvItemDbsqItems>().In(ids).ExecuteCommand() > 0;
+
+            if (deletedHead && deletedDetails) return true;
+            throw new NotImplementedException("鏇存柊澶辫触");
+        }
+    }
+}
diff --git a/StandardInterface/MESApplication/Controllers/ZJdbController.cs b/StandardInterface/MESApplication/Controllers/ZJdbController.cs
new file mode 100644
index 0000000..987dc88
--- /dev/null
+++ b/StandardInterface/MESApplication/Controllers/ZJdbController.cs
@@ -0,0 +1,103 @@
+锘縰sing Microsoft.AspNetCore.Mvc;
+using System;
+using System.Collections.Generic;
+using System.Dynamic;
+using MES.Service.service;
+using MES.Service.Dto.webApi;
+using MES.Service.util;
+using Newtonsoft.Json;
+using MES.Service.Modes;
+
+namespace MESApplication.Controllers
+{
+    [ApiController]
+    [Route("api/[controller]")]
+    public class ERPZJDBController : ControllerBase
+    {
+        private readonly ERPZJDBManager _manager = new();   // 杩欓噷瀵瑰簲鏂扮殑 Service
+        private readonly MessageCenterManager _messageManager = new();
+
+        private const string METHOD = "POST";
+        private const string TableName = "ERPZJDB";
+        private const string URL = "http://localhost:10054/api/ERPZJDB/";
+
+        /// <summary>
+        /// 淇濆瓨鍗曟潯璋冩嫧鍗�
+        /// </summary>
+        [HttpPost("Save")]
+        public ResponseResult Save([FromBody] ERPZJDB data)
+        {
+            var msg = new MessageCenter
+            {
+                TableName = TableName,
+                Url = URL + "Save",
+                Method = METHOD,
+                Data = JsonConvert.SerializeObject(data),
+                Status = 1,
+                CreateBy = "PL017",
+                Route = data.ERPZJDBA.billno   // 娉ㄦ剰鍙� billno
+            };
+
+            try
+            {
+                dynamic resultInfos = new ExpandoObject();
+                var success = _manager.Save(data);
+                resultInfos.tbBillList = success;
+
+                msg.Result = success ? (short?)1 : (short?)0;
+                msg.DealWith = 1;
+                _messageManager.save(msg);
+
+                return new ResponseResult { status = 0, message = "OK", data = resultInfos };
+            }
+            catch (Exception ex)
+            {
+                msg.Result = 0;
+                msg.DealWith = 0;
+                msg.ResultData = ex.Message;
+                _messageManager.save(msg);
+
+                return ResponseResult.ResponseError(ex);
+            }
+        }
+
+        /// <summary>
+        /// 鎵归噺淇濆瓨璋冩嫧鍗�
+        /// </summary>
+        [HttpPost("SaveList")]
+        public ResponseResult SaveList([FromBody] List<ERPZJDB> dataList)
+        {
+            var msg = new MessageCenter
+            {
+                TableName = TableName,
+                Url = URL + "SaveList",
+                Method = METHOD,
+                Data = JsonConvert.SerializeObject(dataList),
+                Status = 1,
+                CreateBy = "PL017"
+            };
+
+            try
+            {
+                dynamic resultInfos = new ExpandoObject();
+                var success = _manager.SaveList(dataList);
+                resultInfos.tbBillList = success;
+
+                msg.Result = success ? (short?)1 : (short?)0;
+                msg.DealWith = 1;
+                _messageManager.save(msg);
+
+                return new ResponseResult { status = 0, message = "OK", data = resultInfos };
+            }
+            catch (Exception ex)
+            {
+                msg.Result = 0;
+                msg.DealWith = 0;
+                msg.ResultData = ex.Message;
+                _messageManager.save(msg);
+
+                return ResponseResult.ResponseError(ex);
+            }
+        }
+    }
+}

--
Gitblit v1.9.3