using System; using System.Collections.Generic; using AlibabaCloud.OpenApiClient.Models; using AlibabaCloud.SDK.Dingtalkworkflow_1_0; using AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models; using AlibabaCloud.SDK.Dingtalkoauth2_1_0; using AlibabaCloud.SDK.Dingtalkoauth2_1_0.Models; using AlibabaCloud.TeaUtil.Models; using Tea; using System.Diagnostics; using MES.Service.Dto.webApi; using MES.Service.Modes; using SqlSugar; using MES.Service.DB; using MES.Service.Modes.QcIssueResult; using MES.Service.Dto.webApi.QcIssueResult; using MES.Service.Dto.webApi.DeliveryNote; using MES.Service.Modes.DeliveryNote; using Newtonsoft.Json; using Oracle.ManagedDataAccess.Client; using System.Data; namespace MES.Service.service.QcIssueResult; //异常处置单结果表 [SugarTable("MES_QA_ITEMS_DETECT_01")] public class QcIssueResultManager: Repository { /** * 使用 Token 初始化账号Client * @return Client * @throws Exception */ public static AlibabaCloud.SDK.Dingtalkworkflow_1_0.Client CreateClient() { AlibabaCloud.OpenApiClient.Models.Config config = new AlibabaCloud.OpenApiClient.Models.Config(); config.Protocol = "https"; config.RegionId = "central"; return new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Client(config); } public static AlibabaCloud.SDK.Dingtalkoauth2_1_0.Client CreateClient1() { AlibabaCloud.OpenApiClient.Models.Config config = new AlibabaCloud.OpenApiClient.Models.Config(); config.Protocol = "https"; config.RegionId = "central"; return new AlibabaCloud.SDK.Dingtalkoauth2_1_0.Client(config); } /** * 获取钉钉的 Access Token * @return string 返回获取到的 Access Token */ public string GetToken() { AlibabaCloud.SDK.Dingtalkoauth2_1_0.Client client = CreateClient1(); AlibabaCloud.SDK.Dingtalkoauth2_1_0.Models.GetAccessTokenRequest getAccessTokenRequest = new AlibabaCloud.SDK.Dingtalkoauth2_1_0.Models.GetAccessTokenRequest { AppKey = "dingyzos0r1bizj7g6lr", AppSecret = "-HP4RvK2OUbqhG3iBUpd_TPe5MZRj8cfLc0b8Skt8rhC3I38kVLY9SS8P3kLWFcH", }; try { var response = client.GetAccessToken(getAccessTokenRequest); return response.Body.AccessToken; // 返回获取到的 Access Token } catch (TeaException err) { Console.WriteLine($"TeaException: Code={err.Code}, Message={err.Message}"); return null; } catch (Exception _err) { Console.WriteLine($"Exception: {_err.Message}"); return null; } } /** * 查看有无自选审批节点 * @return string 返回启动结果 */ public string GetForecast() { // 获取 Access Token string accessToken = GetToken(); if (string.IsNullOrEmpty(accessToken)) { return "获取 Access Token 失败"; } AlibabaCloud.SDK.Dingtalkworkflow_1_0.Client client = CreateClient(); AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.ProcessForecastHeaders processForecastHeaders = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.ProcessForecastHeaders(); processForecastHeaders.XAcsDingtalkAccessToken = accessToken; AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.ProcessForecastRequest.ProcessForecastRequestFormComponentValues formComponentValues0 = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.ProcessForecastRequest.ProcessForecastRequestFormComponentValues { Name = "PhoneField", Value = "123xxxxxxxx", }; AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.ProcessForecastRequest processForecastRequest = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.ProcessForecastRequest { ProcessCode = "PROC-BBA5632D-DC7C-4267-A3E2-757E2B7023BC", DeptId = 1, UserId = "923188102", FormComponentValues = new List { formComponentValues0 }, }; try { var response = client.ProcessForecastWithOptions(processForecastRequest, processForecastHeaders, new AlibabaCloud.TeaUtil.Models.RuntimeOptions()); return $"钉钉工作流实例启动成功: {Newtonsoft.Json.JsonConvert.SerializeObject(response.Body)}"; } catch (TeaException err) { return $"TeaException: Code={err.Code}, Message={err.Message}"; } catch (Exception _err) { return $"Exception: {_err.Message}"; } } /** * 启动钉钉工作流实例 * @return string 返回启动结果 */ public string GetProcessNo(GetQcIssueResultDetail getQcIssueResultDetail) { var db = SqlSugarHelper.GetInstance(); var mapping = db.Queryable() .Where(t => t.DingDingName == getQcIssueResultDetail.Fname) .Select(t => new DingNameCode { DingDingCode=t.DingDingCode, }) .ToList(); if (mapping.Any()) { string UserId = mapping.FirstOrDefault().DingDingCode; // 使用 JSON 序列化输出对象的详细内容 string getQcIssueResultDetailJson = JsonConvert.SerializeObject(getQcIssueResultDetail, Formatting.Indented); Debug.WriteLine("GetQcIssueResultDetail: " + getQcIssueResultDetailJson); // 获取 Access Token string accessToken = GetToken(); if (string.IsNullOrEmpty(accessToken)) { return "获取 Access Token 失败"; } AlibabaCloud.SDK.Dingtalkworkflow_1_0.Client client = CreateClient(); AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceHeaders startProcessInstanceHeaders = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceHeaders(); Debug.WriteLine(accessToken); startProcessInstanceHeaders.XAcsDingtalkAccessToken = accessToken; // 使用获取到的 Access Token AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues formComponentValues1 = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues { Name = "TextField-K2AD4O5B", Value = getQcIssueResultDetail.ItemName, }; AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues formComponentValues2 = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues { Name = "TextField_DYFD1EESLVC0", Value = getQcIssueResultDetail.ItemModel, }; AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues formComponentValues3 = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues { Name = "TextField_1AVN2BNVY1OG0", Value = getQcIssueResultDetail.FbatchQty, }; AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues formComponentValues4 = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues { Name = "TextField_1DKEMESOOGSG0", Value = getQcIssueResultDetail.SuppName, }; AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues formComponentValues5 = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues { Name = "DDDateField_20LKOACGMLXC0", Value = DateTime.Now.ToString("yyyy-MM-dd"), }; AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues formComponentValues6 = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues { Name = "TextField_WBNBWGFHR000", Value = getQcIssueResultDetail.CgOrder, }; AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues formComponentValues7 = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues { Name = "TextareaField_1ZP3BDPMYY800", Value = getQcIssueResultDetail.remark, }; AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues formComponentValues8 = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues { Name = "SignatureField_SKF9Q82DZUO0", Value = getQcIssueResultDetail.Fname, }; AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues formComponentValues9 = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues { Name = "DDSelectField_1AK82Q8A2NB40", Value = "退货", }; AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues formComponentValues10 = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues { Name = "TextareaField_1LM82CPPR35S0", Value = "挑选内容", }; AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues formComponentValues11 = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues { Name = "TextareaField_AK4JLDDNS2O0", Value = "让步接收内容", }; AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues formComponentValues12 = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues { Name = "TextareaField_K69R6770WLS0", Value = "退货备注", }; AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues formComponentValues13 = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues { Name = "TextareaField_194UFGLMI02O0", Value = "报废备注", }; AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues formComponentValues14 = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues { Name = "DDSelectField_1RN2L4RWQ0AO0", Value = "否", }; AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues formComponentValues15 = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues { Name = "InnerContactField_WNG7AU9R2AO0", Value = "加签", }; AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues formComponentValues16 = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues { Name = "DDAttachment_23VB5MMC1R1C0", Value = "附件", }; AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestTargetSelectActioners targetSelectActioners0 = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestTargetSelectActioners { ActionerKey = "null", ActionerUserIds = new List { UserId }, }; AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestApprovers approvers0 = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestApprovers { ActionType = "OR", UserIds = new List { UserId }, }; AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest startProcessInstanceRequest = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest { OriginatorUserId = UserId, ProcessCode = "PROC-BBA5632D-DC7C-4267-A3E2-757E2B7023BC", DeptId = 1, FormComponentValues = new List { formComponentValues1,formComponentValues2,formComponentValues3, formComponentValues4, formComponentValues5, formComponentValues6, formComponentValues7, formComponentValues8, formComponentValues9,formComponentValues10, formComponentValues11, formComponentValues12, formComponentValues13, formComponentValues14 }, TargetSelectActioners = new List { targetSelectActioners0 }, Approvers = new List { approvers0 }, CcList = new List { UserId }, CcPosition = "START", }; // 序列化 FormComponentValues 列表为 JSON 格式 string formComponentValuesJson = JsonConvert.SerializeObject(startProcessInstanceRequest.FormComponentValues, Formatting.Indented); Debug.WriteLine("FormComponentValues: " + formComponentValuesJson); try { string requestContent = Newtonsoft.Json.JsonConvert.SerializeObject(startProcessInstanceRequest); Debug.WriteLine("startProcessInstanceRequest内容:"); Debug.WriteLine(requestContent); var response = client.StartProcessInstanceWithOptions(startProcessInstanceRequest, startProcessInstanceHeaders, new RuntimeOptions()); return $"钉钉工作流实例启动成功: {Newtonsoft.Json.JsonConvert.SerializeObject(response.Body)}"; } catch (TeaException err) { string requestContent = Newtonsoft.Json.JsonConvert.SerializeObject(startProcessInstanceRequest); Debug.WriteLine("startProcessInstanceRequest内容:"); Debug.WriteLine(startProcessInstanceRequest); return $"TeaException: Code={err.Code}, Message={err.Message}"; } catch (Exception _err) { return $"Exception: {_err.Message}"; } } else { return "您不是公司成员或还未被加入到数据库中或名字填写错误,总之未找到匹配的用户信息"; } } /** * 将带有流程号和检验单号的新记录插入表中 */ public dynamic SaveProcessNo(string ReleaseNo,string ProcessNo) { var QcIssueResults = GetQcIssueResults(ReleaseNo, ProcessNo); return UseTransaction(db => { return SaveOrUpdateData(db, QcIssueResults) ? 1 : 0; }) > 0; } public QcIssueResults GetQcIssueResults(string ReleaseNo, string ProcessNo) { var QcIssueResults = new QcIssueResults { ProcessNo = ProcessNo, ReleaseNo = ReleaseNo, QcStatu = "", TCSTATU ="" }; return QcIssueResults; } /** * 根据流程号更新表的记录 */ public dynamic Save(ErpQcIssueResult erpQcIssueResult) { var mesQcIssueResults = GetMesQcIssueResults(erpQcIssueResult); return UseTransaction(db => { return SaveOrUpdateData(db, mesQcIssueResults) ? 1 : 0; }) > 0; } public QcIssueResults GetMesQcIssueResults(ErpQcIssueResult erpQcIssueResult) { var mesQcIssueResults = new QcIssueResults { ProcessNo = erpQcIssueResult.ProcessNo, FReview = erpQcIssueResult.FReview, QcStatu = erpQcIssueResult.QCSTATU, QCREMARK = erpQcIssueResult.QcRemark, SELECTREMARK = erpQcIssueResult.SelectRemark, DATA = erpQcIssueResult.DATA, CGORDER = erpQcIssueResult.CGORDER, SJPLACE = erpQcIssueResult.SJPLACE, NUM = erpQcIssueResult.NUM, BFREMARK = erpQcIssueResult.BFREMARK, THREMARK = erpQcIssueResult.THREMARK, TCSTATU = erpQcIssueResult.TCSTATU, MODEL =erpQcIssueResult.MODEL, RBJSREMARK =erpQcIssueResult.RBJSREMARK, RETURN_DATE=System.DateTime.Now }; return mesQcIssueResults; } /** * 插入和更新数据库表 */ private bool SaveOrUpdateData(SqlSugarScope db, QcIssueResults qcIssueResults) { // 查询 QcIssueResults 表中是否存在匹配的记录 var mapping = db.Queryable() .Where(t => t.ProcessNo == qcIssueResults.ProcessNo) .Select(t => new QcIssueResults { ReleaseNo = t.ReleaseNo, }) .ToList(); if (mapping.Any()) { if (qcIssueResults.TCSTATU == "是") { if (qcIssueResults.QcStatu == "拒绝") { string ReleaseNo = mapping.FirstOrDefault().ReleaseNo; // 只更新 ReleaseNo 和 FReview 两个字段 var updateResult = db.Updateable() .SetColumns(t => new QcIssueResults { ReleaseNo = ReleaseNo, FReview = qcIssueResults.FReview, QcStatu = qcIssueResults.QcStatu, QCREMARK = qcIssueResults.QCREMARK, SELECTREMARK = qcIssueResults.SELECTREMARK, DATA = qcIssueResults.DATA, CGORDER = qcIssueResults.CGORDER, SJPLACE = qcIssueResults.SJPLACE, NUM = qcIssueResults.NUM, BFREMARK = qcIssueResults.BFREMARK, THREMARK = qcIssueResults.THREMARK, TCSTATU = qcIssueResults.TCSTATU, MODEL = qcIssueResults.MODEL, RBJSREMARK = qcIssueResults.RBJSREMARK, RETURN_DATE=System.DateTime.Now }) .Where(t => t.ProcessNo == qcIssueResults.ProcessNo) // 显式指定更新条件 .ExecuteCommand(); // 查询 UpdateMesQaItems 表中是否存在匹配的记录 var existingRecord = db.Queryable() .Where(it => it.ReleaseNo == ReleaseNo) .First(); // 使用 First 获取第一条记录 Debug.WriteLine($"查询到的 mapping: {JsonConvert.SerializeObject(existingRecord)}"); if (existingRecord != null) { bool returnValue = false; try { //定义输入参数 var inputParam1 = new SugarParameter("pi_no", existingRecord.ReleaseNo); var inputParam2 = new SugarParameter("pi_user", "PL017"); // 定义输出参数 var outParam1 = new SugarParameter("po_result", null, true); var outParam2 = new SugarParameter("po_msg", null, true); // 使用 SqlSugar 执行存储过程 Db.Ado.ExecuteCommand("BEGIN PRC_MES_IQC_CG_REVOCK(:pi_no,:pi_user,:po_result,:po_msg ); END;", inputParam1, inputParam2, outParam1, outParam2); // 获取输出参数的值 int result = int.Parse((string)outParam1.Value); string message = outParam2.Value == DBNull.Value ? string.Empty : (string)outParam2.Value; if (result == 1) { //存储过程失败则事务进行回滚 db.Ado.RollbackTran(); throw new Exception(message); } // 提交事务 db.Ado.CommitTran(); return true; } catch (Exception ex) { Console.WriteLine("Exception: " + ex.Message); return false; } } else { throw new Exception("未找到需要更新的记录"); } } else { string ReleaseNo = mapping.FirstOrDefault().ReleaseNo; // 只更新 ReleaseNo 和 FReview 两个字段 var updateResult = db.Updateable() .SetColumns(t => new QcIssueResults { ReleaseNo = ReleaseNo, FReview = qcIssueResults.FReview, QcStatu = qcIssueResults.QcStatu, QCREMARK = qcIssueResults.QCREMARK, SELECTREMARK = qcIssueResults.SELECTREMARK, DATA = qcIssueResults.DATA, CGORDER = qcIssueResults.CGORDER, SJPLACE = qcIssueResults.SJPLACE, NUM = qcIssueResults.NUM, BFREMARK = qcIssueResults.BFREMARK, THREMARK = qcIssueResults.THREMARK, TCSTATU = qcIssueResults.TCSTATU, MODEL = qcIssueResults.MODEL, RBJSREMARK = qcIssueResults.RBJSREMARK, RETURN_DATE = System.DateTime.Now }) .Where(t => t.ProcessNo == qcIssueResults.ProcessNo) // 显式指定更新条件 .ExecuteCommand(); // 查询 UpdateMesQaItems 表中是否存在匹配的记录 var existingRecord = db.Queryable() .Where(it => it.ReleaseNo == ReleaseNo) .First(); // 使用 First 获取第一条记录 Debug.WriteLine($"查询到的 mapping: {JsonConvert.SerializeObject(existingRecord)}"); if (existingRecord != null) { // 更新 UpdateMesQaItems 表中的字段 existingRecord.FngHandle = "特采直接使用"; existingRecord.FMRMODE = null; // 执行更新操作 updateResult = db.Updateable(existingRecord).ExecuteCommand(); if (updateResult > 0) { try { //定义输入参数 var inputParam1 = new SugarParameter("PI_BILLNO", ReleaseNo); var inputParam2 = new SugarParameter("PI_USER", "PL017"); var inputParam3 = new SugarParameter("PI_HANDLE", "特采直接使用"); var inputParam4 = new SugarParameter("PI_TLFS", ""); var inputParam5 = new SugarParameter("PI_REMARK", ""); // 定义输出参数 var outParam1 = new SugarParameter("PO_RESULT", null, true); var outParam2 = new SugarParameter("PO_MSG", null, true); // 使用 SqlSugar 执行存储过程 Db.Ado.ExecuteCommand("BEGIN PRC_MES_IQC_CG_SUBMIT(:PI_BILLNO,:PI_BILLNO,:PI_HANDLE,:PI_TLFS,:PI_REMARK,:PO_RESULT,:PO_MSG); END;", inputParam1, inputParam2, inputParam3, inputParam4, inputParam5, outParam1, outParam2); // 获取输出参数的值 int result = int.Parse((string)outParam1.Value); string message = outParam2.Value == DBNull.Value ? string.Empty : (string)outParam2.Value; if (result == 1) { //存储过程失败则事务进行回滚 db.Ado.RollbackTran(); throw new Exception(message); } // 提交事务 db.Ado.CommitTran(); return true; } catch (Exception ex) { Console.WriteLine("Exception: " + ex.Message); return false; } } return updateResult > 0; // 如果更新成功,返回 true } else { throw new Exception("未找到需要更新的记录"); } } } else { if (qcIssueResults.QcStatu == "拒绝") { string ReleaseNo = mapping.FirstOrDefault().ReleaseNo; // 只更新 ReleaseNo 和 FReview 两个字段 var updateResult = db.Updateable() .SetColumns(t => new QcIssueResults { ReleaseNo = ReleaseNo, FReview = qcIssueResults.FReview, QcStatu = qcIssueResults.QcStatu, QCREMARK = qcIssueResults.QCREMARK, SELECTREMARK = qcIssueResults.SELECTREMARK, DATA = qcIssueResults.DATA, CGORDER = qcIssueResults.CGORDER, SJPLACE = qcIssueResults.SJPLACE, NUM = qcIssueResults.NUM, BFREMARK = qcIssueResults.BFREMARK, THREMARK = qcIssueResults.THREMARK, TCSTATU = qcIssueResults.TCSTATU, MODEL = qcIssueResults.MODEL, RBJSREMARK = qcIssueResults.RBJSREMARK, RETURN_DATE = System.DateTime.Now }) .Where(t => t.ProcessNo == qcIssueResults.ProcessNo) // 显式指定更新条件 .ExecuteCommand(); // 查询 UpdateMesQaItems 表中是否存在匹配的记录 var existingRecord = db.Queryable() .Where(it => it.ReleaseNo == ReleaseNo) .First(); // 使用 First 获取第一条记录 Console.WriteLine($"查询到的 mapping: {JsonConvert.SerializeObject(existingRecord)}"); if (existingRecord != null) { try { //定义输入参数 var inputParam1 = new SugarParameter("pi_no", existingRecord.ReleaseNo); var inputParam2 = new SugarParameter("pi_user", "PL017"); // 定义输出参数 var outParam1 = new SugarParameter("po_result", null, true); var outParam2 = new SugarParameter("po_msg", null, true); // 使用 SqlSugar 执行存储过程 Db.Ado.ExecuteCommand("BEGIN PRC_MES_IQC_CG_REVOCK(:pi_no,:pi_user,:po_result,:po_msg ); END;", inputParam1, inputParam2, outParam1, outParam2); // 获取输出参数的值 int result = int.Parse((string)outParam1.Value); string message = outParam2.Value == DBNull.Value ? string.Empty : (string)outParam2.Value; if (result == 1) { //存储过程失败则事务进行回滚 db.Ado.RollbackTran(); throw new Exception(message); } // 提交事务 db.Ado.CommitTran(); return true; } catch (Exception ex) { Console.WriteLine("Exception: " + ex.Message); return false; } } else { throw new Exception("未找到需要更新的记录"); } } else { string ReleaseNo = mapping.FirstOrDefault().ReleaseNo; // 只更新 ReleaseNo 和 FReview 两个字段 var updateResult = db.Updateable() .SetColumns(t => new QcIssueResults { ReleaseNo = ReleaseNo, FReview = qcIssueResults.FReview, QcStatu = qcIssueResults.QcStatu, QCREMARK = qcIssueResults.QCREMARK, SELECTREMARK = qcIssueResults.SELECTREMARK, DATA = qcIssueResults.DATA, CGORDER = qcIssueResults.CGORDER, SJPLACE = qcIssueResults.SJPLACE, NUM = qcIssueResults.NUM, BFREMARK = qcIssueResults.BFREMARK, THREMARK = qcIssueResults.THREMARK, TCSTATU = qcIssueResults.TCSTATU, MODEL = qcIssueResults.MODEL, RBJSREMARK = qcIssueResults.RBJSREMARK, }) .Where(t => t.ProcessNo == qcIssueResults.ProcessNo) // 显式指定更新条件 .ExecuteCommand(); // 查询 UpdateMesQaItems 表中是否存在匹配的记录 var existingRecord = db.Queryable() .Where(it => it.ReleaseNo == ReleaseNo) .First(); // 使用 First 获取第一条记录 Debug.WriteLine($"查询到的 mapping: {JsonConvert.SerializeObject(existingRecord)}"); if (existingRecord != null) { // 更新 UpdateMesQaItems 表中的字段 existingRecord.FngHandle = qcIssueResults.FReview; if (existingRecord.FngHandle == "退货") { existingRecord.FMRMODE = "退料补料"; } else if (existingRecord.FngHandle == "挑选使用") { existingRecord.FMRMODE = "退料补料"; } else if (existingRecord.FngHandle == "报废") { existingRecord.FMRMODE = "退料补料"; } else { existingRecord.FMRMODE = null; } // 执行更新操作 updateResult = db.Updateable(existingRecord).ExecuteCommand(); if(updateResult > 0) { try { //定义输入参数 var inputParam1 = new SugarParameter("PI_BILLNO", ReleaseNo); var inputParam2 = new SugarParameter("PI_USER", "PL017"); var inputParam3 = new SugarParameter("PI_HANDLE", existingRecord.FngHandle); var inputParam4 = new SugarParameter("PI_TLFS", existingRecord.FMRMODE); var inputParam5 = new SugarParameter("PI_REMARK", ""); // 定义输出参数 var outParam1 = new SugarParameter("PO_RESULT", null, true); var outParam2 = new SugarParameter("PO_MSG", null, true); // 使用 SqlSugar 执行存储过程 Db.Ado.ExecuteCommand("BEGIN PRC_MES_IQC_CG_SUBMIT(:PI_BILLNO,:PI_BILLNO,:PI_HANDLE,:PI_TLFS,:PI_REMARK,:PO_RESULT,:PO_MSG); END;", inputParam1, inputParam2, inputParam3, inputParam4, inputParam5, outParam1, outParam2); // 获取输出参数的值 int result = int.Parse((string)outParam1.Value); string message = outParam2.Value == DBNull.Value ? string.Empty : (string)outParam2.Value; if (result == 1) { //存储过程失败则事务进行回滚 db.Ado.RollbackTran(); throw new Exception(message); } // 提交事务 db.Ado.CommitTran(); return true; } catch (Exception ex) { Console.WriteLine("Exception: " + ex.Message); return false; } } return updateResult > 0; // 如果更新成功,返回 true } else { throw new Exception("未找到需要更新的记录"); } } } } else { // 如果 mapping 为空,插入新记录到 QcIssueResults 表 var orUpdate = base.Insert(qcIssueResults); if (orUpdate) return true; throw new NotImplementedException("插入或更新失败"); } } }