zzr99
2022-06-17 0237be9be4d9f9cb950e0c98ab04220eac866359
WebAPI/Controllers/Sc_ProcessMangementController.cs
@@ -1,4 +1,5 @@
using Newtonsoft.Json.Linq;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using Pub_Class;
using System;
using System.Collections;
@@ -6,6 +7,7 @@
using System.Data;
using System.Data.SqlClient;
using System.Web.Http;
using WebAPI.DLL;
using WebAPI.Models;
using WebAPI.Service;
@@ -17,6 +19,10 @@
        private json objJsonResult = new json();
        SQLHelper.ClsCN oCN = new SQLHelper.ClsCN();
        DataSet ds;
        ///<summary>
        ///封装状态码及返回信息的公用方法。
        ///参数:DataSet。
@@ -26,22 +32,22 @@
        {
            try
            {
                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;
                }
                //if (ds.Tables[0].Rows.Count != 0 || 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 = null;
                //return objJsonResult;
                //}
            }
            catch (Exception e)
            {
@@ -92,6 +98,200 @@
            return objJsonResult;
        }
        #region 工序汇报入库
        /// <summary>
        /// 获取工序汇报入库单列表
        /// </summary>
        /// <param name="sWhere"></param>
        /// <param name="user"></param>
        /// <returns></returns>
        [Route("Sc_ProcessMangement/Get_ProcessReportOverList")]
        [HttpGet]
        public object Get_ProcessReportOverList(string sWhere, string user)
        {
            try
            {
                //判断是否有查询权限
                if (!DBUtility.ClsPub.Security_Log("Cj_StationOutBill_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_StationOutBillList_LastProc  order by hmainid desc", "h_v_MES_StationOutBillList_LastProc");
                }
                else
                {
                    string sql1 = "select * from h_v_MES_StationOutBillList_LastProc where 1 = 1 ";
                    string sql = sql1 + sWhere + "  order by hmainid desc";
                    ds = oCN.RunProcReturn(sql, "h_v_MES_StationOutBillList_LastProc");
                }
                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;
            }
        }
        /// <summary>
        /// 入库——生产汇报单
        /// </summary>
        /// <param name="InterID">工序汇报单主ID</param>
        /// <returns></returns>
        [Route("Sc_ProcessMangement/SaveICMOReportBill")]
        [HttpGet]
        public object SaveICMOReportBill(string InterID, string user, string BillNo)
        {
            try
            {
                //获取生产汇报单最大InterID和单据号
                Int64 HInterID = DBUtility.ClsPub.CreateBillID("3711", ref DBUtility.ClsPub.sExeReturnInfo);
                string HBillNo = DBUtility.ClsPub.CreateBillCode("3711", ref DBUtility.ClsPub.sExeReturnInfo, true);
                //根据工序汇报单主ID获取工序汇报入库单的数据
                DataSet ds = oCN.RunProcReturn("select * from h_v_MES_StationOutBillList_LastProc where HInterID=" + InterID, "h_v_MES_StationOutBillList_LastProc");
                DataRow dr = ds.Tables[0].Rows[0];
                //保存
                oCN.BeginTran();
                //生产汇报单主表
                oCN.RunProc("Insert Into Sc_ICMOReportBillMain   " +
                "(HBillType,HBillSubType,HInterID,HBillNo,HDate,HMaker,HMakeDate,HBillStatus,HChecker,HCheckDate" +
                ",HYear,HPeriod,HRemark,HEmpID,HEmpNumber" +
                ",HGroupID,HDeptID,HDeptNumber" +
                ",HMainSourceBillNo,HMainSourceInterID,HMainSourceEntryID,HMainSourceBillType" +
                ") " +
                " values('3711','3711'," + HInterID.ToString() + ",'" + HBillNo + "',getdate(),'" + user + "',getdate(),2,'" + user + "',getdate()" +
                ",DATENAME(YEAR,GETDATE()),0,'','" + dr["HEmpID"].ToString() + "','" + dr["操作员代码"].ToString() +
                "','" + dr["HGroupID"].ToString() + "',0,''" +
                ",'" + BillNo.ToString() + "'," + InterID.ToString() + ", 0,'3791'" +
                ") ");
                //生产汇报单子表
                oCN.RunProc("Insert into Sc_ICMOReportBillSub " +
                      " (HInterID,HEntryID,HMaterID,HMaterNumber" +
                      ",HQty,HUnitID,HUnitNumber,HTimes,HSourceID" +
                      ",HQtyMust,HWorkerID,HWorkerNumber,HBadCount,HWasterQty," +
                      "HCloseMan,HCloseType,HRemark," +
                      "HSourceInterID,HSourceEntryID,HSourceBillNo,HSourceBillType,HRelationQty,HRelationMoney" +
                      ",HSeOrderInterID,HSeOrderEntryID,HSeOrderBillNo" +
                      ",HICMOInterID,HICMOBillNo,HBarCode" +
                      ") values("
                      + HInterID.ToString() + ",1," + dr["HMaterID"].ToString() + ",'" + dr["产品代码"].ToString() + "'" +
                      "," + dr["合格数量"].ToString() + ",0,'',0,0" +
                      "," + dr["接收数量"].ToString() + "," + dr["HEmpID"].ToString() + ",'" + dr["操作员代码"].ToString() + "'," + dr["不良数量"].ToString() + "," + dr["报废数量"].ToString() +
                      ",'',0,''" +
                      "," + InterID.ToString() + ",0,'" + BillNo.ToString() + "','3791',0,0" +
                      ",0,0,''" +
                      "," + dr["HICMOInterID"].ToString() + ",'" + dr["任务单"].ToString() + "',''" +
                      ") ");
                //同步金蝶
                //访问金蝶
                var loginRet = InvokeHelper.Login();
                var isSuccess = JObject.Parse(loginRet)["LoginResultType"].Value<int>();
                if (isSuccess == 0)
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "操作失败,金蝶账号登录异常。" + loginRet;
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                //根据任务单查找到金蝶的生产订单
                DataSet ds1 = oCN.RunProcReturn("SELECT * FROM AIS20210811135644..T_PRD_MO where FID=(select HERPInterID from Sc_ICMOBillMain where HBillNo='" + dr["任务单"].ToString() + "')", "AIS20210811135644..T_PRD_MO");
                DataRow dr1 = ds1.Tables[0].Rows[0];
                JObject model = new JObject();
                model.Add("FBillType", new JObject() { ["Fnumber"] = "50fa7c2eda7947b89fab5431bf25d48e" }); //单据类型1
                model.Add("FPrdOrgId", new JObject() { ["Fnumber"] = dr1["FPrdOrgNUMBER"].ToString() }); //生产组织1
                model.Add("FDate", DateTime.Now.ToString("yyyy-MM-dd")); //单据日期1
                JArray Fentity = new JArray();
                foreach (DataRow item in ds.Tables[0].Rows)
                {
                    JObject FentityModel = new JObject();
                    FentityModel.Add("FReportType", "BD_OwnerOrg");//生产汇报类型
                    FentityModel.Add("FTimeUnitId", "BD_OwnerOrg");//时间单位
                    FentityModel.Add("FWorkshipId", new JObject() { ["Fnumber"] = item["FWorkShopID"].ToString() }); //  生产车间
                    FentityModel.Add("FStandHourUnitId", new JObject() { ["Fnumber"] = item["FUNITNUMBER"].ToString() }); // 单位标准工时单位
                    FentityModel.Add("FMaterialId", new JObject() { ["Fnumber"] = item["产品代码"].ToString() }); // 物料编码
                    FentityModel.Add("FFinishQty", item["接收数量"].ToString());//完成数量1
                    FentityModel.Add("FQuaQty", item["合格数量"].ToString());//合格数量1
                    FentityModel.Add("FOwnerID", new JObject() { ["Fnumber"] = item["FPURCHASEORGNUMBER"].ToString() });//货主
                    FentityModel.Add("FSrcId", item["FID"].ToString());//源单内码
                    FentityModel.Add("FSRCFORMID", "PUR_PurchaseOrder");//源单类型
                    FentityModel.Add("FSrcBillNo", item["FBILLNO"].ToString());//源单单号
                    FentityModel.Add("FSRCENTRYID", item["FENTRYID"].ToString());//源单分录内码
                    FentityModel.Add("FORDERBILLNO", item["FBILLNO"].ToString());//源单单号
                    FentityModel.Add("FPOORDERENTRYID", item["FENTRYID"].ToString());//源单分录内码
                    FentityModel.Add("FTLId", item["HID"].ToString());//提料源单内码
                    FentityModel.Add("FTLentryId", item["HENTRYID"].ToString());//提料源单分录内码
                    FentityModel.Add("FTLOrderNo", item["HBILLNO"].ToString());//提料源单分录内码
                    FentityModel.Add("FPrice", item["FPRICE"].ToString());//单价
                    FentityModel.Add("FTaxPrice", item["FTAXPRICE"].ToString());//含税单价
                    FentityModel.Add("FEntryTaxRate", item["FTAXRATE"].ToString());//税率
                    FentityModel.Add("F_QIMB_Text", item["FXQD"].ToString());//需求单号
                    //JArray Fentity2 = new JArray();
                    //JObject FentityModel2 = new JObject();
                    //FentityModel2.Add("FDetailEntity_Link_FRULEID", "PUR_PurchaseOrder-PUR_ReceiveBill");
                    //FentityModel2.Add("FDetailEntity_Link_FSTableName", "t_PUR_POOrderEntry");
                    //FentityModel2.Add("FDetailEntity_Link_FSBillId", item["FID"].ToString());
                    //FentityModel2.Add("FDetailEntity_Link_FSId", item["FEntryID"].ToString());
                    //Fentity2.Add(FentityModel2);
                    //FentityModel.Add("FDetailEntity_Link", Fentity2);
                    //Fentity.Add(FentityModel);
                }
                model.Add("FDetailEntity", Fentity); //明细信息
                JObject jsonRoot = new JObject()
                {
                    ["Creator"] = "",
                    ["NeedUpDateFields"] = new JArray(),
                    ["NeedReturnFields"] = new JArray(),
                    ["IsDeleteEntry"] = "false",
                    ["SubSystemId"] = "",
                    ["IsVerifyBaseDataField"] = "false",
                    //["IsAutoSubmitAndAudit"] = true,//自动调用提交和审核功能
                    ["Model"] = model
                };
                string result = InvokeHelper.Submit("PRD_PPBOM", JsonConvert.SerializeObject(json));
                //判断审核是否成功
                if (JObject.Parse(result)["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToUpper() != "TRUE")
                {
                    oCN.RollBack();
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = $"工序汇报入库单同步金蝶云失败!单号:{dr["单据号"].ToString()}" + result;
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                oCN.Commit();
            }
            catch (Exception e)
            {
                oCN.RollBack();
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "Exception!" + e.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        #endregion
        /// <summary>
        /// 返回生产汇报单列表
        ///参数:string sql。
@@ -99,20 +299,30 @@
        /// </summary>
        [Route("Sc_ProcessMangement/MES_Sc_ProcessReportList_Json")]
        [HttpGet]
        public object MES_Sc_ProcessReportList_Json(string sWhere)
        public object MES_Sc_ProcessReportList_Json(string sWhere,string user)
        {
            DataSet ds;
            try
            {
                //判断是否有查询权限
                if (!DBUtility.ClsPub.Security_Log("Sc_ICMOReportBillQuery", 1, false, user))
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "无权限查询!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                SQLHelper.ClsCN oCN = new SQLHelper.ClsCN();
                if (sWhere == null || sWhere.Equals(""))
                {
                    ds = oCN.RunProcReturn("select top 500 * from h_v_Sc_ProcessReportList ", "h_v_Sc_ProcessReportList");
                    ds = oCN.RunProcReturn("select top 500 * from h_v_Sc_ProcessReportList order by hmainid desc", "h_v_Sc_ProcessReportList");
                }
                else
                {
                    string sql1 = "select * from h_v_Sc_ProcessReportList where 1 = 1 ";
                    string sql = sql1 + sWhere;
                    string sql = sql1 + sWhere+ " order by hmainid desc";
                    ds = oCN.RunProcReturn(sql, "h_v_Sc_ProcessReportList");
                }
            }
@@ -128,27 +338,83 @@
        }
        /// <summary>
        /// 返回生产工序计划单列表
        /// 返回生产汇报单主表详情信息
        ///参数:string sql。
        ///返回值:object。
        /// </summary>
        [Route("Sc_ProcessMangement/MES_Sc_ProcessPlanMain_Json")]
        [Route("Sc_ProcessMangement/MES_DetailSc_ProcessReportList_Json")]
        [HttpGet]
        public object MES_Sc_ProcessPlanMain_Json(string sWhere)
        public object MES_DetailSc_ProcessReportList_Json(int HInterID)
        {
            DataSet ds;
            try
            {
                SQLHelper.ClsCN oCN = new SQLHelper.ClsCN();
                if (sWhere == null || sWhere.Equals(""))
                if (HInterID<=0)
                {
                    ds = oCN.RunProcReturn("select top 500 * from h_v_Sc_ProcessPlanList ", "h_v_Sc_ProcessPlanList");
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "HInterID小于0!" ;
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                else
                {
                    string sql1 = "select * from h_v_Sc_ProcessPlanList where 1 = 1 ";
                    string sql = sql1 + sWhere;
                    ds = oCN.RunProcReturn(sql, "h_v_Sc_ProcessPlanList");
                    string sql1 = @"select s1.HInterID,s1.HBillNo,s1.HDeptID,s2.HName,s1.HDate,s1.HPlanQty,s1.HICMOBillNo,s1.HRemark,s2.HNumber
,s1.HMaker,s1.HMakeDate,s1.HChecker,s1.HCheckDate,s1.HUpDater,s1.HUpDateDate,s1.HCloseMan,s1.HCloseDate
from Sc_ProcessReportMain s1
    inner join Gy_Department s2 on s1.HDeptID=s2.HItemID and s1.HInterID=" + HInterID;
                    ds = oCN.RunProcReturn(sql1, "Sc_ProcessReportMain");
                }
            }
            catch (Exception e)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "没有返回任何记录!" + e.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
            return GetObjectJson(ds);
        }
        /// <summary>
        /// 返回生产派工单关联详情信息
        ///参数:string sql。
        ///返回值:object。
        /// </summary>
        [Route("Sc_ProcessMangement/MES_h_v_Sc_ProcessSendWorkList_Json")]
        [HttpGet]
        public object MES_h_v_Sc_ProcessSendWorkList_Json(int HInterID)
        {
            DataSet ds;
            try
            {
                SQLHelper.ClsCN oCN = new SQLHelper.ClsCN();
                if (HInterID <= 0)
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "HInterID小于0!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                else
                {
                    string sql1 =@"select [hmainid], [日期], [单据号], [HDeptID], [部门代码], [部门], [HMaterID], [物料代码], [物料名称], [规格型号], [HUnitID], [计量单位代码], [计量单位], [HprocID],
[工序代码], [工序], [HGroupID], [班组代码], [班组名称], [HSourceID], [资源代码], [生产资源], [HWorkerID], [职员代码], [职员], [hsubid], [数量], [计划开工日期],
[计划完工日期], [计划工时], [表体备注], [HICMOInterID], [生产任务单号], [HSeOrderInterID], [销售订单号], [表头备注], [制单人], [制单日期], [审核人], [审核日期], [修改人],
[修改日期], [关闭人], [关闭日期], [作废人], [作废日期], [源单主内码], [源单子内码], [源单单号], [源单类型], [行关闭人], [HBillType], [HQtyDecimal], [HPriceDecimal]
from h_v_Sc_ProcessSendWorkList
where hmainid=(select HSourceID from Sc_ProcessReportSub where HInterID="+HInterID+")";
                    ds = oCN.RunProcReturn(sql1, "h_v_Sc_ProcessSendWorkList");
                }
            }
            catch (Exception e)
@@ -162,27 +428,495 @@
            return GetObjectJson(ds);
        }
       /// <summary>
       /// 返回生产工序派工单列表
       /// </summary>
       /// <param name="sWhere"></param>
       /// <returns></returns>
        [Route("Sc_ProcessMangement/MES_Sc_ProcessSendWorkMain_Json")]
        #region 工序计划单
        List<ClsSc_ProcessPlanSub> DetailColl = new List<ClsSc_ProcessPlanSub>();
        ClsSc_ProcessPlanMain omodel = new ClsSc_ProcessPlanMain();
        ClsSc_ProcessPlan oBill = new ClsSc_ProcessPlan();
        #region 工序计划单列表
        /// <summary>
        /// 返回生产工序计划单列表
        ///参数:string sql。
        ///返回值:object。
        /// </summary>
        [Route("Sc_ProcessMangement/MES_Sc_ProcessPlanMain_Json")]
        [HttpGet]
        public object MES_Sc_ProcessSendWorkMain_Json(string sWhere)
        public object MES_Sc_ProcessPlanMain_Json(string sWhere,string user)
        {
            DataSet ds;
            try
            {
                if (!DBUtility.ClsPub.Security_Log("Sc_ProcessPlan_Query", 1, false, user))
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "无权限查询!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                SQLHelper.ClsCN oCN = new SQLHelper.ClsCN();
                if (sWhere == null || sWhere.Equals(""))
                {
                    ds = oCN.RunProcReturn("select top 500 * from h_v_Sc_ProcessSendWorkList ", "h_v_Sc_ProcessSendWorkList");
                    ds = oCN.RunProcReturn("select top 500 * from h_v_Sc_ProcessPlanList order by hmainid desc ", "h_v_Sc_ProcessPlanList");
                }
                else
                {
                    string sql1 = "select * from h_v_Sc_ProcessPlanList where 1 = 1 ";
                    string sql = sql1 + sWhere+ " order by hmainid desc ";
                    ds = oCN.RunProcReturn(sql, "h_v_Sc_ProcessPlanList");
                }
            }
            catch (Exception e)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "没有返回任何记录!" + e.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
            return GetObjectJson(ds);
        }
        #endregion
        #region 工序计划单 保存/编辑
        //工序计划单  保存/编辑
        [Route("Sc_ProcessMangement/AddBill")]
        [HttpPost]
        public object AddBill([FromBody] JObject sMainSub)
        {
            var _value = sMainSub["sMainSub"].ToString();
            string msg1 = _value.ToString();
            oCN.BeginTran();
            //保存主表
            objJsonResult = AddBillMain(msg1);
            if (objJsonResult.code == "0")
            {
                oCN.RollBack();
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = objJsonResult.Message;
                objJsonResult.data = null;
                return objJsonResult;
            }
            oCN.Commit();
            objJsonResult.code = "1";
            objJsonResult.count = 1;
            objJsonResult.Message = "新增单据成功!";
            objJsonResult.data = null;
            return objJsonResult;
        }
        public json AddBillMain(string msg1)
        {
            string[] sArray = msg1.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries);
            string msg2 = sArray[0].ToString();
            string msg3 = sArray[1].ToString();
            int hentryid = int.Parse(sArray[2].ToString());//子表的顺序id
            int OperationType = int.Parse(sArray[3].ToString());//数据类型 1添加 3修改
            string user = sArray[4].ToString();//用户名
            try
            {
                //判断是否有编辑权限
                if (!DBUtility.ClsPub.Security_Log("Sc_ProcessPlan_Edit", 1, false, user))
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "无权限编辑!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                omodel = Newtonsoft.Json.JsonConvert.DeserializeObject<ClsSc_ProcessPlanMain>(msg2);
                string BillType = "3715";
                if (OperationType == 1)//新增
                {
                    //主表
                    oCN.RunProc("Insert Into Sc_ProcessPlanMain   " +
                    "(HYear,HPeriod,HBillType,HBillSubType,HInterID" +
                    ",HDate,HBillNo,HBillStatus,HCheckItemNowID,HCheckItemNextID" +
                    ",HICMOInterID,HICMOBillNo,HMaterID,HMaterNumber,HUnitID" +
                    ",HUnitNumber,HPlanQty,HPlanBeginDate,HPlanEndDate,HExplanation" +
                    ",HRemark,HInnerBillNo,HMaker,HMakeDate" +
                    ") " +
                    " values(" + omodel.HYear.ToString() + "," + omodel.HPeriod.ToString() + ",'" + BillType + "','" + BillType + "'," + omodel.HInterID.ToString() +
                    ",'" + omodel.HDate.ToShortDateString() + "','" + omodel.HBillNo + "'," + (omodel.HBillStatus=1) + "," + omodel.HCheckItemNowID.ToString() + "," + omodel.HCheckItemNextID.ToString() +
                    "," + omodel.HICMOInterID.ToString() + ",'" + omodel.HICMOBillNo + "'," + omodel.HMaterID.ToString() + ",'" + omodel.HMaterNumber + "'," + omodel.HUnitID.ToString() +
                    ",'" + omodel.HUnitNumber + "'," + omodel.HPlanQty.ToString() + ",'" + omodel.HPlanBeginDate.ToShortDateString() + "','" + omodel.HPlanEndDate.ToShortDateString() + "','" + omodel.HExplanation + "'" +
                    ",'" + omodel.HRemark + "','" + omodel.HInnerBillNo + "','" + omodel.HMaker + "',getdate()" +
                    ") ");
                }
                else if (OperationType == 3)
                {
                    //修改
                    oCN.RunProc("UpDate Sc_ProcessPlanMain set  " +
                   " HYear=" + omodel.HYear.ToString() +
                   ",HPeriod=" + omodel.HPeriod.ToString() +
                   //",HInterID=" + omodel.HInterID.ToString() +
                   ",HDate='" + omodel.HDate.ToShortDateString() + "'" +
                   //",HBillNo='" + omodel.HBillNo + "'" +
                   ",HBillStatus=" + omodel.HBillStatus.ToString() +
                   ",HCheckItemNowID=" + omodel.HCheckItemNowID.ToString() +
                   ",HCheckItemNextID=" + omodel.HCheckItemNextID.ToString() +
                   ",HICMOInterID=" + omodel.HICMOInterID.ToString() +
                   ",HICMOBillNo='" + omodel.HICMOBillNo + "'" +
                   ",HMaterID=" + omodel.HMaterID.ToString() +
                   ",HMaterNumber='" + omodel.HMaterNumber + "'" +
                   ",HUnitID=" + omodel.HUnitID.ToString() +
                   ",HUnitNumber='" + omodel.HUnitNumber + "'" +
                   ",HPlanQty=" + omodel.HPlanQty.ToString() +
                   ",HPlanBeginDate='" + omodel.HPlanBeginDate.ToShortDateString() + "'" +
                   ",HPlanEndDate='" + omodel.HPlanEndDate.ToShortDateString() + "'" +
                   ",HExplanation='" + omodel.HExplanation + "'" +
                   ",HRemark='" + omodel.HRemark + "'" +
                   ",HInnerBillNo='" + omodel.HInnerBillNo + "'" +
                   ",HUpDater='" + omodel.HUpDater + "'" +
                   ",HUpDateDate=getdate()" +
                   " where HInterID=" + omodel.HInterID.ToString());
                    //删除子表
                    oCN.RunProc("Delete From Sc_ProcessPlanSub where HInterID = " + omodel.HInterID.ToString()+ " and hentryid="+ hentryid);
                }
                //保存子表
                objJsonResult = AddBillSub(msg3, hentryid);
                if (objJsonResult.code == "0")
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = objJsonResult.Message;
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                objJsonResult.code = "1";
                objJsonResult.count = 1;
                objJsonResult.Message = null;
                objJsonResult.data = null;
                return objJsonResult;
            }
            catch (Exception e)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "Exception!" + e.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        public json AddBillSub(string msg3, int hentryid)
        {
            DetailColl = Newtonsoft.Json.JsonConvert.DeserializeObject<List<ClsSc_ProcessPlanSub>>(msg3);
            int i = 1;
            //插入子表
            foreach (Models.ClsSc_ProcessPlanSub oSub in DetailColl)
            {
                oCN.RunProc("Insert into Sc_ProcessPlanSub " +
               " (HInterID,HEntryID,HBillNo,HProcNo,HProcID,HWorkingQty" +
               ",HProcNumber,HWorkRemark,HCenterID,HDeptID,HDeptNumber" +
               ",HGroupID,HGroupNumber,HWorkerID,HWorkerNumber,HSourceID" +
               ",HQty,HTimeUnit,HPlanWorkTimes,HPlanBeginDate,HPlanEndDate" +
               ",HICMOInterID,HICMOBillNo,HSeOrderInterID,HSeOrderEntryID,HSeOrderBillNo" +
               ",HCloseMan,HCloseType,HRemark,HSourceInterID,HSourceEntryID" +
               ",HSourceBillNo,HSourceBillType,HRelationQty,HRelationMoney" +
               ",HBeginDayQty,HBeginFixQty,HFixWorkDays,HTrunWorkDays,HReadyTimes" +
               ",HReadyTime,HQueueTime,HMoveTime,HBatchNo" +
               ") values("
               + omodel.HInterID.ToString() + "," +(hentryid==-1?i: hentryid) + ",'" + oSub.HBillNo + "'," + oSub.HProcNo.ToString() + "," + oSub.HProcID.ToString() + "," + oSub.HWorkingQty.ToString() +
               ",'" + oSub.HProcNumber + "','" + oSub.HWorkRemark + "'," + oSub.HCenterID.ToString() + "," + oSub.HDeptID.ToString() + ",'" + oSub.HDeptNumber + "'" +
               "," + oSub.HGroupID.ToString() + ",'" + oSub.HGroupNumber + "'," + oSub.HWorkerID.ToString() + ",'" + oSub.HWorkerNumber + "'," + oSub.HSourceID.ToString() +
               "," + oSub.HQty.ToString() + ",'" + oSub.HTimeUnit + "'," + oSub.HPlanWorkTimes.ToString() + ",'" + oSub.HPlanBeginDate.ToString() + "','" + oSub.HPlanEndDate.ToString() + "'" +
               "," + oSub.HICMOInterID.ToString() + ",'" + oSub.HICMOBillNo + "'," + oSub.HSeOrderInterID.ToString() + "," + oSub.HSeOrderEntryID.ToString() + ",'" + oSub.HSeOrderBillNo + "'" +
               ",'" + oSub.HCloseMan + "'," + Convert.ToString(oSub.HCloseType ? 1 : 0) + ",'" + oSub.HRemark + "'," + oSub.HSourceInterID.ToString() + "," + oSub.HSourceEntryID.ToString() +
               ",'" + oSub.HSourceBillNo + "','" + oSub.HSourceBillType + "'," + oSub.HRelationQty.ToString() + "," + oSub.HRelationMoney.ToString() +
               "," + oSub.HBeginDayQty.ToString() + "," + oSub.HBeginFixQty.ToString() + "," + oSub.HFixWorkDays.ToString() + "," + oSub.HTrunWorkDays.ToString() + "," + oSub.HReadyTimes.ToString() +
               "," + oSub.HReadyTime.ToString() + "," + oSub.HQueueTime.ToString() + "," + oSub.HMoveTime.ToString() + ",'" + oSub.HBatchNo + "'" +
               ") ");
                i++;
            }
            objJsonResult.code = "1";
            objJsonResult.count = 1;
            objJsonResult.Message = null;
            objJsonResult.data = null;
            return objJsonResult;
        }
        #endregion
        #region 工序计划单 审核/反审核
        [Route("Sc_ProcessMangement/CheckDeOAuditBill")]
        [HttpGet]
        public object CheckDeOAuditBill(int HInterID, int IsAudit, string CurUserName)
        {
            string ModRightNameCheck = "Sc_ProcessPlan_Check"; //该模块的审核功能
            DBUtility.ClsPub.CurUserName = CurUserName;//存储用户名
            try
            {
                //判断是否有审核权限
                if (!DBUtility.ClsPub.Security_Log(ModRightNameCheck, 1, false, CurUserName))
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "审核失败!无权限!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                //判断id是否大于0
                if (HInterID <= 0)
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "ID小于0";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                //转换id
                Int64 lngBillKey = 0;
                lngBillKey = DBUtility.ClsPub.isLong(HInterID);
                //查询审核的这条数据
                ds = oCN.RunProcReturn("select * from Sc_ProcessPlanMain where HInterID='" + HInterID + "'", "Sc_ProcessPlanMain");
                if (ds.Tables[0].Rows.Count > 0)
                {
                    string HCloseMan = ds.Tables[0].Rows[0]["HCloseMan"].ToString().Trim();//关闭人
                    string HDeleteMan = ds.Tables[0].Rows[0]["HDeleteMan"].ToString().Trim();//作废人
                    string HChecker = ds.Tables[0].Rows[0]["HChecker"].ToString().Trim();//审核人
                    if (HCloseMan != "")
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = "当前单据已关闭,不能审核";
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
                    if (HDeleteMan != "")
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = "当前单据已作废,不能审核";
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
                    //IsAudit==0  审核
                    if (IsAudit == 0)
                    {
                        if (HChecker != "")
                        {
                            objJsonResult.code = "0";
                            objJsonResult.count = 0;
                            objJsonResult.Message = "当前数据已审核";
                            objJsonResult.data = null;
                            return objJsonResult;
                        }
                    }
                    //IsAudit==1  反审核
                    if (IsAudit == 1)
                    {
                        if (HChecker == "")
                        {
                            objJsonResult.code = "0";
                            objJsonResult.count = 0;
                            objJsonResult.Message = "当前数据未审核";
                            objJsonResult.data = null;
                            return objJsonResult;
                        }
                    }
                }
                else
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "单据不存在;原因:"+DBUtility.ClsPub.sExeReturnInfo;
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                //审核提交
                if (IsAudit == 0)
                {
                    if (CheckBill(lngBillKey, ref DBUtility.ClsPub.sExeReturnInfo))
                    {
                        objJsonResult.code = "1";
                        objJsonResult.count = 1;
                        objJsonResult.Message = "审核成功";
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
                    else {
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = "审核失败,原因:" + DBUtility.ClsPub.sExeReturnInfo;
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
                }
                //反审核提交
                if (IsAudit == 1)
                {
                    if (AbandonCheck(lngBillKey, ref DBUtility.ClsPub.sExeReturnInfo))
                    {
                        objJsonResult.code = "1";
                        objJsonResult.count = 1;
                        objJsonResult.Message = "反审核成功";
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
                    else
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = "反审核失败,原因:" + DBUtility.ClsPub.sExeReturnInfo;
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
                }
                return objJsonResult;
            }
            catch (Exception e)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "审核失败或反审核失败" + e.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        //审核
        public bool CheckBill(Int64 lngBillKey, ref string sReturn)
        {
            try
            {
                string HChecker = DBUtility.ClsPub.CurUserName;//用户名
                oCN.BeginTran();//打开事务
                oCN.RunProc("update Sc_ProcessPlanMain set HChecker='" + HChecker + "',HCheckDate='" + DateTime.Now + "',HBillStatus=2 where HInterID='" + lngBillKey + "'");
                oCN.Commit();//关闭事务
                sReturn = "审核单据成功!";
                return true;
            }
            catch (Exception e)
            {
                sReturn = e.Message;
                throw (e);
            }
        }
        //反审核
        public bool AbandonCheck(Int64 lngBillKey, ref string sReturn)
        {
            try
            {
                string HChecker = DBUtility.ClsPub.CurUserName;//用户名
                oCN.BeginTran();//打开事务
                oCN.RunProc("update Sc_ProcessPlanMain set HChecker='',HCheckDate=null,HBillStatus=1 where HInterID='" + lngBillKey + "'");
                oCN.Commit();//关闭事务
                sReturn = "反审核单据成功!";
                return true;
            }
            catch (Exception e)
            {
                sReturn = e.Message;
                throw (e);
            }
        }
        #endregion
        #region 工序计划单 删除
        [Route("Sc_ProcessMangement/DeleteProcessBill")]
        [HttpGet]
        public object MouldDeleteBill(long HInterID, string User, string ModRightNameDelete)
        {
            try
            {
                //判断权限
                if (!DBUtility.ClsPub.Security_Log(ModRightNameDelete, 1, false, User))
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "没有删除权限";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                oBill.ShowBill(HInterID, ref DBUtility.ClsPub.sExeReturnInfo);
                if (oBill.omodel.HChecker != "")
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 1;
                    objJsonResult.Message = "单据当前处于审核状态,不能删除!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                if (oBill.DeleteBill(oBill.omodel.HInterID, ref DBUtility.ClsPub.sExeReturnInfo))
                {
                    objJsonResult.code = "1";
                    objJsonResult.count = 1;
                    objJsonResult.Message = "删除成功";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                else
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 1;
                    objJsonResult.Message = "删除失败";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
            }
            catch (Exception e)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "无权限删除";
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        #endregion
        #endregion
        /// <summary>
        /// 返回生产工序派工单列表
        /// </summary>
        /// <param name="sWhere"></param>
        /// <returns></returns>
        [Route("Sc_ProcessMangement/MES_Sc_ProcessSendWorkMain_Json")]
        [HttpGet]
        public object MES_Sc_ProcessSendWorkMain_Json(string sWhere,string user)
        {
            DataSet ds;
            try
            {
                //判断是否有查询权限
                if (!DBUtility.ClsPub.Security_Log("Sc_ProcessSendWork_Query", 1, false, user))
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "无权限查询!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                SQLHelper.ClsCN oCN = new SQLHelper.ClsCN();
                if (sWhere == null || sWhere.Equals(""))
                {
                    ds = oCN.RunProcReturn("select top 500 * from h_v_Sc_ProcessSendWorkList order by hmainid desc ", "h_v_Sc_ProcessSendWorkList");
                }
                else
                {
                    string sql1 = "select * from h_v_Sc_ProcessSendWorkList where 1 = 1 ";
                    string sql = sql1 + sWhere;
                    string sql = sql1 + sWhere+ " order by hmainid desc ";
                    ds = oCN.RunProcReturn(sql, "h_v_Sc_ProcessSendWorkList");
                }
            }
@@ -212,11 +946,23 @@
            string msg2 = sArray[0].ToString();
            string msg3 = sArray[1].ToString();
            string user = sArray[2].ToString();//用户名
            string UserName = "";
            ListModels oListModels = new ListModels();
            try
            {
                //判断是否有编辑权限
                if (!DBUtility.ClsPub.Security_Log("Sc_ProcessSendWork_Edit", 1, false, user))
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "无权限编辑!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                DAL.ClsSc_ProcessSendWork Sendwork = new DAL.ClsSc_ProcessSendWork();
                List<Model.ClsSc_ProcessSendWorkMain> lsmain = new List<Model.ClsSc_ProcessSendWorkMain>();
                msg2 = msg2.Replace("\\", "");
@@ -374,6 +1120,192 @@
        }
        /// <summary>
        /// 保存委外派工单信息
        /// </summary>
        /// <param name="msg"></param>
        /// <returns></returns>
        [Route("SaveWWProcessSendWork")]
        [HttpPost]
        public object SaveWWProcessSendWork([FromBody] JObject msg)
        {
            var _value = msg["msg"].ToString();
            string msg1 = _value.ToString();
            string[] sArray = msg1.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries);
            string msg2 = sArray[0].ToString();
            string msg3 = sArray[1].ToString();
            string user = sArray[2].ToString();
            string UserName = "";
            ListModels oListModels = new ListModels();
            try
            {
                //判断是否有编辑权限
                if (!DBUtility.ClsPub.Security_Log("WW_EntrustProcSendWorkBill_Edit", 1, false, user))
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "无权限编辑!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                WebAPI.DLL.ClsSc_ProcessSendWork Sendwork = new WebAPI.DLL.ClsSc_ProcessSendWork();
                List<WebAPI.Models.ClsSc_ProcessSendWorkMain> lsmain = new List<WebAPI.Models.ClsSc_ProcessSendWorkMain>();
                msg2 = msg2.Replace("\\", "");
                msg2 = msg2.Replace("\n", "");
                lsmain = oListModels.getObjectByJson_WWSendWorkMain(msg2);
                foreach (WebAPI.Models.ClsSc_ProcessSendWorkMain oItem in lsmain)
                {
                    UserName = oItem.HMaker;
                    oItem.HMakeDate = DBUtility.ClsPub.isStrNull(DateTime.Now.ToString("yyyy-MM-dd"));
                    oItem.HYear = DBUtility.ClsPub.isLong(DateTime.Now.Year);
                    oItem.HDate = DateTime.Now;
                    oItem.HMainSourceInterID = oItem.HInterID;
                    oItem.HInterID = 0;
                    if (DBUtility.ClsPub.isStrNull(oItem.HPlanBeginDate) == "")
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = "保存失败!没有填写计划开工日期,无法保存!";
                        objJsonResult.data = 1;
                        return objJsonResult;
                    }
                    Sendwork.omodel = oItem;
                }
                //表体数据
                //按 },{来拆分数组 //去掉【和】
                msg3 = msg3.Substring(1, msg3.Length - 2);
                msg3 = msg3.Replace("\\", "");
                msg3 = msg3.Replace("\n", "");  //\n
                List<WebAPI.Models.WW_EntrustWorkOrderViewModel> ls = new List<WebAPI.Models.WW_EntrustWorkOrderViewModel>();
                ls = oListModels.getObjectByJson_WWSendWorkSub(msg3);
                int i = 0;
                List<Model.ClsSc_ProcessSendWorkSub> lss = new List<Model.ClsSc_ProcessSendWorkSub>();
                foreach (WebAPI.Models.WW_EntrustWorkOrderViewModel oItemSub in ls)
                {
                    i++;
                    Model.ClsSc_ProcessSendWorkSub sendworksub = new Model.ClsSc_ProcessSendWorkSub();
                    sendworksub.HProcID = 0;//--工序ID
                    sendworksub.HSourceInterID = (long)oItemSub.hmainid;//源单id
                    sendworksub.HSourceEntryID = oItemSub.hsubid; //--源单子ID
                    sendworksub.HSourceBillNo = oItemSub.单据号; //--源单单号
                    sendworksub.HSourceBillType = oItemSub.HBillType; //--源单类型
                    sendworksub.HQty = oItemSub.数量; //--数量
                    sendworksub.HICMOBillNo = "";  //--任务单号
                    sendworksub.HSeOrderBillNo = ""; //--销售订单号
                    sendworksub.HSeOrderEntryID = 0; //--销售子ID
                    sendworksub.HSeOrderInterID = 0; //--销售订单主ID
                    sendworksub.HPlanTimes = 0; //--计划工时
                    sendworksub.HPlanEndDate = DateTime.Now; //--计划完工日期
                    sendworksub.HPlanBeginDate = DateTime.Now; //--计划开工日期
                    sendworksub.HQty = (double)oItemSub.数量; //--派工数量
                    sendworksub.HWorkerNumber = ""; //--操作工代码
                    sendworksub.HWorkerID = 0; //--操作工ID
                    sendworksub.HGroupNumber = ""; //班组代码
                    sendworksub.HGroupID =0;  //--班组ID
                    sendworksub.HSourceNumber = ""; //--生产资源代码
                    //--生产资源ID
                    sendworksub.HProcNumber = ""; //--工序代码
                    if (oItemSub.数量 <= 0)
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = "保存失败!第" + i.ToString() + "行数量不大于0无法保存!";
                        objJsonResult.data = 1;
                        return objJsonResult;
                    }
                    if (Convert.ToInt32(sendworksub.HQty) > Convert.ToInt32(oItemSub.数量))
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = "保存失败!第" + i.ToString() + "行委外派工数量不能大于委外工单数量!";
                        objJsonResult.data = 1;
                        return objJsonResult;
                    }
                    //if (DBUtility.ClsPub.isStrNull(oItemSub.HBatChNo) == "")
                    //{
                    //    objJsonResult.code = "0";
                    //    objJsonResult.count = 0;
                    //    objJsonResult.Message = "保存失败!第" + i.ToString() + "行未填写批号!";
                    //    objJsonResult.data = 1;
                    //    return objJsonResult;
                    //}
                    sendworksub.HEntryID = i;
                    sendworksub.HEntryCloseDate = DBUtility.ClsPub.isDate(DateTime.Now);
                    sendworksub.HRemark = "";
                    sendworksub.HCloseMan = "";
                    sendworksub.HCloseType = false;
                    lss.Add(sendworksub);//先把数据存放到派工单子表集合里
                }
                if (lss.Count > 0)
                {
                    //然后再循环保存到派工单子表的集合里
                    foreach (Model.ClsSc_ProcessSendWorkSub Itemsendwork in lss)
                    {
                        Sendwork.DetailColl.Add(Itemsendwork);
                    }
                }
                else
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "保存失败!lss集合小于0";
                    objJsonResult.data = 1;
                    return objJsonResult;
                }
                //保存
                //保存完毕后处理
                bool bResult;
                if (Sendwork.omodel.HInterID == 0)
                {
                    // bResult = oBill.AddBill(ref DBUtility.ClsPub.sExeReturnInfo);
                    bResult = Sendwork.AddBill(ref DBUtility.ClsPub.sExeReturnInfo);
                }
                else
                {
                    bResult = Sendwork.ModifyBill(Sendwork.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;
            }
        }
        /// <summary>
        /// 返回委外工单列表
        /// </summary>
        /// <param name="sWhere"></param>
@@ -388,13 +1320,13 @@
                SQLHelper.ClsCN oCN = new SQLHelper.ClsCN();
                if (sWhere == null || sWhere.Equals(""))
                {
                    ds = oCN.RunProcReturn("select top 500 * from WW_EntrustWorkOrderBillMain ", "WW_EntrustWorkOrderBillMain");
                    ds = oCN.RunProcReturn("select top 500 * from h_v_WW_EntrustWorkOrderBillList ", "h_v_WW_EntrustWorkOrderBillList");
                }
                else
                {
                    string sql1 = "select * from WW_EntrustWorkOrderBillMain where 1 = 1 ";
                    string sql1 = "select * from h_v_WW_EntrustWorkOrderBillList where 1 = 1 ";
                    string sql = sql1 + sWhere;
                    ds = oCN.RunProcReturn(sql, "WW_EntrustWorkOrderBillMain");
                    ds = oCN.RunProcReturn(sql, "h_v_WW_EntrustWorkOrderBillList");
                }
            }
            catch (Exception e)
@@ -407,43 +1339,6 @@
            }
            return GetObjectJson(ds);
        }
        /// <summary>
        /// 返回委外工序汇报单列表
        /// </summary>
        /// <param name="sWhere"></param>
        /// <returns></returns>
        [Route("Sc_ProcessMangement/MES_Sc_StationOutBillMain_Json")]
        [HttpGet]
        public object MES_Sc_StationOutBillMain_Json(string sWhere)
        {
            DataSet ds;
            try
            {
                SQLHelper.ClsCN oCN = new SQLHelper.ClsCN();
                if (sWhere == null || sWhere.Equals(""))
                {
                    ds = oCN.RunProcReturn("select top 500 * from Sc_StationOutBillMain ", "Sc_StationOutBillMain");
                }
                else
                {
                    string sql1 = "select * from Sc_StationOutBillMain where 1 = 1 ";
                    string sql = sql1 + sWhere;
                    ds = oCN.RunProcReturn(sql, "Sc_StationOutBillMain");
                }
            }
            catch (Exception e)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "没有返回任何记录!" + e.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
            return GetObjectJson(ds);
        }
        /// <summary>
        /// 返回不合格评审列表
@@ -452,20 +1347,30 @@
        /// <returns></returns>
        [Route("Sc_ProcessMangement/MES_QC_NoPassProdCheckBill_Json")]
        [HttpGet]
        public object MES_QC_NoPassProdCheckBill_Json(string sWhere)
        public object MES_QC_NoPassProdCheckBill_Json(string sWhere,string user)
        {
            DataSet ds;
            try
            {
                //查看权限
                if (!DBUtility.ClsPub.Security_Log("QC_NoPassProdCheckBillQuery", 1, false, user))
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "无查看权限!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                SQLHelper.ClsCN oCN = new SQLHelper.ClsCN();
                if (sWhere == null || sWhere.Equals(""))
                {
                    ds = oCN.RunProcReturn("select top 500 * from h_v_QC_NoPassProdCheckBillList ", "h_v_QC_NoPassProdCheckBillList");
                    ds = oCN.RunProcReturn("select top 500 * from h_v_QC_NoPassProdCheckBillList order by hmainid desc ", "h_v_QC_NoPassProdCheckBillList");
                }
                else
                {
                    string sql1 = "select * from h_v_QC_NoPassProdCheckBillList where 1 = 1 ";
                    string sql = sql1 + sWhere;
                    string sql = sql1 + sWhere+ " order by hmainid desc ";
                    ds = oCN.RunProcReturn(sql, "h_v_QC_NoPassProdCheckBillList");
                }
            }
@@ -481,6 +1386,184 @@
        }
        /// <summary>
        /// 不合格评审  删除
        /// </summary>
        /// <param name="HInterID"></param>
        /// <param name="user"></param>
        /// <returns></returns>
        [Route("Sc_ProcessMangement/ProcessMangementDeleteBill")]
        [HttpGet]
        public object ProcessMangementDeleteBill(string HInterID, string user)
        {
            try
            {
                if (!DBUtility.ClsPub.Security_Log("QC_NoPassProdCheckBill_Drop", 1, false, user))
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "无权限删除";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                ds = oCN.RunProcReturn("select * from h_v_QC_NoPassProdCheckBillList where hmainid =" + HInterID + " ", "h_v_QC_NoPassProdCheckBillList");
                if (ds.Tables[0].Rows[0]["审核人"].ToString() != "")
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "单据已审核,不能删除!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                oCN.BeginTran();
                oCN.RunProc("Delete from QC_NoPassProdCheckBillMain where HInterID=" + HInterID);
                oCN.RunProc("Delete from QC_NoPassProdCheckBillSub where HInterID=" + HInterID);
                oCN.Commit();
                objJsonResult.code = "1";
                objJsonResult.count = 1;
                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;
            }
        }
        #region 不合格评审 审核/反审核
        [Route("Sc_ProcessMangement/AuditProcessMangement")]
        [HttpGet]
        public object AuditProcessMangement(int HInterID, int IsAudit, string CurUserName)
        {
            string ModRightNameCheck = "QC_NoPassProdCheckBill_Check"; //该模块的审核功能
            DBUtility.ClsPub.CurUserName = CurUserName;//存储用户名
            try
            {
                ////判断是否有审核权限
                if (!DBUtility.ClsPub.Security_Log(ModRightNameCheck, 1, false, CurUserName))
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "审核失败!无权限!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                if (HInterID <= 0)
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "ID小于0";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                Int64 lngBillKey = 0;
                lngBillKey = DBUtility.ClsPub.isLong(HInterID);//数据转换
                //查询审核的数据
                ds = oCN.RunProcReturn("select * from QC_NoPassProdCheckBillMain where HInterID='" + HInterID + "'", "QC_NoPassProdCheckBillMain");
                if (ds.Tables[0].Rows.Count > 0)
                {
                    var hcloseman = ds.Tables[0].Rows[0]["HCloseMan"].ToString();//关闭人
                    var hdeleteman = ds.Tables[0].Rows[0]["HDeleteMan"].ToString();//作废人
                    var hchecker = ds.Tables[0].Rows[0]["HChecker"].ToString();//审核人
                    if (hcloseman != "")
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = "当前单据已关闭,无法审核!";
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
                    if (hdeleteman != "")
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = "当前单据已作废,无法审核!";
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
                    //IsAudit==0 审核
                    if (IsAudit == 1)
                    {
                        if (hchecker != "")
                        {
                            objJsonResult.code = "0";
                            objJsonResult.count = 0;
                            objJsonResult.Message = "当前单据已审核,无法再次审核!";
                            objJsonResult.data = null;
                            return objJsonResult;
                        }
                    }
                    //IsAudit==1 反审核
                    if (IsAudit == 2)
                    {
                        if (hchecker == "")
                        {
                            objJsonResult.code = "0";
                            objJsonResult.count = 0;
                            objJsonResult.Message = "当前单据未审核,无法反审核!";
                            objJsonResult.data = null;
                            return objJsonResult;
                        }
                    }
                }
                else
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "单据不存在;原因:" + DBUtility.ClsPub.sExeReturnInfo;
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                //审核提交
                if (IsAudit == 1)
                {
                    oCN.RunProc(" Update QC_NoPassProdCheckBillMain set HChecker='" + CurUserName + "',HCheckDate='" + DateTime.Now + "',HBillStatus=2 Where HBillType='7509' and HInterID=" + HInterID);
                    objJsonResult.code = "1";
                    objJsonResult.count = 1;
                    objJsonResult.Message = "审核成功!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                //反审核提交
                if (IsAudit == 2)
                {
                    oCN.RunProc(" Update QC_NoPassProdCheckBillMain set HChecker='',HCheckDate=null,HBillStatus=0 Where HBillType='7509' and HInterID=" + HInterID);
                    objJsonResult.code = "1";
                    objJsonResult.count = 1;
                    objJsonResult.Message = "反审核成功!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                return objJsonResult;
            }
            catch (Exception e)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "审核失败或反审核失败" + e.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        #endregion
        /// <summary>
        /// PDA工序汇报单保存
        /// </summary>
        /// <param name="msg"></param>
@@ -494,7 +1577,7 @@
            ListModels oListModels = new ListModels();
            try
            {
                WebAPI.DLL.ClsSc_ProcessReport ReportModel = new WebAPI.DLL.ClsSc_ProcessReport();
                DAL.ClsSc_ProcessReport ReportModel = new DAL.ClsSc_ProcessReport();
                List<WebAPI.Models.Sc_ProcessReportViewModel> ls = new List<WebAPI.Models.Sc_ProcessReportViewModel>();
                ls = oListModels.getObjectByJson_Report(msg1);
                int i = 0;
@@ -692,19 +1775,30 @@
            string[] sArray = msg1.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries);
            string msg2 = sArray[0].ToString();
            string msg3 = sArray[1].ToString();
            string user = sArray[2].ToString();//用户名
            string UserName;
            ListModels oListModels = new ListModels();
            try
            {
                WebAPI.DLL.ClsSc_ProcessReport ReportModel = new WebAPI.DLL.ClsSc_ProcessReport();
                //判断是否有编辑权限
                if (!DBUtility.ClsPub.Security_Log("Sc_ICMOReportBill_Edit", 1, false, user))
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "无权限编辑!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                DAL.ClsSc_ProcessReport ReportModel = new DAL.ClsSc_ProcessReport();
                List<Model.ClsSc_ProcessReportMain> lsmain = new List<Model.ClsSc_ProcessReportMain>();
                msg2 = msg2.Replace("\\", "");
                msg2 = msg2.Replace("\n", "");  //\n
                lsmain = oListModels.getObjectByJson_Reportlist(msg2);
                foreach (Model.ClsSc_ProcessReportMain oItem in lsmain)
                {
                    //oItem.HMaker = "";
                    //UserName = oItem.HMaker;
                    UserName = oItem.HMaker;
                    oItem.HMaker = 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"));
@@ -761,23 +1855,19 @@
                    reportSub.HEntryID = i;
                    reportSub.HEntryCloseDate = DBUtility.ClsPub.isDate(DateTime.Now);
                    reportSub.HRemark = "";
                    reportSub.HCloseMan = "";
                    reportSub.HCloseMan = ReportModel.omodel.HCloseMan;
                    reportSub.HCloseType = false;
                    reportSub.HEmpID =0;
                    reportSub.HICMOBillNo ="";
                    reportSub.HICMOInterID = (long)ItemView.HICMOInterID;
                    reportSub.HEntryID = i;
                    reportSub.HEntryCloseDate = DBUtility.ClsPub.isDate(DateTime.Now);
                    reportSub.HRemark = "";
                    reportSub.HCloseMan = "";
                    reportSub.HCloseType = false;
                    reportSub.HSourceBillType = "3712";
                    reportSub.HQty = (double)ItemView.数量;
                    reportSub.HProcID = (long)ItemView.HprocID;
                    reportSub.HProcNumber = ItemView.工序代码;
                    reportSub.HOutPrice = 0;
                    reportSub.HOutMoney = 0;
                    reportSub.HSourceID = (long)ItemView.HSourceID;
                    reportSub.HSourceID = (long)ItemView.hmainid;
                    reportSub.HEmpNumber = "";
                    reportSub.HRelBeginDate = DateTime.Now;
                    reportSub.HRelEndDate = DateTime.Now;
@@ -787,8 +1877,8 @@
                    reportSub.HSeOrderBillNo = "";
                    reportSub.HProcPlanInterID = 0;
                    reportSub.HProcPlanBillNo = "";
                    reportSub.HSourceInterID = 0;
                    reportSub.HSourceBillNo = "";
                    reportSub.HSourceInterID = (long)ItemView.hmainid;
                    reportSub.HSourceBillNo = ItemView.单据号;
                    reportSub.HRelationQty = 0;
                    reportSub.HRelationMoney = 0;
                    reportSub.HMaterID = (long)ItemView.HMaterID;
@@ -803,7 +1893,7 @@
                    reportSub.HProcPlanEntryID = 0;
                    reportSub.HProcPlanBillNo = "";
                    reportSub.HSourceEntryID = 0;
                    reportSub.HSourceBillType = "";
                    reportSub.HSourceBillType = "3712";
                    reportSub.HRelationQty = 0;
                    reportSub.HRelationMoney = 0;
                    reportSub.HBadPrirce = 0;
@@ -910,13 +2000,24 @@
            string[] sArray = msg1.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries);
            string msg2 = sArray[0].ToString();
            string msg3 = sArray[1].ToString();
            string user = sArray[2].ToString();
            string UserName="";
            ListModels oListModels = new ListModels();
            try
            {
                DAL.ClsQC_NoPassProdCheckBill oBill = new DAL.ClsQC_NoPassProdCheckBill();
                //判断权限
                if (!DBUtility.ClsPub.Security_Log("QC_NoPassProdCheckBill_Edit", 1, false, user))
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "无保存权限";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                DLL.ClsQC_NoPassProdCheckBill oBill = new DLL.ClsQC_NoPassProdCheckBill();
                List<Model.ClsQC_NoPassProdCheckBillMain> lsmain = new List<Model.ClsQC_NoPassProdCheckBillMain>();
                msg2 = msg2.Replace("\\", "");
                msg2 = msg2.Replace("\n", "");  //\n
@@ -927,9 +2028,28 @@
                    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.HCurID = 1;
                    //oItem.HExRate = 1;
                    oItem.HDate = DBUtility.ClsPub.isDate(DateTime.Now.ToString("yyyy-MM-dd"));
                    oItem.HBillType = "7509";
                    oItem.HBillSubType = "7509";
                    oItem.HBillStatus = 1;
                    oItem.HPeriod = 0;
                    oItem.HGroupName ="";
                    oItem.HSourceID = 0;
                    oItem.HICMOInterID = 0;
                    oItem.HICMOBillNo = "";
                    oItem.HInStockQty = 0;
                    oItem.HCheckQty = 0;
                    oItem.HRightQty = 0;
                    oItem.HBadPNL = 0;
                    oItem.HPlanPNL = 0;
                    oItem.HFirstCheckEmp = 0;
                    oItem.HCheckerResult = "";
                    oItem.HWorkCenterID = 0;
                    oItem.HProcExchInterID = 0;
                    oItem.HProcExchEntryID = 0;
                    oItem.HProcExchBillNo = "";
                    oItem.HOrderProcNo = "";
                    oItem.HProcExchQty = 0;
                    oItem.HMainSourceInterID = oItem.HInterID;
                    oItem.HInterID = 0;
                    //oItem.HInterID = DBUtility.ClsPub.CreateBillID_SRMProd("1103", ref DBUtility.ClsPub.sExeReturnInfo);
@@ -937,7 +2057,7 @@
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = "保存失败!没有danju日期,无法保存!";
                        objJsonResult.Message = "保存失败!没有单据日期,无法保存!";
                        objJsonResult.data = 1;
                        return objJsonResult;
                    }
@@ -955,6 +2075,12 @@
                foreach (Model.ClsQC_NoPassProdCheckBillSub oItemSub in ls)
                {
                    i++;
                    if (string.IsNullOrWhiteSpace(oItemSub.HWasterReasonName))
                    {
                        break;
                    }
                    //将前台临时存放的值传过来的值赋给对应的不良数量字段
                    oItemSub.HBadQty = Convert.ToDecimal( oItemSub.HMRBChecker);
                    if (oItemSub.HBadQty<=0)
                    {
                        objJsonResult.code = "0";
@@ -979,12 +2105,24 @@
                        objJsonResult.data = 1;
                        return objJsonResult;
                    }
                    oItemSub.HSourceEntryID = oBill.omodel.HMainSourceEntryID;
                    oItemSub.HSourceInterID = oBill.omodel.HMainSourceInterID;
                    oItemSub.HEntryID = i;
                    oItemSub.HEntryCloseDate = DBUtility.ClsPub.isDate(DateTime.Now);
                    oItemSub.HRemark = "";
                    oItemSub.HCloseMan = "";
                    oItemSub.HCloseType = false;
                    oItemSub.HBillNo_bak = oBill.omodel.HBillNo;
                    oItemSub.HMRBChecker = "";
                    oItemSub.HSourceBillNo = oBill.omodel.HMainSourceBillNo;
                    oItemSub.HSourceBillType = "3715";
                    oItemSub.HRelationQty = 0;
                    oItemSub.HRelationMoney = 0;
                    oItemSub.HMaterID = oBill.omodel.HMaterID;
                    oItemSub.HUnitID = 0;
                    oItemSub.HMustQty = 0;
                    oItemSub.HDisposeNote = "";
                    oItemSub.HPunishmentBillNo = "";
                    oItemSub.HBadPCSQty = 0;
                    oItemSub.HQCResultID = 0;
                    oBill.DetailColl.Add(oItemSub);
                    
                }
@@ -1030,8 +2168,1108 @@
        }
        /// <summary>
        /// 汇报单编辑关闭功能
        /// </summary>
        /// <param name="HInterID"></param>
        /// <param name="IsClose"></param>
        ///  <param name="CurUserName"></param>
        /// <returns></returns>
        [Route("CloseProcessReportList")]
        [HttpGet]
        public object CloseProcessReportList(int HInterID,int IsClose,string CurUserName)
        {
            DataSet ds;
             string ModRightNameCheck = "Sc_ProcessReport_check";
            try
            {
                //审核权限
                if (!DBUtility.ClsPub.Security_Log(ModRightNameCheck, 1, false, CurUserName))
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "审核失败!无权限!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                SQLHelper.ClsCN oCN = new SQLHelper.ClsCN();
                if (HInterID <= 0)
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "HInterID小于0!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                ds = oCN.RunProcReturn("select * from Sc_ProcessReportMain where HInterID=" + HInterID, "Sc_ProcessReportMain");
                if (ds == null || ds.Tables[0].Rows.Count == 0)
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "没有这个单据,无法关闭!";
                    objJsonResult.data = null;
                    return objJsonResult; ;
                }
                var HChecker = ds.Tables[0].Rows[0]["HChecker"].ToString();
                var HCloseMan = ds.Tables[0].Rows[0]["HCloseMan"].ToString();
                if (IsClose == 0)
                {
                    if (HCloseMan.Trim() != "" || HChecker.Trim() == "")
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = "单据未审核、已关闭、已作废状态下不允许关闭!!!";
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
                    oCN.RunProc("update  Sc_ProcessReportMain set HCloseMan='" + CurUserName + "' ,HCloseDate=GETDATE() where HInterID=" + HInterID);
                    objJsonResult.code = "0";
                    objJsonResult.count = 1;
                    objJsonResult.Message = "* 单据关闭成功!";
                    objJsonResult.data = null;
                    return objJsonResult; ;
                }
                else if(IsClose==1)
                {
                    if (HCloseMan.Trim() == "" || HChecker.Trim() == "")
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = "单据未审核、未关闭、已作废状态下不允许撤销关闭!!!";
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
                    oCN.RunProc("update  Sc_ProcessReportMain set HCloseMan='' ,HCloseDate=null where HInterID=" + HInterID);
                    objJsonResult.code = "0";
                    objJsonResult.count = 1;
                    objJsonResult.Message = "* 单据反关闭成功!";
                    objJsonResult.data = null;
                    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;
            }
        }
        /// <summary>
        /// 汇报单编辑审核反审核功能
        /// </summary>
        /// <param name="HInterID"></param>
        /// <param name="IsAudit"></param>
        ///  <param name="CurUserName"></param>
        /// <returns></returns>
        [Route("AuditProcessReportList")]
        [HttpGet]
        public object AuditProcessReportList(int HInterID, int IsAudit, string CurUserName)
        {
            DataSet ds;
            string ModRightNameCheck = "Sc_ProcessReport_check";
            var a = DBUtility.ClsPub.CurUserName;
            try
            {
                //审核权限
                if (!DBUtility.ClsPub.Security_Log(ModRightNameCheck, 1, false, CurUserName))
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "审核失败!无权限!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                SQLHelper.ClsCN oCN = new SQLHelper.ClsCN();
                if (HInterID <= 0)
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "HInterID小于0!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                ds = oCN.RunProcReturn("select * from Sc_ProcessReportMain where HInterID=" + HInterID, "Sc_ProcessReportMain");
                if (ds == null || ds.Tables[0].Rows.Count == 0)
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "没有这个单据,无法审核!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                var HChecker = ds.Tables[0].Rows[0]["HChecker"].ToString();//取审核人
                var HMaker=ds.Tables[0].Rows[0]["HMaker"].ToString();//取制单人
                var HCloseMan=ds.Tables[0].Rows[0]["HCloseMan"].ToString();//取关闭人
                if (IsAudit == 0)
                {
                    if (HChecker.Trim() != "" || HChecker.Trim() == HMaker || HCloseMan != "")
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = "单据已审核、已关闭、已作废状态不允许审核!!!";
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
                    oCN.RunProc("update  Sc_ProcessReportMain set HChecker='" + CurUserName + "' ,HCheckDate=GETDATE() where HInterID=" + HInterID);
                    objJsonResult.code = "0";
                    objJsonResult.count = 1;
                    objJsonResult.Message = "* 单据审核成功!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                else if (IsAudit == 1)
                {
                    if (HChecker.Trim() == "" || HChecker.Trim() == CurUserName || HCloseMan != "")
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = "单据未审核、已关闭、已作废状态下不允许反审核!!!";
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
                    oCN.RunProc("update  Sc_ProcessReportMain set HChecker='' ,HCheckDate=null where HInterID=" + HInterID);
                    objJsonResult.code = "0";
                    objJsonResult.count = 1;
                    objJsonResult.Message = "* 单据反审核成功!";
                    objJsonResult.data = null;
                    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;
            }
        }
        /// <summary>
        /// 返回委外工序派工单列表
        /// </summary>
        /// <param name="sqlWhere"></param>
        /// <returns></returns>
        [Route("Sc_ProcessMangement/MES_WW_EntrustProcSendWorkBill_Json")]
        [HttpGet]
        public object MES_WW_EntrustProcSendWorkBill_Json(string sqlWhere,string user)
        {
            DataSet ds;
            try
            {
                //判断是否有查询权限
                if (!DBUtility.ClsPub.Security_Log("WW_EntrustProcSendWorkBill_Query", 1, false, user))
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "无权限查询!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                SQLHelper.ClsCN oCN = new SQLHelper.ClsCN();
                if (sqlWhere == null || sqlWhere.Equals(""))
                {
                    ds = oCN.RunProcReturn("select top 500 * from h_v_WW_EntrustProcSendWorkBillList order by hmainid desc ", "h_v_WW_EntrustProcSendWorkBillList");
                }
                else
                {
                    string sql1 = "select * from h_v_WW_EntrustProcSendWorkBillList where 1 = 1 ";
                    string sql = sql1 + sqlWhere+ " order by hmainid desc ";
                    ds = oCN.RunProcReturn(sql, "h_v_WW_EntrustProcSendWorkBillList");
                }
            }
            catch (Exception e)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "没有返回任何记录!" + e.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
            return GetObjectJson(ds);
        }
        /// <summary>
        /// 返回委外工序计划汇报单列表
        /// </summary>
        /// <param name="sqlWhere"></param>
        /// <returns></returns>
        [Route("Sc_ProcessMangement/MES_WW_EntrustProcessReportBill_Json")]
        [HttpGet]
        public object MES_WW_EntrustProcessReportBill_Json(string sqlWhere,string user)
        {
            DataSet ds;
            try
            {
                //判断是否有查询权限
                if (!DBUtility.ClsPub.Security_Log("WW_EntrustProcessReportBill_Query", 1, false, user))
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "无权限查询!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                SQLHelper.ClsCN oCN = new SQLHelper.ClsCN();
                if (sqlWhere == null || sqlWhere.Equals(""))
                {
                    ds = oCN.RunProcReturn("select top 500 * from h_v_WW_EntrustProcessReportBillList ", "h_v_WW_EntrustProcessReportBillList");
                }
                else
                {
                    string sql1 = "select * from h_v_WW_EntrustProcessReportBillList where 1 = 1 ";
                    string sql = sql1 + sqlWhere;
                    ds = oCN.RunProcReturn(sql, "h_v_WW_EntrustProcessReportBillList");
                }
            }
            catch (Exception e)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "没有返回任何记录!" + e.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
            return GetObjectJson(ds);
        }
        /// <summary>
        /// 返回委外工序计划转出单列表
        /// </summary>
        /// <param name="sqlWhere"></param>
        /// <returns></returns>
        [Route("Sc_ProcessMangement/MES_WW_EntrustProcessSendOutBillList_Json")]
        [HttpGet]
        public object MES_WW_EntrustProcessSendOutBillList_Json(string sqlWhere,string user)
        {
            DataSet ds;
            try
            {
                //判断是否有查询权限
                if (!DBUtility.ClsPub.Security_Log("WW_EntrustProcessSendOutBill_Query", 1, false, user))
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "无权限查询!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                SQLHelper.ClsCN oCN = new SQLHelper.ClsCN();
                if (sqlWhere == null || sqlWhere.Equals(""))
                {
                    ds = oCN.RunProcReturn("select top 500 * from h_v_WW_EntrustProcessSendOutBillList order by hmainid desc ", "h_v_WW_EntrustProcessSendOutBillList");
                }
                else
                {
                    string sql1 = "select * from h_v_WW_EntrustProcessSendOutBillList where 1 = 1 ";
                    string sql = sql1 + sqlWhere+ " order by hmainid desc ";
                    ds = oCN.RunProcReturn(sql, "h_v_WW_EntrustProcessSendOutBillList");
                }
            }
            catch (Exception e)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "没有返回任何记录!" + e.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
            return GetObjectJson(ds);
        }
        /// <summary>
        /// 保存委外汇报单信息
        /// </summary>
        /// <param name="msg"></param>
        /// <returns></returns>
        [Route("SaveWW_EntrustProcessReportBill")]
        [HttpPost]
        public object SaveWW_EntrustProcessReportBill([FromBody] JObject msg)
        {
            var _value = msg["msg"].ToString();
            string msg1 = _value.ToString();
            string[] sArray = msg1.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries);
            string msg2 = sArray[0].ToString();
            string msg3 = sArray[1].ToString();
            string user = sArray[2].ToString();//用户名
            string UserName = "";
            ListModels oListModels = new ListModels();
            try
            {
                //判断是否有编辑权限
                if (!DBUtility.ClsPub.Security_Log("WW_EntrustProcessReportBill_Edit", 1, false, user))
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "无权限编辑!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                WebAPI.DLL.ClsWW_EntrustProcessReportBill Sendwork = new WebAPI.DLL.ClsWW_EntrustProcessReportBill();
                List<WebAPI.Models.ClsWW_EntrustProcessReportBillMain> lsmain = new List<WebAPI.Models.ClsWW_EntrustProcessReportBillMain>();
                msg2 = msg2.Replace("\\", "");
                msg2 = msg2.Replace("\n", "");
                lsmain = oListModels.getObjectByJson_WW_EntrustProcessReportBillMain(msg2);
                foreach (WebAPI.Models.ClsWW_EntrustProcessReportBillMain oItem in lsmain)
                {
                    UserName = oItem.HMaker;
                    oItem.HMakeDate = DBUtility.ClsPub.isStrNull(DateTime.Now.ToString("yyyy-MM-dd"));
                    oItem.HYear = DBUtility.ClsPub.isLong(DateTime.Now.Year);
                    oItem.HDate = DateTime.Now;
                    oItem.HMainSourceInterID = oItem.HInterID;
                    oItem.HInterID = 0;
                    Sendwork.omodel = oItem;
                }
                //表体数据
                //按 },{来拆分数组 //去掉【和】
                msg3 = msg3.Substring(1, msg3.Length - 2);
                msg3 = msg3.Replace("\\", "");
                msg3 = msg3.Replace("\n", "");  //\n
                List<WebAPI.Models.WW_EntrustProcSendWorkViewModel> ls = new List<WebAPI.Models.WW_EntrustProcSendWorkViewModel>();
                ls = oListModels.getObjectByJson_WW_EntrustProcSendWork(msg3);
                int i = 0;
                List<Models.ClsWW_EntrustProcessReportBillSub> lss = new List<Models.ClsWW_EntrustProcessReportBillSub>();
                foreach (WebAPI.Models.WW_EntrustProcSendWorkViewModel oItemSub in ls)
                {
                    i++;
                    Models.ClsWW_EntrustProcessReportBillSub sendworksub = new Models.ClsWW_EntrustProcessReportBillSub();
                    sendworksub.HProcID = 0;//--工序ID
                    sendworksub.HSourceInterID = (long)oItemSub.hmainid;//源单id
                    sendworksub.HSourceEntryID = (long)oItemSub.hsubid; //--源单子ID
                    sendworksub.HSourceBillNo = oItemSub.单据号; //--源单单号
                    sendworksub.HSourceBillType = oItemSub.HBillType; //--源单类型
                    sendworksub.HQty = (decimal)oItemSub.数量; //--数量
                    sendworksub.HICMOBillNo = "";  //--任务单号
                    sendworksub.HSeOrderBillNo = ""; //--销售订单号
                    sendworksub.HSeOrderEntryID = 0; //--销售子ID
                    sendworksub.HSeOrderInterID = 0; //--销售订单主ID
                    sendworksub.HTimes = 0; //--计划工时
                    if (oItemSub.数量 <= 0)
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = "保存失败!第" + i.ToString() + "行数量不大于0无法保存!";
                        objJsonResult.data = 1;
                        return objJsonResult;
                    }
                    if (Convert.ToInt32(sendworksub.HQty) > Convert.ToInt32(oItemSub.数量))
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = "保存失败!第" + i.ToString() + "行委外汇报数量不能大于委外派工单数量!";
                        objJsonResult.data = 1;
                        return objJsonResult;
                    }
                    sendworksub.HEntryID = i;
                    sendworksub.HEntryCloseDate = DBUtility.ClsPub.isDate(DateTime.Now);
                    sendworksub.HRemark = "";
                    sendworksub.HCloseMan = "";
                    sendworksub.HCloseType = false;
                    lss.Add(sendworksub);//先把数据存放到派工单子表集合里
                }
                if (lss.Count > 0)
                {
                    //然后再循环保存到派工单子表的集合里
                    foreach (Models.ClsWW_EntrustProcessReportBillSub Itemsendwork in lss)
                    {
                        Sendwork.DetailColl.Add(Itemsendwork);
                    }
                }
                else
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "保存失败!lss集合小于0";
                    objJsonResult.data = 1;
                    return objJsonResult;
                }
                //保存
                //保存完毕后处理
                bool bResult;
                if (Sendwork.omodel.HInterID == 0)
                {
                    // bResult = oBill.AddBill(ref DBUtility.ClsPub.sExeReturnInfo);
                    bResult = Sendwork.AddBill(ref DBUtility.ClsPub.sExeReturnInfo);
                }
                else
                {
                    bResult = Sendwork.ModifyBill(Sendwork.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;
            }
        }
        /// <summary>
        /// 委外派工单号获取信息
        /// </summary>
        /// <returns></returns>
        [Route("Sc_ProcessMangement/WWgetHbarCodeDetail")]
        [HttpGet]
        public ApiResult<DataSet> WWGetHbarCodeDetail(string sBillBarCode)
        {
            var model = LuBaoSevice.WWGetHbarCodeDetail(sBillBarCode);
            return model;
        }
        /// <summary>
        ///委外工序号获得信息
        /// </summary>
        /// <returns></returns>
        [Route("Sc_ProcessMangement/WWgetProcDetail")]
        [HttpGet]
        public ApiResult<DataSet> WWGetProcDetail(string sBillNo, string sProcNo)
        {
            var model = LuBaoSevice.WWGetProcDetail(sBillNo, sProcNo);
            return model;
        }
        /// <summary>
        /// PDA委外工序汇报单保存
        /// </summary>
        /// <param name="msg"></param>
        /// <returns></returns>
        [Route("SaveWWReport")]
        [HttpPost]
        public object SaveWWReport([FromBody] JObject msg)
        {
            var _value = msg["msg"].ToString();
            string msg1 = _value.ToString();
            ListModels oListModels = new ListModels();
            try
            {
                WebAPI.DLL.ClsWW_EntrustProcessReportBill ReportModel = new WebAPI.DLL.ClsWW_EntrustProcessReportBill();
                List<WebAPI.Models.WWReportViewModel> ls = new List<WebAPI.Models.WWReportViewModel>();
                ls = oListModels.getObjectByJson_WWReport(msg1);
                int i = 0;
                foreach (Models.WWReportViewModel ItemView in ls)
                {
                    i++;
                    Models.ClsWW_EntrustProcessReportBillMain ReportMain = new Models.ClsWW_EntrustProcessReportBillMain();
                    Models.ClsWW_EntrustProcessReportBillSub ReportSub = new Models.ClsWW_EntrustProcessReportBillSub();
                    //工序汇报单主表保存
                    ReportMain.HBillType = "3742";
                    ReportMain.HBillNo = ItemView.HBillNo;
                    ReportMain.HMakeDate = DBUtility.ClsPub.isStrNull(DateTime.Now.ToString("yyyy-MM-dd"));
                    ReportMain.HYear = DBUtility.ClsPub.isLong(DateTime.Now.Year);
                    ReportMain.HDate = DateTime.Now;
                    ReportMain.HMaker = "";
                    ReportMain.HCloseType = false;
                    ReportMain.HPrintQty = 0;
                    ReportMain.HMainSourceBillType = "3740";
                    ReportMain.HMainSourceInterID =0;
                    ReportMain.HMainSourceBillNo = ItemView.HWW_BillNo;
                    ReportMain.HInterID = 0;
                    ReportMain.HPeriod = 1;
                    ReportMain.HBillSubType = "3742";
                    ReportMain.HBillStatus = 0;
                    ReportMain.HCheckItemNowID = 0;
                    ReportMain.HCheckItemNextID = 0;
                    ReportMain.HDeptID = Convert.ToInt32(ItemView.HDeptID);
                    ReportMain.HExplanation = "";
                    ReportMain.HInnerBillNo = "";
                    ReportMain.HSupID =Convert.ToInt32( ItemView.HSupID);
                    //保存到汇报单主表
                    ReportModel.omodel = ReportMain;
                    ReportSub.HMaterID = Convert.ToInt32(ItemView.HMaterID);
                    ReportSub.HICMOBillNo = "";
                    ReportSub.HICMOInterID = 0;
                    ReportSub.HEntryID = i;
                    ReportSub.HEntryCloseDate = DBUtility.ClsPub.isDate(DateTime.Now);
                    ReportSub.HRemark = "";
                    ReportSub.HCloseMan = "";
                    ReportSub.HCloseType = false;
                    ReportSub.HSourceBillType = "3740";
                    ReportSub.HQty = Convert.ToDecimal(ItemView.HQty);
                    ReportSub.HProcID =Convert.ToInt32( ItemView.HProcID);
                    ReportSub.HTimes = 0;
                    ReportSub.HSeOrderInterID = 0;
                    ReportSub.HSeOrderEntryID = 0;
                    ReportSub.HSeOrderBillNo = "";
                    ReportSub.HProcPlanInterID = 0;
                    ReportSub.HProcPlanBillNo = "";
                    ReportSub.HSourceInterID = 0;
                    ReportSub.HSourceBillNo = "";
                    ReportSub.HRelationQty = 0;
                    ReportSub.HRelationMoney = 0;
                    ReportSub.HCheckQty = 0;
                    ReportSub.HBadCount = 0;
                    ReportSub.HWasterQty = 0;
                    ReportSub.HWasterQty2 = 0;
                    ReportSub.HPrice = 0;
                    ReportSub.HMoney = 0;
                    ReportSub.HProcPlanInterID = 0;
                    ReportSub.HProcPlanEntryID = 0;
                    ReportSub.HProcPlanBillNo = "";
                    ReportSub.HSourceEntryID = 0;
                    ReportSub.HSourceBillType = "";
                    ReportSub.HRelationQty = 0;
                    ReportSub.HRelationMoney = 0;
                    ReportSub.HBadPrirce = 0;
                    ReportSub.HBadMoney = 0;
                    ReportSub.HWasterPrice = 0;
                    ReportSub.HWasterMoney = 0;
                    ReportSub.HQualityRate = 0;
                    ReportSub.HUsingQty = 0;
                    ReportSub.HSelfBadCount = 0;
                    ReportSub.HPreBadCount = 0;
                    ReportSub.HPayMentQty = 0;
                    ReportSub.HPackType = "";
                    ReportSub.HCheckEmpID = 0;
                    ReportSub.HWeight = 0;
                    ReportSub.HBatchNo = "";
                    //保存到委外汇报单子表
                    ReportModel.DetailColl.Add(ReportSub);
                }
                //保存
                //保存完毕后处理
                bool bResult;
                bResult = ReportModel.AddBill(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;
            }
        }
        /// <summary>
        /// 保存委外转出单信息
        /// </summary>
        /// <param name="msg"></param>
        /// <returns></returns>
        [Route("SaveWW_EntrustProcessSendOutBill")]
        [HttpPost]
        public object SaveWW_EntrustProcessSendOutBill([FromBody] JObject msg)
        {
            var _value = msg["msg"].ToString();
            string msg1 = _value.ToString();
            string[] sArray = msg1.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries);
            string msg2 = sArray[0].ToString();
            string msg3 = sArray[1].ToString();
            string user = sArray[1].ToString();//用户名
            string UserName = "";
            ListModels oListModels = new ListModels();
            try
            {
                //判断是否有编辑权限
                if (!DBUtility.ClsPub.Security_Log("WW_EntrustProcessSendOutBill_Edit", 1, false, user))
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "无权限编辑!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                WebAPI.DLL.ClsWW_EntrustProcessSendOutBill Sendwork = new WebAPI.DLL.ClsWW_EntrustProcessSendOutBill();
                List<WebAPI.Models.ClsWW_EntrustProcessSendOutBillMain> lsmain = new List<WebAPI.Models.ClsWW_EntrustProcessSendOutBillMain>();
                msg2 = msg2.Replace("\\", "");
                msg2 = msg2.Replace("\n", "");
                lsmain = oListModels.getObjectByJson_WW_EntrustProcessSendOutBillMain(msg2);
                foreach (WebAPI.Models.ClsWW_EntrustProcessSendOutBillMain oItem in lsmain)
                {
                    UserName = oItem.HMaker;
                    oItem.HMakeDate = DBUtility.ClsPub.isStrNull(DateTime.Now.ToString("yyyy-MM-dd"));
                    oItem.HYear = DBUtility.ClsPub.isLong(DateTime.Now.Year);
                    oItem.HDate = DateTime.Now;
                    oItem.HMainSourceInterID = oItem.HInterID;
                    oItem.HInterID = 0;
                    Sendwork.omodel = oItem;
                }
                //表体数据
                //按 },{来拆分数组 //去掉【和】
                msg3 = msg3.Substring(1, msg3.Length - 2);
                msg3 = msg3.Replace("\\", "");
                msg3 = msg3.Replace("\n", "");  //\n
                List<WebAPI.Models.WW_EntrustProcSendWorkViewModel> ls = new List<WebAPI.Models.WW_EntrustProcSendWorkViewModel>();
                ls = oListModels.getObjectByJson_WW_EntrustProcSendWork(msg3);
                int i = 0;
                List<Models.ClsWW_EntrustProcessSendOutBillSub> lss = new List<Models.ClsWW_EntrustProcessSendOutBillSub>();
                foreach (WebAPI.Models.WW_EntrustProcSendWorkViewModel oItemSub in ls)
                {
                    i++;
                    Models.ClsWW_EntrustProcessSendOutBillSub sendworksub = new Models.ClsWW_EntrustProcessSendOutBillSub();
                    sendworksub.HProcID = 0;//--工序ID
                    sendworksub.HSourceInterID = (long)oItemSub.hmainid;//源单id
                    sendworksub.HSourceEntryID = (long)oItemSub.hsubid; //--源单子ID
                    sendworksub.HSourceBillNo = oItemSub.单据号; //--源单单号
                    sendworksub.HSourceBillType = oItemSub.HBillType; //--源单类型
                    sendworksub.HQty = (decimal)oItemSub.数量; //--数量
                    sendworksub.HICMOBillNo = "";  //--任务单号
                    sendworksub.HSeOrderBillNo = ""; //--销售订单号
                    sendworksub.HSeOrderEntryID = 0; //--销售子ID
                    sendworksub.HSeOrderInterID = 0; //--销售订单主ID
                    if (oItemSub.数量 <= 0)
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = "保存失败!第" + i.ToString() + "行数量不大于0无法保存!";
                        objJsonResult.data = 1;
                        return objJsonResult;
                    }
                    if (Convert.ToInt32(sendworksub.HQty) > Convert.ToInt32(oItemSub.数量))
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = "保存失败!第" + i.ToString() + "行委外汇报数量不能大于委外派工单数量!";
                        objJsonResult.data = 1;
                        return objJsonResult;
                    }
                    sendworksub.HEntryID = i;
                    sendworksub.HEntryCloseDate = DBUtility.ClsPub.isDate(DateTime.Now);
                    sendworksub.HRemark = "";
                    sendworksub.HCloseMan = "";
                    sendworksub.HCloseType = false;
                    lss.Add(sendworksub);//先把数据存放到派工单子表集合里
                }
                if (lss.Count > 0)
                {
                    //然后再循环保存到派工单子表的集合里
                    foreach (Models.ClsWW_EntrustProcessSendOutBillSub Itemsendwork in lss)
                    {
                        Sendwork.DetailColl.Add(Itemsendwork);
                    }
                }
                else
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "保存失败!lss集合小于0";
                    objJsonResult.data = 1;
                    return objJsonResult;
                }
                //保存
                //保存完毕后处理
                bool bResult;
                if (Sendwork.omodel.HInterID == 0)
                {
                    // bResult = oBill.AddBill(ref DBUtility.ClsPub.sExeReturnInfo);
                    bResult = Sendwork.AddBill(ref DBUtility.ClsPub.sExeReturnInfo);
                }
                else
                {
                    bResult = Sendwork.ModifyBill(Sendwork.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;
            }
        }
        /// <summary>
        /// PDA委外工序转出单保存
        /// </summary>
        /// <param name="msg"></param>
        /// <returns></returns>
        [Route("SaveWWSendOutBill")]
        [HttpPost]
        public object SaveWWSendOutBill([FromBody] JObject msg)
        {
            var _value = msg["msg"].ToString();
            string msg1 = _value.ToString();
            ListModels oListModels = new ListModels();
            try
            {
                WebAPI.DLL.ClsWW_EntrustProcessSendOutBill ReportModel = new WebAPI.DLL.ClsWW_EntrustProcessSendOutBill();
                List<WebAPI.Models.WWSendOutBillViewModel> ls = new List<WebAPI.Models.WWSendOutBillViewModel>();
                ls = oListModels.getObjectByJson_WWSendOutBill(msg1);
                int i = 0;
                foreach (Models.WWSendOutBillViewModel ItemView in ls)
                {
                    i++;
                    Models.ClsWW_EntrustProcessSendOutBillMain ReportMain = new Models.ClsWW_EntrustProcessSendOutBillMain();
                    Models.ClsWW_EntrustProcessSendOutBillSub ReportSub = new Models.ClsWW_EntrustProcessSendOutBillSub();
                    //工序转出单主表保存
                    ReportMain.HBillType = "3741";
                    ReportMain.HBillNo = ItemView.HBillNo;
                    ReportMain.HMakeDate = DBUtility.ClsPub.isStrNull(DateTime.Now.ToString("yyyy-MM-dd"));
                    ReportMain.HYear = DBUtility.ClsPub.isLong(DateTime.Now.Year);
                    ReportMain.HDate = DateTime.Now;
                    ReportMain.HMaker = "";
                    ReportMain.HCloseType = false;
                    ReportMain.HPrintQty = 0;
                    ReportMain.HMainSourceBillType = "3740";
                    ReportMain.HMainSourceInterID = 0;
                    ReportMain.HMainSourceBillNo = ItemView.HWW_BillNo;
                    ReportMain.HInterID = 0;
                    ReportMain.HPeriod = 1;
                    ReportMain.HBillSubType = "3741";
                    ReportMain.HBillStatus = 0;
                    ReportMain.HCheckItemNowID = 0;
                    ReportMain.HCheckItemNextID = 0;
                    ReportMain.HDeptID = Convert.ToInt32(ItemView.HDeptID);
                    ReportMain.HExplanation = "";
                    ReportMain.HInnerBillNo = "";
                    ReportMain.HSupID = Convert.ToInt32(ItemView.HSupID);
                    //保存到转出单主表
                    ReportModel.omodel = ReportMain;
                    ReportSub.HMaterID = Convert.ToInt32(ItemView.HMaterID);
                    ReportSub.HICMOBillNo = "";
                    ReportSub.HICMOInterID = 0;
                    ReportSub.HEntryID = i;
                    ReportSub.HEntryCloseDate = DBUtility.ClsPub.isDate(DateTime.Now);
                    ReportSub.HRemark = "";
                    ReportSub.HCloseMan = "";
                    ReportSub.HCloseType = false;
                    ReportSub.HSourceBillType = "3740";
                    ReportSub.HQty = Convert.ToDecimal(ItemView.HQty);
                    ReportSub.HProcID = Convert.ToInt32(ItemView.HProcID);
                    ReportSub.HSeOrderInterID = 0;
                    ReportSub.HSeOrderEntryID = 0;
                    ReportSub.HSeOrderBillNo = "";
                    ReportSub.HProcPlanInterID = 0;
                    ReportSub.HProcPlanBillNo = "";
                    ReportSub.HSourceInterID = 0;
                    ReportSub.HSourceBillNo = "";
                    ReportSub.HRelationQty = 0;
                    ReportSub.HRelationMoney = 0;
                    ReportSub.HPrice = 0;
                    ReportSub.HMoney = 0;
                    ReportSub.HProcPlanInterID = 0;
                    ReportSub.HProcPlanEntryID = 0;
                    ReportSub.HProcPlanBillNo = "";
                    ReportSub.HSourceEntryID = 0;
                    ReportSub.HSourceBillType = "";
                    ReportSub.HRelationQty = 0;
                    ReportSub.HRelationMoney = 0;
                    ReportSub.HPackType = "";
                    ReportSub.HBatchNo = "";
                    //保存到委外转出单子表
                    ReportModel.DetailColl.Add(ReportSub);
                }
                //保存
                //保存完毕后处理
                bool bResult;
                bResult = ReportModel.AddBill(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;
            }
        }
        /// <summary>
        /// 保存委外工单信息
        /// </summary>
        /// <param name="msg"></param>
        /// <returns></returns>
        [Route("SaveWWWorkOrder")]
        [HttpPost]
        public object SaveWWWorkOrder([FromBody] JObject msg)
        {
            var _value = msg["msg"].ToString();
            string msg1 = _value.ToString();
            string[] sArray = msg1.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries);
            string msg2 = sArray[0].ToString();
            string msg3 = sArray[1].ToString();
            string UserName = "";
            ListModels oListModels = new ListModels();
            try
            {
                WebAPI.DLL.ClsWW_EntrustWorkOrderBill WorkOrder = new WebAPI.DLL.ClsWW_EntrustWorkOrderBill();
                List<Models.ClsWW_EntrustWorkOrderBillMain> lsmain = new List<Models.ClsWW_EntrustWorkOrderBillMain>();
                msg2 = msg2.Replace("\\", "");
                msg2 = msg2.Replace("\n", "");
                lsmain = oListModels.getObjectByJson_WorkOrderMain(msg2);
                foreach (Models.ClsWW_EntrustWorkOrderBillMain oItem in lsmain)
                {
                    UserName = oItem.HMaker;
                    oItem.HMakeDate = DBUtility.ClsPub.isStrNull(DateTime.Now.ToString("yyyy-MM-dd"));
                    oItem.HYear = DBUtility.ClsPub.isLong(DateTime.Now.Year);
                    oItem.HDate = DateTime.Now;
                    oItem.HMainSourceInterID = oItem.HInterID;
                    oItem.HInterID = 0;
                    WorkOrder.omodel = oItem;
                }
                //表体数据
                //按 },{来拆分数组 //去掉【和】
                msg3 = msg3.Substring(1, msg3.Length - 2);
                msg3 = msg3.Replace("\\", "");
                msg3 = msg3.Replace("\n", "");  //\n
                List<WebAPI.Models.Sc_ProcessPlanViewModel> ls = new List<WebAPI.Models.Sc_ProcessPlanViewModel>();
                ls = oListModels.getObjectByJson_SendWorkSub(msg3);
                int i = 0;
                List<Models.ClsWW_EntrustWorkOrderBillSub> lss = new List<Models.ClsWW_EntrustWorkOrderBillSub>();
                foreach (WebAPI.Models.Sc_ProcessPlanViewModel oItemSub in ls)
                {
                    i++;
                    Models.ClsWW_EntrustWorkOrderBillSub WorkOrdersub = new Models.ClsWW_EntrustWorkOrderBillSub();
                    WorkOrdersub.HProcID = oItemSub.hprocid.Value;//--工序ID
                    WorkOrdersub.HSourceInterID = oItemSub.hmainid.Value; //--源单id
                    WorkOrdersub.HSourceEntryID = oItemSub.hsubid.Value; //--源单子ID
                    WorkOrdersub.HSourceBillNo = oItemSub.单据号; //--源单单号
                    WorkOrdersub.HSourceBillType= oItemSub.HBillType; //--源单类型
                    WorkOrdersub.HRelationQty = 0;  //--关联数量
                    WorkOrdersub.HRelationMoney = 0; //--关联金额
                    WorkOrdersub.HOrderBillNo = ""; //--销售订单号
                    WorkOrdersub.HMaterLenModel = ""; //--材质
                    WorkOrdersub.HMaterQty = 0; //--材质数量
                    WorkOrdersub.HMaterID = oItemSub.HMaterID.Value; //--物料
                    WorkOrdersub.HQty = (double)oItemSub.计划数量; //--订单数量
                    WorkOrdersub.HEntrustType = "3739"; //--委外类型
                    WorkOrdersub.HNextProcName = ""; //--下道工序
                    WorkOrdersub.HPrice =0; //加工费
                    WorkOrdersub.HOutQty = 0;  //--关联发出数量
                    WorkOrdersub.HInQty =0; //--关联接收数量
                    WorkOrdersub.HBackSupDate = DateTime.Now; //--实际交货日期
                    WorkOrdersub.HInDate = DateTime.Now; //--交货日期
                    WorkOrdersub.HWorkProcFlow = ""; //--工艺流
                    WorkOrdersub.HLeftMater = ""; //--余料情况
                    if (oItemSub.计划数量 <= 0)
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = "保存失败!第" + i.ToString() + "行数量不大于0无法保存!";
                        objJsonResult.data = 1;
                        return objJsonResult;
                    }
                    if (Convert.ToInt32(WorkOrdersub.HQty) > Convert.ToInt32(oItemSub.计划数量))
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = "保存失败!第" + i.ToString() + "行派工数量不能大于计划单数量!";
                        objJsonResult.data = 1;
                        return objJsonResult;
                    }
                    WorkOrdersub.HEntryID = i;
                    WorkOrdersub.HEntryCloseDate = DBUtility.ClsPub.isDate(DateTime.Now);
                    WorkOrdersub.HRemark = "";
                    WorkOrdersub.HCloseMan = "";
                    WorkOrdersub.HCloseType = false;
                    WorkOrdersub.HSourceBillType = oItemSub.HBillType;
                    lss.Add(WorkOrdersub);//先把数据存放到委外工单子表集合里
                }
                if (lss.Count > 0)
                {
                    //然后再循环保存到委外工单子表的集合里
                    foreach (Models.ClsWW_EntrustWorkOrderBillSub Itemsendwork in lss)
                    {
                        WorkOrder.DetailColl.Add(Itemsendwork);
                    }
                }
                else
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "保存失败!lss集合小于0";
                    objJsonResult.data = 1;
                    return objJsonResult;
                }
                //保存
                //保存完毕后处理
                bool bResult;
                if (WorkOrder.omodel.HInterID == 0)
                {
                    // bResult = oBill.AddBill(ref DBUtility.ClsPub.sExeReturnInfo);
                    bResult = WorkOrder.AddBill(ref DBUtility.ClsPub.sExeReturnInfo);
                }
                else
                {
                    bResult = WorkOrder.ModifyBill(WorkOrder.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;
            }
        }
    }
}