jinghz@oceic.com
2023-08-24 c5cfa2df88c6d2e5b31e87e1d5a8fe49d585f0bb
WebAPI/Controllers/²Ö´æ¹ÜÀí/ÌõÂëÉú³É/Sc_BarCodeController.cs
@@ -1,5 +1,8 @@
using Newtonsoft.Json;
using DAL;
using DBUtility;
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Data;
@@ -22,8 +25,12 @@
        private WebS.WebService1 oWebs = new WebS.WebService1();
        //获取系统参数
        Pub_Class.ClsXt_SystemParameter oSystemParameter = new Pub_Class.ClsXt_SystemParameter();
        public Int64 HInterID = 0;      //内码
        public string ModName = "85";
        public string HOrgNumber = "";
        public Int64 HOrgID = -1;
        public string SourceQtyCtl = ""; //超源单数量控制
        #region æ¡ç ç”Ÿæˆ
@@ -62,7 +69,7 @@
                }
                else
                {
                    list.Add("");
                    list.Add(CampanyName);
                }
                objJsonResult.code = "1";
                objJsonResult.count = 1;
@@ -125,7 +132,7 @@
                    list.Add("唯一条码");
                    list.Add("品种条码");
                    list.Add("批次条码");
                    //list.Add("托盘条码");
                    list.Add("托盘条码");
                }
                objJsonResult.code = "1";
                objJsonResult.count = 1;
