Sample Update

This commit is contained in:
keymasroy
2021-12-21 20:49:14 +09:00
parent b342ff91ab
commit d600487e75
13 changed files with 471 additions and 163 deletions

View File

@@ -1,28 +0,0 @@
package sample.ustraframework.java.bo.sample;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import com.gsitm.ustra.java.data.domains.PaginationList;
import com.gsitm.ustra.java.mvc.rest.utils.UstraRestUtils;
@RestController
public class SampleController {
@Autowired SampleService service;
// @GetMapping("/api/test")
// public SampleResVo test() {
// SampleResVo vo = new SampleResVo();
// vo.setTest("test");
// return vo;
// }
@PostMapping("/api/sample/paging")
PaginationList<SampleModel> getCodeList(@RequestBody SampleModel.Criteria criteria) {
return service.getCodes(UstraRestUtils.getCurrentApiHeader(), criteria);
}
}

View File

@@ -1,48 +0,0 @@
package sample.ustraframework.java.bo.sample;
import java.time.LocalDateTime;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
@Data
@SuperBuilder
@EqualsAndHashCode(callSuper=false)
@NoArgsConstructor
@AllArgsConstructor
public class SampleModel {
private String grpCd;
private String dtlCd;
private String cdNm;
private String cdDesc;
private String useYn;
private String rmk;
private LocalDateTime regDttm;
private String regUsrId;
private String regUsrIp;
private LocalDateTime updDttm;
private String updUsrId;
private String updUsrIp;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public static class Criteria {
private SearchValue searchValue;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public static class SearchValue {
private String grpCd;
private String dtlCd;
}
}
}

View File

@@ -1,13 +0,0 @@
package sample.ustraframework.java.bo.sample;
import org.apache.ibatis.annotations.Mapper;
import com.gsitm.ustra.java.data.domains.PaginationList;
import com.gsitm.ustra.java.data.domains.PaginationRequest;
@Mapper
public interface SampleRepository {
PaginationList<SampleModel> select(PaginationRequest pagination, SampleModel.Criteria criteria);
}

View File

@@ -1,8 +0,0 @@
package sample.ustraframework.java.bo.sample;
import lombok.Data;
@Data
public class SampleResVo {
private String test;
}

View File

@@ -1,19 +0,0 @@
package sample.ustraframework.java.bo.sample;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.gsitm.ustra.java.data.domains.PaginationList;
import com.gsitm.ustra.java.data.domains.PaginationRequest;
@Service
@Transactional
public class SampleService {
@Autowired private SampleRepository sampleRepository;
public PaginationList<SampleModel> getCodes(PaginationRequest pagination, SampleModel.Criteria criteria) {
return sampleRepository.select(pagination, criteria);
};
}

View File

@@ -0,0 +1,59 @@
package sample.ustraframework.java.bo.sample.crud;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.gsitm.ustra.java.data.domains.PaginationList;
import com.gsitm.ustra.java.mvc.handler.resolver.JsonStringParameter;
@RestController
@RequestMapping("/api/sample/crud-code")
public class SampleCrudController {
@Autowired private SampleCrudService sampleCrudService;
@GetMapping("")
PaginationList<SampleCrudModel> getCodeList(@JsonStringParameter SampleCrudModel.Criteria criteria) {
return sampleCrudService.getList(criteria);
}
@GetMapping("/groups")
List<SampleCrudModel> getCodeGroups() {
return sampleCrudService.getGroups();
}
@GetMapping("/{grpCd}/{dtlCd}")
SampleCrudModel getCode(@PathVariable String grpCd, @PathVariable String dtlCd) {
return sampleCrudService.get(
SampleCrudModel.builder()
.grpCd(grpCd)
.dtlCd(dtlCd)
.build());
}
@PostMapping("")
SampleCrudModel add(@RequestBody SampleCrudModel code) {
return sampleCrudService.add(code);
}
@PutMapping("")
SampleCrudModel edit(@RequestBody SampleCrudModel code) {
return sampleCrudService.edit(code);
}
@DeleteMapping("")
SampleCrudModel remove(@RequestBody SampleCrudModel code) {
return sampleCrudService.remove(code);
}
}

View File

