PageRenderTime 49ms CodeModel.GetById 16ms RepoModel.GetById 0ms app.codeStats 0ms

/app/Controller/ComplexesController.php

https://bitbucket.org/dosm123/crm
PHP | 1621 lines | 1553 code | 46 blank | 22 comment | 238 complexity | 1b123a2ecf0af0877be3a53472445598 MD5 | raw file
Possible License(s): LGPL-3.0, GPL-3.0, LGPL-2.1

Large files files are truncated, but you can click here to view the full file

  1. <?php
  2. class DuplicateComplexes{
  3. private static $instance;
  4. public $duplicateComplexes;
  5. private function __construct(){
  6. $duplicateComplexes = array();
  7. }
  8. public static function getDuplicateComplexes(){
  9. if(self::$instance == NULL){
  10. self::$instance = new self();
  11. }
  12. return self::$instance;
  13. }
  14. }
  15. class ComplexConstant{
  16. public $reg_date;
  17. public $complex_code = 0;
  18. public $charge_name = 1;
  19. public $region_name = 2;
  20. public $branch_name = 3;
  21. public $complex_name = 4;
  22. public $first_addr = 5;
  23. public $mid_addr = 6;
  24. public $last_addr = 7;
  25. public $addr = 8;
  26. public $completion_year = 9;
  27. public $space = 10;
  28. public $apt = 11;
  29. public $floor = 12;
  30. public $regident = 13;
  31. public $per_regident = 14;
  32. public $per_year = 15;
  33. public $phone = 16;
  34. public $contract_date = 17;
  35. public $contract_period = 18;
  36. public $status = 19;
  37. public $open_date = 20;
  38. public $install_period = 21;
  39. public $region_score = 27;
  40. public $regident_score = 28;
  41. public $monitor_score = 29;
  42. public $floor_score = 30;
  43. public $total_score = 31;
  44. public $complex_rank = 32;
  45. public $method;
  46. public $worker = 34;
  47. public $install_company_name = 35;
  48. public $comment = 38;
  49. public $total_installed;
  50. public $num_of_open;
  51. public $num_of_not_open;
  52. public $register_mail;
  53. public $installer;
  54. }
  55. class LifeConstant extends ComplexConstant {
  56. private static $instance;
  57. private function __construct(){
  58. }
  59. public static function getInstance(){
  60. if(!self::$instance){
  61. self::$instance = new self();
  62. }
  63. return self::$instance;
  64. }
  65. public function setConstant(){
  66. $complex_code = 0; // varchar
  67. $charge_name = 1; // varchar
  68. $region_name = 2; // varchar
  69. $branch_name = 3; // varchar
  70. $complex_name = 4; // varchar
  71. $first_addr = 5; // varchar
  72. $mid_addr = 6; // varchar
  73. $last_addr = 7; // varchar
  74. $addr = 8; // varchar
  75. $completion_year = 9; // date
  76. $space = 10; // varchar
  77. $apt = 11; // int
  78. $floor = 12; // int
  79. $regident = 13; // int
  80. $contract_date = 14; // date
  81. $contract_period = 15; // int
  82. $status = 16; // int
  83. $open_date = 17; // date
  84. $num_of_open = 18; // int
  85. $num_of_not_open = 19; // int
  86. $region_score = 20; // int
  87. $regident_score = 21; // int
  88. $monitor_score = 22; // int
  89. $floor_score = 23; // int
  90. $total_score = 24; // int
  91. $complex_rank = 25; // char?
  92. $install_period = 26; // date
  93. $phone = 27; // varchar
  94. $worker = 28; // id
  95. $register_mail = 29; // date
  96. $is_board = 30; // varchar???
  97. $install_type = 31;
  98. $install_cost = 32; // varchar
  99. $install_company_name = 33; // varchar
  100. $mb_install_company_name = 34; // varchar
  101. $aed_name = 35; // varchar
  102. $construct_date = 36; // date
  103. $is_install_complete = 37; // date
  104. $is_edu = 38; // date
  105. $elevator_num_of_life = 39;
  106. $apt_num_of_life = 40;
  107. $line_num_of_life = 41;
  108. $total_num_of_life = 42;
  109. $develop_cost_year = 43;
  110. $comment = 44;
  111. }
  112. public $per_regident_life;
  113. public $total_num_of_life = 24;
  114. public $mb_install_company_name = 36;
  115. public $aed_name = 37;
  116. public $is_board;
  117. public $install_type;
  118. public $install_cost;
  119. public $install_status;
  120. public $contruct_date;
  121. public $is_edu;
  122. public $apt_num_of_life;
  123. public $line_num_of_life;
  124. public $elevator_num_of_life;
  125. public $develop_cost_year;
  126. }
  127. class BoardConstant extends ComplexConstant {
  128. private static $instance;
  129. private function __construct(){
  130. }
  131. public static function getInstance(){
  132. if(!self::$instance){
  133. self::$instance = new self();
  134. }
  135. return self::$instance;
  136. }
  137. public function setConstant(){
  138. $complex_code = 0;
  139. $charge_name = 1;
  140. $region_name = 2;
  141. $branch_name = 3;
  142. $complex_name = 4;
  143. $first_addr = 5;
  144. $mid_addr = 6;
  145. $last_addr = 7;
  146. $addr = 8;
  147. $completion_year = 9;
  148. $space = 10;
  149. $apt = 11;
  150. $floor = 12;
  151. $regident = 13;
  152. $inner_elevator = 14;
  153. $outer_elevator = 15;
  154. $total_installed = 16;
  155. $per_regident_board = 17;
  156. $per_regident_year = 18;
  157. $contract_date_board = 19;
  158. $contract_period_board = 20;
  159. $status_board = 21;
  160. $open_date_board = 22;
  161. $method_board = 23;
  162. $open_board = 24;
  163. $closed_board = 25;
  164. $region_score = 26;
  165. $regident_score = 27;
  166. $monitor_score = 28;
  167. $floor_score = 29;
  168. $total_score = 30;
  169. $complex_rank = 31;
  170. $phone = 32;
  171. $worker = 33;
  172. $install_period_board = 34;
  173. $register_mail_board = 35;
  174. $install_company_board = 36;
  175. $size = 37;
  176. $server_name = 38;
  177. $comment = 39;
  178. }
  179. public $inner_elevator = 22;
  180. public $outer_elevator = 23;
  181. public $size = 36;
  182. public $server_name = 37;
  183. }
  184. class ComplexesController extends AppController {
  185. public $name = 'Complexes';
  186. public $paginate = array(
  187. 'limit' => 25,
  188. 'order' => array(
  189. 'Complex.code' => 'desc'
  190. )
  191. );
  192. public function index(){
  193. $this->loadModel('Board');
  194. $this->loadModel('Life');
  195. $this->loadModel('User');
  196. $this->loadmodel('UserInfo');
  197. $data = null;
  198. $conditions = array();
  199. if($this->request->query){
  200. $data = $this->request->query['data'];
  201. $type = $data['Search']['type'];
  202. $input = $data['Search']['keyword'];
  203. if($type == "name"){
  204. $conditions = array("Complex.$type LIKE" => "%$input%");
  205. }
  206. else if($type == "phone"){
  207. $conditions = array("Complex.$type LIKE" => "%$input%");
  208. }
  209. else if($type == "worker"){
  210. $userName = array("UserInfo.name LIKE" => "%$input%");
  211. $userIds = $this->UserInfo->find('list', array('fields' => array('id'), 'conditions'=>$userName));
  212. $conditions = array('Complex.engineer_id' =>$userIds);
  213. }
  214. else{
  215. $conditions = array("UserInfo.name LIKE" => "%$input%");
  216. }
  217. foreach ( array_keys($data['Filter']) as $key) {
  218. if($data['Filter'][$key] != "default"){
  219. // need a special process for foreignKeys
  220. if($key == 'method'){
  221. $boards = $this->Complex->Board->find('all', array('fields' => array('complex_id'),'conditions' => array('Board.method' => $data['Filter'][$key])));
  222. $conditions['Complex.id'] = array_unique(Set::extract('/Board/complex_id', $boards));
  223. }
  224. else if($key == 'status'){
  225. $conditions['status_board'] = ($data['Filter'][$key]-($data['Filter'][$key]%10)) / 10;
  226. $conditions['status_life'] = $data['Filter'][$key] % 10;
  227. }
  228. else if($key == 'start_date'){
  229. if($data['Filter'][$key]){
  230. $date = date('Y-m-d', strtotime($data['Filter'][$key]));
  231. $conditions['Complex.reg_date >='] = $date;
  232. }
  233. }
  234. else if($key == 'end_date'){
  235. if($data['Filter'][$key]){
  236. $date = date('Y-m-d', strtotime($data['Filter'][$key]));
  237. $conditions['Complex.reg_date <='] = $date;
  238. }
  239. }
  240. else {
  241. $conditions[$key] = $data['Filter'][$key];
  242. }
  243. }
  244. }
  245. // 검색 혹은 필터 내용 있으면 검색 처리
  246. }
  247. $conditions['deleted'] = 0;
  248. $this->paginate['conditions'] = $conditions;
  249. $regions = $this->Complex->find('list', array('recursive' => 0, 'fields' => array('region_name'), 'conditions'=> $conditions));
  250. $this->set('regions', array_unique($regions));
  251. $first_addrs = $this->Complex->find('list', array('recursive' => 0, 'fields' => array('first_addr'), 'conditions'=> $conditions));
  252. $this->set('first_addrs', array_unique($first_addrs));
  253. $mid_addrs = $this->Complex->find('list', array('recursive' => 0, 'fields' => array('mid_addr'), 'conditions'=> $conditions));
  254. $this->set('mid_addrs', array_unique($mid_addrs));
  255. $last_addrs = $this->Complex->find('list', array('recursive' => 0, 'fields' => array('last_addr'), 'conditions'=> $conditions));
  256. $this->set('last_addrs', array_unique($last_addrs));
  257. $complex_id = $this->Complex->find('list', array('fields' => array('id'), 'conditions' => $conditions));
  258. $board_methods = $this->Board->find('list', array('fields' => array('method'), 'conditions' => array('complex_id' => $complex_id)));
  259. $life_methods = $this->Life->find('list', array('fields' => array('method'), 'conditions' => array('complex_id' => $complex_id)));
  260. $methods = array_merge($board_methods, $life_methods);
  261. $methods = array_unique($methods);
  262. //$methods = $this->Complex->find('all', array('conditions'=> $conditions));
  263. $this->set('methods', $methods); //array_unique(Set::extract('/Board/method', 'hahaha')));
  264. $this->set('searchinfo', $data);
  265. $this->set('complexes', $this->paginate('Complex'));
  266. $this->set('users', $this->User->find('all'));
  267. }
  268. private function excel_board($worksheet){
  269. $index = BoardConstant::getInstance();
  270. $sheet_data = $this->getDataFromSheet($worksheet);
  271. for($i = 0; $i < count($sheet_data); $i++){
  272. $data = $sheet_data[$i];
  273. if($data[$index->complex_code]){
  274. $complexData = $this->makeComplexData($data, $index);
  275. $complex_id = $this->getComplexId($complexData);
  276. if($complex_id == NULL){
  277. echo pr($data);
  278. }
  279. $num_of_boards = NULL;
  280. $num_of_boards = $this->Complex->Board->query("select count(*) from boards where complex_id = ".$complex_id);
  281. $num_of_boards = $num_of_boards[0][0]['count(*)'];
  282. if($num_of_boards){
  283. $num_of_boards = $data[$index->inner_elevator]+$data[$index->outer_elevator]-$num_of_boards;
  284. }
  285. else{
  286. $num_of_boards = $data[$index->inner_elevator]+$data[$index->outer_elevator];
  287. }
  288. $dup_comp = DuplicateComplexes::getDuplicateComplexes();
  289. if(isset($dup_comp->duplicateComplexes[$complex_id])){
  290. $dup_comp->duplicateComplexes[$complex_id]['board'] = $num_of_boards;
  291. }
  292. for($count = 0; $count < $num_of_boards; $count++){
  293. $boardData = $this->makeBoardData($data);
  294. $boardData['Board']['complex_id'] = $complex_id;
  295. $this->Complex->Board->create();
  296. if($this->Complex->Board->save($boardData)){
  297. continue;
  298. }
  299. else {
  300. $this->Session->setFlash('보드 정보 저장에 실패하였습니다 : '.$complexData['Complex']['code']);
  301. }
  302. }
  303. $temp['Complex']['id'] = $complex_id;
  304. if($this->Board->find('count', array('conditions' => array('Board.complex_id' => $complex_id))) > 0){
  305. $temp['Complex']['status_board'] = 2;
  306. }
  307. else {
  308. $temp['Complex']['status_board'] = 0;
  309. }
  310. $this->Complex->save($temp);
  311. }
  312. else {
  313. continue;
  314. }
  315. }
  316. }
  317. private function excel_life($worksheet){
  318. $index = LifeConstant::getInstance();
  319. $sheet_data = $this->getDataFromSheet($worksheet);
  320. for($i = 0; $i < count($sheet_data); $i++){
  321. $data = $sheet_data[$i];
  322. if($data[$index->complex_code]){
  323. //$worker_id = $this->getWorkerId($this->makeWorkerList($data[$index->worker]));
  324. $complexData = $this->makeComplexData($data, $index);
  325. $complex_id = $this->getComplexId($complexData);
  326. $num_of_lifes = NULL;
  327. $num_of_not_open = $this->Complex->Life->query("select count(id) from lifes where status = 0 and complex_id = ".$complex_id);
  328. $num_of_not_open = $num_of_not_open[0][0]['count(id)'];
  329. $num_of_open = $this->Complex->Life->query("select count(id) from lifes where status = 2 and complex_id = ".$complex_id);
  330. $num_of_open = $num_of_open[0][0]['count(id)'];
  331. if($num_of_not_open){
  332. $num_of_not_open = $data[$index->num_of_not_open]-$num_of_not_open;
  333. }
  334. else{
  335. $num_of_not_open = $data[$index->num_of_not_open];
  336. }
  337. if($num_of_open){
  338. $num_of_open = $data[$index->num_of_open] - $num_of_open;
  339. }
  340. else {
  341. $num_of_open = $data[$index->num_of_open];
  342. }
  343. $dup_comp = DuplicateComplexes::getDuplicateComplexes();
  344. if(isset($dup_comp->duplicateComplexes[$complex_id])){
  345. $dup_comp->duplicateComplexes[$complex_id]['life'] = $num_of_not_open + $num_of_open;
  346. }
  347. for($count = 0; $count < $num_of_not_open; $count++){
  348. $lifeData = $this->makeLifeData($data);
  349. $lifeData['Life']['complex_id'] = $complex_id;
  350. $lifeData['Life']['status'] = 0;
  351. $this->Complex->Life->create();
  352. if($this->Complex->Life->save($lifeData)){
  353. continue;
  354. }
  355. else {
  356. $this->Session->setFlash('라이프 정보 저장에 실패하였습니다 : '.$complexData['Complex']['code']);
  357. }
  358. }
  359. for($count = 0; $count < $num_of_open; $count++){
  360. $lifeData = $this->makeLifeData($data);
  361. $lifeData['Life']['complex_id'] = $complex_id;
  362. $lifeData['Life']['status'] = 2;
  363. $this->Complex->Life->create();
  364. if($this->Complex->Life->save($lifeData)){
  365. continue;
  366. }
  367. else {
  368. $this->Session->setFlash('라이프 정보 저장에 실패하였습니다 : '.$complexData['Complex']['code']);
  369. }
  370. }
  371. $temp['Complex']['id'] = $complex_id;
  372. if($this->Life->find('count', array('conditions' => array('Life.complex_id' => $complex_id))) > 0){
  373. $temp['Complex']['status_life'] = 2;
  374. }
  375. else {
  376. $temp['Complex']['status_life'] = 0;
  377. }
  378. $this->Complex->save($temp);
  379. }
  380. else {
  381. continue;
  382. }
  383. }
  384. }
  385. private function getStatusValue($status){
  386. $status = trim($status);
  387. if($status == '미개통'){
  388. return 0;
  389. }
  390. else if ($status == '일부개통'){
  391. return 1;
  392. }
  393. else if ($status == '개통'){
  394. return 2;
  395. }
  396. else {
  397. return 0;
  398. }
  399. }
  400. private function getDataFromSheet($sheet){
  401. $highestRow = $sheet->getHighestRow();
  402. $highestColumn = $sheet->getHighestColumn();
  403. $highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn);
  404. $sheet_data = array();
  405. for ($row = 2; $row <= $highestRow; ++$row) {
  406. for ($col = 0; $col <= $highestColumnIndex; ++$col) {
  407. $value=parent::eucconv(trim($sheet->getCellByColumnAndRow($col, $row)->getValue()));
  408. if(is_array($sheet_data) ) { $sheet_data[$row-2][$col]=$value; }
  409. }
  410. }
  411. return $sheet_data;
  412. }
  413. private function makeComplexData($data, $index){
  414. $complexData = array();
  415. if($index->reg_date == NULL){
  416. $complexData['Complex']['reg_date'] = date('Y-m-d');
  417. }
  418. else {
  419. $complexData['Complex']['reg_date'] = $data[$index->reg_date];
  420. }
  421. $complexData['Complex']['code'] = $data[$index->complex_code];
  422. $complexData['Complex']['charge_name'] = $data[$index->charge_name];
  423. $complexData['Complex']['region_name'] = $data[$index->region_name];
  424. $complexData['Complex']['branch_name'] = $data[$index->branch_name];
  425. $complexData['Complex']['name'] = $data[$index->complex_name];
  426. $complexData['Complex']['first_addr'] = $data[$index->first_addr];
  427. $complexData['Complex']['mid_addr'] = $data[$index->mid_addr];
  428. $complexData['Complex']['last_addr'] = $data[$index->last_addr];
  429. $complexData['Complex']['addr'] = $data[$index->addr];
  430. $complexData['Complex']['completion_year'] = PHPExcel_Style_NumberFormat::toFormattedString(round($data[$index->completion_year]), "Y-m-d");
  431. $complexData['Complex']['apt'] = $data[$index->apt];
  432. $complexData['Complex']['floor'] = $data[$index->floor];
  433. $complexData['Complex']['regident'] = $data[$index->regident];
  434. $complexData['Complex']['space'] = $data[$index->space];
  435. $complexData['Complex']['phone'] = $data[$index->phone];
  436. if(get_class($index) == "LifeConstant"){
  437. $complexData['Complex']['status_life'] = $this->getStatusValue($data[$index->status_life]);
  438. $complexData['Complex']['contract_date_life'] = PHPExcel_Style_NumberFormat::toFormattedString(round($data[$index->contract_date_life]), 'Y-m-d');
  439. $complexData['Complex']['contract_period_life'] = $data[$index->contract_period_life];
  440. $complexData['Complex']['aed_name_life'] = $data[$index->aed_name_life];
  441. $complexData['Complex']['install_company_name_life'] = $data[$index->install_company_name_life];
  442. $complexData['Complex']['mb_install_company_name_life'] = $data[$index->mb_install_company_name_life];
  443. $complexData['Complex']['register_mail_life'] = $data[$index->register_mail_life];
  444. $complexData['Complex']['install_status_life'] = $data[$index->install_status_life];
  445. $complexData['Complex']['open_date_life'] = $data[$index->open_date_life];
  446. $complexData['Complex']['install_cost_life'] = $data[$index->install_cost_life];
  447. $complexData['Complex']['is_install_complete_life'] = PHPExcel_Style_NumberFormat::toFormattedString(round($data[$index->is_install_complete_life]), 'Y-m-d');
  448. $complexData['Complex']['is_edu_life'] = $data[$index->is_edu_life];
  449. $complexData['Complex']['is_board_installed'] = $data[$index->is_board_installed];
  450. $complexData['Complex']['install_type_life'] = $data[$index->install_type_life];
  451. $complexData['Complex']['construct_date_life'] = PHPExcel_Style_NumberFormat::toFormattedString(round($data[$index->construct_date_life]), 'Y-m-d');
  452. $complexData['Complex']['elevator_num_of_life'] = $data[$index->elevator_num_of_life];
  453. $complexData['Complex']['apt_num_of_life'] = $data[$index->apt_num_of_life];
  454. $complexData['Complex']['line_num_of_life'] = $data[$index->line_num_of_life];
  455. $complexData['Complex']['develop_cost_year_life'] = $data[$index->develop_cost_year_life];
  456. $complexData['Complex']['method_life'] = '미지정';
  457. }
  458. else if(get_class($index) == "BoardConstant"){
  459. $complexData['Complex']['status_board'] = $this->getStatusValue($data[$index->status_board]);
  460. $complexData['Complex']['contract_date_board'] = PHPExcel_Style_NumberFormat::toFormattedString(round($data[$index->contract_date_board]), 'Y-m-d');
  461. $complexData['Complex']['contract_period_board'] = $data[$index->contract_period_board];
  462. $complexData['Complex']['per_regident_board'] = $data[$index->per_regident_board];
  463. $complexData['Complex']['server_name_board'] = $data[$index->server_name_board];
  464. $complexData['Complex']['size'] = $data[$index->size];
  465. $complexData['Complex']['install_company_name_board'] = $data[$index->install_company_name_board];
  466. $complexData['Complex']['server_name_board'] = $data[$index->server_name_board];
  467. $complexData['Complex']['method_board'] = $data[$index->method_board];
  468. $complexData['Complex']['open_date_board'] = $data[$index->open_date_board];
  469. $complexData['Complex']['install_period_board'] = $data[$index->install_period_board];
  470. $complexData['Complex']['register_mail_board'] = $data[$index->register_mail_board];
  471. }
  472. $complexData['Complex']['region_score'] = $data[$index->region_score];
  473. $complexData['Complex']['regident_score'] = $data[$index->regident_score];
  474. $complexData['Complex']['monitor_score'] = $data[$index->monitor_score];
  475. $complexData['Complex']['floor_score'] = $data[$index->total_score];
  476. $complexData['Complex']['total_score'] = $data[$index->total_score];
  477. $complexData['Complex']['complex_rank'] = $data[$index->complex_rank];
  478. $complexData['Complex']['engineer_id'] = $this->getUserIdByName($data[$index->worker]);
  479. $complexData['Complex']['installer_id'] = $this->getUserIdByName($data[$index->installer]);
  480. return $complexData;
  481. }
  482. private function makeBoardData($data){
  483. $index = BoardConstant::getInstance();
  484. $boardData = array();
  485. if($index->reg_date == NULL){
  486. $boardData['Board']['reg_date'] = date('Y-m-d');
  487. }
  488. else {
  489. $boardData['Board']['reg_date'] = $data[$index->reg_date];
  490. }
  491. $boardData['Board']['location'] = '등록요망';
  492. $boardData['Board']['serial'] = uniqid().'변경요망';
  493. $boardData['Board']['mac'] = '등록요망';
  494. $boardData['Board']['bracket'] = '등록요망';
  495. $boardData['Board']['method'] = $data[$index->method_board];
  496. $boardData['Board']['status'] = $this->getStatusValue($data[$index->status_board]);
  497. $boardData['Board']['server_name'] = $data[$index->server_name_board];
  498. $boardData['Board']['size'] = str_replace('"','',$data[$index->size]);
  499. $boardData['Board']['install_company_name'] = $data[$index->install_company_name_board];
  500. return $boardData;
  501. }
  502. private function getUserIdByName($username){
  503. $this->loadModel('UserInfo');
  504. $user = $this->UserInfo->findByName($username);
  505. if($user){
  506. return $user['UserInfo']['id'];
  507. }
  508. else {
  509. return 999;
  510. }
  511. }
  512. private function makeWorkerList($workerString){
  513. $workers = split(',', $workerString);
  514. foreach (array_keys($workers) as $key) {
  515. $workers[$key] = trim($workers[$key]);
  516. }
  517. return $workers;
  518. }
  519. private function getWorkerId($workers){
  520. if($workers){
  521. if(is_array($workers)){
  522. $this->loadModel('User');
  523. $this->loadModel('ComplexUserInfos');
  524. foreach ($workers as $worker){
  525. if($worker == ''){
  526. continue;
  527. }
  528. $tmp_worker = $this->User->UserInfo->find('all', array('conditions' => array('name' => $worker), 'recursive'=>0));
  529. if(!$tmp_worker){
  530. $data = array('User' => array('userid' => uniqid(), 'password' => 'dummy', 'dept_id' => '99'), 'UserInfo' => array('reg_date' => date('Y-m-d'), 'rank' => 'dummy', 'pay' => 0, 'name' => $worker, 'phone' => 0, 'email' => 'dummy'));
  531. $this->User->create();
  532. $this->User->saveAll($data);
  533. }
  534. }
  535. //echo pr(Set::extract('/UserInfo', $this->User->UserInfo->find('all', array('conditions'=>array('name'=>$workers)))));
  536. return Set::extract('/UserInfo/id', $this->User->UserInfo->find('all', array('conditions'=>array('name'=>$workers), 'recursive' => 0)));
  537. }
  538. }
  539. else {
  540. return null;
  541. }
  542. }
  543. private function makeLifeData($data){
  544. $index = LifeConstant::getInstance();
  545. $lifeData = array();
  546. if($index->reg_date == NULL){
  547. $lifeData['Life']['reg_date'] = date('Y-m-d');
  548. }
  549. else {
  550. $lifeData['Life']['reg_date'] = $data[$index->reg_date];
  551. }
  552. $lifeData['Life']['location'] = '등록요망';
  553. $lifeData['Life']['serial'] = uniqid().'변경요망';
  554. $lifeData['Life']['mac'] = '등록요망';
  555. $lifeData['Life']['bracket'] = '등록요망';
  556. // 잠깐 임시값 넣는 기능 만듬 라이프는 메소드가 없네
  557. if($index->method){
  558. $lifeData['Life']['method'] = $data[$index->method];
  559. }
  560. else {
  561. $lifeData['Life']['method'] = '미지정';
  562. }
  563. $lifeData['Life']['aed_name'] = $data[$index->aed_name_life];
  564. $lifeData['Life']['install_company_name'] = $data[$index->install_company_name_life];
  565. $lifeData['Life']['mb_install_company_name'] = $data[$index->mb_install_company_name_life];
  566. return $lifeData;
  567. }
  568. private function getComplexId($complexData){
  569. if($complexData['Complex']['code'] == NULL
  570. || $complexData['Complex']['name'] == NULL
  571. || $complexData['Complex']['first_addr'] == NULL
  572. || $complexData['Complex']['mid_addr'] == NULL
  573. || $complexData['Complex']['last_addr'] == NULL
  574. || $complexData['Complex']['addr'] == NULL){
  575. if( $complexData['Complex']['code']==NULL ){
  576. $complexData['Complex']['code'] = uniqueid();
  577. }
  578. else if ( $complexData['Complex']['name'] == NULL){
  579. $complexData['Complex']['name'] = " ";
  580. }
  581. else if($complexData['Complex']['first_addr'] == NULL){
  582. $complexData['Complex']['first_addr'] = " ";
  583. }
  584. else if($complexData['Complex']['mid_addr'] == NULL){
  585. $complexData['Complex']['mid_addr'] = " ";
  586. }
  587. else if($complexData['Complex']['last_addr'] == NULL){
  588. $complexData['Complex']['last_addr'] = " ";
  589. }
  590. else if($complexData['Complex']['addr'] == NULL){
  591. $complexData['Complex']['addr'] = " ";
  592. }
  593. }
  594. $complex = $this->Complex->findByCode($complexData['Complex']['code'], array('recursive' => 0));
  595. $dup_comp = DuplicateComplexes::getDuplicateComplexes();
  596. if($complex){
  597. $dup_comp->duplicateComplexes[$complex['Complex']['id']]['complex_code'] = $complex['Complex']['code'];
  598. $dup_comp->duplicateComplexes[$complex['Complex']['id']]['complex_name'] = $complex['Complex']['name'];
  599. return $complex['Complex']['id'];
  600. }
  601. else{
  602. $complex = $this->Complex->create();
  603. if($this->Complex->save($complexData)){
  604. $complex = $this->Complex->findByCode($complexData['Complex']['code'], array('recursive' => 0));
  605. echo $this->Complex->lastInsertedId;
  606. $dup_comp->duplicateComplexes[$complex['Complex']['id']]['complex_code'] = $complex['Complex']['code'];
  607. $dup_comp->duplicateComplexes[$complex['Complex']['id']]['complex_name'] = $complex['Complex']['name'];
  608. return $complex['Complex']['id'];
  609. }
  610. else{
  611. $this->Session->setFlash('단지정보 저장에 실패하였습니다');
  612. }
  613. }
  614. }
  615. private function isFileExt($file, $fileType){
  616. if(is_array($fileType)){
  617. $result = false;
  618. foreach ( $fileType as $type ) {
  619. if(pathinfo($file['name'], PATHINFO_EXTENSION) == $type){
  620. $result = true;
  621. }
  622. }
  623. return $result;
  624. }
  625. else{
  626. return pathinfo($file['name'], PATHINFO_EXTENSION) == $type;
  627. }
  628. }
  629. private function setBoardConstant($sheet){
  630. $board = BoardConstant::getInstance();
  631. $row = 1; // 컬럼 이름있는 부분
  632. $highestColumn = $sheet->getHighestColumn();
  633. $highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn);
  634. for ($col = 0; $col <= $highestColumnIndex; ++$col) {
  635. $value=parent::eucconv($sheet->getCellByColumnAndRow($col, $row)->getValue());
  636. switch($value){
  637. case '아파트신코드':
  638. $board->complex_code = $col;
  639. break;
  640. case '담당구분':
  641. $board->charge_name = $col;
  642. break;
  643. case '권역':
  644. $board->region_name = $col;
  645. break;
  646. case '지사구분':
  647. $board->branch_name = $col;
  648. break;
  649. case 'APT명':
  650. $board->complex_name = $col;
  651. break;
  652. case '광역시/도':
  653. $board->first_addr = $col;
  654. break;
  655. case '시/군/구':
  656. $board->mid_addr = $col;
  657. break;
  658. case '읍/면/동':
  659. $board->last_addr = $col;
  660. break;
  661. case '주소':
  662. $board->addr = $col;
  663. break;
  664. case '준공연도':
  665. $board->completion_year = $col;
  666. break;
  667. case '평수(㎡)':
  668. $board->space = $col;
  669. break;
  670. case '동수':
  671. $board->apt = $col;
  672. break;
  673. case '층수':
  674. $board->floor = $col;
  675. break;
  676. case '세대수':
  677. $board->regident = $col;
  678. break;
  679. case '승강기내':
  680. $board->inner_elevator = $col;
  681. break;
  682. case '예외설치':
  683. $board->outer_elevator = $col;
  684. break;
  685. case '총설치수량':
  686. $board->total_installed = $col;
  687. break;
  688. case '세대당':
  689. $board->per_regident_board = $col;
  690. break;
  691. case '연간':
  692. $board->per_year = $col;
  693. break;
  694. case '계약일':
  695. $board->contract_date_board = $col;
  696. break;
  697. case '계약기간(년)':
  698. $board->contract_period_board = $col;
  699. break;
  700. case '회선개통여부(공란시미개통)':
  701. $board->status_board = $col;
  702. break;
  703. case '개통일(공란시정보없음)':
  704. $board->open_date_board = $col;
  705. break;
  706. case '통신방식':
  707. $board->method_board = $col;
  708. break;
  709. case '개통수량':
  710. $board->num_of_open = $col;
  711. break;
  712. case '미개통수량':
  713. $board->num_of_not_open = $col;
  714. break;
  715. case '권역점수':
  716. $board->region_score = $col;
  717. break;
  718. case '세대수점수':
  719. $board->regident_score = $col;
  720. break;
  721. case '모니터수점수':
  722. $board->monitor_score = $col;
  723. break;
  724. case '층수점수':
  725. $board->floor_score = $col;
  726. break;
  727. case '총점':
  728. $board->total_score = $col;
  729. break;
  730. case '등급':
  731. $board->complex_rank = $col;
  732. break;
  733. case '관리소 연락처':
  734. $board->phone = $col;
  735. break;
  736. case '영업담당자':
  737. $board->worker = $col;
  738. break;
  739. case '설치업자':
  740. $board->installer = $col;
  741. break;
  742. case '인입시기구분':
  743. $board->install_period_board = $col;
  744. break;
  745. case '등기발송여부':
  746. $board->register_mail_board = $col;
  747. break;
  748. case '설치업체':
  749. $board->install_company_name_board = $col;
  750. break;
  751. case '사이즈':
  752. $board->size = $col;
  753. break;
  754. case '서버':
  755. $board->server_name_board = $col;
  756. break;
  757. case '비고':
  758. $board->comment = $col;
  759. break;
  760. }
  761. }
  762. }
  763. private function setLifeConstant($sheet){
  764. $row = 1;
  765. $life = LifeConstant::getInstance();
  766. $highestColumn = $sheet->getHighestColumn();
  767. $highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn);
  768. $sheet_data = array();
  769. for ($col = 0; $col <= $highestColumnIndex; ++$col) {
  770. $value=parent::eucconv($sheet->getCellByColumnAndRow($col, $row)->getValue());
  771. switch($value){
  772. case '아파트신코드':
  773. $life->complex_code = $col;
  774. break;
  775. case '담당구분':
  776. $life->charge_name = $col;
  777. break;
  778. case '권역':
  779. $life->region_name = $col;
  780. break;
  781. case '지사구분':
  782. $life->branch_name = $col;
  783. break;
  784. case 'APT명':
  785. $life->complex_name = $col;
  786. break;
  787. case '광역시,도':
  788. $life->first_addr = $col;
  789. break;
  790. case '시,군,구':
  791. $life->mid_addr = $col;
  792. break;
  793. case '읍,면,동':
  794. $life->last_addr = $col;
  795. break;
  796. case '나머지주소':
  797. $life->addr = $col;
  798. break;
  799. case '준공연도':
  800. $life->completion_year = $col;
  801. break;
  802. case '평수':
  803. $life->space = $col;
  804. break;
  805. case '동수':
  806. $life->apt = $col;
  807. break;
  808. case '층수':
  809. $life->floor = $col;
  810. break;
  811. case '세대수':
  812. $life->regident = $col;
  813. break;
  814. case '계약일(예정일)':
  815. $life->contract_date_life = $col;
  816. break;
  817. case '계약기간':
  818. $life->contract_period_life = $col;
  819. break;
  820. case '회선개통여부':
  821. $life->status_life = $col;
  822. break;
  823. case '개통일':
  824. $life->open_date_life = $col;
  825. break;
  826. case '개통수량':
  827. $life->num_of_open = $col;
  828. break;
  829. case '미개통수량':
  830. $life->num_of_not_open = $col;
  831. break;
  832. case '권역점수':
  833. $life->region_score = $col;
  834. break;
  835. case '세대수점수':
  836. $life->regident_score = $col;
  837. break;
  838. case '모니터수점수':
  839. $life->monitor_score = $col;
  840. break;
  841. case '층수점수':
  842. $life->floor_score = $col;
  843. break;
  844. case '총점':
  845. $life->total_score = $col;
  846. break;
  847. case '등급':
  848. $life->complex_rank = $col;
  849. break;
  850. case '인입시기구분':
  851. $life->install_period_life = $col;
  852. break;
  853. case '관리소 연락처':
  854. $life->phone = $col;
  855. break;
  856. case '영업담당자':
  857. $life->worker = $col;
  858. break;
  859. case '설치업자':
  860. $life->installer = $col;
  861. break;
  862. case '등기발송여부':
  863. $life->register_mail_life = $col;
  864. break;
  865. case '보드인입여부':
  866. $life->is_board_installed = $col;
  867. break;
  868. case '인입유형':
  869. $life->install_type_life = $col;
  870. break;
  871. case '설치/발전기금/수수료':
  872. $life->install_cost_life = $col;
  873. break;
  874. case '설치업체':
  875. $life->install_company_name_life = $col;
  876. break;
  877. case 'M-B설치업체':
  878. $life->mb_install_company_name_life = $col;
  879. break;
  880. case 'AED':
  881. $life->aed_name_life = $col;
  882. break;
  883. case '개통진행':
  884. $life->install_status_life = $col;
  885. break;
  886. case '작업예정일':
  887. $life->construct_date_life = $col;
  888. break;
  889. case '설치완료확인':
  890. $life->is_install_complete_life = $col;
  891. break;
  892. case '교육여부':
  893. $life->is_edu_life = $col;
  894. break;
  895. case '승강기모니터수':
  896. $life->elevator_num_of_life = $col;
  897. break;
  898. case '동별총설치수량':
  899. $life->apt_num_of_life = $col;
  900. break;
  901. case '라인별추가설치수량':
  902. $life->line_num_of_life = $col;
  903. break;
  904. case '총설치수량':
  905. $life->total_num_of_life = $col;
  906. break;
  907. case '연간발전기금':
  908. $life->develop_cost_year_life = $col;
  909. break;
  910. case '비고':
  911. $life->comment = $col;
  912. break;
  913. }
  914. }
  915. }
  916. public function excelOut(){
  917. $this->loadModel('Board');
  918. $this->loadModel('Complex');
  919. $this->loadModel('Life');
  920. $this->loadModel('UserInfo');
  921. error_reporting(E_ALL);
  922. date_default_timezone_set('Asia/Seoul');
  923. $conditions = array();
  924. if($this->request->query){
  925. $data = $this->request->query['data'];
  926. if(isset($data['Search'])){
  927. $type = $data['Search']['type'];
  928. $keyword = $data['Search']['keyword'];
  929. if($type == 'name'){
  930. $conditions = array("Complex.$type LIKE" => "%$keyword%");
  931. }
  932. else if($type == 'phone'){
  933. $conditions = array("Complex.$type LIKE" => "%$keyword%");
  934. }
  935. else if($type == 'worker'){
  936. $engineer_id = $this->UserInfo->find('list', array('fields' => array('id'), 'conditions' => array("UserInfo.name LIKE" => "%$keyword%")));
  937. $conditions = array("Complex.engineer_id" => $engineer_id);
  938. }
  939. else{
  940. $conditions = array();
  941. }
  942. }
  943. if(isset($data['Filter'])){
  944. foreach ( array_keys($data['Filter']) as $key) {
  945. if($data['Filter'][$key] != "default"){
  946. // need a special process for foreignKeys
  947. if($key == 'method'){
  948. $boards = $this->Complex->Board->find('all', array('fields' => array('complex_id'),'conditions' => array('Board.method' => $data['Filter'][$key])));
  949. $conditions['Complex.id'] = array_unique(Set::extract('/Board/complex_id', $boards));
  950. }
  951. else if($key == 'status'){
  952. $conditions['status_board'] = ($data['Filter'][$key]-($data['Filter'][$key]%10)) / 10;
  953. $conditions['status_life'] = $data['Filter'][$key] % 10;
  954. }
  955. else if($key == 'start_date'){
  956. if($data['Filter'][$key]){
  957. $date = date('Y-m-d', strtotime($data['Filter'][$key]));
  958. $conditions['Complex.reg_date >='] = $date;
  959. }
  960. }
  961. else if($key == 'end_date'){
  962. if($data['Filter'][$key]){
  963. $date = date('Y-m-d', strtotime($data['Filter'][$key]));
  964. $conditions['Complex.reg_date <='] = $date;
  965. }
  966. }
  967. else {
  968. $conditions[$key] = $data['Filter'][$key];
  969. }
  970. }
  971. }
  972. }
  973. if(isset($data['Scope'])){
  974. $conditions['Complex.id BETWEEN ? AND ?'] = array($data['Scope']['start'], $data['Scope']['end']);
  975. }
  976. }
  977. $conditions['deleted'] = 0;
  978. $count = $this->Complex->find('count', array('conditions' => $conditions));
  979. if($count > 500){
  980. $num_of_links = ceil($count / 500);
  981. $this->set('num_of_links', $num_of_links);
  982. }
  983. else{
  984. $currentFileNum = 1;
  985. if(isset($this->request->query['data']['filenum'])){
  986. $currentFileNum = $this->request->query['data']['filenum'];
  987. }
  988. $currentTime = date('Y-m-d H:i:s');
  989. if(isset($this->request->query['data']['date'])){
  990. $currentTime = $this->request->query['data']['date'];
  991. }
  992. $users = $this->UserInfo->find('list', array('fields' => array('UserInfo.name')));
  993. /** PHPExcel */
  994. require_once ('./Classes/PHPExcel.php');
  995. // Create new PHPExcel object
  996. $objPHPExcel = new PHPExcel();
  997. // Set properties
  998. $objPHPExcel->getProperties()->setCreator("CRM System")
  999. ->setLastModifiedBy("CRM System")
  1000. ->setTitle("CRM System Complex report")
  1001. ->setSubject("CRM System Complex report")
  1002. ->setDescription("CRM System Complex report on {$currentTime}")
  1003. ->setKeywords("Complex")
  1004. ->setCategory("Complex result");
  1005. // Add some data
  1006. $complexInfos = $this->Complex->find('all', array('conditions'=> $conditions));
  1007. // 보드 타이틀 생성
  1008. $objPHPExcel->setActiveSheetIndex(0)
  1009. ->setCellValue('A1', parent::utf8conv('아파트신코드'))
  1010. ->setCellValue('B1', parent::utf8conv('담당구분'))
  1011. ->setCellValue('C1', parent::utf8conv('권역'))
  1012. ->setCellValue('D1', parent::utf8conv('지사구분'))
  1013. ->setCellValue('E1', parent::utf8conv('APT명'))
  1014. ->setCellValue('F1', parent::utf8conv('광역시/도'))
  1015. ->setCellValue('G1', parent::utf8conv('시/군/구'))
  1016. ->setCellValue('H1', parent::utf8conv('읍/면/동'))
  1017. ->setCellValue('I1', parent::utf8conv('주소'))
  1018. ->setCellValue('J1', parent::utf8conv('준공연도'))
  1019. ->setCellValue('K1', parent::utf8conv('평수(㎡)'))
  1020. ->setCellValue('L1', parent::utf8conv('동수'))
  1021. ->setCellValue('M1', parent::utf8conv('층수'))
  1022. ->setCellValue('N1', parent::utf8conv('세대수'))
  1023. ->setCellValue('O1', parent::utf8conv('승강기내'))
  1024. ->setCellValue('P1', parent::utf8conv('예외설치'))
  1025. ->setCellValue('Q1', parent::utf8conv('총설치수량'))
  1026. ->setCellValue('R1', parent::utf8conv('세대당'))
  1027. ->setCellValue('S1', parent::utf8conv('연간'))
  1028. ->setCellValue('T1', parent::utf8conv('계약일'))
  1029. ->setCellValue('U1', parent::utf8conv('계약기간(년)'))
  1030. ->setCellValue('V1', parent::utf8conv('회선개통여부(공란시미개통)'))
  1031. ->setCellValue('W1', parent::utf8conv('개통일(공란시정보없음)'))
  1032. ->setCellValue('X1', parent::utf8conv('통신방식'))
  1033. ->setCellValue('Y1', parent::utf8conv('개통수량'))
  1034. ->setCellValue('Z1', parent::utf8conv('미개통수량'))
  1035. ->setCellValue('AA1', parent::utf8conv('권역점수'))
  1036. ->setCellValue('AB1', parent::utf8conv('세대수점수'))
  1037. ->setCellValue('AC1', parent::utf8conv('모니터수점수'))
  1038. ->setCellValue('AD1', parent::utf8conv('층수점수'))
  1039. ->setCellValue('AE1', parent::utf8conv('총점'))
  1040. ->setCellValue('AF1', parent::utf8conv('등급'))
  1041. ->setCellValue('AG1', parent::utf8conv('관리소 연락처'))
  1042. ->setCellValue('AH1', parent::utf8conv('영업담당자'))
  1043. ->setCellValue('AI1', parent::utf8conv('인입시기구분'))
  1044. ->setCellValue('AJ1', parent::utf8conv('등기발송여부'))
  1045. ->setCellValue('AK1', parent::utf8conv('설치업체'))
  1046. ->setCellValue('AL1', parent::utf8conv('사이즈'))
  1047. ->setCellValue('AM1', parent::utf8conv('서버'))
  1048. ->setCellValue('AN1', parent::utf8conv('비고'))
  1049. ->setCellValue('AO1', parent::utf8conv('설치업자'));
  1050. // 보드 정보 담기
  1051. $index = 2;
  1052. foreach($complexInfos as $complexInfo){
  1053. if($this->Board->find('count', array('conditions' => array('Board.complex_id' => $complexInfo['Complex']['id']))) == 0){
  1054. continue;
  1055. }
  1056. $objPHPExcel->setActiveSheetIndex(0)
  1057. ->setCellValue("A{$index}", parent::utf8conv($complexInfo['Complex']['code']))
  1058. ->setCellValue("B{$index}", parent::utf8conv($complexInfo['Complex']['charge_name']))
  1059. ->setCellValue("C{$index}", parent::utf8conv($complexInfo['Complex']['region_name']))
  1060. ->setCellValue("D{$index}", parent::utf8conv($complexInfo['Complex']['branch_name']))
  1061. ->setCellValue("E{$index}", parent::utf8conv($complexInfo['Complex']['name']))
  1062. ->setCellValue("F{$index}", parent::utf8conv($complexInfo['Complex']['first_addr']))
  1063. ->setCellValue("G{$index}", parent::utf8conv($complexInfo['Complex']['mid_addr']))
  1064. ->setCellValue("H{$index}", parent::utf8conv($complexInfo['Complex']['last_addr']))
  1065. ->setCellValue("I{$index}", parent::utf8conv($complexInfo['Complex']['addr']))
  1066. ->setCellValue("J{$index}", parent::utf8conv($complexInfo['Complex']['completion_year']))
  1067. ->setCellValue("K{$index}", parent::utf8conv($complexInfo['Complex']['space']))
  1068. ->setCellValue("L{$index}", parent::utf8conv($complexInfo['Complex']['apt']))
  1069. ->setCellValue("M{$index}", parent::utf8conv($complexInfo['Complex']['floor']))
  1070. ->setCellValue("N{$index}", parent::utf8conv($complexInfo['Complex']['regident']))
  1071. ->setCellValue("O{$index}", $this->Board->find('count', array('conditions' => array('Board.complex_id' => $complexInfo['Complex']['id'], 'Board.isin' => 1))))
  1072. ->setCellValue("P{$index}", $this->Board->find('count', array('conditions' => array('Board.complex_id' => $complexInfo['Complex']['id'], 'Board.isin' => 0))))
  1073. ->setCellValue("Q{$index}", $this->Board->find('count', array('conditions' => array('Board.complex_id' => $complexInfo['Complex']['id']))))
  1074. ->setCellValue("R{$index}", parent::utf8conv($complexInfo['Complex']['per_regident_board']))
  1075. ->setCellValue("S{$index}", parent::utf8conv($complexInfo['Complex']['per_regident_board'] * $complexInfo['Complex']['regident'] * 12))
  1076. ->setCellValue("T{$index}", parent::utf8conv($complexInfo['Complex']['contract_date_board']))
  1077. ->setCellValue("U{$index}", parent::utf8conv($complexInfo['Complex']['contract_period_board']));
  1078. $status = "";
  1079. if($complexInfo['Complex']['status_board'] == -1){
  1080. $status = '미지정';
  1081. }
  1082. else if($complexInfo['Complex']['status_board'] == 0){
  1083. $status = '미개통';
  1084. }
  1085. else if($complexInfo['Complex']['status_board'] == 1){
  1086. $status = '부분개통';
  1087. }
  1088. else if($complexInfo['Complex']['status_board'] == 2){
  1089. $status = '개통';
  1090. }
  1091. $objPHPExcel->setActiveSheetIndex(0)
  1092. ->setCellValue("V{$index}", parent::utf8conv($status))
  1093. ->setCellValue("W{$index}", parent::utf8conv($complexInfo['Complex']['open_date_board']))
  1094. ->setCellValue("X{$index}", parent::utf8conv($complexInfo['Complex']['method_board']))
  1095. ->setCellValue("Y{$index}", $this->Board->find('count', array('conditions' => array('Board.complex_id' => $complexInfo['Complex']['id'], 'Board.status' => 2))))
  1096. ->setCellValue("Z{$index}", $this->Board->find('count', array('conditions' => array('Board.complex_id' => $complexInfo['Complex']['id'], 'Board.status' => 0))))
  1097. ->setCellValue("AA{$index}",parent::utf8conv($complexInfo['Complex']['region_score']))
  1098. ->setCellValue("AB{$index}",parent::utf8conv($complexInfo['Complex']['regident_score']))
  1099. ->setCellValue("AC{$index}",parent::utf8conv($complexInfo['Complex']['monitor_score']))
  1100. ->setCellValue("AD{$index}",parent::utf8conv($complexInfo['Complex']['floor_score']))
  1101. ->setCellValue("AE{$index}",parent::utf8conv($complexInfo['Complex']['total_score']))
  1102. ->setCellValue("AF{$index}",parent::utf8conv($complexInfo['Complex']['complex_rank']))
  1103. ->setCellValue("AG{$index}",parent::utf8conv($complexInfo['Complex']['phone']))
  1104. ->setCellValue("AH{$index}",parent::utf8conv($users[$complexInfo['Complex']['engineer_id']]))
  1105. ->setCellValue("AI{$index}",parent::utf8conv($complexInfo['Complex']['install_period_board']))
  1106. ->setCellValue("AJ{$index}",parent::utf8conv($complexInfo['Complex']['register_mail_board']))
  1107. ->setCellValue("AK{$index}",parent::utf8conv($complexInfo['Complex']['install_company_name_board']))
  1108. ->setCellValue("AL{$index}",parent::utf8conv($complexInfo['Complex']['size_board']))
  1109. ->setCellValue("AM{$index}",parent::utf8conv($complexInfo['Complex']['server_name_board']))
  1110. ->setCellValue("AN{$index}", parent::utf8conv($complexInfo['Complex']['comment']))
  1111. ->setCellValue("AO{$index}",parent::utf8conv($users[$complexInfo['Complex']['installer_id']]));
  1112. $index++;
  1113. }
  1114. // Rename sheet
  1115. $objPHPExcel->getActiveSheet()->setTitle(parent::utf8conv('보드상세'));
  1116. // 라이프 컬럼 상수 생성 왜 한걸까?
  1117. $lifeConstant = LifeConstant::getInstance();
  1118. $lifeConstant->setConstant();
  1119. // 라이프 타이틀 생성
  1120. $objPHPExcel->createSheet();
  1121. $objPHPExcel->setActiveSheetIndex(1)
  1122. ->setCellValue('A1', parent::utf8conv('아파트신코드'))
  1123. ->setCellValue('B1', parent::utf8conv('담당구분'))
  1124. ->setCellValue('C1', parent::utf8conv('권역'))
  1125. ->setCellValue('D1', parent::utf8conv('지사구분'))
  1126. ->setCellValue('E1', parent::utf8conv('APT명'))
  1127. ->setCellValue('F1', parent::utf8conv('광역시,도'))
  1128. ->setCellValue('G1', parent::utf8conv('시,군,구'))
  1129. ->setCellValue('H1', parent::utf8conv('읍,면,동'))
  1130. ->setCellValue('I1', parent::utf8conv('나머지주소'))
  1131. ->setCellValue('J1', parent::utf8conv('준공연도'))
  1132. ->setCellValue('K1', parent::utf8conv('평수'))
  1133. ->setCellValue('L1', parent::utf8conv('동수'))
  1134. ->setCellValue('M1', parent::utf8conv('층수'))
  1135. ->setCellValue('N1', parent::utf8conv('세대수'))
  1136. ->setCellValue('O1', parent::utf8conv('계약일(예정일)'))
  1137. ->setCellValue('P1', parent::utf8conv('계약기간'))
  1138. ->setCellValue('Q1', parent::utf8conv('회선개통여부'))
  1139. ->setCellValue('R1', parent::utf8conv('개통일'))
  1140. ->setCellValue('S1', parent::utf8conv('개통수량'))
  1141. ->setCellValue('T1', parent::utf8conv('미개통수량'))
  1142. ->setCellValue('U1', parent::utf8conv('권역점수'))
  1143. ->setCellValue('V1', parent::utf8conv('세대수점수'))
  1144. ->setCellValue('W1', parent::utf8conv('모니터수점수'))
  1145. ->setCellValue('X1', parent::utf8conv('층수점수'))
  1146. ->setCellValue('Y1', parent::utf8conv('총점'))
  1147. ->setCellValue('Z1', parent::utf8conv('등급'))
  1148. ->setCellValue('AA1', parent::utf8conv('인입시기구분'))
  1149. ->setCellValue('AB1', parent::utf8conv('관리소 연락처'))
  1150. ->setCellValue('AC1', parent::utf8conv('영업담당자'))
  1151. ->setCellValue('AD1', parent::utf8conv('등기발송여부'))
  1152. ->setCellValue('AE1', parent::utf8conv('보드인입여부'))
  1153. ->setCellValue('AF1', parent::utf8conv('인입유형'))
  1154. ->setCellValue('AG1', parent::utf8conv('설치/발전기금/수수료'))
  1155. ->setCellValue('AH1', parent::utf8conv('설치업체'))
  1156. ->setCellValue('AI1', parent::utf8conv('M-B설치업체'))
  1157. ->setCellValue('AJ1', parent::utf8conv('AED'))
  1158. ->setCellValue('AK1', parent::utf8conv('개통진행'))
  1159. ->setCellValue('AL1', parent::utf8conv('작업예정일'))
  1160. ->setCellValue('AM1', parent::utf8conv('설치완료확인'))
  1161. ->setCellValue('AN1', parent::utf8conv('교육여부'))
  1162. ->setCellValue('AO1', parent::utf8conv('승강기모니터수'))
  1163. ->setCellValue('AP1', parent::utf8conv('동별총설치수량'))
  1164. ->setCellValue('AQ1', parent::utf8conv('라인별추가설치수량'))
  1165. ->setCellValue('AR1', parent::utf8conv('총설치수량'))
  1166. ->setCellValue('AS1', parent::utf8conv('연간발전기금'))
  1167. ->setCellValue('AT1', parent::utf8conv('비고'))
  1168. ->setCellValue('AU1', parent::utf8conv('설치업자'));
  1169. // 라이프 정보 담기
  1170. $index = 2;
  1171. foreach($complexInfos as $complexInfo){
  1172. if($this->Life->find('count', array('conditions' => array('Life.complex_id' => $complexInfo['Complex']['id']))) == 0){
  1173. continue;
  1174. }
  1175. $objPHPExcel->setActiveSheetIndex(1)
  1176. ->setCellValue("A{$index}", parent::utf8conv($complexInfo['Complex']['code']))
  1177. ->setCellValue("B{$index}", parent::utf8conv($complexInfo['Complex']['charge_name']))
  1178. ->setCellValue("C{$index}", parent::utf8conv($complexInfo['Complex']['region_name']))
  1179. ->setCellValue("D{$index}", parent::utf8conv($complexInfo['Complex']['branch_name']))
  1180. ->setCellValue("E{$index}", parent::utf8conv($complexInfo['Complex']['name']))
  1181. ->setCellValue("F{$index}", parent::utf8conv($complexInfo['Complex']['first_addr']))
  1182. ->setCellValue("G{$index}", parent::utf8conv($complexInfo['Complex']['mid_addr']))
  1183. ->setCellValue("H{$index}", parent::utf8conv($complexInfo['Complex']['last_addr']))
  1184. ->setCellValue("I{$index}", parent::utf8conv($complexInfo['Complex']['addr']))
  1185. ->setCellValue("J{$index}", parent::utf8conv($complexInfo['Complex']['completion_year']))
  1186. ->setCellValue("K{$index}", parent::utf8conv($complexInfo['Complex']['space']))
  1187. ->setCellValue("L{$index}", parent::utf8conv($complexInfo['Complex']['apt']))
  1188. ->setCellValue("M{$index}", parent::utf8conv($complexInfo['Complex']['floor']))
  1189. ->setCellValue("N{$index}", parent::utf8conv($complexInfo['Complex']['regident']))
  1190. ->setCellValue("O{$index}", parent::utf8conv($complexInfo['Complex']['contract_date_life']))
  1191. ->setCellValue("P{$index}", parent::utf8conv($complexInfo['Complex']['contract_period_life']));
  1192. $status = "";
  1193. if($complexInfo['Complex']['status_life'] == -1){
  1194. $status = '미지정';
  1195. }
  1196. else if($complexInfo['Complex']['status_life'] == 0){
  1197. $status = '미개통';
  1198. }
  1199. else if($complexInfo['Complex']['status_life'] == 1){
  1200. $status = '부분개통';
  1201. }
  1202. else if($complexInfo['Complex']['status_life'] == 2){
  1203. $status = '개통';
  1204. }
  1205. $objPHPExcel->setActiveSheetIndex(1)
  1206. ->setCellValue("Q{$index}", parent::utf8conv($status))
  1207. ->setCellValue("R{$index}", parent::utf8conv($complexInfo['Complex']['open_date_life']))
  1208. ->setCellValue("S{$index}", $this->Life->find('count', array('conditions' => array('Life.complex_id' => $complexInfo['Complex']['id'], 'Life.status' => 2))))
  1209. ->setCellValue("T{$index}", $this->Life->find('count', array('conditions' => array('Life.complex_id' => $complexInfo['Complex']['id'], 'Life.status' => 0))))
  1210. ->setCellValue("U{$index}", parent::utf8conv($complexInfo['Complex']['region_score']))
  1211. ->setCellValue("V{$index}", parent::utf8conv($complexInfo['Complex']['regident_score']))
  1212. ->setCellValue("W{$index}", parent::utf8conv($complexInfo['Complex']['monitor_score']))
  1213. ->setCellValue("X{$index}", parent::utf8conv($complexInfo['Complex']['floor_score']))
  1214. ->setCellValue("Y{$index}", parent::utf8conv($complexInfo['Complex']['total_score']))
  1215. ->setCellValue("Z{$index}", parent::utf8conv($complexInfo['Complex']['complex_rank']))
  1216. ->setCellValue("AA{$index}",parent::utf8conv($complexInfo['Complex']['install_period_life']))
  1217. ->setCellValue("AB{$index}",parent::utf8conv($complexInfo['Complex']['phone']));
  1218. $objPHPExcel->setActiveSheetIndex(1)
  1219. ->setCellValue("AC{$index}",parent::utf8conv($users[$complexInfo['Complex']['engineer_id']]))
  1220. ->setCellValue("AD{$index}",parent::utf8conv($complexInfo['Complex']['register_mail_life']))
  1221. ->setCellValue("AE{$index}",parent::utf8conv($complexInfo['Complex']['is_board_installed']))
  1222. ->setCellValue("AF{$index}",parent::utf8conv($complexInfo['Complex']['install_type_life']))
  1223. ->setCellValue("AG{$index}",parent::utf8conv($complexInfo['Complex']['install_cost_life']))
  1224. ->setCellValue("AH{$index}",parent::utf8conv($complexInfo['Complex']['install_company_name_life']))
  1225. ->setCellValue("AI{$index}",parent::utf8conv($complexInfo['Complex']['mb_install_company_name_life']))
  1226. ->setCellValue("AJ{$index}",parent::utf8conv($complexInfo['Complex']['aed_name_life']))
  1227. ->setCellValue("AK{$index}",parent::utf8conv($complexInfo['Complex']['install_status_life']))
  1228. ->setCellValue("AL{$index}",parent::utf8conv($complexInfo['Complex']['construct_date_life']))
  1229. ->setCellValue("AM{$index}",parent::utf8conv($complexInfo['Complex']['is_install_complete_life']))
  1230. ->setCellValue("AN{$index}",parent::utf8conv($complexInfo['Complex']['is_edu_life']))
  1231. ->setCellValue("AO{$index}",parent::utf8conv($complexInfo['Complex']['elevator_num_of_life']))
  1232. ->setCellValue("AP{$index}",parent::utf8conv($complexInfo['Complex']['apt_num_of_life']))
  1233. ->setCellValue("AQ{$index}",parent::utf8conv($complexInfo['Complex']['line_num_of_life']))
  1234. ->setCellValue("AR{$index}", $this->Life->find('count', array('conditions'=> array('Life.complex_id' => $complexInfo['Complex']['id']))))
  1235. ->setCellValue("AS{$index}",parent::utf8conv($complexInfo['Complex']['develop_cost_year_life']))
  1236. ->setCellValue("AT{$…

Large files files are truncated, but you can click here to view the full file