基于EasyUI的Web应用程序及过去一年的总结

前言

  一个多月之前已经提交了离职申请,好在领导都已经批准了,过几天就办理手续了,在此感谢领导的栽培与挽留,感谢各位同事在工作中的给我的帮助,离开这个团队确实有一些不舍,不为别的,只因为这个团队的气氛特别好、同事之间相处融洽、没有那么多的勾心斗角,所以干活儿也干的有劲,上班的时候可以使用网络、可以上QQ、可以上各种论坛、可以看新闻等等,我个人很喜欢这种工作方式,作为一个IT人员,如果闭门造车的话,那导致的后果就是被淘汰;新技术的不断出现,如果不自己多查阅资料多泡论坛来学习的话,难道每出现一个新技术都去花钱找培训机构来学习吗?正因为有这种工作环境,所以在过去一年中我学到了很多知识,有的是通过互联网学习到的、有的是通过同事学习到的, 不管通过什么方式学到的,学到了就是自己的了,总有用的上的地方.

过去一年的总结

   在过去一年的时间里,跟着现在这家公司(简称B公司)的领导和同事学到很多东西,我觉得在这一年中主要是从技术与沟通方面得到了提高:

1.技术方面

  1.1之前一直做客户端的开发,所以对那些脚本语言用的比较少,在这里加深了JQuery,JS的使用。

  1.2对Ajax的异步使用多了一些了解。

  1.3学会了如何使用SQL监控,学会了一些优化SQL语句的方法,当然这都是在实际项目中积累的经验,比较宝贵。

  1.4学会了使用客户端与网页端的互相调用、嵌套来开发应用系统。

  1.5了解了跨域请求的处理方法。

2.沟通方面

  2.1搞IT的其实是一个服务角色,所以与用户沟通的时候要找到自己的定位。

  2.2不管用户的要求是否合理,沟通的时候都不要充满火药味儿。

  2.3互相尊重很重要,尊重对方也会使对方尊重自己。

为什么离

  来到B公司之前,在一家上市集团公司(简称A公司)做公司内部的应用系统开发,整整服务了3年,到目前为止,离开A公司已经一年十个月了,在这期间跟之前的领导一直还是有联系,在我进入到B公司之后,之前A公司的领导找到了我,叫我利用业余时间帮忙开发一套应用系统,我听了二话没说就答应了,为什么这么爽快呢?有如下几个原因:

1.当时我离开的比较匆忙,可能交接的不是那么仔细,这一点我一直觉得过意不去。

2.在我离开A公司的前一天,也就是周四(因为领导是HK那边的,每周四下午都会回去HK),领导去到我办公的地方对我说:“xxx,那我走了...”,后面的我就没听清楚了,因为当时有点受宠若惊的感觉,他一个高级领导,完全可以不用把我这个小喽啰当回事儿的,就算是打招呼也应该是我去给他打招呼才对,这个事情让我一直心存感激,我觉得在当时来说他很给我面子了。

3.在给我办离职事宜上,很多细节方面领导都为我考虑到了,比如说我离开的突然,按照人事部要求的话时间达不到,提前离开的话需要扣工资,但是他给我把签批日期提前了,虽然是一些小事情,但是让人心里暖暖的。

上面貌似扯了很多废话,言归正传,我的原意是在我能力范围内免费帮忙开发,因为我本身是搞这一行的,技术不是问题,就是多花点时间而已,但是项目完成之后领导还是给了我意想不到的报酬,在这里要感谢一下他们的照顾,当然这个项目也是几经波折才完成,毕竟我是业余的,不在同一个地方,沟通很不方便(说实话,通过这一次我也学到了很多)。

  在这期间,领导跟我谈话几次,目的是希望我能回去工作;因为之前有很多项目都是我跟进的,领导可能是考虑到我比较熟悉一点吧,我考虑了很久,最终还是答应了,所以才向B公司这边提出离开的要求;说实话,在这之前我从没想过我还会回去,真的没想到,真的是世事难料...

回去之后的工作目标

1.尽量统一开发语言,之前的项目存在多种开发语言,比如VB6,C++,VFP,ASP,Delphi,C#,至今还有DOS操作系统的程序,何必呢?难道要我精通各种开发语言吗?或者说一门开发语言找一个对应的开发者吗?该砍的砍、该升级的升级,升级的话也包括硬件也需要适当的升级,好的应用系统必须有好的硬件支持,不然不管是谁都玩不下去。

