Bläddra i källkod

员工超节损

qiuenguang 1 år sedan
förälder
incheckning
e3d4a7aa8e
2 ändrade filer med 71 tillägg och 11 borttagningar
  1. 70 11
      application/api/controller/OrderSuperLoss.php
  2. 1 0
      application/api/controller/WorkOrder.php

+ 70 - 11
application/api/controller/OrderSuperLoss.php

@@ -358,10 +358,11 @@ class OrderSuperLoss extends Api
                 $data[$key]['reward_rate'] = '1';
                 if ($data[$key]['质量考核'] === 0){
                     $data[$key]['reward_money'] = number_format($reward,2);
+                    $data[$key]['考核'] = '是';
                 }else{
                     $data[$key]['reward_money'] = '';
+                    $data[$key]['考核'] = '否';
                 }
-//                $data[$key]['reward_money'] = '';
                 $data[$key]['材料废'] = array_sum($material); //材料废
                 $data[$key]['零头处理'] = array_sum($change); //零头处理
                 $data[$key]['外发废'] = array_sum($list);//外发废
@@ -1151,14 +1152,16 @@ class OrderSuperLoss extends Api
         }
         $date = date('Ym',strtotime($params['date']));
         $list = \db('工单_质量考核汇总')
-            ->where('sys_ny',$date)
+            ->alias('a')
+            ->join('工单_印件资料 b','a.Gy0_gdbh = b.Yj_Gdbh AND a.印件及工序 = b.yj_Yjno')
+            ->where('a.sys_ny',$date)
+            ->where('b.质量考核',0)
             ->select();
         $data = [];
         foreach ($list as $item){
             for ($i = 1; $i <9; $i++){
-                if ($item['sczl_bh'.$i] !== '' && $item['sczl_bh'.$i] !== null){
+                if ($item['sczl_bh'.$i] !== '' && $item['sczl_bh'.$i] !== null && $item['sczl_bh'.$i] !== '0000'){
                     $item['sczl_rate'.$i] = 1;
-
                     $res = [
                         'bh' => $item['sczl_bh'.$i],
                         'xm' => $item['Xm'.$i],
@@ -1170,16 +1173,35 @@ class OrderSuperLoss extends Api
             }
         }
         $result = [];
-        foreach ($data as $key=>$value){
-            if (!isset($result[$value['cj']])){
-                $result[$value['cj']] = [];
+        foreach ($data as $item) {
+            $cj = $item['cj'];
+            $bh = $item['bh'];
+            $je = $item['je'];
+
+            // 如果 cj 不存在于结果数组中,则初始化
+            if (!isset($result[$cj])) {
+                $result[$cj] = array();
             }
-            foreach ($data as $k=>$v){
-                if ($value['bh'] === $v['bh']){
-                    $value['je'] += $v['je'];
+
+            // 检查 bh 是否已经存在于当前 cj 的子数组中
+            $found = false;
+            foreach ($result[$cj] as &$subItem) {
+                if ($subItem['bh'] === $bh) {
+                    $subItem['je'] += $je; // 累加 je
+                    $found = true;
+                    break;
                 }
             }
-            array_push($result[$value['cj']],$value);
+
+            // 如果 bh 不存在,则添加新的子数组
+            if (!$found) {
+                $result[$cj][] = array(
+                    'bh' => $bh,
+                    'xm' => $item['xm'],
+                    'je' => number_format($je, 2), // 保留两位小数
+                    'cj' => $cj
+                );
+            }
         }
         $this->success('成功',$result);
     }
@@ -1497,6 +1519,7 @@ class OrderSuperLoss extends Api
                 'sys_ny' => $value['sys_ny'],
                 'Gy0_gdbh' => $value['Gy0_gdbh'],
                 '印件及工序' => $value['Gy0_yjno'],
+                '工序' => $value['Gy0_gxh'],
                 '工序名称' => $value['sczl_gxmc'],
                 '联数' => $value['Gy0_ls'],
                 '基础损耗' => $value['Gy0_Rate0'] * $value['Gy0_ls'],
@@ -1570,6 +1593,42 @@ class OrderSuperLoss extends Api
             return $result;
         }
     }
+
+
+    //按月循环计算超节损,存入数据库
+//    public function ComputeOrderLoss()
+//    {
+//        if ($this->request->isGet() === false){
+//            $this->error('请求错误');
+//        }
+//        $param = $this->request->param();
+//        if (empty($param)){
+//            $this->error('参数错误');
+//        }
+//        $where = [
+//            'a.jjcp_sj'=>['like',$param['mouth'].'%'],
+//            'a.jjcp_smb' => ['like','末'.'%'],
+//            'b.质量考核' => 0,
+//        ];
+//        $list = \db('成品入仓')
+//            ->alias('a')
+//            ->join('工单_印件资料 b','a.jjcp_gdbh = b.Yj_Gdbh AND a.jjcp_yjno = b.yj_Yjno')
+//            ->join('物料_收发记录 c', 'a.jjcp_gdbh = c.st_gdbh AND a.jjcp_cpdh = c.cpdh')
+//            ->where($where)
+//            ->where(function ($query) {
+//                $query->where('c.仓库编号', '101')
+//                    ->whereOr('c.仓库编号', 'Y101');
+//            })
+//            ->field('a.jjcp_gdbh,a.jjcp_yjno')
+//            ->select();
+//        foreach ($list as $key=>$value){
+//            $result = $this->OneOrderSuperLoss($value['jjcp_gdbh'],$value['jjcp_yjno']);
+//            if (!empty($result)){
+//                $sql = \db('工单_质量考核汇总')->fetchSql(true)->insertAll($result);
+//                \db()->query($sql);
+//            }
+//        }
+//    }
 }
 
 

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

@@ -618,6 +618,7 @@ class WorkOrder extends Api
             $oldPrintData[$k]['Yj_Gdbh']  = $oldWorkOrder;
             $oldPrintData[$k]['Sys_id'] = '';
             $oldPrintData[$k]['Uniqid'] = $lastUniqId +$k +1;
+            $oldPrintData[$k]['质量考核'] = 1;
         }
         if (\db('工单_印件资料')->where('Yj_Gdbh',$oldWorkOrder)->find()){
             \db('工单_印件资料')->where('Yj_Gdbh',$oldWorkOrder)->delete();