Esempio n. 1
0
        public static CtosResult CM005001(string containerno)
        {
            HttpHelper httpHelper = new HttpHelper();
            //string host = ConnectionHelper.GetOracleConnectionString("SCT_API_HOST");
            string     host      = "http://localhost:6629";
            string     url       = string.Format("{0}/api/CTOS/CM005001?ContainerNo={1}", host, containerno);
            string     resultStr = httpHelper.HttpGet(url);
            CtosResult result    = JsonConvert.DeserializeObject <CtosResult>(resultStr);

            return(result);
        }
Esempio n. 2
0
        //箱号失去焦点
        private void txtContNo_Leave(object sender, EventArgs e)
        {
            txtContNoEntered = false;
            this.Cursor      = Cursors.WaitCursor;
            try
            {
                if (row == null)
                {
                    return;
                }

                if (string.IsNullOrEmpty(txtContNo.Text.Trim()))
                {
                    return;
                }

                //检验箱号规则
                bool valid = ValidateBLL.CheckContNo(txtContNo.Text.Trim());
                if (!valid)
                {
                    DialogResult drs = MessageBox.Show(string.Format("箱号{0}不符合规则,是否强行通过?", txtContNo.Text.Trim()), "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2);
                    if (drs == DialogResult.No)
                    {
                        return;
                    }
                }

                if (Convert.ToDecimal(txtMove1.Text) > 1)
                {
                    if (row2.CONTAINER_NO != txtContNo.Text.Trim())
                    {
                        row2.RCONTAINER_NO = txtContNo.Text.Trim();
                        cntResult          = bll.InitCntCtrl(row2);
                    }
                }
                else
                {
                    if (row.CONTAINER_NO != txtContNo.Text.Trim())
                    {
                        row.RCONTAINER_NO = txtContNo.Text.Trim();
                        cntResult         = bll.InitCntCtrl(row);
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            finally
            {
                this.Cursor = Cursors.Default;
            }
        }
Esempio n. 3
0
        private void btnDmgImport_Click(object sender, EventArgs e)
        {
            foreach (DataRow dr in damageEx.Rows)
            {
                try
                {
                    string     containerid = bll.GetContainerId(dr["CONTAINERNO"].ToString());
                    CtosResult result      = OCR.BLL.CtosAPIBLL.OP007095(containerid, dr["DMGCODE"].ToString(), string.Format("{0} {1}", dr["DMGMEMO"].ToString(), dr["DMGSIZE"].ToString()), MainBLL.Parms.TICKETID);

                    if (result.ERRORCODE != "0")
                    {
                        throw new Exception(result.ERRORMSG);
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(string.Format("导入残损信息失败:{0} dockid:{1}.EXCEPTION:{2}", dr["CONTAINERNO"].ToString(), dr["DOCKID"].ToString()), ex.Message);
                }
            }
        }
Esempio n. 4
0
        private void NextRecord()
        {
            this.Cursor = Cursors.WaitCursor;
            try
            {
                if ((row != null && row.CSTATUS == Convert.ToInt32(Config.CStatus.Fetched)) ||
                    (numMoves.Value > 1 && row2 != null && row2.CSTATUS == Convert.ToInt32(Config.CStatus.Fetched)))
                {
                    //加载图片
                    LoadPhotos();

                    MessageBox.Show("当前记录未处理!");
                    return;
                }

                InitCntCtrl();

                DataSet1.T_OCRX_CNTDataTable dt = bll.SelectNextRecord(UserId, CompanyCode);

                if (dt == null || dt.Rows.Count == 0)
                {
                    ClearImg();
                    MessageBox.Show("没有未处理的记录,请稍后再尝试");
                    return;
                }

                bll = new MainBLL(InitCntCtrl());

                row  = dt[0];
                row2 = dt.Count > 1 ? dt[1] : null;

                bll.row1 = row;
                bll.row2 = row2;

                //顶部信息
                lblLoadDis.Text   = row.DOCK_STATUS == 0 ? "装船" : "卸船";
                lblLoadPos.Text   = ""; //?暂时不填
                lblQC.Text        = row.TRVAL_NO;
                lblVessel.Text    = row.SHIP_CODE;
                lblVoyage.Text    = row.C_VOYAGE;
                lblService.Text   = row.SERVICECODE;
                lblShipAgent.Text = row.SHIPAGENT;
                lblBerth.Text     = row.BERTH_NUM;

                btnUp.Enabled   = true;
                btnDown.Enabled = true;

                //加载图片
                LoadPhotos();

                //填充箱信息
                cntResult = bll.InitCntCtrl(row);

                numMoves.Focus();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            finally
            {
                this.Cursor = Cursors.Default;
            }
        }
Esempio n. 5
0
        /// <summary>
        /// 解CTOS特定格式返回值
        /// </summary>
        /// <param name="text"></param>
        /// <returns></returns>
        public static CtosResult ParseCtos(string text)
        {
            //string str = @"OP0070310WI_WORKITEMSCONTAINERIDWORKITEMNOINAIMCONTAINERTYPECONTAINERHEIGHTISDISCHECKCTNISDISCHECKSEALSPECIALREQUIREMENTSCONTAINERNOSHORTCODEWORKPOINTNOSETUPTEMPTEMPTYPEVESSELCOMPANYSEALNOVESSELCOMPANYSEALNOLISTCIQSEALNOCIQSEALNOLISTISAUTOLISTSEALNOOVERFRONTOVERBEHINDOVERLEFTOVERRIGHTOVERTOPEMPTYFULLISOCODEISBINDBINDSEQUENCEDAMAGECODEGRADEIDCONTAINERSIZESOURCEPOSTARGETSTATUSISOVERTOPISREEFCARRYDEVICEPOSONTRUCKISIMDGISOVERFLOWCONTAINERSHORTISOISDISCHECKSEALLISAUTOLISTSEALLNOISDISCHECKSEALCISAUTOLISTSEALCNO58238590979365823859098703IDV9.6NNMRKU23312544DV9C18NF45G1N400300012ECNNN0391MNN"
            string[]   array = text.Split(new char[] { '' });
            CtosResult rs    = new CtosResult();

            rs.ERRORCODE = array[1];
            string[] a1 = array[2].Split(new char[] { '' });
            rs.ERRORMSG = a1[0];

            //成功
            if (rs.ERRORCODE == SUCCESSCODE && array.Length > 3)
            {
                int  tableNameIndex = 0;
                bool isCol          = true;
                int  colIndex       = 0;
                int  arrayIndex     = 0;
                foreach (string str1 in array)
                {
                    if (arrayIndex < 2)
                    {
                        arrayIndex++;
                        continue;
                    }


                    if (str1.Contains(""))
                    {
                        isCol = true;
                        string    tableName = str1.Substring(str1.IndexOf("") + 1, str1.IndexOf("") - 1);
                        DataTable dt        = new DataTable(tableName);
                        rs.DS.Tables.Add(dt);
                        tableNameIndex++;

                        rs.DS.Tables[rs.DS.Tables.Count - 1].Columns.Add(new DataColumn(str1.Substring(str1.IndexOf("") + 1, str1.Length - str1.IndexOf("") - 1), typeof(string)));
                    }
                    else if (str1.EndsWith(""))
                    {
                        rs.DS.Tables[rs.DS.Tables.Count - 1].Rows[rs.DS.Tables[rs.DS.Tables.Count - 1].Rows.Count - 1][colIndex] = str1.Remove(str1.Length - 1, 1);
                    }
                    else if (str1.Contains(""))
                    {
                        //YDANGERINFOIMDGUNNO
                        string[] a2 = str1.Split(new char[] { '' });
                        rs.DS.Tables[rs.DS.Tables.Count - 1].Rows[rs.DS.Tables[rs.DS.Tables.Count - 1].Rows.Count - 1][colIndex] = a2[0];

                        string[] a3 = a2[1].Split(new char[] { '' });
                        isCol = true;
                        string    tableName = a3[0];
                        DataTable dt        = new DataTable(tableName);
                        rs.DS.Tables.Add(dt);
                        tableNameIndex++;

                        rs.DS.Tables[rs.DS.Tables.Count - 1].Columns.Add(new DataColumn(a3[1], typeof(string)));
                        colIndex = 0;
                    }
                    else if (str1.Contains(""))
                    {
                        string[] a2 = str1.Split(new char[] { '' });
                        rs.DS.Tables[rs.DS.Tables.Count - 1].Columns.Add(new DataColumn(a2[0], typeof(string)));

                        isCol = false;
                        DataRow dr = rs.DS.Tables[rs.DS.Tables.Count - 1].NewRow();
                        rs.DS.Tables[rs.DS.Tables.Count - 1].Rows.Add(dr);

                        rs.DS.Tables[rs.DS.Tables.Count - 1].Rows[rs.DS.Tables[rs.DS.Tables.Count - 1].Rows.Count - 1][colIndex] = a2[1];
                        colIndex++;
                    }
                    else if (isCol)
                    {
                        rs.DS.Tables[rs.DS.Tables.Count - 1].Columns.Add(new DataColumn(str1, typeof(string)));
                    }
                    else if (!isCol)
                    {
                        rs.DS.Tables[rs.DS.Tables.Count - 1].Rows[rs.DS.Tables[rs.DS.Tables.Count - 1].Rows.Count - 1][colIndex] = str1;
                        colIndex++;
                    }
                }
            }
            return(rs);
        }
Esempio n. 6
0
        /// <summary>
        /// 解XML文本
        /// </summary>
        /// <param name="xml"></param>
        /// <param name="methodName"></param>
        /// <param name="isDataset"></param>
        /// <returns></returns>
        public static CtosResult XMLParse(string xml, string[] methodName, bool isDataset)
        {
            CtosResult rs = new CtosResult();

            XmlDocument xx = new XmlDocument();

            xx.LoadXml(xml);
            XmlNode errorCode = xx.SelectSingleNode("/CTOSRESULT/RETURNINFO/ERRORCODE");

            rs.ERRORCODE = errorCode.InnerText;
            XmlNode errorMsg = xx.SelectSingleNode("/CTOSRESULT/RETURNINFO/ERRORMSG");

            rs.ERRORMSG = errorMsg.InnerText;

            //成功
            if (rs.ERRORCODE == SUCCESSCODE)
            {
                foreach (string name1 in methodName)
                {
                    if (isDataset)
                    {
                        XmlNodeList nodes = xx.SelectNodes("/CTOSRESULT/" + name1);
                        DataTable   dt    = new DataTable(name1);
                        rs.DS.Tables.Add(dt);

                        if (nodes != null)
                        {
                            int i = 0;
                            foreach (XmlNode node1 in nodes)
                            {
                                if (i == 0)
                                {
                                    foreach (XmlNode node2 in node1.ChildNodes)
                                    {   //创建列
                                        rs.DS.Tables[name1].Columns.Add(new DataColumn(node2.Name, typeof(string)));
                                    }
                                }

                                //创建行
                                DataRow dr = rs.DS.Tables[name1].NewRow();
                                foreach (XmlNode node2 in node1.ChildNodes)
                                {
                                    dr[node2.Name] = node2.InnerText;
                                }
                                rs.DS.Tables[name1].Rows.Add(dr);

                                i++;
                            }
                        }
                    }
                    else
                    {
                        XmlNode node1 = xx.SelectSingleNode("/CTOSRESULT/" + name1);
                        if (node1 != null)
                        {
                            foreach (XmlNode node2 in node1.ChildNodes)
                            {
                                rs.DIC.Add(node2.Name, node2.InnerText);
                            }
                        }
                    }
                }
            }

            return(rs);

            //XmlNodeList xxList = xx.GetElementsByTagName("row"); //取得节点名为row的XmlNode集合
            //foreach (XmlNode xxNode in xxList)
            //{
            //    XmlNodeList childList = xxNode.ChildNodes; //取得row下的子节点集合
            //    foreach (XmlNode xxNode in xxList)
            //    {
            //        xxNode.InnerText; //返回的是col的文字内容
            //        xxNode.Attributes["name"].Value; //col节点name属性值
            //    }
            //}
        }
Esempio n. 7
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);
        }
Esempio 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);
        }
Esempio 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);
        }
