diff --git a/src/main/java/co/jp/mamol/myapp/controller/BuyApprovalController.java b/src/main/java/co/jp/mamol/myapp/controller/BuyApprovalController.java new file mode 100644 index 0000000..3dbd017 --- /dev/null +++ b/src/main/java/co/jp/mamol/myapp/controller/BuyApprovalController.java @@ -0,0 +1,140 @@ +package co.jp.mamol.myapp.controller; + +import co.jp.mamol.myapp.common.ApiResponse; +import co.jp.mamol.myapp.form.BuyApprovalForm; +import co.jp.mamol.myapp.model.SizaiModel; +import co.jp.mamol.myapp.model.UserModel; +import co.jp.mamol.myapp.service.BuyApprovalService; +import jakarta.servlet.http.HttpSession; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; +import java.util.List; + +@RestController +@RequestMapping("/api") +public class BuyApprovalController { + + private final BuyApprovalService buyApprovalService; + + @Autowired + public BuyApprovalController(BuyApprovalService buyApprovalService) { + this.buyApprovalService = buyApprovalService; + } + + private UserModel getLoginUser(HttpSession session) { + + return (UserModel) session.getAttribute("loginInfo"); + } + + // M0004,BL2001,DA2001 + @GetMapping("/approvalList/init") + public ResponseEntity> init(HttpSession session){ + UserModel user = getLoginUser(session); + if (user == null || !"2".equals(user.getRole_class())) { + return ResponseEntity.badRequest().body(ApiResponse.fail("ログイン情報が無効です。再度ログインしてください。")); + } + + LocalDate endDate = LocalDate.now(); + LocalDate startDate = endDate.minusMonths(1); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + String startDateStr = startDate.format(formatter); + String endDateStr = endDate.format(formatter); + + List sizaiList = buyApprovalService.getDeptRequestList(startDateStr, endDateStr, user.getDepid()); + BuyApprovalForm buyApprovalForm = new BuyApprovalForm(); + if (sizaiList == null || sizaiList.isEmpty()) { + + return ResponseEntity.badRequest().body(ApiResponse.fail("指定期間の購入依頼が登録されていません")); + } else { + buyApprovalForm.setSizaiList(sizaiList); + } + buyApprovalForm.setStartDate(startDateStr); + buyApprovalForm.setEndDate(endDateStr); + return ResponseEntity.ok(ApiResponse.success(buyApprovalForm)); + } + + // M0004,BL2001,DA2001 + @PostMapping("/approvalList/search") + public ResponseEntity> search(@RequestBody BuyApprovalForm buyApprovalForm, HttpSession session) { + UserModel user = getLoginUser(session); + if (user == null || !"2".equals(user.getRole_class())) { + return ResponseEntity.badRequest().body(ApiResponse.fail("ログイン情報が無効です。再度ログインしてください。")); + } + + List sizaiList = buyApprovalService.getDeptRequestList(buyApprovalForm.getStartDate(), buyApprovalForm.getEndDate(), user.getDepid()); + if (sizaiList == null || sizaiList.isEmpty()) { + + ResponseEntity.badRequest().body(ApiResponse.fail("指定期間の購入依頼が登録されていません")); + } else { + buyApprovalForm.setSizaiList(sizaiList); + } + return ResponseEntity.ok(ApiResponse.success(buyApprovalForm)); + } + + // M0004,BL2003,DA2003 + @PostMapping("/approvalList/approval") + public ResponseEntity> approval(@RequestBody BuyApprovalForm buyApprovalForm, HttpSession session) { + UserModel user = getLoginUser(session); + if (user == null || !"2".equals(user.getRole_class())) { + return ResponseEntity.badRequest().body(ApiResponse.fail("ログイン情報が無効です。再度ログインしてください。")); + } + + boolean approval = buyApprovalService.approval(buyApprovalForm.getTargeId()); + + if (approval) { + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + String startDateStr = LocalDate.now().minusMonths(1).format(formatter); + String endDateStr = LocalDate.now().format(formatter); + + List sizaiList = buyApprovalService.getDeptRequestList(startDateStr, endDateStr, user.getDepid()); + buyApprovalForm.setSizaiList(sizaiList); + return ResponseEntity.ok(ApiResponse.success(buyApprovalForm)); + } else { + return ResponseEntity.badRequest().body(ApiResponse.fail("承認できませんでした。")); + } + } + + // M0004,BL2004,DA2004 + @PostMapping("/approvalList/reject") + public ResponseEntity> reject(@RequestBody BuyApprovalForm buyApprovalForm, HttpSession session) { + UserModel user = getLoginUser(session); + if (user == null || !"2".equals(user.getRole_class())) { + return ResponseEntity.badRequest().body(ApiResponse.fail("ログイン情報が無効です。再度ログインしてください。")); + } + + boolean reject = buyApprovalService.reject(buyApprovalForm.getTargeId()); + if (reject) { + String startDateStr = buyApprovalForm.getStartDate(); + String endDateStr = buyApprovalForm.getEndDate(); + if (startDateStr == null || endDateStr == null) { + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + startDateStr = LocalDate.now().minusMonths(1).format(formatter); + endDateStr = LocalDate.now().format(formatter); + } + + List sizaiList = buyApprovalService.getDeptRequestList(startDateStr, endDateStr, user.getDepid()); + buyApprovalForm.setSizaiList(sizaiList); + return ResponseEntity.ok(ApiResponse.success(buyApprovalForm)); + } else { + return ResponseEntity.badRequest().body(ApiResponse.fail("却下できませんでした。")); + } + } + + // M0004,BL2002,DA2002 + @GetMapping("/approvalDetail/init") + public ResponseEntity> detail(@RequestParam("targetId") int targetId,HttpSession session) { + UserModel user = getLoginUser(session); + if (user == null || !"2".equals(user.getRole_class())) { + return ResponseEntity.badRequest().body(ApiResponse.fail("ログイン情報が無効です。再度ログインしてください。")); + } + + BuyApprovalForm buyApprovalForm = new BuyApprovalForm(); + buyApprovalForm.setTargeId(targetId); + buyApprovalForm.setSizai(buyApprovalService.getRequest(targetId)); + return ResponseEntity.ok(ApiResponse.success(buyApprovalForm)); + } +} \ No newline at end of file diff --git a/src/main/java/co/jp/mamol/myapp/controller/BuyRequestController.java b/src/main/java/co/jp/mamol/myapp/controller/BuyRequestController.java new file mode 100644 index 0000000..3d87a17 --- /dev/null +++ b/src/main/java/co/jp/mamol/myapp/controller/BuyRequestController.java @@ -0,0 +1,197 @@ +package co.jp.mamol.myapp.controller; + +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; +import java.util.List; +import java.util.Optional; + +import co.jp.mamol.myapp.common.ApiResponse; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +import co.jp.mamol.myapp.model.CategoryModel; +import co.jp.mamol.myapp.model.SizaiModel; +import co.jp.mamol.myapp.model.UserModel; +import co.jp.mamol.myapp.form.BuyRequestForm; +import co.jp.mamol.myapp.service.BuyRequestService; + +import jakarta.servlet.http.HttpSession; + +@RestController +@RequestMapping("/api") +public class BuyRequestController { + + private final BuyRequestService buyRequestService; + + @Autowired + public BuyRequestController(BuyRequestService buyRequestService) { + this.buyRequestService = buyRequestService; + } + + private UserModel getLoginUser(HttpSession session) { + + return (UserModel) session.getAttribute("loginInfo"); + } + + // M0002,BL1003,DA1003 + @GetMapping("/requestList/init") + public ResponseEntity> init(HttpSession session) { + UserModel user = getLoginUser(session); + if (user == null || !"1".equals(user.getRole_class())) { + return ResponseEntity.status(403).body(ApiResponse.fail("ユーザー情報は取らなかったですので、もう一度ログインしてください。")); + } + + LocalDate endDate = LocalDate.now(); + LocalDate startDate = endDate.minusMonths(1); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + String startDateStr = startDate.format(formatter); + String endDateStr = endDate.format(formatter); + + List sizaiList = buyRequestService.getUserRequsetList(startDateStr, endDateStr, user.getId()); + BuyRequestForm buyRequestForm = new BuyRequestForm(); + if (sizaiList == null || sizaiList.isEmpty()) { + ResponseEntity.badRequest().body(ApiResponse.fail("指定期間の購入依頼が登録されていません")); + } else { + buyRequestForm.setSizaiList(sizaiList); + } + buyRequestForm.setStartDate(startDateStr); + buyRequestForm.setEndDate(endDateStr); + return ResponseEntity.ok(ApiResponse.success(buyRequestForm)); + } + + // M0002,BL1003,DA1003 + @PostMapping("/requestList/search") + public ResponseEntity> search(@RequestBody BuyRequestForm buyRequestForm, HttpSession session) { + UserModel user = getLoginUser(session); + if (user == null || !"1".equals(user.getRole_class())) { + return ResponseEntity.status(403).body(ApiResponse.fail("ユーザー情報は取らなかったですので、もう一度ログインしてください。")); + } + + List sizaiList = buyRequestService.getUserRequsetList(buyRequestForm.getStartDate(), buyRequestForm.getEndDate(), user.getId()); + if (sizaiList == null || sizaiList.isEmpty()) { + ResponseEntity.badRequest().body(ApiResponse.fail("指定期間の購入依頼が登録されていません")); + } else { + buyRequestForm.setSizaiList(sizaiList); + } + return ResponseEntity.ok(ApiResponse.success(buyRequestForm)); + } + + // M0002,BL1006,DA1006 + @PostMapping("/requestList/delete") + public ResponseEntity> delete(@RequestBody BuyRequestForm buyRequestForm, HttpSession session) { + UserModel user = getLoginUser(session); + if (user == null || !"1".equals(user.getRole_class())) { + return ResponseEntity.status(403).body(ApiResponse.fail("ログイン情報が無効です。再度ログインしてください。")); + } + + buyRequestService.deleteById(buyRequestForm.getDeleteById()); + + String startDateStr = buyRequestForm.getStartDate(); + String endDateStr = buyRequestForm.getEndDate(); + if (startDateStr == null || endDateStr == null) { + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + startDateStr = LocalDate.now().minusMonths(1).format(formatter); + endDateStr = LocalDate.now().format(formatter); + } + + List sizaiList = buyRequestService.getUserRequsetList(startDateStr, endDateStr, user.getId()); + buyRequestForm.setSizaiList(sizaiList); + return ResponseEntity.ok(ApiResponse.success(buyRequestForm)); + } + + // M0001,BL1002,DA1002 + @GetMapping("/requestRegist/init") + public ResponseEntity> registInit(HttpSession session) { + UserModel user = getLoginUser(session); + if (user == null || !"1".equals(user.getRole_class())) { + return ResponseEntity.status(403).body(ApiResponse.fail("ログイン情報が無効です。再度ログインしてください。")); + } + + List categoryList = buyRequestService.getCategory(); + BuyRequestForm buyRequestForm = new BuyRequestForm(); + if (categoryList == null || categoryList.isEmpty()) { + ResponseEntity.badRequest().body(ApiResponse.fail("申し訳ございません。今操作出来ません。")); + } else { + buyRequestForm.setCategoryModelList(categoryList); + } + return ResponseEntity.ok(ApiResponse.success(buyRequestForm)); + } + + // M0001,BL1002,DA1002 + @PostMapping("/requestRegist/regist") + public ResponseEntity> regist(@RequestBody BuyRequestForm buyRequestForm, HttpSession session) { + UserModel user = getLoginUser(session); + if (user == null || !"1".equals(user.getRole_class())) { + ResponseEntity.status(403).body(ApiResponse.fail("ログイン情報が無効です。再度ログインしてください。")); + return ResponseEntity.ok(ApiResponse.success(buyRequestForm)); + } + + SizaiModel addSizai = buyRequestForm.getSizai(); + if (addSizai.getName() == null || addSizai.getName().isEmpty()) { + + return ResponseEntity.badRequest().body(ApiResponse.fail("資材名を入力してください。")); + } + if (addSizai.getNum() == 0) { + + return ResponseEntity.badRequest().body(ApiResponse.fail("数量を入力してください。")); + }else if (addSizai.getNum() < 0) { + + return ResponseEntity.badRequest().body(ApiResponse.fail("数量はマイナスになりません。")); + } + + addSizai.setRequest_user_id(user.getId()); + addSizai.setRequest_dept_id(user.getDepid()); + buyRequestService.requestRegist(addSizai); + + buyRequestForm.setCategoryModelList(buyRequestService.getCategory()); + + return ResponseEntity.ok(ApiResponse.success(buyRequestForm)); + } + + // M0003,BL1005,DA1005 + @GetMapping("/requestDetail/init") + public ResponseEntity> detailInit(@RequestParam("targetId") int targetId, HttpSession session) { + UserModel user = getLoginUser(session); + if (user == null || !"1".equals(user.getRole_class())) { + return ResponseEntity.status(403).body(ApiResponse.fail("ログイン情報が無効です。再度ログインしてください。")); + } + + BuyRequestForm buyRequestForm = new BuyRequestForm(); + SizaiModel sizaiDetail = buyRequestService.getRequest(targetId); + session.setAttribute("sizaiId", Optional.of(sizaiDetail.getId())); // 设置 session 数据 + buyRequestForm.setSizai(sizaiDetail); + buyRequestForm.setCategoryModelList(buyRequestService.getCategory()); + + if ("1".equals(sizaiDetail.getStatus()) || "3".equals(sizaiDetail.getStatus())) { + buyRequestForm.setModifyFlag(true); + } else { + buyRequestForm.setModifyFlag(false); + ResponseEntity.badRequest().body(ApiResponse.fail("承認済の依頼を変更できません。")); + } + return ResponseEntity.ok(ApiResponse.success(buyRequestForm)); + } + + // M0003,BL1005,DA1005 + @PostMapping("/requestDetail/modify") + public ResponseEntity> modify(@RequestBody BuyRequestForm buyRequestForm, HttpSession session) { + UserModel user = getLoginUser(session); + if (user == null || !"1".equals(user.getRole_class())) { + return ResponseEntity.status(403).body(ApiResponse.fail("ログイン情報が無効です。再度ログインしてください。")); + } + + int sizaiId = buyRequestForm.getSizai().getId(); + SizaiModel sizai = buyRequestForm.getSizai(); + sizai.setId(sizaiId); + + boolean modified = buyRequestService.modifyRequest(sizai); + if (modified) { + buyRequestForm.setSizai(buyRequestService.getRequest(sizaiId)); + buyRequestForm.setCategoryModelList(buyRequestService.getCategory()); + buyRequestForm.setModifyFlag(true); + return ResponseEntity.ok(ApiResponse.success(buyRequestForm)); + } else { + return ResponseEntity.ok(ApiResponse.fail("変更できませんでした。")); + } + } +} \ No newline at end of file diff --git a/src/main/java/co/jp/mamol/myapp/controller/LoginController.java b/src/main/java/co/jp/mamol/myapp/controller/LoginController.java new file mode 100644 index 0000000..c2b88a0 --- /dev/null +++ b/src/main/java/co/jp/mamol/myapp/controller/LoginController.java @@ -0,0 +1,83 @@ +package co.jp.mamol.myapp.controller; + +import co.jp.mamol.myapp.common.ApiResponse; +import co.jp.mamol.myapp.model.UserModel; +import co.jp.mamol.myapp.form.LoginForm; +import co.jp.mamol.myapp.service.LoginService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpSession; + +import java.util.HashMap; +import java.util.Map; + +@RestController +@RequestMapping("/api") +public class LoginController { + + @Autowired + private LoginService loginService; + + @PostMapping("/login") + public ResponseEntity>> login(@RequestBody LoginForm loginForm, HttpServletRequest request) { + HttpSession session = request.getSession(); + + if (loginForm.getId() == null || loginForm.getId().isEmpty()) { + return ResponseEntity.badRequest().body(ApiResponse.>fail("ユーザーIDを入力してください。")); + } else if (loginForm.getPassword() == null || loginForm.getPassword().isEmpty()) { + return ResponseEntity.badRequest().body(ApiResponse.>fail("パスワードを入力してください。")); + } + + UserModel userModel = loginService.findUser(loginForm.getId()); + if (userModel == null || !userModel.getPassword().equals(loginForm.getPassword())) { + return ResponseEntity.badRequest().body(ApiResponse.>fail("パスワードまたはユーザーIDが間違っています。")); + } + + session.setAttribute("loginInfo", userModel); + + String redirectUrl = switch (userModel.getRole_class()) { + case "1" -> "/request"; + case "2" -> "/approval"; + case "3" -> "/order"; + case "4" -> "/inStore"; + case "5" -> "/systemAdmin"; + default -> "/error"; + }; + + Map result = new HashMap<>(); + result.put("redirect", redirectUrl); + result.put("user", userModel); + return ResponseEntity.ok(ApiResponse.success(result)); + } + + @GetMapping("/logout") + public ResponseEntity> logout(HttpServletRequest request) { + HttpSession session = request.getSession(); + session.invalidate(); + return ResponseEntity.ok(ApiResponse.success(null)); + } + + @GetMapping("/me") + public ResponseEntity> getCurrentUser(HttpServletRequest request) { + HttpSession session = request.getSession(false); + String accept = request.getHeader("Accept"); + + if (accept == null || !accept.contains("application/json")) { + return ResponseEntity.status(403).body(ApiResponse.fail("許可されていません")); + } + + if (session == null) { + return ResponseEntity.status(401).body(ApiResponse.fail("セッションが無効です")); + } + + UserModel user = (UserModel) session.getAttribute("loginInfo"); + if (user == null) { + return ResponseEntity.status(401).body(ApiResponse.fail("ログインが必要です")); + } + + return ResponseEntity.ok(ApiResponse.success(user)); + } +} \ No newline at end of file diff --git a/src/main/java/co/jp/mamol/myapp/controller/OrderDeliverController.java b/src/main/java/co/jp/mamol/myapp/controller/OrderDeliverController.java new file mode 100644 index 0000000..5a38a8a --- /dev/null +++ b/src/main/java/co/jp/mamol/myapp/controller/OrderDeliverController.java @@ -0,0 +1,197 @@ +package co.jp.mamol.myapp.controller; + +import co.jp.mamol.myapp.common.ApiResponse; +import co.jp.mamol.myapp.form.BuyApprovalForm; +import co.jp.mamol.myapp.form.OrderDeliverForm; +import co.jp.mamol.myapp.model.DepartmentModel; +import co.jp.mamol.myapp.model.SizaiModel; +import co.jp.mamol.myapp.model.UserModel; +import co.jp.mamol.myapp.service.OrderDeliverService; +import jakarta.servlet.http.HttpSession; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@RestController +@RequestMapping("/api") +public class OrderDeliverController { + + private final OrderDeliverService orderDeliverService; + + @Autowired + public OrderDeliverController(OrderDeliverService orderDeliverService) { + this.orderDeliverService = orderDeliverService; + } + + private UserModel getLoginUser(HttpSession session) { + + return (UserModel) session.getAttribute("loginInfo"); + } + + @GetMapping("/order/init") + public ResponseEntity> orderInit(HttpSession session){ + UserModel user = getLoginUser(session); + if (user == null || !"3".equals(user.getRole_class()) || !"5".equals(user.getRole_class())) { + return ResponseEntity.badRequest().body(ApiResponse.fail("ログイン情報が無効です。再度ログインしてください。")); + } + + List deptList = orderDeliverService.deptList(); + OrderDeliverForm orderDeliverForm = new OrderDeliverForm(); + orderDeliverForm.setDeptList(deptList); + + final String DEFAULT_DEPT_ID = "0001"; + List sizaiList = orderDeliverService.approvaleList(DEFAULT_DEPT_ID); + orderDeliverForm.setSizaiList(sizaiList); + + if (orderDeliverForm.getSizaiList() == null || orderDeliverForm.getSizaiList().isEmpty()) { + + return ResponseEntity.badRequest().body(ApiResponse.fail("指定部署の購入資材はありません。")); + }else { + + session.setAttribute("deptId", orderDeliverForm.getDeptId()); + return ResponseEntity.ok(ApiResponse.success(orderDeliverForm)); + } + } + + @PostMapping("/order/search") + public ResponseEntity> orderSearch(@RequestBody OrderDeliverForm orderDeliverForm, HttpSession session){ + UserModel user = getLoginUser(session); + if (user == null || !"3".equals(user.getRole_class()) || !"5".equals(user.getRole_class())) { + return ResponseEntity.badRequest().body(ApiResponse.fail("ログイン情報が無効です。再度ログインしてください。")); + } + + List deptList = orderDeliverService.deptList(); + orderDeliverForm.setDeptList(deptList); + + List sizaiList = orderDeliverService.approvaleList(orderDeliverForm.getDeptId()); + orderDeliverForm.setSizaiList(sizaiList); + + if (orderDeliverForm.getSizaiList() == null || orderDeliverForm.getSizaiList().isEmpty()) { + + return ResponseEntity.badRequest().body(ApiResponse.fail("指定部署の購入資材はありません。")); + }else { + + session.setAttribute("deptId", orderDeliverForm.getDeptId()); + return ResponseEntity.ok(ApiResponse.success(orderDeliverForm)); + } + } + + @PostMapping("/order/act") + public ResponseEntity> orderAct(@RequestBody OrderDeliverForm orderDeliverForm, HttpSession session) { + UserModel user = getLoginUser(session); + if (user == null || !"3".equals(user.getRole_class()) || !"5".equals(user.getRole_class())) { + return ResponseEntity.badRequest().body(ApiResponse.fail("ログイン情報が無効です。再度ログインしてください。")); + } + + String deptIdStr = orderDeliverForm.getDeptId(); + if (deptIdStr == null || deptIdStr.isBlank()) { + return ResponseEntity.badRequest().body(ApiResponse.fail("部署IDが指定されていません。")); + } + + boolean flag = orderDeliverService.orderAct(orderDeliverForm.getId()); + + if (!flag) { + return ResponseEntity.badRequest().body(ApiResponse.fail("発注失敗しました。")); + }else { + orderDeliverForm.setDeptId((String) session.getAttribute("deptId")); + List deptList = orderDeliverService.deptList(); + List sizaiList = orderDeliverService.approvaleList(orderDeliverForm.getDeptId()); + + orderDeliverForm.setDeptList(deptList); + orderDeliverForm.setSizaiList(sizaiList); + + return ResponseEntity.ok(ApiResponse.success(orderDeliverForm)); + } + } + + @GetMapping("/delever/init") + public ResponseEntity> deleverInit(HttpSession session){ + UserModel user = getLoginUser(session); + if (user == null || !"3".equals(user.getRole_class()) || !"5".equals(user.getRole_class())) { + return ResponseEntity.badRequest().body(ApiResponse.fail("ログイン情報が無効です。再度ログインしてください。")); + } + + OrderDeliverForm orderDeliverForm = new OrderDeliverForm(); + List deptList = orderDeliverService.deptList(); + orderDeliverForm.setDeptList(deptList); + + final String DEFAULT_DEPT_ID = "0001"; + List sizaiList = orderDeliverService.orderedList(DEFAULT_DEPT_ID); + orderDeliverForm.setSizaiList(sizaiList); + + if (orderDeliverForm.getSizaiList() == null || orderDeliverForm.getSizaiList().isEmpty()) { + + return ResponseEntity.badRequest().body(ApiResponse.fail("指定部署の購入資材はありません。")); + }else { + + session.setAttribute("deptId", orderDeliverForm.getDeptId()); + return ResponseEntity.ok(ApiResponse.success(orderDeliverForm)); + } + } + + @PostMapping("/delever/search") + public ResponseEntity> deleverSearch(@RequestBody OrderDeliverForm orderDeliverForm, HttpSession session){ + UserModel user = getLoginUser(session); + if (user == null || !"3".equals(user.getRole_class()) || !"5".equals(user.getRole_class())) { + return ResponseEntity.badRequest().body(ApiResponse.fail("ログイン情報が無効です。再度ログインしてください。")); + } + + List deptList = orderDeliverService.deptList(); + orderDeliverForm.setDeptList(deptList); + + List sizaiList = orderDeliverService.orderedList(orderDeliverForm.getDeptId()); + orderDeliverForm.setSizaiList(sizaiList); + + if (orderDeliverForm.getSizaiList() == null || orderDeliverForm.getSizaiList().isEmpty()) { + + return ResponseEntity.badRequest().body(ApiResponse.fail("指定部署の購入資材はありません。")); + }else { + + session.setAttribute("deptId", orderDeliverForm.getDeptId()); + return ResponseEntity.ok(ApiResponse.success(orderDeliverForm)); + } + } + + @PostMapping("/delever/act") + public ResponseEntity> deleverAct(@RequestBody OrderDeliverForm orderDeliverForm, HttpSession session) { + UserModel user = getLoginUser(session); + if (user == null || !"3".equals(user.getRole_class()) || !"5".equals(user.getRole_class())) { + return ResponseEntity.badRequest().body(ApiResponse.fail("ログイン情報が無効です。再度ログインしてください。")); + } + + String deptIdStr = orderDeliverForm.getDeptId(); + if (deptIdStr == null || deptIdStr.isBlank()) { + return ResponseEntity.badRequest().body(ApiResponse.fail("部署IDが指定されていません。")); + } + + boolean flag = orderDeliverService.deleverAct(orderDeliverForm.getId()); + + if (!flag) { + return ResponseEntity.badRequest().body(ApiResponse.fail("納品失敗しました。")); + }else { + orderDeliverForm.setDeptId((String) session.getAttribute("deptId")); + List deptList = orderDeliverService.deptList(); + List sizaiList = orderDeliverService.orderedList(orderDeliverForm.getDeptId()); + + orderDeliverForm.setDeptList(deptList); + orderDeliverForm.setSizaiList(sizaiList); + + return ResponseEntity.ok(ApiResponse.success(orderDeliverForm)); + } + } + + @GetMapping("/delever/qr") + public ResponseEntity> qrCode(@RequestParam("id") int id,HttpSession session) { + UserModel user = getLoginUser(session); + if (user == null || !"3".equals(user.getRole_class()) || !"5".equals(user.getRole_class())) { + return ResponseEntity.badRequest().body(ApiResponse.fail("ログイン情報が無効です。再度ログインしてください。")); + } + + OrderDeliverForm orderDeliverForm = new OrderDeliverForm(); + orderDeliverForm.setId(id); + + return ResponseEntity.ok(ApiResponse.success(orderDeliverForm)); + } +} diff --git a/src/main/java/co/jp/mamol/myapp/controller/StoreController.java b/src/main/java/co/jp/mamol/myapp/controller/StoreController.java new file mode 100644 index 0000000..419cb87 --- /dev/null +++ b/src/main/java/co/jp/mamol/myapp/controller/StoreController.java @@ -0,0 +1,149 @@ +package co.jp.mamol.myapp.controller; + +import co.jp.mamol.myapp.common.ApiResponse; +import co.jp.mamol.myapp.form.StoreForm; +import co.jp.mamol.myapp.model.SizaiModel; +import co.jp.mamol.myapp.model.SoukoModel; +import co.jp.mamol.myapp.model.UserModel; +import co.jp.mamol.myapp.service.StoreService; +import jakarta.servlet.http.HttpSession; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +import java.util.ArrayList; +import java.util.List; + +@RestController +@RequestMapping("/api") +public class StoreController { + + private final StoreService storeService; + + @Autowired + public StoreController(StoreService storeService) { + this.storeService = storeService; + } + + private UserModel getLoginUser(HttpSession session) { + + return (UserModel) session.getAttribute("loginInfo"); + } + + @GetMapping("/inStore/init") + public ResponseEntity> inStoreInit(HttpSession session) { + UserModel user = getLoginUser(session); + if (user == null || !"4".equals(user.getRole_class())) { + return ResponseEntity.badRequest().body(ApiResponse.fail("ログイン情報が無効です。再度ログインしてください。")); + } + + StoreForm storeForm = new StoreForm(); + return ResponseEntity.ok(ApiResponse.success(storeForm)); + } + + @PostMapping("/inStore/search") + public ResponseEntity> inStoreSearch(@RequestBody StoreForm storeForm, HttpSession session) { + UserModel user = getLoginUser(session); + if (user == null || !"4".equals(user.getRole_class())) { + return ResponseEntity.badRequest().body(ApiResponse.fail("ログイン情報が無効です。再度ログインしてください。")); + } + + SizaiModel sizai = new SizaiModel(); + sizai = storeService.getSizaiById(storeForm.getId()); + if (sizai == null || storeForm.getId() == 0) { + return ResponseEntity.badRequest().body(ApiResponse.fail("資材存在しません。")); + } + + storeForm.setSizai(sizai); + List soukoList = storeService.getSoukoList(); + storeForm.setSoukoList(soukoList); + + if (soukoList == null || soukoList.size() == 0) { + return ResponseEntity.badRequest().body(ApiResponse.fail("倉庫リスト取得失敗しました。")); + } + + return ResponseEntity.ok(ApiResponse.success(storeForm)); + } + + @PostMapping("/inStore/act") + public ResponseEntity> inStoreAct(@RequestBody StoreForm storeForm,HttpSession session) { + UserModel user = getLoginUser(session); + if (user == null || !"4".equals(user.getRole_class())) { + return ResponseEntity.badRequest().body(ApiResponse.fail("ログイン情報が無効です。再度ログインしてください。")); + } + + if (!"5".equals(storeForm.getSizai().getStatus())) { + return ResponseEntity.badRequest().body(ApiResponse.fail("資材の状態は「納品済」ではないため、入庫できません。")); + }else { + boolean inStoreFlag = storeService.inStoreAct(storeForm.getSizai()); + if (!inStoreFlag) { + + return ResponseEntity.badRequest().body(ApiResponse.fail("入庫失敗しました。")); + } + } + + SizaiModel sizai = storeService.getSizaiById(storeForm.getSizai().getId()); + storeForm.setSizai(sizai); + return ResponseEntity.ok(ApiResponse.success(storeForm)); + } + + @GetMapping("/outStore/init") + public ResponseEntity> outStoreInit(HttpSession session) { + UserModel user = getLoginUser(session); + if (user == null || !"4".equals(user.getRole_class())) { + return ResponseEntity.badRequest().body(ApiResponse.fail("ログイン情報が無効です。再度ログインしてください。")); + } + + StoreForm storeForm = new StoreForm(); + return ResponseEntity.ok(ApiResponse.success(storeForm)); + } + + @PostMapping("/outStore/search") + public ResponseEntity> outStoreSearch(@RequestBody StoreForm storeForm, HttpSession session) { + UserModel user = getLoginUser(session); + if (user == null || !"4".equals(user.getRole_class())) { + return ResponseEntity.badRequest().body(ApiResponse.fail("ログイン情報が無効です。再度ログインしてください。")); + } + + SizaiModel sizai = new SizaiModel(); + sizai = storeService.getSizaiById(storeForm.getId()); + if (sizai == null || storeForm.getId() == 0) { + return ResponseEntity.badRequest().body(ApiResponse.fail("資材存在しません。")); + } + + storeForm.setSizai(sizai); + List soukoList = storeService.getSoukoList(); + storeForm.setSoukoList(soukoList); + + if (soukoList == null || soukoList.size() == 0) { + return ResponseEntity.badRequest().body(ApiResponse.fail("倉庫リスト取得失敗しました。")); + } + + return ResponseEntity.ok(ApiResponse.success(storeForm)); + } + + @PostMapping("/outStore/act") + public ResponseEntity> outStoreAct(@RequestBody StoreForm storeForm,HttpSession session) { + UserModel user = getLoginUser(session); + if (user == null || !"4".equals(user.getRole_class())) { + return ResponseEntity.badRequest().body(ApiResponse.fail("ログイン情報が無効です。再度ログインしてください。")); + } + + if (!"6".equals(storeForm.getSizai().getStatus())) { + + return ResponseEntity.badRequest().body(ApiResponse.fail("資材の状態は「入庫済」ではないため、出庫できません。")); + } else { + + boolean outStoreFlag = storeService.outStoreAct(storeForm.getSizai()); + if (!outStoreFlag) { + + return ResponseEntity.badRequest().body(ApiResponse.fail("出庫失敗しました。")); + } + } + + SizaiModel sizai = storeService.getSizaiById(storeForm.getSizai().getId()); + storeForm.setSizai(sizai); + + return ResponseEntity.ok(ApiResponse.success(storeForm)); + } +}