SCTMES_V5/mes_in_sct/app/event/SetPreProcessParamEvent.php
2025-06-14 18:55:09 +08:00

65 lines
2.0 KiB
PHP

<?php
namespace app\event;
use Exception;
use libs\db\Db;
use libs\listener\Event;
class SetPreProcessParamEvent extends Event
{
public function handle($data)
{
if (count($data) <= 0) {
throw new Exception('写入数据为空,请检查!');
}
list($process, $process_code, $next_process_code, $subbatch,$item_subatch_id, $input_item_subatch_id) = [$data['process'], $data['process_code'], $data['next_process_code'],$data['subbatch'],$data['input_item_subatch_id'], $data['item_subatch_id']];
//判断当前工序是否为第一工序,不是第一工序则把前工序参数复写进来
if($process[0][2] == $data['process_code']){
return $data;
}
$idx = 0;
// foreach( $process as $key=>$val){
// if($val[2] ==$process_code ){
// $idx = $key;
// }
// }
$process_data = array_column($process,null,2) ;
$process_code_data = array_slice($process,0,$process_data[$process_code][0] );
//获取除当前工序所有process_id的参数
$process_param = [];
foreach( $process_code_data as $key=>$val){
$sql = "SELECT code FROM hf_mes_technology_process_result_param
WHERE process_id=".$val[1];
$ret = Db::fetchAll($sql);
if(empty($ret)){
continue;
}
foreach($ret as $k => $v){
$process_param[] = '"'.$val[2].'.'.$v['code'].'" = t2."'.$val[2].'.'.$v['code'].'"';
}
}
//把前一工序数据读取出来
$sql = sprintf("UPDATE \"hf_mes_tmp_bkv_$subbatch\" AS t1
SET
%s
FROM \"hf_mes_tmp_bkv_$subbatch\" AS t2
WHERE t2.id = $item_subatch_id AND t1.id=$input_item_subatch_id;", implode(',',$process_param) );
$row = Db::query($sql);
if ($row === NULL) {
throw new Exception("获取[$input_item_id]前工序数据失败");
}
return $data;
}
}