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;
@@ -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 = "没有找到" };
                }
                // 3. æ›´æ–°ä»»åŠ¡è¡¨
                task.Taskstatus = 1;//已派工
                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;
                }
                ApplyTemplateToTask(task, existtepm, isNewTemplate, njtakeDTO);
                // æ’入到任务历史表
                // 4. æ’入历史记录
                var history = new Dt_NJtakeHistory
                {
                    taskID = task.id,
@@ -173,89 +148,68 @@
                    confirmTime_DQ = task.confirmTime_DQ
                };
                List<Dt_Putake> listp = new List<Dt_Putake>();
                // å®šä¹‰ä»»åŠ¡æ‹†è§£çš„ç»„ä¿¡æ¯
                var groups = new[]
                // 5. æ’入任务分解数据
                var listp = new List<Dt_Putake>
                {
                    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 }
            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();
                // é€šè¿‡å¾ªçŽ¯åˆ›å»ºå¯¹è±¡
                foreach (var g in groups)
                if (isNewTemplate)
                {
                    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;
        }
        //不保存模板
@@ -484,7 +438,7 @@
            }
        }
        //更具id更新
        //根据id更新
        public WebResponseContent PuNjtake(PutNjtDTO putNjtDTO)
        {
            try
@@ -511,5 +465,15 @@
                return new WebResponseContent { Status = false, Message = "查询失败:" + ex.Message };
            }
        }
    }
}