/// <summary>更新貨櫃的作業狀態</summary>
        public static string UpdateTruckStatus(string IP, out string ContainerStatus)
        {
            string strContainerID = "", strMsg = "";

            //取得DockDoor資訊
            DataTable dtDoor = GetDockDoorList(null, IP, null, null, new Pages());
            DataRow   row    = dtDoor.Rows[0];

            //取得貨櫃狀態
            strContainerID  = row["ContainerID"].ToString();
            ContainerStatus = row["ContainerStatus"].ToString();
            if (strContainerID != "")
            {
                //取得並更新貨櫃狀態
                ContainerStatus = ApiDataAccess.GetContainerStatus(strContainerID);
                using (var db = new DataBase.DataBase(Definition.Conn))
                {
                    db.StrSQL = "UPDATE Innolux_DockDoor SET ContainerStatus = '" + ContainerStatus + "' WHERE IP = '" + IP + "'";
                    db.ExecuteSQL();
                }

                //更新控制器的貨櫃狀態
                ApiDataAccess.UpdateControlDB(IP, "UPDATE status SET status = '" + ContainerStatus + "'");

                //依狀態回傳結果
                if (ContainerStatus == "O")
                {
                    strMsg = string.Format("貨櫃號碼{0}的狀態為:{1}", strContainerID, "待裝櫃");
                }
                else if (ContainerStatus == "I")
                {
                    strMsg = string.Format("貨櫃號碼{0}的狀態為:{1}", strContainerID, "待卸櫃");
                }
                else
                {
                    throw new Exception("無" + strContainerID + "的貨櫃狀態");
                }
            }
            else if (ContainerStatus == "N")
            {
                throw new Exception("無貨櫃標籤");
            }
            else
            {
                throw new Exception("無貨櫃靠站資訊");
            }

            return(strMsg);
        }
