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 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 WebResponseContent Fuzzyquery(string trainkind, string trainnum, string track, string coachnum, string bogie, string processdept) { try { var query = BaseDal.Db.Queryable(); // 生成 OR 查询条件 即任意字段都可以查看 if (!string.IsNullOrEmpty(trainkind) || !string.IsNullOrEmpty(trainnum) || !string.IsNullOrEmpty(track) || !string.IsNullOrEmpty(coachnum) || !string.IsNullOrEmpty(bogie) || !string.IsNullOrEmpty(processdept)) { query = query.Where(x => (!string.IsNullOrEmpty(trainkind) && x.trainKind.Contains(trainkind)) || (!string.IsNullOrEmpty(trainnum) && x.trainNum.Contains(trainnum)) || (!string.IsNullOrEmpty(track) && x.track.Contains(track)) || (!string.IsNullOrEmpty(coachnum) && x.coachNum.Contains(coachnum)) || (!string.IsNullOrEmpty(bogie) && x.bogie.Contains(bogie)) || (!string.IsNullOrEmpty(processdept) && x.processDept.Contains(processdept)) ); } var result = query.ToList(); // 执行查询 .ToList()查询列表, .InSingle(1); // 根据查询单个实体 return new WebResponseContent { Status = true, Data = result }; } catch (Exception ex) { return new WebResponseContent { Status = false, Message = "查看失败:" + ex.Message }; } } //保存模板 public WebResponseContent Submtandsave(NjtakeDTO njtakeDTO) { 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,例如 KH030601, KH030602... string CustomizeID = $"{todayPrefix}{nextNumber:D2}"; #endregion //更具模板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_dq; 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_dq; 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 = "已派工"; if (existtepm == null) { task.NJtaskID = CustomizeID; 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; } 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; } // 插入到任务历史表 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="待领筒",Zhijianyuan = task.zhiJianYuan_DQ, Lijuzouyeyuan = task.liJu_DQ, Fuzyuan = task.fuZhu_DQ }, new { Grouptype = "机械",Pustatus="待领筒", Zhijianyuan = task.zhiJianYuan_LC, Lijuzouyeyuan = task.liJu_LC, Fuzyuan = task.fuZhu_LC }, new { Grouptype = "地沟",Pustatus="待领筒", 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 { #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,例如 KH030601, KH030602... string CustomizeID = $"{todayPrefix}{nextNumber:D2}"; #endregion //先根据id判断是否有该任务 var task = BaseDal.QueryFirst(i => i.NJtaskID == notempDTO.Njtakeid); if (task == null) { return new WebResponseContent { Status = false, Message = "没有找到" }; } task.Taskstatus = "已派工"; task.NJtaskID = CustomizeID; 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.NJtaskID= // 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="待领筒",Zhijianyuan = task.zhiJianYuan_DQ, Lijuzouyeyuan = task.liJu_DQ, Fuzyuan = task.fuZhu_DQ }, new { Grouptype = "机械",Pustatus="待领筒", Zhijianyuan = task.zhiJianYuan_LC, Lijuzouyeyuan = task.liJu_LC, Fuzyuan = task.fuZhu_LC }, new { Grouptype = "地沟",Pustatus="待领筒", 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 }; } } } }