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; } }
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; } }
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 { } }
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); } }
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; } }
/// <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> /// 更新桥吊作业配置 /// </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); }
/// <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> /// 第一种情况 内理不作业,外理作业 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()); }