|
|
@@ -2372,113 +2372,15 @@ class WorkOrder extends Api
|
|
|
|
|
|
// 判断长度是否等于2或等于4
|
|
|
if (strlen($afterDash) == 2) {
|
|
|
-// // 查询船样为0的数据
|
|
|
-// $processlist = \db('工单_印件资料')
|
|
|
-// ->where('订单编号', $param['order'])
|
|
|
-// ->where($where)
|
|
|
-// ->where('船样', 0)
|
|
|
-// ->field('子订单编号,颜色,款号,zdtotal,颜色备注,color_id,
|
|
|
-// cm1,cm2,cm3,cm4,cm5,cm6,cm7,cm8,cm9,cm10,
|
|
|
-// cmsl1,cmsl2,cmsl3,cmsl4,cmsl5,cmsl6,cmsl7,cmsl8,cmsl9,cmsl10,Uniqid')
|
|
|
-// ->select();
|
|
|
-//
|
|
|
-// foreach ($processlist as $key => $value) {
|
|
|
-// // 将尺码和对应的数量从 cm1-cm10 和 cmsl1-cmsl10 转换为动态键值对
|
|
|
-// for ($i = 1; $i <= 10; $i++) {
|
|
|
-// if ($value['cm' . $i] !== '' && $value['cm' . $i] !== null) {
|
|
|
-// $processlist[$key][$value['cm' . $i]] = $value['cmsl' . $i];
|
|
|
-// }
|
|
|
-// // 移除���始的 cm 和 cmsl 字段
|
|
|
-// unset($processlist[$key]['cm' . $i], $processlist[$key]['cmsl' . $i]);
|
|
|
-// }
|
|
|
-// // 添加条码字段,值为子订单编号
|
|
|
-// $processlist[$key]['条码'] = $value['子订单编号'];
|
|
|
-// }
|
|
|
-//
|
|
|
-//// 用于存储合并后的数据
|
|
|
-// $mergedData = [];
|
|
|
-//
|
|
|
-//// 按颜色备注进行合并
|
|
|
-// foreach ($processlist as $item) {
|
|
|
-// $key = $item['颜色备注'];
|
|
|
-//
|
|
|
-// if (!isset($mergedData[$key])) {
|
|
|
-// $mergedData[$key] = $item;
|
|
|
-// } else {
|
|
|
-// // 合并尺码对应的数量
|
|
|
-// foreach ($item as $size => $quantity) {
|
|
|
-// if (is_numeric($size)) {
|
|
|
-// if (!isset($mergedData[$key][$size])) {
|
|
|
-// $mergedData[$key][$size] = 0;
|
|
|
-// }
|
|
|
-// $mergedData[$key][$size] += $quantity;
|
|
|
-// }
|
|
|
-// }
|
|
|
-// // 合并 zdtotal
|
|
|
-// $mergedData[$key]['zdtotal'] += $item['zdtotal'];
|
|
|
-// }
|
|
|
-// }
|
|
|
-//
|
|
|
-//// 将合并后的数据转换为索引数组
|
|
|
-// $processlist = array_values($mergedData);
|
|
|
-//
|
|
|
-//// 如果有 0 的值,清空为 ''
|
|
|
-// foreach ($processlist as &$row) {
|
|
|
-// foreach ($row as $key => $value) {
|
|
|
-// if ($value === 0) {
|
|
|
-// $row[$key] = '';
|
|
|
-// }
|
|
|
-// }
|
|
|
-// }
|
|
|
-//
|
|
|
-//// 对数组进行排序
|
|
|
-// sort($processlist);
|
|
|
-//
|
|
|
-//// 自定义排序顺序
|
|
|
-// $customOrder = ['XXS', 'XS', 'S', 'M', 'L', 'XL', 'XXL'];
|
|
|
-// usort($processlist, function($a, $b) use ($customOrder) {
|
|
|
-// $posA = array_search($a, $customOrder);
|
|
|
-// $posB = array_search($b, $customOrder);
|
|
|
-// return $posA - $posB;
|
|
|
-// });
|
|
|
-//
|
|
|
-//// 查询船样为1的数据
|
|
|
-// $chuanyang = \db('工单_印件资料')
|
|
|
-// ->where('订单编号', $param['order'])
|
|
|
-// ->where($where)
|
|
|
-// ->where('船样', 1)
|
|
|
-// ->field('子订单编号,颜色,款号,zdtotal,颜色备注,color_id,
|
|
|
-// cm1,cm2,cm3,cm4,cm5,cm6,cm7,cm8,cm9,cm10,
|
|
|
-// cmsl1,cmsl2,cmsl3,cmsl4,cmsl5,cmsl6,cmsl7,cmsl8,cmsl9,cmsl10,Uniqid')
|
|
|
-// ->select();
|
|
|
-//
|
|
|
-// foreach ($chuanyang as $key => $value) {
|
|
|
-// // 将尺码和对应的数量从 cm1-cm10 和 cmsl1-cmsl10 转换为动态键值对
|
|
|
-// for ($i = 1; $i <= 10; $i++) {
|
|
|
-// if ($value['cm' . $i] !== '' && $value['cm' . $i] !== null) {
|
|
|
-// $chuanyang[$key][$value['cm' . $i]] = $value['cmsl' . $i];
|
|
|
-// }
|
|
|
-// // 移除原始的 cm 和 cmsl 字段
|
|
|
-// unset($chuanyang[$key]['cm' . $i], $chuanyang[$key]['cmsl' . $i]);
|
|
|
-// }
|
|
|
-// // 添加条码字段,值为子订单编号
|
|
|
-// $chuanyang[$key]['条码'] = $value['子订单编号'];
|
|
|
-// }
|
|
|
-//
|
|
|
-//// 将船样为1的数据添加到船样为0的数据后面
|
|
|
-// $finalList = array_merge($processlist, $chuanyang);
|
|
|
-//
|
|
|
-// $data['process'] = $finalList;
|
|
|
// 查询船样为0的数据
|
|
|
$processlist = \db('工单_印件资料')
|
|
|
->where('订单编号', $param['order'])
|
|
|
->where($where)
|
|
|
->where('船样', 0)
|
|
|
->field('子订单编号,颜色,款号,zdtotal,颜色备注,color_id,
|
|
|
-cm1,cm2,cm3,cm4,cm5,cm6,cm7,cm8,cm9,cm10,
|
|
|
-cmsl1,cmsl2,cmsl3,cmsl4,cmsl5,cmsl6,cmsl7,cmsl8,cmsl9,cmsl10,Uniqid')
|
|
|
+ cm1,cm2,cm3,cm4,cm5,cm6,cm7,cm8,cm9,cm10,
|
|
|
+ cmsl1,cmsl2,cmsl3,cmsl4,cmsl5,cmsl6,cmsl7,cmsl8,cmsl9,cmsl10,Uniqid')
|
|
|
->select();
|
|
|
-
|
|
|
foreach ($processlist as $key => $value) {
|
|
|
// 将尺码和对应的数量从 cm1-cm10 和 cmsl1-cmsl10 转换为动态键值对
|
|
|
for ($i = 1; $i <= 10; $i++) {
|
|
|
@@ -2489,11 +2391,9 @@ cmsl1,cmsl2,cmsl3,cmsl4,cmsl5,cmsl6,cmsl7,cmsl8,cmsl9,cmsl10,Uniqid')
|
|
|
unset($processlist[$key]['cm' . $i], $processlist[$key]['cmsl' . $i]);
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
-// 用于存储合并后的数据
|
|
|
+ // 用于存储合并后的数据
|
|
|
$mergedData = [];
|
|
|
-
|
|
|
-// 按颜色备注进行合并
|
|
|
+ // 按颜色备注进行合并
|
|
|
foreach ($processlist as $item) {
|
|
|
$key = $item['颜色备注'];
|
|
|
|
|
|
@@ -2515,17 +2415,15 @@ cmsl1,cmsl2,cmsl3,cmsl4,cmsl5,cmsl6,cmsl7,cmsl8,cmsl9,cmsl10,Uniqid')
|
|
|
$mergedData[$key]['zdtotal'] += $item['zdtotal'];
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
-// 查询船样为1的数据
|
|
|
+ // 查询船样为1的数据
|
|
|
$chuanyang = \db('工单_印件资料')
|
|
|
->where('订单编号', $param['order'])
|
|
|
->where($where)
|
|
|
->where('船样', 1)
|
|
|
->field('子订单编号,颜色,款号,zdtotal,颜色备注,color_id,
|
|
|
-cm1,cm2,cm3,cm4,cm5,cm6,cm7,cm8,cm9,cm10,
|
|
|
-cmsl1,cmsl2,cmsl3,cmsl4,cmsl5,cmsl6,cmsl7,cmsl8,cmsl9,cmsl10,Uniqid')
|
|
|
+ cm1,cm2,cm3,cm4,cm5,cm6,cm7,cm8,cm9,cm10,
|
|
|
+ cmsl1,cmsl2,cmsl3,cmsl4,cmsl5,cmsl6,cmsl7,cmsl8,cmsl9,cmsl10,Uniqid')
|
|
|
->select();
|
|
|
-
|
|
|
foreach ($chuanyang as $key => $value) {
|
|
|
// 将尺码和对应的数量从 cm1-cm10 和 cmsl1-cmsl10 转换为动态键值对
|
|
|
for ($i = 1; $i <= 10; $i++) {
|
|
|
@@ -2539,11 +2437,11 @@ cmsl1,cmsl2,cmsl3,cmsl4,cmsl5,cmsl6,cmsl7,cmsl8,cmsl9,cmsl10,Uniqid')
|
|
|
$chuanyang[$key]['条码'] = $value['子订单编号'];
|
|
|
}
|
|
|
|
|
|
-// 将合并后的数据插入到相应颜色备注的原始数据尾部
|
|
|
+ // 将合并后的数据插入到相应颜色备注的原始数据尾部
|
|
|
$finalList = [];
|
|
|
$groupedData = [];
|
|
|
|
|
|
-// 将原始数据按颜色备注分组
|
|
|
+ // 将原始数据按颜色备注分组
|
|
|
foreach ($processlist as $item) {
|
|
|
$key = $item['颜色备注'];
|
|
|
if (!isset($groupedData[$key])) {
|
|
|
@@ -2552,21 +2450,16 @@ cmsl1,cmsl2,cmsl3,cmsl4,cmsl5,cmsl6,cmsl7,cmsl8,cmsl9,cmsl10,Uniqid')
|
|
|
$groupedData[$key][] = $item;
|
|
|
}
|
|
|
|
|
|
-// 将合并后的数据插入到对应的颜色备注组的尾部
|
|
|
+ // 将合并后的数据插入到对应的颜色备注组的尾部
|
|
|
foreach ($groupedData as $key => $items) {
|
|
|
$finalList = array_merge($finalList, $items); // 先添加原始数据
|
|
|
if (isset($mergedData[$key])) {
|
|
|
$finalList[] = $mergedData[$key]; // 在组的尾部添加合并数据
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
-// 将船样为1的数据添加到最终列表中
|
|
|
+ // 将船样为1的数据添加到最终列表中
|
|
|
$finalList = array_merge($finalList, $chuanyang);
|
|
|
-
|
|
|
-// 最终数据结构
|
|
|
$data['process'] = $finalList;
|
|
|
-
|
|
|
-
|
|
|
$data['order'] = $list;
|
|
|
$data['xhdata'] = $arr;
|
|
|
$this->success('成功',$data);
|
|
|
@@ -2581,10 +2474,10 @@ cmsl1,cmsl2,cmsl3,cmsl4,cmsl5,cmsl6,cmsl7,cmsl8,cmsl9,cmsl10,Uniqid')
|
|
|
cmsl1, cmsl2, cmsl3, cmsl4, cmsl5, cmsl6, cmsl7, cmsl8, cmsl9, cmsl10, Uniqid')
|
|
|
->select();
|
|
|
|
|
|
-// 保存格式化后的数据
|
|
|
+ // 保存格式化后的数据
|
|
|
$formattedData = [];
|
|
|
|
|
|
-// 遍历数据进行尺码转换并添加到输出数组
|
|
|
+ // 遍历数据进行尺码转换并添加到输出数组
|
|
|
foreach ($processlist as $item) {
|
|
|
for ($i = 1; $i <= 10; $i++) {
|
|
|
if (!empty($item['cm' . $i])) {
|
|
|
@@ -2595,11 +2488,12 @@ cmsl1,cmsl2,cmsl3,cmsl4,cmsl5,cmsl6,cmsl7,cmsl8,cmsl9,cmsl10,Uniqid')
|
|
|
$formattedData[] = $item;
|
|
|
}
|
|
|
|
|
|
-// 用于存储每个 color_id 和颜色备注的合并数据
|
|
|
+ // 用于存储每个 color_id 和颜色备注的合并数据
|
|
|
$mergedData = [];
|
|
|
|
|
|
-// 进行合并
|
|
|
+ // 进行合并
|
|
|
foreach ($formattedData as $item) {
|
|
|
+// $key = $item['color_id'] . '|' . $item['颜色备注'];
|
|
|
$key = $item['color_id'] . '|' . $item['颜色备注'];
|
|
|
|
|
|
if (!isset($mergedData[$key])) {
|
|
|
@@ -2608,9 +2502,16 @@ cmsl1,cmsl2,cmsl3,cmsl4,cmsl5,cmsl6,cmsl7,cmsl8,cmsl9,cmsl10,Uniqid')
|
|
|
} else {
|
|
|
// 合并 zdtotal 和尺码数量
|
|
|
$mergedData[$key]['zdtotal'] += $item['zdtotal'];
|
|
|
- foreach (['36', '38', '40', '42', '44', '46', '48'] as $size) {
|
|
|
- if (isset($item[$size])) {
|
|
|
- $mergedData[$key][$size] = ($mergedData[$key][$size] ?? 0) + $item[$size];
|
|
|
+// foreach (['36', '38', '40', '42', '44', '46', '48'] as $size) {
|
|
|
+// if (isset($item[$size])) {
|
|
|
+// $mergedData[$key][$size] = ($mergedData[$key][$size] ?? 0) + $item[$size];
|
|
|
+// }
|
|
|
+// }
|
|
|
+ // 动态获取尺码字段,合并尺码数量
|
|
|
+ foreach ($item as $field => $value) {
|
|
|
+ // 只处理字段名为数字的尺码字段
|
|
|
+ if (is_numeric($field)) {
|
|
|
+ $mergedData[$key][$field] = ($mergedData[$key][$field] ?? 0) + $value;
|
|
|
}
|
|
|
}
|
|
|
// 优先选择以 "00" 结尾的条码
|
|
|
@@ -2620,16 +2521,16 @@ cmsl1,cmsl2,cmsl3,cmsl4,cmsl5,cmsl6,cmsl7,cmsl8,cmsl9,cmsl10,Uniqid')
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-// 将合并后的数据添加到原始数据的末尾,并排序
|
|
|
+ // 将合并后的数据添加到原始数据的末尾,并排序
|
|
|
$finalOutput = $formattedData;
|
|
|
|
|
|
-// 按 color_id 和 颜色备注 分组,并在每组末尾添加合并后的条码数据
|
|
|
+ // 按 color_id 和 颜色备注 分组,并在每组末尾添加合并后的条码数据
|
|
|
foreach ($mergedData as $key => $mergeItem) {
|
|
|
$mergeItem['合并标记'] = true; // 用于标记这是合并后的数据
|
|
|
$finalOutput[] = $mergeItem;
|
|
|
}
|
|
|
|
|
|
-// 对最终数组进行排序
|
|
|
+ // 对最终数组进行排序
|
|
|
usort($finalOutput, function($a, $b) {
|
|
|
// 先按 color_id 排序
|
|
|
$compare = strcmp($a['color_id'], $b['color_id']);
|
|
|
@@ -2651,7 +2552,7 @@ cmsl1,cmsl2,cmsl3,cmsl4,cmsl5,cmsl6,cmsl7,cmsl8,cmsl9,cmsl10,Uniqid')
|
|
|
return $compare;
|
|
|
});
|
|
|
|
|
|
-// 查询仅获取船样为 1 的数据
|
|
|
+ // 查询仅获取船样为 1 的数据
|
|
|
$chuanyang = \db('工单_印件资料')
|
|
|
->where('订单编号', $param['order'])
|
|
|
->where($where)
|
|
|
@@ -2662,7 +2563,7 @@ cmsl1,cmsl2,cmsl3,cmsl4,cmsl5,cmsl6,cmsl7,cmsl8,cmsl9,cmsl10,Uniqid')
|
|
|
->select();
|
|
|
|
|
|
$chuanyangvval = [];
|
|
|
-// 遍历船样为 1 的数据,进行尺码转换
|
|
|
+ // 遍历船样为 1 的数据,进行尺码转换
|
|
|
foreach ($chuanyang as $item) {
|
|
|
for ($i = 1; $i <= 10; $i++) {
|
|
|
if (!empty($item['cm' . $i])) {
|