using MES.Service.DB; using MES.Service.Dto.service; using MES.Service.Modes; using MES.Service.service.QC; using MES.Service.util; using Microsoft.AspNetCore.Mvc; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using SixLabors.ImageSharp.Drawing; using SqlSugar; using System.Collections.Generic; using System.Data; using System.Dynamic; using DbType = System.Data.DbType; namespace MESApplication.Controllers.QC; [Route("api/[controller]")] [ApiController] public class SJController : ControllerBase { [HttpPost("GetMaxBillNo")] public ResponseResult GetMaxBillNo() { try { dynamic resultInfos = new ExpandoObject(); var tbBillList = new SJService().getMaxBillNo(); resultInfos.tbBillList = tbBillList; return new ResponseResult { status = 0, message = "OK", data = resultInfos }; } catch (Exception ex) { return ResponseResult.ResponseError(ex); } } [HttpPost("GetPage")] public ResponseResult GetPage([FromBody] SJPageResult queryObj) { try { dynamic resultInfos = new ExpandoObject(); var (item, totalCount) = new SJService().getPage(queryObj); resultInfos.tbBillList = item; return new ResponseResult { status = 0, message = "OK", data = resultInfos, TotalCount = totalCount }; } catch (Exception ex) { return ResponseResult.ResponseError(ex); } } //SetQSItems [HttpPost("SetQSItems")] public ResponseResult SetQSItems([FromBody] JObject data) { var itemNo = data["itemNo"].ToString(); try { dynamic resultInfos = new ExpandoObject(); var tbBillList = new SJService(); var detail021 = tbBillList.SetQSItems(itemNo); resultInfos.tbBillList = detail021; return new ResponseResult { status = 0, message = "OK", data = resultInfos }; } catch (Exception ex) { return ResponseResult.ResponseError(ex); } } [HttpPost("Save")] public ResponseResult Save([FromBody] QsItem item) { try { dynamic resultInfos = new ExpandoObject(); var tbBillList = new SJService(); var detail021 = tbBillList.Save(item); resultInfos.tbBillList = detail021; return new ResponseResult { status = 0, message = "OK", data = resultInfos }; } catch (Exception ex) { return ResponseResult.ResponseError(ex); } } //SaveItem [HttpPost("SaveItem")] public ResponseResult SaveItem([FromBody] QsItem item) { try { dynamic resultInfos = new ExpandoObject(); var tbBillList = new SJService(); var detail021 = tbBillList.SaveItem(item); resultInfos.tbBillList = detail021; return new ResponseResult { status = 0, message = "OK", data = resultInfos }; } catch (Exception ex) { return ResponseResult.ResponseError(ex); } } //getQSItems [HttpPost("getQSItems")] public ResponseResult getQSItems([FromBody] JObject data) { var pid = data["pid"]?.ToString(); var id = data["id"]?.ToString(); try { dynamic resultInfos = new ExpandoObject(); var tbBillList = new SJService(); var detail021 = tbBillList.getQSItems(Convert.ToDecimal(pid), Convert.ToDecimal(id)); resultInfos.tbBillList = detail021; return new ResponseResult { status = 0, message = "OK", data = resultInfos }; } catch (Exception ex) { return ResponseResult.ResponseError(ex); } } [HttpPost("SetQSItemDetail")] public ResponseResult SetQSItemDetail([FromBody] QsItemIpiItemDetail detail) { try { dynamic resultInfos = new ExpandoObject(); var tbBillList = new SJService(); var detail021 = tbBillList.SetQSItemDetail(detail); resultInfos.tbBillList = detail021; return new ResponseResult { status = 0, message = "OK", data = resultInfos }; } catch (Exception ex) { return ResponseResult.ResponseError(ex); } } [HttpPost("getQSItemDetail")] public ResponseResult getQSItemDetail([FromBody] JObject data) { var pid = data["pid"]?.ToString(); var gid = data["gid"]?.ToString(); try { dynamic resultInfos = new ExpandoObject(); var tbBillList = new SJService(); var detail021 = tbBillList.getQSItemDetail(Convert.ToDecimal(pid), Convert.ToDecimal(gid)); resultInfos.tbBillList = detail021; return new ResponseResult { status = 0, message = "OK", data = resultInfos }; } catch (Exception ex) { return ResponseResult.ResponseError(ex); } } [HttpPost("UpdateQSItemDetail")] public ResponseResult UpdateQSItemDetail( [FromBody] QsItemIpiItemDetail detail) { try { dynamic resultInfos = new ExpandoObject(); var tbBillList = new SJService(); var detail021 = tbBillList.UpdateQSItemDetail(detail); resultInfos.tbBillList = detail021; return new ResponseResult { status = 0, message = "OK", data = resultInfos }; } catch (Exception ex) { return ResponseResult.ResponseError(ex); } } //saveRemarksGid [HttpPost("saveRemarksGid")] public ResponseResult saveRemarksGid([FromBody] QsItem rkjDto) { try { dynamic resultInfos = new ExpandoObject(); var tbBillList = new SJService().saveRemarksGid(rkjDto); resultInfos.tbBillList = tbBillList; return new ResponseResult { status = 0, message = "OK", data = resultInfos }; } catch (Exception ex) { return ResponseResult.ResponseError(ex); } } //saveRemarksPid [HttpPost("saveRemarksPid")] public ResponseResult saveRemarksPid([FromBody] QsItem rkjDto) { try { dynamic resultInfos = new ExpandoObject(); var tbBillList = new SJService().saveRemarksPid(rkjDto); resultInfos.tbBillList = tbBillList; return new ResponseResult { status = 0, message = "OK", data = resultInfos }; } catch (Exception ex) { return ResponseResult.ResponseError(ex); } } //saveRemarksById [HttpPost("saveRemarksById")] public ResponseResult saveRemarksById([FromBody] QsItem rkjDto) { try { dynamic resultInfos = new ExpandoObject(); var tbBillList = new SJService().saveRemarksById(rkjDto); resultInfos.tbBillList = tbBillList; return new ResponseResult { status = 0, message = "OK", data = resultInfos }; } catch (Exception ex) { return ResponseResult.ResponseError(ex); } } //removeSJ [HttpPost("removeSJ")] public ResponseResult removeSJ([FromBody] JObject data) { var id = data["id"]?.ToString(); try { dynamic resultInfos = new ExpandoObject(); var tbBillList = new SJService().removeXJ(Convert.ToDecimal(id)); resultInfos.tbBillList = tbBillList; return new ResponseResult { status = 0, message = "OK", data = resultInfos }; } catch (Exception ex) { return ResponseResult.ResponseError(ex); } } //IqcQaSubmit [HttpPost("SJQaSubmit")] public ResponseResult SJQaSubmit(LLJDto rkjDto) { try { OracleSQLHelper SQLHelper = new(); //------------------ SN扫码校验 ------------------ var sql1 = @"select SCAN_ITEM from ZMZ_TEST.MES_SJ_SCAN_ITEM_CK where mid='" + rkjDto.gid + "' and sn_no is null"; var dataTable1 = SQLHelper.ExecuteQuery(sql1); string msg = ""; for (var i = 0; i < dataTable1.Rows.Count; i++) { msg += "【" + dataTable1.Rows[i]["SCAN_ITEM"].ToString() + "】"; } if (!string.IsNullOrEmpty(msg)) { return new ResponseResult { status = 1, message = msg + "未进行SN扫码确认!", data = "" }; } //------------------ 图像一致性校验 ------------------ var msg1 = new SJService().YzxImgVerify(rkjDto.gid.ToString()); if (msg1[0] == "1") { return new ResponseResult { status = int.Parse(msg1[0]), message = msg1[1], data = "" }; } //------------------ 不合格图片是否上传校验 ------------------ var sql2 = @"select A.id, A.PROJ_NAME, B.id as id2 from QS_ITEM_IPI_ITEM A left join MES_QS_IMAGE B on 777 || A.ID = B.FID where A.PID = '" + rkjDto.gid + @"' and B.id is null and IS_PASS = 0"; var dt2 = SQLHelper.ExecuteQuery(sql2); if (dt2.Rows.Count > 0) { string err = ""; for (int i = 0; i < dt2.Rows.Count; i++) { err += "【" + dt2.Rows[i]["PROJ_NAME"].ToString() + "】"; } return new ResponseResult { status = 1, message = err + "不合格图片未上传!", data = "" }; } //------------------ 必填项图片是否上传校验 ------------------ var sql3 = @"select A.id, A.PROJ_NAME, B.id as id2 from QS_ITEM_IPI_ITEM A left join MES_QS_IMAGE B on 777 || A.ID = B.FID where A.PID = '" + rkjDto.gid + @"' and B.id is null and UP_FILE = 1"; var dt3 = SQLHelper.ExecuteQuery(sql3); if (dt3.Rows.Count > 0) { string err = ""; for (int i = 0; i < dt3.Rows.Count; i++) { err += "【" + dt3.Rows[i]["PROJ_NAME"].ToString() + "】"; } return new ResponseResult { status = 1, message = err + "必填项图片未上传!", data = "" }; } //------------------ 新增校验:检查是否存在未完成(IS_PASS is null) ------------------ var sqlPass = @"select ID, PROJ_NAME from QS_ITEM_IPI_ITEM where PID = '" + rkjDto.gid + @"' and IS_PASS is null"; var dtPass = SQLHelper.ExecuteQuery(sqlPass); if (dtPass.Rows.Count > 0) { string err = ""; for (int i = 0; i < dtPass.Rows.Count; i++) { err += "【" + dtPass.Rows[i]["PROJ_NAME"].ToString() + "】"; } return new ResponseResult { status = 1, message = err + "项目未完成,不允许提交检验!", data = "" }; } //------------------ 主业务逻辑:提交 ------------------ dynamic resultInfos = new ExpandoObject(); var tbBillList = new SJService().SJQaSubmit(rkjDto); resultInfos.tbBillList = tbBillList; //================= 判断检验合格生成巡检单 ========= var sqlPass1 = $@" SELECT IS_PASS FROM QS_ITEM_IPI_REQ WHERE ID = '{rkjDto.gid}' "; var dtPass1 = SQLHelper.ExecuteQuery(sqlPass1); var sqlPass3 = $@"select C.ID from QS_ITEM_IPI_REQ A LEFT JOIN V_MES_SJ B on b.BILL_NO = A.BILL_NO LEFT JOIN WOMDAA C on C.DAA001 = B.DAA001 WHERE A.ID = '{rkjDto.gid}' "; var dtPass3 = SQLHelper.ExecuteQuery(sqlPass3); var value4 = dtPass3.Rows[0][0]; int sqlPass2 = Convert.ToInt32(value4); bool isPass = false; if (dtPass1 != null && dtPass1.Rows.Count > 0) { var value = dtPass1.Rows[0]["IS_PASS"]?.ToString(); // 判断为合格(IS_PASS = 1) if (value == "1") { isPass = true; } } // 如果合格,执行存储过程 if (isPass) { var db = SqlSugarHelper.GetInstance(); // ===== 输出参数 ===== var outFlag = new SugarParameter("P_FLAG", null, DbType.Int32, ParameterDirection.Output, 10); var outText = new SugarParameter("P_TEXT", null, DbType.String, ParameterDirection.Output, 4000); // ===== 输入参数 ===== var parameters = new List { new SugarParameter("P_ID", sqlPass2, DbType.Int64, ParameterDirection.Input), new SugarParameter("P_USER", rkjDto.userNo, DbType.String, ParameterDirection.Input), new SugarParameter("P_ISH", 0, DbType.Int64, ParameterDirection.Input), // 输出参数必须带上 outFlag, outText }; // ===== 执行存储过程 ===== db.Ado.ExecuteCommand( "BEGIN PRC_XJ_GENERATE(:P_ID, :P_USER, :P_ISH, :P_FLAG, :P_TEXT); END;", parameters); // ===== 读取输出参数并转换成 ResponseResult ===== var result = new ResponseResult { status = outFlag.Value?.ToString() == "1" ? 1 : 0, // 0 表示成功,1 表示失败 message = outText.Value?.ToString() }; return result; } return new ResponseResult { status = 0, message = "OK", data = resultInfos }; } catch (Exception ex) { return ResponseResult.ResponseError(ex); } } /// /// 获取一致性核对项目 /// /// /// [HttpPost("getYzxItem")] public ResponseResult getYzxItem([FromBody] JObject data) { var id = data["id"]?.ToString(); try { var tbBillList = new SJService().getYzxBDlist(id); return new ResponseResult { status = 0, message = "OK", data = tbBillList }; } catch (Exception ex) { return ResponseResult.ResponseError(ex); } } /// /// 保存一致性核对项目 /// /// /// [HttpPost("saveYzxItem")] public ResponseResult saveYzxItem([FromBody] JObject data) { var id = data["id"]?.ToString(); var dataDt = data["data"]?.ToString(); var dt = JsonConvert.DeserializeObject(dataDt); try { if (!dt.Columns.Contains("id")) { return new ResponseResult { status = 1, message = "请先选择数据再保存!", data = "请先选择数据再保存!" }; } new SJService().saveYzxBDlist(id, dt); var msg = new SJService().YzxImgVerify(id); return new ResponseResult { status = int.Parse(msg[0]), message = msg[1], data = "" }; } catch (Exception ex) { return ResponseResult.ResponseError(ex); } } /// /// 扫码项目获取 /// /// /// [HttpPost("GetList")] public ResponseResult GetList([FromBody] JObject data) { var mid = data["mid"]; var db = SqlSugarHelper.GetInstance(); var list = db.Queryable() .Where(x => x.MID == (long)mid) .Select(x => new { id = x.ID, scanItem = x.SCAN_ITEM, snNo = x.SN_NO }) .ToList(); return new ResponseResult { status = int.Parse("0"), message = "0", data = list }; } /// /// 扫码项目保存 /// /// /// [HttpPost("SaveSn")] public ResponseResult SaveSn([FromBody] ScanItemSaveDto dto) { var db = SqlSugarHelper.GetInstance(); foreach (var item in dto.Items) { db.Updateable() .SetColumns(x => x.SN_NO == item.SnNo) .Where(x => x.ID == item.Id) .ExecuteCommand(); } return new ResponseResult { status = int.Parse("0"), message = "ok", data = "" }; } public class ScanItemSaveDto { public decimal Mid { get; set; } public List Items { get; set; } } public class ScanItemDto { public decimal Id { get; set; } public string SnNo { get; set; } } /// /// 获取所有检验员信息 /// /// /// [HttpPost("getAllInspectors")] public ResponseResult getAllInspectors([FromBody] JObject data) { try { var tbBillList = new SJService().getAllInspectors(); return new ResponseResult { status = 0, message = "OK", data = tbBillList }; } catch (Exception ex) { return ResponseResult.ResponseError(ex); } } [HttpPost("SaveCheckBy")] public ResponseResult SaveCheckBy([FromBody] JObject data) { try { var NewStaffName = data["NewStaffName"].ToString(); var userID = data["userID"].ToString(); var releaseNo = data["releaseNo"].ToString(); var NewStaffUserID = data["NewStaffUserID"].ToString(); var msg = new SJService().SaveCheckBy(NewStaffUserID, userID, releaseNo); return new ResponseResult { status = int.Parse(msg[0]), message = msg[1], data = msg[1] }; } catch (Exception ex) { return ResponseResult.ResponseError(ex); } } /// /// 获取首检单所有不良描述 /// /// /// [HttpPost("getQSBlmsItem")] public ResponseResult getQSBlmsItem([FromBody] JObject data) { var id = data["id"]?.ToString(); try { var tbBillList = new SJService().getBlmsItem(id); return new ResponseResult { status = 0, message = "OK", data = tbBillList }; } catch (Exception ex) { return ResponseResult.ResponseError(ex); } } }