Beispiel #2
0
        public static void SaveDockDoorInfo(string truckID, string Status, string dockdoorID)
        {
            string    O_Status = null;
            DataTable dt = null;
            DataTable dt1 = null;
            string    IP = null;
            string    strNum, strTotal;
            string    cid            = string.Empty;
            string    cstatus        = string.Empty;
            Result    r              = new Result();
            string    ASN            = null;
            string    DN             = null;
            string    CaptionPanelIP = null;

            //Save in ORACLE
            using (var db = new DataBase.OracleDataBase(Definition.WMSConn))
            {
                db.StrSQL = "SELECT DN_NO FROM WMS_RFID_CONTAINER_CHECK_V WHERE CONTAINER_NO='" + truckID + "'";

                dt1 = db.ExecuteDataTable();

                if (dt1.DefaultView.Count > 0)
                {
                    DataRow DN_dr = dt1.Rows[0];

                    DN = DN_dr["DN_NO"].ToString();
                }
            }

            using (var db = new DataBase.DataBase(Definition.Conn, true))
            {
                try
                {
                    db.StrSQL = "SELECT ASN_NO FROM WMS_RFID_TRUCK WHERE TRUCK_NO='" + truckID + "'";

                    dt = db.ExecuteDataTable();

                    DataRow dr_ASN = dt.Rows[0];

                    if (dt.DefaultView.Count > 0)
                    {
                        ASN = dr_ASN["ASN_NO"].ToString();
                    }
                    if (Status == "I")
                    {
                        if (ASN != null && ASN != "")
                        {
                            db.StrSQL = "UPDATE  WMS_RFID_TRUCK SET STATUS='I',DOCKED='" + dockdoorID + "' WHERE TRUCK_NO='" + truckID + "'";
                        }
                        else
                        {
                            if (DN != null && DN != "")
                            {
                                db.StrSQL = "UPDATE  WMS_RFID_TRUCK SET STATUS='O',DOCKED='" + dockdoorID + "' WHERE TRUCK_NO='" + truckID + "'";
                            }


                            else
                            {
                                db.StrSQL = "UPDATE  WMS_RFID_TRUCK SET STATUS=' ',DOCKED='" + dockdoorID + "' WHERE TRUCK_NO='" + truckID + "'";
                            }
                        }
                        db.ExecuteSQL();
                        //  db.Commit();
                    }
                    else
                    {
                        db.StrSQL = "UPDATE  WMS_RFID_TRUCK SET STATUS='" + DBNull.Value + "',DOCKED='" + DBNull.Value + "' WHERE TRUCK_NO='" + truckID + "'";

                        db.ExecuteSQL();
                        // db.Commit();
                    }
                    db.StrSQL = "SELECT STATUS FROM WMS_RFID_TRUCK WHERE TRUCK_NO='" + truckID + "'";

                    DataTable dt2 = db.ExecuteDataTable();

                    DataRow dtstatus = dt2.Rows[0];

                    if (dt2.DefaultView.Count > 0)
                    {
                        O_Status = dtstatus["STATUS"].ToString();
                    }

                    var param = new DataBase.SqlParams();
                    param.Add("ContainerID", truckID);
                    param.Add("ContainerStatus", O_Status);
                    param.Add("DockDoorID", dockdoorID);
                    DateTime dtime = DateTime.Now;
                    param.Add("UpdateTime", dtime);
                    if (Status == "I")
                    {
                        param.Add("Flag", false);
                    }
                    else
                    {
                        param.Add("Flag", true);
                    }

                    db.SqlParams = param;

                    if (Status == "I")
                    {
                        db.StrSQL = " UPDATE [Innolux_DockDoor] SET ContainerID=@ContainerID, ContainerStatus=@ContainerStatus,UpdateTime=@UpdateTime,Flag=@Flag WHERE DockDoorID=@DockDoorID";

                        db.ExecuteSQL();
                    }
                    DataTable dtIP = null;
                    db.StrSQL = "SELECT IP,CaptionPanelIP,ContainerID,ContainerStatus FROM Innolux_DockDoor WHERE DockDoorID='" + dockdoorID + "'";
                    dtIP      = db.ExecuteDataTable();
                    DataRow row = dtIP.Rows[0];

                    if (dtIP.DefaultView.Count > 0)
                    {
                        IP             = row["IP"].ToString();
                        CaptionPanelIP = row["CaptionPanelIP"].ToString();
                        cid            = row["ContainerID"].ToString();
                        cstatus        = row["ContainerStatus"].ToString();
                    }

                    if (Status == "O")
                    {
                        db.StrSQL = " UPDATE [Innolux_DockDoor] SET ContainerID='', ContainerStatus=@ContainerStatus,UpdateTime=@UpdateTime, Flag=@Flag WHERE ContainerID=@ContainerID";

                        db.ExecuteSQL();
                    }
                    //Get IP



                    //Save in MySql
                    if (Status == "I")
                    {
                        if (ASN != null && ASN != "")
                        {
                            // ApiDataAccess.UpdateControlDB(IP, "INSERT checkin(car_in,car_out)VALUES('I','0')");
                            ApiDataAccess.UpdateControlDB(IP, "UPDATE checkin SET  car_in='I',car_out='0'");

                            ApiDataAccess.UpdateControlDB(IP, "UPDATE status  SET  status='I'");
                        }
                        else if (DN != null && DN != "")
                        {
                            // ApiDataAccess.UpdateControlDB(IP, "INSERT checkin(car_in,car_out)VALUES('O','0')");
                            ApiDataAccess.UpdateControlDB(IP, "UPDATE checkin SET  car_in='O',car_out='0'");
                            ApiDataAccess.UpdateControlDB(IP, "UPDATE status  SET  status='O'");
                        }
                        else
                        {
                            //  ApiDataAccess.UpdateControlDB(IP, "INSERT checkin(car_in,car_out)VALUES('_','0')");

                            ApiDataAccess.UpdateControlDB(IP, "UPDATE  checkin SET car_in=' ',car_out='0'");
                            ApiDataAccess.UpdateControlDB(IP, "UPDATE status  SET  status=' '");
                        }
                        var mes = "櫃號:" + truckID + "   已進站";

                        ApiDataAccess.ControlMachine(CaptionPanelIP, mes, 0);
                    }
                    else
                    {
                        if (cstatus == "I" || cstatus == "O")
                        {
                            ApiDataAccess.GetCountProcess(dockdoorID, cid, cstatus, out strNum, out strTotal);

                            if (strNum == strTotal)
                            {
                                var msg = string.Format("櫃號:{0}({1}/{2})已離廠", truckID, strNum, strTotal);

                                ApiDataAccess.ControlMachine(CaptionPanelIP, msg, 3);

                                ApiDataAccess.UpdateControlDB(IP, "UPDATE  checkin SET car_in='0',car_out='Y'");
                            }
                            else
                            {
                                var msg = string.Format("櫃號:{0}({1}/{2})尚未完成作業", truckID, strNum, strTotal);

                                ApiDataAccess.ControlMachine(CaptionPanelIP, msg, 3);

                                ApiDataAccess.UpdateControlDB(IP, "UPDATE  checkin SET car_in='0',car_out='N'");



                                //  ApiDataAccess.UpdateControlDB(IP, "INSERT checkin(car_in,car_out)VALUES('0','N')");
                            }
                        }
                        else if (cstatus == " ")
                        {
                            var msg = string.Format("櫃號:{0})已離廠", truckID);
                            ApiDataAccess.ControlMachine(CaptionPanelIP, msg, 3);

                            ApiDataAccess.UpdateControlDB(IP, "UPDATE  checkin SET car_in='0',car_out='Y'");
                        }
                    }
                    db.Commit();
                }
                catch (Exception ex)
                {
                    var mes = ex.Message;
                    db.Rollback();
                    throw ex;
                }
            }
        }