浏览代码

报工数据修改,员工工资

unknown 2 周之前
父节点
当前提交
6af2c85048
共有 2 个文件被更改,包括 120 次插入516 次删除
  1. 2 0
      application/api/controller/ReportingWork.php
  2. 118 516
      application/api/controller/StaffSalary.php

+ 2 - 0
application/api/controller/ReportingWork.php

@@ -247,6 +247,7 @@ class ReportingWork extends Api
                 'number' => $number,
                 'production_hour' => round($productionHour, 4),
                 'production_score' => round($productionScore, 4),
+                'salary' => round($productionScore*0.5,2),
                 'machine' => isset($item['machine']) ? $item['machine'] : '',
                 'sys_id' => isset($item['sys_id']) ? $item['sys_id'] : '',
                 'sys_rq' => $now,
@@ -412,6 +413,7 @@ class ReportingWork extends Api
             'number' => $params['number'],
             'production_hour' => $params['production_hour'],
             'production_score' => $params['production_score'],
+            'salary' => $params['production_score'] * 0.5,
         ];
         $result = db('设备_工分计酬')
             ->where('id', $params['id'])

+ 118 - 516
application/api/controller/StaffSalary.php

@@ -4,547 +4,149 @@ namespace app\api\controller;
 use app\common\controller\Api;
 use \think\Request;
 use think\Db;
