Browse Source

生产数据同步

qiuenguang 1 year ago
parent
commit
657e746acb
1 changed files with 93 additions and 0 deletions
  1. 93 0
      application/api/controller/Synchronization.php

+ 93 - 0
application/api/controller/Synchronization.php

@@ -966,4 +966,97 @@ class Synchronization extends Api
             $this->success('职位编码同步成功');
         }
     }
+
+    /**
+     * 设备产量计酬云中间表数据库同步
+     * @return void
+     * @throws \think\db\exception\BindParamException
+     * @throws \think\db\exception\DataNotFoundException
+     * @throws \think\db\exception\ModelNotFoundException
+     * @throws \think\exception\DbException
+     * @throws \think\exception\PDOException
+     */
+    public function ProductionData()
+    {
+        if ($this->request->isGet() === false){
+            $this->error('请求错误');
+        }
+        if(is_dir(ROOT_PATH.'public/'.date('Y-m-d',time())) == null)
+        {
+            mkdir(ROOT_PATH.'public/'.date('Y-m-d',time()),0777,true);
+        }
+        $lastID = \db('设备_产量计酬')->order('UniqId desc')->value('UniqId');
+        if (empty($lastID)){
+            $lastID = 0;
+        }
+        $db4 = \db()->connect(config('database.db4'));
+        $where = [
+            'sczl_rq'=>date('Y-m-d',time()),
+            'UniqId' =>['>',$lastID]
+        ];
+        $productData = $db4->name('设备_产量计酬')
+            ->where($where)
+            ->select();
+        //获取机台信息
+        $machineData = \db('设备_基本资料')
+            ->where('mn_设备编号','<>','')
+            ->field('rtrim(设备编号) as 设备编号,rtrim(mn_设备编号) as 美浓设备编号')
+            ->select();
+        //获取员工资料
+        $employeeData = \db('人事_基本资料')
+            ->where('mn_员工编号','<>','')
+            ->field('rtrim(员工编号) as 员工编号,rtrim(mn_员工编号) as 美浓员工编号')
+            ->select();
+        //循环判断机台、员工编号
+        $j = 0;
+        $data = [];
+        foreach ($productData as $key=>$value){
+            //判断机台编号
+            foreach ($machineData as $v){
+                if ($value['sczl_jtbh'] === $v['美浓设备编号']){
+                    $productData[$key]['sczl_jtbh'] = $v['设备编号'];
+                    array_push($data,$productData[$key]);
+                }
+            }
+        }
+        if (empty($data)){
+            $this->error('未找到新的生产数据');
+        }
+        foreach ($data as $key=>$value){
+            $name = [];
+            //判断员工编号,如果不存在写入日志文件
+            for($i=1;$i<=10;$i++){
+                foreach ($employeeData as $vv){
+                    if ($value['sczl_bh'.$i] === $vv['美浓员工编号']){
+                        $data[$key]['sczl_bh'.$i] = $vv['员工编号'];
+                    }else{
+                        array_push($name,$value['sczl_bh'.$i]);
+                    }
+                }
+            }
+            $name = array_unique($name);
+            $filename = ROOT_PATH.'public/'.date('Y-m-d',time()).'/'.$value['sczl_jtbh'].'日志文件.txt';
+            $handle = fopen($filename, 'w');
+            foreach ($name as $v){
+                fwrite($handle, $v);
+            }
+            fclose($handle);
+            //修改工单编号
+            if (preg_match("/[A-Za-z]/",$value['sczl_gdbh'])){
+                $workcode = $value['sczl_gdbh'];
+            }else{
+                $workcode = 'Y'.$value['sczl_gdbh'];
+            }
+            $data[$key]['sczl_gdbh'] = $workcode;
+        }
+        //插入设备产量计酬数据
+        $sql = \db('设备_产量计酬')->fetchSql(true)->insertAll($data);
+        $res = \db()->query($sql);
+        if ($res !== false){
+            $this->success('同步成功');
+        }else{
+            $this->error('同步失败');
+        }
+
+    }
 }