|
@@ -7,7 +7,7 @@ use PhpOffice\PhpSpreadsheet\Cell\Coordinate;
|
|
|
use think\Db;
|
|
use think\Db;
|
|
|
use think\Request;
|
|
use think\Request;
|
|
|
use PhpOffice\PhpSpreadsheet\IOFactory;
|
|
use PhpOffice\PhpSpreadsheet\IOFactory;
|
|
|
-class Achievementatestatistics extends Api
|
|
|
|
|
|
|
+class Achievementatestatistics extends Api
|
|
|
{
|
|
{
|
|
|
protected $noNeedLogin = ['*'];
|
|
protected $noNeedLogin = ['*'];
|
|
|
protected $noNeedRight = ['*'];
|
|
protected $noNeedRight = ['*'];
|
|
@@ -448,17 +448,17 @@ class Achievementatestatistics extends Api
|
|
|
if (!$this->request->isGet()) {
|
|
if (!$this->request->isGet()) {
|
|
|
$this->error('请求方式错误');
|
|
$this->error('请求方式错误');
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
$param = $this->request->param();
|
|
$param = $this->request->param();
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
if (empty($param['jtbh']) || empty($param['rq'])) {
|
|
if (empty($param['jtbh']) || empty($param['rq'])) {
|
|
|
$this->error('缺少必要参数:jtbh(机台编号)、rq(年月)');
|
|
$this->error('缺少必要参数:jtbh(机台编号)、rq(年月)');
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
$jtbh = $param['jtbh'];
|
|
$jtbh = $param['jtbh'];
|
|
|
$rq = $param['rq'];
|
|
$rq = $param['rq'];
|
|
|
$ym = substr($rq, 0, 4) . '-' . substr($rq, 4, 2);
|
|
$ym = substr($rq, 0, 4) . '-' . substr($rq, 4, 2);
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
// 查询该月份内该机台的每日工单产量明细
|
|
// 查询该月份内该机台的每日工单产量明细
|
|
|
$records = Db::name('设备_产量计酬')->alias('a')
|
|
$records = Db::name('设备_产量计酬')->alias('a')
|
|
|
->field([
|
|
->field([
|
|
@@ -471,59 +471,99 @@ class Achievementatestatistics extends Api
|
|
|
'a.sczl_gxh as 工序号',
|
|
'a.sczl_gxh as 工序号',
|
|
|
'a.sczl_gxmc as 工序名称',
|
|
'a.sczl_gxmc as 工序名称',
|
|
|
'a.sczl_ls',
|
|
'a.sczl_ls',
|
|
|
- 'SUM(CASE
|
|
|
|
|
- WHEN a.sczl_Pgcl IS NOT NULL AND a.sczl_Pgcl != 0
|
|
|
|
|
- THEN a.sczl_cl * a.sczl_Pgcl
|
|
|
|
|
- ELSE a.sczl_cl
|
|
|
|
|
- END) as 实际产量',
|
|
|
|
|
- 'SUM(sczl_装版总工时) as 装版实际工时',
|
|
|
|
|
- 'SUM(sczl_装版工时) as 装版补产工时',
|
|
|
|
|
- 'SUM(sczl_保养工时) as 保养工时',
|
|
|
|
|
- 'SUM(sczl_打样总工时) as 打样总工时',
|
|
|
|
|
- 'SUM(sczl_打样工时) as 打样补产工时',
|
|
|
|
|
- 'SUM(sczl_异常停机工时) as 异常总工时',
|
|
|
|
|
- 'SUM(sczl_异常工时1) as 异常补时',
|
|
|
|
|
- 'SUM(sczl_设备运行工时) as 运行工时'
|
|
|
|
|
|
|
+ 'SUM(a.sczl_cl * a.sczl_ls ) as 实际产量',
|
|
|
|
|
+ 'SUM(a.sczl_装版总工时) as 装版实际工时',
|
|
|
|
|
+ 'SUM(a.sczl_装版工时) as 装版补产工时',
|
|
|
|
|
+ 'SUM(a.sczl_保养工时) as 保养工时',
|
|
|
|
|
+ 'SUM(a.sczl_打样总工时) as 打样总工时',
|
|
|
|
|
+ 'SUM(a.sczl_打样工时) as 打样补产工时',
|
|
|
|
|
+ 'SUM(a.sczl_异常停机工时) as 异常总工时',
|
|
|
|
|
+ 'SUM(a.sczl_异常工时1) as 异常补时',
|
|
|
|
|
+ 'SUM(a.sczl_设备运行工时) as 运行工时',
|
|
|
|
|
+ 'c.排单小时定额 as 小时产能',
|
|
|
|
|
+ 'c.平均车速'
|
|
|
])
|
|
])
|
|
|
->join('工单_印件资料 b', 'a.sczl_gdbh = b.Yj_Gdbh AND a.sczl_yjno = b.Yj_YjNo', 'LEFT') // 添加印件号关联条件
|
|
->join('工单_印件资料 b', 'a.sczl_gdbh = b.Yj_Gdbh AND a.sczl_yjno = b.Yj_YjNo', 'LEFT') // 添加印件号关联条件
|
|
|
|
|
+ ->join('设备_基本资料 c', 'a.sczl_jtbh = c.设备编号')
|
|
|
->where('a.sczl_jtbh', $jtbh)
|
|
->where('a.sczl_jtbh', $jtbh)
|
|
|
->whereLike('a.sczl_rq', $ym . '%')
|
|
->whereLike('a.sczl_rq', $ym . '%')
|
|
|
- ->group('a.sczl_rq, a.sczl_gdbh, a.sczl_yjno, a.sczl_gxh, a.sczl_bzdh') // 确保唯一性分组
|
|
|
|
|
|
|
+ ->group('a.sczl_rq, a.sczl_gdbh, a.sczl_yjno, a.sczl_gxh, a.sczl_jtbh ,a.sczl_bzdh') // 确保唯一性分组
|
|
|
->order('a.sczl_rq desc, a.sczl_bzdh')
|
|
->order('a.sczl_rq desc, a.sczl_bzdh')
|
|
|
->select();
|
|
->select();
|
|
|
-
|
|
|
|
|
|
|
+ // 查询每个班组的运行工时
|
|
|
|
|
+ $Operating_hours = \db('设备_产量计酬')
|
|
|
|
|
+ ->field('sczl_rq as 日期,sczl_bzdh as 班组,sum(sczl_设备运行工时) as 设备运行工时')
|
|
|
|
|
+ ->where('sczl_jtbh', $jtbh)
|
|
|
|
|
+ ->whereLike('sczl_rq', $ym . '%')
|
|
|
|
|
+ ->group('sczl_rq, sczl_bzdh')
|
|
|
|
|
+ ->order('sczl_rq desc, sczl_bzdh')
|
|
|
|
|
+ ->select();
|
|
|
|
|
+ // 设备运行达成率设备运行工时计算规则:
|
|
|
|
|
+ // 1.上报通电工时>8小时,设备运行工时=上报通电工时-1小时
|
|
|
|
|
+ // 2.上报通电工时<8小时且上报通电工时>4小时,设备运行工时= 上报通电工时-0.5小时
|
|
|
|
|
+ // 3.上报通电工时<4小时,设备运行工时 = 上报通电工时
|
|
|
|
|
+ foreach ($Operating_hours as $k => $v) {
|
|
|
|
|
+ if ($v['设备运行工时'] >= 8) {
|
|
|
|
|
+ $Operating_hours[$k]['设备运行工时'] = $v['设备运行工时'] - 1;
|
|
|
|
|
+ }elseif ($v['设备运行工时'] < 8 && $v['设备运行工时'] > 4) {
|
|
|
|
|
+ $Operating_hours[$k]['设备运行工时'] = $v['设备运行工时'] - 0.5;
|
|
|
|
|
+ }else{
|
|
|
|
|
+ $Operating_hours[$k]['设备运行工时'] = $v['设备运行工时'];
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
// 数据格式化与目标产量计算
|
|
// 数据格式化与目标产量计算
|
|
|
- foreach ($records as &$row) {
|
|
|
|
|
- $row['日期'] = date('Y-m-d', strtotime($row['日期']));
|
|
|
|
|
- $row['印件工序'] = $row['印件号'] . '-' . $row['工序名称'];
|
|
|
|
|
- $row['小时产能'] = 50000;
|
|
|
|
|
-
|
|
|
|
|
|
|
+ foreach ($records as $key => $row) {
|
|
|
|
|
+ $records[$key]['日期'] = date('Y-m-d', strtotime($row['日期']));
|
|
|
|
|
+ $records[$key]['印件工序'] = $row['印件号'] . '-' . $row['工序名称'];
|
|
|
|
|
+
|
|
|
|
|
+ // 胶印设备换型工时(装版补产工时)计算规则:
|
|
|
|
|
+ //1.按班次工单分开计算装版补产工时,基础计算规则:装版补产工时*1.7
|
|
|
|
|
+ //2.当装版补产工时*1.7<实际装版工时*1.5时,按照装版补产工时*1.7计算
|
|
|
|
|
+ //3.当装版补产工时*1.7>实际装版工时*1.5,按照实际装版工时*1.5计算
|
|
|
|
|
+ //4.当装版补产工时>实际装版工时*1.5,按照装版补产工时计算
|
|
|
|
|
+ if (strpos($row['机台编号'],'YJY') !== false) {
|
|
|
|
|
+ $plate_hours = $row['装版补产工时'] * 1.7;
|
|
|
|
|
+ $plate_mounting_hours = $row['装版实际工时'] * 1.5;
|
|
|
|
|
+ if ($plate_hours < $plate_mounting_hours) {
|
|
|
|
|
+ $records[$key]['装版补产工时'] = $plate_hours;
|
|
|
|
|
+ }elseif ($plate_hours > $plate_mounting_hours) {
|
|
|
|
|
+ $records[$key]['装版补产工时'] = $plate_mounting_hours;
|
|
|
|
|
+ }elseif ($row['装版补产工时'] > $plate_mounting_hours) {
|
|
|
|
|
+ $records[$key]['装版补产工时'] = $row['装版补产工时'];
|
|
|
|
|
+ }else{
|
|
|
|
|
+ $records[$key]['装版补产工时'] = $plate_hours;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
// 计算目标产量
|
|
// 计算目标产量
|
|
|
- $row['目标产量'] = round(
|
|
|
|
|
- max(0, $row['运行工时'] - $row['保养工时'] - $row['装版补产工时'] - $row['异常总工时']) * 50000,
|
|
|
|
|
- 2
|
|
|
|
|
- );
|
|
|
|
|
-
|
|
|
|
|
- // 计算负荷产量
|
|
|
|
|
- $row['负荷产量'] = round(
|
|
|
|
|
- max(0, $row['运行工时'] - $row['保养工时'] - $row['装版补产工时'] - $row['异常总工时']) * 50000,
|
|
|
|
|
- 2
|
|
|
|
|
- );
|
|
|
|
|
-
|
|
|
|
|
- // 计算目标达成率
|
|
|
|
|
- $row['目标达成'] = $row['目标产量'] > 0
|
|
|
|
|
- ? round($row['实际产量'] / $row['目标产量'] * 100, 2) . '%'
|
|
|
|
|
- : '0%';
|
|
|
|
|
-
|
|
|
|
|
- // 计算综合利用率
|
|
|
|
|
- $row['综合利用率'] = $row['负荷产量'] > 0
|
|
|
|
|
- ? round($row['实际产量'] / $row['负荷产量'] * 100, 2) . '%'
|
|
|
|
|
- : '0%';
|
|
|
|
|
|
|
+ foreach ($Operating_hours as $k => $v) {
|
|
|
|
|
+ if ($v['日期'] === $row['日期'] && $v['班组'] === $row['班组']) {
|
|
|
|
|
+ $records[$key]['目标产量'] = round(
|
|
|
|
|
+ max(0, $row['运行工时'] - $row['保养工时'] - $row['装版补产工时'] - $row['异常补时'] - $row['打样补产工时']) * $row['小时产能'],
|
|
|
|
|
+ 2
|
|
|
|
|
+ );
|
|
|
|
|
+
|
|
|
|
|
+ // 计算负荷产量
|
|
|
|
|
+ $records[$key]['负荷产量'] = round(
|
|
|
|
|
+ max(0, $row['运行工时'] - $row['保养工时'] - $row['异常补时'] - $row['打样补产工时'] ) * $row['平均车速'],
|
|
|
|
|
+ 2
|
|
|
|
|
+ );
|
|
|
|
|
+
|
|
|
|
|
+ // 计算目标达成率
|
|
|
|
|
+ $records[$key]['目标达成'] = $records[$key]['目标产量'] > 0
|
|
|
|
|
+ ? round($row['实际产量'] / $records[$key]['目标产量'] * 100, 2) . '%'
|
|
|
|
|
+ : '0%';
|
|
|
|
|
+
|
|
|
|
|
+ // 计算综合利用率
|
|
|
|
|
+ $records[$key]['综合利用率'] = $records[$key]['负荷产量'] > 0
|
|
|
|
|
+ ? round($row['实际产量'] / $records[$key]['负荷产量'] * 100, 2) . '%'
|
|
|
|
|
+ : '0%';
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
$this->success('明细获取成功', $records);
|
|
$this->success('明细获取成功', $records);
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
/**
|
|
/**
|
|
|
* 1.6达成率统计->按时段导出Excel
|
|
* 1.6达成率统计->按时段导出Excel
|
|
|
*/
|
|
*/
|