|
@@ -660,20 +660,15 @@ class Decision extends Api
|
|
|
if (empty($param['month'])) {
|
|
if (empty($param['month'])) {
|
|
|
$this->error('参数错误');
|
|
$this->error('参数错误');
|
|
|
}
|
|
}
|
|
|
- $where = [];
|
|
|
|
|
- // 将参数转换成标准日期格式
|
|
|
|
|
- $mouth = date_create_from_format('Ym', $param['month'])->format('Y-m');
|
|
|
|
|
- $where['a.sczl_rq'] = ['like', $mouth . '%'];
|
|
|
|
|
|
|
|
|
|
- // 分页配置
|
|
|
|
|
- $page = !empty($param['page']) ? (int)$param['page'] : 1;
|
|
|
|
|
- $limit = !empty($param['limit']) ? (int)$param['limit'] : 9999; // 默认查询所有
|
|
|
|
|
|
|
+ $month = date_create_from_format('Ym', $param['month'])->format('Y-m');
|
|
|
|
|
+ $where = ['a.sczl_rq' => ['like', $month . '%']];
|
|
|
|
|
|
|
|
- // 查询数据
|
|
|
|
|
$list = \db('设备_产量计酬')
|
|
$list = \db('设备_产量计酬')
|
|
|
->alias('a')
|
|
->alias('a')
|
|
|
->join('工单_印件资料 c', 'a.sczl_gdbh = c.Yj_Gdbh AND a.sczl_yjno = c.yj_Yjno')
|
|
->join('工单_印件资料 c', 'a.sczl_gdbh = c.Yj_Gdbh AND a.sczl_yjno = c.yj_Yjno')
|
|
|
->join('工单_工艺资料 d', 'a.sczl_gdbh = d.Gy0_gdbh AND a.sczl_yjno = d.Gy0_yjno AND a.sczl_gxh = d.Gy0_gxh')
|
|
->join('工单_工艺资料 d', 'a.sczl_gdbh = d.Gy0_gdbh AND a.sczl_yjno = d.Gy0_yjno AND a.sczl_gxh = d.Gy0_gxh')
|
|
|
|
|
+ ->join('设备_基本资料 e', 'a.sczl_jtbh = e.设备编号')
|
|
|
->field([
|
|
->field([
|
|
|
'a.sczl_gdbh' => '工单编号',
|
|
'a.sczl_gdbh' => '工单编号',
|
|
|
'a.sczl_yjno' => '印件号',
|
|
'a.sczl_yjno' => '印件号',
|
|
@@ -684,57 +679,52 @@ class Decision extends Api
|
|
|
'rtrim(d.印刷方式)' => '印刷方式',
|
|
'rtrim(d.印刷方式)' => '印刷方式',
|
|
|
'rtrim(d.版距)' => '版距',
|
|
'rtrim(d.版距)' => '版距',
|
|
|
'rtrim(d.Gy0_SITE)' => '车间名称',
|
|
'rtrim(d.Gy0_SITE)' => '车间名称',
|
|
|
|
|
+ 'rtrim(e.设备编组)' => '设备编组'
|
|
|
])
|
|
])
|
|
|
->where($where)
|
|
->where($where)
|
|
|
->group('a.sczl_gdbh, a.sczl_yjno, a.sczl_gxh')
|
|
->group('a.sczl_gdbh, a.sczl_yjno, a.sczl_gxh')
|
|
|
- ->page($page, $limit) // 使用 page 和 limit 实现分页
|
|
|
|
|
->select();
|
|
->select();
|
|
|
|
|
|
|
|
- // 数据处理
|
|
|
|
|
$data = [];
|
|
$data = [];
|
|
|
if (!empty($list)) {
|
|
if (!empty($list)) {
|
|
|
foreach ($list as $key => $value) {
|
|
foreach ($list as $key => $value) {
|
|
|
- $parts = explode('-', $value['工序名称']);
|
|
|
|
|
- $data[$key]['工序名称'] = end($parts);
|
|
|
|
|
- // 产量计算
|
|
|
|
|
- if ($value['印刷方式'] === '卷对卷') {
|
|
|
|
|
- $list[$key]['产量'] = round($value['产量'] / $value['版距'] * 1000);
|
|
|
|
|
|
|
+ // Convert ALL outputs to integers
|
|
|
|
|
+ $value['产量'] = (int)round($value['产量']);
|
|
|
|
|
+
|
|
|
|
|
+ if ($value['印刷方式'] === '卷对卷' && $value['版距'] != 0) {
|
|
|
|
|
+ $value['产量'] = (int)round($value['产量'] / $value['版距'] * 1000);
|
|
|
}
|
|
}
|
|
|
- $data[$key]['墨色'] = $list[$key]['产量'] * $value['墨色数'];
|
|
|
|
|
- $data[$key]['车间'] = $value['车间名称'];
|
|
|
|
|
|
|
+
|
|
|
|
|
+ $data[$key] = [
|
|
|
|
|
+ '产量' => $value['产量'],
|
|
|
|
|
+ '墨色' => $value['产量'] * $value['墨色数'],
|
|
|
|
|
+ '设备编组' => $value['设备编组']
|
|
|
|
|
+ ];
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
$grouped = [];
|
|
$grouped = [];
|
|
|
foreach ($data as $item) {
|
|
foreach ($data as $item) {
|
|
|
- $key = $item['车间'] . '|' . $item['工序名称'];
|
|
|
|
|
|
|
+ $key = substr($item['设备编组'], 5, 6);
|
|
|
if (!isset($grouped[$key])) {
|
|
if (!isset($grouped[$key])) {
|
|
|
$grouped[$key] = [
|
|
$grouped[$key] = [
|
|
|
- '车间' => $item['车间'],
|
|
|
|
|
- '工序名称' => $item['工序名称'],
|
|
|
|
|
- '墨色' => 0
|
|
|
|
|
|
|
+ '产量合计' => 0, // Will be integer after operations
|
|
|
|
|
+ '工序名称' => $key,
|
|
|
|
|
+ '色度数' => 0
|
|
|
];
|
|
];
|
|
|
}
|
|
}
|
|
|
- $grouped[$key]['墨色'] += $item['墨色'];
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- $workshopOrder = [
|
|
|
|
|
- '胶印车间' => 1,
|
|
|
|
|
- '凹丝印车间' => 2,
|
|
|
|
|
- '印后车间' => 3,
|
|
|
|
|
- '检验车间' => 4
|
|
|
|
|
- ];
|
|
|
|
|
- usort($grouped, function ($a, $b) use ($workshopOrder) {
|
|
|
|
|
- $orderA = $workshopOrder[$a['车间']] ?? 999;
|
|
|
|
|
- $orderB = $workshopOrder[$b['车间']] ?? 999;
|
|
|
|
|
|
|
|
|
|
|
|
+ // Force integer casting during summation
|
|
|
|
|
+ $grouped[$key]['产量合计'] += (int)$item['产量'];
|
|
|
|
|
+ $grouped[$key]['色度数'] += (int)$item['墨色'];
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- if ($orderA !== $orderB) {
|
|
|
|
|
- return $orderA <=> $orderB;
|
|
|
|
|
- }
|
|
|
|
|
- return $a['工序名称'] <=> $b['工序名称'];
|
|
|
|
|
- });
|
|
|
|
|
- $result = array_values($grouped);
|
|
|
|
|
|
|
+ // Explicitly cast final sums to integers
|
|
|
|
|
+ foreach ($grouped as &$group) {
|
|
|
|
|
+ $group['产量合计'] = (int)$group['产量合计'];
|
|
|
|
|
+ $group['色度数'] = (int)$group['色度数'];
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- $this->success('成功', $result);
|
|
|
|
|
|
|
+ $this->success('成功', array_values($grouped));
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|