d9a157bc9750df0eb67a5461a9572e44e68c38ab..ce9ce75d289be1f45d6e7e8d40e95ec7c8f357b5
2025-12-01 快乐的昕的电脑
物料单位换算信息
ce9ce7 对比 | 目录
2025-12-01 快乐的昕的电脑
采购订单(委外+采购)新增+变更共用 ERP->MES
8467a2 对比 | 目录
已修改5个文件
已添加4个文件
702 ■■■■■ 文件已修改
MES.Service/Dto/webApi/ErpRohIn.cs 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
MES.Service/Dto/webApi/ErpRohinData.cs 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
MES.Service/Dto/webApi/ErpUnitMatrixing.cs 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
MES.Service/Modes/MesRohIn.cs 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
MES.Service/Modes/MesRohInData.cs 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
MES.Service/Modes/MesUnitMatrixing.cs 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
MES.Service/service/BasicData/MesRohInManager.cs 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
MES.Service/service/BasicData/MesUnitMatrixingManager.cs 247 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
MESApplication/Controllers/BasicData/MesUnitMatrixingController.cs 256 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
MES.Service/Dto/webApi/ErpRohIn.cs
@@ -36,9 +36,19 @@
    public string? FTContact { get; set; }
    public string? Fmobilephone { get; set; }
    public string? FixedTelephone { get; set; }
    public string? FixedTelephone { get; set; }//
    public string? Address { get; set; }
    public string? FProviderAddress { get; set; }//供货方地址
    public string? Acctype { get; set; }
    public string? F_UNW_GYSLXR { get; set; }// ä¾›åº”商联系人
    public string? F_UNW_LXRDH { get; set; }// è”系人电话
    public string? FProviderJob { get; set; }// èŒåŠ¡
    public string? FProviderPhone { get; set; }// æ‰‹æœº
    public string? FACCTYPE { get; set; }// éªŒæ”¶æ–¹å¼
    public string? F_UNW_Remarks_zlyq { get; set; }// è´¨é‡è¦æ±‚
    public string? F_UNW_Text_ysfs { get; set; }// è¿è¾“方式
    public string? F_UNW_BZ { get; set; }// å¤‡æ³¨
    public string? F_UNW_Combo_zjmj { get; set; }// æ²»å…·ä¸¶æ¨¡å…·åŠ å·¥åŠé‡‡è´­
    public string? FUrgent_Material { get; set; }// æ€¥æ–™
}
MES.Service/Dto/webApi/ErpRohinData.cs
@@ -13,9 +13,9 @@
    public string? FStockUnitID { get; set; }
    public string? FPriceUnitId { get; set; }
    public string? FPriceUnitQty { get; set; }
    public string? FDeliveryDate { get; set; }
    public string? FDeliveryEarlyDate { get; set; }
    public string? FDeliveryLastDate { get; set; }
    public string? FDeliveryDate { get; set; }//交货日期
    public string? FDeliveryEarlyDate { get; set; }//最早交货日期
    public string? FDeliveryLastDate { get; set; }//最晚交货日期
    public string? FRequireOrgId { get; set; }
    public string? FRequireDeptId { get; set; }
    public string? FReceiveOrgId { get; set; }
@@ -43,7 +43,7 @@
    public string? FStockInQty { get; set; } //累计入库数
    public string? FCHECKRETQTY { get; set; } //收料可退数
    public string? FSTOCKRETQTY { get; set; } //库存可退数
    public string? FSrcBillTypeId { get; set; }
    public string? FBillTypeID { get; set; }//采购单别
    public string? FSrcBillNo { get; set; }
    public string? FReqTraceNo { get; set; }
    public string? FMtoNo { get; set; }
