$userType = $_SESSION["risk"]["user_type"];
    $SQL = "WITH T_FEEDBACK AS (	
                                    SELECT S.CNO, F.FUNC_NO, MAX(FB.FEEDBACK_DATE) AS FEEDBACK_DATE
                                    FROM JOB_SUBCON_INFO S
                                    RIGHT OUTER JOIN JOB_SUBCON_FUNC F ON S.JNO = F.JNO AND F.CNO = S.CNO
                                    LEFT OUTER JOIN RISK_ASSESSMENT_INFO I ON I.JNO = S.JNO
                                    LEFT OUTER JOIN RISK_ASSESSMENT_DETAIL D ON I.ASSESSMENT_ID = D.ASSESSMENT_ID AND F.FUNC_NO = D.FUNC_NO AND D.IS_CHECK = 'Y'
                                    LEFT OUTER JOIN RISK_FEEDBACK FB ON FB.ASSESSMENT_ID = I.ASSESSMENT_ID AND FB.CNO = S.CNO AND FB.ASSESSMENT_ITEM_ID = D.ASSESSMENT_ITEM_ID
                                    WHERE S.JNO = :jno
                                    AND I.SEQ = (SELECT MAX(SEQ) FROM RISK_ASSESSMENT_INFO WHERE JNO = :jno AND ASSESSMENT_TYPE = 'ASMT_REP')
                                    GROUP BY S.CNO, F.FUNC_NO
                                    ORDER BY CNO, FUNC_NO
            )
            SELECT ASSESS_SEQ, START_DATE, END_DATE, CNO, COMP_NAME, FUNC_NO, FUNC_NAME, FEEDBACK_DATE, SUBMIT_DATE, SUPERVISOR_MOD_DATE, SAFETY_MANAGER_MOD_DATE, SUPERINTENDENT_MOD_DATE, SORT_NO
            FROM (
                    SELECT I.SEQ AS ASSESS_SEQ, I.START_DATE, I.END_DATE, S.CNO, S.COMP_NAME, F.FUNC_NO, Q.FUNC_NAME, 
                            TO_CHAR(T.FEEDBACK_DATE, 'YYYY-MM-DD') AS FEEDBACK_DATE, TO_CHAR(A.SUBMIT_DATE, 'YYYY-MM-DD') AS SUBMIT_DATE, AI.AUTH, AI.SEQ, TO_CHAR(CAST(AI.MOD_DATE AS DATE), 'YYYY-MM-DD') AS MOD_DATE,
                            Q.SORT_NO
                    FROM RISK_ASSESSMENT_INFO I
                    RIGHT OUTER JOIN JOB_SUBCON_INFO S ON I.JNO = S.JNO
                    RIGHT OUTER JOIN JOB_SUBCON_FUNC F ON S.JNO = F.JNO AND S.CNO = F.CNO
                    INNER JOIN COMMON.COMM_FUNC_QHSE Q ON F.FUNC_NO = Q.FUNC_NO
                    INNER JOIN T_FEEDBACK T ON T.CNO = S.CNO AND T.FUNC_NO = F.FUNC_NO
                    INNER JOIN RISK_APPROVAL_TARGET A ON F.FUNC_NO = A.FUNC_NO AND S.CNO = A.CNO AND A.ASSESSMENT_ID = I.ASSESSMENT_ID
                    FULL OUTER JOIN APPROVAL_INFO AI ON A.APPROVAL_TARGET_ID = AI.APPROVAL_TARGET_ID AND AI.IS_SIGN = 'Y' AND AI.SIGN_KIND >= " . APP_STATUS_SBM . " ";
            $SQL .= "WHERE I.JNO = :jno
                    AND I.ASSESSMENT_TYPE = 'ASMT_REP'
                    AND I.SEQ = (SELECT MAX(I.SEQ) FROM RISK_ASSESSMENT_INFO I WHERE I.JNO = :jno AND I.ASSESSMENT_TYPE = 'ASMT_REP') ";
    if($userType == "SUB") {
        $cno = $_SESSION["risk"]["cno"];
        $SQL .= "AND S.CNO = {$cno}";
    }
    $SQL .= ")
            PIVOT (
            MAX(SEQ) AS SEQ , MAX(MOD_DATE) AS MOD_DATE FOR AUTH IN('SUPERVISOR' AS SUPERVISOR, 'SAFETY_MANAGER' AS SAFETY_MANAGER, 'SUPERINTENDENT' AS SUPERINTENDENT)
            )
            ORDER BY CNO, SORT_NO";
    $params = array(
        ":jno" => $jno
    );
    $db->query($SQL, $params);

SQL 짜는데만 하루 넘게 걸린 개미친놈 ㅜ

'웹 싱니 > 안전보건 시스템 (22.02 ~ 22.09 )' 카테고리의 다른 글

DB설계서  (0) 2022.12.21
위험성평가 - 피드백  (0) 2022.12.21
위험성평가 항목편집 페이지  (0) 2022.12.21
코드 관리 페이지  (0) 2022.12.21
프로젝트 관리 - 편집  (0) 2022.12.21

개발일정

'웹 싱니 > 안전보건 시스템 (22.02 ~ 22.09 )' 카테고리의 다른 글

DB설계서  (0) 2022.12.21
위험성 평가 - 메인화면 SQL  (0) 2022.12.21
위험성평가 항목편집 페이지  (0) 2022.12.21
코드 관리 페이지  (0) 2022.12.21
프로젝트 관리 - 편집  (0) 2022.12.21

개발일정

'웹 싱니 > 안전보건 시스템 (22.02 ~ 22.09 )' 카테고리의 다른 글

위험성 평가 - 메인화면 SQL  (0) 2022.12.21
위험성평가 - 피드백  (0) 2022.12.21
코드 관리 페이지  (0) 2022.12.21
프로젝트 관리 - 편집  (0) 2022.12.21
프로젝트 관리 - 목록  (0) 2022.11.03

개발일정

개발 일정

개발일정

개발일정

 

* 협력업체 로그인 시 종료된 프로젝트 일 경우

 

'웹 싱니 > 안전보건 시스템 (22.02 ~ 22.09 )' 카테고리의 다른 글

위험성평가 - 피드백  (0) 2022.12.21
위험성평가 항목편집 페이지  (0) 2022.12.21
코드 관리 페이지  (0) 2022.12.21
프로젝트 관리 - 편집  (0) 2022.12.21
프로젝트 관리 - 목록  (0) 2022.11.03

https://www.data.go.kr/tcs/dss/selectApiDataDetailView.do?publicDataPk=15084084

 

기상청_단기예보 ((구)_동네예보) 조회서비스

초단기실황, 초단기예보, 단기((구)동네)예보, 예보버전 정보를 조회하는 서비스입니다. 초단기실황정보는 예보 구역에 대한 대표 AWS 관측값을, 초단기예보는 예보시점부터 6시간까지의 예보를,

www.data.go.kr

데이터명 : 기상청_단기예보 ((구)_동네예보) 조회서비스 상세설명

 

* 예시코드 (최고기온, 최저기온, 하늘 상태, 풍속)

    $timeNow = strToTime(date("Y-m-d H:i:s"));
    $timeTarget = strToTime(date("Y-m-d 03:00:00"));

    if($timeNow > $timeTarget) {
        $baseDate = date("Ymd");
    } else {
        $baseDate = date("Ymd", strToTime(date("Y-m-d 02:00:00"), "-1 day"));
    }
    //인증키
    $serviceKey = "";

    $url = "http://apis.data.go.kr/1360000/VilageFcstInfoService_2.0/getVilageFcst?serviceKey={$serviceKey}&numOfRows=1000&pageNo=1&base_date={$baseDate}&base_time=0200&nx=73&ny=67&dataType=JSON";
            
    $curl = curl_init();

    curl_setopt_array($curl, array(
    //         CURLOPT_PORT => "80",
        CURLOPT_URL => $url,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_ENCODING => "",
        CURLOPT_MAXREDIRS => 10,
        CURLOPT_TIMEOUT => 30,
        CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
        CURLOPT_CUSTOMREQUEST => "GET",
        CURLOPT_HTTPHEADER => array(
            "cache-control: no-cache",
            "content-type: text/plain; charset=utf-8"
        ),
    ));

    $response = curl_exec($curl);
    //     $err = curl_error($curl);
    curl_close($curl);

    $responseResult = json_decode($response);

    $items = $responseResult->response->body->items->item;

    $forecast = array();
    for($i=0; $i < count($items); $i++) {
        //기온(최저/최고)
        if($items[$i]->category == "TMN" || $items[$i]->category == "TMX") {
            $forecast[$items[$i]->fcstDate][$items[$i]->category] = $items[$i]->fcstValue;
        }

        //하늘 상태
        if($items[$i]->category == "PTY" && $items[$i]->fcstTime == date("H00")) {
            if($items[$i]->fcstValue == "0") {
                if($items[$i-1]->fcstValue == "1") {
                    $forecast[$items[$i-1]->fcstDate]["SKY"] = '<i class="fa-solid fa-sun" style="font-size:x-large;" title="맑음"></i>';
                } else if($items[$i-1]->fcstValue == "3") {
                    $forecast[$items[$i-1]->fcstDate]["SKY"] = '<i class="fa-solid fa-cloud" style="font-size:x-large;" title="구름많음"></i>';
                } else if($items[$i-1]->fcstValue == "4") {
                    $forecast[$items[$i-1]->fcstDate]["SKY"] = '<i class="fa-solid fa-cloud-sun" style="font-size:x-large" title="흐림"></i>';
                }
            } else if(($items[$i]->fcstValue) == "1") {
                $forecast[$items[$i]->fcstDate]["SKY"] = '<i class="fa-solid fa-umbrella" style="font-size:x-large" title="비"></i>';
            } else if($items[$i]->fcstValue == "2") {
                $forecast[$items[$i]->fcstDate]["SKY"] = '<i class="fa-solid fa-umbrella" style="font-size:x-large" title="비/눈"></i> / <i class="fa-solid fa-snowflake" style="font-size:x-large" title="비/눈"></i>';
            } else if($items[$i]->fcstValue == "3") {
                $forecast[$items[$i]->fcstDate]["SKY"] = '<i class="fa-solid fa-snowflake" style="font-size:x-large" title="눈"></i>';
            } else if($items[$i]->fcstValue == "4") {
                $forecast[$items[$i]->fcstDate]["SKY"] = '<i class="fa-solid fa-cloud-showers-heavy" style="font-size:x-large" title="소나기"></i>';
            }
        }

        //풍속
        if($items[$i]->category == "WSD" && $items[$i]->fcstTime == date("H00")) {
            $forecast[$items[$i]->fcstDate][$items[$i]->category] = $items[$i]->fcstValue;
        }
    }

    $result = array(
        "forecast" => $forecast
    );
    
    echo json_encode($result);

* 가져온 데이터

 

* Jquery (ajax)를 이용해 화면에 뿌리기

    $.ajax({
        type: "POST", 
        url: "", 
        data: $("#mainForm").serialize(),
        dataType: "json",
        success: function(result) {
            //날씨
            var html = '';
            for(var date in result["forecast"]) {
                year = date.substr(0, 4);
                month = date.substr(4, 2);
                day = date.substr(6, 2);
                var fcstDate = year + '-' + month + '-' + day;

                html += '<tr>';
                html += '<td class="text-center">';
                html += fcstDate;
                html += '</td>';
                html += '<td class="text-center">';
                html += result["forecast"][date]["TMN"] + "/" + result["forecast"][date]["TMX"];
                html += '</td>';
                html += '<td class="text-center">';
                html += result["forecast"][date]["WSD"] + "m/s";
                html += '</td>';
                html += '<td class="text-center">';
                html += result["forecast"][date]["SKY"];
                html += '</td>';
                html += '</tr>';
            }

            $("#tblForecast tbody").append(html);
        },
        error: function (request, status, error) {
            alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
        }
    });

 

* 결과값

+ Recent posts