shjung 2 tahun lalu
induk
melakukan
f87e9d1e8d

+ 11 - 0
src/main/java/com/its/op/controller/its/history/TbUserCnncHsController.java

@@ -1,5 +1,6 @@
 package com.its.op.controller.its.history;
 
+import com.its.op.dto.its.oper.FmsUserCnncHsDto;
 import com.its.op.dto.its.oper.TbUserCnncHsDto;
 import com.its.op.service.its.oper.TbUserCnncHsService;
 import io.swagger.annotations.Api;
@@ -33,4 +34,14 @@ public class TbUserCnncHsController {
         return service.findAllByDateRange(FROM_DT, TO_DT);
     }
 
+    @ApiOperation(value = "시설관리시스템 사용자접속이력 전체조회(TB_USERCNNC_HS)", response = FmsUserCnncHsDto.class, responseContainer = "ArrayList")
+    @GetMapping(value = "/fms", produces = {"application/json; charset=utf8"})
+    public List<FmsUserCnncHsDto> findAllFmsByDateRange(
+            @ApiParam(name = "FROM_DT", value = "조회시작시각(YYYYMMDDHH24MI00)", example = "20220119135000", required = true)
+            @RequestParam String FROM_DT,
+            @ApiParam(name = "TO_DT", value = "조회종료시각(YYYYMMDDHH24MI59)", example = "20220208122859", required = true)
+            @RequestParam String TO_DT) {
+        return service.findAllFmsByDateRange(FROM_DT, TO_DT);
+    }
+
 }

+ 3 - 0
src/main/java/com/its/op/dao/repository/its/oper/TbUserCnncHsRepository.java

@@ -40,4 +40,7 @@ public interface TbUserCnncHsRepository extends JpaRepository<TbUserCnncHs, TbUs
             " where login_hms = :loginHms and user_id = :userId",
             nativeQuery = true)
     Integer updateData(@Param("loginHms") String loginHms, @Param("userId") String userId, @Param("logoutHms") String logoutHms);
+
+    @Query("select p from TbUserCnncHs p left outer join p.user where p.operSystId = 'FMS' and p.loginHms between :fromDt and :toDt")
+    List<TbUserCnncHs> findAllFmsByDateRange(@Param("fromDt") String fromDt, @Param("toDt") String toDt);
 }

+ 75 - 0
src/main/java/com/its/op/dto/its/oper/FmsUserCnncHsDto.java

@@ -0,0 +1,75 @@
+package com.its.op.dto.its.oper;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 사용자접속이력 DTO Class
+ */
+@Data
+@AllArgsConstructor
+@Builder
+@ApiModel("FmsUserCnncHsDto(시설물관리시스템 사용자접속이력)")
+public class FmsUserCnncHsDto implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("운영시스템ID(WEB:웹관리자로그인)")  // N VARCHAR2(7)
+    @JsonProperty("oper_syst_id")
+    private String operSystId;
+
+    @ApiModelProperty("로그인시각")  // N VARCHAR2(14)
+    @JsonProperty("login_hms")
+    private String loginHms;
+
+    @ApiModelProperty("사용자ID(웹사용자 email)")  // N VARCHAR2(50)
+    @JsonProperty("user_id")
+    private String userId;
+
+    @ApiModelProperty("로그아웃시각")  // Y VARCHAR2(14)
+    @JsonProperty("logout_hms")
+    private String logoutHms;
+
+    // TbUserInfr
+    @ApiModelProperty("이름")  // Y VARCHAR2(30)
+    @JsonProperty("name")
+    private String name;
+
+    @ApiModelProperty("회사명")  // Y VARCHAR2(100)
+    @JsonProperty("comp")
+    private String comp;
+
+    @ApiModelProperty("부서명")  // Y VARCHAR2(100)
+    @JsonProperty("dept_name")
+    private String deptName;
+
+    @ApiModelProperty("직위(직급)명")  // Y VARCHAR2(14)
+    @JsonProperty("pos_name")
+    private String posName;
+
+    @ApiModelProperty("이메일주소")  // Y VARCHAR2(128)
+    @JsonProperty("email")
+    private String email;
+
+    @ApiModelProperty("전화번호")  // Y VARCHAR2(30)
+    @JsonProperty("tel")
+    private String tel;
+
+    @ApiModelProperty("이동전화번호")  // Y VARCHAR2(30)
+    @JsonProperty("mobile")
+    private String mobile;
+
+    @ApiModelProperty("입사일자")  // Y VARCHAR2(8)
+    @JsonProperty("ent_dt")
+    private String entDt;
+
+    @ApiModelProperty("기타")  // Y VARCHAR2(512)
+    @JsonProperty("emp_etc")
+    private String empEtc;
+
+}

