zjh
2025-07-23 fa9f16425917cbf3ea5524120dbe004f091745e3
采购订单接口添加孙表,存储关于采购订单计划行的数据
已修改2个文件
已添加2个文件
184 ■■■■■ 文件已修改
StandardPda/MES.Service/Dto/webApi/ErpLineDetails.cs 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
StandardPda/MES.Service/Dto/webApi/RohIn.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
StandardPda/MES.Service/Modes/ErpLineDetailsDB.cs 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
StandardPda/MES.Service/service/BasicData/MesRohInManager.cs 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
StandardPda/MES.Service/Dto/webApi/ErpLineDetails.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,56 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace MES.Service.Dto.webApi;
public class ErpLineDetails
{
    /// <summary>
    /// ä»Žè¡¨id
    /// </summary>
    public string Mid { get; set; }
   /// <summary>
   /// ä¸»è¡¨erpid
   /// </summary>
    public string Eid { get; set; }
    /// <summary>
    /// å­è¡Œå·ï¼ˆè®¢å•项下的细分序号,通常与父项关联)
    /// </summary>
    public string FlineNo { get; set; }
        /// <summary>
        /// æ–™å“ID(关联物料主数据表的外键)
        /// </summary>
        public string FMaterialId { get; set; }
        /// <summary>
        /// éœ€æ±‚数量(业务部门提出的原始需求量)
        /// </summary>
        public decimal? ReqQty { get; set; }
        /// <summary>
        /// è®¡åˆ’到货数量(经MRP运算后的计划量)
        /// </summary>
        public decimal? PlannedQty { get; set; }
        /// <summary>
        /// ä¾›åº”商确认到货数量(供应商承诺的交货量)
        /// </summary>
        public decimal? SupplierConfirmsQty { get; set; }
        /// <summary>
        /// è¦æ±‚交货日期(采购申请或订单要求的到货日期)
        /// æ³¨æ„ï¼šæ•°æ®åº“存储为字符串格式,需根据业务格式转换
        /// </summary>
        public string RequestDeliveryDate { get; set; }
        /// <summary>
        /// å®žé™…到货数量(仓库实际收货数量)
        /// </summary>
        public decimal? ActualArrivalQty { get; set; }
    }
StandardPda/MES.Service/Dto/webApi/RohIn.cs
@@ -4,4 +4,9 @@
{
    public ErpRohIn ErpRohIn { get; set; }
    public List<ErpRohinData> ErpRohinDatas { get; set; }
    /// <summary>
    /// å­™è¡¨è¡Œæ˜Žç»†æ•°æ®
    /// </summary>
    public List<ErpLineDetails>? ErpLineDetails { get; set; }
}
StandardPda/MES.Service/Modes/ErpLineDetailsDB.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,71 @@
using SqlSugar;
namespace MES.Service.Modes;
    /// <summary>
    /// ERP行明细表 - å­˜å‚¨é‡‡è´­/生产订单行项目详情
    /// </summary>
    [SugarTable("ERPLINEDETAILS")] // Oracle表名默认大写
    public class ErpLineDetailsDB
    {
        /// <summary>
        /// ä¸»é”®ID
        /// </summary>
        [SugarColumn(ColumnName = "ID", IsPrimaryKey = true, OracleSequenceName = "SEQ_ERPLINEDETAILS_ID")]
        public long Id { get; set; }
        /// <summary>
        /// ä»Žè¡¨ID
        /// </summary>
        [SugarColumn(ColumnName = "MID")]
        public string Mid { get; set; }
        /// <summary>
        /// ä¸»è¡¨ERPID
        /// </summary>
        [SugarColumn(ColumnName = "EID")]
        public string Eid { get; set; }
        /// <summary>
        /// å­è¡Œå·ï¼ˆè®¢å•项下的细分序号)
        /// </summary>
        [SugarColumn(ColumnName = "FLINENO", IsNullable = false)]
        public string FlineNo { get; set; }
        /// <summary>
        /// æ–™å“ID(关联物料主数据表的外键)
        /// </summary>
        [SugarColumn(ColumnName = "FMATERIALID", IsNullable = false)]
        public string FMaterialId { get; set; }
        /// <summary>
        /// éœ€æ±‚数量(业务部门提出的原始需求量)
        /// </summary>
        [SugarColumn(ColumnName = "REQQTY")]
        public decimal? ReqQty { get; set; }
        /// <summary>
        /// è®¡åˆ’到货数量(经MRP运算后的计划量)
        /// </summary>
        [SugarColumn(ColumnName = "PLANNEDQTY")]
        public decimal? PlannedQty { get; set; }
        /// <summary>
        /// ä¾›åº”商确认到货数量(供应商承诺的交货量)
        /// </summary>
        [SugarColumn(ColumnName = "SUPPLIERCONFIRMSQTY")]
        public decimal? SupplierConfirmsQty { get; set; }
        /// <summary>
        /// è¦æ±‚交货日期(采购申请或订单要求的到货日期)
        /// </summary>
        [SugarColumn(ColumnName = "REQUESTDELIVERYDATE")]
        public string RequestDeliveryDate { get; set; }
        /// <summary>
        /// å®žé™…到货数量(仓库实际收货数量)
        /// </summary>
        [SugarColumn(ColumnName = "ACTUALARRIVALQTY")]
        public decimal? ActualArrivalQty { get; set; }
    }
