Giter Site home page Giter Site logo

wms-ten-saintlaurent's Introduction

Ten-SaintLaurent

다중 소켓 통신 기반의 스마트 화장품 WMS
상품의 입고부터 출고까지 창고 운영을 효율적으로 관리하는 화장품 창고 관리 시스템


시스템 구조

image

유스케이스 다이어그램

01_Usecase

시퀀스 다이어그램

02_Sequence

ERD

03_ERD


주요 기능

로그인

  1. 창고 관리자에게 지역에 따른 권한을 부여하고, 창고 공간을 관리합니다.

입고

  1. 입고요청이 들어오면 창고의 빈 공간을 조회하고, 공간이 있다면 유통업체에게 입고가능 알림을 보냅니다.
  2. 제조업체에서 보낸 제품의 입고를 승인하고 불량품, 유통기한 검수를 수행합니다.
  3. 불량품을 폐기테이블에 저장합니다.
  4. 검수가 끝난 화장품들만 재고 목록에 추가합니다.
  5. 로케이트를 조회해 같은 화장품은 같은 로케이션에 적재하고 공간이 다 찼다면 공간효율성을 위해 가까운 로케이션에 적재합니다.

재고 관리

  1. 매일 재고목록에서 유통기한이 2개월 이하인 제품과 파손여부를 조사해 불량품을 구분합니다.
  2. 불량품은 폐기테이블에 저장하고 창고에서 자체적으로 폐기합니다(입고, 출고도 마찬가지)
  3. 재고목록을 조회해 각 화자움의 수량을 조회하고 어느 로케이트 적재됐는지 위치를 조회합니다.

출고

  1. 유통업체로부터 주문 정보가 들어오면 주문정보를 조회합니다.
  2. 주문정보를 바탕으로 출고지시서를 작성합니다.
  3. 출고지시서에 따라 해당 물건의 위치를 조회해 픽킹하고 카트에 적재합니다.
  4. 파손품 여부를 검사하고 총 주문물품과 픽킹물품이 같다면 포장하고 송장을 붙여 출고합니다. 4 -1.불량품이 있다면, 출고 거부를 유통업체에게 알리고 폐기테이블로 전달합니다.
  5. 출고 후 재고 목록에서 수량을 감소시킵니다(UPDATE)

개발

  1. 개발 도구 JAVA, MYSQL, JDBC, MYBATIS
  2. 개발기간
  • 2024-05-08 ~ 2024-05-10 분석 / 기획
  • 2024-05-11 ~ 2024-05-18 요구사항 및 다이어그램 작성
  • 2024-05-16 ~ 2024-05-22 개발 및 테스트

팀 TenTen

김도현 (PM, 발표, 입고 최적화 구현, 각 애플리케이션들 간의 JSON포멧 소켓통신 구현)

  • 프로젝트 개요 이번 프로젝트에서는 Java를 사용해 창고 관리 시스템(WMS)을 개발했습니다. WMS는 창고에서 상품의 입출고, 재고 추적, 위치 관리를 자동화하는 시스템입니다. 데이터베이스와의 상호작용에는 MyBatis와 JDBC를 사용했습니다.
  • 경험 초기 설정: 프로젝트 초반에 요구 사항을 분석하고 시스템을 설계했습니다. WMS가 처리해야 할 주요 기능을 정의하고, 데이터베이스 스키마를 설계했습니다. MyBatis 사용: MyBatis를 통해 SQL 쿼리를 XML 파일에 분리하여 유지보수성을 높였습니다. 매핑 작업 덕분에 객체와 SQL 간의 변환이 쉬워졌습니다. JDBC 사용: JDBC를 통해 직접 데이터베이스 연결을 관리하고 SQL 쿼리를 실행했습니다. 이 과정에서 트랜잭션 관리와 예외 처리를 배우게 되었습니다. 문제 해결: 가장 어려웠던 부분은 외래 키 제약 조건을 다루는 것이었습니다. 이를 해결하기 위해, 제약 조건을 동적으로 찾고 제거하는 SQL 스크립트를 작성했습니다.
  • 느낀 점 이 프로젝트를 통해 데이터베이스와의 상호작용을 깊이 있게 이해할 수 있었습니다. MyBatis와 JDBC를 사용하면서 SQL 매퍼의 장점과 직접 SQL을 관리하는 방법을 모두 배울 수 있었습니다. 전체적으로 매우 유익한 경험이었고, 앞으로 더 복잡한 데이터베이스 작업도 자신 있게 할 수 있을 것 같습니다.

나지영 (입고 관리 CRUD, 입고 승인, 입고 검수, 입고 확정)

  • WMS를 처음 접하였기에, 요구 사항을 작성하는 것부터 쉽지 않았다. 내가 기획하려는 주제에 대하여 정확하게 파악하고 있어야 사용자들이 어떤 부분을 필요로 할지 생각하기 더 수월해진다는 것을 깨달았다. 또 팀원들의 생각이 모두 다 다르기 때문에 팀원들이 적극적으로 말하면서 이런 부분이 필요한지 아닌지 계속해서 회의를 거쳐 요구사항과 erd를 수정하였는데, 처음엔 여러 갈래였던 방향이 점점 한 방향으로 구체적으로 잡혀가는 모습이 너무 뿌듯하고 좋았다.
  • MyBatis를 활용하여 MVC 구조 중 dao를 구현할 때, 처음에 내가 맡은 입고 쪽에서 어떤 데이터만 조회하고 삽입하고 삭제해야 할지 쿼리를 짜기 힘들었다. 그래서 이 프로그램을 사용하는 사용자 입장에서 어떤 데이터가 필요할지 한 번 더 흐름을 정리하여 어려웠던 부분을 해결할 수 있었다. 어떤 쿼리가 필요한지, 특히 다른 테이블의 어떤 외래키를 참조해야 내가 원하는 데이터만 select할 수 있을지 생각하는 실력이 좀 더 향상될 수 있었다. 시간 관계상 내가 맡은 입고 부분만 이해하고 다른 부분들은 많이 보지 못 한 부분이 아쉬웠고, 여기서 끝이 아니라 다른 팀원들이 어떻게 코드를 짜서 완성했는지 살펴보고 싶다.

