Procházet zdrojové kódy

修改工单投料优化

qiuenguang před 11 měsíci
rodič
revize
e80aede98d
1 změnil soubory, kde provedl 18 přidání a 18 odebrání
  1. 18 18
      application/api/controller/OrderSuperLoss.php

+ 18 - 18
application/api/controller/OrderSuperLoss.php

@@ -950,7 +950,8 @@ class OrderSuperLoss extends Api
         }
         $field = "a.Gd_gdbh,rtrim(c.yj_Yjdh) as yj_yjdh,c.yj_Yjno, c.yj_ks,c.yj_ls,rtrim(c.yj_zzdh) as yj_zzdh,
                   rtrim(b.BOM_物料名称) as BOM_物料名称,rtrim(c.yj_tlgg) as yj_tlgg,rtrim(d.st_dw) as BOM_投料单位,
-                  a.订单数量,c.yj_平张投料, b.BOM_实际用量,d.st_sl as 实际投料,d.st_oldSl as 原投料,a.投料确认,d.Uniqid as UniqId";
+                  a.订单数量,c.yj_平张投料, b.BOM_实际用量,d.st_sl as 实际投料,d.st_oldSl as 原投料,a.投料确认,
+                  d.Uniqid as UniqId,d.mod_number";
         $data =db('工单_基本资料')->alias('a')
             ->join('工单_印件资料 c','a.Gd_gdbh = c.Yj_Gdbh ','left')
             ->join('工单_bom资料 b','c.Yj_Gdbh = b.BOM_工单编号 AND c.yj_zzdh = b.BOM_物料编码','left')
@@ -981,6 +982,9 @@ class OrderSuperLoss extends Api
             if (empty($value['原投料'])){
                 $data[$key]['原投料'] = $value['实际投料'];
             }
+            if ($value['mod_number'] === 0){
+                $data[$key]['实际投料'] = '';
+            }
         }
         $this->success('请求成功',$data);
     }
@@ -1001,11 +1005,13 @@ class OrderSuperLoss extends Api
         $i = 0;
         $list = \db('物料_收发记录')->where('Uniqid',$params['0']['UniqId'])->find();
         foreach ($params as $key=>$value){
-
+            $mod_num = \db('物料_收发记录')
+                ->where('Uniqid',$value['UniqId'])
+                ->value('mod_number');
             $tl_sql = \db('物料_收发记录')
                 ->where('Uniqid',$value['UniqId'])
                 ->fetchSql(true)
-                ->update(['st_sl'=>$value['number'],'st_oldSl'=>$value['old_number']]);
+                ->update(['st_sl'=>$value['number'],'st_oldSl'=>$value['old_number'],'mod_number'=>$mod_num+1]);
             $tlRes = Db::query($tl_sql);
             if (!$tlRes){
                 $i++;
@@ -1029,12 +1035,6 @@ class OrderSuperLoss extends Api
         $yj_sql =db('工单_印件资料')->where('Yj_Gdbh',$list['st_gdbh'])->where('yj_Yjdh',$list['cpdh'])->fetchSql(true)->update($data);
         $yjRes = Db::query($yj_sql);
         $yjno = db('工单_印件资料')->where('Yj_Gdbh',$list['st_gdbh'])->where('yj_Yjdh',$list['cpdh'])->column('yj_Yjno')[0];
-//        if ((int)$list['yj_ls'] !== 0 && (int)$list['yj_ks'] !== 0){
-//            $tl_num = number_format(((float)$value['number']*10000)/((int)$list['yj_ks']*(int)$list['yj_ls']),4);
-//        }else{
-//            $tl_num = (float)$value['number']*10000;
-//        }
-//        $tl_num = (float)str_replace(',', '', $tl_num);
 
         /**
          * 重新计算工单超节损数据
@@ -1273,7 +1273,7 @@ class OrderSuperLoss extends Api
         //查询工单资料、投料数据
         $field = 'a.Gd_gdbh,rtrim(a.成品代号) as 成品代号,rtrim(a.成品名称) as 成品名称,
                   rtrim(a.销售订单号) as 销售订单号,a.订单数量,c.yj_ls as ls,c.yj_ks as ks,SUM(b.st_sl) as 投料,
-                  b.st_dw,c.yj_zzmc,c.yj_tlgg';
+                  b.st_dw,c.yj_zzmc,c.yj_tlgg,SUM(b.mod_number) as mod_num';
         $data = db('工单_基本资料')
             ->alias('a')
             ->join('物料_收发记录 b', 'a.Gd_gdbh = b.st_gdbh AND a.Gd_cpdh = b.cpdh')
@@ -1289,14 +1289,14 @@ class OrderSuperLoss extends Api
         if ($data['投料'] == null){
             return false;
         }
-//        if (!empty($data['yj_tlgg'])){
-//            $number1 = (int)substr($data['yj_tlgg'],0,3);
-//            $number2 = (int)substr($data['yj_tlgg'],4,3);
-//            preg_match('/(\d+)g/',$data['yj_zzmc'], $matches);
-//            if ($data['st_dw'] === '吨'){
-//                $data['投料'] = round(($data['投料']*1000*1000)/$matches[1]/($number1*$number2)*1000000);
-//            }
-//        }
+        if (!empty($data['yj_tlgg'])){
+            $number1 = (int)substr($data['yj_tlgg'],0,3);
+            $number2 = (int)substr($data['yj_tlgg'],4,3);
+            preg_match('/(\d+)g/',$data['yj_zzmc'], $matches);
+            if ($data['st_dw'] === '吨' && $data['mod_num'] == 0){
+                $data['投料'] = round(($data['投料']*1000*1000)/$matches[1]/($number1*$number2)*1000000);
+            }
+        }
 
         //将开数、联数为0重新赋值
         if ($data['ls'] == 0) {