啊鑫
2025-01-22 eb744ecfecc0f1b6d9c0999c65bc740d93e30eda
StandardPda/MES.Service/service/BasicData/MesDeliveryNoteManager.cs
@@ -2,20 +2,21 @@
using MES.Service.Dto.webApi;
using MES.Service.Modes;
using SqlSugar;
using System.Security.Cryptography;
namespace MES.Service.service.BasicData;
public class MesDeliveryNoteManager : Repository<MesDeliveryNote>
{
    private readonly MesDeliveryDetailsManager mesDeliveryNoteManager= new ();
    private readonly MesDeliveryDetailsManager mesDeliveryNoteManager = new();
    // Save 方法用于保存单个 RohIn 记录,根据类型执行不同的操作
    public bool Save(Delivery delivery)
    {
        var erpDelivery = delivery.ErpDelivery;
        var mesDeliveryNote = GetMesDeliveryNote(erpDelivery);
        var mesDeliveryNoteDetails = GetMesDeliveryNoteDetails(delivery.ErpDeliveryData, erpDelivery.DeliveryNo, mesDeliveryNote.Status);
        var mesDeliveryNoteDetails = GetMesDeliveryNoteDetails(
            delivery.ErpDeliveryData, erpDelivery.DeliveryNo,
            mesDeliveryNote.Status);
        return UseTransaction(db =>
        {
@@ -24,10 +25,16 @@
                case "2":
                case "4":
                case "5":
                    return SaveOrUpdateData(db, mesDeliveryNote, mesDeliveryNoteDetails) ? 1 : 0;
                    return SaveOrUpdateData(db, mesDeliveryNote,
                        mesDeliveryNoteDetails)
                        ? 1
                        : 0;
                case "3":
                case "6":
                    return DeleteData(db, mesDeliveryNote, mesDeliveryNoteDetails) ? 1: 0;
                    return DeleteData(db, mesDeliveryNote,
                        mesDeliveryNoteDetails)
                        ? 1
                        : 0;
                default:
                    throw new NotImplementedException(
                        $"type没有{erpDelivery.Type}这个类型");
@@ -36,7 +43,8 @@
    }
    // 插入数据的方法
    private bool InsertData(SqlSugarScope db, MesDeliveryNote mesDeliveryNote,List<MesDeliveryNoteDetails> mesDeliveryNoteDetails)
    private bool InsertData(SqlSugarScope db, MesDeliveryNote mesDeliveryNote,
        List<MesDeliveryNoteDetails> mesDeliveryNoteDetails)
    {
        var decimals = mesDeliveryNoteDetails.Select(s => s.Id).ToArray();
@@ -46,33 +54,42 @@
            db.Deleteable<MesRohInData>().In(decimals).ExecuteCommand();
        var insert = base.Insert(mesDeliveryNote);
        var insertRange = mesDeliveryNoteManager.InsertRange(mesDeliveryNoteDetails);
        var insertRange =
            mesDeliveryNoteManager.InsertRange(mesDeliveryNoteDetails);
        if (insert && insertRange) return true;
        throw new NotImplementedException("插入失败");
    }
    // 更新数据的方法
    private bool DeleteData(SqlSugarScope db, MesDeliveryNote mesDeliveryNote,List<MesDeliveryNoteDetails> mesDeliveryNoteDetails)
    private bool DeleteData(SqlSugarScope db, MesDeliveryNote mesDeliveryNote,
        List<MesDeliveryNoteDetails> mesDeliveryNoteDetails)
    {
        var decimals = mesDeliveryNoteDetails.Select(s => s.Id).ToArray();
        var update = base.DeleteById(mesDeliveryNote.Id);
        var insertOrUpdate = db.Deleteable<MesDeliveryNoteDetails>().Where(s => s.DeliveryNo == mesDeliveryNote.DeliveryNo).ExecuteCommand() > 0;
        var insertOrUpdate = db.Deleteable<MesDeliveryNoteDetails>()
            .Where(s => s.DeliveryNo == mesDeliveryNote.DeliveryNo)
            .ExecuteCommand() > 0;
        if (update && insertOrUpdate) return true;
        throw new NotImplementedException("删除失败");
    }
    // 插入或更新数据的方法
    private bool SaveOrUpdateData(SqlSugarScope db, MesDeliveryNote mesDeliveryNote,List<MesDeliveryNoteDetails> mesDeliveryNoteDetails)
    private bool SaveOrUpdateData(SqlSugarScope db,
        MesDeliveryNote mesDeliveryNote,
        List<MesDeliveryNoteDetails> mesDeliveryNoteDetails)
    {
        if (mesDeliveryNote.Id != null) base.DeleteById(mesDeliveryNote.Id);
        if (mesDeliveryNoteDetails.Count > 0)
            db.Deleteable<MesDeliveryNoteDetails>().Where(s => s.DeliveryNo == mesDeliveryNote.DeliveryNo).ExecuteCommand();
            db.Deleteable<MesDeliveryNoteDetails>()
                .Where(s => s.DeliveryNo == mesDeliveryNote.DeliveryNo)
                .ExecuteCommand();
        var orUpdate = base.Insert(mesDeliveryNote);
        var baOrUpdate = mesDeliveryNoteManager.InsertRange(mesDeliveryNoteDetails);
        var baOrUpdate =
            mesDeliveryNoteManager.InsertRange(mesDeliveryNoteDetails);
        if (orUpdate && baOrUpdate) return true;
        throw new NotImplementedException("插入或更新失败");
    }
@@ -102,15 +119,18 @@
        }
        else
        {
            mesDeliveryNote.Status =0;
            mesDeliveryNote.Status = 0;
        }
        mesDeliveryNote.CreateDate = DateTime.Now;
        mesDeliveryNote.DepotNo = delivery.DepotNo;
        mesDeliveryNote.ErpId = delivery.ErpId;
        return mesDeliveryNote;
    }
    public List<MesDeliveryNoteDetails> GetMesDeliveryNoteDetails(List<ErpDeliveryData> erpDeliveryDatas, string? type,decimal? status)
    public List<MesDeliveryNoteDetails> GetMesDeliveryNoteDetails(
        List<ErpDeliveryData> erpDeliveryDatas, string? type, decimal? status)
    {
        return erpDeliveryDatas.Select(s =>
        {
@@ -132,8 +152,10 @@
                Fsrcbill_no = s.SalesOrderId,
                RealQty = Convert.ToDecimal(s.IncludeQty)
            };
            var single = mesDeliveryNoteManager.GetSingle(it =>it.LineNo == entity.LineNo);
            if (single !=null && status==1) entity.RealQty = single.RealQty;
            var single =
                mesDeliveryNoteManager.GetSingle(it =>
                    it.LineNo == entity.LineNo);
            if (single != null && status == 1) entity.RealQty = single.RealQty;
            return entity;
        }).ToList();