Browse Source

승인시 문자전송

pull/10/head
지대한 12 months ago
parent
commit
57f0eb7e05
  1. 23
      pav-server/src/main/java/com/palnet/biz/api/bas/laanc/service/BasLaancService.java
  2. 1
      pav-server/src/main/java/com/palnet/biz/api/comn/file/model/LaancPdfModel.java
  3. 36
      pav-server/src/main/java/com/palnet/biz/api/comn/sms/model/ComnSmsLaancAprovModel.java
  4. 28
      pav-server/src/main/java/com/palnet/biz/api/comn/sms/service/ComnSmsMapper.java
  5. 108
      pav-server/src/main/java/com/palnet/biz/api/comn/sms/service/ComnSmsService.java
  6. 3
      pav-server/src/main/java/com/palnet/biz/jpa/entity/SuredataEntity.java
  7. 16
      pav-server/src/main/resources/templates/sms/SmsLaancAprov.txt

23
pav-server/src/main/java/com/palnet/biz/api/bas/laanc/service/BasLaancService.java

@ -6,6 +6,8 @@ import com.palnet.biz.api.acnt.jwt.utils.JwtTokenUtil;
import com.palnet.biz.api.bas.laanc.model.*; import com.palnet.biz.api.bas.laanc.model.*;
import com.palnet.biz.api.comn.file.model.LaancPdfModel; import com.palnet.biz.api.comn.file.model.LaancPdfModel;
import com.palnet.biz.api.comn.file.service.ComnFileService; import com.palnet.biz.api.comn.file.service.ComnFileService;
import com.palnet.biz.api.comn.sms.model.ComnSmsLaancAprovModel;
import com.palnet.biz.api.comn.sms.service.ComnSmsService;
import com.palnet.biz.api.external.model.PilotValidRq; import com.palnet.biz.api.external.model.PilotValidRq;
import com.palnet.biz.api.external.model.PilotValidRs; import com.palnet.biz.api.external.model.PilotValidRs;
import com.palnet.biz.api.external.service.TsService; import com.palnet.biz.api.external.service.TsService;
@ -64,6 +66,7 @@ public class BasLaancService {
private final TsService tsService; private final TsService tsService;
private final CtrTrnsLctnService ctrTrnsLctnService; private final CtrTrnsLctnService ctrTrnsLctnService;
private final ComnFileService comnFileService; private final ComnFileService comnFileService;
private final ComnSmsService comnSmsService;
private final JwtTokenUtil jwtTokenUtil; private final JwtTokenUtil jwtTokenUtil;
private final AreaUtils areaUtils; private final AreaUtils areaUtils;
@ -291,6 +294,26 @@ public class BasLaancService {
String sb = FILE_DOWNLOAD_URL + "?fileSno=" + comFileBas.getFileSno(); String sb = FILE_DOWNLOAD_URL + "?fileSno=" + comFileBas.getFileSno();
// SMS 전송
try {
ComnSmsLaancAprovModel comnSmsLaancAprovModel = new ComnSmsLaancAprovModel();
comnSmsLaancAprovModel.setPilotName(cstmrInfo.getMemberName());
comnSmsLaancAprovModel.setCallphone(cstmrInfo.getHpno());
comnSmsLaancAprovModel.setSchFltStDt(InstantUtils.toDatetimeStringByFormat(rq.getSchFltStDt(), "yyyy년 MM월 dd일 HH시 mm분"));
comnSmsLaancAprovModel.setSchFltEndDt(InstantUtils.toDatetimeStringByFormat(rq.getSchFltEndDt(), "yyyy년 MM월 dd일 HH시 mm분"));
comnSmsLaancAprovModel.setFltPurpose(rq.getFltPurpose().getValue());
comnSmsLaancAprovModel.setAddress(address);
if (rq.getAreaList() != null && !rq.getAreaList().isEmpty()) {
comnSmsLaancAprovModel.setElev(rq.getAreaList().get(0).getFltElev());
}
comnSmsService.sendLaancAprovSms(comnSmsLaancAprovModel);
} catch (Exception e){
log.error("ERROR: ", e);
}
BasLaancLastRs rs = BasLaancLastRs.builder() BasLaancLastRs rs = BasLaancLastRs.builder()
.pdfUrl(sb) .pdfUrl(sb)

1
pav-server/src/main/java/com/palnet/biz/api/comn/file/model/LaancPdfModel.java

@ -9,7 +9,6 @@ import lombok.*;
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
public class LaancPdfModel extends PdfBaseModel { public class LaancPdfModel extends PdfBaseModel {
// TODO : 아직 파라미터가 정해지지 않음
private String pilotName; // 조종사 이름 private String pilotName; // 조종사 이름
private String birthDate; // 조종사 생년월일 private String birthDate; // 조종사 생년월일
private String schFltStDt; // 비행시작일시 private String schFltStDt; // 비행시작일시

36
pav-server/src/main/java/com/palnet/biz/api/comn/sms/model/ComnSmsLaancAprovModel.java

@ -0,0 +1,36 @@
package com.palnet.biz.api.comn.sms.model;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* packageName : com.palnet.biz.api.comn.sms.model
* fileName : ComnSmsLaancAprov
* author : dhji
* date : 2023-10-06(006)
* description :
* ===========================================================
* DATE AUTHOR NOTE
* -----------------------------------------------------------
* 2023-10-06(006) dhji 최초 생성
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class ComnSmsLaancAprovModel {
private String callphone; // 수신번호
private String pilotName; // 조종사 이름
// private String birthDate; // 조종사 생년월일
private String schFltStDt; // 비행시작일시
private String schFltEndDt; // 비행종료일시
private String fltPurpose; // 비행목적
// private String arcrftType; // 등록 종류
// private String idntfNum; // 신고번호
private String address; // 주소
private String elev; // 고도
// private String createDt; // 신청일자
}

28
pav-server/src/main/java/com/palnet/biz/api/comn/sms/service/ComnSmsMapper.java

@ -0,0 +1,28 @@
package com.palnet.biz.api.comn.sms.service;
import com.palnet.biz.api.bas.laanc.service.BasLaancMapper;
import com.palnet.biz.api.comn.sms.model.ComnSmsLaancAprovModel;
import com.palnet.biz.jpa.entity.SuredataEntity;
import org.mapstruct.Mapper;
import org.mapstruct.NullValuePropertyMappingStrategy;
import org.mapstruct.ReportingPolicy;
import org.mapstruct.factory.Mappers;
/**
* packageName : com.palnet.biz.api.comn.sms.service
* fileName : ComnSmsMapper
* author : dhji
* date : 2023-10-06(006)
* description :
* ===========================================================
* DATE AUTHOR NOTE
* -----------------------------------------------------------
* 2023-10-06(006) dhji 최초 생성
*/
@Mapper(unmappedSourcePolicy = ReportingPolicy.IGNORE, unmappedTargetPolicy = ReportingPolicy.IGNORE, nullValuePropertyMappingStrategy = NullValuePropertyMappingStrategy.IGNORE)
public interface ComnSmsMapper {
ComnSmsMapper MAPPER = Mappers.getMapper(ComnSmsMapper.class);
SuredataEntity toEntity(ComnSmsLaancAprovModel model);
}

108
pav-server/src/main/java/com/palnet/biz/api/comn/sms/service/ComnSmsService.java

@ -0,0 +1,108 @@
package com.palnet.biz.api.comn.sms.service;
import com.palnet.biz.api.comn.sms.model.ComnSmsLaancAprovModel;
import com.palnet.biz.jpa.entity.SuredataEntity;
import com.palnet.biz.jpa.repository.pty.SuredataRepository;
import com.palnet.comn.utils.InstantUtils;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.core.io.ClassPathResource;
import org.springframework.stereotype.Service;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;
import java.time.Instant;
/**
* packageName : com.palnet.biz.api.comn.sms.service
* fileName : ComnSmsService
* author : dhji
* date : 2023-10-06(006)
* description :
* ===========================================================
* DATE AUTHOR NOTE
* -----------------------------------------------------------
* 2023-10-06(006) dhji 최초 생성
*/
@Slf4j
@RequiredArgsConstructor
@Service
public class ComnSmsService {
private final SuredataRepository suredataRepository;
public void sendLaancAprovSms(ComnSmsLaancAprovModel model) {
log.info("sendSms : {}", model);
ClassPathResource resource = new ClassPathResource("templates/sms/SmsLaancAprov.txt");
String template = "";
try(BufferedReader br = new BufferedReader(new InputStreamReader(resource.getInputStream(), StandardCharsets.UTF_8))){
StringBuilder stringBuilder = new StringBuilder();
String line;
boolean firstLine = true; // 첫 번째 줄은 개행 문자를 추가하지 않음
while ((line = br.readLine()) != null) {
if (firstLine) {
firstLine = false;
} else {
stringBuilder.append("\n"); // 개행 문자 추가
}
stringBuilder.append(line);
}
template = stringBuilder.toString();
} catch (IOException e) {
throw new RuntimeException(e);
}
template = template.replace("${pilotName}", model.getPilotName());
template = template.replace("${schFltStDt}", model.getSchFltStDt());
template = template.replace("${schFltEndDt}", model.getSchFltEndDt());
template = template.replace("${fltPurpose}", model.getFltPurpose());
template = template.replace("${address}", model.getAddress());
template = template.replace("${elev}", model.getElev());
SuredataEntity entity = getInitialEntity();
entity.setSubject("[비행승인 완료]");
entity.setMsg(template);
entity.setCallname(model.getPilotName());
entity.setCallphone(model.getCallphone());
entity.setKind("M");
log.info("entity : {}", entity);
log.info("========================================");
log.info("message : {}", template);
log.info("========================================");
log.info("message : {}", entity.getMsg());
suredataRepository.save(entity);
}
private String getMessage(String templateStr, ComnSmsLaancAprovModel model) {
String message = templateStr;
message = message.replace("${pilotName}", model.getPilotName());
message = message.replace("${schFltStDt}", model.getSchFltStDt());
message = message.replace("${schFltEndDt}", model.getSchFltEndDt());
message = message.replace("${fltPurpose}", model.getFltPurpose());
message = message.replace("${address}", model.getAddress());
message = message.replace("${elev}", model.getElev());
return message;
}
public SuredataEntity getInitialEntity() {
String nowStr = InstantUtils.toDatetimeStringByFormat(Instant.now(), "yyyyMMddHHmmss");
SuredataEntity entity = new SuredataEntity();
entity.setUsercode("palnet");
entity.setIntime(nowStr);
entity.setReqname("한국공항공사");
entity.setReqphone("0262003912"); // 1661-2626
// entity.setCallname("지대한");
// entity.setCallphone("010-0000-0000");
// entity.setSubject("주제");
// entity.setMsg("");
entity.setReqtime("00000000000000");
entity.setResult("0");
entity.setKind("S");
return entity;
}
}

3
pav-server/src/main/java/com/palnet/biz/jpa/entity/SuredataEntity.java

@ -22,6 +22,9 @@ public class SuredataEntity {
@Column(name = "USERCODE") @Column(name = "USERCODE")
private String usercode; private String usercode;
@Column(name = "INTIME")
private String intime; // date_format(now(), '%y%m%d%H%i%s')
@Column(name = "DEPTCODE") @Column(name = "DEPTCODE")
private String deptcode; private String deptcode;

16
pav-server/src/main/resources/templates/sms/SmsLaancAprov.txt

@ -0,0 +1,16 @@
[비행승인 완료]
${pilotName}님비행승인이 완료되었습니다.
가. 비행개요
1. 비행일시 : ${schFltStDt} ~ ${schFltEndDt}까지
2. 비행목적 : ${fltPurpose}
3. 비행경로 / 고도 : ${address} / ${elev}m
나. 비행 준수사항
1. 승인된 시간, 장소 및 고도를 반드시 준수해 주십시오.
2. 군작전, 경호 관련 안전위해요소과위규사항(지정된 장소, 고도, 시간 미준수)발생 시 비행이 취소 될 수 있습니다.
3. 비행에 관련된 모든 책임은 해당 업체(개인)에 있으니 유의 하시기 바랍니다.
4. 비행전/ 군 수방사로 반드시 연락 후 비행하시기 바랍니다.
* 조종자 준수사항 미 준수시 항공안전법 제 161조, 같은 법 제 166조 등 관련 법령에 따라 처벌받을 수 있습니다.
Loading…
Cancel
Save