快乐的昕的电脑
2025-11-25 52ee0c077127aef8580edbe65d6d48de083e570a
MES.Service/service/BasicData/MesCustomerManager.cs
@@ -1,7 +1,9 @@
using MES.Service.DB;
using AngleSharp.Dom;
using MES.Service.DB;
using MES.Service.Dto.webApi;
using MES.Service.Modes;
using SqlSugar;
using Masuit.Tools;
namespace MES.Service.service.BasicData;
@@ -80,6 +82,14 @@
        }) > 0;
    }
    /// <summary>
    /// 启用与禁用_0/1
    /// </summary>
    /// <param name="db"></param>
    /// <param name="customerId"></param>
    /// <param name="status"></param>
    /// <returns></returns>
    /// <exception cref="NotImplementedException"></exception>
    private bool UpdateCustomerStatus(SqlSugarScope db, decimal customerId,
        string status)
    {
@@ -102,6 +112,13 @@
        throw new NotImplementedException("插入失败");
    }
    /// <summary>
    /// 反审核_3
    /// </summary>
    /// <param name="db"></param>
    /// <param name="customerId"></param>
    /// <returns></returns>
    /// <exception cref="NotImplementedException"></exception>
    private bool DeleteCustomer(SqlSugarScope db, decimal customerId)
    {
        var deleteById = db.Deleteable<MesCustomer>()
@@ -114,30 +131,85 @@
    private MesCustomer GetSysDepartment(ErpCustomer customer)
    {
        //ERP傳輸的接口數據轉換為MES數據庫字段
        // 查找是否已存在相同客户编码的记录。ID、create_date
        var existingCustomer = Db.Queryable<MesCustomer>()
            .Where(s => s.CustNo == customer.FNumber)
            .First();
        return new MesCustomer
        //ERP傳輸的接口數據轉換為MES數據庫字段
        var entity = new MesCustomer
        {
            Id = Convert.ToDecimal(customer.Id),
            // 如果存在,使用现有的ID,后续将删除后重新插入
            // 如果不存在,设为0,InsertOrUpdate方法将生成新ID
            Id = existingCustomer?.Id ?? 0,
            //Id = Convert.ToDecimal(customer.Id),
            CustNo = customer.FNumber,
            CustSname = customer.FShortName,
            CustName = customer.FName,
            Anred = customer.FTContact,
            Anred = customer.Fcontact,
            Telf1 = customer.Fmobilephone,
            Fseller = customer.Fseller,
            Fforbidstatus = customer.FForbidStatus,
            //Fforbidstatus = customer.FForbidStatus,
            Remark = customer.FDescription,
            FSubsidiary = customer.FUseOrgId,
            Fumbrella = customer.FCreateOrgId,
            CreateDate = DateTime.Now,
            FSubsidiary = "1",
            Fumbrella = "1",
            // 如果存在,使用现有的CreateDate,后续将删除后重新插入
            // 如果不存在,设为当前时间
            CreateDate = existingCustomer?.CreateDate ?? DateTime.Now,
            LastupdateDate = DateTime.Now,
            Company = "1000",
            Factory = "1000",
            DataType = customer.FDocumentStatus,
            Type = customer.Type
            Type = customer.Type,
            QuickCode=customer.QuickCode,
            ItemC =null,
            ItemSap=null,
            LotFlag=null,
            Iscommit= null
        };
        // ERP: 0=未禁用, 1=禁用
        // MES: A=未禁用, B=禁用
        if (customer.FForbidStatus.IsNullOrEmpty())
        {
            entity.Fforbidstatus = "A";
        }
        else
        {
            //我期望的值是A=否,B=是
            //实际给我的值是0或1,我希望为我转换从A和B的方式
            entity.Fforbidstatus = customer.FForbidStatus == "1" ? "B" : "A";
        }
        return entity;
    }
    /// <summary>
    /// 生成新的ID,确保不重复
    /// </summary>
    private decimal GenerateNewId()
    {
        // 处理空表的情况,从1开始
        var maxId = Db.Queryable<MesCustomer>().Max(x => (decimal?)x.Id) ?? 0;
        var newId = maxId + 1;
        // 双重检查,确保生成的ID不存在
        while (Db.Queryable<MesCustomer>().Where(x => x.Id == newId).Any())
        {
            newId++;
        }
        return newId;
    }
    /// <summary>
    /// 批量启用与禁用_0/1
    /// </summary>
    /// <param name="db"></param>
    /// <param name="customerList"></param>
    /// <param name="status"></param>
    /// <returns></returns>
    /// <exception cref="NotImplementedException"></exception>
    private bool UpdateCustomerStatusBatch(SqlSugarScope db,
        List<MesCustomer> customerList, string status)
    {
@@ -162,6 +234,13 @@
        throw new NotImplementedException("插入失败");
    }
    /// <summary>
    /// 批量反审核_3
    /// </summary>
    /// <param name="db"></param>
    /// <param name="customerList"></param>
    /// <returns></returns>
    /// <exception cref="NotImplementedException"></exception>
    private bool DeleteCustomerBatch(SqlSugarScope db,
        List<MesCustomer> customerList)
    {
@@ -174,18 +253,58 @@
        throw new NotImplementedException("删除失败");
    }
    /// <summary>
    /// 同步客户信息new_0/4
    /// </summary>
    /// <param name="db"></param>
    /// <param name="entity"></param>
    /// <returns></returns>
    private bool InsertOrUpdate(SqlSugarScope db, MesCustomer entity)
    {
        db.Deleteable<MesCustomer>().Where(s => s.Id == entity.Id)
            .ExecuteCommand();
        if (entity.Id == 0)
        {
            // 新增情况:生成新ID并插入
            var newId = GenerateNewId();
            entity.Id = newId;
            return db.Insertable(entity).ExecuteCommand() > 0;
        }
        else
        {
            // 更新情况:删除后重新插入,保持原有ID
            var originalId = entity.Id;
        var insert = db.Insertable(entity).ExecuteCommand();
            // 先删除原记录(如果存在)
            db.Deleteable<MesCustomer>().Where(s => s.Id == originalId).ExecuteCommand();
        return insert > 0;
            // 重新插入,保持原有ID
            entity.Id = originalId;
            return db.Insertable(entity).ExecuteCommand() > 0;
        }
    }
    private bool InsertOrUpdateBatch(SqlSugarScope db,
        List<MesCustomer> customerList)
    /// <summary>
    /// 同步客户信息old_0/4
    /// </summary>
    /// <param name="db"></param>
    /// <param name="entity"></param>
    /// <returns></returns>
    //private bool InsertOrUpdate(SqlSugarScope db, MesCustomer entity)
    //{
    //    db.Deleteable<MesCustomer>().Where(s => s.CustNo == entity.CustNo)
    //        .ExecuteCommand();
    //    var insert = db.Insertable(entity).ExecuteCommand();
    //    return insert > 0;
    //}
    /// <summary>
    /// 批量_同步客户信息new_0/4
    /// </summary>
    /// <param name="db"></param>
    /// <param name="entity"></param>
    /// <returns></returns>
    private bool InsertOrUpdateBatch(SqlSugarScope db,List<MesCustomer> customerList)
    {
        return customerList.All(entity => InsertOrUpdate(db, entity));
    }