대시보드 구현 완료 세세한 오류 수정 진행중
Build & Deploy to K8s / build-and-deploy (push) Successful in 5m4s

This commit is contained in:
2026-04-19 21:15:25 +09:00
parent 937505ab28
commit b3ad787179
70 changed files with 4366 additions and 1368 deletions
@@ -15,7 +15,7 @@ public class DashboardController {
private final DashboardService dashboardService;
// ═══ 대시보드 CRUD ═══
// ═══ 대시보드 CRUD (MENU_INFO 단일 본체) ═══
@GetMapping
public ResponseEntity<ApiResponse<Map<String, Object>>> getDashboardList(
@@ -33,11 +33,11 @@ public class DashboardController {
return ResponseEntity.ok(ApiResponse.success(dashboardService.getDashboardList(params)));
}
@GetMapping("/{dashboardId}")
@GetMapping("/{objid}")
public ResponseEntity<ApiResponse<Map<String, Object>>> getDashboardInfo(
@PathVariable String dashboardId) {
@PathVariable String objid) {
Map<String, Object> params = new HashMap<>();
params.put("dashboard_id", dashboardId);
params.put("objid", objid);
Map<String, Object> result = dashboardService.getDashboardInfo(params);
if (result == null) {
return ResponseEntity.ok(ApiResponse.error("대시보드를 찾을 수 없습니다"));
@@ -55,23 +55,23 @@ public class DashboardController {
return ResponseEntity.ok(ApiResponse.success(dashboardService.insertDashboard(body)));
}
@PutMapping("/{dashboardId}")
@PutMapping("/{objid}")
public ResponseEntity<ApiResponse<Void>> updateDashboard(
@PathVariable String dashboardId,
@PathVariable String objid,
@RequestAttribute("user_id") String userId,
@RequestBody Map<String, Object> body) {
body.put("dashboard_id", dashboardId);
body.put("objid", objid);
body.put("user_id", userId);
dashboardService.updateDashboard(body);
return ResponseEntity.ok(ApiResponse.success(null, "수정 완료"));
}
@DeleteMapping("/{dashboardId}")
@DeleteMapping("/{objid}")
public ResponseEntity<ApiResponse<Void>> deleteDashboard(
@PathVariable String dashboardId,
@PathVariable String objid,
@RequestAttribute("user_id") String userId) {
Map<String, Object> params = new HashMap<>();
params.put("dashboard_id", dashboardId);
params.put("objid", objid);
params.put("user_id", userId);
dashboardService.deleteDashboard(params);
return ResponseEntity.ok(ApiResponse.success(null, "삭제 완료"));
@@ -79,36 +79,36 @@ public class DashboardController {
// ═══ 카드 CRUD ═══
@GetMapping("/{dashboardId}/cards")
@GetMapping("/{objid}/cards")
public ResponseEntity<ApiResponse<List<Map<String, Object>>>> getDashboardCards(
@PathVariable String dashboardId) {
@PathVariable String objid) {
Map<String, Object> params = new HashMap<>();
params.put("dashboard_id", dashboardId);
params.put("menu_objid", objid);
return ResponseEntity.ok(ApiResponse.success(dashboardService.getDashboardCardList(params)));
}
@PostMapping("/{dashboardId}/cards")
@PostMapping("/{objid}/cards")
public ResponseEntity<ApiResponse<Map<String, Object>>> insertDashboardCard(
@PathVariable String dashboardId,
@PathVariable String objid,
@RequestBody Map<String, Object> body) {
body.put("dashboard_id", dashboardId);
body.put("menu_objid", objid);
return ResponseEntity.ok(ApiResponse.success(dashboardService.insertDashboardCard(body)));
}
@PutMapping("/{dashboardId}/cards/{cardId}")
@PutMapping("/{objid}/cards/{cardId}")
public ResponseEntity<ApiResponse<Void>> updateDashboardCard(
@PathVariable String dashboardId,
@PathVariable String objid,
@PathVariable String cardId,
@RequestBody Map<String, Object> body) {
body.put("dashboard_id", dashboardId);
body.put("menu_objid", objid);
body.put("card_id", cardId);
dashboardService.updateDashboardCard(body);
return ResponseEntity.ok(ApiResponse.success(null));
}
@DeleteMapping("/{dashboardId}/cards/{cardId}")
@DeleteMapping("/{objid}/cards/{cardId}")
public ResponseEntity<ApiResponse<Void>> deleteDashboardCard(
@PathVariable String dashboardId,
@PathVariable String objid,
@PathVariable String cardId) {
Map<String, Object> params = new HashMap<>();
params.put("card_id", cardId);
@@ -116,23 +116,11 @@ public class DashboardController {
return ResponseEntity.ok(ApiResponse.success(null));
}
@PutMapping("/{dashboardId}/cards/batch")
@PutMapping("/{objid}/cards/batch")
public ResponseEntity<ApiResponse<Void>> updateCardPositions(
@PathVariable String dashboardId,
@PathVariable String objid,
@RequestBody Map<String, Object> body) {
dashboardService.updateCardPositions(body);
return ResponseEntity.ok(ApiResponse.success(null, "일괄 업데이트 완료"));
}
// ═══ 사이드바 메뉴 ═══
@GetMapping("/sidebar/menu")
public ResponseEntity<ApiResponse<List<Map<String, Object>>>> getSidebarMenu(
@RequestAttribute("company_code") String companyCode,
@RequestAttribute("user_id") String userId) {
Map<String, Object> params = new HashMap<>();
params.put("company_code", companyCode);
params.put("user_id", userId);
return ResponseEntity.ok(ApiResponse.success(dashboardService.getSidebarMenu(params)));
}
}
@@ -17,7 +17,7 @@ public class DashboardService extends BaseService {
private static final String NS = "dashboard.";
// ═══ 대시보드 CRUD ═══
// ═══ 대시보드 CRUD (MENU_INFO 단일 본체) ═══
public Map<String, Object> getDashboardList(Map<String, Object> params) {
commonService.applyPagination(params);
@@ -32,17 +32,32 @@ public class DashboardService extends BaseService {
@Transactional
public Map<String, Object> insertDashboard(Map<String, Object> params) {
String dashboardId = "dash_" + UUID.randomUUID().toString().replace("-", "").substring(0, 12);
params.put("dashboard_id", dashboardId);
if (params.get("icon") == null) {
params.put("icon", "\uD83D\uDCCB");
}
if (params.get("display_order") == null) {
params.put("display_order", 0);
String objid = String.valueOf(System.currentTimeMillis());
params.put("objid", objid);
params.put("writer", params.get("user_id"));
// 개인 대시보드 여부: is_personal=true 이면 USER_ID 채움, 아니면 NULL (회사 공용)
Object isPersonal = params.get("is_personal");
boolean personal = isPersonal != null
&& (Boolean.TRUE.equals(isPersonal) || "true".equalsIgnoreCase(String.valueOf(isPersonal)));
if (!personal) {
params.put("user_id", null);
}
// 회사별 자동 시퀀스 = URL. COMPANY_CODE 내 /숫자 형 URL 중 최대값 + 1
Integer nextSeq = sqlSession.selectOne(NS + "getNextMenuSeq", params);
if (nextSeq == null) nextSeq = 1;
String menuUrl = "/" + nextSeq;
params.put("seq", String.valueOf(nextSeq));
params.put("menu_url", menuUrl);
sqlSession.insert(NS + "insertDashboard", params);
Map<String, Object> result = new HashMap<>();
result.put("dashboard_id", dashboardId);
result.put("objid", objid);
result.put("dashboard_id", objid); // 프론트 하위호환
result.put("menu_url", menuUrl);
result.put("seq", nextSeq);
return result;
}
@@ -97,10 +112,4 @@ public class DashboardService extends BaseService {
}
}
}
// ═══ 사이드바 메뉴 ═══
public List<Map<String, Object>> getSidebarMenu(Map<String, Object> params) {
return sqlSession.selectList(NS + "getSidebarMenu", params);
}
}