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; import java.util.HashMap; import java.util.List; import java.util.Map; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; import com.lemon.lifecenter.scheduler.common.PushUtils; import com.lemon.lifecenter.scheduler.dto.DeviceInfoDTO; import com.lemon.lifecenter.scheduler.dto.PushResultDTO; import com.lemon.lifecenter.scheduler.dto.ScheduleDTO; import com.lemon.lifecenter.scheduler.service.PushService; @RestController public class PushController { private final Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired private PushService service; @Autowired private PushUtils pushUtils; @RequestMapping(value = "/queryTest", method = RequestMethod.POST) public void queryTest() { pushUtils.compareTime("18:00:01"); } @RequestMapping(value = "/selectSendPushList", method = RequestMethod.POST) @Transactional(propagation=Propagation.REQUIRED) public void selectSendPushList() { int count = service.selectSendPushCount(); if (count == 0) { } else { ArrayList list = (ArrayList) 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 createDate = list.get(i).getCreateDate(); String startDate = sendDate + " " + sendTime; int logIdx = 0; if (sendType.equals("D")) { startDate = pushUtils.getNow(); } list.get(i).setStartDate(startDate); logger.error("DDDDDDDDDD1111 IDX -- > " + list.get(i).getIdx()); if (pushUtils.compareDateTime(startDate) == true) { int idx = service.insertPushLog(list.get(i)); logIdx = list.get(i).getIdx(); logger.error("DDDDDDDDD2222 IDX -- > " + list.get(i).getIdx()); logger.error("DDDDDDDDD2222 IDX -- > " + logIdx); 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 pushTargetList = service.selectPushTarget(targetType, list.get(i)); for (int j = 0; j response = new HashMap(); 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); } 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 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(); int logIdx = 0; logger.error("EEEEEEEE1111 IDX -- > " + list.get(i).getIdx()); if (pushUtils.compareTime(sendTime) == true) { int idx = service.insertEveryDayPushLog(list.get(i)); logIdx = list.get(i).getIdx(); logger.error("EEEEEEEE2222 IDX -- > " + list.get(i).getIdx()); logger.error("EEEEEEEE2222 IDX -- > " + logIdx); 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 pushTargetList = service.selectPushTarget(targetType, list.get(i)); for (int j = 0; j response = new HashMap(); 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); } service.updatePushLog(list.get(i)); list.get(i).setSendState("W"); service.updatePushSchedule(list.get(i)); } } } } } @RequestMapping(value = "/createResultTable", method = RequestMethod.POST) public void createResultTable() { String ym = pushUtils.getNowYm(); int tableCount = 0; tableCount = service.resultTableCount(ym); if (tableCount == 0) { service.createResultTable(ym); } Calendar cal = Calendar.getInstance(); cal.add (cal.MONTH, + 1); //다음달 ym = pushUtils.getNextYm(); tableCount = service.resultTableCount(ym); if (tableCount == 0) { service.createResultTable(ym); } } }