Parcourir la source

工序产量核查

unknown il y a 2 semaines
Parent
commit
1ed4703d33
1 fichiers modifiés avec 67 ajouts et 0 suppressions
  1. 67 0
      application/api/controller/WorkOrderProcess.php

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

@@ -1627,4 +1627,71 @@ class WorkOrderProcess extends Api
 
         return [];
     }
+
+
+
+    /**
+     * 工序产量核查:按工单查询报工汇总(工单信息 / 工序列表 / 人员报工明细)
+     * @param workorder 工单编号
+     * @return array
+     */
+    public function checkProcessProduction()
+    {
+        if (!$this->request->isGet()) {
+            $this->error('请求方法错误');
+        }
+        $params = $this->request->param();
+        if (empty($params['workorder'])) {
+            $this->error('工单编号不能为空');
+        }
+
+        $list = Db::name('设备_工分计酬')->alias('a')
+            ->join('工单_基本资料 b', 'a.work_order = b.订单编号 AND b.Mod_rq IS NULL', 'LEFT')
+            ->where('a.work_order', $params['workorder'])
+            ->whereNull('a.del_rq')
+            ->field('b.订单编号,b.生产款号,b.款式,a.process_code as 工序号,a.process_name as 工序名称,a.staff_name as 员工姓名,
+                SUM(a.number) as 数量,MIN(a.date) as 开工日期,MAX(a.date) as 完工日期,
+                SUM(a.salary) as 金额,SUM(a.production_hour) as 工时,SUM(a.salary) as 工资')
+            ->group('b.订单编号,b.生产款号,b.款式,a.process_code,a.process_name,a.staff_no,a.staff_name')
+            ->order('a.process_code asc,a.staff_no asc')
+            ->select();
+
+        if (empty($list)) {
+            $this->error('未找到报工数据');
+        }
+
+        $data = [
+            '订单编号' => $list[0]['订单编号'],
+            '生产款号' => $list[0]['生产款号'],
+            '款式' => $list[0]['款式'],
+            '工序列表' => [],
+        ];
+
+        $processMap = [];
+        foreach ($list as $row) {
+            $processKey = (string)$row['工序号'] . '|' . (string)$row['工序名称'];
+            if (!isset($processMap[$processKey])) {
+                $processMap[$processKey] = [
+                    '工序号' => $row['工序号'],
+                    '工序名称' => $row['工序名称'],
+                    'staffs' => [],
+                ];
+            }
+
+            $startDate = !empty($row['开工日期']) ? date('Y-m-d', strtotime($row['开工日期'])) : '';
+            $endDate = !empty($row['完工日期']) ? date('Y-m-d', strtotime($row['完工日期'])) : '';
+            $processMap[$processKey]['staffs'][] = [
+                '员工姓名' => $row['员工姓名'],
+                '数量' => floatval($row['数量']),
+                '开工日期' => $startDate,
+                '完工日期' => $endDate,
+                '金额' => round(floatval($row['金额']), 4),
+                '工时' => round(floatval($row['工时']), 4),
+                '工资' => round(floatval($row['工资']), 4),
+            ];
+        }
+        $data['工序列表'] = array_values($processMap);
+
+        $this->success('成功', $data);
+    }
 }