Example #1
0
        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);
        }
Example #2
0
        //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);
     }
 }
Example #4
0
        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();
        }
Example #6
0
        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;
            }
        }
Example #7
0
        /// <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);
            }
        }
Example #8
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);
            }
        }
Example #11
0
        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);
                }
            }
        }