-use app\job\InsertDataJob;
-use think\Queue;
-use think\Cache;
-use think\cache\driver\Redis;
 /**
- * 员工计件工资核算
+ * 员工工资查询
 */
 class StaffSalary extends Api
 {
+   
     protected $noNeedLogin = ['*'];
     protected $noNeedRight = ['*'];
 
+
     /**
-     * 首页
-     *
+     * 查询报工数据月份
+     * @ApiMethod (GET)
+     * @return array
+     * @throws \think\db\exception\DataNotFoundException
+     * @throws \think\db\exception\ModelNotFoundException
+     * @throws \think\exception\DbException
      */
-    public function index()
+    public function GetReportingWorkMonth()
     {
-        $this->success('请求成功');
-    }
-    /**
-     * 计算员工计件工资
-     * @ApiMethod POST
-     * @param string date   考勤年月
-     * @param string start_date 开始日期
-     * @param string end_date   结束日期
-     * @param string vacation_one_start 法定假日1 开始时间
-     * @param string vacation_one_end   法定假日1 结束时间
-     * @param string vacation_two_start 法定假日2 开始时间
-     * @param string vacation_two_end   法定假日2 结束时间
-    */
-    public function staffSalaryCount(){
-        if (Request::instance()->isPost() == false){
-            $this->error('非法请求');
+        if (!$this->request->isGet()) {
+            $this->error('请求方法错误');
         }
-        $params = Request::instance()->param();
-        if (!isset($params['start_date']) || !isset($params['end_date']) || empty($params['start_date']) || empty($params['end_date']) || !isset($params['date']) || empty($params['date']))
-        {
-            $this->error('参数错误');
-        }
-        $startDate = $params['start_date'];
-        $endDate = $params['end_date'];
-        $attendanceMonth = $params['date'];
-        // 确保开始日期和结束日期在考勤年月的范围内
-        $startDateInRange = date('Ym', strtotime($startDate)) === $attendanceMonth;
-        $endDateInRange = date('Ym', strtotime($endDate)) === $attendanceMonth;
-        if (!$startDateInRange || !$endDateInRange) {
-           $this->error('日期参数错误');
-        }
-        $options = [
-            'host'       => '127.0.0.1',
-            'port'       => 6379,
-            'password'   => '123456',
-            'select'     => 15,
-            'timeout'    => 0,
-            'expire'     => 0,
-            'persistent' => false,
-            'prefix'     => '',
-        ];
-        $redis = new Redis($options);
-        $taskIdentifier = md5(json_encode('date'));
-        $queueKey =  $redis->get($taskIdentifier);
-        if ($queueKey){
-            $this->success('数据正在处理中,请等待...');
+        $data = db('设备_工分计酬')
+            ->where('del_rq', null)
+            ->field('DISTINCT DATE_FORMAT(date, "%Y-%m") as month')
+            ->order('date desc')
+            ->select();
+    
+        //获取员工部门
+        $big_process = db('人员_基本资料')
+            ->field('DISTINCT big_process')
+            ->select();
+        foreach ($big_process as $v) {
+            $big_process_name[] = $v['big_process'];
         }
-        $vacationOneArr = [];
-        if (!empty($params['vacation_one_start']) && !empty($params['vacation_one_end'])){
-            $vacationOneStart = strtotime($params['vacation_one_start']);
-            $vacationOneEnd = strtotime($params['vacation_one_end']);
-            for ($i=$vacationOneStart; $i<=$vacationOneEnd; $i+=86400)
-            {
-                array_push($vacationOneArr,date("Y-m-d", $i));
-            }
+        $result = [];
+        foreach ($data as $v) {
+            $result[$v['month']] = $big_process_name;
         }
-        $vacationTwoArr = [];
-        if (!empty($params['vacation_two_start']) && !empty($params['vacation_two_end'])){
-            $vacationTwoStart = strtotime($params['vacation_two_start']);
-            $vacationTwoEnd = strtotime($params['vacation_two_end']);
-            for ($i=$vacationTwoStart; $i<=$vacationTwoEnd; $i+=86400)
-            {
-                array_push($vacationTwoArr,date("Y-m-d", $i));
-            }
+
+        $this->success('成功', $result);
+    }
+
+
+    /**
+     * 查询员工工资列表
+     */
+    public function GetStaffSalaryList()
+    {
+        if (!$this->request->isGet()) {
+            $this->error('请求方法错误');
         }
-        //法定天数
-        $clocking_in_day = \db('人事_考勤资料')->where('kqzl_ny',$params['date'])->field('法定天数')->order('UniqId desc')->find();
-        if (!empty($clocking_in_day)){
-            $params['days'] = (int)$clocking_in_day['法定天数'];
-        }else{
-            $this->error('法定天数未设置');
+        $param = $this->request->param();
+        if (empty($param['month'])) {
+            $this->error('请选择月份');
         }
-        //将起止日期内数据删除
-        $delRes = \db('绩效工资汇总')->where('sczl_rq','between',[$startDate,$endDate])->delete();
-        $where = [];
-        $where['a.sczl_rq'] = ['between',[$startDate,$endDate]];
-        //查询印刷印后车间的机台,添加搜索条件
-        $jtbhs = db('设备_基本资料')->where('使用部门','in',['印刷车间','印后车间'])->where('sys_sbID','<>','')->column('设备编号');
-        $fields = "a.sczl_gdbh,a.sczl_yjno,a.sczl_gxh,a.sczl_gxmc as sczl_type,a.sczl_rq,a.sczl_jtbh,a.sczl_工价系数,a.sczl_ms,a.sczl_cl as 班组车头产量,a.sczl_Pgcl,a.sczl_zcfp,
-                a.sczl_装版工时 as 装版工时,a.sczl_保养工时 as 保养工时,a.sczl_打样工时 as 打样工时,a.sczl_异常工时1 as 异常停机工时,a.sczl_设备运行工时 as 车头产量占用机时,
-                a.sczl_bh1,a.sczl_bh2,a.sczl_bh3,a.sczl_bh4,a.sczl_bh5,a.sczl_bh6,a.sczl_bh7,a.sczl_bh8,a.sczl_bh9,a.sczl_bh10,
-                a.sczl_rate1,a.sczl_rate2,a.sczl_rate3,a.sczl_rate4,a.sczl_rate5,a.sczl_rate6,a.sczl_rate7,a.sczl_rate8,a.sczl_rate9,a.sczl_rate10,
-                a.sczl_废品率系数,a.UniqId,
-                b.千件工价,b.日定额,b.补产标准,c.工价系数 as 工序难度系数,c.版距
-                ,d1.员工姓名 as name1,d2.员工姓名 as name2,d3.员工姓名 as name3,d4.员工姓名 as name4,d5.员工姓名 as name5,d6.员工姓名 as name6,d7.员工姓名 as name7,d8.员工姓名 as name8
-                ,d9.员工姓名 as name9,d10.员工姓名 as name10";
-        $query = Db::name('设备_产量计酬')->alias('a')->field($fields);
-        // 连接 dic_lzde 表
-        $query->join('dic_lzde b', 'a.sczl_dedh = b.sys_bh', 'LEFT');
-        // 连接 工单_工艺资料 表
-        $query->join('工单_工艺资料 c', 'a.sczl_gdbh = c.Gy0_gdbh AND a.sczl_yjno = c.Gy0_yjno AND a.sczl_gxh = c.Gy0_gxh', 'LEFT');
-        // 循环连接 人事_基本资料 表(仅当 sczl_bh 不为空时才连接)
-        for ($i = 1; $i <= 10; $i++) {
-            $field = 'a.sczl_bh' . $i;
-            $alias = 'd' . $i;
-            $query->join("人事_基本资料 $alias", "$field = {$alias}.员工编号 AND {$field} IS NOT NULL", 'LEFT');
+        if (empty($param['big_process'])) {
+            $this->error('请选择部门');
         }
-        $query->where($where)->where('a.sczl_jtbh','in',$jtbhs);
-        $list = $query->order('a.sczl_rq')->group('UniqId')->select();
-        $UniqId = \db('绩效工资汇总')->field('UniqID')->order('UniqID desc')->find();
-        if (empty($UniqId)){
-            $UniqId = 1;
-        }else{
-            $UniqId = $UniqId['UniqID'] + 1;
+        //获取大工序员工列表
+        $staff = db('人员_基本资料')
+            ->where('big_process',$param['big_process'])
+            ->where('status',1)
+            ->field('staff_no,staff_name')
+            ->select();
+        if(empty($staff)){
+            $this->error('该部门没有员工');
         }
-        $data = [];
-        /**
-         * 设备_产量计酬数据
-        */
-        foreach ($list as $value){
-            $value['班组车头产量'] = $value['班组车头产量'] - $value['sczl_zcfp'];
-            //计件产量
-            if (substr($value['sczl_jtbh'],0,2) == 'JP'){//检品机
-                $gx_rate = $value['sczl_废品率系数'];
-                $value['班组车头产量'] = $value['班组车头产量'] * $value['sczl_Pgcl'];
-                $byThePieceYield = round($value['班组车头产量']  * $value['sczl_废品率系数']);
-            }elseif (substr($value['sczl_jtbh'],0,2) == 'WY' || substr($value['sczl_jtbh'],0,2) == 'DW'){//凹印机
-                $gx_rate = $value['工序难度系数'];
-                if ($value['版距'] > 0){
-                    $value['版距'] = $value['版距'] / 1000;
-                    $value['班组车头产量'] = $value['班组车头产量'] * $value['版距'];
-                }
-                $byThePieceYield = round($value['班组车头产量'] * $gx_rate);
-            }else{
-                if ($value['sczl_工价系数'] == '0.000' || floatval($value['sczl_工价系数']) <= 0){
-                    //工序难度系数
-                    $gx_rate = $value['工序难度系数'];
-                    if (floatval($value['工序难度系数']) <= 0 || empty($value['工序难度系数'])){
-                        $gx_rate = '1.0000';
-                    }
-                }else{
-                    if (floatval($value['工序难度系数']) > 0 ){
-                        $gx_rate = number_format($value['sczl_工价系数'] * $value['工序难度系数'],3);
-                    }else{
-                        $gx_rate = $value['sczl_工价系数'];
-                    }
-                }
-                $byThePieceYield = round($value['班组车头产量'] * $gx_rate);
-            }
-//            //计件产量
-//            if (substr($value['sczl_jtbh'],0,2) == 'JP'){
-//                $value['工序难度系数'] = $value['sczl_废品率系数'];
-//                $value['班组车头产量'] = $value['班组车头产量'] * $value['sczl_Pgcl'];
-//                $byThePieceYield = round($value['班组车头产量']  * $value['sczl_废品率系数']);
-//            }else{
-//                if ($value['工序难度系数'] <= 0 || empty($value['工序难度系数'])){
-//                    $value['工序难度系数'] = '1.0000';
-//                    $byThePieceYield = $value['班组车头产量'];
-//                }else{
-//                    $byThePieceYield = round($value['班组车头产量'] * $value['工序难度系数']);
-//                }
-//            }
-            //补产产量/班组换算产量
-            $afterProductionYield = ($value['装版工时'] + $value['保养工时'] + $value['打样工时']) * $value['补产标准'];
-            //核算产量
-            $accountingYield = $byThePieceYield + $afterProductionYield;
-            //工时占比
-            if ($value['日定额'] > 0){
-                $manHourRate = number_format($accountingYield / $value['日定额'],4);
-            }else{
-                $manHourRate = '0.0000';
-            }
-            for ($i=1; $i<11; $i++){
-                $bhKey = 'sczl_bh'.$i;
-                $xmKey = 'name'.$i;
-                $rateKey = 'sczl_rate'.$i;
-                if (!empty($value[$bhKey]) && $value[$bhKey] != '000000'){
-                    $item = [];
-                    $item['sczl_gdbh'] = $value['sczl_gdbh'];
-                    $item['sczl_yjno'] = $value['sczl_yjno'];
-                    $item['sczl_gxh'] = $value['sczl_gxh'];
-//                    $item['sczl_type'] = substr($value['sczl_type'],0,30);
-                    $item['sczl_type'] = $value['sczl_type'];
-                    $item['sczl_rq'] = $value['sczl_rq'];
-                    $item['sczl_jtbh'] = $value['sczl_jtbh'];
-                    $item['班组车头产量'] = $value['班组车头产量'];
-                    $item['工价系数'] = '0.0000';
-                    $item['工序难度系数'] = $gx_rate;
-                    $item['装版工时'] = $value['装版工时'];
-                    $item['保养工时'] = $value['保养工时'];
-                    $item['打样工时'] = $value['打样工时'];
-                    $item['异常停机工时'] = $value['异常停机工时'];
-                    $item['车头产量占用机时'] = $value['车头产量占用机时'];
-                    $item['日定额'] = (int)$value['日定额'];
-                    $item['千件工价'] = $value['千件工价'];
-                    $item['补产标准'] = $value['补产标准'];
-                    $item['班组换算产量'] = $afterProductionYield;
-                    $item['计时补差额工资'] = '0.00';
-                    $item['bh'] = $value[$bhKey];
-                    $item['xm'] = $value[$xmKey];
-                    $item['Rate'] = $value[$rateKey];
-                    $item['sczl_ms'] = $value['sczl_ms'];
-                    $item['核算产量'] = $accountingYield;
-                    $item['工时占比'] = $manHourRate;
-                    array_push($data,$item);
-                }
-            }
+
+        $staffMap = [];
+        $staffNos = [];
+        foreach ($staff as $item) {
+            $staffMap[$item['staff_no']] = $item['staff_name'];
+            $staffNos[] = $item['staff_no'];
         }
-        /**
-         * 拆片工序数据
-        */
-        $query = Db::name('db_sczl')->alias('a')
-            ->field('a.sczl_gdbh, a.sczl_yjno, a.sczl_gxh, sczl_type, a.sczl_rq, a.sczl_jtbh, 
-            a.sczl_ms, a.sczl_cl as 班组车头产量, a.sczl_fp as sczl_zcfp, a.sczl_装版工时 as 装版工时, a.sczl_保养工时 as 保养工时, 
-            a.sczl_打样工时 as 打样工时, a.sczl_异常停机工时 as 异常停机工时, a.sczl_设备运行工时 as 车头产量占用机时, a.sczl_bh1, 
-            a.sczl_rate1, b.千件工价, b.日定额, b.补产标准,a.sczl_工价系数 as 工序难度系数,a.拆片联拼系数,a.拆片条小盒系数, d.员工姓名')
-            ->join('dic_lzde b', 'a.sczl_dedh = b.sys_bh','left')
-            ->join('工单_工艺资料 c', 'a.sczl_gdbh = c.Gy0_gdbh AND a.sczl_yjno = c.Gy0_yjno AND a.sczl_gxh = c.Gy0_gxh','left')
-            ->join('人事_基本资料 d', 'a.sczl_bh1 = d.员工编号','left')
-            ->where($where)
+
+        $salaryRows = db('设备_工分计酬')
+            ->where('del_rq', null)
+            ->where('date', 'like', $param['month'] . '%')
+            ->where('staff_no', 'in', $staffNos)
+            ->field('staff_no,staff_name,DATE_FORMAT(date, "%Y-%m-%d") as date,sum(salary) as salary')
+            ->group('staff_no,DATE_FORMAT(date, "%Y-%m-%d")')
+            ->order('staff_no asc,date asc')
             ->select();
-        foreach ($query as $value){
-            $value['班组车头产量'] = ($value['班组车头产量'] - $value['sczl_zcfp']) * $value['拆片联拼系数'] * $value['拆片条小盒系数'];
-            //计件产量
-            if ($value['工序难度系数'] <= 0 || empty($value['工序难度系数'])){
-                $value['工序难度系数'] = '1.0000';
-                $byThePieceYield = $value['班组车头产量'];
-            }else{
-                $byThePieceYield = round($value['班组车头产量'] * $value['工序难度系数']);
-            }
-            //补产产量/班组换算产量
-            $afterProductionYield = ($value['装版工时'] + $value['保养工时'] + $value['打样工时']) * $value['补产标准'];
-            //核算产量
-            $accountingYield = $byThePieceYield + $afterProductionYield;
-            //工时占比
-            if ($value['日定额'] > 0){
-                $manHourRate = number_format($accountingYield / $value['日定额'],4);
-            }else{
-                $manHourRate = '0.0000';
+
+        $grouped = [];
+        foreach ($salaryRows as $row) {
+            $staffNo = $row['staff_no'];
+            if (!isset($grouped[$staffNo])) {
+                $name = !empty($row['staff_name']) ? $row['staff_name'] : (isset($staffMap[$staffNo]) ? $staffMap[$staffNo] : '');
+                $grouped[$staffNo] = [
+                    'staff' => $staffNo . '-' . $name,
+                    'children' => [],
+                ];
             }
-            $item = [];
-            $item['sczl_gdbh'] = $value['sczl_gdbh'];
-            $item['sczl_yjno'] = $value['sczl_yjno'];
-            $item['sczl_gxh'] = $value['sczl_gxh'];
-//            $item['sczl_type'] = substr(trim($value['sczl_type']),0,30);
-            $item['sczl_type'] = $value['sczl_type'];
-            $item['sczl_rq'] = $value['sczl_rq'];
-            $item['sczl_jtbh'] = $value['sczl_jtbh'];
-            $item['班组车头产量'] = $value['班组车头产量'];
-            $item['工价系数'] = '0.0000';
-            $item['工序难度系数'] = $value['工序难度系数'];
-            $item['装版工时'] = $value['装版工时'];
-            $item['保养工时'] = $value['保养工时'];
-            $item['打样工时'] = $value['打样工时'];
-            $item['异常停机工时'] = $value['异常停机工时'];
-            $item['车头产量占用机时'] = $value['车头产量占用机时'];
-            $item['日定额'] = (int)$value['日定额'];
-            $item['千件工价'] = $value['千件工价'];
-            $item['补产标准'] = $value['补产标准'];
-            $item['班组换算产量'] = $afterProductionYield;
-            $item['计时补差额工资'] = '0.00';
-            $item['bh'] = $value['sczl_bh1'];
-            $item['xm'] = $value['员工姓名'];
-            $item['Rate'] = $value['sczl_rate1'];
-            $item['sczl_ms'] = $value['sczl_ms'];
-            $item['核算产量'] = $accountingYield;
-            $item['工时占比'] = floatval($manHourRate);
-            array_push($data,$item);
+            $grouped[$staffNo]['children'][] = [
+                '员工编号' => $staffNo,
+                '员工姓名' => !empty($row['staff_name']) ? $row['staff_name'] : (isset($staffMap[$staffNo]) ? $staffMap[$staffNo] : ''),
+                '日期' => $row['date'],
+                '工资' => $row['salary'],
+            ];
         }
-//        halt($data);
-        /**
-         * 手工检验工序数据
-        */
-        $shoujianfields = "a.sczl_gdbh,a.sczl_yjgx,sczl_gxmc AS sczl_type,a.sczl_rq,a.sczl_cl AS 班组车头产量,
-	sczl_废品率系数 AS 工序难度系数,a.sczl_bh0,a.sczl_bh1,a.sczl_bh2,a.sczl_bh3,a.sczl_bh4,a.sczl_bh5,a.sczl_bh6,
-	a.sczl_bh7,a.sczl_bh8,a.sczl_bh9,a.sczl_bh10,a.sczl_bh11,b.千件工价,b.日定额,b.补产标准,d0.员工姓名 AS name0,
-	d1.员工姓名 AS name1,d2.员工姓名 AS name2,d3.员工姓名 AS name3,d4.员工姓名 AS name4,d5.员工姓名 AS name5,
-	d6.员工姓名 AS name6,d7.员工姓名 AS name7,d8.员工姓名 AS name8,d9.员工姓名 AS name9,d10.员工姓名 AS name10,
-	d10.员工姓名 AS name11,d10.员工姓名 AS name12,a.sczl_cl0,a.sczl_cl1,a.sczl_cl2,a.sczl_cl3,a.sczl_cl4,a.sczl_cl5,a.sczl_cl6,
-	a.sczl_cl7,a.sczl_cl8,a.sczl_cl9,a.sczl_cl10,a.sczl_cl11,a.sczl_cl12,a.sczl_fp0,a.sczl_fp1,a.sczl_fp2,a.sczl_fp3,
-	a.sczl_fp4,a.sczl_fp5,a.sczl_fp6,a.sczl_fp7,a.sczl_fp8,a.sczl_fp9,a.sczl_fp10,a.sczl_fp11,a.sczl_fp12";
-        $query = Db::name('db_手工检验')->alias('a')->field($shoujianfields);
-        //链接dic_lzde表
-        $query->join('dic_lzde b','a.sczl_dedh = b.sys_bh','LEFT');
-        //链接人事基本资料表
-        for ($i=0;$i<=12;$i++){
-            $field = 'a.sczl_bh'.$i;
-            $alias = 'd'.$i;
-            $query->join("人事_基本资料 $alias", "$field = {$alias}.员工编号 AND {$field} IS NOT NULL", 'LEFT');
+
+        $this->success('成功', array_values($grouped));
+            
+    }
+   
+
+    /**
+     * 查询员工工资详情
+     * 
+     */
+    public function GetStaffSalaryDetail()
+    {
+        if (!$this->request->isGet()){
+            $this->error('请求方法错误');
         }
-        $query->where($where);
-        $list = $query->select();
-        foreach ($list as $key=>$value){
-            for ($i=0;$i<=12;$i++){
-                if (!empty($value['sczl_bh'.$i])){
-                    $value['sczl_yjno'] = (int)substr($value['sczl_yjgx'],0,2);
-                    $value['sczl_gxh'] = (int)substr($value['sczl_yjgx'],3,2);
-                    //车头产量
-                    $value['班组车头产量'] = $value['sczl_cl'.$i]*$value['sczl_fp'.$i];
-                    //计件产量
-                    if ($value['工序难度系数'] <= 0 || empty($value['工序难度系数'])){
-                        $value['工序难度系数'] = '1.0000';
-                        $value['计件产量'] = $value['班组车头产量'];
-                    }else{
-                        $value['计件产量'] = round($value['班组车头产量'] * $value['工序难度系数']);
-                    }
-                    //核算产量
-                    $value['核算产量'] = $value['计件产量'];
-                    //工时占比
-                    if ($value['日定额'] > 0){
-                        $value['工时占比'] = round($value['计件产量']/$value['日定额'],4);
-                    }else{
-                        $value['工时占比'] = '0.0000';
-                    }
-                    $item = [];
-                    $item['sczl_gdbh'] = $value['sczl_gdbh'];
-                    $item['sczl_yjno'] = $value['sczl_yjno'];
-                    $item['sczl_gxh'] = $value['sczl_gxh'];
-//                    $item['sczl_type'] = substr($value['sczl_type'],0,30);
-                    $item['sczl_type'] = $value['sczl_type'];
-                    $item['sczl_rq'] = $value['sczl_rq'];
-                    $item['sczl_jtbh'] = '';
-                    $item['班组车头产量'] = $value['班组车头产量'];
-                    $item['工价系数'] = '0.0000';
-                    $item['工序难度系数'] = $value['工序难度系数'];
-                    $item['装版工时'] = '0.00';
-                    $item['保养工时'] = '0.00';
-                    $item['打样工时'] = '0.00';
-                    $item['异常停机工时'] = '0.00';
-                    $item['车头产量占用机时'] = '0.00';
-                    $item['日定额'] = (int)$value['日定额'];
-                    $item['千件工价'] = $value['千件工价'];
-                    $item['补产标准'] = $value['补产标准'];
-                    $item['班组换算产量'] = '0';
-                    $item['计时补差额工资'] = '0.00';
-                    $item['bh'] = $value['sczl_bh'.$i];
-                    $item['xm'] = $value['name'.$i];
-                    $item['Rate'] = '1.0000';
-                    $item['sczl_ms'] = '0.00';
-                    $item['核算产量'] = $value['核算产量'];
-                    $item['工时占比'] = floatval($value['工时占比']);
-                    array_push($data,$item);
-                }
-            }
+        $param = $this->request->param();
+        if (empty($param['staff_no'])) {
+            $this->error('请选择员工');
         }
-//        halt($data);
-        /**
-         * 包装计件工序数据
-         */
-        $result = Db::name('db_包装计件')->alias('a')
-            ->field('a.sczl_gdbh1, a.sczl_gdbh2, a.sczl_gdbh3, a.sczl_gdbh4, a.sczl_gdbh5, a.sczl_gdbh6,
-                     a.sczl_yjGx1, a.sczl_yjGx2, a.sczl_yjGx3, a.sczl_yjGx4, a.sczl_yjGx5, a.sczl_yjGx6,
-                     rtrim(a.sczl_gxmc1) as gxmc1,rtrim(a.sczl_gxmc2) as gxmc2,rtrim(a.sczl_gxmc3) as gxmc3,rtrim(a.sczl_gxmc4) as gxmc4,rtrim(a.sczl_gxmc5) as gxmc5,rtrim(a.sczl_gxmc6) as gxmc6,
-                     a.sczl_cl1, a.sczl_cl2, a.sczl_cl3, a.sczl_cl4, a.sczl_cl5, a.sczl_cl6,
-                     a.sczl_返工产量1, a.sczl_返工产量2, a.sczl_返工产量3, a.sczl_返工产量4, a.sczl_返工产量5, a.sczl_返工产量6,
-                     a.sczl_Jtbh1,a.sczl_Jtbh2,a.sczl_Jtbh3,a.sczl_Jtbh4,a.sczl_Jtbh5,a.sczl_Jtbh6,
-                     a.sczl_PgCl1,a.sczl_PgCl2,a.sczl_PgCl3,a.sczl_PgCl4,a.sczl_PgCl5,a.sczl_PgCl6,
-                     a.sczl_type1,a.sczl_type2,sczl_type3,a.sczl_type4,a.sczl_type5,sczl_type6,
-		             a.sczl_计产系数1,a.sczl_计产系数2,a.sczl_计产系数3,a.sczl_计产系数4,a.sczl_计产系数5,a.sczl_计产系数6,
-                     c1.工价系数 as 工序难度系数1,c2.工价系数 as 工序难度系数2,c3.工价系数 as 工序难度系数3,c4.工价系数 as 工序难度系数4,c5.工价系数 as 工序难度系数5,c6.工价系数 as 工序难度系数6,
-		             b1.千件工价 as 千件工价1, b2.千件工价 as 千件工价2, b3.千件工价 as 千件工价3, b4.千件工价 as 千件工价4, b5.千件工价 as 千件工价5, b6.千件工价 as 千件工价6,
-                     b1.日定额 as 日定额1, b2.日定额 as 日定额2, b3.日定额 as 日定额3, b4.日定额 as 日定额4, b5.日定额 as 日定额5, b6.日定额 as 日定额6,
-                     b1.补产标准 as 补产标准1, b2.补产标准 as 补产标准2, b3.补产标准 as 补产标准3, b4.补产标准 as 补产标准4, b5.补产标准 as 补产标准5, b6.补产标准 as 补产标准6,
-		             a.sczl_rq,a.sczl_bh,rtrim(d.员工姓名) as xm,
-		             e1.成品名称 as cpmc1,e2.成品名称 as cpmc2,e3.成品名称 as cpmc3,e4.成品名称 as cpmc4,e5.成品名称 as cpmc5,e6.成品名称 as cpmc6')
-            ->join('工单_工艺资料 c1', 'a.sczl_gdbh1 = c1.Gy0_gdbh AND a.sczl_yjGx1 = CONCAT("0",c1.Gy0_yjno, "-", c1.Gy0_gxh) AND a.sczl_gdbh1 IS NOT NULL', 'LEFT')
-            ->join('工单_工艺资料 c2', 'a.sczl_gdbh2 = c2.Gy0_gdbh AND a.sczl_yjGx2 = CONCAT("0",c2.Gy0_yjno, "-", c2.Gy0_gxh) AND a.sczl_gdbh2 IS NOT NULL', 'LEFT')
-            ->join('工单_工艺资料 c3', 'a.sczl_gdbh3 = c3.Gy0_gdbh AND a.sczl_yjGx3 = CONCAT("0",c3.Gy0_yjno, "-", c3.Gy0_gxh) AND a.sczl_gdbh3 IS NOT NULL', 'LEFT')
-            ->join('工单_工艺资料 c4', 'a.sczl_gdbh4 = c4.Gy0_gdbh AND a.sczl_yjGx4 = CONCAT("0",c4.Gy0_yjno, "-", c4.Gy0_gxh) AND a.sczl_gdbh4 IS NOT NULL', 'LEFT')
-            ->join('工单_工艺资料 c5', 'a.sczl_gdbh5 = c5.Gy0_gdbh AND a.sczl_yjGx5 = CONCAT("0",c5.Gy0_yjno, "-", c5.Gy0_gxh) AND a.sczl_gdbh5 IS NOT NULL', 'LEFT')
-            ->join('工单_工艺资料 c6', 'a.sczl_gdbh6 = c6.Gy0_gdbh AND a.sczl_yjGx6 = CONCAT("0",c6.Gy0_yjno, "-", c6.Gy0_gxh) AND a.sczl_gdbh6 IS NOT NULL', 'LEFT')
-            ->join('dic_lzde b1', 'a.sczl_dedh1 = b1.sys_bh', 'LEFT')
-            ->join('dic_lzde b2', 'a.sczl_dedh2 = b2.sys_bh', 'LEFT')
-            ->join('dic_lzde b3', 'a.sczl_dedh3 = b3.sys_bh', 'LEFT')
-            ->join('dic_lzde b4', 'a.sczl_dedh4 = b4.sys_bh', 'LEFT')
-            ->join('dic_lzde b5', 'a.sczl_dedh5 = b5.sys_bh', 'LEFT')
-            ->join('dic_lzde b6', 'a.sczl_dedh6 = b6.sys_bh', 'LEFT')
-            ->join('人事_基本资料 d', 'a.sczl_bh = d.员工编号', 'LEFT')
-            ->join('工单_基本资料 e1','a.sczl_gdbh1 = e1.Gd_gdbh AND a.sczl_gdbh1 IS NOT NULL','LEFT')
-            ->join('工单_基本资料 e2','a.sczl_gdbh2 = e2.Gd_gdbh AND a.sczl_gdbh2 IS NOT NULL','LEFT')
-            ->join('工单_基本资料 e3','a.sczl_gdbh3 = e3.Gd_gdbh AND a.sczl_gdbh3 IS NOT NULL','LEFT')
-            ->join('工单_基本资料 e4','a.sczl_gdbh4 = e4.Gd_gdbh AND a.sczl_gdbh4 IS NOT NULL','LEFT')
-            ->join('工单_基本资料 e5','a.sczl_gdbh5 = e5.Gd_gdbh AND a.sczl_gdbh5 IS NOT NULL','LEFT')
-            ->join('工单_基本资料 e6','a.sczl_gdbh6 = e6.Gd_gdbh AND a.sczl_gdbh6 IS NOT NULL','LEFT')
+        if(empty($param['date'])){
+            $this->error('请选择日期');
+        }
+        $where = [
+            'a.staff_no' => $param['staff_no'],
+            'a.date' => ['like', $param['date'] . '%'],
+            'a.del_rq' => null,
+        ];
+        $list = db('设备_工分计酬')
+            ->alias('a')
+            ->join('工单_部件资料 b', 'a.work_order = b.work_order and a.part_code = b.part_code', 'left')
+            ->field('a.work_order as 订单编号,DATE_FORMAT(a.date, "%Y-%m-%d") as 日期,b.part_name as 部件名称,
+            a.part_code as 部件编号,a.salary as 工资,a.number as 数量,a.production_hour as 生产工时,a.production_score as 生产分数,
+            a.machine as 设备名称,a.process_name as 工序名称,a.standard_hour as 标准工时,a.standard_score as 标准分数,
+            a.coefficient as 系数')
             ->where($where)
-            ->group('a.UniqId')
+            ->order('a.date asc,a.process_code asc')
             ->select();
-//        halt($result);
-        foreach ($result as $value){
-            for ($i=1;$i<7;$i++){
-                $item = [];
-                $gdbhKey = 'sczl_gdbh'.$i;
-                $yjgxKey = 'sczl_yjGx'.$i;
-                $jtbhKey = 'sczl_Jtbh'.$i;
-                $gxmcKey = 'gxmc'.$i;
-                $clKey = 'sczl_cl'.$i;
-                $reworkKey = 'sczl_返工产量'.$i;
-                $gxKey = '工序难度系数'.$i;
-                $thousandKey = '千件工价'.$i;
-                $dailyKey = '日定额'.$i;
-                $afterKey = '补产标准'.$i;
-                $pgclKey = 'sczl_PgCl'.$i;
-                $jcxsKey = 'sczl_计产系数'.$i;
-                $cpmcKey = 'cpmc'.$i;
-                $typekey = 'sczl_type'.$i;
-                if (!empty($value[$gdbhKey])){
-                    $item['sczl_gdbh'] = $value[$gdbhKey];
-                    $item['sczl_yjno'] = ltrim(substr($value[$yjgxKey],0,2), '0');
-                    $item['sczl_gxh'] = abs((int)substr($value[$yjgxKey],-2));
-//                    $item['sczl_type'] = substr($value[$gxmcKey],0,30);
-                    $item['sczl_type'] = $value[$gxmcKey];
-                    if (!empty($value[$reworkKey])  && $value[$reworkKey] > 0){
-                        $item['sczl_type'] = '返工('.$item['sczl_type'].')';
-                    }
-                    $item['sczl_rq'] = $value['sczl_rq'];
-                    $item['sczl_jtbh'] = $value[$jtbhKey];
-                    if (!empty($value[$reworkKey]) && $value[$reworkKey] > 0){
-                        $cl = $value[$reworkKey];
-                    }else{
-                        $cl = $value[$clKey];
-                    }
-                    if ($item['sczl_type'] === '包装'){
-                        $item['班组车头产量'] = $cl * $value[$pgclKey] / (int)$value[$typekey];
-                    }else{
-                        $item['班组车头产量'] = $cl;
-                    }
-                    $item['工价系数'] = '0.0000';
-                    $item['工序难度系数'] = $value[$jcxsKey];
-                    if ($value[$jcxsKey] <= 0){
-                        $item['工序难度系数'] = '1.0000';
-                    }
-                    $item['装版工时'] = '0.00';
-                    $item['保养工时'] = '0.00';
-                    $item['打样工时'] = '0.00';
-                    $item['异常停机工时'] = '0.00';
-                    $item['车头产量占用机时'] = '0.00';
-                    $item['日定额'] = $value[$dailyKey];
-                    $item['千件工价'] = $value[$thousandKey];
-                    $item['补产标准'] = $value[$afterKey];
-                    $item['班组换算产量'] = '0.00';
-                    $item['计时补差额工资'] = '0.00';
-                    $item['bh'] = $value['sczl_bh'];
-                    $item['xm'] = $value['xm'];
-                    $item['Rate'] = 1.000;
-                    $item['sczl_ms'] = '0.00';
-                    $item['核算产量'] = $item['班组车头产量'] * $item['工序难度系数'];
-                    //工时占比
-                    if ($item['日定额'] > 0){
-                        $manHourRate = number_format($item['核算产量'] / $item['日定额'],4);
-                    }else{
-                        $manHourRate = '0.0000';
-                    }
-                    $item['工时占比'] = floatval($manHourRate);
-                    array_push($data,$item);
-                }
-            }
-        }
-//        halt($data);
-        // 用于存储bh对应的工时占比总和
-        $bhTotals = [];
-        // 遍历原始数据
-        foreach ($data as $row) {
-            $bh = substr($row['sczl_rq'],0,10) . '-' .$row['bh'];
-            // 初始化bh对应的工时占比总和为0
-            if (!isset($bhTotals[$bh])) {
-                $bhTotals[$bh] = 0;
-            }
-            // 将工时占比相加
-            $bhTotals[$bh] += floatval($row['工时占比']);
-        }
-        //用usort函数对$data数组按照sczl_rq的日期部分进行升序排序
-        usort($data, function ($a, $b) {
-            return strtotime(substr($a['sczl_rq'], 0, 10)) - strtotime(substr($b['sczl_rq'], 0, 10));
-        });
-        $days = [];
-        foreach ($data as $key=>$item){
-            //统计每月出勤天数
-            $day_bh = $item['bh'];
-            if (!isset($days[$day_bh])){
-                $days[$day_bh] = [];
-                array_push($days[$day_bh],$item['sczl_rq']);
-            }else{
-                if (in_array($item['sczl_rq'],$days[$day_bh]) == false){
-                    array_push($days[$day_bh],$item['sczl_rq']);
-                }
-            }
-            $bh = substr($item['sczl_rq'],0,10) . '-' .$item['bh'];
-            //达标定额
-            if ($item['工时占比'] > 0){
-                $standardQuota = floatval($item['工时占比'] / $bhTotals[$bh] * $item['日定额']);
-                $data[$key]['达标定额'] = number_format($standardQuota,2,'.', '');
-            }else{
-                $data[$key]['达标定额'] = number_format($item['班组车头产量'],2,'.', '');
-            }
-            $date = substr($item['sczl_rq'],0,10);
-            if (in_array($date,$vacationOneArr) || in_array($date,$vacationTwoArr)){
-                //计件工资
-//                $pieceWorkWage = $data[$key]['达标定额']/1000*$item['千件工价']*$item['Rate']*3;
-                $pieceWorkWage = 0;
-                //加班工资
-                $overTimePay = $item['核算产量'] / 1000 *$item['千件工价'] * $item['Rate'] *3;
-                //法定节假日,去除这天的考勤天数
-                $days[$day_bh] = array_filter($days[$day_bh], function($value) use ($item) {
-                    return $value !== $item['sczl_rq'];
-                });
-            }else{
-                //如果出勤天数小于法定天数,按正常计算
-                if (count($days[$day_bh]) <= $params['days']){
-                    $pieceWorkWage = $data[$key]['达标定额']/1000*$item['千件工价']*$item['Rate'];
-                }else{ //如果出勤天数大于法定天数,达标定额为 0,计件工资为0,超出的部分按加班工资算
-                    $data[$key]['达标定额'] = '0.00';
-                    $pieceWorkWage = '0.00';
-                }
-                $overTimePay = ($item['核算产量'] - $data[$key]['达标定额']) / 1000 *$item['千件工价'] * $item['Rate'] *1.5;
-            }
-            $data[$key]['个人计件工资'] = number_format($pieceWorkWage,2,'.', '');
-            $data[$key]['个人加班工资'] = number_format($overTimePay,2,'.', '');
-            $data[$key]['UniqID'] = $UniqId++;
-            $data[$key]['sys_ny'] = $params['date'];
-            $data[$key]['sys_rq'] = date('Y-m-d H:i:s');
-            $data[$key]['sys_id'] = $params['sys_id'];
-            $data[$key]['法定天数'] = $params['days'];
-            $data[$key]['sczl_type'] = trim($item['sczl_type']);
-        }
-        // 检查任务是否已经存在于队列中,如果不存在则推送任务到队列
-        if (!$redis->has($taskIdentifier)) {
-            $job = new InsertDataJob($data); // 创建任务实例
-            // 推送任务到队列
-            Queue::push($job,'','default'); // 推送任务到队列
-            // 设置任务的标识符到缓存中,并设置有效期,有效期为队列执行时间的两倍
-            $redis->set($taskIdentifier, true);
-            $this->success('数据正在处理中,请等待...');
+        if(empty($list)){
+            $this->error('没有数据');
         }
+        $this->success('成功', $list);
     }
-
 }