yl
2024-03-29 9c634fd767aec36ef97c3a814bf7a29c67d20ee1
VueWebApi/DLL/DAL/AppQualityManagementDAL.cs
@@ -1,10 +1,12 @@
using Dapper;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Web;
using VueWebApi.Models;
using VueWebApi.Tools;
namespace VueWebApi.DLL.DAL
@@ -39,11 +41,23 @@
                    mes.data = null;
                    return mes;
                }
                //判断条码是否需要检验
                sql = @"select *  from TMateriel_Info where partcode=@partcode and is_incheck='N'";
                dynamicParams.Add("@partcode", data0.Rows[0]["hmaterialcode"].ToString());
                var data_0 = DapperHelper.selectdata(sql, dynamicParams);
                if (data_0.Rows.Count > 0)
                {
                    mes.code = "300";
                    mes.count = 0;
                    mes.Message = "此标签条码免检!";
                    mes.data = null;
                    return mes;
                }
                //判断条码是否检验
                sql = @"select *  from TStepCheckRecord where hbarcode=@labcode and check_type='InCheck'";
                dynamicParams.Add("@labcode", labcode);
                var data = DapperHelper.selectdata(sql, dynamicParams);
                if (data0.Rows.Count > 0)
                if (data.Rows.Count > 0)
                {
                    mes.code = "300";
                    mes.count = 0;
@@ -57,7 +71,7 @@
                        from T_BarCodeBill A
                        left join TMateriel_Info M on A.hmaterialcode=M.partcode
                        left join TCustomer C on A.hcustomercode=C.code
                        where A.hbarcode=@labcode";
                        where A.hbarcode=@labcode and A.hbarcodestatus='Y'";
                dynamicParams.Add("@labcode", labcode);
                var data1 = DapperHelper.selectdata(sql, dynamicParams);
                if (data1.Rows.Count > 0)
@@ -65,7 +79,7 @@
                    //获取绑定的入厂质检方案、抽样方式、样本数
                    sql = @"select code as checkstandcode,name as checkstandname,sampmethod,sampscare   
                            from TStepCheckStandard
                            where PATINDEX('%;' + RTRIM(@partcode) + ';%',';' + suitpart + ';')>0 or PATINDEX('%;' + RTRIM(@stocktype_code) + ';%',';' + suitpart + ';')>0
                            where (PATINDEX('%,' + RTRIM(@partcode) + ',%',',' + suitpart + ',')>0 or PATINDEX('%,' + RTRIM(@stocktype_code) + ',%',',' + suitpart + ',')>0)
                            and checktype='InCheck'";
                    dynamicParams.Add("@partcode", data1.Rows[0]["partcode"].ToString());//物料编码
                    dynamicParams.Add("@stocktype_code", data1.Rows[0]["stocktype_code"].ToString());//存货类型编码
@@ -80,7 +94,7 @@
                else
                {
                    mes.code = "300";
                    mes.Message = "此标签条码不存在!";
                    mes.Message = "此标签条码不存在或失效!";
                    mes.data = null;
                }
            }
