Field 'leaveFormService' may be 'final'
第一第二行不太理解LeaveFormService 这个class我设置的为final,为什么idea有这种提示?
代码哪里有问题,需要如何修改
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 | 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); } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 | 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版
- 参与学习 人
- 提交作业 9404 份
- 解答问题 16556 个
综合就业常年第一,编程排行常年霸榜,无需脱产即可学习,北上广深月薪过万 无论你是未就业的学生还是想转行的在职人员,不需要基础,只要你有梦想,想高薪
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