Ejemplo n.º 1
0
        public ReceiveFirstDataObject InvokeFirstAPI(string itemNo, int plannedQuantity, string warehouse, DateTime postingDate, DateTime startDate,
                                                     DateTime dueDate, string U_MAIN_MO_ID, string distributionRule, string U_ProductionLine)
        {
            // 发送数据
            string ApiUrl     = "";
            string postResult = "";

            try
            {
                string customerId = "OWNVIEW";
                string appkey     = "c4ca4238a0b923820dcc509a6f75849b";
                string secret     = "OwnviewSAP";
                string method     = "ProductionOrders.Add";
                string signmethod = "md5";
                string timestamp  = GetTimeStamp();

                //将请求数据转为Json,需要修改
                AddProductionOrdersDataObject addProductionOrdersDataObject = new AddProductionOrdersDataObject();
                addProductionOrdersDataObject.ItemNo           = itemNo;
                addProductionOrdersDataObject.PlannedQuantity  = plannedQuantity;
                addProductionOrdersDataObject.Warehouse        = warehouse;
                addProductionOrdersDataObject.PostingDate      = postingDate.ToString("yyyy-MM-dd");
                addProductionOrdersDataObject.StartDate        = startDate.ToString("yyyy-MM-dd");
                addProductionOrdersDataObject.DueDate          = dueDate.ToString("yyyy-MM-dd");
                addProductionOrdersDataObject.U_MAIN_MO_ID     = U_MAIN_MO_ID;
                addProductionOrdersDataObject.DistributionRule = distributionRule;
                addProductionOrdersDataObject.U_ProductionLine = U_ProductionLine;

                string postData = JsonConvert.SerializeObject(addProductionOrdersDataObject);

                string sign = secret + "appkey" + appkey + "customerid" + customerId + "method" + method + "timestamp" + timestamp + postData + secret;
                sign = System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(sign, "MD5").ToLower();
                //接口待定
                ApiUrl = "http://192.168.1.49:9003/SAPB1WebApi"
                         + "?method=" + System.Web.HttpUtility.UrlEncode(method, Encoding.UTF8)
                         + "&timestamp=" + System.Web.HttpUtility.UrlEncode(timestamp, Encoding.UTF8)
                         + "&appkey=" + System.Web.HttpUtility.UrlEncode(appkey, Encoding.UTF8)
                         + "&customerid=" + System.Web.HttpUtility.UrlEncode(customerId, Encoding.UTF8)
                         + "&sign=" + System.Web.HttpUtility.UrlEncode(sign, Encoding.UTF8)
                         + "&signmethod=" + System.Web.HttpUtility.UrlEncode(signmethod, Encoding.UTF8);
                postResult = "";

                MessageService.ShowMessage(ApiUrl);
                postResult = HttpPost(ApiUrl, postData);
            }
            catch (Exception ex)
            {
                MessageService.ShowError(ex.Message + " " + ApiUrl);
                return(new ReceiveFirstDataObject());
            }
            //将Json转为响应数据
            ReceiveFirstDataObject data = JsonConvert.DeserializeObject <ReceiveFirstDataObject>(postResult);

            MessageService.ShowMessage(postResult);
            return(data);
        }
