qiuyao
2025-03-22 5ae3e9f5a944a887ab022bf1b0a5afdee20af70e
ÏîÄ¿´úÂë/WIDESEAWCS_Server Õýʽ/SerialPortService/ProcessServer.cs
@@ -1,9 +1,11 @@
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using AutoMapper;
using AutoMapper.Configuration.Conventions;
using SqlSugar;
using WIDESEA_ISerialPortRepository;
@@ -22,11 +24,14 @@
        private IPutakeRepository _putakeRepository;
        private IUnitOfWorkManage _unitOfWorkManage;
        private ITorqueOpRepository _torqueOpRepository;
        public ProcessServer(IProcessRepository BaseDal, IUnitOfWorkManage unitOfWorkManage, IPutakeRepository putakeRepository, ITorqueOpRepository torqueOpRepository) : base(BaseDal)
        private readonly IMapper _mapper;
        public ProcessServer(IProcessRepository BaseDal, IUnitOfWorkManage unitOfWorkManage, IPutakeRepository putakeRepository, ITorqueOpRepository torqueOpRepository, IMapper mapper) : base(BaseDal)
        {
            _putakeRepository = putakeRepository;
            _unitOfWorkManage = unitOfWorkManage;
            _torqueOpRepository = torqueOpRepository;
            _mapper = mapper;
        }
        public override PageGridData<Dt_Process> GetPageData(PageDataOptions options)
