|
|
@@ -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);
|
|
|
+ }
|
|
|
}
|