wtt
2 天以前 ede75fac3dc5fbf467a40fd0b5fe9f83b6446ed6
WebAPI/Controllers/CJGL/Cj_StationEntrustInBillController.cs
@@ -1,6 +1,7 @@
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using Pub_Class;
using SyntacticSugar.constant;
using System;
using System.Collections;
using System.Collections.Generic;
@@ -8,6 +9,7 @@
using System.Data.SqlClient;
using System.Web.Http;
using WebAPI.Models;
using Model;
namespace WebAPI.Controllers
{
@@ -48,7 +50,7 @@
                else
                {
                    string sql1 = "select * from h_v_MES_StationEntrustInBillList where 1 = 1  ";
                    string sql = sql1 + sWhere+ " order by hmainid desc";
                    string sql = sql1 + sWhere + " order by hmainid desc";
                    ds = oCN.RunProcReturn(sql, "h_v_MES_StationEntrustInBillList");
                }
@@ -60,23 +62,13 @@
                    columnNameList.Add(JsonConvert.DeserializeObject(ColmString));//获取到DataColumn列对象的列名
                }
                //if (ds.Tables[0].Rows.Count != 0 || ds != null)
                //{
                objJsonResult.code = "1";
                objJsonResult.count = 1;
                objJsonResult.Message = "Sucess!";
                objJsonResult.list = columnNameList;
                objJsonResult.data = ds.Tables[0];
                return objJsonResult;
                //}
                //else
                //{
                //objJsonResult.code = "0";
                //objJsonResult.count = 0;
                //objJsonResult.Message = "无数据";
                //objJsonResult.data = null;
                //return objJsonResult;
                //}
            }
            catch (Exception e)
            {
@@ -88,6 +80,120 @@
            }
        }
        #endregion
        #region 返回委外工序发出单列表
        [Route("Cj_StationEntrustInBill/list_Eng")]
        [HttpGet]
        public object list_Eng(string sWhere, string user)
        {
            try
            {
                List<object> columnNameList = new List<object>();
                //判断是否有查询权限
                if (!DBUtility.ClsPub.Security_Log("MES_StationEntrustInBill_Query", 1, false, user))
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "无查询权限!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                if (sWhere == null || sWhere.Equals(""))
                {
                    ds = oCN.RunProcReturn("select * from h_v_MES_StationEntrustInBillList_Eng", "h_v_MES_StationEntrustInBillList_Eng");
                    //  order by hmainid desc 排序丢到数据库里进行处理
                }
                else
                {
                    string sql1 = "select * from h_v_MES_StationEntrustInBillList_Eng where 1 = 1  ";
                    string sql = sql1 + sWhere + " order by hmainid desc";
                    ds = oCN.RunProcReturn(sql, "h_v_MES_StationEntrustInBillList_Eng");
                }
                //添加列名
                foreach (DataColumn col in ds.Tables[0].Columns)
                {
                    Type dataType = col.DataType;
                    string ColmString = "{\"ColmCols\":\"" + col.ColumnName + "\",\"ColmType\":\"" + dataType.Name + "\"}";
                    columnNameList.Add(JsonConvert.DeserializeObject(ColmString));//获取到DataColumn列对象的列名
                }
                objJsonResult.code = "1";
                objJsonResult.count = 1;
                objJsonResult.Message = "Sucess!";
                objJsonResult.list = columnNameList;
                objJsonResult.data = ds.Tables[0];
                return objJsonResult;
            }
            catch (Exception e)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "Exception!" + e.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        #endregion
        #region 委外发出单 分页列表
        [Route("Cj_StationEntrustInBill/getStationEntrustInBillPage")]
        [HttpGet]
        public json getStationEntrustInBillPage(string sWhere, string user, int page, int size)
        {
            DataSet ds;
            json res = new json();
            try
            {
                List<object> columnNameList = new List<object>();
                //判断权限
                if (!DBUtility.ClsPub.Security_Log("MES_StationEntrustInBill_Query", 1, false, user))
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "无权限查询!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                sWhere = sWhere.Replace("'", "''");
                if (sWhere == null || sWhere.Equals(""))
                {
                    ds = oCN.RunProcReturn("exec h_p_Sc_StationEntrustInBillList " + page + "," + size + ",''", "h_p_Sc_StationEntrustInBillList");
                }
                else
                {
                    ds = oCN.RunProcReturn("exec h_p_Sc_StationEntrustInBillList " + page + "," + size + ",'" + sWhere + "'", "h_p_Sc_StationEntrustInBillList");
                }
                //添加列名
                foreach (DataColumn col in ds.Tables[0].Columns)
                {
                    Type dataType = col.DataType;
                    string ColmString = "{\"ColmCols\":\"" + col.ColumnName + "\",\"ColmType\":\"" + dataType.Name + "\"}";
                    columnNameList.Add(JsonConvert.DeserializeObject(ColmString));//获取到DataColumn列对象的列名
                }
                res.code = CodeConstant.SUCCEED;
                res.count = int.Parse(ds.Tables[1].Rows[0]["count"].ToString());
                res.Message = "Sucess!";
                res.list = columnNameList;
                res.data = ds.Tables[0];
                return res;
            }
            catch (Exception e)
            {
                res.code = CodeConstant.FAIL;
                res.count = CountConstant.FAIL;
                res.Message = "Exception!" + e.ToString();
                res.data = null;
                return res;
            }
        }
        #endregion
        #region 委外工序发出单流水号回车获取流转卡信息(委外工序接收、工序进站接收通用)
        [Route("Cj_StationEntrustInBill/txtHBarCode_KeyDown")]
@@ -152,7 +258,7 @@
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "空白码,条形码不能为空!";
                    objJsonResult.Message = "[0000-2-019]空白码,条形码不能为空!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
@@ -174,12 +280,57 @@
                    entryid_PGD = arr[1];
                }
                //截取条码类型 前两位
                string BillNoType1 = BillNo_PGD.Substring(0, Math.Min(2, BillNo_PGD.Length));
                //截取条码类型 前三位
                string BillNoType = BillNo_PGD.Substring(0, Math.Min(3, BillNo_PGD.Length));
                //截取条码类型2 前四位
                string BillNoType2 = BillNo_PGD.Substring(0, Math.Min(4, BillNo_PGD.Length));
                //截取内码
                string BillNo = BillNo_PGD.Substring(3, Math.Min(BillNo_PGD.Length - 3, BillNo_PGD.Length));
                switch (BillNoType1)
                {
                    case "20"://流转卡
                        string sErr = "";
                        if (oSystemParameter.ShowBill(ref sErr))
                        {
                            if (oSystemParameter.omodel.WMS_CampanyName == "杭州斯莫尔")
                            {
                                ds = oCN.RunProcReturn("select top 1 * from h_v_Sc_ProcessExchangeBillList  where 单据号= '" + BillNo_PGD + "'", "h_v_Sc_ProcessExchangeBillList");
                            }
                        }
                        break;
                    case "OP"://流转卡
                        sErr = "";
                        if (oSystemParameter.ShowBill(ref sErr))
                        {
                            if (oSystemParameter.omodel.WMS_CampanyName == "海诚")
                            {
                                //同步工序流转卡
                                oCN.RunProc("exec h_p_IFCLD_ERPSourceBillToLocal_ProcExchAndRouting '" + BillNo_PGD + "'");
                                ds = oCN.RunProcReturn("select top 1 * from h_v_Sc_ProcessExchangeBillList  where 单据号= '" + BillNo_PGD + "'", "h_v_Sc_ProcessExchangeBillList");
                            }
                            else
                            {
                                //同步工序流转卡
                                oCN.RunProc("exec h_p_IFCLD_ERPSourceBillToLocal_ProcExchAndRouting '" + BillNo_PGD + "'");
                                ds = oCN.RunProcReturn("select top 1 * from h_v_Sc_ProcessExchangeBillList  where 单据号= '" + BillNo_PGD + "'", "h_v_Sc_ProcessExchangeBillList");
                            }
                        }
                        break;
                    case "MO"://流转卡
                         sErr = "";
                        if (oSystemParameter.ShowBill(ref sErr))
                        {
                            if (oSystemParameter.omodel.WMS_CampanyName == "华舟")
                            {
                                ds = oCN.RunProcReturn("select top 1 * from h_v_Sc_ProcessExchangeBillList  where 单据号= '" + BillNo_PGD + "'", "h_v_Sc_ProcessExchangeBillList");
                            }
                        }
                        break;
                }
                switch (BillNoType2)
                {
                    case "GXLZ"://工序流转派工
@@ -210,12 +361,37 @@
                            }
                        }
                        break;
                    case "P202"://流转卡
                    case "P203"://流转卡
                    case "P204"://流转卡
                    case "P205"://流转卡
                    case "P201"://流转卡
                    case "MO26"://华舟流转卡
                    case "MO27"://华舟流转卡
                    case "MO28"://华舟流转卡
                        ds = oCN.RunProcReturn("select top 1 * from h_v_Sc_ProcessExchangeBillList  where 单据号= '" + BillNo_PGD + "'", "h_v_Sc_ProcessExchangeBillList");
                        break;
                }
                switch (BillNoType)
                //得到信息
                {
                    case "HCX"://生产资源码
                        ds = oCN.RunProcReturn("select * from h_v_Gy_SourceList  where 条码编号 = '" + BillNo + "'", "h_v_Gy_SourceList");
                    case "htt"://生产资源码
                        string sErr = "";
                        if (oSystemParameter.ShowBill(ref sErr))
                        {
                            if (oSystemParameter.omodel.WMS_CampanyName == "杭州斯莫尔")
                            {
                                ds = oCN.RunProcReturn(@"select  s.HItemID,s.HName 生产资源名称,s.HNumber  from Gy_EquipFileBillMain a
                                        left join Gy_Source s on a.HSourceID = s.HItemID
                                        where HBarCode = '" + BillNo_PGD + "'", "Gy_EquipFileBillMain");
                            }
                            else {
                                ds = oCN.RunProcReturn("select * from h_v_Gy_SourceList  where 条码编号 = '" + BillNo + "'", "h_v_Gy_SourceList");
                            }
                        }
                        break;
                    case "SBM"://设备码
                        ds = oCN.RunProcReturn("select * from h_v_Gy_EquipMentList  where HItemID = '" + BillNo + "'", "h_v_Gy_EquipMentList");
@@ -283,20 +459,65 @@
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "未查询到条码信息!";
                    objJsonResult.Message = "[0000-2-020]未查询到条码信息!";
                    objJsonResult.data = null;
                    if(BillNoType == "PRO")
                    {
                        ds = oCN.RunProcReturn("select * from h_v_Gy_ProcessList where HItemID = '" + BillNo + "'", "h_v_Gy_ProcessList");
                        if (ds == null || ds.Tables[0].Rows.Count == 0)
                        {
                            objJsonResult.Message = "未查询到条码信息!";
                            objJsonResult.Message = "[0000-2-020]未查询到条码信息!";
                        }
                        else
                        {
                            objJsonResult.Message = "用户未关联相关工序或流转卡无此工序,如有需要请维护";
                            objJsonResult.Message = "[3790-2-010]用户未关联相关工序或流转卡无此工序,如有需要请维护";
                        }
                    }
                    return objJsonResult;
                }
                objJsonResult.code = "1";
                objJsonResult.count = 1;
                objJsonResult.Message = "[0000-1-037]Sucess!";
                objJsonResult.data = ds.Tables[0];
                return objJsonResult;
            }
            catch (Exception e)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "[0000-1-038]Exception!" + e.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        #endregion
        #region 工序出站汇报单PDA扫操作员
        [Route("Cj_StationBill/txtHBarCode_KeyDown_Operator")]
        [HttpGet]
        public object txtHBarCode_KeyDown_Operator(string HBarCode, string HInterID, string UserID, string HBillType)
        {
            try
            {
                if (HBarCode == null || HBarCode.Equals(""))
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "空白码,条形码不能为空!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                ds = oCN.RunProcReturn("select * from h_v_Gy_EmployeeList_New  where 职员代码 = '" + HBarCode + "'", "h_v_Gy_EmployeeList_New");
                //写入信息
                if (ds == null || ds.Tables[0].Rows.Count == 0)
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "未查询到条码信息!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                objJsonResult.code = "1";
@@ -310,6 +531,82 @@
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "Exception!" + e.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        #endregion
        #region 工序进站扫配件码
        [Route("Cj_StationBill/txtHBarCode_Mater_KeyDown")]
        [HttpGet]
        public object txtHBarCode_Mater_KeyDown(string HBarCode, string HInterID)
        {
            try
            {
                if (HBarCode == null || HBarCode.Equals(""))
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "[0000-2-019]空白码,条形码不能为空!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                //判断条形码是否在条码档案中,判断条形码是否合理
                //先判断 临时表中是否有数据,条形码的物料是否在清单中,写入 扫码记录表
                //得到信息
                ds = oCN.RunProcReturn("exec h_p_MES_StationInBillSub_BindBarCode   " + HInterID.ToString() + " ,'" + HBarCode + "'", "h_p_MES_StationInBillSub_BindBarCode");
                //写入信息
                if (ds == null || ds.Tables[0].Rows.Count == 0)
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "[0000-2-020]未查询到条形码信息!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                else if (DBUtility.ClsPub.isLong(ds.Tables[0].Rows[0][0]) == 2)
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "[0000-1-038]错误!" + DBUtility.ClsPub.isStrNull(ds.Tables[0].Rows[0][1]);
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                DataSet Dsplay = oCN.RunProcReturn("exec h_p_MES_StationInBillSub_BindDisplay   " + HInterID.ToString() + "  ", "h_p_MES_StationInBillSub_BindDisplay");
                //写入信息
                if (Dsplay == null)
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "[0000-1-045]刷新失败,无数据显示!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                else if (Dsplay.Tables[0].Rows.Count == 0)
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "[0000-1-045]查无数据!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                objJsonResult.code = "1";
                objJsonResult.count = 1;
                objJsonResult.Message = "[0000-1-037]绑定成功!";
                objJsonResult.data = null;
                return objJsonResult;
            }
            catch (Exception e)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "[0000-1-038]Exception!" + e.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
@@ -349,14 +646,206 @@
                    entryid_PGD = arr[1];
                }
                //截取条码类型 前三位
                string BillNoType = BillNo_PGD.Substring(0, Math.Min(3, BillNo_PGD.Length));
                //截取条码类型2 前四位
                string BillNoType2 = BillNo_PGD.Substring(0, Math.Min(4, BillNo_PGD.Length));
                //截取内码
                string BillNo = BillNo_PGD.Substring(3, Math.Min(BillNo_PGD.Length - 3, BillNo_PGD.Length));
                string sErr = "";
                switch (BillNoType2)
                {
                    case "GXLX"://流转卡
                        string sErr = "";
                        string sql = "";
                        if (oSystemParameter.ShowBill(ref sErr))
                        {
                            if (oSystemParameter.omodel.WMS_CampanyName == "乔一")
                            { //系统参数是否为只显示当前登录用户关联的工序信息,N为否,Y为是
                                if (HBillType == "7505")
                                {
                                    ds = oCN.RunProcReturn("exec h_p_Sc_ProcessExchangeBill__ProcList  '" + BillNo_PGD + "'  ", "h_p_Sc_ProcessExchangeBill__ProcList");
                                }
                                else {
                                    ds = oCN.RunProcReturn("select top 1 * from h_v_Sc_ProcessExchangeBillList  where 单据号= '" + BillNo_PGD + "'", "h_v_Sc_ProcessExchangeBillList");
                                }
                            }
                            else
                            {
                                if (oSystemParameter.ShowBill(ref sErr))
                                {
                                    switch (oSystemParameter.omodel.QC_FirstPieceCheckBill_QCSchemeSource)
                                    {
                                        case "工序":
                                            sql = "exec h_p_QC_FirstPieceCheck_GetProcessExchangeBillList " + "'工序','" + BillNo_PGD + "'";
                                            ds = oCN.RunProcReturn(sql, "h_p_QC_FirstPieceCheck_GetProcessExchangeBillList");
                                            break;
                                        case "物料":
                                            sql = "exec h_p_QC_FirstPieceCheck_GetProcessExchangeBillList " + "'物料','" + BillNo_PGD + "'";
                                            ds = oCN.RunProcReturn(sql, "h_p_QC_FirstPieceCheck_GetProcessExchangeBillList");
                                            break;
                                        case "工艺路线":
                                            sql = "exec h_p_QC_FirstPieceCheck_GetProcessExchangeBillList " + "'工艺路线','" + BillNo_PGD + "'";
                                            ds = oCN.RunProcReturn(sql, "h_p_QC_FirstPieceCheck_GetProcessExchangeBillList");
                                            break;
                                    }
                                }
                            }
                        }
                        break;
                    case "GXJZ":
                        //截取条码类型 前三位
                        string HBillNo = HBarCode.Substring(4, HBarCode.Length - 4);
                        ds = oCN.RunProcReturn("select * from Sc_StationInBillMain where HBillNo = '" + HBillNo + "'", "Sc_StationInBillMain");
                        Int64 HStationInInterID = 0;
                        if (ds != null || ds.Tables[0].Rows.Count > 0)
                        {
                            HStationInInterID = DBUtility.ClsPub.isLong(ds.Tables[0].Rows[0]["HInterID"]);
                        }
                        if (oSystemParameter.ShowBill(ref sErr))
                        {
                            switch (oSystemParameter.omodel.QC_FirstPieceCheckBill_QCSchemeSource)
                            {
                                case "工序":
                                    sql = "exec h_p_QC_FirstPiece_GetStationInBillList " + "'工序','" + HStationInInterID + "'";
                                    ds = oCN.RunProcReturn(sql, "h_p_QC_FirstPiece_GetStationInBillList");
                                    break;
                                case "物料":
                                    sql = "exec h_p_QC_FirstPiece_GetStationInBillList " + "'物料','" + HStationInInterID + "'";
                                    ds = oCN.RunProcReturn(sql, "h_p_QC_FirstPiece_GetStationInBillList");
                                    break;
                                case "工艺路线":
                                    sql = "exec h_p_QC_FirstPiece_GetStationInBillList " + "'工艺路线','" + HStationInInterID + "'";
                                    ds = oCN.RunProcReturn(sql, "h_p_QC_FirstPiece_GetStationInBillList");
                                    break;
                            }
                        }
                        break;
                    case "MO00":
                        if (oSystemParameter.ShowBill(ref sErr))
                        {
                            switch (oSystemParameter.omodel.QC_FirstPieceCheckBill_QCSchemeSource)
                            {
                                case "工序":
                                    sql = "exec h_p_QC_ProcessCheck_GetICMOList " + "'工序','" + HBarCode + "'";
                                    ds = oCN.RunProcReturn(sql, "h_p_QC_ProcessCheck_GetICMOList");
                                    break;
                                case "物料":
                                    sql = "exec h_p_QC_ProcessCheck_GetICMOList " + "'物料','" + HBarCode + "'";
                                    ds = oCN.RunProcReturn(sql, "h_p_QC_ProcessCheck_GetICMOList");
                                    break;
                                case "工艺路线":
                                    sql = "exec h_p_QC_ProcessCheck_GetICMOList " + "'工艺路线','" + HBarCode + "'";
                                    ds = oCN.RunProcReturn(sql, "h_p_QC_ProcessCheck_GetICMOList");
                                    break;
                            }
                        }
                        break;
                    default:
                        if (oSystemParameter.omodel.WMS_CampanyName == "乔一")
                        { //系统参数是否为只显示当前登录用户关联的工序信息,N为否,Y为是
                            objJsonResult.code = "0";
                            objJsonResult.count = 0;
                            objJsonResult.Message = "条码错误!";
                            objJsonResult.data = null;
                            return objJsonResult;
                        }
                        else
                        {
                            break;
                        }
                }
                switch (BillNoType)
                //得到信息
                {
                    case "HCX"://生产资源码
                        ds = oCN.RunProcReturn("select * from h_v_Gy_SourceList  where 条码编号 = '" + BillNo + "'", "h_v_Gy_SourceList");
                        break;
                }
                if (ds != null)
                {
                    objJsonResult.code = "1";
                    objJsonResult.count = 1;
                    objJsonResult.Message = "Sucess!";
                    objJsonResult.data = ds.Tables[0];
                    return objJsonResult;
                }
                else
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "没有返回数据,条码前缀错误。";
                    objJsonResult.data = "";
                    return objJsonResult;
                }
            }
            catch (Exception e)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "Exception!" + e.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        #endregion
        #region PDA工序检验单扫码获取信息
        [Route("MES_ProcessBill_PDA/HBarCode_KeyDown")]
        [HttpGet]
        public object HBarCode_KeyDown(string HBarCode, string HInterID, string UserID, string HBillType)
        {
            try
            {
                if (HBarCode == null || HBarCode.Equals(""))
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "空白码,条形码不能为空!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                //拆分条形码
                string sBillBarCode = HBarCode.Trim();
                string[] NewBarCode;
                if (sBillBarCode.CompareTo("#") > 0)
                {
                    NewBarCode = sBillBarCode.Split(Convert.ToChar("#"));
                    sBillBarCode = NewBarCode[0];
                }
                string sBillNo = sBillBarCode; //条形码
                string[] arr = sBillNo.Split('&'); //以符号‘&’分割条形码
                string BillNo_PGD = arr[0]; //单据号
                string entryid_PGD = "";//子id
                if (arr.Length > 1)
                {
                    entryid_PGD = arr[1];
                }
                //截取条码类型 前三位
                string BillNoType = BillNo_PGD.Substring(0, Math.Min(3, BillNo_PGD.Length));
                //截取条码类型2 前四位
                string BillNoType2 = BillNo_PGD.Substring(0, Math.Min(4, BillNo_PGD.Length));
                //截取内码
                string BillNo = BillNo_PGD.Substring(3, Math.Min(BillNo_PGD.Length - 3, BillNo_PGD.Length));
                string sErr = "";
                switch (BillNoType2)
                {
                    case "GXLX"://流转卡
                        string sql = "";
                        if (oSystemParameter.ShowBill(ref sErr))
                        {
                            if (oSystemParameter.omodel.WMS_CampanyName == "乔一")
@@ -365,24 +854,117 @@
                            }
                            else
                            {
                                ds = oCN.RunProcReturn("select top 1 * from h_v_Sc_ProcessExchangeBillList  where 单据号= '" + BillNo_PGD + "'", "h_v_Sc_ProcessExchangeBillList");
                                if (oSystemParameter.ShowBill(ref sErr))
                                {
                                    switch (oSystemParameter.omodel.QC_ProcessCheckBill_QCSchemeSource)
                                    {
                                        case "工序":
                                            sql = "exec h_p_QC_ProcessCheck_GetProcessExchangeBillList " + "'工序','" + BillNo_PGD + "'";
                                            ds = oCN.RunProcReturn(sql, "h_p_QC_ProcessCheck_GetProcessExchangeBillList");
                                            break;
                                        case "物料":
                                            sql = "exec h_p_QC_ProcessCheck_GetProcessExchangeBillList " + "'物料','" + BillNo_PGD + "'";
                                            ds = oCN.RunProcReturn(sql, "h_p_QC_ProcessCheck_GetProcessExchangeBillList");
                                            break;
                                        case "工艺路线":
                                            sql = "exec h_p_QC_ProcessCheck_GetProcessExchangeBillList " + "'工艺路线','" + BillNo_PGD + "'";
                                            ds = oCN.RunProcReturn(sql, "h_p_QC_ProcessCheck_GetProcessExchangeBillList");
                                            break;
                                    }
                                }
                            }
                        }
                        break;
                    case "GXCZ":
                        ds = oCN.RunProcReturn("select * from Sc_StationOutBillMain where HBillNo = '" + HBarCode + "'", "Sc_StationOutBillMain");
                        Int64 HStationOutInterID = 0;
                        if (ds != null || ds.Tables[0].Rows.Count > 0)
                        {
                            HStationOutInterID = DBUtility.ClsPub.isLong(ds.Tables[0].Rows[0]["HInterID"]);
                        }
                        if (oSystemParameter.ShowBill(ref sErr))
                        {
                            switch (oSystemParameter.omodel.QC_ProcessCheckBill_QCSchemeSource)
                            {
                                case "工序":
                                    sql = "exec h_p_QC_ProcessCheck_GetStationOutBillList " + "'工序','" + HStationOutInterID + "'";
                                    ds = oCN.RunProcReturn(sql, "h_p_QC_ProcessCheck_GetStationOutBillList");
                                    break;
                                case "物料":
                                    sql = "exec h_p_QC_ProcessCheck_GetStationOutBillList " + "'物料','" + HStationOutInterID + "'";
                                    ds = oCN.RunProcReturn(sql, "h_p_QC_ProcessCheck_GetStationOutBillList");
                                    break;
                                case "工艺路线":
                                    sql = "exec h_p_QC_ProcessCheck_GetStationOutBillList " + "'工艺路线','" + HStationOutInterID + "'";
                                    ds = oCN.RunProcReturn(sql, "h_p_QC_ProcessCheck_GetStationOutBillList");
                                    break;
                            }
                        }
                        break;
                    case "MO00":
                        if (oSystemParameter.ShowBill(ref sErr))
                        {
                            switch (oSystemParameter.omodel.QC_ProcessCheckBill_QCSchemeSource)
                            {
                                case "工序":
                                    sql = "exec h_p_QC_ProcessCheck_GetICMOList " + "'工序','" + HBarCode + "'";
                                    ds = oCN.RunProcReturn(sql, "h_p_QC_ProcessCheck_GetICMOList");
                                    break;
                                case "物料":
                                    sql = "exec h_p_QC_ProcessCheck_GetICMOList " + "'物料','" + HBarCode + "'";
                                    ds = oCN.RunProcReturn(sql, "h_p_QC_ProcessCheck_GetICMOList");
                                    break;
                                case "工艺路线":
                                    sql = "exec h_p_QC_ProcessCheck_GetICMOList " + "'工艺路线','" + HBarCode + "'";
                                    ds = oCN.RunProcReturn(sql, "h_p_QC_ProcessCheck_GetICMOList");
                                    break;
                            }
                        }
                        break;
                    default:
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = "条码错误!";
                        objJsonResult.data = null;
                        return objJsonResult;
                        if (oSystemParameter.omodel.WMS_CampanyName == "乔一")
                        { //系统参数是否为只显示当前登录用户关联的工序信息,N为否,Y为是
                            objJsonResult.code = "0";
                            objJsonResult.count = 0;
                            objJsonResult.Message = "条码错误!";
                            objJsonResult.data = null;
                            return objJsonResult;
                        }
                        else
                        {
                            break;
                        }
                }
                objJsonResult.code = "1";
                objJsonResult.count = 1;
                objJsonResult.Message = "Sucess!";
                objJsonResult.data = ds.Tables[0];
                return objJsonResult;
                switch (BillNoType)
                //得到信息
                {
                    case "HCX"://生产资源码
                        ds = oCN.RunProcReturn("select * from h_v_Gy_SourceList  where 条码编号 = '" + BillNo + "'", "h_v_Gy_SourceList");
                        break;
                }
                if (ds != null)
                {
                    objJsonResult.code = "1";
                    objJsonResult.count = 1;
                    objJsonResult.Message = "Sucess!";
                    objJsonResult.data = ds.Tables[0];
                    return objJsonResult;
                }
                else
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "没有返回数据,条码前缀错误。";
                    objJsonResult.data = "";
                    return objJsonResult;
                }
            }
            catch (Exception e)
            {
@@ -737,7 +1319,22 @@
                    return objJsonResult;
                }
                string sql = "select * from  h_v_QC_FirstPieceCheckBillMainList where 1=1  " + sWhere + " order by 日期 ";
                ds = oCN.RunProcReturn("select ManagerFlag from gy_czygl where czymc='" + user.Trim() + "'", "gy_czygl");
                string sErr = "";
                oSystemParameter.ShowBill(ref sErr);
                if (oSystemParameter.omodel.WMS_CampanyName == "乔一")
                {
                }
                else
                {
                    if (!(bool)ds.Tables[0].Rows[0]["ManagerFlag"])  //是否管理员
                    {
                        //不是管理员
                        sWhere += " and 制单人 = '" + user + "'";
                    }
                }
                string sql = "select * from  h_v_QC_FirstPieceCheckBillMainList where 1=1  " + sWhere ;
                ds = oCN.RunProcReturn(sql, "h_v_QC_FirstPieceCheckBillMainList");