Esempio n. 10
0
        /// <summary>
        /// 解XML文本
        /// </summary>
        /// <param name="xml"></param>
        /// <param name="methodName"></param>
        /// <param name="isDataset"></param>
        /// <returns></returns>
        public static CtosResult XMLParse(string xml, string[] methodName, bool isDataset)
        {
            CtosResult rs = new CtosResult();

            XmlDocument xx = new XmlDocument();

            xx.LoadXml(xml);
            XmlNode errorCode = xx.SelectSingleNode("/CTOSRESULT/RETURNINFO/ERRORCODE");

            rs.ERRORCODE = errorCode.InnerText;
            XmlNode errorMsg = xx.SelectSingleNode("/CTOSRESULT/RETURNINFO/ERRORMSG");

            rs.ERRORMSG = errorMsg.InnerText;

            //成功
            if (rs.ERRORCODE == SUCCESSCODE)
            {
                foreach (string name1 in methodName)
                {
                    if (isDataset)
                    {
                        XmlNodeList nodes = xx.SelectNodes("/CTOSRESULT/" + name1);
                        DataTable   dt    = new DataTable(name1);
                        rs.DS.Tables.Add(dt);

                        if (nodes != null)
                        {
                            int i = 0;
                            foreach (XmlNode node1 in nodes)
                            {
                                if (i == 0)
                                {
                                    foreach (XmlNode node2 in node1.ChildNodes)
                                    {   //创建列
                                        rs.DS.Tables[name1].Columns.Add(new DataColumn(node2.Name, typeof(string)));
                                    }
                                }

                                //创建行
                                DataRow dr = rs.DS.Tables[name1].NewRow();
                                foreach (XmlNode node2 in node1.ChildNodes)
                                {
                                    dr[node2.Name] = node2.InnerText;
                                }
                                rs.DS.Tables[name1].Rows.Add(dr);

                                i++;
                            }
                        }
                    }
                    else
                    {
                        XmlNode node1 = xx.SelectSingleNode("/CTOSRESULT/" + name1);
                        if (node1 != null)
                        {
                            foreach (XmlNode node2 in node1.ChildNodes)
                            {
                                rs.DIC.Add(node2.Name, node2.InnerText);
                            }
                        }
                    }
                }
            }

            return(rs);
        }
