|
@@ -1,7 +1,9 @@
|
|
|
package com.lemon.lifecenter.scheduler.controller;
|
|
|
|
|
|
import java.text.DateFormat;
|
|
|
+import java.text.ParseException;
|
|
|
import java.text.SimpleDateFormat;
|
|
|
+import java.time.LocalDateTime;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.Calendar;
|
|
|
import java.util.Date;
|
|
@@ -37,6 +39,7 @@ public class PushController {
|
|
|
|
|
|
@RequestMapping(value = "/queryTest", method = RequestMethod.POST)
|
|
|
public void queryTest() {
|
|
|
+ pushUtils.compareTime("18:00:01");
|
|
|
}
|
|
|
|
|
|
@RequestMapping(value = "/selectSendPushList", method = RequestMethod.POST)
|
|
@@ -48,61 +51,140 @@ public class PushController {
|
|
|
ArrayList<ScheduleDTO> list = (ArrayList<ScheduleDTO>) service.selectSendPushList();
|
|
|
for (int i = 0; i < list.size(); i++) {
|
|
|
int pushIdx = list.get(i).getPushIdx();
|
|
|
+ String sendType = list.get(i).getSendType();
|
|
|
String targetType = list.get(i).getTargetType();
|
|
|
String pushTitle = list.get(i).getPushTitle();
|
|
|
String pushContent = list.get(i).getPushContent();
|
|
|
String sendDate = list.get(i).getSendDate();
|
|
|
String sendTime = list.get(i).getSendTime();
|
|
|
String startDate = sendDate + " " + sendTime;
|
|
|
+
|
|
|
+ if (sendType.equals("D")) {
|
|
|
+ startDate = pushUtils.getNow();
|
|
|
+ }
|
|
|
+
|
|
|
list.get(i).setStartDate(startDate);
|
|
|
|
|
|
- int idx = service.insertPushLog(list.get(i));
|
|
|
+ if (pushUtils.compareDateTime(startDate) == true) {
|
|
|
+ int idx = service.insertPushLog(list.get(i));
|
|
|
|
|
|
- if (idx == 0) {
|
|
|
- } else {
|
|
|
- service.updatePushSchedule(list.get(i));
|
|
|
- // sendType : D(즉시), R(발송중), E(매일 발송)
|
|
|
- // sendState : W(대기), I(발송중), C(완료)
|
|
|
- // targetType : A(전체), N(건강정보 미엽락자), M(본인관리환자), P(환자개별선택)
|
|
|
- List<DeviceInfoDTO> pushTargetList = service.selectPushTarget(targetType, list.get(i));
|
|
|
- for (int j = 0; j <pushTargetList.size(); j++) {
|
|
|
- String token = pushTargetList.get(j).getDeviceToken();
|
|
|
- int patientIdx = pushTargetList.get(j).getPatientIdx();
|
|
|
-
|
|
|
- PushResultDTO pushResultDto = new PushResultDTO();
|
|
|
- pushResultDto.setYm(pushUtils.getNowYm());
|
|
|
- pushResultDto.setPushIdx(pushIdx);
|
|
|
- pushResultDto.setPatientIdx(patientIdx);
|
|
|
- pushResultDto.setDeviceToken(token);
|
|
|
- pushResultDto.setState("W"); // 결과 대기
|
|
|
- service.insertPushResult(pushResultDto);
|
|
|
-
|
|
|
- HashMap<String, String> response = new HashMap<String, String>();
|
|
|
- if (!token.equals("")) {
|
|
|
- response = pushUtils.sendFcm(token, pushTitle, pushContent);
|
|
|
- } else {
|
|
|
- response.put("NOT_FOUND", "Requested entity was not found.");
|
|
|
+ if (idx == 0) {
|
|
|
+ } else {
|
|
|
+ list.get(i).setSendState("I");
|
|
|
+ service.updatePushSchedule(list.get(i));
|
|
|
+ // sendType : D(즉시), R(발송중), E(매일 발송)
|
|
|
+ // sendState : W(대기), I(발송중), C(완료)
|
|
|
+ // targetType : A(전체), N(건강정보 미엽락자), M(본인관리환자), P(환자개별선택)
|
|
|
+ List<DeviceInfoDTO> pushTargetList = service.selectPushTarget(targetType, list.get(i));
|
|
|
+ for (int j = 0; j <pushTargetList.size(); j++) {
|
|
|
+ String token = pushTargetList.get(j).getDeviceToken();
|
|
|
+ int patientIdx = pushTargetList.get(j).getPatientIdx();
|
|
|
+
|
|
|
+ PushResultDTO pushResultDto = new PushResultDTO();
|
|
|
+ pushResultDto.setYm(pushUtils.getNowYm());
|
|
|
+ pushResultDto.setPushIdx(pushIdx);
|
|
|
+ pushResultDto.setPatientIdx(patientIdx);
|
|
|
+ pushResultDto.setDeviceToken(token);
|
|
|
+ pushResultDto.setState("W"); // 결과 대기
|
|
|
+ service.insertPushResult(pushResultDto);
|
|
|
+
|
|
|
+ HashMap<String, String> response = new HashMap<String, String>();
|
|
|
+ if (!token.equals("")) {
|
|
|
+ response = pushUtils.sendFcm(token, pushTitle, pushContent);
|
|
|
+ } else {
|
|
|
+ response.put("NOT_FOUND", "Requested entity was not found.");
|
|
|
+ }
|
|
|
+
|
|
|
+ for (String key : response.keySet()) {
|
|
|
+ pushResultDto.setSuccessYn("N");
|
|
|
+ if (key.equals("success")) {
|
|
|
+ pushResultDto.setSuccessYn("Y");
|
|
|
+ } else {
|
|
|
+ pushResultDto.setSuccessYn("N");
|
|
|
+ pushResultDto.setFailCode(key);
|
|
|
+ pushResultDto.setNote(response.get(key));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ pushResultDto.setState("C"); // 발송 완료
|
|
|
+ service.updatePushResult(pushResultDto);
|
|
|
}
|
|
|
|
|
|
- for (String key : response.keySet()) {
|
|
|
- pushResultDto.setSuccessYn("N");
|
|
|
- if (key.equals("success")) {
|
|
|
- pushResultDto.setSuccessYn("Y");
|
|
|
+ service.updatePushLog(list.get(i));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+// @RequestMapping(value = "/everyDayPushSend", method = RequestMethod.POST)
|
|
|
+ @Transactional(propagation=Propagation.REQUIRED)
|
|
|
+ public void everyDayPushSend() {
|
|
|
+ int cnt = service.selectEveryDaySendPushCount();
|
|
|
+ if (cnt == 0) {
|
|
|
+ } else {
|
|
|
+ List<ScheduleDTO> list = service.selectEveryDaySendPushList();
|
|
|
+ for (int i = 0; i < list.size(); i++) {
|
|
|
+ int pushIdx = list.get(i).getPushIdx();
|
|
|
+ String targetType = list.get(i).getTargetType();
|
|
|
+ String pushTitle = list.get(i).getPushTitle();
|
|
|
+ String pushContent = list.get(i).getPushContent();
|
|
|
+ String sendTime = list.get(i).getSendTime();
|
|
|
+
|
|
|
+ if (pushUtils.compareTime(sendTime) == true) {
|
|
|
+ int idx = service.insertEveryDayPushLog(list.get(i));
|
|
|
+ if (idx == 0) {
|
|
|
+ } else {
|
|
|
+ list.get(i).setSendState("I");
|
|
|
+ service.updatePushSchedule(list.get(i));
|
|
|
+ // sendType : D(즉시), R(발송중), E(매일 발송)
|
|
|
+ // sendState : W(대기), I(발송중), C(완료)
|
|
|
+ // targetType : A(전체), N(건강정보 미엽락자), M(본인관리환자), P(환자개별선택)
|
|
|
+ List<DeviceInfoDTO> pushTargetList = service.selectPushTarget(targetType, list.get(i));
|
|
|
+ for (int j = 0; j <pushTargetList.size(); j++) {
|
|
|
+ String token = pushTargetList.get(j).getDeviceToken();
|
|
|
+ int patientIdx = pushTargetList.get(j).getPatientIdx();
|
|
|
+
|
|
|
+ PushResultDTO pushResultDto = new PushResultDTO();
|
|
|
+ pushResultDto.setYm(pushUtils.getNowYm());
|
|
|
+ pushResultDto.setPushIdx(pushIdx);
|
|
|
+ pushResultDto.setPatientIdx(patientIdx);
|
|
|
+ pushResultDto.setDeviceToken(token);
|
|
|
+ pushResultDto.setState("W"); // 결과 대기
|
|
|
+ service.insertPushResult(pushResultDto);
|
|
|
+
|
|
|
+ HashMap<String, String> response = new HashMap<String, String>();
|
|
|
+ if (!token.equals("")) {
|
|
|
+ response = pushUtils.sendFcm(token, pushTitle, pushContent);
|
|
|
} else {
|
|
|
+ response.put("NOT_FOUND", "Requested entity was not found.");
|
|
|
+ }
|
|
|
+
|
|
|
+ for (String key : response.keySet()) {
|
|
|
pushResultDto.setSuccessYn("N");
|
|
|
- pushResultDto.setFailCode(key);
|
|
|
- pushResultDto.setNote(response.get(key));
|
|
|
+ if (key.equals("success")) {
|
|
|
+ pushResultDto.setSuccessYn("Y");
|
|
|
+ } else {
|
|
|
+ pushResultDto.setSuccessYn("N");
|
|
|
+ pushResultDto.setFailCode(key);
|
|
|
+ pushResultDto.setNote(response.get(key));
|
|
|
+ }
|
|
|
}
|
|
|
+
|
|
|
+ pushResultDto.setState("C"); // 발송 완료
|
|
|
+ service.updatePushResult(pushResultDto);
|
|
|
+
|
|
|
}
|
|
|
|
|
|
- pushResultDto.setState("C"); // 발송 완료
|
|
|
- service.updatePushResult(pushResultDto);
|
|
|
+ service.updatePushLog(list.get(i));
|
|
|
+ list.get(i).setSendState("W");
|
|
|
+ service.updatePushSchedule(list.get(i));
|
|
|
}
|
|
|
-
|
|
|
- service.updatePushLog(list.get(i));
|
|
|
}
|
|
|
+
|
|
|
}
|
|
|
-
|
|
|
}
|
|
|
}
|
|
|
|