2.后续的项目以Web结构为主,便于更新;客户端为辅,涉及到跟硬件通信的功能采用客户端与Web结合来完成。

3.将众多的小程序集成到一个框架中,不要搞的那么分散(目前存在很多的小程序、小补丁),不要再不停的“打补丁”。

4.搭建一个好的源代码管理平台,不管是TFS还是SVN都可以,确保源代码安全管理。 

最近一个Web应用程序

  我这个人就是这样,看见别人好的东西就想学习过来,刚来到B公司的时候,看见公司用的很多功能都比较高大上,我的学习方法是这样的:先了解这些高大上的功能是如何实现的,不懂就请教前辈,这里又得感谢一下我的师傅了,感谢他不吝赐教、悉心指导;了解之后就自己创建一个项目试着搞一个Demo出来,在这个过程中遇到不懂的就再次请教别人,直到自己搞懂为止,那么到了这个时候这东西已经“属于”我自己的了,我已经装进脑袋里面去了,所以从进入B公司开始我就没有停止过学习。不管学到什么知识,一定要运用起来才行,只有在实际项目中才能学到更多、才能找出自己的不足,所以下面的项目就是我刚进入B公司就开始着手开发的,借鉴了一些前辈们的东西,但不是直接COPY,只有图片和CSS样式是用的原来的,因为本人美工技术实在太差,想PS出来一个LOGO图片就搞了很多次,PS出来的结果连自己看着就不爽,所以就不强求了,引用了之前的一些图片和样式,这里值得说明的是:现有公司的项目和数据库结构我们开发人员都有,这也是领导批准的,因为我们有时候会在家里办公,所以会将数据库结构和程序复制在本地以便创建真实的开发环境和调试环境。

  除了图片以外其它的我都按照我自己的设计开发的,包括数据库设计和项目架构设计,后续我会抽时间将这个项目继续完善,主要是针对制造行业,现在只有几个基础的功能,也可以说是制造行业里面基本上都会用到的几个功能,比如条码管控与打印之类的,根据实际的需求可以灵活扩展,以下是部分截图:

 

 

 

 

 

描述:

  条码规则就是用来控制条码的格式,对于现在的工厂来说,条码化管控是最常见的,那么不同的产品有不同的条码格式要求,每一个客户也都有自己的特殊要求,所以这个条码规则也是非常重要的,在这之前我的做法如下:

  在数据库中根据当前年月日+流水号来自动生成,这样本来也能解决问题,但是如果需要扩展的时候就歇菜了,只要客户要求条码格式稍微改变一下格式,那么我们需要改变的东西是相当的多,甚至可能因此带来很多严重的问题,因为格式已经固定不能灵活变更,所以几乎没有扩展的可能性。

  鉴于此,现在的做法如下:

  定义一个条码规则,包含条码的计算进制、需要屏蔽的字母或字符、条码前缀、条码后缀、条码总长度、流水号长度等等参数,在生成条码的时候选择此规则即可,如果有新的格式要求,那只需要针对新的格式要求新增一个条码规则即可,对原有的数据结构完全没有影响,灵活多变、扩展容易! 

 

描述:  

  生成条码属于一个比较关键的功能,有时候数据量可能比较大,例如某一个工单的数量是20000,那也就是说用户生成条码的时候一次性就要在数据库产生20000笔记录,根据我个人的经验来说,这种事物不能直接交由用户来操作,防止数据库被拖死;我的做法是不管用户提交多少数量,在服务器中将用户提交的请求保存起来,服务器定时去处理这些请求,每次按照时间排序处理最先提交的一笔请求,如果用户的请求中出现不合法的数据,则服务器直接将该请求驳回并通知到用户,反之则完成相关的操作,这样一来可以避免用户直接操作大量的数据而导致系统变得缓慢或者数据库出现死锁之类的问题。

 

