using PadApplication.DB;
|
using PadApplication.Entites.DbModels;
|
using PadApplication.Entites.Dto;
|
using SqlSugar;
|
|
namespace PadApplication.Services;
|
|
public class MesQaItemsDetect02Manager : Repository<MesQaItemsDetect02>
|
{
|
//当前类已经继承了 Repository 增、删、查、改的方法
|
|
//根据工单号查首检
|
public MesQaItemsDetect02 FindSJByOrderNo(OrderMachineDto query)
|
{
|
return Db.Queryable<MesQaItemsDetect02>()
|
.Where(s => s.Ftype == "首检" && s.Aufnr == query.orderNo)
|
.Select(s => new MesQaItemsDetect02
|
{
|
Id = s.Id,
|
FcheckDate = s.FcheckDate,
|
FcheckResu = s.FcheckResu
|
})
|
.OrderBy(s => s.FcheckDate, OrderByType.Desc)
|
.First();
|
}
|
|
//根据工单号查巡检
|
public MesQaItemsDetect02 FindXJByOrderNo(OrderMachineDto query)
|
{
|
var list = Db.Queryable<MesQaItemsDetect02>()
|
.Where(s =>
|
s.Ftype == "巡检" && s.Aufnr == query.orderNo &&
|
s.FcheckDate != null)
|
.Select(s => new MesQaItemsDetect02
|
{
|
Id = s.Id,
|
FcheckDate = s.FcheckDate,
|
FcheckResu = s.FcheckResu
|
})
|
.OrderBy(s => s.FcheckDate, OrderByType.Desc);
|
|
if (list == null || list.Count() == 0)
|
{
|
var empty = new MesQaItemsDetect02();
|
empty.xjCount = 0;
|
return empty;
|
}
|
|
var entity = list.First();
|
entity.xjCount = list.Count();
|
return entity;
|
}
|
|
/// <summary>
|
/// 自动生成首检单
|
/// </summary>
|
/// <param name="billNo">工单号</param>
|
/// <returns>是否成功</returns>
|
public bool AutomaticIpqcFirstCheck(string billNo)
|
{
|
// 获取工单信息
|
var womdaa = Db.Queryable<Womdaa>().Where(a => a.Daa001 == billNo)
|
.First();
|
if (womdaa == null) return false;
|
|
// 获取产品信息
|
var mesItems = Db.Queryable<MesItems2>()
|
.Where(a => a.AddressCode == "ALL" && a.ItemNo == womdaa.Daa002)
|
.First();
|
if (mesItems == null) return false;
|
|
// 获取部门信息
|
var departmentNo = womdaa.DepartmentNo;
|
|
// 获取产品标准型号
|
// string qcModel;
|
// try
|
// {
|
// qcModel = Db.Queryable<MesItems2>()
|
// .Where(a => a.ItemNo == womdaa.Daa002 && a.AddressCode == "HK")
|
// .Select(a => a.QcModel)
|
// .First();
|
// }
|
// catch
|
// {
|
// qcModel = "Q1";
|
// }
|
|
return UseTransaction(db =>
|
{
|
// 工单处理
|
if (departmentNo == "XS0101")
|
{
|
// 检查是否已存在首检单
|
// var existingCheck = Db.Queryable<MesQaItemsDetect02>()
|
// .Where(a => a.Aufnr == billNo && a.Ftype == "首检")
|
// .First();
|
|
// if (existingCheck == null)
|
// {
|
// 生成首检单号
|
var orderNo = GetBillCode();
|
|
// 创建首检单头信息
|
var detect = new MesQaItemsDetect02
|
{
|
ReleaseNo = orderNo,
|
Aufnr = billNo,
|
LineNo = womdaa.MachineNo,
|
Fsubmit = 0,
|
LotNo = DateTime.Now.ToString("yyyyMMdd"),
|
Ftype = "首检",
|
ItemNo = womdaa.Daa002,
|
CreateBy = "Admin",
|
CreateDate = DateTime.Now,
|
Ismodify1 = 0,
|
Factory = "1000",
|
Fversion = 0,
|
MenuId = 101,
|
Company = "1000",
|
FprodType = "量产",
|
FprodDate = womdaa.Daa006,
|
PlanQty = womdaa.Daa008,
|
Remeke = womdaa.Daa009,
|
DepartmentNo = womdaa.DepartmentNo
|
};
|
|
// 插入首检单
|
Db.Insertable(detect).IgnoreColumns(true).ExecuteCommand();
|
|
// 插入检验项目
|
var checkItems = Db.Queryable<MesQmCheckitemsDt2>()
|
.LeftJoin<MesQmCheckitems2>((t, t2) => t.Pid == t2.Id)
|
.LeftJoin<vMesPqcZsth>((t, t2, b) => t2.ItemNo == b.ItemNo)
|
.Where((t, t2, b) => b.QcItem == womdaa.Daa002)
|
.OrderBy(t => t.Forder)
|
.Select((t, t2, b) => new
|
{
|
t.FcheckItem,
|
t.FcheckTool,
|
t.Fstand,
|
t.FupAllow,
|
t.FdownAllow,
|
t.Forder,
|
t.CheckQty,
|
t.FacQty,
|
t.FspecRequ
|
})
|
.ToList();
|
|
foreach (var item in checkItems)
|
{
|
var detail = new MesQaItemsDetectDetail6
|
{
|
FcheckItem = item.FcheckItem,
|
FcheckTool = item.FcheckTool,
|
Fstand = item.Fstand,
|
FupAllow = item.FupAllow,
|
FdownAllow = item.FdownAllow,
|
ForderNo = item.Forder,
|
ReleaseNo = orderNo,
|
CheckQty = item.CheckQty,
|
AcceptableQty = item.FacQty,
|
Company = "1000",
|
Factory = "1000",
|
FspecRequ = item.FspecRequ
|
};
|
|
Db.Insertable(detail).IgnoreColumns(true).ExecuteCommand();
|
}
|
// }
|
|
// 更新工单状态表
|
var orderSta = Db.Queryable<MesOrderSta>()
|
.Where(a => a.OrderId == womdaa.Id)
|
.First();
|
|
if (orderSta != null) return 1;
|
var newSta = new MesOrderSta
|
{
|
OrderId = womdaa.Id,
|
OrderNo = womdaa.Daa001,
|
// StartTime =
|
// DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
|
MachineNo = womdaa.MachineNo
|
};
|
Db.Insertable(newSta).IgnoreColumns(true).ExecuteCommand();
|
// else
|
// {
|
// Db.Updateable<MesOrderSta>()
|
// .SetColumns(a =>
|
// a.StartTime ==
|
// DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"))
|
// .Where(a => a.OrderId == womdaa.Id)
|
// .ExecuteCommand();
|
// }
|
|
return 1;
|
}
|
|
return 0;
|
}) > 0;
|
}
|
|
/// <summary>
|
/// 获取单据编号
|
/// </summary>
|
/// <param name="company">公司代码</param>
|
/// <param name="factory">工厂代码</param>
|
/// <param name="prefix">单据前缀</param>
|
/// <returns>生成的单据编号</returns>
|
private string GetBillCode()
|
{
|
// 获取当前日期
|
var date = DateTime.Now.ToString("yyMMdd");
|
|
// 查询当天最大流水号
|
var maxCode = Db.Queryable<MesQaItemsDetect02>()
|
.Where(s => s.Company == "1000" && s.Factory == "1000")
|
.Where(s => s.ReleaseNo.StartsWith("QCSN" + date))
|
.OrderBy(s => s.ReleaseNo, OrderByType.Desc)
|
.Select(s => s.ReleaseNo)
|
.First();
|
|
// 生成新的流水号
|
var sequence = 1;
|
if (!string.IsNullOrEmpty(maxCode))
|
sequence = int.Parse(maxCode.Substring(10)) + 1;
|
|
// 组装单据编号 QCSN + 年月日 + 5位流水号
|
return $"QCSN{date}{sequence:D5}";
|
}
|
}
|