박정하 박정하 02-11
250211 박정하 스케줄용 모달 수정
@86c92b3ac47fcf97118f7c882dfc0d6448444ce9
src/main/java/com/takensoft/taken_bi_manager/common/code/dao/CmmnCodeDAO.java
--- src/main/java/com/takensoft/taken_bi_manager/common/code/dao/CmmnCodeDAO.java
+++ src/main/java/com/takensoft/taken_bi_manager/common/code/dao/CmmnCodeDAO.java
@@ -2,10 +2,10 @@
 
 import java.util.List;
 
+import com.takensoft.taken_bi_manager.common.vo.HierachyVO;
 import org.apache.ibatis.annotations.Mapper;
 
 import com.takensoft.taken_bi_manager.common.code.vo.CmmnCode;
-import com.takensoft.taken_bi_manager.user.member.vo.Member;
 
 /**
  * @author 김성원
@@ -15,13 +15,13 @@
  */
 @Mapper
 public interface CmmnCodeDAO {
-	
 	/**
 	 * @author 김성원
 	 * @since 2021.01.10
 	 * 
 	 * 그룹아이디밑 코드 리스트 가져오기
 	 */
-	 public List<CmmnCode> getCodeListByGroupId(String groupId) throws Exception;
+	public List<CmmnCode> getCodeListByGroupId(String groupId) throws Exception;
 
-}
+	public List<HierachyVO> findChildNode(String id);
+}
(파일 끝에 줄바꿈 문자 없음)
src/main/java/com/takensoft/taken_bi_manager/common/code/service/CmmnCodeService.java
--- src/main/java/com/takensoft/taken_bi_manager/common/code/service/CmmnCodeService.java
+++ src/main/java/com/takensoft/taken_bi_manager/common/code/service/CmmnCodeService.java
@@ -3,14 +3,16 @@
 import java.util.List;
 
 import com.takensoft.taken_bi_manager.common.code.vo.CmmnCode;
+import com.takensoft.taken_bi_manager.common.vo.HierachyVO;
 
 public interface CmmnCodeService {
-
 	/**
 	 * @author 김성원
 	 * @since 2024.01.19
 	 * 
 	 * 공통코드 리스트 가져오기
 	 */
-	public List<CmmnCode> getCodeListByGroupId(String groupId) throws Exception;	
-}
+	public List<CmmnCode> getCodeListByGroupId(String groupId) throws Exception;
+
+	public List<HierachyVO> findChildNode(String id) throws Exception;
+}
(파일 끝에 줄바꿈 문자 없음)
src/main/java/com/takensoft/taken_bi_manager/common/code/service/impl/CmmnCodeServiceImpl.java
--- src/main/java/com/takensoft/taken_bi_manager/common/code/service/impl/CmmnCodeServiceImpl.java
+++ src/main/java/com/takensoft/taken_bi_manager/common/code/service/impl/CmmnCodeServiceImpl.java
@@ -2,6 +2,7 @@
 
 import java.util.List;
 
+import com.takensoft.taken_bi_manager.common.vo.HierachyVO;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -11,7 +12,6 @@
 
 @Service
 public class CmmnCodeServiceImpl implements CmmnCodeService {
-	
 	@Autowired
 	private CmmnCodeDAO cmmnCodeDAO;
 
@@ -21,4 +21,13 @@
 		return cmmnCodeDAO.getCodeListByGroupId(groupId);
 	}
 
-}
+	@Override
+	public List<HierachyVO> findChildNode(String id) throws Exception {
+		List<HierachyVO> childList = cmmnCodeDAO.findChildNode(id);
+		for(HierachyVO vo : childList) {
+			List<HierachyVO> child = findChildNode(vo.getId());
+			vo.setChildList(child);
+		}
+		return childList;
+	}
+}
(파일 끝에 줄바꿈 문자 없음)
src/main/java/com/takensoft/taken_bi_manager/common/code/vo/CmmnCode.java
--- src/main/java/com/takensoft/taken_bi_manager/common/code/vo/CmmnCode.java
+++ src/main/java/com/takensoft/taken_bi_manager/common/code/vo/CmmnCode.java
@@ -14,8 +14,6 @@
 @Getter
 @Setter
 public class CmmnCode {
-	
-	
 	// 콩통코드  
 	private String cmmnCode;
 	
@@ -48,5 +46,4 @@
 		
 	// 수정자 ID
 	private String updtId;
-
-}
+}
(파일 끝에 줄바꿈 문자 없음)
 
src/main/java/com/takensoft/taken_bi_manager/common/schedule/dao/ScheduleDAO.java (deleted)
--- src/main/java/com/takensoft/taken_bi_manager/common/schedule/dao/ScheduleDAO.java
@@ -1,68 +0,0 @@
-package com.takensoft.taken_bi_manager.common.schedule.dao;
-
-import com.takensoft.taken_bi_manager.common.schedule.vo.Schedule;
-import com.takensoft.taken_bi_manager.common.vo.CustomeResultMap;
-import com.takensoft.taken_bi_manager.common.vo.SearchVO;
-import org.apache.ibatis.annotations.Mapper;
-
-import java.util.HashMap;
-import java.util.List;
-
-@Mapper
-public interface ScheduleDAO {
-	/**
-	 * @author 김성원
-	 * @since 2021.01.24
-	 *
-	 * 스케줄 등록
-	 */
-	 public int conflictInsertSchedule (Schedule schedule) throws Exception;
-
-	/**
-	 * @author 김성원
-	 * @since 2021.01.24
-	 *
-	 * 스케줄 목록 조회
-	 */
-	public List<Schedule> selectScheduleList (SearchVO searchVO) throws Exception;
-
-	/**
-	 * @author 김성원
-	 * @since 2021.01.24
-	 *
-	 * 스케줄 목록 개수 조회
-	 */
-	public int selectScheduleListCount (SearchVO searchVO) throws Exception;
-
-	/**
-	 * @author 김성원
-	 * @since 2021.01.24
-	 *
-	 * 스케줄 상세 조회
-	 */
-	public Schedule selectSchedule (String id) throws Exception;
-
-	/**
-	 * @author 박정하
-	 * @since 2024.10.04
-	 *
-	 * Diagram Id로 Schedule Id 구하기
-	 */
-	public String selectScheduleIdRead(String diagramId) throws Exception;
-
-	/**
-	 * @author 박정하
-	 * @since 2024.10.04
-	 *
-	 * 스케줄 정보 삭제
-	 */
-	public int deleteSchedule(String schdulId) throws Exception;
-
-	/**
-	 * @author 박정하
-	 * @since 2024.10.04
-	 *
-	 * 스케줄 상태 변경
-	 */
-	public int scheduleSttusChange(HashMap<String, Object> params) throws Exception;
-}(파일 끝에 줄바꿈 문자 없음)
 
src/main/java/com/takensoft/taken_bi_manager/common/schedule/service/impl/ScheduleServiceImpl.java (deleted)
--- src/main/java/com/takensoft/taken_bi_manager/common/schedule/service/impl/ScheduleServiceImpl.java
@@ -1,91 +0,0 @@
-package com.takensoft.taken_bi_manager.common.schedule.service.impl;
-
-import com.takensoft.taken_bi_manager.common.schedule.dao.ScheduleDAO;
-import com.takensoft.taken_bi_manager.common.schedule.service.ScheduleService;
-import com.takensoft.taken_bi_manager.common.schedule.vo.Schedule;
-import com.takensoft.taken_bi_manager.common.util.CommonUtil;
-import com.takensoft.taken_bi_manager.common.util.StringUtil;
-import com.takensoft.taken_bi_manager.common.vo.CustomeResultMap;
-import com.takensoft.taken_bi_manager.common.vo.SearchVO;
-import com.takensoft.taken_bi_manager.jobs.service.JobService;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import java.util.HashMap;
-
-@Service
-public class ScheduleServiceImpl implements ScheduleService {
-    @Autowired
-    private ScheduleDAO scheduleDAO;
-
-    @Autowired
-    private JobService jobService;
-
-    /*
-     * 스케줄 등록
-     */
-    @Override
-    public int conflictInsertSchedule(Schedule schedule) throws Exception {
-        String group_id = jobService.insertJobGroup(schedule.getJobGroup()).getResultData().get("group_id").toString();
-        schedule.setGroup_id(group_id);
-        if(StringUtil.isEmpty(schedule.getSchdul_id())){
-            schedule.setSchdul_id(CommonUtil.getRandKey("SCHEDULE"));
-            schedule.setCreatId(CommonUtil.getLoginUserId());
-        }else{
-            schedule.setUpdtId(CommonUtil.getLoginUserId());
-        }
-        return scheduleDAO.conflictInsertSchedule(schedule);
-    }
-
-    /*
-     * 스케줄 목록 조회
-     */
-    @Override
-    public CustomeResultMap selectScheduleList(SearchVO searchVO) throws Exception {
-        int totalRows = scheduleDAO.selectScheduleListCount(searchVO);
-        searchVO.setTotalRows(totalRows);
-        CustomeResultMap map = new CustomeResultMap();
-        map.getResultData().put("scheduleList", scheduleDAO.selectScheduleList(searchVO));
-        map.getResultData().put("searchVO", searchVO);
-        return map;
-    }
-
-    /*
-     * 스케줄 상세 조회
-     */
-    @Override
-    public Schedule selectSchedule(Schedule schedule) throws Exception {
-        Schedule sc = scheduleDAO.selectSchedule(schedule.getSchdul_id());
-        sc.setJobGroup(jobService.selectJobGroup(sc.getGroup_id()));
-        return sc;
-    }
-
-    /**
-     * @author 박정하
-     * @since 2024.10.04
-     *
-     * 스케줄 정보 삭제
-     */
-    @Override
-    public CustomeResultMap deleteSchedule(String schdulId) throws Exception {
-        CustomeResultMap result = new CustomeResultMap();
-        result.getResultData().put("updateResult", scheduleDAO.deleteSchedule(schdulId));
-        return result;
-    }
-
-    /**
-     * @author 박정하
-     * @since 2024.10.04
-     *
-     * 스케줄 상태 변경
-     */
-    @Override
-    public CustomeResultMap scheduleSttusChange(String schdulId, String schdulSttus) throws Exception {
-        CustomeResultMap result = new CustomeResultMap();
-        HashMap<String, Object> params = new HashMap<>();
-        params.put("schdulId", schdulId);
-        params.put("schdulSttus", schdulSttus);
-        result.getResultData().put("updateResult", scheduleDAO.scheduleSttusChange(params));
-        return result;
-    }
-}(파일 끝에 줄바꿈 문자 없음)
 
src/main/java/com/takensoft/taken_bi_manager/common/schedule/vo/Schedule.java (deleted)
--- src/main/java/com/takensoft/taken_bi_manager/common/schedule/vo/Schedule.java
@@ -1,86 +0,0 @@
-package com.takensoft.taken_bi_manager.common.schedule.vo;
-
-import com.takensoft.taken_bi_manager.jobs.vo.JobGroup;
-import lombok.Getter;
-import lombok.Setter;
-
-import java.io.Serializable;
-import java.sql.Timestamp;
-import java.util.*;
-
-/**
- * @author 김성원 
- * @since 2021.12.28
- * 
- * 스케줄러  Domain 입니다.
- */
-@Getter
-@Setter
-public class Schedule implements Serializable {
-	// 시리얼 버전
-	private static final long serialVersionUID = 1L;
-
-	// 스케줄러 고유 ID
-	private String schdul_id;
-
-	// 스케줄러 그룹 id
-	private String group_id;
-
-	// 스케줄러 명
-	private String sj;
-
-	// 스케줄러 명
-	private String dc;
-
-	// 스케쥴링
-	private String cron;
-
-	// cron 스케쥴링 한글
-	private String cron_chrctr;
-	
-	// 스케쥴링 상태
-	private String schdul_sttus = "run";
-
-	// 생성일
-	private Timestamp creatDt;
-
-	// 생성자ID
-	private String creatId;
-
-	// 수정일
-	private Timestamp updtDt;
-
-	// 수정자 ID
-	private String updtId;
-	
-	/**
-	 * 주기적 인지 아닌지
-	 * true: 주기적
-	 * false: 일시적
-	 */
-	private boolean cycle_at;
-	
-	/**
-	 * 사용여부(삭제 여부)
-	 */
-	private boolean use_at = true;
-	
-	/**
-	 * 에러 존재 유무
-	 */
-	private boolean error_at = false;
-
-	private boolean isUsehighClassOption = false;
-
-	private JobGroup jobGroup;
-	
-	/**
-	 * 에러 로그 리스트
-	 */
-	private List<ScheduleLog> ScheduleLogs;
-
-	public Schedule(){
-		ScheduleLogs = new ArrayList<>();
-		jobGroup = new JobGroup();
-	}
-}
 
src/main/java/com/takensoft/taken_bi_manager/common/schedule/vo/ScheduleLog.java (deleted)
--- src/main/java/com/takensoft/taken_bi_manager/common/schedule/vo/ScheduleLog.java
@@ -1,66 +0,0 @@
-package com.takensoft.taken_bi_manager.common.schedule.vo;
-
-import lombok.Getter;
-import lombok.Setter;
-
-import java.io.Serializable;
-
-/**
- * @author 김성원 
- * @since 2024 02.26
- * 
- * 스케줄러  Domain 상세정보 입니다.
- */
-@Getter
-@Setter
-public class ScheduleLog implements Serializable {
-
-	/**
-	 * 시리얼 버전
-	 */	
-	private static final long serialVersionUID = 1L;
-	
-	/**
-	 * 스케줄러 고유 ID 
-	 */	
-	private String schdulId;
-	
-	
-	/**
-	 * 실행일
-	 */	
-	private String executDe;
-	
-	
-	/**
-	 * 스케쥴링 상태
-	 */	
-	private String schdulSttus;
-	
-	
-	/**
-	 * 로그정보
-	 */	
-	private String logInfo;
-	
-	
-	/**
-	 *  Job 의 타입코드입니다.(공통코드 참조예정)
-	 */
-	private String jobCode;
-	
-	
-	/**
-	 *  실행 순서
-	 */
-	private int indx;
-	
-		
-	/**
-	 *  오류 사항 확인 유무
-	 */
-	private boolean success;
-
-	
-	
-}
src/main/java/com/takensoft/taken_bi_manager/common/util/CommonUtil.java
--- src/main/java/com/takensoft/taken_bi_manager/common/util/CommonUtil.java
+++ src/main/java/com/takensoft/taken_bi_manager/common/util/CommonUtil.java
@@ -3,9 +3,6 @@
 
 
 import java.io.IOException;
-import java.lang.reflect.Field;
-import java.lang.reflect.Modifier;
-import java.math.BigDecimal;
 import java.net.InetAddress;
 import java.net.InetSocketAddress;
 import java.net.Socket;
@@ -13,13 +10,11 @@
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.Arrays;
-import java.util.Collection;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
-import java.util.Set;
 import java.util.UUID;
 
 import jakarta.servlet.http.HttpServletRequest;
@@ -36,7 +31,6 @@
 import com.fasterxml.jackson.databind.JsonMappingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.SerializationFeature;
-import com.takensoft.taken_bi_manager.user.member.vo.Member;
 
 public class CommonUtil {
 
src/main/java/com/takensoft/taken_bi_manager/controller/cmmn/CommonController.java
--- src/main/java/com/takensoft/taken_bi_manager/controller/cmmn/CommonController.java
+++ src/main/java/com/takensoft/taken_bi_manager/controller/cmmn/CommonController.java
@@ -6,7 +6,8 @@
 import com.takensoft.taken_bi_manager.common.connection.ehojoPlus.vo.ConnectionEhojoVO;
 import com.takensoft.taken_bi_manager.common.connection.db.vo.ConnectionDB;
 import com.takensoft.taken_bi_manager.common.file.vo.FileInfo;
-import com.takensoft.taken_bi_manager.common.schedule.vo.Schedule;
+import com.takensoft.taken_bi_manager.schedule.dto.NodeDTO;
+import com.takensoft.taken_bi_manager.schedule.vo.ScheduleVO;
 import com.takensoft.taken_bi_manager.common.stylesheet.vo.Background_style;
 import com.takensoft.taken_bi_manager.common.stylesheet.vo.BorderStyle;
 import com.takensoft.taken_bi_manager.common.stylesheet.vo.FontStyle;
@@ -18,8 +19,6 @@
 import com.takensoft.taken_bi_manager.data.vo.DataTable;
 import com.takensoft.taken_bi_manager.data.vo.Dataset;
 import com.takensoft.taken_bi_manager.data.vo.DatasetPost;
-import com.takensoft.taken_bi_manager.diagram.vo.DiagramVO;
-import com.takensoft.taken_bi_manager.diagram.vo.NodeVO;
 import com.takensoft.taken_bi_manager.jobs.vo.JobGroup;
 import com.takensoft.taken_bi_manager.jobs.vo.JobItm;
 import com.takensoft.taken_bi_manager.jobs.vo.item.DataCheck;
@@ -45,24 +44,28 @@
 
 	@Autowired
     private CmmnCodeService cmmnCodeService;
-	
-	
+
 	/*
 	 * 공통코드 리스트 요청
 	 */
 	@PostMapping(path = "/getCodeList.json")
     public CustomeResultMap getCodeList(@RequestBody HashMap<String, Object> params) throws Exception {
-	  
 		CustomeResultMap map = new CustomeResultMap();
-
-		// 코드리스트  
-		map.getResultData().put("codeList",cmmnCodeService.getCodeListByGroupId(params.get("groupCode").toString()));		
-		
-	
+		// 코드리스트
+		map.getResultData().put("codeList",cmmnCodeService.getCodeListByGroupId(params.get("groupCode").toString()));
         return map;
-    }	
-	
-	
+    }
+
+	/*
+	 * 공통코드 리스트 요청 (트리형)
+	 */
+	@PostMapping(path = "/getCodeListByTree.json")
+	public CustomeResultMap getCodeListByTree(@RequestBody HashMap<String, Object> params) throws Exception {
+		CustomeResultMap map = new CustomeResultMap();
+		map.getResultData().put("codeList",cmmnCodeService.findChildNode(params.get("codeId").toString()));
+		return map;
+	}
+
 	@PostMapping(path = "/getDataBaseTypeList.json")
     public CustomeResultMap getDataBaseTypeList() throws Exception {
 	  
@@ -90,7 +93,6 @@
 		map.getResultData().put("connectionApi", new ConnectionApi());
 		map.getResultData().put("dataTable", new DataTable());
 		map.getResultData().put("dataCheck", new DataCheck());
-		map.getResultData().put("schedule", new Schedule());
 		map.getResultData().put("dataset", new Dataset());
 		map.getResultData().put("datasetPost", new DatasetPost());
 		map.getResultData().put("filterItem", new FilterItem());
@@ -102,9 +104,9 @@
 		// 메타데이터 표준단어
 		map.getResultData().put("stdWrm", new StdWrd());
 
-		// NODE 아이템
-		map.getResultData().put("diagram", new DiagramVO());
-		map.getResultData().put("node", new NodeVO());
+		// 스케줄 아이템
+		map.getResultData().put("schedule", new ScheduleVO());
+		map.getResultData().put("node", new NodeDTO());
 
 		// 레이아웃 처리 아이템
 		map.getResultData().put("customSplitter", new CustomSplitterVO());
 
src/main/java/com/takensoft/taken_bi_manager/controller/cmmn/ScheduleController.java (deleted)
--- src/main/java/com/takensoft/taken_bi_manager/controller/cmmn/ScheduleController.java
@@ -1,65 +0,0 @@
-package com.takensoft.taken_bi_manager.controller.cmmn;
-
-import com.takensoft.taken_bi_manager.common.schedule.service.ScheduleService;
-import com.takensoft.taken_bi_manager.common.schedule.vo.Schedule;
-import com.takensoft.taken_bi_manager.common.vo.CustomeResultMap;
-import com.takensoft.taken_bi_manager.common.vo.SearchVO;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.*;
-
-@RestController
-@RequestMapping("/schedule")
-public class ScheduleController {
-	@Autowired
-    private ScheduleService scheduleService;
-
-	/*
-	 * 스케줄 등록
-	 */
-	@PostMapping(path = "/conflictInsertSchedule.json")
-    public CustomeResultMap conflictInsertSchedule(@RequestBody Schedule schedule) throws Exception {
-		CustomeResultMap map = new CustomeResultMap();
-		scheduleService.conflictInsertSchedule(schedule);
-        return map;
-    }
-
-	/*
-	 * 스케줄 목록 조회
-	 */
-	@PostMapping(path = "/selectScheduleList.json")
-	public CustomeResultMap selectScheduleList(@RequestBody SearchVO searchVO) throws Exception {
-		return scheduleService.selectScheduleList(searchVO);
-	}
-
-	/*
-	 * 스케줄 상세 조회
-	 */
-	@PostMapping(path = "/selectSchedule.json")
-	public CustomeResultMap selectSchedule(@RequestBody Schedule schedule) throws Exception {
-		CustomeResultMap map = new CustomeResultMap();
-		map.getResultData().put("schedule", scheduleService.selectSchedule(schedule));
-		return map;
-	}
-
-	/**
-	 * @author 박정하
-	 * @since 2024.10.04
-	 *
-	 * 스케줄 정보 삭제
-	 */
-	@GetMapping(value="/deleteSchedule/{schdulId}")
-	public CustomeResultMap deleteSchedule(@PathVariable String schdulId) throws Exception {
-		return scheduleService.deleteSchedule(schdulId);
-	}
-
-	/**
-	 * @author 박정하
-	 * @since 2024.10.04
-	 *
-	 * 스케줄 상태 변경
-	 */
-	@GetMapping(value="/scheduleSttusChange/{schdulId}/{schdulSttus}")
-	public CustomeResultMap scheduleSttusChange(@PathVariable String schdulId, @PathVariable String schdulSttus) throws Exception {
-		return scheduleService.scheduleSttusChange(schdulId, schdulSttus);
-	}
-}(파일 끝에 줄바꿈 문자 없음)
src/main/java/com/takensoft/taken_bi_manager/controller/data/DataController.java
--- src/main/java/com/takensoft/taken_bi_manager/controller/data/DataController.java
+++ src/main/java/com/takensoft/taken_bi_manager/controller/data/DataController.java
@@ -6,8 +6,6 @@
 import com.takensoft.taken_bi_manager.jobs.service.JobService;
 import com.takensoft.taken_bi_manager.jobs.vo.JobGroup;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.ModelAttribute;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -18,10 +16,7 @@
 import com.takensoft.taken_bi_manager.common.connection.db.vo.ConnectionDB;
 import com.takensoft.taken_bi_manager.common.vo.CustomeResultMap;
 import com.takensoft.taken_bi_manager.common.vo.SearchVO;
-import com.takensoft.taken_bi_manager.common.vo.SystemCode.DatabaseType;
 import com.takensoft.taken_bi_manager.data.service.DataService;
-import com.takensoft.taken_bi_manager.user.member.servie.LoginService;
-import com.takensoft.taken_bi_manager.user.member.vo.Member;
 
 import java.util.List;
 import java.util.Map;
src/main/java/com/takensoft/taken_bi_manager/controller/jobs/JobController.java
--- src/main/java/com/takensoft/taken_bi_manager/controller/jobs/JobController.java
+++ src/main/java/com/takensoft/taken_bi_manager/controller/jobs/JobController.java
@@ -2,9 +2,7 @@
 
 
 import com.takensoft.taken_bi_manager.common.file.vo.FileInfo;
-import com.takensoft.taken_bi_manager.common.schedule.vo.Schedule;
-import com.takensoft.taken_bi_manager.common.vo.SearchVO;
-import com.takensoft.taken_bi_manager.data.service.DataService;
+import com.takensoft.taken_bi_manager.schedule.vo.ScheduleVO;
 import com.takensoft.taken_bi_manager.data.vo.DataTable;
 import com.takensoft.taken_bi_manager.jobs.service.JobService;
 import com.takensoft.taken_bi_manager.jobs.vo.item.DataCheck;
@@ -43,7 +41,7 @@
 		map.getResultData().put("fileRead", new FileInfo()); // 하석형 추가
 		map.getResultData().put("dataTable", new DataTable());
 		map.getResultData().put("dataCheck", new DataCheck());
-		map.getResultData().put("schedule", new Schedule());
+		map.getResultData().put("schedule", new ScheduleVO());
 
         return map;
     }
src/main/java/com/takensoft/taken_bi_manager/controller/login/LoginController.java
--- src/main/java/com/takensoft/taken_bi_manager/controller/login/LoginController.java
+++ src/main/java/com/takensoft/taken_bi_manager/controller/login/LoginController.java
@@ -1,8 +1,6 @@
 package com.takensoft.taken_bi_manager.controller.login;
 
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.ModelAttribute;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -10,8 +8,8 @@
 
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.takensoft.taken_bi_manager.common.vo.CustomeResultMap;
-import com.takensoft.taken_bi_manager.user.member.servie.LoginService;
-import com.takensoft.taken_bi_manager.user.member.vo.Member;
+import com.takensoft.taken_bi_manager.user.servie.LoginService;
+import com.takensoft.taken_bi_manager.user.vo.Member;
 
 @RestController
 @RequestMapping("/")
src/main/java/com/takensoft/taken_bi_manager/department/dao/DeptUserDAO.java
--- src/main/java/com/takensoft/taken_bi_manager/department/dao/DeptUserDAO.java
+++ src/main/java/com/takensoft/taken_bi_manager/department/dao/DeptUserDAO.java
@@ -2,7 +2,7 @@
 
 import com.takensoft.taken_bi_manager.common.vo.SearchVO;
 import com.takensoft.taken_bi_manager.department.vo.DeptUserVO;
-import com.takensoft.taken_bi_manager.user.member.vo.Member;
+import com.takensoft.taken_bi_manager.user.vo.Member;
 import org.apache.ibatis.annotations.Mapper;
 
 import java.util.*;
src/main/java/com/takensoft/taken_bi_manager/department/service/DeptUserService.java
--- src/main/java/com/takensoft/taken_bi_manager/department/service/DeptUserService.java
+++ src/main/java/com/takensoft/taken_bi_manager/department/service/DeptUserService.java
@@ -2,7 +2,7 @@
 
 import com.takensoft.taken_bi_manager.common.vo.SearchVO;
 import com.takensoft.taken_bi_manager.department.vo.DeptUserVO;
-import com.takensoft.taken_bi_manager.user.member.vo.Member;
+import com.takensoft.taken_bi_manager.user.vo.Member;
 
 import java.util.*;
 
src/main/java/com/takensoft/taken_bi_manager/department/service/Impl/DeptUserServiceImpl.java
--- src/main/java/com/takensoft/taken_bi_manager/department/service/Impl/DeptUserServiceImpl.java
+++ src/main/java/com/takensoft/taken_bi_manager/department/service/Impl/DeptUserServiceImpl.java
@@ -4,7 +4,7 @@
 import com.takensoft.taken_bi_manager.department.dao.DeptUserDAO;
 import com.takensoft.taken_bi_manager.department.service.DeptUserService;
 import com.takensoft.taken_bi_manager.department.vo.DeptUserVO;
-import com.takensoft.taken_bi_manager.user.member.vo.Member;
+import com.takensoft.taken_bi_manager.user.vo.Member;
 import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
src/main/java/com/takensoft/taken_bi_manager/department/web/DeptController.java
--- src/main/java/com/takensoft/taken_bi_manager/department/web/DeptController.java
+++ src/main/java/com/takensoft/taken_bi_manager/department/web/DeptController.java
@@ -5,7 +5,7 @@
 import com.takensoft.taken_bi_manager.common.vo.SearchVO;
 import com.takensoft.taken_bi_manager.department.service.DeptService;
 import com.takensoft.taken_bi_manager.department.vo.DeptVO;
-import com.takensoft.taken_bi_manager.user.member.servie.MemberService;
+import com.takensoft.taken_bi_manager.user.servie.MemberService;
 import lombok.RequiredArgsConstructor;
 import org.springframework.http.HttpStatus;
 import org.springframework.web.bind.annotation.*;
src/main/java/com/takensoft/taken_bi_manager/department/web/DeptUserController.java
--- src/main/java/com/takensoft/taken_bi_manager/department/web/DeptUserController.java
+++ src/main/java/com/takensoft/taken_bi_manager/department/web/DeptUserController.java
@@ -5,7 +5,7 @@
 import com.takensoft.taken_bi_manager.common.vo.SearchVO;
 import com.takensoft.taken_bi_manager.department.service.DeptUserService;
 import com.takensoft.taken_bi_manager.department.vo.DeptUserVO;
-import com.takensoft.taken_bi_manager.user.member.vo.Member;
+import com.takensoft.taken_bi_manager.user.vo.Member;
 import lombok.RequiredArgsConstructor;
 import org.springframework.http.HttpStatus;
 import org.springframework.web.bind.annotation.*;
 
src/main/java/com/takensoft/taken_bi_manager/diagram/dao/DiagramDAO.java (deleted)
--- src/main/java/com/takensoft/taken_bi_manager/diagram/dao/DiagramDAO.java
@@ -1,87 +0,0 @@
-package com.takensoft.taken_bi_manager.diagram.dao;
-
-import com.takensoft.taken_bi_manager.common.schedule.vo.Schedule;
-import com.takensoft.taken_bi_manager.common.vo.SearchVO;
-import com.takensoft.taken_bi_manager.diagram.dto.DiagramListDTO;
-import com.takensoft.taken_bi_manager.diagram.vo.*;
-import org.apache.ibatis.annotations.Mapper;
-
-import java.util.HashMap;
-import java.util.List;
-
-@Mapper
-public interface DiagramDAO {
-    /**
-     * @author gkrhksdn
-     * @since 2024.01.23
-     *
-     * Diagram 데이터 조회
-     */
-    List<Schedule> dataSelectListAll() throws Exception;
-
-    Schedule scheduleList(HashMap<String,Object> params) throws Exception;
-
-    List<LogVO> logSelectListAll(SearchVO searchVO) throws Exception;
-    int logSelectListCnt(SearchVO searchVO) throws Exception;
-
-    List<LogVO> logSelectListAllID(HashMap<String,Object> params) throws Exception;
-
-    List<LogDetailVO> detaillogSelectListAll(SearchVO searchVO) throws Exception;
-    int detaillogSelectListCnt(SearchVO searchVO) throws Exception;
-
-    List<NodeVO> nodeList(String diagramId) throws Exception;
-
-    List<EdgeVO> lineList(String diagramId) throws Exception;
-
-    int diagramDataInsert(DiagramVO diagramVO) throws Exception;
-
-    int nodeDataInsert(NodeVO nodeVO) throws Exception;
-
-    int lineDataInsert(EdgeVO edgeVO) throws Exception;
-
-    int logDataInsert(LogVO logVO) throws Exception;
-
-    int logDataUpdate(LogVO logVO) throws Exception;
-
-    int logDetailDataInsert(LogDetailVO logDetailVO) throws Exception;
-
-    //dataset_post_id로 datasetID가져오기
-    String datasetIdSelect(HashMap<String,Object> params) throws Exception;
-
-    /**
-     * @author 하관우
-     * @since 2024.02.15
-     * 삭제를 위한 것들
-     * */
-
-    int nodeDelete(String params) throws Exception;
-
-    int nodeIdDelete(String params) throws Exception;
-
-    int edgeDelete(String params) throws Exception;
-
-    int edgeIdDelete(String params) throws Exception;
-
-    int diagramDelete(String params) throws Exception;
-
-    int logDelete(String params) throws  Exception;
-
-    int logDetailDelete(String params) throws Exception;
-
-    List<String> nodeSelectId(String params) throws Exception;
-
-    String ScheduleIdToGroubId(String params) throws Exception;
-
-    List<String> edgeSelectId(String params) throws Exception;
-
-    /**
-     * @author 박정하
-     * @since 2024.10.04
-     *
-     * Diagram 목록 조회
-     */
-    List<DiagramListDTO> diagramListRead(SearchVO searchVO) throws Exception;
-    int diagramListCountRead(SearchVO searchVO) throws Exception;
-
-    DiagramVO diagramDetailRead(String diagramId) throws Exception;
-}(파일 끝에 줄바꿈 문자 없음)
 
