2438, 'wall_sum' => 0, 'side_sum' => 0, 'wall_basesize' => null , 'side_basesize' => null],
['length' => 3000, 'wall_sum' => 0, 'side_sum' => 0, 'wall_basesize' => null , 'side_basesize' => null],
['length' => 3500, 'wall_sum' => 0, 'side_sum' => 0, 'wall_basesize' => null , 'side_basesize' => null],
['length' => 4000, 'wall_sum' => 0, 'side_sum' => 0, 'wall_basesize' => null , 'side_basesize' => null],
['length' => 4300, 'wall_sum' => 0, 'side_sum' => 0, 'wall_basesize' => null , 'side_basesize' => null],
];
foreach ($eList as $item) {
$validLength = floatval($item['col23']); // 유효 길이
$railType = trim($item['col6']); // 레일 타입 (혼합형, 벽면형, 측면형)
foreach ($row3_data as &$row) {
if ($validLength <= $row['length']) {
if ($railType == '혼합형(120*70)(120*120)') {
$row['wall_sum'] += 1;
$row['side_sum'] += 1;
$row['wall_basesize'] = '125*75';
$row['side_basesize'] = '125*125';
} elseif ($railType == '벽면형(120*70)') {
$row['wall_sum'] += 2;
$row['wall_basesize'] = '125*75';
} elseif ($railType == '측면형(120*120)') {
$row['side_sum'] += 2;
$row['side_basesize'] = '125*125';
}
break;
}
}
}
unset($row); // 참조 제거
// 벽면형 테이블 출력
if (array_sum(array_column($row3_data, 'wall_sum')) > 0) {
echo '
';
echo '
';
echo '
';
echo '';
echo '';
echo '| 1.1 벽면형[120*70] | ';
echo '입고 & 생산 LOT NO. | ';
echo '
';
echo '';
echo ' | ';
echo '
';
echo '';
echo '
';
echo '
';
echo '
';
echo '
';
echo '
';
echo '
';
echo '';
echo '';
echo '| 세부품명 | ';
echo '재질 | ';
echo '길이(규격) / 수량 / 입고 & 생산 LOT NO. | ';
echo '
';
if ($prodCode == 'KSS01')
{
$itemPrefixes = [
'①마감재' => 'RS',
'②본체' => 'RM',
'③C형' => 'RC',
'④D형' => 'RD',
];
}
else if ( $prodCode == 'KSS02')
{
// D형 삭제됨.
$itemPrefixes = [
'①마감재' => 'RS',
'②본체' => 'RM',
'③C형' => 'RC'
];
}
else if (($prodCode == 'KSE01' or $prodCode == 'KWE01') and $FinishMat == 'EGI마감')
{
$itemPrefixes = [
'①마감재' => 'RE',
'②본체' => 'RM',
'③C형' => 'RC',
'④D형' => 'RD',
];
}
else if (($prodCode == 'KSE01' or $prodCode == 'KWE01') and $FinishMat == 'SUS마감')
{
$itemPrefixes = [
// 별도마감부분 추가
'①마감재' => 'RE',
'②본체' => 'RM',
'③C형' => 'RC',
'④D형' => 'RD',
'⑤별도마감' => 'YY',
];
}
foreach ($itemPrefixes as $key => $prefix) {
$material = (strpos($key, '마감') !== false) ? $GuidrailFinish : $bodyMaterial;
$material = (strpos($key, '별도') !== false ) ? $GuidrailExtraFinish : $material;
echo '';
if($prefix =='RS' || $prefix =='YY') { // YY sus 1.2T
echo '| ' . $key . ' | ';
echo '' . $material . ' | ';
}
else
{
echo '' . $key . ' | ';
echo '' . $material . ' | ';
}
echo '';
echo '';
echo ' ';
echo '';
foreach ($row3_data as $row) {
if ($row['wall_sum'] > 0) {
$weightResult = calWeight($material, 412, intval($row['length']));
$weightText = (is_array($weightResult) && isset($weightResult['current_weight'])) ? $weightResult['current_weight'] : 'N/A';
$code = getSLengthCode($row['length'], '기타');
echo '';
echo '| ' . $row['length'] . ' | ';
echo '' . $row['wall_sum'] . ' | ';
echo '
| ';
echo ' ';
}
}
echo '';
echo ' ';
echo ' ';
echo ' | ';
echo '
';
}
// 하부BASE 데이터 출력
echo '';
echo '| 하부BASE | ';
echo 'EGI 1.55T | ';
echo '';
echo '';
echo ' ';
echo '';
$weightResult_sum = 0;
$BaseCount = 0;
foreach ($row3_data as $row) {
if ($row['wall_sum'] > 0) {
$weightResult = calWeight('EGI 1.55T', 125, 75);
$weightResult_sum += $EGI_total ;
$BaseCount += $row['wall_sum'];
$code = $row['wall_basesize'];
$basesize = $row['wall_basesize'];
}
}
echo '';
echo '| ' . $basesize . ' | ';
echo '' . $BaseCount . ' | ';
echo '
| ';
echo ' ';
echo '';
echo ' ';
echo ' ';
echo ' | ';
echo '
';
echo '';
echo '
';
echo '
';
echo '
';
}
// 측면형 테이블 출력
if (array_sum(array_column($row3_data, 'side_sum')) > 0) {
echo '
';
echo '
';
echo '
';
echo '';
echo '';
echo '| 1.2 측면형[120*120] | ';
echo '입고 & 생산 LOT NO. | ';
echo '
';
echo '';
echo ' | ';
echo '
';
echo '';
echo '
';
echo '
';
echo '
';
echo '
';
echo '
';
echo '
';
echo '';
echo '';
echo '| 세부품명 | ';
echo '재질 | ';
echo '길이(규격) / 수량 / 입고 & 생산 LOT NO. | ';
echo '
';
if ($prodCode == 'KSS01')
{
$itemPrefixes = [
'①②마감재' => 'SS',
'③본체' => 'SM',
'④본체디딤' => 'SC',
'⑤C형' => 'SD',
'⑥D형' => 'SM',
];
}
else if ($prodCode == 'KSS02')
{
$itemPrefixes = [
'①②마감재' => 'SS',
'③본체' => 'SM',
'④본체디딤' => 'SC',
'⑤C형' => 'SD'
];
}
else if (($prodCode == 'KSE01' or $prodCode == 'KWE01') and $FinishMat == 'EGI마감')
{
$itemPrefixes = [
'①②마감재' => 'SE',
'③본체' => 'SM',
'④본체디딤' => 'SC',
'⑤C형' => 'SD',
'⑥D형' => 'SM',
];
}
else if (($prodCode == 'KSE01' or $prodCode == 'KWE01') and $FinishMat == 'SUS마감')
{
// 별도마감부분 추가
$itemPrefixes = [
'①②마감재' => 'SE',
'③본체' => 'SM',
'④본체디딤' => 'SC',
'⑤C형' => 'SD',
'⑥D형' => 'SM',
'⑦⑧별도마감' => 'YY',
];
}
foreach ($itemPrefixes as $key => $prefix) {
$material = (strpos($key, '마감재') !== false) ? $GuidrailFinish : $bodyMaterial;
$material = (strpos($key, '별도') !== false ) ? $GuidrailExtraFinish : $material;
echo '';
if($prefix =='SS' || $prefix =='YY') { // YY sus 1.2T
echo '| ' . $key . ' | ';
echo '' . $material . ' | ';
}
else
{
echo '' . $key . ' | ';
echo '' . $material . ' | ';
}
echo '';
echo '';
echo ' ';
echo '';
foreach ($row3_data as $row) {
if ($row['side_sum'] > 0) {
$weightResult = calWeight($material, 462, intval($row['length']));
$code = getSLengthCode($row['length'], '기타');
echo '';
echo '| ' . $row['length'] . ' | ';
echo '' . $row['side_sum'] . ' | ';
echo '
| ';
echo ' ';
}
}
echo '';
echo ' ';
echo ' ';
echo ' | ';
echo '
';
}
// 하부BASE 데이터 출력 1행으로 출력가능
echo '';
echo '| 하부BASE | ';
echo 'EGI 1.55T | ';
echo '';
echo '';
echo ' ';
echo '';
$weightResult_sum = 0;
$BaseCount = 0;
$side_sum = 0;
foreach ($row3_data as $row) {
if ($row['side_sum'] > 0) {
$weightResult = calWeight('EGI 1.55T', 135, 130);
$weightResult_sum += $EGI_total ;
$BaseCount += $row['side_sum'];
$code = $row['side_basesize'];
$basesize = $row['side_basesize'];
echo '';
echo '| ' . $basesize . ' | ';
echo '' . $BaseCount . ' | ';
echo '
| ';
echo ' ';
}
}
echo '';
echo ' ';
echo ' ';
echo ' | ';
echo '
';
echo '';
echo '
';
echo '
';
echo '
';
}
}
?>
[
'size' => '(60*40)',
'length_3000' => 0,
'length_4000' => 0
],
'하단보강엘바' => [
'size' => '(60*17)',
'length_3000' => 0,
'length_4000' => 0
],
'하단보강평철' => [
'size' => '',
'length_3000' => 0,
'length_4000' => 0
]
];
if($GuidrailFinish == 'EGI 1.55T')
$BTmat = 'BE';
else
$BTmat = 'BS';
// 데이터를 누적하여 합산
foreach ($eList as $item) {
$item_data['하단마감재']['length_3000'] += intval($item['col49']);
$item_data['하단마감재']['length_4000'] += intval($item['col50']);
$item_data['하단보강엘바']['length_3000'] += intval($item['col52']);
$item_data['하단보강엘바']['length_4000'] += intval($item['col53']);
$item_data['하단보강평철']['length_3000'] += intval($item['col55']);
$item_data['하단보강평철']['length_4000'] += intval($item['col56']);
}
$LbarFinish = 'EGI 1.55T';
$FlatbarFinish = 'EGI 1.15T';
echo '
';
echo '
';
echo '
';
echo '';
echo '';
echo '| 2. 하단마감재 | ';
echo '입고 & 생산 LOT NO. | ';
echo '
';
echo '';
echo ' | ';
echo '
';
echo '';
echo '
';
echo '
';
echo '
';
echo '
';
echo '
';
echo '
';
echo '';
echo '';
echo '| 세부품명 | ';
echo '재질 | ';
echo '길이(규격) / 수량 / 입고 & 생산 LOT NO. | ';
echo '
';
echo '';
//if($FinishMat == 'SUS마감') { // YY sus 1.2T
if($prodcode == 'KSS01' or $prodcode == 'KSS02') { // YY sus 1.2T
echo '| ①하단마감재 | ';
echo '' . $GuidrailFinish . ' | ';
}
else
{
echo '①하단마감재 | ';
echo '' . $GuidrailFinish . ' | ';
}
echo '';
echo '';
echo ' ';
echo '';
if( $item_data['하단마감재']['length_4000'] > 0) {
$length_4000 = 4000 ;
$weightResult = calWeight($GuidrailFinish, 184 , $length_4000 );
echo '';
echo '| ' . $length_4000 . ' | ';
echo '' . $item_data['하단마감재']['length_4000'] . ' | ';
$code = getSLengthCode(4000, '기타');
echo '
| ';
echo ' ';
}
if( $item_data['하단마감재']['length_3000'] > 0) {
$length_3000 = 3000 ;
$weightResult = calWeight($GuidrailFinish, 184 , $length_3000 );
echo '';
echo '| ' . $length_3000 . ' | ';
echo '' . $item_data['하단마감재']['length_3000'] . ' | ';
$code = getSLengthCode(3000, '기타');
echo '
| ';
echo ' ';
}
echo '';
echo ' ';
echo ' ';
echo ' | ';
echo '
';
echo '';
echo '| ②하단보강엘바 | ';
echo '' . $LbarFinish . ' | ';
echo '';
echo '';
echo ' ';
echo '';
if( $item_data['하단보강엘바']['length_4000'] > 0) {
$length_4000 = 4000 ;
$weightResult = calWeight($LbarFinish, 77 , $length_4000 );
echo '';
echo '| ' . $length_4000 . ' | ';
echo '' . $item_data['하단보강엘바']['length_4000'] . ' | ';
$code = getSLengthCode(4000, '기타');
echo '
| ';
echo ' ';
}
if( $item_data['하단보강엘바']['length_3000'] > 0) {
$length_3000 = 3000 ;
$weightResult = calWeight($LbarFinish, 77 , $length_3000 );
echo '';
echo '| ' . $length_3000 . ' | ';
echo '' . $item_data['하단보강엘바']['length_3000'] . ' | ';
$code = getSLengthCode(3000, '기타');
echo '
| ';
echo ' ';
}
echo '';
echo ' ';
echo ' ';
echo ' | ';
echo '
';
echo '';
echo '| ③하단보강평철 | ';
echo '' . $FlatbarFinish . ' | ';
echo '';
echo '';
echo ' ';
echo '';
if( $item_data['하단보강평철']['length_4000'] > 0) {
$length_4000 = 4000 ;
$weightResult = calWeight($FlatbarFinish, 50 , $length_4000 );
echo '';
echo '| ' . $length_4000 . ' | ';
echo '' . $item_data['하단보강평철']['length_4000'] . ' | ';
$code = getSLengthCode(4000, '기타');
// HH는 EGI1.15T 찾기
echo '
| ';
echo ' ';
}
if( $item_data['하단보강평철']['length_3000'] > 0) {
$length_3000 = 3000 ;
$weightResult = calWeight($FlatbarFinish, 50 , $length_3000 );
echo '';
echo '| ' . $length_3000 . ' | ';
echo '' . $item_data['하단보강평철']['length_3000'] . ' | ';
$code = getSLengthCode(3000, '기타');
echo '
| ';
echo ' ';
}
echo '';
echo ' ';
echo ' ';
echo ' | ';
echo '
';
if(!empty($GuidrailExtraFinish))
{
echo '';
echo '| ④별도마감재 | ';
echo '' . $GuidrailExtraFinish . ' | ';
echo '';
echo '';
echo ' ';
echo '';
if( $item_data['하단마감재']['length_4000'] > 0 && !empty($GuidrailExtraFinish ) ) {
$length_4000 = 4000 ;
$weightResult = calWeight($GuidrailExtraFinish , 238 , $length_4000 );
echo '';
echo '| ' . $length_4000 . ' | ';
echo '' . $item_data['하단마감재']['length_4000'] . ' | ';
$code = getSLengthCode($row['length'], '기타');
echo '
| ';
echo ' ';
}
if( $item_data['하단마감재']['length_3000'] > 0 && !empty($GuidrailExtraFinish ) ) {
$length_3000 = 3000 ;
$weightResult = calWeight($GuidrailExtraFinish , 238 , $length_3000 );
echo '';
echo '| ' . $length_3000 . ' | ';
echo '' . $item_data['하단마감재']['length_3000'] . ' | ';
$code = getSLengthCode($row['length'], '기타');
echo '
| ';
echo ' ';
}
}
if(empty($GuidrailExtraFinish ))
{
echo ' | 없음 | ';
echo ' | ';
echo ' ';
}
echo '';
echo ' ';
echo ' ';
echo ' | ';
echo '
';
echo '';
echo '
';
echo '
';
echo '
';
}
?>
문구, 'x' => X 좌표, 'y' => Y 좌표])
* @param int $fontSize 텍스트 폰트 크기 (모든 문구에 동일한 크기 적용)
* @return bool 성공 여부
*/
function drawImage($sourcePath, $savePath, $textData, $fontSize = 3) {
// 디버그 로그 파일 경로
$debugLog = './debug_log.txt';
// 로그 기록 함수
$log = function ($message) use ($debugLog) {
file_put_contents($debugLog, date('[Y-m-d H:i:s] ') . $message . "\n", FILE_APPEND);
};
try {
// GD 라이브러리 활성화 확인
if (!function_exists('imagecreatefromjpeg')) {
$log("GD 라이브러리가 활성화되지 않음");
return false;
}
// 원본 이미지 로드
$image = imagecreatefromjpeg($sourcePath);
if (!$image) {
$log("이미지 로드 실패: {$sourcePath}");
return false;
}
$log("이미지 로드 성공: {$sourcePath}");
// 텍스트 추가
$textColor = imagecolorallocate($image, 255, 0, 0); // 빨간색
foreach ($textData as $textItem) {
if (isset($textItem['text'], $textItem['x'], $textItem['y'])) {
imagestring(
$image,
$fontSize,
intval($textItem['x']),
intval($textItem['y']),
$textItem['text'],
$textColor
);
$log("텍스트 추가: '{$textItem['text']}' at ({$textItem['x']}, {$textItem['y']})");
} else {
$log("잘못된 텍스트 데이터: " . json_encode($textItem));
}
}
// 이미지 저장
$result = imagejpeg($image, $savePath);
if (!$result) {
$log("이미지 저장 실패: {$savePath}");
return false;
}
$log("이미지 저장 성공: {$savePath}");
// 메모리 해제
imagedestroy($image);
$log("메모리 해제 완료");
return true; // 성공
} catch (Exception $e) {
$log("예외 발생: " . $e->getMessage());
return false;
}
}
// $box_data = [
// ['size' => '500*350', 'sum' => 0, 'cover' => 0, 'fincover' => 0 ],
// ['size' => '500*380', 'sum' => 0, 'cover' => 0, 'fincover' => 0 ]
// ];
$box_data = [];
// $eList를 순회하며 데이터 생성
foreach ($eList as $item) {
$boxSize = trim($item['col36']); // `col37`에서 셔터박스 크기 추출
if ($boxSize == 'custom') {
$boxSize = trim($item['col36_custom']);
}
$railwidth = trim($item['col36_railwidth']);
$frontbottom = trim($item['col36_frontbottom']);
$boxdirection = trim($item['col36_boxdirection']); // 박스방향 양면 밑면 후면
$cover = intval($item['col44']); // `col44`에서 상부덮개 값 추출
$fincover = intval($item['col46']); // `col46`에서 마구리 수량 값 추출
$boxLengths = [
['length' => '1219', 'quantity' => intval($item['col38'])],
['length' => '2438', 'quantity' => intval($item['col39'])],
['length' => '3000', 'quantity' => intval($item['col40'])],
['length' => '3500', 'quantity' => intval($item['col41'])],
['length' => '4000', 'quantity' => intval($item['col42'])],
['length' => '4150', 'quantity' => intval($item['col43'])]
];
// `size`와 `boxdirection` 조합으로 기존 데이터 확인
$existingKey = array_search(true, array_map(function ($data) use ($boxSize, $boxdirection) {
return $data['size'] === $boxSize && $data['boxdirection'] === $boxdirection;
}, $box_data));
if ($existingKey === false) {
// 새로운 사이즈 및 박스 방향 추가
$box_data[] = [
'size' => $boxSize,
'sum' => 1, // 기본 값 설정
'cover' => $cover,
'fincover' => $fincover,
'railwidth' => $railwidth,
'frontbottom' => $frontbottom,
'boxdirection' => $boxdirection,
'length_data' => array_map(function ($length) {
return ['length' => $length['length'], 'sum' => $length['quantity']];
}, $boxLengths)
];
} else {
// 기존 데이터에 값 누적
$box_data[$existingKey]['sum'] += 1;
$box_data[$existingKey]['cover'] += $cover;
$box_data[$existingKey]['fincover'] += $fincover;
// 길이 데이터 누적
foreach ($boxLengths as $index => $length) {
$box_data[$existingKey]['length_data'][$index]['sum'] += $length['quantity'];
}
}
}
// 결과 확인
// print_r($box_data);
?>
';
// print_r($box);
// echo '';
// 입력 데이터 설정
if ($box['boxdirection'] == '양면') {
$suffix = 'both';
} else if ($box['boxdirection'] == '밑면') {
$suffix = 'bottom';
} else if ($box['boxdirection'] == '후면') {
$suffix = 'rear';
}
// 주의 사항 : image생성시는 https:// 이것은 금지된다. 안된다. 그래서 폴더는 ../ 이렇게 상대적 주소를 사용해야 한다. 중요함
$sourcePath = '../img/box/source/box_' . $suffix . '.jpg';
$saveName = 'box_' . str_replace('*', 'x', $box['size']) . '_' . $suffix . '.jpg';
$savePath = '../img/box/' . $saveName;
list($boxwidth, $boxheight) = explode('*', $box['size']); // 셔터박스 크기 분리
$TopcoverSize = $boxwidth - 111; // 텍스트로 추가할 값
// 입력 데이터 설정
if ($box['boxdirection'] == '양면') {
$textData = [
['text' => $boxheight , 'x' => 15, 'y' => 85],
['text' => $TopcoverSize, 'x' => 100, 'y' => 5],
['text' => $box['frontbottom'] , 'x' => 25, 'y' => 170],
['text' => $box['railwidth'] , 'x' => 55, 'y' => 210],
['text' => ($boxwidth-$box['frontbottom']-$box['railwidth']-140) , 'x' => 120, 'y' => 175],
['text' => ($boxheight-140) , 'x' => 200, 'y' => 90],
['text' => ($boxwidth+5) , 'x' => 100, 'y' => 225],
['text' => ($boxheight+5) , 'x' => 135, 'y' => 250],
];
} else if ($box['boxdirection'] == '밑면') {
$textData = [
['text' => $boxheight , 'x' => 15, 'y' => 85],
['text' => $TopcoverSize, 'x' => 100, 'y' => 5],
['text' => $box['frontbottom'] , 'x' => 25, 'y' => 170],
['text' => $box['railwidth'] , 'x' => 55, 'y' => 210],
['text' => ($boxwidth-$box['frontbottom']-$box['railwidth']-140) , 'x' => 120, 'y' => 175], // 점검구 140 빼기
['text' => ($boxheight) , 'x' => 200, 'y' => 90],
['text' => ($boxwidth+5) , 'x' => 100, 'y' => 225],
['text' => ($boxheight+5) , 'x' => 135, 'y' => 250],
];
} else if ($box['boxdirection'] == '후면') {
$textData = [
['text' => $boxheight , 'x' => 15, 'y' => 85],
['text' => $TopcoverSize, 'x' => 100, 'y' => 5],
['text' => $box['frontbottom'] , 'x' => 25, 'y' => 170],
['text' => $box['railwidth'] , 'x' => 55, 'y' => 210],
['text' => ($boxwidth-$box['frontbottom']-$box['railwidth']) , 'x' => 120, 'y' => 175],
['text' => ($boxheight-140) , 'x' => 200, 'y' => 90],
['text' => ($boxwidth+5) , 'x' => 100, 'y' => 225],
['text' => ($boxheight+5) , 'x' => 135, 'y' => 250],
];
}
// 이미지 그리기 함수 호출
drawImage($sourcePath, $savePath, $textData, 3);
$BoxFinish = 'EGI 1.55T';
$boxCover = intval($box['cover']); // 상부덮개 수량
$boxFinCover = intval($box['fincover']); // 마구리 수량
echo '
';
echo '
';
echo '
';
echo '';
echo '';
echo '| 3. 케이스 [' . $box['size'] . '] 점검구: ' . $box['boxdirection'] . ' | ';
echo '
';
echo '';
echo ' | ';
echo '
';
echo '';
echo '
';
echo '
';
echo '
';
echo '
';
echo '
';
echo '
';
echo '';
echo '';
echo '| 세부품명 | ';
echo '재질 | ';
echo '길이(규격) / 수량 / 입고 & 생산 LOT NO. | ';
echo '
';
// 로트번호 표준사이즈는 포밍기로 재고생성 구성 요소 정의
if($box['size'] == '500*380') {
if($box['boxdirection'] == '양면')
{
$components = [
'①전면부' => ['prefix' => 'CF', 'dimension' => $boxheight + 122],
'②린텔부' => ['prefix' => 'CL', 'dimension' => $boxwidth - 330],
'③⑤점검구' => ['prefix' => 'CP', 'dimension' => $boxwidth - 200],
'④후면코너부' => ['prefix' => 'CB', 'dimension' => 170],
];
}
if($box['boxdirection'] == '밑면')
{
$components = [
'①전면부' => ['prefix' => 'CF', 'dimension' => $boxheight + 122],
'②린텔부' => ['prefix' => 'CL', 'dimension' => $boxwidth - 330],
'③점검구' => ['prefix' => 'CP', 'dimension' => $boxwidth - 200],
'④후면부' => ['prefix' => 'CB', 'dimension' => $boxheight + 85*2],
];
}
if($box['boxdirection'] == '후면')
{
$components = [
'①전면부' => ['prefix' => 'CF', 'dimension' => $boxheight + 122],
'②린텔부' => ['prefix' => 'CL', 'dimension' => $boxwidth + 85*2],
'③점검구' => ['prefix' => 'CP', 'dimension' => $boxheight - 200],
'④후면코너부' => ['prefix' => 'CB', 'dimension' => 170 ],
];
}
} else
{
if($box['boxdirection'] == '양면')
{
$components = [
'①전면부' => ['prefix' => 'XX', 'dimension' => $boxheight + 122],
'②린텔부' => ['prefix' => 'CL', 'dimension' => $boxwidth - 330],
'③점검구' => ['prefix' => 'XX', 'dimension' => $boxwidth - 200],
'④후면코너부' => ['prefix' => 'CB', 'dimension' => 170],
'⑤점검구' => ['prefix' => 'XX', 'dimension' => $boxheight - 100],
];
}
if($box['boxdirection'] == '밑면')
{
$components = [
'①전면부' => ['prefix' => 'XX', 'dimension' => $boxheight + 122],
'②린텔부' => ['prefix' => 'CL', 'dimension' => $boxwidth - 330],
'③점검구' => ['prefix' => 'XX', 'dimension' => $boxwidth - 200],
'④후면부' => ['prefix' => 'CB', 'dimension' => $boxheight + 85*2],
];
}
if($box['boxdirection'] == '후면')
{
$components = [
'①전면부' => ['prefix' => 'XX', 'dimension' => $boxheight + 122],
'②린텔부' => ['prefix' => 'CL', 'dimension' => $boxwidth + 85*2],
'③점검구' => ['prefix' => 'XX', 'dimension' => $boxheight - 200],
'④후면코너부' => ['prefix' => 'CB', 'dimension' => $boxheight + 85*2],
];
}
}
// 각 구성 요소 출력
foreach ($components as $name => $data) {
echo '';
echo '| ' . $name . ' | ';
echo '' . $BoxFinish . ' | ';
echo '';
echo '';
echo ' ';
echo '';
foreach ($box['length_data'] as $row) {
if (intval($row['sum']) > 0) {
$weightResult = calWeight($BoxFinish, $data['dimension'], intval($row['length']));
$code = getSLengthCode($row['length'], '기타');
echo '';
echo '| ' . $row['length'] . ' | ';
echo '' . $row['sum'] . ' | ';
echo '
| ';
echo ' ';
}
}
echo '';
echo ' ';
echo ' ';
echo ' | ';
echo '
';
}
// 상부덮개 출력
echo '';
if($box['boxdirection'] == '양면')
echo '| ⑥상부덮개 | ';
else
echo '⑤상부덮개 | ';
echo '' . $BoxFinish . ' | ';
echo '';
echo '';
echo ' ';
echo '';
$calculateWidth = ($boxwidth-111) ;
$topSize = '1219*'. $calculateWidth ;
$topWeight = calWeight($BoxFinish, $calculateWidth, 1219);
echo '';
echo '| ' . $topSize . ' | ';
echo '' . $boxCover . ' | ';
echo '
| ';
echo ' ';
echo '';
echo ' ';
echo ' ';
echo ' | ';
echo '
';
// 측면부 (마구리) 출력
echo '';
if($box['boxdirection'] == '양면')
echo '⑦측면부 (마구리) | ';
else
echo '⑥측면부 (마구리) | ';
echo '' . $BoxFinish . ' | ';
echo '';
echo '';
echo ' ';
echo '';
list($boxwidthFin, $boxheightFin) = explode('*', $box['size']);
$sideWeight = calWeight($BoxFinish, $boxwidthFin, $boxheightFin);
echo '';
echo '| ' . ($boxwidthFin+5) . '*' . ($boxheightFin+5) . ' | ';
echo '' . $boxFinCover . ' | ';
echo '
| ';
echo ' ';
echo '';
echo ' ';
echo ' ';
echo ' | ';
echo '
';
echo '';
echo '
';
echo '
';
echo '
';
}
}
?>
2438, 'sum' => 0],
['length' => 3000, 'sum' => 0],
['length' => 3500, 'sum' => 0],
['length' => 4000, 'sum' => 0],
['length' => 4300, 'sum' => 0]
];
foreach ($eList as $item) {
$smoke_data[0]['sum'] += floatval($item['col31']); // length 2438
$smoke_data[1]['sum'] += floatval($item['col32']); // length 3000
$smoke_data[2]['sum'] += floatval($item['col33']); // length 3500
$smoke_data[3]['sum'] += floatval($item['col34']); // length 4000
$smoke_data[4]['sum'] += floatval($item['col35']); // length 4300
}
// 연기차단재 데이터가 있는 경우만 출력
$smoke_rows = [];
foreach ($smoke_data as $row) {
if ($row['sum'] > 0) {
$smoke_rows[] = [
'length' => $row['length'],
'sum' => $row['sum']
];
}
}
$smoke_rowspan = count($smoke_rows);
// W80 기준 숫자 찾기
$smokeban80 = 0;
foreach ($eList as $item) {
$smokeban80 += floatval($item['col47']);
}
echo '
';
echo '
';
echo '
';
echo '';
echo '';
echo '| 4. 연기차단재 | ';
echo '
';
echo '';
echo ' | ';
echo '
';
echo '';
echo '
';
echo '
';
echo '
';
echo '
';
echo '
';
echo '
';
echo '';
echo '';
echo '| 재질 | ';
echo '세부품명 | ';
echo '길이(규격) / 수량 / 입고 & 생산 LOT NO. | ';
echo '
';
echo '';
echo 'EGI 0.8T + 화이바 글라스 코팅직물 | ';
echo '레일용 [W50] | ';
echo '';
echo '';
echo ' ';
echo '';
$side_sum = 0;
foreach ($smoke_rows as $row) {
$side_sum += $row['sum'];
if(intval($row['sum'])>0)
{
$weightResult = calWeight('EGI 0.8T', 26 , intval($row['length']) );
echo '';
echo '| ' . $row['length'] . ' | ';
echo '' . $row['sum'] . ' | ';
$code = getSLengthCode($row['length'], '기타'); // 연기차단재 80만 특별히 계산하고 50은 기타로 분류함
echo '
| ';
echo ' ';
$side_sum += $row['sum'];
}
}
echo '';
echo ' ';
echo ' ';
echo ' | ';
echo '
';
echo '';
echo ' 케이스용 [W80] | ';
echo '';
echo '';
echo ' ';
echo '';
if(intval($smokeban80)>0)
{
$length = 3000;
$weightResult = calWeight('EGI 0.8T', 26 , $length );
echo '';
echo '| ' . $length . ' | ';
echo '' . $smokeban80 . ' | ';
$code = getSLengthCode(3000, '연기차단재80');
echo '
| ';
echo ' ';
}
echo '';
echo ' ';
echo ' ';
echo ' | ';
echo '
';
echo '';
echo '
';
echo '
';
echo '
';
?>
';
echo '
';
echo '
';
echo '
';
echo '';
// 1180과 400 라인 출력
echo '';
echo '| 생산량 합계(KG) | ';
echo 'SUS | ';
echo 'EGI | ';
echo '
';
// 900과 300 라인 출력
echo '';
echo '| ' . number_format($SUS_total, 2) . ' | ';
echo ' ' . number_format($EGI_total, 2) . ' | ';
echo '
';
// 600 라인 출력
echo '';
echo '| ' . number_format($SUS_total + $EGI_total, 2) . ' | ';
echo '
';
echo '';
echo '
';
echo '
';
echo '
';
echo '
';
?>