@@ -51,5 +51,9 @@
    public string? FDEMANDTYPE { get; set; }
    public string? FDEMANDBILLENTRYSEQ { get; set; }
    public string? FDEMANDBILLENTRYSEQ { get; set; }// é‡‡è´­è®¢å•行号
    public string? FUrgent_Material { get; set; }//急料
    public string? DELIVERY_DATE { get; set; }//交货日期
    public string? F_UNW_Text_xsddh { get; set; } // é”€å”®è®¢å•号
}
MES.Service/Dto/webApi/ErpUnitMatrixing.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
namespace MES.Service.Dto.webApi;
public class ErpUnitMatrixing
{
    public string? Type { get; set; }
    public string? Id { get; set; }
    public string FNumber { get; set; }
    public decimal? FConvertMolecules { get; set; }
    public decimal? FConvertDenominator { get; set; }
    public string? FCurrentUnitId { get; set; }
    public string? FForbidStatus { get; set; }
    public string? remark1 { get; set; }
    public string? remark2 { get; set; }
    public string? remark3 { get; set; }
    public string? remark4 { get; set; }
    public string? remark5 { get; set; }
}
MES.Service/Modes/MesRohIn.cs
@@ -214,25 +214,25 @@
    public string? Remark1 { get; set; }
    /// <summary>
    ///     è‡ªå®šä¹‰å­—段2
    ///     è‡ªå®šä¹‰å­—段2,供应商联系人
    /// </summary>
    [SugarColumn(ColumnName = "REMARK2")]
    public string? Remark2 { get; set; }
    /// <summary>
    ///     è‡ªå®šä¹‰å­—段3
    ///     è‡ªå®šä¹‰å­—段3,联系人电话
    /// </summary>
    [SugarColumn(ColumnName = "REMARK3")]
    public string? Remark3 { get; set; }
    /// <summary>
    ///     è‡ªå®šä¹‰å­—段4
    ///     è‡ªå®šä¹‰å­—段4,职务
    /// </summary>
    [SugarColumn(ColumnName = "REMARK4")]
    public string? Remark4 { get; set; }
    /// <summary>
    ///     è‡ªå®šä¹‰å­—段5
    ///     è‡ªå®šä¹‰å­—段5,联系电话
    /// </summary>
    [SugarColumn(ColumnName = "REMARK5")]
    public string? Remark5 { get; set; }