src/main/java/com/takensoft/taken_bi_manager/diagram/dto/DiagramDetailDTO.java (deleted)
--- src/main/java/com/takensoft/taken_bi_manager/diagram/dto/DiagramDetailDTO.java
@@ -1,17 +0,0 @@
-package com.takensoft.taken_bi_manager.diagram.dto;
-
-import com.takensoft.taken_bi_manager.common.schedule.vo.Schedule;
-import com.takensoft.taken_bi_manager.diagram.vo.DiagramVO;
-import lombok.Data;
-
-/**
- * @author 박정하
- * @since 2024.09.23
- *
- * 다이어그램 등록/수정을 위한 DTO
- */
-@Data
-public class DiagramDetailDTO {
-    private Schedule schedule;
-    private DiagramVO diagram;
-}(파일 끝에 줄바꿈 문자 없음)
 
src/main/java/com/takensoft/taken_bi_manager/diagram/dto/DiagramListDTO.java (deleted)
--- src/main/java/com/takensoft/taken_bi_manager/diagram/dto/DiagramListDTO.java
@@ -1,30 +0,0 @@
-package com.takensoft.taken_bi_manager.diagram.dto;
-
-import lombok.Data;
-
-import java.sql.Timestamp;
-
-/**
- * @author 박정하
- * @since 2024.10.04
- *
- * Diagram 목록 관련 DTO
- */
-@Data
-public class DiagramListDTO {
-    // 스케줄 아이디
-    private String schdul_id;
-    // 다이어그램 아이디
-    private String diagram_id;
-
-    // 제목 (Schedule - 스케줄 제목)
-    private String diagram_nm;
-    // 작성자 (DiagramVO - 생성자 ID)
-    private String creat_id;
-    // 작동일시 (Schedule - cron 스케쥴링 한글)
-    private String cron_chrctr;
-    // 등록일 (DiagramVO - 다이어그램 등록일)
-    private Timestamp creat_dt;
-    // 상태 (Schedule - 스케쥴링 상태)
-    private String schdul_sttus = "run";
-}(파일 끝에 줄바꿈 문자 없음)
 
src/main/java/com/takensoft/taken_bi_manager/diagram/service/Diagramservice.java (deleted)
--- src/main/java/com/takensoft/taken_bi_manager/diagram/service/Diagramservice.java
@@ -1,109 +0,0 @@
-package com.takensoft.taken_bi_manager.diagram.service;
-
-import com.takensoft.taken_bi_manager.common.schedule.vo.Schedule;
-import com.takensoft.taken_bi_manager.common.vo.CustomeResultMap;
-import com.takensoft.taken_bi_manager.common.vo.SearchVO;
-import com.takensoft.taken_bi_manager.diagram.dto.DiagramDetailDTO;
-import com.takensoft.taken_bi_manager.diagram.vo.*;
-import org.springframework.transaction.annotation.Propagation;
-import org.springframework.transaction.annotation.Transactional;
-
-import java.util.*;
-
-public interface Diagramservice {
-    /**
-     * @author 하관우
-     * @since 2024.01.23
-     *
-     * Diagram 전체 조회
-     */
-    List<Schedule> dataSelectListAll() throws Exception;
-
-    /**
-     * @author 하관우
-     * @since 2024.01.23
-     *
-     * log 조회
-     */
-    CustomeResultMap logSelectListAll(SearchVO searchVO) throws Exception;
-
-    /**
-     * @author 하관우
-     * @since 2024.01.23
-     *
-     * log detial 조회
-     */
-    CustomeResultMap detaillogSelectListAll(SearchVO searchVO) throws Exception;
-
-    /**
-     * @author 하관우
-     * @since 2024.01.23
-     *
-     * schedule 조회
-     */
-    Schedule scheduleList(HashMap<String,Object> params) throws Exception;
-
-    /**
-     * @author 하관우
-     * @since 2024.01.23
-     *
-     * node 조회
-     */
-    List<NodeVO> nodeList(String diagramId) throws Exception;
-
-    /**
-     * @author 하관우
-     * @since 2024.01.23
-     *
-     * line 조회
-     */
-    List<EdgeVO> lineList(String diagramId) throws Exception;
-
-    /**
-     * @author 하관우
-     * @since 2024.01.23
-     *
-     * 다이어그램의 모든 정보 등록
-     */
-    int dataInsert(DiagramDetailDTO diagramDetailDTO) throws Exception;
-
-    /**
-     * @author 하관우
-     * @since 2024.05.29
-     *
-     * 다이어그램의 모든 수정 등록
-     */
-    int dataEdit(DiagramDetailDTO diagramDetailDTO) throws Exception;
-
-    /**
-     * @author 하관우
-     * @since 2024.02.08
-     *
-     * 즉시계산
-     */
-    List<HashMap<String, Object>> operatorNow(DiagramVO diagramVO, String type) throws Exception;
-
-    /**
-     * @author 하관우
-     * @since 2024.02.15
-     *
-     * diagram_id를 가져와서 해당하는것들 삭제
-     */
-    int dataDelete(List<Schedule> scheduleList) throws Exception;
-
-    /**
-     * @author 박정하
-     * @since 2024.10.04
-     *
-     * Diagram 목록 조회
-     */
-    CustomeResultMap diagramListRead(SearchVO searchVO) throws Exception;
-
-    /**
-     * @author 박정하
-     * @since 2024.10.04
-     *
-     * Diagram 상세 조회
-     */
-    CustomeResultMap diagramDetailRead(String diagramId) throws Exception;
-}(파일 끝에 줄바꿈 문자 없음)
 
src/main/java/com/takensoft/taken_bi_manager/diagram/service/FilterService.java (deleted)
--- src/main/java/com/takensoft/taken_bi_manager/diagram/service/FilterService.java
@@ -1,17 +0,0 @@
-package com.takensoft.taken_bi_manager.diagram.service;
-
-import com.takensoft.taken_bi_manager.diagram.vo.NodeVO;
-
-/**
- * @author  : 박정하
- * @since   : 2024.09.25
- * 필터 관련 인터페이스
- */
-public interface FilterService {
-    /**
-     * @author  : 박정하
-     * @since   : 2024.09.25
-     * 필터 실행
-     */
-    NodeVO runFilter(NodeVO nodeVO) throws Exception;
-}(파일 끝에 줄바꿈 문자 없음)
 
