Răsfoiți Sursa

工资计算优化

qiuenguang 1 an în urmă
părinte
comite
aae9c2d349

+ 31 - 35
application/api/controller/EmployeeDailySalary.php

@@ -95,10 +95,10 @@ class EmployeeDailySalary extends Api
         //获取工资汇总表数据
         $res=db('绩效工资汇总')
             ->join('人事_基本资料','人事_基本资料.员工编号=绩效工资汇总.bh')
-            ->group('绩效工资汇总.bh,LEFT(sczl_rq, 10)')
+            ->group('绩效工资汇总.bh,LEFT(sczl_rq, 10),绩效工资汇总.工序难度系数')
             ->where('sys_ny',$req['date'])
             ->where(['人事_基本资料.所在部门'=>['like',$req['department'].'%']])
-            ->column('CONCAT(bh, "-", DATE_FORMAT(sczl_rq,"%Y.%m.%d")) AS rq_bh,bh,rtrim(xm) as 员工姓名,DATE_FORMAT(sczl_rq,"%Y.%m.%d") as sczl_rq,sum(个人计件工资) as 计件工资,
+            ->column('CONCAT(bh, "-", DATE_FORMAT(sczl_rq,"%Y/%m/%d")) AS rq_bh,bh,rtrim(xm) as 员工姓名,DATE_FORMAT(sczl_rq,"%Y/%m/%d") as sczl_rq,sum(个人计件工资) as 计件工资,
             sum(个人加班工资) as 加班工资,sum(异常停机工时) as 计时时数');
 
         $year=substr($req['date'],0,4);
@@ -112,21 +112,21 @@ class EmployeeDailySalary extends Api
         for ($i = 1; $i <= 6; $i++) {
             $column = $columns[$i-1];
             $r = db('db_wgjs')
-                ->field("DATE_FORMAT(wgjs_rq,'%Y.%m.%d') as wgjs_rq, $column as wgjs_bh, trim(员工姓名) as 员工姓名, wgjs_js$i as wgjs_js, wgjs_冲定额$i as wgjs_冲定额")
+                ->field("DATE_FORMAT(wgjs_rq,'%Y/%m/%d') as wgjs_rq, $column as wgjs_bh, trim(员工姓名) as 员工姓名, wgjs_js$i as wgjs_js, wgjs_冲定额$i as wgjs_冲定额")
                 ->join('人事_基本资料', "人事_基本资料.员工编号=db_wgjs.$column")
                 ->where(['wgjs_rq' => ['between', "$start_time,$end_time"], '人事_基本资料.所在部门' => ['like', $req['department'] . '%']])
                 ->select();
 
             $arr = array_merge($arr, $r);
         }
-        
+
         //计算wgjs总计时时数
         $list = [];
         foreach($arr as $v){
             if(isset($list[$v['wgjs_bh'].'-'.$v['wgjs_rq']])){
                 $list[$v['wgjs_bh'].'-'.$v['wgjs_rq']]['计时时数']+=$v['wgjs_js'];
-                $list[$v['wgjs_bh'].'-'.$v['wgjs_rq']]['计时工资']=floatval(number_format($list[$v['wgjs_bh'].'-'.$v['wgjs_rq']]['计时时数']*10,2, '.', ''));
-                $list[$v['wgjs_bh'].'-'.$v['wgjs_rq']]['日工资合计']=floatval(number_format($list[$v['wgjs_bh'].'-'.$v['wgjs_rq']]['计时时数']*10,2, '.', ''));
+                $list[$v['wgjs_bh'].'-'.$v['wgjs_rq']]['计时工资']=floatval(number_format($list[$v['wgjs_bh'].'-'.$v['wgjs_rq']]['计时时数']*9.5,2, '.', ''));
+                $list[$v['wgjs_bh'].'-'.$v['wgjs_rq']]['日工资合计']=floatval(number_format($list[$v['wgjs_bh'].'-'.$v['wgjs_rq']]['计时时数']*9.5,2, '.', ''));
             }else{
                 $list[$v['wgjs_bh'].'-'.$v['wgjs_rq']]['bh']=$v['wgjs_bh'];
                 $list[$v['wgjs_bh'].'-'.$v['wgjs_rq']]['员工姓名']=$v['员工姓名'];
@@ -134,11 +134,10 @@ class EmployeeDailySalary extends Api
                 $list[$v['wgjs_bh'].'-'.$v['wgjs_rq']]['计件工资']=0;
                 $list[$v['wgjs_bh'].'-'.$v['wgjs_rq']]['加班工资']=0;
                 $list[$v['wgjs_bh'].'-'.$v['wgjs_rq']]['计时时数']=$v['wgjs_js'];
-                $list[$v['wgjs_bh'].'-'.$v['wgjs_rq']]['计时工资']=floatval(number_format($v['wgjs_js']*10,2, '.', ''));
-                $list[$v['wgjs_bh'].'-'.$v['wgjs_rq']]['日工资合计']=floatval(number_format($v['wgjs_js']*10,2, '.', ''));
+                $list[$v['wgjs_bh'].'-'.$v['wgjs_rq']]['计时工资']=floatval(number_format($v['wgjs_js']*9.5,2, '.', ''));
+                $list[$v['wgjs_bh'].'-'.$v['wgjs_rq']]['日工资合计']=floatval(number_format($v['wgjs_js']*9.5,2, '.', ''));
             }
         };
-
         //计算当月冲定额时长
         $list1 = [];
         foreach($arr as $v){
@@ -154,10 +153,9 @@ class EmployeeDailySalary extends Api
                 }
             }
         };
