yanjinhui
2025-03-17 b8510ca5d1e56ef78cd27c45b6bd65a2c13f6b27
ÏîÄ¿´úÂë/WIDESEAWCS_Server Õýʽ/SerialPortService/NjTaskServer.cs
@@ -5,6 +5,8 @@
using System.Net.NetworkInformation;
using System.Text;
using System.Threading.Tasks;
using OfficeOpenXml.FormulaParsing.Excel.Functions.Information;
using SqlSugar;
using StackExchange.Profiling.Internal;
using WIDESEA_ISerialPortRepository;
using WIDESEA_SerialPortRepository;
@@ -28,13 +30,13 @@
        public NjTaskServer(INjTaskRepository BaseDal, ITemplateRepository templateRepository, INJtakeHistoryRepository nJtakeHistoryRepository,
            IPutakeRepository putakeRepository , IUnitOfWorkManage unitOfWorkManage) : base(BaseDal)
            IPutakeRepository putakeRepository, IUnitOfWorkManage unitOfWorkManage) : base(BaseDal)
        {
            _templateRepository = templateRepository;
            _nJtakeHistoryRepository = nJtakeHistoryRepository;
            _putakeRepository = putakeRepository;
            _unitOfWorkManage = unitOfWorkManage;//数据库事务
        }
        public override PageGridData<Dt_NjTask> GetPageData(PageDataOptions options)
