ch
2022-12-01 8806e07a66f414e5aec181de5e954d1b0c045700
WebAPI/Controllers/Sc_ProcessMangementController.cs
@@ -256,8 +256,10 @@
                    FentityModel.Add("FBomId", new JObject() { ["Fnumber"] = dr1["FBOMNUM"].ToString() }); //BOM版本:FBomId(必填项)
                    FentityModel.Add("FCostRate", dr1["FCostRate"].ToString());// 成本权重
                    FentityModel.Add("FISBACKFLUSH", dr1["FISBACKFLUSH"].ToString() == "1" ? true : false);// 倒冲领料
                    FentityModel.Add("FMOMAINENTRYID", dr1["FMOENTRYID"].ToString());//
                    FentityModel.Add("F_bsv_Base1", new JObject() { ["Fnumber"] = dr1["FPREBDONENUMBER"].ToString() }); //包装标识
                    FentityModel.Add("FLot", new JObject() { ["FNumber"] = dr1["FBATCHNO"].ToString() }); //包装标识
                    FentityModel.Add("FLot", new JObject() { ["FNumber"] = dr1["FBATCHNO"].ToString() }); //批号
                    FentityModel.Add("F_bsv_Text", dr1["工序流转卡号"].ToString()); //流转卡号
                    //批号
                    //FFLOWID FFLOWLINEID FRULEID FSTABLENAME
                    //f6e6eec3 - 5267 - 4f02 - 8593 - b633da508a72    3   PRD_MO2MORPT T_PRD_MOENTRY
