diff --git a/mes_in_sct/app/action/SetWipOutputByItemId.php b/mes_in_sct/app/action/SetWipOutputByItemId.php index a28259c..774629b 100644 --- a/mes_in_sct/app/action/SetWipOutputByItemId.php +++ b/mes_in_sct/app/action/SetWipOutputByItemId.php @@ -122,15 +122,11 @@ class SetWipOutputByItemId throw new Exception('工序单元[' . $workingsubclass . ']下设备编码[' . $device_code . ']找不到对应投入物料生产批次信息'); } $item_code_in_process_log = array_column($ret, "item_code"); - //获取正向追溯的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); - } - } + + //获取原材料的正向追溯的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")))); $batch = $ret[0]['batch']; @@ -227,16 +223,14 @@ 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表做准备 @@ -351,15 +345,17 @@ class SetWipOutputByItemId } else { $uuid = json_encode(array_values(array_unique($uuid))); } - //保证每个正向追溯的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); + //需要读取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))); } - $forward_tracing_uuid = json_encode(array_unique($forward_tracing_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); $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'); @@ -368,9 +364,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) 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,input_finish_time) 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, @@ -393,7 +389,8 @@ class SetWipOutputByItemId $ng_code, $device_category_id, 1, - $forward_tracing_uuid + $forward_tracing_uuid, + $finish_time ); $sql = $wip_process_log_sql_head . $wip_process_log_sql_val; $row = Db::query($sql);