/** * 行を処理します。 */ private function &actionLine($useActionId, $code, &$keys, &$values) { // 無視するぎょうは return null します。 // 致命的なエラーで行処理を中断する場合は例外をスローします。 try { // 空白行は無視します if (empty($values) == true) { return null; } // 例外配列初期化 $eList = array(); // 配列の数が合わない if (count($keys) != count($values)) { //↓↓========nm00137 start=================================== //配列の数が合わないの場合、配列エラーのメッセージ表示 $this->_dataFrom['showMismatchErr'] = 'true'; //↑↑===========nm00137 end================================== $e = new ItemCountMismatchException(); $eList[] = $e; // エラー表示するためのダミーデータ $data = 1; // 処理中断 throw $e; } // 連想配列作成 $data = array_combine($keys, $values); /////////////////////////////// // 任意のIDから「nm」削除 /////////////////////////////// $addNm = intval($this->_anken['client_user_id_add_nm']); if (is_int($addNm) === true && $addNm == 1) { $clientUserId = $data['client_user_id']; if (substr($clientUserId, 0, 2) == 'nm') { $data['client_user_id'] = substr($clientUserId, 2); } } /////////////////////////////// // ゼロ埋め /////////////////////////////// $padding = intval($this->_anken['client_user_id_padding']); if (is_int($padding) === true && $padding != 0) { $wantLen = $padding; $len = strlen($data['client_user_id']); if ($len != 0 && $len != $wantLen) { $id = $data['client_user_id']; $id = str_pad($id, $wantLen, '0', STR_PAD_LEFT); $data['client_user_id'] = $id; } } /////////////////////////////// // !error 日付が不正の場合は、対象外 // !error 日付が現在より新しい場合は、対象外 /////////////////////////////// $data['accept_date'] = trim($data['accept_date']); //↓↓========nm00137 start=================================== //締め日チェック結果対象 $shimeDateCheckResult = null; //↑↑===========nm00137 end================================== if (ereg("^([0-9]{4})[\\/\\-]([0-9]{1,2})[\\/\\-]([0-9]{1,2})", $data['accept_date'], $regs) !== false && checkdate($regs[2], $regs[3], $regs[1]) == true) { $date = "{$regs['1']}-{$regs['2']}-{$regs['3']}"; $data['accept_date'] = $date; // メール送信用文面 if (in_array($date, $this->_acceptDateList) == false) { $this->_acceptDateList[$date] = $date; } //↓↓========nm00137 start=================================== /////////////////////////////// // !error 効締め日無効 /////////////////////////////// //案件締め日 $anken_shime_date = $this->_anken['shime_date']; //確認フラグ $confirmFlg = mb_strtoupper(trim($data['accept_flg'])); $confirmFlg = mb_convert_kana($confirmFlg, 'r'); //締め日チェック結果 $shimeDateCheckResult = DateManager::checkValidityShimeDate($anken_shime_date, $date, $confirmFlg); if ($shimeDateCheckResult['E'] == true) { $eList[] = new AcceptDateIsInvalidityException(); } //↑↑===========nm00137 end================================== } else { $eList[] = new AcceptDateFormatException(); } /////////////////////////////// // !error statusがY,D,Nではない場合は、対象外 /////////////////////////////// $flg = mb_strtoupper(trim($data['accept_flg'])); $flg = mb_convert_kana($flg, 'r'); if (strstr('YDN', $flg) == false) { $eList[] = new AcceptFlagFormatException(); } $data['accept_flg'] = $flg; // 該当数をカウント $this->_updateCount['sum']++; /////////////////////////////// // !continue 保留のため更新しません。 /////////////////////////////// if ($flg == 'N') { // 保留行を表示しないようにします $this->_updateCount['N']++; $eList = array(); $eList[] = new AcceptFlagIsSuspensionException(); //--------------------------------------------------- // N:保留のため処理終了→表示用処理 //--------------------------------------------------- $d["data"] =& $data; $d["eListCount"] = count($eList); $d["eList"] =& $eList; return $d; } else { if ($flg == 'Y') { $data['int_accept_flg'] = 1; } else { if ($flg == 'D') { $data['int_accept_flg'] = 0; } } } if ($useActionId == false) { //----------------------------------------------------- // !error client_user_id がNULLの場合は、対象外 //----------------------------------------------------- $data['client_user_id'] = trim($data['client_user_id']); if (empty($data['client_user_id'])) { $eList[] = new ClientUserIdNotFountException(); } //----------------------------------------------------- // !error client_user_idがDBに存在しない場合は、対象外 //----------------------------------------------------- $m =& $this->_model; $target =& $m->Result_ClientReportResultUpload_getTargetSeika($code, $data['client_user_id']); $count = count($target); if ($count == 0) { // 該当する成果無し $eList[] = new SeikaNotFountException(); } else { if ($count != 1) { // 該当する複数有り $e = new SeikaNotFountException("複数({$count}項目) 該当します。"); $eList[] = $e; $this->_updateCount['E']++; // 処理中断 throw $e; } } //----------------------------------------------------- // !error 既にuidで更新されていれば、対象外 //----------------------------------------------------- $flg = $target[0]['accept_flg']; if (strstr('01', $flg) != false) { $eList[] = new SeikaIsAcceptedException(); } //-------------------------------------------------- // DB update //-------------------------------------------------- if (count($eList) == 0) { //↓↓========nm00137 start=================================== //月度カウントアップ if ($shimeDateCheckResult != null) { $this->_updateCount['Y_1'] += $shimeDateCheckResult['Y_1']; $this->_updateCount['Y_2'] += $shimeDateCheckResult['Y_2']; $this->_updateCount['D_1'] += $shimeDateCheckResult['D_1']; $this->_updateCount['D_2'] += $shimeDateCheckResult['D_2']; } //↑↑===========nm00137 end================================== // update $clientUserId = $data['client_user_id']; $date = $data['accept_date']; $flg = $data['int_accept_flg']; //↓↓========nm00137 start=================================== //データチェックの場合、DB更新不要 if ($this->_dataFrom['is_data_check'] != true) { $m->Result_ClientReportResultUpload_update($code, $clientUserId, $flg, $date); } //↑↑===========nm00137 end================================== // カウントアップ if ($flg == 1) { $this->_updateCount['Y']++; } else { if ($flg == 0) { $this->_updateCount['D']++; } } } else { $this->_updateCount['E']++; } } else { //----------------------------------------------------- // !error action_id がNULLの場合は、対象外 //----------------------------------------------------- $data['action_id'] = trim($data['action_id']); if (empty($data['action_id'])) { $eList[] = new ActionIdNotFountException(); } //----------------------------------------------------- // !error seika_idがDBに存在しない場合は、対象外 //----------------------------------------------------- $m =& $this->_model; // 成果IDを取得 $prefix = $this->_anken['id_prefix']; $actionId = $data['action_id']; $sessionId = $m->detachPrefixActionId($prefix, $actionId); $target =& $m->Result_ClientReportResultUpload_getTargetSeikaBySessionId($code, $sessionId); $count = count($target); if ($count == 0) { // 該当する成果無し $eList[] = new SeikaNotFountException(); } else { if ($count != 1) { // 該当する複数有り $e = new SeikaNotFountException("複数({$count}項目) 該当します。"); $eList[] = $e; $this->_updateCount['E']++; // 処理中断 throw $e; } } //----------------------------------------------------- // !error 既にuidで更新されていれば、対象外 //----------------------------------------------------- $flg = $target[0]['accept_flg']; if (strstr('01', $flg) != false) { $eList[] = new SeikaIsAcceptedException(); } //-------------------------------------------------- // DB update //-------------------------------------------------- if (count($eList) == 0) { //↓↓========nm00137 start=================================== //月度カウントアップ if ($shimeDateCheckResult != null) { $this->_updateCount['Y_1'] += $shimeDateCheckResult['Y_1']; $this->_updateCount['Y_2'] += $shimeDateCheckResult['Y_2']; $this->_updateCount['D_1'] += $shimeDateCheckResult['D_1']; $this->_updateCount['D_2'] += $shimeDateCheckResult['D_2']; } //↑↑===========nm00137 end================================== // update $date = $data['accept_date']; $flg = $data['int_accept_flg']; //↓↓========nm00137 start=================================== //データチェックの場合、DB更新不要 if ($this->_dataFrom['is_data_check'] != true) { $m->Result_ClientReportResultUpload_updateBySessionId($code, $sessionId, $flg, $date); } //↑↑===========nm00137 end================================== // カウントアップ if ($flg == 1) { $this->_updateCount['Y']++; } else { if ($flg == 0) { $this->_updateCount['D']++; } } } else { $this->_updateCount['E']++; } } } catch (Exception $e) { // 処理中断した場合ここを通ります // 想定してない例外が発生した場合ここを通ります $this->log->fatal($e); } //--------------------------------------------------- // 表示用処理 //--------------------------------------------------- $d["data"] =& $data; $d["eListCount"] = count($eList); $d["eList"] =& $eList; return $d; }