src/main/java/com/takensoft/taken_bi_manager/diagram/service/impl/DiagramServiceImpl.java (deleted)
--- src/main/java/com/takensoft/taken_bi_manager/diagram/service/impl/DiagramServiceImpl.java
@@ -1,761 +0,0 @@
-package com.takensoft.taken_bi_manager.diagram.service.impl;
-
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.takensoft.taken_bi_manager.common.connection.api.dao.ConnectionApiDAO;
-import com.takensoft.taken_bi_manager.common.connection.api.service.ConnectionApiService;
-import com.takensoft.taken_bi_manager.common.connection.api.vo.ConnectionApi;
-import com.takensoft.taken_bi_manager.common.connection.db.vo.ConnectionDB;
-import com.takensoft.taken_bi_manager.common.connection.ehojoPlus.service.ConnectEhojoPlusService;
-import com.takensoft.taken_bi_manager.common.connection.ehojoPlus.vo.ConnectionEhojoVO;
-import com.takensoft.taken_bi_manager.common.schedule.dao.ScheduleDAO;
-import com.takensoft.taken_bi_manager.common.schedule.vo.Schedule;
-import com.takensoft.taken_bi_manager.common.util.CommonUtil;
-import com.takensoft.taken_bi_manager.common.util.StringUtil;
-import com.takensoft.taken_bi_manager.common.vo.CustomeResultMap;
-import com.takensoft.taken_bi_manager.common.vo.SearchVO;
-import com.takensoft.taken_bi_manager.data.dao.DataDAO;
-import com.takensoft.taken_bi_manager.data.dao.DatasetDAO;
-import com.takensoft.taken_bi_manager.data.service.DataService;
-import com.takensoft.taken_bi_manager.data.vo.ColumnData;
-import com.takensoft.taken_bi_manager.data.vo.DataTable;
-import com.takensoft.taken_bi_manager.diagram.dao.DiagramDAO;
-import com.takensoft.taken_bi_manager.diagram.dto.DiagramListDTO;
-import com.takensoft.taken_bi_manager.diagram.dto.DiagramDetailDTO;
-import com.takensoft.taken_bi_manager.diagram.service.Diagramservice;
-import com.takensoft.taken_bi_manager.diagram.vo.*;
-import com.takensoft.taken_bi_manager.host.service.SftpService;
-import com.takensoft.taken_bi_manager.jobs.dao.JobDAO;
-import com.takensoft.taken_bi_manager.jobs.service.JobService;
-import com.takensoft.taken_bi_manager.jobs.util.JobUtil;
-import com.takensoft.taken_bi_manager.jobs.vo.JobGroup;
-import com.takensoft.taken_bi_manager.jobs.vo.JobItm;
-import com.takensoft.taken_bi_manager.jobs.vo.item.DataFilter;
-import com.takensoft.taken_bi_manager.jobs.vo.item.FileInfoItem;
-import com.takensoft.taken_bi_manager.jobs.vo.item.JobItemGroup;
-import lombok.RequiredArgsConstructor;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.web.bind.annotation.RequestBody;
-
-import java.sql.Timestamp;
-import java.util.*;
-
-@Service
-@RequiredArgsConstructor
-public class DiagramServiceImpl implements Diagramservice {
-    private final DiagramDAO diagramDAO;
-
-    @Autowired
-    private ScheduleDAO scheduleDAO;
-
-    @Autowired
-    private JobDAO  jobDAO;
-
-    @Autowired
-    private JobService jobService;
-
-    @Autowired
-    private DataDAO dataDAO;
-
-    @Autowired
-    private DataService dataService;
-
-    @Autowired
-    private ConnectionApiDAO connectionApiDAO;
-
-    @Autowired
-    private DatasetDAO datasetDAO;
-
-    @Autowired
-    private ConnectionApiService connectionApiService;
-
-    @Autowired
-    private SftpService sftpService;
-
-    @Autowired
-    private FilterServiceImpl filterService;
-
-    @Autowired
-    private final ConnectEhojoPlusService connectEhojoPlusService;
-
-    private List<NodeVO> nodeListByOrder;
-
-
-    @Override
-    public List<Schedule> dataSelectListAll() throws Exception {
-        return diagramDAO.dataSelectListAll();
-    }
-
-    public Schedule scheduleList(HashMap<String,Object> params) throws Exception {
-        return diagramDAO.scheduleList(params);
-    }
-
-    /* jobItm 타입에 따라 개별 실행 */
-    private NodeVO runJobItm(JobItm jobItm, String diagramId, NodeVO nodeVO, List<NodeVO> nodes) throws Exception {
-        String type = jobItm.getType();
-        NodeVO prevNode;
-        DataTable dataTable;
-        switch (type) {
-            case "dbConnection":
-                ConnectionDB connectionDB = dataDAO.selectDbConnectionOne(jobItm.getItm_id());
-                connectionDB.decodingData();
-                connectionDB.setQuery(jobDAO.selectIdJobItemId(diagramId).getItm_option_string());
-
-                JobItm newJobItm = new JobItm();
-                newJobItm.setDataTable(new DataTable());
-                newJobItm.setItm(connectionDB);
-                nodeVO.setItm(connectionDB);
-
-                dataTable = JobUtil.dbConnectionExec(newJobItm);
-                nodeVO.setDataTable(dataTable);
-                break;
-            case "apiRead":
-                String itmId = jobItm.getItm_id();
-                ConnectionApi connectionApi = connectionApiDAO.selectConnectionApi(itmId);
-                nodeVO.setItm(connectionApi);
-                dataTable = connectionApiService.apiRequest(connectionApi);
-                nodeVO.setDataTable(dataTable);
-                break;
-            case "fileRead":
-                FileInfoItem fileInfoItem = jobDAO.fileReadItmSelect(jobItm.getGroup_id());
-                String fileName = fileInfoItem.getFileName();
-                int lastDotIndex = fileName.lastIndexOf('.');
-                fileName.substring(lastDotIndex + 1);
-                String extension = "";
-                if (lastDotIndex != -1 && lastDotIndex < fileName.length() - 1) {
-                    extension = fileName.substring(lastDotIndex + 1);
-                }
-                fileInfoItem.setExtension(extension);
-                nodeVO.setDataTable((DataTable) sftpService.fileRead(fileInfoItem, fileInfoItem.getDatasetId()).getResultData().get("dataTableMap"));
-                nodeVO.setItm(fileInfoItem);
-                break;
-            case "datasetRead":
-                nodeVO.setItm(datasetDAO.selectDatasetPost(jobItm.getItm_id()));
-                break;
-            case "datasetWrite":
-                prevNode = nodeListByOrder.get(nodeListByOrder.size() - 2);
-                for (NodeVO node : nodes) {
-                    if (node.getId().equals(prevNode.getId())) {
-                        nodeVO.setDataTable(node.getDataTable());
-                        break;
-                    }
-                }
-                JobItemGroup jobItemGroup = new JobItemGroup();
-                jobItemGroup.setGroupId(jobItm.getGroup_id());
-                jobItemGroup.setItem(jobItm.getItm_id());
-                jobItemGroup.setItemList(jobDAO.datasetItemSelect(jobItm));
-                nodeVO.setItm(jobItemGroup);
-                break;
-            case "filter":
-                for (int i = 0; i < nodeListByOrder.size(); i++) {
-                    if (nodeListByOrder.get(i).getId().equals(nodeVO.getId())) {
-                        prevNode = nodeListByOrder.get(i - 1);
-                        nodeVO.setDataTable(prevNode.getDataTable());
-                        break;
-                    }
-                }
-                DataFilter dataFilter = new DataFilter();
-                dataFilter.setGroupId(diagramId);
-                dataFilter.setFilterItems(jobDAO.filterItemSelect(jobItm));
-                dataFilter.setMatch_type(jobItm.isItm_option_bool());
-                nodeVO.setItm(dataFilter);
-                nodeVO = filterService.runFilter(nodeVO);
-                break;
-            case "ehojoRead":
-                String id = jobItm.getItm_id();
-                ConnectionEhojoVO connectionEhojoVO = connectEhojoPlusService.selectEhojoPlusInfo(id);
-                nodeVO.setItm(connectionEhojoVO);
-                CustomeResultMap customeResultMap = connectEhojoPlusService.openFisCal(connectionEhojoVO);
-                dataTable = (DataTable) customeResultMap.getResultData().get("dataTable");
-                nodeVO.setDataTable(dataTable);
-                break;
-        }
-
-        return nodeVO;
-    }
-
-    public CustomeResultMap logSelectListAll(SearchVO searchVO) throws Exception {
-        CustomeResultMap resultMap = new CustomeResultMap();
-        try {
-            List<LogVO> logList = diagramDAO.logSelectListAll(searchVO);
-            resultMap.getResultData().put("logList", logList);
-            int rows = diagramDAO.logSelectListCnt(searchVO);
-            searchVO.setTotalRows(rows);
-            resultMap.getResultData().put("searchVO", searchVO);
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-        return resultMap;
-    }
-
-    public CustomeResultMap detaillogSelectListAll(SearchVO searchVO) throws Exception {
-        CustomeResultMap resultMap = new CustomeResultMap();
-        try {
-            List<LogDetailVO> logList = diagramDAO.detaillogSelectListAll(searchVO);
-            resultMap.getResultData().put("logList", logList);
-            int rows = diagramDAO.detaillogSelectListCnt(searchVO);
-            searchVO.setTotalRows(rows);
-            resultMap.getResultData().put("searchVO", searchVO);
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-        return resultMap;
-    }
-
-    public List<NodeVO> nodeList(String diagramId) throws Exception {
-        List<NodeVO> nodeData = diagramDAO.nodeList(diagramId);
-        return nodeData;
-    }
-
-    public List<EdgeVO> lineList(String diagramId) throws Exception {
-        List<EdgeVO> lineData = diagramDAO.lineList(diagramId);
-        return lineData;
-    }
-
-    /* 다이어그램 등록 */
-    @Transactional
-    public int dataInsert(DiagramDetailDTO diagramDetailDTO) throws Exception {
-        int result = 0;
-        String group_id = "";
-        String userId = "";
-
-        // params 데이터 분리
-        Schedule schedule = diagramDetailDTO.getSchedule();
-        DiagramVO diagramVO = diagramDetailDTO.getDiagram();
-        JobGroup jobGroup = schedule.getJobGroup();
-        List<NodeVO> nodes = diagramVO.getNodes();
-        List<EdgeVO> edges = diagramVO.getEdges();
-
-        // 노드 내역 저장
-        List<JobItm> jobItmList = new ArrayList<>();
-
-        // 노드 순서대로 정렬
-        nodeListByOrder = new ArrayList<>();
-        for (NodeVO nodeVO : nodes) {
-            if (nodeVO.getNode_type().equals("DATASET_UPDATE")) {
-                String endNodeId = nodeVO.getId();
-                nodeListByOrder.add(nodeVO);
-                findPrevNode(nodes, edges, endNodeId);
-                break;
-            }
-        }
-
-        // 노드 별 실행
-        for (NodeVO nodeVO : nodeListByOrder) {
-            JobItm jobData = new JobItm();
-            jobData.setItm(nodeVO.getItm());
-            switch (nodeVO.getNode_type()) {
-                case "DB_READ":
-                    jobData.setType("dbConnection");
-                    break;
-                case "API_READ":
-                    jobData.setType("apiRead");
-                    break;
-                case "FILE_READ":
-                    jobData.setType("fileRead");
-                    break;
-                case "DATASET_READ":
-                    jobData.setType("datasetRead");
-                    break;
-                case "DATASET_UPDATE":
-                    jobData.setType("datasetWrite");
-                    break;
-                case "DATA_FILTER":
-                    jobData.setType("filter");
-                    break;
-                case "EHOJO_READ":
-                    jobData.setType("ehojoRead");
-                    break;
-            }
-            jobItmList.add(jobData);
-        }
-        jobGroup.setJobItm(jobItmList);
-
-        try {
-            CustomeResultMap customeResultMap = jobService.insertJobGroup(jobGroup);
-            userId = CommonUtil.getLoginUserId();
-            group_id = customeResultMap.getResultData().get("group_id").toString();
-        } catch (Exception e) {
-            e.printStackTrace();
-            throw e;
-        }
-
-        if(StringUtil.isEmpty(schedule.getSchdul_id())) {
-            schedule.setSchdul_id(CommonUtil.getRandKey("SCHEDULE"));
-            schedule.setCreatId(userId);
-        } else {
-            schedule.setUpdtId(userId);
-        }
-        schedule.setGroup_id(group_id);
-        result += scheduleDAO.conflictInsertSchedule(schedule);
-
-        diagramVO.setDiagram_id(group_id);
-        diagramVO.setCreat_id(userId);
-        result += diagramDAO.diagramDataInsert(diagramVO);
-
-        for (NodeVO nodeVO : nodes) {
-            nodeVO.setDiagram_id(group_id);
-            nodeVO.setNode_id(nodeVO.getId());
-            nodeVO.setNode_state("wait");
-            nodeVO.setLog_message("is not Running");
-            result += diagramDAO.nodeDataInsert(nodeVO);
-        }
-
-        for (EdgeVO edge : edges) {
-            edge.setDiagram_id(group_id);
-            result += diagramDAO.lineDataInsert(edge);
-        }
-
-        String logId = CommonUtil.getRandKey("LOGID");
-        LogVO logVO = new LogVO();
-        logVO.setLog_id(logId);
-        logVO.setTotal_node_count(nodes.size());
-        logVO.setFail_node_count(0);
-        logVO.setFail_node_name("N");
-        logVO.setState_info("success");
-        logVO.setDiagram_id(group_id);
-        logVO.setUser_id(userId);
-        diagramDAO.logDataInsert(logVO);
-
-        LogDetailVO logDetailVO = new LogDetailVO();
-        List<NodeVO> nodeList = diagramDAO.nodeList(group_id);
-        for (NodeVO nodeVO : nodeList) {
-            String detailLogId = CommonUtil.getRandKey("DETAILLOGID");
-            logDetailVO.setDetail_log_id(detailLogId);
-            logDetailVO.setNode_name(nodeVO.getNode_name());
-            logDetailVO.setLog_id(logId);
-            logDetailVO.setLog_category("-");
-            logDetailVO.setLog_message("등록");
-            logDetailVO.setOperation_date(logVO.getOperation_date());
-            diagramDAO.logDetailDataInsert(logDetailVO);
-        }
-        return result;
-    }
-
-    /* 다이어그램 수정 */
-    @Transactional(rollbackFor = Exception.class)
-    public int dataEdit(DiagramDetailDTO diagramDetailDTO) throws Exception {
-        int result =0;
-
-        // params 데이터 분리
-        Schedule schedule = diagramDetailDTO.getSchedule();
-        DiagramVO diagramVO = diagramDetailDTO.getDiagram();
-        // schedule 데이터 분리
-        JobGroup jobGroup = schedule.getJobGroup();
-        // diagram 데이터 분리
-        List<NodeVO> nodes = diagramVO.getNodes();
-        // 첫 번째 노드에서 다이어그램 id 가져오기
-        // 프론트에서 노드 정보가 전달 되어야 수정 버튼이 동작하기 때문에 해당 위치에 반드시 있음
-        String diagramId = schedule.getGroup_id();
-
-        // diagramId로 노드와 엣지 정보 일괄 삭제
-        diagramDAO.nodeDelete(diagramId);
-        diagramDAO.edgeDelete(diagramId);
-
-        // 로그 삭제
-        HashMap<String,Object> logParams = new HashMap<>();
-        logParams.put("diagram_id", diagramId);
-        List<LogVO> logList = diagramDAO.logSelectListAllID(logParams);
-        for (LogVO logVO : logList) {
-            result += diagramDAO.logDetailDelete(logVO.getLog_id());
-        }
-        result += diagramDAO.logDelete(diagramId);
-        
-        // 다이어그램 삭제
-        diagramDAO.diagramDelete(diagramId);
-        
-        // 스케줄 삭제
-        result += scheduleDAO.conflictInsertSchedule(schedule);
-
-        // jobItem 삭제
-        for (NodeVO nodeVO : nodes) {
-            String itmId = null;
-            switch (nodeVO.getNode_type()) {
-                case "DB_READ":
-                    itmId = jobDAO.selectIdJobItemDbId(diagramId);
-                    dataDAO.deleteConnectionDb(itmId);
-                    break;
-                case "API_READ":
-                    itmId = jobDAO.selectIdJobItemApiId(diagramId);
-                    connectionApiDAO.deleteApiParameterInfo(itmId);
-                    connectionApiDAO.deleteApiConnectionInfo(itmId);
-                    break;
-                case "FILE_READ":
-                    jobDAO.deleteFileReadItm(diagramId);
-                    break;
-                case "DATASET_UPDATE":
-                    jobDAO.deleteDatasetItem(diagramId);
-                    break;
-                case "DATA_FILTER":
-                    jobDAO.deleteFilterItem(diagramId);
-                    break;
-                case "EHOJO_READ":
-                    String ehpInfoId = jobDAO.selectIdJobItemEhpId(diagramId);
-                    connectEhojoPlusService.deleteEhojoPlusInfo(ehpInfoId);
-                    break;
-            }
-        }
-        jobDAO.jobItemDeleteId(diagramId);
-
-        // jobGroup 삭제
-        jobDAO.jobGroupDelete(jobGroup);
-
-        // 다이어그램 등록
-        dataInsert(diagramDetailDTO);
-
-        return result;
-    }
-
-    /**
-     * @author 하관우
-     * @since 2024.02.15
-     *
-     * diagram_id를 가져와서 해당하는것들 삭제
-     */
-    @Transactional(rollbackFor = Exception.class)
-    public int dataDelete(List<Schedule> scheduleList) throws Exception {
-        int result = 0;
-        for (Schedule schedule : scheduleList) {
-            String diagramId = schedule.getGroup_id();
-            result += diagramDAO.edgeDelete(diagramId);
-            result += diagramDAO.nodeDelete(diagramId);
-
-            HashMap<String,Object> logParams = new HashMap<>();
-            logParams.put("diagram_id", diagramId);
-            List<LogVO> logList = diagramDAO.logSelectListAllID(logParams);
-            for (LogVO logVO : logList) {
-                result += diagramDAO.logDetailDelete(logVO.getLog_id());
-            }
-            result += diagramDAO.logDelete(diagramId);
-            result += diagramDAO.diagramDelete(diagramId);
-
-            schedule.setUse_at(false);
-            result += scheduleDAO.conflictInsertSchedule(schedule);
-        }
-        return result;
-    }
-
-    //로그 인서트
-    public String diagramLog(LogVO logData)throws Exception{
-        int result =0;
-
-        logData.setLog_id(CommonUtil.getRandKey("LOGID"));
-        result += diagramDAO.logDataInsert(logData);
-
-        return logData.getLog_id();
-    }
-
-    //로그 업데이트
-    public int diagramLogUP(LogVO logData)throws Exception{
-        int result =0;
-        //로그 인서트
-        result += diagramDAO.logDataUpdate(logData);
-
-        return result;
-    }
-
-    //로그 상세 인서트
-    public int dirgramDetailLog(LogDetailVO logDetailData)throws Exception{
-        logDetailData.setDetail_log_id(CommonUtil.getRandKey("DETAILLOGID"));
-        return diagramDAO.logDetailDataInsert(logDetailData);
-    }
-
-    /**
-     * @author 박정하
-     * @since 2024.09.07
-     *
-     * 즉시계산
-     */
-    public List<HashMap<String, Object>> operatorNow(DiagramVO diagramVO, String type) throws Exception {
-        // params 데이터 분리
-        List<NodeVO> nodes = diagramVO.getNodes();
-        List<EdgeVO> edges = diagramVO.getEdges();
-
-        // 유저 정보 가져오기
-        String userId = null;
-        if (type.equals("create")) {
-            userId = CommonUtil.getLoginUserId();
-        } else {
-            userId = "admin";
-        }
-
-        // 로그 생성
-        LogVO logVO = new LogVO();
-        logVO.setDiagram_id(diagramVO.getDiagram_id());
-        logVO.setUser_id(userId);
-        logVO.setTotal_node_count(nodes.size());
-        logVO.setFail_node_count(0);
-        logVO.setState_info("success");
-        String logId = diagramLog(logVO);
-
-        // 노드 순서대로 정렬
-        nodeListByOrder = new ArrayList<>();
-        for (NodeVO nodeVO : nodes) {
-            if (nodeVO.getNode_type().equals("DATASET_UPDATE")) {
-                String endNodeId = nodeVO.getId();
-                nodeListByOrder.add(nodeVO);
-                findPrevNode(nodes, edges, endNodeId);
-                break; // endNode는 1개만 존재할 수 있음 (프론트에서 검증 후 등록됨)
-            }
-        }
-
-        List<HashMap<String, Object>> resultNodeList = new ArrayList<>();
-        int failNodeCount = 0;
-        String failNodeName = null;
-        for (int i = 0; i < nodeListByOrder.size(); i++) {
-            NodeVO node = nodeListByOrder.get(i);
-
-            // 로그 디테일 등록
-            LogDetailVO logDetailVO = new LogDetailVO();
-            logDetailVO.setNode_name(node.getNode_name());
-            logDetailVO.setLog_id(logId);
-            logDetailVO.setLog_category("success");
-            logDetailVO.setLog_message(null);
-            logDetailVO.setCreat_id(userId);
-            Timestamp operationDate = new Timestamp(System.currentTimeMillis());
-            logDetailVO.setOperation_date(operationDate);
-
-            // 노드 실행
-            try {
-                nodeCalculation(node);
-            } catch (Exception e) {
-                failNodeCount++;
-                logDetailVO.setLog_category("fail");
-                logDetailVO.setLog_message(e.getMessage());
-            }
-
-            // 로그 디테일 수정
-            dirgramDetailLog(logDetailVO);
-
-            logVO.setFail_node_count(failNodeCount);
-            if (failNodeCount > 0) {
-                failNodeName = node.getNode_name();
-                logVO.setFail_node_name(failNodeName);
-            }
-        }
-
-        // 반환값
-        return resultNodeList;
-    }
-
-    /**
-     * @author 박정하
-     * @since 2024.09.07
-     *
-     * 노드 설정 값에 따라 노드 실행
-     */
-    private NodeVO nodeCalculation(NodeVO node) throws Exception {
-        DataTable resultDataTable = new DataTable();
-        JobItm resultJobItm = new JobItm();
-
-        NodeVO prevNode;
-        List<ColumnData> columnDatas;
-        List<List<Object>> rowData;
-        ObjectMapper objectMapper = new ObjectMapper();
-        String itmToString;
-
-        String nodeType = node.getNode_type();
-        switch (nodeType) {
-            // DB_READ, FILE_READ, API_READ는 선행 노드와 관계 없이 실행
-            case "DB_READ":
-                itmToString = objectMapper.writeValueAsString(node.getItm());
-                ConnectionDB connectionDB = objectMapper.readValue(itmToString, ConnectionDB.class);
-                connectionDB.decodingData();
-
-                resultJobItm.setItm(connectionDB);
-                node.setItm(connectionDB);
-
-                DataTable resultTable = JobUtil.dbConnectionExec(resultJobItm);
-                node.setDataTable(resultTable);
-                break;
-            case "API_READ":
-                itmToString = objectMapper.writeValueAsString(node.getItm());
-                ConnectionApi connectionApi = objectMapper.readValue(itmToString, ConnectionApi.class);
-                DataTable dataTable = connectionApiService.apiRequest(connectionApi);
-                node.setDataTable(dataTable);
-                break;
-            case "FILE_READ":
-                DataTable dataTableMap = node.getDataTable();
-                List<ColumnData> columnDatasMapList = dataTableMap.getColumnDatas();
-                resultDataTable.setColumnDatas(columnDatasMapList);
-                rowData = dataTableMap.getRowData();
-                resultDataTable.setRowData(rowData);
-                resultJobItm.setDataTable(resultDataTable);
-                node.setDataTable(resultDataTable);
-                node.setItm(resultJobItm);
-            // DATA_FILTER는 선행 노드의 결과 값을 가져와서 실행
-            case "DATA_FILTER":
-                for (int i = 0; i < nodeListByOrder.size(); i++) {
-                    if (nodeListByOrder.get(i).getId().equals(node.getId())) {
-                        prevNode = nodeListByOrder.get(i - 1);
-                        node.setDataTable(prevNode.getDataTable());
-                        break;
-                    }
-                }
-                node = filterService.runFilter(node);
-                break;
-            // DATASET_UPDATE는 선행 노드의 결과 값을 가져와서 실행
-            case "DATASET_UPDATE":
-                prevNode = nodeListByOrder.get(nodeListByOrder.size() - 2); // dataset_update가 가장 마지막에 실행됨(순서보장)
-                rowData = prevNode.getDataTable().getRowData(); // 넣을 데이터
-
-                JobItemGroup itm = objectMapper.readValue(objectMapper.writeValueAsString(node.getItm()), JobItemGroup.class);
-                String datasetPostId = itm.getItem();
-
-                List<List<Object>> insertData = new ArrayList<>();
-                List<List<Object>> changeData = new ArrayList<>();
-                List<List<Object>> deleteData = new ArrayList<>();
-
-                List<Object> matchList = itm.getItemList(); // 매칭 결과
-                for (List<Object> row : rowData) { // rowData 크기 만큼 실행
-                    List<Object> newData = new ArrayList<>();
-
-                    for (Object match : matchList) { // matchList 크기 만큼 실행(ts_row 제외한 컬럼 수 만큼 실행)
-                        HashMap<String, Object> item = (HashMap<String, Object>) match;
-
-                        if (item.get("targetColumnNm") != null) {
-                            String sourceColumnNm = item.get("targetColumnNm").toString();
-                            Integer sourceIdx = Integer.valueOf(sourceColumnNm.substring(0, sourceColumnNm.indexOf("/")));
-                            newData.add(row.get(sourceIdx));
-                        } else {
-                            newData.add(null);
-                        }
-                    }
-
-                    if (node.isItm_option_bool()) {
-                        insertData.add(newData);
-                    } else {
-                        changeData.add(newData);
-                    }
-                }
-
-                dataService.datasetRowDataUpdate(datasetPostId, changeData, deleteData, insertData, "admin");
-                break;
-        }
-        return node;
-    }
-
-    /**
-     * @author 박정하
-     * @since 2024.10.04
-     *
-     * Diagram 목록 조회
-     */
-    @Override
-    public CustomeResultMap diagramListRead(@RequestBody SearchVO searchVO) throws Exception {
-        CustomeResultMap result = new CustomeResultMap();
-
-        int totalRows = diagramDAO.diagramListCountRead(searchVO);
-        searchVO.setTotalRows(totalRows);
-        result.getResultData().put("searchVO", searchVO);
-
-        List<DiagramListDTO> diagramList = diagramDAO.diagramListRead(searchVO);
-        result.getResultData().put("diagramList", diagramList);
-        return result;
-    }
-
-    /**
-     * @author 박정하
-     * @since 2024.10.04
-     *
-     * Diagram 상세 조회
-     */
-    @Override
-    public CustomeResultMap diagramDetailRead(String diagramId) throws Exception {
-        CustomeResultMap result = new CustomeResultMap();
-
-        // 스케줄 상세 조회
-        String scheduleId = scheduleDAO.selectScheduleIdRead(diagramId);
-        Schedule schedule = scheduleDAO.selectSchedule(scheduleId);
-        schedule.setJobGroup(jobService.selectJobGroup(diagramId));
-
-        // 다이어그램 상세 조회
-        DiagramVO diagramVO = diagramDAO.diagramDetailRead(diagramId); // nodes, edges 조회 안 됨
-
-        // edges 조회
-        List<EdgeVO> edges = diagramDAO.lineList(diagramId);
-        diagramVO.setEdges(edges); // diagramVO에 엣지 목록 추가
-        
-        // nodes 조회
-        List<NodeVO> nodes = diagramDAO.nodeList(diagramId);
-        // 노드 순서대로 정렬
-        nodeListByOrder = new ArrayList<>();
-        for (NodeVO nodeVO : nodes) {
-            nodeVO.setNode_id(nodeVO.getId());
-
-            NodePosition position = new NodePosition();
-            position.setX(nodeVO.getCenter_x());
-            position.setY(nodeVO.getCenter_y());
-            nodeVO.setPosition(position);
-
-            if (nodeVO.getNode_type().equals("DATASET_UPDATE")) {
-                String endNodeId = nodeVO.getId();
-                nodeListByOrder.add(nodeVO);
-                findPrevNode(nodes, edges, endNodeId);
-                break; // endNode는 1개만 존재할 수 있음 (프론트에서 검증 후 등록됨)
-            }
-        }
-
-        // JobGroup 생성
-        JobGroup jobGroup = new JobGroup();
-        jobGroup.setGroup_id(diagramId);
-        List<JobItm> jobItmList = jobDAO.selectJobItem(jobGroup);
-        jobGroup.setJobItm(jobItmList);
-        // 노드 형식 변경
-        for (int i = 0; i < jobItmList.size(); i++) {
-            int order = i + 1;
-            for (JobItm jobItm : jobItmList) {
-                if (jobItm.getIndx() == order) {
-                    for (NodeVO nodeVO : nodes) {
-                        String nodeId = nodeListByOrder.get(i).getId(); // 다이어그램 등록시 순서대로 정렬하여 실행 순서 보장됨
-                        if (nodeVO.getId().equals(nodeId)) {
-                            nodeVO = runJobItm(jobItm, diagramId, nodeVO, nodes);
-                            break;
-                        }
-                    }
-                }
-            }
-        }
-        diagramVO.setNodes(nodes); // diagramVO에 노드 목록 추가
-
-        DiagramDetailDTO diagramDetailDTO = new DiagramDetailDTO();
-        diagramDetailDTO.setSchedule(schedule);
-        diagramDetailDTO.setDiagram(diagramVO);
-
-        result.getResultData().put("diagramDetailDTO", diagramDetailDTO);
-        return result;
-    }
-
-    /**
-     * @author 박정하
-     * @since 2024.10.04
-     *
-     * Diagram Id로 Schedule 구하기
-     */
-    private Schedule selectScheduleIdRead(String diagramId) throws Exception {
-        String scheduleId = scheduleDAO.selectScheduleIdRead(diagramId);
-        return scheduleDAO.selectSchedule(scheduleId);
-    }
-
-    /**
-     * @author 박정하
-     * @since 2024.09.24
-     *
-     * 엣지로 노드 실행 순서대로 정렬
-     */
-    private void findPrevNode(List<NodeVO> nodes, List<EdgeVO> edges, String nodeId) {
-        for (EdgeVO edge : edges) {
-            String sourceNodeId = edge.getSource(); // 엣지 기준 왼쪽 노드
-            String targetNodeId = edge.getTarget(); // 엣지 기준 오른쪽 노드
-            if (targetNodeId.equals(nodeId)) {
-                for (NodeVO node : nodes) {
-                    if (node.getId().equals(sourceNodeId)) {
-                        nodeListByOrder.add(0, node);
-                        findPrevNode(nodes, edges, node.getId());
-                    }
-                }
-            }
-        }
-    }
-}(파일 끝에 줄바꿈 문자 없음)
 
src/main/java/com/takensoft/taken_bi_manager/diagram/service/impl/FilterServiceImpl.java (deleted)
--- src/main/java/com/takensoft/taken_bi_manager/diagram/service/impl/FilterServiceImpl.java
@@ -1,36 +0,0 @@
-package com.takensoft.taken_bi_manager.diagram.service.impl;
-
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.takensoft.taken_bi_manager.data.vo.DataTable;
-import com.takensoft.taken_bi_manager.diagram.service.FilterService;
-import com.takensoft.taken_bi_manager.diagram.vo.NodeVO;
-import com.takensoft.taken_bi_manager.jobs.util.DataFilterUtil;
-import com.takensoft.taken_bi_manager.jobs.vo.JobItm;
-import lombok.RequiredArgsConstructor;
-import org.springframework.stereotype.Service;
-
-/**
- * @author  : 박정하
- * @since   : 2024.09.25
- * 필터 관련 구현체
- */
-@Service("filterService")
-@RequiredArgsConstructor
-public class FilterServiceImpl implements FilterService {
-    /**
-     * @author  : 박정하
-     * @since   : 2024.09.25
-     * 필터 실행
-     * use: NodeVO
-     */
-    @Override
-    public NodeVO runFilter(NodeVO nodeVO) throws Exception {
-        JobItm jobItm = new JobItm();
-        jobItm.setItm(nodeVO.getItm());
-        jobItm.setDataTable(nodeVO.getDataTable());
-
-        DataTable dataTable = DataFilterUtil.FilterExcute(jobItm); // 필터 실행
-        nodeVO.setDataTable(dataTable);
-        return nodeVO;
-    }
-}(파일 끝에 줄바꿈 문자 없음)
 
src/main/java/com/takensoft/taken_bi_manager/diagram/vo/DiagramVO.java (deleted)
--- src/main/java/com/takensoft/taken_bi_manager/diagram/vo/DiagramVO.java
@@ -1,46 +0,0 @@
-package com.takensoft.taken_bi_manager.diagram.vo;
-
-import lombok.Data;
-
-import java.sql.Timestamp;
-import java.util.*;
-
-/**
- * @author 하관우
- * @since 2024. 03. 05
- *
- * 노드를 관리할 부모 클레스 입니다.
- */
-@Data
-public class DiagramVO {
-    // 다이어 그램 아이디
-    private String diagram_id;
-
-    // 전체 Job 그룹 이름입니다.
-    private String diagram_nm;
-
-    // 전체 노드 리스트
-    private List<NodeVO> nodes;
-
-    // 전체 라인 리스트
-    private List<EdgeVO> edges;
-
-    // 생성일
-    private Timestamp creat_dt;
-
-    // 생성자 ID
-    private String creat_id;
-
-    // 수정일
-    private Timestamp updt_dt;
-
-    // 수정자 ID
-    private String updt_id;
-
-    private Object data;
-
-    public DiagramVO(){
-        this.nodes = new ArrayList<>();
-        this.edges = new ArrayList<>();
-    }
-}(파일 끝에 줄바꿈 문자 없음)
 
src/main/java/com/takensoft/taken_bi_manager/diagram/vo/EdgeVO.java (deleted)
--- src/main/java/com/takensoft/taken_bi_manager/diagram/vo/EdgeVO.java
@@ -1,21 +0,0 @@
-package com.takensoft.taken_bi_manager.diagram.vo;
-
-import lombok.Data;
-
-@Data
-public class EdgeVO {
-    /**
-     * 선 테이블
-     */
-    //라인 ID
-    private String edge_id;
-
-    //라인의 시작 노드
-    private String source;
-
-    //라인의 끝 노드
-    private String target;
-
-    //다이어그램 ID
-    private String diagram_id;
-}(파일 끝에 줄바꿈 문자 없음)
 
src/main/java/com/takensoft/taken_bi_manager/diagram/vo/LogDetailVO.java (deleted)
--- src/main/java/com/takensoft/taken_bi_manager/diagram/vo/LogDetailVO.java
@@ -1,30 +0,0 @@
-package com.takensoft.taken_bi_manager.diagram.vo;
-
-import lombok.Data;
-
-import java.sql.Timestamp;
-
-@Data
-public class LogDetailVO {
-
-    /**
-     * 로그 디테일
-     */
-    private String detail_log_id; //상세 로그 ID
-
-    private Timestamp operation_success_date; // 작동완료일시
-
-    private String node_name; // 노드 이름
-
-    private String log_category; // 로그분류(성공, 실패)
-
-    private String log_message; // 로그메세지
-
-    private String sj; // 제목
-
-    private String log_id; // 로그ID
-
-    private String creat_id; //유저ID
-
-    private Timestamp operation_date; //작동일시
-}(파일 끝에 줄바꿈 문자 없음)
 
src/main/java/com/takensoft/taken_bi_manager/diagram/vo/LogVO.java (deleted)
--- src/main/java/com/takensoft/taken_bi_manager/diagram/vo/LogVO.java
@@ -1,28 +0,0 @@
-package com.takensoft.taken_bi_manager.diagram.vo;
-
-import lombok.Data;
-
-import java.sql.Timestamp;
-
-@Data
-public class LogVO {
-
-    /**
-     * 스케줄 부르기
-     */
-    private String log_id; //로그 아이디
-
-    private Timestamp operation_date;//실행일자
-
-    private int total_node_count;//총 노드 수
-
-    private int fail_node_count;// 실패 노드 수
-
-    private String fail_node_name;// 실패 노드 네임 최초의 1개
-
-    private String state_info;// 상태
-
-    private String diagram_id;// 다이어그램 ID
-
-    private String user_id; // userID
-}(파일 끝에 줄바꿈 문자 없음)
 
src/main/java/com/takensoft/taken_bi_manager/diagram/vo/NodePosition.java (deleted)
--- src/main/java/com/takensoft/taken_bi_manager/diagram/vo/NodePosition.java
@@ -1,9 +0,0 @@
-package com.takensoft.taken_bi_manager.diagram.vo;
-
-import lombok.Data;
-
-@Data
-public class NodePosition {
-    private double x = 0;
-    private double y = 0;
-}(파일 끝에 줄바꿈 문자 없음)
 
src/main/java/com/takensoft/taken_bi_manager/diagram/vo/NodeVO.java (deleted)
--- src/main/java/com/takensoft/taken_bi_manager/diagram/vo/NodeVO.java
@@ -1,73 +0,0 @@
-package com.takensoft.taken_bi_manager.diagram.vo;
-
-import com.takensoft.taken_bi_manager.data.vo.DataTable;
-import lombok.Data;
-
-@Data
-public class NodeVO {
-    // 다이어 그램 아이디
-    private String diagram_id;
-
-    // 노드 ID
-    private String node_id;
-
-    // 노드 명
-    private String node_name;
-
-    // 노드 아이템 타입
-    private String node_type;
-
-    // 처리할 item 입니다.
-    private DataTable front_dataTable;
-
-    // 처리할 item 입니다.
-    private DataTable dataTable;
-
-    // 관련 데이터를 만들 DB id입니다.
-    private String itm_id;
-
-    // 타입별 사용 변수(아이템별 Vo객체 받아야함)
-    private Object itm;
-
-    // 아이템 마다 사용할 커스텀 변수
-    private boolean itm_option_bool;
-
-    // 아이템 마다 사용할 커스텀 변수
-    private String itm_option_string;
-
-    // 좌표 x
-    private Double center_x;
-
-    // 좌표 y
-    private Double center_y;
-
-    // 노드 상태
-    private String node_state;
-
-    // 로그 메세지
-    private String log_message;
-
-    // 모달 플래이그 ?
-    private boolean flag;
-
-    // 화면 노드 id
-    private String id;
-
-    // 화면 노드 label
-    private String label;
-
-    // 화면 노드 position
-    private NodePosition position;
-
-    // 화면 노드 type
-    private String type;
-
-    private Object data;
-
-    public NodeVO() {
-        this.type = "custom";
-        this.dataTable = new DataTable();
-        this.front_dataTable = new DataTable();
-        this.flag = false;
-    }
-}(파일 끝에 줄바꿈 문자 없음)
 
src/main/java/com/takensoft/taken_bi_manager/diagram/web/DiagramController.java (deleted)
--- src/main/java/com/takensoft/taken_bi_manager/diagram/web/DiagramController.java
@@ -1,182 +0,0 @@
-package com.takensoft.taken_bi_manager.diagram.web;
-
-import com.takensoft.taken_bi_manager.common.schedule.vo.Schedule;
-import com.takensoft.taken_bi_manager.common.vo.CustomeResultMap;
-import com.takensoft.taken_bi_manager.common.vo.SearchVO;
-import com.takensoft.taken_bi_manager.diagram.dao.DiagramDAO;
-import com.takensoft.taken_bi_manager.diagram.service.Diagramservice;
-import com.takensoft.taken_bi_manager.diagram.dto.DiagramDetailDTO;
-import com.takensoft.taken_bi_manager.diagram.vo.DiagramVO;
-import lombok.RequiredArgsConstructor;
-import org.springframework.web.bind.annotation.*;
-import org.springframework.web.servlet.ModelAndView;
-
-import java.util.*;
-
-@RestController
-@RequestMapping("/diagram")
-@RequiredArgsConstructor
-public class DiagramController {
-    private final Diagramservice diagramService;
-    private final DiagramDAO diagramDAO;
-
-    /**
-     * @author 하관우
-     * @since 2024.01.23
-     *
-     * Diagram 조회
-     */
-    @RequestMapping(value ="/dataSelectListAll.json", method = RequestMethod.POST)
-    public ModelAndView dataSelectListAll() throws Exception {
-        ModelAndView mav = new ModelAndView("jsonView");
-        mav.addObject("result", diagramService.dataSelectListAll());
-        return mav;
-    }
-
-    /**
-     * @author 하관우
-     * @since 2024.01.23
-     *
-     * DIAGRAM_ID 해당하는 스케줄 관리
-     */
-
-    @RequestMapping(value ="/scheduleList.json", method = RequestMethod.POST)
-    public ModelAndView scheduleList(@RequestBody HashMap<String,Object> params) throws Exception {
-
-        ModelAndView mav = new ModelAndView("jsonView");
-        mav.addObject("result", diagramService.scheduleList(params));
-        return mav;
-    }
-
-    /**
-     * @author 하관우
-     * @since 2024.01.23
-     *
-     * 로그조회 조회
-     */
-
-    @RequestMapping(value ="/logSelectListAll.json", method = RequestMethod.POST)
-    public ModelAndView logSelectListAll(@RequestBody SearchVO searchVO) throws Exception {
-        ModelAndView mav = new ModelAndView("jsonView");
-        mav.addObject("result", diagramService.logSelectListAll(searchVO));
-        return mav;
-    }
-
-
-    /**
-     * @author 하관우
-     * @since 2024.01.23
-     *
-     * 로그 상세조회 조회
-     */
-    @RequestMapping(value ="/detaillogSelectListAll.json", method = RequestMethod.POST)
-    public ModelAndView detaillogSelectListAll(@RequestBody SearchVO searchVO) throws Exception {
-
-        ModelAndView mav = new ModelAndView("jsonView");
-        mav.addObject("result", diagramService.detaillogSelectListAll(searchVO));
-        return mav;
-    }
-
-    /**
-     * @author 하관우
-     * @since 2024.01.23
-     *
-     * node 조회
-     */
-    @RequestMapping(value ="/nodeList.json", method = RequestMethod.POST)
-    public ModelAndView nodeList(@RequestBody HashMap<String,Object> params) throws Exception {
-        ModelAndView mav = new ModelAndView("jsonView");
-        mav.addObject("result", diagramService.nodeList(params.get("diagram_id").toString()));
-        return mav;
-    }
-
-    /**
-     * @author 하관우
-     * @since 2024.01.23
-     *
-     * line 조회
-     */
-    @RequestMapping(value ="/lineList.json", method = RequestMethod.POST)
-    public ModelAndView lineList(@RequestBody HashMap<String,Object> params) throws Exception {
-
-        ModelAndView mav = new ModelAndView("jsonView");
-        mav.addObject("result", diagramService.lineList(params.get("diagram_id").toString()));
-        return mav;
-    }
-
-    /**
-     * @author 권지용
-     * @since 2024.01.29
-     *
-     * 다이어그램의 모든 정보 등록
-     */
-
-    @RequestMapping(value = "/dataInsert.json", method = RequestMethod.POST)
-    public ModelAndView dataInsert(@RequestBody DiagramDetailDTO diagramDetailDTO) throws Exception {
-        ModelAndView mav = new ModelAndView("jsonView");
-        mav.addObject("result", diagramService.dataInsert(diagramDetailDTO));
-        return mav;
-    }
-
-    /**
-     * @author 하관우
-     * @since 2024.05.29
-     *
-     * 다이어그램의 모든 수정 등록
-     */
-
-    @RequestMapping(value = "/dataEdit.json", method = RequestMethod.POST)
-    public ModelAndView dataEdit(@RequestBody DiagramDetailDTO diagramDetailDTO) throws Exception {
-        ModelAndView mav = new ModelAndView("jsonView");
-        mav.addObject("result", diagramService.dataEdit(diagramDetailDTO));
-        return mav;
-    }
-
-    /**
-     * @author 하관우
-     * @since 2024.02.08
-     *
-     * 즉시계산
-     */
-    @RequestMapping(value = "/operatorNow.json", method = RequestMethod.POST)
-    public ModelAndView operatorNow(@RequestBody DiagramVO diagramVO) throws Exception {
-        ModelAndView mav = new ModelAndView("jsonView");
-        mav.addObject("result", diagramService.operatorNow(diagramVO, "create"));
-        return mav;
-    }
-
-    /**
-     * @author 하관우
-     * @since 2024.02.15
-     *
-     * diagram_id를 가져와서 해당하는것들 삭제
-     * */
-    @RequestMapping(value = "/dataDelete.json", method = RequestMethod.POST)
-    public ModelAndView dataDelete(@RequestBody List<Schedule> scheduleList) throws Exception {
-        ModelAndView mav = new ModelAndView("jsonView");
-        mav.addObject("result", diagramService.dataDelete(scheduleList));
-        return mav;
-    }
-
-    /**
-     * @author 박정하
-     * @since 2024.10.04
-     *
-     * Diagram 목록 조회
-     */
-    @PostMapping(value="/diagramListRead")
-    public CustomeResultMap diagramListRead(@RequestBody SearchVO searchVO) throws Exception {
-        return diagramService.diagramListRead(searchVO);
-    }
-
-    /**
-     * @author 박정하
-     * @since 2024.10.04
-     *
-     * Diagram 상세 조회
-     */
-    @GetMapping(value="/diagramDetailRead/{diagramId}")
-    public CustomeResultMap diagramDetailRead(@PathVariable String diagramId) throws Exception {
-        return diagramService.diagramDetailRead(diagramId);
-    }
-}(파일 끝에 줄바꿈 문자 없음)
src/main/java/com/takensoft/taken_bi_manager/host/dao/SftpDAO.java
--- src/main/java/com/takensoft/taken_bi_manager/host/dao/SftpDAO.java
+++ src/main/java/com/takensoft/taken_bi_manager/host/dao/SftpDAO.java
@@ -2,7 +2,7 @@
 
 import com.takensoft.taken_bi_manager.host.vo.ConnectionVO;
 import com.takensoft.taken_bi_manager.host.vo.HostVO;
-import com.takensoft.taken_bi_manager.user.member.vo.Member;
+import com.takensoft.taken_bi_manager.user.vo.Member;
 import org.apache.ibatis.annotations.Mapper;
 
 import java.util.List;
src/main/java/com/takensoft/taken_bi_manager/host/service/SftpService.java
--- src/main/java/com/takensoft/taken_bi_manager/host/service/SftpService.java
+++ src/main/java/com/takensoft/taken_bi_manager/host/service/SftpService.java
@@ -6,7 +6,7 @@
 import com.takensoft.taken_bi_manager.host.vo.ConnectionVO;
 import com.takensoft.taken_bi_manager.host.vo.SftpVO;
 import com.takensoft.taken_bi_manager.jobs.vo.JobItm;
-import com.takensoft.taken_bi_manager.user.member.vo.Member;
+import com.takensoft.taken_bi_manager.user.vo.Member;
 
 import java.util.List;
 
src/main/java/com/takensoft/taken_bi_manager/host/service/impl/SftpServiceImpl.java
--- src/main/java/com/takensoft/taken_bi_manager/host/service/impl/SftpServiceImpl.java
+++ src/main/java/com/takensoft/taken_bi_manager/host/service/impl/SftpServiceImpl.java
@@ -16,7 +16,7 @@
 import com.takensoft.taken_bi_manager.host.vo.HostVO;
 import com.takensoft.taken_bi_manager.host.vo.SftpVO;
 import com.takensoft.taken_bi_manager.jobs.vo.JobItm;
-import com.takensoft.taken_bi_manager.user.member.vo.Member;
+import com.takensoft.taken_bi_manager.user.vo.Member;
 import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
 
src/main/java/com/takensoft/taken_bi_manager/host/web/SftpController.java
--- src/main/java/com/takensoft/taken_bi_manager/host/web/SftpController.java
+++ src/main/java/com/takensoft/taken_bi_manager/host/web/SftpController.java
@@ -7,14 +7,12 @@
 import com.takensoft.taken_bi_manager.host.service.SftpService;
 import com.takensoft.taken_bi_manager.host.vo.SftpVO;
 import com.takensoft.taken_bi_manager.jobs.vo.JobItm;
-import com.takensoft.taken_bi_manager.user.member.vo.Member;
+import com.takensoft.taken_bi_manager.user.vo.Member;
 import lombok.RequiredArgsConstructor;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
-import java.util.HashMap;
 import java.util.List;
-import java.util.Objects;
 
 @RestController
 @RequiredArgsConstructor
src/main/java/com/takensoft/taken_bi_manager/jobs/dao/JobDAO.java
--- src/main/java/com/takensoft/taken_bi_manager/jobs/dao/JobDAO.java
+++ src/main/java/com/takensoft/taken_bi_manager/jobs/dao/JobDAO.java
@@ -1,7 +1,5 @@
 package com.takensoft.taken_bi_manager.jobs.dao;
 
-import com.takensoft.taken_bi_manager.common.connection.db.vo.ConnectionDB;
-import com.takensoft.taken_bi_manager.common.vo.SearchVO;
 import com.takensoft.taken_bi_manager.jobs.vo.JobGroup;
 import com.takensoft.taken_bi_manager.jobs.vo.JobItm;
 import com.takensoft.taken_bi_manager.jobs.vo.item.*;
src/main/java/com/takensoft/taken_bi_manager/jobs/vo/item/DatasetWriteItem.java
--- src/main/java/com/takensoft/taken_bi_manager/jobs/vo/item/DatasetWriteItem.java
+++ src/main/java/com/takensoft/taken_bi_manager/jobs/vo/item/DatasetWriteItem.java
@@ -39,5 +39,4 @@
      *  타겟 오리지널 컬럼명
      */
     private String targetColumnNm;
-
-}
+}
(파일 끝에 줄바꿈 문자 없음)
 
src/main/java/com/takensoft/taken_bi_manager/schedule/dao/DiagramDAO.java (added)
+++ src/main/java/com/takensoft/taken_bi_manager/schedule/dao/DiagramDAO.java
@@ -0,0 +1,64 @@
+package com.takensoft.taken_bi_manager.schedule.dao;
+
+import com.takensoft.taken_bi_manager.schedule.vo.DiagramVO;
+import com.takensoft.taken_bi_manager.schedule.vo.ScheduleVO;
+import com.takensoft.taken_bi_manager.common.vo.SearchVO;
+import com.takensoft.taken_bi_manager.schedule.vo.*;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.HashMap;
+import java.util.List;
+
+@Mapper
+public interface DiagramDAO {
+    /**
+     * @author gkrhksdn
+     * @since 2024.01.23
+     *
+     * Diagram 데이터 조회
+     */
+    List<ScheduleVO> dataSelectListAll() throws Exception;
+
+    ScheduleVO scheduleList(HashMap<String,Object> params) throws Exception;
+
+    List<ScheduleLogVO> logSelectListAll(SearchVO searchVO) throws Exception;
+    int logSelectListCnt(SearchVO searchVO) throws Exception;
+
+    List<ScheduleLogVO> logSelectListAllID(HashMap<String,Object> params) throws Exception;
+
+    List<ScheduleLogDetailVO> detaillogSelectListAll(SearchVO searchVO) throws Exception;
+
+    int detaillogSelectListCnt(SearchVO searchVO) throws Exception;
+
+    List<NodeVO> nodeList(String diagramId) throws Exception;
+
+    List<EdgeVO> lineList(String diagramId) throws Exception;
+
+    int diagramDataInsert(DiagramVO diagramVO) throws Exception;
+
+    int nodeDataInsert(NodeVO nodeVO) throws Exception;
+
+    int lineDataInsert(EdgeVO edgeVO) throws Exception;
+
+    int logDataInsert(ScheduleLogVO scheduleLogVO) throws Exception;
+
+    int logDataUpdate(ScheduleLogVO scheduleLogVO) throws Exception;
+
+    int logDetailDataInsert(ScheduleLogDetailVO scheduleLogDetailVO) throws Exception;
+
+    int nodeDelete(String params) throws Exception;
+
+    int edgeDelete(String params) throws Exception;
+
+    int diagramDelete(String params) throws Exception;
+
+    int logDelete(String params) throws  Exception;
+
+    int logDetailDelete(String params) throws Exception;
+
+//    List<DiagramListDTO> diagramListRead(SearchVO searchVO) throws Exception;
+
+    int diagramListCountRead(SearchVO searchVO) throws Exception;
+
+    DiagramVO diagramDetailRead(String diagramId) throws Exception;
+}(파일 끝에 줄바꿈 문자 없음)
 