描述:

  工艺路线方面这里值得说一下,采用了gooflow设计,当然gooflow只有UI部分,后台都是另外设计的。

  支持多节点工艺路线,这里需要设置条件,例如:当前我们前面有两条路,路线A通向北京,路线B通向上海,我们现在站在路口选择具体走哪一条路?这个时候就需要条件了,我们现在的目的是去北京看故宫,那很显然已经匹配到了条件,说明我们应该走路线A;系统会根据具体的情况来寻找应该走哪一条线,这个逻辑比较复杂。

 

 描述:

动态报表,可以根据不同的条件动态生成控件,实现查询功能,这样可以省掉很多的报表,简单的查询功能用这个足以。

  

描述:

  维修功能其实是一个比较复杂的业务,根据不同的维修动作而产生不同的数据结构,比如说维修动作中包含“简单维修”,“更换物料”,“报废”等选项,像简单维修就比较容易处理,只需按照正常的工艺路线操作并记录修理过程即可,但是更换物料就不一样了,需要记录更换了什么物料?原始料号是什么?更换上去的料号是什么?包括Vendor,DateCode等信息;一般生产管理的应用系统中,客户都会要求有详细的维修记录和报表,这是一个重点。

描述:

  以下都是调用Api实现的,具体的逻辑都在Api里面实现,Api采用工厂模式设计,根据不同的需求产生不同的数据结构,这些页面没有写一句后台代码,全是脚本。

 

