hao
2025-10-09 d1a7940a54083e9d1a15bbe14de040556d7cbab5
模具号测试
已修改1个文件
已添加4个文件
452 ■■■■■ 文件已修改
StandardInterface/MES.Service/Dto/webApi/ErpMould.cs 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
StandardInterface/MES.Service/Modes/MesMould.cs 120 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
StandardInterface/MES.Service/service/MesMouldManager.cs 157 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
StandardInterface/MESApplication/Controllers/BasicData/MesMouldController.cs 149 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
StandardInterface/MESApplication/appsettings.json 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
StandardInterface/MES.Service/Dto/webApi/ErpMould.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,24 @@
namespace 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反审核)
}
StandardInterface/MES.Service/Modes/MesMould.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,120 @@
using 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>
    /// äº§å“å•重(g)
    /// </summary>
    [SugarColumn(ColumnName = "PRODUCT_WEIGHT")]
    public string? ProductWeight { get; set; }
    /// <summary>
    /// æ–™å¤´ï¼ˆg)
    /// </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; }
}
StandardInterface/MES.Service/service/MesMouldManager.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,157 @@
using 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>
    /// å•个保存(Type: 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                  // æ“ä½œç±»åž‹
    };
}
StandardInterface/MESApplication/Controllers/BasicData/MesMouldController.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,149 @@
using 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>
/// æ¨¡å…·å·æŽ¥å£æŽ§åˆ¶å™¨
/// </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);
        }
    }
}
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"
  }
}