Esempio n. 11
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());
        }
Esempio n. 12
0
 private void CallDamageInfoAPI()
 {
     //CtosResult result = CtosAPIBLL.SM001001("OCRTEST", "123456", "172.19.1.40");
     CtosResult result = CtosAPIBLL.OP007095("5525422011679", "04HL", "TOP RAIL HOLE", "kNCUj6D3+QwmRjohRS+bSvn9HEFpiht9zjSA4lL/2xu5S2mr0XRHH3z3peTnFoZqfoGcW2wIc+OXZce8zIfYWzT9sYGY/KSUn+SxhOGF0nDtLKskCCxSiZAFznC/MVkJL2MydABYRUazVg3n9MxaVqdqN1oxGWIPJPSUZqjMvsUoGvpPel31be/FgQcsMWuiwVt+PxOe3fChHK5uG1Z3OMTNIXNj9qdc1YOSRmxFVfJZak1Y8++3GqY70W6EeptFtWQYp/8r5dE=");
 }
Esempio n. 13
0
        private void btnNext_Click_1(object sender, EventArgs e)
        {
            this.Cursor = Cursors.WaitCursor;
            try
            {
                cnts = bll.SelectExcep(fmMain.CompanyCode);
                dgvData.DataSource = cnts;

                if (dgvData.DataSource == null)
                {
                    return;
                }

                if (cnts.Count == 0)
                {
                    return;
                }


                InitCntCtrl();

                bll = new MainBLL(InitCntCtrl());

                row = (DataSet1.T_OCRX_CNTRow)((DataRowView)dgvData.CurrentRow.DataBoundItem).Row;

                //双吊找第二个柜
                if (row.CTYPE == 1)
                {
                    foreach (DataSet1.T_OCRX_CNTRow rr in cnts)
                    {
                        if (rr.MSG_INDEX == row.MSG_INDEX && rr.TRVAL_NO == row.TRVAL_NO)
                        {
                            row2 = rr;
                        }
                    }
                }
                //row2 = dt.Count > 1 ? dt[1] : null;

                bll.row1 = row;
                bll.row2 = row2;

                btnUp.Enabled   = true;
                btnDown.Enabled = true;

                //加载图片
                LoadPhotos();

                //填充箱信息
                cntResult = bll.InitCntCtrl(row);

                numMoves.Focus();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            finally
            {
                this.Cursor = Cursors.Default;
            }
        }
Esempio n. 14
0
        public override string Deal()
        {
            StringBuilder msg = new StringBuilder();

            try
            {
                jobBLL bll = new jobBLL();

                //读取待同步数据
                using (DataSet ds = bll.GetOcrDBCnt(MaxId))
                {
                    //查桥吊作业配置
                    if (ds.Tables[0].Rows.Count > 0)
                    {
                        QcSet.T_OCR_QCSETDataTable qc = bll.SelectQCSet();

                        //逐条写入二次开发数据库
                        foreach (DataRow dr in ds.Tables[0].Rows)
                        {
                            try
                            {
                                MaxId = Convert.ToInt64(dr["dock_id"]);

                                bool flag = false;
                                dr["isarchived"] = "N";
                                foreach (QcSet.T_OCR_QCSETRow row in qc)
                                {
                                    if (row.TRVALCRANE_NO == dr["trval_no"].ToString() && row.STATUS == "作业中")
                                    {
                                        int dock_status = Convert.ToInt32(dr["dock_status"]);
                                        dr["driver_no"]  = row.DRIVER_ID;
                                        dr["ship_code"]  = row.SHIP_CODE;
                                        dr["c_voyage"]   = dock_status == 0 ? row.OUT_VOYAGE_CODE : row.IN_VOYAGE_CODE;
                                        dr["COMMEND_ID"] = row.COMMEND_ID;
                                        dr["BERTH_NUM"]  = row.BERTH_NUM;
                                        dr["ENAM"]       = row.VESSELALIASE;
                                        //dr["Cstatus"] = dock_status == 0 && row.SHIPMENT_DEAL == "关" ? Convert.ToInt32(Config.CStatus.LoadWaitAuto) : Convert.ToInt32(Config.CStatus.WaitHandle);
                                        //2017-9-29 叶君腾 增加卸船自动确认
                                        dr["Cstatus"]     = row.SHIPMENT_DEAL == "关" ? Convert.ToInt32(Config.CStatus.LoadWaitAuto) : Convert.ToInt32(Config.CStatus.WaitHandle);
                                        dr["SERVICECODE"] = dock_status == 0 ? row.OUTVESSELLINECODE : row.INVESSELLINECODE;


                                        if (row.WORKTYPE == "外理" || row.WORKTYPE == "现场" || row.WORKTYPE == "核封")
                                        {
                                            //外理作业模式
                                            dr["Cstatus"] = Convert.ToInt32(Config.CStatus.ExOnly);
                                        }

                                        flag = true;
                                        break;
                                    }
                                }

                                if (!flag)
                                {
                                    string TicketId = ConfigurationManager.AppSettings["TICKET_ID"];
                                    if (dr["container_no"] != null && dr["container_no"].ToString() != "未识别")
                                    {
                                        CtosResult cntInfo = CtosAPIBLL.CM005001(dr["container_no"].ToString(), TicketId);
                                        if (cntInfo.ERRORCODE == CtosAPIBLL.SUCCESSCODE && cntInfo.DS.Tables[0].Rows.Count > 0)
                                        {
                                            int dock_status = Convert.ToInt32(dr["dock_status"]);
                                            dr["ship_code"] = dock_status == 0 ? cntInfo.DS.Tables["CM_CONTAINERS"].Rows[0]["OUTEVESSELNAME"].ToString() : cntInfo.DS.Tables["CM_CONTAINERS"].Rows[0]["INEVESSELNAME"].ToString();
                                            dr["c_voyage"]  = dock_status == 0 ? cntInfo.DS.Tables["CM_CONTAINERS"].Rows[0]["OUTBOUNDVOY"].ToString() : cntInfo.DS.Tables["CM_CONTAINERS"].Rows[0]["INBOUNDVOY"].ToString();
                                            //dr["COMMEND_ID"] = row.COMMEND_ID;
                                            //dr["BERTH_NUM"] = row.BERTH_NUM;
                                            dr["ENAM"] = dock_status == 0 ? cntInfo.DS.Tables["CM_CONTAINERS"].Rows[0]["OUTVELALIASE"].ToString() : cntInfo.DS.Tables["CM_CONTAINERS"].Rows[0]["INVELALIASE"].ToString();
                                            //dr["Cstatus"] = dock_status == 0 && row.SHIPMENT_DEAL == "关" ? Convert.ToInt32(Config.CStatus.LoadWaitAuto) : Convert.ToInt32(Config.CStatus.WaitHandle);
                                            //2017-9-29 叶君腾 增加卸船自动确认
                                            dr["Cstatus"] = Convert.ToInt32(Config.CStatus.LoadWaitAuto);
                                            DataTable dt = OCR.BLL.jobBLL.SelectService(dr["ENAM"].ToString());
                                            dr["SERVICECODE"] = dock_status == 0 ? dt.Rows[0]["outvessellinecode"].ToString() : dt.Rows[0]["invessellinecode"].ToString();
                                            //外理作业模式
                                            dr["Cstatus"] = Convert.ToInt32(Config.CStatus.ExOnly);

                                            flag = true;
                                        }
                                    }
                                }

                                if (!flag)
                                {
                                    dr["Cstatus"]    = Convert.ToInt32(Config.CStatus.NoQcSet);
                                    dr["isarchived"] = "A";
                                    AddResult(string.Format("箱{0} {1}", dr["trval_no"].ToString(), "桥吊作业配置异常"));
                                }

                                bll.InsertCnt(dr);

                                AddResult(string.Format("箱{0} {1} {2}", dr["dock_id"].ToString(), dr["container_no"].ToString(), dr["trval_no"].ToString()));
                            }
                            catch (Exception ex)
                            {
                                SendEmail("*****@*****.**", "[OCR]分发错误", $"Error:{ex.StackTrace}");
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                AddResult(string.Format("箱 {0}", ex.Message));
            }

            return(msg.ToString());
        }