2000000) { // 获取全部的工序 $sql = sprintf( "SELECT id,code FROM \"%s\" WHERE flow_id=%s ORDER BY id ASC;", 'hf_mes_technology_process', $data['flow_id'] ); $process_data = Db::query($sql); if (empty($process_data)) { throw new Exception('不存在工序数据'); } $date = date('Y-m-d H:i:s'); $new_subbatch = date('YmdHis', strtotime($date)) . '_' . $data['batch']; $bkv_table = config('app.bkv_prefix') . $new_subbatch; // 写入子批的数据 $row = Db::insert('hf_mes_production_planning_management_subbatch', [ 'batch_id' => $data['batch_id'], 'flow_id' => $data['flow_id'], 'subbatch' => $new_subbatch, 'create_time' => $date ]); if ($row === NULL) { throw new Exception("写入子批次数据失败"); } // 组装结果参数 $s = ''; foreach ($process_data as $vp) { // 获取工序对应的工序编码 $sql = sprintf( "SELECT code,field_type FROM \"%s\" WHERE process_id=%s ORDER BY id ASC;", 'hf_mes_technology_process_result_param', $vp['id'] ); $result_param = Db::query($sql); if (empty($result_param)) { continue; } // 组装BKV表每个工序的结果参数 foreach ($result_param as $vp_params) { $p_code = $vp['code'] . '.' . $vp_params['code']; if ($vp_params['field_type'] == 'VARCHAR') { $s = $s . '"' . $p_code . '" varchar(50) COLLATE "pg_catalog"."default",'; } elseif ($vp_params['field_type'] == 'FLOAT') { $s = $s . '"' . $p_code . '" float8 DEFAULT 0,'; } elseif ($vp_params['field_type'] == 'INT') { $s = $s . '"' . $p_code . '" int4 DEFAULT 0,'; } elseif ($vp_params['field_type'] == 'TIMESTAMP') { $s = $s . '"' . $p_code . '" timestamp(6),'; } else { $s = $s . '"' . $p_code . '" text COLLATE "pg_catalog"."default",'; } } } $s = rtrim($s, ','); $sql = <<