feat: add shipping order and design management features

- Introduced new routes and controllers for managing shipping orders, including listing, saving, and previewing next order numbers.
- Added design management routes and controller for handling design requests, projects, tasks, and work logs.
- Implemented company code filtering for multi-tenancy support in both shipping order and design request functionalities.
- Enhanced the shipping plan routes to include listing and updating plans, improving overall shipping management capabilities.

These changes aim to provide comprehensive management features for shipping orders and design processes, facilitating better organization and tracking within the application.
This commit is contained in:
kjs
2026-03-19 15:08:31 +09:00
parent 1064397be2
commit 160b78e70f
20 changed files with 11212 additions and 37 deletions

View File

@@ -0,0 +1,67 @@
import express from "express";
import { authenticateToken } from "../middleware/authMiddleware";
import {
getDesignRequestList, getDesignRequestDetail, createDesignRequest, updateDesignRequest, deleteDesignRequest, addRequestHistory,
getProjectList, getProjectDetail, createProject, updateProject, deleteProject,
getTasksByProject, createTask, updateTask, deleteTask,
getWorkLogsByTask, createWorkLog, deleteWorkLog,
createSubItem, updateSubItem, deleteSubItem,
createIssue, updateIssue,
getEcnList, createEcn, updateEcn, deleteEcn,
getMyWork,
createPurchaseReq, createCoopReq, addCoopResponse,
} from "../controllers/designController";
const router = express.Router();
router.use(authenticateToken);
// 설계의뢰/설변요청 (DR/ECR)
router.get("/requests", getDesignRequestList);
router.get("/requests/:id", getDesignRequestDetail);
router.post("/requests", createDesignRequest);
router.put("/requests/:id", updateDesignRequest);
router.delete("/requests/:id", deleteDesignRequest);
router.post("/requests/:id/history", addRequestHistory);
// 설계 프로젝트
router.get("/projects", getProjectList);
router.get("/projects/:id", getProjectDetail);
router.post("/projects", createProject);
router.put("/projects/:id", updateProject);
router.delete("/projects/:id", deleteProject);
// 프로젝트 태스크
router.get("/projects/:projectId/tasks", getTasksByProject);
router.post("/projects/:projectId/tasks", createTask);
router.put("/tasks/:taskId", updateTask);
router.delete("/tasks/:taskId", deleteTask);
// 작업일지
router.get("/tasks/:taskId/work-logs", getWorkLogsByTask);
router.post("/tasks/:taskId/work-logs", createWorkLog);
router.delete("/work-logs/:workLogId", deleteWorkLog);
// 태스크 하위항목
router.post("/tasks/:taskId/sub-items", createSubItem);
router.put("/sub-items/:subItemId", updateSubItem);
router.delete("/sub-items/:subItemId", deleteSubItem);
// 태스크 이슈
router.post("/tasks/:taskId/issues", createIssue);
router.put("/issues/:issueId", updateIssue);
// ECN (설변통보)
router.get("/ecn", getEcnList);
router.post("/ecn", createEcn);
router.put("/ecn/:id", updateEcn);
router.delete("/ecn/:id", deleteEcn);
// 나의 업무
router.get("/my-work", getMyWork);
// 구매요청 / 협업요청
router.post("/work-logs/:workLogId/purchase-reqs", createPurchaseReq);
router.post("/work-logs/:workLogId/coop-reqs", createCoopReq);
router.post("/coop-reqs/:coopReqId/responses", addCoopResponse);
export default router;

View File

@@ -0,0 +1,21 @@
/**
* 출하지시 라우트
*/
import { Router } from "express";
import { authenticateToken } from "../middleware/authMiddleware";
import * as shippingOrderController from "../controllers/shippingOrderController";
const router = Router();
router.use(authenticateToken);
router.get("/list", shippingOrderController.getList);
router.get("/preview-no", shippingOrderController.previewNextNo);
router.post("/save", shippingOrderController.save);
router.post("/delete", shippingOrderController.remove);
// 모달 왼쪽 패널 데이터 소스
router.get("/source/shipment-plan", shippingOrderController.getShipmentPlanSource);
router.get("/source/sales-order", shippingOrderController.getSalesOrderSource);
router.get("/source/item", shippingOrderController.getItemSource);
export default router;

View File

@@ -10,10 +10,16 @@ const router = Router();
router.use(authenticateToken);
// 출하계획 목록 조회 (관리 화면용)
router.get("/list", shippingPlanController.getList);
// 품목별 집계 + 기존 출하계획 조회
router.get("/aggregate", shippingPlanController.getAggregate);
// 출하계획 일괄 저장
router.post("/batch", shippingPlanController.batchSave);
// 출하계획 단건 수정
router.put("/:id", shippingPlanController.updatePlan);
export default router;