@@ -149,6 +156,7 @@
        [HttpGet]
        public object ReportFromBillList(int page, int limit, string sWhere,string HSouceBillType,string HOrgID)
        {
            oSystemParameter.ShowBill(ref DBUtility.ClsPub.sExeReturnInfo);
            List<object> columnNameList = new List<object>();
            try
            {
@@ -169,35 +177,66 @@
                {
                    case "生产订单":
                        tabname = "h_v_IFCLD_ICMOBillList_Source"; 
                        count = new SQLHelper.ClsCN().RunProcReturn("select * from h_v_IFCLD_ICMOBillList_Source "+sWhere+ " and ä»»åŠ¡æ•°é‡>isnull(入库数量,0)  and çŠ¶æ€<>'结案' order by å•据号", "h_v_IFCLD_ICMOBillList_Source").Tables[0].Rows.Count;
                        sql = string.Format(@"select top " + pageSize + " * from(select row_number() over (order by å•据号) as HRowNumber,* from h_v_IFCLD_ICMOBillList_Source " + sWhere + " and ä»»åŠ¡æ•°é‡>isnull(入库数量,0)  and çŠ¶æ€<>'结案')   as A where HRowNumber >" + pageSize + " *(" + pageNum + "-1)");
                        count = new SQLHelper.ClsCN().RunProcReturn("select * from h_v_IFCLD_ICMOBillList_Source "+sWhere+ " and ä»»åŠ¡æ•°é‡>isnull(入库数量,0)  and çŠ¶æ€<>'结案' order by å•据号", tabname).Tables[0].Rows.Count;
                        sql = string.Format(@"select * from(select row_number() over (order by å•据号) as HRowNumber,* from h_v_IFCLD_ICMOBillList_Source " + sWhere + " and ä»»åŠ¡æ•°é‡>isnull(入库数量,0)  and çŠ¶æ€<>'结案')   as A where HRowNumber >" + pageSize + " *(" + pageNum + "-1)");
                        break;
                    case "生产汇报单":
                        tabname = "h_v_IF_ICMOReportBillList_Source";
                        count = new SQLHelper.ClsCN().RunProcReturn("select * from h_v_IF_ICMOReportBillList_Source " + sWhere + " order by å•据号 desc,hsubid", tabname).Tables[0].Rows.Count;
                        sql = string.Format(@"select * from(select row_number() over (order by å•据号 desc,hsubid) as HRowNumber,* from h_v_IF_ICMOReportBillList_Source " + sWhere + ")   as A where HRowNumber >" + pageSize + " *(" + pageNum + "-1)");
                        break;
                    case "采购订单":
                        tabname = "h_v_IF_POOrderBillList_Source";
                        count = new SQLHelper.ClsCN().RunProcReturn("select * from h_v_IF_POOrderBillList_Source " + sWhere + " order by å•据号 desc,hsubid", tabname).Tables[0].Rows.Count;
                        sql = string.Format(@"select * from(select row_number() over (order by å•据号 desc,hsubid) as HRowNumber,* from h_v_IF_POOrderBillList_Source " + sWhere + ")   as A where HRowNumber >" + pageSize + " *(" + pageNum + "-1)");
                        break;
                    case "收料通知单":
                        tabname = "h_v_IF_POInStockBillList_Source";
                        if (oSystemParameter.omodel.WMS_CampanyName == "瑞与祺")
                        {
                            count = new SQLHelper.ClsCN().RunProcReturn("select top 1000 * from h_v_IF_POInStockBillList_Source " + sWhere + " order by å•据号 desc,hsubid", tabname).Tables[0].Rows.Count;
                            sql = string.Format(@"select * from(select  top 1000 row_number() over (order by å•据号 desc,hsubid) as HRowNumber,* from h_v_IF_POInStockBillList_Source " + sWhere + ")   as A where HRowNumber >" + pageSize + " *(" + pageNum + "-1)");
                        }
                        else
                        {
                            count = new SQLHelper.ClsCN().RunProcReturn("select * from h_v_IF_POInStockBillList_Source " + sWhere + " order by å•据号 desc,hsubid", tabname).Tables[0].Rows.Count;
                            sql = string.Format(@"select * from(select row_number() over (order by å•据号 desc,hsubid) as HRowNumber,* from h_v_IF_POInStockBillList_Source " + sWhere + ")   as A where HRowNumber >" + pageSize + " *(" + pageNum + "-1)");
                        }
                        break;
                    case "委外订单":
                        tabname = "h_v_IF_EntrustOrderBillList_Source";
                        count = new SQLHelper.ClsCN().RunProcReturn("select * from h_v_IF_EntrustOrderBillList_Source " + sWhere + " order by å•据号 desc,hsubid", tabname).Tables[0].Rows.Count;
                        sql = string.Format(@"select * from(select row_number() over (order by å•据号 desc,hsubid) as HRowNumber,* from h_v_IF_EntrustOrderBillList_Source " + sWhere + ")   as A where HRowNumber >" + pageSize + " *(" + pageNum + "-1)");
                        break;
                    case "退货通知单":
                    case "生产入库单":
                        tabname = "h_v_IF_ProductInBillList_Source";
                        count = new SQLHelper.ClsCN().RunProcReturn("select * from h_v_IF_ProductInBillList_Source " + sWhere + " order by å•据号 desc,hsubid", tabname).Tables[0].Rows.Count;
                        sql = string.Format(@"select top " + pageSize + " * from(select row_number() over (order by å•据号 desc,hsubid) as HRowNumber,* from h_v_IF_ProductInBillList_Source " + sWhere + ")   as A where HRowNumber >" + pageSize + " *(" + pageNum + "-1)");
                        break;
                    case "其他入库单":
                    case "采购入库单":
                        tabname = "h_v_IF_POStockInBillList_Source";
                        count = new SQLHelper.ClsCN().RunProcReturn("select * from h_v_IF_POStockInBillList_Source " + sWhere + " order by å•据号 desc,hsubid", tabname).Tables[0].Rows.Count;
                        sql = string.Format(@"select top " + pageSize + " * from(select row_number() over (order by å•据号 desc,hsubid) as HRowNumber,* from h_v_IF_POStockInBillList_Source " + sWhere + ")   as A where HRowNumber >" + pageSize + " *(" + pageNum + "-1)");
                        break;
                    case "直接调拨单":
                        break;
                    case "采购退料单":
                    case "销售退货单":
                        tabname = "h_v_IF_SellOutBackBillList_Source";
                        count = new SQLHelper.ClsCN().RunProcReturn("select * from h_v_IF_SellOutBackBillList_Source " + sWhere + " order by å•据号 desc,hsubid", tabname).Tables[0].Rows.Count;
                        sql = string.Format(@"select top " + pageSize + " * from(select row_number() over (order by å•据号 desc,hsubid) as HRowNumber,* from h_v_IF_SellOutBackBillList_Source " + sWhere + ")   as A where HRowNumber >" + pageSize + " *(" + pageNum + "-1)");
                        break;
                    case "生产退料单":
                        break;
                    case "组装拆卸单":
                        tabname = "h_v_IF_MateOutBackBillList_Source";
                        count = new SQLHelper.ClsCN().RunProcReturn("select * from h_v_IF_MateOutBackBillList_Source " + sWhere + " order by å•据号 desc,hsubid", tabname).Tables[0].Rows.Count;
                        sql = string.Format(@"select top " + pageSize + " * from(select row_number() over (order by å•据号 desc,hsubid) as HRowNumber,* from h_v_IF_MateOutBackBillList_Source " + sWhere + ")   as A where HRowNumber >" + pageSize + " *(" + pageNum + "-1)");
                        break;
                    default:
                        break;
                }
                ds = new SQLHelper.ClsCN().RunProcReturn(sql, tabname);
                string aa = ds.Tables[0].Columns[0].ToString();
                //ds.Tables[0].Columns["hmainid"].ColumnName.ToUpper();
                //ds.Tables[0].Columns["hsubid"].ColumnName.ToUpper();
                ds.Tables[0].Columns["hmainid"].ColumnName = "HMainID";
                ds.Tables[0].Columns["hsubid"].ColumnName = "HSubID";
                foreach (DataColumn col in ds.Tables[0].Columns)
                {
@@ -238,6 +277,1135 @@
        }
        #endregion
        #region [通过条码编号获取HItemId]
        [Route("Sc_BarCode/Get_HItemId")]
        [HttpGet]
        public object Get_HItemId(string sWhere)
        {
            List<object> columnNameList = new List<object>();
            try
            {
                ds = oCN.RunProcReturn("select * from h_v_IF_BarCodeBillList where æ¡ç ç¼–号 =  '" + sWhere + "'", "h_v_IF_BarCodeBillList");
                objJsonResult.code = "1";
                objJsonResult.count = 1;
                objJsonResult.Message = "Sucess!";
                objJsonResult.data = ds.Tables[0];
                return objJsonResult;
            }
            catch (Exception e)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = e.Message.ToString();
                objJsonResult.data = null;
                objJsonResult.list = columnNameList;
            }
            return objJsonResult;
        }
        #endregion
        #region [通过选择的源单信息查找源单数据]
        [Route("Sc_BarCode/SelectReportFromBillList")]
        [HttpPost]
        public object SelectReportFromBillList([FromBody] JObject msg)
        {
            //List<DBUtility.BillSelect> oList,string HBarCodeType
            var _value = msg["msg"].ToString();
            string msg1 = _value.ToString();
            string[] sArray = msg1.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries);
            string msg2 = sArray[0].ToString();
            string HSourceBillType = sArray[1].ToString();
            string HBarCodeType = sArray[2].ToString();
            string UserName = sArray[3].ToString();
            ClsPub.CurUserName = UserName;
            ListModels oListModels = new ListModels();
            List<object> ListRows = new List<object>();
            try
            {
                msg2 = msg2.Replace("\\", "");
                msg2 = msg2.Replace("\n", "");  //\n
                List<DBUtility.BillSelect> oList = Newtonsoft.Json.JsonConvert.DeserializeObject<List<DBUtility.BillSelect>>(msg2);
                foreach (DBUtility.BillSelect oSelectRow in oList)
                {
                    HSouceOrderList ordrlist = new HSouceOrderList();
                    switch (oSelectRow.BillType)
                    {
                        case "3710": //生产订单
                            //得到信息
                            ds = oCN.RunProcReturn("select * from h_v_IFCLD_ICMOList where hmainid=" + oSelectRow.BillMainID + " and hsubid=" + oSelectRow.BillSubID, "h_v_IFCLD_ICMOList");
                            //写入信息
                            ListRows.Add(HSourceOrderList(ds.Tables[0],ordrlist, HBarCodeType));
                            break;
                        case "3711": //生产汇报单
                            //得到信息
                            ds = oCN.RunProcReturn("select * from h_v_IF_ICMOReportList where hmainid=" + oSelectRow.BillMainID + " and hsubid=" + oSelectRow.BillSubID, "h_v_IF_ICMOReportList");
                            //写入信息
                            ListRows.Add(HSourceOrderList1(ds.Tables[0], ordrlist, HBarCodeType, HSourceBillType));
                            break;
                        case "1102": //采购订单
                            //得到信息
                            ds = oCN.RunProcReturn("select * from h_v_IF_POOrderList where hmainid=" + oSelectRow.BillMainID + " and hsubid=" + oSelectRow.BillSubID, "h_v_IF_POOrderList");
                            //写入信息
                            ListRows.Add(HSourceOrderList1(ds.Tables[0], ordrlist, HBarCodeType, HSourceBillType));
                            break;
                        case "1103": //收料通知单
                            //得到信息
                            ds = oCN.RunProcReturn("select * from h_v_IF_POInStockList where hmainid=" + oSelectRow.BillMainID + " and hsubid=" + oSelectRow.BillSubID, "h_v_IF_POInStockList");
                            //写入信息
                            ListRows.Add(HSourceOrderList1(ds.Tables[0], ordrlist, HBarCodeType, HSourceBillType));
                            break;
                        case "1601": //委外订单
                            //得到信息
                            ds = oCN.RunProcReturn("select * from h_v_IF_EntrustOrderList where hmainid=" + oSelectRow.BillMainID + " and hsubid=" + oSelectRow.BillSubID, "h_v_IF_EntrustOrderList");
                            //写入信息
                            ListRows.Add(HSourceOrderList1(ds.Tables[0], ordrlist, HBarCodeType, HSourceBillType));
                            break;
                        case "1202": //生产入库
                             //得到信息
                            ds = oWebs.getDataSetBySQL("select * from h_v_IF_ProductInBillList_Source where HMainID=" + oSelectRow.BillMainID + " and HSubID=" + oSelectRow.BillSubID, "h_v_IF_ProductInBillList_Source", ref DBUtility.ClsPub.sExeReturnInfo);
                            //写入信息
                            ListRows.Add(Sub_WriteInForm_InOut(ds.Tables[0], ordrlist, HBarCodeType, HSourceBillType));
                            break;
                        case "1201": //采购入库
                            //得到信息
                            ds = oWebs.getDataSetBySQL("select * from h_v_IF_POStockInBillList_Source    where HMainID=" + oSelectRow.BillMainID + " and HSubID=" + oSelectRow.BillSubID, "h_v_IF_POStockInBillList_Source   ", ref DBUtility.ClsPub.sExeReturnInfo);
                            //写入信息
                            ListRows.Add(Sub_WriteInForm_InOut(ds.Tables[0], ordrlist, HBarCodeType, HSourceBillType));
                            break;
                        case "1247": //销售退货
                            //得到信息
                            ds = oWebs.getDataSetBySQL("select * from h_v_IF_SellOutBackBillList_Source where HMainID=" + oSelectRow.BillMainID + " and HSubID=" + oSelectRow.BillSubID, "h_v_IF_SellOutBackBillList_Source", ref DBUtility.ClsPub.sExeReturnInfo);
                            //写入信息
                            ListRows.Add(Sub_WriteInForm_InOut(ds.Tables[0], ordrlist, HBarCodeType, HSourceBillType));
                            break;
                        case "1244": //生产退料
                            //得到信息
                            ds = oWebs.getDataSetBySQL("select * from h_v_IF_MateOutBackBillList_Source where HMainID=" + oSelectRow.BillMainID + " and HSubID=" + oSelectRow.BillSubID, "h_v_IF_MateOutBackBillList_Source", ref DBUtility.ClsPub.sExeReturnInfo);
                            //写入信息
                            ListRows.Add(Sub_WriteInForm_InOut(ds.Tables[0], ordrlist, HBarCodeType, HSourceBillType));
                            break;
                        case "1403": //退货通知单
                            break;
                        case "1203": //其他入库单
                            break;
                        case "1207": //直接调拨单
                            break;
                        case "1239": //采购退料单
                            break;
                        case "1255": //组装拆卸单
                            break;
                        default:
                            break;
                    }
                }
                objJsonResult.code = "1";
                objJsonResult.count = 1;
                objJsonResult.Message = "获取数据成功!";
                objJsonResult.data = null;
                objJsonResult.list = ListRows;
            }
            catch (Exception e)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = e.Message.ToString();
                objJsonResult.data = null;
                objJsonResult.list = ListRows;
            }
            return objJsonResult;
        }
        public object HSourceOrderList(DataTable dt, HSouceOrderList ordrlist,string HBarCodeType)
        {
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                ordrlist.HQty = dt.Rows[i]["未生成条码数量"].ToString();
                ordrlist.HMinQty = dt.Rows[i]["未生成条码数量"].ToString();
                ordrlist.HMainID = dt.Rows[i]["hmainid"].ToString();
                ordrlist.HSubID = dt.Rows[i]["hsubid"].ToString();
                ordrlist.HBillNo = dt.Rows[i]["单据号"].ToString();
                ordrlist.HSourceBillNo = dt.Rows[i]["单据号"].ToString();
                ordrlist.HBillType = dt.Rows[i]["HBillType"].ToString();
                ordrlist.HDate = dt.Rows[i]["日期"].ToString(); //博日 æ”¶æ–™å•据日期
                ordrlist.HShowDate = DateTime.Now.ToString();
                ordrlist.HSupID = dt.Rows[i]["hsupid"].ToString();
                ordrlist.HSupNumber = dt.Rows[i]["供应商代码"].ToString();
                ordrlist.HSupName = dt.Rows[i]["供应商"].ToString();
                ordrlist.HDeptID = dt.Rows[i]["HDeptID"].ToString();
                ordrlist.HDeptNumber = dt.Rows[i]["部门代码"].ToString();
                ordrlist.HDeptName = dt.Rows[i]["部门"].ToString();
                ordrlist.HMaterID = dt.Rows[i]["HMaterID"].ToString();
                ordrlist.HMaterNumber = dt.Rows[i]["物料代码"].ToString();
                ordrlist.HMaterName = dt.Rows[i]["物料名称"].ToString();
                ordrlist.HMaterModel = dt.Rows[i]["规格型号"].ToString();
                ordrlist.HBatchNo = dt.Rows[i]["批次"].ToString();
                ordrlist.HUnitID = dt.Rows[i]["HUnitID"].ToString();
                ordrlist.HUnitNumber = dt.Rows[i]["计量单位代码"].ToString();
                ordrlist.HUnitName = dt.Rows[i]["计量单位"].ToString();
                ordrlist.HRemark = dt.Rows[i]["备注"].ToString();
                ordrlist.HMTONo = dt.Rows[i]["计划跟踪号"].ToString();
                ordrlist.HCusID = dt.Rows[i]["HCusID"].ToString();
                ordrlist.HCusNumber = dt.Rows[i]["客户代码"].ToString();
                ordrlist.HCusName = dt.Rows[i]["客户"].ToString();
                ordrlist.HCusType = dt.Rows[i]["客户型号"].ToString();
                ordrlist.HPinfanBarCode = dt.Rows[i]["HPinfanBarCode"].ToString();
                ordrlist.HPinfan = dt.Rows[i]["HPinfan"].ToString();
                ordrlist.HSourceName = dt.Rows[i]["生产线"].ToString();
                ordrlist.HEndDate = dt.Rows[i]["计划完工日期"].ToString();//博日 ç”Ÿäº§è®¢å• å¤±æ•ˆæ—¥æœŸ
                ordrlist.HMinQty = dt.Rows[i]["最小包装数"].ToString();
                if (HBarCodeType == "仪器外购件条码容器规则")
                {
                    ordrlist.HMinQty = dt.Rows[i]["未生成条码数量"].ToString();
                }
                else if (HBarCodeType == "仪器外购件条码普通规则"|| HBarCodeType == "仪器成品条码规则"|| HBarCodeType == "试剂成品条码规则")
                {
                    ordrlist.HMinQty = "1";
                }
                else
                {
                    ordrlist.HMinQty = dt.Rows[i]["最小包装数"].ToString();
                }
            }
            return ordrlist;
        }
        public object HSourceOrderList1(DataTable dt, HSouceOrderList ordrlist, string HBarCodeType,string HSourceBillType)
        {
            oSystemParameter.ShowBill(ref DBUtility.ClsPub.sExeReturnInfo);
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                ordrlist.HQty = dt.Rows[i]["未生成条码数量"].ToString();
                ordrlist.HMinQty = dt.Rows[i]["未生成条码数量"].ToString();
                ordrlist.HMainID = dt.Rows[i]["hmainid"].ToString();
                ordrlist.HSubID = dt.Rows[i]["hsubid"].ToString();
                ordrlist.HBillNo = dt.Rows[i]["单据号"].ToString();
                ordrlist.HBillType = dt.Rows[i]["HBillType"].ToString();
                ordrlist.HDate = dt.Rows[i]["日期"].ToString(); //博日 æ”¶æ–™å•据日期
                ordrlist.HShowDate = DateTime.Now.ToString();
                ordrlist.HDeptID = dt.Rows[i]["HDeptID"].ToString();
                ordrlist.HDeptNumber = dt.Rows[i]["部门代码"].ToString();
                ordrlist.HDeptName = dt.Rows[i]["部门"].ToString();
                ordrlist.HMaterID = dt.Rows[i]["HMaterID"].ToString();
                ordrlist.HMaterNumber = dt.Rows[i]["物料代码"].ToString();
                ordrlist.HMaterName = dt.Rows[i]["物料名称"].ToString();
                ordrlist.HMaterModel = dt.Rows[i]["规格型号"].ToString();
                ordrlist.HBatchNo = dt.Rows[i]["批次"].ToString();
                ordrlist.HUnitID = dt.Rows[i]["HUnitID"].ToString();
                ordrlist.HUnitNumber = dt.Rows[i]["计量单位代码"].ToString();
                ordrlist.HUnitName = dt.Rows[i]["计量单位"].ToString();
                ordrlist.HRemark = dt.Rows[i]["备注"].ToString();
                ordrlist.HMTONo = dt.Rows[i]["计划跟踪号"].ToString();
                if(HSourceBillType == "收料通知单")
                {
                    if (oSystemParameter.omodel.WMS_CampanyName != "瑞与祺")
                    {
                        ordrlist.HFurnaceNO = dt.Rows[i]["炉号"].ToString();
                        ordrlist.HCoilNO = dt.Rows[i]["钢卷捆包号"].ToString();
                        ordrlist.HheatNO = dt.Rows[i]["热处理"].ToString();
                    }
                }
                if (HBarCodeType == "仪器外购件条码容器规则")
                {
                    ordrlist.HMinQty = dt.Rows[i]["未生成条码数量"].ToString();
                }
                else if (HBarCodeType == "仪器外购件条码普通规则")
                {
                    ordrlist.HMinQty = "1";
                }
                else
                {
                    ordrlist.HMinQty = dt.Rows[i]["最小包装数"].ToString();
                }
                ordrlist.HMaker = ClsPub.CurUserName;
                if (HSourceBillType== "收料通知单"|| HSourceBillType== "采购订单"|| HSourceBillType=="委外订单"|| HSourceBillType== "采购入库单")
                {
                    ordrlist.HInnerBillNo = dt.Rows[i]["内部采购订单号"].ToString();
                    ordrlist.HSupID= dt.Rows[i]["hsupid"].ToString();
                    ordrlist.HSupNumber = dt.Rows[i]["供应商代码"].ToString();
                    ordrlist.HSupName = dt.Rows[i]["供应商"].ToString();
                    if (HSourceBillType == "收料通知单")
                    {
                        if (dt.Rows[i]["是否赠品"].ToString() == "是")
                        {
                            ordrlist.HGiveAwayFlag = 1;
                        }
                        else
                        {
                            ordrlist.HGiveAwayFlag = 0;
                        }
                    }
                }
                if (HSourceBillType == "退货通知单")
                {
                    ordrlist.HCusID = dt.Rows[i]["HCusID"].ToString();
                    ordrlist.HCusNumber = dt.Rows[i]["客户代码"].ToString();
                    ordrlist.HCusName= dt.Rows[i]["客户"].ToString();
                }
                if (HSourceBillType == "其他入库单")
                {
                    ordrlist.HWhID = dt.Rows[i]["HWhID"].ToString();
                    ordrlist.HWhNumber = dt.Rows[i]["仓库代码"].ToString();
                    ordrlist.HWhName = dt.Rows[i]["仓库"].ToString();
                    ordrlist.HSPID = dt.Rows[i]["HSPID"].ToString();
                    ordrlist.HSPNumber = dt.Rows[i]["仓位代码"].ToString();
                    ordrlist.HSPName = dt.Rows[i]["仓位"].ToString();
                }
            }
            return ordrlist;
        }
        //根据TABLE写入界面(出入库单据)
        private object Sub_WriteInForm_InOut(DataTable dt, HSouceOrderList ordrlist, string HBarCodeType, string HSourceBillType)
        {
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                ordrlist.HQty = dt.Rows[i]["可生成条码数量"].ToString();
                ordrlist.HinitQty = dt.Rows[i]["可生成条码数量"].ToString();
                ordrlist.HMinQty = dt.Rows[i]["最小包装数"].ToString();
                ordrlist.HMainID = dt.Rows[i]["HMainID"].ToString();
                ordrlist.HSubID = dt.Rows[i]["HSubID"].ToString();
                ordrlist.HBillNo = dt.Rows[i]["单据号"].ToString();
                ordrlist.HBillType = dt.Rows[i]["HBillType"].ToString();
                ordrlist.HDeptID = dt.Rows[i]["HDeptID"].ToString();
                ordrlist.HDeptNumber = dt.Rows[i]["部门代码"].ToString();
                ordrlist.HDeptName = dt.Rows[i]["部门"].ToString();
                ordrlist.HMaterID = dt.Rows[i]["HMaterID"].ToString();
                ordrlist.HMaterNumber = dt.Rows[i]["物料代码"].ToString();
                ordrlist.HMaterName = dt.Rows[i]["物料名称"].ToString();
                ordrlist.HMaterModel = dt.Rows[i]["规格型号"].ToString();
                ordrlist.HBatchNo = dt.Rows[i]["批号"].ToString();
                ordrlist.HUnitID = dt.Rows[i]["HUnitID"].ToString();
                ordrlist.HUnitNumber = dt.Rows[i]["计量单位代码"].ToString();
                ordrlist.HUnitName = dt.Rows[i]["计量单位"].ToString();
                ordrlist.HAuxPropID = dt.Rows[i]["HAuxPropID"].ToString();
                ordrlist.HAuxPropNumber = dt.Rows[i]["辅助属性代码"].ToString();
                ordrlist.HAuxPropName = dt.Rows[i]["辅助属性"].ToString();
                ordrlist.HWhID = dt.Rows[i]["HWhID"].ToString();
                ordrlist.HWhNumber = dt.Rows[i]["仓库代码"].ToString();
                ordrlist.HWhName = dt.Rows[i]["仓库"].ToString();
                ordrlist.HSPID = dt.Rows[i]["HSPID"].ToString();
                ordrlist.HSPNumber = dt.Rows[i]["仓位代码"].ToString();
                ordrlist.HSPName = dt.Rows[i]["仓位"].ToString();
                ordrlist.HMTONo = dt.Rows[i]["计划跟踪号"].ToString();
                ordrlist.HDate = dt.Rows[i]["日期"].ToString();
                ordrlist.HShowDate = DateTime.Now.ToString();
            }
            return ordrlist;
        }
        #endregion
        #region [同步资料]
        [Route("Sc_BarCode/Sync_data")]
        [HttpGet]
        public object Sync_data()
        {
            SQLHelper.ClsCN oCn = new SQLHelper.ClsCN();
            try
            {
                oCn.RunProc("exec h_p_IF_ERPDataToLocal", ref DBUtility.ClsPub.sExeReturnInfo);
                objJsonResult.code = "1";
                objJsonResult.count = 1;
                objJsonResult.Message = "同步基础资料成功!";
                objJsonResult.data = null;
                return objJsonResult;
            }
            catch (Exception e)
            {
                objJsonResult.code = "1";
                objJsonResult.count = 1;
                objJsonResult.Message = "同步基础资料失败!" + e;
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        #endregion
        #region [批次]
        [Route("Sc_BarCode/Batch")]
        [HttpGet]
        public object Batch(int HMaterID, string HBatchNo)
        {
            SQLHelper.ClsCN oCn = new SQLHelper.ClsCN();
            bool b = false;
            if (HMaterID != 0)
            {
                DataSet oDs = oCn.RunProcReturn("exec h_p_Gy_BarCodeBill_GetBatchNo " + HMaterID.ToString() + ",'" + HBatchNo + "','" + "" + "','" + "" + "'", "h_p_Gy_BarCodeBill_GetBatchNo");
                //
                if (oDs == null && oDs.Tables[0].Rows.Count == 0)
                {
                    objJsonResult.code = "1";
                    objJsonResult.Message="生成批次失败!";
                    return objJsonResult;
                }
                else if (DBUtility.ClsPub.isStrNull(oDs.Tables[0].Rows[0][0]) == "1")
                {
                    objJsonResult.code = "1";
                    objJsonResult.Message = "生成批次成功!";
                    objJsonResult.data = DBUtility.ClsPub.isStrNull(oDs.Tables[0].Rows[0]["HBatchNo"]);
                    HBatchNo = DBUtility.ClsPub.isStrNull(oDs.Tables[0].Rows[0]["HBatchNo"]);
                    b = true;
                    return objJsonResult;
                }
            }
            //明细表是否为零行
            if (b == false)
            {
                objJsonResult.code = "1";
                objJsonResult.Message="没有需要生成批次的明细行!";
                return objJsonResult;
            }
            else //完全封闭
            {
                return null;
            }
        }
        #endregion
        #region [条码生成接口]
        [Route("Sc_BarCode/Sub_SaveBill")]
        [HttpPost]
        public object Sub_SaveBill([FromBody] JObject msg)
        {
            try
            {
                var _value = msg["msg"].ToString();
                string msg1 = _value.ToString();
                string[] sArray = msg1.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries);
                string msg2 = sArray[0].ToString();
                string HOrgType = sArray[1].ToString();
                string HSourceBillTypeName = sArray[2].ToString();
                string HSelectBarCodeType = sArray[3].ToString();
                string CampanyName = sArray[4].ToString()=="xxx"?"": sArray[4].ToString();
                string UserName = sArray[5].ToString();
                ClsPub.CurUserName = UserName;
                //获取内码
                HInterID = DBUtility.ClsPub.CreateBillID_Prod(ModName, ref DBUtility.ClsPub.sExeReturnInfo);
                DAL.ClsGy_ORGANIZATIONS_View oClsGy_ORGANIZATIONS_View = new DAL.ClsGy_ORGANIZATIONS_View();
                HOrgNumber = "";
                if (oClsGy_ORGANIZATIONS_View.GetInfoByName(HOrgType))
                {
                    HOrgID = oClsGy_ORGANIZATIONS_View.omodel.HItemID;
                    HOrgNumber = DBUtility.ClsPub.isStrNull(oClsGy_ORGANIZATIONS_View.omodel.HNumber);
                }
                if (HOrgID == -1)
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "选择组织有错误!";
                    return objJsonResult;
                }
                if (!Sub_AllowSave(msg2, HSelectBarCodeType))//单据完整性判断
                {
                    return objJsonResult;
                }
                if (HSelectBarCodeType == "仪器成品条码规则")
                {
                    //客户定制
                }
                else
                {
                    //生成条码
                    SaveBarCode(msg2, HSelectBarCodeType, CampanyName, HSourceBillTypeName);
                }
            }
            catch (Exception e)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "条码生成失败!"+e.Message;
                return objJsonResult;
            }
            return objJsonResult;
        }
        #endregion
        #region[单据完整性判断]
        private bool Sub_AllowSave(string msg2, string HSelectBarCodeType)
        {
            msg2 = msg2.Replace("\\", "");
            msg2 = msg2.Replace("\n", "");  //\n
            List<HSouceOrderList> ordrlist = Newtonsoft.Json.JsonConvert.DeserializeObject<List<HSouceOrderList>>(msg2);
            string sHRemark = "";
            for (int i = 0; i < ordrlist.Count; i++)
            {
                long HSno = i + 1;                                                          // åºå·
                string HBarCodeType = HSelectBarCodeType;                                   // æ¡ç ç±»åž‹
                string HSourceBillNo = DBUtility.ClsPub.isStrNull(ordrlist[i].HBillNo);     // æºå•单号
                long HMaterID = DBUtility.ClsPub.isLong(ordrlist[i].HMaterID);              // ç‰©æ–™å†…码
                string HBatchNo = DBUtility.ClsPub.isStrNull(ordrlist[i].HBatchNo);         // æ‰¹å·
                long HAuxPropID = DBUtility.ClsPub.isLong(ordrlist[i].HAuxPropID);          // è¾…助属性ID
                double HSourceQty = DBUtility.ClsPub.isDoule(ordrlist[i].HMinQty);          // æºå•数量
                double HQty = DBUtility.ClsPub.isDoule(ordrlist[i].HQty);                   // æ•°é‡
                double HMinQty = DBUtility.ClsPub.isDoule(ordrlist[i].HMinQty);             // æœ€å°åŒ…装数
                if (HMaterID != 0)
                {
                    DataSet oDsCheck = oCN.RunProcReturn("exec h_p_Gy_BarCodeBill_AddCheck " + HSno.ToString() + ",'" + HBarCodeType + "','" + HSourceBillNo + "'," + HMaterID.ToString() + ",'" + HBatchNo + "'," + HAuxPropID.ToString() + "," + HSourceQty.ToString() + "," + HQty.ToString() + "," + HMinQty.ToString() + "," + HOrgID.ToString() + ",'" + SourceQtyCtl + "'", "h_p_Gy_BarCodeBill_AddCheck");
                    if (oDsCheck == null && oDsCheck.Tables[0].Rows.Count == 0)
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = "条码生成完整性判断错误";
                        return false;
                    }
                    else if (DBUtility.ClsPub.isStrNull(oDsCheck.Tables[0].Rows[0][0]) == "1")
                    {
                        sHRemark = sHRemark + DBUtility.ClsPub.isStrNull(oDsCheck.Tables[0].Rows[0]["HRemark"]);
                    }
                }
            }
            if (sHRemark != "")
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = sHRemark;
                return false;
            }
            return true;
        }
        #endregion
        #region[条码生成方法]
        private object SaveBarCode(string msg2, string HSelectBarCodeType, string CampanyName,string HSourceBillTypeName)
        {
            int LSHlen = 6;             //流水号长度
            int SumLen = 10;            //总长度
            string TM = "";             //条码
            string HNumber = "";        //物料内码
            string HMaterNumber = "";   //物料代码
            double HSumQty = 0;         //产品数量
            double HMinQty = 0;         //最小包装数
            int HBQty = 0;              //箱数
            double HQty = 0;            //数量
            string WeiShu = "";         //尾数
            int LSH = 0;                //流水号
            string LSH2 = "";           //流水号转换成字符
            string sDate = "";          //日期
            string sYear = "";          //å¹´
            string sPeriod = "";        //月
            string sDay = "";           //日
            string HBatchNo = "";       //批次
            string HYasuoji = "";       //压缩机
            string HModelName = "";       //机型
            string HICMOBillNo = "";       //源单号
            string HBarCodeBatchNo = "";       //条码批次号
            string HBarCodeDate = "";         //条码日期
            int k = 0;
            int n = 0;                  //同一批生成条码中的第几条
            string sTMNumber = "";      //条码自定义前缀
            string HCoilNO = "";
            string HFurnaceNO = "";
            string HFactory = "";
            decimal HAuxQty = 0;
            string HheatNO = "";
            DataSet Ds;
            msg2 = msg2.Replace("\\", "");
            msg2 = msg2.Replace("\n", "");  //\n
            List<HSouceOrderList> ordrlist = Newtonsoft.Json.JsonConvert.DeserializeObject<List<HSouceOrderList>>(msg2);
            List<HBarCodeList> ListRows = new List<HBarCodeList>();
            for (int j = 0; j < ordrlist.Count; j++)
            {
                if (ClsPub.isLong(ordrlist[j].HMaterID) != 0)
                {
                    HNumber = DBUtility.ClsPub.isStrNull(ordrlist[j].HMaterID);
                    HMaterNumber = DBUtility.ClsPub.isStrNull(ordrlist[j].HMaterNumber);
                    HBatchNo = ClsPub.isStrNull(ordrlist[j].HBatchNo);
                    HCoilNO = ClsPub.isStrNull(ordrlist[j].HCoilNO);
                    HFurnaceNO = ClsPub.isStrNull(ordrlist[j].HFurnaceNO);
                    HFactory = ClsPub.isStrNull(ordrlist[j].HFactory);
                    HAuxQty = ClsPub.isLong(ordrlist[j].HAuxQty);
                    HheatNO = ClsPub.isStrNull(ordrlist[j].HheatNO);
                    //日期获取方式
                    sDate = DateTime.Now.ToString();
                    //
                    if (HSelectBarCodeType == "仪器外购件条码普通规则" || HSelectBarCodeType == "仪器外购件条码容器规则") //单据日期(收料通知单)
                    {
                        sDate = DBUtility.ClsPub.isStrNull(ordrlist[j].HDate);
                    }
                    else if (HSelectBarCodeType == "试剂成品条码规则")// å¤±æ•ˆæ—¥æœŸï¼ˆç”Ÿäº§è®¢å•)
                    {
                        sDate = DBUtility.ClsPub.isStrNull(ordrlist[j].HEndDate);
                    }
                    else if (CampanyName == "夏宝电器")// æ—¥æœŸï¼šç”Ÿäº§è®¢å• æ¡ç æ—¥æœŸ
                    {
                        sDate = DBUtility.ClsPub.isStrNull(ordrlist[j].HDate);
                    }
                    HYasuoji = DBUtility.ClsPub.isStrNull(ordrlist[j].HPinfan); //压缩机代码(夏宝电器)
                    HModelName = DBUtility.ClsPub.isStrNull(ordrlist[j].HCusType); //机型(夏宝电器)
                    HICMOBillNo = DBUtility.ClsPub.isStrNull(ordrlist[j].HSourceBillNo); //生产订单号(夏宝电器)
                    HBarCodeBatchNo = DBUtility.ClsPub.isStrNull(ordrlist[j].HPinfanBarCode); //条码批次号(夏宝电器)
                    HBarCodeDate = DBUtility.ClsPub.isStrNull(ordrlist[j].HSupNumber); //条码日期(夏宝电器)
                    //
                    sYear = ClsPub.isDate(sDate).Year.ToString().Substring(2, 2);
                    sPeriod = "0" + ClsPub.isDate(sDate).Month.ToString();
                    sPeriod = sPeriod.Substring(sPeriod.Length - 2, 2);
                    sDay = "0" + ClsPub.isDate(sDate).Day.ToString();
                    sDay = sDay.Substring(sDay.Length - 2, 2);
                    //==================================
                    if (HSelectBarCodeType == "唯一条码")
                    {
                        if (CampanyName == "卓力") //系统参数  å®¢æˆ·å®šåˆ¶åŒ–名称
                        {
                            //条码前缀 = ç‰©æ–™ä»£ç  + å¹´ + æœˆ + æ—¥
                            sTMNumber = HNumber + sYear + sPeriod + sDay;
                            Ds = oCN.RunProcReturn("exec h_p_WMS_GetMaxNo '" + sTMNumber + "'", "h_p_WMS_GetMaxNo");    //获取最大流水号
                            //oCn.RunProc("exec h_p_WMS_SetMaxNo '" + sTMNumber + "'");
                            LSH = ClsPub.isInt(Ds.Tables[0].Rows[0][0]);
                        }
                        else if (CampanyName == "飞龙")
                        {
                            string HWorksNumber = "";
                            HWorksNumber = CampanyName;
                            if (HWorksNumber == "")
                            {
                                objJsonResult.code = "0";
                                objJsonResult.count = 0;
                                objJsonResult.Message = "工厂代码不能为空!";
                                return objJsonResult;
                            }
                            //条码前缀 = å·¥åŽ‚ä»£ç  + ç‰©æ–™å†…码 + æ—¥æœŸ
                            sTMNumber = HWorksNumber + HNumber + sYear + sPeriod + sDay;
                            Ds = oCN.RunProcReturn("exec h_p_WMS_GetMaxNo '" + sTMNumber + "'", "h_p_WMS_GetMaxNo");    //获取最大流水号
                            //oCn.RunProc("exec h_p_WMS_SetMaxNo '" + sTMNumber + "'");
                            LSH = ClsPub.isInt(Ds.Tables[0].Rows[0][0]);
                        }
                        else if (CampanyName == "瑞与祺") {
                            var date = DateTime.Now.ToString("yyMMdd");//日期
                            if (HSourceBillTypeName == "收料通知单")
                            {
                                //物料代码-包装标识-日期-供应商代码-八位流水号
                                LSHlen = 8;//流水号是8位
                                DataSet dataDs = oCN.RunProcReturn($@"select  isnull(pr.FNUMBER,'') F_TEZV_BASE from  AIS20220308151944..T_PUR_Receive a
inner join AIS20220308151944..T_PUR_RECEIVEENTRY b on a.FID = b.FID
left join AIS20220308151944..T_BAS_PREBDONE pr on b.F_TEZV_BASE=pr.FID
where a.FID={ordrlist[j].HMainID} and b.FENTRYID={ordrlist[j].HSubID}", "T_PUR_Receive");
                                if (dataDs.Tables[0].Rows.Count == 0)
                                {
                                    objJsonResult.code = "0";
                                    objJsonResult.count = 0;
                                    objJsonResult.Message = "单据不存在!";
                                    return objJsonResult;
                                }
                                sTMNumber = ordrlist[j].HMaterNumber + "-" + dataDs.Tables[0].Rows[0]["F_TEZV_BASE"].ToString() + "-" + date + "-" + ordrlist[j].HSupNumber + "-";
                                //sTMNumber = ordrlist[j].HMaterNumber + "-包装标识-" + date + "-" + ordrlist[j].HSupNumber + "-";
                                Ds = oCN.RunProcReturn("exec h_p_WMS_GetMaxNo '" + sTMNumber + "'", "h_p_WMS_GetMaxNo");    //获取最大流水号
                                LSH = ClsPub.isInt(Ds.Tables[0].Rows[0][0]);
                            }
                            else if (HSourceBillTypeName == "生产入库单")
                            {
                                //物料代码-包装标识-日期-组织代码-八位流水号
                                LSHlen = 8;//流水号是8位
                                DataSet dataDs = oCN.RunProcReturn($@"select  isnull(pr.FNUMBER,'') F_bsv_Base1,a.FPRDORGID from  AIS20220308151944..T_PRD_INSTOCK a
inner join AIS20220308151944..T_PRD_INSTOCKENTRY b on a.FID = b.FID
join(
select HERPInterID, HERPEntryID, HInterID, HEntryID from Kf_ICStockBillSub
)kf on b.FID = kf.HERPInterID and b.FENTRYID = kf.HERPEntryID
left join AIS20220308151944..T_BAS_PREBDONE pr on b.F_bsv_Base1=pr.FID
where kf.HInterID = {ordrlist[j].HMainID} and kf.HEntryID = {ordrlist[j].HSubID}", "T_PRD_INSTOCK");
                                if (dataDs.Tables[0].Rows.Count == 0)
                                {
                                    objJsonResult.code = "0";
                                    objJsonResult.count = 0;
                                    objJsonResult.Message = "单据不存在!";
                                    return objJsonResult;
                                }
                                string RQHNumber = "";
                                if (dataDs.Tables[0].Rows[0]["FPRDORGID"].ToString() == "100014")//江苏
                                {
                                    RQHNumber = "1.07.008";
                                }
                                else if (dataDs.Tables[0].Rows[0]["FPRDORGID"].ToString() == "100012")//上海
                                {
                                    RQHNumber = "1.04.008";
                                }
                                sTMNumber = ordrlist[j].HMaterNumber + "-" + dataDs.Tables[0].Rows[0]["F_bsv_Base1"].ToString() + "-" + date + "-" + RQHNumber + "-";
                                //sTMNumber = ordrlist[j].HMaterNumber + "-包装标识-"+ date + "-组织代码-";
                                Ds = oCN.RunProcReturn("exec h_p_WMS_GetMaxNo '" + sTMNumber + "'", "h_p_WMS_GetMaxNo");    //获取最大流水号
                                LSH = ClsPub.isInt(Ds.Tables[0].Rows[0][0]);
                            }
                            else
                            {
                                sTMNumber = HOrgNumber + HNumber + sYear + sPeriod + sDay;
                                Ds = oCN.RunProcReturn("exec h_p_WMS_GetMaxNo '" + sTMNumber + "'", "h_p_WMS_GetMaxNo");    //获取最大流水号
                                LSH = ClsPub.isInt(Ds.Tables[0].Rows[0][0]);
                            }
                        }
                        else  //通用方法
                        {
                            //条码前缀 = ç»„织代码 + ç‰©æ–™ä»£ç  + å¹´ + æœˆ + æ—¥
                            sTMNumber = HOrgNumber + HNumber + sYear + sPeriod + sDay;
                            Ds = oCN.RunProcReturn("exec h_p_WMS_GetMaxNo '" + sTMNumber + "'", "h_p_WMS_GetMaxNo");    //获取最大流水号
                            //oCn.RunProc("exec h_p_WMS_SetMaxNo '" + sTMNumber + "'");
                            LSH = ClsPub.isInt(Ds.Tables[0].Rows[0][0]);
                        }
                    }
                    else if (HSelectBarCodeType == "品种条码")
                    {
                        if (CampanyName == "五云") //系统参数  å®¢æˆ·å®šåˆ¶åŒ–名称
                        {
                            TM = HNumber + ";" + DBUtility.ClsPub.isStrNull(ordrlist[j].HMTONo);
                        }
                        else
                        {
                            TM = HOrgNumber + HNumber;
                        }
                    }
                    else if (HSelectBarCodeType == "批次条码")
                    {
                        TM = HOrgNumber + HNumber + HBatchNo;
                    }//博日特殊处理
                    else if (HSelectBarCodeType == "仪器外购件条码普通规则" || HSelectBarCodeType == "仪器外购件条码容器规则")
                    {
                        //物料编码+单据日期(YYMMDD)+流水4位
                        sTMNumber = HMaterNumber + sYear + sPeriod + sDay;
                        Ds = oCN.RunProcReturn("exec h_p_WMS_GetMaxNo '" + sTMNumber + "'", "h_p_WMS_GetMaxNo");    //获取最大流水号
                                                                                                                    //oCn.RunProc("exec h_p_WMS_SetMaxNo '" + sTMNumber + "'");
                        LSH = ClsPub.isInt(Ds.Tables[0].Rows[0][0]);
                        LSHlen = 4;
                    }
                    else if (HSelectBarCodeType == "仪器成品条码规则") //另外处理了
                    {
                        //物料编码+序列号+生产日期
                        //sTMNumber = HMaterNumber + sYear + sPeriod + sDay;
                        //Ds = oCn.RunProcReturn("exec h_p_WMS_GetMaxNo '" + sTMNumber + "'", "h_p_WMS_GetMaxNo");    //获取最大流水号
                        //                                                                                            //oCn.RunProc("exec h_p_WMS_SetMaxNo '" + sTMNumber + "'");
                        //LSH = ClsPub.isInt(Ds.Tables[0].Rows[0][0]);
                    }
                    else if (HSelectBarCodeType == "试剂成品条码规则")
                    {
                        //物料编码+生产批号+流水号6位-
                        sTMNumber = HMaterNumber + HBatchNo;
                        Ds = oCN.RunProcReturn("exec h_p_WMS_GetMaxNo '" + sTMNumber + "'", "h_p_WMS_GetMaxNo");    //获取最大流水号
                                                                                                                    //oCn.RunProc("exec h_p_WMS_SetMaxNo '" + sTMNumber + "'");
                        LSH = ClsPub.isInt(Ds.Tables[0].Rows[0][0]);
                        LSHlen = 6;
                    }
                    else if (HSelectBarCodeType == "内销机条码")
                    {
                        //制造本部1位(默认1)+机型代码5位()+å¹´2位+月1位(A、B、C代替10月份)
                        //+日2位+条码批次码2位+压缩机代码1位+00+流水号4位+校验码(默认0)
                        sTMNumber = "1" + HModelName + HBarCodeDate + HBarCodeBatchNo + HYasuoji + "00";
                        Ds = oCN.RunProcReturn("exec h_p_WMS_GetMaxNo '" + sTMNumber + "'", "h_p_WMS_GetMaxNo");    //获取最大流水号
                                                                                                                    //oCn.RunProc("exec h_p_WMS_SetMaxNo '" + sTMNumber + "'");
                        LSH = ClsPub.isInt(Ds.Tables[0].Rows[0][0]);
                        LSHlen = 5;
                        if (sTMNumber.Length != 16)
                        {
                            objJsonResult.code = "0";
                            objJsonResult.count = 0;
                            objJsonResult.Message = "条码长度不够16位,是否数据不全!制造本部1位:[0] + æœºåž‹ä»£ç 5位:[" + HModelName + "] + å¹´æœˆæ—¥5位:[" + HBarCodeDate + "] + æ‰¹æ¬¡å·2位:[" + HBarCodeBatchNo + "]+ åŽ‹ç¼©æœº1位:[" + HYasuoji + "]+00 ; ";
                            return objJsonResult;
                        }
                    }
                    else if (HSelectBarCodeType == "外销机条码")
                    {
                        //物料代码11位+å¹´2位+月1位(A、B、C代替10月份)+日2位+批次2位+流水号4位
                        //sTMNumber = HMaterNumber.Replace(Convert.ToChar("."),Convert.ToChar("")) + HBarCodeDate + HBarCodeBatchNo;
                        sTMNumber = HMaterNumber.Replace(".", "") + HBarCodeDate + HBarCodeBatchNo;
                        Ds = oCN.RunProcReturn("exec h_p_WMS_GetMaxNo '" + sTMNumber + "'", "h_p_WMS_GetMaxNo");    //获取最大流水号
                                                                                                                    //oCn.RunProc("exec h_p_WMS_SetMaxNo '" + sTMNumber + "'");
                        LSH = ClsPub.isInt(Ds.Tables[0].Rows[0][0]);
                        LSHlen = 5;
                        if (sTMNumber.Length != 18)
                        {
                            objJsonResult.code = "0";
                            objJsonResult.count = 0;
                            objJsonResult.Message = "条码长度不够18位,是否数据不全!物料代码11位:[" + HMaterNumber.Replace(".", "") + "]+年月日5位:[" + HBarCodeDate + "]+批次号2位:[" + HBarCodeBatchNo + "];";
                            return objJsonResult;
                        }
                    }
                    else if (HSelectBarCodeType == "半成品条码")
                    {
                        //生产订单号+4位流水号
                        sTMNumber = HICMOBillNo;
                        Ds = oCN.RunProcReturn("exec h_p_WMS_GetMaxNo '" + sTMNumber + "'", "h_p_WMS_GetMaxNo");    //获取最大流水号
                                                                                                                    //oCn.RunProc("exec h_p_WMS_SetMaxNo '" + sTMNumber + "'");
                        LSH = ClsPub.isInt(Ds.Tables[0].Rows[0][0]);
                        LSHlen = 5;
                    }
                    else if (HSelectBarCodeType == "托盘条码")
                    {
                        LSHlen = 4;     //流水号长度
                        //条码前缀 = ç‰©æ–™å†…码 + å¹´ + æœˆ + æ—¥
                        sTMNumber = HNumber + sYear + sPeriod + sDay;
                        Ds = oCN.RunProcReturn("exec h_p_WMS_GetMaxNo '" + sTMNumber + "'", "h_p_WMS_GetMaxNo");    //获取最大流水号
                        LSH = ClsPub.isInt(Ds.Tables[0].Rows[0][0]);
                    }
                    else
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = "错误的条码类型,不能生成条码!";
                        return objJsonResult;
                    }
                    HBQty = HBQty + ClsPub.isInt(ordrlist[j].HBQty);
                    HMinQty = ClsPub.isDoule(ordrlist[j].HMinQty);
                    HSumQty = ClsPub.isDoule(ordrlist[j].HQty);
                    n = 0;
                    for (int i = k; i < HBQty; i++)
                    {
                        if (HSumQty - HMinQty > 0)
                        {
                            WeiShu = "";
                            HSumQty = HSumQty - HMinQty;
                        }
                        else
                        {
                            if (HSumQty == HMinQty)
                            {
                                WeiShu = "";
                            }
                            else
                            {
                                WeiShu = "尾数";
                            }
                            HMinQty = HSumQty;
                        }
                        //
                        LSH = LSH + 1;
                        LSH2 = LSH.ToString();
                        while (LSH2.Length < LSHlen)  //如果流水号小于6位数前面补0
                        {
                            LSH2 = "0" + LSH2;
                        }
                        if (HSelectBarCodeType == "唯一条码" || HSelectBarCodeType == "托盘条码")
                        {
                            //条码编号 = æ¡ç å‰ç¼€ + æµæ°´å·
                            TM = sTMNumber + LSH2;
                        }
                        else if (HSelectBarCodeType == "仪器外购件条码普通规则" || HSelectBarCodeType == "仪器外购件条码容器规则" || HSelectBarCodeType == "试剂成品条码规则"
                            || HSelectBarCodeType == "半成品条码" || HSelectBarCodeType == "外销机条码")
                        {
                            TM = sTMNumber + LSH2;
                        }
                        else if (HSelectBarCodeType == "内销机条码")
                        {
                            TM = sTMNumber + LSH2 + "0";
                        }
                        //
                        if (TM.Trim() == "")
                        {
                            objJsonResult.code = "0";
                            objJsonResult.count = 0;
                            objJsonResult.Message = "条形码不能为空,不能生成条码!";
                            return objJsonResult;
                        }
                        HBarCodeList barcode = new HBarCodeList();
                        barcode.HBarCode2 = TM;
                        barcode.HEntryID2 = ClsPub.isStrNull(j + 1);
                        barcode.HMaterID2 = ordrlist[j].HMaterID;
                        barcode.HMaterNumber2 = ordrlist[j].HMaterNumber;
                        barcode.HMaterName2 = ordrlist[j].HMaterName;
                        barcode.HMaterModel2 = ordrlist[j].HMaterModel;
                        barcode.HPinfan2 = ordrlist[j].HPinfan;
                        barcode.HPinfanBarCode2 = ordrlist[j].HPinfanBarCode;
                        barcode.HAuxPropID2 = ordrlist[j].HAuxPropID;
                        barcode.HAuxPropNumber2 = ordrlist[j].HAuxPropNumber;
                        barcode.HAuxPropName2 = ordrlist[j].HAuxPropName;
                        barcode.HUnitID2 = ordrlist[j].HUnitID;
                        barcode.HUnitNumber2 = ordrlist[j].HUnitNumber;
                        barcode.HUnitName2 = ordrlist[j].HUnitName;
                        barcode.HQty2 = ClsPub.isStrNull(HMinQty);
                        barcode.HBatchNo2 = ordrlist[j].HBatchNo;
                        barcode.HSourceInterID2 = ordrlist[j].HMainID;
                        barcode.HSourceEntryID2 = ordrlist[j].HSubID;
                        barcode.HSourceBillNo2 = ordrlist[j].HBillNo;
                        barcode.HSourceBillType2 = ordrlist[j].HBillType;
                        barcode.HPrint = "0";
                        barcode.HWei = WeiShu;
                        barcode.HBarcodeNo = ClsPub.isStrNull(n + 1);
                        barcode.HBarcodeQtys = ordrlist[j].HBQty;
                        barcode.HSupID2 = ordrlist[j].HSupID;
                        barcode.HSupNumber2 = ordrlist[j].HSupNumber;
                        barcode.HSupName2 = ordrlist[j].HSupName;
                        barcode.HDeptID2 = ordrlist[j].HDeptID;
                        barcode.HDeptNumber2 = ordrlist[j].HDeptNumber;
                        barcode.HDeptName2 = ordrlist[j].HDeptName;
                        barcode.HRemark2 = ordrlist[j].HRemark;
                        barcode.HDate2 = ordrlist[j].HDate;
                        barcode.HShowDate2 = ordrlist[j].HShowDate;
                        barcode.HWhID2 = ordrlist[j].HWhID;
                        barcode.HWhNumber2 = ordrlist[j].HWhNumber;
                        barcode.HWhName2 = ordrlist[j].HWhName;
                        barcode.HSPID2 = ordrlist[j].HSPID;
                        barcode.HSPNumber2 = ordrlist[j].HSPNumber;
                        barcode.HSPName2 = ordrlist[j].HSPName;
                        barcode.HMTONo2 = ordrlist[j].HMTONo;
                        barcode.HCusID2 = ordrlist[j].HCusID;
                        barcode.HCusNumber2 = ordrlist[j].HCusNumber;
                        barcode.HCusName2 = ordrlist[j].HCusName;
                        barcode.HCusType2 = ordrlist[j].HCusType;
                        barcode.HSourceID2 = ordrlist[j].HSourceID;
                        barcode.HSourceNumber2 = ordrlist[j].HSourceNumber;
                        barcode.HSourceName2 = ordrlist[j].HSourceName;
                        barcode.HEndDate2 = ordrlist[j].HEndDate;
                        barcode.HSeOrderBillNo2 = ordrlist[j].HSeOrderBillNo;
                        barcode.HInnerBillNo2 = ordrlist[j].HInnerBillNo;
                        barcode.HMaker2 = ordrlist[j].HMaker;
                        barcode.HGiveAwayFlag2 = ordrlist[j].HGiveAwayFlag;
                        barcode.HCoilNO = ordrlist[j].HCoilNO;
                        barcode.HFurnaceNO = ordrlist[j].HFurnaceNO;
                        barcode.HFactory = ordrlist[j].HFactory;
                        barcode.HAuxQty = ordrlist[j].HAuxQty;
                        barcode.HheatNO = ordrlist[j].HheatNO;
                        ListRows.Add(barcode);
                        k = k + 1;
                        n = n + 1;
                        oCN.RunProc("exec h_p_WMS_SetMaxNo '" + sTMNumber + "'");
                    }
                }
            }
            string HWei = "";      //尾数
            string HBarCode = "";
            string HBarCodeType = "";
            Int64 HMaterID = 0;
            Int64 HAuxPropID = 0;
            Int64 HUnitID = 0;
            double HQty2 = 0;
            string HBatchNo2 = "";
            Int64 HSupID = 0;
            Int64 HGroupID = 0;
            int HPrintQty = 0;
            Int64 HSourceInterID = 0;
            Int64 HSourceEntryID = 0;
            string HSourceBillNo = "";
            string HSourceBillType = "";
            Int64 HBarcodeNo = 0;       //托号
            Int64 HBarcodeQtys = 0;     //总托数
            Int64 HDeptID = 0;
            Int64 HWhID = 0;
            Int64 HSPID = 0;
            string HRemark = "";
            string HMaterName = "";
            string HMaterModel = "";
            string HPinfan = "";
            string HMTONo = "";
            Int64 HCusID = 0;
            string HCusType = "";
            DateTime HEndDate;
            string HWorkLineName = "";
            string HSeOrderBillNo = "";
            string HInnerBillNo = "";
            bool HGiveAwayFlag = false;
            Int64 HEntryID = 0;
            string HCoilNO2 = "";
            string HFurnaceNO2 = "";
            string HFactory2 = "";
            decimal HAuxQty2 = 0;
            string HheatNO2 = "";
            DateTime HProduceDate;
            DateTime HExpiryDate;
            try
            {
                oCN.BeginTran();
                for (int i = 0; i < ListRows.Count; i++)
                {
                    if (ClsPub.isLong(ListRows[i].HMaterID2) != 0)
                    {
                        HWei = ClsPub.isStrNull(ListRows[i].HWei);
                        HBarCode = ClsPub.isStrNull(ListRows[i].HBarCode2);
                        //
                        HBarCodeType = ClsPub.isStrNull(HSelectBarCodeType);
                        if (CampanyName == "博日科技" || CampanyName == "夏宝电器")
                        {
                            HBarCodeType = "唯一条码";
                        }
                        //
                        HMaterID = ClsPub.isLong(ListRows[i].HMaterID2);
                        HEntryID = ClsPub.isLong(ListRows[i].HEntryID2);
                        HAuxPropID = ClsPub.isLong(ListRows[i].HAuxPropID2);
                        HUnitID = ClsPub.isLong(ListRows[i].HUnitID2);
                        HQty2 = ClsPub.isDoule(ListRows[i].HQty2);
                        HBatchNo2 = ClsPub.isStrNull(ListRows[i].HBatchNo2);
                        HSourceInterID = ClsPub.isLong(ListRows[i].HSourceInterID2);
                        HSourceEntryID = ClsPub.isLong(ListRows[i].HSourceEntryID2);
                        HSourceBillNo = ClsPub.isStrNull(ListRows[i].HSourceBillNo2);
                        HSourceBillType = ClsPub.isStrNull(ListRows[i].HSourceBillType2);
                        HBarcodeQtys = ClsPub.isLong(ListRows[i].HBarcodeQtys);
                        HBarcodeNo = ClsPub.isLong(ListRows[i].HBarcodeNo);
                        HSupID = ClsPub.isLong(ListRows[i].HSupID2);
                        HDeptID = ClsPub.isLong(ListRows[i].HDeptID2);
                        HWhID = ClsPub.isLong(ListRows[i].HWhID2);
                        HSPID = ClsPub.isLong(ListRows[i].HSPID2);
                        HRemark = ClsPub.isStrNull(ListRows[i].HRemark2);
                        HMaterName = ClsPub.isStrNull(ListRows[i].HMaterName2);
                        HMaterModel = ClsPub.isStrNull(ListRows[i].HMaterModel2);
                        HPinfan = ClsPub.isStrNull(ListRows[i].HPinfan2);
                        HMTONo = ClsPub.isStrNull(ListRows[i].HMTONo2);
                        HCusID = ClsPub.isLong(ListRows[i].HCusID2);
                        HCusType = ClsPub.isStrNull(ListRows[i].HCusType2);
                        HEndDate = ClsPub.isDate(ListRows[i].HEndDate2);
                        HWorkLineName = ClsPub.isStrNull(ListRows[i].HSourceName2);
                        HSeOrderBillNo = ClsPub.isStrNull(ListRows[i].HSeOrderBillNo2);
                        HInnerBillNo = ClsPub.isStrNull(ListRows[i].HInnerBillNo2);
                        HGiveAwayFlag = ClsPub.isBool(ListRows[i].HGiveAwayFlag2);
                        HCoilNO2 = ClsPub.isStrNull(ListRows[i].HCoilNO);
                        HFurnaceNO2 = ClsPub.isStrNull(ListRows[i].HFurnaceNO);
                        HFactory2 = ClsPub.isStrNull(ListRows[i].HFactory);
                        HAuxQty2 = ClsPub.isLong(ListRows[i].HAuxQty);
                        HheatNO2 = ClsPub.isStrNull(ListRows[i].HheatNO);
                        HProduceDate = ClsPub.isDate(ListRows[i].HProduceDate);
                        HExpiryDate = ClsPub.isDate(ListRows[i].HExpiryDate);
                        oCN.RunProc("insert into Gy_BarCodeBill (HBarCode,HBarCodeType,HMaterID,HUnitID,HQty" +
                                    ",HBatchNo,HSupID,HGroupID,HMaker,HMakeDate,HPrintQty,HinitQty" +
                                    ",HSourceInterID,HSourceEntryID,HSourceBillNo,HSourceBillType,HEndQty " +
                                    ",HBarcodeQtys,HBarcodeNo,HDeptID,HWhID,HSPID,HRemark " +
                                    ",HCusID,HCusType,HEndDate,HWorkLineName,HBarCodeDate " +
                                    ",HSTOCKORGID,HOWNERID,HSeOrderBillNo,HInterID,HEntryID " +
                                    ",HGiveAwayFlag " +
                                    ",HMaterName,HMaterModel,HPinfan,HAuxPropID,HMTONo,HInnerBillNo" +
                                    ",HCoilNO,HFurnaceNO,HFactory,HAuxQty,HheatNO,HProduceDate,HExpiryDate " +
                                    ") values ("
                                    + "'" + HBarCode + "','" + HBarCodeType + "'," + HMaterID.ToString() + "," + HUnitID.ToString() + "," + HQty2.ToString()
                                    + ",'" + HBatchNo2 + "'," + HSupID.ToString() + "," + HGroupID.ToString() + ",'" + ClsPub.CurUserName + "',getdate()," + HPrintQty.ToString() + "," + HQty2.ToString()
                                    + ", " + HSourceInterID.ToString() + "," + HSourceEntryID.ToString() + ",'" + HSourceBillNo + "','" + HSourceBillType + "','" + HWei + "'"
                                    + ", " + HBarcodeQtys.ToString() + "," + HBarcodeNo.ToString() + "," + HDeptID.ToString() + "," + HWhID.ToString() + "," + HSPID.ToString() + ",'" + HRemark + "'"
                                    + ", " + HCusID.ToString() + ",'" + HCusType + "','" + HEndDate.ToShortDateString() + "','" + HWorkLineName + "','" + sDate + "'"
                                    + ", " + HOrgID.ToString() + "," + HOrgID.ToString() + ",'" + HSeOrderBillNo + "'," + HInterID.ToString() + "," + HEntryID.ToString() + ""
                                    + ", " + DBUtility.ClsPub.BoolToString(HGiveAwayFlag)
                                    + ",'" + HMaterName + "','" + HMaterModel + "','" + HPinfan + "'," + HAuxPropID.ToString() + ",'" + HMTONo + "','" + HInnerBillNo + "','" + HCoilNO2 + "','" + HFurnaceNO2 + "','" + HFactory2 + "'," + HAuxQty2 + ",'" + HheatNO2 + "','" + HProduceDate + "','" + HExpiryDate + "'" + ")");
                        //HNumber = ClsPub.isStrNull(grdSub.Rows[i].Cells[HMaterID2Col].Value);
                        //if (cmbHBarCodeType.Text == "唯一条码")
                        //{
                        //    if (CampanyName == "卓力") //系统参数  å®¢æˆ·å®šåˆ¶åŒ–名称
                        //    {
                        //        //条码前缀 = ç‰©æ–™ä»£ç  + å¹´ + æœˆ + æ—¥
                        //        sTMNumber = HNumber + sYear + sPeriod + sDay;
                        //    }
                        //    else if (CampanyName == "飞龙")
                        //    {
                        //        string HWorksNumber = "";
                        //        HWorksNumber = cmbHWorksNumber.Text;
                        //        if (HWorksNumber == "")
                        //        {
                        //            MessageBox.Show("工厂代码不能为空!");
                        //            return;
                        //        }
                        //        //条码前缀 = å·¥åŽ‚ä»£ç  + ç‰©æ–™å†…码 + æ—¥æœŸ
                        //        sTMNumber = HWorksNumber + HNumber + sYear + sPeriod + sDay;
                        //    }
                        //    else  //通用方法
                        //    {
                        //        //条码前缀 = ç»„织代码 + ç‰©æ–™ä»£ç  + å¹´ + æœˆ + æ—¥
                        //        sTMNumber = HOrgNumber + HNumber + sYear + sPeriod + sDay;
                        //    }
                        //}
                        //oCn.RunProc("exec h_p_WMS_SetMaxNo '" + sTMNumber + "'");
                    }
                }
                //增加 æ¡ç è¶…过未生成功能控制
                //
                //条码生成时同步生成条码出入库记录
                if (HSourceBillTypeName.Trim() == "生产入库单" || HSourceBillTypeName.Trim() == "采购入库单"
                    || HSourceBillTypeName.Trim() == "销售退货单" || HSourceBillTypeName.Trim() == "生产退料单")
                {
                    if (!oWebs.set_BarCodeAutoWMS(HInterID, HSourceBillType, HOrgID, ref DBUtility.ClsPub.sExeReturnInfo))
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = DBUtility.ClsPub.sExeReturnInfo;
                        objJsonResult.data = null;
                        objJsonResult.list = null;
                        return objJsonResult;
                    }
                }
                oCN.Commit();
                List<Object> listobj = ListRows.ConvertAll(s => (object)s);//List实体类转换为object
                //获取生成的条码信息
                string sql = string.Format(@"select * from h_v_IF_BarCodeBillList Where HinterID=" + HInterID.ToString() + " order by HItemID");
                ds = new SQLHelper.ClsCN().RunProcReturn(sql, "h_v_IF_ICMOBillList_Table");
                if (ds.Tables[0].Rows.Count > 0)
                {
                    objJsonResult.code = "1";
                    objJsonResult.count = 1;
                    objJsonResult.Message = "获取资源绑定数据成功!";
                    objJsonResult.data = JsonConvert.DeserializeObject<DataTable>(JsonConvert.SerializeObject(ds.Tables[0], new IsoDateTimeConverter { DateTimeFormat = "yyyy-MM-dd HH:mm:ss" }));  //序列化DataSet中的时间格式,然后再反序列化回来
                    objJsonResult.list = listobj;
                    return objJsonResult;
                }
                else
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "没有返回任何结果,条码不存在!";
                    objJsonResult.data = null;
                    objJsonResult.list = listobj;
                    return objJsonResult;
                }
            }
            catch (Exception e)
            {
                oCN.RollBack();
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "条码生成失败!" + e.Message;
                return objJsonResult;
            }
        }
        #endregion
        #region[条码打印更新打印次数]
        /// <summary>
        /// æ›´æ–°æ‰“印次数
        /// </summary>
        /// <param name="msg"></param>
        /// <param name="msg2"></param>
        /// <returns></returns>
        [Route("Sc_BarCode/UpdateBarcodePrintQty")]
        [HttpPost]
        public object UpdateBarcodePrintQty(string msg)
        {
            try
            {
                oCN.RunProc("update Gy_BarCodeBill set HPrintQty=isnull(HPrintQty,0)+1 where HitemID in("+msg+")", ref DBUtility.ClsPub.sExeReturnInfo);
                objJsonResult.code = "1";
                objJsonResult.count = 1;
                objJsonResult.Message = "更新打印次数成功";
                return objJsonResult;
            }
            catch (Exception e)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "打印失败!打印结束 ï¼š" + e.ToString();
                return objJsonResult;
            }
        }
        #endregion
        #endregion
    }
}