yxj
2023-07-04 6b2c7a19f95349edd1de84e3a2d857403abc6e1b
WebAPI/Controllers/Éú²ú¹ÜÀí/Éú²úÈÎÎñµ¥/Sc_ICMOBillController.cs
@@ -1,4 +1,7 @@
using Newtonsoft.Json.Linq;
using Model;
using Model.生产管理;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using Pub_Class;
using System;
using System.Collections;
@@ -6,6 +9,7 @@
using System.Data;
using System.Data.SqlClient;
using System.Web.Http;
using System.Windows.Forms;
using WebAPI.Models;
namespace WebAPI.Controllers
@@ -20,6 +24,804 @@
        SQLHelper.ClsCN oCN = new SQLHelper.ClsCN();
        DataSet ds;
        //获取系统参数
        Pub_Class.ClsXt_SystemParameter oSystemParameter = new Pub_Class.ClsXt_SystemParameter();
        public DAL.ClsSc_ICMOBill BillOld = new DAL.ClsSc_ICMOBill();
        #region ç”Ÿäº§ä»»åŠ¡å• ä¿å­˜/编辑功能
        [Route("Sc_ICMOBill/ICMOBillEdit")]
        [HttpPost]
        public object ICMOBillEdit([FromBody] JObject sMainSub)
        {
            try
            {
                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;
            }
            catch (Exception e)
            {
                oCN.RollBack();
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "保存失败!" + e.ToString();
                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 OperationType = int.Parse(sArray[2].ToString()); // æ•°æ®ç±»åž‹ 1添加 2复制 3修改
            string user = sArray[3].ToString();
            try
            {
                if (!DBUtility.ClsPub.Security_Log("Sc_ICMOBill_Edit", 1, false, user))
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "无保存权限!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                msg2 = "[" + msg2.ToString() + "]";
                List<ClsSc_ICMOBillMain> mainList = Newtonsoft.Json.JsonConvert.DeserializeObject<List<ClsSc_ICMOBillMain>>(msg2);
                long HInterID = mainList[0].HInterID;//递入type得到的单据ID
                string HBillNo = mainList[0].HBillNo;//递入type得到的单据号
                long HPRDORGID = mainList[0].HPRDORGID;//组织
                DateTime HDate = mainList[0].HDate;//日期
                string HRemark = mainList[0].HRemark;//备注
                string HSeOrderBillNo = mainList[0].HSeOrderBillNo;//销售订单号
                long HSeOrderInterID = mainList[0].HSeOrderInterID;//销售订主id
                long HSeOrderEntryID = mainList[0].HSeOrderEntryID;//销售订子id
                long HEmpID = mainList[0].HEmpID;//业务员
                long HCusID = mainList[0].HCusID;//客户
                long HCenterID = mainList[0].HCenterID;//工作中心
                double? HPlanQty = mainList[0].HPlanQty == null ? 0 : mainList[0].HPlanQty;//计划数量
                string HMaker = user;//制单人
                long HISENTRUST = mainList[0].HISENTRUST == null ? 0 : mainList[0].HISENTRUST;//组织受托加工
                long HISREWORK = mainList[0].HISREWORK == null ? 0 : mainList[0].HISREWORK;//是否返工
                ds = oCN.RunProcReturn("select * from h_v_IF_ICMOBillList where hmainid=" + HInterID + " and å•据号='" + HBillNo + "'", "h_v_IF_ICMOBillList");
                if ((OperationType == 1 || OperationType == 2) && ds.Tables[0].Rows.Count == 0)//新增
                {
                    //主表
                    oCN.RunProc(@"Insert Into Sc_ICMOBillMain
                        (HBillType,HBillStatus,HInterID,HBillNo,HDate,HPRDORGID
                        ,HYear,HPeriod,HRemark,HMaker,HMakeDate
                        ,HSeOrderBillNo,HSeOrderInterID,HSeOrderEntryID,HEmpID,HCusID
                        ,HCenterID,HPlanQty,HDeptID,HMaterID,HUnitID,HBomID,HPlanBeginDate,HPlanEndDate,HISENTRUST,HISREWORK)
                        values('3710',1," + HInterID + ",'" + HBillNo + "','" + HDate + "'," + HPRDORGID +
                    "," + DateTime.Now.Year + "," + DateTime.Now.Month + ",'" + HRemark + "','" + HMaker + "',getdate()" +
                    ",'" + HSeOrderBillNo + "'," + HSeOrderInterID + "," + HSeOrderEntryID + "," + HEmpID + "," + HCusID +
                    "," + HCenterID + "," + HPlanQty + ",0,0,0,0,'',''" + "," + HISENTRUST + "," + HISREWORK + ") ");
                }
                else if (OperationType == 3 || ds.Tables[0].Rows.Count != 0)
                {
                    if (ds.Tables[0].Rows[0]["审核人"].ToString() != "")
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = "单据已审核,不允许修改!";
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
                    //修改
                    oCN.RunProc("update Sc_ICMOBillMain  set " +
                                "HRemark='" + HRemark + "', HChecker='" + HMaker + "', HCheckDate=getdate()" +
                                ", HSeOrderBillNo='" + HSeOrderBillNo + "', HSeOrderInterID=" + HSeOrderInterID + ", HSeOrderEntryID=" + HSeOrderEntryID + ", HEmpID=" + HEmpID + ", HCusID=" + HCusID + "" +
                                ", HCenterID=" + HCenterID + ", HPlanQty=" + HPlanQty + " where HInterID=" + HInterID);
                    //删除子表
                    oCN.RunProc("delete from Sc_ICMOBillSub where HInterID='" + HInterID + "'");
                }
                //保存子表
                objJsonResult = AddBillSub(msg3, HInterID, OperationType);
                if (objJsonResult.code == "0")
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = objJsonResult.Message;
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                //修改字段 HSTOCKINORGID
                oCN.RunProc("update Sc_ICMOBillSub set HSTOCKINORGID=" + HPRDORGID + " where HInterID=" + HInterID);
                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, long HInterID, int OperationType)
        {
            List<ClsSc_ICMOBillSub> DetailColl = Newtonsoft.Json.JsonConvert.DeserializeObject<List<ClsSc_ICMOBillSub>>(msg3);
            string HINSTOCKTYPE = DetailColl[0].HINSTOCKTYPE == null ? "''" : DetailColl[0].HINSTOCKTYPE;      //入库类型,
            long HCHECKPRODUCT = DetailColl[0].HCHECKPRODUCT == null ? 0 : DetailColl[0].HCHECKPRODUCT;      //产品检验,
            string HQAIP = DetailColl[0].HQAIP == null ? "''" : DetailColl[0].HQAIP;    //紧急放行,
            long HISBACKFLUSH = DetailColl[0].HISBACKFLUSH == null ? 0 : DetailColl[0].HISBACKFLUSH;      //倒冲领料,
            string HREQSRC = DetailColl[0].HREQSRC == null ? "''" : DetailColl[0].HREQSRC;  //需求来源,
            double HSTOCKINQUASELAUXQTY = DetailColl[0].HSTOCKINQUASELAUXQTY == null ? 0 : DetailColl[0].HSTOCKINQUASELAUXQTY;  //合格品入库选单数量,
            long HSeOrderEntrySEQ = DetailColl[0].HSeOrderEntrySEQ == null ? 0 : DetailColl[0].HSeOrderEntrySEQ;      //销售订单行号,
            string HPROJECTNO = DetailColl[0].HPROJECTNO == null ? "''" : DetailColl[0].HPROJECTNO;   //项目编号,
            long HPRODUCTTYPE = DetailColl[0].HPRODUCTTYPE == null ? 0 : DetailColl[0].HPRODUCTTYPE;         //产品类型,
            double HCOSTRATE = DetailColl[0].HCOSTRATE == null ? 0 : DetailColl[0].HCOSTRATE;         // æƒé‡,
            long HBASEUNITID = DetailColl[0].HBASEUNITID == null ? 0 : DetailColl[0].HBASEUNITID;       //基本计量单位,
            int i = 0;
            foreach (ClsSc_ICMOBillSub oSub in DetailColl)
            {
                i++;
                if (oSub.HQty <= 0 || oSub.HQty == null)
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "第" + i + "行,数量不能为0或者小于0";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                if (oSub.HMaterID == 0)
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "第" + i + "行,物料不能为空";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                //if (oSub.HSourceID == 0)
                //{
                //    objJsonResult.code = "0";
                //    objJsonResult.count = 0;
                //    objJsonResult.Message = "第" + i + "行,生产资源不能为空";
                //    objJsonResult.data = null;
                //    return objJsonResult;
                //}
                if (oSub.HDeptID == 0)
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "第" + i + "行,生产车间不能为空";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                if (oSub.HUnitID == 0)
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "第" + i + "行,计量单位不能为空";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                oCN.RunProc($@"Insert into Sc_ICMOBillSub
                (HInterID,HENTRYID,HQty
                ,HPlanBeginDate,HPlanEndDate
               ,HBeginDate,HEndDate
                ,HMaterID,HUnitID,HRemark,HSourceID,HDeptID,HSTATUS
            ,HSourceInterID,HSourceEntryID,HSourceBillNo,HSourceBillType,HRelationQty,HRelationMoney
                ,HINSTOCKTYPE,HCHECKPRODUCT,HQAIP,HISBACKFLUSH,HREQSRC,HSTOCKINQUASELAUXQTY,HSeOrderEntrySEQ,HPROJECTNO,HPRODUCTTYPE,HCOSTRATE,HBASEUNITID
                ,HSTOCKINORGID)
                 values({HInterID},{i},{(oSub.HQty == null ? 0 : oSub.HQty)}
                ,'{(oSub.HPlanBeginDate == null ? DateTime.Now.ToString("yyyy-MM-dd") : oSub.HPlanBeginDate.ToString())}','{(oSub.HPlanEndDate == null ? DateTime.Now.AddDays(1).ToString("yyyy-MM-dd") : oSub.HPlanEndDate.ToString())}'
                ,'{(oSub.HPlanBeginDate == null ? DateTime.Now.ToString("yyyy-MM-dd") : oSub.HPlanBeginDate.ToString())}','{(oSub.HPlanEndDate == null ? DateTime.Now.AddDays(1).ToString("yyyy-MM-dd") : oSub.HPlanEndDate.ToString())}'
                ,{oSub.HMaterID},{oSub.HUnitID},'{oSub.HRemark}',{oSub.HSourceID},{oSub.HDeptID},{oSub.HSTATUS}
                       ,0,0,'','',0,0,{HINSTOCKTYPE},{HCHECKPRODUCT},{HQAIP},{HISBACKFLUSH},{HREQSRC},{HSTOCKINQUASELAUXQTY},{HSeOrderEntrySEQ},{HPROJECTNO},{HPRODUCTTYPE},{HCOSTRATE},{HBASEUNITID},{oSub.HSTOCKINORGID})");
            }
            objJsonResult.code = "1";
            objJsonResult.count = 1;
            objJsonResult.Message = null;
            objJsonResult.data = null;
            return objJsonResult;
        }
        #endregion
        [Route("Sc_ICMOBill/ICMOBillSaveApi")]
        [HttpPost]
        public object ICMOBillSaveApi([FromBody] JObject sMainSub)
        {
            try
            {
                //LogService.Write(sMainSub.ToString());
                var model = sMainSub["model"].ToString();
                var entry = sMainSub["model"]["HENTRY"].ToString();
                var _model = sMainSub["model"]["HPPBOMMAINENTRY"].ToString();
                var _entry = sMainSub["model"]["HPPBOMSUBENTRY"].ToString();
                model = "[" + model.ToString() + "]";
                List<ClsSc_ICMOBillMain> mainList = Newtonsoft.Json.JsonConvert.DeserializeObject<List<ClsSc_ICMOBillMain>>(model);
                List<ClsSc_ICMOBillSub> subList = Newtonsoft.Json.JsonConvert.DeserializeObject<List<ClsSc_ICMOBillSub>>(entry);
                List<ClsSc_PPBomBillMain> _mainList = Newtonsoft.Json.JsonConvert.DeserializeObject<List<ClsSc_PPBomBillMain>>(_model);
                List<ClsSc_PPBomBillSub> _subList = Newtonsoft.Json.JsonConvert.DeserializeObject<List<ClsSc_PPBomBillSub>>(_entry);
                string sql = string.Empty;
                oCN.BeginTran();
                sql = $"delete Sc_ICMOBillMain where HinterID = {mainList[0].HInterID}";
                oCN.RunProc(sql);
                sql = $"delete Sc_ICMOBillSub where HinterID = {mainList[0].HInterID}";
                oCN.RunProc(sql);
                //主表
                oCN.RunProc(@"Insert Into Sc_ICMOBillMain
                        (HBillType,HInterID,HBillNo,HDate,HPRDORGID
                        ,HYear,HPeriod,HRemark,HMaker,HMakeDate
                        ,HSeOrderBillNo,HSeOrderInterID,HSeOrderEntryID,HEmpID,HCusID
                        ,HCenterID,HPlanQty,HDeptID,HMaterID,HUnitID,HBomID,HPlanBeginDate,HPlanEndDate,HBillStatus
                        ,HOWNERID,HOWNERTYPEID)
                        values('3710'," + mainList[0].HInterID + ",'" + mainList[0].HBillNo + "','" + mainList[0].HDate + "'," + mainList[0].HPRDORGID +
                "," + DateTime.Now.Year + "," + DateTime.Now.Month + ",'" + mainList[0].HRemark + "','" + mainList[0].HMaker + "',getdate()" +
                ",'" + mainList[0].HSeOrderBillNo + "'," + mainList[0].HSeOrderInterID + "," + mainList[0].HSeOrderEntryID + "," + mainList[0].HEmpID + "," + mainList[0].HCusID +
                "," + mainList[0].HCenterID + "," + mainList[0].HPlanQty + ",0,0,0,0,'','',2" +
                ","+ mainList[0].HOWNERID + ",'"+ mainList[0].HOWNERTYPEID + "') ");
                //保存主表
                foreach (var oSub in subList)
                {
                    oCN.RunProc($@"Insert into Sc_ICMOBillSub
                (HInterID,HENTRYID,HQty
                ,HPlanBeginDate,HPlanEndDate
               ,HBeginDate,HEndDate
                ,HMaterID,HUnitID,HRemark,HSourceID,HDeptID,HSTATUS
            ,HSourceInterID,HSourceEntryID,HSourceBillNo,HSourceBillType,HRelationQty,HRelationMoney
                ,HCOSTRATE,HISBACKFLUSH,HBatchNo,HBomID,HCHECKPRODUCT,HSEQ,HSTOCKINORGID)
                 values({oSub.HInterID},{oSub.HEntryID},{(oSub.HQty == null ? 0 : oSub.HQty)}
                ,'{(oSub.HPlanBeginDate == null ? DateTime.Now.ToString("yyyy-MM-dd") : oSub.HPlanBeginDate.ToString())}','{(oSub.HPlanEndDate == null ? DateTime.Now.AddDays(1).ToString("yyyy-MM-dd") : oSub.HPlanEndDate.ToString())}'
                ,'{(oSub.HPlanBeginDate == null ? DateTime.Now.ToString("yyyy-MM-dd") : oSub.HPlanBeginDate.ToString())}','{(oSub.HPlanEndDate == null ? DateTime.Now.AddDays(1).ToString("yyyy-MM-dd") : oSub.HPlanEndDate.ToString())}'
                ,{oSub.HMaterID},{oSub.HUnitID},'{oSub.HRemark}',{oSub.HSourceID},{oSub.HDeptID},'{oSub.HSTATUS}'
                       ,0,0,'','',0,0
                ,{oSub.HCOSTRATE},{oSub.HISBACKFLUSH},'{oSub.HBatchNo}',{oSub.HBomID},{oSub.HCHECKPRODUCT},{oSub.HSEQ},{oSub.HSTOCKINORGID})");
                }
                foreach (var _item in _mainList)
                {
                    //生产用料清单
                    sql = $"delete Sc_PPBomBillMain where HinterID = {_item.HInterID}";
                    oCN.RunProc(sql);
                    sql = $"delete Sc_PPBomBillSub where HinterID = {_item.HInterID}";
                    oCN.RunProc(sql);
                    //主表
                    oCN.RunProc(@"Insert Into Sc_PPBomBillMain
                        (HInterID,HYear,HPeriod,HBillType,HBillSubType,HDate,HBillNo,HBillStatus,HICMOInterID
                        ,HICMOEntryID,HMaterID,HUnitID,HQty,HDeptID,HMaker,HMakeDate,HChecker,HCheckDate
                        ,HSeOrderBillNo,HSeOrderInterID,HSeOrderEntryID,HPRDORGID,HENTRUSTORGID,HPARENTOWNERID
                        ,HPARENTOWNERTYPEID,HERPInterID,HERPBillType,HSeOrderEntrySEQ,HICMOEntrySEQ,HREQSRC)
                        values(" + _item.HInterID + "," + DateTime.Now.Year + "," + DateTime.Now.Month + ",'" + 3720 + "','" +
                    _item.HBillSubType + "','" + _item.HDate + "','" + _item.HBillNo + "','" + _item.HBillStatus + "'," + _item.HICMOInterID +
                    "," + _item.HICMOEntryID + ",'" + _item.HMaterID + "'," + _item.HUnitID + "," + _item.HQty + "," + _item.HDeptID +
                    ",'" + _item.HMaker + "','" + _item.HMakeDate + "','" + _item.HChecker + "','" + _item.HCheckDate + "','" + _item.HSeOrderBillNo + "'," + _item.HSeOrderInterID + "," + _item.HSeOrderEntryID + "," + _item.HPRDORGID + "," + _item.HENTRUSTORGID + "," + _item.HPARENTOWNERID + ",'" +
                    _item.HPARENTOWNERTYPEID + "'," + _item.HERPInterID + ",'" + _item.HERPBillType + "'," + _item.HSeOrderEntrySEQ + "," + _item.HICMOEntrySEQ + ",'" + _item.HREQSRC + "')");
                }
                foreach (var oSub in _subList)
                {
                    oCN.RunProc($@"Insert into Sc_PPBomBillSub
                (HInterID,HEntryID,HMaterID,HMaterNumber,HUnitID,HUnitNumber,HSPID,HQty,HQtyMust,HWHID,HRemark
               ,HSourceInterID,HSourceEntryID,HSourceBillNo,HSourceBillType,HICMOInterID,HICMOEntryID,HICMOBillNo
               ,HCHILDSUPPLYORGID,HSUPPLYORGID,HENTRUSTPICKORGID,HSRCTRANSORGID,HGROUPBYOWNERID,HOWNERID,HOWNERTYPEID
               ,HRelationQty,HMoveStockQty,HAuxPropID,HBatchNO,HMTONo,HQtyScrap,HERPInterID,HERPEntryID
               ,HBackRelationQty,HNumerator,HDenominator,HBASEUNITID,HProcessID,HICMOENTRYSEQ,HPROJECTNO
                ,HOPERID,HSEQ,HSTOCKSTATUSID,HLOT,HOPTQUEUE,HRESERVETYPE,HSelPickedQty,HSELPRCDRETURNQTY,HProcName)
                 values('{oSub.HInterID}','{oSub.HEntryID}','{oSub.HMaterID}','{oSub.HMaterNumber}','{oSub.HUnitID}','{oSub.HUnitNumber}','{oSub.HSPID}','{oSub.HQty}'
                ,'{oSub.HQtyMust}','{oSub.HWHID}','{oSub.HRemark}','{oSub.HSourceInterID}','{oSub.HSourceEntryID}','{oSub.HSourceBillNo}','{oSub.HSourceBillType}','{oSub.HICMOInterID}','{oSub.HICMOEntryID}','{oSub.HICMOBillNo}','{oSub.HCHILDSUPPLYORGID}','{oSub.HSUPPLYORGID}','{oSub.HENTRUSTPICKORGID}','{oSub.HSRCTRANSORGID}','{oSub.HGROUPBYOWNERID}','{oSub.HOWNERID}','{oSub.HOWNERTYPEID}','{oSub.HRelationQty}','{oSub.HMoveStockQty}','{oSub.HAuxPropID}','{oSub.HBatchNO}','{oSub.HMTONo}','{Convert.ToDecimal(oSub.HQtyScrap)}','{oSub.HERPInterID}','{oSub.HERPEntryID}','{oSub.HBackRelationQty}','{oSub.HNumerator}','{oSub.HDenominator}','{oSub.HBASEUNITID}','{oSub.HProcessID}','{oSub.HICMOENTRYSEQ}','{oSub.HPROJECTNO}','{oSub.HOPERID}','{oSub.HSEQ}','{oSub.HSTOCKSTATUSID}','{oSub.HLOT}','{oSub.HOPTQUEUE}','{oSub.HRESERVETYPE}','{oSub.HSelPickedQty}','{oSub.HSELPRCDRETURNQTY}','{oSub.HProcName}')");
                }
                oCN.Commit();
                objJsonResult.code = "1";
                objJsonResult.count = 1;
                objJsonResult.Message = "单据保存成功!";
                objJsonResult.data = null;
                return objJsonResult;
            }
            catch (Exception e)
            {
                LogService.Write(e.Message.ToString());
                oCN.RollBack();
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "保存失败!" + e.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        #region ç”Ÿäº§ä»»åŠ¡å•(无列表) ä¿å­˜/编辑功能
        [Route("Sc_ICMOBill/ICMOBillEdit_NoTable")]
        [HttpPost]
        public object ICMOBillEdit_NoTable([FromBody] JObject sMainSub)
        {
            try
            {
                var _value = sMainSub["sMainSub"].ToString();
                string msg1 = _value.ToString();
                oCN.BeginTran();
                //保存主表
                objJsonResult = AddBillMain_NoTable(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;
            }
            catch (Exception e)
            {
                oCN.RollBack();
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "保存失败!" + e.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        public json AddBillMain_NoTable(string msg1)
        {
            string[] sArray = msg1.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries);
            string msg2 = sArray[0].ToString(); //主表数据
            int OperationType = int.Parse(sArray[1].ToString()); // æ•°æ®ç±»åž‹ 1添加 3修改
            string user = sArray[2].ToString();
            int HEntryID = int.Parse(sArray[3].ToString());
            string HComputerName = SystemInformation.ComputerName; //设备名称
            try
            {
                if (!DBUtility.ClsPub.Security_Log("Sc_ICMOBill_Edit", 1, false, user))
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "无保存权限!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                var msg3 = msg2.ToString();
                msg2 = "[" + msg2.ToString() + "]";
                List<ClsSc_ICMOBillMain> mainList = Newtonsoft.Json.JsonConvert.DeserializeObject<List<ClsSc_ICMOBillMain>>(msg2);
                long HInterID = mainList[0].HInterID;//递入type得到的单据ID
                string HBillNo = mainList[0].HBillNo;//递入type得到的单据号
                long HPRDORGID = mainList[0].HPRDORGID;//组织
                DateTime HDate = mainList[0].HDate;//日期
                string HRemark = mainList[0].HRemark;//备注
                string HSeOrderBillNo = mainList[0].HSeOrderBillNo;//销售订单号
                long HSeOrderInterID = mainList[0].HSeOrderInterID;//销售订主id
                long HSeOrderEntryID = mainList[0].HSeOrderEntryID;//销售订子id
                long HEmpID = mainList[0].HEmpID;//业务员
                long HCusID = mainList[0].HCusID;//客户
                long HCenterID = mainList[0].HCenterID;//工作中心
                long HBomID = mainList[0].HBomID;//bom
                //double? HPlanQty = mainList[0].HPlanQty == null ? 0 : mainList[0].HPlanQty;//计划数量
                string HMaker = user;//制单人
                string HIsStockQty = mainList[0].HIsStockQty;
                string HRemark3 = mainList[0].HRemark3;
                ds = oCN.RunProcReturn("select * from h_v_IF_ICMOBillList where hmainid=" + HInterID + " and å•据号='" + HBillNo + "'", "h_v_IF_ICMOBillList");
                if ((OperationType == 1 || OperationType == 2) && ds.Tables[0].Rows.Count == 0)//新增
                {
                    //主表
                    oCN.RunProc(@"Insert Into Sc_ICMOBillMain
                        (HBillType,HBillStatus,HInterID,HBillNo,HDate,HPRDORGID
                        ,HYear,HPeriod,HRemark,HMaker,HMakeDate
                        ,HSeOrderBillNo,HSeOrderInterID,HSeOrderEntryID,HEmpID,HCusID
                        ,HCenterID,HPlanQty,HDeptID,HMaterID,HUnitID,HBomID,HPlanBeginDate,HPlanEndDate
                        ,HIsStockQty,HRemark3)
                        values('3710',1," + HInterID + ",'" + HBillNo + "','" + HDate + "'," + HPRDORGID +
                    "," + DateTime.Now.Year + "," + DateTime.Now.Month + ",'" + HRemark + "','" + HMaker + "',getdate()" +
                    ",'" + HSeOrderBillNo + "'," + HSeOrderInterID + "," + HSeOrderEntryID + "," + HEmpID + "," + HCusID +
                    "," + HCenterID + ",0,0,0,0," + HBomID + ",'',''" +
                    ",'"+ HIsStockQty + "','"+ HRemark3 + "') ");
                    LogService.Write("用户:" + user + ",日期:" + DateTime.Now + ",新增生产订单单据:" + HBillNo);
                    oCN.RunProc("Insert into System_log (GeginDate, userid, WorkstationName, WorkList, SystemName, NetuserName, State) select GETDATE(),'" + user + "','" + HComputerName + "','" + "新增生产订单单据:" + HBillNo + "','LMES-生产订单模块','" + DBUtility.ClsPub.IPAddress + "','新增单据'", ref DBUtility.ClsPub.sExeReturnInfo);
                }
                else if (OperationType == 3 || ds.Tables[0].Rows.Count != 0)
                {
                    if (ds.Tables[0].Rows[0]["审核人"].ToString() != "")
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = "单据已审核,不允许修改!";
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
                    //修改
                    oCN.RunProc("update Sc_ICMOBillMain  set " +
                                "HRemark='" + HRemark + "', HUpDater='" + HMaker + "', HUpDateDate=getdate()" +
                                ", HSeOrderBillNo='" + HSeOrderBillNo + "', HSeOrderInterID=" + HSeOrderInterID + ", HSeOrderEntryID=" + HSeOrderEntryID + ", HEmpID=" + HEmpID + ", HCusID=" + HCusID +
                                ", HCenterID=" + HCenterID + ",HBomID=" + HBomID + ",HIsStockQty='"+ HIsStockQty + "',HRemark3='" + HRemark3 + "' where HInterID=" + HInterID);
                    //删除子表
                    oCN.RunProc("delete from Sc_ICMOBillSub where HInterID='" + HInterID + "' and HEntryID='" + HEntryID + "'");
                    LogService.Write("用户:" + user + ",日期:" + DateTime.Now + ",修改生产订单单据:" + HBillNo);
                    oCN.RunProc("Insert into System_log (GeginDate, userid, WorkstationName, WorkList, SystemName, NetuserName, State) select GETDATE(),'" + user + "','" + HComputerName + "','" + "修改生产订单单据:" + HBillNo + "','LMES-生产订单模块','" + DBUtility.ClsPub.IPAddress + "','修改单据'", ref DBUtility.ClsPub.sExeReturnInfo);
                }
                //保存子表
                objJsonResult = AddBillSub_NoTable(msg3, HInterID, OperationType, 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_NoTable(string msg3, long HInterID, int OperationType,int HEntryID)
        {
            ClsSc_ICMOBillSub oSub = Newtonsoft.Json.JsonConvert.DeserializeObject<ClsSc_ICMOBillSub>(msg3);
            if (oSub.HQty <= 0 || oSub.HQty == null)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "数量不能为0或者小于0";
                objJsonResult.data = null;
                return objJsonResult;
            }
            if (oSub.HMaterID == 0)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "物料不能为空";
                objJsonResult.data = null;
                return objJsonResult;
            }
            if (oSub.HUnitID == 0)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "计量单位不能为空";
                objJsonResult.data = null;
                return objJsonResult;
            }
            //if (oSub.HBomID == 0)
            //{
            //    objJsonResult.code = "0";
            //    objJsonResult.count = 0;
            //    objJsonResult.Message = "BOM不能为空";
            //    objJsonResult.data = null;
            //    return objJsonResult;
            //}
            oCN.RunProc($@"Insert into Sc_ICMOBillSub
                (HInterID,HENTRYID,HQty
                ,HPlanBeginDate,HPlanEndDate
               ,HBeginDate,HEndDate
                ,HMaterID,HUnitID,HRemark,HSourceID,HDeptID,HSTATUS
                ,HBomID,HEntryCusID,HSTOCKINORGID
            ,HSourceInterID,HSourceEntryID,HSourceBillNo,HSourceBillType,HRelationQty,HRelationMoney
                ,HAuxQty,HAuxUnit,HWidth,HWeight,HColorRemark)
                 values({HInterID},{HEntryID},{(oSub.HQty == null ? 0 : oSub.HQty)}
                ,'{(oSub.HPlanBeginDate == null ? DateTime.Now.ToString("yyyy-MM-dd") : oSub.HPlanBeginDate.ToString())}','{(oSub.HPlanEndDate == null ? DateTime.Now.AddDays(1).ToString("yyyy-MM-dd") : oSub.HPlanEndDate.ToString())}'
                ,'{(oSub.HBeginDate == null ? DateTime.Now.ToString("yyyy-MM-dd") : oSub.HBeginDate.ToString())}','{(oSub.HEndDate == null ? DateTime.Now.AddDays(1).ToString("yyyy-MM-dd") : oSub.HEndDate.ToString())}'
                ,{oSub.HMaterID},{oSub.HUnitID},'{oSub.HRemark}',{oSub.HSourceID},{oSub.HDeptID},{oSub.HSTATUS}
                 ,{oSub.HBomID}  ,{oSub.HCusID} ,{oSub.HSTOCKINORGID}
                       ,0,0,'','',0,0
                ,{oSub.HAuxQty},{oSub.HAuxUnit},{oSub.HWidth},{oSub.HWeight},'{oSub.HColorRemark}')");
            objJsonResult.code = "1";
            objJsonResult.count = 1;
            objJsonResult.Message = null;
            objJsonResult.data = null;
            return objJsonResult;
        }
        #endregion
        #region ç”Ÿäº§ä»»åŠ¡å•å®¡æ ¸/反审核功能
        [Route("Sc_ICMOBill/CheckSc_ICMOReportBill")]
        [HttpGet]
        public object CheckSc_ICMOReportBill(string HInterID,int Type, string user)
        {
            try
            {
                //判断是否有删除权限
                if (!DBUtility.ClsPub.Security_Log("Sc_ICMOBill_Check", 1, false, user))
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "无权限审核!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                if (string.IsNullOrWhiteSpace(HInterID))
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "HInterID为空!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                ClsPub.CurUserName = user;
                oCN.BeginTran();//开始事务
                //Type 1 å®¡æ ¸  2  åå®¡æ ¸
                if (Type == 1)
                {
                    if (!BillOld.CheckBill(int.Parse(HInterID), ref ClsPub.sExeReturnInfo))
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 1;
                        objJsonResult.Message = "审核失败!原因:" + ClsPub.sExeReturnInfo;
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
                }
                else
                {
                    if (BillOld.AbandonCheck(int.Parse(HInterID), ref ClsPub.sExeReturnInfo))
                    {
                        SQLHelper.ClsCN oCn = new SQLHelper.ClsCN();
                        DataSet DSet = oCn.RunProcReturn("exec h_p_Sc_ICMOBill_AbandonCheckCtrl " + int.Parse(HInterID), "h_p_Sc_ICMOBill_AbandonCheckCtrl");
                        //if (DBUtility.ClsPub.isInt(DSet.Tables[0].Rows[0]["Hback"]) != 0)
                        //{
                        //    objJsonResult.code = "0";
                        //    objJsonResult.count = 1;
                        //    objJsonResult.Message = "该任务单已下推流转卡,不允许反审核" + DBUtility.ClsPub.isStrNull(DSet.Tables[0].Rows[0]["HBackRemark"]);
                        //    objJsonResult.data = null;
                        //    return objJsonResult;
                        //}
                    }
                    else
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 1;
                        objJsonResult.Message = "审核失败!原因:" + ClsPub.sExeReturnInfo;
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
                }
                oCN.Commit();//提交事务
                objJsonResult.code = "0";
                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;
            }
        }
        #endregion
        #region ç”Ÿäº§ä»»åŠ¡å•å…³é—­/反关闭功能
        [Route("Sc_ICMOBill/CloseSc_ICMOReportBill")]
        [HttpGet]
        public object CloseSc_ICMOReportBill(string HInterID, int Type, string user)
        {
            try
            {
                //判断是否有删除权限
                if (!DBUtility.ClsPub.Security_Log("Sc_ICMOBill_Close", 1, false, user))
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "无权限关闭!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                if (string.IsNullOrWhiteSpace(HInterID))
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "HInterID为空!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                ClsPub.CurUserName = user;
                oCN.BeginTran();//开始事务
                //Type 1 å…³é—­  2  åå…³é—­
                if (Type == 1)
                {
                    if (!BillOld.CloseBill(int.Parse(HInterID), ref ClsPub.sExeReturnInfo))
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 1;
                        objJsonResult.Message = "关闭失败!原因:" + ClsPub.sExeReturnInfo;
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
                }
                else
                {
                    if (!BillOld.CancelClose(int.Parse(HInterID), ref ClsPub.sExeReturnInfo))
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 1;
                        objJsonResult.Message = "反关闭失败!原因:" + ClsPub.sExeReturnInfo;
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
                }
                oCN.Commit();//提交事务
                objJsonResult.code = "0";
                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;
            }
        }
        #endregion
        #region ç”Ÿäº§ä»»åŠ¡å•ä½œåºŸ/反作废功能
        [Route("Sc_ICMOBill/CancellSc_ICMOReportBill")]
        [HttpGet]
        public object CancellSc_ICMOReportBill(string HInterID, int Type, string user)
        {
            try
            {
                //判断是否有删除权限
                if (!DBUtility.ClsPub.Security_Log("Sc_ICMOBill_Delete", 1, false, user))
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "无权限作废!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                if (string.IsNullOrWhiteSpace(HInterID))
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "HInterID为空!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                ClsPub.CurUserName = user;
                oCN.BeginTran();//开始事务
                //Type 1 ä½œåºŸ  2  åä½œåºŸ
                if (Type == 1)
                {
                    if (!BillOld.Cancelltion(int.Parse(HInterID), ref ClsPub.sExeReturnInfo))
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 1;
                        objJsonResult.Message = "作废失败!原因:" + ClsPub.sExeReturnInfo;
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
                }
                else
                {
                    if (!BillOld.AbandonCancelltion(int.Parse(HInterID), ref ClsPub.sExeReturnInfo))
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 1;
                        objJsonResult.Message = "反作废失败!原因:" + ClsPub.sExeReturnInfo;
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
                }
                oCN.Commit();//提交事务
                objJsonResult.code = "0";
                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;
            }
        }
        #endregion
        #region ç”Ÿäº§ä»»åŠ¡å•åˆ é™¤åŠŸèƒ½
        [Route("Sc_ICMOBill/DeltetSc_ICMOReportBill")]
        [HttpGet]
@@ -27,6 +829,8 @@
        {
            try
            {
                string HComputerName = SystemInformation.ComputerName; //设备名称
                //判断是否有删除权限
                if (!DBUtility.ClsPub.Security_Log("Sc_ICMOBill_Drop", 1, false, user))
                {
@@ -55,7 +859,73 @@
                    objJsonResult.data = null;
                    return objJsonResult; ;
                }
                string sReturn = "";
                if (oSystemParameter.ShowBill(ref sReturn))
                {
                    if (oSystemParameter.omodel.Sc_ICMOBill_DeleterAndMakerMustSame == "Y")
                    {
                        if (ds.Tables[0].Rows[0]["HMaker"].ToString() != user && (user != "admin" && user != "Admin"))
                        {
                            objJsonResult.code = "0";
                            objJsonResult.count = 0;
                            objJsonResult.Message = "只能删除本人的单据!";
                            objJsonResult.data = null;
                            return objJsonResult;
                        }
                    }
                }
                if (int.Parse(ds.Tables[0].Rows[0]["HBillStatus"].ToString()) > 1)
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "单据不是未审核状态,不允许删除!";
                    objJsonResult.data = null;
                    return objJsonResult; ;
                }
               var DataSet = oCN.RunProcReturn("select * from Sc_ProcessExchangeBillMain where HICMOBillNo='" + ds.Tables[0].Rows[0]["HBillNo"].ToString() +"'", "Sc_ProcessExchangeBillMain");
                if (DataSet.Tables[0].Rows.Count > 0)
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "单据已下推工序流转卡,不允许删除!";
                    objJsonResult.data = null;
                    return objJsonResult; ;
                }
                 DataSet = oCN.RunProcReturn("select * from h_v_IF_ProductInBillList where æºå•单号='" + ds.Tables[0].Rows[0]["HBillNo"].ToString() + "'", "h_v_IF_ProductInBillList");
                if (DataSet.Tables[0].Rows.Count > 0)
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "单据已下推生产入库单,不允许删除!";
                    objJsonResult.data = null;
                    return objJsonResult; ;
                }
                DataSet = oCN.RunProcReturn("select * from h_v_IF_MateOutBillList where æºå•单号='" + ds.Tables[0].Rows[0]["HBillNo"].ToString() + "'", "h_v_IF_MateOutBillList");
                if (DataSet.Tables[0].Rows.Count > 0)
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "单据已下推生产领料单,不允许删除!";
                    objJsonResult.data = null;
                    return objJsonResult; ;
                }
                oCN.RunProc("delete from Sc_ICMOBillMain  where HInterID=" + HInterID);
                oCN.RunProc("delete from Sc_ICMOBillSub  where HInterID=" + HInterID);
                LogService.Write("用户:" + user + ",日期:" + DateTime.Now + ",删除生产订单单据:" + ds.Tables[0].Rows[0]["HBillNo"].ToString());
                oCN.RunProc("Insert into System_log (GeginDate, userid, WorkstationName, WorkList, SystemName, NetuserName, State) select GETDATE(),'" + user + "','" + HComputerName + "','" + "删除生产订单单据:" + ds.Tables[0].Rows[0]["HBillNo"].ToString() + "','LMES-生产订单模块','" + DBUtility.ClsPub.IPAddress + "','删除单据'", ref DBUtility.ClsPub.sExeReturnInfo);
                oCN.Commit();//提交事务
                objJsonResult.code = "0";
                objJsonResult.count = 1;
@@ -69,6 +939,204 @@
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "删除失败!" + e.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        #endregion
        #region ç”Ÿäº§ä»»åŠ¡å• å¤šè¡Œæ‰¹é‡ä¸‹æŽ¨
        [Route("Sc_ICMOBill/Sc_ICMOReportBill_dh")]
        [HttpGet]
        public object Sc_ICMOReportBill_dh(string HInterID, string user, int OrganizationID)
        {
            try
            {
                //获取单据ID
                string[] HBillNo = HInterID.Split(',');
                string Error = "";
                int i = 0;
                foreach (var item in HBillNo)
                {
                    string err = "";
                    DAL.ClsSc_ProcessExchangeBill oBill = new DAL.ClsSc_ProcessExchangeBill();
                    Model.ClsSc_ProcessExchangeBillMain lsmain = new Model.ClsSc_ProcessExchangeBillMain();
                    List<Model.ClsSc_ProcessExchangeBillSub> ls = new List<Model.ClsSc_ProcessExchangeBillSub>();
                    string HBillNOs = "";
                    string hmainid = item.Split('|')[0];
                    string HEntryID = item.Split('|')[1];
                    ds = oCN.RunProcReturn("select * from h_v_IF_ICMOBillList where 1 = 1  and hmainid=" + hmainid + " and  HEntryID=" + HEntryID + " order by å•据号 desc", "h_v_IF_ICMOBillList");
                    if (ds.Tables[0].Rows.Count == 0)
                    {
                        err = "无数据! \n";
                    }
                    else
                    {
                        string HNumber = ds.Tables[0].Rows[0]["产品代码"].ToString();
                        HBillNOs = ds.Tables[0].Rows[0]["单据号"].ToString();
                        if (ds.Tables[0].Rows[0]["审核人"].ToString() == "")
                        {
                            err = "所选生产订单为未审核状态,不允许下推生成工序流转卡!\n";
                        }
                        if (ds.Tables[0].Rows[0]["关闭人"].ToString() != "")
                        {
                            err = "所选生产订单为已关闭状态,不允许下推生成工序流转卡!\n";
                        }
                        if (ds.Tables[0].Rows[0]["作废人"].ToString() != "")
                        {
                            err = "所选生产订单为已作废状态,不允许下推生成工序流转卡!\n";
                        }
                        ds = oCN.RunProcReturn("select * from h_v_S_Sc_ICMOBillList where hmainid=" + hmainid + " and HEntryID=" + HEntryID + " and HSTOCKINORGID='" + OrganizationID + "'", "h_v_S_Sc_ICMOBillList");
                        if (double.Parse(ds.Tables[0].Rows[0]["流转卡数量"].ToString()) == 0)
                        {
                            err = "所选生产订单已全部下推生成工序流转卡,剩余可下推数量为0,不允许下推生成工序流转卡!\n";
                        }
                        lsmain.HMaker = user;  //制单人
                        lsmain.HBillType = "3772";
                        lsmain.HBillSubType = "3772";
                        lsmain.HDate = DBUtility.ClsPub.isDate(DateTime.Now.ToString("yyyy-MM-dd"));
                        lsmain.HYear = DBUtility.ClsPub.isLong(DateTime.Now.Year);
                        lsmain.HPeriod = DBUtility.ClsPub.isLong(DateTime.Now.Month);
                        lsmain.HICMOInterID = long.Parse(ds.Tables[0].Rows[0]["hmainid"].ToString());
                        lsmain.HICMOBillNo = ds.Tables[0].Rows[0]["生产订单号"].ToString();
                        lsmain.HICMOEntryID = long.Parse(ds.Tables[0].Rows[0]["HEntryID"].ToString());
                        lsmain.HOrderProcNO = ds.Tables[0].Rows[0]["订单跟踪号"].ToString();
                        lsmain.HMaterID = long.Parse(ds.Tables[0].Rows[0]["hmaterid"].ToString());
                        lsmain.HMaterID2 = long.Parse(ds.Tables[0].Rows[0]["hmaterid"].ToString());
                        lsmain.HMaterNumber = ds.Tables[0].Rows[0]["物料代码"].ToString();
                        lsmain.HMaterModel = ds.Tables[0].Rows[0]["规格型号"].ToString();
                        lsmain.HBatchNo = ds.Tables[0].Rows[0]["批号"].ToString();
                        lsmain.HSplitNo =1;//都是1
                        lsmain.HUnitID = long.Parse(ds.Tables[0].Rows[0]["hunitid"].ToString());
                        lsmain.HUnitNumber = ds.Tables[0].Rows[0]["计量单位代码"].ToString();
                        lsmain.HPlanQty = double.Parse(ds.Tables[0].Rows[0]["计划生产数量"].ToString());
                        lsmain.HQty = double.Parse(ds.Tables[0].Rows[0]["流转卡数量"].ToString());
                        lsmain.HPlanBeginDate = DateTime.Parse(ds.Tables[0].Rows[0]["计划开工日期"].ToString());
                        lsmain.HPlanEndDate = DateTime.Parse(ds.Tables[0].Rows[0]["计划完工日期"].ToString());
                        lsmain.HWorkShopID = long.Parse(ds.Tables[0].Rows[0]["hdeptid"].ToString());
                        lsmain.HProdMaterCode = ds.Tables[0].Rows[0]["产品CODE"].ToString();
                        lsmain.HSeOrderBillNo = ds.Tables[0].Rows[0]["销售订单号"].ToString();
                        lsmain.HCusShortName = ds.Tables[0].Rows[0]["客户简称"].ToString();
                        lsmain.HCusNeedMaterial = ds.Tables[0].Rows[0]["客户要求材料成分"].ToString();
                        lsmain.HPlanSendGoodsDate = ds.Tables[0].Rows[0]["预计出货日期"].ToString()==""?DateTime.Now.ToString(): ds.Tables[0].Rows[0]["预计出货日期"].ToString();
                        lsmain.HSellDate = DateTime.Now.ToString();
                        lsmain.HPRDORGID = OrganizationID;
                        lsmain.HProdMaterName = ds.Tables[0].Rows[0]["产品名称"].ToString();
                        lsmain.HCusName = ds.Tables[0].Rows[0]["客户名称"].ToString();
                        lsmain.HWorkRemark = ds.Tables[0].Rows[0]["生产备注"].ToString();
                        lsmain.HImportNote = ds.Tables[0].Rows[0]["重要提示"].ToString();
                        lsmain.HPicNumVer = ds.Tables[0].Rows[0]["图号版本"].ToString();
                        lsmain.HPicNumAssemble = ds.Tables[0].Rows[0]["总装图号"].ToString();
                        lsmain.HMaterTexture = ds.Tables[0].Rows[0]["材质"].ToString();
                        lsmain.HProductNum = ds.Tables[0].Rows[0]["成品编号"].ToString();
                        lsmain.HVerNum = ds.Tables[0].Rows[0]["版本"].ToString();
                        //lsmain.HCusNumber = ds.Tables[0].Rows[0]["源单客户编码"].ToString();
                        //lsmain.HPickLabel = ds.Tables[0].Rows[0]["包装标识"].ToString();
                        //lsmain.HPickLabelNumber = ds.Tables[0].Rows[0]["包装标识编码"].ToString();
                        //lsmain.HXTNumber = ds.Tables[0].Rows[0]["芯体物料代码"].ToString();
                        //lsmain.HXTModel = ds.Tables[0].Rows[0]["芯体规格型号"].ToString();
                        lsmain.HWidth = double.Parse(ds.Tables[0].Rows[0]["HWidth"].ToString());
                        lsmain.HWeight = double.Parse(ds.Tables[0].Rows[0]["HWeight"].ToString());
                        lsmain.HAuxUnit = int.Parse(ds.Tables[0].Rows[0]["HAuxUnit"].ToString());
                        lsmain.HRemark2 = ds.Tables[0].Rows[0]["备注"].ToString();
                        lsmain.HEmpID = long.Parse(ds.Tables[0].Rows[0]["HEmpID"].ToString());
                        lsmain.HCusID = long.Parse(ds.Tables[0].Rows[0]["HCusID"].ToString());
                        lsmain.HColorRemark = ds.Tables[0].Rows[0]["染色要求"].ToString();
                        lsmain.HBLFlag = ds.Tables[0].Rows[0]["HBLFlag"].ToString() == "0" ? false : true;
                        lsmain.HAuxQty = 0;
                        lsmain.HAuxUnit = 0;
                        ds = oCN.RunProcReturn("select top 1000 * from h_v_Gy_RoutingBillList a left join Gy_Process p on a.hprocid = p.HItemID where ç‰©æ–™ä»£ç ='" + HNumber + "' and é»˜è®¤å·¥è‰º=1", "h_v_Gy_RoutingBillList");
                        if (ds.Tables[0].Rows.Count == 0)
                        {
                            err = "所选生产订单对应物料未设置对应的工艺路线,不允许下推生成工序流转卡!\n";
                        }
                        else
                        {
                            lsmain.HRoutingBillID = ds.Tables[0].Rows[0]["hmainid"].ToString();
                            oBill.omodel = lsmain;
                            int j = 0;
                            foreach (DataRow row in ds.Tables[0].Rows)
                            {
                                if (row["HTProcessFlag"].ToString() == "False")
                                {
                                    ClsSc_ProcessExchangeBillSub sub = new ClsSc_ProcessExchangeBillSub();
                                    sub.HEntryID = j + 1;
                                    sub.HEntryCloseDate = DBUtility.ClsPub.isDate(DateTime.Now);
                                    sub.HProcNo = long.Parse(row["工序号"].ToString());
                                    sub.HProcID = long.Parse(row["HProcID"].ToString());
                                    sub.HProcNumber = row["工序代码"].ToString();
                                    sub.HWorkRemark = row["表体备注"].ToString();
                                    sub.HCenterID = long.Parse(row["HCenterID"].ToString());
                                    sub.HSupID = long.Parse(row["HSupID"].ToString());
                                    sub.HSupFlag = row["委外标记"].ToString() == "False" ? false : true;
                                    sub.HQty = lsmain.HQty;
                                    sub.HTechnologyParameter = row["工艺参数"].ToString();
                                    sub.HPicNum = row["图纸编号"].ToString();
                                    sub.HProcCheckNote = row["本工序确认记录"].ToString();
                                    sub.HDeptID = 0;
                                    sub.HDeptNumber = "";
                                    sub.HOutPrice = 0;
                                    sub.HRemark = "";
                                    sub.HRelationQty_In =0;
                                    sub.HRelationQty_Out = 0;
                                    sub.HRelationQty_WWOrder = 0;
                                    sub.HRelationQty_Bad = 0;
                                    sub.HOverRate = 0;
                                    sub.HMaxQty = 0;
                                    sub.HPassRate = 0;
                                    sub.HSumPassRate = 0;
                                    j++;
                                    oBill.DetailColl.Add(sub);
                                }
                            }
                        }
                    }
                    bool bResult = false;
                    if (err != "")
                    {
                        Error += "生产订单单据号:" + HBillNOs + "\n" + err;
                    }
                    else
                    {
                        oBill.omodel.HBillNo = DBUtility.ClsPub.CreateBillCode("3772", ref DBUtility.ClsPub.sExeReturnInfo,true);
                        bResult = oBill.AddBill(ref DBUtility.ClsPub.sExeReturnInfo);
                        oBill.DetailColl.Clear();
                        if (!bResult)
                        {
                            Error += "保存失败,生产订单单据号:" + HBillNOs + "\n" + err;
                        }
                        else
                        {
                            i++;
                        }
                    }
                }
                Error = "成功:" + i + "行  !!!    " + Error;
                objJsonResult.code = "1";
                objJsonResult.count = 1;
                objJsonResult.Message = Error;
                objJsonResult.data = null;
                return objJsonResult; ;
            }
            catch (Exception e)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "下推失败!" + e.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
@@ -102,6 +1170,33 @@
        }
        #endregion
        #region ç”Ÿäº§ä»»åŠ¡å•èŽ·å–å·¥ä½œä¸­å¿ƒ
        [Route("Sc_ICMOBill/GetHWorkCenterList")]
        [HttpGet]
        public object GetHWorkCenterList()
        {
            try
            {
                DataSet oDs = new DataSet();
                //==========
                oDs = oCN.RunProcReturn("select HItemID,HName from Gy_WorkCenter", "Gy_WorkCenter");
                objJsonResult.code = "1";
                objJsonResult.count = 1;
                objJsonResult.Message = "获取成功!";
                objJsonResult.data = oDs.Tables[0];
                return objJsonResult; ;
            }
            catch (Exception e)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "删除失败!" + e.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        #endregion
        #region å¢™å’”装箱单回车事件
        [Route("Sc_ICMOBill/QK_PackingBillByXSBill")]
        [HttpGet]
@@ -109,7 +1204,8 @@
        {
            try
            {
                //string sql = string.Format(@"select a.HInterID,a.HBillNo,a.HMaterID,m.HNumber HMaterNumber,m.HName HMaterName, a.HUnitID,u.HName HUnitName,b.HQty HPlanQty,a.HCusID, c.HName HCusName,a.HEmpID,e.HName HEmpName,a.HDeptID,d.HName HDeptName,a.HPlanEndDate,0 HMinQty,0 HTotalQty,0 HSpsQty,a.HSeOrderBillNo
                //string sql = string.Format(@"select a.HInterID,a.HBillNo,b.HEntryID,b.HMaterID,m.HNumber HMaterNumber,m.HName HMaterName, b.HUnitID,u.HName HUnitName,b.HQty HPlanQty,b.HQty HSPlanQty,
                //                            a.HCusID, c.HName HCusName,a.HEmpID,e.HName HEmpName,b.HDeptID,d.HName HDeptName,a.HPlanEndDate,0 HMinQty,0 HTotalQty,0 HSpsQty,a.HSeOrderBillNo,a.HRemark
                //                            from Sc_ICMOBillMain a 
                //                            left join Sc_ICMOBillSub b on a.HInterID=b.HInterID
                //                            left join Gy_Material m on b.HMaterID=m.HItemID
@@ -118,10 +1214,10 @@
                //                            left join Gy_Employee e on a.HEmpID=e.HItemID
                //                            left join Gy_Department d on a.HDeptID=d.HItemID
                //                            where b.HInterID=(select HICMOInterID from Sc_PPBomBillMain where HBillNo='" + HBillNo + "')");
                string sql = string.Format(@" select a.HInterID,a.HBillNo,a.HMaterID,m.HNumber HMaterNumber,m.HName HMaterName, a.HUnitID,u.HName HUnitName,b.HQty HPlanQty,a.HCusID,
                    c.HName HCusName,a.HEmpID,e.HName HEmpName,a.HDeptID,d.HName HDeptName,a.HPlanEndDate,0 HMinQty,0 HTotalQty,0 HSpsQty,a.HSeOrderBillNo
                     ,fo.FBILLNO FBillNo,fo.F_ZZZZ_TEXT7 FLXName,fo.FRECEIVEADDRESS FInAddress,fm1.FOLDNUMBER FMaterName,fo.F_ZZZZ_TEXT FBZFS,fu.FDATAVALUE FHX,
                    fu1.FDATAVALUE FQK,fo.F_ZZZZ_WBBZ FWBBZ
                string sql = string.Format(@"select a.HInterID,a.HBillNo,b.HMaterID,b.HEntryID, m.HNumber HMaterNumber, m.HName HMaterName, b.HUnitID,u.HName HUnitName,b.HQty HPlanQty,b.HQty HSPlanQty,a.HCusID, c.HName HCusName,
                    a.HEmpID,e.HName HEmpName,b.HDeptID,d.HName HDeptName,a.HPlanEndDate,0 HMinQty,0 HTotalQty,0 HSpsQty,a.HSeOrderBillNo,a.HRemark,
                     fo.FBILLNO FBillNo,fo.F_ZZZZ_TEXT7 FLXName,fo.FRECEIVEADDRESS FInAddress,fmn.FNAME FMaterName,fo1.F_ZZZZ_TEXT FBZFS,fu.FDATAVALUE FHX,
                    fu1.FDATAVALUE FQK,fo1.F_ZZZZ_WBBZ1 FWBBZ
                    from Sc_ICMOBillMain a 
                    left join Sc_ICMOBillSub b on a.HInterID=b.HInterID
                    left join Gy_Material m on b.HMaterID=m.HItemID
@@ -130,9 +1226,10 @@
                    left join Gy_Employee e on a.HEmpID=e.HItemID
                    left join Gy_Department d on a.HDeptID=d.HItemID
                     left join AIS20200908101915zs..T_PRD_MOENTRY f1 on b.HERPEntryID=f1.FENTRYID
                    left join AIS20200908101915zs..T_SAL_ORDER fo on f1.FSaleOrderId =fo.FID
                    left join AIS20200908101915zs..T_SAL_ORDERENTRY fo1 on fo.FID=fo1.FID
                    left join AIS20200908101915zs..T_SAL_ORDERENTRY fo1 on f1.FSaleOrderEntryId=fo1.FENTRYID
                    left join AIS20200908101915zs..T_SAL_ORDER fo on fo1.FID=fo.FID
                    left join AIS20200908101915zs..T_BD_MATERIAL fm1 on fo1.FSUBMATERIALNUMBER=fm1.FMATERIALID
                    left join AIS20200908101915zs..T_BD_MATERIAL_L fmn on fo1.FSUBMATERIALNUMBER=fmn.FMATERIALID
                    LEFT JOIN AIS20200908101915zs..T_BAS_ASSISTANTDATAENTRY_L fu1 on fo1.F_ZZZZ_ASSISTANT1=fu1.FENTRYID
                    LEFT JOIN AIS20200908101915zs..T_BAS_ASSISTANTDATAENTRY_L fu on fo1.F_ZZZZ_ASSISTANT2=fu.FENTRYID
                     where b.HInterID=(select HICMOInterID from Sc_PPBomBillMain where HBillNo='" + HBillNo + "')");
@@ -171,15 +1268,17 @@
            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 msg4 = sArray[2].ToString();
            string msg5 = sArray[3].ToString();
            string msg2 = sArray[0].ToString();//表格数据
            string msg3 = sArray[1].ToString();//登录人
            string msg5 = sArray[2].ToString();//登录组织
            string msg6 = sArray[3].ToString();//标记
            string msg7 = sArray[4].ToString();//当前用料清单
            ListModels oListModels = new ListModels();
            DataSet ds = new DataSet();
            ds = oCN.RunProcReturn("select * from Xt_ORGANIZATIONS where HItemID=" + msg5, "Xt_ORGANIZATIONS");
            string OrgNum = ds.Tables[0].Rows[0]["HNumber"].ToString();//组织代码
            DataSet d = oCN.RunProcReturn("select HRemark from Sc_PPBomBillMain where HBillNo='" + msg7 + "'", "Sc_ICMOBillMain");//查找该用料清单上次生成的箱号(HRemark存放箱号)
            DataSet Ds1 = new DataSet();
            try
            {
@@ -197,82 +1296,44 @@
                string month = DateTime.Now.Month.ToString();
                string day = DateTime.Now.Day.ToString();
                string nowDate = year + month + day;
                string materid = "";
                //string materid = "";
                //long sum = 0;
                //if (msg4 == "ZZ")
                //{
                string FID = "";
                int LSH;
                string LSH2;
                string TM = "";
                long sum = 0;
                if (msg4 == "ZZ")
                {
                    string FID = "";
                    oCN.BeginTran();
                    foreach (Models.ClsQK_PackingBill oItemSub in ls)
                    {
                        //根据生成条数生成相应数量条码
                        foreach (var item in oItemSub.HTotalQty.ToString())
                        {
                            //生成唯一条码   æ¡ç å‰ç¼€ = ç»„织代码 + ç‰©æ–™ä»£ç  + å¹´ + æœˆ + æ—¥
                            string sTMNumber = OrgNum + oItemSub.HMaterNumber + nowDate;
                int XH = Convert.ToInt32(d.Tables[0].Rows[0]["HRemark"].ToString() == "" ? 0 : Convert.ToInt32(d.Tables[0].Rows[0]["HRemark"].ToString()));
                            Ds1 = oCN.RunProcReturn("exec h_p_WMS_GetMaxNo '" + sTMNumber + "'", "h_p_WMS_GetMaxNo");    //获取最大流水号
                            LSH = ClsPub.isInt(Ds1.Tables[0].Rows[0][0]);//唯一码
                            LSH = LSH + 1;
                            LSH2 = LSH.ToString();
                            while (LSH2.Length<6)
                            {
                                LSH2 = "0" + LSH2;
                            }
                            TM = sTMNumber + LSH2;
                            //获取内码
                            long HInterID = DBUtility.ClsPub.CreateBillID_Prod("85", ref DBUtility.ClsPub.sExeReturnInfo);
                            string str = string.Format(@"insert into Gy_BarCodeBill (HBarCode,HBarCodeType,HMaterID,HUnitID,HQty" +
                                        ",HBatchNo,HSupID,HGroupID,HMaker,HMakeDate,HPrintQty,HinitQty" +
                                        ",HSourceInterID,HSourceEntryID,HSourceBillNo,HSourceBillType,HEndQty " +
                                        ",HBarcodeQtys,HBarcodeNo,HDeptID,HWhID,HSPID,HRemark " +
                                        ",HCusID,HCusType,HEndDate,HWorkLineName,HBarCodeDate " +
                                        ",HSTOCKORGID,HOWNERID,HSeOrderBillNo,HInterID " +
                                        ",HGiveAwayFlag " +
                                        ",HMaterName,HMaterModel,HPinfan,HAuxPropID,HMTONo,HInnerBillNo " +
                                        ") values ("
                                        + "'" + TM + "','唯一条码'," + oItemSub.HMaterID.ToString() + "," + oItemSub.HUnitID.ToString() + "," + oItemSub.HMinQty.ToString()
                                        + ",'',0,0,'" + msg3 + "',getdate(),0," + oItemSub.HMinQty.ToString()
                                        + ", " + oItemSub.HInterID.ToString() + "," + oItemSub.HInterID.ToString() + ",'" + oItemSub.HBillNo + "','3710',''"
                                        + ",1,1," + oItemSub.HDeptID.ToString() + ",0,0,''"
                                        + ", " + oItemSub.HCusID.ToString() + ",'',getdate(),'',getdate()"
                                        + ", " + msg5.ToString() + "," + OrgNum.ToString() + ",'" + oItemSub.HSeOrderBillNo.ToString() + "'," + HInterID.ToString()
                                        + ",0"
                                        + ",'" + oItemSub.HMaterName + "','','',0,'','')");
                            oCN.RunProc(str);
                            oCN.RunProc("exec h_p_WMS_SetMaxNo '" + sTMNumber + "'");
                            string sql1 = string.Format(@"update Sc_ICMOBillSub set HQty=" + oItemSub.HSpsQty + " where HInterID=" + oItemSub.HInterID);
                            oCN.RunProc(sql1);
                            FID = FID + HInterID + ",";
                        }
                    }
                    oCN.Commit();
                    objJsonResult.code = FID;
                    objJsonResult.count = 1;
                    objJsonResult.Message = "整装生成成功!";
                    objJsonResult.data = 1;
                    return objJsonResult;
                }
                else
                foreach (Models.ClsQK_PackingBill oItemSub in ls)
                {
                    var HInterID = DBUtility.ClsPub.CreateBillID("3783", ref DBUtility.ClsPub.sExeReturnInfo);
                    var HBillNo = DBUtility.ClsPub.CreateBillCode("3783", ref DBUtility.ClsPub.sExeReturnInfo, true);
                    oCN.BeginTran();
                    foreach (Models.ClsQK_PackingBill oItemSub in ls)
                    //根据生成条数生成相应数量条码
                    for (int i = 0; i < oItemSub.HTotalQty; i++)
                    {
                        sum += oItemSub.HMinQty;
                        materid = oItemSub.HMaterNumber;
                        //获取内码
                        long HInterID2 = DBUtility.ClsPub.CreateBillID_Prod("85", ref DBUtility.ClsPub.sExeReturnInfo);
                        //生成唯一条码   æ¡ç å‰ç¼€ = ç»„织代码 + ç‰©æ–™ä»£ç  + å¹´ + æœˆ + æ—¥
                        long HInterID = DBUtility.ClsPub.CreateBillID_Prod("85", ref DBUtility.ClsPub.sExeReturnInfo);
                        string sTMNumber = OrgNum + oItemSub.HMaterNumber + nowDate;
                        Ds1 = oCN.RunProcReturn("exec h_p_WMS_GetMaxNo '" + sTMNumber + "'", "h_p_WMS_GetMaxNo");    //获取最大流水号
                        LSH = ClsPub.isInt(Ds1.Tables[0].Rows[0][0]);//唯一码
                        //插入条码档案
                        oCN.RunProc("insert into Gy_BarCodeBill (HBarCode,HBarCodeType,HMaterID,HUnitID,HQty" +
                        LSH = ClsPub.isInt(Ds1.Tables[0].Rows[0][0]);//
                        LSH = LSH + 1;
                        LSH2 = LSH.ToString();
                        while (LSH2.Length < 6)
                        {
                            LSH2 = "0" + LSH2;
                        }
                        TM = sTMNumber + LSH2;
                        if (msg6 == "ZZ")
                        {
                            XH = XH + 1;
                        }
                        else if (msg6 == "PZ" && ls.IndexOf(oItemSub) == 0)
                        {
                            XH = XH + 1;
                        }
                        //获取内码
                        oCN.RunProc("insert into Gy_BarCodeBill (HEntryID,HBarCode,HBarCodeType,HMaterID,HUnitID,HQty" +
                                    ",HBatchNo,HSupID,HGroupID,HMaker,HMakeDate,HPrintQty,HinitQty" +
                                    ",HSourceInterID,HSourceEntryID,HSourceBillNo,HSourceBillType,HEndQty " +
                                    ",HBarcodeQtys,HBarcodeNo,HDeptID,HWhID,HSPID,HRemark " +
@@ -280,77 +1341,127 @@
                                    ",HSTOCKORGID,HOWNERID,HSeOrderBillNo,HInterID " +
                                    ",HGiveAwayFlag " +
                                    ",HMaterName,HMaterModel,HPinfan,HAuxPropID,HMTONo,HInnerBillNo " +
                                    ") values ("
                                    + "'" + LSH + "','唯一条码'," + oItemSub.HMaterID.ToString() + "," + oItemSub.HUnitID.ToString() + "," + oItemSub.HMinQty.ToString()
                                    ") values (" + i
                                    + ",'" + TM + "','唯一条码'," + oItemSub.HMaterID.ToString() + "," + oItemSub.HUnitID.ToString() + "," + oItemSub.HMinQty.ToString()
                                    + ",'',0,0,'" + msg3 + "',getdate(),0," + oItemSub.HMinQty.ToString()
                                    + ", " + oItemSub.HInterID.ToString() + "," + oItemSub.HInterID.ToString() + ",'" + oItemSub.HBillNo + "','3710',''"
                                    + ",1,1," + oItemSub.HDeptID.ToString() + ",0,0,''"
                                    + ", " + oItemSub.HInterID.ToString() + "," + oItemSub.HEntryID.ToString() + ",'" + oItemSub.HBillNo + "','3710',''"
                                    + ",1,1," + oItemSub.HDeptID.ToString() + ",0,0,'" + XH + "'"
                                    + ", " + oItemSub.HCusID.ToString() + ",'',getdate(),'',getdate()"
                                    + ", " + msg5.ToString() + "," + OrgNum.ToString() + ",''," + HInterID2.ToString()
                                    + ", " + msg5.ToString() + "," + OrgNum.ToString() + ",'" + oItemSub.HSeOrderBillNo.ToString() + "'," + HInterID.ToString()
                                    + ",0"
                                    + ",'" + oItemSub.HMaterName + "','','',0,'','')");
                        //插入组托单子表
                        string sql = string.Format(@"insert into Sc_PackUnionBillSub(HInterID,HEntryID,HCloseMan,HCloseType,HRemark,
                                                    HSourceInterID,HSourceEntryID,HSourceBillNo,HSourceBillType,
                                                    HRelationQty,HRelationMoney,HMaterID,HUnitID,HQty,HSourceID,HEquipID,HGroupID,HWorkerID,
                                                   HScanDate,HBarCode,HBarCode_Pack)
                                                    values(" + HInterID + ",'','',0,'自动绑定'," + oItemSub.HInterID + ",'','" + oItemSub.HBillNo + "','3710'," +
                                                    "0,0," + oItemSub.HMaterID + "," + oItemSub.HUnitID + "," + oItemSub.HPlanQty + ", 0,0,0,0," +
                                                    "getdate(),'" + LSH + "','" + HBillNo + "')");
                        //更改生产订单的数量
                        string sql1 = string.Format(@"update Sc_ICMOBillSub set HQty=" + oItemSub.HSpsQty + " where HInterID=" + oItemSub.HInterID);
                        oCN.RunProc(sql);
                        oCN.RunProc(sql1);
                        oCN.RunProc("exec h_p_WMS_SetMaxNo '" + sTMNumber + "'");
                    }
                    //生成组托单主表
                    string sql2 = string.Format(@"Insert Sc_PackUnionBillMain(HYear,HPeriod,HBillType,HInterID,HDate,HBillNo,HBillStatus,HCheckItemNowID,HCheckItemNextID,
                                                    HRemark,HBacker,HChecker,HMaker,HMakeDate,HUpDater,HCloseMan,HCloseType,HDeleteMan,HICMOInterID,HICMOBillNo,
                                                    HBarCode_Pack,HMaterID,HUnitID,HWeight,HMWeight,HPWeight,
                                                    HProdOrgID,HDeptID,HEmpID,HSNum,HPackNum,HBarCode_Cus,HBatchNo,HBillSubType)
                                                    values('2022',1,'3783'," + HInterID + ",getdate(),'" + HBillNo + "',1,0,0," +
                                                        "'自动绑定','','', '" + msg3 + "',getdate(),'','',0,'',0,0,'" +
                                                         HBillNo + "',0,0,0,0,0," +
                                                        "0,0,0,0,0,'','','')");
                    oCN.RunProc(sql2);
                    //再次生成唯一码
                    //获取内码
                    long HInterID3 = DBUtility.ClsPub.CreateBillID_Prod("85", ref DBUtility.ClsPub.sExeReturnInfo);
                    //生成唯一条码   æ¡ç å‰ç¼€ = ç»„织代码 + ç‰©æ–™ä»£ç  + å¹´ + æœˆ + æ—¥
                    string sTMNumber1 = OrgNum + materid + nowDate;
                    Ds1 = oCN.RunProcReturn("exec h_p_WMS_GetMaxNo '" + sTMNumber1 + "'", "h_p_WMS_GetMaxNo");    //获取最大流水号
                    int LSH1 = ClsPub.isInt(Ds1.Tables[0].Rows[0][0]);//唯一码
                    string sql3 = string.Format(@"insert into Gy_BarCodeBill (HBarCode,HBarCodeType,HMaterID,HUnitID,HQty" +
                                ",HBatchNo,HSupID,HGroupID,HMaker,HMakeDate,HPrintQty,HinitQty" +
                                ",HSourceInterID,HSourceEntryID,HSourceBillNo,HSourceBillType,HEndQty " +
                                ",HBarcodeQtys,HBarcodeNo,HDeptID,HWhID,HSPID,HRemark " +
                                ",HCusID,HCusType,HEndDate,HWorkLineName,HBarCodeDate " +
                                ",HSTOCKORGID,HOWNERID,HSeOrderBillNo,HInterID " +
                                ",HGiveAwayFlag " +
                                ",HMaterName,HMaterModel,HPinfan,HAuxPropID,HMTONo,HInnerBillNo " +
                                ") values ("
                                + "'" + LSH1 + "','唯一条码','" + materid.ToString() + "',0," + sum.ToString()
                                + ",'',0,0,'" + msg3 + "',getdate(),0," + sum.ToString()
                                + ", 0,0,'" + HBillNo + "','3710','',"
                                + sum.ToString() + "," + HInterID.ToString() + ",0,0,0,''"
                                + ",0,'',getdate(),'',getdate()"
                                + ", " + msg5.ToString() + "," + OrgNum.ToString() + ",''," + HInterID3.ToString()
                                + ",0"
                                + ",'','','',0,'','')");
                    oCN.RunProc(sql3);
                    oCN.Commit();
                    objJsonResult.code = "1";
                    objJsonResult.count = 1;
                    objJsonResult.Message = "拼装生成成功";
                    objJsonResult.data = null;
                    return objJsonResult;
                    oCN.RunProc("update Sc_ICMOBillSub set HQty=" + oItemSub.HSpsQty + " where HEntryID=" + oItemSub.HEntryID);
                    oCN.RunProc("update Sc_PPBomBillMain set HRemark=" + XH + " where HBillNo='" + msg7 + "'");
                    DataSet Dsn = oCN.RunProcReturn("select top " + oItemSub.HTotalQty + " HItemID from Gy_BarCodeBill order by HItemID desc", "Gy_BarCodeBill");    //获取最大流水号
                    for (int i = 0; i < oItemSub.HTotalQty; i++)
                    {
                        FID = FID + Dsn.Tables[0].Rows[i][0] + ",";
                    }
                }
                objJsonResult.code = FID;
                objJsonResult.count = 1;
                objJsonResult.Message = "整装生成成功!";
                objJsonResult.data = 1;
                return objJsonResult;
                //}
                //else
                //{
                //    var HInterID = DBUtility.ClsPub.CreateBillID("3783", ref DBUtility.ClsPub.sExeReturnInfo);
                //    var HBillNo = DBUtility.ClsPub.CreateBillCode("3783", ref DBUtility.ClsPub.sExeReturnInfo, true);
                //    oCN.BeginTran();
                //    foreach (Models.ClsQK_PackingBill oItemSub in ls)
                //    {
                //        sum += oItemSub.HMinQty;
                //        materid = oItemSub.HMaterNumber;
                //        //获取内码
                //        long HInterID2 = DBUtility.ClsPub.CreateBillID_Prod("85", ref DBUtility.ClsPub.sExeReturnInfo);
                //        //生成唯一条码   æ¡ç å‰ç¼€ = ç»„织代码 + ç‰©æ–™ä»£ç  + å¹´ + æœˆ + æ—¥
                //        string sTMNumber = OrgNum + oItemSub.HMaterNumber + nowDate;
                //        Ds1 = oCN.RunProcReturn("exec h_p_WMS_GetMaxNo '" + sTMNumber + "'", "h_p_WMS_GetMaxNo");    //获取最大流水号
                //        LSH = ClsPub.isInt(Ds1.Tables[0].Rows[0][0]);//唯一码
                //        //插入条码档案
                //        oCN.RunProc("insert into Gy_BarCodeBill (HBarCode,HBarCodeType,HMaterID,HUnitID,HQty" +
                //                    ",HBatchNo,HSupID,HGroupID,HMaker,HMakeDate,HPrintQty,HinitQty" +
                //                    ",HSourceInterID,HSourceEntryID,HSourceBillNo,HSourceBillType,HEndQty " +
                //                    ",HBarcodeQtys,HBarcodeNo,HDeptID,HWhID,HSPID,HRemark " +
                //                    ",HCusID,HCusType,HEndDate,HWorkLineName,HBarCodeDate " +
                //                    ",HSTOCKORGID,HOWNERID,HSeOrderBillNo,HInterID " +
                //                    ",HGiveAwayFlag " +
                //                    ",HMaterName,HMaterModel,HPinfan,HAuxPropID,HMTONo,HInnerBillNo " +
                //                    ") values ("
                //                    + "'" + LSH + "','唯一条码'," + oItemSub.HMaterID.ToString() + "," + oItemSub.HUnitID.ToString() + "," + oItemSub.HMinQty.ToString()
                //                    + ",'',0,0,'" + msg3 + "',getdate(),0," + oItemSub.HMinQty.ToString()
                //                    + ", " + oItemSub.HInterID.ToString() + "," + oItemSub.HInterID.ToString() + ",'" + oItemSub.HBillNo + "','3710',''"
                //                    + ",1,1," + oItemSub.HDeptID.ToString() + ",0,0,''"
                //                    + ", " + oItemSub.HCusID.ToString() + ",'',getdate(),'',getdate()"
                //                    + ", " + msg5.ToString() + "," + OrgNum.ToString() + ",''," + HInterID2.ToString()
                //                    + ",0"
                //                    + ",'" + oItemSub.HMaterName + "','','',0,'','')");
                //        //插入组托单子表
                //        string sql = string.Format(@"insert into Sc_PackUnionBillSub(HInterID,HEntryID,HCloseMan,HCloseType,HRemark,
                //                                    HSourceInterID,HSourceEntryID,HSourceBillNo,HSourceBillType,
                //                                    HRelationQty,HRelationMoney,HMaterID,HUnitID,HQty,HSourceID,HEquipID,HGroupID,HWorkerID,
                //                                 HScanDate,HBarCode,HBarCode_Pack)
                //                                    values(" + HInterID + ",'','',0,'自动绑定'," + oItemSub.HInterID + ",'','" + oItemSub.HBillNo + "','3710'," +
                //                                    "0,0," + oItemSub.HMaterID + "," + oItemSub.HUnitID + "," + oItemSub.HPlanQty + ", 0,0,0,0," +
                //                                    "getdate(),'" + LSH + "','" + HBillNo + "')");
                //        //更改生产订单的数量
                //        string sql1 = string.Format(@"update Sc_ICMOBillSub set HQty=" + oItemSub.HSpsQty + " where HInterID=" + oItemSub.HInterID);
                //        oCN.RunProc(sql);
                //        oCN.RunProc(sql1);
                //    }
                //    //生成组托单主表
                //    string sql2 = string.Format(@"Insert Sc_PackUnionBillMain(HYear,HPeriod,HBillType,HInterID,HDate,HBillNo,HBillStatus,HCheckItemNowID,HCheckItemNextID,
                //                                    HRemark,HBacker,HChecker,HMaker,HMakeDate,HUpDater,HCloseMan,HCloseType,HDeleteMan,HICMOInterID,HICMOBillNo,
                //                                    HBarCode_Pack,HMaterID,HUnitID,HWeight,HMWeight,HPWeight,
                //                                    HProdOrgID,HDeptID,HEmpID,HSNum,HPackNum,HBarCode_Cus,HBatchNo,HBillSubType)
                //                                    values('2022',1,'3783'," + HInterID + ",getdate(),'" + HBillNo + "',1,0,0," +
                //                                        "'自动绑定','','', '" + msg3 + "',getdate(),'','',0,'',0,0,'" +
                //                                         HBillNo + "',0,0,0,0,0," +
                //                                        "0,0,0,0,0,'','','')");
                //    oCN.RunProc(sql2);
                //    //再次生成唯一码
                //    //获取内码
                //    long HInterID3 = DBUtility.ClsPub.CreateBillID_Prod("85", ref DBUtility.ClsPub.sExeReturnInfo);
                //    //生成唯一条码   æ¡ç å‰ç¼€ = ç»„织代码 + ç‰©æ–™ä»£ç  + å¹´ + æœˆ + æ—¥
                //    string sTMNumber1 = OrgNum + materid + nowDate;
                //    Ds1 = oCN.RunProcReturn("exec h_p_WMS_GetMaxNo '" + sTMNumber1 + "'", "h_p_WMS_GetMaxNo");    //获取最大流水号
                //    int LSH1 = ClsPub.isInt(Ds1.Tables[0].Rows[0][0]);//唯一码
                //    string sql3 = string.Format(@"insert into Gy_BarCodeBill (HBarCode,HBarCodeType,HMaterID,HUnitID,HQty" +
                //                ",HBatchNo,HSupID,HGroupID,HMaker,HMakeDate,HPrintQty,HinitQty" +
                //                ",HSourceInterID,HSourceEntryID,HSourceBillNo,HSourceBillType,HEndQty " +
                //                ",HBarcodeQtys,HBarcodeNo,HDeptID,HWhID,HSPID,HRemark " +
                //                ",HCusID,HCusType,HEndDate,HWorkLineName,HBarCodeDate " +
                //                ",HSTOCKORGID,HOWNERID,HSeOrderBillNo,HInterID " +
                //                ",HGiveAwayFlag " +
                //                ",HMaterName,HMaterModel,HPinfan,HAuxPropID,HMTONo,HInnerBillNo " +
                //                ") values ("
                //                + "'" + LSH1 + "','唯一条码','" + materid.ToString() + "',0," + sum.ToString()
                //                + ",'',0,0,'" + msg3 + "',getdate(),0," + sum.ToString()
                //                + ", 0,0,'" + HBillNo + "','3710','',"
                //                + sum.ToString() + "," + HInterID.ToString() + ",0,0,0,''"
                //                + ",0,'',getdate(),'',getdate()"
                //                + ", " + msg5.ToString() + "," + OrgNum.ToString() + ",''," + HInterID3.ToString()
                //                + ",0"
                //                + ",'','','',0,'','')");
                //    oCN.RunProc(sql3);
                //    oCN.Commit();
                //    objJsonResult.code = "1";
                //    objJsonResult.count = 1;
                //    objJsonResult.Message = "拼装生成成功";
                //    objJsonResult.data = null;
                //    return objJsonResult;
                //}
            }
            catch (Exception e)
            {
                oCN.RollBack();
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "获取失败!" + e.ToString();
@@ -447,14 +1558,15 @@
        public static DataSet QK_GetPackingBillList_s(string sWhere)
        {
            ;
            if (sWhere == null || sWhere.Equals(""))
            {
                return new SQLHelper.ClsCN().RunProcReturn("select *  from h_v_QK_PackedBillList order by hmainid desc", "h_v_QK_PackedBillList");
                return new SQLHelper.ClsCN().RunProcReturn("select *  from h_v_QK_PackedBillList order by åˆ¶å•日期 desc", "h_v_QK_PackedBillList");
            }
            else
            {
                string sql1 = "select * from h_v_QK_PackedBillList where 1 = 1 ";
                string sql = sql1 + sWhere + "order by hmainid desc";
                string sql1 = "select * from h_v_QK_PackedBillList where HBarCodeType='唯一条码' ";
                string sql = sql1 + sWhere + " order by åˆ¶å•日期 desc";
                return new SQLHelper.ClsCN().RunProcReturn(sql, "h_v_QK_PackedBillList");
            }
@@ -468,6 +1580,8 @@
        /// <summary>
        /// å¢™å’”装箱列表-删除
        /// </summary>
        /// <param name="HInterID">条码档案主表主ID(唯一)</param>
        /// <param name="Flag">标识</param>
        /// <returns></returns>
        [Route("Sc_ICMOBillController/DeleteQK_GetPackingBillList")]
        [HttpGet]
@@ -482,14 +1596,14 @@
                    ds = oCN.RunProcReturn("select * from Gy_BarCodeBill where HItemID=" + HInterID, "Gy_BarCodeBill");
                    DataRow dr = ds.Tables[0].Rows[0];
                    string sql = string.Format(@"delete from Gy_BarCodeBill where HItemID=" + HInterID);
                    string sql1 = string.Format(@"update Sc_ICMOBillSub set HQty=HPlanQty+" + dr["HQty"] + " where HInterID=(select HSourceInterID from Gy_BarCodeBill where HItemID=" + HInterID + ")");
                    oCN.RunProc(sql);
                    string sql1 = string.Format(@"update Sc_ICMOBillSub set HQty=HQty+" + dr["HQty"] + " where HEntryID=(select HSourceEntryID from Gy_BarCodeBill where HItemID=" + HInterID + ")");
                    oCN.RunProc(sql1);
                    oCN.RunProc(sql);
                }
                else
                {
                    //通过条码id找到托条码,通过托条码找到组托单子表中的唯一码
                    string sql2 = "select HBarCode from Sc_PackUnionBillSub where HInterID=(select HBarcodeNo from Gy_BarCodeBill where HItemID=" + HInterID;
                    string sql2 = "select HBarCode from Sc_PackUnionBillSub where HInterID=(select HBarcodeNo from Gy_BarCodeBill where HItemID=" + HInterID + ")";
                    //string sql2 = "select HBarCode from Sc_PackUnionBillSub where HInterID=(select HBarcodeNo from Gy_BarCodeBill where HItemID=3250)";
                    DataSet ds1 = oCN.RunProcReturn(sql2, "Sc_PackUnionBillSub");
                    DataTable dt = ds1.Tables[0];
@@ -503,9 +1617,9 @@
                            DataRow dr1 = ds.Tables[0].Rows[0];
                            string sql = string.Format(@"delete from Gy_BarCodeBill where HBarCode='" + dr["HBarCode"].ToString() + "'");
                            string sql1 = string.Format(@"update Sc_ICMOBillSub set HQty=HPlanQty+" + dr1["HQty"] + " where HInterID=(select HSourceInterID from Gy_BarCodeBill where HBarCode='" + dr["HBarCode"].ToString() + "')");
                            oCN.RunProc(sql);
                            string sql1 = string.Format(@"update Sc_ICMOBillSub set HQty=HQty+" + dr1["HQty"] + " where HEntryID=(select HSourceEntryID from Gy_BarCodeBill where HBarCode='" + dr["HBarCode"].ToString() + "')");
                            oCN.RunProc(sql1);
                            oCN.RunProc(sql);
                        }
                    }
@@ -538,6 +1652,332 @@
        }
        #endregion
        #region [同步单据]
        [Route("Sc_ICMOBill/Sc_ICMOBillViewApi")]
        [HttpGet]
        public json Sc_ICMOBillViewApi(string BillNo, string BillType)
        {
            string sql = string.Empty;
            string sReturn = "";
            if (oSystemParameter.ShowBill(ref sReturn) == true)
            {
                //系统参数是否为私有云模式,N为公有云模式,Y为私有云模式
                if (oSystemParameter.omodel.WMS_CloudMode == "Y")
                {
                    #region [私有云模式,直接调用数据库存储过程更新]
                    try
                    {
                        oCN.BeginTran();
                        SQLHelper.ClsCN oCn = new SQLHelper.ClsCN();
                        DataSet DS = oCn.RunProcReturn("exec h_p_WMS_ERPSourceBillToLocal '" + BillNo + "','" + BillType + "'", "h_p_WMS_ERPSourceBillToLocal");
                        if (DS == null)
                        {
                            objJsonResult.code = "0";
                            objJsonResult.count = 0;
                            objJsonResult.Message = "单据同步失败";
                            objJsonResult.data = null;
                            return objJsonResult;
                        }
                        else
                        {
                            if (DBUtility.ClsPub.isStrNull(DS.Tables[0].Rows[0]["HBack"]) == "2")
                            {
                                objJsonResult.code = "0";
                                objJsonResult.count = 0;
                                objJsonResult.Message = "ERP中不存在该单据号";
                                objJsonResult.data = null;
                                return objJsonResult;
                            }
                            else
                            {
                                objJsonResult.code = "1";
                                objJsonResult.count = 1;
                                objJsonResult.Message = "单据同步成功";
                                objJsonResult.data = null;
                                return objJsonResult;
                            }
                        }
                    }
                    catch (Exception e)
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = "Exception!" + e.ToString();
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
                    #endregion
                }
                else
                {
                    #region [公有云模式,调用WEBAPI的方式进行更新]
                    var json = new
                    {
                        CreateOrgId = 0,
                        Number = BillNo,
                        Id = ""
                    };
                    #region [金蝶部分]
                    //登录金蝶
                    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;
                    }
                    //查看 èŽ·å–æ•°æ®
                    var _result = InvokeHelper.View("PRD_MO", JsonConvert.SerializeObject(json));
                    var _saveObj = JObject.Parse(_result);
                    //判断数据是否获取成功
                    if (_saveObj["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToUpper() != "TRUE")
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = "金蝶生产任务单同步失败jsonRoot:" + _result;
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
                    #endregion
                    //获取主表数据
                    DataSet Ds;
                    Int64 InterID = 0;
                    Ds = oCN.RunProcReturn("select * from Sc_ICMOBillMain where HBillNo = '" + BillNo + "'", "Sc_ICMOBillMain");
                    if (Ds.Tables[0].Rows.Count != 0 && ClsPub.isLong(Ds.Tables[0].Rows[0]["HInterID"].ToString()) != 0)
                    {
                        InterID = ClsPub.isLong(Ds.Tables[0].Rows[0]["HInterID"].ToString());
                    }
                    #region [主表数据赋值]
                    var jsonData = new
                    {
                        HInterID = _saveObj["Result"]["Result"]["Id"],
                        HYear = DateTime.Now.Year,
                        HPeriod = DateTime.Now.Month,
                        HBillType = 3710,
                        HDate = _saveObj["Result"]["Result"]["Date"],
                        HBillNo = _saveObj["Result"]["Result"]["BillNo"],
                        HBillStatus = _saveObj["Result"]["Result"]["ApproverId_Id"].ToString() == Convert.ToString(0) ? 1 : 2,
                        HEMPID = 0,
                        HRoutingInterID = 0,
                        HPlanQty = 1,
                        HRelationQty = 0,
                        HPlanBeginDate = _saveObj["Result"]["Result"]["Date"],
                        HPlanEndDate = DateTime.Now.ToString(),
                        HBeginDate = _saveObj["Result"]["Result"]["Date"],
                        HEndDate = DateTime.Now.ToString(),
                        HMaterID = 0,
                        HUnitID = 0,
                        HBomID = 0,
                        HBatchNo = "",
                        HSourceInterID = 0,
                        HSourceEntryID = 0,
                        HSourceBillNo = "",
                        HSourceBillType = "",
                        HSeOrderInterID = 0,
                        HSeOrderEntryID = 0,
                        HSeOrderBillNo = "",
                        HPRDORGID = _saveObj["Result"]["Result"]["PrdOrgId_Id"],
                        HENTRUSTORGID = _saveObj["Result"]["Result"]["ENTrustOrgId_Id"],
                        HOWNERID = _saveObj["Result"]["Result"]["OwnerId_Id"],
                        HOWNERTYPEID = _saveObj["Result"]["Result"]["OwnerTypeId"],
                        HCusID = 0,
                        HDeptID = _saveObj["Result"]["Result"]["WorkShopID_Id"].ToString() == null ? 0 : _saveObj["Result"]["Result"]["WorkShopID_Id"],
                        HRemark = "CLOUD导入",
                        HMTONo = "",
                        HERPInterID = _saveObj["Result"]["Result"]["Id"],
                        HERPBillType = _saveObj["Result"]["Result"]["BillType_Id"],
                        HMaker = _saveObj["Result"]["Result"]["CreatorId"]["Name"],
                        HMakeDate = _saveObj["Result"]["Result"]["CreateDate"],
                        HChecker = _saveObj["Result"]["Result"]["ApproverId"]["Name"],
                        HCheckDate = _saveObj["Result"]["Result"]["ApproveDate"],
                        HBillSubType = _saveObj["Result"]["Result"]["IsRework"] = true ? 1 : 0,
                        HISENTRUST = _saveObj["Result"]["Result"]["IsEntrust"],
                        HISREWORK = _saveObj["Result"]["Result"]["IsRework"]
                    };
                    #endregion
                    // åˆ é™¤ä¸»è¡¨å¯¹åº”数据
                    sql = $"delete from Sc_ICMOBillMain where HInterID = " + InterID;
                    oCN.RunProc(sql);
                    //插入主表
                    sql = $@"
                insert into Sc_ICMOBillMain
                (HInterID,HYear,HPeriod,HBillType,HDate
               ,HBillNo,HBillStatus,HEMPID,HRoutingInterID
               ,HPlanQty,HRelationQty,HPlanBeginDate,HPlanEndDate,HBeginDate,HEndDate
               ,HMaterID,HUnitID,HBomID,HBatchNo
               ,HSourceInterID,HSourceEntryID,HSourceBillNo,HSourceBillType,HSeOrderInterID,HSeOrderEntryID,HSeOrderBillNo
               ,HPRDORGID,HENTRUSTORGID,HOWNERID,HOWNERTYPEID
               ,HCusID,HDeptID,HRemark,HMTONo,HERPInterID,HERPBillType
               ,HMaker,HMakeDate,HChecker,HCheckDate
               ,HBillSubType,HISENTRUST,HISREWORK
                 )
                values
                ({jsonData.HInterID},{jsonData.HYear},{jsonData.HPeriod},{jsonData.HBillType},'{jsonData.HDate}','{jsonData.HBillNo}',
                {jsonData.HBillStatus},{jsonData.HEMPID},{jsonData.HRoutingInterID},{jsonData.HPlanQty},{jsonData.HRelationQty},
                '{jsonData.HPlanBeginDate}', '{jsonData.HPlanEndDate}','{jsonData.HBeginDate}','{jsonData.HEndDate}',{jsonData.HMaterID},
                {jsonData.HUnitID},{jsonData.HBomID},'{jsonData.HBatchNo}',{jsonData.HSourceInterID},{jsonData.HSourceEntryID},
                '{jsonData.HSourceBillNo}','{jsonData.HSourceBillType}',{jsonData.HSeOrderInterID}, {jsonData.HSeOrderEntryID},'{jsonData.HSeOrderBillNo}',
                {jsonData.HPRDORGID},{jsonData.HENTRUSTORGID},{jsonData.HOWNERID},'{jsonData.HOWNERTYPEID}',{jsonData.HCusID},{jsonData.HDeptID},
                '{jsonData.HRemark}','{jsonData.HMTONo}',{jsonData.HERPInterID},'{jsonData.HERPBillType}','{jsonData.HMaker}','{jsonData.HMakeDate}',
                '{jsonData.HChecker}','{jsonData.HCheckDate}','{jsonData.HBillSubType}','{jsonData.HISENTRUST}','{jsonData.HISREWORK}')";
                    oCN.RunProc(sql);
                    #region [申请子表变量]
                    var dataArr = _saveObj["Result"]["Result"]["TreeEntity"];
                    DataSet Cs;
                    double RelationQty = 0;
                    #endregion
                    int i = 0;
                    // èŽ·å–å­è¡¨æ•°æ®
                    Cs = oCN.RunProcReturn("select * from Sc_ICMOBillSub where HInterID = " + InterID, "Sc_ICMOBillSub");
                    // åˆ é™¤å­è¡¨å¯¹åº”数据
                    sql = $"delete from Sc_ICMOBillSub where HInterID = " + InterID;
                    oCN.RunProc(sql);
                    foreach (var oSub in dataArr)
                    {
                        #region [子表数据赋值]
                        if (Cs.Tables[0].Rows.Count != 0 && ClsPub.isLong(Cs.Tables[0].Rows[0]["HInterID"].ToString()) != 0)
                        {
                            RelationQty = ClsPub.isDoule(Cs.Tables[0].Rows[i]["HRelationQty"].ToString());
                            i++;
                        }
                        var subData = new
                        {
                            HInterID = _saveObj["Result"]["Result"]["Id"],
                            HENTRYID = oSub["Id"],
                            HSEQ = oSub["Seq"],
                            HQty = oSub["Qty"],
                            HQTYMUST = oSub["Qty"],
                            HRelationQty = RelationQty,
                            HRelationMoney = 0,
                            HPlanBeginDate = oSub["IdPlanStartDate"],
                            HPlanEndDate = oSub["PlanFinishDate"],
                            HBeginDate = oSub["StartDate"],
                            HEndDate = oSub["FinishDate"],
                            HBomID = oSub["BomId_Id"],
                            HRemark = "CLOUD导入",
                            HMaterID = oSub["MaterialId_Id"],
                            HUnitID = oSub["UnitId_Id"],
                            HWHID = oSub["StockId_Id"],
                            HSPID = oSub["StockLocId_Id"],
                            HPROCID = oSub["ProcessId_Id"],
                            HDEPTID = oSub["WorkShopID_Id"],
                            HBatchNo = oSub["Lot_Text"],
                            HSourceInterID = oSub["SrcBillId"],
                            HSourceEntryID = oSub["SrcBillEntryId"],
                            HSourceBillNo = oSub["SrcBillNo"],
                            HSourceBillType = oSub["SrcBillType"],
                            HSeOrderInterID = oSub["SaleOrderId"],
                            HSeOrderEntryID = oSub["SaleOrderEntryId"],
                            HSeOrderBillNo = oSub["SaleOrderNo"],
                            HSTOCKINORGID = oSub["StockInOrgId_Id"],
                            HINSTOCKOWNERID = oSub["InStockOwnerId_Id"],
                            HINSTOCKOWNERTYPEID = oSub["InStockOwnerTypeId"],
                            HREQUESTORGID = oSub["RequestOrgId_Id"],
                            HPlanMode = 0,
                            HMTONo = oSub["MTONo"],
                            HERPInterID = _saveObj["Result"]["Result"]["Id"],
                            HERPEntryID = oSub["Id"],
                            HSTATUS = oSub["Status"],
                            HEntryCusID = 0,
                            HICMOReportRelationQty = oSub["RepQuaSelAuxQty"],
                            HAuxPropID = oSub["AuxPropId_Id"],
                            HProdMaterCode = "",
                            HCusShortName = "",
                            HCusNeedMaterial = "",
                            HPlanSendGoodsDate = "",
                            HProdMaterName = "",
                            HWorkRemark = "",
                            HImportNote = "",
                            HCusName = "",
                            HInstockQty_Max = 0,
                            HInstockQty_Min = 0,
                            HPickLabel = "",
                            HPickLabelNumber = oSub["StockInLimitH"],
                            HCusNumber = oSub["StockInLimitL"],
                            HINSTOCKTYPE = oSub["InStockType"],
                            HCHECKPRODUCT = oSub["CheckProduct"],
                            HQAIP = oSub["QAIP"],
                            HISBACKFLUSH = oSub["ISBACKFLUSH"],
                            HREQSRC = oSub["ReqSrc"],
                            HSTOCKINQUASELAUXQTY = oSub["StockInQuaSelAuxQty"],
                            HSeOrderEntrySEQ = oSub["SaleOrderEntrySeq"],
                            HPROJECTNO = oSub["ProjectNo"],
                            HPRODUCTTYPE = oSub["ProductType"],
                            HCOSTRATE = oSub["CostRate"],
                            HBASEUNITID = oSub["BaseUnitId_Id"],
                        };
                        #endregion
                        //插入子表
                        sql = $@"
                 insert into Sc_ICMOBillSub
                 (HInterID,HENTRYID,HSEQ,HQty,HQTYMUST,HRelationQty,HRelationMoney
               ,HPlanBeginDate,HPlanEndDate,HBeginDate,HEndDate,HBomID,HRemark
               ,HMaterID,HUnitID,HWHID,HSPID,HPROCID,HDEPTID,HBatchNo
               ,HSourceInterID,HSourceEntryID,HSourceBillNo,HSourceBillType
               ,HSeOrderInterID,HSeOrderEntryID,HSeOrderBillNo
               ,HSTOCKINORGID,HINSTOCKOWNERID,HINSTOCKOWNERTYPEID,HREQUESTORGID
               ,HPlanMode,HMTONo,HERPInterID,HERPEntryID,HSTATUS
               ,HEntryCusID,HICMOReportRelationQty,HAuxPropID,HProdMaterCode,HCusShortName
               ,HCusNeedMaterial,HPlanSendGoodsDate,HProdMaterName,HWorkRemark,HImportNote,HCusName
               ,HInstockQty_Max,HInstockQty_Min,HPickLabel,HPickLabelNumber,HCusNumber
               ,HINSTOCKTYPE,HCHECKPRODUCT,HQAIP,HISBACKFLUSH,HREQSRC,HSTOCKINQUASELAUXQTY
               ,HSeOrderEntrySEQ,HPROJECTNO,HPRODUCTTYPE,HCOSTRATE,HBASEUNITID
                 )
                 values
                 ({subData.HInterID},{subData.HENTRYID},{subData.HSEQ},{subData.HQty},{subData.HQTYMUST},{subData.HRelationQty},
                  {subData.HRelationMoney},'{subData.HPlanBeginDate}','{subData.HPlanEndDate}','{subData.HBeginDate}','{subData.HEndDate}',{subData.HBomID},
                  '{subData.HRemark}',{subData.HMaterID},{subData.HUnitID},{subData.HWHID},{subData.HSPID},{subData.HPROCID},{subData.HDEPTID},
                  '{subData.HBatchNo}',{subData.HSourceInterID},{subData.HSourceEntryID},'{subData.HSourceBillNo}','{subData.HSourceBillType}',
                  {subData.HSeOrderInterID},{subData.HSeOrderEntryID},'{subData.HSeOrderBillNo}',{subData.HSTOCKINORGID},{subData.HINSTOCKOWNERID},
                  '{subData.HINSTOCKOWNERTYPEID}',{subData.HREQUESTORGID},'{subData.HPlanMode}','{subData.HMTONo}',{subData.HERPInterID},
                  {subData.HERPEntryID},{subData.HSTATUS},{subData.HEntryCusID},{subData.HICMOReportRelationQty},{subData.HAuxPropID},
                  '{subData.HProdMaterCode}','{subData.HCusShortName}','{subData.HCusNeedMaterial}','{subData.HPlanSendGoodsDate}',
                  '{subData.HProdMaterName}','{subData.HWorkRemark}','{subData.HImportNote}','{subData.HCusName}',{subData.HInstockQty_Max},
                  {subData.HInstockQty_Min},'{subData.HPickLabel}',{subData.HPickLabelNumber},{subData.HCusNumber},'{subData.HINSTOCKTYPE}',
                  '{subData.HCHECKPRODUCT}','{subData.HQAIP}','{subData.HISBACKFLUSH}','{subData.HREQSRC}',{subData.HSTOCKINQUASELAUXQTY},
                  {subData.HSeOrderEntrySEQ},'{subData.HPROJECTNO}','{subData.HPRODUCTTYPE}',{subData.HCOSTRATE},{subData.HBASEUNITID})";
                        oCN.RunProc(sql);
                    }
                    objJsonResult.code = "1";
                    objJsonResult.count = 1;
                    objJsonResult.Message = "单据同步成功!";
                    objJsonResult.data = null;
                    return objJsonResult;
                    #endregion
                }
            }
            else
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "单据读取失败!";
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        #endregion
    }
}