yanjinhui
2025-03-12 0a430c14f3e3ceb4ba63462c4f2c92768fc79e87
ÏîÄ¿´úÂë/WIDESEAWCS_Server Õýʽ/SerialPortService/ProcessServer.cs
@@ -6,6 +6,7 @@
using System.Threading.Tasks;
using SqlSugar;
using WIDESEA_ISerialPortRepository;
using WIDESEA_SerialPortRepository;
using WIDESEAWCS_Core;
using WIDESEAWCS_Core.BaseRepository;
using WIDESEAWCS_Core.BaseServices;
@@ -16,15 +17,25 @@
namespace WIDESEAWCS_TaskInfoService
{
    public class ProcessServer : ServiceBase<Dt_Process, IProcessRepository>, IProcessServer
    {
    {
        private IPutakeRepository _putakeRepository;
        private IUnitOfWorkManage _unitOfWorkManage;
        public ProcessServer(IProcessRepository BaseDal, IUnitOfWorkManage unitOfWorkManage) : base(BaseDal)
        private ITorqueOpRepository _torqueOpRepository;
        public ProcessServer(IProcessRepository BaseDal, IUnitOfWorkManage unitOfWorkManage, IPutakeRepository putakeRepository, ITorqueOpRepository torqueOpRepository) : base(BaseDal)
        {
            _unitOfWorkManage=unitOfWorkManage;
            _putakeRepository = putakeRepository;
            _unitOfWorkManage = unitOfWorkManage;
            _torqueOpRepository = torqueOpRepository;
        }
        public override PageGridData<Dt_Process> GetPageData(PageDataOptions options)
        {
            OrderByParameters = new Dictionary<string, OrderByType>
            {
                { nameof(Dt_Process.ArticleOne), OrderByType.Asc },//按什么字段排序
            };
            return base.GetPageData(options);
        }
        public WebResponseContent GetProcess(string gruop)
        {
@@ -41,7 +52,7 @@
                }
                else
                {
                    return new WebResponseContent{ Status = false, Message = "数据为空"};
                    return new WebResponseContent { Status = false, Message = "数据为空" };
                }
            }
@@ -61,10 +72,10 @@
                    .GroupBy(x => x.CraftType) // æŒ‰ CraftType åˆ†ç»„
                    .Select(g => new
                    {
                       maxNodal = g.Max(a=>a.Nodal),
                        sumTorqueSum = g.Sum(a=>a.TorqueSum)
                        maxNodal = g.Max(a => a.Nodal),
                        sumTorqueSum = g.Sum(a => a.TorqueSum)
                    }).ToList();
                _unitOfWorkManage.CommitTran() ;
                _unitOfWorkManage.CommitTran();
                return new WebResponseContent { Status = true, Data = result };
            }
            catch (Exception ex)
@@ -80,20 +91,20 @@
            try
            {
                var proces = new Dt_Process();
                proces.Nodal=addProcessDTO.nodal;
                proces.CraftType=addProcessDTO.craftstype;
                proces.CraftsStep=addProcessDTO.craftsstep;
                proces.CraftContent=addProcessDTO.craftcontent;
                proces.Nodal = addProcessDTO.nodal;
                proces.CraftType = addProcessDTO.craftstype;
                proces.CraftsStep = addProcessDTO.craftsstep;
                proces.CraftContent = addProcessDTO.craftcontent;
                proces.TorqueSum = addProcessDTO.sleeveNum;
                proces.Tools=addProcessDTO.tools;
                _unitOfWorkManage.BeginTran() ;
                proces.Tools = addProcessDTO.tools;
                _unitOfWorkManage.BeginTran();
                BaseDal.AddData(proces);
                _unitOfWorkManage.CommitTran();
                return new WebResponseContent { Status = true,Data=proces};
                return new WebResponseContent { Status = true, Data = proces };
            }
            catch (Exception ex)
            {
                _unitOfWorkManage.RollbackTran() ;
                _unitOfWorkManage.RollbackTran();
                return new WebResponseContent { Status = false, Message = "查询失败:" + ex.Message };
            }
        }
@@ -103,9 +114,9 @@
            try
            {
                var proces = BaseDal.QueryData(x => x.CraftID == addProcessDTO.id).FirstOrDefault();
                    if (proces == null)
                if (proces == null)
                {
                    return new WebResponseContent { Status = false,Message="没有找到"};
                    return new WebResponseContent { Status = false, Message = "没有找到" };
                }
                proces.Nodal = addProcessDTO.nodal;
                proces.CraftType = addProcessDTO.craftstype;
@@ -125,41 +136,62 @@
            }
        }
        public WebResponseContent Getcircuit(string groups)
        public WebResponseContent Getcircuit(string group, string takeid)
        {
            try
            {
                List<Dt_Process> results = new List<Dt_Process>();
                int step = 1;
                ///如果这个存值表中没有步骤一这么搞?我这么显示给前端看
                while (true)
                // å…ˆæŸ¥åˆ°è¿™æ¡ä»»åŠ¡
                var putake = _putakeRepository.QueryData(x => x.Njtakeid == takeid && x.Grouptype == group).OrderBy(x => x.Dispatchtime).FirstOrDefault();
                if (putake==null)
                {
                    // æŸ¥è¯¢å½“前步骤的数据
                    var circuit = BaseDal.QueryData(x => x.CraftType == groups && x.SetpNum == step)
                                         .FirstOrDefault();
                    // å¦‚果查询结果为空,则停止循环
                    if (circuit == null)
                    {
                        break;
                    }
                    // åŠ å…¥ç»“æžœåˆ—è¡¨
                    results.Add(circuit);
                    // é€’增 step,继续查询下一个步骤
                    step++;
                    return new WebResponseContent { Status = false, Message = "没有找到" };
                }
                //获取到当前完成的步骤
                var nowNum = _torqueOpRepository.QueryData(x => x.GroupOp == group && x.TakeId == takeid).Max(x => x.ProcessSte);
                return new WebResponseContent { Status = true, Data = results };
                //根据分组和步骤找到该条数据
                var process = BaseDal.QueryData(x => x.CraftType == group&&x.SetpNum== nowNum).FirstOrDefault();
                //返回当前工艺的最大步骤
                var maxproce = BaseDal.QueryData(x => x.CraftType == group).Max(x => x.SetpNum);
                //一共要有多少条数据(目标数量)
                int TargetCount = process.TorqueOneQuantity + process.TorqueTwoQuantity;
                // æŸ¥è¯¢å½“前步骤的 TorqueOp è®°å½•,匹配 ProcessSte和组,任务号,检查是否达到要求(实际数量)
                int practiceCount = _torqueOpRepository.QueryData(x =>  x.GroupOp == group&&x.TakeId== takeid).Count();
                if (practiceCount < TargetCount)
                {
                    return new WebResponseContent { Status = false, Message = "没有完成当前步骤",Data= process };
                }
                if (maxproce== nowNum)
                {
                    return new WebResponseContent { Status = false, Message = "你完成了当前作业" };
                }
                int num = nowNum + 1;
                var nex = BaseDal.QueryFirst(x => x.CraftType == group && x.SetpNum == num);
                return new WebResponseContent { Status = true, Data = nex };
            }
            catch (Exception ex)
            {
                return new WebResponseContent { Status = false, Message = "查询失败:" + ex.Message };
            }
        }
    }
       
    }
}