using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.Text;
|
using System.Threading.Tasks;
|
using OfficeOpenXml.FormulaParsing.Excel.Functions.Information;
|
using WIDESEA_ISerialPortRepository;
|
using WIDESEA_SerialPortRepository;
|
using WIDESEAWCS_Core;
|
using WIDESEAWCS_Core.BaseRepository;
|
using WIDESEAWCS_Core.BaseServices;
|
using WIDESEAWCS_Core.Helper;
|
using WIDESEAWCS_Core.HttpContextUser;
|
using WIDESEAWCS_ITaskInfoRepository;
|
using WIDESEAWCS_ITaskInfoService;
|
using WIDESEAWCS_Model.Models;
|
|
namespace WIDESEAWCS_TaskInfoService
|
{
|
public class PutakeServer : ServiceBase<Dt_Putake, IPutakeRepository>, IPutakeServer
|
{
|
private IUnitOfWorkManage _uniUnitOfWorkManage;
|
private INjTaskRepository _iNjTaskRepository;
|
|
|
public PutakeServer(IPutakeRepository BaseDal, IUnitOfWorkManage uniUnitOfWorkManage, INjTaskRepository iNjTaskRepository ) : base(BaseDal)
|
{
|
_uniUnitOfWorkManage = uniUnitOfWorkManage;//数据库事务
|
_iNjTaskRepository= iNjTaskRepository;
|
|
|
}
|
public override PageGridData<Dt_Putake> GetPageData(PageDataOptions options)
|
{
|
OrderByParameters = new Dictionary<string, SqlSugar.OrderByType>
|
{
|
{ nameof(Dt_Putake.Pustatus),SqlSugar.OrderByType.Asc },
|
// { nameof(Dt_Putake.CreateDate),SqlSugar.OrderByType.Asc }//按状态和创建时间升序排序
|
};
|
return base.GetPageData(options);
|
}
|
|
private enum cond
|
{
|
待领筒=0,
|
待作业=1,
|
待归筒=2,
|
待质检=3,
|
已完成=4
|
}
|
|
|
//修改下发任务表的任务状态
|
public WebResponseContent ChangeStatus(string id,string gruops)
|
{
|
try
|
{
|
var putakeList = BaseDal.QueryData(i => i.Grouptype == gruops && i.Pustatus != (int)cond.已完成).ToList();
|
var putake = putakeList.Where(i => i.Njtakeid == id).FirstOrDefault();
|
var nj = _iNjTaskRepository.QueryData(i => i.NJtaskID == id).FirstOrDefault();
|
if (putake == null)
|
{
|
return new WebResponseContent { Status = false, Message = "未找到该任务" };
|
}
|
|
//把数据库中的 int 值转换为 `cond` 枚举:
|
if (!Enum.IsDefined(typeof(cond), putake.Pustatus))
|
{
|
return new WebResponseContent { Status = false, Message = "当前状态不合法,无法更新" };
|
}
|
|
cond currentStatus = (cond)putake.Pustatus; // int -> 枚举转换
|
|
switch (currentStatus)
|
{
|
|
case cond.待领筒: //
|
if(putakeList.Where(a=>a.Pustatus== (int)cond.待作业).Count() > 0)
|
{
|
return new WebResponseContent { Status = false, Message = "当前有作业未完成,请先完成正在执行的作业" };
|
}
|
putake.Pustatus = (int)cond.待作业; // 枚举转 int
|
if (gruops=="机械")
|
{
|
|
}
|
if (gruops == "电气")
|
{
|
|
}
|
if (gruops == "地沟")
|
{
|
|
}
|
break;
|
case cond.待作业://开始作业,开始时间
|
putake.Pustatus = (int)cond.待归筒;
|
if (gruops == "机械")
|
{
|
nj.startTime_LC = DateTime.Now;//开始时间
|
nj.createTime = DateTime.Now;
|
}
|
if (gruops == "电气")
|
{
|
nj!.startTime_DQ = DateTime.Now;
|
nj.createTime = DateTime.Now;
|
}
|
if (gruops == "地沟")
|
{
|
nj!.startTime_DG = DateTime.Now;
|
nj.createTime = DateTime.Now;
|
}
|
break;
|
case cond.待归筒://确认归还,完成时间
|
putake.Pustatus = (int)cond.待质检;
|
if (gruops == "机械")
|
{
|
nj.endTime_LC = DateTime.Now;
|
nj.createTime = DateTime.Now;
|
}
|
if (gruops == "电气")
|
{
|
nj.endTime_DQ = DateTime.Now;
|
nj.createTime = DateTime.Now;
|
}
|
if (gruops == "地沟")
|
{
|
nj.endTime_DG = DateTime.Now;
|
nj.createTime = DateTime.Now;
|
}
|
break;
|
case cond.待质检: // 完成质检时间
|
putake.Pustatus = (int)cond.已完成;
|
|
//DateTime latestTime = new DateTime(1900, 1, 1, 0, 0, 0);
|
|
if (gruops == "机械")
|
{
|
nj!.confirmTime_LC = DateTime.Now;
|
nj.createTime = DateTime.Now;
|
}
|
if (gruops == "电气")
|
{
|
nj!.confirmTime_DQ = DateTime.Now;
|
nj.createTime = DateTime.Now;
|
}
|
if (gruops == "地沟")
|
{
|
nj!.confirmTime_DG = DateTime.Now;
|
nj.createTime = DateTime.Now;
|
}
|
|
// 获取最后一次完成的时间
|
// latestTime = (DateTime)new[] { nj.confirmTime_LC, nj.confirmTime_DQ, nj.confirmTime_DG }.Max(); // 取最新的时间
|
|
DateTime? latestTime = new[] { nj.confirmTime_LC, nj.confirmTime_DQ, nj.confirmTime_DG }
|
.Where(t => t.HasValue) // 过滤掉 null
|
.Select(t => t.Value) // 取出非空的值
|
.DefaultIfEmpty(DateTime.Now) // 若数组为空,使用当前时间
|
.Max(); // 取最大时间
|
nj.endTime = latestTime; // 赋值最新时间
|
putake.Finishedtime = DateTime.Now;
|
break;
|
case cond.已完成:
|
return new WebResponseContent { Status = false, Message = "当前状态已是最终状态,无法再更新" };
|
default:
|
return new WebResponseContent { Status = false, Message = "未知状态,无法更新" };
|
}
|
|
|
_iNjTaskRepository.UpdateData(nj);
|
BaseDal.UpdateData(putake);
|
|
return new WebResponseContent { Status = true, Data = putake };
|
}
|
catch (Exception ex)
|
{
|
return new WebResponseContent { Status = false, Message = "更新失败:" + ex.Message };
|
}
|
}
|
|
//根据条件(组)展示下发任务表
|
public WebResponseContent ShowPutake(string group)
|
{
|
try
|
{
|
var dg = BaseDal.QueryData(i=>i.Grouptype== group);
|
|
return new WebResponseContent { Status = true, Data = dg };
|
}
|
catch (Exception ex)
|
{
|
return new WebResponseContent { Status = false, Message = $"查看失败:{ex}" };
|
}
|
}
|
|
//查看这个下发任务的中任务表中的详情数据(和njtaskServe中一样)
|
public WebResponseContent GetNjtake(string njid)
|
{
|
try
|
{
|
var Nj = _iNjTaskRepository.QueryData(i => i.NJtaskID == njid).FirstOrDefault();
|
|
if (Nj != null)
|
{
|
|
return new WebResponseContent { Status = true, Data = Nj };
|
}
|
else {
|
return new WebResponseContent { Status = false,Message="没有找到" };
|
}
|
|
|
|
}
|
catch (Exception ex)
|
{
|
|
|
return new WebResponseContent { Status = false, Message = "更新失败:" + ex.Message };
|
}
|
}
|
|
|
|
|
}
|
}
|