박수빈 (재고 관리 CRUD, 재고 추가, 재고 폐기, 로케이션 할당)

  • 창고 관리 시스템의 이해부터 모든 문서 작성까지 너무 많은 시간이 걸렸고 많은 얘기들이 오갔지만 매번 하는 프로젝트에서 하나의 중점을 잡는 것이 오래 걸리고 요구 사항 부분이 오래 걸리는 것 같다. 이렇게 사람과의 소통을 배워가는 것 같아 좋다고 생각하기도 한다. 오래 기초를 단단하게 다지는 점도 좋지만 너무 오래 잡아먹어서 코드를 짜는 시간이 부족해지면 안된다고 생각한다.
  • 강사님이 문서를 많이 이용하라고 하셨는데 아직 익숙하지 않아서 그 부분에 대해 더 많이 작성하고 익숙해지는 것이 필요한 것 같다. 그리고 코드를 짜는 것을 가볍게 보지 말고 내가 부족한 것도 한번 더 보고 자료 조사도 중요하다고 생각했다.
  • 아직 잘하진 못해서 하나 처리하고 나중에 더 좋은 코드로 바꾸려 했는데 기간이 부족하다보니 그렇게 할 수 있는 시간이 없었던 것이 아쉬웠다. 이번에 많은 시간과 공을 들이고 노력했더니 프로젝트가 끝나고 나서 눈물이 날 것 같았다. 내가 잘 하고 못하고 상관없이 열심히 하면 배우는 것도 많고 나중에 다 돌아올 것이라 생각한다. 매번 팀 프로젝트를 통해 많은 부분을 배우는 것 같다. 다음 프로젝트는 조금 더 계획적으로 잘 해봐야겠따!

신윤정 (출고 관리 CRUD 출고 검수, 출고 지시서 생성, 픽킹, 카트할당)

  • 문서 작성이 생각보다 시간이 오래 걸렸고 막상 구현을 시작했을 때 이해했던 부분과 많이 달랐다. 이번 프로젝트에는 해야 할 것이 많았고 서로 생각하는 방식도 달라서 생각을 맞춰나가는 시간이 중요했던 것 같다. 다음번에는 문서 작업을 조금 더 효율적으로 할 수 있도록 문서 작업에 익숙해지는 과정이 필요할 것 같다. 코드를 짤 때도 배운 내용이 기억이 잘 안 나서 수업 후 복습이 중요한 것 같다. 리스트 매핑 하는 방법을 배우게 되어 얻어 가는게 많은 프로젝트였다.

양희윤 (입고 관리 CRUD, 입고 승인, 입고 검수, 입고 확정)

  • 수업진도를 따라가는 것이 힘들었는데 미니 프로젝트를 시작해서 걱정이 많았다. 흐름은 알지만 MVC패턴으로 데이터를 가져오고 조작하는 로직을 짜기가 어려웠고, 어느정도 틀을 잡는다 해도 코드로 구현하는 것을 하지 못해 내가 만든 기능이 없다. MYBATIS와 JDBC, MVC 패턴 이 3개가 가장 중요한데 다 미흡했다.
  • 코드를 짜질 않으니 다른 사람이 어디까지 구현했는지 요구사항이 구현 상 문제로 변경된 것을 실시간으로 알 수 없어서 push한 코드를 보고 확인했는데 많은 DTO와 스레드 등을 이해하는 것이 어려워서 질문을 너무 많이 했던 것 같다. 팀원들이 잘 이끌어주어서 끝낼 수 있었지만 미니 프로젝트2에서는 스스로 코드를 만들어 볼 수 있도록 공부를 열심히 해야겠다. WMS 프로젝트를 통해 쿠팡 같은 대형 창고들이 어떤 방식으로 돌아가는지 알 수 있었고 쇼핑몰 운영의 입장에서 창고를 생각해 볼 수 있을 것 같다.

이용준 (출고 관리 CRUD 출고 검수, 출고 지시서 생성, 픽킹, 카트할당)

  • WMS 라는 창고 관리 시스템을 처음 접해 보아서 이해하기가 어려웠고 이번 프로젝트에서 요구하는 각종 다이어그램과 요구사항을 작성하는 과정에서 많은 시행착오가 있었던 것 같다 또한 MYBATIS 와 JDBC의 사용이 익숙치 않았고 MVC패턴의 서비스단에 로직을 짜야할지 테이블과 매핑하고 쿼리로 로직을 짜야할지에 대한 고민과 프로젝트의 테이블의 갯수가 많다보니 여러개의 DTO DAO와 연결하여 MAPPING하는 부분이 어려웠던 것 같다. 좀 더 많이 사용을 해보고 공부를 더 하고 다음 기회에 제대로 코드를 짜보고 싶다. 😂

wms-ten-saintlaurent's People

Contributors

ooanaoo avatar subkka avatar jyna120 avatar vlshzl35 avatar yongjun98 avatar yoonjeong-shin avatar shqkel avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.