@@ -47,34 +49,47 @@
        }
        //保存模板
        /// <summary>
        /// ä¿å­˜æ¨¡æ¿å¹¶æäº¤
        /// æœ‰æ¨¡æ¿id的时候就返回模板的值,更新或选择模板的值并将任务派发下去
        /// æ²¡æœ‰æ¨¡æ¿id的时候,就创建一个模板,共下次使用
        /// </summary>
        /// <param name="njtakeDTO"></param>
        /// <returns></returns>
        public WebResponseContent Submtandsave(NjtakeDTO njtakeDTO)
        {
            try
            {
                //更具模板id来查询是否存在该条数据
            {
                // 1. æŸ¥è¯¢æ¨¡æ¿è¡¨ & ä»»åŠ¡è¡¨
                var existtepm = _templateRepository.QueryFirst(i => i.TemplateID == njtakeDTO.Tpid);
                var Temp = new Dt_Template(); //如果你要更新那么要先找到,否则你这样是创建一个新的对象
                //如果没有模板id那么就之间创建模板
                if (existtepm == null)
                var task = BaseDal.QueryFirst(i => i.NJtaskID == njtakeDTO.Njtakeid);
                if (task == null)
                {
                        Temp.TemplateName = njtakeDTO.takename;
                        Temp.TakeName = njtakeDTO.takename;
                        Temp.jiShuYuan = njtakeDTO.jishuyuan;
                        Temp.gongZhang = njtakeDTO.gongzhang;
                        Temp.zhiJianYuan_Dq = njtakeDTO.zhijianyuan_dq;
                        Temp.zhiJianYuan_Lc = njtakeDTO.zhijianyuan_lc;
                        Temp.zhiJianYuan_Dg = njtakeDTO.zhijianyuan_dg;
                        Temp.liJu_Dg = njtakeDTO.liju_dg;
                        Temp.liJu_Dq = njtakeDTO.liju_dq;
                        Temp.liJu_Lc = njtakeDTO.liju_lc;
                        Temp.fuZhu_Dg = njtakeDTO.fuzhu_dg;
                        Temp.fuZhu_Dq = njtakeDTO.fuzhu_dq;
                        Temp.fuZhu_Lc = njtakeDTO.fuzhu_lc;
                    return new WebResponseContent { Status = false, Message = "没有找到任务" };
                }
                //如果有就在模板上进行更改
                //2.确定是新建模板还是更新已有模板
                bool isNewTemplate = existtepm == null;
                if (isNewTemplate)
                {
                    existtepm = new Dt_Template
                    {
                        TemplateName = njtakeDTO.takename,
                        TakeName = njtakeDTO.takename,
                        jiShuYuan = njtakeDTO.jishuyuan,
                        gongZhang = njtakeDTO.gongzhang,
                        zhiJianYuan_Dq = njtakeDTO.zhijianyuan_dq,
                        zhiJianYuan_Lc = njtakeDTO.zhijianyuan_lc,
                        zhiJianYuan_Dg = njtakeDTO.zhijianyuan_dg,
                        liJu_Dg = njtakeDTO.liju_dg,
                        liJu_Dq = njtakeDTO.liju_dq,
                        liJu_Lc = njtakeDTO.liju_lc,
                        fuZhu_Dg = njtakeDTO.fuzhu_dg,
                        fuZhu_Dq = njtakeDTO.fuzhu_dq,
                        fuZhu_Lc = njtakeDTO.fuzhu_lc
                    };
                }
                else
                {
                    existtepm.zhiJianYuan_Dq = njtakeDTO.zhijianyuan_dq;
@@ -86,55 +101,15 @@
                    existtepm.fuZhu_Dg = njtakeDTO.fuzhu_dg;
                    existtepm.fuZhu_Dq = njtakeDTO.fuzhu_dq;
                    existtepm.fuZhu_Lc = njtakeDTO.fuzhu_lc;
                }
                //先根据id判断是否有该任务
                var task = BaseDal.QueryFirst(i => i.NJtaskID == njtakeDTO.Njtakeid);
                if (task == null)
                {
                    return new WebResponseContent { Status = false, Message = "没有找到" };
                }
                task.Taskstatus = 1;//已派工
                // 3. æ›´æ–°ä»»åŠ¡è¡¨
                task.Taskstatus = 1; // å·²æ´¾å·¥
                task.dispatchTime = DateTime.Now;
                task.startTime = DateTime.Now;
                ApplyTemplateToTask(task, existtepm, isNewTemplate, njtakeDTO);
                if (existtepm == null)
                {
                    task.TakeName = njtakeDTO.takename;
                    task.jiShuYuan = njtakeDTO.jishuyuan;
                    task.zhiJianYuan_DG = njtakeDTO.zhijianyuan_dg;
                    task.zhiJianYuan_DQ = njtakeDTO.zhijianyuan_dq;
                    task.zhiJianYuan_LC = njtakeDTO.zhijianyuan_lc;
                    task.gongZhang = njtakeDTO.gongzhang;
                    task.liJu_DG = njtakeDTO.liju_dg;
                    task.liJu_DQ = njtakeDTO.liju_dq;
                    task.liJu_LC = njtakeDTO.liju_lc;
                    task.fuZhu_DG = njtakeDTO.fuzhu_dg;
                    task.fuZhu_DQ = njtakeDTO.fuzhu_dq;
                    task.fuZhu_LC = njtakeDTO.fuzhu_lc;
                    task.dispatchTime = DateTime.Now;
                    task.startTime = DateTime.Now;
                }
                else
                {
                    task.TakeName = existtepm.TakeName; //从模板中拿值
                    task.jiShuYuan = existtepm.jiShuYuan;
                    task.zhiJianYuan_DG = njtakeDTO.zhijianyuan_dg;
                    task.zhiJianYuan_DQ = njtakeDTO.zhijianyuan_dq;
                    task.zhiJianYuan_LC = njtakeDTO.zhijianyuan_lc;
                    task.gongZhang = existtepm.gongZhang;
                    task.liJu_DG = njtakeDTO.liju_dg;
                    task.liJu_DQ = njtakeDTO.liju_dq;
                    task.liJu_LC = njtakeDTO.liju_lc;
                    task.fuZhu_DG = njtakeDTO.fuzhu_dg;
                    task.fuZhu_DQ = njtakeDTO.fuzhu_dq;
                    task.fuZhu_LC = njtakeDTO.fuzhu_lc;
                    task.dispatchTime = DateTime.Now;
                    task.startTime = DateTime.Now;
                }
                // æ’入到任务历史表
                // 4. æ’入历史记录
                var history = new Dt_NJtakeHistory
                {
                    taskID = task.id,
@@ -155,7 +130,7 @@
                    liJu_DQ = task.liJu_DQ,
                    fuZhu_LC = task.fuZhu_LC,
                    fuZhu_DQ = task.fuZhu_DQ,
                    fuZhu_DG=task.fuZhu_DG,
                    fuZhu_DG = task.fuZhu_DG,
                    createTime = task.createTime,
                    dispatchTime = task.dispatchTime,
                    startTime = task.startTime,
@@ -173,89 +148,68 @@
                    confirmTime_DQ = task.confirmTime_DQ
                };
                // 5. æ’入任务分解数据
                var listp = new List<Dt_Putake>
        {
            new Dt_Putake { Njtakeid = task.NJtaskID, takename = task.TakeName, jishuyuan = task.jiShuYuan, gonzhang = task.gongZhang, Grouptype = "电气", Pustatus = 0, zhijianyuan = task.zhiJianYuan_DQ, lijuzouyeyuan = task.liJu_DQ, fuzyuan = task.fuZhu_DQ, Dispatchtime = task.dispatchTime },
            new Dt_Putake { Njtakeid = task.NJtaskID, takename = task.TakeName, jishuyuan = task.jiShuYuan, gonzhang = task.gongZhang, Grouptype = "机械", Pustatus = 0, zhijianyuan = task.zhiJianYuan_LC, lijuzouyeyuan = task.liJu_LC, fuzyuan = task.fuZhu_LC, Dispatchtime = task.dispatchTime },
            new Dt_Putake { Njtakeid = task.NJtaskID, takename = task.TakeName, jishuyuan = task.jiShuYuan, gonzhang = task.gongZhang, Grouptype = "地沟", Pustatus = 0, zhijianyuan = task.zhiJianYuan_DG, lijuzouyeyuan = task.liJu_DG, fuzyuan = task.fuZhu_DG, Dispatchtime = task.dispatchTime }
        };
                // 6. äº‹åŠ¡æäº¤
                _unitOfWorkManage.BeginTran();
                List<Dt_Putake> listp = new List<Dt_Putake>();
                // å®šä¹‰ä»»åŠ¡æ‹†è§£çš„ç»„ä¿¡æ¯
                var groups = new[]
                if (isNewTemplate)
                {
                    new { Grouptype= "电气",Pustatus=0,Zhijianyuan = task.zhiJianYuan_DQ, Lijuzouyeyuan = task.liJu_DQ, Fuzyuan = task.fuZhu_DQ },
                    new { Grouptype = "机械",Pustatus=0, Zhijianyuan = task.zhiJianYuan_LC, Lijuzouyeyuan = task.liJu_LC, Fuzyuan = task.fuZhu_LC },
                    new { Grouptype = "地沟",Pustatus=0, Zhijianyuan = task.zhiJianYuan_DG, Lijuzouyeyuan = task.liJu_DG, Fuzyuan = task.fuZhu_DG }
                 };
                // é€šè¿‡å¾ªçŽ¯åˆ›å»ºå¯¹è±¡
                foreach (var g in groups)
                {
                    listp.Add(new Dt_Putake
                    {
                        Njtakeid = task.NJtaskID,
                        takename = task.TakeName,
                        jishuyuan = task.jiShuYuan,
                        gonzhang = task.gongZhang,
                        zhijianyuan = g.Zhijianyuan,
                        lijuzouyeyuan = g.Lijuzouyeyuan,
                        fuzyuan = g.Fuzyuan,
                       Grouptype=g.Grouptype,
                       Pustatus=g.Pustatus,
                       Dispatchtime=task.dispatchTime,
                    });
                }
                _unitOfWorkManage.BeginTran();//开启事务(在增删改查前,业务后)
                if (existtepm == null)//如果不存在id
                {
                    _templateRepository.AddData(Temp);//添加模板
                    //db.Insertable(task).ExecuteCommand();
                    BaseDal.UpdateData(task);//将模板表中修改的插入进任务表中
                    // db.Insertable(history).ExecuteCommand();
                    _nJtakeHistoryRepository.AddData(history);// æ’入历史记录
                    _putakeRepository.AddData(listp);//下发三条任务分解表数据
                  //  return new WebResponseContent { Status = true, Message = "下发了任务并保存了模板"};
                    _templateRepository.AddData(existtepm);
                }
                else
                {
                    //获取并返回插入记录的自增主键值,该值被存储在 templatID å˜é‡ä¸­
                    //int templatID = _templateRepository.Db.Insertable(Temp).ExecuteReturnIdentity();
                    //task.tempID = templatID;
                    //修改模板表
                    _templateRepository.UpdateData(existtepm);
                    //将模板号插入这条任务表中
                    task.tempID = existtepm.TemplateID;
                    BaseDal.UpdateData(task);//将任务表中的人员插入进任务表中
                    _nJtakeHistoryRepository.AddData(history);// æ’入历史记录
                    _putakeRepository.AddData(listp);//下发三条任务分解表数据
                }
                _unitOfWorkManage.CommitTran();//提交事务
                BaseDal.UpdateData(task);
                _nJtakeHistoryRepository.AddData(history);
                _putakeRepository.AddData(listp);
                _unitOfWorkManage.CommitTran();
                return new WebResponseContent { Status = true, Data = task };
            }
            catch (Exception ex)
            {
                //db.Ado.RollbackTran(); // å›žæ»šäº‹åŠ¡
                _unitOfWorkManage.RollbackTran();
                return new WebResponseContent { Status = false, Message = "添加失败:" + ex.Message };
            }
        }
        /// <summary>
        /// ä»»åŠ¡è¡¨åº”ç”¨æ¨¡æ¿ä¿¡æ¯
        /// </summary>
        private void ApplyTemplateToTask(Dt_NjTask task, Dt_Template template, bool isNewTemplate, NjtakeDTO njtakeDTO)
        {
            if (isNewTemplate) //模板id是否有,默认为null
            {
                task.TakeName = njtakeDTO.takename;
                task.gongZhang = njtakeDTO.gongzhang;
            }
            else
            {
                task.TakeName = template.TakeName;
                task.gongZhang = template.gongZhang;
            }
            task.jiShuYuan = template.jiShuYuan;
            task.zhiJianYuan_DG = njtakeDTO.zhijianyuan_dg;
            task.zhiJianYuan_DQ = njtakeDTO.zhijianyuan_dq;
            task.zhiJianYuan_LC = njtakeDTO.zhijianyuan_lc;
            task.liJu_DG = njtakeDTO.liju_dg;
            task.liJu_DQ = njtakeDTO.liju_dq;
            task.liJu_LC = njtakeDTO.liju_lc;
            task.fuZhu_DG = njtakeDTO.fuzhu_dg;
            task.fuZhu_DQ = njtakeDTO.fuzhu_dq;
            task.fuZhu_LC = njtakeDTO.fuzhu_lc;
        }
        //不保存模板
@@ -263,7 +217,7 @@
        {
            try
            {
                //先根据id判断是否有该任务
@@ -277,20 +231,20 @@
                task.TakeName = notempDTO.takename;
                    task.jiShuYuan = notempDTO.jishuyuan;
                    task.zhiJianYuan_DG = notempDTO.zhijianyuan_dg;
                    task.zhiJianYuan_DQ = notempDTO.zhijianyuan_dq;
                    task.zhiJianYuan_LC = notempDTO.zhijianyuan_lc;
                    task.gongZhang = notempDTO.gongzhang;
                    task.liJu_DG = notempDTO.liju_dg;
                    task.liJu_DQ = notempDTO.liju_dq;
                    task.liJu_LC = notempDTO.liju_lc;
                    task.fuZhu_DG = notempDTO.fuzhu_dg;
                    task.fuZhu_DQ = notempDTO.fuzhu_dq;
                    task.fuZhu_LC = notempDTO.fuzhu_lc;
                    task.dispatchTime=DateTime.Now;
                    task.startTime = DateTime.Now;
                task.jiShuYuan = notempDTO.jishuyuan;
                task.zhiJianYuan_DG = notempDTO.zhijianyuan_dg;
                task.zhiJianYuan_DQ = notempDTO.zhijianyuan_dq;
                task.zhiJianYuan_LC = notempDTO.zhijianyuan_lc;
                task.gongZhang = notempDTO.gongzhang;
                task.liJu_DG = notempDTO.liju_dg;
                task.liJu_DQ = notempDTO.liju_dq;
                task.liJu_LC = notempDTO.liju_lc;
                task.fuZhu_DG = notempDTO.fuzhu_dg;
                task.fuZhu_DQ = notempDTO.fuzhu_dq;
                task.fuZhu_LC = notempDTO.fuzhu_lc;
                task.dispatchTime = DateTime.Now;
                task.startTime = DateTime.Now;
                // æ’入到任务历史表
@@ -367,14 +321,14 @@
                _unitOfWorkManage.BeginTran();//开启事务(在增删改查前,业务后)
                    BaseDal.UpdateData(task);//将模板表中修改的插入进任务表中
                BaseDal.UpdateData(task);//将模板表中修改的插入进任务表中
                    // db.Insertable(history).ExecuteCommand();
                    _nJtakeHistoryRepository.AddData(history);// æ’入历史记录
                // db.Insertable(history).ExecuteCommand();
                _nJtakeHistoryRepository.AddData(history);// æ’入历史记录
                    _putakeRepository.AddData(listp);//下发三条任务分解表数据
                                                     //  return new WebResponseContent { Status = true, Message = "下发了任务并保存了模板"};
                _putakeRepository.AddData(listp);//下发三条任务分解表数据
                                                 //  return new WebResponseContent { Status = true, Message = "下发了任务并保存了模板"};
                _unitOfWorkManage.CommitTran();//提交事务(增删改查后)
                return new WebResponseContent { Status = true, Data = task };
            }
@@ -423,7 +377,7 @@
                {
                    CustomizeID = addNjtDTO.NJtaskID.ToString();
                }
                if (addNjtDTO.Creater=="")
                if (addNjtDTO.Creater == "")
                {
                    addNjtDTO.Creater = "admin";
                }
@@ -438,17 +392,17 @@
                    coachNum = addNjtDTO.coachNum,
                    bogie = addNjtDTO.bogie,
                    processDept = addNjtDTO.processDept,
                    jiShuYuan=addNjtDTO.jiShuYuan,
                    zhiJianYuan_LC=addNjtDTO.zhiJianYuan_LC,
                    zhiJianYuan_DG=addNjtDTO.zhiJianYuan_DG,
                    zhiJianYuan_DQ=addNjtDTO.zhiJianYuan_DQ,
                    gongZhang=addNjtDTO.gongZhang,
                    liJu_LC=addNjtDTO.liJu_LC,
                    liJu_DG=addNjtDTO.liJu_DG,
                    liJu_DQ=addNjtDTO.liJu_DQ,
                    fuZhu_LC=addNjtDTO.fuZhu_LC,
                    fuZhu_DG=addNjtDTO.fuZhu_DG,
                    fuZhu_DQ=addNjtDTO.fuZhu_DQ,
                    jiShuYuan = addNjtDTO.jiShuYuan,
                    zhiJianYuan_LC = addNjtDTO.zhiJianYuan_LC,
                    zhiJianYuan_DG = addNjtDTO.zhiJianYuan_DG,
                    zhiJianYuan_DQ = addNjtDTO.zhiJianYuan_DQ,
                    gongZhang = addNjtDTO.gongZhang,
                    liJu_LC = addNjtDTO.liJu_LC,
                    liJu_DG = addNjtDTO.liJu_DG,
                    liJu_DQ = addNjtDTO.liJu_DQ,
                    fuZhu_LC = addNjtDTO.fuZhu_LC,
                    fuZhu_DG = addNjtDTO.fuZhu_DG,
                    fuZhu_DQ = addNjtDTO.fuZhu_DQ,
                    Taskstatus = 0,
                    createTime = DateTime.Now,
                };
@@ -461,12 +415,12 @@
            catch (Exception ex)
            {
                return new WebResponseContent { Status = false, Message = "失败" + ex.Message,Code= 400 };
                return new WebResponseContent { Status = false, Message = "失败" + ex.Message, Code = 400 };
            }
        }
        //查看详情 è¿”回整个表的数据(更具id)
        public WebResponseContent GetNjdetail(string  njtaskID)
        public WebResponseContent GetNjdetail(string njtaskID)
        {
            try
            {
@@ -476,40 +430,50 @@
                    return new WebResponseContent { Status = false, Message = "没有找到" };
                }
                return new WebResponseContent { Status = true,Data = datatail };
                return new WebResponseContent { Status = true, Data = datatail };
            }
            catch (Exception ex)
            {
                return new WebResponseContent() { Status = false, Message ="失败"+ ex.Message };
                return new WebResponseContent() { Status = false, Message = "失败" + ex.Message };
            }
        }
        //更具id更新
        //根据id更新
        public WebResponseContent PuNjtake(PutNjtDTO putNjtDTO)
        {
            try
            {
                var putake = BaseDal.QueryData(x => x.id==putNjtDTO.id).FirstOrDefault();
                var putake = BaseDal.QueryData(x => x.id == putNjtDTO.id).FirstOrDefault();
                if (putake == null)
                {
                    return new WebResponseContent { Status = false, Message = "没有找到" };
                }
                putake.trainKind= putNjtDTO.trainkind;
                putake.trainNum= putNjtDTO.trainNum;
                putake.track=putNjtDTO.track;
                putake.coachNum=putake.coachNum;
                putake.bogie=putNjtDTO.bogie;
                putake.processDept=putake.processDept;
                putake.trainKind = putNjtDTO.trainkind;
                putake.trainNum = putNjtDTO.trainNum;
                putake.track = putNjtDTO.track;
                putake.coachNum = putake.coachNum;
                putake.bogie = putNjtDTO.bogie;
                putake.processDept = putake.processDept;
                BaseDal.UpdateData(putake);
                return new WebResponseContent { Status = true, Data = putake };
            }
            catch (Exception ex)
            {
                return new WebResponseContent { Status = false, Message = "查询失败:" + ex.Message };
            }
        }
    }
}