fetch('process_status', $process_status); if (!$process_status) { $process_status = 'finish'; } if ($process_status == 'running') { $error_msg = 'is running'; return true; // 时间未到 } // $db = kernel::database(); // ================================================================== // ================================================================== base_kvstore::instance('ome/retryreshipcancel')->store('process_status', 'running', $this->ttl); $db = kernel::database(); $operateLogMdl = app::get('ome')->model('operation_log'); $reshipMdl = app::get('ome')->model('reship'); $returnProductMdl = app::get('ome')->model('return_product'); $sql = "SELECT r.reship_id, reship_bn, is_check, r.order_id, branch_id, reship_bn, rp.return_id FROM sdb_ome_reship AS r LEFT JOIN sdb_ome_return_product AS rp ON r.return_id = rp.return_id WHERE rp.status = '5' AND r.status<>'5' AND rp.last_modified>unix_timestamp('2025-06-25 00:00:00') ORDER BY rp.last_modified ASC LIMIT 30"; $list = $db->select($sql); if (!$list) { $error_msg = 'no info to work'; return $this->_finish(); } $reshipIds = array_column($list, 'reship_id'); $retryError = [ // '前端拒绝', '请求WMS取消失败,返回:数据异常,请联系IT', '请求WMS取消失败,返回:EXEC QM_SP_IF_DL_ORDER_CANCEL', '请求WMS取消失败,返回:请求超时', ]; $logFilter = [ 'obj_type' => 'reship@ome', 'obj_id' => $reshipIds, 'filter_sql' => ' memo REGEXP "'.implode('|',$retryError).'"', ]; $logList = $operateLogMdl->getList('*', $logFilter, 0, -1, 'log_id ASC'); if (!$logList) { $error_msg = 'no info to work'; return $this->_finish(); } $logList = array_column($logList, null, 'obj_id'); // 根据obj_id分组,obj_id重复的只保留最新的一条 $logReshipIds = array_column($logList, 'obj_id'); foreach ($list as $lv) { $up = [ 'last_modified' => time(), ]; $returnProductMdl->update($up, ['return_id'=>$lv['return_id']]); if (!in_array($lv['reship_id'], $logReshipIds)) { continue; } if (strpos($logList[$lv['reship_id']]['memo'], '自动重试请求WMS') === false) { $msg = ''; $reship = [ 'is_check' => $lv['is_check'], 'branch_id' => $lv['branch_id'], 'reship_id' => $lv['reship_id'], 'reship_bn' => $lv['reship_bn'], 'order_id' => $lv['order_id'], ]; $rs = console_reship::notice($reship); if ($rs['rsp'] == 'succ'){ $updateSdf = array( 'is_check' => '5', 't_end' => time(), ); $reshipMdl->update($updateSdf, array('reship_id'=>$reship['reship_id'])); kernel::single('console_reship')->releaseChangeFreeze($reship['reship_id']); $msg = "取消成功"; } elseif ($rs['rsp'] == 'fail'){ $msg = "取消失败,返回:".$rs['msg']; } $operateLogMdl->write_log('reship@ome',$reship['reship_id'],'前端拒绝 自动重试请求WMS'.$msg); } } return $this->_finish(); } private function _finish($status = true, $process_status = 'finish') { base_kvstore::instance('ome/retryreshipcancel')->store('process_status', $process_status, $this->ttl); return $status; } }