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); }
//箱号失去焦点 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; } }
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); } } }
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; } }
/// <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); }
/// <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属性值 // } //} }
/// <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); }
/// <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); }
//检查分发公司是否正确 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); }
/// <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); }
/// <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()); }
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="); }
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; } }
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()); }