using System.Data;
|
using System.Xml;
|
using Masuit.Tools;
|
using MES.Service.DB;
|
using MES.Service.Dto.service;
|
using MES.Service.Modes;
|
using MES.Service.util;
|
using SqlSugar;
|
using Tea.Utils;
|
using DbType = System.Data.DbType;
|
|
|
namespace MES.Service.service.QC;
|
|
public class LljService
|
{
|
public (List<LtsLlj> item, int TotalCount) GetPage(XJPageResult queryObj)
|
{
|
if (queryObj.createUser.IsNullOrEmpty()) return ([], 0);
|
|
var db = SqlSugarHelper.GetInstance();
|
|
var id = Convert.ToDecimal(queryObj.id);
|
|
var totalCount = 0;
|
|
var pageList = db.Queryable<LtsLlj, IqcBefore, SysUser,
|
IqcBeforeFrom, SysUser, SysUser>((a, b,
|
e, f, g, i) =>
|
new JoinQueryInfos(JoinType.Left, a.ItemId == b.ItemId,
|
JoinType.Left, a.CreateBy == e.Fcode,
|
JoinType.Left, f.Id == b.Pid,
|
JoinType.Left, f.Sid == Convert.ToDecimal(g.Fid),
|
JoinType.Left, f.CheckUser == i.Fcode
|
))
|
.WhereIF(
|
StringUtil.IsNotNullOrEmpty(queryObj.result) &&
|
"未完成".Equals(queryObj.result),
|
(a, b,
|
e, f, g, i) => a.FcheckResu == null)
|
.WhereIF(
|
StringUtil.IsNotNullOrEmpty(queryObj.result) &&
|
!"未完成".Equals(queryObj.result),
|
(a, b,
|
e, f, g, i) => a.FcheckResu != null)
|
.WhereIF(id > 0, (a, b,
|
e, f, g, i) => a.Id == id)
|
.WhereIF(queryObj.createUser != "PL017" && queryObj.UserIndex == "0", (a, b,
|
e, f, g, i) => (g.Fcode == queryObj.createUser || i.Fcode == queryObj.createUser ||
|
(g.Fcode == null && i.Fcode == null)))//判断此单的检验员,或者检验为空就显示此单据
|
|
//加筛选条件,根据供应商,物料编码,物料名称搜索
|
//.WhereIF(queryObj.SearchValue!=null && queryObj.SearchValue!="", (a) => a.SuppName == queryObj.SearchValue|| a.ItemName == queryObj.SearchValue || a.ItemNo == queryObj.SearchValue )
|
.WhereIF(!string.IsNullOrEmpty(queryObj.SearchValue),
|
(a, b,
|
e, f, g, i) => a.SuppName.ToLower()
|
.Contains(queryObj.SearchValue.ToLower())
|
|| a.ItemName.ToLower()
|
.Contains(queryObj.SearchValue.ToLower())
|
|| a.ItemNo.ToLower()
|
.Contains(queryObj.SearchValue.ToLower())
|
|| a.LotNo.ToLower()
|
.Contains(queryObj.SearchValue.ToLower())
|
|| a.ReleaseNo.ToLower()
|
.Contains(queryObj.SearchValue.ToLower())
|
|| a.ItemModel.ToLower()
|
.Contains(queryObj.SearchValue.ToLower()))
|
.OrderByDescending((a, b,
|
e, f, g, i) => a.Id)
|
//.Select((a, b,
|
// e, f, g, i) => new LtsLlj
|
// {
|
// //UserName = g.Fname,
|
// //UserName = (i.Fname!=null ||i.Fname!="") ? i.Fname : g.Fname,
|
// UserName = i.Fname != null || i.Fname != "" ? i.Fname : g.Fname,
|
// CreateUserName = e.Fname
|
// }, true)
|
.ToPageList(queryObj.PageIndex, queryObj.Limit, ref totalCount);
|
|
var emergencyValues = pageList.Select(item => item.EMERGENCY).ToList();
|
//return (pageList, totalCount);
|
return (pageList, totalCount);
|
}
|
|
//根据检验标准来计算检验个数
|
/// <summary>
|
/// 调用存储过程,重新获取检验项目
|
/// </summary>
|
/// <param name="itemNo"></param>
|
/// <param name="quantity"></param>
|
/// <param name="releaseNo"></param>
|
/// <returns></returns>
|
public string[] SetItems(decimal itemNo, decimal quantity, string releaseNo)
|
{
|
|
// 定义输出参数
|
var outputResult = new SugarParameter("o_Result", null,
|
DbType.Int32, ParameterDirection.Output,
|
4000);
|
|
var outputMessage = new SugarParameter("o_Msg", null,
|
DbType.String,
|
ParameterDirection.Output, 4000);
|
|
// 定义输入参数
|
var parameters = new List<SugarParameter>
|
{
|
new("P_RELEASE_NO", releaseNo, DbType.String, ParameterDirection.Input),
|
new("P_ITEM_ID", itemNo, DbType.String, ParameterDirection.Input),
|
outputResult,
|
outputMessage
|
};
|
|
var db = SqlSugarHelper.GetInstance();
|
|
// 使用 SqlSugar 执行存储过程
|
db.Ado.ExecuteCommand(
|
"BEGIN PRC_QA_ITEM_INSERT_BTN(:P_RELEASE_NO,:P_ITEM_ID, :o_Result, :o_Msg); END;",
|
parameters.ToArray());
|
|
// 获取输出参数的值
|
var resultValue = outputResult.Value?.ToString();
|
var messageValue = outputMessage.Value?.ToString();
|
string[] msg = new string[2];
|
msg[0] = resultValue;
|
msg[1] = messageValue;
|
return msg;
|
|
}
|
//紧急放行
|
public string[] EmergencyRelease(int id)
|
{
|
var db = SqlSugarHelper.GetInstance();
|
|
|
int emergencyStatus = db.Queryable<MesQaItemsDetect01>()
|
.Where(t => t.Id == id)
|
.Select(t => t.EMERGENCY)
|
.First();
|
|
if (emergencyStatus != 0)
|
{
|
return new string[] { "1", "非紧急状态,无法执行紧急放行" };
|
}
|
|
|
var outputResult = new SugarParameter("PO_RESULT", null,
|
DbType.Int32, ParameterDirection.Output, 4000);
|
|
var outputMessage = new SugarParameter("PO_MSG", null,
|
DbType.String, ParameterDirection.Output, 4000);
|
|
var parameters = new List<SugarParameter>
|
{
|
new("P_ID", id, DbType.Int32, ParameterDirection.Input),
|
outputResult,
|
outputMessage
|
};
|
|
db.Ado.ExecuteCommand(
|
"BEGIN prc_MES_QA_ITEMS_update1(:P_ID, :PO_RESULT, :PO_MSG); END;",
|
parameters.ToArray());
|
|
var lotNo1 = db.Queryable<MesQaItemsDetect01>()
|
.Where(t => t.Id == id)
|
.Select(t => t.LotNo1)
|
.First();
|
|
var resultValue = outputResult.Value?.ToString();
|
var messageValue = outputMessage.Value?.ToString();
|
return new string[] { resultValue, messageValue, lotNo1?.ToString() ?? "" };
|
}
|
|
public string[] WithdrawEmergencyRelease(int id)
|
{
|
var db = SqlSugarHelper.GetInstance();
|
|
|
int emergencyStatus = db.Queryable<MesQaItemsDetect01>()
|
.Where(t => t.Id == id)
|
.Select(t => t.EMERGENCY)
|
.First();
|
|
if (emergencyStatus != 0)
|
{
|
return new string[] { "1", "非紧急状态,无需撤回" };
|
}
|
|
var outputResult = new SugarParameter("PO_RESULT", null,
|
DbType.Int32, ParameterDirection.Output, 4000);
|
|
var outputMessage = new SugarParameter("PO_MSG", null,
|
DbType.String, ParameterDirection.Output, 4000);
|
|
var parameters = new List<SugarParameter>
|
{
|
new("P_ID", id, DbType.Int32, ParameterDirection.Input),
|
outputResult,
|
outputMessage
|
};
|
|
db.Ado.ExecuteCommand(
|
"BEGIN prc_MES_QA_ITEMS_update2(:P_ID, :PO_RESULT, :PO_MSG); END;",
|
parameters.ToArray());
|
|
var lotNo1 = db.Queryable<MesQaItemsDetect01>()
|
.Where(t => t.Id == id)
|
.Select(t => t.LotNo1)
|
.First();
|
|
|
var resultValue = outputResult.Value?.ToString();
|
var messageValue = outputMessage.Value?.ToString();
|
return new string[] { resultValue, messageValue, lotNo1?.ToString() ?? "" };
|
}
|
|
private string ExtractSubstring(string input, char startChar, char endChar)
|
{
|
var startIndex = input.IndexOf(startChar);
|
var endIndex = input.IndexOf(endChar, startIndex);
|
|
if (startIndex == -1 || endIndex == -1)
|
// 如果未找到起始字符或结束字符,则返回空字符串或者抛出异常,根据实际情况选择
|
return string.Empty;
|
// 或者抛出异常
|
// throw new ArgumentException("Start or end character not found");
|
// 提取子字符串
|
var length = endIndex - startIndex - 1;
|
return input.Substring(startIndex + 1, length);
|
}
|
|
public int saveItem(LLJDto rkjDto)
|
{
|
var items = rkjDto.items;
|
var userNo = rkjDto.userNo;
|
|
SqlSugarHelper.UseTransactionWithOracle(db =>
|
{
|
foreach (var item in items) item.ReleaseNo = rkjDto.releaseNo;
|
|
return db.Insertable(items).ExecuteCommand();
|
});
|
|
rkjDto.items = GetItems(rkjDto.releaseNo, null);
|
|
var db = SqlSugarHelper.GetInstance();
|
|
rkjDto.items.ForEach(s =>
|
{
|
if (s.FupAllow != null || s.Fstand != null ||
|
s.FdownAllow != null) return;
|
|
// 没有录入参考值,判断有多少个NG,那么录入的抽检结果必须是OK或者NG,NG代表不合格
|
var ifck = db.Queryable<MesQaItemsDetectDetail12>()
|
.Where(x => x.FcheckResu == "NG" && x.MainId == s.Id).Count();
|
|
//检验明细总数
|
var count = db.Queryable<MesQaItemsDetectDetail12>()
|
.Where(x1 => x1.MainId == s.Id).Count();
|
|
if (ifck > s.FreQty && s.CheckQyt == count)
|
s.FcheckResu = "不合格";
|
else if (ifck < s.FreQty && s.CheckQyt == count)
|
s.FcheckResu = "合格";
|
else
|
s.FcheckResu = "未完成";
|
|
|
var detail = new MesQaItemsDetectDetail12();
|
detail.MainId = s.Id;
|
detail.ReleaseNo = rkjDto.releaseNo;
|
detail.Fstand = "√";
|
detail.FcheckResu = "OK";
|
detail.LastupdateBy = rkjDto.userNo;
|
detail.count = (int?)s.CheckQyt;
|
SetQSItemDetail(detail);
|
});
|
|
return Convert.ToInt32(rkjDto.gid);
|
}
|
|
public List<MesQaItemsDetectDetail5> GetItems(string? releaseNo,
|
decimal? id)
|
{
|
var db = SqlSugarHelper.GetInstance();
|
|
return db.Queryable<MesQaItemsDetectDetail5, MesQaItemsDetectDetail12>(
|
(a, b) =>
|
new JoinQueryInfos(JoinType.Left, a.Id == b.MainId))
|
.Where((a, b) => a.ReleaseNo == releaseNo)
|
// .WhereIF(id > 0, (a, b) => a.Id == id)
|
.GroupBy((a, b) => new
|
{
|
a.Id,
|
a.ReleaseNo,
|
a.FacLevel,
|
a.FcheckItem,
|
a.FcheckTool,
|
a.FdownAllow,
|
a.FcheckLevel,
|
a.Fstand,
|
a.FupAllow,
|
a.SampleSizeNo,
|
a.FspecRequ,
|
a.FreQty,
|
a.CheckQyt,
|
a.FcheckResu,
|
a.FcheckItemDesc,a.Funit
|
}).Select((a, b) => new MesQaItemsDetectDetail5
|
{
|
Id = a.Id,
|
ReleaseNo = a.ReleaseNo,
|
CheckQyt = a.CheckQyt,
|
FacLevel = a.FacLevel,
|
FcheckItem = a.FcheckItem,
|
FcheckTool = a.FcheckTool,
|
FdownAllow = a.FdownAllow,
|
FcheckLevel = a.FcheckLevel,
|
Fstand = a.Fstand,
|
FupAllow = a.FupAllow,
|
SampleSizeNo = a.SampleSizeNo,
|
FspecRequ = a.FspecRequ,
|
FreQty = a.FreQty,
|
Factory = "1000",
|
Company = "1000",
|
FenterQty = SqlFunc.AggregateCount(b.Id),
|
FcheckResu = a.FcheckResu,
|
// FcheckItemDesc = a.FcheckItemDesc
|
FcheckItemDesc = a.FspecRequ,
|
Funit =a.Funit
|
}).ToList();
|
}
|
|
public int SetQSItemDetail(MesQaItemsDetectDetail12 detail)
|
{
|
var dbd = SqlSugarHelper.GetInstance();
|
var oracle = SqlSugarHelper.UseTransactionWithOracle(db =>
|
{
|
List<MesQaItemsDetectDetail12> result = new();
|
for (var i = 0; i < detail.count; i++)
|
{
|
var item = new MesQaItemsDetectDetail12();
|
item.MainId = detail.MainId;
|
item.ReleaseNo = detail.ReleaseNo;
|
item.Fstand = detail.Fstand;
|
item.FcheckResu = detail.FcheckResu;
|
item.CreateBy = detail.LastupdateBy;
|
item.CreateDate = DateTime.Now;
|
item.Factory = "1000";
|
item.Company = "1000";
|
result.Add(item);
|
}
|
|
return db.Insertable(result).ExecuteCommand();
|
});
|
|
detail.CreateBy = detail.LastupdateBy;
|
|
|
autoResult(detail);
|
|
return oracle;
|
}
|
|
|
private int autoResult(MesQaItemsDetectDetail12 detail)
|
{
|
var db = SqlSugarHelper.GetInstance();
|
|
// Single 没有查询到结果时返回Null,如果结果大于1条会抛出错误
|
var QsItemOqcItem = db.Queryable<MesQaItemsDetectDetail5>()
|
.Single(s => s.Id == detail.MainId);
|
|
if (QsItemOqcItem == null) return 0;
|
|
//查询这个检验项目下的检验结果
|
var count = db.Queryable<MesQaItemsDetectDetail12>()
|
.Where(s => s.MainId == detail.MainId).Count();
|
|
updateDetail5(detail);
|
var result = "";
|
|
//检验实际结果不等于应该检验的个数时直接推出
|
if (QsItemOqcItem.CheckQyt != count) return 0;
|
|
//合格的有多少个
|
var passCount = db.Queryable<MesQaItemsDetectDetail12>()
|
.Where(s => s.MainId == detail.MainId && s.Fstand == "√").Count();
|
//不合格的有多少个
|
var noCount = db.Queryable<MesQaItemsDetectDetail12>()
|
.Where(s => s.MainId == detail.MainId && s.Fstand == "×").Count();
|
|
if (count == passCount)
|
result = "合格";
|
//else if (count - passCount < QsItemOqcItem.FreQty)
|
// result = "不合格";
|
else if (noCount >= QsItemOqcItem.FreQty)
|
result = "不合格";
|
var useTransactionWithOracle = SqlSugarHelper.UseTransactionWithOracle(
|
db =>
|
{
|
var commit = 0;
|
commit += db.Updateable<MesQaItemsDetectDetail5>()
|
.SetColumns(s => s.FcheckResu == result)
|
.SetColumns(s => s.FenterQty == count)
|
.Where(s => s.Id == detail.MainId)
|
.ExecuteCommand();
|
|
return commit;
|
});
|
//5.20xwt修改将更新主表检验结果字段放在IqcQaSubmit方法下
|
/*var isNull = db.Queryable<MesQaItemsDetectDetail5>()
|
.Where(s => s.ReleaseNo == detail.ReleaseNo && s.FcheckResu == null)
|
.Count();
|
|
if (isNull > 0) return 1;
|
|
|
//获取检验单的检验项目的个数
|
var sum = db.Queryable<MesQaItemsDetectDetail5>()
|
.Where(s => s.ReleaseNo == detail.ReleaseNo).Count();
|
|
if (sum == 0) return 1;
|
|
//获取检验单下的合格的检验项目个数
|
var icount = db.Queryable<MesQaItemsDetectDetail5>()
|
.Where(s => s.ReleaseNo == detail.ReleaseNo && s.FcheckResu == "合格")
|
.Count();
|
|
var FcheckResu = "不合格";
|
|
//实际个数等于理论个数时对检验单进行判定
|
if (sum == icount)
|
//合格的检验结果等于总检验数视为合格
|
FcheckResu = "合格";
|
|
var sysUser = db.Queryable<SysUser>()
|
.Where(s => s.Fcode == detail.CreateBy).First();
|
|
SqlSugarHelper.UseTransactionWithOracle(db =>
|
{
|
return db.Updateable<MesQaItemsDetect01>()
|
.SetColumns(s => s.FcheckResu == FcheckResu)
|
.SetColumns(s => s.FcheckDate == DateTime.Now)
|
.SetColumns(s => s.FcheckBy == sysUser.Fname)
|
.SetColumns(s => s.LastupdateBy == detail.CreateBy)
|
.SetColumns(s => s.LastupdateDate == DateTime.Now)
|
.Where(s => s.ReleaseNo == detail.ReleaseNo)
|
.ExecuteCommand();
|
});*/
|
// if (FcheckResu.Equals("不合格"))
|
//自动生成入库检异常对策
|
/// saveDetect02(detail.Id, detail.CreateBy);
|
|
return useTransactionWithOracle;
|
}
|
/* public int saveDetect02(decimal? gid, string? createBy)
|
{
|
var db = SqlSugarHelper.GetInstance();
|
|
var qsItemOqcReq =
|
db.Queryable<QsItemOqcReq>().Single(s => s.Id == gid);
|
|
var mesInvItemIns = db.Queryable<MesInvItemIns>()
|
.Single(s => s.BillNo == qsItemOqcReq.BillNo);
|
|
var mesSchemeResult = db.Queryable<MesSchemeResult>()
|
.Single(s => s.BillNo == mesInvItemIns.CbillNo);
|
|
var entity = new MesQaItemsDetect02();
|
entity.ItemNo = mesSchemeResult.BoardItem;
|
entity.BoardItem = mesSchemeResult.BoardItem;
|
entity.LineNo = mesSchemeResult.LineNo;
|
entity.Aufnr = mesSchemeResult.TaskNo;
|
entity.ReleaseNo = qsItemOqcReq.ReleaseNo;
|
entity.LotNo = qsItemOqcReq.BillNo;
|
entity.FcheckDate = qsItemOqcReq.FcheckDate;
|
entity.FcheckMemo = qsItemOqcReq.Remarks;
|
entity.Gid = qsItemOqcReq.Id;
|
// entity.PlanQty = qsItemOqcReq.FcheckDate;
|
|
|
entity.FcheckResu = "不合格";
|
entity.FcheckLevel = "严重";
|
entity.CreateDate = DateTime.Now;
|
entity.Factory = "10000";
|
entity.Company = "1000";
|
entity.Ftype = "4";
|
entity.Fversion = 0;
|
entity.Modify1Flag = 0;
|
entity.IpqcStatus = 0;
|
entity.Fsubmit = 1;
|
entity.CreateBy = createBy;
|
entity.FcheckBy = createBy;
|
|
return SqlSugarHelper.UseTransactionWithOracle(db => db
|
.Insertable(entity)
|
.ExecuteCommand());
|
}
|
*/
|
|
public LLJDto getXjDetail02ById(decimal? id)
|
{
|
var rkjDto = new LLJDto();
|
|
var db = SqlSugarHelper.GetInstance();
|
var qsItemOqcItem =
|
db.Queryable<MesQaItemsDetectDetail5>().Single(s => s.Id == id);
|
|
/* if (qsItemOqcItem.IsPass == 0)
|
qsItemOqcItem.Result = "不合格";
|
else if (qsItemOqcItem.IsPass == 1)
|
qsItemOqcItem.Result = "合格";
|
else
|
qsItemOqcItem.Result = "未完成";
|
|
if (qsItemOqcItem.Picture is { Length: > 0 })
|
qsItemOqcItem.imageData =
|
Convert.ToBase64String(qsItemOqcItem.Picture);
|
*/
|
//获取不合格数
|
var count = db.Queryable<MesQaItemsDetectDetail12>()
|
.Where(s => s.Fstand == "×" && s.MainId == id).Count();
|
|
qsItemOqcItem.Unqualified = count;
|
|
rkjDto.ItemXj01 = qsItemOqcItem;
|
|
|
rkjDto.ItemXj02s = db.Queryable<MesQaItemsDetectDetail12>()
|
.Where(s => s.MainId == id)
|
.ToList();
|
|
return rkjDto;
|
}
|
|
public int UpdateQSItemDetail(MesQaItemsDetectDetail12 detail)
|
{
|
var withOracle = SqlSugarHelper.UseTransactionWithOracle(db =>
|
{
|
return db.Updateable<MesQaItemsDetectDetail12>()
|
.SetColumns(s => s.LastupdateBy == detail.LastupdateBy)
|
// .SetColumns(s => s.LastupdateDate == DateTime.Now)
|
.SetColumnsIF(StringUtil.IsNotNullOrEmpty(detail.Fstand),
|
s => s.Fstand == detail.Fstand)
|
.SetColumnsIF(StringUtil.IsNotNullOrEmpty(detail.FcheckResu),
|
s => s.FcheckResu == detail.FcheckResu)
|
.Where(s => s.MainId == detail.MainId && s.Id == detail.Id)
|
.ExecuteCommand();
|
});
|
|
detail.CreateBy = detail.LastupdateBy;
|
|
withOracle += autoResult(detail);
|
|
return withOracle;
|
}
|
|
//更新检验明细已检、不合格数量
|
private int updateDetail5(MesQaItemsDetectDetail12 detail)
|
{
|
var db = SqlSugarHelper.GetInstance();
|
|
//查询这个检验项目下的检验数量
|
var count = db.Queryable<MesQaItemsDetectDetail12>()
|
.Where(s => s.MainId == detail.MainId).Count();
|
|
//获取不合格数
|
var countNo = db.Queryable<MesQaItemsDetectDetail12>()
|
.Where(s => s.MainId == detail.MainId && s.Fstand == "×").Count();
|
//更新检验明细已检数量
|
var withOracle = SqlSugarHelper.UseTransactionWithOracle(db =>
|
{
|
return db.Updateable<MesQaItemsDetectDetail5>()
|
.SetColumns(s => s.FenterQty == count)
|
.SetColumns(s => s.FngQty == countNo)
|
.Where(s => s.Id == detail.MainId)
|
.ExecuteCommand();
|
});
|
|
return withOracle;
|
}
|
|
//主表修改备注字段
|
public int saveRemarksGid(LLJDto dto)
|
{
|
return SqlSugarHelper.UseTransactionWithOracle(db =>
|
{
|
return db.Updateable<MesQaItemsDetect01>()
|
.SetColumns(it =>
|
it.FngDesc == dto.Remarks) //SetColumns是可以叠加的 写2个就2个字段赋值
|
.Where(it => it.ReleaseNo == dto.releaseNo)
|
.ExecuteCommand();
|
});
|
}
|
|
//子表修改备注字段
|
public int saveRemarksPid(LLJDto dto)
|
{
|
return SqlSugarHelper.UseTransactionWithOracle(db =>
|
{
|
return db.Updateable<MesQaItemsDetectDetail5>()
|
.SetColumns(it =>
|
it.Funit == dto.Remarks) //SetColumns是可以叠加的 写2个就2个字段赋值
|
.Where(it => it.Id == dto.pid)
|
.ExecuteCommand();
|
});
|
}
|
|
//删除主表并且连级删除子表和孙表
|
public int removeXJ(string? releaseNo)
|
{
|
var withOracle = SqlSugarHelper.UseTransactionWithOracle(db =>
|
{
|
var commit = 0;
|
//删除主表
|
commit += db.Deleteable<MesQaItemsDetect01>()
|
.Where(s => s.ReleaseNo == releaseNo)
|
.ExecuteCommand();
|
//删除子表
|
commit += db.Deleteable<MesQaItemsDetectDetail5>()
|
.Where(s => s.ReleaseNo == releaseNo)
|
.ExecuteCommand();
|
//删除孙表
|
commit += db.Deleteable<MesQaItemsDetectDetail12>()
|
.Where(s => s.ReleaseNo == releaseNo)
|
.ExecuteCommand();
|
return commit;
|
});
|
|
return withOracle;
|
}
|
|
public bool IqcQaSubmit(LLJDto dto)
|
{
|
var (factory, company) = UserUtil.GetFactory(dto.userNo);
|
try
|
{
|
// 定义输出参数
|
var outputResult = new SugarParameter("o_Result", null,
|
DbType.Int32, ParameterDirection.Output,
|
4000);
|
|
var outputMessage = new SugarParameter("o_Msg", null,
|
DbType.String,
|
ParameterDirection.Output, 4000);
|
|
// 定义输入参数
|
var parameters = new List<SugarParameter>
|
{
|
new("PI_FACTORY", factory,
|
DbType.String, ParameterDirection.Input),
|
new("PI_COMPANY", company, DbType.String,
|
ParameterDirection.Input),
|
new("p_Release_No", dto.releaseNo, DbType.String,
|
ParameterDirection.Input),
|
new("p_User", dto.userNo, DbType.String,
|
ParameterDirection.Input),
|
outputResult,
|
outputMessage
|
};
|
|
var db = SqlSugarHelper.GetInstance();
|
|
// 使用 SqlSugar 执行存储过程
|
db.Ado.ExecuteCommand(
|
"BEGIN Prc_Mes_Iqc_Qa_Submit83(:PI_FACTORY, :PI_COMPANY, :p_Release_No, :p_User, :o_Result, :o_Msg); END;",
|
parameters.ToArray());
|
|
// 获取输出参数的值
|
var resultValue = outputResult.Value?.ToString();
|
var messageValue = outputMessage.Value?.ToString();
|
|
if ("1".Equals(resultValue)) throw new Exception(messageValue);
|
|
var sum = db.Queryable<MesQaItemsDetectDetail5>()
|
.Where(s => s.ReleaseNo == dto.releaseNo).Count();
|
|
if (sum == 0) return true;
|
|
var icount = db.Queryable<MesQaItemsDetectDetail5>()
|
.Where(s => s.ReleaseNo == dto.releaseNo && s.FcheckResu == "合格")
|
.Count();
|
|
var FcheckResu = "不合格";
|
|
if (sum == icount)
|
FcheckResu = "合格";
|
|
var sysUser = db.Queryable<SysUser>()
|
.Where(s => s.Fcode == dto.userNo).First();
|
|
SqlSugarHelper.UseTransactionWithOracle(db =>
|
{
|
return db.Updateable<MesQaItemsDetect01>()
|
.SetColumns(s => s.FcheckResu == FcheckResu)
|
.SetColumns(s => s.FcheckDate == DateTime.Now)
|
.SetColumns(s => s.FcheckBy == sysUser.Fname)
|
.SetColumns(s => s.LastupdateBy == dto.userNo)
|
.SetColumns(s => s.LastupdateDate == DateTime.Now)
|
.Where(s => s.ReleaseNo == dto.releaseNo)
|
.ExecuteCommand();
|
});
|
return true;
|
}
|
catch (Exception ex)
|
{
|
throw new Exception(ex.Message);
|
}
|
}
|
}
|