@@ -302,4 +302,10 @@
    /// </summary>
    [SugarColumn(ColumnName = "SYNCHRONOUS_DATE")]
    public DateTime? SynchronousDate { get; set; }
    /// <summary>
    ///     æ€¥æ–™
    /// </summary>
    [SugarColumn(ColumnName = "urgent_material")]
    public string? urgent_material { get; set; }
}
MES.Service/Modes/MesRohInData.cs
@@ -353,4 +353,10 @@
    /// </summary>
    [SugarColumn(ColumnName = "FDEMANDBILLNO_LINE")]
    public string? FdemandbillnoLine { get; set; }
    /// <summary>
    /// è‡ªå®šä¹‰å­—段5,急料
    /// </summary>
    [SugarColumn(ColumnName = "REMARK5")]
    public string? Remark5 { get; set; }
}
MES.Service/Modes/MesUnitMatrixing.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,78 @@
using SqlSugar;
namespace MES.Service.Modes;
/// <summary>
///     ç‰©æ–™å•位换算信息
/// </summary>
[SugarTable("MES_UNIT_MATRIXING")]
public class MesUnitMatrixing
{
    /// <summary>
    ///     BASEINFO
    /// </summary>
    [SugarColumn(ColumnName = "ID", IsPrimaryKey = true)]
    public decimal Id { get; set; }
    /// <summary>
    ///     ç‰©æ–™ç¼–码
    /// </summary>
    [SugarColumn(ColumnName = "ITEM_NO")]
    public string? ItemNo { get; set; }
    /// <summary>
    ///     æ¢ç®—分子
    /// </summary>
    [SugarColumn(ColumnName = "CONVMOL")]
    public decimal? CONVMOL { get; set; }
    /// <summary>
    ///     æ¢ç®—分母
    /// </summary>
    [SugarColumn(ColumnName = "CONVDEN")]
    public decimal? CONVDEN { get; set; }
    /// <summary>
    ///     æ¢ç®—单位
    /// </summary>
    [SugarColumn(ColumnName = "ALT_UNITS")]
    public string? AltUnits { get; set; }
    /// <summary>
    ///     æœ‰æ•ˆç (Y有效, N无效)
    /// </summary>
    [SugarColumn(ColumnName = "VAL_STATES")]
    public string? ValStates { get; set; }
    /// <summary>
    ///     è‡ªå®šä¹‰å­—段1
    /// </summary>
    [SugarColumn(ColumnName = "remark1")]
    public string? remark1 { get; set; }
    /// <summary>
    ///     è‡ªå®šä¹‰å­—段2
    /// </summary>
    [SugarColumn(ColumnName = "remark2")]
    public string? remark2 { get; set; }
    /// <summary>
    ///     è‡ªå®šä¹‰å­—段3
    /// </summary>
    [SugarColumn(ColumnName = "remark3")]
    public string? remark3 { get; set; }
    /// <summary>
    ///     è‡ªå®šä¹‰å­—段4
    /// </summary>
    [SugarColumn(ColumnName = "remark4")]
    public string? remark4 { get; set; }
    /// <summary>
    ///     è‡ªå®šä¹‰å­—段5
    /// </summary>
    [SugarColumn(ColumnName = "remark5")]
    public string? remark5 { get; set; }
    [SugarColumn(IsIgnore = true)] public string? Type { get; set; }
}
MES.Service/service/BasicData/MesRohInManager.cs
@@ -4,6 +4,7 @@
using MES.Service.Modes;
using SqlSugar;
using System.Globalization;
using System.Security.AccessControl;
namespace MES.Service.service.BasicData;
@@ -19,6 +20,11 @@
        var mesRohInDatas =
            GetMesRohInDatas(rohIn.ErpRohinDatas);
        //1    | æœªå®žçް     | æŠ›å‡ºå¼‚常
        //2    | å®¡æ ¸       | è°ƒç”¨ SaveOrUpdateData,正常插入/更新
        //3    | åå®¡æ ¸     | è°ƒç”¨ SaveOrUpdateData,BillNo ä¸€å®šåŠ åŽç¼€
        //4    | æ‰‹å·¥åŒæ­¥   | è°ƒç”¨ SaveOrUpdateData,正常插入/更新
        //5    | æœªæ³¨é‡Š     | è°ƒç”¨ SaveOrUpdateData,正常插入/更新
        return UseTransaction(db =>
        {
            return rohInErpRohIn.Type switch
@@ -159,9 +165,20 @@
        mesRohIn.Anred = rohIn.FTContact;
        mesRohIn.Telf1 = rohIn.Fmobilephone;
        mesRohIn.FixedTelephone = rohIn.FixedTelephone;
        mesRohIn.Address = rohIn.Address;
        mesRohIn.Acctype = rohIn.Acctype;
        mesRohIn.Address = rohIn.FProviderAddress;//供货方地址
        mesRohIn.SynchronousDate = DateTime.Now;
        mesRohIn.Remark2= rohIn.F_UNW_GYSLXR;// ä¾›åº”商联系人
        mesRohIn.Remark3= rohIn.F_UNW_LXRDH;// è”系人电话
        mesRohIn.Remark4 = rohIn.FProviderJob;// èŒåŠ¡
        mesRohIn.Remark5 = rohIn.FProviderPhone;// æ‰‹æœº
        mesRohIn.QtyAcceptance = rohIn.FACCTYPE;//验收方式
        mesRohIn.QualityReq = rohIn.F_UNW_Remarks_zlyq;//质量要求
        mesRohIn.TransportMethod = rohIn.F_UNW_Text_ysfs;//运输方式
        mesRohIn.Remarks = rohIn.F_UNW_BZ;//备注
        mesRohIn.FixtureMoldProcurement = rohIn.F_UNW_Combo_zjmj;//治具丶模具加工及采购
        mesRohIn.urgent_material = rohIn.FUrgent_Material;//急料
        return mesRohIn;
    }
@@ -204,21 +221,21 @@
                BusinessClose = s.FMRPCloseStatus,
                BusinessFreeze = s.FMRPFreezeStatus,
                Freezer = s.FFreezerId,
                //FreezeTime = !string.IsNullOrEmpty(s.FFreezeDate)
                //            && DateTime.TryParseExact(s.FFreezeDate,
                //                new[] { "yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd" },  // æ”¯æŒå¤šç§æ ¼å¼
                //                CultureInfo.InvariantCulture,
                //                DateTimeStyles.None,
                //                out var parsedDate)
                //            && parsedDate > new DateTime(1900, 1, 1)
                //                ? parsedDate
                //                : (DateTime?)null,
                FreezeTime = !string.IsNullOrEmpty(s.FFreezeDate)
                            && DateTime.TryParseExact(s.FFreezeDate,
                                new[] { "yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd" },  // æ”¯æŒå¤šç§æ ¼å¼
                                CultureInfo.InvariantCulture,
                                DateTimeStyles.None,
                                out var parsedDate)
                            && parsedDate > new DateTime(1900, 1, 1)
                                ? parsedDate
                                : (DateTime?)null,
                BusinessTerminate = s.FMRPTerminateStatus,
                Terminator = s.FTerminaterId,
                //TerminateTime = s.FTerminateDate != null
                //    ? DateTime.ParseExact(s.FTerminateDate,
                //        "yyyy-MM-dd HH:mm:ss", null)
                //    : null,
                TerminateTime = s.FTerminateDate != null
                    ? DateTime.ParseExact(s.FTerminateDate,
                        "yyyy-MM-dd HH:mm:ss", null)
                    : null,
                TotalReceivedQty = Convert.ToDecimal(s.FReceiveQty), //累计收料数
                RemainingReceivedQty =
                    Convert.ToDecimal(s.FRemainReceiveQty),
@@ -228,7 +245,7 @@
                ReturnableReceivedQty =
                    Convert.ToDecimal(s.FCHECKRETQTY), //收料可退数
                ReturnableStoredQty = Convert.ToDecimal(s.FSTOCKRETQTY), //库存可退数
                SourceDocumentType = s.FSrcBillTypeId,
                SourceDocumentType = s.FBillTypeID,//采购单别
                SourceDocumentId = s.FSrcBillNo,
                DemandTrackingId = s.FReqTraceNo,
                PlanTrackingId = s.FMtoNo,
@@ -244,7 +261,10 @@
                Receiving = s.FReceiveOrgId,
                Settlement = s.FSETTLEORGID,
                DemandDepartment = s.FRequireDeptId,
                ReceivingDepartment = s.FReceiveDeptId
                ReceivingDepartment = s.FReceiveDeptId,
                Remark5 = s.FUrgent_Material, //急料
                SalesOrderId = s.F_UNW_Text_xsddh
            };
            if (s.FFreezeDate != null)
