zck 3 недель назад
Родитель
Сommit
e4f15a26e0

+ 16 - 3
application/api/controller/MonthlyGarments.php

@@ -238,11 +238,24 @@ class MonthlyGarments extends Api
             $this->error('UniqId不能为空');
         }
 
+        // 支持多个 UniqId(逗号分隔),逐条删除
+        $idList = array_filter(array_map('trim', explode(',', $uniqId)));
+        if (empty($idList)) {
+            $this->error('UniqId不能为空');
+        }
+
         $modRq = date('Y-m-d H:i:s');
-        $sql = "UPDATE `月度样衣进度` SET `Mod_rq`='{$modRq}' WHERE `UniqId`='{$uniqId}'";
-        $result = \db()->query($sql);
+        $successCount = 0;
+        foreach ($idList as $id) {
+            $safeId = addslashes($id);
+            $sql = "UPDATE `月度样衣进度` SET `Mod_rq`='{$modRq}' WHERE `UniqId`='{$safeId}'";
+            $result = \db()->query($sql);
+            if ($result !== false) {
+                $successCount++;
+            }
+        }
 
-        if ($result !== false) {
+        if ($successCount > 0) {
             $this->success('删除成功');
         } else {
             $this->error('删除失败');

+ 12 - 6
application/api/controller/WorkOrder.php

@@ -5432,6 +5432,7 @@ class WorkOrder extends Api
         foreach ($reportData as $item) {
             $orderNo = $item['订单编号'];
             $processName = $item['工序名称'];
+            $group = $item['报工小组'];
 
             if (!isset($orderProcessReportMap[$orderNo])) {
                 $orderProcessReportMap[$orderNo] = [
@@ -5450,10 +5451,11 @@ class WorkOrder extends Api
             // 累加各工序的报工数量
             $orderProcessReportMap[$orderNo]['工序报工数量'][$processName] += $item['报工数量'];
 
-            // 收集该工序的报工小组(去重)
-            if (!in_array($item['报工小组'], $orderProcessReportMap[$orderNo]['工序报工小组'][$processName])) {
-                $orderProcessReportMap[$orderNo]['工序报工小组'][$processName][] = $item['报工小组'];
+            // 累加各小组的报工数量(按小组分组)
+            if (!isset($orderProcessReportMap[$orderNo]['工序报工小组'][$processName][$group])) {
+                $orderProcessReportMap[$orderNo]['工序报工小组'][$processName][$group] = 0;
             }
+            $orderProcessReportMap[$orderNo]['工序报工小组'][$processName][$group] += $item['报工数量'];
         }
 
         // 将报工数据合并到订单数据中
@@ -5469,9 +5471,13 @@ class WorkOrder extends Api
                     $order[$process] = $quantity;
                 }
 
-                // 将每个工序的报工小组作为单独的字段
-                foreach ($report['工序报工小组'] as $process => $groups) {
-                    $order[$process . '小组'] = implode(',', $groups);
+                // 将每个工序的报工小组及数量格式化为 "组名(数量),组名(数量)" 形式
+                foreach ($report['工序报工小组'] as $process => $groupMap) {
+                    $parts = [];
+                    foreach ($groupMap as $groupName => $groupQty) {
+                        $parts[] = $groupName . '(' . $groupQty . ')';
+                    }
+                    $order[$process . '小组'] = implode(',', $parts);
                 }
             }
 

+ 19 - 0
application/api/controller/WorkOrderProcess.php

@@ -1736,6 +1736,10 @@ class WorkOrderProcess extends Api
         $oldPartCount = count($currentWorkOrderInfo['partInfo']);
         $oldProcessCount = count($currentWorkOrderInfo['processInfo']);
 
+        if ($oldPartCount > 0 || $oldProcessCount > 0) {
+            $this->error('当前工单已有部件或工艺数据,不允许复制');
+        }
+
         $now = date('Y-m-d H:i:s');
         $partInsertList = $this->buildWorkOrderPartCopyRows(
             $targetWorkOrderInfo['partInfo'],
@@ -1792,6 +1796,21 @@ class WorkOrderProcess extends Api
                 }
             }
 
+            // 同步复制工单_基本资料中的"计划制造工分"字段(中文表名/字段名改用原生SQL,避免参数化语法错误)
+            $safeTarget = addslashes($params['target_workorder']);
+            $gfRow = \db()->query("SELECT `计划制造工分` FROM `工单_基本资料` WHERE `订单编号` = '{$safeTarget}' AND `Mod_rq` IS NULL LIMIT 1");
+            $targetGf = isset($gfRow[0]['计划制造工分']) ? $gfRow[0]['计划制造工分'] : null;
+            if ($targetGf !== null && $targetGf !== '') {
+                $safeCurrent = addslashes($params['current_workorder']);
+                $safeGf = addslashes($targetGf);
+                $gfUpdateResult = \db()->query(
+                    "UPDATE `工单_基本资料` SET `计划制造工分` = '{$safeGf}' WHERE `订单编号` = '{$safeCurrent}' AND `Mod_rq` IS NULL"
+                );
+                if ($gfUpdateResult === false) {
+                    throw new \Exception('复制计划制造工分失败');
+                }
+            }
+
             $logResult = Db::name('work_order_operation_log')->insert($logData);
             if ($logResult === false || $logResult === 0) {
                 throw new \Exception('写入操作日志失败');