@@ -350,8 +352,892 @@
                return objJsonResult;
            }
        }
        /// <summary>
        /// 入库——产品入库单
        /// </summary>
        /// <param name="InterID">工序汇报单主ID</param>
        /// <returns></returns>
        [Route("Sc_ProcessMangement/SaveProcdutInBill")]
        [HttpGet]
        public object SaveProcdutInBill(string BillNo)
        {
            try
            {
                //获取生产汇报单最大InterID和单据号
                Int64 HInterID = DBUtility.ClsPub.CreateBillID("1202", ref DBUtility.ClsPub.sExeReturnInfo);
                string HBillNo = DBUtility.ClsPub.CreateBillCode("1202", ref DBUtility.ClsPub.sExeReturnInfo, true);
                ////获取组织代码
                //string OrganizationNUM = oCN.RunProcReturn("select HNumber from Xt_ORGANIZATIONS where HItemID=" + OrganizationID, "Xt_ORGANIZATIONS").Tables[0].Rows[0]["HNumber"].ToString();
                ////根据工序汇报单主ID获取工序汇报入库单的数据
                //DataSet ds = oCN.RunProcReturn("select * from h_v_MES_StationOutBillList_LastProc where HInterID=" + InterID, "h_v_MES_StationOutBillList_LastProc");
                //DataRow dr = ds.Tables[0].Rows[0];
                //保存
                oCN.BeginTran();
                //生产汇报单主表
                //oCN.RunProc("Insert Into Sc_ICMOReportBillMain   " +
                //"(HBillType,HBillSubType,HInterID,HBillNo,HDate,HMaker,HMakeDate,HBillStatus,HChecker,HCheckDate" +
                //",HYear,HPeriod,HRemark,HEmpID,HEmpNumber" +
                //",HGroupID,HDeptID,HDeptNumber" +
                //",HMainSourceBillNo,HMainSourceInterID,HMainSourceEntryID,HMainSourceBillType" +
                //") " +
                //" values('3711','3711'," + HInterID.ToString() + ",'" + HBillNo + "',getdate(),'" + user + "',getdate(),2,'" + user + "',getdate()" +
                //",DATENAME(YEAR,GETDATE()),0,'','" + dr["HEmpID"].ToString() + "','" + dr["操作员代码"].ToString() +
                //"','" + dr["HGroupID"].ToString() + "',0,''" +
                //",'" + BillNo.ToString() + "'," + InterID.ToString() + ", 0,'3791'" +
                //") ");
                ////生产汇报单子表
                //oCN.RunProc("Insert into Sc_ICMOReportBillSub " +
                //      " (HInterID,HEntryID,HMaterID,HMaterNumber" +
                //      ",HQty,HUnitID,HUnitNumber,HTimes,HSourceID" +
                //      ",HQtyMust,HWorkerID,HWorkerNumber,HBadCount,HWasterQty," +
                //      "HCloseMan,HCloseType,HRemark," +
                //      "HSourceInterID,HSourceEntryID,HSourceBillNo,HSourceBillType,HRelationQty,HRelationMoney" +
                //      ",HSeOrderInterID,HSeOrderEntryID,HSeOrderBillNo" +
                //      ",HICMOInterID,HICMOBillNo,HBarCode" +
                //      ") values("
                //      + HInterID.ToString() + ",1," + dr["HMaterID"].ToString() + ",'" + dr["产品代码"].ToString() + "'" +
                //      "," + dr["合格数量"].ToString() + ",0,'',0,0" +
                //      "," + dr["接收数量"].ToString() + "," + dr["HEmpID"].ToString() + ",'" + dr["操作员代码"].ToString() + "'," + dr["不良数量"].ToString() + "," + dr["报废数量"].ToString() +
                //      ",'',0,''" +
                //      "," + InterID.ToString() + ",0,'" + BillNo.ToString() + "','3791',0,0" +
                //      ",0,0,''" +
                //      "," + dr["HICMOInterID"].ToString() + ",'" + dr["任务单"].ToString() + "',''" +
                //      ") ");
                //同步金蝶
                //访问金蝶
                var loginRet = InvokeHelper.Login();
                var isSuccess = JObject.Parse(loginRet)["LoginResultType"].Value<int>();
                if (isSuccess == 0)
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "操作失败,金蝶账号登录异常。" + loginRet;
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                //
                //DataSet ds1 = oCN.RunProcReturn("select * from  h_v_TOERPProcduct_LastProc where HLastProc = '是' and  hbillno='" + BillNo.ToString() + "'", "h_v_TOERPProcduct_LastProc");
                DataSet ds1 = oCN.RunProcReturn("exec h_p_TOERPProcduct_LastProc '" + BillNo + "'", "h_p_TOERPProcduct_LastProc");
                DataRow dr1 = ds1.Tables[0].Rows[0];
                if (ds1.Tables[0].Rows.Count <= 0)
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "未找到对应的生产汇报单记录;1.未查询到对应的生产汇报单;2.请确保当前工序是末道工序3.汇报单对应的入库数量已满 请在金蝶云查看入库记录!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                JObject model = new JObject();
                model.Add("FBillType", new JObject() { ["FNumber"] = "SCRKD01_SYS" }); //单据类型
                model.Add("FDate", DateTime.Now.ToString("yyyy-MM-dd")); //单据日期
                model.Add("FStockOrgId", new JObject() { ["FNumber"] = dr1["HPrdOrgNumber"].ToString() }); //库存组织代码
                model.Add("FPrdOrgId", new JObject() { ["FNumber"] = dr1["HPrdOrgNumber"].ToString() }); //生产组织代码
                model.Add("FOwnerTypeId0", "BD_OwnerOrg");
                model.Add("FOwnerId0", new JObject() { ["FNumber"] = dr1["HPrdOrgNumber"].ToString() }); //
                model.Add("FIsEntrust", "false");//
                model.Add("FCurrId", new JObject() { ["FNumber"] = "PRE001" }); //
                model.Add("FBillNo", HBillNo);
                JArray Fentity = new JArray();
                foreach (DataRow item in ds1.Tables[0].Rows)
                {
                    JObject FentityModel = new JObject();
                    FentityModel.Add("FSrcEntryId", item["HSourceEntryID"].ToString());//  源单分录内码、
                    FentityModel.Add("FIsNew", "false");//  源单类型
                    FentityModel.Add("FMaterialId", new JObject() { ["FNumber"] = item["HMaterNumber"].ToString() }); // 物料编码
                    FentityModel.Add("FCheckProduct", "false");//
                    FentityModel.Add("FInStockType", "1");//
                    FentityModel.Add("FProductType", "1");//
                    FentityModel.Add("FUNITID", new JObject() { ["FNumber"] = item["HUnitNumber"].ToString() });//单位
                    FentityModel.Add("FMustQty", item["数量"].ToString());//
                    FentityModel.Add("FRealQty", item["数量"].ToString());//
                    FentityModel.Add("FCostRate", "100");//
                    FentityModel.Add("FBaseUnitId", new JObject() { ["FNumber"] = item["HUnitNumber"].ToString() });//单位
                    FentityModel.Add("FBaseMustQty", item["数量"].ToString());//
                    FentityModel.Add("FBaseRealQty", item["数量"].ToString());//
                    FentityModel.Add("FOwnerTypeId", "BD_OwnerOrg");//
                    FentityModel.Add("FOwnerId", new JObject() { ["FNumber"] = item["HPrdOrgNumber"].ToString() });//
                    FentityModel.Add("FStockId", new JObject() { ["FNumber"] = item["HStockNumber"].ToString() }); // 仓库
                    FentityModel.Add("FLot", new JObject() { ["FNumber"] = item["HBatchNo"].ToString() }); //批号
                    FentityModel.Add("FISBACKFLUSH", "true");//
                    FentityModel.Add("FWorkShopId1", new JObject() { ["FNumber"] = item["HWorkShopNumber"].ToString() }); //  生产车间
                    FentityModel.Add("FMOBILLNO", item["HMOBillNo"].ToString());//
                    FentityModel.Add("FMoId", item["HICMOInterID"].ToString());//生产订单内码
                    FentityModel.Add("FMoEntryId", item["HMOEntryID"].ToString());//
                    FentityModel.Add("FMoEntrySeq", item["HMOEntrySEQ"].ToString());//生产订单行号
                    FentityModel.Add("FStockUnitId", new JObject() { ["FNumber"] = item["HUnitNumber"].ToString() });//库存单位
                    FentityModel.Add("FStockRealQty", item["数量"].ToString());//
                    FentityModel.Add("FSrcBillType", "PRD_MORPT");//
                    FentityModel.Add("FSrcBillNo", item["HSourceBillNo"].ToString());//
                    FentityModel.Add("FSrcInterId", item["HSourceInterID"].ToString());//
                    FentityModel.Add("FBasePrdRealQty", item["数量"].ToString());//
                    FentityModel.Add("FIsFinished", "false");//
                    FentityModel.Add("FStockStatusId", new JObject() { ["FNumber"] = "KCZT01_SYS" }); //
                    FentityModel.Add("FSrcEntrySeq", item["HSourceSeQ"].ToString());//  源单分录行号
                    FentityModel.Add("FMOMAINENTRYID", item["HMOEntryID"].ToString());//
                    FentityModel.Add("FKeeperTypeId", "BD_KeeperOrg");
                    FentityModel.Add("FKeeperId", new JObject() { ["FNumber"] = item["HPrdOrgNumber"].ToString() });//
                    FentityModel.Add("FIsOverLegalOrg", "false");//
                    FentityModel.Add("F_bsv_Base1", new JObject() { ["FNumber"] = item["HBZBS"].ToString() });//
                    FentityModel.Add("F_BSV_TEXT", item["HLZKH"].ToString());//
                    FentityModel.Add("F_BSV_TEXT1", item["HWYID"].ToString());//
                                                                               //批号
                                                                               //FFLOWID FFLOWLINEID FRULEID FSTABLENAME
                                                                               //f6e6eec3 - 5267 - 4f02 - 8593 - b633da508a72    3   PRD_MO2MORPT T_PRD_MOENTRY
                                                                               //业务流程图:FEntity_Link_FFlowId
                                                                               //推进路线:FEntity_Link_FFlowLineId
                                                                               //转换规则:FEntity_Link_FRuleId
                                                                               //源单表内码:FEntity_Link_FSTableId
                                                                               //源单表:FEntity_Link_FSTableName
                                                                               //源单内码:FEntity_Link_FSBillId
                                                                               //源单分录内码:FEntity_Link_FSId
                                                                               //原始携带量:FEntity_Link_FBaseQuaQtyOld
                                                                               //修改携带量:FEntity_Link_FBaseQuaQty
                    JArray Fentity2 = new JArray();
                    JObject FentityModel2 = new JObject();
                    FentityModel2.Add("FEntity_Link_FFlowId", "f6e6eec3-5267-4f02-8593-b633da508a72");
                    FentityModel2.Add("FEntity_Link_FFlowLineId", "5");
                    FentityModel2.Add("FEntity_Link_FRuleId", "PRD_MORPT2INSTOCK");
                    FentityModel2.Add("FEntity_Link_FSTableName", "T_PRD_MORPTENTRY");
                    FentityModel2.Add("FEntity_Link_FSTableId", "0");
                    FentityModel2.Add("FEntity_Link_FSBillId", item["HSourceInterID"].ToString());
                    FentityModel2.Add("FEntity_Link_FSId", item["HSourceEntryID"].ToString());
                    FentityModel2.Add("FEntity_Link_FBasePrdRealQtyOld", item["关联数量"].ToString());
                    FentityModel2.Add("FEntity_Link_FBasePrdRealQty", item["数量"].ToString());
                    Fentity2.Add(FentityModel2);
                    FentityModel.Add("FEntity_Link", Fentity2);
                    FentityModel.Add("FBFLowId", new JObject() { ["FID"] = "f6e6eec3-5267-4f02-8593-b633da508a72" }); //
                    Fentity.Add(FentityModel);
                    //Fentity.Add(FentityModel);
                }
                model.Add("FEntity", Fentity); //明细信息
                JObject jsonRoot = new JObject()
                {
                    ["Creator"] = "",
                    ["NeedUpDateFields"] = new JArray(),
                    ["NeedReturnFields"] = new JArray(),
                    //["IsDeleteEntry"] = "true",
                    //["SubSystemId"] = "",
                    //["IsVerifyBaseDataField"] = "false",
                    ["IsDeleteEntry"] = "true",
                    ["SubSystemId"] = "",
                    ["IsVerifyBaseDataField"] = "true",
                    ["IsEntryBatchFill"] = "false",
                    ["ValidateFlag"] = "true",
                    ["NumberSearch"] = "true",
                    ["IsAutoAdjustField"] = "false",
                    ["InterationFlags"] = "",
                    ["IgnoreInterationFlag"] = "",
                    //["IsAutoSubmitAndAudit"] = true,//自动调用提交和审核功能
                    ["Model"] = model
                };
                string result = InvokeHelper.Save("PRD_INSTOCK", JsonConvert.SerializeObject(jsonRoot));//保存
                //判断保存是否成功
                if (JObject.Parse(result)["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToUpper() != "TRUE")
                {
                    LogService.Write("生产入库错误jsonRoot:" + jsonRoot);
                    oCN.RollBack();
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = $"生产入库单同步金蝶云失败!单号:{HBillNo.ToString()}" + result + jsonRoot;
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                //提交审核
                string result1 = string.Empty;
                string result2 = string.Empty;
                var fID = JObject.Parse(result)["Result"]["Id"].ToString();
                var fBillNo = JObject.Parse(result)["Result"]["Number"].ToString();
                var json = new
                {
                    Ids = fID,
                };
                result1 = InvokeHelper.Submit("PRD_INSTOCK", JsonConvert.SerializeObject(json));//提交
                //result2 = InvokeHelper.Audit("PRD_INSTOCK", JsonConvert.SerializeObject(json));//提交
                if (JObject.Parse(result1)["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToUpper() != "TRUE")
                {
                    oCN.RollBack();
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = $"生产入库单单号:{fBillNo},提交失败" + result;
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                oCN.Commit();
                objJsonResult.code = "0";
                objJsonResult.count = 1;
                objJsonResult.Message = "保存成功!";
                objJsonResult.data = 1;
                return objJsonResult;
            }
            catch (Exception e)
            {
                oCN.RollBack();
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "Exception!" + e.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        /// <summary>
        /// 入库——产品入库单
        /// </summary>
        /// <param name="InterID">工序汇报单主ID</param>
        /// <returns></returns>
        [Route("Sc_ProcessMangement/SaveBFBill")]
        [HttpGet]
        public object SaveBFBill(string BillNo)
        {
            try
            {
                //获取生产汇报单最大InterID和单据号
                Int64 HInterID = DBUtility.ClsPub.CreateBillID("1202", ref DBUtility.ClsPub.sExeReturnInfo);
                string HBillNo = DBUtility.ClsPub.CreateBillCode("1202", ref DBUtility.ClsPub.sExeReturnInfo, true);
                ////获取组织代码
                //string OrganizationNUM = oCN.RunProcReturn("select HNumber from Xt_ORGANIZATIONS where HItemID=" + OrganizationID, "Xt_ORGANIZATIONS").Tables[0].Rows[0]["HNumber"].ToString();
                ////根据工序汇报单主ID获取工序汇报入库单的数据
                //DataSet ds = oCN.RunProcReturn("select * from h_v_MES_StationOutBillList_LastProc where HInterID=" + InterID, "h_v_MES_StationOutBillList_LastProc");
                //DataRow dr = ds.Tables[0].Rows[0];
                //保存
                oCN.BeginTran();
                //生产汇报单主表
                //oCN.RunProc("Insert Into Sc_ICMOReportBillMain   " +
                //"(HBillType,HBillSubType,HInterID,HBillNo,HDate,HMaker,HMakeDate,HBillStatus,HChecker,HCheckDate" +
                //",HYear,HPeriod,HRemark,HEmpID,HEmpNumber" +
                //",HGroupID,HDeptID,HDeptNumber" +
                //",HMainSourceBillNo,HMainSourceInterID,HMainSourceEntryID,HMainSourceBillType" +
                //") " +
                //" values('3711','3711'," + HInterID.ToString() + ",'" + HBillNo + "',getdate(),'" + user + "',getdate(),2,'" + user + "',getdate()" +
                //",DATENAME(YEAR,GETDATE()),0,'','" + dr["HEmpID"].ToString() + "','" + dr["操作员代码"].ToString() +
                //"','" + dr["HGroupID"].ToString() + "',0,''" +
                //",'" + BillNo.ToString() + "'," + InterID.ToString() + ", 0,'3791'" +
                //") ");
                ////生产汇报单子表
                //oCN.RunProc("Insert into Sc_ICMOReportBillSub " +
                //      " (HInterID,HEntryID,HMaterID,HMaterNumber" +
                //      ",HQty,HUnitID,HUnitNumber,HTimes,HSourceID" +
                //      ",HQtyMust,HWorkerID,HWorkerNumber,HBadCount,HWasterQty," +
                //      "HCloseMan,HCloseType,HRemark," +
                //      "HSourceInterID,HSourceEntryID,HSourceBillNo,HSourceBillType,HRelationQty,HRelationMoney" +
                //      ",HSeOrderInterID,HSeOrderEntryID,HSeOrderBillNo" +
                //      ",HICMOInterID,HICMOBillNo,HBarCode" +
                //      ") values("
                //      + HInterID.ToString() + ",1," + dr["HMaterID"].ToString() + ",'" + dr["产品代码"].ToString() + "'" +
                //      "," + dr["合格数量"].ToString() + ",0,'',0,0" +
                //      "," + dr["接收数量"].ToString() + "," + dr["HEmpID"].ToString() + ",'" + dr["操作员代码"].ToString() + "'," + dr["不良数量"].ToString() + "," + dr["报废数量"].ToString() +
                //      ",'',0,''" +
                //      "," + InterID.ToString() + ",0,'" + BillNo.ToString() + "','3791',0,0" +
                //      ",0,0,''" +
                //      "," + dr["HICMOInterID"].ToString() + ",'" + dr["任务单"].ToString() + "',''" +
                //      ") ");
                //同步金蝶
                //访问金蝶
                var loginRet = InvokeHelper.Login();
                var isSuccess = JObject.Parse(loginRet)["LoginResultType"].Value<int>();
                if (isSuccess == 0)
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "操作失败,金蝶账号登录异常。" + loginRet;
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                //
                //DataSet ds1 = oCN.RunProcReturn("select * from  h_v_TOERPProcduct_LastProc where HLastProc = '是' and  hbillno='" + BillNo.ToString() + "'", "h_v_TOERPProcduct_LastProc");
                DataSet ds1 = oCN.RunProcReturn("exec h_p_TOERPProcduct_LastProc_BF '" + BillNo + "'", "h_p_TOERPProcduct_LastProc_BF");
                DataRow dr1 = ds1.Tables[0].Rows[0];
                JObject model = new JObject();
                model.Add("FBillType", new JObject() { ["FNumber"] = "SCRKD01_SYS" }); //单据类型
                model.Add("FDate", DateTime.Now.ToString("yyyy-MM-dd")); //单据日期
                model.Add("FStockOrgId", new JObject() { ["FNumber"] = dr1["HPrdOrgNumber"].ToString() }); //库存组织代码
                model.Add("FPrdOrgId", new JObject() { ["FNumber"] = dr1["HPrdOrgNumber"].ToString() }); //生产组织代码
                model.Add("FOwnerTypeId0", "BD_OwnerOrg");
                model.Add("FOwnerId0", new JObject() { ["FNumber"] = dr1["HPrdOrgNumber"].ToString() }); //
                model.Add("FIsEntrust", "false");//
                model.Add("FCurrId", new JObject() { ["FNumber"] = "PRE001" }); //
                model.Add("FBillNo", HBillNo);
                JArray Fentity = new JArray();
                foreach (DataRow item in ds1.Tables[0].Rows)
                {
                    JObject FentityModel = new JObject();
                    FentityModel.Add("FSrcEntryId", item["HSourceEntryID"].ToString());//  源单分录内码、
                    FentityModel.Add("FIsNew", "false");//  源单类型
                    FentityModel.Add("FMaterialId", new JObject() { ["FNumber"] = item["HMaterNumber"].ToString() }); // 物料编码
                    FentityModel.Add("FCheckProduct", "false");//
                    FentityModel.Add("FInStockType", "1");//
                    FentityModel.Add("FProductType", "1");//
                    FentityModel.Add("FUNITID", new JObject() { ["FNumber"] = item["HUnitNumber"].ToString() });//单位
                    FentityModel.Add("FMustQty", item["数量"].ToString());//
                    FentityModel.Add("FRealQty", item["数量"].ToString());//
                    FentityModel.Add("FCostRate", "100");//
                    FentityModel.Add("FBaseUnitId", new JObject() { ["FNumber"] = item["HUnitNumber"].ToString() });//单位
                    FentityModel.Add("FBaseMustQty", item["数量"].ToString());//
                    FentityModel.Add("FBaseRealQty", item["数量"].ToString());//
                    FentityModel.Add("FOwnerTypeId", "BD_OwnerOrg");//
                    FentityModel.Add("FOwnerId", new JObject() { ["FNumber"] = item["HPrdOrgNumber"].ToString() });//
                    FentityModel.Add("FStockId", new JObject() { ["FNumber"] = item["HStockNumber"].ToString() }); // 仓库
                    FentityModel.Add("FLot", new JObject() { ["FNumber"] = item["HBatchNo"].ToString() }); //批号
                    FentityModel.Add("FISBACKFLUSH", "true");//
                    FentityModel.Add("FWorkShopId1", new JObject() { ["FNumber"] = item["HWorkShopNumber"].ToString() }); //  生产车间
                    FentityModel.Add("FMOBILLNO", item["HMOBillNo"].ToString());//
                    FentityModel.Add("FMoId", item["HICMOInterID"].ToString());//生产订单内码
                    FentityModel.Add("FMoEntryId", item["HMOEntryID"].ToString());//
                    FentityModel.Add("FMoEntrySeq", item["HMOEntrySEQ"].ToString());//生产订单行号
                    FentityModel.Add("FStockUnitId", new JObject() { ["FNumber"] = item["HUnitNumber"].ToString() });//库存单位
                    FentityModel.Add("FStockRealQty", item["数量"].ToString());//
                    FentityModel.Add("FSrcBillType", "PRD_MORPT");//
                    FentityModel.Add("FSrcBillNo", item["HSourceBillNo"].ToString());//
                    FentityModel.Add("FSrcInterId", item["HSourceInterID"].ToString());//
                    FentityModel.Add("FBasePrdRealQty", item["数量"].ToString());//
                    FentityModel.Add("FIsFinished", "false");//
                    FentityModel.Add("FStockStatusId", new JObject() { ["FNumber"] = "KCZT01_SYS" }); //
                    FentityModel.Add("FSrcEntrySeq", item["HSourceSeQ"].ToString());//  源单分录行号
                    FentityModel.Add("FMOMAINENTRYID", item["HMOEntryID"].ToString());//
                    FentityModel.Add("FKeeperTypeId", "BD_KeeperOrg");
                    FentityModel.Add("FKeeperId", new JObject() { ["FNumber"] = item["HPrdOrgNumber"].ToString() });//
                    FentityModel.Add("FIsOverLegalOrg", "false");//
                    FentityModel.Add("F_bsv_Base1", new JObject() { ["FNumber"] = item["HBZBS"].ToString() });//
                    FentityModel.Add("F_BSV_TEXT", item["HLZKH"].ToString());//
                    FentityModel.Add("F_BSV_TEXT1", item["HWYID"].ToString());//
                                                                              //批号
                                                                              //FFLOWID FFLOWLINEID FRULEID FSTABLENAME
                                                                              //f6e6eec3 - 5267 - 4f02 - 8593 - b633da508a72    3   PRD_MO2MORPT T_PRD_MOENTRY
                                                                              //业务流程图:FEntity_Link_FFlowId
                                                                              //推进路线:FEntity_Link_FFlowLineId
                                                                              //转换规则:FEntity_Link_FRuleId
                                                                              //源单表内码:FEntity_Link_FSTableId
                                                                              //源单表:FEntity_Link_FSTableName
                                                                              //源单内码:FEntity_Link_FSBillId
                                                                              //源单分录内码:FEntity_Link_FSId
                                                                              //原始携带量:FEntity_Link_FBaseQuaQtyOld
                                                                              //修改携带量:FEntity_Link_FBaseQuaQty
                    JArray Fentity2 = new JArray();
                    JObject FentityModel2 = new JObject();
                    FentityModel2.Add("FEntity_Link_FFlowId", "f6e6eec3-5267-4f02-8593-b633da508a72");
                    FentityModel2.Add("FEntity_Link_FFlowLineId", "5");
                    FentityModel2.Add("FEntity_Link_FRuleId", "PRD_MORPT2INSTOCK");
                    FentityModel2.Add("FEntity_Link_FSTableName", "T_PRD_MORPTENTRY");
                    FentityModel2.Add("FEntity_Link_FSTableId", "0");
                    FentityModel2.Add("FEntity_Link_FSBillId", item["HSourceInterID"].ToString());
                    FentityModel2.Add("FEntity_Link_FSId", item["HSourceEntryID"].ToString());
                    FentityModel2.Add("FEntity_Link_FBasePrdRealQtyOld", item["关联数量"].ToString());
                    FentityModel2.Add("FEntity_Link_FBasePrdRealQty", item["数量"].ToString());
                    Fentity2.Add(FentityModel2);
                    FentityModel.Add("FEntity_Link", Fentity2);
                    FentityModel.Add("FBFLowId", new JObject() { ["FID"] = "f6e6eec3-5267-4f02-8593-b633da508a72" }); //
                    Fentity.Add(FentityModel);
                    //Fentity.Add(FentityModel);
                }
                model.Add("FEntity", Fentity); //明细信息
                JObject jsonRoot = new JObject()
                {
                    ["Creator"] = "",
                    ["NeedUpDateFields"] = new JArray(),
                    ["NeedReturnFields"] = new JArray(),
                    //["IsDeleteEntry"] = "true",
                    //["SubSystemId"] = "",
                    //["IsVerifyBaseDataField"] = "false",
                    ["IsDeleteEntry"] = "true",
                    ["SubSystemId"] = "",
                    ["IsVerifyBaseDataField"] = "true",
                    ["IsEntryBatchFill"] = "false",
                    ["ValidateFlag"] = "true",
                    ["NumberSearch"] = "true",
                    ["IsAutoAdjustField"] = "false",
                    ["InterationFlags"] = "",
                    ["IgnoreInterationFlag"] = "",
                    //["IsAutoSubmitAndAudit"] = true,//自动调用提交和审核功能
                    ["Model"] = model
                };
                string result = InvokeHelper.Save("PRD_INSTOCK", JsonConvert.SerializeObject(jsonRoot));//保存
                //判断保存是否成功
                if (JObject.Parse(result)["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToUpper() != "TRUE")
                {
                    LogService.Write("生产入库错误jsonRoot:" + jsonRoot);
                    oCN.RollBack();
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = $"生产入库单同步金蝶云失败!单号:{HBillNo.ToString()}" + result + jsonRoot;
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                //提交审核
                string result1 = string.Empty;
                string result2 = string.Empty;
                var fID = JObject.Parse(result)["Result"]["Id"].ToString();
                var fBillNo = JObject.Parse(result)["Result"]["Number"].ToString();
                var json = new
                {
                    Ids = fID,
                };
                result1 = InvokeHelper.Submit("PRD_INSTOCK", JsonConvert.SerializeObject(json));//提交
                //result2 = InvokeHelper.Audit("PRD_INSTOCK", JsonConvert.SerializeObject(json));//提交
                if (JObject.Parse(result1)["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToUpper() != "TRUE")
                {
                    oCN.RollBack();
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = $"生产入库单单号:{fBillNo},提交失败" + result;
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                oCN.Commit();
                objJsonResult.code = "0";
                objJsonResult.count = 1;
                objJsonResult.Message = "保存成功!";
                objJsonResult.data = 1;
                return objJsonResult;
            }
            catch (Exception e)
            {
                oCN.RollBack();
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "Exception!" + e.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        /// <summary>
        /// 生成金蝶云来料检验单
        /// </summary>
        /// <param name="InterID">工序汇报单主ID</param>
        /// <returns></returns>
        [Route("QCStockInCheckBill/set_SaveQCStockInCheckBill_Json")]
        [HttpGet]
        public object set_SaveQCStockInCheckBill_Json(string HZJOrgNumber, string HMaterNumber, string HUnitNumber,
            double HCheckQty, double HRightQty, double HBadQty,
            string HCheckResult, string HSupNumber, string HWHNumber,
            string HUseResult, Int64 HSeQ, Int64 HSourceInterID,
            Int64 HSourceEntryID, string HSourceBillNo, string user,
            Int64 HWHID, Int64 HSPID, Int64 HSupID, Int64 HKeeperID,
            Int64 HMaterID, string HSourceBillType, Int64 HSLInterID,
            Int64 HSLEntryID, string HSLBillNo, Int64 HSLSeQ)
        {
            try
            {
                //获取生产汇报单最大InterID和单据号
                Int64 HInterID = DBUtility.ClsPub.CreateBillID("7503", ref DBUtility.ClsPub.sExeReturnInfo);
                string HBillNo = DBUtility.ClsPub.CreateBillCode("7503", ref DBUtility.ClsPub.sExeReturnInfo, true);
                //保存
                oCN.BeginTran();
                //生产汇报单主表
                oCN.RunProc("Insert Into QC_POStockInCheckBillMain   " +
                "(HBillType,HBillSubType,HInterID,HBillNo,HDate,HMaker,HMakeDate,HBillStatus,HChecker,HCheckDate" +
                ",HYear,HPeriod,HRemark,HSupID,HMaterID" +
                ",HInstockQty,HCheckQty,HRightQty,HBadQty,HFirstCheckEmp" +
                ",HCheckerResult,HSteelStoveNo,HSteelCompReport,HAspect,HSize" +
                ") " +
                " values('7503','7503'," + HInterID.ToString() + ",'" + HBillNo + "',getdate(),'" + user + "',getdate(),2,'" + user + "',getdate()" +
                ",DATENAME(YEAR,GETDATE()),0,''," + HSupID.ToString() + "," + HMaterID.ToString() +
                ",'" + HCheckQty.ToString() + "','" + HCheckQty.ToString() + "','" + HRightQty.ToString() + "','" + HBadQty.ToString() + "','" + HKeeperID.ToString() + "'" +
                ",'" + HCheckResult.ToString() + "','', '','',''" +
                ") ");
                //生产汇报单子表
                oCN.RunProc("Insert into QC_POStockInCheckBillSub " +
                      " (HInterID,HEntryID,HCloseMan,HCloseType" +
                      ",HRemark,HSourceInterID,HSourceEntryID,HSourceBillNo,HSourceBillType" +
                      ",HRelationQty,HRelationMoney,HQCCheckClassID,HQCCheckItemID,HQCStd," +
                      "HResult,HQCRelValue,HProcCheckEmp,HProcCheckTime" +
                      ") values("
                      + HInterID.ToString() + ",1,'',''" +
                      ",''," + HSourceInterID.ToString() + "," + HSourceEntryID.ToString() + ",'" + HSourceBillNo.ToString() + "','" + HSourceBillType.ToString() + "'" +
                      ",0,0,0,0,''"+
                      ",'" + HCheckResult.ToString() + "','" + HCheckResult.ToString() + "','" + HKeeperID.ToString() + "',getdate()" +
                      ") ");
                //同步金蝶
                //访问金蝶
                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;
                }
                JObject model = new JObject();
                model.Add("FBillTypeID", new JObject() { ["Fnumber"] = "JYD001_SYS" }); //单据类型 来料检验单JYD001_SYS
                model.Add("FBusinessType", "1"); //业务类型
                model.Add("FDate", DateTime.Now.ToString("yyyy-MM-dd")); //单据日期
                model.Add("FSourceOrgId", new JObject() { ["Fnumber"] = HZJOrgNumber.ToString() }); //来源组织
                model.Add("FInspectOrgId", new JObject() { ["Fnumber"] = HZJOrgNumber.ToString() }); //质检组织
                model.Add("FISSYNCED", "false");//  是否已同步
                model.Add("FBillNo", HBillNo);
                JArray Fentity = new JArray();
                    JObject FentityModel = new JObject();
                    FentityModel.Add("FMaterialId", new JObject() { ["Fnumber"] = HMaterNumber.ToString() });//  物料内码
                    FentityModel.Add("FUnitID", new JObject() { ["Fnumber"] = HUnitNumber.ToString() });//计量单位内码
                    FentityModel.Add("FInspectQty", HCheckQty.ToString());//  检验数量
                    FentityModel.Add("FQualifiedQty", HRightQty.ToString());//  合格数量
                    FentityModel.Add("FInspectResult", HCheckResult.ToString());//  检验结果
                    FentityModel.Add("FQCStatus", "1");//  质检状态
                    FentityModel.Add("FIsRelated", false);//  不良品关联标志
                    FentityModel.Add("FSrcBillType0", "PUR_ReceiveBill");//  源单类型
                    FentityModel.Add("FBaseUnitId", new JObject() { ["Fnumber"] = HUnitNumber.ToString() });//基本单位
                    FentityModel.Add("FBaseInspectQty", HCheckQty.ToString());//基本单位检验数量
                    FentityModel.Add("FSupplierId", new JObject() { ["Fnumber"] = HSupNumber.ToString() }); //  供应商
                    FentityModel.Add("FStockId", new JObject() { ["Fnumber"] = HWHNumber.ToString() }); // 仓库
                    FentityModel.Add("FInspectTimes","1"); // 检验次数
                    FentityModel.Add("FTimeUnit","24");//时间单位
                    FentityModel.Add("FSAMPLEDAMAGEBEARER","2");//样本破坏承担方
                    FentityModel.Add("FISFIRSTINSPECT", false);//首检
                    FentityModel.Add("FBaseQualifiedQty", HRightQty.ToString());//基本单位合格数
                    FentityModel.Add("FCurrency", new JObject() { ["Fnumber"] = "PRE001" });//币别
                    FentityModel.Add("FIsSplitRow ", false);// 是否拆分行
                    JArray Fentity2 = new JArray();
                    JObject FentityModel2 = new JObject();
                    FentityModel2.Add("FPolicyMaterialId", new JObject() { ["Fnumber"] = HMaterNumber.ToString() });//  物料内码
                    FentityModel2.Add("FPolicyStatus", "1");  //状态
                    FentityModel2.Add("FPolicyQty", HRightQty.ToString());    //数量
                    FentityModel2.Add("FBasePolicyQty", HRightQty.ToString()); //基本单位数量
                    FentityModel2.Add("FUsePolicy", HUseResult.ToString());   //使用决策
                    FentityModel2.Add("FIsCheck", false);   //是否抽检
                    FentityModel2.Add("FIsDefectProcess", false);  //不良处理
                    FentityModel2.Add("FCanSale", false);   //可销售
                    FentityModel2.Add("FIsMRBReview", false);   //MRP评审
                    FentityModel2.Add("FIsReturn", false);   //判退
                    FentityModel2.Add("FIsRelatedDefect", false);   //不良品关联标志
                    Fentity2.Add(FentityModel2);
                    FentityModel.Add("FPolicyDetail", Fentity2);
                JArray Fentity3 = new JArray();
                JObject FentityModel3 = new JObject();
                FentityModel3.Add("FDetailID", "0");//
                FentityModel3.Add("FSrcBillType", "PUR_ReceiveBill");   //源单类型
                FentityModel3.Add("FSrcBillNo", HSLBillNo.ToString());    //收料通知单单号
                FentityModel3.Add("FSrcInterId", HSLInterID.ToString());      //收料通知单主ID
                FentityModel3.Add("FSrcEntryId",HSLEntryID.ToString());    //收料通知单子ID
                FentityModel3.Add("FSrcEntrySeq", HSLSeQ.ToString());    //源单行号
                FentityModel3.Add("FOrderType", new JObject() { ["FID"] = "PUR_PurchaseOrder" });  //  订单类型
                FentityModel3.Add("FOrderBillNo", HSourceBillNo.ToString());   //订单单号
                FentityModel3.Add("FOrderId", HSourceInterID.ToString());      //订单主ID
                FentityModel3.Add("FOrderEntryId", HSourceEntryID.ToString());  //订单子ID
                FentityModel3.Add("FOrderEntrySeq", HSeQ.ToString());  //订单行号
                Fentity3.Add(FentityModel3);
                FentityModel.Add("FReferDetail", Fentity3);
                JArray Fentity4 = new JArray();
                JObject FentityModel4 = new JObject();
                FentityModel4.Add("FEntity_Link_FRuleId", "QM_PURReceive2Inspect");   //单据转换规则
                FentityModel4.Add("FEntity_Link_FSTableName", "T_PUR_RECEIVEENTRY");    //收料通知单子表
                FentityModel4.Add("FEntity_Link_FSBillId", HSLInterID.ToString());      //收料通知单主内码
                FentityModel4.Add("FEntity_Link_FSId", HSLEntryID.ToString());    //收料通知单子内码
                FentityModel4.Add("FEntity_Link_FBaseAcceptQtyOld", HRightQty.ToString());    //
                FentityModel4.Add("FEntity_Link_FBaseInspectQtyOld", HRightQty.ToString());    //
                FentityModel4.Add("FEntity_Link_FInspectQtyOld", HRightQty.ToString());    //
                Fentity4.Add(FentityModel4);
                FentityModel.Add("FEntity_Link", Fentity4);
                Fentity.Add(FentityModel);
                model.Add("FEntity", Fentity); //明细信息
                JObject jsonRoot = new JObject()
                {
                    ["Creator"] = "",
                    ["NeedUpDateFields"] = new JArray(),
                    ["NeedReturnFields"] = new JArray(),
                    ["IsDeleteEntry"] = "false",
                    ["SubSystemId"] = "",
                    ["IsVerifyBaseDataField"] = "false",
                    //["IsAutoSubmitAndAudit"] = true,//自动调用提交和审核功能
                    ["Model"] = model
                };
                string result = InvokeHelper.Save("QM_InspectBill", JsonConvert.SerializeObject(jsonRoot));//保存
                //判断保存是否成功
                if (JObject.Parse(result)["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToUpper() != "TRUE")
                {
                    LogService.Write("来料检验单保存错误jsonRoot:" + jsonRoot);
                    oCN.RollBack();
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = $"来料检验单同步金蝶云失败!单号:{HBillNo.ToString()}" + result;
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                //提交审核
                string result1 = string.Empty;
                string result2 = string.Empty;
                var fID = JObject.Parse(result)["Result"]["Id"].ToString();
                var fBillNo = JObject.Parse(result)["Result"]["Number"].ToString();
                var json = new
                {
                    Ids = fID,
                };
                result1 = InvokeHelper.Submit("QM_InspectBill", JsonConvert.SerializeObject(json));//提交
                result2 = InvokeHelper.Audit("QM_InspectBill", JsonConvert.SerializeObject(json));//提交
                if (JObject.Parse(result1)["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToUpper() != "TRUE")
                {
                    oCN.RollBack();
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = $"来料检验单号:{fBillNo},提交失败" + result;
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                oCN.Commit();
                objJsonResult.code = "0";
                objJsonResult.count = 1;
                objJsonResult.Message = "保存成功!" + jsonRoot;
                objJsonResult.data = 1;
                return objJsonResult;
            }
            catch (Exception e)
            {
                oCN.RollBack();
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "Exception!" + e.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        #endregion
        /// <summary>
        /// 生成金蝶云产品检验单
        /// </summary>
        /// <param name="InterID">工序汇报单主ID</param>
        /// <returns></returns>
        [Route("SCStockInCheckBill/set_SaveSCStockInCheckBill_Json")]
        [HttpGet]
        public object set_SaveSCStockInCheckBill_Json(string HZJOrgNumber, string HMaterNumber, string HUnitNumber,
            double HCheckQty, double HRightQty, double HBadQty,
            string HCheckResult, string HSupNumber, string HWHNumber,
            string HUseResult, Int64 HSeQ, Int64 HSourceInterID,
            Int64 HSourceEntryID, string HSourceBillNo, string user,
            Int64 HWHID, Int64 HSPID, Int64 HSupID, Int64 HKeeperID,
            Int64 HMaterID, string HSourceBillType, Int64 HSLInterID,
            Int64 HSLEntryID, string HSLBillNo, Int64 HSLSeQ)
        {
            try
            {
                //获取生产汇报单最大InterID和单据号
                Int64 HInterID = DBUtility.ClsPub.CreateBillID("7501", ref DBUtility.ClsPub.sExeReturnInfo);
                string HBillNo = DBUtility.ClsPub.CreateBillCode("7501", ref DBUtility.ClsPub.sExeReturnInfo, true);
                //保存
                oCN.BeginTran();
                //生成产品检验单
                //oCN.RunProc("Insert Into QC_POStockInCheckBillMain   " +
                //"(HBillType,HBillSubType,HInterID,HBillNo,HDate,HMaker,HMakeDate,HBillStatus,HChecker,HCheckDate" +
                //",HYear,HPeriod,HRemark,HSupID,HMaterID" +
                //",HInstockQty,HCheckQty,HRightQty,HBadQty,HFirstCheckEmp" +
                //",HCheckerResult,HSteelStoveNo,HSteelCompReport,HAspect,HSize" +
                //") " +
                //" values('7503','7503'," + HInterID.ToString() + ",'" + HBillNo + "',getdate(),'" + user + "',getdate(),2,'" + user + "',getdate()" +
                //",DATENAME(YEAR,GETDATE()),0,''," + HSupID.ToString() + "," + HMaterID.ToString() +
                //",'" + HCheckQty.ToString() + "','" + HCheckQty.ToString() + "','" + HRightQty.ToString() + "','" + HBadQty.ToString() + "','" + HKeeperID.ToString() + "'" +
                //",'" + HCheckResult.ToString() + "','', '','',''" +
                //") ");
                ////生产汇报单子表
                //oCN.RunProc("Insert into QC_POStockInCheckBillSub " +
                //      " (HInterID,HEntryID,HCloseMan,HCloseType" +
                //      ",HRemark,HSourceInterID,HSourceEntryID,HSourceBillNo,HSourceBillType" +
                //      ",HRelationQty,HRelationMoney,HQCCheckClassID,HQCCheckItemID,HQCStd," +
                //      "HResult,HQCRelValue,HProcCheckEmp,HProcCheckTime" +
                //      ") values("
                //      + HInterID.ToString() + ",1,'',''" +
                //      ",''," + HSourceInterID.ToString() + "," + HSourceEntryID.ToString() + ",'" + HSourceBillNo.ToString() + "','" + HSourceBillType.ToString() + "'" +
                //      ",0,0,0,0,''" +
                //      ",'" + HCheckResult.ToString() + "','" + HCheckResult.ToString() + "','" + HKeeperID.ToString() + "',getdate()" +
                //      ") ");
                //同步金蝶
                //访问金蝶
                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;
                }
                JObject model = new JObject();
                model.Add("FBillTypeID", new JObject() { ["Fnumber"] = "JYD002_SYS" }); //单据类型 产品检验单JYD002_SYS
                model.Add("FBusinessType", "3"); //业务类型
                model.Add("FDate", DateTime.Now.ToString("yyyy-MM-dd")); //单据日期
                model.Add("FSourceOrgId", new JObject() { ["Fnumber"] = HZJOrgNumber.ToString() }); //来源组织
                model.Add("FInspectOrgId", new JObject() { ["Fnumber"] = HZJOrgNumber.ToString() }); //质检组织
                model.Add("FISSYNCED", "false");//  是否已同步
                model.Add("FBillNo", HBillNo);
                JArray Fentity = new JArray();
                JObject FentityModel = new JObject();
                FentityModel.Add("FMaterialId", new JObject() { ["Fnumber"] = HMaterNumber.ToString() });//  物料内码
                FentityModel.Add("FUnitID", new JObject() { ["Fnumber"] = HUnitNumber.ToString() });//计量单位内码
                FentityModel.Add("FInspectQty", HCheckQty.ToString());//  检验数量
                FentityModel.Add("FQualifiedQty", HRightQty.ToString());//  合格数量
                FentityModel.Add("FInspectResult", HCheckResult.ToString());//  检验结果
                FentityModel.Add("FQCStatus", "1");//  质检状态
                FentityModel.Add("FIsRelated", false);//  不良品关联标志
                FentityModel.Add("FSrcBillType0", "SFC_OperationReport");//  源单类型
                FentityModel.Add("FBaseUnitId", new JObject() { ["Fnumber"] = HUnitNumber.ToString() });//基本单位
                FentityModel.Add("FBaseInspectQty", HCheckQty.ToString());//基本单位检验数量
                //FentityModel.Add("FSupplierId", new JObject() { ["Fnumber"] = HSupNumber.ToString() }); //  供应商
                FentityModel.Add("FStockId", new JObject() { ["Fnumber"] = HWHNumber.ToString() }); // 仓库
                FentityModel.Add("FInspectTimes", "1"); // 检验次数
                FentityModel.Add("FTimeUnit", "24");//时间单位
                FentityModel.Add("FSAMPLEDAMAGEBEARER", "2");//样本破坏承担方
                FentityModel.Add("FISFIRSTINSPECT", false);//首检
                FentityModel.Add("FBaseQualifiedQty", HRightQty.ToString());//基本单位合格数
                FentityModel.Add("FCurrency", new JObject() { ["Fnumber"] = "PRE001" });//币别
                FentityModel.Add("FIsSplitRow ", false);// 是否拆分行
                JArray Fentity2 = new JArray();
                JObject FentityModel2 = new JObject();
                FentityModel2.Add("FPolicyMaterialId", new JObject() { ["Fnumber"] = HMaterNumber.ToString() });//  物料内码
                FentityModel2.Add("FPolicyStatus", "1");  //状态
                FentityModel2.Add("FPolicyQty", HRightQty.ToString());    //数量
                FentityModel2.Add("FBasePolicyQty", HRightQty.ToString()); //基本单位数量
                FentityModel2.Add("FUsePolicy", HUseResult.ToString());   //使用决策
                FentityModel2.Add("FIsCheck", false);   //是否抽检
                FentityModel2.Add("FIsDefectProcess", false);  //不良处理
                FentityModel2.Add("FCanSale", false);   //可销售
                FentityModel2.Add("FIsMRBReview", false);   //MRP评审
                FentityModel2.Add("FIsReturn", false);   //判退
                FentityModel2.Add("FIsRelatedDefect", false);   //不良品关联标志
                Fentity2.Add(FentityModel2);
                FentityModel.Add("FPolicyDetail", Fentity2);
                //JArray Fentity3 = new JArray();
                //JObject FentityModel3 = new JObject();
                //FentityModel3.Add("FSrcBillType", "SFC_OperationReport");   //源单类型
                //FentityModel3.Add("FSrcBillNo", HSLBillNo.ToString());    //工序汇报单单号
                //FentityModel3.Add("FSrcInterId", HSLInterID.ToString());      //工序汇报单主ID
                //FentityModel3.Add("FSrcEntryId", HSLEntryID.ToString());    //工序汇报单子ID
                //FentityModel3.Add("FSrcEntrySeq", HSLSeQ.ToString());    //工序汇报单行号
                //FentityModel3.Add("FOrderType", new JObject() { ["FID"] = "PUR_PurchaseOrder" });  //  工序计划类型
                //FentityModel3.Add("FOrderBillNo", HSourceBillNo.ToString());   //工序计划单号
                //FentityModel3.Add("FOrderId", HSourceInterID.ToString());      //工序计划主ID
                //FentityModel3.Add("FOrderEntryId", HSourceEntryID.ToString());  //工序计划子ID
                //FentityModel3.Add("FOrderEntrySeq", HSeQ.ToString());  //工序计划行号
                //Fentity3.Add(FentityModel3);
                //FentityModel.Add("FReferDetail", Fentity3);
                Fentity.Add(FentityModel);
                model.Add("FEntity", Fentity); //明细信息
                JObject jsonRoot = new JObject()
                {
                    ["Creator"] = "",
                    ["NeedUpDateFields"] = new JArray(),
                    ["NeedReturnFields"] = new JArray(),
                    ["IsDeleteEntry"] = "false",
                    ["SubSystemId"] = "",
                    ["IsVerifyBaseDataField"] = "false",
                    //["IsAutoSubmitAndAudit"] = true,//自动调用提交和审核功能
                    ["Model"] = model
                };
                string result = InvokeHelper.Save("QM_InspectBill", JsonConvert.SerializeObject(jsonRoot));//保存
                //判断保存是否成功
                if (JObject.Parse(result)["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToUpper() != "TRUE")
                {
                    LogService.Write("来料检验单保存错误jsonRoot:" + jsonRoot);
                    oCN.RollBack();
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = $"来料检验单同步金蝶云失败!单号:{HBillNo.ToString()}" + result;
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                //提交审核
                string result1 = string.Empty;
                string result2 = string.Empty;
                var fID = JObject.Parse(result)["Result"]["Id"].ToString();
                var fBillNo = JObject.Parse(result)["Result"]["Number"].ToString();
                var json = new
                {
                    Ids = fID,
                };
                result1 = InvokeHelper.Submit("QM_InspectBill", JsonConvert.SerializeObject(json));//提交
                result2 = InvokeHelper.Audit("QM_InspectBill", JsonConvert.SerializeObject(json));//提交
                if (JObject.Parse(result1)["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToUpper() != "TRUE")
                {
                    oCN.RollBack();
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = $"来料检验单号:{fBillNo},提交失败" + result;
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                oCN.Commit();
                objJsonResult.code = "0";
                objJsonResult.count = 1;
                objJsonResult.Message = "保存成功!";
                objJsonResult.data = 1;
                return objJsonResult;
            }
            catch (Exception e)
            {
                oCN.RollBack();
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "Exception!" + e.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        /// <summary>
        /// 返回生产汇报单列表
        ///参数:string sql。