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 OfficeOpenXml.FormulaParsing.Excel.Functions.Information;
|
using SqlSugar;
|
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<Dt_NjTask, INjTaskRepository>, 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<Dt_NjTask> GetPageData(PageDataOptions options)
|
{
|
OrderByParameters = new Dictionary<string, SqlSugar.OrderByType> {
|
{
|
nameof(Dt_NjTask.trainKind),SqlSugar.OrderByType.Asc
|
} };
|
return base.GetPageData(options);
|
}
|
|
|
/// <summary>
|
/// 保存模板并提交
|
/// 有模板id的时候就返回模板的值,更新或选择模板的值并将任务派发下去
|
/// 没有模板id的时候,就创建一个模板,共下次使用
|
/// </summary>
|
/// <param name="njtakeDTO"></param>
|
/// <returns></returns>
|
public WebResponseContent Submtandsave(NjtakeDTO njtakeDTO)
|
{
|
try
|
{
|
// 1. 查询模板表 & 任务表
|
var existtepm = _templateRepository.QueryFirst(i => i.TemplateID == njtakeDTO.Tpid);
|
var task = BaseDal.QueryFirst(i => i.NJtaskID == njtakeDTO.Njtakeid);
|
|
if (task == null)
|
{
|
return new WebResponseContent { Status = false, Message = "没有找到任务" };
|
}
|
|
//2.确定是新建模板还是更新已有模板
|
bool isNewTemplate = existtepm == null;
|
if (existtepm == null)
|
{
|
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,
|
Creater = "admin",
|
CreateDate = DateTime.Now
|
};
|
}
|
else
|
{
|
existtepm.TakeName = njtakeDTO.takename;
|
existtepm.jiShuYuan = njtakeDTO.jishuyuan;
|
existtepm.gongZhang = njtakeDTO.gongzhang;
|
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;
|
existtepm.ModifyDate = DateTime.Now;
|
}
|
|
// 3. 更新任务表
|
task.Taskstatus = 1; // 已派工
|
task.dispatchTime = DateTime.Now;
|
task.startTime = DateTime.Now;
|
ApplyTemplateToTask(task, existtepm, isNewTemplate, njtakeDTO);
|
|
//// 4. 插入历史记录
|
//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 = (DateTime)task.createTime,
|
// dispatchTime = (DateTime)task.dispatchTime,
|
// startTime = (DateTime)task.startTime,
|
// startTime_LC = (DateTime)task.startTime_LC,
|
// endTime_LC = (DateTime)task.endTime_LC,
|
// startTime_DG = (DateTime)task.startTime_DG,
|
// endTime_DG = (DateTime)task.endTime_DG,
|
// startTime_DQ = (DateTime)task.startTime_DQ,
|
// endTime_DQ = (DateTime)task.endTime_DQ,
|
// endTime = (DateTime)task.endTime,
|
// confirmTime_JS = (DateTime)task.confirmTime_JS,
|
// confirmTime_GZ = (DateTime)task.confirmTime_GZ,
|
// confirmTime_LC = (DateTime)task.confirmTime_LC,
|
// confirmTime_DG = (DateTime)task.confirmTime_DG,
|
// confirmTime_DQ = (DateTime)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();
|
|
if (isNewTemplate)
|
{
|
_templateRepository.AddData(existtepm);
|
}
|
else
|
{
|
_templateRepository.UpdateData(existtepm);
|
}
|
|
BaseDal.UpdateData(task);
|
//_nJtakeHistoryRepository.AddData(history);
|
_putakeRepository.AddData(listp);
|
|
_unitOfWorkManage.CommitTran();
|
|
return new WebResponseContent { Status = true, Data = task };
|
}
|
catch (Exception ex)
|
{
|
_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;
|
}
|
|
|
//不保存模板
|
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 = (DateTime)task.createTime,
|
// dispatchTime = (DateTime)task.dispatchTime,
|
// startTime = (DateTime)task.startTime,
|
// startTime_LC = (DateTime)task.startTime_LC,
|
// endTime_LC = (DateTime)task.endTime_LC,
|
// startTime_DG = (DateTime)task.startTime_DG,
|
// endTime_DG = (DateTime)task.endTime_DG,
|
// startTime_DQ = (DateTime)task.startTime_DQ,
|
// endTime_DQ = (DateTime)task.endTime_DQ,
|
// endTime = (DateTime)task.endTime,
|
// confirmTime_JS = (DateTime)task.confirmTime_JS,
|
// confirmTime_GZ = (DateTime)task.confirmTime_GZ,
|
// confirmTime_LC = (DateTime)task.confirmTime_LC,
|
// confirmTime_DG = (DateTime)task.confirmTime_DG,
|
// confirmTime_DQ = (DateTime)task.confirmTime_DQ
|
|
//};
|
|
|
|
|
List<Dt_Putake> listp = new List<Dt_Putake>();
|
|
// 定义任务拆解的组信息
|
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,
|
Creater="",
|
CreateDate=new DateTime()
|
});
|
}
|
|
|
_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
|
string CustomizeID = "";
|
if (addNjtDTO.NJtaskID == 0)
|
{
|
// 获取今天的日期部分,如 "K20250306"
|
string todayPrefix = $"K{DateTime.Now:yyyyMMdd}";
|
|
// 查询数据库,找出当天最大的 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...
|
CustomizeID = $"{todayPrefix}{nextNumber:D3}";//D3表示 3位数,不足补0
|
}
|
else
|
{
|
CustomizeID = addNjtDTO.NJtaskID.ToString();
|
}
|
if (addNjtDTO.Creater == "")
|
{
|
addNjtDTO.Creater = "admin";
|
}
|
#endregion
|
|
var addnj = new Dt_NjTask()
|
{
|
NJtaskID = CustomizeID,
|
TakeName=addNjtDTO.TakeName,
|
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,
|
};
|
|
BaseDal.AddData(addnj);
|
|
return new WebResponseContent { Status = true, Message = "成功", Code = 200, Data = addnj };
|
|
}
|
catch (Exception ex)
|
{
|
|
return new WebResponseContent { Status = false, Message = "失败" + ex.Message, Code = 400 };
|
}
|
}
|
|
//查看详情 返回整个表的数据(更具id)
|
public WebResponseContent GetNjdetail(string njtaskID)
|
{
|
try
|
{
|
var datatail = BaseDal.QueryData(x => x.NJtaskID == njtaskID).FirstOrDefault();
|
if (datatail == null)
|
{
|
return new WebResponseContent { Status = false, Message = "没有找到" };
|
|
}
|
return new WebResponseContent { Status = true, Data = datatail };
|
}
|
catch (Exception ex)
|
{
|
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;
|
|
BaseDal.UpdateData(putake);
|
|
return new WebResponseContent { Status = true, Data = putake };
|
}
|
catch (Exception ex)
|
{
|
|
return new WebResponseContent { Status = false, Message = "查询失败:" + ex.Message };
|
}
|
}
|
|
|
|
|
|
|
|
|
|
}
|
}
|
|