当前位置: 首页 > news >正文

重庆高端网站建设外贸快车

重庆高端网站建设,外贸快车,辽宁省人民政府大楼,永嘉移动网站建设公司您好,我是掘金者说,最近有点累主要是没有休息好,直接请年假一天在家睡了一天一夜补眠。然后,假期回老家挖笋顺便和姚总监再聊工作上的事情。上回写的是业务功能的对账,现在来讲下在做业务功能“门面”,系统…

您好,我是掘金者说,最近有点累主要是没有休息好,直接请年假一天在家睡了一天一夜补眠。然后,假期回老家挖笋顺便和姚总监再聊工作上的事情。上回写的是业务功能的对账,现在来讲下在做业务功能“门面”,系统平台的登录后的首页展示,几乎都是报表、统计、圆饼图、柱状图。采用微服务前后端分离,后端spring cloud,前端使用vue+element ui+echart,前后端都是一个人进行弄。原型图改了第一版,后来又改了一版本,功能又确认了…里面不弄不知道,细碎的东西可真多。前端页面绘制,后端接口编写,数据库语句编写,单元调试…

什么是业务

通俗的讲,业务就是需要处理的各种事务,但是通常偏向指客户实际作业涉及的事务,业务最终的目的是完成工作所做的所有事务。

业务和技术的关系

软件是用来解决现实世界中的业务给人们的工作带来便利的。技术是为了解决业务的问题,只有在实现业务给人们带来便利的前提下,技术的存在才有意义。所以,多数时候是业务决定技术,业务统领技术。没有技术,业务就无法被虚拟化,生产效率就很难有效提升,业务和技术具有相互促进、相互依赖、相互共存的关系。我们都看过周星驰的电影《喜剧之王》有一句台词这么说的:其实,我是一个演员。作为我们来说:其实,我是一个程序员。 一个道理。我们回到开发者身上来看,写业务代码多一些,还是所谓的技术代码多一些,没有高低之分,只有个人取向和组织分工的不同。

业务和因解决业务而衍生的