@@ -785,6 +1382,7 @@
                string msg2 = "[" + sArray[0].ToString() + "]";
                string user = sArray[1].ToString();//用户名
                string OperationType = sArray[2].ToString();//类型
                string msg_entry = sArray[3].ToString(); //明细行信息
                //判断是否有编辑权限
                if (!DBUtility.ClsPub.Security_Log("QC_FirstPieceCheckBill_Edit", 1, false, user))
@@ -795,6 +1393,8 @@
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                DAL.ClsQC_FirstPieceCheckBill BillNew = new DAL.ClsQC_FirstPieceCheckBill();
                List<Model.ClsQC_FirstPieceCheckBillMain> list = Newtonsoft.Json.JsonConvert.DeserializeObject<List<Model.ClsQC_FirstPieceCheckBillMain>>(msg2);
                string BillType = "7505";
@@ -807,6 +1407,7 @@
                double HPeriod = DateTime.Now.Month;
                long HSourceID = list[0].HSourceID;//生产资源
                long HICMOInterID = list[0].HICMOInterID;//任务单ID
                long HICMOEntryID = list[0].HICMOEntryID;//任务单子ID
                string HICMOBillNo = list[0].HICMOBillNo;//任务单
                string HProcExchBillNo = list[0].HProcExchBillNo;//指引卡
                long HMaterID = list[0].HMaterID;//产品ID
