65 lines
2.0 KiB
PHP
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;
|
|
}
|
|
}
|