diff --git a/mes_in_sct/app/action/SetWipOutputByItemId.php b/mes_in_sct/app/action/SetWipOutputByItemId.php index 774629b..a28259c 100644 --- a/mes_in_sct/app/action/SetWipOutputByItemId.php +++ b/mes_in_sct/app/action/SetWipOutputByItemId.php @@ -122,11 +122,15 @@ class SetWipOutputByItemId throw new Exception('工序单元[' . $workingsubclass . ']下设备编码[' . $device_code . ']找不到对应投入物料生产批次信息'); } $item_code_in_process_log = array_column($ret, "item_code"); - - //获取原材料的正向追溯的uuid - $forward_tracing_uuid = array_unique(array_merge(...array_map(function ($json) { - return is_array($decoded = json_decode($json, true)) ? $decoded : []; - }, array_column($ret, "forward_tracing_uuid")))); + //获取正向追溯的uuid + $forward_tracing_uuid_in_process_log = array_column($ret, "forward_tracing_uuid"); + $forward_tracing_uuid = []; + foreach ($forward_tracing_uuid_in_process_log as $json_str) { + $decoded = json_decode($json_str, true); // 转成数组 + if (is_array($decoded)) { + $forward_tracing_uuid = array_merge($forward_tracing_uuid, $decoded); + } + } $batch = $ret[0]['batch']; @@ -223,14 +227,16 @@ class SetWipOutputByItemId } else { $sql_val_out_result_param[] = "'" . $param_out_val . "'"; } - $ng_code_val = 0; + // 判断NG是否存在 if ($val['code'] == 'NG') { if ($param_out[$val['code']] != '') { $ng_code = $param_out[$val['code']]; + } else { + $ng_code = 0; } } - $ng_code = $ng_code_val; + } // 8.获取设备投入物料信息,为后续追加battery_map、bkv表做准备 @@ -345,17 +351,15 @@ class SetWipOutputByItemId } else { $uuid = json_encode(array_values(array_unique($uuid))); } - //需要读取input_item_id的$forward_tracing_uuid进行拼接 - $sql = "SELECT forward_tracing_uuid FROM hf_mes_bkv_batch_process_log WHERE item_id = '" . $input_item_id . "' ORDER BY id DESC LIMIT 1"; - $input_item_id_forward_tracing_uuid = Db::fetchAll($sql); - if (!empty($input_item_id_forward_tracing_uuid)) { - $forward_tracing_uuid = array_unique(array_merge($forward_tracing_uuid, json_decode($input_item_id_forward_tracing_uuid[0]['forward_tracing_uuid'], true))); + //保证每个正向追溯的uuid都是唯一的 + $forward_tracing_uuid_only[] = generateUniqueId(); + $forward_tracing_uuid_only = json_encode($forward_tracing_uuid_only); + $decoded_uuid = json_decode($forward_tracing_uuid_only, true); + if (is_array($decoded_uuid)) { + $forward_tracing_uuid = array_merge($forward_tracing_uuid, $decoded_uuid); } - if ($input_item_id != $item_id) { - //保证每个正向追溯的uuid都是唯一的 - $forward_tracing_uuid = array_unique(array_merge($forward_tracing_uuid, [generateUniqueId()])); - } - $forward_tracing_uuid = json_encode($forward_tracing_uuid); + $forward_tracing_uuid = json_encode(array_unique($forward_tracing_uuid)); + $wip_uuid = json_encode(array_values(array_unique($wip_uuid))); $now_date = date('Y-m-d H:i:s'); $start_time = isset($param_out['START_TIME']) ? $param_out['START_TIME'] : date('Y-m-d H:i:s'); @@ -364,9 +368,9 @@ class SetWipOutputByItemId $battery_id = $item_id; // 新增数据到process_log表 - $wip_process_log_sql_head = 'INSERT INTO "hf_mes_bkv_batch_process_log" (item_id, batch, subbatch, workingsubclass, process_code, device_code, status, start_time, finish_time, bom_source_id, item_batch, item_quantity, pid, uuid, bom_id, item_code, item_name, lot, tray, ng_code, device_category_id,last_status,forward_tracing_uuid,input_finish_time) VALUES'; + $wip_process_log_sql_head = 'INSERT INTO "hf_mes_bkv_batch_process_log" (item_id, batch, subbatch, workingsubclass, process_code, device_code, status, start_time, finish_time, bom_source_id, item_batch, item_quantity, pid, uuid, bom_id, item_code, item_name, lot, tray, ng_code, device_category_id,last_status,forward_tracing_uuid) VALUES'; $wip_process_log_sql_val = sprintf( - "('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s')", + "('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s')", $battery_id, $batch, $subbatch, @@ -389,8 +393,7 @@ class SetWipOutputByItemId $ng_code, $device_category_id, 1, - $forward_tracing_uuid, - $finish_time + $forward_tracing_uuid ); $sql = $wip_process_log_sql_head . $wip_process_log_sql_val; $row = Db::query($sql);