@@ -118,7 +132,7 @@
                    mes.Message = "查询成功!";
                    mes.data = data;
                }
                else
                else
                {
                    mes.code = "300";
                    mes.count = 0;
@@ -137,5 +151,160 @@
        }
        #endregion
        #region[入厂检验,提交]
        public static ToMessage InFactoryCheckSave(string hbillno, string labcode, string checkstandcode, string check_type, string sampmethod, string partcode, string customercode, string batchno, string qualitystatus, string labqty, string sampleqty, string goodqty, string ngqty, string issyncbatch, string checkitemcont, string username)
        {
            var sql = "";
            List<object> list = new List<object>();
            List<ObjectData> obj = new List<ObjectData>();
            var dynamicParams = new DynamicParameters();
            try
            {
                string datetime = DateTime.Now.ToString(); //获取系统时间
                //获取检验项目信息
                JArray arra = (JArray)Newtonsoft.Json.JsonConvert.DeserializeObject(checkitemcont);
                list.Clear();
                if (issyncbatch == "Y")  //同步相同批次
                {
                    //查找相同批次条码(功能编码、单据号、单据类型、条码类型、物料编码、批次号、条码状态)
                    sql = @"select hbarcode,hqty  from T_BarCodeBill
                            where rightcode=@rightcode and hbillno=@hbillno and hbilltype=@hbilltype and hbarcodetype=@hbarcodetype
                            and hmaterialcode=@hmaterialcode and hbatchno=@hbatchno and hbarcodestatus=@hbarcodestatus";
                    dynamicParams.Add("@rightcode", "2060");
                    dynamicParams.Add("@hbillno", hbillno);
                    dynamicParams.Add("@hbilltype", "1103");
                    dynamicParams.Add("@hbarcodetype", "P");
                    dynamicParams.Add("@hmaterialcode", partcode);
                    dynamicParams.Add("@hbatchno", batchno);
                    dynamicParams.Add("@hbarcodestatus", "Y");
                    var data = DapperHelper.selectdata(sql, dynamicParams);
                    if (data.Rows.Count > 0)
                    {
                        for (int i = 0; i < data.Rows.Count; i++)
                        {
                            ObjectData tbj = new ObjectData();
                            tbj.code = data.Rows[i]["hbarcode"].ToString();
                            tbj.name = data.Rows[i]["hqty"].ToString();
                            obj.Add(tbj);
                        }
                    }
                    else
                    {
                        ObjectData tbj = new ObjectData();
                        tbj.code = labcode;
                        tbj.name = labqty;
                        obj.Add(tbj);
                    }
                }
                else
                {
                    ObjectData tbj = new ObjectData();
                    tbj.code = labcode;
                    tbj.name = labqty;
                    obj.Add(tbj);
                }
                //循环标签个数
                for (int i = 0; i <obj.Count; i++)
                {
                    //写入检验记录主表
                    sql = @"insert into  TStepCheckRecord(hbarcode,wo_code,partcode,checkstaned_code,customer_code,check_user,check_type,check_typename,sampmethod,check_result,check_qty,good_qty,ng_qty,lm_user,lm_date)
                                values(@hbarcode,@wo_code,@partcode,@checkstaned_code,@customer_code,@check_user,@check_type,@check_typename,@sampmethod,@check_result,@check_qty,@good_qty,@ng_qty,@lm_user,@lm_date)";
                    list.Add(new
                    {
                        str = sql,
                        parm = new
                        {
                            hbarcode = obj[i].code,
                            wo_code = hbillno,
                            partcode = partcode,
                            checkstaned_code = checkstandcode,
                            customer_code=customercode,
                            check_user = username,
                            check_type = check_type,
                            check_typename = "入厂检验",
                            sampmethod = sampmethod,
                            check_result = qualitystatus,
                            check_qty = decimal.Parse(sampleqty),
                            good_qty = decimal.Parse(goodqty),
                            ng_qty = decimal.Parse(ngqty),
                            lm_user = username,
                            lm_date = datetime
                        }
                    });
                    //获取主表最大ID
                    sql = @"select ISNULL(IDENT_CURRENT('TStepCheckRecord')+@num,1) as id";
                    dynamicParams.Add("@num", i+1);
                    var dt = DapperHelper.selectdata(sql, dynamicParams);
                    //写入检验记录子表
                    for (int j = 0; j < arra.Count; j++)
                    {
                        sql = @"insert into  TStepCheckRecordSub(m_id,checknum,checkitem_seq,checkitem_code,checkitem_name,checkitem_descr,check_value,check_result,lm_user,lm_date)
                                values(@m_id,@checknum,@checkiem_seq,@checkitem_code,@checkitem_name,@checkitem_descr,@check_value,@check_result,@lm_user,@lm_date)";
                        list.Add(new
                        {
                            str = sql,
                            parm = new
                            {
                                m_id = int.Parse(dt.Rows[0]["ID"].ToString()),
                                checknum = arra[j]["checknum"].ToString(),
                                checkiem_seq = arra[j]["checkiem_seq"].ToString(),
                                checkitem_code = arra[j]["checkitem_code"].ToString(),
                                checkitem_name = arra[j]["checkitem_name"].ToString(),
                                checkitem_descr = arra[j]["checkitem_descr"].ToString(),
                                check_value = arra[j]["check_value"].ToString(),
                                check_result = arra[j]["check_result"].ToString(),
                                lm_user = username,
                                lm_date = datetime
                            }
                        });
                    }
                }
                //回写条码档案表标签质检状态
                sql = @"update T_BarCodeBill set qualitystatus=@qualitystatus  where rightcode=@rightcode and hbillno=@hbillno and hbilltype=@hbilltype
                        and hbarcodetype=@hbarcodetype  and hmaterialcode=@hmaterialcode and hbatchno=@hbatchno and hbarcodestatus=@hbarcodestatus";
                list.Add(new
                {
                    str = sql,
                    parm = new
                    {
                        qualitystatus= qualitystatus,
                        rightcode = "2060",
                        hbillno = hbillno,
                        hbilltype = "1103",
                        hbarcodetype = "P",
                        hmaterialcode = partcode,
                        hbatchno = batchno,
                        hbarcodestatus = "Y"
                    }
                });
                bool aa = DapperHelper.DoTransaction(list);
                if (aa)
                {
                    mes.code = "200";
                    mes.count = 0;
                    mes.Message = "操作成功!";
                    mes.data = null;
                }
                else
                {
                    mes.code = "300";
                    mes.count = 0;
                    mes.Message = "操作失败!";
                    mes.data = null;
                }
            }
            catch (Exception e)
            {
                mes.code = "300";
                mes.count = 0;
                mes.Message = e.Message;
                mes.data = null;
            }
            return mes;
        }
        #endregion
    }
}