src/main/java/com/takensoft/taken_bi_manager/schedule/dao/ScheduleDAO.java (added)
+++ src/main/java/com/takensoft/taken_bi_manager/schedule/dao/ScheduleDAO.java
@@ -0,0 +1,66 @@
+package com.takensoft.taken_bi_manager.schedule.dao;
+
+import com.takensoft.taken_bi_manager.schedule.vo.ScheduleVO;
+import com.takensoft.taken_bi_manager.common.vo.SearchVO;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.*;
+
+@Mapper
+public interface ScheduleDAO {
+	/**
+	 * @author 박정하
+	 * @since 2025.01.16
+	 *
+	 * 스케줄 목록 조회
+	 */
+	public List<ScheduleVO> selectScheduleList(SearchVO searchVO) throws Exception;
+
+	/**
+	 * @author 박정하
+	 * @since 2025.01.16
+	 *
+	 * 스케줄 전체 개수 조회
+	 */
+	public int selectScheduleCount(SearchVO searchVO) throws Exception;
+
+	/**
+	 * @author 박정하
+	 * @since 2025.01.16
+	 *
+	 * 스케줄 등록
+	 */
+	 public int insertSchedule(ScheduleVO scheduleVO) throws Exception;
+
+	/**
+	 * @author 김성원
+	 * @since 2021.01.24
+	 *
+	 * 스케줄 상세 조회
+	 */
+	public ScheduleVO selectSchedule (String id) throws Exception;
+
+	/**
+	 * @author 박정하
+	 * @since 2024.10.04
+	 *
+	 * Diagram Id로 Schedule Id 구하기
+	 */
+	public String selectScheduleIdRead(String diagramId) throws Exception;
+
+	/**
+	 * @author 박정하
+	 * @since 2024.10.04
+	 *
+	 * 스케줄 정보 삭제
+	 */
+	public int deleteSchedule(String schdulId) throws Exception;
+
+	/**
+	 * @author 박정하
+	 * @since 2024.10.04
+	 *
+	 * 스케줄 상태 변경
+	 */
+	public int scheduleSttusChange(HashMap<String, Object> params) throws Exception;
+}(파일 끝에 줄바꿈 문자 없음)
 
src/main/java/com/takensoft/taken_bi_manager/schedule/dto/DiagramDTO.java (added)
+++ src/main/java/com/takensoft/taken_bi_manager/schedule/dto/DiagramDTO.java
@@ -0,0 +1,13 @@
+package com.takensoft.taken_bi_manager.schedule.dto;
+
+import com.takensoft.taken_bi_manager.schedule.vo.DiagramVO;
+import lombok.Data;
+
+@Data
+public class DiagramDTO {
+    // 다이어그램
+    private DiagramVO diagram = new DiagramVO();
+    
+    // 현재 노드
+    private NodeDTO nodeDTO = new NodeDTO();
+}(파일 끝에 줄바꿈 문자 없음)
 
src/main/java/com/takensoft/taken_bi_manager/schedule/dto/NodeDTO.java (added)
+++ src/main/java/com/takensoft/taken_bi_manager/schedule/dto/NodeDTO.java
@@ -0,0 +1,27 @@
+package com.takensoft.taken_bi_manager.schedule.dto;
+
+import com.takensoft.taken_bi_manager.data.vo.DataTable;
+import com.takensoft.taken_bi_manager.jobs.vo.JobItm;
+import lombok.Data;
+
+@Data
+public class NodeDTO {
+    // 노드 ID (KEY)
+    private String id;
+
+    // 노드 타입 (노트 템플릿용)
+    private String type;
+
+    // 노드 이름
+    private String label;
+
+    // 위치
+    private NodePositionDTO position = new NodePositionDTO();
+
+    // 셋업 완료 여부
+    private Boolean isSetup = false;
+
+
+    // jobItm
+    private JobItm jobItm = new JobItm();
+}(파일 끝에 줄바꿈 문자 없음)
 
src/main/java/com/takensoft/taken_bi_manager/schedule/dto/NodePositionDTO.java (added)
+++ src/main/java/com/takensoft/taken_bi_manager/schedule/dto/NodePositionDTO.java
@@ -0,0 +1,12 @@
+package com.takensoft.taken_bi_manager.schedule.dto;
+
+import lombok.Data;
+
+@Data
+public class NodePositionDTO {
+    // X 좌표
+    private Double x;
+
+    // Y 좌표
+    private Double y;
+}(파일 끝에 줄바꿈 문자 없음)
 
src/main/java/com/takensoft/taken_bi_manager/schedule/service/Diagramservice.java (added)
+++ src/main/java/com/takensoft/taken_bi_manager/schedule/service/Diagramservice.java
@@ -0,0 +1,116 @@
+package com.takensoft.taken_bi_manager.schedule.service;
+
+import com.takensoft.taken_bi_manager.schedule.dto.DiagramDTO;
+import com.takensoft.taken_bi_manager.schedule.vo.ScheduleVO;
+import com.takensoft.taken_bi_manager.common.vo.CustomeResultMap;
+import com.takensoft.taken_bi_manager.common.vo.SearchVO;
+import com.takensoft.taken_bi_manager.schedule.vo.*;
+
+import java.util.*;
+
+public interface Diagramservice {
+    /*
+     * @author   박정하
+     * @since    2025.02.07
+     *
+     * 현재 노드에 연결된 노드(target) 조회
+     */
+    HashMap<String, Object> getNodesByNode(DiagramDTO diagramDTO);
+
+
+//    /**
+//     * @author 하관우
+//     * @since 2024.01.23
+//     *
+//     * Diagram 전체 조회
+//     */
+//    List<ScheduleVO> dataSelectListAll() throws Exception;
+//
+//    /**
+//     * @author 하관우
+//     * @since 2024.01.23
+//     *
+//     * log 조회
+//     */
+//    CustomeResultMap logSelectListAll(SearchVO searchVO) throws Exception;
+//
+//    /**
+//     * @author 하관우
+//     * @since 2024.01.23
+//     *
+//     * log detial 조회
+//     */
+//    CustomeResultMap detaillogSelectListAll(SearchVO searchVO) throws Exception;
+//
+//    /**
+//     * @author 하관우
+//     * @since 2024.01.23
+//     *
+//     * schedule 조회
+//     */
+//    ScheduleVO scheduleList(HashMap<String,Object> params) throws Exception;
+//
+//    /**
+//     * @author 하관우
+//     * @since 2024.01.23
+//     *
+//     * node 조회
+//     */
+//    List<NodeVO> nodeList(String diagramId) throws Exception;
+//
+//    /**
+//     * @author 하관우
+//     * @since 2024.01.23
+//     *
+//     * line 조회
+//     */
+//    List<EdgeVO> lineList(String diagramId) throws Exception;
+//
+//    /**
+//     * @author 하관우
+//     * @since 2024.01.23
+//     *
+//     * 다이어그램의 모든 정보 등록
+//     */
+////    int dataInsert(DiagramDetailDTO diagramDetailDTO) throws Exception;
+//
+//    /**
+//     * @author 하관우
+//     * @since 2024.05.29
+//     *
+//     * 다이어그램의 모든 수정 등록
+//     */
+////    int dataEdit(DiagramDetailDTO diagramDetailDTO) throws Exception;
+//
+//    /**
+//     * @author 하관우
+//     * @since 2024.02.08
+//     *
+//     * 즉시계산
+//     */
+//    List<HashMap<String, Object>> operatorNow(DiagramVO diagramVO, String type) throws Exception;
+//
+//    /**
+//     * @author 하관우
+//     * @since 2024.02.15
+//     *
+//     * diagram_id를 가져와서 해당하는것들 삭제
+//     */
+//    int dataDelete(List<ScheduleVO> scheduleVOList) throws Exception;
+//
+//    /**
+//     * @author 박정하
+//     * @since 2024.10.04
+//     *
+//     * Diagram 목록 조회
+//     */
+//    CustomeResultMap diagramListRead(SearchVO searchVO) throws Exception;
+//
+//    /**
+//     * @author 박정하
+//     * @since 2024.10.04
+//     *
+//     * Diagram 상세 조회
+//     */
+//    CustomeResultMap diagramDetailRead(String diagramId) throws Exception;
+}(파일 끝에 줄바꿈 문자 없음)
 
src/main/java/com/takensoft/taken_bi_manager/schedule/service/FilterService.java (added)
+++ src/main/java/com/takensoft/taken_bi_manager/schedule/service/FilterService.java
@@ -0,0 +1,17 @@
+package com.takensoft.taken_bi_manager.schedule.service;
+
+import com.takensoft.taken_bi_manager.schedule.dto.NodeDTO;
+
+/**
+ * @author  : 박정하
+ * @since   : 2024.09.25
+ * 필터 관련 인터페이스
+ */
+public interface FilterService {
+    /**
+     * @author : 박정하
+     * @since : 2024.09.25
+     * 필터 실행
+     */
+    NodeDTO runFilter(NodeDTO nodeVO) throws Exception;
+}(파일 끝에 줄바꿈 문자 없음)
src/main/java/com/takensoft/taken_bi_manager/schedule/service/ScheduleService.java (Renamed from src/main/java/com/takensoft/taken_bi_manager/common/schedule/service/ScheduleService.java)
--- src/main/java/com/takensoft/taken_bi_manager/common/schedule/service/ScheduleService.java
+++ src/main/java/com/takensoft/taken_bi_manager/schedule/service/ScheduleService.java
@@ -1,25 +1,27 @@
-package com.takensoft.taken_bi_manager.common.schedule.service;
+package com.takensoft.taken_bi_manager.schedule.service;
 
-import com.takensoft.taken_bi_manager.common.schedule.vo.Schedule;
+import com.takensoft.taken_bi_manager.schedule.vo.ScheduleVO;
 import com.takensoft.taken_bi_manager.common.vo.CustomeResultMap;
 import com.takensoft.taken_bi_manager.common.vo.SearchVO;
 
+import java.util.HashMap;
+
 public interface ScheduleService {
     /**
-     * @author 김성원
-     * @since 2021.01.24
-     *
-     * 스케줄 등록
-     */
-    public int conflictInsertSchedule (Schedule schedule) throws Exception;
-
-    /**
-     * @author 김성원
-     * @since 2021.01.24
+     * @author 박정하
+     * @since 2025.01.16
      *
      * 스케줄 목록 조회
      */
-    public CustomeResultMap selectScheduleList (SearchVO searchVO) throws Exception;
+    public HashMap<String, Object> selectScheduleList(SearchVO searchVO) throws Exception;
+
+    /**
+     * @author 박정하
+     * @since 2025.01.16
+     *
+     * 스케줄 등록
+     */
+    public HashMap<String, Object> insertSchedule(ScheduleVO scheduleVO) throws Exception;
 
     /**
      * @author 김성원
@@ -27,7 +29,7 @@
      *
      * 스케줄 상세 조회
      */
-    public Schedule selectSchedule (Schedule schedule) throws Exception;
+    public ScheduleVO selectSchedule (ScheduleVO scheduleVO) throws Exception;
 
     /**
      * @author 박정하
 
src/main/java/com/takensoft/taken_bi_manager/schedule/service/impl/DiagramServiceImpl.java (added)
+++ src/main/java/com/takensoft/taken_bi_manager/schedule/service/impl/DiagramServiceImpl.java
@@ -0,0 +1,788 @@
+package com.takensoft.taken_bi_manager.schedule.service.impl;
+
+import com.takensoft.taken_bi_manager.common.connection.api.dao.ConnectionApiDAO;
+import com.takensoft.taken_bi_manager.common.connection.api.service.ConnectionApiService;
+import com.takensoft.taken_bi_manager.common.connection.ehojoPlus.service.ConnectEhojoPlusService;
+import com.takensoft.taken_bi_manager.schedule.dao.ScheduleDAO;
+import com.takensoft.taken_bi_manager.schedule.dto.DiagramDTO;
+import com.takensoft.taken_bi_manager.schedule.vo.DiagramVO;
+import com.takensoft.taken_bi_manager.schedule.dto.NodeDTO;
+import com.takensoft.taken_bi_manager.data.dao.DataDAO;
+import com.takensoft.taken_bi_manager.data.dao.DatasetDAO;
+import com.takensoft.taken_bi_manager.data.service.DataService;
+import com.takensoft.taken_bi_manager.schedule.dao.DiagramDAO;
+import com.takensoft.taken_bi_manager.schedule.service.Diagramservice;
+import com.takensoft.taken_bi_manager.schedule.vo.*;
+import com.takensoft.taken_bi_manager.host.service.SftpService;
+import com.takensoft.taken_bi_manager.jobs.dao.JobDAO;
+import com.takensoft.taken_bi_manager.jobs.service.JobService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.*;
+
+@Service
+@RequiredArgsConstructor
+public class DiagramServiceImpl implements Diagramservice {
+    private final DiagramDAO diagramDAO;
+
+    @Autowired
+    private ScheduleDAO scheduleDAO;
+
+    @Autowired
+    private JobDAO  jobDAO;
+
+    @Autowired
+    private JobService jobService;
+
+    @Autowired
+    private DataDAO dataDAO;
+
+    @Autowired
+    private DataService dataService;
+
+    @Autowired
+    private ConnectionApiDAO connectionApiDAO;
+
+    @Autowired
+    private DatasetDAO datasetDAO;
+
+    @Autowired
+    private ConnectionApiService connectionApiService;
+
+    @Autowired
+    private SftpService sftpService;
+
+    @Autowired
+    private FilterServiceImpl filterService;
+
+    @Autowired
+    private final ConnectEhojoPlusService connectEhojoPlusService;
+
+    private List<NodeVO> nodeListByOrder;
+
+    @Override
+
+    /*
+     * @author   박정하
+     * @since    2025.02.07
+     *
+     * 현재 노드에 연결된 노드(target) 조회
+     *
+     */
+    public HashMap<String, Object> getNodesByNode(DiagramDTO diagramDTO) {
+        HashMap<String, Object> result = new HashMap<>();
+
+        DiagramVO diagram = diagramDTO.getDiagram(); // 다이어그램
+        List<NodeDTO> nodes = diagram.getNodes();
+        List<EdgeVO> edges = diagram.getEdges();
+
+        NodeDTO currentNode = diagramDTO.getNodeDTO(); // 현재 노드
+
+        List<NodeDTO> frontNodes = new ArrayList<>();
+        for (EdgeVO edge : edges) {
+            if (currentNode.getId().equals(edge.getTarget())) {
+                String frontNodeId = edge.getSource();
+                NodeDTO frontNode = findNodeByNodeId(nodes, frontNodeId);
+                frontNodes.add(frontNode); // frontNodes에 추가
+            }
+        }
+
+        return result;
+    }
+
+    /*
+     * @author   박정하
+     * @since    2025.02.07
+     *
+     * 제공 받은 노드 목록에서 제공 받은 노드 아이디를 지닌 노드 찾기
+     * 
+     */
+    private NodeDTO findNodeByNodeId(List<NodeDTO> nodes, String nodeId) {
+        for (NodeDTO node : nodes) {
+            if (node.getId().equals(nodeId)) {
+                return node;
+            }
+        }
+
+        return null;
+    };
+
+//    @Override
+//    public List<ScheduleVO> dataSelectListAll() throws Exception {
+//        return diagramDAO.dataSelectListAll();
+//    }
+//
+//    public ScheduleVO scheduleList(HashMap<String,Object> params) throws Exception {
+//        return diagramDAO.scheduleList(params);
+//    }
+//
+//    /* jobItm 타입에 따라 개별 실행 */
+//    private NodeVO runJobItm(JobItm jobItm, String diagramId, NodeVO nodeVO, List<NodeVO> nodes) throws Exception {
+//        String type = jobItm.getType();
+//        NodeVO prevNode;
+//        DataTable dataTable;
+//        switch (type) {
+//            case "dbConnection":
+//                ConnectionDB connectionDB = dataDAO.selectDbConnectionOne(jobItm.getItm_id());
+//                connectionDB.decodingData();
+//                connectionDB.setQuery(jobDAO.selectIdJobItemId(diagramId).getItm_option_string());
+//
+//                JobItm newJobItm = new JobItm();
+//                newJobItm.setDataTable(new DataTable());
+//                newJobItm.setItm(connectionDB);
+//                nodeVO.setItm(connectionDB);
+//
+//                dataTable = JobUtil.dbConnectionExec(newJobItm);
+//                nodeVO.setDataTable(dataTable);
+//                break;
+//            case "apiRead":
+//                String itmId = jobItm.getItm_id();
+//                ConnectionApi connectionApi = connectionApiDAO.selectConnectionApi(itmId);
+//                nodeVO.setItm(connectionApi);
+//                dataTable = connectionApiService.apiRequest(connectionApi);
+//                nodeVO.setDataTable(dataTable);
+//                break;
+//            case "fileRead":
+//                FileInfoItem fileInfoItem = jobDAO.fileReadItmSelect(jobItm.getGroup_id());
+//                String fileName = fileInfoItem.getFileName();
+//                int lastDotIndex = fileName.lastIndexOf('.');
+//                fileName.substring(lastDotIndex + 1);
+//                String extension = "";
+//                if (lastDotIndex != -1 && lastDotIndex < fileName.length() - 1) {
+//                    extension = fileName.substring(lastDotIndex + 1);
+//                }
+//                fileInfoItem.setExtension(extension);
+//                nodeVO.setDataTable((DataTable) sftpService.fileRead(fileInfoItem, fileInfoItem.getDatasetId()).getResultData().get("dataTableMap"));
+//                nodeVO.setItm(fileInfoItem);
+//                break;
+//            case "datasetRead":
+//                nodeVO.setItm(datasetDAO.selectDatasetPost(jobItm.getItm_id()));
+//                break;
+//            case "datasetWrite":
+//                prevNode = nodeListByOrder.get(nodeListByOrder.size() - 2);
+//                for (NodeVO node : nodes) {
+//                    if (node.getId().equals(prevNode.getId())) {
+//                        nodeVO.setDataTable(node.getDataTable());
+//                        break;
+//                    }
+//                }
+//                JobItemGroup jobItemGroup = new JobItemGroup();
+//                jobItemGroup.setGroupId(jobItm.getGroup_id());
+//                jobItemGroup.setItem(jobItm.getItm_id());
+//                jobItemGroup.setItemList(jobDAO.datasetItemSelect(jobItm));
+//                nodeVO.setItm(jobItemGroup);
+//                break;
+//            case "filter":
+//                for (int i = 0; i < nodeListByOrder.size(); i++) {
+//                    if (nodeListByOrder.get(i).getId().equals(nodeVO.getId())) {
+//                        prevNode = nodeListByOrder.get(i - 1);
+//                        nodeVO.setDataTable(prevNode.getDataTable());
+//                        break;
+//                    }
+//                }
+//                DataFilter dataFilter = new DataFilter();
+//                dataFilter.setGroupId(diagramId);
+//                dataFilter.setFilterItems(jobDAO.filterItemSelect(jobItm));
+//                dataFilter.setMatch_type(jobItm.isItm_option_bool());
+//                nodeVO.setItm(dataFilter);
+//                nodeVO = filterService.runFilter(nodeVO);
+//                break;
+//            case "ehojoRead":
+//                String id = jobItm.getItm_id();
+//                ConnectionEhojoVO connectionEhojoVO = connectEhojoPlusService.selectEhojoPlusInfo(id);
+//                nodeVO.setItm(connectionEhojoVO);
+//                CustomeResultMap customeResultMap = connectEhojoPlusService.openFisCal(connectionEhojoVO);
+//                dataTable = (DataTable) customeResultMap.getResultData().get("dataTable");
+//                nodeVO.setDataTable(dataTable);
+//                break;
+//        }
+//
+//        return nodeVO;
+//    }
+//
+//    public CustomeResultMap logSelectListAll(SearchVO searchVO) throws Exception {
+//        CustomeResultMap resultMap = new CustomeResultMap();
+//        try {
+//            List<ScheduleLogVO> logList = diagramDAO.logSelectListAll(searchVO);
+//            resultMap.getResultData().put("logList", logList);
+//            int rows = diagramDAO.logSelectListCnt(searchVO);
+//            searchVO.setTotalRows(rows);
+//            resultMap.getResultData().put("searchVO", searchVO);
+//        } catch (Exception e) {
+//            e.printStackTrace();
+//        }
+//        return resultMap;
+//    }
+//
+//    public CustomeResultMap detaillogSelectListAll(SearchVO searchVO) throws Exception {
+//        CustomeResultMap resultMap = new CustomeResultMap();
+//        try {
+//            List<ScheduleLogDetailVO> logList = diagramDAO.detaillogSelectListAll(searchVO);
+//            resultMap.getResultData().put("logList", logList);
+//            int rows = diagramDAO.detaillogSelectListCnt(searchVO);
+//            searchVO.setTotalRows(rows);
+//            resultMap.getResultData().put("searchVO", searchVO);
+//        } catch (Exception e) {
+//            e.printStackTrace();
+//        }
+//        return resultMap;
+//    }
+//
+//    public List<NodeVO> nodeList(String diagramId) throws Exception {
+//        List<NodeVO> nodeData = diagramDAO.nodeList(diagramId);
+//        return nodeData;
+//    }
+//
+//    public List<EdgeVO> lineList(String diagramId) throws Exception {
+//        List<EdgeVO> lineData = diagramDAO.lineList(diagramId);
+//        return lineData;
+//    }
+//
+//    /* 다이어그램 등록 */
+//    @Transactional
+//    public int dataInsert(DiagramDetailDTO diagramDetailDTO) throws Exception {
+//        int result = 0;
+//        String group_id = "";
+//        String userId = "";
+//
+//        // params 데이터 분리
+//        ScheduleVO scheduleVO = diagramDetailDTO.getScheduleVO();
+//        DiagramVO diagramVO = diagramDetailDTO.getDiagram();
+//        JobGroup jobGroup = scheduleVO.getJobGroup();
+//        List<NodeVO> nodes = diagramVO.getNodes();
+//        List<EdgeVO> edges = diagramVO.getEdges();
+//
+//        // 노드 내역 저장
+//        List<JobItm> jobItmList = new ArrayList<>();
+//
+//        // 노드 순서대로 정렬
+//        nodeListByOrder = new ArrayList<>();
+//        for (NodeVO nodeVO : nodes) {
+//            if (nodeVO.getNode_type().equals("DATASET_UPDATE")) {
+//                String endNodeId = nodeVO.getId();
+//                nodeListByOrder.add(nodeVO);
+//                findPrevNode(nodes, edges, endNodeId);
+//                break;
+//            }
+//        }
+//
+//        // 노드 별 실행
+//        for (NodeVO nodeVO : nodeListByOrder) {
+//            JobItm jobData = new JobItm();
+//            jobData.setItm(nodeVO.getItm());
+//            switch (nodeVO.getNode_type()) {
+//                case "DB_READ":
+//                    jobData.setType("dbConnection");
+//                    break;
+//                case "API_READ":
+//                    jobData.setType("apiRead");
+//                    break;
+//                case "FILE_READ":
+//                    jobData.setType("fileRead");
+//                    break;
+//                case "DATASET_READ":
+//                    jobData.setType("datasetRead");
+//                    break;
+//                case "DATASET_UPDATE":
+//                    jobData.setType("datasetWrite");
+//                    break;
+//                case "DATA_FILTER":
+//                    jobData.setType("filter");
+//                    break;
+//                case "EHOJO_READ":
+//                    jobData.setType("ehojoRead");
+//                    break;
+//            }
+//            jobItmList.add(jobData);
+//        }
+//        jobGroup.setJobItm(jobItmList);
+//
+//        try {
+//            CustomeResultMap customeResultMap = jobService.insertJobGroup(jobGroup);
+//            userId = CommonUtil.getLoginUserId();
+//            group_id = customeResultMap.getResultData().get("group_id").toString();
+//        } catch (Exception e) {
+//            e.printStackTrace();
+//            throw e;
+//        }
+//
+//        if(StringUtil.isEmpty(scheduleVO.getSchdulId())) {
+//            scheduleVO.setSchdulId(CommonUtil.getRandKey("SCHEDULE"));
+//            scheduleVO.setCreatId(userId);
+//        } else {
+//            scheduleVO.setUpdtId(userId);
+//        }
+//        scheduleVO.setGroupId(group_id);
+//        result += scheduleDAO.insertSchedule(scheduleVO);
+//
+//        diagramVO.setDiagram_id(group_id);
+//        diagramVO.setCreat_id(userId);
+//        result += diagramDAO.diagramDataInsert(diagramVO);
+//
+//        for (NodeVO nodeVO : nodes) {
+//            nodeVO.setDiagram_id(group_id);
+//            nodeVO.setNode_id(nodeVO.getId());
+//            nodeVO.setNode_state("wait");
+//            nodeVO.setLog_message("is not Running");
+//            result += diagramDAO.nodeDataInsert(nodeVO);
+//        }
+//
+//        for (EdgeVO edge : edges) {
+//            edge.setDiagram_id(group_id);
+//            result += diagramDAO.lineDataInsert(edge);
+//        }
+//
+//        String logId = CommonUtil.getRandKey("LOGID");
+//        ScheduleLogVO scheduleLogVO = new ScheduleLogVO();
+//        scheduleLogVO.setLog_id(logId);
+//        scheduleLogVO.setTotal_node_count(nodes.size());
+//        scheduleLogVO.setFail_node_count(0);
+//        scheduleLogVO.setFail_node_name("N");
+//        scheduleLogVO.setState_info("success");
+//        scheduleLogVO.setDiagram_id(group_id);
+//        scheduleLogVO.setUser_id(userId);
+//        diagramDAO.logDataInsert(scheduleLogVO);
+//
+//        ScheduleLogDetailVO scheduleLogDetailVO = new ScheduleLogDetailVO();
+//        List<NodeVO> nodeList = diagramDAO.nodeList(group_id);
+//        for (NodeVO nodeVO : nodeList) {
+//            String detailLogId = CommonUtil.getRandKey("DETAILLOGID");
+//            scheduleLogDetailVO.setDetail_log_id(detailLogId);
+//            scheduleLogDetailVO.setNode_name(nodeVO.getNode_name());
+//            scheduleLogDetailVO.setLog_id(logId);
+//            scheduleLogDetailVO.setLog_category("-");
+//            scheduleLogDetailVO.setLog_message("등록");
+//            scheduleLogDetailVO.setOperation_date(scheduleLogVO.getOperation_date());
+//            diagramDAO.logDetailDataInsert(scheduleLogDetailVO);
+//        }
+//        return result;
+//    }
+//
+//    /* 다이어그램 수정 */
+//    @Transactional(rollbackFor = Exception.class)
+//    public int dataEdit(DiagramDetailDTO diagramDetailDTO) throws Exception {
+//        int result =0;
+//
+//        // params 데이터 분리
+//        ScheduleVO scheduleVO = diagramDetailDTO.getScheduleVO();
+//        DiagramVO diagramVO = diagramDetailDTO.getDiagram();
+//        // schedule 데이터 분리
+//        JobGroup jobGroup = scheduleVO.getJobGroup();
+//        // diagram 데이터 분리
+//        List<NodeVO> nodes = diagramVO.getNodes();
+//        // 첫 번째 노드에서 다이어그램 id 가져오기
+//        // 프론트에서 노드 정보가 전달 되어야 수정 버튼이 동작하기 때문에 해당 위치에 반드시 있음
+//        String diagramId = scheduleVO.getGroupId();
+//
+//        // diagramId로 노드와 엣지 정보 일괄 삭제
+//        diagramDAO.nodeDelete(diagramId);
+//        diagramDAO.edgeDelete(diagramId);
+//
+//        // 로그 삭제
+//        HashMap<String,Object> logParams = new HashMap<>();
+//        logParams.put("diagram_id", diagramId);
+//        List<ScheduleLogVO> logList = diagramDAO.logSelectListAllID(logParams);
+//        for (ScheduleLogVO scheduleLogVO : logList) {
+//            result += diagramDAO.logDetailDelete(scheduleLogVO.getLog_id());
+//        }
+//        result += diagramDAO.logDelete(diagramId);
+//
+//        // 다이어그램 삭제
+//        diagramDAO.diagramDelete(diagramId);
+//
+//        // 스케줄 삭제
+//        result += scheduleDAO.insertSchedule(scheduleVO);
+//
+//        // jobItem 삭제
+//        for (NodeVO nodeVO : nodes) {
+//            String itmId = null;
+//            switch (nodeVO.getNode_type()) {
+//                case "DB_READ":
+//                    itmId = jobDAO.selectIdJobItemDbId(diagramId);
+//                    dataDAO.deleteConnectionDb(itmId);
+//                    break;
+//                case "API_READ":
+//                    itmId = jobDAO.selectIdJobItemApiId(diagramId);
+//                    connectionApiDAO.deleteApiParameterInfo(itmId);
+//                    connectionApiDAO.deleteApiConnectionInfo(itmId);
+//                    break;
+//                case "FILE_READ":
+//                    jobDAO.deleteFileReadItm(diagramId);
+//                    break;
+//                case "DATASET_UPDATE":
+//                    jobDAO.deleteDatasetItem(diagramId);
+//                    break;
+//                case "DATA_FILTER":
+//                    jobDAO.deleteFilterItem(diagramId);
+//                    break;
+//                case "EHOJO_READ":
+//                    String ehpInfoId = jobDAO.selectIdJobItemEhpId(diagramId);
+//                    connectEhojoPlusService.deleteEhojoPlusInfo(ehpInfoId);
+//                    break;
+//            }
+//        }
+//        jobDAO.jobItemDeleteId(diagramId);
+//
+//        // jobGroup 삭제
+//        jobDAO.jobGroupDelete(jobGroup);
+//
+//        // 다이어그램 등록
+//        dataInsert(diagramDetailDTO);
+//
+//        return result;
+//    }
+//
+//    /**
+//     * @author 하관우
+//     * @since 2024.02.15
+//     *
+//     * diagram_id를 가져와서 해당하는것들 삭제
+//     */
+//    @Transactional(rollbackFor = Exception.class)
+//    public int dataDelete(List<ScheduleVO> scheduleVOList) throws Exception {
+//        int result = 0;
+//        for (ScheduleVO scheduleVO : scheduleVOList) {
+//            String diagramId = scheduleVO.getGroupId();
+//            result += diagramDAO.edgeDelete(diagramId);
+//            result += diagramDAO.nodeDelete(diagramId);
+//
+//            HashMap<String,Object> logParams = new HashMap<>();
+//            logParams.put("diagram_id", diagramId);
+//            List<ScheduleLogVO> logList = diagramDAO.logSelectListAllID(logParams);
+//            for (ScheduleLogVO scheduleLogVO : logList) {
+//                result += diagramDAO.logDetailDelete(scheduleLogVO.getLog_id());
+//            }
+//            result += diagramDAO.logDelete(diagramId);
+//            result += diagramDAO.diagramDelete(diagramId);
+//
+//            scheduleVO.setUseAt(false);
+//            result += scheduleDAO.insertSchedule(scheduleVO);
+//        }
+//        return result;
+//    }
+//
+//    //로그 인서트
+//    public String diagramLog(ScheduleLogVO logData)throws Exception{
+//        int result =0;
+//
+//        logData.setLog_id(CommonUtil.getRandKey("LOGID"));
+//        result += diagramDAO.logDataInsert(logData);
+//
+//        return logData.getLog_id();
+//    }
+//
+//    //로그 업데이트
+//    public int diagramLogUP(ScheduleLogVO logData)throws Exception{
+//        int result =0;
+//        //로그 인서트
+//        result += diagramDAO.logDataUpdate(logData);
+//
+//        return result;
+//    }
+//
+//    //로그 상세 인서트
+//    public int dirgramDetailLog(ScheduleLogDetailVO logDetailData)throws Exception{
+//        logDetailData.setDetail_log_id(CommonUtil.getRandKey("DETAILLOGID"));
+//        return diagramDAO.logDetailDataInsert(logDetailData);
+//    }
+//
+//    /**
+//     * @author 박정하
+//     * @since 2024.09.07
+//     *
+//     * 즉시계산
+//     */
+//    public List<HashMap<String, Object>> operatorNow(DiagramVO diagramVO, String type) throws Exception {
+//        // params 데이터 분리
+//        List<NodeVO> nodes = diagramVO.getNodes();
+//        List<EdgeVO> edges = diagramVO.getEdges();
+//
+//        // 유저 정보 가져오기
+//        String userId = null;
+//        if (type.equals("create")) {
+//            userId = CommonUtil.getLoginUserId();
+//        } else {
+//            userId = "admin";
+//        }
+//
+//        // 로그 생성
+//        ScheduleLogVO scheduleLogVO = new ScheduleLogVO();
+//        scheduleLogVO.setDiagram_id(diagramVO.getDiagram_id());
+//        scheduleLogVO.setUser_id(userId);
+//        scheduleLogVO.setTotal_node_count(nodes.size());
+//        scheduleLogVO.setFail_node_count(0);
+//        scheduleLogVO.setState_info("success");
+//        String logId = diagramLog(scheduleLogVO);
+//
+//        // 노드 순서대로 정렬
+//        nodeListByOrder = new ArrayList<>();
+//        for (NodeVO nodeVO : nodes) {
+//            if (nodeVO.getNode_type().equals("DATASET_UPDATE")) {
+//                String endNodeId = nodeVO.getId();
+//                nodeListByOrder.add(nodeVO);
+//                findPrevNode(nodes, edges, endNodeId);
+//                break; // endNode는 1개만 존재할 수 있음 (프론트에서 검증 후 등록됨)
+//            }
+//        }
+//
+//        List<HashMap<String, Object>> resultNodeList = new ArrayList<>();
+//        int failNodeCount = 0;
+//        String failNodeName = null;
+//        for (int i = 0; i < nodeListByOrder.size(); i++) {
+//            NodeVO node = nodeListByOrder.get(i);
+//
+//            // 로그 디테일 등록
+//            ScheduleLogDetailVO scheduleLogDetailVO = new ScheduleLogDetailVO();
+//            scheduleLogDetailVO.setNode_name(node.getNode_name());
+//            scheduleLogDetailVO.setLog_id(logId);
+//            scheduleLogDetailVO.setLog_category("success");
+//            scheduleLogDetailVO.setLog_message(null);
+//            scheduleLogDetailVO.setCreat_id(userId);
+//            Timestamp operationDate = new Timestamp(System.currentTimeMillis());
+//            scheduleLogDetailVO.setOperation_date(operationDate);
+//
+//            // 노드 실행
+//            try {
+//                nodeCalculation(node);
+//            } catch (Exception e) {
+//                failNodeCount++;
+//                scheduleLogDetailVO.setLog_category("fail");
+//                scheduleLogDetailVO.setLog_message(e.getMessage());
+//            }
+//
+//            // 로그 디테일 수정
+//            dirgramDetailLog(scheduleLogDetailVO);
+//
+//            scheduleLogVO.setFail_node_count(failNodeCount);
+//            if (failNodeCount > 0) {
+//                failNodeName = node.getNode_name();
+//                scheduleLogVO.setFail_node_name(failNodeName);
+//            }
+//        }
+//
+//        // 반환값
+//        return resultNodeList;
+//    }
+//
+//    /**
+//     * @author 박정하
+//     * @since 2024.09.07
+//     *
+//     * 노드 설정 값에 따라 노드 실행
+//     */
+//    private NodeVO nodeCalculation(NodeVO node) throws Exception {
+//        DataTable resultDataTable = new DataTable();
+//        JobItm resultJobItm = new JobItm();
+//
+//        NodeVO prevNode;
+//        List<ColumnData> columnDatas;
+//        List<List<Object>> rowData;
+//        ObjectMapper objectMapper = new ObjectMapper();
+//        String itmToString;
+//
+//        String nodeType = node.getNode_type();
+//        switch (nodeType) {
+//            // DB_READ, FILE_READ, API_READ는 선행 노드와 관계 없이 실행
+//            case "DB_READ":
+//                itmToString = objectMapper.writeValueAsString(node.getItm());
+//                ConnectionDB connectionDB = objectMapper.readValue(itmToString, ConnectionDB.class);
+//                connectionDB.decodingData();
+//
+//                resultJobItm.setItm(connectionDB);
+//                node.setItm(connectionDB);
+//
+//                DataTable resultTable = JobUtil.dbConnectionExec(resultJobItm);
+//                node.setDataTable(resultTable);
+//                break;
+//            case "API_READ":
+//                itmToString = objectMapper.writeValueAsString(node.getItm());
+//                ConnectionApi connectionApi = objectMapper.readValue(itmToString, ConnectionApi.class);
+//                DataTable dataTable = connectionApiService.apiRequest(connectionApi);
+//                node.setDataTable(dataTable);
+//                break;
+//            case "FILE_READ":
+//                DataTable dataTableMap = node.getDataTable();
+//                List<ColumnData> columnDatasMapList = dataTableMap.getColumnDatas();
+//                resultDataTable.setColumnDatas(columnDatasMapList);
+//                rowData = dataTableMap.getRowData();
+//                resultDataTable.setRowData(rowData);
+//                resultJobItm.setDataTable(resultDataTable);
+//                node.setDataTable(resultDataTable);
+//                node.setItm(resultJobItm);
+//            // DATA_FILTER는 선행 노드의 결과 값을 가져와서 실행
+//            case "DATA_FILTER":
+//                for (int i = 0; i < nodeListByOrder.size(); i++) {
+//                    if (nodeListByOrder.get(i).getId().equals(node.getId())) {
+//                        prevNode = nodeListByOrder.get(i - 1);
+//                        node.setDataTable(prevNode.getDataTable());
+//                        break;
+//                    }
+//                }
+//                node = filterService.runFilter(node);
+//                break;
+//            // DATASET_UPDATE는 선행 노드의 결과 값을 가져와서 실행
+//            case "DATASET_UPDATE":
+//                prevNode = nodeListByOrder.get(nodeListByOrder.size() - 2); // dataset_update가 가장 마지막에 실행됨(순서보장)
+//                rowData = prevNode.getDataTable().getRowData(); // 넣을 데이터
+//
+//                JobItemGroup itm = objectMapper.readValue(objectMapper.writeValueAsString(node.getItm()), JobItemGroup.class);
+//                String datasetPostId = itm.getItem();
+//
+//                List<List<Object>> insertData = new ArrayList<>();
+//                List<List<Object>> changeData = new ArrayList<>();
+//                List<List<Object>> deleteData = new ArrayList<>();
+//
+//                List<Object> matchList = itm.getItemList(); // 매칭 결과
+//                for (List<Object> row : rowData) { // rowData 크기 만큼 실행
+//                    List<Object> newData = new ArrayList<>();
+//
+//                    for (Object match : matchList) { // matchList 크기 만큼 실행(ts_row 제외한 컬럼 수 만큼 실행)
+//                        HashMap<String, Object> item = (HashMap<String, Object>) match;
+//
+//                        if (item.get("targetColumnNm") != null) {
+//                            String sourceColumnNm = item.get("targetColumnNm").toString();
+//                            Integer sourceIdx = Integer.valueOf(sourceColumnNm.substring(0, sourceColumnNm.indexOf("/")));
+//                            newData.add(row.get(sourceIdx));
+//                        } else {
+//                            newData.add(null);
+//                        }
+//                    }
+//
+//                    if (node.isItm_option_bool()) {
+//                        insertData.add(newData);
+//                    } else {
+//                        changeData.add(newData);
+//                    }
+//                }
+//
+//                dataService.datasetRowDataUpdate(datasetPostId, changeData, deleteData, insertData, "admin");
+//                break;
+//        }
+//        return node;
+//    }
+//
+//    /**
+//     * @author 박정하
+//     * @since 2024.10.04
+//     *
+//     * Diagram 목록 조회
+//     */
+//    @Override
+//    public CustomeResultMap diagramListRead(@RequestBody SearchVO searchVO) throws Exception {
+//        CustomeResultMap result = new CustomeResultMap();
+//
+//        int totalRows = diagramDAO.diagramListCountRead(searchVO);
+//        searchVO.setTotalRows(totalRows);
+//        result.getResultData().put("searchVO", searchVO);
+//
+//        List<DiagramListDTO> diagramList = diagramDAO.diagramListRead(searchVO);
+//        result.getResultData().put("diagramList", diagramList);
+//        return result;
+//    }
+//
+//    /**
+//     * @author 박정하
+//     * @since 2024.10.04
+//     *
+//     * Diagram 상세 조회
+//     */
+//    @Override
+//    public CustomeResultMap diagramDetailRead(String diagramId) throws Exception {
+//        CustomeResultMap result = new CustomeResultMap();
+//
+//        // 스케줄 상세 조회
+//        String scheduleId = scheduleDAO.selectScheduleIdRead(diagramId);
+//        ScheduleVO scheduleVO = scheduleDAO.selectSchedule(scheduleId);
+//        scheduleVO.setJobGroup(jobService.selectJobGroup(diagramId));
+//
+//        // 다이어그램 상세 조회
+//        DiagramVO diagramVO = diagramDAO.diagramDetailRead(diagramId); // nodes, edges 조회 안 됨
+//
+//        // edges 조회
+//        List<EdgeVO> edges = diagramDAO.lineList(diagramId);
+//        diagramVO.setEdges(edges); // diagramVO에 엣지 목록 추가
+//
+//        // nodes 조회
+//        List<NodeVO> nodes = diagramDAO.nodeList(diagramId);
+//        // 노드 순서대로 정렬
+//        nodeListByOrder = new ArrayList<>();
+//        for (NodeVO nodeVO : nodes) {
+//            nodeVO.setNode_id(nodeVO.getId());
+//
+//            NodePosition position = new NodePosition();
+//            position.setX(nodeVO.getCenter_x());
+//            position.setY(nodeVO.getCenter_y());
+//            nodeVO.setPosition(position);
+//
+//            if (nodeVO.getNode_type().equals("DATASET_UPDATE")) {
+//                String endNodeId = nodeVO.getId();
+//                nodeListByOrder.add(nodeVO);
+//                findPrevNode(nodes, edges, endNodeId);
+//                break; // endNode는 1개만 존재할 수 있음 (프론트에서 검증 후 등록됨)
+//            }
+//        }
+//
+//        // JobGroup 생성
+//        JobGroup jobGroup = new JobGroup();
+//        jobGroup.setGroup_id(diagramId);
+//        List<JobItm> jobItmList = jobDAO.selectJobItem(jobGroup);
+//        jobGroup.setJobItm(jobItmList);
+//        // 노드 형식 변경
+//        for (int i = 0; i < jobItmList.size(); i++) {
+//            int order = i + 1;
+//            for (JobItm jobItm : jobItmList) {
+//                if (jobItm.getIndx() == order) {
+//                    for (NodeVO nodeVO : nodes) {
+//                        String nodeId = nodeListByOrder.get(i).getId(); // 다이어그램 등록시 순서대로 정렬하여 실행 순서 보장됨
+//                        if (nodeVO.getId().equals(nodeId)) {
+//                            nodeVO = runJobItm(jobItm, diagramId, nodeVO, nodes);
+//                            break;
+//                        }
+//                    }
+//                }
+//            }
+//        }
+//        diagramVO.setNodes(nodes); // diagramVO에 노드 목록 추가
+//
+//        DiagramDetailDTO diagramDetailDTO = new DiagramDetailDTO();
+//        diagramDetailDTO.setScheduleVO(scheduleVO);
+//        diagramDetailDTO.setDiagram(diagramVO);
+//
+//        result.getResultData().put("diagramDetailDTO", diagramDetailDTO);
+//        return result;
+//    }
+//
+//    /**
+//     * @author 박정하
+//     * @since 2024.10.04
+//     *
+//     * Diagram Id로 Schedule 구하기
+//     */
+//    private ScheduleVO selectScheduleIdRead(String diagramId) throws Exception {
+//        String scheduleId = scheduleDAO.selectScheduleIdRead(diagramId);
+//        return scheduleDAO.selectSchedule(scheduleId);
+//    }
+//
+//    /**
+//     * @author 박정하
+//     * @since 2024.09.24
+//     *
+//     * 엣지로 노드 실행 순서대로 정렬
+//     */
+//    private void findPrevNode(List<NodeVO> nodes, List<EdgeVO> edges, String nodeId) {
+//        for (EdgeVO edge : edges) {
+//            String sourceNodeId = edge.getSource(); // 엣지 기준 왼쪽 노드
+//            String targetNodeId = edge.getTarget(); // 엣지 기준 오른쪽 노드
+//            if (targetNodeId.equals(nodeId)) {
+//                for (NodeVO node : nodes) {
+//                    if (node.getId().equals(sourceNodeId)) {
+//                        nodeListByOrder.add(0, node);
+//                        findPrevNode(nodes, edges, node.getId());
+//                    }
+//                }
+//            }
+//        }
+//    }
+}(파일 끝에 줄바꿈 문자 없음)
 