Ejemplo n.º 2
0
        private void txtPallet_NO_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == 13)
            {
                LotQueryEntity     queryEntity     = new LotQueryEntity();
                LotOperationEntity workOrderEntity = new LotOperationEntity();
                DataSet            dsLotInfo       = new DataSet();
                dsLotInfo = queryEntity.GetLotInfoByPallet_No(txtPallet_NO.Text);
                if (!string.IsNullOrEmpty(queryEntity.ErrorMsg))
                {
                    MessageService.ShowError(queryEntity.ErrorMsg);
                    return;
                }
                //该托盘号有数据
                if (dsLotInfo.Tables[0].Rows.Count > 0)
                {
                    //获得该托盘号对应的料号
                    string partNumber = dsLotInfo.Tables[0].Rows[0][POR_LOT_FIELDS.FIELD_PART_NUMBER].ToString();
                    //获得该托盘号对应的工单号
                    string workOrder = dsLotInfo.Tables[0].Rows[0][POR_LOT_FIELDS.FIELD_WORK_ORDER_NO].ToString();

                    string ocrCode = "";

                    //获取该工单号的数据
                    DataSet dsProductData = workOrderEntity.GetWoProductData(workOrder);
                    if (string.IsNullOrEmpty(workOrderEntity.ErrorMsg))
                    {
                        //查到工单对应的数据
                        if (dsProductData.Tables[POR_WORK_ORDER_FIELDS.DATABASE_TABLE_NAME].Rows.Count > 0)
                        {
                            //工单号对应的料号与托盘号对应的料号一致,执行第二次请求,需回填新工单号字段
                            if (dsProductData.Tables[POR_WORK_ORDER_FIELDS.DATABASE_TABLE_NAME].Rows[0][POR_WORK_ORDER_FIELDS.FIELD_PART_NUMBER].ToString() == partNumber)
                            {
                                //执行第二次请求
                                ReceiveSecondDataObject receiveSecondDataObject = new ReceiveSecondDataObject();
                                receiveSecondDataObject = InvokeSecondAPI(DateTime.Now, "", "",
                                                                          Convert.ToInt32(workOrder), dsProductData.Tables[POR_WORK_ORDER_FIELDS.DATABASE_TABLE_NAME].Rows.Count, 0);

                                //receiveSecondDataObject = InvokeSecondAPI(DateTime.Now, "", "",
                                //    41, 1, 0);

                                //调用成功
                                if (receiveSecondDataObject != null && receiveSecondDataObject.Code == "0")
                                {
                                    int newInWarehouseOrder = 0;
                                    newInWarehouseOrder = receiveSecondDataObject.Data.DocEntry;

                                    //回填por_lot表新工单号
                                    bool isUpdatePor_lot = workOrderEntity.UpdatePor_Lot(workOrder.ToString(), txtPallet_NO.Text);
                                    if (!isUpdatePor_lot)
                                    {
                                        MessageService.ShowError("新工单号写入失败");
                                        return;
                                    }
                                    MessageService.ShowMessage("新工单号填入成功");
                                    //回填Wip_consignment表入库单号
                                    bool isUpdateWip_consignment = workOrderEntity.UpdateWip_consignment(newInWarehouseOrder.ToString(), txtPallet_NO.Text);
                                    if (!isUpdateWip_consignment)
                                    {
                                        MessageService.ShowError("入库单号写入失败");
                                        return;
                                    }
                                    MessageService.ShowMessage("入库单号写入成功");
                                    dtgc.Clear();
                                    DataRow dr = dtgc.NewRow();
                                    dr["gcWorkOrder"]    = workOrder;
                                    dr["gcProductCode"]  = partNumber;
                                    dr["gcQty"]          = dsProductData.Tables[POR_WORK_ORDER_FIELDS.DATABASE_TABLE_NAME].Rows.Count;
                                    dr["gcNewWorkOrder"] = workOrder;
                                }
                                else
                                {
                                    MessageService.ShowError("调用第二次接口失败");
                                }
                            }
                            //不一致,执行第一次请求,再执行第二次请求,需回填por_lot新工单号字段
                            else
                            {
                                ReceiveFirstDataObject receiveFirstDataObject = new ReceiveFirstDataObject();
                                //receiveFirstDataObject = InvokeFirstAPI("2010005103", 1,
                                //      "301", DateTime.Now, DateTime.Now, DateTime.Now, "41",
                                //     dsProductData.Tables[POR_WORK_ORDER_FIELDS.DATABASE_TABLE_NAME].Rows[0][POR_WORK_ORDER_FIELDS.FIELD_OCRCODE].ToString(), "");
                                receiveFirstDataObject = InvokeFirstAPI(partNumber, dsProductData.Tables[POR_WORK_ORDER_FIELDS.DATABASE_TABLE_NAME].Rows.Count,
                                                                        dsProductData.Tables[POR_WORK_ORDER_FIELDS.DATABASE_TABLE_NAME].Rows[0][POR_WORK_ORDER_FIELDS.FIELD_STOCK_LOCATION].ToString(), DateTime.Now, DateTime.Now, DateTime.Now, workOrder,
                                                                        dsProductData.Tables[POR_WORK_ORDER_FIELDS.DATABASE_TABLE_NAME].Rows[0][POR_WORK_ORDER_FIELDS.FIELD_OCRCODE].ToString(), "");
                                //调用成功
                                if (receiveFirstDataObject != null && receiveFirstDataObject.Code == "0")
                                {
                                    int newWorkOrder = 0;
                                    try
                                    {
                                        newWorkOrder = Convert.ToInt32(receiveFirstDataObject.Data.DocEntry);
                                    }
                                    catch (Exception ex)
                                    {
                                        MessageService.ShowError("新工单号格式错误");
                                        return;
                                    }

                                    //回填por_lot表新工单号
                                    bool isUpdatePor_lot = workOrderEntity.UpdatePor_Lot(newWorkOrder.ToString(), txtPallet_NO.Text);
                                    if (!isUpdatePor_lot)
                                    {
                                        MessageService.ShowError("新工单号写入失败");
                                        return;
                                    }
                                    else
                                    {
                                        MessageService.ShowMessage("新工单号写入成功");
                                    }

                                    //执行第二次请求
                                    ReceiveSecondDataObject receiveSecondDataObject = new ReceiveSecondDataObject();
                                    receiveSecondDataObject = InvokeSecondAPI(DateTime.Now, "", "",
                                                                              Convert.ToInt32(receiveFirstDataObject.Data.DocEntry), dsProductData.Tables[POR_WORK_ORDER_FIELDS.DATABASE_TABLE_NAME].Rows.Count, 0);

                                    //receiveSecondDataObject = InvokeSecondAPI(DateTime.Now, "", "",
                                    //    41, 1, 0);
                                    //调用成功
                                    if (receiveSecondDataObject.Code == "0")
                                    {
                                        int newInWarehouseOrder = 0;
                                        newInWarehouseOrder = receiveSecondDataObject.Data.DocEntry;
                                        //回填Wip_consignment表入库单号
                                        bool isUpdateWip_consignment = workOrderEntity.UpdateWip_consignment(newInWarehouseOrder.ToString(), txtPallet_NO.Text);
                                        if (!isUpdateWip_consignment)
                                        {
                                            MessageService.ShowError("入库单号写入失败");
                                            return;
                                        }
                                        else
                                        {
                                            MessageService.ShowMessage("入库单写入成功");
                                            dtgc.Clear();
                                            DataRow dr = dtgc.NewRow();
                                            dr["gcWorkOrder"]    = workOrder;
                                            dr["gcProductCode"]  = partNumber;
                                            dr["gcQty"]          = dsProductData.Tables[POR_WORK_ORDER_FIELDS.DATABASE_TABLE_NAME].Rows.Count;
                                            dr["gcNewWorkOrder"] = newWorkOrder;
                                            dtgc.Rows.Add(dr);
                                        }
                                    }
                                    else
                                    {
                                        MessageService.ShowError("调用第二次接口失败");
                                    }
                                }
                                else
                                {
                                    MessageService.ShowError("调用第一次接口失败");
                                    return;
                                }
                            }
                        }
                        else
                        {
                            MessageService.ShowError("托盘号对应的工单没有明细");
                            return;
                        }
                    }
                    else
                    {
                        MessageService.ShowError(workOrderEntity.ErrorMsg);
                        return;
                    }
                }
                else
                {
                    MessageService.ShowError("托盘号不存在!");
                    return;
                }
            }
        }