You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1339 lines
52 KiB
1339 lines
52 KiB
<?php
|
|
// ini_set('display_errors', 'on');
|
|
require dirname(__DIR__) . '/common/composer/vendor/autoload.php';
|
|
|
|
use PhpOffice\PhpSpreadsheet\Spreadsheet;
|
|
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
|
|
use PhpOffice\PhpSpreadsheet\Style\Fill;
|
|
|
|
include "header.php";
|
|
|
|
$start_y = empty($_POST['start_month']) ? '2023' : substr($_POST['start_month'], 0, 4);
|
|
$end_y = empty($_POST['end_month']) ? '2023' : substr($_POST['end_month'], 0, 4);
|
|
$start_m = empty($_POST['start_month']) ? '01' : substr($_POST['start_month'], 5, 2);
|
|
$end_m = empty($_POST['end_month']) ? '12' : substr($_POST['end_month'], 5, 2);
|
|
|
|
$sql = "
|
|
SELECT
|
|
this_order.contract_type,
|
|
this_order.sub_address,
|
|
this_order.date_year,
|
|
this_order.date_month,
|
|
COUNT(this_order.sub_address) AS facility_count
|
|
FROM(
|
|
SELECT
|
|
SUBSTR(TRIM(w.address),1,2) AS sub_address,
|
|
SUBSTR(CONVERT(real_contract_arrival_date, DATETIME),1,4) AS date_year,
|
|
SUBSTR(CONVERT(real_contract_arrival_date, DATETIME),6,2) AS date_month,
|
|
w.facility_kind,
|
|
w.contract_type
|
|
FROM wipwholestatus AS w
|
|
WHERE status = '1'
|
|
AND real_contract_arrival_date >= '$start_y-$start_m-1'
|
|
AND real_contract_arrival_date <= '$end_y-$end_m-31'
|
|
) AS this_order
|
|
WHERE 1 = 1
|
|
GROUP BY this_order.contract_type,
|
|
this_order.sub_address,
|
|
this_order.date_year,
|
|
this_order.date_month
|
|
";
|
|
$result = mysqli_query($link, $sql);
|
|
$data = [];
|
|
while ($row = $result->fetch_assoc()) {
|
|
$data[] = $row;
|
|
}
|
|
|
|
function findData($data, $searchData)
|
|
{
|
|
foreach ($data as $item) {
|
|
if (
|
|
$item['contract_type'] == $searchData['contract_type']
|
|
&& $item['sub_address'] == $searchData['sub_address']
|
|
&& $item['date_year'] == $searchData['date_year']
|
|
&& $item['date_month'] == $searchData['date_month']
|
|
) {
|
|
return $item['facility_count'];
|
|
}
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
function findDataByCity($data, $searchData)
|
|
{
|
|
$count = 0;
|
|
$start_y = $searchData['start_y'];
|
|
$start_m = $searchData['start_m'];
|
|
$end_y = $searchData['end_y'];
|
|
$end_m = $searchData['end_m'];
|
|
for ($i = $start_y; $i <= $end_y; $i++) {
|
|
$this_start_m = $i == $start_y ? $start_m : 1;
|
|
$this_end_m = $i == $start_y ? 12 : $end_m;
|
|
for ($j = $this_start_m; $j <= $this_end_m; $j++) {
|
|
foreach ($data as $item) {
|
|
if (
|
|
$item['contract_type'] == $searchData['contract_type']
|
|
&& $item['sub_address'] == $searchData['sub_address']
|
|
&& $item['date_year'] == $i
|
|
&& $item['date_month'] == str_pad($j, 2, '0', STR_PAD_LEFT)
|
|
) {
|
|
$count += $item['facility_count'];
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return $count;
|
|
}
|
|
|
|
function findDataByYearMonth($data, $searchData)
|
|
{
|
|
$count = 0;
|
|
foreach ($data as $item) {
|
|
if (
|
|
$item['contract_type'] == $searchData['contract_type']
|
|
&& $item['date_year'] == $searchData['date_year']
|
|
&& $item['date_month'] == $searchData['date_month']
|
|
) {
|
|
$count += $item['facility_count'];
|
|
}
|
|
}
|
|
return $count;
|
|
}
|
|
|
|
function findAllDataByYearMonth($data, $searchData)
|
|
{
|
|
$count = 0;
|
|
$start_y = $searchData['start_y'];
|
|
$start_m = $searchData['start_m'];
|
|
$end_y = $searchData['end_y'];
|
|
$end_m = $searchData['end_m'];
|
|
for ($i = $start_y; $i <= $end_y; $i++) {
|
|
$this_start_m = $i == $start_y ? $start_m : 1;
|
|
$this_end_m = $i == $start_y ? 12 : $end_m;
|
|
for ($j = $this_start_m; $j <= $this_end_m; $j++) {
|
|
foreach ($data as $item) {
|
|
if (
|
|
$item['contract_type'] == $searchData['contract_type']
|
|
&& $item['date_year'] == $i
|
|
&& $item['date_month'] == str_pad($j, 2, '0', STR_PAD_LEFT)
|
|
) {
|
|
$count += $item['facility_count'];
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return $count;
|
|
}
|
|
|
|
$sql = "
|
|
SELECT
|
|
new_order.facility_kind,
|
|
COUNT(new_order.facility_kind) AS facility_count
|
|
FROM(
|
|
SELECT
|
|
w.facility_kind
|
|
FROM wipwholestatus AS w
|
|
WHERE 1=1
|
|
AND status = '1'
|
|
AND contract_type = 'A'
|
|
AND real_contract_arrival_date >= '$start_y-$start_m-1'
|
|
AND real_contract_arrival_date <= '$end_y-$end_m-31'
|
|
) AS new_order
|
|
WHERE 1 = 1
|
|
GROUP BY new_order.facility_kind
|
|
";
|
|
$result = mysqli_query($link, $sql);
|
|
$data2 = [];
|
|
while ($row = $result->fetch_assoc()) {
|
|
$data2[] = $row;
|
|
}
|
|
|
|
function findFacilityTypeAllCount($data2)
|
|
{
|
|
$count = 0;
|
|
foreach ($data2 as $row) {
|
|
$count += $row['facility_count'];
|
|
}
|
|
return $count;
|
|
}
|
|
|
|
function getFacilityNamebyType($facility_kind)
|
|
{
|
|
$arr = array(
|
|
'MAE100' => '小機房',
|
|
'MAM200' => '無機房',
|
|
'MAH100' => '小電梯',
|
|
'MAQ100' => '強驅梯',
|
|
'MAF100' => '貨梯',
|
|
'MAP100' => '平台梯',
|
|
'' => '未分類'
|
|
);
|
|
return isset($arr[$facility_kind]) ? $arr[$facility_kind] : "";
|
|
}
|
|
|
|
$sql = "
|
|
SELECT
|
|
w.renovate_type
|
|
FROM wipwholestatus AS w
|
|
WHERE 1=1
|
|
AND status = '1'
|
|
AND real_contract_arrival_date >= '$start_y-$start_m-1'
|
|
AND real_contract_arrival_date <= '$end_y-$end_m-31'
|
|
AND contract_type = 'B'
|
|
";
|
|
$result = mysqli_query($link, $sql);
|
|
$data3 = [];
|
|
while ($row = $result->fetch_assoc()) {
|
|
$data3[] = $row;
|
|
}
|
|
|
|
// 分開計算
|
|
|
|
// $M1 = 0;
|
|
// $M2 = 0;
|
|
// $M3 = 0;
|
|
// $M4 = 0;
|
|
// $MA = 0;
|
|
// $M_count = 0;
|
|
// foreach ($data3 as $row) {
|
|
// $renovate_type_arr = json_decode($row['renovate_type']);
|
|
// foreach ($renovate_type_arr as $row2) {
|
|
// if ($row2 == 'M1')
|
|
// $M1++;
|
|
// if ($row2 == 'M2')
|
|
// $M2++;
|
|
// if ($row2 == 'M3')
|
|
// $M3++;
|
|
// if ($row2 == 'M4')
|
|
// $M4++;
|
|
// if ($row2 == 'MA')
|
|
// $MA++;
|
|
// }
|
|
// }
|
|
// $M_count = $M1 + $M2 + $M3 + $M4 + $MA;
|
|
|
|
$M_count = count($data3);
|
|
$m_type_arr = [];
|
|
$m_type_arr[''] = 0;
|
|
foreach ($data3 as $row) {
|
|
$m_type_arr[implode("+", json_decode($row['renovate_type']))] = 0;
|
|
}
|
|
foreach ($data3 as $row) {
|
|
$m_type_arr[implode("+", json_decode($row['renovate_type']))]++;
|
|
}
|
|
|
|
|
|
//數字轉英文(0=>A、1=>B、26=>AA...以此類推)
|
|
function num2alpha($n)
|
|
{
|
|
for ($r = ""; $n >= 0; $n = intval($n / 26) - 1)
|
|
$r = chr($n % 26 + 0x41) . $r;
|
|
return $r;
|
|
}
|
|
|
|
//英文轉數字(A=>0、B=>1、AA=>26...以此類推)
|
|
function alpha2num($a)
|
|
{
|
|
$l = strlen($a);
|
|
$n = 0;
|
|
for ($i = 0; $i < $l; $i++)
|
|
$n = $n * 26 + ord($a[$i]) - 0x40;
|
|
return $n - 1;
|
|
}
|
|
if($_SERVER["REQUEST_METHOD"] == 'POST'){
|
|
if ($_POST['excel_output'] == 'excel_output') {
|
|
$spreadsheet = new Spreadsheet();
|
|
$sheet = $spreadsheet->getActiveSheet();
|
|
$sheet->setTitle('出貨總表');
|
|
|
|
$title_col_num = 3;
|
|
for ($i = $start_y; $i <= $end_y; $i++) {
|
|
$this_start_m = $i == $start_y ? $start_m : 1;
|
|
$this_end_m = $i == $start_y ? 12 : $end_m;
|
|
for ($j = $this_start_m; $j <= $this_end_m; $j++) {
|
|
$title_col_num += 2;
|
|
if ($i == $end_y && $j == ($end_m + 1)) {
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
$sheet->mergeCells('A1:' . num2alpha($title_col_num) . '1');
|
|
$sheet->setCellValue('A1', '出貨地區預定明細');
|
|
|
|
$title_col_num = 0;
|
|
$sheet->setCellValue(num2alpha($title_col_num) . '2', '');
|
|
$title_col_num++;
|
|
$sheet->setCellValue(num2alpha($title_col_num) . '2', '');
|
|
$title_col_num++;
|
|
|
|
for ($i = $start_y; $i <= $end_y; $i++) {
|
|
$this_start_m = $i == $start_y ? $start_m : 1;
|
|
$this_end_m = $i == $start_y ? 12 : $end_m;
|
|
for ($j = $this_start_m; $j <= $this_end_m; $j++) {
|
|
if ($i == $end_y && $j == ($end_m + 1))
|
|
break;
|
|
$sheet->mergeCells(num2alpha($title_col_num) . '2:' . num2alpha($title_col_num + 1) . '2');
|
|
$sheet->setCellValue(num2alpha($title_col_num) . '2', $i . '年' . $j . '月');
|
|
$title_col_num += 2;
|
|
}
|
|
}
|
|
|
|
$sheet->setCellValue(num2alpha($title_col_num) . '2', '累計台數');
|
|
$title_col_num++;
|
|
$sheet->setCellValue(num2alpha($title_col_num) . '2', '累計台數');
|
|
$title_col_num++;
|
|
|
|
$title_col_num = 0;
|
|
$sheet->setCellValue(num2alpha($title_col_num) . '3', '區域');
|
|
$title_col_num = 2;
|
|
|
|
for ($i = $start_y; $i <= $end_y; $i++) {
|
|
$this_start_m = $i == $start_y ? $start_m : 1;
|
|
$this_end_m = $i == $start_y ? 12 : $end_m;
|
|
for ($j = $this_start_m; $j <= $this_end_m; $j++) {
|
|
if ($i == $end_y && $j == ($end_m + 1)) {
|
|
break;
|
|
}
|
|
$sheet->setCellValue(num2alpha($title_col_num) . '3', '新梯');
|
|
$title_col_num++;
|
|
$sheet->setCellValue(num2alpha($title_col_num) . '3', '汰改');
|
|
$title_col_num++;
|
|
}
|
|
}
|
|
$sheet->setCellValue(num2alpha($title_col_num) . '3', '新梯');
|
|
$title_col_num++;
|
|
$sheet->setCellValue(num2alpha($title_col_num) . '3', '汰改');
|
|
$title_col_num++;
|
|
|
|
$area_arr = [
|
|
[4, 6, '台北'],
|
|
[7, 9, '桃竹苗'],
|
|
[10, 13, '中部'],
|
|
[14, 17, '南部'],
|
|
[18, 20, '宜花東'],
|
|
[21, 21, '未分類']
|
|
];
|
|
foreach ($area_arr as $row) {
|
|
$title_col_num = 0;
|
|
$sheet->mergeCells(num2alpha($title_col_num) . $row[0] . ':' . num2alpha($title_col_num) . $row[1]);
|
|
$sheet->setCellValue(num2alpha($title_col_num) . $row[0], $row[2]);
|
|
}
|
|
|
|
$area_arr = [
|
|
[4, '台北'],
|
|
[5, '新北'],
|
|
[6, '基隆'],
|
|
[7, '桃園'],
|
|
[8, '新竹'],
|
|
[9, '苗栗'],
|
|
[10, '台中'],
|
|
[11, '南投'],
|
|
[12, '彰化'],
|
|
[13, '雲林'],
|
|
[14, '嘉義'],
|
|
[15, '台南'],
|
|
[16, '高雄'],
|
|
[17, '屏東'],
|
|
[18, '宜蘭'],
|
|
[19, '花蓮'],
|
|
[20, '台東'],
|
|
[21, '']
|
|
];
|
|
foreach ($area_arr as $row) {
|
|
$title_col_num = 0;
|
|
$title_col_num++;
|
|
$sheet->setCellValue(num2alpha($title_col_num) . $row[0], $row[1]);
|
|
for ($i = $start_y; $i <= $end_y; $i++) {
|
|
$this_start_m = $i == $start_y ? $start_m : 1;
|
|
$this_end_m = $i == $start_y ? 12 : $end_m;
|
|
for ($j = $this_start_m; $j <= $this_end_m; $j++) {
|
|
if ($i == $end_y && $j == ($end_m + 1)) {
|
|
break;
|
|
}
|
|
$tmp_arr = array(
|
|
'date_year' => $i,
|
|
'date_month' => str_pad($j, 2, '0', STR_PAD_LEFT),
|
|
'sub_address' => $row[1],
|
|
'contract_type' => 'A',
|
|
);
|
|
$title_col_num++;
|
|
$sheet->setCellValue(num2alpha($title_col_num) . $row[0], findData($data, $tmp_arr));
|
|
$tmp_arr['contract_type'] = 'B';
|
|
$title_col_num++;
|
|
$sheet->setCellValue(num2alpha($title_col_num) . $row[0], findData($data, $tmp_arr));
|
|
}
|
|
}
|
|
$tmp_arr = array(
|
|
'start_y' => $start_y,
|
|
'end_y' => $end_y,
|
|
'start_m' => $start_m,
|
|
'end_m' => $end_m,
|
|
'sub_address' => $row[1],
|
|
'contract_type' => 'A',
|
|
);
|
|
$title_col_num++;
|
|
$sheet->setCellValue(num2alpha($title_col_num) . $row[0], findDataByCity($data, $tmp_arr));
|
|
$tmp_arr['contract_type'] = 'B';
|
|
$title_col_num++;
|
|
$sheet->setCellValue(num2alpha($title_col_num) . $row[0], findDataByCity($data, $tmp_arr));
|
|
}
|
|
|
|
|
|
$title_col_num = 0;
|
|
$title_col_num++;
|
|
$sheet->setCellValue(num2alpha($title_col_num) . '22', "合計");
|
|
for ($i = $start_y; $i <= $end_y; $i++) {
|
|
$this_start_m = $i == $start_y ? $start_m : 1;
|
|
$this_end_m = $i == $start_y ? 12 : $end_m;
|
|
for ($j = $this_start_m; $j <= $this_end_m; $j++) {
|
|
if ($i == $end_y && $j == ($end_m + 1))
|
|
break;
|
|
$tmp_arr = array(
|
|
'date_year' => $i,
|
|
'date_month' => str_pad($j, 2, '0', STR_PAD_LEFT),
|
|
'contract_type' => 'A',
|
|
);
|
|
$title_col_num++;
|
|
$sheet->setCellValue(num2alpha($title_col_num) . '22', findDataByYearMonth($data, $tmp_arr));
|
|
$tmp_arr['contract_type'] = 'B';
|
|
$title_col_num++;
|
|
$sheet->setCellValue(num2alpha($title_col_num) . '22', findDataByYearMonth($data, $tmp_arr));
|
|
}
|
|
}
|
|
$tmp_arr = array(
|
|
'start_y' => $start_y,
|
|
'end_y' => $end_y,
|
|
'start_m' => $start_m,
|
|
'end_m' => $end_m,
|
|
'contract_type' => 'A',
|
|
);
|
|
$title_col_num++;
|
|
$sheet->setCellValue(num2alpha($title_col_num) . '22', findAllDataByYearMonth($data, $tmp_arr));
|
|
$tmp_arr['contract_type'] = 'B';
|
|
$title_col_num++;
|
|
$sheet->setCellValue(num2alpha($title_col_num) . '22', findAllDataByYearMonth($data, $tmp_arr));
|
|
|
|
|
|
|
|
|
|
$sheet->mergeCells('A25:I25');
|
|
$sheet->setCellValue('A25', '受定規格分析');
|
|
|
|
$title_col_num = 0;
|
|
$sheet->setCellValue(num2alpha($title_col_num) . '26', "代碼");
|
|
foreach ($data2 as $row) {
|
|
$title_col_num++;
|
|
$sheet->setCellValue(num2alpha($title_col_num) . '26', $row['facility_kind']);
|
|
}
|
|
|
|
$title_col_num = 0;
|
|
$sheet->setCellValue(num2alpha($title_col_num) . '27', "機種");
|
|
foreach ($data2 as $row) {
|
|
$title_col_num++;
|
|
$sheet->setCellValue(num2alpha($title_col_num) . '27', getFacilityNamebyType($row['facility_kind']));
|
|
}
|
|
$title_col_num++;
|
|
$sheet->setCellValue(num2alpha($title_col_num) . '27', "合計");
|
|
|
|
$title_col_num = 0;
|
|
$sheet->setCellValue(num2alpha($title_col_num) . '28', "數量");
|
|
foreach ($data2 as $row) {
|
|
$title_col_num++;
|
|
$sheet->setCellValue(num2alpha($title_col_num) . '28', $row['facility_count']);
|
|
}
|
|
$title_col_num++;
|
|
$sheet->setCellValue(num2alpha($title_col_num) . '28', findFacilityTypeAllCount($data2));
|
|
|
|
$title_col_num = 0;
|
|
$sheet->setCellValue(num2alpha($title_col_num) . '29', "百分比");
|
|
foreach ($data2 as $row) {
|
|
$title_col_num++;
|
|
$sheet->setCellValue(num2alpha($title_col_num) . '29', (round($row['facility_count'] / findFacilityTypeAllCount($data2), 4) * 100) . "%");
|
|
}
|
|
$title_col_num++;
|
|
$sheet->setCellValue(num2alpha($title_col_num) . '29', "100%");
|
|
|
|
|
|
$sheet->mergeCells('A32:G32');
|
|
$sheet->setCellValue('G25', '舊改受訂規格分析');
|
|
|
|
$title_col_num = 0;
|
|
$sheet->setCellValue(num2alpha($title_col_num++) . '33', "類型");
|
|
foreach ($m_type_arr as $key => $val) {
|
|
$title_tmp = empty($key) ? '未分類' : $key;
|
|
$sheet->setCellValue(num2alpha($title_col_num++) . '33', $title_tmp);
|
|
}
|
|
$sheet->setCellValue(num2alpha($title_col_num++) . '33', "合計");
|
|
|
|
$title_col_num = 0;
|
|
$sheet->setCellValue(num2alpha($title_col_num++) . '34', "數量");
|
|
foreach ($m_type_arr as $key => $val) {
|
|
$sheet->setCellValue(num2alpha($title_col_num++) . '34', $val);
|
|
}
|
|
$sheet->setCellValue(num2alpha($title_col_num++) . '34', $M_count);
|
|
|
|
$title_col_num = 0;
|
|
$sheet->setCellValue(num2alpha($title_col_num++) . '35', "百分比");
|
|
foreach ($m_type_arr as $key => $val) {
|
|
$sheet->setCellValue(num2alpha($title_col_num++) . '35', (round($val / $M_count, 4) * 100) . "%");
|
|
}
|
|
$sheet->setCellValue(num2alpha($title_col_num++) . '35', "100%");
|
|
|
|
|
|
$writer = new Xlsx($spreadsheet);
|
|
$file_path = dirname(__DIR__) . '/wms/excel/' . 'estimated_shipping_date_report.xlsx';
|
|
try {
|
|
$writer->save($file_path);
|
|
// 回傳檔案路徑給 JavaScript
|
|
echo $file_path;
|
|
} catch (Exception $e) {
|
|
echo 'Error: ' . $e->getMessage();
|
|
}
|
|
exit();
|
|
}
|
|
}
|
|
|
|
?>
|
|
<style>
|
|
|
|
</style>
|
|
<h3 class="text-center">出貨地區預定明細</h3>
|
|
<div class="col-md-12 text-center">
|
|
<form method="post">
|
|
區間選擇
|
|
<input type="month" id="start_month" name="start_month" value="<?php echo $start_y . '-' . $start_m; ?>" />
|
|
~
|
|
<input type="month" id="end_month" name="end_month" value="<?php echo $end_y . '-' . $end_m; ?>" />
|
|
<button class="btn btn-primary btn-sm">選擇</button>
|
|
<button class="btn btn-primary btn-sm" type="button" onclick="generateButton()">下載</button>
|
|
</form>
|
|
</div>
|
|
<br /><br />
|
|
<div style="width:98%;overflow-x:auto;" class="scroll-container">
|
|
<table class="table table-striped">
|
|
<thead>
|
|
<tr>
|
|
<th></th>
|
|
<th></th>
|
|
<?php
|
|
for ($i = $start_y; $i <= $end_y; $i++) {
|
|
$this_start_m = $i == $start_y ? $start_m : 1;
|
|
$this_end_m = $i == $start_y ? 12 : $end_m;
|
|
for ($j = $this_start_m; $j <= $this_end_m; $j++) {
|
|
if ($i == $end_y && $j == ($end_m + 1))
|
|
break;
|
|
echo "<th colspan='2' class='text-center' style='vertical-align: middle'>$i 年<br/> $j 月</th>";
|
|
}
|
|
}
|
|
?>
|
|
<th>累計台數</th>
|
|
<th>累計台數</th>
|
|
</tr>
|
|
<tr>
|
|
<th>區域</th>
|
|
<th></th>
|
|
<?php
|
|
for ($i = $start_y; $i <= $end_y; $i++) {
|
|
$this_start_m = $i == $start_y ? $start_m : 1;
|
|
$this_end_m = $i == $start_y ? 12 : $end_m;
|
|
for ($j = $this_start_m; $j <= $this_end_m; $j++) {
|
|
if ($i == $end_y && $j == ($end_m + 1))
|
|
break;
|
|
echo "<th>新梯</th>";
|
|
echo "<th>汰改</th>";
|
|
}
|
|
}
|
|
?>
|
|
<th>新梯</th>
|
|
<th>汰改</th>
|
|
</tr>
|
|
<tr>
|
|
<th rowspan="3" class="text-center" style="vertical-align: middle"> 台北</th>
|
|
<th>台北</th>
|
|
<?php
|
|
for ($i = $start_y; $i <= $end_y; $i++) {
|
|
$this_start_m = $i == $start_y ? $start_m : 1;
|
|
$this_end_m = $i == $start_y ? 12 : $end_m;
|
|
for ($j = $this_start_m; $j <= $this_end_m; $j++) {
|
|
if ($i == $end_y && $j == ($end_m + 1))
|
|
break;
|
|
$tmp_arr = array(
|
|
'date_year' => $i,
|
|
'date_month' => str_pad($j, 2, '0', STR_PAD_LEFT),
|
|
'sub_address' => '台北',
|
|
'contract_type' => 'A',
|
|
);
|
|
echo "<td>" . findData($data, $tmp_arr) . "</td>";
|
|
$tmp_arr['contract_type'] = 'B';
|
|
echo "<td>" . findData($data, $tmp_arr) . "</td>";
|
|
}
|
|
}
|
|
$tmp_arr = array(
|
|
'start_y' => $start_y,
|
|
'end_y' => $end_y,
|
|
'start_m' => $start_m,
|
|
'end_m' => $end_m,
|
|
'sub_address' => '台北',
|
|
'contract_type' => 'A',
|
|
);
|
|
echo "<td>" . findDataByCity($data, $tmp_arr) . "</td>";
|
|
$tmp_arr['contract_type'] = 'B';
|
|
echo "<td>" . findDataByCity($data, $tmp_arr) . "</td>";
|
|
?>
|
|
</tr>
|
|
<tr>
|
|
<th>新北</th>
|
|
<?php
|
|
for ($i = $start_y; $i <= $end_y; $i++) {
|
|
$this_start_m = $i == $start_y ? $start_m : 1;
|
|
$this_end_m = $i == $start_y ? 12 : $end_m;
|
|
for ($j = $this_start_m; $j <= $this_end_m; $j++) {
|
|
if ($i == $end_y && $j == ($end_m + 1))
|
|
break;
|
|
$tmp_arr = array(
|
|
'date_year' => $i,
|
|
'date_month' => str_pad($j, 2, '0', STR_PAD_LEFT),
|
|
'sub_address' => '新北',
|
|
'contract_type' => 'A',
|
|
);
|
|
echo "<td>" . findData($data, $tmp_arr) . "</td>";
|
|
$tmp_arr['contract_type'] = 'B';
|
|
echo "<td>" . findData($data, $tmp_arr) . "</td>";
|
|
}
|
|
}
|
|
$tmp_arr = array(
|
|
'start_y' => $start_y,
|
|
'end_y' => $end_y,
|
|
'start_m' => $start_m,
|
|
'end_m' => $end_m,
|
|
'sub_address' => '新北',
|
|
'contract_type' => 'A',
|
|
);
|
|
echo "<td>" . findDataByCity($data, $tmp_arr) . "</td>";
|
|
$tmp_arr['contract_type'] = 'B';
|
|
echo "<td>" . findDataByCity($data, $tmp_arr) . "</td>";
|
|
?>
|
|
</tr>
|
|
<tr>
|
|
<th>基隆</th>
|
|
<?php
|
|
for ($i = $start_y; $i <= $end_y; $i++) {
|
|
$this_start_m = $i == $start_y ? $start_m : 1;
|
|
$this_end_m = $i == $start_y ? 12 : $end_m;
|
|
for ($j = $this_start_m; $j <= $this_end_m; $j++) {
|
|
if ($i == $end_y && $j == ($end_m + 1))
|
|
break;
|
|
$tmp_arr = array(
|
|
'date_year' => $i,
|
|
'date_month' => str_pad($j, 2, '0', STR_PAD_LEFT),
|
|
'sub_address' => '基隆',
|
|
'contract_type' => 'A',
|
|
);
|
|
echo "<td>" . findData($data, $tmp_arr) . "</td>";
|
|
$tmp_arr['contract_type'] = 'B';
|
|
echo "<td>" . findData($data, $tmp_arr) . "</td>";
|
|
}
|
|
}
|
|
$tmp_arr = array(
|
|
'start_y' => $start_y,
|
|
'end_y' => $end_y,
|
|
'start_m' => $start_m,
|
|
'end_m' => $end_m,
|
|
'sub_address' => '基隆',
|
|
'contract_type' => 'A',
|
|
);
|
|
echo "<td>" . findDataByCity($data, $tmp_arr) . "</td>";
|
|
$tmp_arr['contract_type'] = 'B';
|
|
echo "<td>" . findDataByCity($data, $tmp_arr) . "</td>";
|
|
?>
|
|
</tr>
|
|
<tr>
|
|
<th rowspan="3" class="text-center" style="vertical-align: middle"> 桃竹苗</th>
|
|
<th>桃園</th>
|
|
<?php
|
|
for ($i = $start_y; $i <= $end_y; $i++) {
|
|
$this_start_m = $i == $start_y ? $start_m : 1;
|
|
$this_end_m = $i == $start_y ? 12 : $end_m;
|
|
for ($j = $this_start_m; $j <= $this_end_m; $j++) {
|
|
if ($i == $end_y && $j == ($end_m + 1))
|
|
break;
|
|
$tmp_arr = array(
|
|
'date_year' => $i,
|
|
'date_month' => str_pad($j, 2, '0', STR_PAD_LEFT),
|
|
'sub_address' => '桃園',
|
|
'contract_type' => 'A',
|
|
);
|
|
echo "<td>" . findData($data, $tmp_arr) . "</td>";
|
|
$tmp_arr['contract_type'] = 'B';
|
|
echo "<td>" . findData($data, $tmp_arr) . "</td>";
|
|
}
|
|
}
|
|
$tmp_arr = array(
|
|
'start_y' => $start_y,
|
|
'end_y' => $end_y,
|
|
'start_m' => $start_m,
|
|
'end_m' => $end_m,
|
|
'sub_address' => '桃園',
|
|
'contract_type' => 'A',
|
|
);
|
|
echo "<td>" . findDataByCity($data, $tmp_arr) . "</td>";
|
|
$tmp_arr['contract_type'] = 'B';
|
|
echo "<td>" . findDataByCity($data, $tmp_arr) . "</td>";
|
|
?>
|
|
</tr>
|
|
<tr>
|
|
<th>新竹</th>
|
|
<?php
|
|
for ($i = $start_y; $i <= $end_y; $i++) {
|
|
$this_start_m = $i == $start_y ? $start_m : 1;
|
|
$this_end_m = $i == $start_y ? 12 : $end_m;
|
|
for ($j = $this_start_m; $j <= $this_end_m; $j++) {
|
|
if ($i == $end_y && $j == ($end_m + 1))
|
|
break;
|
|
$tmp_arr = array(
|
|
'date_year' => $i,
|
|
'date_month' => str_pad($j, 2, '0', STR_PAD_LEFT),
|
|
'sub_address' => '新竹',
|
|
'contract_type' => 'A',
|
|
);
|
|
echo "<td>" . findData($data, $tmp_arr) . "</td>";
|
|
$tmp_arr['contract_type'] = 'B';
|
|
echo "<td>" . findData($data, $tmp_arr) . "</td>";
|
|
}
|
|
}
|
|
$tmp_arr = array(
|
|
'start_y' => $start_y,
|
|
'end_y' => $end_y,
|
|
'start_m' => $start_m,
|
|
'end_m' => $end_m,
|
|
'sub_address' => '新竹',
|
|
'contract_type' => 'A',
|
|
);
|
|
echo "<td>" . findDataByCity($data, $tmp_arr) . "</td>";
|
|
$tmp_arr['contract_type'] = 'B';
|
|
echo "<td>" . findDataByCity($data, $tmp_arr) . "</td>";
|
|
?>
|
|
</tr>
|
|
<tr>
|
|
<th>苗栗</th>
|
|
<?php
|
|
for ($i = $start_y; $i <= $end_y; $i++) {
|
|
$this_start_m = $i == $start_y ? $start_m : 1;
|
|
$this_end_m = $i == $start_y ? 12 : $end_m;
|
|
for ($j = $this_start_m; $j <= $this_end_m; $j++) {
|
|
if ($i == $end_y && $j == ($end_m + 1))
|
|
break;
|
|
$tmp_arr = array(
|
|
'date_year' => $i,
|
|
'date_month' => str_pad($j, 2, '0', STR_PAD_LEFT),
|
|
'sub_address' => '苗栗',
|
|
'contract_type' => 'A',
|
|
);
|
|
echo "<td>" . findData($data, $tmp_arr) . "</td>";
|
|
$tmp_arr['contract_type'] = 'B';
|
|
echo "<td>" . findData($data, $tmp_arr) . "</td>";
|
|
}
|
|
}
|
|
$tmp_arr = array(
|
|
'start_y' => $start_y,
|
|
'end_y' => $end_y,
|
|
'start_m' => $start_m,
|
|
'end_m' => $end_m,
|
|
'sub_address' => '苗栗',
|
|
'contract_type' => 'A',
|
|
);
|
|
echo "<td>" . findDataByCity($data, $tmp_arr) . "</td>";
|
|
$tmp_arr['contract_type'] = 'B';
|
|
echo "<td>" . findDataByCity($data, $tmp_arr) . "</td>";
|
|
?>
|
|
</tr>
|
|
<tr>
|
|
<th rowspan="4" class="text-center" style="vertical-align: middle"> 中部</th>
|
|
<th>台中</th>
|
|
<?php
|
|
for ($i = $start_y; $i <= $end_y; $i++) {
|
|
$this_start_m = $i == $start_y ? $start_m : 1;
|
|
$this_end_m = $i == $start_y ? 12 : $end_m;
|
|
for ($j = $this_start_m; $j <= $this_end_m; $j++) {
|
|
if ($i == $end_y && $j == ($end_m + 1))
|
|
break;
|
|
$tmp_arr = array(
|
|
'date_year' => $i,
|
|
'date_month' => str_pad($j, 2, '0', STR_PAD_LEFT),
|
|
'sub_address' => '台中',
|
|
'contract_type' => 'A',
|
|
);
|
|
echo "<td>" . findData($data, $tmp_arr) . "</td>";
|
|
$tmp_arr['contract_type'] = 'B';
|
|
echo "<td>" . findData($data, $tmp_arr) . "</td>";
|
|
}
|
|
}
|
|
$tmp_arr = array(
|
|
'start_y' => $start_y,
|
|
'end_y' => $end_y,
|
|
'start_m' => $start_m,
|
|
'end_m' => $end_m,
|
|
'sub_address' => '台中',
|
|
'contract_type' => 'A',
|
|
);
|
|
echo "<td>" . findDataByCity($data, $tmp_arr) . "</td>";
|
|
$tmp_arr['contract_type'] = 'B';
|
|
echo "<td>" . findDataByCity($data, $tmp_arr) . "</td>";
|
|
?>
|
|
</tr>
|
|
<tr>
|
|
<th>南投</th>
|
|
<?php
|
|
for ($i = $start_y; $i <= $end_y; $i++) {
|
|
$this_start_m = $i == $start_y ? $start_m : 1;
|
|
$this_end_m = $i == $start_y ? 12 : $end_m;
|
|
for ($j = $this_start_m; $j <= $this_end_m; $j++) {
|
|
if ($i == $end_y && $j == ($end_m + 1))
|
|
break;
|
|
$tmp_arr = array(
|
|
'date_year' => $i,
|
|
'date_month' => str_pad($j, 2, '0', STR_PAD_LEFT),
|
|
'sub_address' => '南投',
|
|
'contract_type' => 'A',
|
|
);
|
|
echo "<td>" . findData($data, $tmp_arr) . "</td>";
|
|
$tmp_arr['contract_type'] = 'B';
|
|
echo "<td>" . findData($data, $tmp_arr) . "</td>";
|
|
}
|
|
}
|
|
$tmp_arr = array(
|
|
'start_y' => $start_y,
|
|
'end_y' => $end_y,
|
|
'start_m' => $start_m,
|
|
'end_m' => $end_m,
|
|
'sub_address' => '南投',
|
|
'contract_type' => 'A',
|
|
);
|
|
echo "<td>" . findDataByCity($data, $tmp_arr) . "</td>";
|
|
$tmp_arr['contract_type'] = 'B';
|
|
echo "<td>" . findDataByCity($data, $tmp_arr) . "</td>";
|
|
?>
|
|
</tr>
|
|
<tr>
|
|
<th>彰化</th>
|
|
<?php
|
|
for ($i = $start_y; $i <= $end_y; $i++) {
|
|
$this_start_m = $i == $start_y ? $start_m : 1;
|
|
$this_end_m = $i == $start_y ? 12 : $end_m;
|
|
for ($j = $this_start_m; $j <= $this_end_m; $j++) {
|
|
if ($i == $end_y && $j == ($end_m + 1))
|
|
break;
|
|
$tmp_arr = array(
|
|
'date_year' => $i,
|
|
'date_month' => str_pad($j, 2, '0', STR_PAD_LEFT),
|
|
'sub_address' => '彰化',
|
|
'contract_type' => 'A',
|
|
);
|
|
echo "<td>" . findData($data, $tmp_arr) . "</td>";
|
|
$tmp_arr['contract_type'] = 'B';
|
|
echo "<td>" . findData($data, $tmp_arr) . "</td>";
|
|
}
|
|
}
|
|
$tmp_arr = array(
|
|
'start_y' => $start_y,
|
|
'end_y' => $end_y,
|
|
'start_m' => $start_m,
|
|
'end_m' => $end_m,
|
|
'sub_address' => '彰化',
|
|
'contract_type' => 'A',
|
|
);
|
|
echo "<td>" . findDataByCity($data, $tmp_arr) . "</td>";
|
|
$tmp_arr['contract_type'] = 'B';
|
|
echo "<td>" . findDataByCity($data, $tmp_arr) . "</td>";
|
|
?>
|
|
</tr>
|
|
<tr>
|
|
<th>雲林</th>
|
|
<?php
|
|
for ($i = $start_y; $i <= $end_y; $i++) {
|
|
$this_start_m = $i == $start_y ? $start_m : 1;
|
|
$this_end_m = $i == $start_y ? 12 : $end_m;
|
|
for ($j = $this_start_m; $j <= $this_end_m; $j++) {
|
|
if ($i == $end_y && $j == ($end_m + 1))
|
|
break;
|
|
$tmp_arr = array(
|
|
'date_year' => $i,
|
|
'date_month' => str_pad($j, 2, '0', STR_PAD_LEFT),
|
|
'sub_address' => '雲林',
|
|
'contract_type' => 'A',
|
|
);
|
|
echo "<td>" . findData($data, $tmp_arr) . "</td>";
|
|
$tmp_arr['contract_type'] = 'B';
|
|
echo "<td>" . findData($data, $tmp_arr) . "</td>";
|
|
}
|
|
}
|
|
$tmp_arr = array(
|
|
'start_y' => $start_y,
|
|
'end_y' => $end_y,
|
|
'start_m' => $start_m,
|
|
'end_m' => $end_m,
|
|
'sub_address' => '雲林',
|
|
'contract_type' => 'A',
|
|
);
|
|
echo "<td>" . findDataByCity($data, $tmp_arr) . "</td>";
|
|
$tmp_arr['contract_type'] = 'B';
|
|
echo "<td>" . findDataByCity($data, $tmp_arr) . "</td>";
|
|
?>
|
|
</tr>
|
|
<tr>
|
|
<th rowspan="4" class="text-center" style="vertical-align: middle"> 南部</th>
|
|
<th>嘉義</th>
|
|
<?php
|
|
for ($i = $start_y; $i <= $end_y; $i++) {
|
|
$this_start_m = $i == $start_y ? $start_m : 1;
|
|
$this_end_m = $i == $start_y ? 12 : $end_m;
|
|
for ($j = $this_start_m; $j <= $this_end_m; $j++) {
|
|
if ($i == $end_y && $j == ($end_m + 1))
|
|
break;
|
|
$tmp_arr = array(
|
|
'date_year' => $i,
|
|
'date_month' => str_pad($j, 2, '0', STR_PAD_LEFT),
|
|
'sub_address' => '嘉義',
|
|
'contract_type' => 'A',
|
|
);
|
|
echo "<td>" . findData($data, $tmp_arr) . "</td>";
|
|
$tmp_arr['contract_type'] = 'B';
|
|
echo "<td>" . findData($data, $tmp_arr) . "</td>";
|
|
}
|
|
}
|
|
$tmp_arr = array(
|
|
'start_y' => $start_y,
|
|
'end_y' => $end_y,
|
|
'start_m' => $start_m,
|
|
'end_m' => $end_m,
|
|
'sub_address' => '嘉義',
|
|
'contract_type' => 'A',
|
|
);
|
|
echo "<td>" . findDataByCity($data, $tmp_arr) . "</td>";
|
|
$tmp_arr['contract_type'] = 'B';
|
|
echo "<td>" . findDataByCity($data, $tmp_arr) . "</td>";
|
|
?>
|
|
</tr>
|
|
<tr>
|
|
<th>台南</th>
|
|
<?php
|
|
for ($i = $start_y; $i <= $end_y; $i++) {
|
|
$this_start_m = $i == $start_y ? $start_m : 1;
|
|
$this_end_m = $i == $start_y ? 12 : $end_m;
|
|
for ($j = $this_start_m; $j <= $this_end_m; $j++) {
|
|
if ($i == $end_y && $j == ($end_m + 1))
|
|
break;
|
|
$tmp_arr = array(
|
|
'date_year' => $i,
|
|
'date_month' => str_pad($j, 2, '0', STR_PAD_LEFT),
|
|
'sub_address' => '台南',
|
|
'contract_type' => 'A',
|
|
);
|
|
echo "<td>" . findData($data, $tmp_arr) . "</td>";
|
|
$tmp_arr['contract_type'] = 'B';
|
|
echo "<td>" . findData($data, $tmp_arr) . "</td>";
|
|
}
|
|
}
|
|
$tmp_arr = array(
|
|
'start_y' => $start_y,
|
|
'end_y' => $end_y,
|
|
'start_m' => $start_m,
|
|
'end_m' => $end_m,
|
|
'sub_address' => '台南',
|
|
'contract_type' => 'A',
|
|
);
|
|
echo "<td>" . findDataByCity($data, $tmp_arr) . "</td>";
|
|
$tmp_arr['contract_type'] = 'B';
|
|
echo "<td>" . findDataByCity($data, $tmp_arr) . "</td>";
|
|
?>
|
|
</tr>
|
|
<tr>
|
|
<th>高雄</th>
|
|
<?php
|
|
for ($i = $start_y; $i <= $end_y; $i++) {
|
|
$this_start_m = $i == $start_y ? $start_m : 1;
|
|
$this_end_m = $i == $start_y ? 12 : $end_m;
|
|
for ($j = $this_start_m; $j <= $this_end_m; $j++) {
|
|
if ($i == $end_y && $j == ($end_m + 1))
|
|
break;
|
|
$tmp_arr = array(
|
|
'date_year' => $i,
|
|
'date_month' => str_pad($j, 2, '0', STR_PAD_LEFT),
|
|
'sub_address' => '高雄',
|
|
'contract_type' => 'A',
|
|
);
|
|
echo "<td>" . findData($data, $tmp_arr) . "</td>";
|
|
$tmp_arr['contract_type'] = 'B';
|
|
echo "<td>" . findData($data, $tmp_arr) . "</td>";
|
|
}
|
|
}
|
|
$tmp_arr = array(
|
|
'start_y' => $start_y,
|
|
'end_y' => $end_y,
|
|
'start_m' => $start_m,
|
|
'end_m' => $end_m,
|
|
'sub_address' => '高雄',
|
|
'contract_type' => 'A',
|
|
);
|
|
echo "<td>" . findDataByCity($data, $tmp_arr) . "</td>";
|
|
$tmp_arr['contract_type'] = 'B';
|
|
echo "<td>" . findDataByCity($data, $tmp_arr) . "</td>";
|
|
?>
|
|
</tr>
|
|
<tr>
|
|
<th>屏東</th>
|
|
<?php
|
|
for ($i = $start_y; $i <= $end_y; $i++) {
|
|
$this_start_m = $i == $start_y ? $start_m : 1;
|
|
$this_end_m = $i == $start_y ? 12 : $end_m;
|
|
for ($j = $this_start_m; $j <= $this_end_m; $j++) {
|
|
if ($i == $end_y && $j == ($end_m + 1))
|
|
break;
|
|
$tmp_arr = array(
|
|
'date_year' => $i,
|
|
'date_month' => str_pad($j, 2, '0', STR_PAD_LEFT),
|
|
'sub_address' => '屏東',
|
|
'contract_type' => 'A',
|
|
);
|
|
echo "<td>" . findData($data, $tmp_arr) . "</td>";
|
|
$tmp_arr['contract_type'] = 'B';
|
|
echo "<td>" . findData($data, $tmp_arr) . "</td>";
|
|
}
|
|
}
|
|
$tmp_arr = array(
|
|
'start_y' => $start_y,
|
|
'end_y' => $end_y,
|
|
'start_m' => $start_m,
|
|
'end_m' => $end_m,
|
|
'sub_address' => '屏東',
|
|
'contract_type' => 'A',
|
|
);
|
|
echo "<td>" . findDataByCity($data, $tmp_arr) . "</td>";
|
|
$tmp_arr['contract_type'] = 'B';
|
|
echo "<td>" . findDataByCity($data, $tmp_arr) . "</td>";
|
|
?>
|
|
</tr>
|
|
<tr>
|
|
<th rowspan="3" class="text-center" style="vertical-align: middle"> 宜花東</th>
|
|
<th>宜蘭</th>
|
|
<?php
|
|
for ($i = $start_y; $i <= $end_y; $i++) {
|
|
$this_start_m = $i == $start_y ? $start_m : 1;
|
|
$this_end_m = $i == $start_y ? 12 : $end_m;
|
|
for ($j = $this_start_m; $j <= $this_end_m; $j++) {
|
|
if ($i == $end_y && $j == ($end_m + 1))
|
|
break;
|
|
$tmp_arr = array(
|
|
'date_year' => $i,
|
|
'date_month' => str_pad($j, 2, '0', STR_PAD_LEFT),
|
|
'sub_address' => '宜蘭',
|
|
'contract_type' => 'A',
|
|
);
|
|
echo "<td>" . findData($data, $tmp_arr) . "</td>";
|
|
$tmp_arr['contract_type'] = 'B';
|
|
echo "<td>" . findData($data, $tmp_arr) . "</td>";
|
|
}
|
|
}
|
|
$tmp_arr = array(
|
|
'start_y' => $start_y,
|
|
'end_y' => $end_y,
|
|
'start_m' => $start_m,
|
|
'end_m' => $end_m,
|
|
'sub_address' => '宜蘭',
|
|
'contract_type' => 'A',
|
|
);
|
|
echo "<td>" . findDataByCity($data, $tmp_arr) . "</td>";
|
|
$tmp_arr['contract_type'] = 'B';
|
|
echo "<td>" . findDataByCity($data, $tmp_arr) . "</td>";
|
|
?>
|
|
</tr>
|
|
<tr>
|
|
<th>花蓮</th>
|
|
<?php
|
|
for ($i = $start_y; $i <= $end_y; $i++) {
|
|
$this_start_m = $i == $start_y ? $start_m : 1;
|
|
$this_end_m = $i == $start_y ? 12 : $end_m;
|
|
for ($j = $this_start_m; $j <= $this_end_m; $j++) {
|
|
if ($i == $end_y && $j == ($end_m + 1))
|
|
break;
|
|
$tmp_arr = array(
|
|
'date_year' => $i,
|
|
'date_month' => str_pad($j, 2, '0', STR_PAD_LEFT),
|
|
'sub_address' => '花蓮',
|
|
'contract_type' => 'A',
|
|
);
|
|
echo "<td>" . findData($data, $tmp_arr) . "</td>";
|
|
$tmp_arr['contract_type'] = 'B';
|
|
echo "<td>" . findData($data, $tmp_arr) . "</td>";
|
|
}
|
|
}
|
|
$tmp_arr = array(
|
|
'start_y' => $start_y,
|
|
'end_y' => $end_y,
|
|
'start_m' => $start_m,
|
|
'end_m' => $end_m,
|
|
'sub_address' => '花蓮',
|
|
'contract_type' => 'A',
|
|
);
|
|
echo "<td>" . findDataByCity($data, $tmp_arr) . "</td>";
|
|
$tmp_arr['contract_type'] = 'B';
|
|
echo "<td>" . findDataByCity($data, $tmp_arr) . "</td>";
|
|
?>
|
|
</tr>
|
|
<tr>
|
|
<th>台東</th>
|
|
<?php
|
|
for ($i = $start_y; $i <= $end_y; $i++) {
|
|
$this_start_m = $i == $start_y ? $start_m : 1;
|
|
$this_end_m = $i == $start_y ? 12 : $end_m;
|
|
for ($j = $this_start_m; $j <= $this_end_m; $j++) {
|
|
if ($i == $end_y && $j == ($end_m + 1))
|
|
break;
|
|
$tmp_arr = array(
|
|
'date_year' => $i,
|
|
'date_month' => str_pad($j, 2, '0', STR_PAD_LEFT),
|
|
'sub_address' => '台東',
|
|
'contract_type' => 'A',
|
|
);
|
|
echo "<td>" . findData($data, $tmp_arr) . "</td>";
|
|
$tmp_arr['contract_type'] = 'B';
|
|
echo "<td>" . findData($data, $tmp_arr) . "</td>";
|
|
}
|
|
}
|
|
$tmp_arr = array(
|
|
'start_y' => $start_y,
|
|
'end_y' => $end_y,
|
|
'start_m' => $start_m,
|
|
'end_m' => $end_m,
|
|
'sub_address' => '台東',
|
|
'contract_type' => 'A',
|
|
);
|
|
echo "<td>" . findDataByCity($data, $tmp_arr) . "</td>";
|
|
$tmp_arr['contract_type'] = 'B';
|
|
echo "<td>" . findDataByCity($data, $tmp_arr) . "</td>";
|
|
?>
|
|
</tr>
|
|
<tr>
|
|
<th class="text-center" style="vertical-align: middle"> 未分類</th>
|
|
<th></th>
|
|
<?php
|
|
for ($i = $start_y; $i <= $end_y; $i++) {
|
|
$this_start_m = $i == $start_y ? $start_m : 1;
|
|
$this_end_m = $i == $start_y ? 12 : $end_m;
|
|
for ($j = $this_start_m; $j <= $this_end_m; $j++) {
|
|
if ($i == $end_y && $j == ($end_m + 1))
|
|
break;
|
|
$tmp_arr = array(
|
|
'date_year' => $i,
|
|
'date_month' => str_pad($j, 2, '0', STR_PAD_LEFT),
|
|
'sub_address' => '',
|
|
'contract_type' => 'A',
|
|
);
|
|
echo "<td>" . findData($data, $tmp_arr) . "</td>";
|
|
$tmp_arr['contract_type'] = 'B';
|
|
echo "<td>" . findData($data, $tmp_arr) . "</td>";
|
|
}
|
|
}
|
|
$tmp_arr = array(
|
|
'start_y' => $start_y,
|
|
'end_y' => $end_y,
|
|
'start_m' => $start_m,
|
|
'end_m' => $end_m,
|
|
'sub_address' => '',
|
|
'contract_type' => 'A',
|
|
);
|
|
echo "<td>" . findDataByCity($data, $tmp_arr) . "</td>";
|
|
$tmp_arr['contract_type'] = 'B';
|
|
echo "<td>" . findDataByCity($data, $tmp_arr) . "</td>";
|
|
?>
|
|
</tr>
|
|
<tr>
|
|
<th></th>
|
|
<th>合計</th>
|
|
<?php
|
|
for ($i = $start_y; $i <= $end_y; $i++) {
|
|
$this_start_m = $i == $start_y ? $start_m : 1;
|
|
$this_end_m = $i == $start_y ? 12 : $end_m;
|
|
for ($j = $this_start_m; $j <= $this_end_m; $j++) {
|
|
if ($i == $end_y && $j == ($end_m + 1))
|
|
break;
|
|
$tmp_arr = array(
|
|
'date_year' => $i,
|
|
'date_month' => str_pad($j, 2, '0', STR_PAD_LEFT),
|
|
'contract_type' => 'A',
|
|
);
|
|
echo "<td>" . findDataByYearMonth($data, $tmp_arr) . "</td>";
|
|
$tmp_arr['contract_type'] = 'B';
|
|
echo "<td>" . findDataByYearMonth($data, $tmp_arr) . "</td>";
|
|
}
|
|
}
|
|
$tmp_arr = array(
|
|
'start_y' => $start_y,
|
|
'end_y' => $end_y,
|
|
'start_m' => $start_m,
|
|
'end_m' => $end_m,
|
|
'contract_type' => 'A',
|
|
);
|
|
echo "<td>" . findAllDataByYearMonth($data, $tmp_arr) . "</td>";
|
|
$tmp_arr['contract_type'] = 'B';
|
|
echo "<td>" . findAllDataByYearMonth($data, $tmp_arr) . "</td>";
|
|
?>
|
|
</tr>
|
|
</thead>
|
|
</table>
|
|
</div>
|
|
|
|
<br /><br />
|
|
|
|
<div class="col-12 col-md-8">
|
|
<table class="table table-striped">
|
|
<thead>
|
|
<tr>
|
|
<td colsapn="<?php echo count($data2); ?>">受定規格分析</td>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<th>代碼</th>
|
|
<?php
|
|
foreach ($data2 as $row) {
|
|
echo "<td>" . $row['facility_kind'] . "</td>";
|
|
}
|
|
?>
|
|
<th></th>
|
|
</tr>
|
|
<tr>
|
|
<th>機種</th>
|
|
<?php
|
|
foreach ($data2 as $row) {
|
|
echo "<td>" . getFacilityNamebyType($row['facility_kind']) . "</td>";
|
|
}
|
|
?>
|
|
<th>合計</th>
|
|
</tr>
|
|
<tr>
|
|
<th>數量</th>
|
|
<?php
|
|
foreach ($data2 as $row) {
|
|
echo "<td>" . $row['facility_count'] . "</td>";
|
|
}
|
|
?>
|
|
<th><?php echo findFacilityTypeAllCount($data2); ?></th>
|
|
</tr>
|
|
<tr>
|
|
<th>百分比</th>
|
|
<?php
|
|
foreach ($data2 as $row) {
|
|
echo "<td>" . (round($row['facility_count'] / findFacilityTypeAllCount($data2), 4) * 100) . "%" . "</td>";
|
|
}
|
|
?>
|
|
<th><?php echo "100%"; ?></th>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
|
|
<br /><br />
|
|
|
|
<div class="col-12 col-md-4">
|
|
<table class="table table-striped">
|
|
<thead>
|
|
<tr>
|
|
<td>舊改受訂規格分析</td>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<th>類型</th>
|
|
<?php
|
|
foreach ($m_type_arr as $key => $val) {
|
|
$title_tmp = empty($key) ? '未分類' : $key;
|
|
echo "<th>" . $title_tmp . "</th>";
|
|
}
|
|
?>
|
|
<th>合計</th>
|
|
</tr>
|
|
<tr>
|
|
<th>數量</th>
|
|
<?php
|
|
foreach ($m_type_arr as $key => $val) {
|
|
echo "<th>" . $val . "</th>";
|
|
}
|
|
?>
|
|
<th><?php echo $M_count; ?></th>
|
|
</tr>
|
|
<tr>
|
|
<th>百分比</th>
|
|
<?php
|
|
foreach ($m_type_arr as $key => $val) {
|
|
echo "<th>" . round($val / $M_count, 4) * 100 . "%" . "</th>";
|
|
}
|
|
?>
|
|
<th>100%</th>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
<script>
|
|
const formData = new FormData();
|
|
formData.append("start_month", $("#start_month").val());
|
|
formData.append("end_month", $("#end_month").val());
|
|
formData.append("excel_output", "excel_output");
|
|
// 使用 JavaScript 監聽按鈕點擊事件
|
|
function generateButton() {
|
|
// 使用 XMLHttpRequest 來呼叫 PHP 檔案,生成 Excel
|
|
var xhr = new XMLHttpRequest();
|
|
xhr.open('POST', window.location.origin + "/wms/estimated_shipping_date_report.php?<?= $token_link ?>", true);
|
|
xhr.responseType = 'text';
|
|
xhr.onload = function() {
|
|
if (xhr.status === 200) {
|
|
// 取得 PHP 回傳的檔案路徑
|
|
var response = xhr.responseText;
|
|
var file_path = xhr.responseText;
|
|
// 創建下載連結
|
|
var link = document.createElement('a');
|
|
link.setAttribute('href', window.location.origin + "/wms/excel/estimated_shipping_date_report.xlsx");
|
|
// 設定下載的檔案名稱
|
|
link.setAttribute('download', '出貨地區預定明細.xlsx');
|
|
link.style.display = 'none';
|
|
document.body.appendChild(link);
|
|
link.click();
|
|
document.body.removeChild(link);
|
|
}
|
|
};
|
|
xhr.send(formData);
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const scrollContainer = document.querySelector('.scroll-container');
|
|
let isDragging = false;
|
|
let startX;
|
|
|
|
scrollContainer.addEventListener('mousedown', (e) => {
|
|
isDragging = true;
|
|
startX = e.clientX + scrollContainer.scrollLeft;
|
|
scrollContainer.style.cursor = 'grabbing';
|
|
});
|
|
|
|
window.addEventListener('mousemove', (e) => {
|
|
if (!isDragging) return;
|
|
e.preventDefault();
|
|
const x = startX - e.clientX;
|
|
scrollContainer.scrollLeft = x;
|
|
});
|
|
|
|
window.addEventListener('mouseup', () => {
|
|
isDragging = false;
|
|
scrollContainer.style.cursor = 'grab';
|
|
});
|
|
|
|
scrollContainer.addEventListener('mouseleave', () => {
|
|
if (!isDragging) return;
|
|
isDragging = false;
|
|
scrollContainer.style.cursor = 'grab';
|
|
});
|
|
</script>
|