@@ -39,9 +44,10 @@
            return base.GetPageData(options);
        }
        //获取套筒数量
        /// <summary>
        /// èŽ·å–å¥—ç­’æ•°é‡
        /// </summary>
        /// <returns>返回班组、总步骤、套筒数量</returns>
        public WebResponseContent GetSleeveandStep()
        {
            try
@@ -152,115 +158,160 @@
        {
            try
            {
                var allProcesses = BaseDal.QueryData().OrderBy(x => x.SetpNum).ToList(); // æŒ‰ setnum æŽ’序
                var allProcesses = BaseDal.QueryData().OrderBy(x => x.SetpNum).ToList(); // æŒ‰ SetpNum æŽ’序
                Dt_Process proces = _mapper.Map<Dt_Process>(addProcessDTO);
                if (addProcessDTO.id == 0) // æ·»åŠ 
                #region æ·»åŠ 
                if (addProcessDTO.CraftID == 0) // æ·»åŠ 
                {
                    // æ£€æŸ¥æ˜¯å¦å·²ç»å­˜åœ¨ç›¸åŒçš„ setnum
                    if (allProcesses.Any(x => x.SetpNum == addProcessDTO.setpNum && x.CraftType == addProcessDTO.craftstype))
                    {
                        return new WebResponseContent { Status = false, Message = $"步骤 {addProcessDTO.setpNum} å·²å­˜åœ¨ï¼Œä¸èƒ½é‡å¤æ·»åŠ ï¼" };
                    }
                    //// æ£€æŸ¥æ˜¯å¦å·²ç»å­˜åœ¨ç›¸åŒçš„ SetpNum
                    //if (allProcesses.Any(x => x.SetpNum == addProcessDTO.setpNum && x.CraftType == addProcessDTO.craftstype))
                    //{
                    //    return new WebResponseContent { Status = false, Message = $"步骤 {addProcessDTO.setpNum} å·²å­˜åœ¨ï¼Œä¸èƒ½é‡å¤æ·»åŠ ï¼" };
                    //}
                    //// éœ€è¦è°ƒæ•´åŽç»­æ­¥éª¤çš„序号
                    //foreach (var process in allProcesses.Where(x => x.SetpNum >= addProcessDTO.setpNum))
                    //{
                    //    process.SetpNum++; // åŽç§»ä¸€ä½
                    //    BaseDal.UpdateData(process);
                    //}
                    // éœ€è¦è°ƒæ•´åŽç»­æ­¥éª¤çš„序号
                    foreach (var process in allProcesses.Where(x => x.SetpNum >= addProcessDTO.setpNum))
                    {
                        process.SetpNum++; // åŽç§»ä¸€ä½
                        BaseDal.UpdateData(process);
                    }
                    // åˆ›å»ºæ–°å·¥è‰ºæ­¥éª¤
                    var proces = new Dt_Process
                    {
                        Nodal=addProcessDTO.Nodal,
                        SetpNum = addProcessDTO.setpNum,
                        CraftType = addProcessDTO.craftstype,
                        CraftsStep = addProcessDTO.craftsstep,
                        CraftContent = addProcessDTO.craftcontent,
                        Tools = addProcessDTO.tools,
                        Material = addProcessDTO.material,
                        ArticleOneid = addProcessDTO.aritcleoneid,
                        ArticleOne = addProcessDTO.articleone,
                        ArticleTowid = addProcessDTO.aritcletowid,
                        ArticleTwo = addProcessDTO.articletwo,
                        CreateDate = DateTime.Now,
                        //为空就是0,不为空就是1
                        TorqueSum = (string.IsNullOrEmpty(addProcessDTO.articleone) ? 0 : 1) + (string.IsNullOrEmpty(addProcessDTO.articletwo) ? 0 : 1)
                    };
                    var processList = allProcesses.Where(x => x.SetpNum >= addProcessDTO.SetpNum).ToList();
                    if (processList != null)
                    {
                        for (int i = 0; i < processList.Count; i++)
                        {
                            processList[i].SetpNum += 1;
                        }
                    }
                    // åˆ›å»ºæ–°å·¥è‰ºæ­¥éª¤
                    proces.TorqueSum = (string.IsNullOrEmpty(addProcessDTO.ArticleOne) ? 0 : 1) + (string.IsNullOrEmpty(addProcessDTO.ArticleTwo) ? 0 : 1);
                    proces.CreateDate = DateTime.Now;
                    //var proces = new Dt_Process
                    //{
                    //    Nodal = addProcessDTO.Nodal,
                    //    SetpNum = addProcessDTO.setpNum,
                    //    CraftType = addProcessDTO.craftstype,
                    //    CraftsStep = addProcessDTO.craftsstep,
                    //    CraftContent = addProcessDTO.craftcontent,
                    //    Tools = addProcessDTO.tools,
                    //    Material = addProcessDTO.material,
                    //    ArticleOneid = addProcessDTO.aritcleoneid,
                    //    ArticleOne = addProcessDTO.articleone,
                    //    ArticleTowid = addProcessDTO.aritcletowid,
                    //    ArticleTwo = addProcessDTO.articletwo,
                    //    CreateDate = DateTime.Now,
                    //    PointAxisXYZ = addProcessDTO.PointAxisXYZ,
                    //    PointAxisHPB = addProcessDTO.PointAxisHPB,
                    //    //为空就是0,不为空就是1
                    //    TorqueSum = (string.IsNullOrEmpty(addProcessDTO.articleone) ? 0 : 1) + (string.IsNullOrEmpty(addProcessDTO.articletwo) ? 0 : 1)
                    //};
                    _unitOfWorkManage.BeginTran();
                    BaseDal.AddData(proces);
                    BaseDal.UpdateData(processList);
                    _unitOfWorkManage.CommitTran();
                    return new WebResponseContent { Status = true, Data = proces };
                }
                #endregion
                #region ä¿®æ”¹
                else // æ›´æ–°
                {
                    var existingProcess = allProcesses.FirstOrDefault(x => x.CraftID == addProcessDTO.id);
                    var existingProcess = allProcesses.FirstOrDefault(x => x.CraftID == addProcessDTO.CraftID);
                    if (existingProcess == null)
                    {
                        return new WebResponseContent { Status = false, Message = "未找到该工艺步骤,无法更新!" };
                    }
                    int oldSetNum = existingProcess.SetpNum;
                    int newSetNum = addProcessDTO.setpNum;
                    int newSetNum = addProcessDTO.SetpNum;
                    if (oldSetNum == newSetNum) // å¦‚果没改顺序,直接更新其他内容
                    if (existingProcess.SetpNum == addProcessDTO.SetpNum) // å¦‚果没改顺序,直接更新其他内容
                    {
                        existingProcess.Nodal = addProcessDTO.Nodal;
                        existingProcess.CraftType = addProcessDTO.craftstype;
                        existingProcess.CraftsStep = addProcessDTO.craftsstep;
                        existingProcess.CraftContent = addProcessDTO.craftcontent;
                        existingProcess.Tools = addProcessDTO.tools;
                        existingProcess.Material = addProcessDTO.material;
                        existingProcess.ArticleOneid = addProcessDTO.aritcleoneid;
                        existingProcess.ArticleOne = addProcessDTO.articleone;
                        existingProcess.ArticleTowid = addProcessDTO.aritcletowid;
                        existingProcess.ArticleTwo = addProcessDTO.articletwo;
                        existingProcess.CreateDate = DateTime.Now;
                        existingProcess.TorqueSum = (string.IsNullOrEmpty(addProcessDTO.articleone) ? 0 : 1) + (string.IsNullOrEmpty(addProcessDTO.articletwo) ? 0 : 1);
                        proces.TorqueSum = (string.IsNullOrEmpty(addProcessDTO.ArticleOne) ? 0 : 1) + (string.IsNullOrEmpty(addProcessDTO.ArticleTwo) ? 0 : 1);
                        proces.ModifyDate = DateTime.Now;
                        BaseDal.UpdateData(existingProcess);
                        return new WebResponseContent { Status = true, Data = existingProcess };
                        //existingProcess.Nodal = addProcessDTO.Nodal;
                        //existingProcess.CraftType = addProcessDTO.craftstype;
                        //existingProcess.CraftsStep = addProcessDTO.craftsstep;
                        //existingProcess.CraftContent = addProcessDTO.craftcontent;
                        //existingProcess.Tools = addProcessDTO.tools;
                        //existingProcess.Material = addProcessDTO.material;
                        //existingProcess.ArticleOneid = addProcessDTO.aritcleoneid;
                        //existingProcess.ArticleOne = addProcessDTO.articleone;
                        //existingProcess.ArticleTowid = addProcessDTO.aritcletowid;
                        //existingProcess.ArticleTwo = addProcessDTO.articletwo;
                        //existingProcess.CreateDate = DateTime.Now;
                        //existingProcess.TorqueSum = (string.IsNullOrEmpty(addProcessDTO.articleone) ? 0 : 1) + (string.IsNullOrEmpty(addProcessDTO.articletwo) ? 0 : 1);
                        BaseDal.UpdateData(proces);
                        return new WebResponseContent { Status = true, Data = proces };
                    }
                    // æ›´æ–° TorqueSum
                    // è°ƒæ•´é¡ºåº
                    if (newSetNum < oldSetNum) // å‘前移动,后续数据往后移
                    {
                        foreach (var process in allProcesses.Where(x => x.SetpNum >= newSetNum && x.SetpNum < oldSetNum))
                        var processList = allProcesses.Where(x => x.SetpNum >= newSetNum && x.SetpNum < oldSetNum).ToList();
                        for (int i = 0; i < processList.Count; i++)
                        {
                            process.SetpNum++; // åŽç§»ä¸€ä½
                            BaseDal.UpdateData(process);
                            processList[i].SetpNum += 1;
                        }
                        BaseDal.UpdateData(processList);
                        //foreach (var process in allProcesses.Where(x => x.SetpNum >= newSetNum && x.SetpNum < oldSetNum))
                        //{
                        //    process.SetpNum++; // åŽç§»ä¸€ä½
                        //    BaseDal.UpdateData(process);
                        //}
                    }
                    else if (newSetNum > oldSetNum) // å‘后移动,前面数据往前移
                    {
                        foreach (var process in allProcesses.Where(x => x.SetpNum > oldSetNum && x.SetpNum <= newSetNum))
                        var processList = allProcesses.Where(x => x.SetpNum > oldSetNum && x.SetpNum <= newSetNum).ToList();
                        for (int i = 0; i < processList.Count; i++)
                        {
                            process.SetpNum--; // å‰ç§»ä¸€ä½
                            BaseDal.UpdateData(process);
                            processList[i].SetpNum -= 1;
                        }
                        BaseDal.UpdateData(processList);
                        //foreach (var process in allProcesses.Where(x => x.SetpNum > oldSetNum && x.SetpNum <= newSetNum))
                        //{
                        //    process.SetpNum--; // å‰ç§»ä¸€ä½
                        //    BaseDal.UpdateData(process);
                        //}
                    }
                    // æ›´æ–°å½“前步骤的新序号
                    existingProcess.SetpNum = newSetNum;
                    existingProcess.Nodal = addProcessDTO.Nodal;
                    existingProcess.CraftType = addProcessDTO.craftstype;
                    existingProcess.CraftsStep = addProcessDTO.craftsstep;
                    existingProcess.CraftContent = addProcessDTO.craftcontent;
                    existingProcess.Tools = addProcessDTO.tools;
                    existingProcess.Material = addProcessDTO.material;
                    existingProcess.ArticleOneid = addProcessDTO.aritcleoneid;
                    existingProcess.ArticleOne = addProcessDTO.articleone;
                    existingProcess.ArticleTowid = addProcessDTO.aritcletowid;
                    existingProcess.ArticleTwo = addProcessDTO.articletwo;
                    existingProcess.CreateDate = DateTime.Now;
                    proces.SetpNum = newSetNum;
                    proces.TorqueSum = (string.IsNullOrEmpty(addProcessDTO.ArticleOne) ? 0 : 1) + (string.IsNullOrEmpty(addProcessDTO.ArticleTwo) ? 0 : 1);
                    proces.ModifyDate = DateTime.Now;
                    BaseDal.UpdateData(existingProcess);
                    return new WebResponseContent { Status = true, Data = existingProcess };
                    //// æ›´æ–°å½“前步骤的新序号
                    //existingProcess.SetpNum = newSetNum;
                    //existingProcess.Nodal = addProcessDTO.Nodal;
                    //existingProcess.CraftType = addProcessDTO.craftstype;
                    //existingProcess.CraftsStep = addProcessDTO.craftsstep;
                    //existingProcess.CraftContent = addProcessDTO.craftcontent;
                    //existingProcess.Tools = addProcessDTO.tools;
                    //existingProcess.Material = addProcessDTO.material;
                    //existingProcess.ArticleOneid = addProcessDTO.aritcleoneid;
                    //existingProcess.ArticleOne = addProcessDTO.articleone;
                    //existingProcess.ArticleTowid = addProcessDTO.aritcletowid;
                    //existingProcess.ArticleTwo = addProcessDTO.articletwo;
                    //existingProcess.CreateDate = DateTime.Now;
                    BaseDal.UpdateData(proces);
                    return new WebResponseContent { Status = true, Data = proces };
                }
                #endregion
            }
            catch (Exception ex)
            {