using System; using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; using System.Linq; using System.Net.NetworkInformation; using System.Text; using System.Threading.Tasks; using StackExchange.Profiling.Internal; using WIDESEA_ISerialPortRepository; using WIDESEA_SerialPortRepository; using WIDESEAWCS_Core; using WIDESEAWCS_Core.BaseRepository; using WIDESEAWCS_Core.BaseServices; using WIDESEAWCS_DTO.SerialPort; using WIDESEAWCS_ITaskInfoRepository; using WIDESEAWCS_ITaskInfoService; using WIDESEAWCS_Model.Models; namespace WIDESEAWCS_TaskInfoService { public class NjTaskServer : ServiceBase, INjTaskServer { private readonly ITemplateRepository _templateRepository; private readonly INJtakeHistoryRepository _nJtakeHistoryRepository; private readonly IPutakeRepository _putakeRepository; private IUnitOfWorkManage _unitOfWorkManage; public NjTaskServer(INjTaskRepository BaseDal, ITemplateRepository templateRepository, INJtakeHistoryRepository nJtakeHistoryRepository, IPutakeRepository putakeRepository , IUnitOfWorkManage unitOfWorkManage) : base(BaseDal) { _templateRepository = templateRepository; _nJtakeHistoryRepository = nJtakeHistoryRepository; _putakeRepository = putakeRepository; _unitOfWorkManage = unitOfWorkManage;//数据库事务 } public override PageGridData GetPageData(PageDataOptions options) { OrderByParameters = new Dictionary { { nameof(Dt_NjTask.trainKind),SqlSugar.OrderByType.Asc } }; return base.GetPageData(options); } //保存模板 public WebResponseContent Submtandsave(NjtakeDTO njtakeDTO) { try { //更具模板id来查询是否存在该条数据 var existtepm = _templateRepository.QueryFirst(i => i.TemplateID == njtakeDTO.Tpid); var Temp = new Dt_Template(); //如果你要更新那么要先找到,否则你这样是创建一个新的对象 //如果没有模板id那么就之间创建模板 if (existtepm == 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; } //如果有就在模板上进行更改 else { existtepm.zhiJianYuan_Dq = njtakeDTO.zhijianyuan_dq; existtepm.zhiJianYuan_Lc = njtakeDTO.zhijianyuan_lc; existtepm.zhiJianYuan_Dg = njtakeDTO.zhijianyuan_dg; existtepm.liJu_Dg = njtakeDTO.liju_dg; existtepm.liJu_Dq = njtakeDTO.liju_dq; existtepm.liJu_Lc = njtakeDTO.liju_lc; 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;//已派工 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; } // 插入到任务历史表 var history = new Dt_NJtakeHistory { taskID = task.id, trainKind = task.trainKind, TakeName = task.TakeName, trainNum = task.trainNum, track = task.track, coachNum = task.coachNum, bogie = task.bogie, processDept = task.processDept, jiShuYuan = task.jiShuYuan, zhiJianYuan_LC = task.zhiJianYuan_LC, zhiJianYuan_DG = task.zhiJianYuan_DG, zhiJianYuan_DQ = task.zhiJianYuan_DQ, gongZhang = task.gongZhang, liJu_LC = task.liJu_LC, liJu_DG = task.liJu_DG, liJu_DQ = task.liJu_DQ, fuZhu_LC = task.fuZhu_LC, fuZhu_DQ = task.fuZhu_DQ, fuZhu_DG=task.fuZhu_DG, createTime = task.createTime, dispatchTime = task.dispatchTime, startTime = task.startTime, startTime_LC = task.startTime_LC, endTime_LC = task.endTime_LC, startTime_DG = task.startTime_DG, endTime_DG = task.endTime_DG, startTime_DQ = task.startTime_DQ, endTime_DQ = task.endTime_DQ, endTime = task.endTime, confirmTime_JS = task.confirmTime_JS, confirmTime_GZ = task.confirmTime_GZ, confirmTime_LC = task.confirmTime_LC, confirmTime_DG = task.confirmTime_DG, confirmTime_DQ = task.confirmTime_DQ }; List listp = new List(); // 定义任务拆解的组信息 var groups = new[] { 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 = "下发了任务并保存了模板"}; } 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();//提交事务 return new WebResponseContent { Status = true, Data = task }; } catch (Exception ex) { //db.Ado.RollbackTran(); // 回滚事务 _unitOfWorkManage.RollbackTran(); return new WebResponseContent { Status = false, Message = "添加失败:" + ex.Message }; } } //不保存模板 public WebResponseContent Submit(NotempDTO notempDTO) { try { //先根据id判断是否有该任务 var task = BaseDal.QueryFirst(i => i.NJtaskID == notempDTO.Njtakeid); if (task == null) { return new WebResponseContent { Status = false, Message = "没有找到" }; } task.Taskstatus = 1;//已派工 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; // 插入到任务历史表 var history = new Dt_NJtakeHistory { taskID = task.id, trainKind = task.trainKind, TakeName = task.TakeName, trainNum = task.trainNum, track = task.track, coachNum = task.coachNum, bogie = task.bogie, processDept = task.processDept, jiShuYuan = task.jiShuYuan, zhiJianYuan_LC = task.zhiJianYuan_LC, zhiJianYuan_DG = task.zhiJianYuan_DG, zhiJianYuan_DQ = task.zhiJianYuan_DQ, gongZhang = task.gongZhang, liJu_LC = task.liJu_LC, liJu_DG = task.liJu_DG, liJu_DQ = task.liJu_DQ, fuZhu_LC = task.fuZhu_LC, fuZhu_DQ = task.fuZhu_DQ, fuZhu_DG = task.fuZhu_DG, createTime = task.createTime, dispatchTime = task.dispatchTime, startTime = task.startTime, startTime_LC = task.startTime_LC, endTime_LC = task.endTime_LC, startTime_DG = task.startTime_DG, endTime_DG = task.endTime_DG, startTime_DQ = task.startTime_DQ, endTime_DQ = task.endTime_DQ, endTime = task.endTime, confirmTime_JS = task.confirmTime_JS, confirmTime_GZ = task.confirmTime_GZ, confirmTime_LC = task.confirmTime_LC, confirmTime_DG = task.confirmTime_DG, confirmTime_DQ = task.confirmTime_DQ }; List listp = new List(); // 定义任务拆解的组信息 var groups = new[] { 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();//开启事务(在增删改查前,业务后) BaseDal.UpdateData(task);//将模板表中修改的插入进任务表中 // db.Insertable(history).ExecuteCommand(); _nJtakeHistoryRepository.AddData(history);// 插入历史记录 _putakeRepository.AddData(listp);//下发三条任务分解表数据 // return new WebResponseContent { Status = true, Message = "下发了任务并保存了模板"}; _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 }; } } //添加信息 public WebResponseContent AddNjtake(AddNjtDTO addNjtDTO) { try { #region 自定义命名给Njtaskid // 获取今天的日期部分,如 "KH0306" string todayPrefix = $"KH{DateTime.Now:MMdd}"; // 查询数据库,找出当天最大的 NJtaskID var lastTask = BaseDal.QueryData(i => i.NJtaskID.StartsWith(todayPrefix)) .OrderByDescending(i => i.NJtaskID) .FirstOrDefault(); int nextNumber = 1; // 默认编号 if (lastTask != null) { // 获取后两位分钟编号 string lastNumberPart = lastTask.NJtaskID.Substring(6, 2); if (int.TryParse(lastNumberPart, out int lastNumber)) { nextNumber = lastNumber + 1; } } // 生成 NJtaskID,例如 KH0306001, KH0306002... string CustomizeID = $"{todayPrefix}{nextNumber:D3}";//D3表示 3位数,不足补0 #endregion var addnj = new Dt_NjTask() { NJtaskID = CustomizeID, trainKind = addNjtDTO.trainKind, trainNum = addNjtDTO.trainNum, track = addNjtDTO.track, 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, Taskstatus = 0, createTime = DateTime.Now, }; _unitOfWorkManage.BeginTran(); BaseDal.AddData(addnj); _unitOfWorkManage.CommitTran(); return new WebResponseContent { Status = true, Data = addnj }; } catch (Exception ex) { _unitOfWorkManage.RollbackTran(); return new WebResponseContent { Status = false, Message = "失败" + ex.Message }; } } //查看详情 返回整个表的数据(更具id) public WebResponseContent GetNjdetail(string njtaskID) { try { _unitOfWorkManage.BeginTran(); var datatail = BaseDal.QueryData(x => x.NJtaskID == njtaskID).FirstOrDefault(); if (datatail == null) { return new WebResponseContent { Status = false, Message = "没有找到" }; } _unitOfWorkManage.CommitTran(); return new WebResponseContent { Status = true,Data = datatail }; } catch (Exception ex) { _unitOfWorkManage.RollbackTran(); return new WebResponseContent() { Status = false, Message ="失败"+ ex.Message }; } } //更具id更新 public WebResponseContent PuNjtake(PutNjtDTO putNjtDTO) { try { 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; _unitOfWorkManage.BeginTran(); BaseDal.UpdateData(putake); _unitOfWorkManage.CommitTran(); return new WebResponseContent { Status = true, Data = putake }; } catch (Exception ex) { _unitOfWorkManage.RollbackTran(); return new WebResponseContent { Status = false, Message = "查询失败:" + ex.Message }; } } } }