Ejemplo n.º 1
0
        private void btnStop_Click(object sender, EventArgs e)
        {
            DialogResult drs = MessageBox.Show("请确认是否停止作业", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2);

            if (drs == DialogResult.No)
            {
                return;
            }
            this.Cursor = Cursors.WaitCursor;
            try
            {
                QcSet.T_OCR_QCSETRow row = (QcSet.T_OCR_QCSETRow)((DataRowView)dgv1.CurrentRow.DataBoundItem).Row;

                row.STATUS = "停止作业";

                bll.UpdateQCSet(row);

                GetALLData();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            finally
            {
                this.Cursor = Cursors.Default;
            }
        }
Ejemplo n.º 2
0
        private void btnLog_Click(object sender, EventArgs e)
        {
            this.Cursor = Cursors.WaitCursor;
            try
            {
                QcSet.T_OCR_QCSETRow row = (QcSet.T_OCR_QCSETRow)((DataRowView)dgv1.CurrentRow.DataBoundItem).Row;

                OpLog.T_OCR_LOGDataTable dt = bll.SelectLogs("T_OCR_QCSET", row.TRVALCRANE_NO);
                fmLog fm = new fmLog();
                fm.dt = dt;
                fm.ShowDialog();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            finally
            {
                this.Cursor = Cursors.Default;
            }
        }
Ejemplo n.º 3
0
        private void dgv1_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e)
        {
            try
            {
                int i = e.RowIndex;
                QcSet.T_OCR_QCSETRow row = (QcSet.T_OCR_QCSETRow)((DataRowView)dgv1.Rows[i].DataBoundItem).Row;
                if (row.STATUS == "停止作业" || row.STATUS == "暂停作业")
                {
                    if (!row.IsERROR_MESSNull() && !string.IsNullOrEmpty(row.ERROR_MESS))
                    {
                        dgv1.Rows[i].DefaultCellStyle.BackColor = Color.LightGray;
                    }
                    else
                    {
                        dgv1.Rows[i].DefaultCellStyle.BackColor = Color.White;
                    }
                    //dgv1[e.ColumnIndex, e.RowIndex].Style.BackColor = Color.Red;
                }
                else if (row.WORKTYPE == "智能")
                {
                    dgv1.Rows[i].DefaultCellStyle.BackColor = Color.LightGreen;
                }
                else if (row.WORKTYPE == "现场")
                {
                    dgv1.Rows[i].DefaultCellStyle.BackColor = Color.LightYellow;
                }
                else if (row.WORKTYPE == "核封")
                {
                    dgv1.Rows[i].DefaultCellStyle.BackColor = Color.LightBlue;
                }

                else
                {
                    dgv1.Rows[i].DefaultCellStyle.BackColor = Color.White;
                }
            }
            catch { }
        }
Ejemplo n.º 4
0
        private void dgv1_SelectionChanged(object sender, EventArgs e)
        {
            try
            {
                if (dgv1.DataSource == null)
                {
                    return;
                }

                //给界面赋值
                QcSet.T_OCR_QCSETRow row = (QcSet.T_OCR_QCSETRow)((DataRowView)dgv1.CurrentRow.DataBoundItem).Row;

                btnSave.Enabled = true;

                lblQC.Text = row.TRVALCRANE_NO;
                //txtPwd.Text = row.COMMEND_PAW;
                cbbContractor.Text = row.CONTRACTOR_CODE;
                cbbCommend.Text    = row.COMMEND_ID;
                cbbDriver.Text     = row.DRIVER_ID;
                cbbVessel.Text     = row.SHIP_CODE;
                cbbInVoyage.Text   = row.IN_VOYAGE_CODE;
                cbbOutVoyage.Text  = row.OUT_VOYAGE_CODE;
                txtBerth.Text      = row.BERTH_NUM;
                txtRemoteId.Text   = row.TERMINAL_NO;

                rbnClose.Checked = row.SHIPMENT_DEAL != "开";
                rbnOpen.Checked  = row.SHIPMENT_DEAL == "开";
                rbnLeft.Checked  = row.BERTH_WAY == "L";
                rbnRight.Checked = row.BERTH_WAY == "R";

                rbnInner.Checked = row.WORKTYPE == "智能";
                rbnEx.Checked    = row.WORKTYPE == "现场";
                rbnVs.Checked    = row.WORKTYPE == "核封";

                //如果没有无线终端号则获取一个新的

                if (string.IsNullOrEmpty(txtRemoteId.Text))
                {
                    string   str = bll.SelectRemote();
                    string[] s2  = str.Split(new char[] { ',' });

                    txtRemoteId.Text = s2[1];
                    row.DEVICE_NO    = s2[0];
                }

                //作业中不能切换内现场
                if (row.STATUS == "停止作业")
                {
                    rbnInner.Enabled = true;
                    rbnEx.Enabled    = true;
                    rbnVs.Enabled    = true;
                }
                else
                {
                    rbnInner.Enabled = false;
                    rbnEx.Enabled    = false;
                    rbnVs.Enabled    = false;
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
Ejemplo n.º 5
0
        private void btnSave_Click(object sender, EventArgs e)
        {
            DialogResult drs = MessageBox.Show("请确认是否保存修改", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2);

            if (drs == DialogResult.No)
            {
                return;
            }
            this.Cursor = Cursors.WaitCursor;
            try
            {
                QcSet.T_OCR_QCSETRow row = (QcSet.T_OCR_QCSETRow)((DataRowView)dgv1.CurrentRow.DataBoundItem).Row;

                if (!row.IsERROR_MESSNull() && !string.IsNullOrEmpty(row.ERROR_MESS))
                {
                    MessageBox.Show(string.Format("{0} {1}\r\n不能配置为作业中", row.TRVALCRANE_NO, row.ERROR_MESS));
                    return;
                }

                row.COMMEND_ID = cbbCommend.Text.Trim().ToUpper();
                //row.COMMEND_PAW = txtPwd.Text.Trim();
                row.CONTRACTOR_CODE = cbbContractor.Text.Trim().ToUpper();
                row.DRIVER_ID       = cbbDriver.Text.Trim().ToUpper();
                row.SHIP_CODE       = cbbVessel.Text.Trim().ToUpper();
                row.IN_VOYAGE_CODE  = cbbInVoyage.Text.Trim().ToUpper();
                row.OUT_VOYAGE_CODE = cbbOutVoyage.Text.Trim().ToUpper();
                row.BERTH_NUM       = txtBerth.Text.Trim();
                row.TERMINAL_NO     = txtRemoteId.Text.Trim();
                row.COMMEND_PAW     = "123456";

                row.SHIPMENT_DEAL = rbnClose.Checked ? "关" : "开";
                row.BERTH_WAY     = rbnLeft.Checked ? "L" : "R";

                row.WORKTYPE = rbnInner.Checked ? "智能" : rbnEx.Checked ? "现场" : "核封";

                foreach (DataRow dr in dsBerthplan.Tables[0].Rows)
                {
                    if (dr["EVESSELNAME"].ToString() == cbbVessel.Text.Trim().ToUpper() && dr["outboundvoy"].ToString() == cbbOutVoyage.Text.Trim().ToUpper())
                    {
                        row.VESSELALIASE = dr["velaliase"].ToString();
                        row.BERTHPLANNO  = Convert.ToDecimal(dr["berthplanno"]);
                        row.AVESSELNAME  = dr["avesselname"].ToString();
                        //row.INAGENT = dr["inagent"].ToString();
                        //row.OUTAGENT = dr["outagent"].ToString();
                        row.INAGENT           = string.Empty;
                        row.OUTAGENT          = string.Empty;
                        row.INVESSELLINECODE  = dr["INVESSELLINECODE"].ToString();
                        row.OUTVESSELLINECODE = dr["OUTVESSELLINECODE"].ToString();
                        row.OWNER             = dr["OWNER"].ToString();
                    }
                }

                row.STATUS = "作业中";


                bll.UpdateQCSet(row);

                GetALLData();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            finally
            {
                this.Cursor = Cursors.Default;
            }
        }
Ejemplo n.º 6
0
        /// <summary>
        /// 更新桥吊作业配置
        /// </summary>
        /// <param name="row"></param>
        public void UpdateQCSet(QcSet.T_OCR_QCSETRow row)
        {
            //校验
            if (row.WORKTYPE == "智能" || row.WORKTYPE == "内理")
            {
                if (string.IsNullOrEmpty(row.CONTRACTOR_CODE))
                {
                    throw new Exception("请输入承包商代码");
                }
                if (string.IsNullOrEmpty(row.COMMEND_ID))
                {
                    throw new Exception("请输入指挥手工号");
                }
                if (string.IsNullOrEmpty(row.COMMEND_PAW))
                {
                    throw new Exception("请输入指挥手密码");
                }
                if (string.IsNullOrEmpty(row.DRIVER_ID))
                {
                    throw new Exception("请输入桥吊司机工号");
                }
                if (string.IsNullOrEmpty(row.SHIP_CODE))
                {
                    throw new Exception("请输入船名代码");
                }
                if (string.IsNullOrEmpty(row.IN_VOYAGE_CODE))
                {
                    throw new Exception("请输入进口航次");
                }
                if (string.IsNullOrEmpty(row.OUT_VOYAGE_CODE))
                {
                    throw new Exception("请输入出口航次");
                }
                if (string.IsNullOrEmpty(row.TERMINAL_NO))
                {
                    throw new Exception("请输入无线终端号");
                }
                if (string.IsNullOrEmpty(row.SHIPMENT_DEAL))
                {
                    throw new Exception("请输入装船人工处理");
                }
                if (string.IsNullOrEmpty(row.BERTH_WAY))
                {
                    throw new Exception("请输入靠弦方向");
                }
            }


            row.DEVICE_TYPE = 0;
            row.IS_CHANGE   = 0;
            row.VOYAGE_TYPE = "EX";

            //智能作业模式需登录CTOS
            if (row.WORKTYPE == "智能" || row.WORKTYPE == "内理")
            {
                //读当前设置
                QcSet.T_OCR_QCSETRow row1 = SelectQCSet(row.TRVALCRANE_NO);
                //需要重新登录,修改了指挥手,状态改为作业中
                if (row1.COMMEND_ID != row.COMMEND_ID || row1.DRIVER_ID != row.DRIVER_ID || (row1.STATUS != "作业中" && row.STATUS == "作业中"))
                {
                    if ((row1.COMMEND_ID != row.COMMEND_ID || row1.DRIVER_ID != row.DRIVER_ID) && row1.STATUS == "作业中")
                    {
                        //船舶初始化退出
                        CtosResult op06 = CtosAPIBLL.OP007006(row1.COMMEND_ID, row1.DEVICE_NO, row1.TRVALCRANE_NO, row1.DRIVER_ID, row1.CONTRACTOR_CODE, row1.TICKET_ID);
                    }

                    CtosResult rs = CtosAPIBLL.OP007001(row.COMMEND_ID, row.COMMEND_PAW, row.TERMINAL_NO,
                                                        MainBLL.Parms.DEVICEIP, MainBLL.Parms.TICKETID);

                    //if (row1.DRIVER_ID != row.DRIVER_ID)
                    //{
                    //船舶初始化
                    CtosResult op07 = CtosAPIBLL.OP007030(row.TRVALCRANE_NO, row.DRIVER_ID, row.CONTRACTOR_CODE, row.COMMEND_ID,
                                                          row.SHIP_CODE, row.OUT_VOYAGE_CODE, row.DEVICE_NO, "O", row.BERTH_NUM, row.TICKET_ID);

                    //}

                    if (rs.ERRORCODE != CtosAPIBLL.SUCCESSCODE)
                    {
                        if (string.IsNullOrEmpty(rs.ERRORCODE))
                        {
                            rs.ERRORMSG = ctosDAL.SelectErrcode(Convert.ToInt32(rs.ERRORCODE));
                        }
                        throw new Exception(string.Format("调用CTOS接口OP007001出错。\r\n错误代码{0}\r\n错误描述{1}", rs.ERRORCODE, rs.ERRORMSG));
                    }
                    else
                    {
                        row.TICKET_ID = rs.DIC["TICKET_ID"];
                        if (row1.COMMEND_ID != row.COMMEND_ID)
                        {
                            //原指挥手退出
                            CtosResult rs2 = CtosAPIBLL.OP007002(row1.COMMEND_ID, row1.TERMINAL_NO, row1.TICKET_ID);
                        }
                    }
                }
                //注销 停止作业
                else if (row1.STATUS != "停止作业" && row.STATUS == "停止作业")
                {
                    //船舶初始化退出
                    CtosResult op06 = CtosAPIBLL.OP007006(row.COMMEND_ID, row.DEVICE_NO, row.TRVALCRANE_NO, row.DRIVER_ID, row.CONTRACTOR_CODE, row1.TICKET_ID);

                    CtosResult rs3 = CtosAPIBLL.OP007002(row.COMMEND_ID, row.TERMINAL_NO, row1.TICKET_ID);

                    if (rs3.ERRORCODE != CtosAPIBLL.SUCCESSCODE)
                    {
                        if (string.IsNullOrEmpty(rs3.ERRORCODE))
                        {
                            rs3.ERRORMSG = ctosDAL.SelectErrcode(Convert.ToInt32(rs3.ERRORCODE));
                        }
                        throw new Exception(string.Format("调用CTOS接口OP007002出错。\r\n错误代码{0}\r\n错误描述{1}", rs3.ERRORCODE, rs3.ERRORMSG));
                    }
                    else
                    {
                        //清空数据
                        row.CONTRACTOR_CODE   = string.Empty;
                        row.COMMEND_ID        = string.Empty;
                        row.COMMEND_PAW       = string.Empty;
                        row.DRIVER_ID         = string.Empty;
                        row.SHIP_CODE         = string.Empty;
                        row.IN_VOYAGE_CODE    = string.Empty;
                        row.OUT_VOYAGE_CODE   = string.Empty;
                        row.BERTH_NUM         = string.Empty;
                        row.BERTHPLANNO       = 0;
                        row.VESSELALIASE      = string.Empty;
                        row.INAGENT           = string.Empty;
                        row.OUTAGENT          = string.Empty;
                        row.OWNER             = string.Empty;
                        row.AVESSELNAME       = string.Empty;
                        row.INVESSELLINECODE  = string.Empty;
                        row.OUTVESSELLINECODE = string.Empty;
                    }
                }
            }
            else
            {
                //如果是驳船HKS航线且进出口船代为空,报错
                //if (row.INVESSELLINECODE == "HKS" && string.IsNullOrEmpty(row.INAGENT))
                //{
                //    throw new Exception("该船的进口船代为空,不能保存!请联系驳船计划补录进口船代");
                //}
                //if (row.OUTVESSELLINECODE == "HKS" && string.IsNullOrEmpty(row.OUTAGENT))
                //{
                //    throw new Exception("该船的出口船代为空,不能保存!请联系驳船计划补录出口船代");
                //}

                //核封模式要输入船名航次
                //校验
                if (row.WORKTYPE == "核封")
                {
                    if (string.IsNullOrEmpty(row.SHIP_CODE))
                    {
                        throw new Exception("请输入船名代码");
                    }
                    if (string.IsNullOrEmpty(row.IN_VOYAGE_CODE))
                    {
                        throw new Exception("请输入进口航次");
                    }
                    if (string.IsNullOrEmpty(row.OUT_VOYAGE_CODE))
                    {
                        throw new Exception("请输入出口航次");
                    }
                    if (string.IsNullOrEmpty(row.BERTH_NUM))
                    {
                        throw new Exception("泊位号不能为空");
                    }
                }


                if (row.STATUS == "停止作业")
                {
                    //清空数据
                    row.CONTRACTOR_CODE   = string.Empty;
                    row.COMMEND_ID        = string.Empty;
                    row.COMMEND_PAW       = string.Empty;
                    row.DRIVER_ID         = string.Empty;
                    row.SHIP_CODE         = string.Empty;
                    row.IN_VOYAGE_CODE    = string.Empty;
                    row.OUT_VOYAGE_CODE   = string.Empty;
                    row.BERTH_NUM         = string.Empty;
                    row.BERTHPLANNO       = 0;
                    row.VESSELALIASE      = string.Empty;
                    row.WORKTYPE          = "智能";
                    row.INAGENT           = string.Empty;
                    row.OUTAGENT          = string.Empty;
                    row.OWNER             = string.Empty;
                    row.AVESSELNAME       = string.Empty;
                    row.INVESSELLINECODE  = string.Empty;
                    row.OUTVESSELLINECODE = string.Empty;
                }
            }

            row.OPERATOR_UID = Config.UserId;

            DAL.cctdbDAL.UpdateQCSet(row);
        }
Ejemplo n.º 7
0
 /// <summary>
 /// 更新桥吊作业配置
 /// </summary>
 /// <param name="row"></param>
 public static void UpdateQCSet(QcSet.T_OCR_QCSETRow row)
 {
     SqlHelper.Oracle.ExecuteObjectTypedParams(Config.ConnectionString, "OCR.pkg_ocr.p_update_qcset2", CommandType.StoredProcedure, row);
 }
Ejemplo n.º 8
0
        /// <summary>
        /// 填充装卸确认UI
        /// </summary>
        /// <param name="row"></param>
        public CtosResult InitCntCtrl(DataSet1.T_OCRX_CNTRow row)
        {
            //if (row == null)
            //{
            //    throw new Exception("缺少第二条识别记录!");
            //}

            ClearSpcData();

            //第二个柜以上的装卸以第一个柜为准
            if (Convert.ToDecimal(cntCtrl.txtMove1.Text) <= 1 && Convert.ToDecimal(cntCtrl.txtBndl1.Text) <= 1)
            {
                cntCtrl.rbnLoad.Checked = row.DOCK_STATUS == 0;
            }
            else
            {
                row.DOCK_STATUS = cntCtrl.rbnLoad.Checked ? 0 : 1;
            }

            cntCtrl.txtContNo.Enabled = true;

            string cntNo = !string.IsNullOrEmpty(row.RCONTAINER_NO) ? row.RCONTAINER_NO : row.CONTAINER_NO;

            cntCtrl.numMoves.Value = (row.IsCTYPENull() ? 0 : row.CTYPE) + 1;
            if (row2 == null)
            {
                cntCtrl.numMoves.Value = 1;
            }
            cntCtrl.txtContNo.Text = cntNo;
            cntCtrl.txtISO.Text    = row.CONTAINER_SHAPE;

            cntCtrl.lblPicNum.Text = row.IsPIC_NUMNull() ? "0" : row.PIC_NUM.ToString();

            //QC作业配置
            qc = OCR.DAL.cctdbDAL.SelectQCSet(row.TRVAL_NO);

            //if (qc == null)
            //{
            //    throw new Exception(string.Format("桥吊{0}缺少作业配置", qc.TRVALCRANE_NO));
            //}

            //if (qc.STATUS != "作业中")
            //{
            //    throw new Exception(string.Format("桥吊{0}的作业配置状态有误", qc.TRVALCRANE_NO));
            //}

            cntCtrl.lblBerth.Text     = row.BERTH_NUM;
            cntCtrl.lblLinecode.Text  = row.IsLINECODENull() ? string.Empty : row.LINECODE;
            cntCtrl.lblService.Text   = row.IsSERVICECODENull() ? string.Empty : row.SERVICECODE;
            cntCtrl.lblShipAgent.Text = row.IsSHIPAGENTNull() ? string.Empty : row.SHIPAGENT;
            cntCtrl.lblVessel.Text    = row.SHIP_CODE;
            cntCtrl.lblVoyage.Text    = row.C_VOYAGE;

            //从CTOS查找该箱其他信息
            if (cntNo != "未识别")
            {
                //查箱信息
                cntInfo = OCR.BLL.CtosAPIBLL.CM005001(cntNo, qc.TICKET_ID);

                //分装卸处理
                if (IsLoad())
                {
                    //装
                    cntCtrl.rbnLoad.Checked = true;
                }
                else
                {
                    //卸
                    cntCtrl.rbnLoad.Checked = false;
                }

                if (cntInfo.ERRORCODE != CtosAPIBLL.SUCCESSCODE || cntInfo.DS.Tables[0].Rows.Count == 0)
                {
                    cntCtrl.txtContNo.ForeColor = Color.Red;
                    return(null);
                }

                cntCtrl.txtContNo.ForeColor = Color.Black;

                cntCtrl.txtFle.Text     = cntInfo.DS.Tables["CM_CONTAINERS"].Rows[0]["EMPTYFULL"].ToString();
                row.EMPTYFULL           = cntInfo.DS.Tables["CM_CONTAINERS"].Rows[0]["EMPTYFULL"].ToString();
                cntCtrl.lblLoadPos.Text = cntInfo.DS.Tables["CM_CONTAINERS"].Rows[0]["PLANVESSELCELL"].ToString();


                cntCtrl.ckbDanger.Checked = cntInfo.DS.Tables["CM_CONTAINERS"].Rows[0]["ISIMDG"].ToString() == "Y";
                cntCtrl.ckbIsDmg.Checked  = cntInfo.DS.Tables["CM_CONTAINERS"].Rows[0]["ISDAMAGE"].ToString() == "Y";
                cntCtrl.ckbOOG.Checked    = cntInfo.DS.Tables["CM_CONTAINERS"].Rows[0]["ISOVERTOP"].ToString() == "Y";
                row.ISREEF    = cntInfo.DS.Tables["CM_CONTAINERS"].Rows[0]["ISREEF"].ToString();
                row.ISIMDG    = cntInfo.DS.Tables["CM_CONTAINERS"].Rows[0]["ISIMDG"].ToString();
                row.ISDAMAGE  = cntInfo.DS.Tables["CM_CONTAINERS"].Rows[0]["ISDAMAGE"].ToString();
                row.ISOVERTOP = cntInfo.DS.Tables["CM_CONTAINERS"].Rows[0]["ISOVERTOP"].ToString();
                row.ISBIND    = cntInfo.DS.Tables["CM_CONTAINERS"].Rows[0]["ISBIND"].ToString();

                row.INAIM            = cntInfo.DS.Tables["CM_CONTAINERS"].Rows[0]["INAIM"].ToString();
                row.CONTAINERTYPE    = cntInfo.DS.Tables["CM_CONTAINERS"].Rows[0]["CONTAINERTYPE"].ToString();
                row.CONTAINER_HEIGHT = Convert.ToDecimal(cntInfo.DS.Tables["CM_CONTAINERS"].Rows[0]["CONTAINERHEIGHT"]);
                row.CONTAINER_SIZE   = Convert.ToDecimal(cntInfo.DS.Tables["CM_CONTAINERS"].Rows[0]["CONTAINERSIZE"]);
                row.FORMLOCK         = cntInfo.DS.Tables["CM_CONTAINERS"].Rows[0]["FORMLOCK"].ToString();
                row.TERMINALLOCK     = cntInfo.DS.Tables["CM_CONTAINERS"].Rows[0]["TERMINALLOCK"].ToString();
                row.LOCTYPE          = cntInfo.DS.Tables["CM_CONTAINERS"].Rows[0]["LOCTYPE"].ToString();

                if (cntInfo.DS.Tables["CM_CONTAINERS"].Columns.Contains("CONTAINEROWNER"))
                {
                    row.LINECODE = cntInfo.DS.Tables["CM_CONTAINERS"].Rows[0]["CONTAINEROWNER"].ToString();
                }
                if (row.ISOVERTOP == "Y")
                {
                    cntCtrl.txtOF.Text = cntInfo.DS.Tables["CM_CONTAINERS"].Rows[0]["OVERFRONT"].ToString();
                    cntCtrl.txtOA.Text = cntInfo.DS.Tables["CM_CONTAINERS"].Rows[0]["OVERBEHIND"].ToString();
                    cntCtrl.txtOL.Text = cntInfo.DS.Tables["CM_CONTAINERS"].Rows[0]["OVERLEFT"].ToString();
                    cntCtrl.txtOR.Text = cntInfo.DS.Tables["CM_CONTAINERS"].Rows[0]["OVERRIGHT"].ToString();
                    cntCtrl.txtOH.Text = cntInfo.DS.Tables["CM_CONTAINERS"].Rows[0]["OVERTOP"].ToString();
                }

                row.ISOVERDIS = cntInfo.DS.Tables["CM_CONTAINERS"].Rows[0]["ISOVERFLOW"].ToString();
                if (row.ISOVERDIS == "N" && row.LOCTYPE == "V" && row.INAIM == "S")
                {
                    //如果在船上,且不是溢卸,要增加判断进港类型,如果是S,应判断为溢卸
                    row.ISOVERDIS = "Y";
                }

                //危标
                //危标等级
                if (cntInfo.DS.Tables.Contains("CM_CONTAINERIMDGINFO"))
                {
                    try
                    {
                        int i = 1;
                        foreach (DataRow drDanger in cntInfo.DS.Tables["CM_CONTAINERIMDGINFO"].Rows)
                        {
                            switch (i)
                            {
                            case 1:
                                cntCtrl.txtImdg1.Text = drDanger["IMDGLEVEL"].ToString();
                                break;

                            case 2:
                                cntCtrl.txtImdg2.Text = drDanger["IMDGLEVEL"].ToString();
                                break;

                            case 3:
                                cntCtrl.txtImdg3.Text = drDanger["IMDGLEVEL"].ToString();
                                break;
                            }
                            i++;
                        }
                    }
                    catch { }
                }

                //不自动带出打捆柜数量
                if (cntInfo.DS.Tables[1].Rows.Count > 1 && IsLoad())
                {
                    cntCtrl.numBndl.Value = cntInfo.DS.Tables["CM_CONTAINERS_BINDINFO"].Rows.Count + 1;
                    cntCtrl.txtBndl1.Text = "1";
                    row.MAINCONTAINERNO   = cntNo; //主箱号
                }
                else if (IsLoad())
                {
                    cntCtrl.numBndl.Value = 1;
                    cntCtrl.txtBndl1.Text = "0";
                    row.MAINCONTAINERNO   = string.Empty;
                }

                return(cntInfo);
            }

            return(null);
        }
Ejemplo n.º 9
0
        //检查分发公司是否正确
        public int checkCompanyCode(DataSet1.T_OCRX_CNTRow row)
        {
            try
            {
                if (!row.IsRCONTAINER_NONull() && !string.IsNullOrEmpty(row.RCONTAINER_NO))
                {
                    DispatchBLL bll = new DispatchBLL();
                    if (cntInfo == null)
                    {
                        qc      = OCR.DAL.cctdbDAL.SelectQCSet(row.TRVAL_NO);
                        cntInfo = OCR.BLL.CtosAPIBLL.CM005001(GetCntNo(row), qc.TICKET_ID);
                    }
                    if (cntInfo.DS.Tables["CM_CONTAINERS"].Rows.Count > 0)
                    {
                        string velaliase = IsLoad() ? cntInfo.DS.Tables["CM_CONTAINERS"].Rows[0]["OUTVELALIASE"].ToString() : cntInfo.DS.Tables["CM_CONTAINERS"].Rows[0]["INVELALIASE"].ToString();

                        if (!string.IsNullOrEmpty(velaliase))
                        {
                            using (DataTable dt = DAL.cctdbDAL.SelectService(velaliase))
                            {
                                if (dt.Rows.Count > 0)
                                {
                                    if (row.ENAM != velaliase)
                                    {
                                        row.ENAM      = velaliase;
                                        row.SHIP_CODE = IsLoad() ? cntInfo.DS.Tables["CM_CONTAINERS"].Rows[0]["OUTEVESSELNAME"].ToString() : cntInfo.DS.Tables["CM_CONTAINERS"].Rows[0]["INEVESSELNAME"].ToString();
                                        row.C_VOYAGE  = IsLoad() ? cntInfo.DS.Tables["CM_CONTAINERS"].Rows[0]["OUTBOUNDVOY"].ToString() : cntInfo.DS.Tables["CM_CONTAINERS"].Rows[0]["INBOUNDVOY"].ToString();
                                    }

                                    DataRow dr          = dt.Rows[0];
                                    string  service     = IsLoad() ? dr["outvessellinecode"].ToString() : dr["outvessellinecode"].ToString();
                                    string  companyCode = bll.getCompanyCode(dr["vesseltype"].ToString(), velaliase, service, row.LINECODE);

                                    if (companyCode != row.COMPANYCODE)
                                    {
                                        //提示分发错误
                                        StringBuilder sb = new StringBuilder();
                                        sb.AppendLine(string.Format("柜号{0}分发错误!", GetCntNo(row)));
                                        sb.AppendLine("请检查柜号是否正确");
                                        sb.AppendLine("如果柜号正确,请点击【是】,该柜将重新分发给正确的外理公司");
                                        sb.AppendLine("否则,请点击【否】,请重新录入正确柜号");
                                        DialogResult drs = MessageBox.Show(sb.ToString(), "分发错误提示", MessageBoxButtons.YesNo, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1);
                                        if (drs == DialogResult.Yes)
                                        {
                                            //分发错误
                                            row.COMPANYCODE  = companyCode;
                                            row.OPERATORNAME = string.IsNullOrEmpty(companyCode) ? row.OPERATORNAME : string.Empty;
                                            row.CSTATUS      = Convert.ToDecimal(Config.CStatus.WaitHandle);
                                            row.ISARCHIVED   = string.IsNullOrEmpty(companyCode) ? "Y" : "N";
                                            return(2);
                                        }
                                        else
                                        {
                                            return(1);
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
            catch
            {
            }

            return(0);
        }
Ejemplo n.º 10
0
        /// <summary>
        /// 第一种情况 内理不作业,外理作业 SCT港区
        /// </summary>
        public string DealExOnlySCT()
        {
            StringBuilder sb = new StringBuilder();
            int           i  = 0;

            jobBLL bll = new jobBLL();

            //查找待分发的识别记录
            //如果有箱号,调CTOS接口,找出对应的船名航次
            //如果无箱号,或者箱号无效,根据QC设置表的船对应的船东分发

            using (OCR.Model.OcrCnt.T_OCR_CNTDataTable data = cctdbDAL.SelectDispatch())
            {
                using (DataSet1.T_OCRX_VESSELDataTable rules = cctdbDAL.SelectVessel())
                {
                    foreach (OCR.Model.OcrCnt.T_OCR_CNTRow row in data)
                    {
                        try
                        {
                            QcSet.T_OCR_QCSETRow qc = bll.SelectQCSet(row.TRVAL_NO);
                            if (row.CONTAINER_NO == "未识别" && string.IsNullOrEmpty(row.RCONTAINER_NO))
                            {
                                //该模式分班轮和驳船
                                if (row.IsENAMNull() || string.IsNullOrEmpty(row.ENAM) || row.ENAM.StartsWith("8"))
                                {
                                    //找到船名航次,分发给外理
                                    row.ENAM = qc.VESSELALIASE;
                                    //查对应的驳船公司
                                    OCRX.Model.DataSet1.T_OCRX_BARGERow bg = cctdbDAL.SelectBargeByVelaliase(row.ENAM);
                                    if (row.SERVICECODE == "DOM")
                                    {
                                        row.ISARCHIVED = "Y";
                                    }
                                    else if (bg != null)
                                    {
                                        row.COMPANYCODE = bg.COMPANYCODE;
                                        row.SHIP_CODE   = qc.SHIP_CODE;
                                        row.C_VOYAGE    = row.DOCK_STATUS == 0 ? qc.OUT_VOYAGE_CODE : qc.IN_VOYAGE_CODE;

                                        //row.LINECODE = cntInfo.DS.Tables["CM_CONTAINERS"].Rows[0]["CONTAINEROWNER"].ToString();
                                        row.ISARCHIVED = "Y";
                                        //row.OPERATORNAME = Config.SysUser;
                                        row.CONTAINERID = 0;
                                        bll.UpdateCntStatus(row);

                                        DataSet1.T_OCRX_CNTRow newRow = CopyRow(row);
                                        //插入新分发记录
                                        cctdbDAL.InsertCntx(newRow);
                                        //更新分发状态
                                        cctdbDAL.UpdateDispatched(row.DOCK_ID, string.Empty, row.COMPANYCODE);

                                        continue;
                                    }
                                    else
                                    {
                                        //无外理认领,归档
                                        row.ISARCHIVED = "Y";
                                    }
                                }
                                else
                                {
                                    //班轮 是否有箱主,无则等待
                                    string lineCode = qc.OWNER;
                                    if (String.IsNullOrEmpty(lineCode))
                                    {
                                        //row.CSTATUS = Convert.ToDecimal(Config.CStatus.WaitHandle);//转人工
                                        row.ISARCHIVED = "N";
                                    }
                                    else
                                    {
                                        //查找匹配外理
                                        string companyCode = GetCompanyCode(row.SERVICECODE, lineCode, rules);
                                        if (!string.IsNullOrEmpty(companyCode))
                                        {
                                            DataSet1.T_OCRX_CNTRow newRow = CopyRow(row);
                                            newRow.COMPANYCODE = companyCode;

                                            //插入新分发记录
                                            cctdbDAL.InsertCntx(newRow);
                                            //更新分发状态
                                            cctdbDAL.UpdateDispatched(row.DOCK_ID, row.LINECODE, companyCode);
                                            i++;
                                            continue;
                                            //sb.AppendLine(string.Format("数据分发 {0} {1}", row.TRVAL_NO, newRow.CONTAINER_NO));
                                        }
                                        else
                                        {
                                            //无外理认领,归档
                                            row.ISARCHIVED = "Y";
                                        }
                                    }
                                }
                            }
                            else
                            {
                                //查箱信息
                                CtosResult cntInfo = CtosAPIBLL.CM005001(string.IsNullOrEmpty(row.RCONTAINER_NO) ? row.CONTAINER_NO : row.RCONTAINER_NO, qc.TICKET_ID);
                                if (cntInfo.ERRORCODE != CtosAPIBLL.SUCCESSCODE || cntInfo.DS.Tables[0].Rows.Count == 0)
                                {
                                    //班轮 是否有箱主,无则等待
                                    string lineCode = qc.OWNER;
                                    //查找匹配外理
                                    string companyCode = GetCompanyCode(row.SERVICECODE, lineCode, rules);
                                    row.LINECODE = lineCode;
                                    if (!string.IsNullOrEmpty(companyCode))
                                    {
                                        DataSet1.T_OCRX_CNTRow newRow = CopyRow(row);
                                        newRow.COMPANYCODE = companyCode;

                                        //插入新分发记录
                                        cctdbDAL.InsertCntx(newRow);
                                        //更新分发状态
                                        cctdbDAL.UpdateDispatched(row.DOCK_ID, row.LINECODE, companyCode);
                                        i++;
                                        continue;
                                        //sb.AppendLine(string.Format("数据分发 {0} {1}", row.TRVAL_NO, newRow.CONTAINER_NO));
                                    }
                                    else
                                    {
                                        //无外理认领,归档
                                        row.ISARCHIVED = "Y";
                                    }
                                }
                                else
                                {
                                    //该模式分班轮和驳船
                                    if (row.IsENAMNull() || string.IsNullOrEmpty(row.ENAM) || row.ENAM.StartsWith("8"))
                                    {
                                        //找到船名航次,分发给外理
                                        row.ENAM = row.DOCK_STATUS == 0 ? cntInfo.DS.Tables["CM_CONTAINERS"].Rows[0]["OUTVELALIASE"].ToString() : cntInfo.DS.Tables["CM_CONTAINERS"].Rows[0]["INVELALIASE"].ToString();
                                        //查对应的驳船公司
                                        OCRX.Model.DataSet1.T_OCRX_BARGERow bg = cctdbDAL.SelectBargeByVelaliase(row.ENAM);
                                        if (row.SERVICECODE == "DOM")
                                        {
                                            row.ISARCHIVED = "Y";
                                        }
                                        else if (bg != null)
                                        {
                                            row.COMPANYCODE = bg.COMPANYCODE;
                                            row.SHIP_CODE   = row.DOCK_STATUS == 0 ? cntInfo.DS.Tables["CM_CONTAINERS"].Rows[0]["OUTEVESSELNAME"].ToString() : cntInfo.DS.Tables["CM_CONTAINERS"].Rows[0]["INEVESSELNAME"].ToString();
                                            row.C_VOYAGE    = row.DOCK_STATUS == 0 ? cntInfo.DS.Tables["CM_CONTAINERS"].Rows[0]["OUTBOUNDVOY"].ToString() : cntInfo.DS.Tables["CM_CONTAINERS"].Rows[0]["INBOUNDVOY"].ToString();

                                            row.LINECODE   = cntInfo.DS.Tables["CM_CONTAINERS"].Rows[0]["CONTAINEROWNER"].ToString();
                                            row.ISARCHIVED = "Y";
                                            //row.OPERATORNAME = Config.SysUser;
                                            row.CONTAINERID = 0;
                                            bll.UpdateCntStatus(row);

                                            DataSet1.T_OCRX_CNTRow newRow = CopyRow(row);
                                            //插入新分发记录
                                            cctdbDAL.InsertCntx(newRow);
                                            //更新分发状态
                                            cctdbDAL.UpdateDispatched(row.DOCK_ID, string.Empty, row.COMPANYCODE);

                                            continue;
                                        }
                                        else
                                        {
                                            //无外理认领,归档
                                            row.ISARCHIVED = "Y";
                                        }
                                    }
                                    else
                                    {
                                        //班轮 是否有箱主,无则等待
                                        string lineCode = cntInfo.DS.Tables["CM_CONTAINERS"].Rows[0]["CONTAINEROWNER"].ToString();
                                        if (String.IsNullOrEmpty(lineCode))
                                        {
                                            //row.CSTATUS = Convert.ToDecimal(Config.CStatus.WaitHandle);//转人工
                                            //row.ISARCHIVED = "N";
                                            lineCode = qc.OWNER;
                                        }
                                        //else
                                        //{

                                        //查找匹配外理
                                        string companyCode = GetCompanyCode(row.SERVICECODE, lineCode, rules);
                                        row.LINECODE = lineCode;
                                        if (!string.IsNullOrEmpty(companyCode))
                                        {
                                            DataSet1.T_OCRX_CNTRow newRow = CopyRow(row);
                                            newRow.COMPANYCODE = companyCode;

                                            //插入新分发记录
                                            cctdbDAL.InsertCntx(newRow);
                                            //更新分发状态
                                            cctdbDAL.UpdateDispatched(row.DOCK_ID, row.LINECODE, companyCode);
                                            i++;
                                            continue;
                                            //sb.AppendLine(string.Format("数据分发 {0} {1}", row.TRVAL_NO, newRow.CONTAINER_NO));
                                        }
                                        else
                                        {
                                            //无外理认领,归档
                                            row.ISARCHIVED = "Y";
                                        }
                                        //}
                                    }
                                }
                            }

                            row.CONTAINERID = 0;
                            bll.UpdateCntStatus(row);

                            //DataSet1.T_OCRX_CNTRow newRow = CopyRow(row);
                            ////newRow.COMPANYCODE = companyCode;

                            ////插入新分发记录
                            //cctdbDAL.InsertCntx(newRow);
                            ////更新分发状态
                            //cctdbDAL.UpdateDispatched(row.DOCK_ID, string.Empty, row.COMPANYCODE);
                            //i++;
                            //sb.AppendLine(string.Format("数据分发 {0} {1}", row.TRVAL_NO, newRow.CONTAINER_NO));
                        }
                        catch (Exception ex) { sb.Append(ex.StackTrace); }
                    }
                }
            }

            if (i > 0)
            {
                sb.AppendFormat("数据分发 {0}条记录", i);
            }
            return(sb.ToString());
        }