MES.Service/service/BasicData/MesUnitMatrixingManager.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,247 @@
using AngleSharp.Dom;
using MES.Service.DB;
using MES.Service.Dto.webApi;
using MES.Service.Modes;
using SqlSugar;
namespace MES.Service.service.BasicData;
public class MesUnitMatrixingManager : Repository<MesUnitMatrixing>
{
    public bool Save(ErpUnitMatrixing unit)
    {
        var entity = GetMesUnitMatrixing(unit);
        return UseTransaction(db =>
        {
            switch (unit.Type)
            {
                case "0":
                    if (UpdateUnitStatus(db, entity.Id, "A"))
                        return 1;
                    break;
                case "1":
                    if (UpdateUnitStatus(db, entity.Id, "B"))
                        return 1;
                    break;
                case "3":
                    if (DeleteUnit(db, entity.Id))
                        return 1;
                    break;
                case "2":
                case "4":
                    if (InsertOrUpdate(db, entity))
                        return 1;
                    break;
                default:
                    throw new ArgumentNullException(
                        $"type没有{unit.Type}这个类型的参数");
            }
            throw new NotImplementedException("操作失败");
        }) > 0;
    }
    public bool SaveList(List<ErpUnitMatrixing> units)
    {
        var list = units.Select(GetMesUnitMatrixing).ToList();
        var groupBy = list.GroupBy(s => s.Type)
            .ToDictionary(g => g.Key, g => g.ToList());
        return UseTransaction(db =>
        {
            foreach (var unitGroup in groupBy)
                switch (unitGroup.Key)
                {
                    case "0":
                        if (!UpdateUnitStatusBatch(db, unitGroup.Value, "A"))
                            throw new NotImplementedException("启用失败");
                        break;
                    case "1":
                        if (!UpdateUnitStatusBatch(db, unitGroup.Value, "B"))
                            throw new NotImplementedException("禁用失败");
                        break;
                    case "3":
                        if (!DeleteUnitBatch(db, unitGroup.Value))
                            throw new NotImplementedException("删除失败");
                        break;
                    case "2":
                    case "4":
                        if (!InsertOrUpdateBatch(db, unitGroup.Value))
                            throw new NotImplementedException("同步失败");
                        break;
                    default:
                        throw new ArgumentNullException(
                            $"type没有{unitGroup.Key}这个类型的参数");
                }
            return 1;
        }) > 0;
    }
    private bool UpdateUnitStatus(SqlSugarScope db, decimal unitId,
        string status)
    {
        var result = db.Updateable<MesUnitMatrixing>()
            .SetColumns(s => s.ValStates == status)
            .Where(s => s.Id == unitId).ExecuteCommand();
        if (result > 0)
            return true;
        throw new NotImplementedException(status == "A" ? "启用失败" : "禁用失败");
    }
    private bool InsertUnit(SqlSugarScope db, MesUnitMatrixing entity)
    {
        var insert = db.Insertable(entity).ExecuteCommand();
        if (insert > 0)
            return true;
        throw new NotImplementedException("插入失败");
    }
    private bool DeleteUnit(SqlSugarScope db, decimal unitId)
    {
        var deleteById = db.Deleteable<MesUnitMatrixing>()
            .Where(s => s.Id == unitId).ExecuteCommand();
        if (deleteById > 0)
            return true;
        throw new NotImplementedException("删除失败");
    }
    private MesUnitMatrixing GetMesUnitMatrixing(ErpUnitMatrixing unit)
    {
        // æŸ¥æ‰¾æ˜¯å¦å·²å­˜åœ¨ç›¸åŒç¼–码的记录。
        var existingCustomer = Db.Queryable<MesUnitMatrixing>()
            .Where(s => s.ItemNo == unit.FNumber)
            .First();
        var entity = new MesUnitMatrixing
        {
            // å¦‚果存在,使用现有的ID,后续将删除后重新插入
            // å¦‚果不存在,设为0,InsertOrUpdate方法将生成新ID
            Id = existingCustomer?.Id ?? 0,
            //Id = Convert.ToDecimal(unit.Id),
            Type = unit.Type,
            ItemNo=unit.FNumber,
            CONVMOL=unit.FConvertMolecules,
            CONVDEN=unit.FConvertDenominator,
            AltUnits=unit.FCurrentUnitId,
            ValStates=unit.FForbidStatus
        };
        // ERP: 0=未禁用, 1=禁用
        // MES: A=未禁用, B=禁用
        if (string.IsNullOrEmpty(unit.FForbidStatus))
        {
            entity.ValStates = "A";
        }
        else
        {
            //我期望的值是A=否,B=是
            //实际给我的值是0或1,我希望为我转换从A和B的方式
            entity.ValStates = unit.FForbidStatus == "1" ? "B" : "A";
        }
        return entity;
    }
    /// <summary>
    /// ç”Ÿæˆæ–°çš„ID,确保不重复
    /// </summary>
    private decimal GenerateNewId()
    {
        // å¤„理空表的情况,从1开始
        var maxId = Db.Queryable<MesUnitMatrixing>().Max(x => (decimal?)x.Id) ?? 0;
        var newId = maxId + 1;
        // åŒé‡æ£€æŸ¥ï¼Œç¡®ä¿ç”Ÿæˆçš„ID不存在
        while (Db.Queryable<MesUnitMatrixing>().Where(x => x.Id == newId).Any())
        {
            newId++;
        }
        return newId;
    }
    private bool UpdateUnitStatusBatch(SqlSugarScope db, List<MesUnitMatrixing> unitList,
        string status)
    {
        var ids = unitList.Select(it => it.Id).ToArray();
        var result = db.Updateable<MesUnitMatrixing>()
            .SetColumns(s => s.ValStates == status)
            .Where(s => ids.Contains(s.Id)).ExecuteCommand();
        if (result > 0)
            return true;
        throw new NotImplementedException(status == "A" ? "启用失败" : "禁用失败");
    }
    private bool InsertUnitBatch(SqlSugarScope db, List<MesUnitMatrixing> unitList)
    {
        var insertRange = db.Insertable(unitList).ExecuteCommand();
        if (insertRange > 0)
            return true;
        throw new NotImplementedException("插入失败");
    }
    private bool DeleteUnitBatch(SqlSugarScope db, List<MesUnitMatrixing> unitList)
    {
        var ids = unitList.Select(it => it.Id).ToArray();
        var deleteByIds = db.Deleteable<MesUnitMatrixing>()
            .Where(s => ids.Contains(s.Id)).ExecuteCommand();
        return deleteByIds > 0;
    }
    /// <summary>
    /// åŒæ­¥ç‰©æ–™å•位信息new_0/4
    /// </summary>
    /// <param name="db"></param>
    /// <param name="entity"></param>
    /// <returns></returns>
    private bool InsertOrUpdate(SqlSugarScope db, MesUnitMatrixing entity)
    {
        if (entity.Id == 0)
        {
            // æ–°å¢žæƒ…况:生成新ID并插入
            var newId = GenerateNewId();
            entity.Id = newId;
            return db.Insertable(entity).ExecuteCommand() > 0;
        }
        else
        {
            // æ›´æ–°æƒ…况:删除后重新插入,保持原有ID
            var originalId = entity.Id;
            // å…ˆåˆ é™¤åŽŸè®°å½•ï¼ˆå¦‚æžœå­˜åœ¨ï¼‰
            db.Deleteable<MesUnitMatrixing>().Where(s => s.Id == originalId).ExecuteCommand();
            // é‡æ–°æ’入,保持原有ID
            entity.Id = originalId;
            return db.Insertable(entity).ExecuteCommand() > 0;
        }
    }
    /// <summary>
    /// åŒæ­¥ç‰©æ–™å•位信息old_0/4
    /// </summary>
    /// <param name="db"></param>
    /// <param name="entity"></param>
    /// <returns></returns>
    //private bool InsertOrUpdate(SqlSugarScope db, MesUnitMatrixing entity)
    //{
    //    db.Deleteable<MesUnitMatrixing>()
    //        .Where(s => s.Id == entity.Id).ExecuteCommand();
    //    var insert = db.Insertable(entity).ExecuteCommand();
    //    return insert > 0;
    //}
    private bool InsertOrUpdateBatch(SqlSugarScope db, List<MesUnitMatrixing> unitList)
    {
        return unitList.All(entity => InsertOrUpdate(db, entity));
    }
}
MESApplication/Controllers/BasicData/MesUnitMatrixingController.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,256 @@
using System.Dynamic;
using MES.Service.Dto.webApi;
using MES.Service.Modes;
using MES.Service.service;
using MES.Service.service.BasicData;
using MES.Service.util;
using Microsoft.AspNetCore.Mvc;
using Newtonsoft.Json;
namespace MESApplication.Controllers.BasicData;
[ApiController]
[Route("api/[controller]")]
public class MesUnitMatrixingController : ControllerBase
{
    private readonly MessageCenterManager _manager = new();
    private readonly MesUnitMatrixingManager m = new();
    private readonly string METHOD = "POST";
    private readonly string TableName = "MES_UNIT_MATRIXING";
    private readonly string URL = "http://localhost:10054/api/MesUnitMatrixing/";
    [HttpPost("Save")]
    public ResponseResult Save(ErpUnitMatrixing unit)
    {
        var entity = new MessageCenter();
        entity.TableName = TableName;
        entity.Url = URL + "Save";
        entity.Method = METHOD;
        entity.Data = JsonConvert.SerializeObject(unit);
        entity.Status = 1;
        entity.CreateBy = "PL017";
        entity.Route = unit.FNumber;
        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);
        }
    }
    [HttpPost("SaveList")]
    public ResponseResult SaveList(List<ErpUnitMatrixing> 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] MesUnitMatrixing 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] MesUnitMatrixing 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] MesUnitMatrixing 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);
        }
    }
}