StandardPda/MES.Service/service/BasicData/MesRohInManager.cs
@@ -3,6 +3,7 @@
using MES.Service.Modes;
using MES.Service.util;
using SqlSugar;
using System.Collections.Generic;
namespace MES.Service.service.BasicData;
@@ -17,13 +18,14 @@
        var mesRohIn = GetMesRohIn(rohInErpRohIn);
        var mesRohInDatas =
            GetMesRohInDatas(rohIn.ErpRohinDatas, rohInErpRohIn.Type);
        var erpLineDetailsDB = GetErpLineDetailsDB(rohIn.ErpLineDetails, rohInErpRohIn.Type);
        return UseTransaction(db =>
        {
            return rohInErpRohIn.Type switch
            {
                "2" or "4" or "5" => SaveOrUpdateData(db, mesRohIn,
                    mesRohInDatas)
                    mesRohInDatas, erpLineDetailsDB)
                    ? 1
                    : 0,
                "3" => DeleteData(db, mesRohIn, mesRohInDatas) ? 1 : 0,
@@ -58,14 +60,16 @@
    // æ’入或更新数据的方法
    private bool SaveOrUpdateData(SqlSugarScope db, MesRohIn mesRohIn,
        List<MesRohInData> mesRohInDatas)
        List<MesRohInData> mesRohInDatas, List<ErpLineDetailsDB> erpLineDetails)
    {
        if (mesRohIn.Id != null) base.DeleteById(mesRohIn.Id);
        if (mesRohInDatas.Count > 0)
            db.Deleteable<MesRohInData>()
                .Where(s => s.ErpId == mesRohIn.EbelnK3id).ExecuteCommand();
        if (mesRohInDatas.Count > 0)
            db.Deleteable<ErpLineDetailsDB>()
                .Where(s => s.Eid == mesRohIn.EbelnK3id).ExecuteCommand();
        //var orUpdate = base.Insert(mesRohIn);
        //var baOrUpdate = rohInDataManager.InsertRange(mesRohInDatas);
        var orUpdate = db.Insertable(mesRohIn)
@@ -76,8 +80,15 @@
            .IgnoreColumnsNull()
            .ExecuteCommand() > 0;
        var ba1OrUpdate = db.Insertable(erpLineDetails).PageSize(1)
       .IgnoreColumnsNull()
       .ExecuteCommand() > 0;
        if (erpLineDetails.Count==0)
        {
            ba1OrUpdate = true;
        }
        if (orUpdate && baOrUpdate) return true;
        if (orUpdate && baOrUpdate&& ba1OrUpdate) return true;
        throw new NotImplementedException("插入或更新失败");
    }
@@ -229,4 +240,37 @@
            return entity;
        }).ToList();
    }
    private List<ErpLineDetailsDB> GetErpLineDetailsDB(
        List<ErpLineDetails> erpLineDetails, string type)
    {
        return erpLineDetails.Select(s =>
        {
            var entity = new ErpLineDetailsDB
            {
                Mid= s.Mid,
                Eid = s.Eid,
                FlineNo = s.FlineNo,
                FMaterialId = s.FMaterialId,
                ReqQty = s.ReqQty,
                PlannedQty = s.PlannedQty,
                SupplierConfirmsQty = s.SupplierConfirmsQty,
                RequestDeliveryDate = s.RequestDeliveryDate,
                ActualArrivalQty = s.ActualArrivalQty
            };
            //ItemId = s.FMaterialId,
            var mesLinkU9 = Db.Queryable<MesLinkU9>()
                .Where(x => x.U9Id == s.FMaterialId
                            && x.OrgId == s.FMaterialId
                            && x.TableType == "MES_ITEMS").First();
            if (mesLinkU9 != null) entity.FMaterialId = mesLinkU9.MesId;
            return entity;
        }).ToList();
    }
}