|
|
@@ -102,12 +102,19 @@ class OrderPeriodAdjustRangeForm extends Model
|
|
|
$successOrderSnList = [];
|
|
|
$failedOrderSnList = [];
|
|
|
$skippedOrderSnList = [];
|
|
|
+ $skippedDetailMap = [];
|
|
|
$failedDetailMap = [];
|
|
|
|
|
|
foreach ($this->orders as $orderRow) {
|
|
|
$orderSn = $orderRow['SN'];
|
|
|
- if ((string)$orderRow['PERIOD_NUM'] === (string)$this->period_num) {
|
|
|
+ $skipReason = $this->getSkipReason($orderRow);
|
|
|
+ if ($skipReason !== null) {
|
|
|
$skippedOrderSnList[] = $orderSn;
|
|
|
+ $skippedDetailMap[$orderSn] = [
|
|
|
+ 'reason' => $skipReason,
|
|
|
+ 'current_period' => $orderRow['PERIOD_NUM'] ?? '',
|
|
|
+ 'target_period' => $this->period_num,
|
|
|
+ ];
|
|
|
continue;
|
|
|
}
|
|
|
|
|
|
@@ -138,7 +145,43 @@ class OrderPeriodAdjustRangeForm extends Model
|
|
|
'success_order_sn_list' => $successOrderSnList,
|
|
|
'failed_order_sn_list' => $failedOrderSnList,
|
|
|
'skipped_order_sn_list' => $skippedOrderSnList,
|
|
|
+ 'skipped_detail_map' => $skippedDetailMap,
|
|
|
'failed_detail_map' => $failedDetailMap,
|
|
|
];
|
|
|
}
|
|
|
+
|
|
|
+ private function getSkipReason(array $orderRow): ?string
|
|
|
+ {
|
|
|
+ $currentPeriodNum = (string)($orderRow['PERIOD_NUM'] ?? '');
|
|
|
+ $targetPeriodNum = (string)$this->period_num;
|
|
|
+
|
|
|
+ if ($currentPeriodNum !== '' && $currentPeriodNum === $targetPeriodNum) {
|
|
|
+ return '订单期数与目标期数相同';
|
|
|
+ }
|
|
|
+
|
|
|
+ if ($currentPeriodNum === '') {
|
|
|
+ return '订单期数为空,无法判断是否可调整';
|
|
|
+ }
|
|
|
+
|
|
|
+ $currentPeriod = Period::getInfoByPeriodNum($currentPeriodNum);
|
|
|
+ if (!$currentPeriod) {
|
|
|
+ return Yii::t('ctx', 'invalidPcNo');
|
|
|
+ }
|
|
|
+
|
|
|
+ if ((int)$currentPeriod['IS_SENT'] === 1) {
|
|
|
+ return '已挂网,不可调整';
|
|
|
+ }
|
|
|
+
|
|
|
+ if ($currentPeriodNum === $targetPeriodNum) {
|
|
|
+ return '订单期数与目标期数相同';
|
|
|
+ }
|
|
|
+
|
|
|
+ $availablePeriodList = Period::getPeriodList(+(int)$currentPeriodNum - 1);
|
|
|
+ $availablePeriodNums = array_column($availablePeriodList, 'PERIOD_NUM');
|
|
|
+ if (!in_array($targetPeriodNum, $availablePeriodNums, false)) {
|
|
|
+ return '不在可调整期数范围内';
|
|
|
+ }
|
|
|
+
|
|
|
+ return null;
|
|
|
+ }
|
|
|
}
|