@@ -814,9 +1415,78 @@
                long HProcID = list[0].HProcID;//工序ID
                long HPRDORGID = list[0].HPRDORGID;//组织ID
                bool HLastResult = list[0].HLastResult;//试样结论
                long HQCSchemeID = list[0].HQCSchemeID;//检验方案
                long HProcExchInterID = list[0].HProcExchInterID;//流转卡ID
                long HProcExchEntryID = list[0].HProcExchEntryID;//流转卡子ID
                string HBatchNo = list[0].HBatchNo;//流转卡批次号
                long HMainSourceInterID = list[0].HMainSourceInterID;//源单ID
                long HMainSourceEntryID = list[0].HMainSourceEntryID;//源单子ID
                string HMainSourceBillNo = list[0].HMainSourceBillNo;//源单单号
                string HMainSourceBillType = list[0].HMainSourceBillType;//源单类型
                //表体数据
                List<Model.ClsQC_FirstPieceCheckBillSub> subList = Newtonsoft.Json.JsonConvert.DeserializeObject<List<Model.ClsQC_FirstPieceCheckBillSub>>(msg_entry);
                for (int i = 0; i < subList.ToArray().Length; i++)
                {
                    if (subList.ToArray().Length >= 0)
                    {
                        Model.ClsQC_FirstPieceCheckBillSub oSub = new Model.ClsQC_FirstPieceCheckBillSub();
                        oSub.HEntryID = i + 1;
                        oSub.HRemark = ClsPub.isStrNull(subList[i].HRemark);
                        oSub.HSourceInterID = ClsPub.isLong(subList[i].HSourceInterID);
                        oSub.HSourceEntryID = ClsPub.isLong(subList[i].HSourceEntryID);
                        oSub.HSourceBillType = ClsPub.isStrNull(subList[i].HSourceBillType);
                        oSub.HSourceBillNo = ClsPub.isStrNull(subList[i].HSourceBillNo);
                        oSub.HRelationQty = DBUtility.ClsPub.isDoule(subList[i].HRelationQty);
                        oSub.HRelationMoney = DBUtility.ClsPub.isDoule(subList[i].HRelationMoney);
                        oSub.HCloseMan = DBUtility.ClsPub.isStrNull(subList[i].HCloseMan);
                        oSub.HCloseType = DBUtility.ClsPub.isBool(subList[i].HCloseType);
                        oSub.HQCCheckItemID = DBUtility.ClsPub.isLong(subList[i].HQCCheckItemID);
                        oSub.HQCStd = DBUtility.ClsPub.isStrNull(subList[i].HQCStd);
                        oSub.HResult = DBUtility.ClsPub.isStrNull(subList[i].HResult);
                        //oSub.HProcCheckTime = HDate;
                        //oSub.HBillNo_bak = DBUtility.ClsPub.isStrNull(mainList[0].HBillNo);
                        //oSub.HProcCheckEmp = ClsPub.isLong(mainList[0].HFirstCheckEmp);
                        oSub.HSampleSchemeID = DBUtility.ClsPub.isLong(subList[i].HSampleSchemeID);
                        oSub.HSampleQty = DBUtility.ClsPub.isLong(subList[i].HSampleQty);
                        oSub.HSampleDamageQty = DBUtility.ClsPub.isDoule(subList[i].HSampleDamageQty);
                        oSub.HAcceptQty = DBUtility.ClsPub.isLong(subList[i].HAcceptQty);
                        oSub.HRejectQty = DBUtility.ClsPub.isLong(subList[i].HRejectQty);
                        oSub.HSampleUnRightQty = DBUtility.ClsPub.isDoule(subList[i].HSampleUnRightQty);
                        oSub.HStatus = DBUtility.ClsPub.isStrNull(subList[i].HStatus);
                        oSub.HUnitID = DBUtility.ClsPub.isLong(subList[i].HUnitID);
                        oSub.HInspectVal = DBUtility.ClsPub.isStrNull(subList[i].HInspectVal);
                        oSub.HTargetVal = DBUtility.ClsPub.isStrNull(subList[i].HTargetVal);
                        oSub.HUpLimit = DBUtility.ClsPub.isStrNull(subList[i].HUpLimit);
                        oSub.HDownLimit = DBUtility.ClsPub.isStrNull(subList[i].HDownLimit);
                        oSub.HUpOffSet = DBUtility.ClsPub.isStrNull(subList[i].HUpOffSet);
                        oSub.HDownOffSet = DBUtility.ClsPub.isStrNull(subList[i].HDownOffSet);
                        oSub.HAnalysisMethod = DBUtility.ClsPub.isStrNull(subList[i].HAnalysisMethod);
                        oSub.HKeyInspect = DBUtility.ClsPub.isLong(subList[i].HKeyInspect);
                        oSub.HInspectInstruMentID = DBUtility.ClsPub.isLong(subList[i].HInspectInstruMentID);
                        oSub.HInspectResult = DBUtility.ClsPub.isStrNull(subList[i].HResult == "True" ? 1 : 0);
                        oSub.HQCNote = DBUtility.ClsPub.isStrNull(subList[i].HQCNote);//检验记录
                        oSub.HMax = DBUtility.ClsPub.isStrNull(subList[i].HMax);
                        oSub.HMin = DBUtility.ClsPub.isStrNull(subList[i].HMin);
                        oSub.HAvg = DBUtility.ClsPub.isStrNull(subList[i].HAvg);
                        BillNew.DetailColl.Add(oSub);
                    }
                    else
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = "无明细行信息!";
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
                }
                //单据完整性判断
                if (HProcExchBillNo == "")
                if (HProcExchBillNo == "" && HMainSourceBillNo.Substring(0, Math.Min(2, HMainSourceBillNo.Length)) != "MO" )
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
@@ -844,11 +1514,47 @@
                    }
                    oCN.RunProc("Insert Into QC_FirstPieceCheckBillMain " +
                    "(HBillType,HBillSubType,HInterID,HBillNo,HBillStatus,HDate,HMaker,HMakeDate" +
                    ",HYear,HPeriod,HMaterID,HSourceID,HICMOInterID,HICMOBillNo,HProcExchBillNo" +
                    ",HPRDORGID,HLastResult)" +
                    ",HYear,HPeriod,HMaterID,HSourceID,HICMOInterID,HICMOEntryID,HICMOBillNo,HProcExchBillNo" +
                    ",HPRDORGID,HLastResult,HProcID,HQCSchemeID,HBatchNo," +
                    "HProcExchInterID,HProcExchEntryID,HMainSourceInterID,HMainSourceEntryID,HMainSourceBillNo,HMainSourceBillType)" +
                    " values('" + BillType + "','" + HBillSubType + "'," + HInterID + ",'" + HBillNo + "'," + HBillStatus + ",getdate(),'" + HMaker + "',getdate()" +
                    "," + HYear + "," + HPeriod + ",'" + HMaterID + "','" + HSourceID + "'," + HICMOInterID + ",'" + HICMOBillNo + "','" + HProcExchBillNo + "'" +
                    "," + HPRDORGID + ",'" + HLastResult + "') ");
                    "," + HYear + "," + HPeriod + ",'" + HMaterID + "','" + HSourceID + "'," + HICMOInterID + "," + HICMOEntryID + ",'" + HICMOBillNo + "','" + HProcExchBillNo + "'" +
                    "," + HPRDORGID + ",'" + HLastResult + "','" + HProcID + "','" + HQCSchemeID + "','" + HBatchNo + "'," +
                    "" + HProcExchInterID + "," + HProcExchEntryID + "," + HMainSourceInterID + "," + HMainSourceEntryID + ",'" + HMainSourceBillNo + "','" + HMainSourceBillType + "'" + ") ");
                    //插入子表
                    foreach (Model.ClsQC_FirstPieceCheckBillSub oSub in BillNew.DetailColl)
                    {
                        string sql = "Insert into QC_FirstPieceCheckBillSub " +
                          " (HInterID,HBillNo_bak,HEntryID" +
                          ",HRemark,HSourceInterID" +
                          ",HSourceEntryID,HSourceBillNo,HSourceBillType,HRelationQty,HRelationMoney" +
                          ",HQCCheckItemID,HQCStd,HResult" +
                          ",HStatus,HUnitID,HKeyInspect,HAnalysisMethod,HInspectInstruMentID,HInspectResult," +
                          "HQCNote,HMax,HMin,HAvg" +
                          ") values("
                          + HInterID.ToString() + ",'" + oSub.HBillNo_bak + "'," + oSub.HEntryID.ToString() + ",'" + oSub.HRemark + "'," + HMainSourceInterID.ToString() +
                          "," + HMainSourceEntryID.ToString() + ",'" + HMainSourceBillNo + "','" + HMainSourceBillType + "'," + oSub.HRelationQty.ToString() + "," + oSub.HRelationMoney.ToString() +
                          "," + oSub.HQCCheckItemID.ToString() + ",'" + oSub.HQCStd + "','" + oSub.HResult + "'" +
                          ",'" + oSub.HStatus + "'," + oSub.HUnitID + "," + oSub.HKeyInspect + ",'" + oSub.HAnalysisMethod + "'," + oSub.HInspectInstruMentID + ",'" + oSub.HInspectResult + "'" +
                          ",'" + oSub.HQCNote + "','" + oSub.HMax + "','" + oSub.HMin + "','" + oSub.HAvg + "'" +
                          ")";
                        oCN.RunProc("Insert into QC_FirstPieceCheckBillSub " +
                          " (HInterID,HBillNo_bak,HEntryID" +
                          ",HRemark,HSourceInterID" +
                          ",HSourceEntryID,HSourceBillNo,HSourceBillType,HRelationQty,HRelationMoney" +
                          ",HQCCheckItemID,HQCStd,HResult" +
                          ",HStatus,HUnitID,HKeyInspect,HAnalysisMethod,HInspectInstruMentID,HInspectResult," +
                          "HQCNote,HMax,HMin,HAvg" +
                          ") values("
                          + HInterID.ToString() + ",'" + oSub.HBillNo_bak + "'," + oSub.HEntryID.ToString() + ",'" + oSub.HRemark + "'," + HMainSourceInterID.ToString() +
                          "," + HMainSourceEntryID.ToString() + ",'" + HMainSourceBillNo + "','" + HMainSourceBillType + "'," + oSub.HRelationQty.ToString() + "," + oSub.HRelationMoney.ToString() +
                          "," + oSub.HQCCheckItemID.ToString() + ",'" + oSub.HQCStd + "','" + oSub.HResult + "'" +
                          ",'" + oSub.HStatus + "'," + oSub.HUnitID + "," + oSub.HKeyInspect + ",'" + oSub.HAnalysisMethod + "'," + oSub.HInspectInstruMentID + ",'" + oSub.HInspectResult + "'" +
                          ",'" + oSub.HQCNote + "','" + oSub.HMax + "','" + oSub.HMin + "','" + oSub.HAvg + "'" +
                          ") ");
                    }
                }
                else
                {
@@ -1062,7 +1768,7 @@
                            {
                                objJsonResult.code = "0";
                                objJsonResult.count = 0;
                                objJsonResult.Message = "用户编码不能为空!";
                                objJsonResult.Message = "[0000-2-021]用户编码不能为空!";
                                objJsonResult.data = null;
                                return objJsonResult;
                            }
@@ -1073,13 +1779,13 @@
                            {
                                objJsonResult.code = "0";
                                objJsonResult.count = 0;
                                objJsonResult.Message = "未查询到工序信息!";
                                objJsonResult.Message = "[0000-2-022]未查询到工序信息!";
                                objJsonResult.data = null;
                                return objJsonResult;
                            }
                            objJsonResult.code = "1";
                            objJsonResult.count = 1;
                            objJsonResult.Message = "Sucess!";
                            objJsonResult.Message = "[0000-1-037]Sucess!";
                            objJsonResult.data = ds.Tables[0];
                            return objJsonResult;
                        }
@@ -1087,7 +1793,7 @@
                        {
                            objJsonResult.code = "0";
                            objJsonResult.count = 0;
                            objJsonResult.Message = "Exception!" + e.ToString();
                            objJsonResult.Message = "[0000-1-038]Exception!" + e.ToString();
                            objJsonResult.data = null;
                            return objJsonResult;
                        }
@@ -1096,7 +1802,7 @@
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = "手动输入模式";
                        objJsonResult.Message = "[0000-2-024]手动输入模式";
                        objJsonResult.data = "";
                        return objJsonResult;
                    }
