qiuenguang 1 год назад
Родитель
Сommit
570e7bc3a2

+ 74 - 90
application/api/controller/Facility.php

@@ -232,56 +232,44 @@ class Facility extends Api
         if (empty($machine)){
             $this->error('参数错误');
         }
-//        $lastUniqid = Db::table('设备_产量计酬')->field('UniqId')->order('UniqId desc')->find();
-//        $startUniqid = $lastUniqid['UniqId']-10000;
-//        halt($lastUniqid);
-        $workOrder = Db::table('设备_产量计酬')->where('sczl_jtbh',$machine)->field('sczl_gdbh')->order('UniqId desc')->find();
-
-        if (empty($workOrder)){
-            $this->error('未找到正在生产工单');
-        }
-        $where = [
-            'Gy0_sbbh' => $machine,
-            'Gy0_gdbh' => $workOrder['sczl_gdbh']
-        ];
-        $list = Db::table('工单_工艺资料')->where($where)->find();
+        $sql = "SELECT
+                rtrim(b.Gy0_gdbh) AS 工单编号,
+                rtrim(b.Gy0_yjno) AS 印件号,
+                rtrim(b.Gy0_gxh) AS gxh,
+                rtrim(b.Gy0_gxmc) AS gxmc,
+                rtrim(b.Add_gxmc) AS add_gxmc,
+                RTRIM(a.Gd_cpmc) AS 产品名称
+            FROM
+                `工单_基本资料` AS a
+            JOIN `工单_工艺资料` AS b ON a.Gd_gdbh = b.Gy0_gdbh
+            JOIN `产品_基本资料` AS c ON a.`成品代号` = c.`产品编号`
+            JOIN `工单_印件资料` AS d ON a.Gd_gdbh = d.Yj_Gdbh
+            LEFT JOIN `设备_产量计酬` AS e ON e.sczl_gdbh = a.Gd_gdbh
+            AND e.sczl_jtbh = b.Gy0_sbbh
+            WHERE
+                a.gd_statu = '2-生产中'
+                AND a.`行号` = '1'
+                AND b.Gy0_sbbh = '{$machine}'
+                AND c.`状态` = ''
+                AND b.PD_WG = '1900-01-01 00:00:00'
+                AND b.Gy0_sj1 <> '1900-01-01 00:00:00'
+            GROUP BY
+                a.Gd_gdbh
+            ORDER BY
+                b.Gy0_sj1
+            LIMIT 1";
+        $list = Db::query($sql);
         if (empty($list)){
-            $this->error('未找到正在生产工单');
+            $this->error('未找到产工单');
         }
