Field 'leaveFormService' may be 'final'
第一第二行不太理解LeaveFormService 这个class我设置的为final,为什么idea有这种提示?
代码哪里有问题,需要如何修改
package com.imooc.oa.controller; import com.alibaba.fastjson.JSON; import com.imooc.oa.entity.LeaveForm; import com.imooc.oa.entity.User; import com.imooc.oa.service.LeaveFormService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import javax.servlet.http.*; import javax.servlet.annotation.*; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.HashMap; import java.util.Map; @WebServlet(name = "LeaveFormServlet", value = "/leave/*") public class LeaveFormServlet extends HttpServlet { private LeaveFormService leaveFormService = new LeaveFormService(); private Logger logger = LoggerFactory.getLogger(LeaveFormServlet.class); @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException { this.doPost(request, response); } @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException { request.setCharacterEncoding("utf-8"); response.setContentType("text/html;charset=utf-8"); // http://localhost/leave/create 获取"create" String uri = request.getRequestURI(); System.out.println(uri); String methodName = uri.substring(uri.lastIndexOf("/")+1); if (methodName.equals("create")){ this.create(request,response); } } private void create(HttpServletRequest request, HttpServletResponse response) throws IOException{ HttpSession session = request.getSession(); User user = (User)session.getAttribute("login_user"); String formType = request.getParameter("formType"); String strStartTime = request.getParameter("startTime"); String strEndTime = request.getParameter("endTime"); String reason = request.getParameter("reason"); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd-HH"); Map<String,String> result = new HashMap<> (); try { LeaveForm leaveForm = new LeaveForm(); leaveForm.setEmployeeId(user.getEmployeeId()); leaveForm.setStartTime(sdf.parse(strStartTime)); leaveForm.setEndTime(sdf.parse(strEndTime)); leaveForm.setFormType(Integer.parseInt(formType)); leaveForm.setReason(reason); leaveForm.setCreateTime(new Date()); leaveFormService.createLeaveForm(leaveForm); result.put("code", "0"); result.put("message", "success"); } catch (Exception e) { logger.error("errorMessage",e.getMessage()); result.put("code", e.getClass().getSimpleName()); result.put("message", e.getMessage()); } String json = JSON.toJSONString(result); response.getWriter().println(json); } }
package com.imooc.oa.service; import com.imooc.oa.dao.EmployeeDao; import com.imooc.oa.dao.LeaveFormDao; import com.imooc.oa.dao.ProcessFlowDao; import com.imooc.oa.entity.Employee; import com.imooc.oa.entity.LeaveForm; import com.imooc.oa.entity.ProcessFlow; import com.imooc.oa.service.exception.BussinessException; import com.imooc.oa.utils.MybatilsUtils; import java.util.Collections; import java.util.Date; import java.util.List; import java.util.stream.Collectors; //Creat a new leaveform and processflow public class LeaveFormService { //return db中包含主键的form对象 前端输入的表单数据 public LeaveForm createLeaveForm(LeaveForm leaveForm){ return (LeaveForm)MybatilsUtils.executeUpdate(sqlSession -> { //持久化leaveForm level<8 -> state = processing level>=8 state = approved EmployeeDao employeeDao = sqlSession.getMapper(EmployeeDao.class); Employee employee = employeeDao.selectByEmployeeId(leaveForm.getEmployeeId()); if(employee.getLevel() ==8){ leaveForm.setState("approved"); }else{ leaveForm.setState("processing"); } //增加一条流程数据,说明表单已提交,状态为complete LeaveFormDao leaveFormDao = sqlSession.getMapper(LeaveFormDao.class); leaveFormDao.insert(leaveForm); ProcessFlowDao processFlowDao = sqlSession.getMapper(ProcessFlowDao.class); ProcessFlow flow1 = new ProcessFlow(); flow1.setFormId(leaveForm.getFormId()); flow1.setOperatorId(employee.getEmployeeId()); flow1.setAction("apply"); flow1.setCreateTime(new Date()); flow1.setOrderNo(1); //设置为第一个节点 flow1.setState("complete"); flow1.setIsLast(0); //不是最后一个节点 processFlowDao.insert(flow1); //level<7 生成部门经理审批processFlow 请假时间>36hrs 需要生成总经理审批任务 if(employee.getLevel()<7) { Employee superiorLeader = employeeDao.selectLeaderByEmployee(employee); ProcessFlow flow2 = new ProcessFlow(); flow2.setFormId(leaveForm.getFormId()); flow2.setOperatorId(superiorLeader.getEmployeeId()); flow2.setAction("audit"); flow2.setCreateTime(new Date()); flow2.setOrderNo(2); flow2.setState("process"); long leaveTime = leaveForm.getEndTime().getTime() - leaveForm.getStartTime().getTime(); float leaveHours = leaveTime / (1000 * 60 * 60) * 1f; // 1s = 1000ms if (leaveHours >= BussinessConstants.MANAGER_AUDIT_HOURS) { flow2.setIsLast(0); processFlowDao.insert(flow2); Employee manager = employeeDao.selectLeaderByEmployee(employee); ProcessFlow flow3 = new ProcessFlow(); flow3.setFormId(leaveForm.getEmployeeId()); flow3.setAction("audit"); flow3.setCreateTime(new Date()); flow3.setState("ready"); flow3.setOrderNo(3); flow3.setIsLast(1); processFlowDao.insert(flow3); } else { //审批时间小于MANAGER_AUDIT_HOURS 直接把流程节点setIsLast=1 设置为完结,并在数据库中插入flow2 flow2.setIsLast(1); processFlowDao.insert(flow2); } //7级员工生成总经理审批任务 } else if (employee.getLevel() == 7) { Employee manager = employeeDao.selectLeaderByEmployee(employee); ProcessFlow flow = new ProcessFlow(); flow.setFormId(leaveForm.getFormId()); flow.setOperatorId(manager.getEmployeeId()); flow.setAction("audit"); flow.setCreateTime(new Date()); flow.setState("process"); flow.setOrderNo(2); flow.setIsLast(1); processFlowDao.insert(flow); //8级员工,生成总经理审批任务,系统自动通过 }else if (employee.getLevel() == 8) { ProcessFlow flow = new ProcessFlow(); flow.setFormId(leaveForm.getFormId()); flow.setOperatorId(employee.getEmployeeId()); flow.setAction("audit"); flow.setReason("Auto passed"); flow.setCreateTime(new Date()); flow.setAuditTime(new Date()); flow.setState("complete"); flow.setOrderNo(2); flow.setIsLast(1); processFlowDao.insert(flow); } return leaveForm; }); } }
9
收起
正在回答
1回答
同学你好,这里是IDEA的警告进行不是报错可以忽略。Field 'xxx' may be 'final'表示属性xxx可以是final的,同学若不想出现此提示信息可将对应属性设置为final修饰的。
祝学习愉快~
java工程师2020版
- 参与学习 人
- 提交作业 9393 份
- 解答问题 16556 个
综合就业常年第一,编程排行常年霸榜,无需脱产即可学习,北上广深月薪过万 无论你是未就业的学生还是想转行的在职人员,不需要基础,只要你有梦想,想高薪
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星