yl
2023-06-13 d6502baa8e5610c04127fbee92ff6111e40956f8
VueWebApi/DLL/DAL/AppPurchManagementDAL.cs
@@ -1,4 +1,5 @@
using Dapper;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Data;
@@ -33,9 +34,9 @@
                    //dynamicParams.Add("@purchordercode", purchordercode);
                }
                //查询未关闭且未全部到货的采购订单
                sql = @"select distinct A.ordercode  from T_PurchaseOrder A
                sql = @"select distinct A.orderid,A.ordercode  from T_PurchaseOrder A
                        inner join T_PurchaseOrder_sub B on A.ordercode=B.purchaseorder_code
                        where B.countarrivalquantity<quantity" + search;
                        where (isnull(B.quantity,0)-isnull(B.countarrivalquantity,0)+isnull(B.countreturnquantity,0))>0 and A.status<>'CLOSED'" + search;
                dynamicParams.Add("@purchordercode", purchordercode);
                var data = DapperHelper.selectdata(sql, dynamicParams);
                if (data.Rows.Count > 0)
@@ -70,7 +71,7 @@
            try
            {
                //根据采购订单号查询物料信息,供应商信息
                sql = @"select B.rownumber, B.materiel_code as partcode,M.partname,M.partspec,M.is_batchno,M.is_incheck,
                sql = @"select B.rownumber,B.sbid, B.materiel_code as partcode,M.partname,M.partspec,M.is_batchno,M.is_incheck,
                        B.quantity,B.customercode,C.name as customername,A.departmentcode,T.org_name as departmentname,U.code as uomcode,U.name as uomname,
                        A.ordercode,B.countarrivalquantity,A.acceptdate  
                        from T_PurchaseOrder A
@@ -79,7 +80,7 @@
                        left  join TUom U on M.uom_code=U.code
                        left  join TCustomer C on B.customercode=C.code
                        left  join TOrganization T on A.departmentcode=T.org_code
                        where A.ordercode=@purchordercode";
                        where (isnull(B.quantity,0)-isnull(B.countarrivalquantity,0)+isnull(B.countreturnquantity,0))>0 and A.ordercode=@purchordercode";
                dynamicParams.Add("@purchordercode", purchordercode);
                var data = DapperHelper.selectdata(sql, dynamicParams);
                if (data.Rows.Count > 0)
@@ -109,13 +110,13 @@
        #region[采购到货:生成系统条码]
        public static ToMessage MesAppPurchOrderLabelBarCode(string partcode, string arrivalqty, string onelableqty)
        {
            mes = AppLableBarCode.EncodingSeach("2060", partcode, arrivalqty, onelableqty);
            mes = AppLableBarCode.EncodingSeach("2018", partcode, arrivalqty, onelableqty);
            return mes;
        }
        #endregion
        #region[采购到货:提交]
        public static ToMessage MesAppPurchOrderSave(string purordercode, string orderstaus, string username, List<AppPurchOrderSave> json)
        public static ToMessage MesAppPurchOrderSave(string purordercode, string username, List<AppPurchOrderSave> json)
        {
            var sql = "";
            string djwo = "", numvalue = "";
@@ -157,8 +158,8 @@
                    {
                        hbillno = djwo,
                        hdate = DateTime.Now.ToString(),
                        hacceptdate =hacceptdate==""?null:hacceptdate,
                        hbillstaus = orderstaus,
                        hacceptdate = hacceptdate == "" ? null : hacceptdate,
                        hbillstaus = "NEW",
                        hdepartmentcode = dpartment,
                        hcustomercode = customercode,
                        hsourcebillno = purordercode,
@@ -170,20 +171,20 @@
                for (int i = 0; i < json.Count; i++)
                {
                    //写入采购到货单子表
                    sql = @"insert into T_PurchaseArrivalOrder_sub(hbillno,rownumber,hpartcode,hplanqty,hqty,hacceptdate,hischeck,hbatchno)
                        values(@hbillno,@hpartcode,@hplanqty,@hqty,@hacceptdate,@hischeck,@hbatchno)";
                    sql = @"insert into T_PurchaseArrivalOrder_sub(hbillno,rownumber,hpartcode,hplanqty,hqty,hacceptdate,hcheckstaus,hbatchno)
                        values(@hbillno,@rownumber,@hpartcode,@hplanqty,@hqty,@hacceptdate,@hcheckstaus,@hbatchno)";
                    list.Add(new
                    {
                        str = sql,
                        parm = new
                        {
                            hbillno = djwo,
                            rownumber=json[i].rownumber,
                            rownumber = json[i].rownumber,
                            hpartcode = json[i].hpartcode,
                            hplanqty = decimal.Parse(json[i].hplanqty),
                            hqty = decimal.Parse(json[i].hqty),
                            hacceptdate = hacceptdate == "" ? null : hacceptdate,
                            hischeck = json[i].hischeck,
                            hcheckstaus = json[i].hischeck,
                            hbatchno = json[i].hbatchno
                        }
                    });
@@ -192,8 +193,8 @@
                    for (int j = 0; j < json[i].children.Count; j++)
                    {
                        //写入条码档案表
                        sql = @"insert into T_BarCodeBill(rightcode,hbillno,hbilltype,hbarcode,hbarcodestatus,hbarcodetype,hmaterialcode,hqty,hbatchno,hcustomercode,hdeptcode,hsourcebillno,hsourcebilltype,barcodeposition,lm_user,lm_date)
                        values(@rightcode,hbillno,@hbilltype,@hbarcode,@hbarcodestatus,@hbarcodetype,@hmaterialcode,@hqty,@hbatchno,@hcustomercode,@hdeptcode,@hsourcebillno,@hsourcebilltype,@barcodeposition,@lm_user,@lm_date)";
                        sql = @"insert into T_BarCodeBill(rightcode,hbillno,hbilltype,hbarcode,qualitystatus,hbarcodestatus,hbarcodetype,hmaterialcode,hqty,hbatchno,hcustomercode,hdeptcode,hsourcebillno,hsourcebilltype,barcodeposition,lm_user,lm_date)
                        values(@rightcode,@hbillno,@hbilltype,@hbarcode,@qualitystatus,@hbarcodestatus,@hbarcodetype,@hmaterialcode,@hqty,@hbatchno,@hcustomercode,@hdeptcode,@hsourcebillno,@hsourcebilltype,@barcodeposition,@lm_user,@lm_date)";
                        list.Add(new
                        {
                            str = sql,
@@ -203,6 +204,7 @@
                                hbillno = djwo,
                                hbilltype = "1103", //采购到货单类型
                                hbarcode = json[i].children[j].labcode,
                                qualitystatus = json[i].hischeck == "Y" ? "TS" : "CS",
                                hbarcodestatus = "Y",
                                hbarcodetype = "P",
                                hmaterialcode = json[i].children[j].partnumber,
@@ -212,14 +214,14 @@
                                hdeptcode = dpartment,
                                hsourcebillno = purordercode,
                                hsourcebilltype = "1102",
                                barcodeposition="2060;采购到货",
                                barcodeposition = "2060;采购到货",
                                lm_user = username,
                                lm_date = DateTime.Now.ToString()
                            }
                        });
                    }
                    //更新采购订单子表:累计到货数量
                    sql = @"update T_PurchaseOrder_sub set countarrivalquantity=countarrivalquantity+@hqty where ordercode=@purordercode and materiel_code=@materiel_code and rownumber=@rownumber";
                    sql = @"update T_PurchaseOrder_sub set countarrivalquantity=countarrivalquantity+@hqty where purchaseorder_code=@purordercode and materiel_code=@materiel_code and rownumber=@rownumber";
                    list.Add(new
                    {
                        str = sql,
@@ -227,22 +229,11 @@
                        {
                            purordercode = purordercode,
                            materiel_code = json[i].hpartcode,
                            rownumber=json[i].rownumber,
                            hqty=decimal.Parse(json[i].hqty)
                            rownumber = json[i].rownumber,
                            hqty = decimal.Parse(json[i].hqty)
                        }
                    });
                }
                //更新采购订单主表:订单状态
                sql = @"update T_PurchaseOrder set status=@status where ordercode=@purordercode";
                list.Add(new
                {
                    str = sql,
                    parm = new
                    {
                        status = orderstaus,
                        ordercode = purordercode
                    }
                });
                bool aa = DapperHelper.DoTransaction(list);
                if (aa)
                {
@@ -272,16 +263,25 @@
        #region[采购入库选择有到货采购订单]
        public static ToMessage MesAppPurchInStorSelectCGOrder()
        public static ToMessage MesAppPurchInStorSelectCGOrder(string purchordercode)
        {
            string sql = "";
            string search = "";
            var dynamicParams = new DynamicParameters();
            try
            {
                if (purchordercode != "" && purchordercode != null) //订单号不为空
                {
                    search += " and AA.ordercode like '%'+@purchordercode+'%' ";
                }
                //有到货或者部分入库的采购订单
                sql = @"select distinct A.ordercode   from T_PurchaseOrder A
                sql = @"select distinct AA.ordercode  from(
                        select A.ordercode,B.hbillstaus,S.hpartcode,MAX(S.hplanqty) as hplanqty,SUM(S.hqty) as hqty,SUM(S.hinqty) as hinqty,SUM(S.hreturnqty) as hreturnqty
                        from T_PurchaseOrder A
                        inner join T_PurchaseArrivalOrder B on A.ordercode=B.hsourcebillno
                        where B.hbillstaus in('BINARIVE','INARIVE','BINSTOG')";
                        inner join T_PurchaseArrivalOrder_sub S on B.hbillno=S.hbillno
                        group by A.ordercode,B.hbillstaus,S.hpartcode
                        ) as AA where  (isnull(AA.hplanqty,0)-isnull(AA.hqty,0)+isnull(AA.hreturnqty,0))>0 and AA.hbillstaus='NEW' " + search;
                var data = DapperHelper.selecttable(sql);
                if (data.Rows.Count > 0)
                {
@@ -315,13 +315,13 @@
            try
            {
                //选择采购订单带出订单下有到货的物料信息
                sql = @"select A.ordercode,M.partcode,M.partname,M.partspec,avg(S.hplanqty) as hplanqty,sum(S.hqty) as hqty
                sql = @"select A.ordercode,M.partcode,M.partname,M.partspec,A.customercode,A.departmentcode,avg(S.hplanqty) as hplanqty,sum(S.hqty) as hqty
                        from T_PurchaseOrder A
                        inner join T_PurchaseArrivalOrder B on A.ordercode=B.hsourcebillno
                        inner join T_PurchaseArrivalOrder_sub S on B.hbillno=S.hbillno
                        left  join TMateriel_Info M on S.hpartcode=M.partcode
                        where B.hbillstaus in('BINARIVE','INARIVE','BINSTOG') and A.ordercode=@ordercode
                        group by A.ordercode,M.partcode,M.partname,M.partspec";
                        where B.hbillstaus='NEW' and A.ordercode=@ordercode
                        group by A.ordercode,M.partcode,M.partname,M.partspec,A.customercode,A.departmentcode";
                dynamicParams.Add("@ordercode", ordercode);
                var data = DapperHelper.selectdata(sql, dynamicParams);
                if (data.Rows.Count > 0)
@@ -349,26 +349,28 @@
        #endregion
        #region[采购入库扫描标签条码带出到货单信息]
        public static ToMessage MesAppPurchInStorScanLabCode(string labcode,string ordercode)
        public static ToMessage MesAppPurchInStorScanLabCode(string labcode)
        {
            string sql = "";
            var dynamicParams = new DynamicParameters();
            try
            {
                //判断条码状态
                mes = LabCodeStatusMessage.LabCodeStatus("2060", "1103",labcode);//功能编号、单据类型编码、标签编码
                if (mes.code == "300")
                mes = LabCodeStatusMessage.LabCodeStatus("2060", "1103", labcode);//功能编号(采购到货)、单据类型编码(采购到货单)、标签编码
                if (mes.code == "300")
                {
                    return mes;
                }
                //判断扫描标签是否为当前选择采购订单下的到货单所生成标签
                sql = @"select *   from T_BarCodeBill where hsourcebillno=@ordercode";
                dynamicParams.Add("@ordercode", ordercode);
                var data0 = DapperHelper.selectdata(sql, dynamicParams);
                if (data0.Rows.Count < 0)
                //判断标签状态(是否已入库(不能再入))
                sql = @"select * from TK_WMS_Inwh_Sub  where labcode like '%'+@labcode+'%'";
                dynamicParams.Add("@labcode", "labcode");
                dynamicParams.Add("@labcode", labcode);
                var dt = DapperHelper.selectdata(sql, dynamicParams);
                if (dt.Rows.Count > 0)
                {
                    mes.code = "300";
                    mes.Message = "当前条码不是采购订单【"+ ordercode + "】生成条码!";
                    mes.count = 0;
                    mes.Message = "当前条码已入库!";
                    mes.data = null;
                    return mes;
                }
@@ -403,5 +405,523 @@
        }
        #endregion
        #region[采购入库提交]
        public static ToMessage MesAppPurchInStorSave(string ordercode, string username, string incontent)
        {
            var sql = "";
            string djwo = "", numvalue = "";
            List<object> list = new List<object>();
            List<ObjectData> obj = new List<ObjectData>();
            var dynamicParams = new DynamicParameters();
            try
            {
                string datetime = DateTime.Now.ToString(); //获取系统时间
                mes = SeachEncode.EncodingSeach("2061");  //APP端采购入库生成单号
                if (mes.code == "300")
                {
                    return mes;
                }
                else
                {
                    List<string> wo = (List<string>)mes.data;
                    djwo = wo[0].ToString(); //获取单号
                    numvalue = wo[1].ToString(); //获取流水号
                }
                //获取提交信息
                JArray arra = (JArray)Newtonsoft.Json.JsonConvert.DeserializeObject(incontent);
                list.Clear();
                //写入入库记录主表
                sql = @"insert into  TK_WMS_Inwh_Main(docu_typecode,hbillno,hsoucenillnoid,hsoucenillno,status,hcustomer,hdempart,lm_user,lm_date)
                                values(@docu_typecode,@hbillno,@hsoucenillnoid,@hsoucenillno,@status,@hcustomer,@hdempart,@lm_user,@lm_date)";
                list.Add(new
                {
                    str = sql,
                    parm = new
                    {
                        docu_typecode = "1201",
                        hbillno = djwo,
                        hsoucenillnoid= arra[0]["hsoucenillnoid"].ToString(),
                        hsoucenillno = ordercode,
                        status = "NEW",
                        hcustomer = arra[0]["customercode"].ToString(),
                        hdempart = arra[0]["departmentcode"].ToString(),
                        lm_user = username,
                        lm_date = datetime
                    }
                });
                //根据源单+物料查询采购订单到货总数、入库总数
                sql = @"select sum(B.quantity) as quantity,sum(B.countarrivalquantity) as countarrivalquantity,
                        sum(B.countInquantity) as countInquantity
                        from T_PurchaseOrder A
                        inner join T_PurchaseOrder_sub B on A.ordercode=B.purchaseorder_code
                        where  ordercode=@ordercode";
                dynamicParams.Add("@ordercode", ordercode);
                var data0 = DapperHelper.selectdata(sql, dynamicParams);
                decimal quantity = decimal.Parse(data0.Rows[0]["quantity"].ToString()); //采购订单累计任务数量
                decimal countarrivalquantity = decimal.Parse(data0.Rows[0]["countarrivalquantity"].ToString()); //采购订单累计到货数量
                decimal countInquantity = decimal.Parse(data0.Rows[0]["countInquantity"].ToString()); //采购订单累计入库数量
                string storg = "";//采购订单入库状态
                decimal partlabqty = 0; //当前标签累计数量
                for (int i = 1; i <= arra.Count; i++)//循环获取物料信息
                {
                    string labcode = "";//标签信息
                    decimal suminqty = 0; //单标签入库总数量
                    string batchno = ""; //批次号
                    //查询汇总标签信息
                    for (int j = 0; j < arra[i]["labcont"].Count(); j++)//循环获取标签信息
                    {
                        //更新条码表仓库、库位信息
                        sql = @"update T_BarCodeBill set storehouse_code=@storehouse_code,location_code=@location_code where hsourcebillno=@hsourcebillno and hbarcode=@hbarcode";
                        list.Add(new
                        {
                            str = sql,
                            parm = new
                            {
                                storehouse_code = arra[i]["storehousecode"].ToString(),
                                location_code = arra[i]["warehousecode"].ToString(),
                                hsourcebillno = ordercode,
                                hbarcode = arra[i]["labcont"][j]["labcode"].ToString()
                            }
                        });
                        //更新到货单子表入库数量
                        sql = @"update T_PurchaseArrivalOrder_sub set hinqty=isnull(hinqty,0)+@inqty where hbillno=@hbillno and hpartcode=@hpartcode";
                        list.Add(new
                        {
                            str = sql,
                            parm = new
                            {
                                hbillno = arra[i]["labcont"][j]["arrivelorder"].ToString(),
                                hpartcode = arra[i]["partcode"].ToString(),
                                hinqty = decimal.Parse(arra[i]["labcont"][j]["qty"].ToString())
                            }
                        });
                        //写入库存表
                        sql = @"insert into TK_WMS_Stock(labcode,materiel_code,batchno,storehouse_code,location_code,customercode,qty,lm_user,lm_date)
                                values(@labcode,materiel_code,batchno,storehouse_code,location_code,customercode,qty,lm_user,lm_date)";
                        list.Add(new
                        {
                            str = sql,
                            parm = new
                            {
                                labcode = arra[i]["labcont"][j]["labcode"].ToString(),
                                materiel_code = arra[i]["partcode"].ToString(),
                                batchno = batchno,
                                storehouse_code = arra[i]["storehousecode"].ToString(),
                                location_code = arra[i]["warehousecode"].ToString(),
                                customercode = arra[i]["customercode"].ToString(),
                                qty = suminqty,
                                lm_user = username,
                                lm_date = datetime,
                            }
                        });
                        //labcode = labcode + arra[i]["labcont"][j]["labcode"].ToString() + ",";
                        suminqty = suminqty + decimal.Parse(arra[i]["labcont"][j]["qty"].ToString());
                        partlabqty = partlabqty + decimal.Parse(arra[i]["labcont"][j]["qty"].ToString());
                        batchno = arra[i]["labcont"][j]["batch"].ToString();
                    }
                    //更新采购订单子表入库数量
                    sql = @"update T_PurchaseOrder_sub set countInquantity=isnull(countInquantity,0)+@countInquantity
                            where purchaseorder_code=@purchaseorder_code and materiel_code=@materiel_code";
                    list.Add(new
                    {
                        str = sql,
                        parm = new
                        {
                            purchaseorder_code = ordercode,
                            materiel_code = arra[i]["partcode"].ToString(),
                            countInquantity = partlabqty
                        }
                    });
                    //写入采购入库单子表
                    sql = @"insert into  TK_WMS_Inwh_Sub(hbillno,rownumber,materiel_code,storehouse_code,location_code,qty,batchno)
                                values(@hbillno,@rownumber,@materiel_code,@storehouse_code,@location_code,@qty,@batchno)";
                    //labcode = string.Format("'{0}'", labcode.Substring(0, labcode.Length - 1).Replace(",", "','"));
                    list.Add(new
                    {
                        str = sql,
                        parm = new
                        {
                            hbillno = djwo,
                            labcode = labcode,
                            rownumber = i,
                            materiel_code = arra[i]["partcode"].ToString(),
                            storehouse_code = arra[i]["storehousecode"].ToString(),
                            location_code = arra[i]["warehousecode"].ToString(),
                            qty = suminqty,
                            batchno = batchno
                        }
                    });
                    /*写入ERP采购入库单************
                     * ***********************
                     * **********************
                    **********************/
                }
                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
        #region[采购退货:获取采购订单列表(已到货的采购订单)]
        public static ToMessage MesAppPurchaseReturnOrderSearch(string purchordercode)
        {
            string sql = "";
            string search = "";
            var dynamicParams = new DynamicParameters();
            try
            {
                if (purchordercode != "" && purchordercode != null) //订单号不为空
                {
                    search += " and A.ordercode like '%'+@purchordercode+'%' ";
                }
                //查询未关闭且有到货的采购订单
                sql = @"select distinct A.id,A.ordercode  from T_PurchaseOrder A
                        inner join T_PurchaseOrder_sub B on A.ordercode=B.purchaseorder_code
                        where (isnull(B.countarrivalquantity,0)-isnull(B.countreturnquantity,0))>0 and A.status<>'CLOSED'" + search;
                dynamicParams.Add("@purchordercode", purchordercode);
                var data = DapperHelper.selectdata(sql, dynamicParams);
                if (data.Rows.Count > 0)
                {
                    mes.code = "200";
                    mes.Message = "查询成功!";
                    mes.data = data;
                }
                else
                {
                    mes.code = "300";
                    mes.Message = "无订单数据!";
                    mes.data = null;
                }
            }
            catch (Exception e)
            {
                mes.code = "300";
                mes.count = 0;
                mes.Message = e.Message;
                mes.data = null;
            }
            return mes;
        }
        #endregion
        #region[采购退货:选择采购订单获取物料信息]
        public static ToMessage MesAppPurchReturnOrderPartSearch(string purchordercode)
        {
            string sql = "";
            var dynamicParams = new DynamicParameters();
            try
            {
                //根据采购订单号查询非关闭状态下有到货且到货数量大于0的物料
                sql = @"select B.rownumber, B.materiel_code as partcode,M.partname,M.partspec,
                        B.quantity,B.countarrivalquantity,U.code as uomcode,U.name as uomname
                        from T_PurchaseOrder A
                        inner join T_PurchaseOrder_sub B on A.ordercode=B.purchaseorder_code
                        left  join TMateriel_Info M on B.materiel_code=M.partcode
                        left  join TUom U on M.uom_code=U.code
                        where B.countarrivalquantity>0 and A.status<>'CLOSED' and A.ordercode=@purchordercode";
                dynamicParams.Add("@purchordercode", purchordercode);
                var data = DapperHelper.selectdata(sql, dynamicParams);
                if (data.Rows.Count > 0)
                {
                    mes.code = "200";
                    mes.Message = "查询成功!";
                    mes.data = data;
                }
                else
                {
                    mes.code = "300";
                    mes.Message = "暂无物料数据!";
                    mes.data = null;
                }
            }
            catch (Exception e)
            {
                mes.code = "300";
                mes.count = 0;
                mes.Message = e.Message;
                mes.data = null;
            }
            return mes;
        }
        #endregion
        #region[采购退货单:扫描标签]
        public static ToMessage MesAppPurchReturnInStorScanLabCode(string ordercode, string partcode, string labcode)
        {
            string sql = "";
            string search = "";
            var dynamicParams = new DynamicParameters();
            try
            {
                //判断条码状态
                mes = LabCodeStatusMessage.LabCodeStatus("2060", "1103", labcode);//功能编号(采购到货)、单据类型编码(采购到货单)、标签编码
                if (mes.code == "300")
                {
                    return mes;
                }
                //判断标签状态(是否已入库(不能退货))
                sql = @"select * from TK_WMS_Inwh_Sub  where labcode like '%'+@labcode+'%'";
                dynamicParams.Add("@labcode", "labcode");
                dynamicParams.Add("@labcode", labcode);
                var data0 = DapperHelper.selectdata(sql, dynamicParams);
                if (data0.Rows.Count > 0)
                {
                    mes.code = "300";
                    mes.count = 0;
                    mes.Message = "当前条码已入库!";
                    mes.data = null;
                    return mes;
                }
                //根据采购订单号、物料编码、标签条码查找标签信息
                sql = @"select A.hbarcode,A.hcustomercode,C.name as hcustomercode,
                       A.hbatchno,A.qualitystatus,A.location_code,L.name as location_name,A.hqty
                       from T_BarCodeBill A
                       left join TCustomer C on A.hcustomercode=C.code
                       left join T_Sec_Loca L on A.location_code=L.code
                       where A.rightcode=@rightcode and A.hbilltype=@hbilltype and A.hbarcodestatus='Y'
                       and  A.hsourcebillno=@hsourcebillno and A.hmaterialcode=@hmaterialcode and A.hbarcode=@labcode";
                dynamicParams.Add("@rightcode", "2060");
                dynamicParams.Add("@hbilltype", "1103");
                dynamicParams.Add("@hsourcebillno", ordercode);
                dynamicParams.Add("@hmaterialcode", partcode);
                dynamicParams.Add("@labcode", labcode);
                var data = DapperHelper.selectdata(sql, dynamicParams);
                if (data.Rows.Count > 0)
                {
                    mes.code = "200";
                    mes.Message = "查询成功!";
                    mes.data = data;
                }
                else
                {
                    mes.code = "300";
                    mes.Message = "当前标签不符合要求!";
                    mes.data = null;
                }
            }
            catch (Exception e)
            {
                mes.code = "300";
                mes.count = 0;
                mes.Message = e.Message;
                mes.data = null;
            }
            return mes;
        }
        #endregion
        #region[采购退货单:提交]
        public static ToMessage MesAppPurchReturnInStorSave(string orderid, string ordercode, string username, string incontent)
        {
            var sql = "";
            string djwo = "", numvalue = "";
            List<object> list = new List<object>();
            List<ObjectData> obj = new List<ObjectData>();
            var dynamicParams = new DynamicParameters();
            try
            {
                string datetime = DateTime.Now.ToString(); //获取系统时间
                mes = SeachEncode.EncodingSeach("2074");  //APP端采购退货生成单号
                if (mes.code == "300")
                {
                    return mes;
                }
                else
                {
                    List<string> wo = (List<string>)mes.data;
                    djwo = wo[0].ToString(); //获取单号
                    numvalue = wo[1].ToString(); //获取流水号
                }
                //获取提交信息
                JArray arra = (JArray)Newtonsoft.Json.JsonConvert.DeserializeObject(incontent);
                list.Clear();
                //写入采购退货单主表
                sql = @"insert into  T_PurchaseReturnOrder(orderdate,ordercode,status,departmentcode,customercode,saleorderid,saleordercode,lm_user,lm_date)
                                values(@orderdate,@ordercode,@status,@departmentcode,@customercode,@saleorderid,@saleordercode,@lm_user,@lm_date)";
                list.Add(new
                {
                    str = sql,
                    parm = new
                    {
                        orderdate = datetime,
                        ordercode = djwo,
                        status = "NEW",
                        departmentcode = arra[0]["departmentcode"].ToString(),
                        customercode = arra[0]["customercode"].ToString(),
                        saleorderid = orderid,
                        saleordercode = ordercode,
                        lm_user = username,
                        lm_date = datetime
                    }
                });
                //根据源单+物料查询采购订单到货总数、入库总数
                sql = @"select sum(B.quantity) as quantity,sum(B.countarrivalquantity) as countarrivalquantity,
                        sum(B.countInquantity) as countInquantity,sum(B.countreturnquantity) as countreturnquantity
                        from T_PurchaseOrder A
                        inner join T_PurchaseOrder_sub B on A.ordercode=B.purchaseorder_code
                        where  ordercode=@ordercode";
                dynamicParams.Add("@ordercode", ordercode);
                var data0 = DapperHelper.selectdata(sql, dynamicParams);
                decimal quantity = decimal.Parse(data0.Rows[0]["quantity"].ToString()); //采购订单累计任务数量
                decimal countarrivalquantity = decimal.Parse(data0.Rows[0]["countarrivalquantity"].ToString()); //采购订单累计到货数量
                decimal countInquantity = decimal.Parse(data0.Rows[0]["countInquantity"].ToString()); //采购订单累计入库数量
                decimal countreturnquantity = decimal.Parse(data0.Rows[0]["countreturnquantity"].ToString()); //采购订单累计退货数量
                string storg = "";//采购订单入库状态
                decimal partlabqty = 0; //当前标签累计数量
                for (int i = 1; i <= arra.Count; i++)//循环获取物料信息
                {
                    string labcode = "";//标签信息
                    decimal suminqty = 0; //单标签入库总数量
                    string batchno = ""; //批次号
                    //查询汇总标签信息
                    for (int j = 0; j < arra[i]["labcont"].Count(); j++)//循环获取标签信息
                    {
                        //更新条码状态
                        sql = @"update T_BarCodeBill set hbarcodestatus=@hbarcodestatus where hsourcebillno=@hsourcebillno and hbarcode=@hbarcode";
                        list.Add(new
                        {
                            str = sql,
                            parm = new
                            {
                                hbarcodestatus = "N",
                                hsourcebillno = ordercode,
                                hbarcode = arra[i]["labcont"][j]["labcode"].ToString()
                            }
                        });
                        //更新到货单子表退货数量
                        sql = @"update T_PurchaseArrivalOrder_sub set hreturnqty=isnull(hreturnqty,0)+@inqty where hbillno=@hbillno and hpartcode=@hpartcode";
                        list.Add(new
                        {
                            str = sql,
                            parm = new
                            {
                                hbillno = arra[i]["labcont"][j]["arrivelorder"].ToString(),
                                hpartcode = arra[i]["partcode"].ToString(),
                                hinqty = decimal.Parse(arra[i]["labcont"][j]["qty"].ToString())
                            }
                        });
                        //更新库存表
                        sql = @"update TK_WMS_Stock set qty=qty-@inqty
                                where materiel_code=@materiel_code and labcode=@labcode";
                        list.Add(new
                        {
                            str = sql,
                            parm = new
                            {
                                labcode = arra[i]["labcont"][j]["labcode"].ToString(),
                                materiel_code = arra[i]["partcode"].ToString(),
                                inqty = decimal.Parse(arra[i]["labcont"][j]["qty"].ToString())
                            }
                        });
                        labcode = labcode + arra[i]["labcont"][j]["labcode"].ToString() + ",";
                        suminqty = suminqty + decimal.Parse(arra[i]["labcont"][j]["qty"].ToString());
                        partlabqty = partlabqty + decimal.Parse(arra[i]["labcont"][j]["qty"].ToString());
                        batchno = arra[i]["labcont"][j]["batch"].ToString();
                    }
                    //更新采购订单子表退货数量
                    sql = @"update T_PurchaseOrder_sub set countreturnquantity=isnull(countreturnquantity,0)+@countreturnquantity
                            where purchaseorder_code=@purchaseorder_code and materiel_code=@materiel_code";
                    list.Add(new
                    {
                        str = sql,
                        parm = new
                        {
                            purchaseorder_code = ordercode,
                            materiel_code = arra[i]["partcode"].ToString(),
                            countreturnquantity = partlabqty
                        }
                    });
                    //写入采购退货单子表
                    sql = @"insert into  T_PurchaseReturnOrder_sub(purchaseorder_code,labcode,rownumber,materiel_code,customercode,quantity,batchno)
                                values(@purchaseorder_code,@labcode,@rownumber,@materiel_code,@customercode,@quantity,@batchno)";
                    labcode = string.Format("'{0}'", labcode.Substring(0, labcode.Length - 1).Replace(",", "','"));
                    list.Add(new
                    {
                        str = sql,
                        parm = new
                        {
                            purchaseorder_code = djwo,
                            labcode = labcode,
                            rownumber = i,
                            materiel_code = arra[i]["partcode"].ToString(),
                            customercode = arra[0]["customercode"].ToString(),
                            quantity = suminqty,
                            batchno = batchno
                        }
                    });
                    /*写入ERP采购退货单************
                     * ***********************
                     * **********************
                    **********************/
                }
                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
    }
}