基于javaweb+mysql的ssm+maven报销erp系统(java+ssm+jsp+layui+jquery+mysql)
运行环境
Java≥8、MySQL≥5.7、Tomcat≥8
开发工具
eclipse/idea/myeclipse/sts等均可配置运行
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明
基于javaweb+mysql的SSM+Maven报销erp系统(java+ssm+jsp+layui+jquery+mysql)
项目介绍
ssm ERP报销系统。主要分4个角色,总经理、部门经理、财务、普通员工,普通员工填写报销单后需要提交给部门经理审核,再由财务支付,如果金额大于5000,还需要总经理审核。 总经理拥有 部门管理 和 员工管理 功能 部门经理拥有 员工管理 功能 其他职务没有
环境需要
1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。 2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA; 3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可 4.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS; 5.是否Maven项目: 是;查看源码目录中是否包含pom.xml;若包含,则为maven项目,否则为非maven项目 6.数据库:MySql 5.7版本;
技术栈
- 后端:Spring SpringMVC MyBatis 2. 前端:JSP+LayUI+jQuery
主要技术
- Spring Ioc - Mybatis+Spring整合 - 声明式事务 - Spring标签库 - Spring拦截器
软件架构
三层架构
- 持久层–Mybatis - 表现层–Spring MVC - 控制器–Spring Controller
基于MVC模式
- 视图–Jsp - 模型–JavaBean - 业务层–JavaBean
使用说明
- 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件; 2. 使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven; 若为maven项目,导入成功后请执行maven clean;maven install命令,配置tomcat,然后运行; 3. 将项目中spring-dao.xml配置文件中的数据库配置改为自己的配置 4. 运行项目,在浏览器中输入http://localhost:8080/ 登录
账户说明
系统默认用户里有四个,分别对应10001(总经理),10002(部门经理),10003(财务),10004(普通员工) 密码为000000 员工填写报销单后需要提交给部门经理审核,再由财务支付, 如果金额大于5000,还需要总经理审核。 总经理拥有 部门管理 和 员工管理 功能 部门经理拥有 员工管理 功能 其他职务没有
Employee employee = (Employee) session.getAttribute("employee");
if (employee.getPassword().equals(old)) {
if(new1.equals(new2)){
employee.setPassword(new1);
globalBiz.changePassword(employee);
return "redirect:self";
}
}
return "redirect:to_change_password";
}
}
public class LoginInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception {
String url = httpServletRequest.getRequestURI();
if(url.toLowerCase().indexOf("login")>=0){
return true;
}
HttpSession session = httpServletRequest.getSession();
if(session.getAttribute("employee")!=null){
return true;
}
httpServletResponse.sendRedirect("/to_login");
return false;
}
@Override
public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {
return "claim_voucher_detail";
}
@RequestMapping("/self")
public String self(HttpSession session,Map<String,Object> map){
Employee employee = (Employee)session.getAttribute("employee");
map.put("list",claimVoucherBiz.getForSelf(employee.getSn()));
return "claim_voucher_self";
}
@RequestMapping("/deal")
public String deal(HttpSession session,Map<String,Object> map){
Employee employee = (Employee)session.getAttribute("employee");
map.put("list",claimVoucherBiz.getForDeal(employee.getSn()));
return "claim_voucher_deal";
}
@RequestMapping("/to_update")
public String toUpdate(int id,Map<String,Object> map){
map.put("items",Contant.getItems());
ClaimVoucherInfo info = new ClaimVoucherInfo();
info.setClaimVoucher(claimVoucherBiz.get(id));
info.setItems(claimVoucherBiz.getItems(id));
map.put("info",info);
return "claim_voucher_update";
}
@RequestMapping("/update")
public String update(HttpSession session,ClaimVoucherInfo info){
Employee employee = (Employee)session.getAttribute("employee");
info.getClaimVoucher().setCreateSn(employee.getSn());
claimVoucherBiz.update(info.getClaimVoucher(),info.getItems());
return "redirect:deal";
}
@RequestMapping("/submit")
public String submit(int id){
claimVoucherBiz.submit(id);
return "redirect:deal";
}
@RequestMapping("/to_check")
public String toCheck(int id,Map<String,Object> map){
map.put("claimVoucher",claimVoucherBiz.get(id));
map.put("items",claimVoucherBiz.getItems(id));
map.put("records",claimVoucherBiz.getRecords(id));
public class GlobalController {
@Autowired
private GlobalBiz globalBiz;
@RequestMapping("/to_login")
public String toLogin(){
return "login";
}
@RequestMapping("/login")
@ResponseBody
public String login(HttpSession session, HttpServletRequest request) throws Exception{
String sn = request.getParameter("username");
String password = request.getParameter("password");
Employee employee = globalBiz.login(sn,password);
if (employee == null) {
return "false";
}
session.setAttribute("employee",employee);
return "true";
}
@RequestMapping("/self")
public String self(){
return "self";
}
@RequestMapping("/quit")
public String quit(HttpSession session){
session.setAttribute("employee",null);
return "redirect:to_login";
}
@RequestMapping("/to_change_password")
public String toChangePassword(){
return "change_password";
}
@RequestMapping("/change_password")
public String changePassword(HttpSession session, @RequestParam String old, @RequestParam String new1,@RequestParam String new2){
Employee employee = (Employee) session.getAttribute("employee");
if (employee.getPassword().equals(old)) {
if(new1.equals(new2)){
employee.setPassword(new1);
globalBiz.changePassword(employee);
return "redirect:self";
return result;
}else {
String webPath=request.getServletContext().getRealPath("");
String filePath= "/static/upload_file/excel/";
//把文件名换成(时间戳.png)
String fileName=DateUtil.formatDate(new Date(), "yyyyMMdd-HHmmssSSS")+"_"+file.getOriginalFilename();
FileUtil.makeDirs(webPath+filePath);
//保存服务器
file.transferTo(new File(webPath+filePath+fileName));
//解析
List<ClaimVoucherInfo> list = excel_to_claimVoucherInfo(new File(webPath+filePath+fileName));
//开始 上传 数据库
for(ClaimVoucherInfo info:list) {
claimVoucherBiz.save(info.getClaimVoucher(),info.getItems());
}
//删除用过的文件
FileUtil.deleteFile(webPath+filePath+fileName);
}
result.put("success", true);
result.put("msg", "导入成功");
return result;
}
private List<ClaimVoucherInfo> excel_to_claimVoucherInfo(File userUploadFile) throws ParseException {
List<ClaimVoucherInfo> list = new ArrayList<>();
ClaimVoucherInfo claimVoucherInfo = null;
ClaimVoucherItem claimVoucherItem = null;
try {
POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream(userUploadFile));
HSSFWorkbook wb = new HSSFWorkbook(fs);
//获取第一个sheet页
HSSFSheet sheet = wb.getSheetAt(0);
if(sheet!=null){
//从第二行开始导入数据
for(int rowNum =1;rowNum<=sheet.getLastRowNum();rowNum++){
HSSFRow row = sheet.getRow(rowNum);
if(row==null){
continue;
}
if (row.getCell(0)!=null && !row.getCell(0).toString().isEmpty()){
claimVoucherInfo = new ClaimVoucherInfo();
claimVoucherInfo.setClaimVoucher(new ClaimVoucher());
claimVoucherInfo.setItems(new ArrayList<ClaimVoucherItem>());
}
@PostMapping("/add")
public String add(Employee employee){
employeeBiz.add(employee);
return "redirect:list";
}
@RequestMapping(value = "/to_update",params = "sn")
public String toUpdate(String sn, Map<String,Object> map){
map.put("employee",employeeBiz.get(sn));
map.put("dlist",departmentBiz.getdlist());
map.put("plist",Contant.getPost());
return "employee_update";
}
@RequestMapping("/update")
public String update(Employee employee){
employeeBiz.edit(employee);
return "redirect:list";
}
@RequestMapping(value = "/remove",params = "sn")
public String remove(String sn){
//根据员工工号找到对应报销单 再根据对应的报销单id删除报销单 最后删除员工信息
List<ClaimVoucher> claimVoucherList = claimVoucherBiz.getForSelf(sn);
if (!claimVoucherList.isEmpty() && claimVoucherList != null){
List<Integer> ids = new ArrayList<>();
for (ClaimVoucher claimVoucher : claimVoucherList){
ids.add(claimVoucher.getId());
}
for (int id : ids){
claimVoucherBiz.deleteById(id);
}
}
employeeBiz.remove(sn);
return "redirect:list";
}
}
@Controller("claimVoucherController")
@RequestMapping("/claim_voucher")
public class ClaimVoucherController {
@Autowired
private ClaimVoucherBiz claimVoucherBiz;
@Autowired
private EmployeeBiz employeeBiz;
@RequestMapping("/to_add")
public String toAdd(Map<String,Object> map){
map.put("items", Contant.getItems());
map.put("info",new ClaimVoucherInfo());
return "claim_voucher_add";
}
@RequestMapping("/add")
public String add(HttpSession session, ClaimVoucherInfo info){
Employee employee = (Employee)session.getAttribute("employee");
info.getClaimVoucher().setCreateSn(employee.getSn());
claimVoucherBiz.save(info.getClaimVoucher(),info.getItems());
return "redirect:detail?id="+info.getClaimVoucher().getId();
}
@RequestMapping("/detail")
public String detail(int id,Map<String,Object> map){
map.put("claimVoucher",claimVoucherBiz.get(id));
map.put("items",claimVoucherBiz.getItems(id));
map.put("records",claimVoucherBiz.getRecords(id));
return "claim_voucher_detail";
}
@RequestMapping("/self")
public String self(HttpSession session,Map<String,Object> map){
Employee employee = (Employee)session.getAttribute("employee");
map.put("list",claimVoucherBiz.getForSelf(employee.getSn()));
return "claim_voucher_self";
}
@RequestMapping("/deal")
public String deal(HttpSession session,Map<String,Object> map){
Employee employee = (Employee)session.getAttribute("employee");
map.put("list",claimVoucherBiz.getForDeal(employee.getSn()));
public class EmployeeController {
@Autowired
private DepartmentBiz departmentBiz;
@Autowired
private EmployeeBiz employeeBiz;
@Autowired
private ClaimVoucherBiz claimVoucherBiz;
@GetMapping("/list")
public String list(Map<String,Object> map){
map.put("list",employeeBiz.getAll());
return "employee_list";
}
@RequestMapping("/to_add")
public String toAdd(Employee employee,Map<String,Object> map){
map.put("employee",employee);
map.put("dlist",departmentBiz.getdlist());
map.put("plist",Contant.getPost());
return "employee_add";
}
@PostMapping("/add")
public String add(Employee employee){
employeeBiz.add(employee);
return "redirect:list";
}
@RequestMapping(value = "/to_update",params = "sn")
public String toUpdate(String sn, Map<String,Object> map){
map.put("employee",employeeBiz.get(sn));
map.put("dlist",departmentBiz.getdlist());
map.put("plist",Contant.getPost());
return "employee_update";
}
@RequestMapping("/update")
public String update(Employee employee){
employeeBiz.edit(employee);
return "redirect:list";
}
}
employeeBiz.remove(employee.getSn());
}
}
departmentBiz.remove(sn);
return "redirect:list";
}
}
@Controller("employeeController")
@RequestMapping("/employee")
public class EmployeeController {
@Autowired
private DepartmentBiz departmentBiz;
@Autowired
private EmployeeBiz employeeBiz;
@Autowired
private ClaimVoucherBiz claimVoucherBiz;
@GetMapping("/list")
public String list(Map<String,Object> map){
map.put("list",employeeBiz.getAll());
return "employee_list";
}
@RequestMapping("/to_add")
public String toAdd(Employee employee,Map<String,Object> map){
map.put("employee",employee);
map.put("dlist",departmentBiz.getdlist());
map.put("plist",Contant.getPost());
return "employee_add";
}
@PostMapping("/add")
public String add(Employee employee){
@RequestMapping("/check")
public String check(HttpSession session, DealRecord dealRecord){
Employee employee = (Employee)session.getAttribute("employee");
dealRecord.setDealSn(employee.getSn());
claimVoucherBiz.deal(dealRecord);
return "redirect:deal";
}
@RequestMapping("/fuzzyQuery")
public String fuzzyQuery(HttpSession session,Map<String,Object> map,@RequestParam String status,@RequestParam String total_amount,@RequestParam String create_time) throws ParseException, IOException {
Employee employee = (Employee)session.getAttribute("employee");
String createSn = employee.getSn();
Double totalAmount = null;
if (!total_amount.isEmpty() && total_amount != null){
totalAmount = Double.valueOf(total_amount);
}
map.put("list",claimVoucherBiz.fuzzyQuery(createSn,status,totalAmount,create_time));
return "claim_voucher_self";
}
@RequestMapping("/fuzzyQueryForDeal")
public String fuzzyQueryForDeal(HttpSession session,Map<String,Object> map,@RequestParam String createSn,@RequestParam String status,@RequestParam String total_amount,@RequestParam String create_time){
Employee employee = (Employee)session.getAttribute("employee");
String nextDealSn = employee.getSn();
Double totalAmount = null;
if (!total_amount.isEmpty() && total_amount != null){
totalAmount = Double.valueOf(total_amount);
}
map.put("list",claimVoucherBiz.fuzzyQueryForDeal(createSn,nextDealSn,status,totalAmount,create_time));
return "claim_voucher_deal";
}
@RequestMapping("/delete")
@ResponseBody
public String deleteClaimVoucher(@RequestParam("ids") String ids){
if (ids.length()==0 || ids.isEmpty()){
return null;
}
String[] str = ids.split(",");
List<Integer> id = new ArrayList<>();
for (int i = 0 ; i < str.length ; i++){
id.add(Integer.parseInt(str[i]));
}
for (Integer i : id){
claimVoucherBiz.deleteById(i);
}
return null;
}
@Controller("employeeController")
@RequestMapping("/employee")
public class EmployeeController {
@Autowired
private DepartmentBiz departmentBiz;
@Autowired
private EmployeeBiz employeeBiz;
@Autowired
private ClaimVoucherBiz claimVoucherBiz;
@GetMapping("/list")
public String list(Map<String,Object> map){
map.put("list",employeeBiz.getAll());
return "employee_list";
}
@RequestMapping("/to_add")
public String toAdd(Employee employee,Map<String,Object> map){
map.put("employee",employee);
map.put("dlist",departmentBiz.getdlist());
map.put("plist",Contant.getPost());
return "employee_add";
}
@PostMapping("/add")
public String add(Employee employee){
employeeBiz.add(employee);
return "redirect:list";
}
@RequestMapping(value = "/to_update",params = "sn")
public String toUpdate(String sn, Map<String,Object> map){
map.put("employee",employeeBiz.get(sn));
map.put("dlist",departmentBiz.getdlist());
map.put("plist",Contant.getPost());
@RequestMapping(value = "/to_update",params = "sn")
public String toUpdate(String sn, Map<String,Object> map){
map.put("department",departmentBiz.get(sn));
return "department_update";
}
@RequestMapping("/update")
public String update(Department department){
departmentBiz.edit(department);
return "redirect:list";
}
@RequestMapping(value = "/remove",params = "sn")
public String remove(String sn){
//根据部门号找到对应的员工
List<Employee> employeeList = employeeDao.selectByDepartmentAndPost(sn,null);
List<ClaimVoucher> claimVoucherList = null;
List<Integer> ids = null;
if (!employeeList.isEmpty() && employeeList != null){
//删除员工及其报销单
for (Employee employee : employeeList){
//根据报销单id删除报销单
claimVoucherList = claimVoucherBiz.getForSelf(employee.getSn());
if (!claimVoucherList.isEmpty() && claimVoucherList != null){
ids = new ArrayList<>();
for (ClaimVoucher claimVoucher : claimVoucherList){
ids.add(claimVoucher.getId());
}
for (int id : ids){
claimVoucherBiz.deleteById(id);
}
}
employeeBiz.remove(employee.getSn());
}
}
departmentBiz.remove(sn);
return "redirect:list";
}
@WebFilter("/EocdingFilter")
public class EncodingFilter implements Filter {
private String encoding = "utf-8";
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest)servletRequest;
HttpServletResponse response = (HttpServletResponse)servletResponse;
request.setCharacterEncoding(encoding);
response.setCharacterEncoding(encoding);
filterChain.doFilter(request,response);
}
@Override
public void init(FilterConfig filterConfig) throws ServletException {
if(filterConfig.getInitParameter("encoding")!=null){
encoding = filterConfig.getInitParameter("encoding");
}
}
@Override
public void destroy() {
}
}
public class ResponseUtil {
public static void write(HttpServletResponse response, Object o)throws Exception{
response.setContentType("text/html;charset=utf-8");
PrintWriter out=response.getWriter();
out.println(o.toString());
out.flush();
out.close();
}
public static void export(HttpServletResponse response, Workbook wb, String fileName)throws Exception{
response.setHeader("Content-Disposition", "attachment;filename="+new String(fileName.getBytes("utf-8"),"iso8859-1"));
response.setContentType("application/ynd.ms-excel;charset=UTF-8");
claimVoucherBiz.deal(dealRecord);
return "redirect:deal";
}
@RequestMapping("/fuzzyQuery")
public String fuzzyQuery(HttpSession session,Map<String,Object> map,@RequestParam String status,@RequestParam String total_amount,@RequestParam String create_time) throws ParseException, IOException {
Employee employee = (Employee)session.getAttribute("employee");
String createSn = employee.getSn();
Double totalAmount = null;
if (!total_amount.isEmpty() && total_amount != null){
totalAmount = Double.valueOf(total_amount);
}
map.put("list",claimVoucherBiz.fuzzyQuery(createSn,status,totalAmount,create_time));
return "claim_voucher_self";
}
@RequestMapping("/fuzzyQueryForDeal")
public String fuzzyQueryForDeal(HttpSession session,Map<String,Object> map,@RequestParam String createSn,@RequestParam String status,@RequestParam String total_amount,@RequestParam String create_time){
Employee employee = (Employee)session.getAttribute("employee");
String nextDealSn = employee.getSn();
Double totalAmount = null;
if (!total_amount.isEmpty() && total_amount != null){
totalAmount = Double.valueOf(total_amount);
}
map.put("list",claimVoucherBiz.fuzzyQueryForDeal(createSn,nextDealSn,status,totalAmount,create_time));
return "claim_voucher_deal";
}
@RequestMapping("/delete")
@ResponseBody
public String deleteClaimVoucher(@RequestParam("ids") String ids){
if (ids.length()==0 || ids.isEmpty()){
return null;
}
String[] str = ids.split(",");
List<Integer> id = new ArrayList<>();
for (int i = 0 ; i < str.length ; i++){
id.add(Integer.parseInt(str[i]));
}
for (Integer i : id){
claimVoucherBiz.deleteById(i);
}
return null;
}
@RequestMapping(value = "/export")
public String exportExcel(HttpServletResponse response, HttpServletRequest request,String ids) throws Exception {
if (ids.length()==0 || ids.isEmpty()){
return null;
}
String[] str = ids.split(",");
List<Integer> id = new ArrayList<>();
@RequestMapping("/deal")
public String deal(HttpSession session,Map<String,Object> map){
Employee employee = (Employee)session.getAttribute("employee");
map.put("list",claimVoucherBiz.getForDeal(employee.getSn()));
return "claim_voucher_deal";
}
@RequestMapping("/to_update")
public String toUpdate(int id,Map<String,Object> map){
map.put("items",Contant.getItems());
ClaimVoucherInfo info = new ClaimVoucherInfo();
info.setClaimVoucher(claimVoucherBiz.get(id));
info.setItems(claimVoucherBiz.getItems(id));
map.put("info",info);
return "claim_voucher_update";
}
@RequestMapping("/update")
public String update(HttpSession session,ClaimVoucherInfo info){
Employee employee = (Employee)session.getAttribute("employee");
info.getClaimVoucher().setCreateSn(employee.getSn());
claimVoucherBiz.update(info.getClaimVoucher(),info.getItems());
return "redirect:deal";
}
@RequestMapping("/submit")
public String submit(int id){
claimVoucherBiz.submit(id);
return "redirect:deal";
}
@RequestMapping("/to_check")
public String toCheck(int id,Map<String,Object> map){
map.put("claimVoucher",claimVoucherBiz.get(id));
map.put("items",claimVoucherBiz.getItems(id));
map.put("records",claimVoucherBiz.getRecords(id));
DealRecord dealRecord =new DealRecord();
dealRecord.setClaimVoucherId(id);
map.put("record",dealRecord);
return "claim_voucher_check";
}
}
@RequestMapping("/add")
public String add(Department department){
departmentBiz.add(department);
return "redirect:list";
}
@RequestMapping(value = "/to_update",params = "sn")
public String toUpdate(String sn, Map<String,Object> map){
map.put("department",departmentBiz.get(sn));
return "department_update";
}
@RequestMapping("/update")
public String update(Department department){
departmentBiz.edit(department);
return "redirect:list";
}
@RequestMapping(value = "/remove",params = "sn")
public String remove(String sn){
//根据部门号找到对应的员工
List<Employee> employeeList = employeeDao.selectByDepartmentAndPost(sn,null);
List<ClaimVoucher> claimVoucherList = null;
List<Integer> ids = null;
if (!employeeList.isEmpty() && employeeList != null){
//删除员工及其报销单
for (Employee employee : employeeList){
//根据报销单id删除报销单
claimVoucherList = claimVoucherBiz.getForSelf(employee.getSn());
if (!claimVoucherList.isEmpty() && claimVoucherList != null){
ids = new ArrayList<>();
for (ClaimVoucher claimVoucher : claimVoucherList){
ids.add(claimVoucher.getId());
}
for (int id : ids){
claimVoucherBiz.deleteById(id);
}
}
employeeBiz.remove(employee.getSn());
}
}
departmentBiz.remove(sn);
return "redirect:list";
}
}
public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception {
String url = httpServletRequest.getRequestURI();
if(url.toLowerCase().indexOf("login")>=0){
return true;
}
HttpSession session = httpServletRequest.getSession();
if(session.getAttribute("employee")!=null){
return true;
}
httpServletResponse.sendRedirect("/to_login");
return false;
}
@Override
public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {
}
@Override
public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {
}
}
@WebFilter("/EocdingFilter")
public class EncodingFilter implements Filter {
private String encoding = "utf-8";
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest)servletRequest;
HttpServletResponse response = (HttpServletResponse)servletResponse;
request.setCharacterEncoding(encoding);
response.setCharacterEncoding(encoding);
filterChain.doFilter(request,response);
}
@Override
public void init(FilterConfig filterConfig) throws ServletException {
@RequestMapping("/update")
public String update(Department department){
departmentBiz.edit(department);
return "redirect:list";
}
@RequestMapping(value = "/remove",params = "sn")
public String remove(String sn){
//根据部门号找到对应的员工
List<Employee> employeeList = employeeDao.selectByDepartmentAndPost(sn,null);
List<ClaimVoucher> claimVoucherList = null;
List<Integer> ids = null;
if (!employeeList.isEmpty() && employeeList != null){
//删除员工及其报销单
for (Employee employee : employeeList){
//根据报销单id删除报销单
claimVoucherList = claimVoucherBiz.getForSelf(employee.getSn());
if (!claimVoucherList.isEmpty() && claimVoucherList != null){
ids = new ArrayList<>();
for (ClaimVoucher claimVoucher : claimVoucherList){
ids.add(claimVoucher.getId());
}
for (int id : ids){
claimVoucherBiz.deleteById(id);
}
}
employeeBiz.remove(employee.getSn());
}
}
departmentBiz.remove(sn);
return "redirect:list";
}
}