From d1a7940a54083e9d1a15bbe14de040556d7cbab5 Mon Sep 17 00:00:00 2001
From: hao <1836460075@qq.com>
Date: 星期四, 09 十月 2025 10:45:55 +0800
Subject: [PATCH] 模具号测试

---
 StandardInterface/MESApplication/Controllers/BasicData/MesMouldController.cs |  149 ++++++++++++++++++
 StandardInterface/MES.Service/Modes/MesMould.cs                              |  120 +++++++++++++++
 StandardInterface/MES.Service/Dto/webApi/ErpMould.cs                         |   24 +++
 StandardInterface/MES.Service/service/MesMouldManager.cs                     |  157 +++++++++++++++++++
 StandardInterface/MESApplication/appsettings.json                            |    2 
 5 files changed, 451 insertions(+), 1 deletions(-)

diff --git a/StandardInterface/MES.Service/Dto/webApi/ErpMould.cs b/StandardInterface/MES.Service/Dto/webApi/ErpMould.cs
new file mode 100644
index 0000000..eaff85e
--- /dev/null
+++ b/StandardInterface/MES.Service/Dto/webApi/ErpMould.cs
@@ -0,0 +1,24 @@
+锘縩amespace MES.Service.Dto.webApi;
+
+/// <summary>
+/// ERP浼犺緭鐢ㄦā鍏峰彿DTO
+/// </summary>
+public class ErpMould
+{
+    public string? Code { get; set; }               // 缂栫爜
+    public string? Name { get; set; }               // 鍚嶇О
+    public string? DataStatus { get; set; }         // 鏁版嵁鐘舵��
+    public string? OldMouldNo { get; set; }         // 鏃фā鍏峰彿
+    public string? Cavity { get; set; }             // 绌存暟
+    public string? Cycle { get; set; }              // 鍛ㄦ湡
+    public string? Capacity { get; set; }           // 浜ц兘
+    public string? MachineType { get; set; }        // 鏈哄瀷
+    public string? FForbidStatus { get; set; }      // 绂佺敤鐘舵��
+    public string? ProductWeight { get; set; }      // 浜у搧鍗曢噸
+    public string? MaterialHead { get; set; }       // 鏂欏ご
+    public string? StandardLabor { get; set; }      // 鏍囧噯浜哄姏
+    public string? LaborHoursPerThousand { get; set; } // 鍗冪墖浜哄姏宸ユ椂
+    public string? Remark { get; set; }             // 澶囨敞
+    public string? ErpId { get; set; }              
+    public string? Type { get; set; }               // 鎿嶄綔绫诲瀷锛�0鍚敤,1绂佺敤,2瀹℃牳,3鍙嶅鏍革級
+}
diff --git a/StandardInterface/MES.Service/Modes/MesMould.cs b/StandardInterface/MES.Service/Modes/MesMould.cs
new file mode 100644
index 0000000..1f0a188
--- /dev/null
+++ b/StandardInterface/MES.Service/Modes/MesMould.cs
@@ -0,0 +1,120 @@
+锘縰sing SqlSugar;
+
+namespace MES.Service.Modes;
+
+/// <summary>
+/// 妯″叿鍙蜂俊鎭疄浣撶被
+/// </summary>
+[SugarTable("MES_MOULD")]
+public class MesMould
+{
+
+    /// <summary>
+    /// 涓婚敭ID
+    /// </summary>
+    [SugarColumn(ColumnName = "ID", IsPrimaryKey = true, OracleSequenceName = "SEQ_MES_MOULD")]
+    public decimal? Id { get; set; }
+
+    /// <summary>
+    /// 缂栫爜锛堝 LT101921锛�
+    /// </summary>
+    [SugarColumn(ColumnName = "CODE")]
+    public string? Code { get; set; }
+
+    /// <summary>
+    /// 鍚嶇О锛堝 LT101921锛�
+    /// </summary>
+    [SugarColumn(ColumnName = "NAME")]
+    public string? Name { get; set; }
+
+    /// <summary>
+    /// 鏁版嵁鐘舵��
+    /// </summary>
+    [SugarColumn(ColumnName = "DATA_STATUS")]
+    public string? DataStatus { get; set; }
+
+    /// <summary>
+    /// 鏃фā鍏峰彿
+    /// </summary>
+    [SugarColumn(ColumnName = "OLD_MOULD_NO")]
+    public string? OldMouldNo { get; set; }
+
+    /// <summary>
+    /// 绌存暟
+    /// </summary>
+    [SugarColumn(ColumnName = "CAVITY")]
+    public string? Cavity { get; set; }
+
+    /// <summary>
+    /// 鍛ㄦ湡锛堝崟浣嶏細绉掞級
+    /// </summary>
+    [SugarColumn(ColumnName = "CYCLE")]
+    public string? Cycle { get; set; }
+
+    /// <summary>
+    /// 浜ц兘
+    /// </summary>
+    [SugarColumn(ColumnName = "CAPACITY")]
+    public string? Capacity { get; set; }
+
+    /// <summary>
+    /// 鏈哄瀷
+    /// </summary>
+    [SugarColumn(ColumnName = "MACHINE_TYPE")]
+    public string? MachineType { get; set; }
+
+    /// <summary>
+    /// 绂佺敤鐘舵�侊紙A鍚敤 / B绂佺敤锛�
+    /// </summary>
+    [SugarColumn(ColumnName = "FFORBIDSTATUS")]
+    public string? FForbidStatus { get; set; }
+
+    /// <summary>
+    /// 浜у搧鍗曢噸锛坓锛�
+    /// </summary>
+    [SugarColumn(ColumnName = "PRODUCT_WEIGHT")]
+    public string? ProductWeight { get; set; }
+
+    /// <summary>
+    /// 鏂欏ご锛坓锛�
+    /// </summary>
+    [SugarColumn(ColumnName = "MATERIAL_HEAD")]
+    public string? MaterialHead { get; set; }
+
+    /// <summary>
+    /// 鏍囧噯浜哄姏
+    /// </summary>
+    [SugarColumn(ColumnName = "STANDARD_LABOR")]
+    public string? StandardLabor { get; set; }
+
+    /// <summary>
+    /// 鍗冪墖浜哄姏宸ユ椂
+    /// </summary>
+    [SugarColumn(ColumnName = "LABOR_HOURS_THOUSAND")]
+    public string? LaborHoursPerThousand { get; set; }
+
+
+    /// <summary>
+    /// 澶囨敞
+    /// </summary>
+    [SugarColumn(ColumnName = "REMARK")]
+    public string? Remark { get; set; }
+
+    /// <summary>
+    /// 鍒涘缓鏃堕棿
+    /// </summary>
+    [SugarColumn(ColumnName = "CREATE_TIME")]
+    public DateTime? CreateTime { get; set; }
+
+    /// <summary>
+    /// ERPID
+    /// </summary>
+    [SugarColumn(ColumnName = "ERP_ID")]
+    public string? ErpId { get; set; }
+    /// <summary>
+    /// ERPID
+    /// </summary>
+    [SugarColumn(ColumnName = "TYPE")]
+    public string? Type { get; set; }
+
+}
diff --git a/StandardInterface/MES.Service/service/MesMouldManager.cs b/StandardInterface/MES.Service/service/MesMouldManager.cs
new file mode 100644
index 0000000..1a3d23d
--- /dev/null
+++ b/StandardInterface/MES.Service/service/MesMouldManager.cs
@@ -0,0 +1,157 @@
+锘縰sing MES.Service.DB;
+using MES.Service.Dto.webApi;
+using MES.Service.Modes;
+using SqlSugar;
+
+namespace MES.Service.service.BasicData.Material;
+
+/// <summary>
+/// 妯″叿鍙烽�昏緫澶勭悊绫�
+/// </summary>
+public class MesMouldManager : Repository<MesMould>
+{
+    /// <summary>
+    /// 鍗曚釜淇濆瓨锛圱ype: 0鍚敤,1绂佺敤,2瀹℃牳/鏂板鎴栨洿鏂�,3鍙嶅鏍�/鍒犻櫎锛�
+    /// </summary>
+    public bool Save(ErpMould mould)
+    {
+        var entity = ConvertToEntity(mould);
+
+        return UseTransaction(db =>
+        {
+            switch (mould.Type)
+            {
+                case "0":
+                    if (UpdateStatus(db, entity.Code, "A")) return 1;
+                    break;
+                case "1":
+                    if (UpdateStatus(db, entity.Code, "B")) return 1;
+                    break;
+                case "3":
+                    if (DeleteMould(db, entity.Code)) return 1;
+                    break;
+                case "2":
+                    if (InsertOrUpdate(db, entity)) return 1;
+                    break;
+                default:
+                    throw new ArgumentNullException($"Type鍙傛暟閿欒锛歿mould.Type}");
+            }
+            throw new NotImplementedException("鎿嶄綔澶辫触");
+        }) > 0;
+    }
+
+    /// <summary>
+    /// 鎵归噺淇濆瓨锛堝甫Type鍒ゆ柇锛�
+    /// </summary>
+    public bool SaveList(List<ErpMould> moulds)
+    {
+        var list = moulds.Select(ConvertToEntity).ToList();
+        var groupByType = list.GroupBy(s => s.Type).ToDictionary(g => g.Key, g => g.ToList());
+
+        return UseTransaction(db =>
+        {
+            foreach (var group in groupByType)
+            {
+                switch (group.Key)
+                {
+                    case "0":
+                        if (!UpdateStatusBatch(db, group.Value, "A"))
+                            throw new NotImplementedException("鍚敤澶辫触");
+                        break;
+                    case "1":
+                        if (!UpdateStatusBatch(db, group.Value, "B"))
+                            throw new NotImplementedException("绂佺敤澶辫触");
+                        break;
+                    case "3":
+                        if (!DeleteMouldBatch(db, group.Value))
+                            throw new NotImplementedException("鍒犻櫎澶辫触");
+                        break;
+                    case "2":
+                        if (!InsertOrUpdateBatch(db, group.Value))
+                            throw new NotImplementedException("鍚屾澶辫触");
+                        break;
+                    default:
+                        throw new ArgumentNullException($"Type鍙傛暟閿欒锛歿group.Key}");
+                }
+            }
+            return 1;
+        }) > 0;
+    }
+
+    private bool UpdateStatus(SqlSugarScope db, string code, string status)
+    {
+        var result = db.Updateable<MesMould>()
+            .SetColumns(s => s.FForbidStatus == status)
+            .Where(s => s.Code == code)
+            .ExecuteCommand();
+        if (result > 0) return true;
+        throw new NotImplementedException(status == "A" ? "鍚敤澶辫触" : "绂佺敤澶辫触");
+    }
+
+    private bool UpdateStatusBatch(SqlSugarScope db, List<MesMould> moulds, string status)
+    {
+        var codes = moulds.Select(s => s.Code).ToArray();
+        var result = db.Updateable<MesMould>()
+            .SetColumns(s => s.FForbidStatus == status)
+            .Where(s => codes.Contains(s.Code))
+            .ExecuteCommand();
+        return result > 0;
+    }
+
+    /// <summary>
+    /// 鍒犻櫎鍗曟潯璁板綍锛堟寜 ErpId锛�
+    /// </summary>
+    private bool DeleteMould(SqlSugarScope db, string erpId)
+    {
+        var result = db.Deleteable<MesMould>().Where(s => s.ErpId == erpId).ExecuteCommand();
+        return result > 0;
+    }
+
+    /// <summary>
+    /// 鎵归噺鍒犻櫎锛堟寜 ErpId锛�
+    /// </summary>
+    private bool DeleteMouldBatch(SqlSugarScope db, List<MesMould> moulds)
+    {
+        var erpIds = moulds.Select(s => s.ErpId).ToArray();
+        var result = db.Deleteable<MesMould>().Where(s => erpIds.Contains(s.ErpId)).ExecuteCommand();
+        return result > 0;
+    }
+
+
+    private bool InsertOrUpdate(SqlSugarScope db, MesMould entity)
+    {
+        //db.Deleteable<MesMould>().Where(s => s.Code == entity.Code).ExecuteCommand();
+        db.Deleteable<MesMould>().Where(s => s.ErpId == entity.ErpId).ExecuteCommand();
+        var insert = db.Insertable(entity).ExecuteCommand();
+        return insert > 0;
+    }
+
+    private bool InsertOrUpdateBatch(SqlSugarScope db, List<MesMould> moulds)
+    {
+        foreach (var entity in moulds)
+            if (!InsertOrUpdate(db, entity))
+                return false;
+        return true;
+    }
+
+    private MesMould ConvertToEntity(ErpMould m) => new MesMould
+    {
+        Code = m.Code,                 // 缂栫爜
+        Name = m.Name,                 // 鍚嶇О
+        DataStatus = m.DataStatus,     // 鏁版嵁鐘舵��
+        OldMouldNo = m.OldMouldNo,     // 鏃фā鍏峰彿
+        Cavity = m.Cavity,             // 绌存暟
+        Cycle = m.Cycle,               // 鍛ㄦ湡
+        Capacity = m.Capacity,         // 浜ц兘
+        MachineType = m.MachineType,   // 鏈哄瀷
+        FForbidStatus = m.FForbidStatus, // 绂佺敤鐘舵��
+        ProductWeight = m.ProductWeight, // 浜у搧鍗曢噸
+        MaterialHead = m.MaterialHead, // 鏂欏ご
+        StandardLabor = m.StandardLabor, // 鏍囧噯浜哄姏
+        LaborHoursPerThousand = m.LaborHoursPerThousand, // 鍗冪墖浜哄姏宸ユ椂
+        Remark = m.Remark,             // 澶囨敞
+        CreateTime = DateTime.Now,     // 鏃堕棿
+        ErpId = m.ErpId,               // ERP缂栧彿
+        Type = m.Type                  // 鎿嶄綔绫诲瀷
+    };
+}
diff --git a/StandardInterface/MESApplication/Controllers/BasicData/MesMouldController.cs b/StandardInterface/MESApplication/Controllers/BasicData/MesMouldController.cs
new file mode 100644
index 0000000..5d46e0f
--- /dev/null
+++ b/StandardInterface/MESApplication/Controllers/BasicData/MesMouldController.cs
@@ -0,0 +1,149 @@
+锘縰sing System.Dynamic;
+using MES.Service.Dto.webApi;
+using MES.Service.Modes;
+using MES.Service.service;
+using MES.Service.service.BasicData.Material;
+using MES.Service.util;
+using Microsoft.AspNetCore.Mvc;
+using Newtonsoft.Json;
+
+namespace MESApplication.Controllers.BasicData;
+
+/// <summary>
+/// 妯″叿鍙锋帴鍙f帶鍒跺櫒
+/// </summary>
+[ApiController]
+[Route("api/[controller]")]
+public class MesMouldController : ControllerBase
+{
+    private readonly MessageCenterManager _manager = new();
+    private readonly MesMouldManager m = new();
+
+    private readonly string METHOD = "POST";
+    private readonly string TableName = "MES_MOULD";
+    private readonly string URL = "http://localhost:10054/api/MesMould/";
+
+    /// <summary>
+    /// 淇濆瓨鍗曚釜妯″叿鏁版嵁锛堝甫Type閫昏緫锛�
+    /// </summary>
+    [HttpPost("Save")]
+    public ResponseResult Save(ErpMould unit)
+    {
+        var entity = new MessageCenter
+        {
+            TableName = TableName,
+            Url = URL + "Save",
+            Method = METHOD,
+            Data = JsonConvert.SerializeObject(unit),
+            Status = 1,
+            Route = unit.Code,
+            CreateBy = "PL017"
+        };
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            var save = m.Save(unit);
+            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>
+    /// 鎵归噺淇濆瓨妯″叿鏁版嵁锛堝甫Type閫昏緫锛�
+    /// </summary>
+    [HttpPost("SaveList")]
+    public ResponseResult SaveList(List<ErpMould> units)
+    {
+        var entity = new MessageCenter
+        {
+            TableName = TableName,
+            Url = URL + "SaveList",
+            Method = METHOD,
+            Data = JsonConvert.SerializeObject(units),
+            Status = 1,
+            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);
+        }
+    }
+
+    [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);
+        }
+    }
+
+    [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);
+        }
+    }
+
+    [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);
+        }
+    }
+}
diff --git a/StandardInterface/MESApplication/appsettings.json b/StandardInterface/MESApplication/appsettings.json
index 28cfc2a..59a3601 100644
--- a/StandardInterface/MESApplication/appsettings.json
+++ b/StandardInterface/MESApplication/appsettings.json
@@ -10,6 +10,6 @@
   "AppSettings": {
     "TestErpUrl": "http://192.168.11.120:8098/WebService1.asmx/mesToErpinfo",
     "ProductionErpUrl": "http://192.168.11.120:8098/WebService1.asmx/mesToErpinfoFormal",
-    "DataBaseConn": "Data Source = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.22)(PORT = 1521))(CONNECT_DATA = (SERVICE_NAME = ORCL))); Persist Security Info=True;User ID = hm_prd; Password=hmprd"
+    "DataBaseConn": "Data Source = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.22)(PORT = 1521))(CONNECT_DATA = (SERVICE_NAME = ORCL))); Persist Security Info=True;User ID = test_dev; Password=hmprd"
   }
 }

--
Gitblit v1.9.3