zzr99
2022-06-17 0237be9be4d9f9cb950e0c98ab04220eac866359
WebAPI/Controllers/Sc_ProcessMangementController.cs
@@ -153,143 +153,143 @@
        /// </summary>
        /// <param name="InterID">工序汇报单主ID</param>
        /// <returns></returns>
        //[Route("Sc_ProcessMangement/SaveICMOReportBill")]
        //[HttpGet]
        //public object SaveICMOReportBill(string InterID, string user, string BillNo)
        //{
        //    try
        //    {
        //        //获取生产汇报单最大InterID和单据号
        //        Int64 HInterID = DBUtility.ClsPub.CreateBillID("3711", ref DBUtility.ClsPub.sExeReturnInfo);
        //        string HBillNo = DBUtility.ClsPub.CreateBillCode("3711", ref DBUtility.ClsPub.sExeReturnInfo, true);
        //        //根据工序汇报单主ID获取工序汇报入库单的数据
        //        DataSet ds = oCN.RunProcReturn("select * from h_v_MES_StationOutBillList_LastProc where HInterID=" + InterID, "h_v_MES_StationOutBillList_LastProc");
        //        DataRow dr = ds.Tables[0].Rows[0];
        //        //保存
        //        oCN.BeginTran();
        //        //生产汇报单主表
        //        oCN.RunProc("Insert Into Sc_ICMOReportBillMain   " +
        //        "(HBillType,HBillSubType,HInterID,HBillNo,HDate,HMaker,HMakeDate,HBillStatus,HChecker,HCheckDate" +
        //        ",HYear,HPeriod,HRemark,HEmpID,HEmpNumber" +
        //        ",HGroupID,HDeptID,HDeptNumber" +
        //        ",HMainSourceBillNo,HMainSourceInterID,HMainSourceEntryID,HMainSourceBillType" +
        //        ") " +
        //        " values('3711','3711'," + HInterID.ToString() + ",'" + HBillNo + "',getdate(),'" + user + "',getdate(),2,'" + user + "',getdate()" +
        //        ",DATENAME(YEAR,GETDATE()),0,'','" + dr["HEmpID"].ToString() + "','" + dr["操作员代码"].ToString() +
        //        "','" + dr["HGroupID"].ToString() + "',0,''" +
        //        ",'" + BillNo.ToString() + "'," + InterID.ToString() + ", 0,'3791'" +
        //        ") ");
        //        //生产汇报单子表
        //        oCN.RunProc("Insert into Sc_ICMOReportBillSub " +
        //              " (HInterID,HEntryID,HMaterID,HMaterNumber" +
        //              ",HQty,HUnitID,HUnitNumber,HTimes,HSourceID" +
        //              ",HQtyMust,HWorkerID,HWorkerNumber,HBadCount,HWasterQty," +
        //              "HCloseMan,HCloseType,HRemark," +
        //              "HSourceInterID,HSourceEntryID,HSourceBillNo,HSourceBillType,HRelationQty,HRelationMoney" +
        //              ",HSeOrderInterID,HSeOrderEntryID,HSeOrderBillNo" +
        //              ",HICMOInterID,HICMOBillNo,HBarCode" +
        //              ") values("
        //              + HInterID.ToString() + ",1," + dr["HMaterID"].ToString() + ",'" + dr["产品代码"].ToString() + "'" +
        //              "," + dr["合格数量"].ToString() + ",0,'',0,0" +
        //              "," + dr["接收数量"].ToString() + "," + dr["HEmpID"].ToString() + ",'" + dr["操作员代码"].ToString() + "'," + dr["不良数量"].ToString() + "," + dr["报废数量"].ToString() +
        //              ",'',0,''" +
        //              "," + InterID.ToString() + ",0,'" + BillNo.ToString() + "','3791',0,0" +
        //              ",0,0,''" +
        //              "," + dr["HICMOInterID"].ToString() + ",'" + dr["任务单"].ToString() + "',''" +
        //              ") ");
        //        //同步金蝶
        //        //访问金蝶
        //        var loginRet = InvokeHelper.Login();
        //        var isSuccess = JObject.Parse(loginRet)["LoginResultType"].Value<int>();
        //        if (isSuccess == 0)
        //        {
        //            objJsonResult.code = "0";
        //            objJsonResult.count = 0;
        //            objJsonResult.Message = "操作失败,金蝶账号登录异常。" + loginRet;
        //            objJsonResult.data = null;
        //            return objJsonResult;
        //        }
        //        //根据任务单查找到金蝶的生产订单
        //        DataSet ds1 = oCN.RunProcReturn("SELECT * FROM AIS20210811135644..T_PRD_MO where FID=(select HERPInterID from Sc_ICMOBillMain where HBillNo='"+ dr["任务单"].ToString() + "')", "AIS20210811135644..T_PRD_MO");
        //        DataRow dr1 = ds1.Tables[0].Rows[0];
        [Route("Sc_ProcessMangement/SaveICMOReportBill")]
        [HttpGet]
        public object SaveICMOReportBill(string InterID, string user, string BillNo)
        {
            try
            {
                //获取生产汇报单最大InterID和单据号
                Int64 HInterID = DBUtility.ClsPub.CreateBillID("3711", ref DBUtility.ClsPub.sExeReturnInfo);
                string HBillNo = DBUtility.ClsPub.CreateBillCode("3711", ref DBUtility.ClsPub.sExeReturnInfo, true);
                //根据工序汇报单主ID获取工序汇报入库单的数据
                DataSet ds = oCN.RunProcReturn("select * from h_v_MES_StationOutBillList_LastProc where HInterID=" + InterID, "h_v_MES_StationOutBillList_LastProc");
                DataRow dr = ds.Tables[0].Rows[0];
                //保存
                oCN.BeginTran();
                //生产汇报单主表
                oCN.RunProc("Insert Into Sc_ICMOReportBillMain   " +
                "(HBillType,HBillSubType,HInterID,HBillNo,HDate,HMaker,HMakeDate,HBillStatus,HChecker,HCheckDate" +
                ",HYear,HPeriod,HRemark,HEmpID,HEmpNumber" +
                ",HGroupID,HDeptID,HDeptNumber" +
                ",HMainSourceBillNo,HMainSourceInterID,HMainSourceEntryID,HMainSourceBillType" +
                ") " +
                " values('3711','3711'," + HInterID.ToString() + ",'" + HBillNo + "',getdate(),'" + user + "',getdate(),2,'" + user + "',getdate()" +
                ",DATENAME(YEAR,GETDATE()),0,'','" + dr["HEmpID"].ToString() + "','" + dr["操作员代码"].ToString() +
                "','" + dr["HGroupID"].ToString() + "',0,''" +
                ",'" + BillNo.ToString() + "'," + InterID.ToString() + ", 0,'3791'" +
                ") ");
                //生产汇报单子表
                oCN.RunProc("Insert into Sc_ICMOReportBillSub " +
                      " (HInterID,HEntryID,HMaterID,HMaterNumber" +
                      ",HQty,HUnitID,HUnitNumber,HTimes,HSourceID" +
                      ",HQtyMust,HWorkerID,HWorkerNumber,HBadCount,HWasterQty," +
                      "HCloseMan,HCloseType,HRemark," +
                      "HSourceInterID,HSourceEntryID,HSourceBillNo,HSourceBillType,HRelationQty,HRelationMoney" +
                      ",HSeOrderInterID,HSeOrderEntryID,HSeOrderBillNo" +
                      ",HICMOInterID,HICMOBillNo,HBarCode" +
                      ") values("
                      + HInterID.ToString() + ",1," + dr["HMaterID"].ToString() + ",'" + dr["产品代码"].ToString() + "'" +
                      "," + dr["合格数量"].ToString() + ",0,'',0,0" +
                      "," + dr["接收数量"].ToString() + "," + dr["HEmpID"].ToString() + ",'" + dr["操作员代码"].ToString() + "'," + dr["不良数量"].ToString() + "," + dr["报废数量"].ToString() +
                      ",'',0,''" +
                      "," + InterID.ToString() + ",0,'" + BillNo.ToString() + "','3791',0,0" +
                      ",0,0,''" +
                      "," + dr["HICMOInterID"].ToString() + ",'" + dr["任务单"].ToString() + "',''" +
                      ") ");
                //同步金蝶
                //访问金蝶
                var loginRet = InvokeHelper.Login();
                var isSuccess = JObject.Parse(loginRet)["LoginResultType"].Value<int>();
                if (isSuccess == 0)
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "操作失败,金蝶账号登录异常。" + loginRet;
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                //根据任务单查找到金蝶的生产订单
                DataSet ds1 = oCN.RunProcReturn("SELECT * FROM AIS20210811135644..T_PRD_MO where FID=(select HERPInterID from Sc_ICMOBillMain where HBillNo='" + dr["任务单"].ToString() + "')", "AIS20210811135644..T_PRD_MO");
                DataRow dr1 = ds1.Tables[0].Rows[0];
        //        JObject model = new JObject();
        //        model.Add("FBillType", new JObject() { ["Fnumber"] = "50fa7c2eda7947b89fab5431bf25d48e" }); //单据类型1
        //        model.Add("FPrdOrgId", new JObject() { ["Fnumber"] = dr1["FPrdOrgNUMBER"].ToString() }); //生产组织1
        //        model.Add("FDate", DateTime.Now.ToString("yyyy-MM-dd")); //单据日期1
        //        JArray Fentity = new JArray();
        //        foreach (DataRow item in ds.Tables[0].Rows)
        //        {
        //            JObject FentityModel = new JObject();
        //            FentityModel.Add("FReportType", "BD_OwnerOrg");//生产汇报类型
        //            FentityModel.Add("FTimeUnitId", "BD_OwnerOrg");//时间单位
        //            FentityModel.Add("FWorkshipId", new JObject() { ["Fnumber"] = item["FWorkShopID"].ToString() }); //  生产车间
        //            FentityModel.Add("FStandHourUnitId", new JObject() { ["Fnumber"] = item["FUNITNUMBER"].ToString() }); // 单位标准工时单位
        //            FentityModel.Add("FMaterialId", new JObject() { ["Fnumber"] = item["产品代码"].ToString() }); // 物料编码
        //            FentityModel.Add("FFinishQty", item["接收数量"].ToString());//完成数量1
        //            FentityModel.Add("FQuaQty", item["合格数量"].ToString());//合格数量1
                JObject model = new JObject();
                model.Add("FBillType", new JObject() { ["Fnumber"] = "50fa7c2eda7947b89fab5431bf25d48e" }); //单据类型1
                model.Add("FPrdOrgId", new JObject() { ["Fnumber"] = dr1["FPrdOrgNUMBER"].ToString() }); //生产组织1
                model.Add("FDate", DateTime.Now.ToString("yyyy-MM-dd")); //单据日期1
                JArray Fentity = new JArray();
                foreach (DataRow item in ds.Tables[0].Rows)
                {
                    JObject FentityModel = new JObject();
                    FentityModel.Add("FReportType", "BD_OwnerOrg");//生产汇报类型
                    FentityModel.Add("FTimeUnitId", "BD_OwnerOrg");//时间单位
                    FentityModel.Add("FWorkshipId", new JObject() { ["Fnumber"] = item["FWorkShopID"].ToString() }); //  生产车间
                    FentityModel.Add("FStandHourUnitId", new JObject() { ["Fnumber"] = item["FUNITNUMBER"].ToString() }); // 单位标准工时单位
                    FentityModel.Add("FMaterialId", new JObject() { ["Fnumber"] = item["产品代码"].ToString() }); // 物料编码
                    FentityModel.Add("FFinishQty", item["接收数量"].ToString());//完成数量1
                    FentityModel.Add("FQuaQty", item["合格数量"].ToString());//合格数量1
        //            FentityModel.Add("FOwnerID", new JObject() { ["Fnumber"] = item["FPURCHASEORGNUMBER"].ToString() });//货主
        //            FentityModel.Add("FSrcId", item["FID"].ToString());//源单内码
        //            FentityModel.Add("FSRCFORMID", "PUR_PurchaseOrder");//源单类型
        //            FentityModel.Add("FSrcBillNo", item["FBILLNO"].ToString());//源单单号
        //            FentityModel.Add("FSRCENTRYID", item["FENTRYID"].ToString());//源单分录内码
        //            FentityModel.Add("FORDERBILLNO", item["FBILLNO"].ToString());//源单单号
        //            FentityModel.Add("FPOORDERENTRYID", item["FENTRYID"].ToString());//源单分录内码
        //            FentityModel.Add("FTLId", item["HID"].ToString());//提料源单内码
        //            FentityModel.Add("FTLentryId", item["HENTRYID"].ToString());//提料源单分录内码
        //            FentityModel.Add("FTLOrderNo", item["HBILLNO"].ToString());//提料源单分录内码
        //            FentityModel.Add("FPrice", item["FPRICE"].ToString());//单价
        //            FentityModel.Add("FTaxPrice", item["FTAXPRICE"].ToString());//含税单价
        //            FentityModel.Add("FEntryTaxRate", item["FTAXRATE"].ToString());//税率
        //            FentityModel.Add("F_QIMB_Text", item["FXQD"].ToString());//需求单号
        //            //JArray Fentity2 = new JArray();
        //            //JObject FentityModel2 = new JObject();
        //            //FentityModel2.Add("FDetailEntity_Link_FRULEID", "PUR_PurchaseOrder-PUR_ReceiveBill");
        //            //FentityModel2.Add("FDetailEntity_Link_FSTableName", "t_PUR_POOrderEntry");
        //            //FentityModel2.Add("FDetailEntity_Link_FSBillId", item["FID"].ToString());
        //            //FentityModel2.Add("FDetailEntity_Link_FSId", item["FEntryID"].ToString());
        //            //Fentity2.Add(FentityModel2);
        //            //FentityModel.Add("FDetailEntity_Link", Fentity2);
        //            //Fentity.Add(FentityModel);
        //        }
        //        model.Add("FDetailEntity", Fentity); //明细信息
        //        JObject jsonRoot = new JObject()
        //        {
        //            ["Creator"] = "",
        //            ["NeedUpDateFields"] = new JArray(),
        //            ["NeedReturnFields"] = new JArray(),
        //            ["IsDeleteEntry"] = "false",
        //            ["SubSystemId"] = "",
        //            ["IsVerifyBaseDataField"] = "false",
        //            //["IsAutoSubmitAndAudit"] = true,//自动调用提交和审核功能
        //            ["Model"] = model
        //        };
        //        string result = InvokeHelper.Submit("PRD_PPBOM", JsonConvert.SerializeObject(json));
        //        //判断审核是否成功
        //        if (JObject.Parse(result)["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToUpper() != "TRUE")
        //        {
        //            oCN.RollBack();
        //            objJsonResult.code = "0";
        //            objJsonResult.count = 0;
        //            objJsonResult.Message = $"工序汇报入库单同步金蝶云失败!单号:{dr["单据号"].ToString()}" + result;
        //            objJsonResult.data = null;
        //            return objJsonResult;
        //        }
        //        oCN.Commit();
        //    }
        //    catch (Exception e)
        //    {
        //        oCN.RollBack();
        //        objJsonResult.code = "0";
        //        objJsonResult.count = 0;
        //        objJsonResult.Message = "Exception!" + e.ToString();
        //        objJsonResult.data = null;
        //        return objJsonResult;
        //    }
        //}
                    FentityModel.Add("FOwnerID", new JObject() { ["Fnumber"] = item["FPURCHASEORGNUMBER"].ToString() });//货主
                    FentityModel.Add("FSrcId", item["FID"].ToString());//源单内码
                    FentityModel.Add("FSRCFORMID", "PUR_PurchaseOrder");//源单类型
                    FentityModel.Add("FSrcBillNo", item["FBILLNO"].ToString());//源单单号
                    FentityModel.Add("FSRCENTRYID", item["FENTRYID"].ToString());//源单分录内码
                    FentityModel.Add("FORDERBILLNO", item["FBILLNO"].ToString());//源单单号
                    FentityModel.Add("FPOORDERENTRYID", item["FENTRYID"].ToString());//源单分录内码
                    FentityModel.Add("FTLId", item["HID"].ToString());//提料源单内码
                    FentityModel.Add("FTLentryId", item["HENTRYID"].ToString());//提料源单分录内码
                    FentityModel.Add("FTLOrderNo", item["HBILLNO"].ToString());//提料源单分录内码
                    FentityModel.Add("FPrice", item["FPRICE"].ToString());//单价
                    FentityModel.Add("FTaxPrice", item["FTAXPRICE"].ToString());//含税单价
                    FentityModel.Add("FEntryTaxRate", item["FTAXRATE"].ToString());//税率
                    FentityModel.Add("F_QIMB_Text", item["FXQD"].ToString());//需求单号
                    //JArray Fentity2 = new JArray();
                    //JObject FentityModel2 = new JObject();
                    //FentityModel2.Add("FDetailEntity_Link_FRULEID", "PUR_PurchaseOrder-PUR_ReceiveBill");
                    //FentityModel2.Add("FDetailEntity_Link_FSTableName", "t_PUR_POOrderEntry");
                    //FentityModel2.Add("FDetailEntity_Link_FSBillId", item["FID"].ToString());
                    //FentityModel2.Add("FDetailEntity_Link_FSId", item["FEntryID"].ToString());
                    //Fentity2.Add(FentityModel2);
                    //FentityModel.Add("FDetailEntity_Link", Fentity2);
                    //Fentity.Add(FentityModel);
                }
                model.Add("FDetailEntity", Fentity); //明细信息
                JObject jsonRoot = new JObject()
                {
                    ["Creator"] = "",
                    ["NeedUpDateFields"] = new JArray(),
                    ["NeedReturnFields"] = new JArray(),
                    ["IsDeleteEntry"] = "false",
                    ["SubSystemId"] = "",
                    ["IsVerifyBaseDataField"] = "false",
                    //["IsAutoSubmitAndAudit"] = true,//自动调用提交和审核功能
                    ["Model"] = model
                };
                string result = InvokeHelper.Submit("PRD_PPBOM", JsonConvert.SerializeObject(json));
                //判断审核是否成功
                if (JObject.Parse(result)["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToUpper() != "TRUE")
                {
                    oCN.RollBack();
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = $"工序汇报入库单同步金蝶云失败!单号:{dr["单据号"].ToString()}" + result;
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                oCN.Commit();
            }
            catch (Exception e)
            {
                oCN.RollBack();
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "Exception!" + e.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        #endregion
        /// <summary>