@@ -0,0 +1,57 @@
package sample.ustraframework.java.bo.sample.crud;
import java.util.List;
import org.apache.ibatis.annotations.Mapper;
import com.gsitm.ustra.java.data.domains.PaginationList;
import com.gsitm.ustra.java.data.domains.PaginationRequest;
@Mapper
public interface SampleCrudMapper {
/**
* 코드 목록 조회
* @param pagination 페이징 요청 정보
* @param criteria 검색 조건
* @return 코드 목록
*/
PaginationList<SampleCrudModel> select(PaginationRequest pagination, SampleCrudModel.Criteria criteria);
/**
* 코드 그룹 목록 조회
* @return 코드 목록
*/
List<SampleCrudModel> selectGroups();
/**
* 코드 상세 조회
* @param criteria 검색 조건
* @return 코드 정보
*/
SampleCrudModel selectDetail(SampleCrudModel criteria);
/**
* 코드 입력
* @param code 코드 정보
* @return 입력 건수
*/
int insert(SampleCrudModel code);
/**
* 코드 수정
* @param code 코드 정보
* @return 수정 건수
*/
int update(SampleCrudModel code);
/**
* 코드 삭제
* @param code 코드 정보
* @return 삭제 건수
*/
int delete(SampleCrudModel code);
}

View File

@@ -0,0 +1,97 @@
package sample.ustraframework.java.bo.sample.crud;
import javax.validation.constraints.NotEmpty;
import com.gsitm.ustra.java.data.domains.PaginationRequest;
import com.gsitm.ustra.java.data.validation.CrudGroups;
import com.gsitm.ustra.java.management.models.base.UstraManagementBaseModel;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
@Data
@EqualsAndHashCode(callSuper = false)
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
public class SampleCrudModel extends UstraManagementBaseModel {
/**
* 그룹 코드
*/
@NotEmpty(message = "그룹코드는 필수 값입니다.", groups = {
CrudGroups.Detail.class,
CrudGroups.Add.class,
CrudGroups.Edit.class,
CrudGroups.Remove.class
})
private String grpCd;
/**
* 상세 코드
*/
@NotEmpty(message = "상세코드는 필수 값입니다.", groups = {
CrudGroups.Detail.class,
CrudGroups.Add.class,
CrudGroups.Edit.class,
CrudGroups.Remove.class
})
private String dtlCd;
/**
* 코드 명
*/
@NotEmpty(message = "코드명은 필수 값입니다.", groups = {
CrudGroups.Add.class,
CrudGroups.Edit.class
})
private String cdNm;
/**
* 코드 상세 내용
*/
private String cdDesc;
/**
* 사용 여부
*/
@NotEmpty(message = "사용여부는 필수 값입니다.", groups = {
CrudGroups.Add.class,
CrudGroups.Edit.class
})
private String useYn;
/**
* 비고
*/
private String rmk;
/**
* 조건
* @author keymasroy<keymasroy@gsitm.com>
*
*/
@Data
public static class Criteria {
/**
* 사용 여부
*/
private String useYn;
/**
* 그룹 코드
*/
private String grpCd;
/**
* 페이징 요청 정보
*/
private PaginationRequest paginationRequest;
}
}

View File

