hao
2025-09-16 4e814dc13545fde4c5c294865370c165db7eb40e
组装拆卸测试2
已修改5个文件
已添加1个文件
479 ■■■■ 文件已修改
StandardInterface/MES.Service/Dto/webApi/ERPZZCXD.cs 96 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
StandardInterface/MES.Service/Modes/ZZCX.cs 115 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
StandardInterface/MES.Service/Modes/Zzcxa.cs 40 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
StandardInterface/MES.Service/Modes/Zzcxb.cs 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
StandardInterface/MES.Service/service/ZZCXDManager.cs 190 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
StandardInterface/MESApplication/Controllers/ZZCXDController.cs 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
StandardInterface/MES.Service/Dto/webApi/ERPZZCXD.cs
@@ -1,50 +1,90 @@
using System.Collections.Generic;
// æ–‡ä»¶: MES.Service.Dto.webApi/ERPZZCX.cs
using System.Collections.Generic;
namespace MES.Service.Dto.webApi
{
    /// <summary>
    /// ERP ä¼ è¾“的制造拆卸单(主表 + æ˜Žç»†é›†åˆï¼‰
    /// ERP ç»„装拆卸 æ•´åŒ… DTO(主表 + å­è¡¨é›†åˆï¼Œå­è¡¨ä¸­åŒ…含孙表集合)
    /// </summary>
    public class ERPZZCXD
    {
        public ERPZZCXA ERPZZCXA { get; set; } = new ERPZZCXA();
        public List<ERPZZCXB> ERPZZCXB { get; set; } = new List<ERPZZCXB>();
        /// <summary>
        /// ERP ä¸»è¡¨ï¼ˆå¯¹åº” DB è¡¨ ZZCX çš„æ•°æ®ï¼šERPID、BILL_NO)
        /// </summary>
        public ERPZZCXMain Main { get; set; } = new ERPZZCXMain();
        /// <summary>
        /// å­è¡¨é›†åˆï¼ˆæ¯ä¸ªå­è¡¨å¯åŒ…含孙表集合)
        /// </summary>
        public List<ERPZZCXA> Children { get; set; } = new List<ERPZZCXA>();
    }
    /// <summary>
    /// ERP åˆ¶é€ æ‹†å¸å• ä¸»è¡¨ DTO
    /// ERP ä¸»è¡¨ DTO (ZZCX)
    /// </summary>
    public class ERPZZCXMain
    {
        public string? erpid { get; set; }     // ERP ä¸»è¡¨id(主表的 ERPID)
        public string? bill_no { get; set; }   // å•据编码
        public string? type { get; set; }   //
        public string? dj_lx { get; set; }       // å•据类型
        public string? kc_zz { get; set; }       // åº“存组织
        public string? sw_lx { get; set; }       // äº‹åŠ¡ç±»åž‹
        public string? time { get; set; }        // æ—¥æœŸ
        public string? bm { get; set; }          // éƒ¨é—¨
        public string? cgy { get; set; }         // ä»“管员
        public string? kcz { get; set; }         // åº“存组
        public string? dj_zt { get; set; }       // å•据状态
        public string? memo { get; set; }        // å¤‡æ³¨
        public string? cphzlx { get; set; }      // æˆå“è´§ä¸»ç±»åž‹
        public string? cphz { get; set; }        // æˆå“è´§ä¸»
        public string? zjhzlx { get; set; }      // å­ä»¶è´§ä¸»ç±»åž‹
        public string? zjhz { get; set; }        // å­ä»¶è´§ä¸»
    }
    /// <summary>
    /// ERP å­è¡¨ DTO(ZZCXA) â€”— åŒ…含之前 ZZCXA çš„全部字段,并新增可放置孙表集合
    /// NOTE: è¿™é‡Œçš„ yd_id åº”当由主表的 erpid å¡«å……(你要求的需求)
    /// </summary>
    public class ERPZZCXA
    {
        public string? bill_no { get; set; }   // å•据编码
        public string? dj_lx { get; set; }     // å•据类型
        public string? kc_zz { get; set; }     // åº“存组织
        public string? sw_lx { get; set; }     // äº‹åŠ¡ç±»åž‹
        public string? time { get; set; }      // æ—¥æœŸ
        public string? bm { get; set; }        // éƒ¨é—¨
        public string? cgy { get; set; }       // ä»“管员
        public string? kcz { get; set; }       // åº“存组
        public string? dj_zt { get; set; }     // å•据状态
        public string? memo { get; set; }      // å¤‡æ³¨
        public string? cphzlx { get; set; }    // æˆå“è´§ä¸»ç±»åž‹
        public string? cphz { get; set; }      // æˆå“è´§ä¸»
        public string? zjhzlx { get; set; }    // å­ä»¶è´§ä¸»ç±»åž‹
        public string? zjhz { get; set; }      // å­ä»¶è´§ä¸»
        public string? item_id { get; set; }   // ç‰©æ–™ç¼–码id
        public string? qty { get; set; }       // æ•°é‡
        public string? unit { get; set; }      // å•位
        public string? depot_id { get; set; }  // ä»“库
        public string? erpid { get; set; }     // ERP ä¸»è¡¨id
        public string? type { get; set; }
        // å…³è”主表
        public string? yd_id { get; set; }       // å¯¹åº”主表 ERPID(由主表填充)
        public string? erpid { get; set; }       // ERP å­è¡¨id(如果 ERP æœ‰è¡Œ id)
/*        public string? bill_no { get; set; }     // å•据编码(可重复)
        public string? dj_lx { get; set; }       // å•据类型
        public string? kc_zz { get; set; }       // åº“存组织
        public string? sw_lx { get; set; }       // äº‹åŠ¡ç±»åž‹
        public string? time { get; set; }        // æ—¥æœŸ
        public string? bm { get; set; }          // éƒ¨é—¨
        public string? cgy { get; set; }         // ä»“管员
        public string? kcz { get; set; }         // åº“存组
        public string? dj_zt { get; set; }       // å•据状态
        public string? memo { get; set; }        // å¤‡æ³¨
        public string? cphzlx { get; set; }      // æˆå“è´§ä¸»ç±»åž‹
        public string? cphz { get; set; }        // æˆå“è´§ä¸»
        public string? zjhzlx { get; set; }      // å­ä»¶è´§ä¸»ç±»åž‹
        public string? zjhz { get; set; }        // å­ä»¶è´§ä¸»*/
        // æ˜Žç»†ç›¸å…³å­—段(子表可能也记录某条物料信息)
        public string? item_id { get; set; }     // ç‰©æ–™ç¼–码id
        public string? qty { get; set; }         // æ•°é‡
        public string? unit { get; set; }        // å•位
        public string? depot_id { get; set; }    // ä»“库
        /// <summary>
        /// å­™è¡¨é›†åˆï¼šæ¯æ¡å­è¡¨è®°å½•对应 0..N æ¡å­™è¡¨ï¼ˆZZCXB)
        /// </summary>
        public List<ERPZZCXB> SubItems { get; set; } = new List<ERPZZCXB>();
    }
    /// <summary>
    /// ERP åˆ¶é€ æ‹†å¸å• æ˜Žç»† DTO
    /// ERP å­™è¡¨ DTO(ZZCXB)
    /// </summary>
    public class ERPZZCXB
    {
        public string? erpid { get; set; }     // ERP ä¸»è¡¨id
        public string? eid { get; set; }       // ERP å•据头id
        public string? erpid { get; set; }     // ERP ä¸»è¡¨id(或冗余)
        public string? eid { get; set; }       // ERP å­è¡¨id / è¡Œid
        public string? item_id { get; set; }   // ç‰©æ–™ç¼–码id
        public string? qty { get; set; }       // æ•°é‡
        public string? unit { get; set; }      // å•位
StandardInterface/MES.Service/Modes/ZZCX.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,115 @@
// æ–‡ä»¶: MES.Service.Modes/ZZCX.cs
using System;
using SqlSugar;
namespace MES.Service.Modes
{
    /// <summary>
    /// ZZCX - ç»„装拆卸 ä¸»è¡¨
    /// </summary>
    [SugarTable("ZZCX")]
    public class ZZCX
    {
        /// <summary>
        /// ä¸»é”® ID
        /// </summary>
        [SugarColumn(ColumnName = "ID", IsPrimaryKey = true, OracleSequenceName = "SEQ_ZZCX")]
        public decimal? Id { get; set; }
        /// <summary>
        /// ERP ä¸»è¡¨ ID
        /// </summary>
        [SugarColumn(ColumnName = "ERPID")]
        public string Erpid { get; set; }
        /// <summary>
        /// å•据编码
        /// </summary>
        [SugarColumn(ColumnName = "BILL_NO")]
        public string BillNo { get; set; }
        /// <summary>
        /// å•据编码
        /// </summary>
        [SugarColumn(ColumnName = "TYPE")]
        public string Type { get; set; }
        /// <summary>
        /// å•据类型
        /// </summary>
        [SugarColumn(ColumnName = "DJ_LX")]
        public string DjLx { get; set; }
        /// <summary>
        /// åº“存组织
        /// </summary>
        [SugarColumn(ColumnName = "KC_ZZ")]
        public string KcZz { get; set; }
        /// <summary>
        /// äº‹åŠ¡ç±»åž‹
        /// </summary>
        [SugarColumn(ColumnName = "SW_LX")]
        public string SwLx { get; set; }
        /// <summary>
        /// æ—¥æœŸ
        /// </summary>
        [SugarColumn(ColumnName = "TIME")]
        public string Time { get; set; }
        /// <summary>
        /// éƒ¨é—¨
        /// </summary>
        [SugarColumn(ColumnName = "BM")]
        public string Bm { get; set; }
        /// <summary>
        /// ä»“管员
        /// </summary>
        [SugarColumn(ColumnName = "CGY")]
        public string Cgy { get; set; }
        /// <summary>
        /// åº“存组
        /// </summary>
        [SugarColumn(ColumnName = "KCZ")]
        public string Kcz { get; set; }
        /// <summary>
        /// å•据状态
        /// </summary>
        [SugarColumn(ColumnName = "DJ_ZT")]
        public string DjZt { get; set; }
        /// <summary>
        /// å¤‡æ³¨
        /// </summary>
        [SugarColumn(ColumnName = "MEMO")]
        public string Memo { get; set; }
        /// <summary>
        /// æˆå“è´§ä¸»ç±»åž‹
        /// </summary>
        [SugarColumn(ColumnName = "CPHZLX")]
        public string Cphzlx { get; set; }
        /// <summary>
        /// æˆå“è´§ä¸»
        /// </summary>
        [SugarColumn(ColumnName = "CPHZ")]
        public string Cphz { get; set; }
        /// <summary>
        /// å­ä»¶è´§ä¸»ç±»åž‹
        /// </summary>
        [SugarColumn(ColumnName = "ZJHZLX")]
        public string Zjhzlx { get; set; }
        /// <summary>
        /// å­ä»¶è´§ä¸»
        /// </summary>
        [SugarColumn(ColumnName = "ZJHZ")]
        public string Zjhz { get; set; }
    }
}
StandardInterface/MES.Service/Modes/Zzcxa.cs
@@ -1,19 +1,38 @@
using System;
// æ–‡ä»¶: MES.Service.Modes/ZZCXA.cs
using System;
using SqlSugar;
namespace MES.Service.Modes
{
    /// <summary>
    /// ZZCXA ä¸»è¡¨
    /// ZZCXA - ç»„装拆卸 å­è¡¨ï¼ˆä¹‹å‰çš„ ZZCXA å­—段集合),新增 YD_ID å­—段来记录主表 ERPID
    /// </summary>
    [SugarTable("ZZCXA")]
    public class Zzcxa
    public class ZZCXA
    {
        /// <summary>
        /// ä¸»é”®ID
        /// ä¸»é”® ID
        /// </summary>
        [SugarColumn(ColumnName = "ID", IsPrimaryKey = true, OracleSequenceName = "SEQ_ZZCXA")]
        public decimal? Id { get; set; }
        /// <summary>
        /// çˆ¶è¡¨ ID (对应 ZZCX.ID) â€”— å¯ç”¨äºŽå…³ç³»æŸ¥è¯¢
        /// </summary>
        [SugarColumn(ColumnName = "PID")]
        public decimal? Pid { get; set; }
        /// <summary>
        /// YD_ID:写入主表的 ERPID(你要求:子表的 yd_id å­˜ä¸»è¡¨çš„ erpid)
        /// </summary>
        [SugarColumn(ColumnName = "YD_ID")]
        public string YdId { get; set; }
        /// <summary>
        /// ERP å­è¡¨/行 id(erpid/eid ç­‰ ERP è¡Œæ ‡è¯†ï¼‰
        /// </summary>
        [SugarColumn(ColumnName = "ERPID")]
        public string Erpid { get; set; }
        /// <summary>
        /// å•据编码
@@ -100,10 +119,10 @@
        public string Zjhz { get; set; }
        /// <summary>
        /// ç‰©æ–™ç¼–码id
        /// ç‰©æ–™ç¼–码 id
        /// </summary>
        [SugarColumn(ColumnName = "ITEM_ID")]
        public decimal? ItemId { get; set; }
        public string ItemId { get; set; }
        /// <summary>
        /// æ•°é‡
@@ -123,10 +142,9 @@
        [SugarColumn(ColumnName = "DEPOT_ID")]
        public string DepotId { get; set; }
        /// <summary>
        /// ERP ä¸»è¡¨id
        /// </summary>
        [SugarColumn(ColumnName = "ERPID")]
        public string Erpid { get; set; }
        [SugarColumn(IsIgnore = true)]
        public List<ZZCXB> SubItems { get; set; } = new List<ZZCXB>();
    }
}
StandardInterface/MES.Service/Modes/Zzcxb.cs
@@ -1,43 +1,43 @@
using System;
// æ–‡ä»¶: MES.Service.Modes/ZZCXB.cs
using SqlSugar;
namespace MES.Service.Modes
{
    /// <summary>
    /// ZZCXB æ˜Žç»†è¡¨
    /// ZZCXB - ç»„装拆卸 å­™è¡¨ï¼ˆä¸Žå­è¡¨ä¸€å¯¹å¤šï¼‰
    /// </summary>
    [SugarTable("ZZCXB")]
    public class Zzcxb
    public class ZZCXB
    {
        /// <summary>
        /// ä¸»é”®ID
        /// ä¸»é”® ID
        /// </summary>
        [SugarColumn(ColumnName = "ID", IsPrimaryKey = true, OracleSequenceName = "SEQ_ZZCXB")]
        public decimal? Id { get; set; }
        /// <summary>
        /// ä¸»è¡¨ID
        /// å¯¹åº”子表 ID (ZZCXA.ID)
        /// </summary>
        [SugarColumn(ColumnName = "PID")]
        public decimal? Pid { get; set; }
        /// <summary>
        /// ERP ä¸»è¡¨id
        /// ERP ä¸»è¡¨ id(冗余)
        /// </summary>
        [SugarColumn(ColumnName = "ERPID")]
        public string Erpid { get; set; }
        /// <summary>
        /// ERP å•据头id
        /// ERP å­è¡¨è¡Œ id (EID)
        /// </summary>
        [SugarColumn(ColumnName = "EID")]
        public string Eid { get; set; }
        /// <summary>
        /// ç‰©æ–™ç¼–码id
        /// ç‰©æ–™ç¼–码 id
        /// </summary>
        [SugarColumn(ColumnName = "ITEM_ID")]
        public decimal? ItemId { get; set; }
        public string ItemId { get; set; }
        /// <summary>
        /// æ•°é‡
StandardInterface/MES.Service/service/ZZCXDManager.cs
@@ -8,7 +8,7 @@
namespace MES.Service.service
{
    public class ZzcxdManager : Repository<Zzcxa>
    public class ZzcxManager : Repository<ZZCX>
    {
        public bool SaveList(List<ERPZZCXD> list)
        {
@@ -18,51 +18,50 @@
        public bool Save(ERPZZCXD data)
        {
            var head = MapErpToMesHead(data.ERPZZCXA);
            var details = MapErpDbckbToDbckb(data.ERPZZCXB);
            var head = MapErpToMesHead(data.Main);
            var children = MapErpChildren(data.Children, data.Main.erpid);
            return UseTransaction(db =>
            {
                switch (data.ERPZZCXA.type)
                switch (data.Main.type)
                {
                    case "3":
                        return UpdateData(db, head, details) ? 1 : 0;
                    case "3": // åˆ é™¤ / ç¦ç”¨
                        return UpdateData(db, head, children) ? 1 : 0;
                    case "2":
                    case "4":
                    case "5":
                        return SaveOrUpdateData(db, head, details) ? 1 : 0;
                    case "5": // æ–°å¢žæˆ–æ›´æ–°
                        return SaveOrUpdateData(db, head, children) ? 1 : 0;
                    default:
                        throw new NotImplementedException($"type没有 {data.ERPZZCXA.type} è¿™ä¸ªç±»åž‹");
                        throw new NotImplementedException($"type æ²¡æœ‰ {data.Main.type} è¿™ä¸ªç±»åž‹");
                }
            }) > 0;
        }
        private Zzcxa MapErpToMesHead(ERPZZCXA dto)
        private ZZCX MapErpToMesHead(ERPZZCXMain dto)
        {
            var entity = new Zzcxa
            var entity = new ZZCX
            {
                BillNo = dto.bill_no,          // å•据编码
                DjLx = dto.dj_lx,              // å•据类型
                KcZz = dto.kc_zz,              // åº“存组织
                SwLx = dto.sw_lx,              // äº‹åŠ¡ç±»åž‹
                Time =  dto.time , // æ—¥æœŸ
                Bm = dto.bm,                   // éƒ¨é—¨
                Cgy = dto.cgy,                 // ä»“管员
                Kcz = dto.kcz,                 // åº“存组
                DjZt = dto.dj_zt,              // å•据状态
                Memo = dto.memo,               // å¤‡æ³¨
                Cphzlx = dto.cphzlx,           // æˆå“è´§ä¸»ç±»åž‹
                Cphz = dto.cphz,               // æˆå“è´§ä¸»
                Zjhzlx = dto.zjhzlx,           // å­ä»¶è´§ä¸»ç±»åž‹
                Zjhz = dto.zjhz,               // å­ä»¶è´§ä¸»
                ItemId = string.IsNullOrEmpty(dto.item_id) ? null : Convert.ToDecimal(dto.item_id), // ç‰©æ–™ç¼–码id
                Qty = string.IsNullOrEmpty(dto.qty) ? null : Convert.ToDecimal(dto.qty),            // æ•°é‡
                Unit = dto.unit,               // å•位
                DepotId = dto.depot_id,        // ä»“库
                Erpid = dto.erpid              // ERP ä¸»è¡¨id
                BillNo = dto.bill_no,   // å•据编码
                Erpid = dto.erpid ,      // ERP ä¸»è¡¨ ID
                 DjLx = dto.dj_lx,
                KcZz = dto.kc_zz,
                SwLx = dto.sw_lx,
                // Time = string.IsNullOrEmpty(dto.time) ? (DateTime?)null : DateTime.Parse(dto.time),
                Time = dto.time,
                Bm = dto.bm,
                Cgy = dto.cgy,
                Kcz = dto.kcz,
                DjZt = dto.dj_zt,
                Memo = dto.memo,
                Cphzlx = dto.cphzlx,
                Cphz = dto.cphz,
                Zjhzlx = dto.zjhzlx,
                Zjhz = dto.zjhz,
            };
            var single = Db.Queryable<Zzcxa>()
            var single = Db.Queryable<ZZCX>()
                           .Where(it => it.Erpid == entity.Erpid)
                           .First();
            if (single != null)
@@ -71,41 +70,78 @@
            return entity;
        }
        private List<Zzcxb> MapErpDbckbToDbckb(List<ERPZZCXB> list)
        private List<ZZCXA> MapErpChildren(List<ERPZZCXA> list, string mainErpId)
        {
            var result = new List<Zzcxb>();
            var result = new List<ZZCXA>();
            foreach (var dto in list)
            {
                var item = new Zzcxb
                var item = new ZZCXA
                {
                    Erpid = dto.erpid,               // ERP ä¸»è¡¨id
                    Eid = dto.eid,                   // ERP å•据头id
                    ItemId = string.IsNullOrEmpty(dto.item_id) ? null : Convert.ToDecimal(dto.item_id), // ç‰©æ–™ç¼–码id
                    Qty = string.IsNullOrEmpty(dto.qty) ? null : Convert.ToDecimal(dto.qty),            // æ•°é‡
                    Unit = dto.unit,                 // å•位
                    DepotId = dto.depot_id,          // ä»“库
                    LotNo = dto.lot_no,              // æ‰¹å·
                    Memo = dto.memo                  // å¤‡æ³¨
                    Erpid = dto.erpid,
                 /*   BillNo = dto.bill_no,
                    DjLx = dto.dj_lx,
                    KcZz = dto.kc_zz,
                    SwLx = dto.sw_lx,
                   // Time = string.IsNullOrEmpty(dto.time) ? (DateTime?)null : DateTime.Parse(dto.time),
                    Time = dto.time,
                    Bm = dto.bm,
                    Cgy = dto.cgy,
                    Kcz = dto.kcz,
                    DjZt = dto.dj_zt,
                    Memo = dto.memo,
                    Cphzlx = dto.cphzlx,
                    Cphz = dto.cphz,
                    Zjhzlx = dto.zjhzlx,
                    Zjhz = dto.zjhz,*/
                    ItemId = dto.item_id,
                    Qty = string.IsNullOrEmpty(dto.qty) ? (decimal?)null : Convert.ToDecimal(dto.qty),
                    Unit = dto.unit,
                    DepotId = dto.depot_id,
                    YdId = mainErpId
                };
                var existing = Db.Queryable<Zzcxb>().Where(s => s.Erpid == item.Erpid).Single();
                var existing = Db.Queryable<ZZCXA>().Where(s => s.Erpid == item.Erpid).Single();
                if (existing != null) item.Id = existing.Id;
                result.Add(item);
                // å­™è¡¨å¤„理
                if (dto.SubItems != null && dto.SubItems.Count > 0)
                {
                    foreach (var subDto in dto.SubItems)
                    {
                        var subEntity = new ZZCXB
                        {
                            Eid = subDto.eid,
                            ItemId = subDto.item_id,
                            Qty = string.IsNullOrEmpty(subDto.qty) ? (decimal?)null : Convert.ToDecimal(subDto.qty),
                            Unit = subDto.unit,
                            DepotId = subDto.depot_id,
                            LotNo = subDto.lot_no,
                            Memo = subDto.memo,
                            Erpid = mainErpId
                        };
                        var existingSub = Db.Queryable<ZZCXB>().Where(s => s.Eid == subEntity.Eid).Single();
                        if (existingSub != null) subEntity.Id = existingSub.Id;
                        item.SubItems ??= new List<ZZCXB>();
                        item.SubItems.Add(subEntity);
                    }
                }
            }
            return result;
        }
        private bool SaveOrUpdateData(SqlSugarScope db, Zzcxa head, List<Zzcxb> details)
        private bool SaveOrUpdateData(SqlSugarScope db, ZZCX head, List<ZZCXA> children)
        {
            if (head.Id != null)
                base.DeleteById(head.Id);
            db.Deleteable<Zzcxb>()
              .Where(d => d.Eid == head.Erpid)
              .ExecuteCommand();
            db.Deleteable<ZZCXA>().Where(d => d.YdId == head.Erpid).ExecuteCommand();
            db.Deleteable<ZZCXB>().Where(d => d.Erpid == head.Erpid).ExecuteCommand();
            var insertedHead = db.Insertable(head)
                .IgnoreColumns(true)
@@ -113,23 +149,59 @@
            if (insertedHead <= 0)
                throw new Exception("主表插入失败,未返回ID");
            var success = db.Insertable(details)
                .PageSize(10)
                .IgnoreColumnsNull()
                .ExecuteCommand() > 0;
            foreach (var child in children)
            {
                child.Pid = insertedHead;
                var childId = db.Insertable(child).IgnoreColumns(true).ExecuteReturnIdentity();
            if (insertedHead >= 0 && success) return true;
            throw new NotImplementedException("插入或更新失败");
                if (child.SubItems != null && child.SubItems.Count > 0)
                {
                    foreach (var sub in child.SubItems)
                    {
                        sub.Pid = childId;
                        db.Insertable(sub).IgnoreColumns(true).ExecuteCommand();
                    }
                }
            }
            return true;
        }
        private bool UpdateData(SqlSugarScope db, Zzcxa head, List<Zzcxb> details)
        /* private bool UpdateData(SqlSugarScope db, ZZCX head, List<ZZCXA> children)
         {
             // åˆ é™¤ä¸»è¡¨ & å­å­™è¡¨
             var deletedHead = base.DeleteById(head.Id);
             var deletedChildren = db.Deleteable<ZZCXA>().Where(d => d.YdId == head.Erpid).ExecuteCommand();
             var deletedGrand = db.Deleteable<ZZCXB>().Where(d => d.Erpid == head.Erpid).ExecuteCommand();
             if (deletedHead && deletedChildren >= 0 && deletedGrand >= 0) return true;
             throw new NotImplementedException("删除失败");
         }*/
        private bool UpdateData(SqlSugarScope db, ZZCX head, List<ZZCXA> children)
        {
            var ids = details.Select(d => d.Id).ToArray();
            var deletedHead = base.DeleteById(head.Id);
            var deletedDetails = db.Deleteable<Zzcxb>().In(ids).ExecuteCommand() > 0;
            // åˆ é™¤ä¸»è¡¨
            var deletedHead = db.Deleteable<ZZCX>()
                                .Where(d => d.Erpid == head.Erpid)
                                .ExecuteCommand();
            if (deletedHead && deletedDetails) return true;
            throw new NotImplementedException("更新失败");
            // åˆ é™¤å­è¡¨
            var deletedChildren = db.Deleteable<ZZCXA>()
                                    .Where(d => d.YdId == head.Erpid)
                                    .ExecuteCommand();
            // åˆ é™¤å­™è¡¨
            var deletedGrand = db.Deleteable<ZZCXB>()
                                 .Where(d => d.Erpid == head.Erpid)
                                 .ExecuteCommand();
            // å¦‚果主表没删到记录,也认为允许(可能之前就不存在)
            if (deletedHead >= 0 && deletedChildren >= 0 && deletedGrand >= 0)
                return true;
            throw new NotImplementedException("删除失败");
        }
    }
}
StandardInterface/MESApplication/Controllers/ZZCXDController.cs
@@ -2,28 +2,27 @@
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;
using MES.Service.service;
namespace MESApplication.Controllers
{
    [ApiController]
    [Route("api/[controller]")]
    public class ZZCXDController : ControllerBase
    public class ZzcxController : ControllerBase
    {
        private readonly ZzcxdManager _manager = new();   // è¿™é‡Œå¯¹åº”æ–°çš„ Service
        private readonly ZzcxManager _manager = new();
        private readonly MessageCenterManager _messageManager = new();
        private const string METHOD = "POST";
        private const string TableName = "ZZCXD";
        private const string URL = "http://localhost:10054/api/ERPZZCXD/";
        private const string TableName = "ZZCX";
        private const string URL = "http://localhost:10054/api/Zzcx/";
        /// <summary>
        /// ä¿å­˜å•条调拨单
        /// </summary>
        [HttpPost("Save")]
        public ResponseResult Save([FromBody] ERPZZCXD data)
        {
@@ -35,7 +34,7 @@
                Data = JsonConvert.SerializeObject(data),
                Status = 1,
                CreateBy = "PL017",
                Route = data.ERPZZCXA.bill_no   // æ³¨æ„å– billno
                Route = data.Main.bill_no
            };
            try
@@ -61,9 +60,6 @@
            }
        }
        /// <summary>
        /// æ‰¹é‡ä¿å­˜è°ƒæ‹¨å•
        /// </summary>
        [HttpPost("SaveList")]
        public ResponseResult SaveList([FromBody] List<ERPZZCXD> dataList)
        {