src/main/java/com/takensoft/taken_bi_manager/schedule/service/impl/FilterServiceImpl.java (added)
+++ src/main/java/com/takensoft/taken_bi_manager/schedule/service/impl/FilterServiceImpl.java
@@ -0,0 +1,35 @@
+package com.takensoft.taken_bi_manager.schedule.service.impl;
+
+import com.takensoft.taken_bi_manager.data.vo.DataTable;
+import com.takensoft.taken_bi_manager.schedule.dto.NodeDTO;
+import com.takensoft.taken_bi_manager.schedule.service.FilterService;
+import com.takensoft.taken_bi_manager.jobs.util.DataFilterUtil;
+import com.takensoft.taken_bi_manager.jobs.vo.JobItm;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+
+/**
+ * @author  : 박정하
+ * @since   : 2024.09.25
+ * 필터 관련 구현체
+ */
+@Service("filterService")
+@RequiredArgsConstructor
+public class FilterServiceImpl implements FilterService {
+    /**
+     * @author : 박정하
+     * @since : 2024.09.25
+     * 필터 실행
+     * use: NodeVO
+     */
+    @Override
+    public NodeDTO runFilter(NodeDTO nodeVO) throws Exception {
+        JobItm jobItm = new JobItm();
+//        jobItm.setItm(nodeVO.getItm());
+//        jobItm.setDataTable(nodeVO.getDataTable());
+//
+//        DataTable dataTable = DataFilterUtil.FilterExcute(jobItm); // 필터 실행
+//        nodeVO.setDataTable(dataTable);
+        return nodeVO;
+    }
+}(파일 끝에 줄바꿈 문자 없음)
 
src/main/java/com/takensoft/taken_bi_manager/schedule/service/impl/ScheduleServiceImpl.java (added)
+++ src/main/java/com/takensoft/taken_bi_manager/schedule/service/impl/ScheduleServiceImpl.java
@@ -0,0 +1,106 @@
+package com.takensoft.taken_bi_manager.schedule.service.impl;
+
+import com.takensoft.taken_bi_manager.schedule.dao.ScheduleDAO;
+import com.takensoft.taken_bi_manager.schedule.service.ScheduleService;
+import com.takensoft.taken_bi_manager.schedule.vo.ScheduleVO;
+import com.takensoft.taken_bi_manager.common.util.CommonUtil;
+import com.takensoft.taken_bi_manager.common.util.StringUtil;
+import com.takensoft.taken_bi_manager.common.vo.CustomeResultMap;
+import com.takensoft.taken_bi_manager.common.vo.SearchVO;
+import com.takensoft.taken_bi_manager.jobs.service.JobService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.HashMap;
+
+@Service
+public class ScheduleServiceImpl implements ScheduleService {
+    @Autowired
+    private ScheduleDAO scheduleDAO;
+
+    @Autowired
+    private JobService jobService;
+
+    /**
+     * @author 박정하
+     * @since 2025.01.16
+     *
+     * 스케줄 목록 조회
+     */
+    public HashMap<String, Object> selectScheduleList(SearchVO searchVO) throws Exception {
+        // 전체 개수 조회 후 searchVO 수정
+        int totalRows = scheduleDAO.selectScheduleCount(searchVO);
+        searchVO.setTotalRows(totalRows);
+
+        HashMap<String, Object> result = new HashMap<>();
+        result.put("list", scheduleDAO.selectScheduleList(searchVO));
+        result.put("searchVO", searchVO);
+        return result;
+    }
+
+    /*
+     * 스케줄 등록
+     */
+    @Override
+    public HashMap<String, Object> insertSchedule(ScheduleVO scheduleVO) throws Exception {
+        // 스케줄 ID, 작성자 혹은 수정자 ID 추가 및 수정
+        if (StringUtil.isEmpty(scheduleVO.getSchdulId())){
+            scheduleVO.setSchdulId(CommonUtil.getRandKey("SCHEDULE"));
+            scheduleVO.setCreatId(CommonUtil.getLoginUserId());
+        } else {
+            scheduleVO.setUpdtId(CommonUtil.getLoginUserId());
+        }
+        
+        // 스케줄 그룹 ID 추가
+        String group_id = jobService.insertJobGroup(scheduleVO.getJobGroup()).getResultData().get("group_id").toString();
+        scheduleVO.setGroupId(group_id);
+
+        int insertCnt = scheduleDAO.insertSchedule(scheduleVO);
+        if (insertCnt < 1) {
+            throw new RuntimeException("작업 진행 중 오류가 발생했습니다.");
+        }
+
+        HashMap<String, Object> result = new HashMap<>();
+        result.put("insertCnt", insertCnt);
+        return result;
+    }
+
+    /*
+     * 스케줄 상세 조회
+     */
+    @Override
+    public ScheduleVO selectSchedule(ScheduleVO scheduleVO) throws Exception {
+        ScheduleVO sc = scheduleDAO.selectSchedule(scheduleVO.getSchdulId());
+        sc.setJobGroup(jobService.selectJobGroup(sc.getGroupId()));
+        return sc;
+    }
+
+    /**
+     * @author 박정하
+     * @since 2024.10.04
+     *
+     * 스케줄 정보 삭제
+     */
+    @Override
+    public CustomeResultMap deleteSchedule(String schdulId) throws Exception {
+        CustomeResultMap result = new CustomeResultMap();
+        result.getResultData().put("updateResult", scheduleDAO.deleteSchedule(schdulId));
+        return result;
+    }
+
+    /**
+     * @author 박정하
+     * @since 2024.10.04
+     *
+     * 스케줄 상태 변경
+     */
+    @Override
+    public CustomeResultMap scheduleSttusChange(String schdulId, String schdulSttus) throws Exception {
+        CustomeResultMap result = new CustomeResultMap();
+        HashMap<String, Object> params = new HashMap<>();
+        params.put("schdulId", schdulId);
+        params.put("schdulSttus", schdulSttus);
+        result.getResultData().put("updateResult", scheduleDAO.scheduleSttusChange(params));
+        return result;
+    }
+}(파일 끝에 줄바꿈 문자 없음)
 
src/main/java/com/takensoft/taken_bi_manager/schedule/vo/DiagramVO.java (added)
+++ src/main/java/com/takensoft/taken_bi_manager/schedule/vo/DiagramVO.java
@@ -0,0 +1,22 @@
+package com.takensoft.taken_bi_manager.schedule.vo;
+
+import com.takensoft.taken_bi_manager.schedule.dto.NodeDTO;
+import lombok.Data;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Data
+public class DiagramVO {
+    // 스케줄 ID (KEY)
+    private String schdulId;
+
+    // 스케줄 타입 (cmmn_code 테이블의 code_id와 동일)
+    private String schdulType;
+
+    // 다이어그램 내 노드 목록
+    private List<NodeDTO> nodes = new ArrayList<>();
+
+    // 다이어그램 내 엣지 목록
+    private List<EdgeVO> edges = new ArrayList<>();
+}(파일 끝에 줄바꿈 문자 없음)
 
src/main/java/com/takensoft/taken_bi_manager/schedule/vo/EdgeVO.java (added)
+++ src/main/java/com/takensoft/taken_bi_manager/schedule/vo/EdgeVO.java
@@ -0,0 +1,18 @@
+package com.takensoft.taken_bi_manager.schedule.vo;
+
+import lombok.Data;
+
+@Data
+public class EdgeVO {
+    // 스케줄 ID (KEY)
+    private String schdulId;
+
+    // 엣지 ID (KEY)
+    private String edgeId;
+
+    // 엣지의 시작 노드
+    private String source;
+
+    // 엣지의 끝 노드
+    private String target;
+}(파일 끝에 줄바꿈 문자 없음)
 
src/main/java/com/takensoft/taken_bi_manager/schedule/vo/NodeVO.java (added)
+++ src/main/java/com/takensoft/taken_bi_manager/schedule/vo/NodeVO.java
@@ -0,0 +1,24 @@
+package com.takensoft.taken_bi_manager.schedule.vo;
+
+import lombok.Data;
+
+@Data
+public class NodeVO {
+    // 스케줄 ID (KEY)
+    private String schdulId;
+
+    // 노드 ID (KEY)
+    private String nodeId;
+
+    // 노드 이름
+    private String nodeLabel;
+
+    // 노드 타입 (노트 템플릿용)
+    private String nodeType;
+
+    // X 좌표
+    private Double positionX;
+
+    // Y 좌표
+    private Double positionY;
+}(파일 끝에 줄바꿈 문자 없음)
 
src/main/java/com/takensoft/taken_bi_manager/schedule/vo/ScheduleLogDetailVO.java (added)
+++ src/main/java/com/takensoft/taken_bi_manager/schedule/vo/ScheduleLogDetailVO.java
@@ -0,0 +1,33 @@
+package com.takensoft.taken_bi_manager.schedule.vo;
+
+import lombok.Data;
+
+import java.sql.Timestamp;
+
+@Data
+public class ScheduleLogDetailVO {
+    // 시리얼 버전
+    private static final long serialVersionUID = 1L;
+
+
+    // 스케줄 로그 ID (KEY)
+    private String schdulLogId;
+
+    // 스케줄 로그 상세 ID (KEY)
+    private String detailLogId;
+
+    // 작동 일시
+    private Timestamp executDe;
+
+    // 작동 완료 일시
+    private Timestamp executComptDe;
+
+    // 노드 ID
+    private String nodeId;
+
+    // 스케줄 로그 상태 (TRUE: 성공, FALSE: 실패)
+    private String detailSttus;
+
+    // 스케줄 로그 메세지
+    private String detailMssage;
+}(파일 끝에 줄바꿈 문자 없음)
 
src/main/java/com/takensoft/taken_bi_manager/schedule/vo/ScheduleLogVO.java (added)
+++ src/main/java/com/takensoft/taken_bi_manager/schedule/vo/ScheduleLogVO.java
@@ -0,0 +1,35 @@
+package com.takensoft.taken_bi_manager.schedule.vo;
+
+import lombok.Data;
+
+import java.sql.Timestamp;
+
+@Data
+public class ScheduleLogVO {
+    // 시리얼 버전
+    private static final long serialVersionUID = 1L;
+
+
+    // 스케줄 ID (KEY)
+    private String schdulId;
+
+    // 스케줄 로그 ID (KEY)
+    private String schdulLogId;
+
+    // 작동 일시
+    private Timestamp executDe;
+
+    // 총 노드 수
+    private int allNodeCo;
+
+    // 실패 노드 수
+    private int failrNodeCo;
+
+    // 스케줄 상태
+    private String schdulLogSttus;
+
+
+    /* 그 외 */
+    // 실패 노드 이름
+    private String failrNodeNm;
+}(파일 끝에 줄바꿈 문자 없음)
 
src/main/java/com/takensoft/taken_bi_manager/schedule/vo/ScheduleVO.java (added)
+++ src/main/java/com/takensoft/taken_bi_manager/schedule/vo/ScheduleVO.java
@@ -0,0 +1,70 @@
+package com.takensoft.taken_bi_manager.schedule.vo;
+
+import com.takensoft.taken_bi_manager.jobs.vo.JobGroup;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.sql.Timestamp;
+import java.util.*;
+
+@Data
+public class ScheduleVO implements Serializable {
+	// 시리얼 버전
+	private static final long serialVersionUID = 1L;
+
+
+	/* 스케줄 테이블 SCHDUL_INFO */
+	// 스케줄 ID (KEY)
+	private String schdulId;
+
+	// 스케줄 잡그룹 ID (KEY)
+	private String groupId;
+
+	// 제목
+	private String schdulSj;
+
+	// 내용
+	private String schdulCn;
+
+	// 스케줄 타입 (cmmn_code 테이블의 code_id와 동일)
+	private String schdulType;
+
+	// 시리얼 버전
+	private String cron;
+
+	// cron 스케줄링 한글
+	private String cronChrctr;
+
+	// 스케줄 상태 (TRUE: 실행 / FALSE: 중단)
+	private boolean schdulSttus = true;
+
+	// 주기적인지 아닌지 여부 (TRUE: 주기적 / FALSE: 일시적)
+	private boolean cycleAt;
+
+	// 사용여부 (TRUE: 사용 / FALSE: 미사용-삭제-)
+	private boolean useAt = true;
+
+	// 등록자
+	private String creatId;
+
+	// 등록일
+	private Timestamp creatDt;
+
+	// 수정자
+	private String updtId;
+
+	// 수정일
+	private Timestamp updtDt;
+
+
+	/* 프론트 vue flow 용  */
+	// 다이어그램
+	private DiagramVO diagram = new DiagramVO();
+
+	/* 그 외 */
+	// 잡 그룹
+	private JobGroup jobGroup = new JobGroup();
+
+	// 스케줄 로그 목록
+	private List<ScheduleLogVO> schdulLogs = new ArrayList<>();
+}(파일 끝에 줄바꿈 문자 없음)
 
