sjz
2025-09-12 0c1a03e880bbf795b771a9c8ee4b7b271c262b58
MES.Service/service/BasicData/MesDeliveryNoteManager.cs
@@ -20,8 +20,7 @@
    {
        var deliveryNote = deliveryNoteWrapper.DeliveryNote;
        var mesDeliveryNote = GetMesDeliveryNote(deliveryNote);
        var mesDeliveryNoteDetails =
            GetMesDeliveryNoticeDetails(deliveryNoteWrapper.DeliveryNoteDetails, mesDeliveryNote.DeliveryNo);
        var mesDeliveryNoteDetails = GetMesDeliveryNoticeDetails(deliveryNoteWrapper.DeliveryNoteDetails, mesDeliveryNote.DeliveryNo);
        return UseTransaction(db =>
        {
@@ -37,59 +36,50 @@
    /// <summary>
    /// 更新送货单数据
    /// </summary>
    private bool UpdateData(SqlSugarScope db, MesDeliveryNotice mesDeliveryNote,
        List<MesDeliveryNoticeDetail> mesDeliveryNoteDetails)
    private bool UpdateData(SqlSugarScope db, MesDeliveryNotice mesDeliveryNote, List<MesDeliveryNoticeDetail> mesDeliveryNoteDetails)
    {
        var detailIds = mesDeliveryNoteDetails.Select(s => s.Guid).ToArray();
        // 删除主表数据
        var deleteMain = db.Deleteable<MesDeliveryNotice>()
            .Where(a => a.DeliveryNo == mesDeliveryNote.DeliveryNo)
            .ExecuteCommand() > 0;
        var deleteMain = db.Deleteable<MesDeliveryNotice>().Where(a => a.DeliveryNo == mesDeliveryNote.DeliveryNo).ExecuteCommand() > 0;
        // 删除明细数据
        var deleteDetails = db.Deleteable<MesDeliveryNoticeDetail>()
            .Where(s => detailIds.Contains(s.Guid))
            .ExecuteCommand() > 0;
        var deleteDetails = db.Deleteable<MesDeliveryNoticeDetail>().Where(s => detailIds.Contains(s.Guid)).ExecuteCommand() > 0;
        if (deleteMain && deleteDetails) return true;
        if (deleteMain && deleteDetails)
        {
            return true;
        }
        throw new NotImplementedException("送货单更新失败");
    }
    /// <summary>
    /// 保存或更新送货单数据
    /// </summary>
    private bool SaveOrUpdateData(SqlSugarScope db, MesDeliveryNotice mesDeliveryNote,
        List<MesDeliveryNoticeDetail> mesDeliveryNoteDetails)
    private bool SaveOrUpdateData(SqlSugarScope db, MesDeliveryNotice mesDeliveryNote, List<MesDeliveryNoticeDetail> mesDeliveryNoteDetails)
    {
        // 若存在则先删除主表数据
        if (!mesDeliveryNote.DeliveryNo.IsNullOrEmpty())
        {
            db.Deleteable<MesDeliveryNotice>()
                .Where(s => s.DeliveryNo == mesDeliveryNote.DeliveryNo)
                .ExecuteCommand();
            db.Deleteable<MesDeliveryNotice>().Where(s => s.DeliveryNo == mesDeliveryNote.DeliveryNo).ExecuteCommand();
        }
        // 删除关联的明细数据
        if (mesDeliveryNoteDetails.Count > 0)
        {
            db.Deleteable<MesDeliveryNoticeDetail>()
                .Where(s => s.DeliveryNo == mesDeliveryNote.DeliveryNo)
                .ExecuteCommand();
            db.Deleteable<MesDeliveryNoticeDetail>().Where(s => s.DeliveryNo == mesDeliveryNote.DeliveryNo).ExecuteCommand();
        }
        // 插入主表数据
        var insertMain = db.Insertable(mesDeliveryNote)
            .IgnoreColumns(true)
            .ExecuteCommand() > 0;
        var insertMain = db.Insertable(mesDeliveryNote).IgnoreColumns(true).ExecuteCommand() > 0;
        // 插入明细数据
        var insertDetails = db.Insertable(mesDeliveryNoteDetails)
            .PageSize(1)
            .IgnoreColumnsNull()
            .ExecuteCommand() > 0;
        var insertDetails = db.Insertable(mesDeliveryNoteDetails).PageSize(1).IgnoreColumnsNull().ExecuteCommand() > 0;
        if (insertMain && insertDetails) return true;
        if (insertMain && insertDetails)
        {
            return true;
        }
        throw new NotImplementedException("送货单保存失败");
    }
@@ -141,8 +131,7 @@
        return deliveryNoteDetails.Select(detail =>
        {
            // 查找已有明细记录
            var existingDetail = deliveryNoteDetailManager.GetSingle(it =>
                it.DeliveryNo == deliveryNo && it.LineNo == detail.LineNo);
            var existingDetail = deliveryNoteDetailManager.GetSingle(it => it.DeliveryNo == deliveryNo && it.LineNo == detail.LineNo);
            var mesDetail = existingDetail ?? new MesDeliveryNoticeDetail();
            // 明细字段映射