private function update_pur($v3key)
 {
     $workload = $this->_workload;
     if (empty($v3key->writedate) or $v3key->writedate == '0000-00-00') {
         return;
     }
     $v3val = $v3key->v3BidValue;
     $keyid = $v3val->keyid;
     list($bidno, $bidseq, $rebidno, $divno) = explode('-', $v3key->bidid);
     $subseq = intval($bidseq);
     $pm = PurMaster::findOne(['id' => $keyid, 'subseq' => $subseq]);
     if ($pm === null or $keyid == 0) {
         $pm = new PurMaster();
         $idstart = str_replace('-', '', $v3key->writedate);
         $idstart . '0000';
         $id = (new Query())->from('pur_master')->where("id > :idstart", [':idstart' => $idstart])->max('id', PurMaster::getDb());
         if (empty($id)) {
             $id = $idstart;
         }
         $pm->id = $id + 1;
         $pm->subseq = $subseq;
     }
     $pm->attributes = ['notinum' => $v3key->notinum, 'constname' => $v3key->constnm, 'org' => $v3key->org, 'gesi_dt' => $v3val->noticedt, 'explain_dt' => $v3val->explaindt, 'ibchalgesi_dt' => $v3val->opendt, 'ibchalmagam_dt' => $v3val->closedt, 'ibchal_dt' => $v3val->constdt, 'chamgamagam_dt' => $v3val->registdt, 'write_dt' => $v3val->writedt, 'presum' => $v3key->presum, 'basic' => $v3key->basic, 'pct' => $v3key->pct, 'itemcode' => $v3key->purcode, 'location' => $v3key->location, 'state' => $v3key->state, 'register' => 'i2conv', 'islast' => 'Y', 'org_code' => $v3key->orgcode];
     if (empty($pm->chamgamagam_dt) or $v3key->whereis === '01') {
         $pm->chamgamagam_dt = $pm->ibchalmagam_dt;
     }
     switch ($v3key->contract) {
         case '10':
             $pm->constract = '일반';
             break;
         case '20':
             $pm->constract = '제한';
             break;
         case '40':
             $pm->constract = '수의';
             break;
         case '70':
             $pm->constract = '역경매';
             break;
         case '80':
             $pm->constract = '실적';
             break;
         default:
             $pm->constract = '';
     }
     switch ($v3key->bidcls) {
         case '00':
             $pm->ibchalbangsik = '직찰';
             break;
         case '01':
             $pm->ibchalbangsik = '전자입찰';
             break;
         default:
             $pm->ibchalbangsik = '';
     }
     $cmtopts = [];
     if (($v3key->ulevel & pow(2, 2)) > 0) {
         $cmtopts[] = '긴급';
     }
     if (($v3key->ulevel & pow(2, 11)) > 0) {
         $cmtopts[] = '관내';
     }
     $pm->commentoption = implode(',', $cmtopts);
     switch ($v3key->bidproc) {
         case 'B':
             $pm->dataprocess = 'GEN';
             break;
         case 'C':
             $pm->dataprocess = 'CANCEL';
             break;
         default:
             $pm->dataprocess = 'MOD';
     }
     if (!ArrayHelper::isIn($v3key->bidproc, ['S', 'F']) && intval($rebidno) > 0) {
         $pm->isjeibchal = 'Y';
     }
     switch ($v3key->whereis) {
         case '01':
             $pm->whereis = 'G2B';
             break;
         case '08':
             $pm->whereis = 'EX';
             break;
         case '03':
             $pm->whereis = 'KEPCO';
             break;
         case '10':
             $pm->whereis = 'DPA';
             break;
         case '96':
             $pm->whereis = 'KHNP';
             break;
         case '52':
             $pm->whereis = 'KR';
             break;
         default:
             $pm->whereis = 'ETC';
     }
     $v3bidgoods = V3BidGoods::findAll(['bidid' => $v3key->bidid]);
     $pm->goods_cnt = count($v3bidgoods);
     $v3bidlocals = $v3key->v3BidLocals;
     $lockeywords = [];
     foreach ($v3bidlocals as $v3bidlocal) {
         $a = explode(' ', $v3bidlocal->name);
         $lockeywords[] = array_pop($a);
     }
     $pm->lockeyword = implode(',', $lockeywords);
     $pm->save();
     $v3ctn = $v3key->v3BidContent;
     //----------------------------------------------
     // pur_file_data
     //----------------------------------------------
     $pfd = $pm->purFileData;
     if ($pfd === null) {
         $pfd = new PurFileData(['id' => $pm->id, 'subseq' => $pm->subseq]);
     }
     if ($v3ctn !== null) {
         $pfd->attributes = ['filedata1' => $v3ctn->upfile_bid, 'jungjungdata' => $v3ctn->important_bid, 'maincontents' => $v3ctn->content_bid, 'openbid_contents' => $v3ctn->content_suc];
     }
     $pfd->urlinfo1 = $v3val->origin_lnk;
     $pfd->linkdata = $v3val->attchd_lnk;
     $pfd->save();
     //----------------------------------------------
     // pur_g2b_goods
     //----------------------------------------------
     $v3goods = $v3key->v3BidGoods;
     foreach ($v3goods as $g) {
         $pgg = PurG2bGoods::findOne(['notinum' => $v3key->notinum, 'bunryu_no' => 1, 'sunbun_no' => $g->seq]);
         if ($pgg === null) {
             $pgg = new PurG2bGoods(['notinum' => $v3key->notinum, 'bunryu_no' => 1, 'sunbun_no' => $g->seq]);
         }
         $pgg->attributes = ['info_code' => 0, 'info_name' => '', 'g2b_code' => $g->gcode, 'g2b_myung' => $g->gname];
         $pgg->save();
     }
     //---------------------------------------------
     // pur_res
     //---------------------------------------------
     $v3res = $v3key->v3BidResult;
     if ($v3res !== null and ArrayHelper::isIn($v3key->bidproc, ['R', 'S', 'F'])) {
         $pres = PurRes::findOne(['id' => $pm->id, 'notinum' => $pm->notinum, 'bunryuno' => 1]);
         if ($pres === null) {
             $pres = new PurRes(['id' => $pm->id, 'notinum' => $pm->notinum, 'bunryuno' => 1]);
         }
         $pres->attributes = ['jeibchal_bunho' => intval($rebidno), 'rs_selected_num' => $v3res->selms, 'rs_gechal_ilsi' => $v3res->resdt, 'yega' => $v3res->yega, 'gichoamt' => $v3key->basic];
         switch ($v3key->bidproc) {
             case 'R':
                 $pres->process = 'REBID';
                 break;
             case 'F':
                 $pres->process = 'YUCHAL';
                 break;
             default:
                 $pres->process = 'DONE';
         }
         $ms = explode('/', $v3val->multispare);
         if (isset($ms[0])) {
             $pres->rs_yega1 = $ms[0];
         }
         if (isset($ms[1])) {
             $pres->rs_yega2 = $ms[1];
         }
         if (isset($ms[2])) {
             $pres->rs_yega3 = $ms[2];
         }
         if (isset($ms[3])) {
             $pres->rs_yega4 = $ms[3];
         }
         if (isset($ms[4])) {
             $pres->rs_yega5 = $ms[4];
         }
         if (isset($ms[5])) {
             $pres->rs_yega6 = $ms[5];
         }
         if (isset($ms[6])) {
             $pres->rs_yega7 = $ms[6];
         }
         if (isset($ms[7])) {
             $pres->rs_yega8 = $ms[7];
         }
         if (isset($ms[8])) {
             $pres->rs_yega9 = $ms[8];
         }
         if (isset($ms[9])) {
             $pres->rs_yega10 = $ms[9];
         }
         if (isset($ms[10])) {
             $pres->rs_yega11 = $ms[10];
         }
         if (isset($ms[11])) {
             $pres->rs_yega12 = $ms[11];
         }
         if (isset($ms[12])) {
             $pres->rs_yega13 = $ms[12];
         }
         if (isset($ms[13])) {
             $pres->rs_yega14 = $ms[13];
         }
         if (isset($ms[14])) {
             $pres->rs_yega15 = $ms[14];
         }
         switch ($v3key->bidproc) {
             case 'F':
             case 'S':
                 $pm->sucprocess = 'Y';
                 break;
             case 'R':
                 $pm->isjeibchal = 'Y';
                 break;
         }
         $pm->successamt = $v3res->success1;
         $pm->successname = $v3res->officenm1;
         $pres->save();
         if ($v3key->bidproc === 'S') {
             $v3succoms = V3BidSuccom::findAll(['constdate' => $v3key->constdate, 'bidid' => $v3key->bidid]);
             PurResEnterprise::deleteAll(['id' => $pm->id]);
             $innum = count($v3succoms);
             $n = 1;
             Console::startProgress(0, $innum);
             foreach ($v3succoms as $s) {
                 $pen = new PurResEnterprise(['id' => $pm->id, 'saupja_bunho' => $s->officeno, 'notinum' => $pm->notinum, 'sunwi' => $s->rank, 'upche_myung' => $s->officenm, 'depyoja' => $s->prenm, 'tuchal_gumek' => $s->success, 'tuchal_ryul' => $s->pct, 'bigo' => $s->etc, 'bunryuno' => 1]);
                 $pen->save();
                 Console::updateProgress($n, $innum);
                 $n++;
             }
             Console::endProgress();
         }
     }
     if ($v3val->keyid != $pm->id) {
         $v3val->keyid = $pm->id;
         $v3val->save();
     }
 }