src/main/java/com/takensoft/taken_bi_manager/schedule/web/DiagramController.java (added)
+++ src/main/java/com/takensoft/taken_bi_manager/schedule/web/DiagramController.java
@@ -0,0 +1,199 @@
+package com.takensoft.taken_bi_manager.schedule.web;
+
+import com.takensoft.taken_bi_manager.common.vo.CheckMessage;
+import com.takensoft.taken_bi_manager.schedule.dto.DiagramDTO;
+import com.takensoft.taken_bi_manager.common.vo.CustomeResultMap;
+import com.takensoft.taken_bi_manager.schedule.dao.DiagramDAO;
+import com.takensoft.taken_bi_manager.schedule.service.Diagramservice;
+import lombok.RequiredArgsConstructor;
+import org.springframework.http.HttpStatus;
+import org.springframework.web.bind.annotation.*;
+
+@RestController
+@RequestMapping("/diagram")
+@RequiredArgsConstructor
+public class DiagramController {
+    private final Diagramservice diagramService;
+    private final DiagramDAO diagramDAO;
+
+    /*
+    * @author   박정하
+    * @since    2025.02.07
+    *
+    * 현재 노드에 연결된 노드(target) 조회
+    */
+    @PostMapping (value ="/getNodesByNode.json")
+    public CustomeResultMap getNodesByNode(@RequestBody DiagramDTO diagramDTO) {
+        CustomeResultMap resultMap = new CustomeResultMap();
+
+        try {
+            resultMap.setResultData(diagramService.getNodesByNode(diagramDTO));
+        } catch (RuntimeException e) {
+            resultMap.setCheckMessage(new CheckMessage(false, e.getMessage(), HttpStatus.BAD_REQUEST.value()));
+        } catch (Exception e) {
+            resultMap.setCheckMessage(new CheckMessage(false, e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR.value()));
+        }
+
+        return resultMap;
+    }
+
+//    /**
+//     * @author 하관우
+//     * @since 2024.01.23
+//     *
+//     * Diagram 조회
+//     */
+//    @RequestMapping(value ="/dataSelectListAll.json", method = RequestMethod.POST)
+//    public ModelAndView dataSelectListAll() throws Exception {
+//        ModelAndView mav = new ModelAndView("jsonView");
+//        mav.addObject("result", diagramService.dataSelectListAll());
+//        return mav;
+//    }
+//
+//    /**
+//     * @author 하관우
+//     * @since 2024.01.23
+//     *
+//     * DIAGRAM_ID 해당하는 스케줄 관리
+//     */
+//
+//    @RequestMapping(value ="/scheduleList.json", method = RequestMethod.POST)
+//    public ModelAndView scheduleList(@RequestBody HashMap<String,Object> params) throws Exception {
+//
+//        ModelAndView mav = new ModelAndView("jsonView");
+//        mav.addObject("result", diagramService.scheduleList(params));
+//        return mav;
+//    }
+//
+//    /**
+//     * @author 하관우
+//     * @since 2024.01.23
+//     *
+//     * 로그조회 조회
+//     */
+//
+//    @RequestMapping(value ="/logSelectListAll.json", method = RequestMethod.POST)
+//    public ModelAndView logSelectListAll(@RequestBody SearchVO searchVO) throws Exception {
+//        ModelAndView mav = new ModelAndView("jsonView");
+//        mav.addObject("result", diagramService.logSelectListAll(searchVO));
+//        return mav;
+//    }
+//
+//
+//    /**
+//     * @author 하관우
+//     * @since 2024.01.23
+//     *
+//     * 로그 상세조회 조회
+//     */
+//    @RequestMapping(value ="/detaillogSelectListAll.json", method = RequestMethod.POST)
+//    public ModelAndView detaillogSelectListAll(@RequestBody SearchVO searchVO) throws Exception {
+//
+//        ModelAndView mav = new ModelAndView("jsonView");
+//        mav.addObject("result", diagramService.detaillogSelectListAll(searchVO));
+//        return mav;
+//    }
+//
+//    /**
+//     * @author 하관우
+//     * @since 2024.01.23
+//     *
+//     * node 조회
+//     */
+//    @RequestMapping(value ="/nodeList.json", method = RequestMethod.POST)
+//    public ModelAndView nodeList(@RequestBody HashMap<String,Object> params) throws Exception {
+//        ModelAndView mav = new ModelAndView("jsonView");
+//        mav.addObject("result", diagramService.nodeList(params.get("diagram_id").toString()));
+//        return mav;
+//    }
+//
+//    /**
+//     * @author 하관우
+//     * @since 2024.01.23
+//     *
+//     * line 조회
+//     */
+//    @RequestMapping(value ="/lineList.json", method = RequestMethod.POST)
+//    public ModelAndView lineList(@RequestBody HashMap<String,Object> params) throws Exception {
+//
+//        ModelAndView mav = new ModelAndView("jsonView");
+//        mav.addObject("result", diagramService.lineList(params.get("diagram_id").toString()));
+//        return mav;
+//    }
+//
+//    /**
+//     * @author 권지용
+//     * @since 2024.01.29
+//     *
+//     * 다이어그램의 모든 정보 등록
+//     */
+//
+//    @RequestMapping(value = "/dataInsert.json", method = RequestMethod.POST)
+//    public ModelAndView dataInsert(@RequestBody DiagramDetailDTO diagramDetailDTO) throws Exception {
+//        ModelAndView mav = new ModelAndView("jsonView");
+//        mav.addObject("result", diagramService.dataInsert(diagramDetailDTO));
+//        return mav;
+//    }
+//
+//    /**
+//     * @author 하관우
+//     * @since 2024.05.29
+//     *
+//     * 다이어그램의 모든 수정 등록
+//     */
+//
+//    @RequestMapping(value = "/dataEdit.json", method = RequestMethod.POST)
+//    public ModelAndView dataEdit(@RequestBody DiagramDetailDTO diagramDetailDTO) throws Exception {
+//        ModelAndView mav = new ModelAndView("jsonView");
+//        mav.addObject("result", diagramService.dataEdit(diagramDetailDTO));
+//        return mav;
+//    }
+//
+//    /**
+//     * @author 하관우
+//     * @since 2024.02.08
+//     *
+//     * 즉시계산
+//     */
+//    @RequestMapping(value = "/operatorNow.json", method = RequestMethod.POST)
+//    public ModelAndView operatorNow(@RequestBody DiagramVO diagramVO) throws Exception {
+//        ModelAndView mav = new ModelAndView("jsonView");
+//        mav.addObject("result", diagramService.operatorNow(diagramVO, "create"));
+//        return mav;
+//    }
+//
+//    /**
+//     * @author 하관우
+//     * @since 2024.02.15
+//     *
+//     * diagram_id를 가져와서 해당하는것들 삭제
+//     * */
+//    @RequestMapping(value = "/dataDelete.json", method = RequestMethod.POST)
+//    public ModelAndView dataDelete(@RequestBody List<ScheduleVO> scheduleVOList) throws Exception {
+//        ModelAndView mav = new ModelAndView("jsonView");
+//        mav.addObject("result", diagramService.dataDelete(scheduleVOList));
+//        return mav;
+//    }
+//
+//    /**
+//     * @author 박정하
+//     * @since 2024.10.04
+//     *
+//     * Diagram 목록 조회
+//     */
+//    @PostMapping(value="/diagramListRead")
+//    public CustomeResultMap diagramListRead(@RequestBody SearchVO searchVO) throws Exception {
+//        return diagramService.diagramListRead(searchVO);
+//    }
+//
+//    /**
+//     * @author 박정하
+//     * @since 2024.10.04
+//     *
+//     * Diagram 상세 조회
+//     */
+//    @GetMapping(value="/diagramDetailRead/{diagramId}")
+//    public CustomeResultMap diagramDetailRead(@PathVariable String diagramId) throws Exception {
+//        return diagramService.diagramDetailRead(diagramId);
+//    }
+}(파일 끝에 줄바꿈 문자 없음)
src/main/java/com/takensoft/taken_bi_manager/schedule/web/FilterController.java (Renamed from src/main/java/com/takensoft/taken_bi_manager/diagram/web/FilterController.java)
--- src/main/java/com/takensoft/taken_bi_manager/diagram/web/FilterController.java
+++ src/main/java/com/takensoft/taken_bi_manager/schedule/web/FilterController.java
@@ -1,7 +1,8 @@
-package com.takensoft.taken_bi_manager.diagram.web;
+package com.takensoft.taken_bi_manager.schedule.web;
 
-import com.takensoft.taken_bi_manager.diagram.service.FilterService;
-import com.takensoft.taken_bi_manager.diagram.vo.NodeVO;
+import com.takensoft.taken_bi_manager.schedule.dto.NodeDTO;
+import com.takensoft.taken_bi_manager.schedule.service.FilterService;
+import com.takensoft.taken_bi_manager.schedule.vo.NodeVO;
 import lombok.RequiredArgsConstructor;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -25,7 +26,7 @@
      * 필터 실행
      */
     @RequestMapping(value ="/diagram/runFilter.json", method = RequestMethod.POST)
-    public ModelAndView runFilter(@RequestBody NodeVO nodeVO) throws Exception {
+    public ModelAndView runFilter(@RequestBody NodeDTO nodeVO) throws Exception {
         ModelAndView mav = new ModelAndView("jsonView");
         mav.addObject("result", filterService.runFilter(nodeVO));
         return mav;
 
src/main/java/com/takensoft/taken_bi_manager/schedule/web/ScheduleController.java (added)
+++ src/main/java/com/takensoft/taken_bi_manager/schedule/web/ScheduleController.java
@@ -0,0 +1,91 @@
+package com.takensoft.taken_bi_manager.schedule.web;
+
+import com.takensoft.taken_bi_manager.common.vo.CheckMessage;
+import com.takensoft.taken_bi_manager.schedule.service.ScheduleService;
+import com.takensoft.taken_bi_manager.schedule.vo.ScheduleVO;
+import com.takensoft.taken_bi_manager.common.vo.CustomeResultMap;
+import com.takensoft.taken_bi_manager.common.vo.SearchVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.web.bind.annotation.*;
+
+@RestController
+@RequestMapping("/schedule")
+public class ScheduleController {
+	@Autowired
+    private ScheduleService scheduleService;
+
+	/**
+	 * @author 박정하
+	 * @since 2025.01.16
+	 *
+	 * 스케줄 목록 조회
+	 */
+	@GetMapping
+	public CustomeResultMap selectScheduleList(@RequestBody SearchVO searchVO) throws Exception {
+		CustomeResultMap resultMap = new CustomeResultMap();
+
+		try {
+			resultMap.setResultData(scheduleService.selectScheduleList(searchVO));
+		} catch (RuntimeException e) {
+			resultMap.setCheckMessage(new CheckMessage(false, e.getMessage(), HttpStatus.BAD_REQUEST.value()));
+		} catch (Exception e) {
+			resultMap.setCheckMessage(new CheckMessage(false, e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR.value()));
+		}
+
+		return resultMap;
+	}
+	
+	/*
+	 * @author 박정하
+	 * @since 2025.01.16
+	 *
+	 * 스케줄 등록
+	 */
+	@PostMapping
+    public CustomeResultMap insertSchedule(@RequestBody ScheduleVO scheduleVO) throws Exception {
+		CustomeResultMap resultMap = new CustomeResultMap();
+
+		try {
+			resultMap.setResultData(scheduleService.insertSchedule(scheduleVO));
+		} catch (RuntimeException e) {
+			resultMap.setCheckMessage(new CheckMessage(false, e.getMessage(), HttpStatus.BAD_REQUEST.value()));
+		} catch (Exception e) {
+			resultMap.setCheckMessage(new CheckMessage(false, e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR.value()));
+		}
+
+		return resultMap;
+    }
+	
+	/*
+	 * 스케줄 상세 조회
+	 */
+	@PostMapping(path = "/selectSchedule.json")
+	public CustomeResultMap selectSchedule(@RequestBody ScheduleVO scheduleVO) throws Exception {
+		CustomeResultMap map = new CustomeResultMap();
+		map.getResultData().put("schedule", scheduleService.selectSchedule(scheduleVO));
+		return map;
+	}
+
+	/**
+	 * @author 박정하
+	 * @since 2024.10.04
+	 *
+	 * 스케줄 정보 삭제
+	 */
+	@GetMapping(value="/deleteSchedule/{schdulId}")
+	public CustomeResultMap deleteSchedule(@PathVariable String schdulId) throws Exception {
+		return scheduleService.deleteSchedule(schdulId);
+	}
+
+	/**
+	 * @author 박정하
+	 * @since 2024.10.04
+	 *
+	 * 스케줄 상태 변경
+	 */
+	@GetMapping(value="/scheduleSttusChange/{schdulId}/{schdulSttus}")
+	public CustomeResultMap scheduleSttusChange(@PathVariable String schdulId, @PathVariable String schdulSttus) throws Exception {
+		return scheduleService.scheduleSttusChange(schdulId, schdulSttus);
+	}
+}(파일 끝에 줄바꿈 문자 없음)
src/main/java/com/takensoft/taken_bi_manager/schedule/web/ScheduleOperator.java (Renamed from src/main/java/com/takensoft/taken_bi_manager/diagram/web/ScheduleOperator.java)
--- src/main/java/com/takensoft/taken_bi_manager/diagram/web/ScheduleOperator.java
+++ src/main/java/com/takensoft/taken_bi_manager/schedule/web/ScheduleOperator.java
@@ -1,19 +1,14 @@
-package com.takensoft.taken_bi_manager.diagram.web;
+package com.takensoft.taken_bi_manager.schedule.web;
 
 import com.cronutils.model.Cron;
 import com.cronutils.model.definition.CronDefinition;
 import com.cronutils.model.definition.CronDefinitionBuilder;
 import com.cronutils.model.time.ExecutionTime;
 import com.cronutils.parser.CronParser;
-import com.cronutils.utils.VisibleForTesting;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.takensoft.taken_bi_manager.common.schedule.dao.ScheduleDAO;
-import com.takensoft.taken_bi_manager.common.schedule.service.ScheduleService;
-import com.takensoft.taken_bi_manager.common.schedule.vo.Schedule;
+import com.takensoft.taken_bi_manager.schedule.dao.ScheduleDAO;
+import com.takensoft.taken_bi_manager.schedule.vo.ScheduleVO;
 import com.takensoft.taken_bi_manager.common.vo.CustomeResultMap;
-import com.takensoft.taken_bi_manager.diagram.dto.DiagramDetailDTO;
-import com.takensoft.taken_bi_manager.diagram.service.Diagramservice;
-import com.takensoft.taken_bi_manager.diagram.vo.DiagramVO;
+import com.takensoft.taken_bi_manager.schedule.service.Diagramservice;
 import jakarta.annotation.PostConstruct;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -56,12 +51,12 @@
         try {
             // 데이터베이스 연결
             logger.info("데이터베이스 연결 시도");
-            con = DriverManager.getConnection("jdbc:log4jdbc:postgresql://210.180.118.83:5432/bi_manager?currentSchema=bi_manager", "takensoft", "tts96314728!@");
+            con = DriverManager.getConnection("jdbc:log4jdbc:postgresql://210.180.118.83:5432/bi_maneger_renewal?currentSchema=bi_manager", "takensoft", "tts96314728!@");
             logger.info("데이터베이스 연결 성공");
 
             // 쿼리 실행
             stmt = con.createStatement();
-            rs = stmt.executeQuery("SELECT * FROM scheduler WHERE use_at = true AND schdul_sttus = 'run'");
+            rs = stmt.executeQuery("SELECT * FROM schdul_info WHERE use_at = true AND schdul_sttus = true");
             while (rs.next()) {
                 String cron = rs.getString("cron");
                 String schduleId = rs.getString("schdul_id");
@@ -117,18 +112,17 @@
                 ZonedDateTime nextExecutionPlusOneMinute = nextExecution.plusMinutes(1);
 
                 if ((now.isEqual(nextExecution) || now.isAfter(nextExecutionMinusOneMinute)) && now.isBefore(nextExecutionPlusOneMinute)) {
-                    try {
-                        Schedule schedule = scheduleDAO.selectSchedule(scheduleId);
-                        CustomeResultMap customeResultMap = diagram.diagramDetailRead(schedule.getGroup_id());
-                        HashMap<String, Object> getResultData = customeResultMap.getResultData();
-                        DiagramDetailDTO diagramDetailDTO = (DiagramDetailDTO) getResultData.get("diagramDetailDTO");
-                        diagram.operatorNow(diagramDetailDTO.getDiagram(), "schedule");
-                    } catch (Exception e) {
-                        e.printStackTrace();
-                    }
+//                    try {
+//                        ScheduleVO scheduleVO = scheduleDAO.selectSchedule(scheduleId);
+//                        CustomeResultMap customeResultMap = diagram.diagramDetailRead(scheduleVO.getGroupId());
+//                        HashMap<String, Object> getResultData = customeResultMap.getResultData();
+//                        DiagramDetailDTO diagramDetailDTO = (DiagramDetailDTO) getResultData.get("diagramDetailDTO");
+//                        diagram.operatorNow(diagramDetailDTO.getDiagram(), "schedule");
+//                    } catch (Exception e) {
+//                        e.printStackTrace();
+//                    }
                 }
             }
         }
     }
-
 }
(파일 끝에 줄바꿈 문자 없음)
src/main/java/com/takensoft/taken_bi_manager/user/dao/LoginDAO.java (Renamed from src/main/java/com/takensoft/taken_bi_manager/user/member/dao/LoginDAO.java)
--- src/main/java/com/takensoft/taken_bi_manager/user/member/dao/LoginDAO.java
+++ src/main/java/com/takensoft/taken_bi_manager/user/dao/LoginDAO.java
@@ -1,8 +1,8 @@
-package com.takensoft.taken_bi_manager.user.member.dao;
+package com.takensoft.taken_bi_manager.user.dao;
 
 import org.apache.ibatis.annotations.Mapper;
 
-import com.takensoft.taken_bi_manager.user.member.vo.Member;
+import com.takensoft.taken_bi_manager.user.vo.Member;
 
 /**
  * @author 김성원
src/main/java/com/takensoft/taken_bi_manager/user/dao/MemberDAO.java (Renamed from src/main/java/com/takensoft/taken_bi_manager/user/member/dao/MemberDAO.java)
--- src/main/java/com/takensoft/taken_bi_manager/user/member/dao/MemberDAO.java
+++ src/main/java/com/takensoft/taken_bi_manager/user/dao/MemberDAO.java
@@ -1,15 +1,13 @@
-package com.takensoft.taken_bi_manager.user.member.dao;
+package com.takensoft.taken_bi_manager.user.dao;
 
-import com.takensoft.taken_bi_manager.common.vo.CustomeResultMap;
 import com.takensoft.taken_bi_manager.common.vo.SearchVO;
-import com.takensoft.taken_bi_manager.user.member.vo.AuthorVO;
-import com.takensoft.taken_bi_manager.user.member.vo.UserAuthorVO;
+import com.takensoft.taken_bi_manager.user.vo.AuthorVO;
+import com.takensoft.taken_bi_manager.user.vo.UserAuthorVO;
 import org.apache.ibatis.annotations.Mapper;
 
-import com.takensoft.taken_bi_manager.user.member.vo.Member;
+import com.takensoft.taken_bi_manager.user.vo.Member;
 import org.springframework.stereotype.Repository;
 
-import java.util.HashMap;
 import java.util.List;
 
 /**
 
src/main/java/com/takensoft/taken_bi_manager/user/member/dao/MyPageDAO.java (deleted)
--- src/main/java/com/takensoft/taken_bi_manager/user/member/dao/MyPageDAO.java
@@ -1,48 +0,0 @@
-package com.takensoft.taken_bi_manager.user.member.dao;
-
-import com.takensoft.taken_bi_manager.user.member.vo.Member;
-import org.apache.ibatis.annotations.Mapper;
-import org.springframework.stereotype.Repository;
-
-/**
- * @author 박민혁
- * @since 2024.03.14
- *
- * 사용자 관리를 위한 SQL문에 접근하는 DAO
- */
-@Mapper
-@Repository
-public interface MyPageDAO {
-
-    /**
-     * @author 박민혁
-     * @since 2024.03.14
-     *
-     * 회원정보 가져오기
-     */
-    public Member selectUserData(String userId) throws Exception;
-
-    /**
-     * @author 박민혁
-     * @since 2024.03.15
-     *
-     * 회원정보 수정하기
-     */
-    public int updateUserData(Member member) throws Exception;
-
-    /**
-     * @author 박민혁
-     * @since 2024.03.15
-     *
-     * 회원 비밀번호 일치 여부 체크
-     */
-    public Member checkUserPassword(Member member) throws Exception;
-
-    /**
-     * @author 박민혁
-     * @since 2024.03.15
-     *
-     * 회원 비밀번호 수정하기
-     */
-    public int updateUserPassword(Member member) throws Exception;
-}
 
src/main/java/com/takensoft/taken_bi_manager/user/member/servie/MyPageService.java (deleted)
--- src/main/java/com/takensoft/taken_bi_manager/user/member/servie/MyPageService.java
@@ -1,40 +0,0 @@
-package com.takensoft.taken_bi_manager.user.member.servie;
-
-import com.takensoft.taken_bi_manager.common.vo.CustomeResultMap;
-import com.takensoft.taken_bi_manager.user.member.vo.Member;
-
-public interface MyPageService {
-
-    /**
-     * @author 박민혁
-     * @since 2024.03.14
-     *
-     * 회원정보 가져오기
-     */
-    CustomeResultMap selectUserData(String userId) throws Exception;
-
-    /**
-     * @author 박민혁
-     * @since 2024.03.15
-     *
-     * 회원정보 수정하기
-     */
-    CustomeResultMap updateUserData(Member member) throws Exception;
-
-    /**
-     * @author 박민혁
-     * @since 2024.03.15
-     *
-     * 회원 비밀번호 일치 여부 체크
-     */
-    CustomeResultMap checkUserPassword(Member member) throws Exception;
-
-    /**
-     * @author 박민혁
-     * @since 2024.03.15
-     *
-     * 회원 비밀번호 수정하기
-     */
-    CustomeResultMap updateUserPassword(Member member) throws Exception;
-
-}
 
src/main/java/com/takensoft/taken_bi_manager/user/member/servie/impl/MyPageServiceImpl.java (deleted)
--- src/main/java/com/takensoft/taken_bi_manager/user/member/servie/impl/MyPageServiceImpl.java
@@ -1,92 +0,0 @@
-package com.takensoft.taken_bi_manager.user.member.servie.impl;
-
-import com.takensoft.taken_bi_manager.common.util.AuthUtil;
-import com.takensoft.taken_bi_manager.common.util.CryptoUtil;
-import com.takensoft.taken_bi_manager.common.vo.CustomeResultMap;
-import com.takensoft.taken_bi_manager.user.member.dao.MyPageDAO;
-import com.takensoft.taken_bi_manager.user.member.servie.MyPageService;
-import com.takensoft.taken_bi_manager.user.member.vo.Member;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-
-/**
- * @author 박민혁
- * @since 2024.03.14
- *
- * 사용자 관리 서비스 처리 로직
- */
-@Service
-public class MyPageServiceImpl implements MyPageService {
-
-    @Autowired
-    private MyPageDAO myPageDAO;
-
-    /**
-     * @author 박민혁
-     * @since 2024.03.14
-     *
-     * 회원정보 가져오기
-     */
-    public CustomeResultMap selectUserData(String userId) throws Exception{
-        CustomeResultMap resultMap = new CustomeResultMap();
-        Member member = myPageDAO.selectUserData(userId);
-        member.dataDecoder();
-
-        resultMap.getResultData().put("selectUserData", member);
-
-        return resultMap;
-    }
-
-    /**
-     * @author 박민혁
-     * @since 2024.03.15
-     *
-     * 회원정보 수정하기
-     */
-    public CustomeResultMap updateUserData(Member member) throws Exception{
-        CustomeResultMap resultMap = new CustomeResultMap();
-        member.setUpdtId(AuthUtil.getLoginUserId());
-        member.dataEncoder();
-
-        int updateUserResult = myPageDAO.updateUserData(member);
-
-        resultMap.getResultData().put("updateUserData", updateUserResult);
-        return resultMap;
-    }
-
-    /**
-     * @author 박민혁
-     * @since 2024.03.15
-     *
-     * 회원 비밀번호 일치 여부 체크
-     */
-    public CustomeResultMap checkUserPassword(Member member) throws Exception{
-        CustomeResultMap resultMap = new CustomeResultMap();
-        Member checkPasswordResult = myPageDAO.checkUserPassword(member);
-        if(CryptoUtil.passwordMatch(member.getUserPassword(), checkPasswordResult.getUserPassword())) {
-            resultMap.getResultData().put("checkUserPassword", 1);
-        } else {
-            resultMap.getResultData().put("checkUserPassword", 0);
-        }
-        return resultMap;
-    }
-
-    /**
-     * @author 박민혁
-     * @since 2024.03.15
-     *
-     * 회원 비밀번호 수정하기
-     */
-    public CustomeResultMap updateUserPassword(Member member) throws Exception{
-        CustomeResultMap resultMap = new CustomeResultMap();
-        member.setUpdtId(AuthUtil.getLoginUserId());
-        member.PasswordEncoder();
-
-        int updatePasswordResult = myPageDAO.updateUserPassword(member);
-
-        resultMap.getResultData().put("updatePasswordData", updatePasswordResult);
-        return resultMap;
-
-    }
-}
 
src/main/java/com/takensoft/taken_bi_manager/user/member/web/MyPageController.java (deleted)
--- src/main/java/com/takensoft/taken_bi_manager/user/member/web/MyPageController.java
@@ -1,64 +0,0 @@
-package com.takensoft.taken_bi_manager.user.member.web;
-
-
-import com.takensoft.taken_bi_manager.common.vo.CustomeResultMap;
-import com.takensoft.taken_bi_manager.user.member.servie.MyPageService;
-import com.takensoft.taken_bi_manager.user.member.vo.Member;
-import lombok.RequiredArgsConstructor;
-import org.springframework.web.bind.annotation.*;
-
-@RestController
-@RequiredArgsConstructor
-@RequestMapping(value = "/mypage")
-public class MyPageController {
-    private final MyPageService myPageService;
-
-    /**
-     * @author 박민혁
-     * @since 2024.03.14
-     *
-     * 회원정보 가져오기
-     */
-    @GetMapping(value = "/{userId}")
-    public CustomeResultMap getUserInMyPage(@PathVariable String userId) throws Exception {
-        CustomeResultMap map = myPageService.selectUserData(userId);
-        return map;
-    }
-
-    /**
-     * @author 박민혁
-     * @since 2024.03.15
-     *
-     * 회원정보 수정하기
-     */
-    @PutMapping
-    public CustomeResultMap updateUserInMyPage(@RequestBody Member member) throws Exception {
-        CustomeResultMap map = myPageService.updateUserData(member);
-        return map;
-    }
-
-    /**
-     * @author 박민혁
-     * @since 2024.03.15
-     *
-     * 회원 현재 비밀번호 일치 여부 체크
-     */
-    @PostMapping
-    public CustomeResultMap checkUserPassword(@RequestBody Member member) throws Exception {
-        CustomeResultMap map = myPageService.checkUserPassword(member);
-        return map;
-    }
-
-    /**
-     * @author 박민혁
-     * @since 2024.03.15
-     *
-     * 회원 비밀번호 수정하기
-     */
-    @PutMapping(value = "/password")
-    public CustomeResultMap updateUserPassword(@RequestBody Member member) throws Exception {
-        CustomeResultMap map = myPageService.updateUserPassword(member);
-        return map;
-    }
-
-}
 
src/main/java/com/takensoft/taken_bi_manager/user/org/vo/Organization.java (deleted)
--- src/main/java/com/takensoft/taken_bi_manager/user/org/vo/Organization.java
@@ -1,56 +0,0 @@
-package com.takensoft.taken_bi_manager.user.org.vo;
-
-import java.sql.Date;
-import java.sql.Timestamp;
-
-import lombok.Getter;
-import lombok.Setter;
-
-/**
- * @author 김성원
- * @since 2023-12-28
- * 
- * 부서정보 객체 
- */
-@Getter
-@Setter
-public class Organization {
-
-	// 부서코드(pk)
-	private String deptCode;
-	
-	// 상위부서 코드
-	private String upperDept;
-	
-	// 조직 코드(최상위 부서?)
-	private String orgCode;
-	
-	// 부서명 
-	private String deptNm;
-	
-	// 부서명 설명
-	private String deptDc;
-	
-	// 부서 깊이 
-	private int deptDp;
-	
-	// 부서 정렬 순서
-	private int dept_ordr;
-	
-	// 사용여부
-	private boolean useAt;
-	
-	// 생성일
-	private Timestamp creatDt;
-	
-	// 생성자ID
-	private String creatId;
-	
-	// 수정일 
-	private Timestamp updtDt;
-		
-	// 수정자 ID
-	private String updtId;
-	
-	
-}
 
src/main/java/com/takensoft/taken_bi_manager/user/org/vo/OrganizationHistory.java (deleted)
--- src/main/java/com/takensoft/taken_bi_manager/user/org/vo/OrganizationHistory.java
@@ -1,43 +0,0 @@
-package com.takensoft.taken_bi_manager.user.org.vo;
-
-import java.sql.Date;
-import java.sql.Timestamp;
-
-import lombok.Getter;
-import lombok.Setter;
-
-/**
- * @author 김성원
- * @since 2023-12-28
- * 
- * 부서변경정보 객체 
- */
-@Getter
-@Setter
-public class OrganizationHistory {
-
-	// 부서코드(pk)
-	private String deptCode;
-	
-	// 상위부서 코드
-	private String upperDept;
-	
-	// 조직 코드(최상위 부서?)
-	private String orgCode;
-	
-	// 이전 부서명 
-	private String beforDeptNm;
-	
-	// 현재 부서설명
-	private String deptNm;	
-	
-	// 부서 깊이 
-	private int deptDp;
-	
-	// 부서 정렬 순서
-	private int dept_ordr;
-	
-	// 수정일 
-	private Timestamp updtDt;		
-	
-}
src/main/java/com/takensoft/taken_bi_manager/user/servie/LoginService.java (Renamed from src/main/java/com/takensoft/taken_bi_manager/user/member/servie/LoginService.java)
--- src/main/java/com/takensoft/taken_bi_manager/user/member/servie/LoginService.java
+++ src/main/java/com/takensoft/taken_bi_manager/user/servie/LoginService.java
@@ -1,7 +1,7 @@
-package com.takensoft.taken_bi_manager.user.member.servie;
+package com.takensoft.taken_bi_manager.user.servie;
 
 import com.takensoft.taken_bi_manager.common.vo.CustomeResultMap;
