using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Http;
using WebAPI.Models;
using WebAPI.Service;
using System.Collections.Generic;
using System.Data;
using Newtonsoft.Json.Linq;
using Pub_Class;
using Newtonsoft.Json;
namespace WebAPI.Controllers
{
    public class QC_ManagementController : ApiController
    {
        SQLHelper.ClsCN oCN = new SQLHelper.ClsCN();
        public DAL.ClsQC_PatrolProcCheckBill BillOld = new DAL.ClsQC_PatrolProcCheckBill();
        DataSet ds;
        #region 错误返回方法
        // GET: QC_Management
        public DBUtility.ClsPub.Enum_BillStatus BillStatus;
        private json objJsonResult = new json();
        ///
        ///封装状态码及返回信息的公用方法。
        ///参数:DataSet。
        ///返回值:json。
        /// 
        public object GetObjectJson(DataSet ds)
        {
            try
            {
                List a = new List();
                //添加列名
                foreach (DataColumn col in ds.Tables[0].Columns)
                {
                    Type dataType = col.DataType;
                    string ColmString = "{\"ColmCols\":\"" + col.ColumnName + "\",\"ColmType\":\"" + dataType.Name + "\"}";
                    a.Add(JsonConvert.DeserializeObject(ColmString));//获取到DataColumn列对象的列名
                }
                //if (ds.Tables[0].Rows.Count != 0 || ds != null)
                //{
                objJsonResult.code = "1";
                objJsonResult.count = 1;
                objJsonResult.Message = "Sucess!";
                objJsonResult.data = ds.Tables[0];
                objJsonResult.list = a;
                return objJsonResult;
                //}
                //else
                //{
                //objJsonResult.code = "0";
                //objJsonResult.count = 0;
                //objJsonResult.Message = "无数据";
                //objJsonResult.data = null;
                //return objJsonResult;
                //}
            }
            catch (Exception e)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "没有返回任何记录!" + e.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        ///
        ///统一正确信息方法。
        ///参数:string。
        ///返回值:object。
        /// 
        public object CustomCorrect(DataSet ds)
        {
            if (ds == null || ds.Tables[0].Rows.Count <= 0)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "没有返回任何记录!";
                objJsonResult.data = null;
                return objJsonResult;
            }
            else
            {
                objJsonResult.code = "0";
                objJsonResult.count = 1;
                objJsonResult.Message = "获取信息成功!";
                objJsonResult.data = ds.Tables[0];
                return objJsonResult;
            }
        }
        ///
        ///自定义错误信息方法。
        ///参数:string。
        ///返回值:object。
        /// 
        public object CustomError(string msg)
        {
            objJsonResult.code = "0";
            objJsonResult.count = 0;
            objJsonResult.Message = msg;
            objJsonResult.data = null;
            return objJsonResult;
        }
        #endregion
        #region 查询列表方法
        /// 
        /// 返回检验方案单列表 仅包含主表
        ///  
        /// 
        /// 返回检验方案单列表
        ///  
        /// 
        /// 返回来料检验单列表
        ///  
        /// 
        ///返回首件检验单列表
        ///  
        /// 
        /// 返回巡检记录单列表
        ///  
        /// 
        /// 巡检记录单 审核、反审核
        ///  
        /// 
        /// 巡检记录单 关闭 反关闭 
        ///  
        /// 
        /// 巡检记录单 作废 反作废
        ///  
        /// 
        /// 检验方案获取信息
        ///  
        ///  GetQCCheckProjectDetail(string HID)
        {
            var model = LuBaoSevice.GetCheckProjectDetail(HID);
            return model;
        }
        /// 
        /// 来料检验单获取信息
        ///  
        ///  GetPOStockInCheckDetail(string HID)
        {
            var model = LuBaoSevice.GetPOStockInCheckBillDetail(HID);
            return model;
        }
        /// 
        /// 首件检验单获取信息
        ///  
        ///  GetQC_FirstPieceCheckDetail(string HID)
        {
            var model = LuBaoSevice.GetQC_FirstPieceCheckBillDetail(HID);
            return model;
        }
        /// 
        /// 巡检单获取信息
        ///  
        ///  GetQC_PatrolProcCheckDetail(string HID)
        {
            var model = LuBaoSevice.GetQC_PatrolProcCheckBillDetail(HID);
            return model;
        }
        /// 
        /// 返回检验方案单子表详情
        ///  
        /// 
        /// 返回来料检验单子表详情
        ///  
        /// 
        /// 返回首件检验单子表详情
        ///  
        /// 
        /// 返回巡检单子表详情
        ///  
        ///  MES_QC_CheckProjectListCheckDetai(string HID)
        {
            if (string.IsNullOrEmpty(HID))
                return new ApiResult { code = -1, msg = "ID不能为空" };
            SQLHelper.ClsCN oCN = new SQLHelper.ClsCN();
            var dataSet = oCN.RunProcReturn("select top 1 * from h_v_Gy_QCCheckProjectList_Edit  where hmainid= " + HID + " ", "h_v_Gy_QCCheckProjectList_Edit");
            if (dataSet == null || dataSet.Tables[0].Rows.Count == 0)
                return new ApiResult { code = -1, msg = "不存在检验方案" };
            return new ApiResult { code = 1, msg = "查询成功", data = dataSet };
        }
        #endregion
        #region 检验方案查询
        [Route("QC_Management/MES_QC_CheckProjectListProjectDetaiList")]
        [HttpGet]
        public object MES_QC_CheckProjectListProjectDetaiList(string sWhere,string user)
        {
            DataSet ds;
            try
            {
                SQLHelper.ClsCN oCN = new SQLHelper.ClsCN();
                ds = oCN.RunProcReturn(string.Format(@"select * from h_v_Gy_QCCheckProjectList_Edit where 1=1 " + sWhere), "h_v_Gy_QCCheckProjectList_Edit");
                objJsonResult.code = "1";
                objJsonResult.count = 1;
                objJsonResult.Message = "获取信息成功!";
                objJsonResult.data = ds.Tables[0];
            }
            catch (Exception e)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "没有返回任何记录!" + e.ToString();
                objJsonResult.data = null;
            }
            return objJsonResult;
        }
        #endregion
        #region 检验方案编辑时获取表体数据
        [Route("QC_Management/MES_QC_CheckProjectListProjectDetai")]
        [HttpGet]
        public object MES_QC_CheckProjectListProjectDetai(string HInterID)
        {
            DataSet ds;
            try
            {
                SQLHelper.ClsCN oCN = new SQLHelper.ClsCN();
                ds = oCN.RunProcReturn(string.Format(@"select * from h_v_Gy_QCCheckProjectList_Edit where hinterid='" + HInterID+"'"), "h_v_Gy_QCCheckProjectList_Edit");
                objJsonResult.code = "0";
                objJsonResult.count = 1;
                objJsonResult.Message = "获取信息成功!";
                objJsonResult.data = ds.Tables[0];
            }
            catch (Exception e)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "没有返回任何记录!" + e.ToString();
                objJsonResult.data = null;
            }
            return objJsonResult;
        }
        #endregion
        #region 检验方案保存
        /// 
        /// 保存检验方案
        ///  
        ///  lsmain = new List();
                msg2 = msg2.Replace("\\", "");
                msg2 = msg2.Replace("\n", "");  //\n
                lsmain = oListModels.getObjectByJson_Gy_QCCheckProjectMain(msg2);
                foreach (Model.ClsGy_QCCheckProjectMain oItem in lsmain)
                {
                    //oItem.HMaker = "";
                    UserName = oItem.HMaker;
                    DBUtility.ClsPub.CurUserName = UserName;
                    oItem.HMakeDate = DBUtility.ClsPub.isStrNull(DateTime.Now.ToString("yyyy-MM-dd"));
                    oItem.HYear = DBUtility.ClsPub.isLong(DateTime.Now.Year);
                    oItem.HDate = DBUtility.ClsPub.isDate(DateTime.Now.ToString("yyyy-MM-dd"));
                    oItem.HBillType = "3320";
                    oItem.HBillSubType = "3320";
                    oItem.HBillStatus = 0;
                    oItem.HPeriod = 0;
                    oItem.HMaker = "";
                    oItem.HMainSourceInterID = oItem.HInterID;
                    //oItem.HInterID = DBUtility.ClsPub.CreateBillID_SRMProd("1103", ref DBUtility.ClsPub.sExeReturnInfo);
                    if (DBUtility.ClsPub.isStrNull(oItem.HDate) == "")
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = "保存失败!没有单据日期,无法保存!";
                        objJsonResult.data = 1;
                        return objJsonResult;
                    }
                    oBill.omodel = oItem;
                }
                //表体数据
                //按 },{来拆分数组 //去掉【和】
                msg3 = msg3.Substring(1, msg3.Length - 2);
                msg3 = msg3.Replace("\\", "");
                msg3 = msg3.Replace("\n", "");  //\n
                //msg2 = msg2.Replace("'", "’");
                List ls = new List();
                ls = oListModels.getObjectByJson_ClsGy_QCCheckProjectSub(msg3);
                int i = 0;
                foreach (Model.ClsGy_QCCheckProjectSub oItemSub in ls)
                {
                    oItemSub.HBillNo_bak = oBill.omodel.HBillNo;//单据号(备份,以免内码丢失,找不到对应主表)
                    i++;
                    if (string.IsNullOrWhiteSpace(oItemSub.HBillNo_bak))
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = "保存失败!没备份单据号,无法保存!";
                        objJsonResult.data = 1;
                        return objJsonResult;
                    }
                    oItemSub.HSourceEntryID =0;
                    oItemSub.HSourceInterID =0;
                    oItemSub.HEntryID = i;
                    oItemSub.HEntryCloseDate = DBUtility.ClsPub.isDate(DateTime.Now);
                    oItemSub.HCloseType = false;
                    oItemSub.HSourceBillNo = "";
                    oItemSub.HSourceBillType = "";
                    oItemSub.HRelationQty = 0;
                    oItemSub.HRelationMoney = 0;
                    oItemSub.HCloseMan = "";
                    oItemSub.HDestructInspect = Convert.ToInt32(oItemSub.HDestructInspect);
                    oItemSub.HKeyInspect = Convert.ToInt32(oItemSub.HKeyInspect);
                    oBill.DetailColl.Add(oItemSub);
                }
                //保存
                //保存完毕后处理
                bool bResult;
                if (oBill.omodel.HInterID == 0)
                {
                    bResult = oBill.AddBill(ref DBUtility.ClsPub.sExeReturnInfo);
                }
                else
                {
                    bResult = oBill.ModifyBill(oBill.omodel.HInterID, ref DBUtility.ClsPub.sExeReturnInfo);
                }
                if (bResult)
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 1;
                    objJsonResult.Message = "保存成功!";
                    //WebAPIController.Add_Log("送货单下推", UserName, "生成送货单");
                    objJsonResult.data = 1;
                    return objJsonResult;
                }
                else
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "保存失败!" + DBUtility.ClsPub.sExeReturnInfo;
                    objJsonResult.data = 1;
                    return objJsonResult;
                }
            }
            catch (Exception e)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "保存失败!" + e.ToString();
                objJsonResult.data = 1;
                return objJsonResult;
            }
        }
        #endregion
        #region  检验方案逻辑删除功能
        /// 
        /// 检验方案逻辑删除功能
        ///  
        /// 
        ///  
        /// 
        /// 保存来料检验单
        ///  
        ///  lsmain = new List();
                msg2 = msg2.Replace("\\", "");
                msg2 = msg2.Replace("\n", "");  //\n
                lsmain = oListModels.getObjectByJson_QC_POStockInCheckBillMain(msg2);
                foreach (Model.ClsQC_POStockInCheckBillMain oItem in lsmain)
                {
                    //oItem.HMaker = "";
                    UserName = oItem.HMaker;
                    oItem.HMakeDate = DBUtility.ClsPub.isStrNull(DateTime.Now.ToString("yyyy-MM-dd"));
                    oItem.HYear = DBUtility.ClsPub.isLong(DateTime.Now.Year);
                    oItem.HDate = DBUtility.ClsPub.isDate(DateTime.Now.ToString("yyyy-MM-dd"));
                    oItem.HBillType = "7503";
                    oItem.HBillSubType = "7503";
                    oItem.HBillStatus = 0;
                    oItem.HPeriod = 0;
                    oItem.HMaker = "";
                    oItem.HMainSourceInterID = oItem.HInterID;
                    //oItem.HInterID = DBUtility.ClsPub.CreateBillID_SRMProd("1103", ref DBUtility.ClsPub.sExeReturnInfo);
                    if (DBUtility.ClsPub.isStrNull(oItem.HDate) == "")
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = "保存失败!没有单据日期,无法保存!";
                        objJsonResult.data = 1;
                        return objJsonResult;
                    }
                    oBill.omodel = oItem;
                }
                //表体数据
                //按 },{来拆分数组 //去掉【和】
                msg3 = msg3.Substring(1, msg3.Length - 2);
                msg3 = msg3.Replace("\\", "");
                msg3 = msg3.Replace("\n", "");  //\n
                //msg2 = msg2.Replace("'", "’");
                List ls = new List();
                ls = oListModels.getObjectByJson_QC_POStockInCheckBillSub(msg3);
                int i = 0;
                foreach (Model.ClsQC_POStockInCheckBillSub oItemSub in ls)
                {
                    oItemSub.HBillNo_bak = oBill.omodel.HBillNo;//单据号(备份,以免内码丢失,找不到对应主表)
                    i++;
                    if (string.IsNullOrWhiteSpace(oItemSub.HBillNo_bak))
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = "保存失败!没备份单据号,无法保存!";
                        objJsonResult.data = 1;
                        return objJsonResult;
                    }
                    oItemSub.HSourceEntryID = 0;
                    oItemSub.HSourceInterID = 0;
                    oItemSub.HEntryID = i;
                    // DBUtility.ClsPub.isDate(DateTime.Now);
                    oItemSub.HEntryCloseDate = DBUtility.ClsPub.isDate(DateTime.Now);
                    oItemSub.HCloseType = false;
                    oItemSub.HSourceBillNo = "";
                    oItemSub.HSourceBillType = "";
                    oItemSub.HRelationQty = 0;
                    oItemSub.HRelationMoney = 0;
                    oItemSub.HCloseMan = "";
                    oItemSub.HRemark = "";
                    oItemSub.HProcCheckEmp = oBill.omodel.HFirstCheckEmp;//检测员
                    oBill.DetailColl.Add(oItemSub);
                }
                //保存
                //保存完毕后处理
                bool bResult;
                if (oBill.omodel.HInterID == 0)
                {
                    // bResult = oBill.AddBill(ref DBUtility.ClsPub.sExeReturnInfo);
                    bResult = oBill.AddBill(ref DBUtility.ClsPub.sExeReturnInfo);
                }
                else
                {
                    bResult = oBill.ModifyBill(oBill.omodel.HInterID, ref DBUtility.ClsPub.sExeReturnInfo);
                }
                if (bResult)
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 1;
                    objJsonResult.Message = "保存成功!";
                    //WebAPIController.Add_Log("送货单下推", UserName, "生成送货单");
                    objJsonResult.data = 1;
                    return objJsonResult;
                }
                else
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "保存失败!" + DBUtility.ClsPub.sExeReturnInfo;
                    objJsonResult.data = 1;
                    return objJsonResult;
                }
            }
            catch (Exception e)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "保存失败!" + e.ToString();
                objJsonResult.data = 1;
                return objJsonResult;
            }
        }
        /// 
        /// 来料检验逻辑删除功能
        ///  
        /// 
        /// 保存首件检验单
        ///  
        ///  lsmain = new List();
                msg2 = msg2.Replace("\\", "");
                msg2 = msg2.Replace("\n", "");  //\n
                lsmain = oListModels.getObjectByJson_QC_FirstPieceCheckBillMain(msg2);
                foreach (Model.ClsQC_FirstPieceCheckBillMain oItem in lsmain)
                {
                    //oItem.HMaker = "";
                    UserName = oItem.HMaker;
                    oItem.HMakeDate = DBUtility.ClsPub.isStrNull(DateTime.Now.ToString("yyyy-MM-dd"));
                    oItem.HYear = DBUtility.ClsPub.isLong(DateTime.Now.Year);
                    oItem.HDate = DBUtility.ClsPub.isDate(DateTime.Now.ToString("yyyy-MM-dd"));
                    oItem.HBillType = "7505";
                    oItem.HBillSubType = "7505";
                    oItem.HBillStatus = 0;
                    oItem.HPeriod = 0;
                    oItem.HMaker = "";
                    oItem.HMainSourceInterID = oItem.HInterID;
                    //oItem.HInterID = DBUtility.ClsPub.CreateBillID_SRMProd("1103", ref DBUtility.ClsPub.sExeReturnInfo);
                    if (DBUtility.ClsPub.isStrNull(oItem.HDate) == "")
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = "保存失败!没有单据日期,无法保存!";
                        objJsonResult.data = 1;
                        return objJsonResult;
                    }
                    oBill.omodel = oItem;
                }
                //表体数据
                //按 },{来拆分数组 //去掉【和】
                msg3 = msg3.Substring(1, msg3.Length - 2);
                msg3 = msg3.Replace("\\", "");
                msg3 = msg3.Replace("\n", "");  //\n
                //msg2 = msg2.Replace("'", "’");
                List ls = new List();
                ls = oListModels.getObjectByJson_QC_FirstPieceCheckBillSub(msg3);
                int i = 0;
                foreach (Model.ClsQC_FirstPieceCheckBillSub oItemSub in ls)
                {
                    oItemSub.HBillNo_bak = oBill.omodel.HBillNo;//单据号(备份,以免内码丢失,找不到对应主表)
                    i++;
                    if (string.IsNullOrWhiteSpace(oItemSub.HBillNo_bak))
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = "保存失败!没备份单据号,无法保存!";
                        objJsonResult.data = 1;
                        return objJsonResult;
                    }
                    oItemSub.HSourceEntryID = 0;
                    oItemSub.HSourceInterID = 0;
                    oItemSub.HEntryID = i;
                    // DBUtility.ClsPub.isDate(DateTime.Now);
                    oItemSub.HEntryCloseDate = DBUtility.ClsPub.isDate(DateTime.Now);
                    oItemSub.HCloseType = false;
                    oItemSub.HSourceBillNo = "";
                    oItemSub.HSourceBillType = "";
                    oItemSub.HRelationQty = 0;
                    oItemSub.HRelationMoney = 0;
                    oItemSub.HCloseMan = "";
                    oItemSub.HRemark = "";
                    oBill.DetailColl.Add(oItemSub);
                }
                //保存
                //保存完毕后处理
                bool bResult;
                if (oBill.omodel.HInterID == 0)
                {
                    // bResult = oBill.AddBill(ref DBUtility.ClsPub.sExeReturnInfo);
                    bResult = oBill.AddBill(ref DBUtility.ClsPub.sExeReturnInfo);
                }
                else
                {
                    bResult = oBill.ModifyBill(oBill.omodel.HInterID, ref DBUtility.ClsPub.sExeReturnInfo);
                }
                if (bResult)
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 1;
                    objJsonResult.Message = "保存成功!";
                    //WebAPIController.Add_Log("送货单下推", UserName, "生成送货单");
                    objJsonResult.data = 1;
                    return objJsonResult;
                }
                else
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "保存失败!" + DBUtility.ClsPub.sExeReturnInfo;
                    objJsonResult.data = 1;
                    return objJsonResult;
                }
            }
            catch (Exception e)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "保存失败!" + e.ToString();
                objJsonResult.data = 1;
                return objJsonResult;
            }
        }
        #region [伪删除模式]
        ///// 
        ///// 首件检验逻辑删除功能
        /////  
        ///// 
        /// 保存巡检单
        ///  
        ///  lsmain = new List();
                msg2 = msg2.Replace("\\", "");
                msg2 = msg2.Replace("\n", "");  //\n
                lsmain = oListModels.getObjectByJson_QC_PatrolProcCheckBillMain(msg2);
                foreach (Model.ClsQC_PatrolProcCheckBillMain oItem in lsmain)
                {
                    //oItem.HMaker = "";
                    UserName = oItem.HMaker;
                    oItem.HMakeDate = DBUtility.ClsPub.isStrNull(DateTime.Now.ToString("yyyy-MM-dd"));
                    oItem.HYear = DBUtility.ClsPub.isLong(DateTime.Now.Year);
                    oItem.HDate = DBUtility.ClsPub.isDate(DateTime.Now.ToString("yyyy-MM-dd"));
                    oItem.HBillType = "7506";
                    oItem.HBillSubType = "7506";
                    oItem.HBillStatus = 0;
                    oItem.HPeriod = 0;
                    oItem.HMaker = user;
                    oItem.HMainSourceInterID = oItem.HInterID;
                    //oItem.HInterID = DBUtility.ClsPub.CreateBillID_SRMProd("1103", ref DBUtility.ClsPub.sExeReturnInfo);
                    if (DBUtility.ClsPub.isStrNull(oItem.HDate) == "")
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = "保存失败!没有单据日期,无法保存!";
                        objJsonResult.data = 1;
                        return objJsonResult;
                    }
                    oBill.omodel = oItem;
                }
                //表体数据
                //按 },{来拆分数组 //去掉【和】
                msg3 = msg3.Substring(1, msg3.Length - 2);
                msg3 = msg3.Replace("\\", "");
                msg3 = msg3.Replace("\n", "");  //\n
                //msg2 = msg2.Replace("'", "’");
                List ls = new List();
                ls = oListModels.getObjectByJson_QC_PatrolProcCheckBillSub(msg3);
                int i = 0;
                foreach (Model.ClsQC_PatrolProcCheckBillSub oItemSub in ls)
                {
                    oItemSub.HBillNo_bak = oBill.omodel.HBillNo;//单据号(备份,以免内码丢失,找不到对应主表)
                    i++;
                    if (string.IsNullOrWhiteSpace(oItemSub.HBillNo_bak))
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = "保存失败!没备份单据号,无法保存!";
                        objJsonResult.data = 1;
                        return objJsonResult;
                    }
                    oItemSub.HSourceEntryID = 0;
                    oItemSub.HSourceInterID = 0;
                    oItemSub.HEntryID = i;
                    // DBUtility.ClsPub.isDate(DateTime.Now);
                    oItemSub.HEntryCloseDate = DBUtility.ClsPub.isDate(DateTime.Now);
                    oItemSub.HCloseType = false;
                    oItemSub.HSourceBillNo = "";
                    oItemSub.HSourceBillType = "";
                    oItemSub.HRelationQty = 0;
                    oItemSub.HRelationMoney = 0;
                    oItemSub.HCloseMan = "";
                    //oItemSub.HRemark = "";
                    oBill.DetailColl.Add(oItemSub);
                }
                badmsg = badmsg.Substring(1, badmsg.Length - 2);
                badmsg = badmsg.Replace("\\", "");
                badmsg = badmsg.Replace("\n", "");  //\n
                List bs = new List();
                bs = oListModels.getObjectByJson_ClsQC_PatrolProcCheckBillSub_BadReason(badmsg);
                int j = 0;
                foreach (Model.ClsQC_PatrolProcCheckBillSub_BadReason badSub in bs)
                {
                    badSub.HBillNo_bak = oBill.omodel.HBillNo;//单据号(备份,以免内码丢失,找不到对应主表)
                    j++;
                    if (string.IsNullOrWhiteSpace(badSub.HBillNo_bak))
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = "保存失败!没备份单据号,无法保存!";
                        objJsonResult.data = 1;
                        return objJsonResult;
                    }
                    badSub.HInterID = oBill.omodel.HInterID;
                    badSub.HEntryID = j;
                    badSub.HSEQ = j;             
                    oBill.DetailColl_Bad.Add(badSub);
                }
                //保存
                //保存完毕后处理
                bool bResult;
                if (oBill.omodel.HInterID == 0)
                {
                    // bResult = oBill.AddBill(ref DBUtility.ClsPub.sExeReturnInfo);
                    bResult = oBill.AddBill(ref DBUtility.ClsPub.sExeReturnInfo);
                }
                else
                {
                    bResult = oBill.ModifyBill(oBill.omodel.HInterID, ref DBUtility.ClsPub.sExeReturnInfo);
                }
                if (bResult)
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 1;
                    objJsonResult.Message = "保存成功!";
                    //WebAPIController.Add_Log("送货单下推", UserName, "生成送货单");
                    objJsonResult.data = 1;
                    return objJsonResult;
                }
                else
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "保存失败!" + DBUtility.ClsPub.sExeReturnInfo;
                    objJsonResult.data = 1;
                    return objJsonResult;
                }
            }
            catch (Exception e)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "保存失败!" + e.ToString();
                objJsonResult.data = 1;
                return objJsonResult;
            }
        }
        /// 
        /// 巡检逻辑删除功能
        ///  
        ///