@@ -0,0 +1,96 @@
package sample.ustraframework.java.bo.sample.crud;
import java.util.List;
import javax.validation.Valid;
import javax.validation.groups.ConvertGroup;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
import com.gsitm.ustra.java.data.domains.PaginationList;
import com.gsitm.ustra.java.data.exception.UstraDataResponseCode;
import com.gsitm.ustra.java.data.validation.CrudGroups;
@Service
@Validated
@Transactional
public class SampleCrudService {
@Autowired private SampleCrudMapper sampleCrudMapper;
/**
* 코드 페이징 목록 조회
* @param pagination 페이징 요청 정보
* @param criteria 검색 조건
* @return 코드 목록
*/
public PaginationList<SampleCrudModel> getList(SampleCrudModel.Criteria criteria) {
return sampleCrudMapper.select(criteria.getPaginationRequest(), criteria);
}
/**
* 코드 그룹 목록 조회
* @return 코드 목록
*/
public List<SampleCrudModel> getGroups() {
return sampleCrudMapper.selectGroups();
}
/**
* 코드 상세 정보 조회
* @param criteria 검색 조건
* @return 코드 정보
*/
public SampleCrudModel get(@ConvertGroup(to=CrudGroups.Detail.class) @Valid SampleCrudModel criteria) {
return sampleCrudMapper.selectDetail(criteria);
}
/**
* 코드 입력
* @param code 입력 정보
* @return 입력 코드 정보
*/
public SampleCrudModel add(@ConvertGroup(to=CrudGroups.Add.class) @Valid SampleCrudModel code) {
int result = sampleCrudMapper.insert(code);
if (result < 1) {
throw UstraDataResponseCode.CANNOT_SAVE_RECORD.exception();
}
return code;
}
/**
* 코드 수정
* @param code 수정 정보
* @return 수정 코드 정보
*/
public SampleCrudModel edit(@ConvertGroup(to=CrudGroups.Edit.class) @Valid SampleCrudModel code) {
int result = sampleCrudMapper.update(code);
if (result < 1) {
throw UstraDataResponseCode.CANNOT_SAVE_RECORD.exception();
}
return code;
}
/**
* 코드 삭제
* @param code 삭제 정보
* @return 삭제 코드 정보
*/
public SampleCrudModel remove(@ConvertGroup(to=CrudGroups.Remove.class) @Valid SampleCrudModel code) {
int result = sampleCrudMapper.delete(code);
if (result < 1) {
throw UstraDataResponseCode.CANNOT_DELETE_RECORD.exception();
}
return code;
}
}

View File

@@ -10,7 +10,7 @@ spring:
mybatis:
mapperLocations: classpath:/mapper/**/*.xml,classpath:/mapper2/**/*.xml
mapperLocations: classpath:/mapper/**/*.xml
type-aliases-package: com.gsitm.ustra.java.management.models
configuration:
jdbc-type-for-null: "NULL"
@@ -24,19 +24,6 @@ ustra:
core:
process-info:
default-system-code: BO
cache:
map:
additional-cache-names: USTRA-TEST-CACHE
caffeine:
caffeine-test:
maximum-size: 200
initial-capacity: 100
# refresh-seconds: 600
expire-after-write-seconds: 1800
expire-after-access-seconds: 1800
#eh:
# eh-test:
# config-location: classpath:/ehcache.xml
data:
procedure-manager:
enabled: true

View File

@@ -0,0 +1,134 @@
<?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="sample.ustraframework.java.bo.sample.crud.SampleCrudMapper">
<select id="select" resultType="sample.ustraframework.java.bo.sample.crud.SampleCrudModel">
SELECT
ROW_NUMBER() OVER (ORDER BY USE_YN) AS R_NUMBERS,
GRP_CD,
DTL_CD,
CD_NM,
CD_DESC,
RMK,
USE_YN,
REG_DTTM,
REG_USR_ID,
REG_USR_IP,
UPD_DTTM,
UPD_USR_ID,
UPD_USR_IP
FROM
USTRA_SAMPLE_CMM_CD
WHERE
1 = 1
AND GRP_CD = #{arg1.grpCd}
<if test="arg1.useYn != null and arg1.useYn != ''">
AND USE_YN = #{arg1.useYn}
</if>
</select>
<select id="selectGroups" resultType="sample.ustraframework.java.bo.sample.crud.SampleCrudModel">
SELECT
GRP_CD,
DTL_CD,
CD_NM,
CD_DESC
FROM
USTRA_SAMPLE_CMM_CD
WHERE DTL_CD = '*'
</select>
<select id="selectDetail" resultType="sample.ustraframework.java.bo.sample.crud.SampleCrudModel">
SELECT
GRP_CD,
DTL_CD,
CD_NM,
CD_DESC,
RMK,
USE_YN,
REG_DTTM,
REG_USR_ID,
REG_USR_IP,
UPD_DTTM,
UPD_USR_ID,
UPD_USR_IP
FROM
USTRA_SAMPLE_CMM_CD
WHERE GRP_CD = #{grpCd}
AND DTL_CD = #{dtlCd}
</select>
<select id="selectDetail2" resultType="sample.ustraframework.java.bo.sample.crud.SampleCrudModel">
SELECT
ROW_NUMBER() OVER (ORDER BY USE_YN) AS R_NUMBERS,
GRP_CD,
DTL_CD,
CD_NM,
CD_DESC,
RMK,
USE_YN,
REG_DTTM,
REG_USR_ID,
REG_USR_IP,
UPD_DTTM,
UPD_USR_ID,
UPD_USR_IP
FROM
USTRA_SAMPLE_CMM_CD
<!-- WHERE GRP_CD = #{arg0.grpCd}
AND DTL_CD = #{arg0.dtlCd} -->
</select>
<insert id="insert">
INSERT INTO USTRA_SAMPLE_CMM_CD (
GRP_CD,
DTL_CD,
CD_NM,
CD_DESC,
RMK,
USE_YN,
REG_DTTM,
REG_USR_ID,
REG_USR_IP,
UPD_DTTM,
UPD_USR_ID,
UPD_USR_IP
) VALUES (
#{grpCd},
#{dtlCd},
#{cdNm},
#{cdDesc},
#{rmk},
#{useYn},
CURRENT_TIMESTAMP,
#{regUsrId},
#{regUsrIp},
CURRENT_TIMESTAMP,
#{updUsrId},
#{updUsrIp}
)
</insert>
<update id="update">
UPDATE USTRA_SAMPLE_CMM_CD SET
CD_NM = #{cdNm},
CD_DESC = #{cdDesc},
RMK = #{rmk},
USE_YN = #{useYn},
UPD_DTTM = CURRENT_TIMESTAMP,
UPD_USR_ID = #{updUsrId},
UPD_USR_IP = #{updUsrIp}
WHERE GRP_CD = #{grpCd}
AND DTL_CD = #{dtlCd}
</update>
<delete id="delete">
DELETE USTRA_SAMPLE_CMM_CD
WHERE GRP_CD = #{grpCd}
AND DTL_CD = #{dtlCd}
</delete>
</mapper>

