using PadApplication.DB;
using PadApplication.Entites.DbModels;
using PadApplication.Entites.Dto;
namespace PadApplication.Services;
///
/// 工单选择管理类,负责工单选择相关的数据操作
/// 继承自Repository基类,包含基础的CRUD操作
///
public class MesOrderSelectManager : Repository
{
private readonly WomdaaManager _womdaaManager = new();
public bool AddMesOrderSelect(OrderSelectDto dto)
{
var query = new OrderMachineDto
{
machineNo = dto.MachineNo
};
var womdaasByShow = _womdaaManager.GetWomdaasByShow(query);
var date = DateTime.Now.ToString("yyyy-MM-dd");
foreach (var vOrder in womdaasByShow)
{
var count = Db.Queryable()
.Where(s => s.OrderId == vOrder.ID
&& s.EditDate == date).Count();
if (count > 0) continue;
// 设置基础信息
var mesOrderSelect = new MesOrderSelect
{
OrderId = vOrder.ID,
OrderNo = vOrder.Daa001,
EditDate = date,
MachineNo = dto.MachineNo,
IsShow = 0,
TjCount = 0,
TjTime = 0
};
// 插入记录,如果失败则返回false
if (!Insert(mesOrderSelect)) return false;
}
return true;
}
///
/// 添加工单选择记录
///
/// 工单选择数据传输对象,包含工单列表和基础信息
/// 添加是否成功
public bool Add(OrderSelectDto dto)
{
// 先删除该机器的现有选择记录
Remove(dto);
// 获取第一个工单的工单号
var orderNo = dto.Item[0].OrderNo;
var query = new OrderMachineDto();
query.orderNo = orderNo;
// 检查是否为新工单
var isN = isNew(query);
// 遍历工单列表,添加每个工单的选择记录
foreach (var mesOrderSelect in dto.Item)
{
var count = Db.Queryable()
.Where(s => s.OrderId == mesOrderSelect.OrderId
&& s.EditDate == dto.EditDate).Count();
if (count > 0)
{
Db.Updateable()
.SetColumns(s => s.IsShow == 0)
.Where(s => s.OrderId == mesOrderSelect.OrderId
&& s.EditDate == dto.EditDate)
.ExecuteCommand();
}
else
{
// 设置基础信息
mesOrderSelect.EditDate = dto.EditDate;
mesOrderSelect.MachineNo = dto.MachineNo;
mesOrderSelect.IsShow = 0;
mesOrderSelect.TjCount = 0;
mesOrderSelect.TjTime = 0;
// 插入记录,如果失败则返回false
if (!Insert(mesOrderSelect)) return false;
}
var womdaa = Db.Queryable()
.Where(s => s.Daa001 == mesOrderSelect.OrderNo).First();
if (womdaa == null) continue;
var equals = womdaa.Daa018.Equals("暂停");
//// 更新工单状态表中的换模开始时间
//Db.Updateable()
// .SetColumnsIF(equals, s => s.MaShoutTime == null)
// .SetColumnsIF(equals, s => s.MaEndTime == null)
// .Where(s => s.OrderNo == mesOrderSelect.OrderNo)
// .ExecuteCommand();
}
return isN;
}
///
/// 删除指定机器的工单选择记录
///
/// 包含机器编号的数据传输对象
/// 删除的记录数
public int Remove(OrderSelectDto dto)
{
// 删除该机器所有未显示的工单选择记录
return Db.Deleteable()
.Where(s => s.MachineNo == dto.MachineNo
&& s.IsShow == 0)
.ExecuteCommand();
}
///
/// 检查是否为新工单
///
/// 包含工单号的查询条件
/// true表示是新工单,false表示已存在
public bool isNew(OrderMachineDto query)
{
// 获取当前日期
var date = DateTime.Now.ToString("yyyy-MM-dd");
// 查询当天是否存在该工单的选择记录
var count = Db.Queryable()
.Where(s => s.OrderNo == query.orderNo
&& s.EditDate == date).Count();
// 如果记录数为0,则为新工单
return count <= 0;
}
}