-        $facilityWhere = [
-            'sczl_jtbh'=>$machine,
-            'sczl_gdbh'=>$list['Gy0_gdbh']
-        ];
-        $facilityField = 'sczl_bh1,sczl_bh2,sczl_bh3,sczl_bh4,sczl_bh5,sczl_bh6,sczl_bh7,sczl_bh8,sczl_bh9,sczl_bh10';
-        $Ctaff = Db::table('设备_产量计酬')->where($facilityWhere)->field($facilityField)->order('UniqId desc')->find();
-        $data = [];
-        foreach ($Ctaff as $key=>$value){
-            if (!empty($value)){
-                $staffName = Db::table('人事_基本资料')
-                    ->where('员工编号',$value)
-                    ->field('员工姓名,员工编号')
-                    ->find();
-                $data[$key] = [
-                    '员工编号' => rtrim($staffName['员工编号']),
-                    '员工姓名' => rtrim($staffName['员工姓名']),
-                ];
+        foreach ($list as $key=>$value){
+            if ($value['gxh']<10){
+                $list[$key]['gxh'] = '0'.$value['gxh'];
             }
+            $list[$key]['工序名称'] = $list[$key]['gxh'].'-'.$value['gxmc'].'【'.$value['add_gxmc'].'】';
+            unset($list[$key]['gxh'],$list[$key]['gxmc'],$list[$key]['add_gxmc']);
         }
-        if ($list['Gy0_yjno']<10){
-            $list['Gy0_yjno'] = '0'.$list['Gy0_yjno'];
-        }
-        if ($list['Gy0_gxh']<10){
-            $list['Gy0_gxh'] = '0'.$list['Gy0_gxh'];
-        }
-        $data['工单编号'] = rtrim($list['Gy0_gdbh']);
-        $data['印件编号'] = rtrim($list['Gy0_yjno']);
-        $data['工序名称'] = rtrim($list['Gy0_gxh']).'-'.rtrim($list['Gy0_gxmc']).'【'.rtrim($list['Add_gxmc']).'】';
-        $data['产品名称'] = Db::table('工单_基本资料')
-            ->where('Gd_gdbh',rtrim($list['Gy0_gdbh']))
-            ->field('rtrim(Gd_cpmc) as 产品名称')
-            ->find()['产品名称'];
-        $data['班组'] = Db::table('设备_产量计酬')->where($facilityWhere)->field('rtrim(sczl_bzdh) as bzdh')->order('UniqId desc')->find()['bzdh'];
-        $this->success('成功',$data);
+        $this->success('成功',$list);
     }
 
     /**
@@ -303,60 +291,56 @@ class Facility extends Api
         if (empty($machine)){
             $this->error('参数错误');
         }
-        $lastTechonUniqId = Db::table('工单_工艺资料')->field('UniqId')->order('UniqId desc')->find();
-        $startTechonUniqId = $lastTechonUniqId['UniqId']-10000;
-//        $lastYieldUniqId = Db::table('设备_产量计酬')->field('UniqId')->order('UniqId desc')->find();
-//        $startYieldUniqId = $lastYieldUniqId['UniqId']-100000;
-        $workOrder = Db::table('设备_产量计酬')
-            ->where('sczl_jtbh',$machine)
-            ->field('sczl_gdbh')
-//            ->where('UniqId','>',$startYieldUniqId)
-            ->order('UniqId desc')
-            ->find();
-        $startTime = Db::table('工单_工艺资料')
-            ->where('Gy0_gdbh',$workOrder['sczl_gdbh'])
-            ->where('Gy0_sbbh',$machine)
-            ->where('UniqId','>',$startTechonUniqId)
-            ->field('Gy0_sj1')
-            ->order('UniqId desc')
-            ->find();
-        $where = [
-//            'UniqId' => ['>',$startTechonUniqId],
-            'Gy0_sbbh' => $machine,
-            'Gy0_sj1' => ['>= time',$startTime['Gy0_sj1']],
-        ];
-        $field = 'rtrim(Gy0_gdbh) as gdbh,rtrim(质量要求) as 质量信息,rtrim(Gy0_yjno) as yjno,rtrim(Gy0_gxh) as gxh,rtrim(Gy0_gxmc) as gxmc,
-        rtrim(Add_gxmc) as add_gxmc,rtrim(Gy0_辅助工时) as 装版时数,rtrim(Gy0_小时产能) as 工序产能,rtrim(Gy0_生产工时) as 计划工时,
-        rtrim(Gy0_sj1) as sj1,rtrim(Gy0_sj2) as sj2,rtrim(工序备注) as 排产备注';
-        $orderList = Db::table('工单_工艺资料')
-            ->where($where)
-            ->where('Gy0_sj1','<','2099-01-01 00:00:00')
-            ->field($field)
-            ->order('UniqId desc')
-            ->select();
+        $sql = "SELECT
+                rtrim( b.Gy0_gdbh ) AS gdbh,
+                rtrim(b.质量要求) AS 质量信息,
+                rtrim( b.Gy0_yjno ) AS yjno,
+                rtrim( b.Gy0_gxh ) AS gxh,
+                rtrim( b.Gy0_gxmc ) AS gxmc,
+                rtrim( b.Add_gxmc ) AS add_gxmc,
+                rtrim( b.Gy0_辅助工时 ) AS 装版时数,
+                rtrim( b.Gy0_小时产能 ) AS 工序产能,
+                rtrim( b.Gy0_生产工时 ) AS 计划工时,
+                rtrim( b.Gy0_sj1 ) AS sj1,
+                rtrim( b.Gy0_sj2 ) AS sj2,
+                rtrim(b.工序备注) AS 排产备注,
+                RTRIM(d.yj_yjmc) AS 印件名称,
+                RTRIM(a.Gd_cpmc) AS 产品名称,
+                SUM(E.sczl_cl) AS 已完成,
+                rtrim(b.Gy0_计划接货数) AS 计划接货数,
+                RTRIM(b.Gy0_ls) AS ls 
+            FROM
+                `工单_基本资料` AS a
+                JOIN `工单_工艺资料` AS b ON a.Gd_gdbh = b.Gy0_gdbh
+                JOIN `产品_基本资料` AS c ON a.`成品代号` = c.`产品编号` 
+                JOIN `工单_印件资料` AS d ON a.Gd_gdbh = d.Yj_Gdbh
+                LEFT JOIN `设备_产量计酬` AS e ON e.sczl_gdbh = a.Gd_gdbh AND e.sczl_jtbh = b.Gy0_sbbh
+            WHERE
+                a.gd_statu = '2-生产中' 
+                AND a.`行号` = '1' 
+                AND b.Gy0_sbbh = '{$machine}' 
+                AND c.`状态` = '' 
+                AND b.PD_WG = '1900-01-01 00:00:00' 
+                AND b.Gy0_sj1 <> '1900-01-01 00:00:00'
+            GROUP BY a.Gd_gdbh
+            ORDER BY b.Gy0_sj1";
+        $orderList = Db::query($sql);
+        if (empty($orderList)){
+            $this->error('未找到排产工单');
+        }
         foreach ($orderList as $key=>$value){
             $orderList[$key]['工单编号|质量信息'] = $value['gdbh'].'|'.$value['质量信息'];
-            $name = Db::table('工单_印件资料')->where(['Yj_Gdbh'=>$value['gdbh'],'yj_Yjno'=>$value['yjno']])->field('yj_yjmc')->find();
             if ($value['yjno']<10){
                 $orderList[$key]['yjno'] = '0'.$value['yjno'];
             }
             if ($value['gxh']<10){
                 $orderList[$key]['gxh'] = '0'.$value['gxh'];
             }
-            $orderList[$key]['印件资料'] = $orderList[$key]['yjno'].'-'.rtrim($name['yj_yjmc']);
+            $orderList[$key]['印件资料'] = $orderList[$key]['yjno'].'-'.$value['印件名称'];
             $orderList[$key]['工序名称'] = $orderList[$key]['gxh'].'-'.$value['gxmc'].'【'.$value['add_gxmc'].'】';
-            $scheduled = Db::table('工单_基本资料')->where('Gd_gdbh',$value['gdbh'])->field('rtrim(计划投料) as 计划产量')->find();
-            $finished = Db::table('设备_产量计酬')
-                ->where('sczl_gdbh',$value['gdbh'])
-                ->where('sczl_jtbh',$machine)
-//                ->where('UniqId','>',$startYieldUniqId)
-                ->order('UniqId desc')
-                ->field('SUM(sczl_cl) as cl')
-                ->select();
-            $orderList[$key]['计划产量/已完成'] = $scheduled['计划产量'].'/'.$finished[0]['cl']=null?'':(int)$finished[0]['cl'];
+            $orderList[$key]['计划产量/已完成'] = (int)($value['计划接货数']/$value['ls']).'/'.$value['已完成']=null?'':(int)$value['已完成'];
             $orderList[$key]['计划生产时段'] =substr($value['sj1'],5,5).' '.substr($value['sj1'],11,5).'<-->'.substr($value['sj2'],5,5).' '.substr($value['sj2'],11,5);
-            $orderList[$key]['产品名称'] = rtrim($name['yj_yjmc']);
-            unset($orderList[$key]['gdbh'],$orderList[$key]['质量信息'],$orderList[$key]['yjno'],$orderList[$key]['gxh'],$orderList[$key]['gxmc'],$orderList[$key]['add_gxmc'],$orderList[$key]['sj1'],$orderList[$key]['sj2']);
+            unset($orderList[$key]['gdbh'],$orderList[$key]['质量信息'],$orderList[$key]['yjno'],$orderList[$key]['gxh'],$orderList[$key]['gxmc'],$orderList[$key]['add_gxmc'],$orderList[$key]['sj1'],$orderList[$key]['sj2'],$orderList[$key]['计划接货数'],$orderList[$key]['已完成'],$orderList[$key]['印件名称'],$orderList[$key]['ls']);
         }
         $this->success('成功',$orderList);
     }

+ 60 - 20
application/api/controller/Manufacture.php

@@ -74,7 +74,7 @@ class Manufacture extends Api
         rtrim(接单日期) as 接单日期,rtrim(交货日期) as 交货日期,rtrim(订单数量) as 订单数量,rtrim(计量单位) as 计量单位,rtrim(Gd_khmc) as 客户名称,
         rtrim(Gd_客户代号) as 客户编号,rtrim(Gd_desc) as 备注,rtrim(客户料号) as 客户料号,rtrim(Sys_id) as 创建用户,rtrim(Sys_rq) as 创建时间,
         rtrim(Mod_rq) as 修改时间,rtrim(Uniqid) as UNIQID,rtrim(投料率) as 投料率,rtrim(销售订单号) as 销售订单号';
-        $list = Db::table('工单_基本资料')->where($where)->field($field)->limit(1000)->order('Uniqid desc')->select();
+        $list = Db::table('工单_基本资料')->where($where)->field($field)->limit(500)->order('Uniqid desc')->select();
         if (empty($list)){
             $this->error('失败');
         }
@@ -521,7 +521,7 @@ class Manufacture extends Api
             'Gy0_sbbh' => ['<>','']
         ];
         $workOrder = $where['Gy0_gdbh'];
-        $field = 'rtrim(Gy0_yjno) as yjno,rtrim(Gy0_gxh) as gxh,rtrim(Gy0_gxmc) as gxmc,rtrim(Gy0_sbbh) as 设备代号,rtrim(Gy0_计划接货数) as 计划接货数,rtrim(Gy0_ls) as ls,rtrim(PD_WG) as 完工时间';
+        $field = 'rtrim(Gy0_yjno) as yjno,rtrim(Gy0_gxh) as gxh,rtrim(Gy0_gxmc) as gxmc,rtrim(Gy0_sbbh) as 设备代号,rtrim(Gy0_计划接货数) as 计划接货数,rtrim(Gy0_ls) as ls,rtrim(PD_WG) as 完工时间,rtrim(UniqId) as UniqId';
         $list = Db::table('工单_工艺资料')->where($where)->field($field)->order('Gy0_gxh')->select();
         if (empty($list)){
             $this->error('未找到该工单工艺资料');
@@ -553,12 +553,45 @@ class Manufacture extends Api
         $this->success('成功',$list);
     }
 
-    //工序状态更正->工序状态编辑
+
+    /**
+     * 工序状态更正->工序状态编辑
+     * @ApiMethod (POST)
+     * @param  void
+     * @return void
+     * @throws \think\Exception
+     * @throws \think\exception\PDOException
+     */
     public function ProcessStatusCorrectionEdit()
     {
         if (Request::instance()->isPost() === false){
             $this->error('请求错误');
         }
+        $param = Request::instance()->post();
+        if (empty($param)){
+            $this->error('参数错误');
+        }
+        $i = 0;
+        foreach ($param as $key=>$value){
+            if ($value['PD_WG'] === null || $value['PD_WG'] === ''){
+                $endTime = '1900-01-01 00:00:00';
+            }else{
+                $endTime = $value['PD_WG'];
+            }
+            $sql = Db::table('工单_工艺资料')
+                ->where('UniqId',$value['UniqId'])
+                ->fetchSql(true)
+                ->update(['PD_WG'=>$endTime]);
+            $res = Db::query($sql);
+            if ($res !== false){
+                $i++;
+            }
+        }
+        if ($i !== 0){
+            $this->success('成功');
+        }else{
+            $this->error('失败');
+        }
 
     }
 
@@ -617,7 +650,7 @@ class Manufacture extends Api
         $filed = 'rtrim(Gy0_gdbh) as 工单编号,rtrim(Gy0_计划接货数) as 计划接货数,rtrim(Gy0_小时产能) as 小时产能,
         rtrim(Gy0_生产工时) as 生产工时,rtrim(Gy0_辅助工时) as 辅助工时,rtrim(Gy0_班次安排) as 班次安排,rtrim(工序备注) as 排单备注,
         rtrim(Gy0_最早开工时间) as 最早开工时间,rtrim(Gy0_sj1) as 计划开工时间,rtrim(Gy0_sj2) as 计划完工时间,rtrim(Gy0_yjno) as yjno,
-        rtrim(Gy0_gxh) as gxh,rtrim(Gy0_gxmc) as gxmc,rtrim(Gy0_ls) as ls';
+        rtrim(Gy0_gxh) as gxh,rtrim(Gy0_gxmc) as gxmc,rtrim(Gy0_ls) as ls,rtrim(UniqId) as UniqId';
         $list = Db::table('工单_工艺资料')->where($where)->field($filed)->cache(true)->select();
         if (empty($list)){
             $this->error('未找到该机台制程中产品');
@@ -665,22 +698,29 @@ class Manufacture extends Api
         if (empty($param)){
             $this->error('参数错误');
         }
-        $data = [
-            'Gy0_小时产能' => $param['capacity'],
-            'Gy0_生产工时' => $param['ProductionHours'],
-            'Gy0_辅助工时' => $param['AuxiliaryHours'],
-            'Gy0_班次安排' => $param['shift'],
-            '工序备注' => $param['remark'],
-            'Gy0_最早开工时间' => $param['start']=''?'1900-01-01 00:00:00':$param['start'],
-            'Gy0_sj1' => date('Y-m-d H:i:s',strtotime($param['projectTime'])),
-            'Gy0_sj2' => date('Y-m-d HY-m-d',strtotime($param['projectTime'])+(ceil($param['ProductionHours'])+ceil($param['AuxiliaryHours']))*3600),
-        ];
-        $sql = Db::table('工单_工艺资料')
-            ->where(['Gy0_gdbh'=>$param['workOrder'],'Gy0_sbbh'=>$param['machine']])
-            ->fetchSql(true)
-            ->update($data);
-        $res = Db::query($sql);
-        if ($res !== false){
+        $i = 0;
+        foreach ($param as $key=>$value){
+            $data = [
+                'Gy0_小时产能' => $value['capacity'],
+                'Gy0_生产工时' => $value['ProductionHours'],
+                'Gy0_辅助工时' => $value['AuxiliaryHours'],
+                'Gy0_班次安排' => $value['shift'],
+                '工序备注' => $value['remark'],
+                'Gy0_最早开工时间' => $value['start'] === ''?'1900-01-01 00:00:00':date('Y-m-d H:i:s',strtotime($value['start'])),
+                'Gy0_sj1' => date('Y-m-d H:i:s',strtotime($value['projectTime'])),
+                'Gy0_sj2' => date('Y-m-d HY-m-d',strtotime(($value['projectTime'])+(ceil($value['ProductionHours'])+ceil($value['AuxiliaryHours']))*3600)),
+            ];
+            halt($data);
+            $sql = Db::table('工单_工艺资料')
+                ->where('UniqId',$value['UniqId'])
+                ->fetchSql(true)
+                ->update($data);
+            $res = Db::query($sql);
+            if ($res !== false){
+                $i++;
+            }
+        }
+        if ($i !== 0){
             $this->success('成功');
         }else{
             $this->error('失败');

+ 15 - 15
application/api/controller/WorkOrder.php

@@ -214,7 +214,6 @@ class WorkOrder extends Api
         $list = Db::table('工单_工艺资料')
             ->where('Gy0_gdbh',$Gd_gdbh)
             ->select();
-        $Gd_cpdh = Db::table('工单_基本资料')->where('Gd_gdbh',$Gd_gdbh)->field('Gd_cpdh')->find();
         $data = [];
         if ($list){
             foreach ($list as $key=>$value){
@@ -224,24 +223,23 @@ class WorkOrder extends Api
                 if ($value['Gy0_gxh']<10){
                     $value['Gy0_gxh'] = '0'.$value['Gy0_gxh'];
                 }
-                $where = [
-                    'Gy0_cpdh' => $Gd_cpdh['Gd_cpdh'],
-                    'Gy0_yjno' => $value['Gy0_yjno'],
-                    'Gy0_gxh' => $value['Gy0_gxh'],
-                ];
-                $product = Db::table('产品_工艺资料')->where($where)->field('工价系数,损耗系数')->find();
+                if ($value['Gy0_计划损耗'] !== 0){
+                    $number = round(($value['Gy0_计划损耗']/(int)($value['Gy0_计划接货数']/$value['Gy0_ls'])),2).'%';
+                }else{
+                    $number = 0;
+                }
                 $data[$key] = [
                     '重点工序' => rtrim($value['重点工序']),
                     '印件-工序' => rtrim($value['Gy0_yjno']).'-'.rtrim($value['Gy0_gxh']),
-                    '备选工序' => '',
+                    '备选工序' => rtrim($value['备选工序']),
                     '工序名称' => rtrim($value['Gy0_gxmc']).'【'.rtrim($value['Add_gxmc']).'】',
-                    '计划产量' => rtrim($value['Gy0_计划接货数']),
+                    '计划产量' => (int)($value['Gy0_计划接货数']/$value['Gy0_ls']),
                     '基础损耗' => rtrim($value['Gy0_Rate0']),
                     '损耗率' => rtrim($value['Gy0_Rate1']),
-                    '报废定额' => '',
-                    '允损比例' => '',
-                    '难度系数' => isset($product['工价系数'])?rtrim($product['工价系数']):'',
-                    '损耗系数' => isset($product['损耗系数'])?rtrim($product['损耗系数']):'',
+                    '报废定额' => rtrim($value['Gy0_计划损耗']),
+                    '允损比例' => $number,
+                    '难度系数' => isset($value['工价系数'])?rtrim($value['工价系数']):'',
+                    '损耗系数' => isset($value['损耗系数'])?rtrim($value['损耗系数']):'',
                     '人工检_次品板' => (int)$value['人工检_次品板']=0?'':$value['人工检_次品板'],
                     '人工检_废检' => (int)$value['人工检_废检']=0?'':$value['人工检_废检'],
                     '机检_正品板' => (int)$value['机检_正品板']=0?'':$value['机检_正品板'],
@@ -906,6 +904,7 @@ class WorkOrder extends Api
         if (empty($param) || isset($param['Uniqid']) === false){
             $this->error('参数错误');
         }
+//        halt($param);
         $data = [
             'yj_Yjno' => isset($param['yjno'])?$param['yjno']:'',
             'yj_Yjdh' => isset($param['yjdh'])?$param['yjdh']:'',
@@ -930,6 +929,7 @@ class WorkOrder extends Api
             'yj_ls' => isset($param['ls'])?$param['ls']:'',
             'yj_desc' => isset($param['desc'])?$param['desc']:'',
         ];
+        halt($data);
         $sql = Db::table('工单_印件资料')->where('Uniqid',$param['Uniqid'])->fetchSql(true)->update($data);
         $res = Db::query($sql);
         if ($res !== false){
@@ -965,8 +965,8 @@ class WorkOrder extends Api
             '重点工序' => isset($param['zdgx'])?$param['zdgx']:'',
             '备选工序' => isset($param['bxgx'])?$param['bxgx']:'',
             'Gy0_sbbh' => isset($param['sbbh'])?$param['sbbh']:'',
-            'Gy0_Rate0' => $rate['rate0'],
-            'Gy0_Rate1' => $rate['rate1'],
+            'Gy0_Rate0' => isset($rate['rate0'])?$rate['rate0']:'',
+            'Gy0_Rate1' => isset($rate['rate1'])?$rate['rate1']:'',
             'Gy0_shdh' => isset($param['shdh'])?$param['shdh']:'',
             '损耗系数' => isset($param['shxs'])?$param['shxs']:'',
             '工价系数' => isset($param['ndxs'])?$param['ndxs']:'',