@@ -1112,7 +1818,7 @@
                            {
                                objJsonResult.code = "0";
                                objJsonResult.count = 0;
                                objJsonResult.Message = "用户编码不能为空!";
                                objJsonResult.Message = "[0000-2-021]用户编码不能为空!";
                                objJsonResult.data = null;
                                return objJsonResult;
                            }
@@ -1123,7 +1829,7 @@
                            {
                                objJsonResult.code = "0";
                                objJsonResult.count = 0;
                                objJsonResult.Message = "未查询到工序信息!";
                                objJsonResult.Message = "[0000-2-022]未查询到工序信息!";
                                objJsonResult.data = null;
                                return objJsonResult;
                            }
@@ -1137,7 +1843,7 @@
                        {
                            objJsonResult.code = "0";
                            objJsonResult.count = 0;
                            objJsonResult.Message = "Exception!" + e.ToString();
                            objJsonResult.Message = "[0000-1-038]Exception!" + e.ToString();
                            objJsonResult.data = null;
                            return objJsonResult;
                        }
@@ -1146,7 +1852,7 @@
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = "手动输入模式";
                        objJsonResult.Message = "[0000-2-024]手动输入模式";
                        objJsonResult.data = "";
                        return objJsonResult;
                    }
@@ -1160,7 +1866,7 @@
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "系统参数异常";
                objJsonResult.Message = "[0000-2-023]系统参数异常";
                objJsonResult.data = "";
                return objJsonResult;
            }
