diff --git a/java/.DS_Store b/java/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6 Binary files /dev/null and b/java/.DS_Store differ diff --git a/java/DemoController.java b/java/DemoController.java new file mode 100644 index 0000000000000000000000000000000000000000..f65118c11270dfb8a9ca957387c5027f15b6d4c0 --- /dev/null +++ b/java/DemoController.java @@ -0,0 +1,64 @@ +package com.demo.controller; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; + +/** + * 三年前接手的一个政府网站项目,真假不知,据说是一个两年web开发经验的程序员写的, 用的spring系列还是3.x版本,前端还是jsp,可能是老项目。 + * 主要特点是:实体类中不写注释,数据库表中也没有注释,命名经常使用英文拼音混合,而且还可能是简写(grzlChangeStatus:个人资料变更状态) + * + * 挖坑不填坑,菊花塞电灯 + */ +@Controller +public class DemoController { + /** + * 这个方法一共有800多行,有30多个if或else if的条件判断,只写代表性的几个 + * + * 具体方法名称记不得,逻辑是这样,前端jsp提交一个请求过来,界面中除了一些必填信息外,还有有5个下拉框,后台判断各种组合, + * 分别往request里面塞入不同的对象,返回的页面视图也可能不同。 + */ + @RequestMapping("/submit") + public String template(HttpServletRequest request, HttpServletResponse response, HttpSession session) { + String param1 = request.getParameter("param1"); + String param2 = request.getParameter("param2"); + String param3 = request.getParameter("param3"); + String param4 = request.getParameter("param4"); + String param5 = request.getParameter("param5"); + // 你没看错,各种状态全部存字串,而且判断的时候不考虑空指针问题 + if (param1.equals("已消毒")) { + // 逻辑 + request.setAttribute("attr", "value"); + return "jsp1"; + } else if (param1.equals("已消毒") && param2.equals("1.8米以上")) { + // 逻辑 + request.setAttribute("attr", "value"); + // 你没看错,可能又是另一个视图 + return "jsp2"; + // 你没看错,还可能出现多个条件,|| 和 && + } else if (param1.equals("已消毒") && param2.equals("2米以上") || param3.equals("缅甸")) { + // 逻辑 + request.setAttribute("attr", "value"); + return "jsp3"; + // 你没看错,因为他的状态或选项没有用数字类型,所以不能用 > < 之类的来判断,要列举所有状态 + } else if (param1.equals("未进站") || param1.equals("已进站") || param1.equals("已消毒") && param2.equals("2米以上")) { + request.setAttribute("attr", "value"); + return "jsp3"; + //你没看错,还会出现 true==true 或false==false这样的代码 + }else if(param4.equals("禁止入境")==true && param5.equals("农用车")) { + request.setAttribute("attr", "value"); + return "jsp4"; + //你没看错,还会出现逻辑非,而且,要先判断什么条件,从来不用括号包起来,要理他的逻辑,还要先理条件判断优先级 + }else if(param1.equals("未进站") || param1.equals("已进站") || param1.equals("已消毒") && param2.equals("2米以上") && !param3.equals("缅甸")) { + request.setAttribute("attr", "value"); + return "jsp5"; + } + //省略剩下的30多个类似的判断 + else { + return "default"; + } + } +} diff --git a/java/FeeServiceImpl.java b/java/FeeServiceImpl.java new file mode 100644 index 0000000000000000000000000000000000000000..86b53202f958c765ae6b5f6bb3d27b67f3a731bb --- /dev/null +++ b/java/FeeServiceImpl.java @@ -0,0 +1,45 @@ +package com.demo.service.impl; + +import java.util.List; + +import javax.sound.sampled.Line; + +import com.demo.service.IFeeService; + +/** + * 两年多工作经验的妹子写的代码 需求:物流公司会找各收货点,然后各收货点有不同线路的车辆,每个线路每天发多个班次的车, + * 每个班次会带几件货物,每件货物都有服务费,查询某一天一共需要支付多少服务费 + */ +public class FeeServiceImpl implements IFeeService { + + /** + * 方法名和变量名类名都是我乱命名的,英文不行,当时用的是mybatis, 当时钱就是用float类型 + */ + @Override + public Float calcServiceFee() { + float fee = 0; + // 操作数据库,查询所有收货站点,不多,20个左右 + List stations = stationDao.findAll(); + // 遍历所有收货点 + for (Station station : stations) { + // 操作数据库 查询出每个收货站点有多少条路线,平均80条路线 + List lines = lineDao.findByStation(station); + // 遍历所有路线 + for (Line line : lines) { + // 操作数据库,查询出每条线路当天有几个班次,多的情况是30分钟一个班次,少的情况一天1至2个班次,算上加班车,平均一天13个班次 + List vehicles = vehicleDao.findByLineAndTime(); + // 遍历所有班次 + for (Vehicle vehicle : vehicles) { + // 操作数据库,查询每个班次带了几件货物,每件货物都是一条记录,平均每个班次带30件左右 + List goodsList = goodsDao.findByVehicle(); + // 遍历所有货物记录 + for (Goods goods : goodsList) { + fee += goods.fee; + } + } + } + } + return fee; + } + +}