+ 37 - 1
src/main/java/com/its/op/entity/its/oper/TbUserCnncHs.java

@@ -1,9 +1,15 @@
 package com.its.op.entity.its.oper;
 
+import com.its.op.dto.its.oper.FmsUserCnncHsDto;
 import com.its.op.dto.its.oper.TbUserCnncHsDto;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
-import lombok.*;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import org.hibernate.annotations.NotFound;
+import org.hibernate.annotations.NotFoundAction;
 
 import javax.persistence.*;
 import java.io.Serializable;
@@ -41,6 +47,11 @@ public class TbUserCnncHs implements Serializable {
     @Column(name = "LOGOUT_HMS", length = 14)
     private String logoutHms;
 
+    @OneToOne
+    @JoinColumn(insertable=false, updatable=false, name="USER_ID", referencedColumnName = "USER_ID")
+    @NotFound(action = NotFoundAction.IGNORE)
+    private TbUserInfr user;
+
     public TbUserCnncHsDto toDto() {
         return TbUserCnncHsDto.builder()
                 .operSystId(this.operSystId)
@@ -50,4 +61,29 @@ public class TbUserCnncHs implements Serializable {
                 .build();
     }
 
+    /**
+     * 시서물 관리자 상태이력 Dto 변환
+     * @return 시설물 관리자 상태이력 Dto
+     */
+    public FmsUserCnncHsDto toFmsDto() {
+        FmsUserCnncHsDto dto = FmsUserCnncHsDto.builder()
+                .operSystId(this.operSystId)
+                .loginHms(this.loginHms)
+                .userId(this.userId)
+                .logoutHms(this.logoutHms)
+                .build();
+
+        if (this.user != null) {
+            dto.setName(this.user.getName());
+            dto.setComp(this.user.getComp());
+            dto.setDeptName(this.user.getDeptName());
+            dto.setPosName(this.user.getPosName());
+            dto.setEmail(this.user.getEmail());
+            dto.setTel(this.user.getTel());
+            dto.setMobile(this.user.getMobile());
+            dto.setEntDt(this.user.getEntDt());
+            dto.setEmpEtc(this.user.getEmpEtc());
+        }
+        return dto;
+    }
 }

+ 16 - 1
src/main/java/com/its/op/service/its/oper/TbUserCnncHsService.java

@@ -1,11 +1,13 @@
 package com.its.op.service.its.oper;
 
+import com.its.op.dao.repository.its.oper.TbUserCnncHsRepository;
+import com.its.op.dto.its.oper.FmsUserCnncHsDto;
 import com.its.op.dto.its.oper.TbUserCnncHsDto;
 import com.its.op.entity.its.oper.TbUserCnncHs;
-import com.its.op.dao.repository.its.oper.TbUserCnncHsRepository;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -17,6 +19,7 @@ public class TbUserCnncHsService {
 
     private final TbUserCnncHsRepository repo;
 
+    @Transactional(readOnly = true)
     public List<TbUserCnncHsDto> findAllByDateRange(String from_dt, String to_dt) {
         List<TbUserCnncHsDto> result = new ArrayList<>();
         List<TbUserCnncHs> data = repo.findAllByDateRange(from_dt, to_dt);
@@ -27,4 +30,16 @@ public class TbUserCnncHsService {
         }
         return result;
     }
+
+    @Transactional(readOnly = true)
+    public List<FmsUserCnncHsDto> findAllFmsByDateRange(String from_dt, String to_dt) {
+        List<FmsUserCnncHsDto> result = new ArrayList<>();
+        List<TbUserCnncHs> data = repo.findAllFmsByDateRange(from_dt, to_dt);
+        if (data != null) {
+            data.forEach(obj -> {
+                result.add(obj.toFmsDto());
+            });
+        }
+        return result;
+    }
 }