fcx
6 天以前 4c63d2a1a3d9c3a5678ef5877b475df843e04920
StandardPda/MESApplication/Controllers/QC/SJController.cs
@@ -1,10 +1,17 @@
using System.Dynamic;
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;
@@ -36,7 +43,7 @@
    [HttpPost("GetPage")]
    public ResponseResult GetPage([FromBody] SJPageResult queryObj)
    public ResponseResult GetPage([FromBody] SJPageResult2 queryObj)
    {
        try
        {
@@ -319,17 +326,222 @@
            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);
            var tbBillList = new SJService().SJQaSubmit(rkjDto);
            resultInfos.tbBillList = tbBillList;
            //=================  判断检验合格生成巡检单 =========
            var sqlpass6 = $@"update QS_ITEM_IPI_REQ set FSUBMIT1 = 1 where ID = '{rkjDto.gid}' ";
            var dtPass7 = SQLHelper.ExecuteQuery(sqlpass6);
            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;
                }
                else
                {
                    var sqlpass4 = $@"update QS_ITEM_IPI_REQ set FSUBMIT = 0 where ID = '{rkjDto.gid}' ";
                    var dtPass5 = SQLHelper.ExecuteQuery(sqlpass4);
                }
            }
            // 如果合格,执行存储过程
            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<SugarParameter>
    {
        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,
@@ -337,9 +549,229 @@
                data = resultInfos
            };
        }
        catch (Exception ex)
        {
            return ResponseResult.ResponseError(ex);
        }
    }
    /// <summary>
    ///     获取一致性核对项目
    /// </summary>
    /// <param name="data"></param>
    /// <returns></returns>
    [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);
        }
    }
    /// <summary>
    ///     保存一致性核对项目
    /// </summary>
    /// <param name="data"></param>
    /// <returns></returns>
    [HttpPost("saveYzxItem")]
    public ResponseResult saveYzxItem([FromBody] JObject data)
    {
        var id = data["id"]?.ToString();
        var dataDt = data["data"]?.ToString();
        var dt = JsonConvert.DeserializeObject<DataTable>(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);
        }
    }
    /// <summary>
    /// 扫码项目获取
    /// </summary>
    /// <param name="mid"></param>
    /// <returns></returns>
    [HttpPost("GetList")]
    public ResponseResult GetList([FromBody] JObject data)
    {
        var mid = data["mid"];
        var db = SqlSugarHelper.GetInstance();
        var list = db.Queryable<MES_SJ_SCAN_ITEM_CK>()
            .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
        };
    }
    /// <summary>
    /// 扫码项目保存
    /// </summary>
    /// <param name="dto"></param>
    /// <returns></returns>
    [HttpPost("SaveSn")]
    public ResponseResult SaveSn([FromBody] ScanItemSaveDto dto)
    {
        var db = SqlSugarHelper.GetInstance();
        foreach (var item in dto.Items)
        {
            db.Updateable<MES_SJ_SCAN_ITEM_CK>()
                .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<ScanItemDto> Items { get; set; }
    }
    public class ScanItemDto
    {
        public decimal Id { get; set; }
        public string SnNo { get; set; }
    }
    /// <summary>
    ///     获取所有检验员信息
    /// </summary>
    /// <param name="data"></param>
    /// <returns></returns>
    [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);
        }
    }
    /// <summary>
    ///     获取首检单所有不良描述
    /// </summary>
    /// <param name="data"></param>
    /// <returns></returns>
    [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);
        }
    }
}