-
         //获取每个员工计时补差天数
         $arr1 = db('绩效工资汇总')->alias('j')
-            ->field('j.bh,j.sczl_rq')
+            ->field('j.bh,j.sczl_rq,j.法定天数')
             ->join('人事_基本资料 r','r.员工编号=j.bh')
             ->group('j.bh,j.sczl_rq')
             ->where('j.sys_ny',$req['date'])
@@ -166,24 +164,23 @@ class EmployeeDailySalary extends Api
             ->buildSql();
         $arr1 = db()->table($arr1 . ' t')
             ->group('t.bh, LEFT(t.sczl_rq, 7)')
-            ->column('t.bh,count(LEFT(t.sczl_rq, 7)) as num');
-
+            ->column('t.bh,t.法定天数 as num');
         //查询该员工当月停机工时
         $res1=db('绩效工资汇总')
             ->join('人事_基本资料','人事_基本资料.员工编号=绩效工资汇总.bh')
             ->group('绩效工资汇总.bh,LEFT(sczl_rq, 7)')
             ->where('sys_ny',$req['date'])
             ->where(['人事_基本资料.所在部门'=>['like',$req['department'].'%']])
-            ->column('bh,rtrim(xm) as 员工姓名,DATE_FORMAT(sczl_rq,"%Y.%m.%d") as sczl_rq,
+            ->column('bh,rtrim(xm) as 员工姓名,DATE_FORMAT(sczl_rq,"%Y/%m/%d") as sczl_rq,
             sum(异常停机工时) as 计时时数');
-
         //查询每条记录
         $arr2 = db('绩效工资汇总')->alias('j')
-            ->field('j.bh, DATE_FORMAT(j.sczl_rq,"%Y.%m.%d") as sczl_rq,
+            ->field('j.bh, DATE_FORMAT(j.sczl_rq,"%Y/%m/%d") as sczl_rq,
             sum(j.达标定额) as 达标定额, j.Rate, j.千件工价, sum(j.异常停机工时) as 异常停机工时')
             ->join('人事_基本资料 r','r.员工编号=j.bh')
             ->where('j.sys_ny',$req['date'])
-            // ->where('j.达标定额','<>',0)
+//            ->where('j.异常停机工时','<>',0)
+//             ->where('j.达标定额','<>',0)
             ->where(['r.所在部门'=>['like',$req['department'].'%']])
             ->group('j.bh,j.sczl_rq,j.sczl_gdbh')
             ->select();
@@ -202,14 +199,13 @@ class EmployeeDailySalary extends Api
                 $brr[$v['bh'].'-'.$v['sczl_rq']] = $a;
             }
         }
-
-        //工资汇总表和wgjs表中共有数据汇总 
+        //工资汇总 表和wgjs表中共有数据汇总
         foreach($res as $k=>&$v){
             if(array_key_exists($k,$list)){
                 $v['计时时数'] += $list[$k]['计时时数'];
                 unset($list[$k]);
             }
-            $v['计时工资'] = array_key_exists($k,$brr) ? floatval(number_format($v['计时时数']*10+$brr[$k],2, '.', '')) : floatval(number_format($v['计时时数']*10,2, '.', ''));
+            $v['计时工资'] = array_key_exists($k,$brr) ? floatval(number_format($v['计时时数']*9.5+$brr[$k],2, '.', '')) : floatval(number_format($v['计时时数']*9.5,2, '.', ''));
             $v['日工资合计'] = floatval(number_format($v['计件工资'] + $v['加班工资'] + $v['计时工资'],2, '.', ''));
             
             unset($v['rq_bh']);
@@ -243,14 +239,14 @@ class EmployeeDailySalary extends Api
             sum(异常停机工时) as 异常停机工时, sum(车头产量占用机时) as 车头产量占用机时, 日定额,
             sum(达标定额) as 达标定额, 千件工价, 补产标准, bh, rtrim(xm) as xm, Rate')
             ->join('工单_印件资料 g','g.Yj_Gdbh = 绩效工资汇总.sczl_gdbh AND g.yj_Yjno = 绩效工资汇总.sczl_yjno','LEFT')
-            ->group('LEFT(sczl_rq, 10),sczl_gdbh,CONCAT(sczl_yjno, "-", sczl_gxh, "-", sczl_type),千件工价')
+            ->group('LEFT(sczl_rq, 10),sczl_gdbh,CONCAT(sczl_yjno, "-", sczl_gxh),千件工价,工序难度系数')
             ->where(['sys_ny'=>$req['date'],'bh'=>$req['code']])
             ->select();
         if(!$res){
             $this->error('失败');
         }
         foreach($res as &$v){
-            $v['sczl_rq']=str_replace('-','.',$v['sczl_rq']);
+            $v['sczl_rq']=str_replace('-','/',$v['sczl_rq']);
             if($v['sczl_yjno']>9){
                 $sczl_yjno=$v['sczl_yjno'];
             }else{
@@ -324,7 +320,7 @@ class EmployeeDailySalary extends Api
             $this->error('请求方式错误');
         }
         $req = $this->request->param();
-        $yg = db('人事_基本资料')->where('员工姓名',$req['search'])->value('员工编号');
+        $yg = db('人事_基本资料')->where('员工姓名|员工编号',$req['search'])->value('员工编号');
         if($yg){
             $req['search']=$yg;
         }
@@ -334,7 +330,7 @@ class EmployeeDailySalary extends Api
             ->where('sys_ny',$req['date'])
             ->where('bh',$req['search'])
             // ->where(['人事_基本资料.所在部门'=>['like',$req['department'].'%']])
-            ->column('CONCAT(bh, "-", DATE_FORMAT(sczl_rq,"%Y.%m.%d")) AS rq_bh,bh,rtrim(xm) as 员工姓名,DATE_FORMAT(sczl_rq,"%Y.%m.%d") as sczl_rq,sum(个人计件工资) as 计件工资,
+            ->column('CONCAT(bh, "-", DATE_FORMAT(sczl_rq,"%Y/%m/%d")) AS rq_bh,bh,rtrim(xm) as 员工姓名,DATE_FORMAT(sczl_rq,"%Y/%m/%d") as sczl_rq,sum(个人计件工资) as 计件工资,
             sum(个人加班工资) as 加班工资,sum(异常停机工时) as 计时时数');
 
         $year=substr($req['date'],0,4);
@@ -347,7 +343,7 @@ class EmployeeDailySalary extends Api
         for ($i = 1; $i <= 6; $i++) {
             $column = $columns[$i-1];
             $r = db('db_wgjs')
-                ->field("DATE_FORMAT(wgjs_rq,'%Y.%m.%d') as wgjs_rq, $column as wgjs_bh, trim(员工姓名) as 员工姓名, wgjs_js$i as wgjs_js, wgjs_冲定额$i as wgjs_冲定额")
+                ->field("DATE_FORMAT(wgjs_rq,'%Y/%m/%d') as wgjs_rq, $column as wgjs_bh, trim(员工姓名) as 员工姓名, wgjs_js$i as wgjs_js, wgjs_冲定额$i as wgjs_冲定额")
                 ->join('人事_基本资料', "人事_基本资料.员工编号=db_wgjs.$column")
                 ->where($column,$req['search'])
                 ->where(['wgjs_rq' => ['between', "$start_time,$end_time"]])
@@ -360,8 +356,8 @@ class EmployeeDailySalary extends Api
         foreach($arr as $v){
             if(isset($list[$v['wgjs_bh'].'-'.$v['wgjs_rq']])){
                 $list[$v['wgjs_bh'].'-'.$v['wgjs_rq']]['计时时数']+=$v['wgjs_js'];
-                $list[$v['wgjs_bh'].'-'.$v['wgjs_rq']]['计时工资']=floatval(number_format($list[$v['wgjs_bh'].'-'.$v['wgjs_rq']]['计时时数']*10,2, '.', ''));
-                $list[$v['wgjs_bh'].'-'.$v['wgjs_rq']]['日工资合计']=floatval(number_format($list[$v['wgjs_bh'].'-'.$v['wgjs_rq']]['计时时数']*10,2, '.', ''));
+                $list[$v['wgjs_bh'].'-'.$v['wgjs_rq']]['计时工资']=floatval(number_format($list[$v['wgjs_bh'].'-'.$v['wgjs_rq']]['计时时数']*9.5,2, '.', ''));
+                $list[$v['wgjs_bh'].'-'.$v['wgjs_rq']]['日工资合计']=floatval(number_format($list[$v['wgjs_bh'].'-'.$v['wgjs_rq']]['计时时数']*9.5,2, '.', ''));
             }else{
                 $list[$v['wgjs_bh'].'-'.$v['wgjs_rq']]['bh']=$v['wgjs_bh'];
                 $list[$v['wgjs_bh'].'-'.$v['wgjs_rq']]['员工姓名']=$v['员工姓名'];
@@ -369,8 +365,8 @@ class EmployeeDailySalary extends Api
                 $list[$v['wgjs_bh'].'-'.$v['wgjs_rq']]['计件工资']=0;
                 $list[$v['wgjs_bh'].'-'.$v['wgjs_rq']]['加班工资']=0;
                 $list[$v['wgjs_bh'].'-'.$v['wgjs_rq']]['计时时数']=$v['wgjs_js'];
-                $list[$v['wgjs_bh'].'-'.$v['wgjs_rq']]['计时工资']=floatval(number_format($v['wgjs_js']*10,2, '.', ''));
-                $list[$v['wgjs_bh'].'-'.$v['wgjs_rq']]['日工资合计']=floatval(number_format($v['wgjs_js']*10,2, '.', ''));
+                $list[$v['wgjs_bh'].'-'.$v['wgjs_rq']]['计时工资']=floatval(number_format($v['wgjs_js']*9.5,2, '.', ''));
+                $list[$v['wgjs_bh'].'-'.$v['wgjs_rq']]['日工资合计']=floatval(number_format($v['wgjs_js']*9.5,2, '.', ''));
             }
         };
         $list1 = [];
@@ -390,7 +386,7 @@ class EmployeeDailySalary extends Api
 
         //获取每个员工计时补差天数
         $arr1 = db('绩效工资汇总')->alias('j')
-            ->field('j.bh,j.sczl_rq')
+            ->field('j.bh,j.sczl_rq,j.法定天数')
             ->join('人事_基本资料 r','r.员工编号=j.bh')
             ->group('j.bh,j.sczl_rq')
             ->where('j.sys_ny',$req['date'])
@@ -400,7 +396,7 @@ class EmployeeDailySalary extends Api
             ->buildSql();
         $arr1 = db()->table($arr1 . ' t')
             ->group('t.bh, LEFT(t.sczl_rq, 7)')
-            ->column('t.bh,count(LEFT(t.sczl_rq, 7)) as num');
+            ->column('t.bh,t.法定天数 as num');
 
         //查询该员工当月停机工时
         $res1=db('绩效工资汇总')
@@ -409,12 +405,12 @@ class EmployeeDailySalary extends Api
             ->where('sys_ny',$req['date'])
             ->where('bh',$req['search'])
             // ->where(['人事_基本资料.所在部门'=>['like',$req['department'].'%']])
-            ->column('bh,rtrim(xm) as 员工姓名,DATE_FORMAT(sczl_rq,"%Y.%m.%d") as sczl_rq,
+            ->column('bh,rtrim(xm) as 员工姓名,DATE_FORMAT(sczl_rq,"%Y/%m/%d") as sczl_rq,
             sum(异常停机工时) as 计时时数');
 
         //查询每条记录
         $arr2 = db('绩效工资汇总')->alias('j')
-            ->field('j.bh, DATE_FORMAT(j.sczl_rq,"%Y.%m.%d") as sczl_rq,
+            ->field('j.bh, DATE_FORMAT(j.sczl_rq,"%Y/%m/%d") as sczl_rq,
             sum(j.达标定额) as 达标定额, j.Rate, j.千件工价, sum(j.异常停机工时) as 异常停机工时')
             ->join('人事_基本资料 r','r.员工编号=j.bh')
             ->where('j.sys_ny',$req['date'])
@@ -444,7 +440,7 @@ class EmployeeDailySalary extends Api
                 $v['计时时数'] += $list[$k]['计时时数'];
                 unset($list[$k]);
             }
-            $v['计时工资'] = array_key_exists($k,$brr) ? floatval(number_format($v['计时时数']*10+$brr[$k],2, '.', '')) : floatval(number_format($v['计时时数']*10,2, '.', ''));
+            $v['计时工资'] = array_key_exists($k,$brr) ? floatval(number_format($v['计时时数']*9.5+$brr[$k],2, '.', '')) : floatval(number_format($v['计时时数']*9.5,2, '.', ''));
             $v['日工资合计'] = floatval(number_format($v['计件工资'] + $v['加班工资'] + $v['计时工资'],2, '.', ''));
             
             unset($v['rq_bh']);
@@ -593,7 +589,7 @@ class EmployeeDailySalary extends Api
         }
         $req = $this->request->param();
         $res=db('绩效加班工资月度修正')->cache(true,86400)
-            ->field('人事_基本资料.所在部门,bh,rtrim(xm) as xm,月计时时数,DATE_FORMAT(sczl_rq,"%Y.%m.%d") as sczl_rq,sczl_gdbh,sczl_yjno,sczl_gxh,
+            ->field('人事_基本资料.所在部门,bh,rtrim(xm) as xm,月计时时数,DATE_FORMAT(sczl_rq,"%Y/%m/%d") as sczl_rq,sczl_gdbh,sczl_yjno,sczl_gxh,
             千件工价,Rate,sum(达标定额) as 达标定额,sum(个人计件工资) as 个人计件工资,sum(个人加班工资) as 个人加班工资,计时冲定额,sum(New_计件工资) as
             New_计件工资,sum(New_加班工资) as New_加班工资,调整量_合计')
             ->join('人事_基本资料','人事_基本资料.员工编号=绩效加班工资月度修正.bh','LEFT')

+ 4 - 4
application/api/controller/Facility.php

@@ -43,7 +43,7 @@ class Facility extends Api
             ->where('使用部门','<>','研发中心')
             ->where('设备编组','<>','')
             ->where($where)
-            ->order('设备编组')
+            ->order('设备编组,设备编号')
             ->column('rtrim(使用部门) as 使用部门');
         if (empty($department)){
             $this->success('为获取到机台数据');
@@ -359,7 +359,7 @@ class Facility extends Api
             ->group('a.Gy0_gdbh,a.Gy0_yjno,a.Gy0_gxh')
             ->order('a.Gy0_sj1')
             ->select();
-//        halt($orderList);
+        halt($orderList);
         if (!empty($orderList)){
             $data = \db('设备_产量采集')->where('设备编号',$machine)->order('UniqId desc')->find();
             foreach ($orderList as $key=>$value){
@@ -487,7 +487,7 @@ class Facility extends Api
             $data[$k]['ID'] = $v['ID'];
             $data[$k]['班组号'] = $v['班组号'];
             for ($i=1;$i<11;$i++){
-                if ($v['bh'.$i] != '' && $v['bh'.$i] != '000000'){
+                if ($v['bh'.$i] != ''){
                     $name = \db('人事_基本资料')->where('员工编号',$v['bh'.$i])->field('rtrim(员工姓名) as 姓名')->find();
                     if ($v['rate'.$i] > 0){
                         $data[$k][$i-1] = $v['bh'.$i].' '.$name['姓名'].' ('.number_format($v['rate'.$i]*100,2).'%'.')';
@@ -1989,7 +1989,7 @@ class Facility extends Api
                     $list['组员'.$i] = [
                         '编号' => $list['sczl_bh'.$i],
                         '姓名' => $name['name'],
-                        '比例' => ((float)$list['sczl_rate'.$i]*100).'%'
+                        '比例' => (float)$list['sczl_rate'.$i]
                     ];
                 }
             }

+ 1 - 0
application/api/controller/OrderSuperLoss.php

@@ -548,6 +548,7 @@ class OrderSuperLoss extends Api
             ])
             ->group('a.Gy0_yjno,a.Gy0_gxh')
             ->select();
+        halt($gy_data);
         $arr = [];
         $plan_loss = [];//工单计划损耗
         foreach ($gy_data as $k=>$v){

+ 15 - 1
application/api/controller/RelatedSalaryAccounting.php

@@ -822,7 +822,7 @@ class RelatedSalaryAccounting extends Api
         $req['date']=str_replace('.','-',$req['date']);
         $start_time=$req['date'].' 00:00:00';
         $end_time=$req['date'].' 23:59:59';
-        $gd = db('人事_基本资料')->where('员工姓名','like','%'.$req['search'].'%')->column('员工编号');
+        $gd = db('人事_基本资料')->where('员工姓名','like','%'.$req['search'].'%')->whereOr('pycode',$req['search'])->column('员工编号');
         if($gd){
             $where = [
                 'j.sczl_rq'=>['between',"$start_time,$end_time"],
@@ -845,6 +845,20 @@ class RelatedSalaryAccounting extends Api
             ->where($where)
             ->order('r.所在部门,r.所在部门,j.bh')
             ->select();
+        if (empty($res)){
+            $data = \db('人事_基本资料')
+                ->whereIn('员工编号',$gd)
+                ->field('CONCAT(trim(员工姓名),"(", 员工编号, ")") as 班组员工编号,所在部门,职称职务')
+                ->select();
+            $res = [];
+            foreach ($data as $key=>$value) {
+                $value['日期'] = $req['date'];
+                $value['个人加班工资'] = 0;
+                $value['个人计件工资'] = 0;
+                $value['sczl_bzdh'] = '';
+                array_push($res,$value);
+            }
+        }
         if($res===false){
             $this->error('失败');
         }

+ 72 - 38
application/api/controller/StaffSalary.php

@@ -8,6 +8,8 @@ use app\job\InsertDataJob;
 use think\Queue;
 use think\Cache;
 use think\cache\driver\Redis;
+use function fast\e;
+
 /**
  * 员工计件工资核算
 */
@@ -101,12 +103,12 @@ class StaffSalary extends Api
         $where['a.sczl_rq'] = ['between',[$startDate,$endDate]];
         //查询印刷印后车间的机台,添加搜索条件
         $jtbhs = db('设备_基本资料')->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,
+        $fields = "a.sczl_gdbh,a.sczl_yjno,a.sczl_gxh,a.sczl_type 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.版距
+                b.千件工价,b.日定额,b.补产标准,c.工价系数 as 工序难度系数,c.版距,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);
@@ -133,6 +135,7 @@ class StaffSalary extends Api
          * 设备_产量计酬数据
         */
         foreach ($list as $value){
+            $num = 1;
             $value['班组车头产量'] = $value['班组车头产量'] - $value['sczl_zcfp'];
             //计件产量
             if (substr($value['sczl_jtbh'],0,2) == 'JP'){//检品机
@@ -142,15 +145,19 @@ class StaffSalary extends Api
                     $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'){//凹印机
+                $byThePieceYield = round($value['班组车头产量']  * $value['sczl_废品率系数']);//班组计件核算产量
+            }elseif (substr($value['sczl_jtbh'],0,2) == 'WY' || substr($value['sczl_jtbh'],0,2) == 'DW' || substr($value['sczl_jtbh'],0,3) == 'YWY' || substr($value['sczl_jtbh'],0,3) == 'YDW'){//凹印机
                 $gx_rate = $value['工序难度系数'];
-                if ($value['版距'] > 0){
+                if (str_contains($value['印刷方式'],'张') && $value['版距'] > 0){
                     $value['版距'] = $value['版距'] / 1000;
                     $value['班组车头产量'] = $value['班组车头产量'] * $value['版距'];
                 }
-                $byThePieceYield = round($value['班组车头产量'] * $gx_rate);
+//                $byThePieceYield = round($value['班组车头产量'] * $gx_rate);
+                $byThePieceYield =str_replace(',','',round($value['班组车头产量'] * floatval($gx_rate))) ;
             }else{
+                if ($value['sczl_jtbh'] === 'YSY02#' || $value['sczl_jtbh'] === 'YSY08#' || $value['sczl_jtbh'] === 'YSY10#' || $value['sczl_jtbh'] === 'SY03#'){
+                    $num = 1.1;
+                }
                 if ($value['sczl_工价系数'] == '0.000' || floatval($value['sczl_工价系数']) <= 0){
                     //工序难度系数
                     $gx_rate = $value['工序难度系数'];
@@ -164,7 +171,8 @@ class StaffSalary extends Api
                         $gx_rate = $value['sczl_工价系数'];
                     }
                 }
-                $byThePieceYield = round($value['班组车头产量'] * $gx_rate);
+                $byThePieceYield =round($value['班组车头产量'] * floatval($gx_rate) * $num);
+
             }
 //            //计件产量
 //            if (substr($value['sczl_jtbh'],0,2) == 'JP'){
@@ -193,7 +201,7 @@ class StaffSalary extends Api
                 $bhKey = 'sczl_bh'.$i;
                 $xmKey = 'name'.$i;
                 $rateKey = 'sczl_rate'.$i;
-                if (!empty($value[$bhKey]) && $value[$bhKey] != '000000'){
+                if (!empty($value[$bhKey]) && $value[$bhKey] != '0000'){
                     $item = [];
                     $item['sczl_gdbh'] = $value['sczl_gdbh'];
                     $item['sczl_yjno'] = $value['sczl_yjno'];
@@ -204,7 +212,7 @@ class StaffSalary extends Api
                     $item['sczl_jtbh'] = $value['sczl_jtbh'];
                     $item['班组车头产量'] = $value['班组车头产量'];
                     $item['工价系数'] = '0.0000';
-                    $item['工序难度系数'] = $gx_rate;
+                    $item['工序难度系数'] = $gx_rate * $num;
                     $item['装版工时'] = $value['装版工时'];
                     $item['保养工时'] = $value['保养工时'];
                     $item['打样工时'] = $value['打样工时'];
@@ -238,15 +246,26 @@ class StaffSalary extends Api
             ->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)
+            ->where('sczl_gdbh','1801001')
             ->select();
         foreach ($query as $value){
+            $num = 1;
+            if ((int)$value['拆片联拼系数'] === 0){
+                $value['拆片联拼系数'] = 1;
+            }
+            if ((int)$value['拆片条小盒系数'] === 0){
+                $value['拆片条小盒系数'] = 1;
+            }
             $value['班组车头产量'] = ($value['班组车头产量'] - $value['sczl_zcfp']) * $value['拆片联拼系数'] * $value['拆片条小盒系数'];
             //计件产量
+            if ($value['sczl_jtbh'] === 'YSY02#' || $value['sczl_jtbh'] === 'YSY08#' || $value['sczl_jtbh'] === 'YSY10#' || $value['sczl_jtbh'] === 'SY03#'){
+                $num = 1.1;
+            }
             if ($value['工序难度系数'] <= 0 || empty($value['工序难度系数'])){
                 $value['工序难度系数'] = '1.0000';
                 $byThePieceYield = $value['班组车头产量'];
             }else{
-                $byThePieceYield = round($value['班组车头产量'] * $value['工序难度系数']);
+                $byThePieceYield = round($value['班组车头产量'] * $value['工序难度系数'] * $num);
             }
             //补产产量/班组换算产量
             $afterProductionYield = ($value['装版工时'] + $value['保养工时'] + $value['打样工时']) * $value['补产标准'];
@@ -268,7 +287,7 @@ class StaffSalary extends Api
             $item['sczl_jtbh'] = $value['sczl_jtbh'];
             $item['班组车头产量'] = $value['班组车头产量'];
             $item['工价系数'] = '0.0000';
-            $item['工序难度系数'] = $value['工序难度系数'];
+            $item['工序难度系数'] = $value['工序难度系数'] * $num;
             $item['装版工时'] = $value['装版工时'];
             $item['保养工时'] = $value['保养工时'];
             $item['打样工时'] = $value['打样工时'];
@@ -287,7 +306,7 @@ class StaffSalary extends Api
             $item['工时占比'] = floatval($manHourRate);
             array_push($data,$item);
         }
-        halt($data);
+//        halt($data);
         /**
          * 手工检验工序数据
         */
@@ -374,6 +393,7 @@ class StaffSalary extends Api
                      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_dedh1,a.sczl_dedh2,a.sczl_dedh3,a.sczl_dedh4,a.sczl_dedh5,a.sczl_dedh6,
                      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,
@@ -405,7 +425,7 @@ class StaffSalary extends Api
             ->where($where)
             ->group('a.UniqId')
             ->select();
-//        halt($result);
+
         foreach ($result as $value){
             for ($i=1;$i<7;$i++){
                 $item = [];
@@ -416,6 +436,7 @@ class StaffSalary extends Api
                 $clKey = 'sczl_cl'.$i;
                 $reworkKey = 'sczl_返工产量'.$i;
                 $gxKey = '工序难度系数'.$i;
+                $dedh = 'sczl_dedh'.$i;
                 $thousandKey = '千件工价'.$i;
                 $dailyKey = '日定额'.$i;
                 $afterKey = '补产标准'.$i;
@@ -429,21 +450,8 @@ class StaffSalary extends Api
                     $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){
@@ -463,20 +471,47 @@ class StaffSalary extends Api
                     $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';
+                    $cl = $value[$clKey];
+                    if ($cl > 0){
+                        if (str_contains($item['sczl_type'],'包装')){
+                            $item['班组车头产量'] = $cl * $value[$pgclKey] / (int)$value[$typekey];
+                        }else{
+                            $item['班组车头产量'] = $cl;
+                        }
+                        $item['核算产量'] = $item['班组车头产量'] * $item['工序难度系数'];
+                        //工时占比
+                        if ($item['日定额'] > 0){
+                            $manHourRate = number_format($item['核算产量'] / $item['日定额'],4);
+                        }else{
+                            $manHourRate = '0.0000';
+                        }
+                        $item['工时占比'] = floatval($manHourRate);
+                        array_push($data,$item);
                     }
-                    $item['工时占比'] = floatval($manHourRate);
-                    array_push($data,$item);
+                    //返工
+                    if (!empty($value[$reworkKey])  && $value[$reworkKey] > 0){
+                        $item['sczl_type'] = '返工('.$item['sczl_type'].')';
+                        $cl = $value[$reworkKey];
+                        if (str_contains($item['sczl_type'],'包装')){
+                            $item['班组车头产量'] = $cl * $value[$pgclKey] / (int)$value[$typekey];
+                        }else{
+                            $item['班组车头产量'] = $cl;
+                        }
+                        $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对应的工时占比总和
+//halt($data);
+         //用于存储bh对应的工时占比总和
         $bhTotals = [];
         // 遍历原始数据
         foreach ($data as $row) {
@@ -490,7 +525,7 @@ class StaffSalary extends Api
         }
         //用usort函数对$data数组按照sczl_rq的日期部分进行升序排序
         usort($data, function ($a, $b) {
-            return strtotime(substr($a['sczl_rq'], 0, 10)) - strtotime(substr($b['sczl_rq'], 0, 10));
+            return strtotime(substr($a['sc zl_rq'], 0, 10)) - strtotime(substr($b['sczl_rq'], 0, 10));
         });
         $days = [];
         foreach ($data as $key=>$item){
@@ -542,7 +577,6 @@ class StaffSalary extends Api
             $data[$key]['法定天数'] = $params['days'];
             $data[$key]['sczl_type'] = trim($item['sczl_type']);
         }
-//        halt($data);
         // 检查任务是否已经存在于队列中,如果不存在则推送任务到队列
         if (!$redis->has($taskIdentifier)) {
             $job = new InsertDataJob($data); // 创建任务实例

Fișier diff suprimat deoarece este prea mare
+ 292 - 292
application/api/controller/Synchronization.php


+ 10 - 3
application/api/controller/WorkOrder.php

@@ -1489,8 +1489,8 @@ class WorkOrder extends Api
             'Gd_khmc' =>$param['khmc'],
             '客户料号' =>rtrim($productDetail['客户料号']),
             '客户ERP编码' =>$param['erp'],
-            'Gd_cpdh' =>$param['cpdh'],
-            'Gd_cpmc' =>$param['cpmc'],
+            'Gd_cpdh' =>'',
+            'Gd_cpmc' =>'',
             '成品代号' =>$param['cpdh'],
             '成品名称' =>$param['cpmc'],
             '产品版本号' =>$param['bbh'],
@@ -1642,6 +1642,7 @@ class WorkOrder extends Api
         $list = \db('产品_基本资料')
             ->where($where)
             ->field('rtrim(产品编号) as 产品编号,rtrim(产品名称) as 产品名称')
+            ->limit(50)
             ->select();
         if (empty($list)){
             $this->success('未获取到产品数据');
@@ -1680,7 +1681,13 @@ class WorkOrder extends Api
         $param['Mod_rq'] = date('Y-m-d H:i:s',time());
         $sql = \db('工单_印件资料')->fetchSql(true)->insert($param);
         $res = \db()->query($sql);
-        if ($res !== false){
+        $workData = [
+            'Gd_cpdh' => $param['yj_Yjdh'],
+            'Gd_cpmc' => $param['yj_yjmc']
+        ];
+        $workSql = \db('工单_基本资料')->where('Gd_gdbh',$param['Yj_Gdbh'])->fetchSql(true)->update($workData);
+        $result = \db()->query($workSql);
+        if ($res !== false && $result !== false){
             $this->success('成功');
         }else{
             $this->error('失败');

Unele fișiere nu au fost afișate deoarece prea multe fișiere au fost modificate în acest diff