描述:

  在开发过程中,会涉及到很多的错误信息,既有存储过程中的也有程序里面的,之前我的做法是直接将报错的存储过程名称写在错误信息后面,这样一看就知道是哪一个存储过程抛出的错误,直接就可以进行错误定位,但是发现一个问题,存储过程的名称字符串长度无法统一,导致页面布局不好控制;鉴于此,我统一用ErrorCode来代替错误信息,针对用户来说,用户并不需要知道是哪个地方报错,系统管理员或者开发人员根据ErrorCode对照表也能快速定位问题点,如此可以解决由于错误信息长度不统一而导致的页面布局问题,ErrorCode对照表如下图所示:

 以上都是介绍了部分Web中的功能,整个项目还有一部分是客户端,客户端其实比较好理解,主要是在客户端调用了Web程序,客户端主窗体代码如下,当然只是部分代码,根据实际情况可以另行增加。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Security.Permissions;namespace MES
{[PermissionSet(SecurityAction.Demand, Name = "FullTrust")][System.Runtime.InteropServices.ComVisibleAttribute(true)]public partial class FrmMain : Form{public FrmMain(){InitializeComponent();}public WebBrowser Browser { get { return this.webBrowser1; } }private void FrmMain_Load(object sender, EventArgs e){string ConfigPath = Application.StartupPath + "\\config.ini";if (!System.IO.File.Exists(ConfigPath)){MessageBox.Show("缺少配置文件,系统无法启动,请联系管理员!", "温馨提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);Application.Exit();GC.Collect();return;}MES.Common.Global.ApiUrl = MES.Common.IniHelper.GetConfigValue("ApiUrl");MES.Common.Global.serverPath = MES.Common.IniHelper.GetConfigValue("ServerPath");webBrowser1.ObjectForScripting = this;webBrowser1.Navigate(MES.Common.Global.serverPath);}public void Print_ZPL(string Content){System.Drawing.Printing.PrintDocument p = new System.Drawing.Printing.PrintDocument();string DefaultPrint = p.PrinterSettings.DefaultPageSettings.PrinterSettings.PrinterName;MES.Common.PrintHelper.PrintLabel(DefaultPrint, Content);}private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e){webBrowser1.ScriptErrorsSuppressed = true; //禁用脚本调试,屏蔽脚本错误提示框
        }/// <summary>/// 获取称重机的重量/// </summary>/// <param name="Com">通信COM口</param>/// <param name="CheckCount">循环次数</param>/// <returns></returns>public string  GetWeigh(string Com,int CheckCount) {return  MES.Common.WeighHelper.GetWeighData(Com, CheckCount);}/// <summary>/// 获取本地计算机上面的COM列表/// </summary>/// <returns></returns>public string GetComList() {string str = "";List<string> list= MES.Common.WeighHelper.GetComList();for (int i = 0; i < list.Count; i++){str += list[i].ToString() + ",";}return str;}}
}

 

至于如何回调客户端的函数,可以参考这篇文章:理解JavaScript回调函数 

 

如果您觉得文章还过得去,请帮忙顶一下,您的支持是我进步的动力,谢谢!!

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/276436.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

快速使用Vue3最新的15个常用API

之前我写了一篇博客介绍了Vue3的新特性&#xff0c;简单了解了一下Vue3都有哪些特色&#xff0c;并且在文末带大家稍微体验了一下Vue3中 Compsition API 的简单使用上一篇文章地址&#xff1a;紧跟尤大的脚步提前体验Vue3新特性&#xff0c;你不会还没了解过Vue3吧因为这个月的…

超级马里奥代码_任天堂的源码泄露,揭示超级马里奥的前世之生

被黑客盯上的任天堂任天堂遭到了史上最大规模的黑客攻击&#xff0c;Wii 完整源码、设计以及《宝可梦》多部作品的信息遭到泄露&#xff0c;而此次泄露事件的后续影响似乎也爆发了出来。《马里奥赛车》和《超级马里奥世界2》(耀西岛)的早期原型视频&#xff0c;以及《超级马里奥…

漫画 | 前端发展史的江湖恩怨情仇

时间总是过得很快&#xff0c; 似乎快得让人忘记了昨天&#xff0c;前端WEB领域的发展更是如此&#xff0c;转眼间已是近30年&#xff0c;时光荏苒&#xff0c;初心不变&#xff0c;在一代又一代前端人的努力下&#xff0c;前端已经是互联网不可或缺的一部分。然而很多前端打工…

10 个你可能还不知道 VS Code 使用技巧

经常帮一些同学 One-on-One 地解决问题&#xff0c;在看部分同学使用 VS Code 的时候&#xff0c;有些蹩脚&#xff0c;实际上一些有用的技巧能够提高我们的日常工作效率。NO.1一、重构代码VS Code 提供了一些快速重构代码的操作&#xff0c;例如&#xff1a;将一整段代码提取为…

构建安全的Xml Web Service系列之如何察看SoapMessage

上一篇文章地址&#xff1a;构建安全的Xml Web Service系列一之初探使用Soap头 (5-22 12:53) 要分析Xml Web Service的安全性&#xff0c;首先要解决的问题是我们能了解和清楚Soap消息的格式和内容&#xff0c;如果获得不了SoapMessage&#xff0c;分析如何能构建安全Xml w…

前端高效开发必备的 js 库梳理

之前有很多人问学好前端需要学习哪些 js 库, 主流框架应该学 vue 还是 react ? 针对这些问题, 笔者来说说自己的看法和学习总结.首先我觉得在学习任何知识之前必须要有一个明确的学习目标, 知道自己为什么要学它, 而不是看网上说的一股脑的给你灌输各种知识, 让你学习各种库, …

交叉报表crosstab隐藏列名显示_SAP软件 报表查询之 输出格式设置

SAP不仅是功能强大、逻辑严谨的ERP软件&#xff0c;还提供了强大的报表查询功能。SAP的ALV报表展示功能是SAP的一大特点&#xff0c;实现了类似于EXCEL的功能。使用好ALV报表功能可以方便用户从SAP中取到想要的数据&#xff0c;尤其是财务用户。大家在使用SAP报表时&#xff0c…

seo每日一贴_白杨SEO:我看ZAC的外贸SEO应该怎样做?(策略篇)

前言&#xff1a;这是白杨SEO公众号更新第64篇。本该写写头条SEO啥的&#xff0c;最近在师徒培训讲站内SEO时有旁听同学提到后面讲讲谷歌SEO怎么样&#xff0c;因为谷歌全世界搜索市场占有率&#xff0c;所以外贸SEO最主要还是做谷歌SEO。以白杨特意又去了前辈ZAC的SEO每日一贴…

[转]网页栅格系统研究(2):蛋糕的切法

[出自]http://lifesinger.org/blog/2008/10/grid-system-2/首先澄清一个应用场景问题。研究&#xff08;1&#xff09;中指出&#xff0c;对于结构复杂的网站&#xff0c;不少设计师们喜欢采用960固定宽度布局。但要注意的是&#xff0c;960并不是万能钥匙&#xff0c;大部分网…

Vue3响应式原理

关注若川视野&#xff0c;回复"pdf" 领取资料&#xff0c;回复"加群"&#xff0c;可加群长期交流学习本文结构- 关于Vue3- Vue2响应式原理回顾- Vue3响应式方案- Vue3响应式原理- 手写mini版Vue3响应式本文共计&#xff1a;2349字2图预计阅读时间&#xff…

找准切入点,调试看源码,事半功倍

关注若川视野&#xff0c;回复"pdf" 领取资料&#xff0c;回复"加群"&#xff0c;可加群长期交流学习最近写了很多源码分析相关的文章&#xff0c;React、Vue 都有&#xff0c;想把我阅读源码的一些心得分享给大家。React&#xff1a;React 架构的演变 - 从…

Android布局大全

Android的界面是有布局和组件协同完成的&#xff0c;布局好比是建筑里的框架&#xff0c;而组件则相当于建筑里的砖瓦。组件按照布局的要求依次排列&#xff0c;就组成了用户所看见的界面。 所有的布局方式都可以归类为ViewGroup的5个类别&#xff0c;即ViewGroup的5个直接子类…

java实现加减乘除运算符随机生成十道题并判断对错_2020年Java面试题(3年的工作总结),最全的知识点总结...

这份Java面试题整整花了三个月的时间来整理&#xff0c;都是自己再工作中总结出来&#xff0c;记住多少就写多少&#xff0c;希望这份资料可以帮助你们&#xff0c;文末有其余部分资料的领取方式.Redis12道面试题1.什么是Redis&#xff1f;答&#xff1a;Remote Dictionary Ser…

.NET 中的泛型 101

1.1.1 摘要 图1 C# 泛型介绍 在接触泛型之前&#xff0c;我们编程一般都是使用具体类型&#xff08;char, int, string等&#xff09;或自定义类型来定义我们变量&#xff0c;如果我们有一个功能很强的接口&#xff0c;而且我们想把它提取或重构成一个通用的接口&#xff0c;使…

年底了,给想进阶的的前端朋友一些福利

2020 年&#xff0c;很多朋友都经历了一段比较艰难的求职季。年末&#xff0c;“就业寒冬”迎来了一丝暖阳&#xff0c;很多中大型互联网公司扩大了未来一年的招聘需求。前不久&#xff0c;字节跳动放出了年末要招 1 万人的消息&#xff0c;腾讯校招规模也将扩张至 5000 人&…

Vue Router 4.0 正式发布!焕然一新。

关注若川视野&#xff0c;回复"pdf" 领取资料&#xff0c;回复"加群"&#xff0c;可加群长期交流学习12月8日&#xff0c;Vue Router 4 正式发布稳定版本。在经历了 14 个 Alpha&#xff0c;13 个 Beta 和 6 个 RC 版本之后&#xff0c;Vue Router v4 闪亮…

实战Nginx与PHP(FastCGI)的安装、配置与优化

转载链接&#xff1a;http://ixdba.blog.51cto.com/2895551/806622 一、什么是 FastCGI FastCGI是一个可伸缩地、高速地在HTTP server和动态脚本语言间通信的接口。多数流行的HTTP server都支持FastCGI&#xff0c;包括Apache、Nginx和lighttpd等&#xff0c;同时&#xff0c;…

10个前端8个用Vue的,怎么才能在面试中出彩?

大家好&#xff0c;我是若川。现在但凡出去面试&#xff0c;面试官几乎必问 Vue3.0 。不仅会问一些核心特性&#xff0c;还会问原理层面的问题。比如&#xff1a;▶框架层面问题&#xff1a;Vue3.0 新特性 Composition API 与 React.js 中 Hooks 的异同点&#xff1f;▶源码、原…

故乡 | 登高望远,夜幕降临

欢迎星标我的公众号若川视野&#xff0c;回复加群&#xff0c;长期交流学习上周末看了几集豆瓣评分8.5分刘同同名小说的青春剧《我在未来等你》&#xff0c;让我回想起自己的高中生活。也想起小时候经常爬到故乡附近的小山&#xff0c;看夕阳西下。时常和同事开玩笑说&#xff…

CentOS5安装Nginx1.4+PHP5.5 FastCGI

转载链接&#xff1a;http://blog.csdn.net/staricqxyz/article/details/17012329 yum -y install gcc gcc-c autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2…