@@ -1444,7 +2150,8 @@
                    return objJsonResult;
                }
                //若MAINDI重复则重新获取
                oCN.BeginTran();
                oCN.BeginTran();
                if ("Add".Equals(eventType))
                {
                    if (!AllowbillNo(HBillNo))
@@ -1456,6 +2163,28 @@
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
                    //保存前控制=========================================
                    string HBillNote = "";
                    ds = oCN.RunProcReturn("Exec h_p_Sc_StationInBill_WW_BeforeSaveCtrl  " + HInterID.ToString() + ", '" + HBillNo + "','" + HBillNote + "',1 ", "h_p_Sc_StationInBill_WW_BeforeSaveCtrl ");
                    if (ds == null)
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = "保存前判断失败!";
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
                    if (DBUtility.ClsPub.isStrNull(ds.Tables[0].Rows[0]["HBack"]) != "0")
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = "保存失败!" + DBUtility.ClsPub.isStrNull(ds.Tables[0].Rows[0]["HBackRemark"]);
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
                    //=========================================================
                    //主表
                    oCN.RunProc("Insert Into Sc_StationInBillMain " +
                    "(HBillType,HBillSubType,HInterID,HBillNo,HBillStatus,HDate,HMaker,HMakeDate" +
@@ -1474,9 +2203,54 @@
                    "," + HSupID + "," + HTaxRate + "," + HQty + "," + HPrice + "," + HMoney + "," + HPieceQty +
                    ",'" + HProcNo + "','" + HOrderProcNO + "'" + ",'" + HWWWorkOrderBillNo + "'" + "," + HWWWorkOrderInterID + "" + "," + HWWWorkOrderEntryID + "," + HMainInterID + "," + HPRDOrgID +
                    ") ");
                    //=========================保存后控制  ============================
                    DataSet ds2 = oCN.RunProcReturn("Exec h_p_Sc_StationInBill_WW_AfterSaveCtrl " + HInterID.ToString() + ", '" + HBillNo + "',2 ", "h_p_Sc_StationInBill_WW_AfterSaveCtrl");
                    if (ds2 == null)
                    {
                        oCN.RollBack();
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = "保存后控制判断失败!";
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
                    if (DBUtility.ClsPub.isStrNull(ds2.Tables[0].Rows[0]["HBack"]) != "0")
                    {
                        oCN.RollBack();
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = "保存失败2!" + DBUtility.ClsPub.isStrNull(ds2.Tables[0].Rows[0]["HBackRemark"]);
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
                    //=======================================================
                }
                else if ("Modify".Equals(eventType))
                {
                    //保存前控制=========================================
                    string HBillNote = "";
                    ds = oCN.RunProcReturn("Exec h_p_Sc_StationInBill_WW_BeforeSaveCtrl  " + HInterID.ToString() + ", '" + HBillNo + "','" + HBillNote + "',2 ", "h_p_Sc_StationInBill_WW_BeforeSaveCtrl ");
                    if (ds == null)
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = "保存前判断失败!";
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
                    if (DBUtility.ClsPub.isStrNull(ds.Tables[0].Rows[0]["HBack"]) != "0")
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = "保存失败!" + DBUtility.ClsPub.isStrNull(ds.Tables[0].Rows[0]["HBackRemark"]);
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
                    //=========================================================
                    //删除关联
                    oCN.RunProc("exec h_p_Mes_ProcessExchangeRelationQty_In " + HInterID + ",-1");
@@ -1501,6 +2275,30 @@
                    ",HProcNo=" + HProcNo +
                    ",HOrderProcNO='" + HOrderProcNO + "'" +
                    " where HInterID=" + HInterID);
                    //=========================保存后控制  ============================
                    DataSet ds2 = oCN.RunProcReturn("Exec h_p_Sc_StationInBill_WW_AfterSaveCtrl " + HInterID.ToString() + ", '" + HBillNo + "',2", "h_p_Sc_StationInBill_WW_AfterSaveCtrl");
                    if (ds2 == null)
                    {
                        oCN.RollBack();
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = "保存后控制判断失败!";
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
                    if (DBUtility.ClsPub.isStrNull(ds2.Tables[0].Rows[0]["HBack"]) != "0")
                    {
                        oCN.RollBack();
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = "保存失败2!" + DBUtility.ClsPub.isStrNull(ds2.Tables[0].Rows[0]["HBackRemark"]);
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
                    //=======================================================
                }
                else
                {
@@ -1541,11 +2339,14 @@
                }
                oCN.RunProc("exec h_p_Mes_ProcessExchangeRelationQty_In " + HInterID.ToString() + ",1");
                oCN.RunProc("exec h_p_WW_EntrustWorkOrderRelationQty_In " + HInterID.ToString() + ",1");
                oCN.Commit();
                string sReturn = "";
                if (oSystemParameter.ShowBill(ref sReturn) == true)
                {
                    if (oSystemParameter.omodel.MES_StationEntrustInBill_SaveAutoAddnew == "Y") //系统参数  自动审核
                    if (oSystemParameter.omodel.MES_StationEntrustInBill_AutoCheck == "Y") //系统参数  自动审核
                    {
                        objJsonResult.Verify = "Y";
                    }
@@ -1662,6 +2463,51 @@
        }
        #endregion
        #region 委外工序发出单流水号回车获取工序信息(序列号)
        [Route("Cj_StationEntrustInBill/txtHProcNo_KeyDown_Sec")]
        [HttpGet]
        public object txtHProcNo_KeyDown_Sec(string sBillNo, string sProcNo, string HSEQNumber)
        {
            try
            {
                if (sBillNo.Equals("") || sProcNo.Equals(""))
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "条形码不能为空!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                //得到信息(委外标记为0时,流转标记为1时)
                ds = oCN.RunProcReturn("select top 1 * from h_v_Sc_ProcessExchangeBillList_Sec  where 单据号= '" + sBillNo + "' and 下道流转工序<>'转' and 委外标记=1 and 流转标记=1  and 工序号='" + sProcNo + "' and 序列号='" + HSEQNumber + "'", "h_v_Sc_ProcessExchangeBillList_Sec");
                //Ds = oCn.RunProcReturn("select top 1 * from h_v_Sc_ProcessExchangeBillList  where 单据号= '" + sBillNo + "' and 工序号='" + sProcNo + "' and 委外标记=0 and 流转标记=1 ", "h_v_Sc_ProcessExchangeBillList");
                //写入信息
                if (ds == null || ds.Tables[0].Rows.Count == 0)
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "工序号错误或者当前工序号不允许进站,请重新输入!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                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 = "Exception!" + e.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        #endregion
        #region 编辑前判断
        [Route("Cj_StationEntrustInBill/set_ShowBillJudge")]
        [HttpGet]
@@ -1669,24 +2515,7 @@
        {
            try
            {
                //ds = oCN.RunProcReturn("exec h_p_MES_StationInBill_DelCtrl  '" + HBillNo + "'", "h_p_MES_StationInBill_DelCtrl");
                //if (ds == null || ds.Tables[0].Rows.Count == 0)
                //{
                //    objJsonResult.code = "0";
                //    objJsonResult.count = 0;
                //    objJsonResult.Message = "判断关联失败!";
                //    objJsonResult.data = null;
                //    return objJsonResult;
                //}
                //else if (ds.Tables[0].Rows.Count > 0 && Pub_Class.ClsPub.isInt(ds.Tables[0].Rows[0][0]) == 2)
                //{
                //    objJsonResult.code = "0";
                //    objJsonResult.count = 0;
                //    objJsonResult.Message = Pub_Class.ClsPub.isStrNull(ds.Tables[0].Rows[0][1]);
                //    objJsonResult.data = null;
                //    return objJsonResult;
                //}
                //判断权限
                if (!ClsPub.Security_Log_second("MES_StationEntrustInBill_Edit", 1, false, CurUserName))
                {
@@ -1791,8 +2620,31 @@
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                //审核前控制================================================================================
                string sql = "exec h_p_Sc_StationInBill_WW_BeforeCheckCtrl " + HInterID + ",'" + oBill.omodel.HBillNo + "','" + CurUserName + "'";
                ds = oCN.RunProcReturn(sql, "h_p_Sc_StationInBill_WW_BeforeCheckCtrl");
                if (ds == null || ds.Tables.Count == 0 || ds.Tables[0].Rows.Count == 0)
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 1;
                    objJsonResult.Message = "审核失败!原因:审核前判断失败,请与网络管理人员联系";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                if (ds.Tables[0].Rows[0]["HBack"].ToString() != "0")
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 1;
                    objJsonResult.Message = "审核失败!原因:" + ds.Tables[0].Rows[0]["HRemark"].ToString(); ;
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                //================================================================================
                //审核
                if (Cj_StationEntrustInBillCheckBill(HInterID, CurUserName, ref DBUtility.ClsPub.sExeReturnInfo))
                if (Cj_StationEntrustInBillCheckBill(HInterID, oBill.omodel.HBillNo, CurUserName, ref DBUtility.ClsPub.sExeReturnInfo))
                {
                    objJsonResult.code = "1";
                    objJsonResult.count = 1;
@@ -1821,7 +2673,7 @@
        }
        //审核
        public bool Cj_StationEntrustInBillCheckBill(Int64 lngBillKey, string CurUserName, ref string sReturn)
        public bool Cj_StationEntrustInBillCheckBill(Int64 lngBillKey, string HBillNo, string CurUserName, ref string sReturn)
        {
            try
            {
@@ -1837,6 +2689,42 @@
                oCN.RunProc(" Update Sc_StationInBillMain set HChecker='" + HChecker + "',HCheckDate='" + HCheckDate + "' Where HInterID=" + lngBillKey.ToString());
                oCN.RunProc("exec h_p_Mes_ProcessExchangeRelationQty_Check_In " + lngBillKey.ToString() + ",1");
                //同步金蝶云参数
                int HProcExchInterID = int.Parse(ds.Tables[0].Rows[0]["HProcExchInterID"].ToString());
                int HProcExchEntryID = int.Parse(ds.Tables[0].Rows[0]["HProcExchEntryID"].ToString());
                int HProcNo = int.Parse(ds.Tables[0].Rows[0]["HProcNo"].ToString());
                double HQty = double.Parse(ds.Tables[0].Rows[0]["HQty"].ToString());
                //审核后控制================================================================================
                string sql = "exec h_p_Sc_StationInBill_WW_AfterCheckCtrl " + lngBillKey + ",'" + HBillNo + "','" + CurUserName + "'";
                ds = oCN.RunProcReturn(sql, "h_p_Sc_StationInBill_WW_AfterCheckCtrl");
                if (ds == null || ds.Tables.Count == 0 || ds.Tables[0].Rows.Count == 0)
                {
                    sReturn = "审核过程中出错,请与网络管理人员联系";
                    oCN.RollBack();
                    return false;
                }
                if (ds.Tables[0].Rows[0]["HBack"].ToString() != "0")
                {
                    sReturn = ds.Tables[0].Rows[0]["HRemark"].ToString();
                    oCN.RollBack();
                    return false;
                }
                //获取系统参数
                oSystemParameter.ShowBill(ref sReturn);
                //判断客户为天擎 同步金蝶工序汇报单
                if (oSystemParameter.omodel.WMS_CampanyName == "天擎")
                {
                    if (!set_SaveStationEntrustInBill_CLD(HBillNo, HProcExchInterID, HProcExchEntryID, HProcNo, HQty, CurUserName, ref DBUtility.ClsPub.sErrInfo))
                    {
                        oCN.RollBack();
                        return false;
                    }
                }
                //================================================================================
                sReturn = sReturn + " 审核功能!";
                oCN.Commit();
                return true;
@@ -1896,8 +2784,31 @@
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                //反审核前控制=============================================================
                string sql = "exec h_p_Sc_StationInBill_WW_BeforeUnCheckCtrl " + HInterID + ",'" + oBill.omodel.HBillNo + "','" + CurUserName + "'";
                ds = oCN.RunProcReturn(sql, "h_p_Sc_StationInBill_WW_BeforeUnCheckCtrl");
                if (ds == null || ds.Tables.Count == 0 || ds.Tables[0].Rows.Count == 0)
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 1;
                    objJsonResult.Message = "反审核失败!原因:反审核前判断失败,请与网络管理人员联系";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                if (ds.Tables[0].Rows[0]["HBack"].ToString() != "0")
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 1;
                    objJsonResult.Message = "反审核失败!原因:" + ds.Tables[0].Rows[0]["HRemark"].ToString(); ;
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                //================================================================================
                //反审核
                if (Cj_StationEntrustInBillAbandonCheckBill(HInterID, CurUserName, ref DBUtility.ClsPub.sExeReturnInfo))
                if (Cj_StationEntrustInBillAbandonCheckBill(HInterID, oBill.omodel.HBillNo, CurUserName, ref DBUtility.ClsPub.sExeReturnInfo))
                {
                    objJsonResult.code = "1";
                    objJsonResult.count = 1;
@@ -1925,7 +2836,7 @@
        }
        //反审核
        public bool Cj_StationEntrustInBillAbandonCheckBill(Int64 lngBillKey, string CurUserName, ref string sReturn)
        public bool Cj_StationEntrustInBillAbandonCheckBill(Int64 lngBillKey,string HBillNo, string CurUserName, ref string sReturn)
        {
            try
            {
@@ -1941,6 +2852,24 @@
                oCN.RunProc(" Update Sc_StationInBillMain set HChecker='',HCheckDate=null Where HInterID=" + lngBillKey.ToString());
                //oCN.RunProc("exec h_p_Mes_ProcessExchangeRelationQty_Check_In " + lngBillKey.ToString() + ",-1");
                //反审核后控制=============================================================================
                string sql = "exec h_p_Sc_StationInBill_WW_AfterUnCheckCtrl " + lngBillKey + ",'" + HBillNo + "','" + CurUserName + "'";
                ds = oCN.RunProcReturn(sql, "h_p_Sc_StationInBill_WW_AfterUnCheckCtrl");
                if (ds == null || ds.Tables.Count == 0 || ds.Tables[0].Rows.Count == 0)
                {
                    sReturn = "反审核过程中出错,请与网络管理人员联系";
                    oCN.RollBack();
                    return false;
                }
                if (ds.Tables[0].Rows[0]["HBack"].ToString() != "0")
                {
                    sReturn = ds.Tables[0].Rows[0]["HRemark"].ToString();
                    oCN.RollBack();
                    return false;
                }
                //=============================================================================
                sReturn = sReturn + "反审核功能!";
                oCN.Commit();
                return true;
@@ -2003,8 +2932,31 @@
                            return objJsonResult;
                        }
                    }
                    var HBillNo = ds.Tables[0].Rows[0]["HBillNo"].ToString();
                    //关闭前控制=========================================
                    string sql1 = "exec h_p_Sc_StationInBill_WW_BeforeCloseCtrl " + HInterID + ",'" + HBillNo + "','" + user + "'";
                    ds = oCN.RunProcReturn(sql1, "h_p_Sc_StationInBill_WW_BeforeCloseCtrl");
                    if (ds == null || ds.Tables.Count == 0 || ds.Tables[0].Rows.Count == 0)
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 1;
                        objJsonResult.Message = "关闭失败!原因:关闭前判断失败,请与网络管理人员联系";
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
                    if (ds.Tables[0].Rows[0]["HBack"].ToString() != "0")
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 1;
                        objJsonResult.Message = "关闭失败!原因:" + ds.Tables[0].Rows[0]["HRemark"].ToString(); ;
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
                    //==================================================================================
                    //关闭单据
                    if (!BillOld.CloseBill(Int64.Parse(HInterID), ref ClsPub.sExeReturnInfo))
                    if (!BillOld.CloseBill(Int64.Parse(HInterID), HBillNo, "h_p_Sc_StationInBill_WW_AfterCloseCtrl", user, ref ClsPub.sExeReturnInfo))
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 1;
@@ -2030,8 +2982,32 @@
                            return objJsonResult;
                        }
                    }
                    var HBillNo = ds.Tables[0].Rows[0]["HBillNo"].ToString();
                    //反关闭前控制=========================================
                    string sql1 = "exec h_p_Sc_StationInBill_WW_BeforeUnCloseCtrl " + HInterID + ",'" + HBillNo + "','" + user + "'";
                    ds = oCN.RunProcReturn(sql1, "h_p_Sc_StationInBill_WW_BeforeUnCloseCtrl");
                    if (ds == null || ds.Tables.Count == 0 || ds.Tables[0].Rows.Count == 0)
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 1;
                        objJsonResult.Message = "反关闭失败!原因:反关闭前判断失败,请与网络管理人员联系";
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
                    if (ds.Tables[0].Rows[0]["HBack"].ToString() != "0")
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 1;
                        objJsonResult.Message = "反关闭失败!原因:" + ds.Tables[0].Rows[0]["HRemark"].ToString(); ;
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
                    //==================================================================================
                    //反关闭单据
                    if (!BillOld.CancelClose(Int64.Parse(HInterID), ref ClsPub.sExeReturnInfo))
                    if (!BillOld.CancelClose(Int64.Parse(HInterID), HBillNo, "h_p_Sc_StationInBill_WW_AfterUnCloseCtrl", user, ref ClsPub.sExeReturnInfo))
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 1;
@@ -2118,9 +3094,32 @@
                        return objJsonResult;
                    }
                    //删除前控制=========================================
                    string HBillNo = oBill.omodel.HBillNo;
                    string sql1 = "exec h_p_Sc_StationInBill_WW_BeforeDelCtrl " + HInterID + ",'" + HBillNo + "','" + HDeleteMan + "'";
                    ds = oCN.RunProcReturn(sql1, "h_p_Sc_StationInBill_WW_BeforeDelCtrl");
                    if (ds == null || ds.Tables.Count == 0 || ds.Tables[0].Rows.Count == 0)
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = "删除失败!原因:删除前判断失败,请与网络管理人员联系";
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
                    if (ds.Tables[0].Rows[0]["HBack"].ToString() != "0")
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = "删除失败!原因:" + ds.Tables[0].Rows[0]["HRemark"].ToString(); ;
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
                    //==================================================================================
                    //写入删除日志 
                    string WorkList = "删除委外发出单:" + oBill.omodel.HBillNo;
                    if (!oBill.DeleteBill(oBill.omodel.HInterID, oBill.omodel.HProcExchInterID, oBill.omodel.HProcExchEntryID, ref DBUtility.ClsPub.sExeReturnInfo))
                    if (!oBill.DeleteBill(oBill.omodel.HInterID, oBill.omodel.HProcExchInterID, oBill.omodel.HProcExchEntryID, HBillNo, "h_p_Sc_StationInBill_WW_AfterDelCtrl", HDeleteMan, ref DBUtility.ClsPub.sExeReturnInfo))
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
@@ -2157,6 +3156,918 @@
            }
        }
        #endregion
        //
        //
        #region 委外工序发出单    上传生成金蝶云单据
        /// <summary>
        /// 新增上传
        /// </summary>
        /// <returns></returns>
        [Route("Cj_StationEntrustInBillController/set_SaveStationEntrustInBill_Json")]
        [HttpPost]
        public object set_SaveStationEntrustInBill_Json([FromBody] JObject oMain)
        {
            var _value = oMain["oMain"].ToString();
            string msg1 = _value.ToString();
            try
            {
                msg1 = "[" + msg1.ToString() + "]";
                List<StationBill> list = Newtonsoft.Json.JsonConvert.DeserializeObject<List<StationBill>>(msg1);
                ClsSc_StationInBillMain oMain2 = new ClsSc_StationInBillMain();
                oMain2.HInterID = list[0].HInterID;
                oMain2.HBillNo = list[0].HBillNo;
                oMain2.HBillType = "3792";
                oMain2.HDate = DateTime.Today;
                oMain2.HMaker = list[0].HMaker;//制单人
                oMain2.HRemark = list[0].HRemark;//备注
                oMain2.HInnerBillNo = list[0].HInnerBillNo;//送货单号
                oMain2.HICMOInterID = list[0].HICMOInterID;//生产订单号ID
                oMain2.HICMOBillNo = list[0].HICMOBillNo;//生产订单号
                oMain2.HProcPlanInterID = 0;
                oMain2.HProcPlanEntryID = 0;
                oMain2.HProcPlanBillNo = "";
                oMain2.HProcExchInterID = list[0].lngBillKey;
                oMain2.HProcExchEntryID = list[0].lngBillSubKey;
                oMain2.HProcExchBillNo = list[0].HProcExchBillNo;//流转卡
                oMain2.HMaterID = list[0].HMaterID;//产品ID
                oMain2.HProcID = list[0].HProcID;//当前工序
                oMain2.HICMOQty = list[0].HICMOQty;//任务单数量
                oMain2.HPlanQty = list[0].HPlanQty;//流转卡数量
                oMain2.HSourceID = list[0].HSourceID;//生产资源ID
                oMain2.HGroupID = list[0].HGroupID;//班组ID
                oMain2.HDeptID = list[0].HDeptID;//部门ID
                oMain2.HEmpID = list[0].HEmpID;//操作员ID
                oMain2.HBarCode = list[0].HBarCode;//条形码
                oMain2.HBarCodeMaker = "";
                oMain2.HAddr = "";
                oMain2.HSupID = list[0].HSupID;//供应商ID
                oMain2.HTaxRate = list[0].HTaxRate;//税率
                oMain2.HQty = list[0].HQty;//发出数量
                oMain2.HPrice = list[0].HPrice;//单价
                oMain2.HMoney = list[0].HMoney;//金额
                oMain2.HPieceQty = list[0].HPieceQty;//发出件数
                oMain2.HProcNo = Pub_Class.ClsPub.isLong(list[0].HProcNo);//流水号
                oMain2.HOrderProcNO = list[0].HOrderProcNO;//订单跟踪号
                oMain2.HWWWorkOrderBillNo = list[0].HWWWorkOrderBillNo;//委外工单号
                oMain2.HWWWorkOrderInterID = 0;//委外工单号子内码
                oMain2.HWWWorkOrderEntryID = 0;//委外工单号主内吗
                oMain2.HMainInterID = list[0].HMainInterID;
                oMain2.HPRDOrgID = list[0].HPRDOrgID;//组织ID
                //获取系统参数
                string sErrMsg = "";
                Pub_Class.ClsXt_SystemParameter oSystemParameter = new Pub_Class.ClsXt_SystemParameter();
                if (oSystemParameter.ShowBillByOrgID(oMain2.HPRDOrgID, ref sErrMsg) == true)
                {
                    if (oSystemParameter.omodel.MES_StationEntrustInBill_SaveAutoAddnew == "Y") //系统参数  自动审核
                    {
                        objJsonResult.Verify = "Y";
                    }
                    else
                    {
                        objJsonResult.Verify = "N";
                    }
                    if (set_SaveStationEntrustInBill(oMain2, oSystemParameter.omodel, ref DBUtility.ClsPub.sErrInfo))
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 1;
                        objJsonResult.Message = DBUtility.ClsPub.sErrInfo;  //成功!
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
                    else
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = DBUtility.ClsPub.sErrInfo;  //失败!
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
                }
                else
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "获取系统参数失败! " + sErrMsg;
                    objJsonResult.data = null;
                    return objJsonResult;
                }
            }
            catch (Exception e)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "委外工序发出单上传失败!" + e.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        //生成委外工序发出单
        public bool set_SaveStationEntrustInBill(Model.ClsSc_StationInBillMain oMain, Pub_Class.ClsXt_SystemParameterMain oSystemParameterMain, ref string sErrMsg)
        {
            string sRemark = "";
            string HReturn;
            SQLHelper.ClsCN oCn = new SQLHelper.ClsCN();
            //上传前判断
            if (oMain.HProcExchInterID <= 0)
            {
                sErrMsg = "流转卡没有选择!";
                return false;
            }
            if (oMain.HProcExchBillNo == "")
            {
                sErrMsg = "流转卡号没有选择!";
                return false;
            }
            if (oMain.HProcNo <= 0)
            {
                sErrMsg = "流水号没有选择!";
                return false;
            }
            if (oMain.HProcID <= 0)
            {
                sErrMsg = "当前工序没有选择!";
                return false;
            }
            if (oMain.HQty <= 0)
            {
                sErrMsg = "发出数量不允许为0!";
                return false;
            }
            string HBillNote = "";
            DataSet BfDs = oCn.RunProcReturn("exec h_p_Sc_StationInBill_WW_BeforeSaveCtrl " + oMain.HInterID.ToString() + ",'" + oMain.HBillNo + "','" + HBillNote + "',1 ", "h_p_Sc_StationInBill_WW_BeforeSaveCtrl");
            if (BfDs == null || BfDs.Tables[0].Rows.Count == 0)
            {
                sErrMsg = "上传前判断数据完整性失败!";
                return false;
            }
            else
            {
                if (DBUtility.ClsPub.isStrNull(BfDs.Tables[0].Rows[0]["HBack"]) != "0")
                {
                    sErrMsg = "单据号:" + oMain.HBillNo + ",单据ID:" + oMain.HInterID + ";" + DBUtility.ClsPub.isStrNull(BfDs.Tables[0].Rows[0]["HBackRemark"]);
                    return false;
                }
            }
            sRemark = sRemark + " ;上传前判断" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:ffff");
            try
            {
                //判断会计期是否合理
                string s = "";
                int sYear = 0;
                int sPeriod = 0;
                if (DBUtility.Xt_BaseBillFun.Fun_AllowYearPeriod(oMain.HDate, ref sYear, ref sPeriod, ref s) == false)
                {
                    sErrMsg = s;
                    return false;
                }
                oMain.HYear = sYear;
                oMain.HPeriod = sPeriod;
                oCn.BeginTran();
                //生成委外工序发出单
                //写入主表
                oCN.RunProc("Insert Into Sc_StationInBillMain " +
                "(HBillType,HBillSubType,HInterID,HBillNo,HDate,HMaker,HMakeDate" +
                ",HYear,HPeriod,HRemark,HInnerBillNo" +
                ",HICMOInterID,HICMOBillNo,HProcPlanInterID,HProcPlanEntryID,HProcPlanBillNo,HProcExchInterID,HProcExchEntryID" +
                ",HProcExchBillNo,HMaterID,HProcID,HICMOQty,HPlanQty,HStationInTime,HSourceID" +
                ",HGroupID,HDeptID,HEmpID,HBarCode,HAddr,HBarCodeMaker,HBarCodeMakeDate" +
                ",HSupID,HTaxRate,HQty,HPrice,HMoney,HPieceQty" +
                ",HProcNo,HOrderProcNO,HWWWorkOrderBillNo,HWWWorkOrderInterID,HWWWorkOrderEntryID,HMainInterID,HPRDOrgID" +
                ") " +
                " values('" + oMain.HBillType + "','" + oMain.HBillType + "'," + oMain.HInterID.ToString() + ",'" + oMain.HBillNo + "','" + oMain.HDate.ToShortDateString() + "','" + oMain.HMaker + "',getdate()" +
                ", " + oMain.HYear.ToString() + "," + oMain.HPeriod.ToString() + ",'" + oMain.HRemark + "','" + oMain.HInnerBillNo + "'" +
                "," + oMain.HICMOInterID + ",'" + oMain.HICMOBillNo + "'," + oMain.HProcPlanInterID + "," + oMain.HProcPlanEntryID + ",'" + oMain.HProcPlanBillNo + "'," + oMain.HProcExchInterID + "," + oMain.HProcExchEntryID +
                ",'" + oMain.HProcExchBillNo + "'," + oMain.HMaterID + "," + oMain.HProcID + "," + oMain.HICMOQty + "," + oMain.HPlanQty + ",getdate()," + oMain.HSourceID +
                "," + oMain.HGroupID + "," + oMain.HDeptID + "," + oMain.HEmpID + ",'" + oMain.HBarCode + "','" + oMain.HAddr + "','" + oMain.HBarCodeMaker + "',getdate()" +
                "," + oMain.HSupID + "," + oMain.HTaxRate + "," + oMain.HQty + "," + oMain.HPrice + "," + oMain.HMoney + "," + oMain.HPieceQty +
                ",'" + oMain.HProcNo + "','" + oMain.HOrderProcNO + "'" + ",'" + oMain.HWWWorkOrderBillNo + "'" + "," + oMain.HWWWorkOrderInterID + "" + "," + oMain.HWWWorkOrderEntryID + "," + oMain.HMainInterID + "," + oMain.HPRDOrgID +
                ") ");
                sRemark = sRemark + " ;生成委外工序发出单单据" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:ffff");
                DataSet AfDs = oCn.RunProcReturn("exec h_p_Sc_StationInBill_WW_AfterSaveCtrl " + oMain.HInterID.ToString() + ",'" + oMain.HBillNo + "',2 ", "h_p_Sc_StationInBill_WW_AfterSaveCtrl");
                if (AfDs == null || AfDs.Tables[0].Rows.Count == 0)
                {
                    sErrMsg = "保存后控制判断失败!";
                    return false;
                }
                else
                {
                    if (DBUtility.ClsPub.isStrNull(AfDs.Tables[0].Rows[0]["HBack"]) != "0")
                    {
                        sErrMsg = "单据号:" + oMain.HBillNo + ",单据ID:" + oMain.HInterID + ";" + DBUtility.ClsPub.isStrNull(BfDs.Tables[0].Rows[0]["HBackRemark"]);
                        return false;
                    }
                }
                DataSet QtyDs = oCn.RunProcReturn("exec h_p_MES_StationInBill_QtyCtrl " + oMain.HInterID.ToString(), "h_p_MES_StationInBill_QtyCtrl");
                if (QtyDs == null || QtyDs.Tables[0].Rows.Count == 0)
                {
                    sErrMsg = "判断数量失败!";
                    return false;
                }
                else
                {
                    if (DBUtility.ClsPub.isStrNull(QtyDs.Tables[0].Rows[0]["HBack"]) == "2")
                    {
                        sErrMsg = "单据号:" + oMain.HBillNo + ",单据ID:" + oMain.HInterID + ";" + DBUtility.ClsPub.isStrNull(BfDs.Tables[0].Rows[0]["HBackRemark"]);
                        return false;
                    }
                }
                oCn.RunProc("exec h_p_Mes_ProcessExchangeRelationQty_In " + oMain.HInterID.ToString() + ",1");
                oCn.RunProc("exec h_p_WW_EntrustWorkOrderRelationQty_In " + oMain.HInterID.ToString() + ",1");
                sRemark = sRemark + " ;保存后控制" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:ffff");
                //返回API递入所需数据
                DataSet Ds = oCn.RunProcReturn("exec h_p_MES_StationEntrustInBill_ProdMateRequest_CLD " + oMain.HProcExchInterID.ToString() + "," + oMain.HProcExchEntryID.ToString() + "," + oMain.HProcNo.ToString() + "," + oMain.HQty.ToString(), "h_p_MES_StationEntrustInBill_ProdMateRequest_CLD");
                if (Ds == null || Ds.Tables[0].Rows.Count == 0)
                {
                    sErrMsg = "未获取到API所需递入数据!";
                    return false;
                }
                sRemark = sRemark + " ;获取CLOUD单据API递入值" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:ffff");
                //生成金蝶云对应单据
                //获取金蝶云API所需递入数据
                string sJson_MainCustom = "";   //自定义字段
                string sJson_BatchNo = "";
                string sJson_FAUXPROPID = "";
                sJson_MainCustom = Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["MainCustom"]);
                //是否启用批次管理
                if (Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["HISBATCHMANAGE"]) == "1")
                {
                    sJson_BatchNo = "  \"FLOT\": {\"FNumber\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FLOT"]) + "\"},    \"FLOT_TEXT\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FLOT"]) + "\"  , ";
                }
                else
                {
                    sJson_BatchNo = "";
                }
                //辅助属性
                sJson_FAUXPROPID = " \"FProAuxPropId\":{\"FPROAUXPROPID__FF100002\":{\"FNumber\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FProAuxPropId"]) + "\"}},";
                string sJson_Main = "{\"Creator\":\"\",\"NeedUpDateFields\":[],\"NeedReturnFields\":[],\"IsDeleteEntry\":\"True\",\"SubSystemId\":\"\",\"IsVerifyBaseDataField\":\"false\",\"IsEntryBatchFill\":\"True\",\"Model\":{\"FBillNo\":\"" + oMain.HBillNo + "\"," +
                //"FID": 0,
                "\"FBillTypeID\":{ \"FNumber\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FBillTypeID"]) + "\" }," +
                "\"FBillDate\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FBillDate"]) + "\"," +
                "\"FProOrgId\":{ \"FNumber\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FProOrgId"]) + "\" }," +
                "\"FProductId\":{ \"FNumber\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FProductId"]) + "\" }," +
                //"FProductId": {"FNUMBER": ""},
                sJson_FAUXPROPID +
                "\"FTransferType\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FTransferType"]) + "\"," +
                "\"FBusinessType\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FBusinessType"]) + "\"," +
                //"FDescription": "",
                "\"FProDeptId\":{ \"FNumber\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FProDeptId"]) + "\" }," +
                "\"FMOBillNo\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FMOBillNo"]) + "\"," +
                "\"FMOEntrySeq\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FMOEntrySeq"]) + "\"," +
                "\"FBomId\":{ \"FNumber\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FBomId"]) + "\" }," +
                "\"FOperUnitId\":{ \"FNumber\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FOperUnitId"]) + "\" }," +
                "\"FProUnitId\":{ \"FNumber\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FProUnitId"]) + "\" }," +
                "\"FMOQty\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FMOQty"]) + "\"," +
                "\"FMTONo\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FMTONo"]) + "\"," +
                sJson_BatchNo +
                //"FCreatorId": {"FUserID": ""},
                "\"FSaleOrderNo\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FSaleOrderNo"]) + "\"," +
                //"FCreateDate": "1900-01-01",
                "\"FSaleOrderSeq\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FSaleOrderSeq"]) + "\"," +
                //"FModifierId": {"FUserID": ""},
                //"FModifyDate": "1900-01-01",
                //"FApproveDate": "1900-01-01",
                //"FApproverId": {"FUserID": ""},
                //"FCancelDate": "1900-01-01",
                //"FCancelId": {"FUserID": ""},
                "\"FSourceBillType\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FSourceBillType"]) + "\"," +
                "\"FSrcOptPlanId\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FSrcOptPlanId"]) + "\"," +
                "\"FSourceBillNo\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FSourceBillNo"]) + "\"," +
                "\"FSrcOptPlanOptId\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FSrcOptPlanOptId"]) + "\"," +
                "\"FSrcOptPlanSeqId\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FSrcOptPlanSeqId"]) + "\"," +
                "\"FMOId\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FMOId"]) + "\"," +
                "\"FMOEntryId\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FMOEntryId"]) + "\"," +
                //"FSrcRptEntryId": 0,
                //"FGroupById": "",
                "\"FProductType\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FProductType"]) + "\"," +
                "\"FProjectNo\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FProjectNo"]) + "\"," +
                "\"FStockInOrgId\":{ \"FNumber\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FStockInOrgId"]) + "\" }," +
                "\"FOwnerTypeId\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FOwnerTypeId"]) + "\"," +
                //"FInStockType": "",
                "\"FOwnerId\":{ \"FNumber\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FOwnerId"]) + "\" }," +
                //"FStockId": {"FNUMBER": ""},
                "\"FOutOPBillNo\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FOutOPBillNo"]) + "\"," +
                //"FStockLocId": {"FSTOCKLOCID__FF100001": {"FNumber": ""}},
                //"FBalanceType": "",
                "\"FIsEntrust\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FIsEntrust"]) + "\"," +
                "\"FOutSeqNumber\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FOutSeqNumber"]) + "\"," +
                "\"FOutOperNumber\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FOutOperNumber"]) + "\"," +
                "\"FOutProOrgId\":{ \"FNumber\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FOutProOrgId"]) + "\" }," +
                "\"FProxyOutProOrgId\":{ \"FNumber\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FProxyOutProOrgId"]) + "\" }," +
                "\"FOutDeptId\":{ \"FNumber\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FOutDeptId"]) + "\" }," +
                "\"FOutWorkCenterId\":{ \"FNumber\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FOutWorkCenterId"]) + "\" }," +
                "\"FOutProcessId\":{ \"FNumber\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FOutProcessId"]) + "\" }," +
                //"FOutEmpId": {"FSTAFFNUMBER": ""},
                "\"FOutOperDescr\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FOutOperDescr"]) + "\"," +
                //"FOutPurOrgId": {"FNumber": ""},
                "\"FInProOrgId\":{ \"FNumber\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FInProOrgId"]) + "\" }," +
                "\"FInOPBillNo\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FInOPBillNo"]) + "\"," +
                //"FOutSupplier": {"FNUMBER": ""},
                "\"FOutOperId\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FOutOperId"]) + "\"," +
                "\"FInProcessId\":{ \"FNumber\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FInProcessId"]) + "\" }," +
                "\"FInDeptId\":{ \"FNumber\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FInDeptId"]) + "\" }," +
                "\"FOutIsInStorePoint\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FOutIsInStorePoint"]) + "\"," +
                "\"FOutSeqType\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FOutSeqType"]) + "\"," +
                "\"FInOperDescr\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FInOperDescr"]) + "\"," +
                "\"FOutIsOutSrc\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FOutIsOutSrc"]) + "\"," +
                "\"FInSeqNumber\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FInSeqNumber"]) + "\"," +
                "\"FInPurOrgId\":{ \"FNumber\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FInPurOrgId"]) + "\" }," +
                "\"FInOperNumber\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FInOperNumber"]) + "\"," +
                "\"FInWorkCenterId\":{ \"FNumber\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FInWorkCenterId"]) + "\" }," +
                //"FInEmpId": {"FSTAFFNUMBER": ""},
                "\"FInSupplier\":{ \"FNAME\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FInSupplier"]) + "\" }," +
                "\"FOperApplyQty\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FOperApplyQty"]) + "\"," +
                "\"FTransferQty\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FTransferQty"]) + "\"," +
                "\"FApplyQty\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FApplyQty"]) + "\"," +
                "\"FOperTransferQty\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FOperTransferQty"]) + "\"," +
                "\"FOperQualifiedQty\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FOperQualifiedQty"]) + "\"," +
                //"FValQualifiedQty": 0,
                "\"FQualifiedQty\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FQualifiedQty"]) + "\"," +
                "\"FInOperId\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FInOperId"]) + "\"," +
                //"FOperUnqualifiedQty": 0,
                //"FUnqualifiedQty": 0,
                "\"FIsFirstOperTransIn\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FIsFirstOperTransIn"]) + "\"," +
                "\"FIsExistTransIn\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FIsExistTransIn"]) + "\"," +
                //"FOperProFailQty": 0,
                //"FValProFailQty": 0,
                //"FProFailQty": 0,
                //"FOperMatFailQty": 0,
                //"FOperPreReworkQty": 0,
                //"FPreReworkQty": 0,
                //"FMatFailQty": 0,
                //"FValMatFailQty": 0,
                "\"FSendCurrency\":{ \"FNumber\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FSendCurrency"]) + "\" }," +
                "\"FIsInspect\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FIsInspect"]) + "\"," +
                "\"FQCSchemeId\":{ \"FNumber\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FQCSchemeId"]) + "\" }," +
                "\"FSendProFailPrice\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FSendProFailPrice"]) + "\"," +
                //"FReceiveCurrency": {"FNUMBER": ""},
                //"FReceiveQualifiedPrice": 0,
                //"FReceiveProFailPrice": 0,
                //"FReceiveMatFailPrice": 0,
                "\"FReceiveValuationUnitId\":{ \"FNumber\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FReceiveValuationUnitId"]) + "\" }," +
                //"FReceiveTaxRate": 0,
                "\"FSendMatFailPrice\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FSendMatFailPrice"]) + "\"," +
                //"FOperInspectSelectQty": 0,
                "\"FSendValuationUnitId\":{ \"FNumber\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FSendValuationUnitId"]) + "\" }," +
                //"FInspectSelectQty": 0,
                "\"FSendTaxRate\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FSendTaxRate"]) + "\"," +
                "\"FSendQualifiedPrice\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FSendQualifiedPrice"]) + "\"," +
                //"FOperQuaSettleSelQty": 0,
                //"FValQuaSettleSelQty": 0,
                //"FQuaSettleSelQty": 0,
                //"FOperInspectQty": 0,
                //"FInspectQty": 0,
                //"FQuaInStockSelQty": 0,
                //"FOperQuaSettleQty": 0,
                //"FValQuaSettleQty": 0,
                //"FQuaSettleQty": 0,
                //"FValProFailSettleSelQty": 0,
                //"FOperProFailSettleSelQty": 0,
                //"FQuaInStockQty": 0,
                //"FProFailSettleSelQty": 0,
                //"FOperProFailSettleQty": 0,
                //"FValProFailSettleQty": 0,
                //"FProFailSettleQty": 0,
                //"FOperMatFailSettleSelQty": 0,
                //"FValMatFailSettleSelQty": 0,
                //"FMatFailSettleSelQty": 0,
                "\"FUnitTransHeadQty\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FUnitTransHeadQty"]) + "\"," +
                "\"FUnitTransOperQty\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FUnitTransOperQty"]) + "\"," +
                //"FOperMatFailSettleQty": 0,
                //"FMatFailSettleQty": 0,
                //"FValMatFailSettleQty": 0,
                "\"FBaseUnitId\":{ \"FNumber\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FBaseUnitId"]) + "\" }," +
                "\"FApplyBaseQty\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FApplyBaseQty"]) + "\"," +
                "\"FTransferBaseQty\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FTransferBaseQty"]) + "\"," +
                //"FUnQuaInStockSelQty": 0,
                "\"FQualifiedBaseQty\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FQualifiedBaseQty"]) + "\"," +
                //"FInspectSelectBaseQty": 0,
                //"FUnQuaInStockQty": 0,
                //"FUnqualifiedBaseQty": 0,
                //"FProFailBaseQty": 0,
                //"FInspectBaseQty": 0,
                //"FPreReworkBaseQty": 0,
                //"FMatFailBaseQty": 0,
                //"FQuaSettleSelBaseQty": 0,
                //"FQuaInStockSelBaseQty": 0,
                //"FQuaSettleBaseQty": 0,
                //"FUnQuaInStockSelBaseQty": 0,
                //"FQuaInStockBaseQty": 0,
                //"FUnQuaInStockBaseQty": 0,
                //"FProFailSettleSelBaseQty": 0,
                //"FProFailSettleBaseQty": 0,
                //"FMatFailSettleSelBaseQty": 0,
                //"FMatFailSettleBaseQty": 0,
                "\"FDemandType\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FDemandType"]) + "\"," +
                "\"FDemandBillId\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FDemandBillId"]) + "\"," +
                "\"FDemandBillEntryId\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FDemandBillEntryId"]) + "\"," +
                //"FInspectEntryId": 0,
                "\"FConvertType\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FConvertType"]) + "\"," +
                //"FReceiveQualifiedTaxPrice": 0,
                //"FReceiveProFailTaxPrice": 0,
                //"FReceiveMatFailTaxPrice": 0,
                "\"FSendQualifiedTaxPrice\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FSendQualifiedTaxPrice"]) + "\"," +
                "\"FSendProFailTaxPrice\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FSendProFailTaxPrice"]) + "\"," +
                "\"FSendMatFailTaxPrice\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FSendMatFailTaxPrice"]) + "\"," +
                "\"FRateOperQty\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FRateOperQty"]) + "\"," +
                "\"FRateProQty\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FRateProQty"]) + "\"," +
                "\"FRateValQty\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FRateValQty"]) + "\"," +
                //"FPriceList": {"FNUMBER": ""},
                //"FOperStatus": "",
                //"FInstockStatus": "",
                //"FSettleStatus": "",
                //"FMOInStockQty": 0,
                //"FDefectProcessEntryId": 0,
                //"FMRBReviewEntryId": 0,
                //"FTransDirection": "",
                //"FBackwashSrcId": 0
                sJson_MainCustom +
                " \"FBillHead_Link\": [{" +
                    " \"FBillHead_Link_FFlowId\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FBillHead_Link_FFlowId"]) + "\"," +
                    " \"FBillHead_Link_FFlowLineId\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FBillHead_Link_FFlowLineId"]) + "\"," +
                    " \"FBillHead_Link_FRuleId\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FBillHead_Link_FRuleId"]) + "\"," +
                    " \"FBillHead_Link_FSTableId\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FBillHead_Link_FSTableId"]) + "\"," +
                    " \"FBillHead_Link_FSTableName\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FBillHead_Link_FSTableName"]) + "\"," +
                    " \"FBillHead_Link_FSBillId\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FBillHead_Link_FSBillId"]) + "\"," +
                    " \"FBillHead_Link_FSId\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FBillHead_Link_FSId"]) + "\"," +
                    " \"FBillHead_Link_FTransferBaseQtyOld\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FBillHead_Link_FTransferBaseQtyOld"]) + "\"," +
                    " \"FBillHead_Link_FTransferBaseQty\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FBillHead_Link_FTransferBaseQty"]) + "\"" +
                " } ]," +
                " \"FBFLowId\":{\"FID\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FBFLowId"]) + "\"}}}";
                string sJson = sJson_Main;
                //CLOUD金蝶云账号密码登入
                var loginRet = InvokeHelper.LoginUser(oMain.HMaker);
                var isSuccess = JObject.Parse(loginRet)["LoginResultType"].Value<int>();
                sRemark = sRemark + " ;获取验证CLOUD账号密码" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:ffff");
                //生成金蝶云单据
                if (isSuccess == 1)
                {
                    string result = InvokeHelper.Save("SFC_OperationTransfer", sJson); //保存
                    sRemark = sRemark + " ;生成CLOUD单据" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:ffff");
                    HReturn = result.ToString();
                    if (HReturn.Contains("\"IsSuccess\":false") == true)
                    {
                        //反序列化json数据
                        var retModel = JsonConvert.DeserializeObject<KingdeeResponse>(HReturn);
                        //接收金蝶报错信息
                        var strErrorMsg = string.Empty;
                        //遍历获取报错信息
                        foreach (var item in retModel.Result.ResponseStatus.Errors)
                        {
                            strErrorMsg += item.Message + "\r\n";
                        };
                        sErrMsg = "生成委外工序发出单失败!金蝶云提示:" + strErrorMsg;
                        LogService.Write("生成委外工序发出单失败!" + HReturn + sJson);   //写入txt文本
                        oCn.RollBack();
                        return false;
                    }
                    else
                    {
                        sRemark = sRemark + sJson;
                        oCn.Commit();
                    }
                }
                else
                {
                    sErrMsg = "生成委外工序发出单失败!金蝶云登录失败!";
                    oCn.RollBack();
                    return false;
                }
            }
            catch (Exception e)
            {
                LogService.Write("生成回滚" + e.Message + sRemark);
                sErrMsg = "生成委外工序发出单失败!" + e.Message;
                oCn.RollBack();
                return false;
            }
            if (oSystemParameter.omodel.MES_StationEntrustInBill_AutoCheck.ToUpper() == "Y") //系统参数  自动审核
            {
                try
                {
                    oCn.BeginTran();
                    //审核单据
                    oCn.RunProc("Update Sc_StationInBillMain Set HChecker='" + oMain.HMaker + "',HCheckDate=getdate(),HBillStatus=2 where HInterID= " + oMain.HInterID.ToString());
                    //提交、审核金蝶云单据
                    HReturn = "";
                    string sJson2 = "{\"CreateOrgId\":0,\"Numbers\":[\"" + oMain.HBillNo + "\"]}";
                    var result2 = InvokeHelper.Submit("SFC_OperationTransfer", sJson2);    //提交
                    sRemark = sRemark + " ;提交CLOUD单据" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:ffff");
                    var result3 = InvokeHelper.Audit("SFC_OperationTransfer", sJson2);     //审核
                    sRemark = sRemark + " ;审核CLOUD单据" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:ffff");
                    HReturn = result2.ToString() + "," + result3.ToString();
                    if (HReturn.Contains("\"IsSuccess\":false") == true)
                    {
                        //反序列化json数据
                        var retModel = JsonConvert.DeserializeObject<KingdeeResponse>(result3);
                        //接收金蝶报错信息
                        var strErrorMsg = string.Empty;
                        //遍历获取报错信息
                        foreach (var item in retModel.Result.ResponseStatus.Errors)
                        {
                            strErrorMsg += item.Message + "\r\n";
                        };
                        sErrMsg = "生成委外工序发出单成功,审核单据失败!金蝶云提示:" + strErrorMsg;
                        LogService.Write("审核单据失败" + sRemark + HReturn);
                        oCn.RollBack();
                        return true;
                    }
                    else
                    {
                        LogService.Write("生成并审核委外工序发出单成功!" + sRemark);
                        sErrMsg = "生成并审核委外工序发出单成功!单据号为:" + oMain.HBillNo;
                        oCn.Commit();
                        return true;
                    }
                }
                catch (Exception e)
                {
                    LogService.Write("审核回滚" + sRemark + HReturn);
                    sErrMsg = "审核委外工序发出单失败!" + e.Message;
                    oCn.RollBack();
                    return false;
                }
            }
            else
            {
                LogService.Write("生成委外工序发出单成功!" + sRemark);
                sErrMsg = "生成委外工序发出单成功!单据号为:" + oMain.HBillNo;
                return true;
            }
        }
        #endregion
        #region 委外工序发出单    上传生成金蝶云单据
        /// <summary>
        /// 新增并审核金蝶云单据
        /// </summary>
        /// <returns></returns>
        [Route("Cj_StationEntrustInBillController/set_SaveStationEntrustInBill_CLD_Json")]
        [HttpGet]
        public object set_SaveStationEntrustInBill_CLD_Json(string HBillNo, Int64 HProcExchInterID, Int64 HProcExchEntryID, Int64 HProcNo, Double HQty, string HMaker)
        {
            if (set_SaveStationEntrustInBill_CLD(HBillNo,HProcExchInterID,HProcExchEntryID,HProcNo,HQty,HMaker, ref DBUtility.ClsPub.sErrInfo))
            {
                objJsonResult.code = "0";
                objJsonResult.count = 1;
                objJsonResult.Message = DBUtility.ClsPub.sErrInfo;  //成功!
                objJsonResult.data = null;
                return objJsonResult;
            }
            else
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = DBUtility.ClsPub.sErrInfo;  //失败!
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        //生成金蝶云委外工序发出单
        public bool set_SaveStationEntrustInBill_CLD(string HBillNo, Int64 HProcExchInterID, Int64 HProcExchEntryID, Int64 HProcNo, Double HQty, string HMaker, ref string sErrMsg)
        {
            string sRemark = "";
            string HReturn;
            SQLHelper.ClsCN oCn = new SQLHelper.ClsCN();
            try
            {
                //返回API递入所需数据
                DataSet Ds = oCn.RunProcReturn("exec h_p_MES_StationEntrustInBill_ProdMateRequest_CLD " + HProcExchInterID.ToString() + "," + HProcExchEntryID.ToString() + "," + HProcNo.ToString() + "," + HQty.ToString(), "h_p_MES_StationEntrustInBill_ProdMateRequest_CLD");
                if (Ds == null || Ds.Tables[0].Rows.Count == 0)
                {
                    sErrMsg = "未获取到API所需递入数据!";
                    return false;
                }
                sRemark = sRemark + " ;获取CLOUD单据API递入值" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:ffff");
                //生成金蝶云对应单据
                //获取金蝶云API所需递入数据
                string sJson_MainCustom = "";   //自定义字段
                string sJson_BatchNo = "";
                string sJson_FAUXPROPID = "";
                sJson_MainCustom = Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["MainCustom"]);
                //是否启用批次管理
                if (Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["HISBATCHMANAGE"]) == "1")
                {
                    sJson_BatchNo = "  \"FLOT\": {\"FNumber\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FLOT"]) + "\"},    \"FLOT_TEXT\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FLOT"]) + "\"  , ";
                }
                else
                {
                    sJson_BatchNo = "";
                }
                //辅助属性
                sJson_FAUXPROPID = " \"FProAuxPropId\":{\"FPROAUXPROPID__FF100002\":{\"FNumber\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FProAuxPropId"]) + "\"}},";
                string sJson_Main = "{\"Creator\":\"\",\"NeedUpDateFields\":[],\"NeedReturnFields\":[],\"IsDeleteEntry\":\"True\",\"SubSystemId\":\"\",\"IsVerifyBaseDataField\":\"false\",\"IsEntryBatchFill\":\"True\",\"Model\":{\"FBillNo\":\"" + HBillNo + "\"," +
                //"FID": 0,
                "\"FBillTypeID\":{ \"FNumber\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FBillTypeID"]) + "\" }," +
                "\"FBillDate\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FBillDate"]) + "\"," +
                "\"FProOrgId\":{ \"FNumber\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FProOrgId"]) + "\" }," +
                "\"FProductId\":{ \"FNumber\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FProductId"]) + "\" }," +
                //"FProductId": {"FNUMBER": ""},
                sJson_FAUXPROPID +
                "\"FTransferType\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FTransferType"]) + "\"," +
                "\"FBusinessType\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FBusinessType"]) + "\"," +
                //"FDescription": "",
                "\"FProDeptId\":{ \"FNumber\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FProDeptId"]) + "\" }," +
                "\"FMOBillNo\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FMOBillNo"]) + "\"," +
                "\"FMOEntrySeq\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FMOEntrySeq"]) + "\"," +
                "\"FBomId\":{ \"FNumber\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FBomId"]) + "\" }," +
                "\"FOperUnitId\":{ \"FNumber\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FOperUnitId"]) + "\" }," +
                "\"FProUnitId\":{ \"FNumber\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FProUnitId"]) + "\" }," +
                "\"FMOQty\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FMOQty"]) + "\"," +
                "\"FMTONo\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FMTONo"]) + "\"," +
                sJson_BatchNo +
                //"FCreatorId": {"FUserID": ""},
                "\"FSaleOrderNo\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FSaleOrderNo"]) + "\"," +
                //"FCreateDate": "1900-01-01",
                "\"FSaleOrderSeq\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FSaleOrderSeq"]) + "\"," +
                //"FModifierId": {"FUserID": ""},
                //"FModifyDate": "1900-01-01",
                //"FApproveDate": "1900-01-01",
                //"FApproverId": {"FUserID": ""},
                //"FCancelDate": "1900-01-01",
                //"FCancelId": {"FUserID": ""},
                "\"FSourceBillType\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FSourceBillType"]) + "\"," +
                "\"FSrcOptPlanId\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FSrcOptPlanId"]) + "\"," +
                "\"FSourceBillNo\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FSourceBillNo"]) + "\"," +
                "\"FSrcOptPlanOptId\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FSrcOptPlanOptId"]) + "\"," +
                "\"FSrcOptPlanSeqId\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FSrcOptPlanSeqId"]) + "\"," +
                "\"FMOId\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FMOId"]) + "\"," +
                "\"FMOEntryId\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FMOEntryId"]) + "\"," +
                //"FSrcRptEntryId": 0,
                //"FGroupById": "",
                "\"FProductType\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FProductType"]) + "\"," +
                "\"FProjectNo\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FProjectNo"]) + "\"," +
                "\"FStockInOrgId\":{ \"FNumber\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FStockInOrgId"]) + "\" }," +
                "\"FOwnerTypeId\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FOwnerTypeId"]) + "\"," +
                //"FInStockType": "",
                "\"FOwnerId\":{ \"FNumber\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FOwnerId"]) + "\" }," +
                //"FStockId": {"FNUMBER": ""},
                "\"FOutOPBillNo\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FOutOPBillNo"]) + "\"," +
                //"FStockLocId": {"FSTOCKLOCID__FF100001": {"FNumber": ""}},
                //"FBalanceType": "",
                "\"FIsEntrust\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FIsEntrust"]) + "\"," +
                "\"FOutSeqNumber\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FOutSeqNumber"]) + "\"," +
                "\"FOutOperNumber\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FOutOperNumber"]) + "\"," +
                "\"FOutProOrgId\":{ \"FNumber\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FOutProOrgId"]) + "\" }," +
                "\"FProxyOutProOrgId\":{ \"FNumber\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FProxyOutProOrgId"]) + "\" }," +
                "\"FOutDeptId\":{ \"FNumber\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FOutDeptId"]) + "\" }," +
                "\"FOutWorkCenterId\":{ \"FNumber\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FOutWorkCenterId"]) + "\" }," +
                "\"FOutProcessId\":{ \"FNumber\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FOutProcessId"]) + "\" }," +
                //"FOutEmpId": {"FSTAFFNUMBER": ""},
                "\"FOutOperDescr\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FOutOperDescr"]) + "\"," +
                //"FOutPurOrgId": {"FNumber": ""},
                "\"FInProOrgId\":{ \"FNumber\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FInProOrgId"]) + "\" }," +
                "\"FInOPBillNo\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FInOPBillNo"]) + "\"," +
                //"FOutSupplier": {"FNUMBER": ""},
                "\"FOutOperId\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FOutOperId"]) + "\"," +
                "\"FInProcessId\":{ \"FNumber\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FInProcessId"]) + "\" }," +
                "\"FInDeptId\":{ \"FNumber\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FInDeptId"]) + "\" }," +
                "\"FOutIsInStorePoint\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FOutIsInStorePoint"]) + "\"," +
                "\"FOutSeqType\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FOutSeqType"]) + "\"," +
                "\"FInOperDescr\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FInOperDescr"]) + "\"," +
                "\"FOutIsOutSrc\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FOutIsOutSrc"]) + "\"," +
                "\"FInSeqNumber\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FInSeqNumber"]) + "\"," +
                "\"FInPurOrgId\":{ \"FNumber\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FInPurOrgId"]) + "\" }," +
                "\"FInOperNumber\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FInOperNumber"]) + "\"," +
                "\"FInWorkCenterId\":{ \"FNumber\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FInWorkCenterId"]) + "\" }," +
                //"FInEmpId": {"FSTAFFNUMBER": ""},
                "\"FInSupplier\":{ \"FNAME\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FInSupplier"]) + "\" }," +
                "\"FOperApplyQty\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FOperApplyQty"]) + "\"," +
                "\"FTransferQty\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FTransferQty"]) + "\"," +
                "\"FApplyQty\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FApplyQty"]) + "\"," +
                "\"FOperTransferQty\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FOperTransferQty"]) + "\"," +
                "\"FOperQualifiedQty\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FOperQualifiedQty"]) + "\"," +
                //"FValQualifiedQty": 0,
                "\"FQualifiedQty\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FQualifiedQty"]) + "\"," +
                "\"FInOperId\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FInOperId"]) + "\"," +
                //"FOperUnqualifiedQty": 0,
                //"FUnqualifiedQty": 0,
                "\"FIsFirstOperTransIn\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FIsFirstOperTransIn"]) + "\"," +
                "\"FIsExistTransIn\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FIsExistTransIn"]) + "\"," +
                //"FOperProFailQty": 0,
                //"FValProFailQty": 0,
                //"FProFailQty": 0,
                //"FOperMatFailQty": 0,
                //"FOperPreReworkQty": 0,
                //"FPreReworkQty": 0,
                //"FMatFailQty": 0,
                //"FValMatFailQty": 0,
                "\"FSendCurrency\":{ \"FNumber\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FSendCurrency"]) + "\" }," +
                "\"FIsInspect\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FIsInspect"]) + "\"," +
                "\"FQCSchemeId\":{ \"FNumber\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FQCSchemeId"]) + "\" }," +
                "\"FSendProFailPrice\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FSendProFailPrice"]) + "\"," +
                //"FReceiveCurrency": {"FNUMBER": ""},
                //"FReceiveQualifiedPrice": 0,
                //"FReceiveProFailPrice": 0,
                //"FReceiveMatFailPrice": 0,
                "\"FReceiveValuationUnitId\":{ \"FNumber\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FReceiveValuationUnitId"]) + "\" }," +
                //"FReceiveTaxRate": 0,
                "\"FSendMatFailPrice\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FSendMatFailPrice"]) + "\"," +
                //"FOperInspectSelectQty": 0,
                "\"FSendValuationUnitId\":{ \"FNumber\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FSendValuationUnitId"]) + "\" }," +
                //"FInspectSelectQty": 0,
                "\"FSendTaxRate\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FSendTaxRate"]) + "\"," +
                "\"FSendQualifiedPrice\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FSendQualifiedPrice"]) + "\"," +
                //"FOperQuaSettleSelQty": 0,
                //"FValQuaSettleSelQty": 0,
                //"FQuaSettleSelQty": 0,
                //"FOperInspectQty": 0,
                //"FInspectQty": 0,
                //"FQuaInStockSelQty": 0,
                //"FOperQuaSettleQty": 0,
                //"FValQuaSettleQty": 0,
                //"FQuaSettleQty": 0,
                //"FValProFailSettleSelQty": 0,
                //"FOperProFailSettleSelQty": 0,
                //"FQuaInStockQty": 0,
                //"FProFailSettleSelQty": 0,
                //"FOperProFailSettleQty": 0,
                //"FValProFailSettleQty": 0,
                //"FProFailSettleQty": 0,
                //"FOperMatFailSettleSelQty": 0,
                //"FValMatFailSettleSelQty": 0,
                //"FMatFailSettleSelQty": 0,
                "\"FUnitTransHeadQty\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FUnitTransHeadQty"]) + "\"," +
                "\"FUnitTransOperQty\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FUnitTransOperQty"]) + "\"," +
                //"FOperMatFailSettleQty": 0,
                //"FMatFailSettleQty": 0,
                //"FValMatFailSettleQty": 0,
                "\"FBaseUnitId\":{ \"FNumber\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FBaseUnitId"]) + "\" }," +
                "\"FApplyBaseQty\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FApplyBaseQty"]) + "\"," +
                "\"FTransferBaseQty\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FTransferBaseQty"]) + "\"," +
                //"FUnQuaInStockSelQty": 0,
                "\"FQualifiedBaseQty\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FQualifiedBaseQty"]) + "\"," +
                //"FInspectSelectBaseQty": 0,
                //"FUnQuaInStockQty": 0,
                //"FUnqualifiedBaseQty": 0,
                //"FProFailBaseQty": 0,
                //"FInspectBaseQty": 0,
                //"FPreReworkBaseQty": 0,
                //"FMatFailBaseQty": 0,
                //"FQuaSettleSelBaseQty": 0,
                //"FQuaInStockSelBaseQty": 0,
                //"FQuaSettleBaseQty": 0,
                //"FUnQuaInStockSelBaseQty": 0,
                //"FQuaInStockBaseQty": 0,
                //"FUnQuaInStockBaseQty": 0,
                //"FProFailSettleSelBaseQty": 0,
                //"FProFailSettleBaseQty": 0,
                //"FMatFailSettleSelBaseQty": 0,
                //"FMatFailSettleBaseQty": 0,
                "\"FDemandType\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FDemandType"]) + "\"," +
                "\"FDemandBillId\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FDemandBillId"]) + "\"," +
                "\"FDemandBillEntryId\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FDemandBillEntryId"]) + "\"," +
                //"FInspectEntryId": 0,
                "\"FConvertType\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FConvertType"]) + "\"," +
                //"FReceiveQualifiedTaxPrice": 0,
                //"FReceiveProFailTaxPrice": 0,
                //"FReceiveMatFailTaxPrice": 0,
                "\"FSendQualifiedTaxPrice\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FSendQualifiedTaxPrice"]) + "\"," +
                "\"FSendProFailTaxPrice\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FSendProFailTaxPrice"]) + "\"," +
                "\"FSendMatFailTaxPrice\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FSendMatFailTaxPrice"]) + "\"," +
                "\"FRateOperQty\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FRateOperQty"]) + "\"," +
                "\"FRateProQty\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FRateProQty"]) + "\"," +
                "\"FRateValQty\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FRateValQty"]) + "\"," +
                //"FPriceList": {"FNUMBER": ""},
                //"FOperStatus": "",
                //"FInstockStatus": "",
                //"FSettleStatus": "",
                //"FMOInStockQty": 0,
                //"FDefectProcessEntryId": 0,
                //"FMRBReviewEntryId": 0,
                //"FTransDirection": "",
                //"FBackwashSrcId": 0
                sJson_MainCustom +
                " \"FBillHead_Link\": [{" +
                    " \"FBillHead_Link_FFlowId\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FBillHead_Link_FFlowId"]) + "\"," +
                    " \"FBillHead_Link_FFlowLineId\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FBillHead_Link_FFlowLineId"]) + "\"," +
                    " \"FBillHead_Link_FRuleId\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FBillHead_Link_FRuleId"]) + "\"," +
                    " \"FBillHead_Link_FSTableId\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FBillHead_Link_FSTableId"]) + "\"," +
                    " \"FBillHead_Link_FSTableName\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FBillHead_Link_FSTableName"]) + "\"," +
                    " \"FBillHead_Link_FSBillId\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FBillHead_Link_FSBillId"]) + "\"," +
                    " \"FBillHead_Link_FSId\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FBillHead_Link_FSId"]) + "\"," +
                    " \"FBillHead_Link_FTransferBaseQtyOld\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FBillHead_Link_FTransferBaseQtyOld"]) + "\"," +
                    " \"FBillHead_Link_FTransferBaseQty\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FBillHead_Link_FTransferBaseQty"]) + "\"" +
                " } ]," +
                " \"FBFLowId\":{\"FID\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FBFLowId"]) + "\"}}}";
                string sJson = sJson_Main;
                //CLOUD金蝶云账号密码登入
                var loginRet = InvokeHelper.LoginUser(HMaker);
                var isSuccess = JObject.Parse(loginRet)["LoginResultType"].Value<int>();
                sRemark = sRemark + " ;获取验证CLOUD账号密码" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:ffff");
                //生成金蝶云单据
                if (isSuccess == 1)
                {
                    string result = InvokeHelper.Save("SFC_OperationTransfer", sJson); //保存
                    sRemark = sRemark + " ;生成CLOUD单据" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:ffff");
                    HReturn = result.ToString();
                    if (HReturn.Contains("\"IsSuccess\":false") == true)
                    {
                        //反序列化json数据
                        var retModel = JsonConvert.DeserializeObject<KingdeeResponse>(HReturn);
                        //接收金蝶报错信息
                        var strErrorMsg = string.Empty;
                        //遍历获取报错信息
                        foreach (var item in retModel.Result.ResponseStatus.Errors)
                        {
                            strErrorMsg += item.Message + "\r\n";
                        };
                        sErrMsg = "生成委外工序发出单失败!金蝶云提示:" + strErrorMsg;
                        LogService.Write("生成委外工序发出单失败!" + HReturn + sJson);   //写入txt文本
                        return false;
                    }
                    else
                    {
                        sRemark = sRemark + sJson;
                        //提交、审核金蝶云单据
                        HReturn = "";
                        string sJson2 = "{\"CreateOrgId\":0,\"Numbers\":[\"" + HBillNo + "\"]}";
                        var result2 = InvokeHelper.Submit("SFC_OperationTransfer", sJson2);    //提交
                        sRemark = sRemark + " ;提交CLOUD单据" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:ffff");
                        var result3 = InvokeHelper.Audit("SFC_OperationTransfer", sJson2);     //审核
                        sRemark = sRemark + " ;审核CLOUD单据" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:ffff");
                        HReturn = result2.ToString() + "," + result3.ToString();
                        if (HReturn.Contains("\"IsSuccess\":false") == true)
                        {
                            //反序列化json数据
                            var retModel = JsonConvert.DeserializeObject<KingdeeResponse>(result3);
                            //接收金蝶报错信息
                            var strErrorMsg = string.Empty;
                            //遍历获取报错信息
                            foreach (var item in retModel.Result.ResponseStatus.Errors)
                            {
                                strErrorMsg += item.Message + "\r\n";
                            };
                            sErrMsg = "生成委外工序发出单成功,审核单据失败!金蝶云提示:" + strErrorMsg;
                            LogService.Write("审核单据失败" + sRemark + HReturn);
                            return true;
                        }
                        else
                        {
                            LogService.Write("生成并审核委外工序发出单成功!" + sRemark);
                            sErrMsg = "生成并审核委外工序发出单成功!单据号为:" + HBillNo;
                            return true;
                        }
                    }
                }
                else
                {
                    sErrMsg = "生成委外工序发出单失败!金蝶云登录失败!";
                    return false;
                }
            }
            catch (Exception e)
            {
                LogService.Write("生成回滚" + e.Message + sRemark);
                sErrMsg = "生成委外工序发出单失败!" + e.Message;
                return false;
            }
        }
        #endregion
    }
}