快乐的昕的电脑
2025-12-02 975626b6391fddffeb7f8aa53eaec038450225ca
工作中心信息(单独接口写入到部门信息)
已添加3个文件
570 ■■■■■ 文件已修改
MES.Service/Dto/webApi/ErpWorkshopcenters.cs 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
MES.Service/service/BasicData/MesWorkshopcentersManager.cs 299 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
MESApplication/Controllers/BasicData/MesWorkshopcentersController.cs 256 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
MES.Service/Dto/webApi/ErpWorkshopcenters.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
namespace MES.Service.Dto.webApi;
/// å·¥ä½œä¸­å¿ƒä¿¡æ¯è¡¨
public class ErpWorkshopcenters
{
    public string? Id { get; set; }
    public string? FDept { get; set; }//部门编号
    public string? Type { get; set; }
    public string? FForbidStatus { get; set; }
    public string  FNumber { get; set; }//工作中心编号
    public string? FName { get; set; }//工作中心名称
    public string? factory_name { get; set; }//工厂名称
    public string? Factory { get; set; }//工厂名称
}
MES.Service/service/BasicData/MesWorkshopcentersManager.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,299 @@
using MES.Service.DB;
using MES.Service.Dto.webApi;
using MES.Service.Modes;
using SqlSugar;
namespace MES.Service.service.BasicData;
/// <summary>
/// å·¥ä½œä¸­å¿ƒä¿¡æ¯è¡¨
/// </summary>
public class MesWorkshopcentersManager : Repository<SysDepartment>
{
    // å½“前类已经继承了 Repository å¢žã€åˆ ã€æŸ¥ã€æ”¹çš„æ–¹æ³•
    // Save æ–¹æ³•用于保存单个部门记录,根据类型执行不同的操作
    public bool Save(ErpWorkshopcenters department)
    {
        var entity =
            GetSysDepartment(department); // å°† ErpDepartment è½¬æ¢ä¸º SysDepartment
        return UseTransaction(db =>
        {
            switch (department.Type)
            {
                case "0":
                    if (UpdateDepartmentStatus(db, entity.Id, "A")) // å¯ç”¨éƒ¨é—¨
                        return 1;
                    break;
                case "1":
                    if (UpdateDepartmentStatus(db, entity.Id, "B")) // ç¦ç”¨éƒ¨é—¨
                        return 1;
                    break;
                case "3":
                    if (DeleteDepartment(db, entity.Id)) // åˆ é™¤éƒ¨é—¨
                        return 1;
                    break;
                case "2":
                case "4":
                    if (InsertOrUpdateDepartment(db, entity)) // æ’入或更新部门
                        return 1;
                    break;
                default:
                    throw new ArgumentNullException(
                        $"type没有{department.Type}这个类型的参数");
            }
            throw new NotImplementedException("操作失败");
        }) > 0;
    }
    // æ›´æ–°éƒ¨é—¨çŠ¶æ€çš„æ–¹æ³•
    private bool UpdateDepartmentStatus(SqlSugarScope db, decimal departmentId,
        string status)
    {
        var result = db.Updateable<SysDepartment>()
            .SetColumns(s => s.Depextr4 == status)
            .Where(s => s.Id == departmentId).ExecuteCommand();
        if (result > 0)
            return true;
        throw new NotImplementedException(status == "A" ? "启用失败" : "禁用失败");
    }
    // æ’入新部门的方法
    private bool InsertDepartment(SqlSugarScope db, SysDepartment entity)
    {
        var insert = db.Insertable(entity).ExecuteCommand();
        if (insert > 0)
            return true;
        throw new NotImplementedException("插入失败");
    }
    // åˆ é™¤éƒ¨é—¨çš„æ–¹æ³•
    private bool DeleteDepartment(SqlSugarScope db, decimal departmentId)
    {
        var deleteById = db.Deleteable<SysDepartment>()
            .Where(s => s.Id == departmentId).ExecuteCommand();
        if (deleteById > 0)
            return true;
        throw new NotImplementedException("删除失败");
    }
    /// <summary>
    /// åŒæ­¥ç‰©æ–™ä¿¡æ¯new_0/4
    /// </summary>
    /// <param name="db"></param>
    /// <param name="entity"></param>
    /// <returns></returns>
    private bool InsertOrUpdateDepartment(SqlSugarScope db, SysDepartment entity)
    {
        if (entity.Id == 0)
        {
            // æ–°å¢žæƒ…况:生成新ID并插入
            var newId = GenerateNewId();
            entity.Id = newId;
            entity.Departmentid = newId;
            return db.Insertable(entity).ExecuteCommand() > 0;
        }
        else
        {
            // æ›´æ–°æƒ…况:删除后重新插入,保持原有ID
            var originalId = entity.Id;
            // å…ˆåˆ é™¤åŽŸè®°å½•ï¼ˆå¦‚æžœå­˜åœ¨ï¼‰
            db.Deleteable<SysDepartment>().Where(s => s.Id == originalId).ExecuteCommand();
            // é‡æ–°æ’入,保持原有ID
            entity.Id = originalId;
            entity.Departmentid = originalId;
            return db.Insertable(entity).ExecuteCommand() > 0;
        }
    }
    // æ’入或更新部门的方法
    //private bool InsertOrUpdateDepartment(SqlSugarScope db,SysDepartment entity)
    //{
    //    db.Deleteable<SysDepartment>()
    //        .Where(s => s.Id == entity.Id).ExecuteCommand();
    //    var insert = db.Insertable(entity).ExecuteCommand();
    //    return insert > 0;
    //}
    // å°† ErpWorkshopcenters å¯¹è±¡è½¬æ¢ä¸º SysDepartment å¯¹è±¡çš„æ–¹æ³•
    private SysDepartment GetSysDepartment(ErpWorkshopcenters department)
    {
        // æŸ¥æ‰¾æ˜¯å¦å·²å­˜åœ¨ç›¸åŒç¼–码的记录。
        var existingCustomer = Db.Queryable<SysDepartment>()
            .Where(s => s.Departmentcode == department.FDept)
            .First();
        var entity = new SysDepartment
        {
            // å¦‚果存在,使用现有的ID,后续将删除后重新插入
            // å¦‚果不存在,设为0,InsertOrUpdate方法将生成新ID
            Id = existingCustomer?.Id ?? 0,
            Departmentid = existingCustomer?.Departmentid ?? 0,
            //Id = Convert.ToDecimal(department.Id),
            //Departmentid = Convert.ToDecimal(department.Id),
            Departmentcode = department.FDept,//主键
            Depextr4 = department.FForbidStatus,
            // å¦‚果存在,使用现有的CreateDate,后续将删除后重新插入
            // å¦‚果不存在,设为当前时间
            CreateDate = existingCustomer?.CreateDate ?? DateTime.Now,
            //CreateDate = DateTime.Now,
            LastupdateDate = DateTime.Now,
            //不存在(为空或 null),则使用 existingCustomer çš„原值,否则用新值。
            WorkshopCenterCode = string.IsNullOrEmpty(department.FNumber)
    ? existingCustomer?.WorkshopCenterCode
    : department.FNumber,
            WorkshopCenterName = string.IsNullOrEmpty(department.FName)
    ? existingCustomer?.WorkshopCenterName
    : department.FName,
            FactoryName = string.IsNullOrEmpty(department.factory_name)
    ? existingCustomer?.FactoryName
    : department.factory_name,
            Factory = string.IsNullOrEmpty(department.Factory)
    ? existingCustomer?.Factory
    : department.Factory,
        };
        // ERP: 0=未禁用, 1=禁用
        // MES: A=未禁用, B=禁用
        //传入0、1或者A、B时都会转为A、B,其他情况为A
        if (string.IsNullOrEmpty(department.FForbidStatus))
        {
            entity.Depextr4 = "A";
        }
        else
        {
            // å›žä¼ B或1时写入B,其它写A
            entity.Depextr4 = (department.FForbidStatus == "1" || department.FForbidStatus == "B")
                ? "B"
                : "A";
        }
        return entity;
    }
    /// <summary>
    /// ç”Ÿæˆæ–°çš„ID,确保不重复
    /// </summary>
    private decimal GenerateNewId()
    {
        // å¤„理空表的情况,从1开始
        var maxId = Db.Queryable<SysDepartment>().Max(x => (decimal?)x.Id) ?? 0;
        var newId = maxId + 1;
        // åŒé‡æ£€æŸ¥ï¼Œç¡®ä¿ç”Ÿæˆçš„ID不存在
        while (Db.Queryable<SysDepartment>().Where(x => x.Id == newId).Any())
        {
            newId++;
        }
        return newId;
    }
    // SaveList æ–¹æ³•用于保存多个部门记录,根据类型批量执行不同的操作
    public bool SaveList(List<ErpWorkshopcenters> departments)
    {
        var list = new List<SysDepartment>();
        departments.ForEach(s =>
        {
            var entity =
                GetSysDepartment(s); // å°† ErpWorkshopcenters è½¬æ¢ä¸º SysDepartment
            entity.Type = s.Type;
            list.Add(entity);
        });
        var groupBy = list.GroupBy(s => s.Type)
            .ToDictionary(g => g.Key, g => g.ToList());
        return UseTransaction(db =>
        {
            foreach (var departmentGroup in groupBy)
                switch (departmentGroup.Key)
                {
                    case "0":
                        if (!UpdateDepartmentStatusBatch(db,
                                departmentGroup.Value, "A")) // æ‰¹é‡å¯ç”¨éƒ¨é—¨
                            throw new NotImplementedException("启用失败");
                        break;
                    case "1":
                        if (!UpdateDepartmentStatusBatch(db,
                                departmentGroup.Value, "B")) // æ‰¹é‡ç¦ç”¨éƒ¨é—¨
                            throw new NotImplementedException("禁用失败");
                        break;
                    case "3":
                        if (!DeleteDepartmentBatch(db,
                                departmentGroup.Value)) // æ‰¹é‡åˆ é™¤éƒ¨é—¨
                            throw new NotImplementedException("删除失败");
                        break;
                    case "2":
                    case "4":
                        if (!InsertOrUpdateDepartmentBatch(db,
                                departmentGroup.Value)) // æ‰¹é‡æ’入或更新部门
                            throw new NotImplementedException("同步失败");
                        break;
                    default:
                        throw new ArgumentNullException(
                            $"type没有{departmentGroup.Key}这个类型的参数");
                }
            return 1;
        }) > 0;
    }
    // æ‰¹é‡æ›´æ–°éƒ¨é—¨çŠ¶æ€çš„æ–¹æ³•
    private bool UpdateDepartmentStatusBatch(SqlSugarScope db,
        List<SysDepartment> departmentList, string status)
    {
        var ids = departmentList.Select(it => it.Id).ToArray();
        var result = db.Updateable<SysDepartment>()
            .SetColumns(s => s.Depextr4 == status)
            .Where(s => ids.Contains(s.Id)).ExecuteCommand();
        if (result > 0)
            return true;
        throw new NotImplementedException(status == "A" ? "启用失败" : "禁用失败");
    }
    // æ‰¹é‡æ’入部门的方法
    private bool InsertDepartmentBatch(SqlSugarScope db,
        List<SysDepartment> departmentList)
    {
        var insertRange = db.Insertable(departmentList).ExecuteCommand();
        if (insertRange > 0)
            return true;
        throw new NotImplementedException("插入失败");
    }
    // æ‰¹é‡åˆ é™¤éƒ¨é—¨çš„æ–¹æ³•
    private bool DeleteDepartmentBatch(SqlSugarScope db,
        List<SysDepartment> departmentList)
    {
        var ids = departmentList.Select(it => it.Id).ToArray();
        var deleteByIds =
            db.Deleteable<SysDepartment>()
                .Where(s => ids.Contains(s.Id)).ExecuteCommand();
        if (deleteByIds > 0)
            return true;
        throw new NotImplementedException("删除失败");
    }
    // æ‰¹é‡æ’入或更新部门的方法
    private bool InsertOrUpdateDepartmentBatch(SqlSugarScope db,
        List<SysDepartment> departmentList)
    {
        return departmentList.All(
            entity => InsertOrUpdateDepartment(db, entity));
    }
}
MESApplication/Controllers/BasicData/MesWorkshopcentersController.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,256 @@
using System.Dynamic;
using MES.Service.Dto.webApi;
using MES.Service.Modes;
using MES.Service.service;
using MES.Service.service.BasicData;
using MES.Service.util;
using Microsoft.AspNetCore.Mvc;
using Newtonsoft.Json;
namespace MESApplication.Controllers.BasicData;
[ApiController]
[Route("api/[controller]")]
public class MesWorkshopcentersController : ControllerBase
{
    private readonly MessageCenterManager _manager = new();
    private readonly MesWorkshopcentersManager m = new();
    private readonly string METHOD = "POST";
    private readonly string TableName = "SYS_DEPARTMENT";
    private readonly string URL = "http://localhost:10054/api/MesWorkshopcenters/";
    [HttpPost("Save")]
    public ResponseResult Save(ErpWorkshopcenters unit)
    {
        var entity = new MessageCenter();
        entity.TableName = TableName;
        entity.Url = URL + "Save";
        entity.Method = METHOD;
        entity.Data = JsonConvert.SerializeObject(unit);
        entity.Status = 1;
        entity.CreateBy = "PL017";
        entity.Route = unit.FNumber;
        try
        {
            dynamic resultInfos = new ExpandoObject();
            var save = m.Save(unit);
            resultInfos.tbBillList = save;
            entity.Result = 0;
            if (save) entity.Result = 1;
            entity.DealWith = 1;
            _manager.save(entity);
            return new ResponseResult
            {
                status = 0,
                message = "OK",
                data = resultInfos
            };
        }
        catch (Exception ex)
        {
            entity.Result = 0;
            entity.DealWith = 0;
            entity.ResultData = ex.Message;
            _manager.save(entity);
            return ResponseResult.ResponseError(ex);
        }
    }
    [HttpPost("SaveList")]
    public ResponseResult SaveList(List<ErpWorkshopcenters> units)
    {
        var entity = new MessageCenter();
        entity.TableName = TableName;
        entity.Url = URL + "SaveList";
        entity.Method = METHOD;
        entity.Data = JsonConvert.SerializeObject(units);
        entity.Status = 1;
        entity.CreateBy = "PL017";
        try
        {
            dynamic resultInfos = new ExpandoObject();
            var save = m.SaveList(units);
            resultInfos.tbBillList = save;
            entity.Result = 0;
            if (save) entity.Result = 1;
            entity.DealWith = 1;
            _manager.save(entity);
            return new ResponseResult
            {
                status = 0,
                message = "OK",
                data = resultInfos
            };
        }
        catch (Exception ex)
        {
            entity.Result = 0;
            entity.DealWith = 0;
            entity.ResultData = ex.Message;
            _manager.save(entity);
            return ResponseResult.ResponseError(ex);
        }
    }
    /// <summary>
    ///     èŽ·å–æ‰€æœ‰
    /// </summary>
    /// <returns></returns>
    [HttpPost("GetList")]
    public ResponseResult GetList()
    {
        try
        {
            dynamic resultInfos = new ExpandoObject();
            resultInfos.tbBillList = m.GetList();
            return new ResponseResult
            {
                status = 0,
                message = "OK",
                data = resultInfos
            };
        }
        catch (Exception ex)
        {
            return ResponseResult.ResponseError(ex);
        }
    }
    /// <summary>
    ///     æ ¹æ®ä¸»é”®èŽ·å–
    /// </summary>
    /// <returns></returns>
    [HttpPost("GetById")]
    public ResponseResult GetById(int id)
    {
        try
        {
            dynamic resultInfos = new ExpandoObject();
            resultInfos.tbBillList = m.GetById(id);
            return new ResponseResult
            {
                status = 0,
                message = "OK",
                data = resultInfos
            };
        }
        catch (Exception ex)
        {
            return ResponseResult.ResponseError(ex);
        }
    }
    /// <summary>
    ///     æ ¹æ®ä¸»é”®åˆ é™¤
    /// </summary>
    /// <returns></returns>
    [HttpPost("DeleteByIds")]
    public ResponseResult DeleteByIds([FromBody] object[] ids)
    {
        try
        {
            dynamic resultInfos = new ExpandoObject();
            resultInfos.tbBillList = m.DeleteByIds(ids);
            return new ResponseResult
            {
                status = 0,
                message = "OK",
                data = resultInfos
            };
        }
        catch (Exception ex)
        {
            return ResponseResult.ResponseError(ex);
        }
    }
    /// <summary>
    ///     æ·»åŠ 
    /// </summary>
    /// <returns></returns>
    [HttpPost("Insert")]
    public ResponseResult Add([FromBody] SysDepartment data)
    {
        try
        {
            dynamic resultInfos = new ExpandoObject();
            resultInfos.tbBillList = m.Insert(data);
            return new ResponseResult
            {
                status = 0,
                message = "OK",
                data = resultInfos
            };
        }
        catch (Exception ex)
        {
            return ResponseResult.ResponseError(ex);
        }
    }
    /// <summary>
    ///     æ·»åŠ è¿”å›žè‡ªå¢ž
    /// </summary>
    /// <returns></returns>
    [HttpPost("InsertReturnIdentity")]
    public ResponseResult InsertReturnIdentity([FromBody] SysDepartment data)
    {
        try
        {
            dynamic resultInfos = new ExpandoObject();
            resultInfos.tbBillList = m.InsertReturnIdentity(data);
            return new ResponseResult
            {
                status = 0,
                message = "OK",
                data = resultInfos
            };
        }
        catch (Exception ex)
        {
            return ResponseResult.ResponseError(ex);
        }
    }
    /// <summary>
    ///     ä¿®æ”¹
    /// </summary>
    /// <returns></returns>
    [HttpPost("Update")]
    public ResponseResult Update([FromBody] SysDepartment data)
    {
        try
        {
            dynamic resultInfos = new ExpandoObject();
            resultInfos.tbBillList = m.Update(data);
            return new ResponseResult
            {
                status = 0,
                message = "OK",
                data = resultInfos
            };
        }
        catch (Exception ex)
        {
            return ResponseResult.ResponseError(ex);
        }
    }
}