public ResultModel <bool> UploadNodeForStorage(Model_Waybill_Node node, int customerId, int?parentStorageId) { if (node != null) { LogServer.AddLogText("--------------------------------------------------------------", node.BaseId); } else { LogServer.AddLogText("实体为空", "XXX"); } ResultModel <bool> result = new ResultModel <bool>(); try { LogServer.AddLogText(string.Format("上报第三方运单节点{0},customerId:{1},parentStorageId", node.BaseId, customerId, parentStorageId), node.BaseId); result.Data = PDA_WaybillServer.UploadWaybill_Node(node, customerId, parentStorageId); LogServer.AddLogText("退出节点逻辑", node.BaseId); } catch (Exception ex) { HandleExcepthin(result, ex); LogServer.AddLogText("节点错误", node.BaseId); } finally { if (node != null) { LogServer.AddLogText("--------------------------------------------------------------", node.BaseId); } } return(result); }
//public static bool GethuadongTmsOrderNode(List<Model_Waybill_Node> nodeList) //{ // if (nodeList.Count == 0) // return false; // bool result = false; // try // { // //查询关联表是否存在信息 // List<Model_Huadong_Tmsorder_Waybillbase> numberList = GetHuadongWaybillbase(nodeList.Select(l => l.BaseId).Distinct().ToList()); // if (numberList.Count == 0) // return true; // List<Model_Waybill_Base> baseId = GetExistWaybills(numberList.Select(l => l.number).Distinct().ToList()); // if (baseId.Count == 0) // return true; // int receiveContinue = 0; // foreach (Model_Waybill_Node node in nodeList) // { // foreach (Model_Waybill_Base waybase in baseId) // { // //if (waybase.Number == waynode.BaseId) // //{ // //判断运单状态是否签收 // //if (baseId.Find(l => l.Number == numberList.Find(n => n.relationId == node.BaseId).number).Stage==Enum_WaybillStage.Received) // if (waybase.Stage == Enum_WaybillStage.Received) // { // receiveContinue++; // continue; // } // int no = AddNode(node, waybase); // if (no > 0) // result = true; // else // result = false; // //} // } // } // if (receiveContinue == nodeList.Count) // return true; // } // catch (Exception ex) // { // throw ex; // } // return result; //} public static int AddNode(Model_Waybill_Node nodeList, Model_Waybill_Base baseList) { string sql = "insert into waybill_node (baseId,operateAt,storageId,storageName,content,arrived) values(?baseId,?operateAt,?storageId,?storageName,?content,?arrived) ;"; MySqlParameter[] para = new MySqlParameter[6]; para[0] = new MySqlParameter("baseId", baseList.Id); para[1] = new MySqlParameter("operateAt", nodeList.operateAt); para[2] = new MySqlParameter("storageId", nodeList.StorageId); para[3] = new MySqlParameter("storageName", nodeList.StorageName); para[4] = new MySqlParameter("content", nodeList.Content); para[5] = new MySqlParameter("arrived", nodeList.Arrived); int result = 0; result = _SqlHelp.ExecuteNonQuery(sql, para); if (result > 0) { if (nodeList.Arrived == Enum_Arrived.HaveArrived) { string upsql = "update waybill_base set stage=1 ,signinAt=?signinAt where number=?number ;"; MySqlParameter[] par = new MySqlParameter[2]; par[0] = new MySqlParameter("signinAt", nodeList.operateAt); par[1] = new MySqlParameter("number", baseList.Number); result = _SqlHelp.ExecuteNonQuery(upsql, par); } } return(result); }
/// <summary> /// 冷链数据 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void tsmColdChainData_Click(object sender, EventArgs e) { try { Model_Waybill_Node node = dgvWaybill_Node.SelectedRows[0].Tag as Model_Waybill_Node; //获取开始时间的下面的时间 ResultModelOfArrayOfModel_Waybill_Noded4FqxSXX nodedate = cs.GetWaybillNodeList(node.BaseIdk__BackingField.ToString(), node.operateAtk__BackingField.ToString(), null); if (nodedate.Code != 0) { MessageBox.Show(nodedate.Message); } else { if (nodedate.Data.Length <= 0) { MessageBox.Show("没有下一条物流节点...."); return; } } Model_Waybill_Base waybase = waybill_base; FrmLogisticsNodeSuperView nodesuper = new FrmLogisticsNodeSuperView(); nodesuper.waybase = waybase; nodesuper.node = node; nodesuper.ShowDialog(); } catch (Exception ex) { MessageBox.Show(ex.Message, "error", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
public UCNode(Model_Waybill_Node node) { InitializeComponent(); SetNumber(node.BaseIdk__BackingField); lblOperateAt.Text = node.operateAtk__BackingField.ToString("yyyy-MM-dd HH:mm"); lblNodeContent.Text = node.Contentk__BackingField; }
/// <summary> /// 签收图片 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void tsmSignPicture_Click(object sender, EventArgs e) { Model_Waybill_Base waybase = waybill_base; Model_Waybill_Node node = dgvWaybill_Node.SelectedRows[0].Tag as Model_Waybill_Node; FrmSignPicture sp = new FrmSignPicture(); sp.mwb = waybase; sp.mwn = node; sp.ShowDialog(); }
private void LoadNodeList() { try { btnSearch.Enabled = false; btnCancel.Enabled = false; Cursor.Current = Cursors.WaitCursor; pnlNodeList.Controls.Clear(); Application.DoEvents(); int sum = 0; List <Model_Waybill_Node> list = new List <Model_Waybill_Node>(); DataTable dt = WaybillServer.GetWaitUploadNode(10, out sum); if (dt != null && dt.Rows.Count > 0) { foreach (DataRow row in dt.Rows) { Model_Waybill_Node n = new Model_Waybill_Node(); n.BaseIdk__BackingField = row["ordernumber"].ToString(); n.Contentk__BackingField = row["content"].ToString(); n.Idk__BackingField = Convert.ToInt32(row["id"]); n.operateAtk__BackingField = Convert.ToDateTime(row["operateAt"]); n.StorageIdk__BackingField = Convert.ToInt32(row["storageId"]); n.StorageNamek__BackingField = row["storageName"].ToString(); n.Arrivedk__BackingField = (Enum_Arrived)Enum.ToObject(typeof(Enum_Arrived), Convert.ToInt32(row["Arrived"])); list.Add(n); } } if (list.Count > 0) { for (int i = list.Count - 1; i >= 0; i--) { UCNode c = new UCNode(list[i]); c.Dock = DockStyle.Top; pnlNodeList.Controls.Add(c); } lblInfo.Text = "共" + sum + "条,列表为前10条,点击[刷新]查询"; } else { MessageBox.Show("未查询到待上报的节点!", "操作提示", MessageBoxButtons.OK, MessageBoxIcon.None, MessageBoxDefaultButton.Button1); } } catch (Exception ex) { MessageBox.Show("查询失败:" + ex.Message, "查询失败", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1); } finally { Cursor.Current = Cursors.Default; btnCancel.Enabled = true; btnSearch.Text = "刷新(" + _WaitTime.ToString() + ")"; timer1.Enabled = true; } }
/// <summary> /// 上传节点 /// </summary> private static void UploadNode() { ResultModelOfboolean result = new ResultModelOfboolean(); List <Model_Waybill_Node> list = new List <Model_Waybill_Node>(); string msg = string.Empty; string err = string.Empty; try { DataTable dt = WaybillServer.GetNotUploadNode(Common._MaxUploadNodeCount); if (dt != null && dt.Rows.Count > 0) { foreach (DataRow row in dt.Rows) { Model_Waybill_Node n = new Model_Waybill_Node(); n.BaseIdk__BackingField = row["ordernumber"].ToString(); n.Contentk__BackingField = row["content"].ToString(); n.Idk__BackingField = Convert.ToInt32(row["id"]); n.operateAtk__BackingField = Convert.ToDateTime(row["operateAt"]); n.StorageIdk__BackingField = Convert.ToInt32(row["storageId"]); n.StorageNamek__BackingField = row["storageName"].ToString(); n.Arrivedk__BackingField = (Enum_Arrived)Enum.ToObject(typeof(Enum_Arrived), Convert.ToInt32(row["Arrived"])); list.Add(n); msg = n.BaseIdk__BackingField; } FrmParent.ParentForm.SetNewInfo("正在上报节点" + msg + ",请稍候...", null); result = Common._PdaServer.UploadWaybill_Node(list.ToArray()); } } catch (Exception ex) { err = ex.Message; throw ex; } finally { if (result.Data) { WaybillServer.DeleteUploadSuccessNode(list.Select(l => l.Idk__BackingField.ToString()).ToList()); } else if (string.IsNullOrEmpty(err)) { err = result.Message; } err = err == null ? string.Empty : err; FrmParent.ParentForm.SetNewInfo(string.Format("{0}{1} {2}", (msg.Length == 0 ? "没有待上报的节点." : "上报节点"), msg, (err.Length == 0 ? (msg.Length == 0 ? "" : "成功") : "失败 " + err)), err.Length == 0); } }
/// <summary> /// 添加冷链数据上报进度信息 /// </summary> /// <param name="nodeInfo">节点信息</param> /// <param name="parentStorageId"></param> private static void SaveUploadDataProgress(Model_Waybill_Node nodeInfo, int parentStorageId, bool isFirstNode) { List <string> sqlList = new List <string>(); try { //向上查询 关联节点更新上一个记录的结束时间 string updateParent = string.Format("update uploadDataProgress set endNodeTime = '{0}' where relationId='{1}' and nodeTime<'{0}' and storageId = {2};", nodeInfo.operateAt.ToString("yyyy-MM-dd HH:mm:ss"), nodeInfo.BaseId, parentStorageId); if (nodeInfo.Arrived == Enum_Arrived.HaveArrived) { sqlList.Add(updateParent); } else { //插入新的记录 string insertSql = string.Format("INSERT INTO `uploadDataProgress` ( `relationId`, `storageId`, `storageName`, `nodeParentStorageId`, `nodeTime`, `endNodeTime`, `uploadProgress`, `lastHandleTime`, `handleFlag`) VALUES ( '{0}', '{1}', '{2}', '{3}', '{4}', {5}, '{4}', '{6}','{7}');", nodeInfo.BaseId, nodeInfo.StorageId, nodeInfo.StorageName, parentStorageId, nodeInfo.operateAt.ToString("yyyy-MM-dd HH:mm:ss"), "【ENDNODETIME】", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), 0); //向下查询 关联节点更新当前记录的结束时间 string selectSql = string.Format("select nodeTime from uploadDataProgress where relationId='{0}' and nodeTime>'{1}' and nodeParentStorageId = {2} order by nodeTime LIMIT 1", nodeInfo.BaseId, nodeInfo.operateAt.ToString("yyyy-MM-dd HH:mm:ss"), nodeInfo.StorageId); object objNodeTime = _SqlHelp.ExecuteScalar(selectSql); string endNodeTime = "NULL"; if (objNodeTime != null) { endNodeTime = "'" + Convert.ToDateTime(objNodeTime).ToString("yyyy-MM-dd HH:mm:ss") + "'"; } insertSql = insertSql.Replace("【ENDNODETIME】", endNodeTime); sqlList.Add(insertSql); if (!isFirstNode) { sqlList.Add(updateParent); } } _SqlHelp.ExecuteTranstration(sqlList); } catch (Exception ex) { throw ex; } finally { foreach (string item in sqlList) { LogServer.AddLogText(string.Format("添加上报处理进度:{0}", item), nodeInfo.BaseId); } } }
private void contextMenuStrip1_Opening(object sender, CancelEventArgs e) { ResultModelOfArrayOfModel_Waybill_Noded4FqxSXX count = cs.GetWaybillNodeList(waybill_base.Idk__BackingField.ToString(), null, null); if (count.Data.Count <Model_Waybill_Node>() <= 0) { contextMenuStrip1.Enabled = false; return; } Model_Waybill_Node node = dgvWaybill_Node.SelectedRows[0].Tag as Model_Waybill_Node; if (node.Arrivedk__BackingField == Enum_Arrived.InTransit) { tsmColdChainData.Enabled = true; tsmSignPicture.Enabled = false; } else { tsmColdChainData.Enabled = false; tsmSignPicture.Enabled = true; } }
//显示物流节点信息 public void WaybillNodeLoad() { try { if (waybill_base.Idk__BackingField.ToString() == null) { return; } string pageIndexAndCount = winFormPager1.PageIndex + "." + winFormPager1.PageSize; ResultModelOfArrayOfModel_Waybill_Noded4FqxSXX waybill_node = cs.GetWaybillNodeList(waybill_base.Idk__BackingField.ToString(), null, pageIndexAndCount); ResultModelOfArrayOfModel_Waybill_Noded4FqxSXX count = cs.GetWaybillNodeList(waybill_base.Idk__BackingField.ToString(), null, null); winFormPager1.DrawControl(count.Data.Count <Model_Waybill_Node>()); if (waybill_node.Code != 0) { MessageBox.Show(waybill_node.Message); } else { dgvWaybill_Node.AutoGenerateColumns = false; dgvWaybill_Node.Rows.Clear(); Model_Waybill_Node node = new Model_Waybill_Node(); foreach (Model_Waybill_Node item in waybill_node.Data) { int rowIndex = dgvWaybill_Node.Rows.Add(); dgvWaybill_Node.Rows[rowIndex].Cells[0].Value = item.operateAtk__BackingField.ToString("yyyy-MM-dd HH:mm:ss");; //node.Contentk__BackingField = "【" + item.StorageNamek__BackingField + "】" + item.Contentk__BackingField; node.Contentk__BackingField = item.Contentk__BackingField; dgvWaybill_Node.Rows[rowIndex].Cells[1].Value = node.Contentk__BackingField; dgvWaybill_Node.Rows[rowIndex].Tag = item; } } } catch (Exception ex) { MessageBox.Show(ex.Message, "error", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
public static bool UploadWaybill_Node(Model_Waybill_Node node, int customerId, int?parentStorageId) { bool saveUploadDataProgress = false;//是否保存到冷链数据上报进度表 bool isFirstNode = false; try { if (node != null) { LogServer.AddLogText(string.Format("进入创建运单节点逻辑{0},操作时间{1}", node.BaseId, node.operateAt), node.BaseId); string cwMsg = "(上报节点)NodeNumber=" + node.BaseId + ";Content=" + node.Content + ";CustomerId=" + customerId + ";ParentStorageId=" + (parentStorageId == null ? "无" : parentStorageId.ToString()); Console.WriteLine(cwMsg); LogServer.AddLogText(cwMsg, node.BaseId); if (!string.IsNullOrEmpty(node.BaseId) && node.BaseId.Contains(@"\")) { node.BaseId = node.BaseId.Replace(@"\", "").Replace("/", ""); Console.WriteLine("替换运单号中的斜杠:" + node.BaseId); LogServer.AddLogText("替换运单号中的斜杠:" + node.BaseId, node.BaseId); } } string sql = string.Empty; string number = node.BaseId;//PDA传过来的BaseId就是运单号 //Customer=0为自运单,否则为第三方运单 if (customerId != 0) { //第三方运单需要查询关系表获取转换后的运单号 sql = "select number from huadong_tmsorder_waybillbase where relationid='" + number + "' and customerId=" + customerId; number = _SqlHelp.ExecuteScalar <string>(sql); LogServer.AddLogText(string.Format("第三方运单需要查询关系表获取转换后的运单号{0},结果:{1}", sql, number), node.BaseId); } else { LogServer.AddLogText("自运单 :", node.BaseId); } Model_Waybill_Base waybillBase = null;//根据运单号获取到BaseId sql = "select * from waybill_base where number = '" + number + "' order by id desc limit 1"; LogServer.AddLogText("查询运单是否存在:" + sql, node.BaseId); waybillBase = _SqlHelp.ExecuteObject <Model_Waybill_Base>(sql); if (waybillBase == null) { string remark = "运单[" + (string.IsNullOrEmpty(number) ? node.BaseId : number) + "]不存在"; remark += "传入的CustomerId=" + customerId; sql = string.Format("insert into unnecessary_node(baseId,operateAt,storageId,storageName,content,arrived,remarks,inserttime,parentStorageId,customerId) values('{0}', '{1}', {2}, '{3}', '{4}', {5}, '{6}','{7}','{8}','{9}');", node.BaseId, node.operateAt.ToString("yyyy-MM-dd HH:mm:ss"), node.StorageId, node.StorageName, node.Content, (int)node.Arrived, remark, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), parentStorageId, customerId); int insertResult = _SqlHelp.ExecuteNonQuery(sql); saveUploadDataProgress = insertResult > 0; LogServer.AddLogText(remark + ":" + sql + " 执行结果:" + insertResult, node.BaseId); return(true);//运单不存在,将存入暂存表 } else { LogServer.AddLogText("当前运单存在,开始添加节点", node.BaseId); } if (waybillBase.BeginAt == node.operateAt) { isFirstNode = true; } //查询该运单已有的所有节点 List <Model_Waybill_Node> base_NodeList = new List <Model_Waybill_Node>(); sql = "select id, convert(baseId, CHAR) as baseId ,operateAt,storageId,storageName,content,arrived from waybill_node where baseId = " + waybillBase.Id; base_NodeList = _SqlHelp.ExecuteObjects <Model_Waybill_Node>(sql); LogServer.AddLogText("查询该运单已有的所有节点:" + sql + ",查询到的节点条数:" + base_NodeList.Count + "", node.BaseId); foreach (Model_Waybill_Node item in base_NodeList) { //存在内容一致,时间一致的节点时丢弃 if (item.operateAt == node.operateAt) { LogServer.AddLogText(string.Format("内容一致,时间一致的节点丢弃;节点ID[{0}] 节点时间[{1}] 节点内容[{2}]", item.Id, item.operateAt.ToString("yyyy-MM-dd HH:mm:ss"), item.Content), node.BaseId); return(true); } if (item.Arrived == Enum_Arrived.HaveArrived) { if (node.Arrived == Enum_Arrived.HaveArrived) //存在运抵节点时,并且当前上报的也是运抵节点则丢弃 { LogServer.AddLogText("已存在运抵节点,当前也是运抵节点,弃之", node.BaseId); return(true); } else if (node.operateAt >= item.operateAt) //存在运抵节点时,当前节点虽然不是运抵节点但是创建时间比运抵时间大的也丢弃 { LogServer.AddLogText("已存在运抵节点,当前节点时间大于运抵节点时间,弃之", node.BaseId); return(true); } } } List <string> sqlList = new List <string>(); sqlList.Add(string.Format("insert into waybill_node (baseId,operateAt,storageId,storageName,content,arrived,parentStorageId,handleFlag,scanNumber,CustomerId,insertTime) values ('{0}', '{1}', '{2}', '{3}', '{4}', '{5}','{6}','{7}','{8}','{9}','{10}');", waybillBase.Id, node.operateAt.ToString("yyyy-MM-dd HH:mm:ss"), node.StorageId, node.StorageName.Replace("[默认]", ""), node.Content, (int)node.Arrived, (parentStorageId == null?-1:parentStorageId), (parentStorageId == null ? -1 : (customerId == 0 ? -1 : 0)), node.BaseId, customerId, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"))); if (node.Arrived == Enum_Arrived.HaveArrived) { sqlList.Add(string.Format("update waybill_base set stage=1 ,signinAt='{0}' where number='{1}';", node.operateAt.ToString("yyyy-MM-dd HH:mm:ss"), number)); //运抵时更新此单的上报优先级(第三方运单) //if (customerId != 0) // sqlList.Add(string.Format("update huadong_tmsorder_waybillbase set handleCount = null,handleLastTime=now() where number = '{0}';", number)); } foreach (string item in sqlList) { LogServer.AddLogText(string.Format("添加节点:{0}", item), node.BaseId); } bool result = _SqlHelp.ExecuteTranstration(sqlList); LogServer.AddLogText("添加结果:" + result.ToString(), node.BaseId); saveUploadDataProgress = result; return(result); } catch (Exception ex) { LogServer.AddLogText("添加节点失败:" + ex.Message, node.BaseId); throw ex; } finally { try { if (customerId != 0 && parentStorageId != null && saveUploadDataProgress) { SaveUploadDataProgress(node, (int)parentStorageId, isFirstNode); } } catch (Exception ex) { LogServer.AddLogText("添加冷链数据上报进度失败,但未影响该节点上报:" + ex.Message, node.BaseId); } } }