-import com.takensoft.taken_bi_manager.user.member.vo.Member;
+import com.takensoft.taken_bi_manager.user.vo.Member;
 
 public interface LoginService {
 
src/main/java/com/takensoft/taken_bi_manager/user/servie/MemberService.java (Renamed from src/main/java/com/takensoft/taken_bi_manager/user/member/servie/MemberService.java)
--- src/main/java/com/takensoft/taken_bi_manager/user/member/servie/MemberService.java
+++ src/main/java/com/takensoft/taken_bi_manager/user/servie/MemberService.java
@@ -1,10 +1,10 @@
-package com.takensoft.taken_bi_manager.user.member.servie;
+package com.takensoft.taken_bi_manager.user.servie;
 import java.util.HashMap;
 import java.util.List;
 
 import com.takensoft.taken_bi_manager.common.vo.CustomeResultMap;
 import com.takensoft.taken_bi_manager.common.vo.SearchVO;
-import com.takensoft.taken_bi_manager.user.member.vo.Member;
+import com.takensoft.taken_bi_manager.user.vo.Member;
 
 public interface MemberService {
 	/**
src/main/java/com/takensoft/taken_bi_manager/user/servie/impl/LoginServiceImpl.java (Renamed from src/main/java/com/takensoft/taken_bi_manager/user/member/servie/impl/LoginServiceImpl.java)
--- src/main/java/com/takensoft/taken_bi_manager/user/member/servie/impl/LoginServiceImpl.java
+++ src/main/java/com/takensoft/taken_bi_manager/user/servie/impl/LoginServiceImpl.java
@@ -1,4 +1,4 @@
-package com.takensoft.taken_bi_manager.user.member.servie.impl;
+package com.takensoft.taken_bi_manager.user.servie.impl;
 
 import java.util.HashMap;
 import java.util.List;
@@ -12,10 +12,10 @@
 import com.takensoft.taken_bi_manager.common.util.SesssionEventListener;
 import com.takensoft.taken_bi_manager.common.util.StringUtil;
 import com.takensoft.taken_bi_manager.common.vo.CustomeResultMap;
-import com.takensoft.taken_bi_manager.user.member.dao.LoginDAO;
-import com.takensoft.taken_bi_manager.user.member.dao.MemberDAO;
-import com.takensoft.taken_bi_manager.user.member.servie.LoginService;
-import com.takensoft.taken_bi_manager.user.member.vo.Member;
+import com.takensoft.taken_bi_manager.user.dao.LoginDAO;
+import com.takensoft.taken_bi_manager.user.dao.MemberDAO;
+import com.takensoft.taken_bi_manager.user.servie.LoginService;
+import com.takensoft.taken_bi_manager.user.vo.Member;
 
 import jakarta.servlet.http.HttpServletRequest;
 import jakarta.servlet.http.HttpSession;
src/main/java/com/takensoft/taken_bi_manager/user/servie/impl/MemberServiceImpl.java (Renamed from src/main/java/com/takensoft/taken_bi_manager/user/member/servie/impl/MemberServiceImpl.java)
--- src/main/java/com/takensoft/taken_bi_manager/user/member/servie/impl/MemberServiceImpl.java
+++ src/main/java/com/takensoft/taken_bi_manager/user/servie/impl/MemberServiceImpl.java
@@ -1,20 +1,20 @@
-package com.takensoft.taken_bi_manager.user.member.servie.impl;
+package com.takensoft.taken_bi_manager.user.servie.impl;
 
 import com.takensoft.taken_bi_manager.common.util.AuthUtil;
 import com.takensoft.taken_bi_manager.common.vo.CustomeResultMap;
-import com.takensoft.taken_bi_manager.user.member.vo.UserAuthorVO;
+import com.takensoft.taken_bi_manager.user.vo.UserAuthorVO;
 import lombok.RequiredArgsConstructor;
 
 import org.springframework.http.HttpStatus;
 import org.springframework.stereotype.Service;
 
 import com.takensoft.taken_bi_manager.common.vo.SearchVO;
-import com.takensoft.taken_bi_manager.user.member.dao.MemberDAO;
-import com.takensoft.taken_bi_manager.user.member.servie.MemberService;
-import com.takensoft.taken_bi_manager.user.member.vo.Member;
+import com.takensoft.taken_bi_manager.user.dao.MemberDAO;
+import com.takensoft.taken_bi_manager.user.servie.MemberService;
+import com.takensoft.taken_bi_manager.user.vo.Member;
 import org.springframework.transaction.annotation.Transactional;
 
-import static com.takensoft.taken_bi_manager.user.member.servie.impl.MemberServiceImpl.HistoryTypes.*;
+import static com.takensoft.taken_bi_manager.user.servie.impl.MemberServiceImpl.HistoryTypes.*;
 
 import java.util.*;
 
src/main/java/com/takensoft/taken_bi_manager/user/vo/AuthorVO.java (Renamed from src/main/java/com/takensoft/taken_bi_manager/user/member/vo/AuthorVO.java)
--- src/main/java/com/takensoft/taken_bi_manager/user/member/vo/AuthorVO.java
+++ src/main/java/com/takensoft/taken_bi_manager/user/vo/AuthorVO.java
@@ -1,4 +1,4 @@
-package com.takensoft.taken_bi_manager.user.member.vo;
+package com.takensoft.taken_bi_manager.user.vo;
 
 import lombok.Data;
 
src/main/java/com/takensoft/taken_bi_manager/user/vo/Member.java (Renamed from src/main/java/com/takensoft/taken_bi_manager/user/member/vo/Member.java)
--- src/main/java/com/takensoft/taken_bi_manager/user/member/vo/Member.java
+++ src/main/java/com/takensoft/taken_bi_manager/user/vo/Member.java
@@ -1,4 +1,4 @@
-package com.takensoft.taken_bi_manager.user.member.vo;
+package com.takensoft.taken_bi_manager.user.vo;
 
 import com.takensoft.taken_bi_manager.common.util.CryptoUtil;
 
src/main/java/com/takensoft/taken_bi_manager/user/vo/UserAuthorVO.java (Renamed from src/main/java/com/takensoft/taken_bi_manager/user/member/vo/UserAuthorVO.java)
--- src/main/java/com/takensoft/taken_bi_manager/user/member/vo/UserAuthorVO.java
+++ src/main/java/com/takensoft/taken_bi_manager/user/vo/UserAuthorVO.java
@@ -1,4 +1,4 @@
-package com.takensoft.taken_bi_manager.user.member.vo;
+package com.takensoft.taken_bi_manager.user.vo;
 
 import lombok.Data;
 
src/main/java/com/takensoft/taken_bi_manager/user/web/MemberController.java (Renamed from src/main/java/com/takensoft/taken_bi_manager/user/member/web/MemberController.java)
--- src/main/java/com/takensoft/taken_bi_manager/user/member/web/MemberController.java
+++ src/main/java/com/takensoft/taken_bi_manager/user/web/MemberController.java
@@ -1,9 +1,9 @@
-package com.takensoft.taken_bi_manager.user.member.web;
+package com.takensoft.taken_bi_manager.user.web;
 
 import com.takensoft.taken_bi_manager.common.vo.CustomeResultMap;
 import com.takensoft.taken_bi_manager.common.vo.SearchVO;
-import com.takensoft.taken_bi_manager.user.member.servie.MemberService;
-import com.takensoft.taken_bi_manager.user.member.vo.Member;
+import com.takensoft.taken_bi_manager.user.servie.MemberService;
+import com.takensoft.taken_bi_manager.user.vo.Member;
 import lombok.RequiredArgsConstructor;
 import org.springframework.http.HttpStatus;
 import org.springframework.web.bind.annotation.*;
src/main/resources/spring/mapper/common/commonCode-SQL.xml
--- src/main/resources/spring/mapper/common/commonCode-SQL.xml
+++ src/main/resources/spring/mapper/common/commonCode-SQL.xml
@@ -1,19 +1,46 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-
-
 <mapper namespace="com.takensoft.taken_bi_manager.common.code.dao.CmmnCodeDAO">
-	<!-- 그룹코드로 코드 조회. -->
-	<select id="getCodeListByGroupId" parameterType="String" resultType="CmmnCode" >
-		SELECT code_id as "cmmnCode"
-		     , group_code as "groupCode"
-		     , code_nm as "codeNm"
-		     , code_dc as "codeDc"
-		     , code_ordr as "codeOrdr"
+	<resultMap id="CmmnCodeResult" type="CmmnCode">
+		<result property="cmmnCode" column="code_id"/>
+		<result property="groupCode" column="group_code"/>
+		<result property="codeNm" column="code_nm"/>
+		<result property="codeDc" column="code_dc"/>
+		<result property="upperCode" column="upper_code"/>
+		<result property="codeOrdr" column="code_ordr"/>
+		<result property="useAt" column="use_at"/>
+		<result property="creatDt" column="creat_dt"/>
+		<result property="creatId" column="creat_id"/>
+		<result property="updtDt" column="updt_dt"/>
+		<result property="updtId" column="updt_id"/>
+	</resultMap>
+
+	<!-- 그룹코드로 코드 조회 -->
+	<select id="getCodeListByGroupId" parameterType="String" resultMap="CmmnCodeResult" >
+		SELECT code_id
+		     , group_code
+		     , code_nm
+		     , code_dc
+			 , upper_code
+		     , code_ordr
+			 , use_at
+			 , creat_dt
+			 , creat_id
+			 , updt_dt
+			 , updt_id
 		  FROM cmmn_code
 		 WHERE group_code = #{groupCode}
 		   AND use_at = true
 	  ORDER BY code_ordr
 	</select>
-    
+
+	<select id="findChildNode" parameterType="String" resultType="HierachyVO">
+		SELECT code_id AS id
+			 , upper_code AS upId
+			 , code_nm AS nm
+		FROM cmmn_code
+		WHERE upper_code = #{id}
+		AND use_at = true
+		ORDER BY code_ordr
+	</select>
 </mapper>
(파일 끝에 줄바꿈 문자 없음)
 
src/main/resources/spring/mapper/common/schedule-SQL.xml (deleted)
--- src/main/resources/spring/mapper/common/schedule-SQL.xml
@@ -1,157 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-
-
-<mapper namespace="com.takensoft.taken_bi_manager.common.schedule.dao.ScheduleDAO">
-	<!-- 스케줄 업설트  -->
-	<update id="conflictInsertSchedule" parameterType="Schedule" >
-		INSERT INTO scheduler
-		 (
-			 schdul_id
-			 , group_id
-			 , sj
-			 , dc
-			 , cron
-			 , cron_chrctr
-			 , schdul_sttus
-			 , cycle_at
-			 , use_at
-			 , creat_id
-			 , creat_dt
-		 )
-		 VALUES
-		 (
-			  #{schdul_id}
-			 , #{group_id}
-			 , #{sj}
-			 , #{dc}
-			 , #{cron}
-			 , #{cron_chrctr}
-			 , #{schdul_sttus}
-			 , #{cycle_at}
-			 , #{use_at}
-			 , #{creatId}
-			 , NOW()
-		 )
-		ON CONFLICT(schdul_id)
-		DO UPDATE
-		SET  group_id = #{group_id}
-			 , sj = #{sj}
-			 , dc =  #{dc}
-			 , cron = #{cron}
-			 , cron_chrctr = #{cron_chrctr}
-			 , schdul_sttus = #{schdul_sttus}
-			 , cycle_at = #{cycle_at}
-			 , use_at = #{use_at}
-			 , updt_dt = NOW()
-			 , updt_id = #{updtId}
-	</update>
-
-	<!-- 스케줄 리스트  -->
-	<select id="selectScheduleList" parameterType="SearchVO"  resultType="Schedule">
-		SELECT schdul_id
-			 , group_id
-		 	 , sj
-			 , dc
-			 , cron
-			 , cron_chrctr
-			 , schdul_sttus
-			 , cycle_at
-			 , use_at
-			 , creat_id as "creatId"
-			 , creat_dt as "creatDt"
-			 , updt_dt as "updtDt"
-			 , updt_id as "updtId"
-		FROM scheduler
-		WHERE use_at = true
-		<!-- 검색영역 -->
-		<foreach item="item" index="index" collection="searchObjectList">
-			<choose>
-				<!-- 날짜 검색 -->
-				<when test="item.type == 'dates'">
-					AND #{item.value}::timestamp <![CDATA[<=]]> ${item.key}::timestamp
-					AND ${item.key2}::timestamp <![CDATA[<]]> #{item.value2}::timestamp + INTERVAL '1' DAY
-				</when>
-				<!-- 상태 검색 -->
-				<when test="item.type == 'string' and item.key == 'schdul_sttus' and item.value != null and item.value !=''">
-					AND ${item.key} = #{item.value}
-				</when>
-				<!-- 일반 검색 -->
-				<when test="item.type == 'string' and item.key != null and item.key != '' and item.value != null and item.value !=''">
-					AND ${item.key} LIKE CONCAT('%', #{item.value}, '%')
-				</when>
-			</choose>
-		</foreach>
-		<!-- 검색영역 끝 -->
-		ORDER BY creat_dt DESC
-		LIMIT #{perPage} OFFSET ((#{currentPage} - 1) * #{perPage})
-	</select>
-
-	<!-- 스케줄 리스트 카운트  -->
-	<select id="selectScheduleListCount" parameterType="SearchVO"  resultType="Integer">
-		SELECT count(*)
-		FROM scheduler
-		WHERE use_at = true
-		<!-- 검색영역 -->
-		<foreach item="item" index="index" collection="searchObjectList">
-			<choose>
-				<!-- 날짜 검색 -->
-				<when test="item.type == 'dates'">
-					AND #{item.value}::timestamp <![CDATA[<=]]> ${item.key}::timestamp
-					AND ${item.key2}::timestamp <![CDATA[<]]> #{item.value2}::timestamp + INTERVAL '1' DAY
-				</when>
-				<!-- 상태 검색 -->
-				<when test="item.type == 'string' and item.key == 'schdul_sttus' and item.value != null and item.value !=''">
-					AND ${item.key} = #{item.value}
-				</when>
-				<!-- 일반 검색 -->
-				<when test="item.type == 'string' and item.key != null and item.key != '' and item.value != null and item.value !=''">
-					AND ${item.key} LIKE CONCAT('%', #{item.value}, '%')
-				</when>
-			</choose>
-		</foreach>
-		<!-- 검색영역 끝 -->
-	</select>
-
-	<!-- 스케줄 단건 조회 -->
-	<select id="selectSchedule" parameterType="String"  resultType="Schedule">
-		SELECT
-			schdul_id
-			, group_id
-			, sj
-			, dc
-			, cron
-			, cron_chrctr
-			, schdul_sttus
-			, cycle_at
-			, use_at
-			, creat_id as "creatId"
-			, creat_dt as "creatDt"
-			, updt_dt as "updtDt"
-			, updt_id as "updtId"
-		FROM scheduler
-		WHERE schdul_id = #{schdul_id}
-		AND use_at = true
-	</select>
-
-	<!-- Diagram Id로 Schedule Id 구하기 -->
-	<select id="selectScheduleIdRead" parameterType="String"  resultType="String">
-		SELECT schdul_id
-		  FROM scheduler
-		 WHERE group_id = #{diagramId}
-	</select>
-
-	<!-- 스케줄 정보 삭제 -->
-	<update id="deleteSchedule" parameterType="String">
-		UPDATE scheduler
-		SET use_at = false
-		WHERE schdul_id = #{schdulId}
-	</update>
-
-	<!-- 스케줄 상태 변경 -->
-	<update id="scheduleSttusChange" parameterType="HashMap">
-		UPDATE scheduler
-		SET schdul_sttus = #{schdulSttus}
-		WHERE schdul_id = #{schdulId}
-	</update>
-</mapper>(파일 끝에 줄바꿈 문자 없음)
src/main/resources/spring/mapper/job/job-SQL.xml
--- src/main/resources/spring/mapper/job/job-SQL.xml
+++ src/main/resources/spring/mapper/job/job-SQL.xml
@@ -240,7 +240,7 @@
             , job_indx
             , indx
             , origin_column_nm
-            , targer_column_nm
+            , target_column_nm
 		) VALUES (
             #{groupId}
             , #{jobIndx}
@@ -266,7 +266,7 @@
             , job_indx as jobIndx
             , indx
             , origin_column_nm as orginColumnNm
-            , targer_column_nm as targetColumnNm
+            , target_column_nm as targetColumnNm
 		FROM job_itm_dataset
             WHERE group_id = #{group_id}
             AND job_indx = #{indx}
src/main/resources/spring/mapper/mybatis-config.xml
--- src/main/resources/spring/mapper/mybatis-config.xml
+++ src/main/resources/spring/mapper/mybatis-config.xml
@@ -16,7 +16,6 @@
     <typeAliases>
         <typeAlias type="com.takensoft.taken_bi_manager.common.vo.SearchVO" alias="SearchVO"/>
         <typeAlias type="com.takensoft.taken_bi_manager.common.vo.HierachyVO" alias="HierachyVO"/>
-        <typeAlias type="com.takensoft.taken_bi_manager.common.schedule.vo.Schedule" alias="Schedule"/>
         <typeAlias type="com.takensoft.taken_bi_manager.common.code.vo.CmmnCode" alias="CmmnCode"/>
         <typeAlias type="com.takensoft.taken_bi_manager.common.file.vo.FileManage" alias="FileManage"/>
         <typeAlias type="com.takensoft.taken_bi_manager.common.file.vo.CmmnFile" alias="CmmnFile"/>
@@ -36,9 +35,9 @@
         <typeAlias type="com.takensoft.taken_bi_manager.jobs.vo.item.JobItemGroup" alias="JobItemGroup"/>
         <typeAlias type="com.takensoft.taken_bi_manager.jobs.vo.item.FilterItem" alias="FilterItem"/>
 
-        <typeAlias type="com.takensoft.taken_bi_manager.user.member.vo.Member" alias="Member"/>
-        <typeAlias type="com.takensoft.taken_bi_manager.user.member.vo.AuthorVO" alias="AuthorVO"/>
-        <typeAlias type="com.takensoft.taken_bi_manager.user.member.vo.UserAuthorVO" alias="UserAuthorVO"/>
+        <typeAlias type="com.takensoft.taken_bi_manager.user.vo.Member" alias="Member"/>
+        <typeAlias type="com.takensoft.taken_bi_manager.user.vo.AuthorVO" alias="AuthorVO"/>
+        <typeAlias type="com.takensoft.taken_bi_manager.user.vo.UserAuthorVO" alias="UserAuthorVO"/>
 
         <typeAlias type="com.takensoft.taken_bi_manager.data.vo.Column" alias="Column"/>
         <typeAlias type="com.takensoft.taken_bi_manager.data.vo.ColumnData" alias="ColumnData"/>
@@ -55,12 +54,15 @@
         <typeAlias type="com.takensoft.taken_bi_manager.host.vo.ConnectionVO" alias="ConnectionVO"/>
         <typeAlias type="com.takensoft.taken_bi_manager.host.vo.ConnectionVO$Host" alias="ConnectionVO_host"/>
 
-        <typeAlias type="com.takensoft.taken_bi_manager.diagram.vo.DiagramVO" alias="DiagramVO"/>
-        <typeAlias type="com.takensoft.taken_bi_manager.diagram.vo.NodeVO" alias="NodeVO"/>
-        <typeAlias type="com.takensoft.taken_bi_manager.diagram.vo.EdgeVO" alias="EdgeVO"/>
-        <typeAlias type="com.takensoft.taken_bi_manager.diagram.vo.LogVO" alias="LogVO"/>
-        <typeAlias type="com.takensoft.taken_bi_manager.diagram.vo.LogDetailVO" alias="LogDetailVO"/>
-        <typeAlias type="com.takensoft.taken_bi_manager.diagram.dto.DiagramListDTO" alias="DiagramListDTO"/>
+        <!-- 스케줄 -->
+        <typeAlias type="com.takensoft.taken_bi_manager.schedule.vo.ScheduleVO" alias="ScheduleVO"/>
+        <typeAlias type="com.takensoft.taken_bi_manager.schedule.vo.DiagramVO" alias="DiagramVO"/>
+        <typeAlias type="com.takensoft.taken_bi_manager.schedule.vo.NodeVO" alias="NodeVO"/>
+        <typeAlias type="com.takensoft.taken_bi_manager.schedule.dto.NodeDTO" alias="NodeDTO"/>
+        <typeAlias type="com.takensoft.taken_bi_manager.schedule.dto.NodePositionDTO" alias="NodePositionDTO"/>
+        <typeAlias type="com.takensoft.taken_bi_manager.schedule.vo.EdgeVO" alias="EdgeVO"/>
+        <typeAlias type="com.takensoft.taken_bi_manager.schedule.vo.ScheduleLogVO" alias="ScheduleLogVO"/>
+        <typeAlias type="com.takensoft.taken_bi_manager.schedule.vo.ScheduleLogDetailVO" alias="ScheduleLogDetailVO"/>
 
         <!-- 부서 -->
         <typeAlias type="com.takensoft.taken_bi_manager.department.vo.DeptVO" alias="DeptVO"/>
 
src/main/resources/spring/mapper/postgres/diagram-SQL.xml (deleted)
--- src/main/resources/spring/mapper/postgres/diagram-SQL.xml
@@ -1,490 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-
-<mapper namespace="com.takensoft.taken_bi_manager.diagram.dao.DiagramDAO">
-	<!-- 다이어그램으로 로그 조회 -->
-	<select id="logSelectListAll" parameterType="SearchVO" resultType="LogVO">
-        SELECT log_id
-        	 , operation_date
-        	 , total_node_count
-        	 , fail_node_count
-        	 , fail_node_name
-        	 , state_info
-        	 , diagram_id
-        	 , user_id
-        FROM diagram_log_table
-        WHERE true
-		<!-- 검색영역 -->
-		<foreach item="item" index="index" collection="searchObjectList">
-			<choose>
-				<when test="item.key == 'diagram_id'">
-					AND diagram_id = #{item.value}
-				</when>
-				<when test="item.type == 'dates'">
-					AND #{item.value}::timestamp <![CDATA[<=]]> ${item.key}::timestamp
-					AND ${item.key2}::timestamp <![CDATA[<]]> #{item.value2}::timestamp + INTERVAL '1' DAY
-				</when>
-				<when test="item.type == 'string' and item.key == 'state_info' and item.value != null and item.value !=''">
-					AND ${item.key} = #{item.value}
-				</when>
-			</choose>
-		</foreach>
-		<!-- 검색영역 끝 -->
-        ORDER BY operation_date DESC
-		LIMIT #{perPage} OFFSET ((#{currentPage} - 1) * #{perPage})
-    </select>
-	<select id="logSelectListCnt" parameterType="SearchVO" resultType="int">
-		SELECT COUNT(log_id)
-		FROM diagram_log_table
-		WHERE true
-		<!-- 검색영역 -->
-		<foreach item="item" index="index" collection="searchObjectList">
-			<choose>
-				<when test="item.key == 'diagram_id'">
-					AND diagram_id = #{item.value}
-				</when>
-				<when test="item.type == 'dates'">
-					AND #{item.value}::timestamp <![CDATA[<=]]> ${item.key}::timestamp
-					AND ${item.key2}::timestamp <![CDATA[<]]> #{item.value2}::timestamp + INTERVAL '1' DAY
-				</when>
-				<when test="item.type == 'string' and item.key == 'state_info' and item.value != null and item.value !=''">
-					AND ${item.key} = #{item.value}
-				</when>
-			</choose>
-		</foreach>
-		<!-- 검색영역 끝 -->
-	</select>
-
-
-	<select id="logSelectListAllID" parameterType="HashMap" resultType="LogVO">
-		SELECT log_id
-			 , operation_date
-			 , total_node_count
-			 , fail_node_count
-			 , fail_node_name
-			 , state_info
-			 , diagram_id
-			 , user_id
-		  FROM diagram_log_table
-		 WHERE diagram_id = #{diagram_id}
-	</select>
-
-	<!--	DatasetId 조회-->
-	<select id="datasetIdSelect" parameterType="HashMap" resultType="String">
-        SELECT dataset_id
-          FROM dataset
-         WHERE dataset_post_id = #{dataset_post_id}
-    </select>
-
-	<!--	로그 아이디로 디테일 로그 조회-->
-	<select id="detaillogSelectListAll" parameterType="HashMap" resultType="LogDetailVO">
-		SELECT dlt.detail_log_id
-		     , dlt.operation_success_date
-			 , dlt.node_name
-			 , dlt.log_category
-			 , dlt.log_message
-		     , dlt.log_id
-		     , dlt.operation_date
-		     , st.sj
-			 , dlt.creat_id
-		  FROM detail_log_table AS dlt
-	 LEFT JOIN diagram_log_table AS lt
-			ON dlt.log_id = lt.log_id
-	 LEFT JOIN scheduler AS st
-	     	ON st.group_id = lt.diagram_id
-		WHERE true
-		<!-- 검색영역 -->
-		<foreach item="item" index="index" collection="searchObjectList">
-			<choose>
-				<when test="item.key == 'log_id' and item.value != null and item.value !=''">
-					AND dlt.log_id = #{item.value}
-				</when>
-				<when test="item.type == 'string' and item.key == 'log_category' and item.value != null and item.value !=''">
-					AND dlt.log_category = #{item.value}
-				</when>
-			</choose>
-		</foreach>
-		<!-- 검색영역 끝 -->
-		ORDER BY operation_date ASC
-		LIMIT #{perPage} OFFSET ((#{currentPage} - 1) * #{perPage})
-    </select>
-	<select id="detaillogSelectListCnt" parameterType="HashMap" resultType="int">
-		SELECT COUNT(dlt.detail_log_id)
-		FROM detail_log_table AS dlt
-		LEFT JOIN diagram_log_table AS lt
-		ON dlt.log_id = lt.log_id
-		LEFT JOIN scheduler AS st
-		ON st.group_id = lt.diagram_id
-		WHERE true
-		<!-- 검색영역 -->
-		<foreach item="item" index="index" collection="searchObjectList">
-			<choose>
-				<when test="item.key == 'log_id' and item.value != null and item.value !=''">
-					AND dlt.log_id = #{item.value}
-				</when>
-				<when test="item.type == 'string' and item.key == 'log_category' and item.value != null and item.value !=''">
-					AND dlt.log_category = #{item.value}
-				</when>
-			</choose>
-		</foreach>
-		<!-- 검색영역 끝 -->
-	</select>
-
-	<select id="detaillogSelectListAllID" parameterType="HashMap" resultType="LogDetailVO">
-		SELECT
-			dlt.detail_log_id,
-			dlt.operation_success_date,
-			dlt.node_name,
-			dlt.log_category,
-			dlt.log_message,
-			st.sj,
-			st.creat_id,
-			lt.operation_date
-		FROM
-			detail_log_table dlt
-		JOIN
-			diagram_log_table lt ON dlt.log_id = lt.log_id
-		JOIN
-			diagram_table dt ON dt.diagram_id = lt.diagram_id
-		JOIN
-			scheduler st ON st.group_id = dt.diagram_id
-		WHERE dlt.log_id = #{logId}
-    </select>
-
-	<!--	다이어그램 아이디로 NODE리스트를 조회-->
-	<select id="nodeList" parameterType="String" resultType="NodeVO">
-		SELECT DISTINCT
-			 dt.diagram_id
-		 	 , nt.node_name
-			 , nt.node_type
-			 , nt.itm_id
-			 , nt.center_x
-			 , nt.center_y
-			 , nt.node_state
-			 , nt.flag
-			 , nt.id
-			 , nt.label
-			 , nt."type"
-		  FROM diagram_table AS dt
-	 LEFT JOIN node_table AS nt
-		    ON dt.diagram_id = nt.diagram_id
-		 WHERE dt.diagram_id = #{diagramId}
-    </select>
-
-	<select id="lineList" parameterType="String" resultType="EdgeVO">
-		SELECT edge_id
-		     , source
-			 , target
-			 , diagram_id
-		  FROM edge_table
-		 WHERE diagram_id = #{diagramId}
-    </select>
-
-	<!--
-	작성자 : 하관우
-	작성일자 : 2024-02-01
-	내용 : 다이어그램 업설트
-	-->
-	<update id="diagramDataInsert" parameterType="DiagramVO" >
-		INSERT INTO diagram_table(
-            diagram_id,
-    		creat_dt,
-    		updt_dt,
-    		creat_id,
-    		updt_id
-        ) VALUES(
-            #{diagram_id},
-    		NOW(),
-    		#{updt_dt},
-    		#{creat_id},
-    		#{updt_id}
-        )
-		ON CONFLICT(diagram_id)
-		DO UPDATE
-		SET
-			 updt_dt = NOW()
-			 , creat_id =  #{creat_id}
-			 , updt_id =  #{updt_id}
-	</update>
-	<!--
-	작성자 : 하관우
-	작성일자 : 2024-02-01
-	내용 : 노드 업설트
-	-->
-	<update id="nodeDataInsert" parameterType="Schedule" >
-		INSERT INTO node_table(
-			diagram_id,
-			node_id,
-			node_name,
-			node_type,
-			itm_id,
-			center_x,
-			center_y,
-			node_state,
-			flag,
-			id,
-			label,
-			"type"
-    	) VALUES(
-			#{diagram_id},
-			#{node_id},
-			#{node_name},
-			#{node_type},
-			#{itm_id},
-			#{position.x}::DOUBLE PRECISION,
-			#{position.y}::DOUBLE PRECISION,
-			#{node_state},
-			#{flag},
-			#{id},
-			#{label},
-			#{type}
-        )
-		ON CONFLICT(node_id)
-		DO UPDATE
-		SET  diagram_id = #{diagram_id}
-			 , node_name = #{node_name}
-			 , node_type =  #{node_type}
-			 , itm_id = #{itm_id}
-			 , center_x = #{position.x}::DOUBLE PRECISION
-			 , center_y = #{position.y}::DOUBLE PRECISION
-			 , node_state = #{node_state}
-			 , flag = #{flag}
-			 , id = #{id}
-			 , label = #{label}
-			 , "type" = #{type}
-	</update>
-	<!--
-	작성자 : 하관우
-	작성일자 : 2024-02-01
-	내용 : 선 업설트
-	-->
-	<update id="lineDataInsert" parameterType="EdgeVO" >
-		INSERT INTO edge_table(
-            edge_id,
-			source,
-			target,
-    		diagram_id
-        ) VALUES(
-            #{edge_id},
-    		#{source},
-    		#{target},
-    		#{diagram_id}
-        )
-		ON CONFLICT(edge_id)
-		DO UPDATE
-		SET  source = #{source}
-			 , target = #{target}
-			 , diagram_id =  #{diagram_id}
-	</update>
-
-	<!--
-	작성자 : 하관우
-	작성일자 : 2024-02-01
-	내용 : 로그 인설트
-	-->
-	<insert id="logDataInsert" parameterType="LogVO" >
-    INSERT INTO diagram_log_table(
-        log_id,
-		operation_date,
-		total_node_count,
-		fail_node_count,
-		fail_node_name,
-		state_info,
-		diagram_id,
-		user_id
-    ) VALUES(
-        #{log_id},
-		NOW(),
-		#{total_node_count},
-		#{fail_node_count},
-		#{fail_node_name},
-		#{state_info},
-		#{diagram_id},
-		#{user_id}
-    )
-	</insert>
-
-	<!--
-        작성자 : 하관우
-        작성일자 : 2024-09-03
-        내용 : 로그 업데이트
-        -->
-	<update id="logDataUpdate" parameterType="LogVO">
-    UPDATE diagram_log_table
-    SET
-        operation_date = NOW(),
-        total_node_count = #{total_node_count},
-        fail_node_count = #{fail_node_count},
-        fail_node_name = #{fail_node_name},
-        state_info = #{state_info},
-        user_id = #{user_id}
-    WHERE
-        log_id = #{log_id}
-</update>
-
-	<!--
-	작성자 : 하관우
-	작성일자 : 2024-02-01
-	내용 : 로그 디테일 인설트
-	-->
-	<insert id="logDetailDataInsert" parameterType="LogDetailVO" >
-		INSERT INTO detail_log_table(
-			detail_log_id
-			, operation_success_date
-			, node_name
-			, log_category
-			, log_message
-			, log_id
-			, operation_date
-			, sj
-			, creat_id
-		) VALUES(
-			#{detail_log_id}
-			, now()
-			, #{node_name}
-			, #{log_category}
-			, #{log_message}
-			, #{log_id}
-			, #{operation_date}
-			, #{sj}
-			, #{creat_id}
-		)
-	</insert>
-
-	<!--	다이어그램 ID로 노드 삭제-->
-	<delete id="nodeDelete" parameterType="String">
-		DELETE FROM node_table
-		WHERE diagram_id = #{diagram_id}
-	</delete>
-
-	<!--	노드 ID로 노드 삭제-->
-	<delete id="nodeIdDelete" parameterType="String">
-		DELETE FROM node_table
-		WHERE node_id = #{node_id}
-	</delete>
-
-	<!--	다이어그램 ID로 라인 삭제-->
-	<delete id="edgeDelete" parameterType="String">
-		DELETE FROM edge_table
-		WHERE diagram_id = #{diagram_id}
-	</delete>
-
-	<!--	라인 ID로 라인 삭제-->
-	<delete id="edgeIdDelete" parameterType="String">
-		DELETE FROM edge_table
-		WHERE edge_id = #{edge_id}
-	</delete>
-
-	<!--	다이어그램 ID로 다이어그램 삭제-->
-	<delete id="diagramDelete" parameterType="String">
-		DELETE FROM diagram_table
-		WHERE diagram_id = #{group_id}
-	</delete>
-
-	<!--	다이어그램 ID로 로그 삭제-->
-	<delete id="logDelete" parameterType="String">
-		DELETE FROM diagram_log_table
-		WHERE diagram_id = #{diagram_id}
-	</delete>
-
-	<!--	로그 ID로 디테일 로그 삭제-->
-	<delete id="logDetailDelete" parameterType="String">
-		DELETE FROM detail_log_table
-		WHERE log_id = #{log_id}
-	</delete>
-
-	<!--	다이어그램 ID로 노드 ID 찾기-->
-	<select id="nodeSelectId" parameterType="String" resultType="String">
-		SELECT node_id
-		FROM node_table
-		WHERE diagram_id = #{diagram_id}
-	</select>
-
-	<!--	스케줄 ID로 그룹 ID 찾기-->
-	<select id="ScheduleIdToGroubId" parameterType="String" resultType="String">
-		SELECT group_id
-		FROM scheduler
-		WHERE schdul_id = #{schdul_id}
-	</select>
-
-	<!--	다이어그램 ID로 라인 ID 찾기-->
-	<select id="edgeSelectId" parameterType="String" resultType="String">
-		SELECT edge_id
-		FROM edge_table
-		WHERE diagram_id = #{diagram_id}
-	</select>
-
-	<!--노드 삭제를 위한 것(끝)-->
-	<sql id="listSearch">
-		<foreach item="item" index="index" collection="searchObjectList">
-			<choose>
-				<!-- 날짜 검색 -->
-				<when test="item.type == 'dates'">
-					AND #{item.value}::timestamp <![CDATA[<=]]> dt.${item.key}::timestamp
-					AND dt.${item.key2}::timestamp <![CDATA[<]]> #{item.value2}::timestamp + INTERVAL '1' DAY
-				</when>
-				<!-- 상태 검색 -->
-				<when test="item.type == 'string' and item.key == 'schdul_sttus' and item.value != null and item.value !=''">
-					AND sch.${item.key} = #{item.value}
-				</when>
-				<!-- 일반 검색 -->
-				<when test="item.type == 'string' and item.value != null and item.value !=''">
-					<choose>
-						<when test="item.key != null and item.value != ''">
-							<if test="item.key == 'sj'">
-								AND sch.sj LIKE CONCAT('%', #{item.value}, '%')
-							</if>
-							<if test="item.key == 'creat_id'">
-								AND dt.creat_id LIKE CONCAT('%', #{item.value}, '%')
-							</if>
-						</when>
-						<otherwise>
-							AND (sch.sj LIKE '%' || #{item.value} || '%' OR dt.creat_id LIKE '%' || #{item.value} || '%')
-						</otherwise>
-					</choose>
-				</when>
-			</choose>
-		</foreach>
-	</sql>
-	<!-- // SELECT SQL -->
-
-	<select id="diagramListRead" parameterType="SearchVO" resultType="DiagramListDTO">
-		SELECT sch.schdul_id
-		     , dt.diagram_id
-			 , sch.sj AS diagram_nm
-			 , dt.creat_id
-		     , sch.cron_chrctr
-			 , dt.creat_dt
-			 , sch.schdul_sttus
-		  FROM diagram_table AS dt
-	 LEFT JOIN scheduler AS sch
-			ON dt.diagram_id = sch.group_id
-		 WHERE sch.use_at = true
-		<include refid="listSearch" />
-		ORDER BY creat_dt DESC
-		LIMIT #{perPage} OFFSET ((#{currentPage} - 1) * #{perPage})
-	</select>
-
-	<select id="diagramListCountRead" parameterType="SearchVO"  resultType="Integer">
-		SELECT count(dt.diagram_id)
-		  FROM diagram_table AS dt
-	 LEFT JOIN scheduler AS sch
-			ON dt.diagram_id = sch.group_id
-		 WHERE sch.use_at = true
-		<include refid="listSearch" />
-	</select>
-
-
-	<select id="diagramDetailRead" parameterType="String" resultType="DiagramVO">
-		SELECT dt.diagram_id
-			 , sch.sj AS diagram_nm
-			 , dt.creat_dt
-			 , dt.creat_id
-			 , dt.updt_dt
-			 , dt.updt_id
-		  FROM diagram_table AS dt
-	 LEFT JOIN scheduler AS sch
-			ON dt.diagram_id = sch.group_id
-		 WHERE diagram_id = #{diagramId}
-	</select>
-</mapper>(파일 끝에 줄바꿈 문자 없음)
 
src/main/resources/spring/mapper/schedule/diagram-SQL.xml (added)
+++ src/main/resources/spring/mapper/schedule/diagram-SQL.xml
@@ -0,0 +1,271 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.takensoft.taken_bi_manager.schedule.dao.DiagramDAO">
+	<!-- 스케줄 resultMap -->
+	<resultMap id="DiagramResult" type="DiagramVO">
+		<result property="schdulId" column="schdul_id"/>
+		<result property="groupId" column="group_id"/>
+		<result property="schdulSj" column="schdul_sj"/>
+		<result property="schdulCn" column="schdul_cn"/>
+		<result property="cron" column="cron"/>
+		<result property="cronChrctr" column="cron_chrctr"/>
+		<result property="schdulSttus" column="schdul_sttus"/>
+		<result property="cycleAt" column="cycle_at"/>
+		<result property="useAt" column="use_at"/>
+		<result property="creatId" column="creat_id"/>
+		<result property="creatDt" column="creat_dt"/>
+		<result property="updtId" column="updt_id"/>
+		<result property="updtDt" column="updt_dt"/>
+	</resultMap>
+
+	<!-- 노드 목록 조회 -->
+	<select id="nodeList" parameterType="String" resultType="NodeVO">
+		SELECT DISTINCT
+			 dt.diagram_id
+		 	 , nt.node_name
+			 , nt.node_type
+			 , nt.itm_id
+			 , nt.center_x
+			 , nt.center_y
+			 , nt.node_state
+			 , nt.flag
+			 , nt.id
+			 , nt.label
+			 , nt."type"
+		  FROM diagram_info AS dt
+	 LEFT JOIN diagram_node AS nt
+		    ON dt.diagram_id = nt.diagram_id
+		 WHERE dt.diagram_id = #{diagramId}
+    </select>
+
+	<select id="lineList" parameterType="String" resultType="EdgeVO">
+		SELECT edge_id
+		     , source
+			 , target
+			 , diagram_id
+		  FROM diagram_edge
+		 WHERE diagram_id = #{diagramId}
+    </select>
+
+	<!--
+	작성자 : 하관우
+	작성일자 : 2024-02-01
+	내용 : 다이어그램 업설트
+	-->
+	<update id="diagramDataInsert" parameterType="DiagramVO" >
+		INSERT INTO diagram_info(
+            diagram_id,
+    		creat_dt,
+    		updt_dt,
+    		creat_id,
+    		updt_id
+        ) VALUES(
+            #{diagram_id},
+    		NOW(),
+    		#{updt_dt},
+    		#{creat_id},
+    		#{updt_id}
+        )
+		ON CONFLICT(diagram_id)
+		DO UPDATE
+		SET
+			 updt_dt = NOW()
+			 , creat_id =  #{creat_id}
+			 , updt_id =  #{updt_id}
+	</update>
+	<!--
+	작성자 : 하관우
+	작성일자 : 2024-02-01
+	내용 : 노드 업설트
+	-->
+	<update id="nodeDataInsert" parameterType="ScheduleVO" >
+		INSERT INTO diagram_node(
+			diagram_id,
+			node_id,
+			node_name,
+			node_type,
+			itm_id,
+			center_x,
+			center_y,
+			node_state,
+			flag,
+			id,
+			label,
+			"type"
+    	) VALUES(
+			#{diagram_id},
+			#{node_id},
+			#{node_name},
+			#{node_type},
+			#{itm_id},
+			#{position.x}::DOUBLE PRECISION,
+			#{position.y}::DOUBLE PRECISION,
+			#{node_state},
+			#{flag},
+			#{id},
+			#{label},
+			#{type}
+        )
+		ON CONFLICT(node_id)
+		DO UPDATE
+		SET  diagram_id = #{diagram_id}
+			 , node_name = #{node_name}
+			 , node_type =  #{node_type}
+			 , itm_id = #{itm_id}
+			 , center_x = #{position.x}::DOUBLE PRECISION
+			 , center_y = #{position.y}::DOUBLE PRECISION
+			 , node_state = #{node_state}
+			 , flag = #{flag}
+			 , id = #{id}
+			 , label = #{label}
+			 , "type" = #{type}
+	</update>
+	<!--
+	작성자 : 하관우
+	작성일자 : 2024-02-01
+	내용 : 선 업설트
+	-->
+	<update id="lineDataInsert" parameterType="EdgeVO" >
+		INSERT INTO diagram_edge(
+            edge_id,
+			source,
+			target,
+    		diagram_id
+        ) VALUES(
+            #{edge_id},
+    		#{source},
+    		#{target},
+    		#{diagram_id}
+        )
+		ON CONFLICT(edge_id)
+		DO UPDATE
+		SET  source = #{source}
+			 , target = #{target}
+			 , diagram_id =  #{diagram_id}
+	</update>
+
+	<!--	다이어그램 ID로 노드 삭제-->
+	<delete id="nodeDelete" parameterType="String">
+		DELETE FROM diagram_node
+		WHERE diagram_id = #{diagram_id}
+	</delete>
+
+	<!--	노드 ID로 노드 삭제-->
+	<delete id="nodeIdDelete" parameterType="String">
+		DELETE FROM diagram_node
+		WHERE node_id = #{node_id}
+	</delete>
+
+	<!--	다이어그램 ID로 라인 삭제-->
+	<delete id="edgeDelete" parameterType="String">
+		DELETE FROM diagram_edge
+		WHERE diagram_id = #{diagram_id}
+	</delete>
+
+	<!--	라인 ID로 라인 삭제-->
+	<delete id="edgeIdDelete" parameterType="String">
+		DELETE FROM diagram_edge
+		WHERE edge_id = #{edge_id}
+	</delete>
+
+	<!--	다이어그램 ID로 다이어그램 삭제-->
+	<delete id="diagramDelete" parameterType="String">
+		DELETE FROM diagram_info
+		WHERE diagram_id = #{group_id}
+	</delete>
+
+	<!--	다이어그램 ID로 노드 ID 찾기-->
+	<select id="nodeSelectId" parameterType="String" resultType="String">
+		SELECT node_id
+		FROM diagram_node
+		WHERE diagram_id = #{diagram_id}
+	</select>
+
+	<!--	스케줄 ID로 그룹 ID 찾기-->
+	<select id="ScheduleIdToGroubId" parameterType="String" resultType="String">
+		SELECT group_id
+		FROM schdul_info
+		WHERE schdul_id = #{schdul_id}
+	</select>
+
+	<!--	다이어그램 ID로 라인 ID 찾기-->
+	<select id="edgeSelectId" parameterType="String" resultType="String">
+		SELECT edge_id
+		FROM diagram_edge
+		WHERE diagram_id = #{diagram_id}
+	</select>
+
+	<!--노드 삭제를 위한 것(끝)-->
+	<sql id="listSearch">
+		<foreach item="item" index="index" collection="searchObjectList">
+			<choose>
+				<!-- 날짜 검색 -->
+				<when test="item.type == 'dates'">
+					AND #{item.value}::timestamp <![CDATA[<=]]> dt.${item.key}::timestamp
+					AND dt.${item.key2}::timestamp <![CDATA[<]]> #{item.value2}::timestamp + INTERVAL '1' DAY
+				</when>
+				<!-- 상태 검색 -->
+				<when test="item.type == 'string' and item.key == 'schdul_sttus' and item.value != null and item.value !=''">
+					AND sch.${item.key} = #{item.value}
+				</when>
+				<!-- 일반 검색 -->
+				<when test="item.type == 'string' and item.value != null and item.value !=''">
+					<choose>
+						<when test="item.key != null and item.value != ''">
+							<if test="item.key == 'sj'">
+								AND sch.sj LIKE CONCAT('%', #{item.value}, '%')
+							</if>
+							<if test="item.key == 'creat_id'">
+								AND dt.creat_id LIKE CONCAT('%', #{item.value}, '%')
+							</if>
+						</when>
+						<otherwise>
+							AND (sch.sj LIKE '%' || #{item.value} || '%' OR dt.creat_id LIKE '%' || #{item.value} || '%')
+						</otherwise>
+					</choose>
+				</when>
+			</choose>
+		</foreach>
+	</sql>
+	<!-- // SELECT SQL -->
+
+	<select id="diagramListRead" parameterType="SearchVO">
+		SELECT sch.schdul_id
+		     , dt.diagram_id
+			 , sch.sj AS diagram_nm
+			 , dt.creat_id
+		     , sch.cron_chrctr
+			 , dt.creat_dt
+			 , sch.schdul_sttus
+		  FROM diagram_info AS dt
+	 LEFT JOIN schdul_info AS sch
+			ON dt.diagram_id = sch.group_id
+		 WHERE sch.use_at = true
+		<include refid="listSearch" />
+		ORDER BY creat_dt DESC
+		LIMIT #{perPage} OFFSET ((#{currentPage} - 1) * #{perPage})
+	</select>
+
+	<select id="diagramListCountRead" parameterType="SearchVO"  resultType="Integer">
+		SELECT count(dt.diagram_id)
+		  FROM diagram_info AS dt
+	 LEFT JOIN schdul_info AS sch
+			ON dt.diagram_id = sch.group_id
+		 WHERE sch.use_at = true
+		<include refid="listSearch" />
+	</select>
+
+
+	<select id="diagramDetailRead" parameterType="String" resultType="DiagramVO">
+		SELECT dt.diagram_id
+			 , sch.sj AS diagram_nm
+			 , dt.creat_dt
+			 , dt.creat_id
+			 , dt.updt_dt
+			 , dt.updt_id
+		  FROM diagram_info AS dt
+	 LEFT JOIN schdul_info AS sch
+			ON dt.diagram_id = sch.group_id
+		 WHERE diagram_id = #{diagramId}
+	</select>
+</mapper>(파일 끝에 줄바꿈 문자 없음)
 
src/main/resources/spring/mapper/schedule/schedule-SQL.xml (added)
+++ src/main/resources/spring/mapper/schedule/schedule-SQL.xml
@@ -0,0 +1,157 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.takensoft.taken_bi_manager.schedule.dao.ScheduleDAO">
+	<!-- 스케줄 resultMap -->
+	<resultMap id="schdulResult" type="ScheduleVO">
+		<result property="schdulId" column="schdul_id"/>
+		<result property="groupId" column="group_id"/>
+		<result property="schdulSj" column="schdul_sj"/>
+		<result property="schdulCn" column="schdul_cn"/>
+		<result property="schdulType" column="schdul_type"/>
+		<result property="cron" column="cron"/>
+		<result property="cronChrctr" column="cron_chrctr"/>
+		<result property="schdulSttus" column="schdul_sttus"/>
+		<result property="cycleAt" column="cycle_at"/>
+		<result property="useAt" column="use_at"/>
+		<result property="creatId" column="creat_id"/>
+		<result property="creatDt" column="creat_dt"/>
+		<result property="updtId" column="updt_id"/>
+		<result property="updtDt" column="updt_dt"/>
+	</resultMap>
+
+	<!-- 스케줄 조회 -->
+	<sql id="scheduleSelect">
+		SELECT schdul_id
+			 , group_id
+			 , schdul_sj
+			 , schdul_cn
+		     , schdul_type
+			 , cron
+			 , cron_chrctr
+			 , schdul_sttus
+			 , cycle_at
+			 , use_at
+			 , creat_id
+			 , creat_dt
+			 , updt_id
+			 , updt_dt
+		FROM schdul_info
+	</sql>
+
+	<!-- 스케줄 목록 조회  -->
+	<select id="selectScheduleList" parameterType="SearchVO"  resultMap="schdulResult">
+		<include refid="scheduleSelect" />
+		WHERE use_at = true
+		<!-- 검색영역 -->
+		<foreach item="item" index="index" collection="searchObjectList">
+			<choose>
+				<!-- 날짜 검색 -->
+				<when test="item.type == 'dates'">
+					AND #{item.value}::timestamp <![CDATA[<=]]> ${item.key}::timestamp
+					AND ${item.key2}::timestamp <![CDATA[<]]> #{item.value2}::timestamp + INTERVAL '1' DAY
+				</when>
+				<!-- 상태 검색 -->
+				<when test="item.type == 'string' and item.key == 'schdul_sttus' and item.value != null and item.value !=''">
+					AND ${item.key} = #{item.value}
+				</when>
+				<!-- 일반 검색 -->
+				<when test="item.type == 'string' and item.key != null and item.key != '' and item.value != null and item.value !=''">
+					AND ${item.key} LIKE CONCAT('%', #{item.value}, '%')
+				</when>
+			</choose>
+		</foreach>
+		<!-- 검색영역 끝 -->
+		ORDER BY creat_dt DESC
+		LIMIT #{perPage} OFFSET ((#{currentPage} - 1) * #{perPage})
+	</select>
+
+	<!-- 스케줄 전체 개수 조회  -->
+	<select id="selectScheduleCount" parameterType="SearchVO">
+		SELECT count(*)
+		FROM schdul_info
+		WHERE use_at = true
+		<!-- 검색영역 -->
+		<foreach item="item" index="index" collection="searchObjectList">
+			<choose>
+				<!-- 날짜 검색 -->
+				<when test="item.type == 'dates'">
+					AND #{item.value}::timestamp <![CDATA[<=]]> ${item.key}::timestamp
+					AND ${item.key2}::timestamp <![CDATA[<]]> #{item.value2}::timestamp + INTERVAL '1' DAY
+				</when>
+				<!-- 상태 검색 -->
+				<when test="item.type == 'string' and item.key == 'schdul_sttus' and item.value != null and item.value !=''">
+					AND ${item.key} = #{item.value}
+				</when>
+				<!-- 일반 검색 -->
+				<when test="item.type == 'string' and item.key != null and item.key != '' and item.value != null and item.value !=''">
+					AND ${item.key} LIKE CONCAT('%', #{item.value}, '%')
+				</when>
+			</choose>
+		</foreach>
+		<!-- 검색영역 끝 -->
+	</select>
+
+	<!-- 스케줄 업설트  -->
+	<update id="insertSchedule" parameterType="ScheduleVO" >
+		INSERT INTO schdul_info (
+			schdul_id
+			, group_id
+			, schdul_sj
+			, schdul_cn
+			, schdul_type
+			, cron
+			, cron_chrctr
+			, schdul_sttus
+			, cycle_at
+			, use_at
+			, creat_id
+			, creat_dt
+		) VALUES (
+			#{schdulId}
+			, #{groupId}
+			, #{schdulSj}
+			, #{schdulCn}
+			, #{schdulType}
+			, #{cron}
+			, #{cronChrctr}
+			, #{schdulSttus}
+			, #{cycleAt}
+			, #{useAt}
+			, #{creatId}
+			, NOW()
+		)
+		ON CONFLICT(schdul_id)
+		DO UPDATE
+		SET group_id = #{group_id}
+			, schdul_sj = #{schdulSj}
+			, schdul_cn =  #{schdulCn}
+			, cron = #{cron}
+			, cron_chrctr = #{cronChrctr}
+			, schdul_sttus = #{schdulSttus}
+			, cycle_at = #{cycleAt}
+			, use_at = #{useAt}
+			, updt_id = #{updtId}
+			, updt_dt = NOW()
+	</update>
+
+	<!-- 스케줄 단건 조회 -->
+	<select id="selectSchedule" parameterType="String"  resultType="ScheduleVO">
+		<include refid="scheduleSelect" />
+		WHERE use_at = true
+		  AND schdul_id = #{schdul_id}
+	</select>
+
+	<!-- 스케줄 정보 삭제 -->
+	<update id="deleteSchedule" parameterType="String">
+		UPDATE schdul_info
+		   SET use_at = false
+		 WHERE schdul_id = #{schdulId}
+	</update>
+
+	<!-- 스케줄 상태 변경 -->
+	<update id="scheduleSttusChange" parameterType="HashMap">
+		UPDATE schdul_info
+		   SET schdul_sttus = #{schdulSttus}
+		 WHERE schdul_id = #{schdulId}
+	</update>
+</mapper>(파일 끝에 줄바꿈 문자 없음)
 
src/main/resources/spring/mapper/schedule/scheduleLog-SQL.xml (added)
+++ src/main/resources/spring/mapper/schedule/scheduleLog-SQL.xml
@@ -0,0 +1,248 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.takensoft.taken_bi_manager.schedule.dao.DiagramDAO">
+    <!-- 스케줄 resultMap -->
+    <resultMap id="schdulResult" type="ScheduleVO">
+        <result property="schdulId" column="schdul_id"/>
+        <result property="groupId" column="group_id"/>
+        <result property="schdulSj" column="schdul_sj"/>
+        <result property="schdulCn" column="schdul_cn"/>
+        <result property="cron" column="cron"/>
+        <result property="cronChrctr" column="cron_chrctr"/>
+        <result property="schdulSttus" column="schdul_sttus"/>
+        <result property="cycleAt" column="cycle_at"/>
+        <result property="useAt" column="use_at"/>
+        <result property="creatId" column="creat_id"/>
+        <result property="creatDt" column="creat_dt"/>
+        <result property="updtId" column="updt_id"/>
+        <result property="updtDt" column="updt_dt"/>
+    </resultMap>
+
+    <!-- 다이어그램으로 로그 조회 -->
+    <select id="logSelectListAll" parameterType="SearchVO" resultType="ScheduleLogVO">
+        SELECT log_id
+        , operation_date
+        , total_node_count
+        , fail_node_count
+        , fail_node_name
+        , state_info
+        , diagram_id
+        , user_id
+        FROM diagram_lg
+        WHERE true
+        <!-- 검색영역 -->
+        <foreach item="item" index="index" collection="searchObjectList">
+            <choose>
+                <when test="item.key == 'diagram_id'">
+                    AND diagram_id = #{item.value}
+                </when>
+                <when test="item.type == 'dates'">
+                    AND #{item.value}::timestamp <![CDATA[<=]]> ${item.key}::timestamp
+                    AND ${item.key2}::timestamp <![CDATA[<]]> #{item.value2}::timestamp + INTERVAL '1' DAY
+                </when>
+                <when test="item.type == 'string' and item.key == 'state_info' and item.value != null and item.value !=''">
+                    AND ${item.key} = #{item.value}
+                </when>
+            </choose>
+        </foreach>
+        <!-- 검색영역 끝 -->
+        ORDER BY operation_date DESC
+        LIMIT #{perPage} OFFSET ((#{currentPage} - 1) * #{perPage})
+    </select>
+
+    <select id="logSelectListCnt" parameterType="SearchVO" resultType="int">
+        SELECT COUNT(log_id)
+        FROM diagram_lg
+        WHERE true
+        <!-- 검색영역 -->
+        <foreach item="item" index="index" collection="searchObjectList">
+            <choose>
+                <when test="item.key == 'diagram_id'">
+                    AND diagram_id = #{item.value}
+                </when>
+                <when test="item.type == 'dates'">
+                    AND #{item.value}::timestamp <![CDATA[<=]]> ${item.key}::timestamp
+                    AND ${item.key2}::timestamp <![CDATA[<]]> #{item.value2}::timestamp + INTERVAL '1' DAY
+                </when>
+                <when test="item.type == 'string' and item.key == 'state_info' and item.value != null and item.value !=''">
+                    AND ${item.key} = #{item.value}
+                </when>
+            </choose>
+        </foreach>
+        <!-- 검색영역 끝 -->
+    </select>
+
+    <select id="logSelectListAllID" parameterType="HashMap" resultType="ScheduleLogVO">
+        SELECT log_id
+             , operation_date
+             , total_node_count
+             , fail_node_count
+             , fail_node_name
+             , state_info
+             , diagram_id
+             , user_id
+        FROM diagram_lg
+        WHERE diagram_id = #{diagram_id}
+    </select>
+
+    <!--	로그 아이디로 디테일 로그 조회-->
+    <select id="detaillogSelectListAll" parameterType="HashMap" resultType="ScheduleLogDetailVO">
+        SELECT dlt.detail_log_id
+        , dlt.operation_success_date
+        , dlt.node_name
+        , dlt.log_category
+        , dlt.log_message
+        , dlt.log_id
+        , dlt.operation_date
+        , st.sj
+        , dlt.creat_id
+        FROM diagram_lg_detail AS dlt
+        LEFT JOIN diagram_lg AS lt
+        ON dlt.log_id = lt.log_id
+        LEFT JOIN schdul_info AS st
+        ON st.group_id = lt.diagram_id
+        WHERE true
+        <!-- 검색영역 -->
+        <foreach item="item" index="index" collection="searchObjectList">
+            <choose>
+                <when test="item.key == 'log_id' and item.value != null and item.value !=''">
+                    AND dlt.log_id = #{item.value}
+                </when>
+                <when test="item.type == 'string' and item.key == 'log_category' and item.value != null and item.value !=''">
+                    AND dlt.log_category = #{item.value}
+                </when>
+            </choose>
+        </foreach>
+        <!-- 검색영역 끝 -->
+        ORDER BY operation_date ASC
+        LIMIT #{perPage} OFFSET ((#{currentPage} - 1) * #{perPage})
+    </select>
+    <select id="detaillogSelectListCnt" parameterType="HashMap" resultType="int">
+        SELECT COUNT(dlt.detail_log_id)
+        FROM diagram_lg_detail AS dlt
+        LEFT JOIN diagram_lg AS lt
+        ON dlt.log_id = lt.log_id
+        LEFT JOIN schdul_info AS st
+        ON st.group_id = lt.diagram_id
+        WHERE true
+        <!-- 검색영역 -->
+        <foreach item="item" index="index" collection="searchObjectList">
+            <choose>
+                <when test="item.key == 'log_id' and item.value != null and item.value !=''">
+                    AND dlt.log_id = #{item.value}
+                </when>
+                <when test="item.type == 'string' and item.key == 'log_category' and item.value != null and item.value !=''">
+                    AND dlt.log_category = #{item.value}
+                </when>
+            </choose>
+        </foreach>
+        <!-- 검색영역 끝 -->
+    </select>
+
+    <select id="detaillogSelectListAllID" parameterType="HashMap" resultType="ScheduleLogDetailVO">
+        SELECT
+            dlt.detail_log_id,
+            dlt.operation_success_date,
+            dlt.node_name,
+            dlt.log_category,
+            dlt.log_message,
+            st.sj,
+            st.creat_id,
+            lt.operation_date
+        FROM
+            diagram_lg_detail dlt
+                JOIN
+            diagram_lg lt ON dlt.log_id = lt.log_id
+                JOIN
+            diagram_info dt ON dt.diagram_id = lt.diagram_id
+                JOIN
+            schdul_info st ON st.group_id = dt.diagram_id
+        WHERE dlt.log_id = #{logId}
+    </select>
+
+    <!--
+    작성자 : 하관우
+    작성일자 : 2024-02-01
+    내용 : 로그 인설트
+    -->
+    <insert id="logDataInsert" parameterType="ScheduleLogVO" >
+        INSERT INTO diagram_lg(
+            log_id,
+            operation_date,
+            total_node_count,
+            fail_node_count,
+            fail_node_name,
+            state_info,
+            diagram_id,
+            user_id
+        ) VALUES(
+                    #{log_id},
+                    NOW(),
+                    #{total_node_count},
+                    #{fail_node_count},
+                    #{fail_node_name},
+                    #{state_info},
+                    #{diagram_id},
+                    #{user_id}
+                )
+    </insert>
+
+    <!--
+        작성자 : 하관우
+        작성일자 : 2024-09-03
+        내용 : 로그 업데이트
+        -->
+    <update id="logDataUpdate" parameterType="ScheduleLogVO">
+        UPDATE diagram_lg
+        SET
+            operation_date = NOW(),
+            total_node_count = #{total_node_count},
+            fail_node_count = #{fail_node_count},
+            fail_node_name = #{fail_node_name},
+            state_info = #{state_info},
+            user_id = #{user_id}
+        WHERE
+            log_id = #{log_id}
+    </update>
+
+    <!--
+    작성자 : 하관우
+    작성일자 : 2024-02-01
+    내용 : 로그 디테일 인설트
+    -->
+    <insert id="logDetailDataInsert" parameterType="ScheduleLogDetailVO" >
+        INSERT INTO diagram_lg_detail(
+                                       detail_log_id
+                                     , operation_success_date
+                                     , node_name
+                                     , log_category
+                                     , log_message
+                                     , log_id
+                                     , operation_date
+                                     , sj
+                                     , creat_id
+        ) VALUES(
+                  #{detail_log_id}
+                , now()
+                , #{node_name}
+                , #{log_category}
+                , #{log_message}
+                , #{log_id}
+                , #{operation_date}
+                , #{sj}
+                , #{creat_id}
+                )
+    </insert>
+
+    <!--	다이어그램 ID로 로그 삭제-->
+    <delete id="logDelete" parameterType="String">
+        DELETE FROM diagram_lg
+        WHERE diagram_id = #{diagram_id}
+    </delete>
+
+    <!--	로그 ID로 디테일 로그 삭제-->
+    <delete id="logDetailDelete" parameterType="String">
+        DELETE FROM diagram_lg_detail
+        WHERE log_id = #{log_id}
+    </delete>
+</mapper>(파일 끝에 줄바꿈 문자 없음)
src/main/resources/spring/mapper/user/login-SQL.xml
--- src/main/resources/spring/mapper/user/login-SQL.xml
+++ src/main/resources/spring/mapper/user/login-SQL.xml
@@ -2,7 +2,7 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 
 
-<mapper namespace="com.takensoft.taken_bi_manager.user.member.dao.LoginDAO">
+<mapper namespace="com.takensoft.taken_bi_manager.user.dao.LoginDAO">
 
 	<!-- 로그인 성공처리 -->
 	<update id="loginSuccess" parameterType="Member">
src/main/resources/spring/mapper/user/member-SQL.xml
--- src/main/resources/spring/mapper/user/member-SQL.xml
+++ src/main/resources/spring/mapper/user/member-SQL.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 
-<mapper namespace="com.takensoft.taken_bi_manager.user.member.dao.MemberDAO">
+<mapper namespace="com.takensoft.taken_bi_manager.user.dao.MemberDAO">
 	<!-- 사용자 매퍼 -->
 	<resultMap id="memberResult" type="Member">
 		<result property="userId" column="user_id"/>
src/main/resources/spring/mapper/user/mypage-SQL.xml
--- src/main/resources/spring/mapper/user/mypage-SQL.xml
+++ src/main/resources/spring/mapper/user/mypage-SQL.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.takensoft.taken_bi_manager.user.member.dao.MyPageDAO">
+<mapper namespace="com.takensoft.taken_bi_manager.user.dao.MyPageDAO">
     <!-- 사용자 매퍼 -->
     <resultMap id="myPageResult" type="Member">
         <result property="userId" column="user_id"/>
Add a comment
List