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 그룹웨어 (0) | 2021.12.01 |
---|---|
X-nags 그룹웨어 (0) | 2021.12.01 |
X-nags 그룹웨어 (0) | 2021.12.01 |