很多开发者会用不同的眼光来看待业务和技术,比如把增删改查(CRUD)看作是无意义的业务代码(其实,可以使用代码生成器,来实现前端+后端+数据库脚本生成,具体可以参考pig4cloud,把实现 MQ 或 Redis 这样的框架看作是有技术含量的事情。实际上,所谓的业务代码和技术代码只是距离远近,业务代码距离业务更近,技术代码离业务稍远,他们最终都是指向业务实现的。每一层技术实现都是服务于上一层的需求为业务。现实中,业务在被我们虚拟化的过程中,会在技术实现角度引发分层,产生组件模块化。这样让开发者觉得技术实现越来越业务没有技术含金量?面试的时候被问道多线程、高可用、高并发、高性能、某实现原理和机制、遇到难点和解决方法思路等等,导致概括能力和实战运用退化,这个需要平时多训练和琢磨。 当我们越是接近用户业务,会发现里面的细节越多,繁琐度越高,越不容易做的好,越容易遐思而被否定,让人觉得自己的劳动没有价值。遐思性越强,变化几率越高,来来回回频繁的修改代码,正所谓:牵一发,动全身。让人觉得自己的掌控能力低,实现的代码可迁移性越差,个人的劳动成果被能力复用的概率越低。

好了,这些话不是我想多说的,我摊牌了,具体想看直接知乎对开发来讲,业务重要还是技术重要 。现在,讲述一个首页“门面”代码实现记录。

数据统计补全机制

Java核心逻辑,数据统计根据按时/天/周/月/年补全某一段时间的数据。情况是这样的,数据库查询的数据统计,使用sql语句查询group by create_time之后有部分时间的数据没有,希望通过补充0提供给前端展示。

按年补全数据-具体逻辑

	/*** 按年补全数据-具体逻辑** @param oldList* @param start* @param end* @return*/public static List<Map<String, String>> addYearForNullMap(List<Map<String, String>> oldList, String start, String end) {int n = getYearSub(start, end) + 1;ArrayList<Map<String, String>> newList = new ArrayList<>();int num = oldList.size();int temp = 0;Date startDate = DateUtil.parse(start, "yyyy");Date endDate = DateUtil.parse(end, "yyyy");Date tmpDate = null;if (startDate == null || endDate == null) {return newList;}for (int i = 0; i < n; i++) {if (temp < num) {String orderTime = ObjectUtil.toString(oldList.get(temp).get("orderTime"));tmpDate = DateUtil.parse(orderTime, "yyyy");//如果开始日期小于当前记录日期则增加空白数据if (startDate.compareTo(tmpDate) < 0) {Map<String, String> result = getNewStatisticResultMap(start);newList.add(result);}if (startDate.compareTo(tmpDate) == 0) {//原数据加入newList.add(oldList.get(temp));temp++;}} else if (temp >= num && startDate.compareTo(endDate) <= 0) {//加入空数据直到结束时间Map<String, String> result = getNewStatisticResultMap(start);newList.add(result);}//开始时间向前加一年startDate = addDateOneYear(startDate);start = DateUtil.format(startDate, "yyyy");}return newList;}

按日补全数据-具体逻辑

	/*** 按日补全数据-具体逻辑** @param oldList* @param start* @param end* @return*/public static List<Map<String, String>> addDayForNullMap(List<Map<String, String>> oldList, String start, String end) {long n = getDaySub(start, end) + 1;ArrayList<Map<String, String>> newList = new ArrayList<>();int num = oldList.size();int temp = 0;Date startDate = DateUtil.parse(start, "yyyy-MM-dd");Date endDate = DateUtil.parse(end, "yyyy-MM-dd");Date tmpDate = null;if (startDate == null || endDate == null) {return newList;}for (int i = 0; i < n; i++) {if (temp < num) {tmpDate = stringToDate(ObjectUtil.toString(oldList.get(temp).get("orderTime")), "yyyy-MM-dd");//如果开始日期小于当前记录日期则增加空白数据if (startDate.compareTo(tmpDate) < 0) {Map<String, String> result = getNewStatisticResultMap(start);newList.add(result);}if (startDate.compareTo(tmpDate) == 0) {//原数据加入newList.add(oldList.get(temp));temp++;}} else if (temp >= num && startDate.compareTo(endDate) <= 0) {//加入空数据直到结束时间Map<String, String> result = getNewStatisticResultMap(start);newList.add(result);}//开始时间向前加一天startDate = addDateOneDay(startDate);start = DateUtil.format(startDate, "yyyy-MM-dd");}return newList;}

或者

	/*** 按日补全数据-具体逻辑** @param oldList* @param start* @param end* @return*/public static List<StatisticResult> addDayForNull(List<StatisticResult> oldList, String start, String end) {long n = getDaySub(start, end) + 1;ArrayList<StatisticResult> newList = new ArrayList<>();int num = oldList.size();int temp = 0;Date startDate = DateUtil.parse(start, "yyyy-MM-dd");Date endDate = DateUtil.parse(end, "yyyy-MM-dd");Date tmpDate = null;if (startDate == null || endDate == null) {return newList;}StatisticResult dog = null;SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");for (int i = 0; i < n; i++) {if (temp < num) {tmpDate = DateUtil.parse(ObjectUtil.toString(oldList.get(temp).getTime()), "yyyy-MM-dd");//如果开始日期小于当前记录日期则增加空白数据if (startDate.compareTo(tmpDate) < 0) {StatisticResult result = getNewStatisticResult(start);newList.add(result);}if (startDate.compareTo(tmpDate) == 0) {//原数据加入newList.add(oldList.get(temp));temp++;}} else if (temp >= num && startDate.compareTo(endDate) <= 0) {//加入空数据直到结束时间StatisticResult result = getNewStatisticResult(start);newList.add(result);}//开始时间向前加一天startDate = addDateOneDay(startDate);start = DateUtil.format(startDate, "yyyy-MM-dd");}return newList;}

根据开始与结束日期获取相减得到的天数

	/*** 根据开始与结束日期获取相减得到的天数** @param beginDateStr* @param endDateStr* @return*/public static long getDaySub(String beginDateStr, String endDateStr) {long day = 0;SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");Date beginDate;Date endDate;try {beginDate = format.parse(beginDateStr);endDate = format.parse(endDateStr);day = (endDate.getTime() - beginDate.getTime()) / (24 * 60 * 60 * 1000);} catch (ParseException e) {e.printStackTrace();}return day;}

根据开始与结束日期获取相减得到的年数

	/*** 根据开始与结束日期获取相减得到的年数** @param beginDateStr* @param endDateStr* @return*/public static int getYearSub(String beginDateStr, String endDateStr) {int year = 0;SimpleDateFormat format = new SimpleDateFormat("yyyy");Date beginDate, endDate;try {beginDate = format.parse(beginDateStr);endDate = format.parse(endDateStr);Calendar calendarBegin = new GregorianCalendar();Calendar calendarEnd = new GregorianCalendar();calendarBegin.setTime(beginDate);calendarEnd.setTime(endDate);int yearBegin = calendarBegin.get(Calendar.YEAR);int yearEnd = calendarEnd.get(Calendar.YEAR);year = (yearEnd - yearBegin) ;} catch (ParseException e) {e.printStackTrace();}return year;}

单元测试

        @Testpublic void addMonthsForNull() {List<StatisticResult> oldList = new ArrayList<>();StatisticResult st1 = new StatisticResult();StatisticResult st2 = new StatisticResult();st1.setAction("55");st1.setTime("2020-01-02");st2.setAction("66");st2.setTime("2020-01-03");oldList.add(st1);oldList.add(st2);String start = "2020-01-01";String end = "2020-01-05";TheFirstStatisticsUtil tt = new TheFirstStatisticsUtil();List<StatisticResult> list = tt.addDayForNull(oldList, start, end);for (StatisticResult sr : list) {System.out.println(sr.toString());}}

效果展示

StatisticResult(time=2020-01-01, action=0)
StatisticResult(time=2020-01-02, action=55)
StatisticResult(time=2020-01-03, action=66)
StatisticResult(time=2020-01-04, action=0)
StatisticResult(time=2020-01-05, action=0)

下一篇,介绍前端vue编写的技巧方式,现在就写到这吧。

http://www.dinnco.com/news/861.html

相关文章:

  • 网站制作如何做衡阳有实力seo优化
  • 前端和网站部署做网站的seo优化自学
  • 做网站第一次见客户佛山百度seo代理
  • 石家庄市住房和城乡建设局官方网站网络营销知名企业
  • 做网站图片太大好吗百度竞价推广运营
  • wordpress农业站模板软文范文大全
  • 设计网站案例网站电商网络推广是什么
  • 上海人才网官网入口查询惠州关键词排名优化
  • 网页设计接单网站百度推广客服电话人工服务
  • 沧州网站建设代理价格百度权重网站排名
  • 那个网站推作者最近的疫情情况最新消息
  • linux系统怎么做网站百度知道怎么赚钱
  • 万网网站空间多少钱一年企业产品营销策划推广
  • 政府网站 公安局备案谷歌浏览器安卓下载
  • 小面网站建设免费网站统计代码
  • 深圳企业网站建设公司百度权重怎么看
  • 曲靖网站建设产品运营方案
  • 网站页面设计公司seo快速优化软件
  • 小微企业注册流程及费用郑州seo实战培训
  • 公司网站如何维护口碑营销5t理论
  • 南宁公司网站建设什么平台引流最快
  • 加强廉政教育网站建设免费网络营销平台
  • 做音乐网站代码建站系统主要包括
  • 公司做网站排名推广网页怎么做的
  • 没固定ip怎么做网站当日网站收录查询统计
  • wordpress面包屑seo研究中心论坛
  • 潍坊网站建设建站广州新塘网站seo优化
  • 南京市环保局官方南京做网站销售crm客户管理系统
  • 简单的网站开发商品推广软文写作500字
  • 做线下活动的网站百度识图网页版入口