Browse Source

1. 종료된 생활치료센터의 매일, 예약 발송건 발송 리스트에 표시되지 않게 수정
2. 종료된 생활치료센터의 발송건(즉시, 매일, 예약) 일괄 삭제 기능 추가(매일 새벽 3시에 한번 진행)

jksong 4 years ago
parent
commit
8f30a2bdae

+ 14 - 9
src/main/java/com/lemon/lifecenter/scheduler/common/HomeController.java

@@ -75,6 +75,14 @@ public class HomeController {
         pushController.createResultTable();
     }
     
+    /**
+     * 하루에 한번 종료된 생활치료센터의 발송건(즉시, 매일, 예약)을 일괄 삭제한다
+     */
+    @Scheduled(cron = "* * 03 * * *", zone = "Asia/Seoul")
+    public void deletePushData() {
+        pushController.deleteEndCenterSchedule();
+    }
+    
     /**
      * 1초 31초 
      * 16초 46초
@@ -86,23 +94,20 @@ public class HomeController {
         pushController.everyDayPushSend();
     }
     
-    @Scheduled(cron = "16 * * * * *", zone = "Asia/Seoul")
-    public void sendTask3() {
+    @Scheduled(cron = "31 * * * * *", zone = "Asia/Seoul")
+    public void sendTask2() {
         pushController.selectSendPushList();
         pushController.everyDayPushSend();
     }
     
-    @Scheduled(cron = "46 * * * * *", zone = "Asia/Seoul")
-    public void sendTask4() {
+    @Scheduled(cron = "16 * * * * *", zone = "Asia/Seoul")
+    public void sendTask3() {
         pushController.selectSendPushList();
         pushController.everyDayPushSend();
     }
     
-    /**
-     * 매분 지정한 초 마다
-     */
-    @Scheduled(cron = "31 * * * * *", zone = "Asia/Seoul")
-    public void sendTask2() {
+    @Scheduled(cron = "46 * * * * *", zone = "Asia/Seoul")
+    public void sendTask4() {
         pushController.selectSendPushList();
         pushController.everyDayPushSend();
     }

+ 56 - 45
src/main/java/com/lemon/lifecenter/scheduler/controller/PushController.java

@@ -140,58 +140,61 @@ public class PushController {
                 String pushContent  = list.get(i).getPushContent();
                 String pushPayLoad1 = list.get(i).getPushPayLoad1();
                 String sendTime     = list.get(i).getSendTime();
+                String useYn        = list.get(i).getUseYn().trim();
                 int logIdx = 0;
                 
-                if (pushUtils.compareTime(sendTime) == true) {
-                    int idx = service.insertEveryDayPushLog(list.get(i));
-                    logIdx = list.get(i).getIdx();
-                    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.setLogIdx(logIdx);
-                            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, pushPayLoad1);
-                            } 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");
+                if (useYn.equals("Y")) { // 사용중인 생활치료센터만
+                    if (pushUtils.compareTime(sendTime) == true) {
+                        int idx = service.insertEveryDayPushLog(list.get(i));
+                        logIdx = list.get(i).getIdx();
+                        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(환자개별선택), T(정신건강 미입력자)
+                            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.setLogIdx(logIdx);
+                                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, pushPayLoad1);
                                 } 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));
-                        list.get(i).setSendState("W");
-                        service.updatePushSchedule(list.get(i));
                     }
                 }
                 
@@ -200,7 +203,15 @@ public class PushController {
         }
     }
     
-    private Connection con; 
+    public void deleteEndCenterSchedule() {
+        int cnt = service.selectEndCenterScheduleCount();
+        
+        if (cnt > 0) {
+          service.deleteEndCenterSchedule();
+        }
+    }
+    
+    private Connection con;
     private Statement stmt;
     @RequestMapping(value = "/createResultTable", method = RequestMethod.GET)
     public void createResultTable() {

+ 7 - 0
src/main/java/com/lemon/lifecenter/scheduler/dto/ScheduleDTO.java

@@ -16,6 +16,7 @@ public class ScheduleDTO {
     private String sendTime     = "";
     private String startDate    = "";
     private String createDate   = "";
+    private String useYn        = "";
 
     public int getIdx() {
         return idx;
@@ -107,5 +108,11 @@ public class ScheduleDTO {
     public void setCreateDate(String createDate) {
         this.createDate = createDate;
     }
+    public String getUseYn() {
+        return useYn;
+    }
+    public void setUseYn(String useYn) {
+        this.useYn = useYn;
+    }
     
 }

+ 2 - 0
src/main/java/com/lemon/lifecenter/scheduler/mapper/PushMapper.java

@@ -33,4 +33,6 @@ public interface PushMapper {
     public int selectEveryDaySendPushCount();
     public List<ScheduleDTO> selectEveryDaySendPushList();
     public int insertEveryDayPushLog(ScheduleDTO dto);
+    public int selectEndCenterScheduleCount();
+    public void deleteEndCenterSchedule();
 }

+ 7 - 0
src/main/java/com/lemon/lifecenter/scheduler/service/PushService.java

@@ -85,4 +85,11 @@ public class PushService {
         return mapper.insertEveryDayPushLog(dto);
     }
     
+    public int selectEndCenterScheduleCount() {
+       return mapper.selectEndCenterScheduleCount();
+    }
+    
+    public void deleteEndCenterSchedule() {
+        mapper.deleteEndCenterSchedule();
+    }
 }

+ 27 - 1
src/main/resources/mybatis/mapper/push/push.xml

@@ -94,7 +94,10 @@
                    PS.PUSH_PAYLOAD1 AS pushPayLoad1,
                    PS.SEND_DATE     AS sendDate,
                    PS.SEND_TIME     AS sendTime,
-                   PS.CREATE_DATE   AS createDate
+                   PS.CREATE_DATE   AS createDate,
+                   (SELECT USE_YN
+                      FROM CENTER_INFO CI
+                      WHERE CI.CENTER_CODE = PS.CENTER_CODE) AS use_yn
               FROM PUSH_SCHEDULE PS, 
                        ( SELECT PS.PUSH_IDX AS push_idx,
                                 COUNT(*) TOTAL 
@@ -293,4 +296,27 @@
               AND LOG_IDX = #{logIdx}
         ]]>
     </update>
+    
+    <select id="selectEndCenterScheduleCount" resultType="int">
+        <![CDATA[
+            SELECT COUNT(*) AS cnt
+              FROM PUSH_SCHEDULE PS
+              LEFT JOIN CENTER_INFO CI
+                ON PS.CENTER_CODE = CI.CENTER_CODE
+             WHERE 1 = 1
+               AND CI.USE_YN = 'N'
+        ]]>
+    </select>
+    
+    <delete id="deleteEndCenterSchedule">
+        <![CDATA[
+            DELETE FROM PUSH_SCHEDULE
+                  WHERE PUSH_IDX IN (SELECT PS.PUSH_IDX AS PUSHIDX
+                                       FROM PUSH_SCHEDULE PS
+                                       LEFT JOIN CENTER_INFO CI
+                                         ON PS.CENTER_CODE = CI.CENTER_CODE
+                                      WHERE 1 = 1
+                                        AND CI.USE_YN = 'N')
+        ]]>
+    </delete>
 </mapper>