View File

@@ -1,28 +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="sample.ustraframework.java.bo.sample.SampleRepository">
<select id="select" parameterType="java.util.Map" resultType="sample.ustraframework.java.bo.sample.SampleModel">
SELECT
GRP_CD,
DTL_CD,
CD_NM,
CD_DESC,
RMK,
USE_YN,
REG_DTTM,
REG_USR_ID,
REG_USR_IP,
UPD_DTTM,
UPD_USR_ID,
UPD_USR_IP
FROM
USTRA_CMM_CD
WHERE
1 = 1
AND GRP_CD = #{arg1.searchValue.grpCd}
</select>
</mapper>

View File

@@ -1,8 +1,10 @@
buildscript {
ext {
springBootVersion = '2.2.5.RELEASE'
ustraVersion = '2.0.41.RELEASE'
set('springCloudVersion', "Hoxton.SR3")
// log4j2 버전 변경
set('log4j2.version', '2.15.0')
}
repositories {
@@ -18,6 +20,19 @@ buildscript {
}
}
// configuration setting version
configurations.all {
resolutionStrategy.eachDependency { DependencyResolveDetails details ->
if (details.requested.group == 'ch.qos.logback') {
details.useVersion '1.2.9'
}
if (details.requested.group == 'org.apache.logging.log4j') {
details.useVersion '2.15.0'
}
}
}
allprojects {
group = 'sample.ustraframework.java'
version = '0.0.1-SNAPSHOT'
@@ -34,13 +49,14 @@ subprojects {
sourceCompatibility = 1.8
targetCompatibility = 1.8
eclipse {
classpath { downloadSources=true }
}
eclipse {
classpath { downloadSources=true }
}
ext {
set('springCloudVersion', "Hoxton.SR3")
ustraVersion = '2.0.50.8-SNAPSHOT'
}
@@ -71,12 +87,18 @@ subprojects {
}
dependencies {
implementation 'ch.qos.logback:logback-core:1.2.9'
implementation 'ch.qos.logback:logback-classic:1.2.9'
implementation 'org.apache.logging.log4j:log4j-to-slf4j:2.15.0'
implementation 'org.apache.logging.log4j:log4j-api:2.15.0'
implementation 'org.springframework.boot:spring-boot-starter'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
compileOnly 'org.projectlombok:lombok'
compileOnly 'org.springframework.boot:spring-boot-devtools'
compile 'org.springframework.boot:spring-boot-starter-aop'
annotationProcessor 'org.springframework.boot:spring-boot-configuration-processor'