diff --git a/WebContent/jsp/onl/admin/rule/layoutSyncHistoryMan.jsp b/WebContent/jsp/onl/admin/rule/layoutSyncHistoryMan.jsp new file mode 100644 index 0000000..88072d7 --- /dev/null +++ b/WebContent/jsp/onl/admin/rule/layoutSyncHistoryMan.jsp @@ -0,0 +1,153 @@ +<%@ page language="java" contentType="text/html; charset=utf-8" %> +<%@ page import="java.io.*" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib uri="http://www.springframework.org/tags" prefix="spring" %> +<%@ include file="/jsp/common/include/localemessage.jsp" %> +<% + response.setHeader("Pragma", "No-cache"); + response.setHeader("Cache-Control", "no-cache"); + response.setHeader("Expires", "0"); +%> + + + + + + + + + +
+ +
+
+ +
+
레이아웃 연동 이력통합인터페이스와 연동된 전문 레이아웃 이력을 조회합니다.
+
+ + + + + + + + + + + + + +
레이아웃명연동시간 + + ~ + + + +
+
+
+
+
+
+ + diff --git a/WebContent/jsp/onl/admin/rule/layoutSyncHistoryManDetail.jsp b/WebContent/jsp/onl/admin/rule/layoutSyncHistoryManDetail.jsp new file mode 100644 index 0000000..c457eb3 --- /dev/null +++ b/WebContent/jsp/onl/admin/rule/layoutSyncHistoryManDetail.jsp @@ -0,0 +1,141 @@ +<%@ page language="java" contentType="text/html; charset=utf-8" %> +<%@ page import="java.io.*" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib uri="http://www.springframework.org/tags" prefix="spring" %> +<%@ include file="/jsp/common/include/localemessage.jsp" %> +<% + response.setHeader("Pragma", "No-cache"); + response.setHeader("Cache-Control", "no-cache"); + response.setHeader("Expires", "0"); +%> + + + + + + + + + + +
+ +
+
+ +
+
레이아웃 연동 이력 상세
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
No
Service NameCommand
레이아웃명연동시간
결과결과메세지
수신데이타 +
+ +
+
+
+
+
+ + diff --git a/src/main/java/com/eactive/eai/rms/data/entity/onl/layoutsync/history/LayoutSyncHistoryEntity.java b/src/main/java/com/eactive/eai/rms/data/entity/onl/layoutsync/history/LayoutSyncHistoryEntity.java new file mode 100644 index 0000000..b5c3ca8 --- /dev/null +++ b/src/main/java/com/eactive/eai/rms/data/entity/onl/layoutsync/history/LayoutSyncHistoryEntity.java @@ -0,0 +1,76 @@ +package com.eactive.eai.rms.data.entity.onl.layoutsync.history; + +import java.io.Serializable; +import java.time.LocalDateTime; + +import javax.persistence.Column; +import javax.persistence.Convert; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Lob; +import javax.persistence.Table; + +import org.hibernate.annotations.Comment; + +import com.eactive.eai.data.converter.LocalDateTimeToStringConverter16; +import com.eactive.eai.data.entity.AbstractEntity; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NonNull; + +@Data +@EqualsAndHashCode(onlyExplicitlyIncluded = true, callSuper = false) + +@Entity +@Table(name = "tseaitr10") +@org.hibernate.annotations.Table(appliesTo = "tseaitr10", comment = "레이아웃 연동 이력") +public class LayoutSyncHistoryEntity extends AbstractEntity implements Serializable { + + private static final long serialVersionUID = 1L; + + @Id + @EqualsAndHashCode.Include + @Column(nullable = false) + @Comment("일련번호") + private Long seqno; + + @Column(length = 36) + @Comment("연동로그처리일련번호") + private String logprcssseqno; + + @Column(length = 100) + @Comment("서비스명") + private String servicename; + + @Column(length = 20) + @Comment("커맨드") + private String command; + + @Column(length = 50) + @Comment("레이아웃 명") + private String loutname; + + @Lob + @Comment("수신 데이터") + private String recvdata; + + @Column(length = 16) + @Comment("연동 시각") + @Convert(converter = LocalDateTimeToStringConverter16.class) + private LocalDateTime recvamndhms; + + @Column(length = 1) + @Comment("처리 결과") + private String prcssrslt; + + @Column(length = 4000) + @Comment("처리 결과 메세지") + private String prcssrsltcmnt; + + @Override + public @NonNull Long getId() { + return seqno; + } + +} diff --git a/src/main/java/com/eactive/eai/rms/data/entity/onl/layoutsync/history/LayoutSyncHistoryRepository.java b/src/main/java/com/eactive/eai/rms/data/entity/onl/layoutsync/history/LayoutSyncHistoryRepository.java new file mode 100644 index 0000000..ffd4ba7 --- /dev/null +++ b/src/main/java/com/eactive/eai/rms/data/entity/onl/layoutsync/history/LayoutSyncHistoryRepository.java @@ -0,0 +1,7 @@ +package com.eactive.eai.rms.data.entity.onl.layoutsync.history; + +import com.eactive.eai.data.jpa.BaseRepository; + +interface LayoutSyncHistoryRepository extends BaseRepository { + +} diff --git a/src/main/java/com/eactive/eai/rms/data/entity/onl/layoutsync/history/LayoutSyncHistoryService.java b/src/main/java/com/eactive/eai/rms/data/entity/onl/layoutsync/history/LayoutSyncHistoryService.java new file mode 100644 index 0000000..a32c6f3 --- /dev/null +++ b/src/main/java/com/eactive/eai/rms/data/entity/onl/layoutsync/history/LayoutSyncHistoryService.java @@ -0,0 +1,77 @@ +package com.eactive.eai.rms.data.entity.onl.layoutsync.history; + +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; +import java.util.List; +import java.util.stream.Collectors; + +import org.apache.commons.lang3.StringUtils; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageImpl; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import com.eactive.eai.data.jpa.AbstractDataService; +import com.eactive.eai.rms.onl.manage.rule.layoutsync.history.ui.LayoutSyncHistoryUI; +import com.eactive.eai.rms.onl.manage.rule.layoutsync.history.ui.LayoutSyncHistoryUISearch; +import com.querydsl.jpa.impl.JPAQuery; + +@Service +@Transactional +public class LayoutSyncHistoryService extends AbstractDataService { + + private static final DateTimeFormatter FMT_YYYYMMDD = DateTimeFormatter.ofPattern("yyyyMMdd"); + private static final DateTimeFormatter FMT_DATETIME = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + + public Page selectList(Pageable pageable, LayoutSyncHistoryUISearch search) { + QLayoutSyncHistoryEntity q = QLayoutSyncHistoryEntity.layoutSyncHistoryEntity; + JPAQuery query = getJPAQueryFactory().from(q); + + if (StringUtils.isNotBlank(search.getSearchLoutName())) { + query.where(q.loutname.containsIgnoreCase(search.getSearchLoutName())); + } + if (StringUtils.isNotBlank(search.getSearchStartDate())) { + query.where(q.recvamndhms.goe(parseYYYYMMDD(search.getSearchStartDate()).atStartOfDay())); + } + if (StringUtils.isNotBlank(search.getSearchEndDate())) { + query.where(q.recvamndhms.loe(parseYYYYMMDD(search.getSearchEndDate()).atTime(23, 59, 59))); + } + + long totalCount = query.select(q.count()).fetchOne(); + + if (pageable.isPaged()) { + query.limit(pageable.getPageSize()).offset(pageable.getOffset()); + } + + List entities = query.select(q) + .orderBy(q.recvamndhms.desc(), q.seqno.desc()) + .fetch(); + + List rows = entities.stream().map(this::convertToUI).collect(Collectors.toList()); + + return new PageImpl<>(rows, pageable, totalCount); + } + + public LayoutSyncHistoryUI selectDetail(Long seqno) { + return convertToUI(getById(seqno)); + } + + private static LocalDate parseYYYYMMDD(String yyyyMMdd) { + return LocalDate.parse(yyyyMMdd, FMT_YYYYMMDD); + } + + private LayoutSyncHistoryUI convertToUI(LayoutSyncHistoryEntity e) { + LayoutSyncHistoryUI ui = new LayoutSyncHistoryUI(); + ui.setSeqno(e.getSeqno()); + ui.setServiceName(e.getServicename()); + ui.setCommand(e.getCommand()); + ui.setLoutName(e.getLoutname()); + ui.setRecvAmndHms(e.getRecvamndhms() == null ? "" : e.getRecvamndhms().format(FMT_DATETIME)); + ui.setPrcssRslt(e.getPrcssrslt()); + ui.setPrcssRsltCmnt(e.getPrcssrsltcmnt()); + ui.setRecvData(e.getRecvdata()); + return ui; + } + +} diff --git a/src/main/java/com/eactive/eai/rms/onl/manage/rule/layoutsync/history/LayoutSyncHistoryController.java b/src/main/java/com/eactive/eai/rms/onl/manage/rule/layoutsync/history/LayoutSyncHistoryController.java new file mode 100644 index 0000000..36a8b32 --- /dev/null +++ b/src/main/java/com/eactive/eai/rms/onl/manage/rule/layoutsync/history/LayoutSyncHistoryController.java @@ -0,0 +1,45 @@ +package com.eactive.eai.rms.onl.manage.rule.layoutsync.history; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; + +import com.eactive.eai.rms.common.base.OnlBaseAnnotationController; +import com.eactive.eai.rms.common.vo.GridResponse; +import com.eactive.eai.rms.data.entity.onl.layoutsync.history.LayoutSyncHistoryService; +import com.eactive.eai.rms.onl.manage.rule.layoutsync.history.ui.LayoutSyncHistoryUI; +import com.eactive.eai.rms.onl.manage.rule.layoutsync.history.ui.LayoutSyncHistoryUISearch; + +@Controller +public class LayoutSyncHistoryController extends OnlBaseAnnotationController { + + @Autowired + private LayoutSyncHistoryService service; + + @GetMapping(value = "/onl/admin/rule/layoutSyncHistoryMan.view") + public void view() { + // 목록 view + } + + @GetMapping(value = "/onl/admin/rule/layoutSyncHistoryMan.view", params = "cmd=DETAIL") + public String detailView() { + return "/onl/admin/rule/layoutSyncHistoryManDetail"; + } + + @PostMapping(value = "/onl/admin/rule/layoutSyncHistoryMan.json", params = "cmd=LIST") + public ResponseEntity> selectList(Pageable pageable, + LayoutSyncHistoryUISearch search) { + Page page = service.selectList(pageable, search); + return ResponseEntity.ok(new GridResponse<>(page)); + } + + @PostMapping(value = "/onl/admin/rule/layoutSyncHistoryMan.json", params = "cmd=DETAIL") + public ResponseEntity selectDetail(Long seqno) { + return ResponseEntity.ok(service.selectDetail(seqno)); + } + +} diff --git a/src/main/java/com/eactive/eai/rms/onl/manage/rule/layoutsync/history/ui/LayoutSyncHistoryUI.java b/src/main/java/com/eactive/eai/rms/onl/manage/rule/layoutsync/history/ui/LayoutSyncHistoryUI.java new file mode 100644 index 0000000..dfb6237 --- /dev/null +++ b/src/main/java/com/eactive/eai/rms/onl/manage/rule/layoutsync/history/ui/LayoutSyncHistoryUI.java @@ -0,0 +1,17 @@ +package com.eactive.eai.rms.onl.manage.rule.layoutsync.history.ui; + +import lombok.Data; + +@Data +public class LayoutSyncHistoryUI { + + private Long seqno; + private String serviceName; + private String command; + private String loutName; + private String recvAmndHms; + private String prcssRslt; + private String prcssRsltCmnt; + private String recvData; + +} diff --git a/src/main/java/com/eactive/eai/rms/onl/manage/rule/layoutsync/history/ui/LayoutSyncHistoryUISearch.java b/src/main/java/com/eactive/eai/rms/onl/manage/rule/layoutsync/history/ui/LayoutSyncHistoryUISearch.java new file mode 100644 index 0000000..5dc072c --- /dev/null +++ b/src/main/java/com/eactive/eai/rms/onl/manage/rule/layoutsync/history/ui/LayoutSyncHistoryUISearch.java @@ -0,0 +1,14 @@ +package com.eactive.eai.rms.onl.manage.rule.layoutsync.history.ui; + +import lombok.Data; + +@Data +public class LayoutSyncHistoryUISearch { + + private String searchLoutName; + + /* 연동시간 기간 검색 (yyyyMMdd, 8자리) */ + private String searchStartDate; + private String searchEndDate; + +}