본문 바로가기
파이널 프로젝트

X-nags 그룹웨어

by juneMiller 2021. 11. 29.

Spring 기반 그룹웨어를 만들었습니다. 

 

제가 맡은 부분은 사원 등록 조회 수정 삭제

비품 예약 , 기간연장, 반납 

회의실 예약, 취소, 삭제 기능을 구현 하였습니다. 

 

 

01. 사원등록

 

 

 

controller > insertEmp.me

 

@RequestMapping("insertEmp.me")
	public String insertEmp2(@ModelAttribute Employee emp, HttpSession session, @ModelAttribute Salary sal,
							 @ModelAttribute Member m, 
							 @RequestParam("post") String post,
							 @RequestParam("address1") String address1,
							 @RequestParam("address2") String address2,
							 HttpServletRequest request, Model model,
							 @RequestParam(name="uploadFile", required=false) MultipartFile file,
							 @RequestParam(value="currentPage", required=false, defaultValue="1") int currentPage) {

		
		
		//사원 등록
		employeeService.insertEmployee(emp);
		System.out.println("emp " + emp);
		
		
		
		
		
		System.out.println(m);
		System.out.println(file.getOriginalFilename());
		
		int listCount = employeeService.selectListCount();
		System.out.println(listCount);
		
		
		if(!file.getOriginalFilename().equals("")) {
			
			String changeName = saveFile(file, request);
			
			if(changeName != null) {
			m.setOriginName(file.getOriginalFilename());
			m.setChangeName(changeName);
			}
		}
		
		
		m.setAddress(post+"/"+address1+"/"+address2); 
		//솔팅기법
		System.out.println("암호화전 : "+m.getUserPwd());
		String encPwd = bCryptPasswordEncoder.encode(m.getUserPwd());
		System.out.println("암호화후 : "+encPwd);
		m.setUserPwd(encPwd);
		
		//개인정보 등록
		memberService.insertMember(m);
		System.out.println("m "+m);
		
		
		

		
		PageInfo pi = PaginationEmp.getPageInfo(listCount, currentPage, 10, 10);
		
		ArrayList<Employee> list = employeeService.selectList(pi);
		
		model.addAttribute("list", list);
		model.addAttribute("pi",pi);
		
		
		//회계정보 등록
		salaryService.insertSalary(sal);
		
		
		session.setAttribute("msg", "직원 등록 성공");
		return "employee/listEmp";
		
		
		

	}
	
	
	private String saveFile(MultipartFile file, HttpServletRequest request) {

		String resources = request.getSession().getServletContext().getRealPath("resources");
		String savePath = resources+"\\profile_files\\";
		
		System.out.println("savePath : " + savePath);
		
		String originName = file.getOriginalFilename();
		
		String currentTime = new SimpleDateFormat("yyyMMddHHmmss").format(new Date());
		
		String ext = originName.substring(originName.lastIndexOf("."));
		
		String changeName = currentTime + ext;
		
		try {
			file.transferTo(new File(savePath + changeName));
		} catch (IllegalStateException | IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			throw new CommException("file upload error");
		}
		
		return changeName;
	}

employeeImpl

@Override
	public void insertEmployee(Employee emp) {
		int result = employeeDao.insertEmployee(sqlSession, emp);
		if(result < 0) {
			throw new CommException("사원등록 실패");
		}
		
	}

memberImpl

	@Override
	public void insertMember(Member m) {
		int result = memberDao.insertMember(sqlSession, m);
		if(result < 0) {
			throw new CommException("회원 가입 실패");
		}		
	}

salaryImpl

 

	@Override
	public void insertSalary(Salary sal) {
		int result = salaryDao.insertSalary(sqlSession, sal);
		if(result < 0) {
			throw new CommException("사원등록 실패");
		}
		
	}

 

각각의 임플 단에서 sqlSession 과 함께 객체를 넘겨 다오로 이동한다. 

 

Dao

	public int insertSalary(SqlSessionTemplate sqlSession, Salary sal) {
		
		return sqlSession.insert("salaryMapper.insertSal",sal);
	}
    
    
    	public int insertMember(SqlSessionTemplate sqlSession, Member m) {
		return sqlSession.insert("memberMapper.insertMember",m);
	}
    
    public int insertEmployee(SqlSessionTemplate sqlSession, Employee emp) {
		
		return sqlSession.insert("employeeMapper.insertEmployee",emp);
	}

각 Dao 에서 namespace 로 연결된 Mapper 이름안에 id 값으로 연결해 쿼리문을 작동 시킨다. 

 

각각의 Mapper 의 쿼리문 

 <insert id="insertEmployee" parameterType="Employee" >
	insert into employee
	values (RPAD(to_number(to_char(SYSDATE, 'yymmdd')),9,SEQ_EMP_ID.NEXTVAL), #{jobCode},#{rightNo},#{deptCode},#{salLevel},sysdate,#{modifyDate},#{endDate},default,default)	
	</insert>
    
    <insert id="insertSal" parameterType="Salary" >
	insert into salary
	values (SEQ_SALNO.NEXTVAL, #{salLevel}, RPAD(to_number(to_char(SYSDATE, 'yymmdd')),9,SEQ_EMP_ID.CURRVAL), #{basic}, #{commission},#{meal},#{total},#{incomeTax},#{empInsurance},#{retirement},#{healthInsurance},#{inTotal},#{subTotal})	
	</insert>
    
    
    <insert id="insertMember" parameterType="Member">

   insert into member
   values (SEQ_UNO.NEXTVAL, RPAD(to_number(to_char(SYSDATE, 'yymmdd')),9,SEQ_EMP_ID.CURRVAL),#{userPwd},#{userName},#{userSsn},#{email},#{phone},#{address},#{gender},
   #{originName}, #{changeName},default)   
   </insert>

 

사원아이디는 등록 날짜 + 100 부터 시작하여 시퀀스로 증가 시켜준다. 

사원의 아이디는 Member 와 Salary 왜래키를 걸어 사용한다. 

 

X-nags Erd

https://www.erdcloud.com/d/jJgKb3RtQgwHeampx

'파이널 프로젝트' 카테고리의 다른 글

X-nags 그룹웨어  (0) 2021.12.01
X-nags 그룹웨어  (0) 2021.12.01
X-nags 그룹웨어  (0) 2021.12.01