Przeglądaj źródła

超节损显示和美浓物料领用记录同步接口

qiuenguang 1 rok temu
rodzic
commit
042420e8ee

+ 5 - 4
application/api/controller/OrderSuperLoss.php

@@ -170,6 +170,7 @@ class OrderSuperLoss extends Api
                 $sql= db('物料_收发记录')
                     ->alias('d')
                     ->where('d.仓库编号', 'Y101')
+                    ->whereOr('d.仓库编号', '101')
                     ->group('d.st_gdbh, d.cpdh')
                     ->field('d.st_gdbh, d.cpdh,d.st_rq, SUM(d.st_sl) as 实际投料,d.仓库编号')
                     ->buildSql();
@@ -178,7 +179,9 @@ class OrderSuperLoss extends Api
                     ->join('工单_印件资料 c', 'a.jjcp_gdbh = c.Yj_Gdbh AND a.jjcp_cpdh = c.yj_Yjdh', 'left')
                     ->join([$sql => 'd'], 'a.jjcp_gdbh = d.st_gdbh AND a.jjcp_cpdh = d.cpdh', 'left')
                     ->where($where)
-                    ->where('d.仓库编号','Y101')
+                    ->where(function($query) {
+                        $query->where('d.仓库编号', '101')
+                            ->whereOr('d.仓库编号', 'Y101');})
                     ->whereRaw('LEFT(a.成品编码, CASE WHEN a.成品编码 REGEXP "[a-zA-Z]" THEN 5 ELSE 4 END) = ?', [$params['code']])
                     ->field('a.jjcp_gdbh as Gd_gdbh, a.jjcp_yjno, rtrim(a.jjcp_cpdh) as 成品编码, rtrim(a.jjcp_cpmc) as 成品名称,
              a.jjcp_sj, a.jjcp_smb, b.计量单位, b.Gd_khdh, d.实际投料, c.yj_Yjno, c.yj_ls, c.yj_ks, c.质量考核')
@@ -187,7 +190,6 @@ class OrderSuperLoss extends Api
                     ->page($pages)
                     ->limit($limit)
                     ->select();
-
                 $total = db('成品入仓')->alias('a')
                     ->join('工单_基本资料 b', 'a.jjcp_gdbh = b.Gd_gdbh','left')
                     ->join('工单_印件资料 c', 'a.jjcp_gdbh = c.Yj_Gdbh','left')
@@ -1183,8 +1185,6 @@ class OrderSuperLoss extends Api
         }
         $date = $params['date'];
         $workOrderData = \db('成品入仓')
-//            ->where('jjcp_gdbh','Y2406020')
-//            ->where('jjcp_yjno','4')
             ->where('jjcp_sj','like',$date.'%')
             ->group('jjcp_gdbh,jjcp_yjno')
             ->order('UniqId desc')
@@ -1461,6 +1461,7 @@ class OrderSuperLoss extends Api
                 }
             }
         }
+        halt($datanumber);
         $res = [
             '印刷车间' => [
                 'A班'=>[],

+ 207 - 117
application/api/controller/Synchronization.php

@@ -999,124 +999,124 @@ class Synchronization extends Api
      * @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);
-        }
-        //查询翌星数据库美浓设备编号
-        $machineList = \db('设备_基本资料')
-            ->where('mn_设备编号', '<>', '')
-//            ->where('sys_sbID', '<>', '')
-            ->column('mn_设备编号');
-//        halt($machineList);
-//        $machineList = ['JP17#','MQ02#','PM04#','SY03#','TJ03#','TJ05#','TJ07#'];
-        //链接美浓mes数据库
-        $db5 = \db()->connect(config('database.db5'));
-        //获取缓存中最后的id
-        $lastId = cache('MnLastId');
-        //确定美浓设备计酬的查询范围
-        if ($lastId === false) {
-            $where = [
-                'sczl_rq' => ['between', ['2024-09-01 00:00:00', '2024-09-30 00:00:00']],
-                'sczl_jtbh' => ['in', $machineList]
-            ];
-        } else {
-            $where = [
-                'sczl_rq' => ['between', ['2024-09-01 00:00:00', '2024-09-30 00:00:00']],
-                'sczl_jtbh' => ['in', $machineList],
-                'UniqId' => ['>', $lastId]
-            ];
-        }
-        //查询美浓数据库时间范围内的产量上报记录
-        $productData = $db5->name('设备_产量计酬')
-            ->where($where)
-            ->limit(5000)
-            ->order('UniqId')
-            ->select();
-        if (!empty($productData)) {
-            cache('MnLastId', end($productData)['UniqId']);
-        }
-        //获取美浓和翌星设备编号对照表
-        $machineData = \db('设备_基本资料')
-            ->alias('a')
-            ->join('dic_lzde b','a.设备编号 = b.适用机型')
-            ->where('a.mn_设备编号', '<>', '')
-//            ->where('sys_sbID', '<>', '')
-//            ->field('rtrim(a.设备编号) as 设备编号,rtrim(a.mn_设备编号) as 美浓设备编号,b.sys_bh')
-            ->column('rtrim(a.设备编号) as 设备编号,b.sys_bh','a.mn_设备编号');
-//        halt($machineData);
-        //获取员工资料
-        $employee = \db('人事_基本资料')
-            ->where('mn_员工编号', '<>', '')
-            ->column('rtrim(mn_员工编号) as 美浓员工编号');
-        //循环判断机台、员工编号
-        $j = 0;
-        $data = [];
-        foreach ($productData as $key => $value) {
-            //判断机台编号
-
-                if (array_key_exists($value['sczl_jtbh'],$machineData)) {
-
-                    if (substr($productData[$key]['sczl_jtbh'],0,2) === 'JP'){
-                        if (substr((int)$productData[$key]['sczl_dedh'],-1,1) === '1'){
-                            $productData[$key]['sczl_dedh'] = $machineData[$productData[$key]['sczl_jtbh']]['sys_bh'].'001';
-                        }else{
-                            $productData[$key]['sczl_dedh'] = $machineData[$productData[$key]['sczl_jtbh']]['sys_bh'].'002';
-                        }
-                    }else{
-                        $productData[$key]['sczl_dedh'] = $machineData[$productData[$key]['sczl_jtbh']]['sys_bh'];
-                    }
-                    $productData[$key]['sczl_jtbh'] = $machineData[$productData[$key]['sczl_jtbh']]['设备编号'];
-                }
-                array_push($data, $productData[$key]);
-
-        }
-        if (empty($data)) {
-            $this->error('未找到新的生产数据');
-        }
-        foreach ($data as $key => $value) {
-            $name = [];
-            //判断员工编号,如果不存在写入日志文件
-            for ($i = 1; $i <= 10; $i++) {
-                if (in_array($data[$key]['sczl_bh' . $i], $employee)) {
-                    $data[$key]['sczl_bh' . $i] = \db('人事_基本资料')
-                        ->where('mn_员工编号', $data[$key]['sczl_bh' . $i])
-                        ->value('员工编号');
-                } else {
-                    array_push($name, $value['sczl_bh' . $i]);
-                }
-
-            }
-            unset($data[$key]['UniqId']);
-            $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'];
+//    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);
+//        }
+//        //查询翌星数据库美浓设备编号
+//        $machineList = \db('设备_基本资料')
+//            ->where('mn_设备编号', '<>', '')
+////            ->where('sys_sbID', '<>', '')
+//            ->column('mn_设备编号');
+////        halt($machineList);
+////        $machineList = ['JP17#','MQ02#','PM04#','SY03#','TJ03#','TJ05#','TJ07#'];
+//        //链接美浓mes数据库
+//        $db5 = \db()->connect(config('database.db5'));
+//        //获取缓存中最后的id
+//        $lastId = cache('MnLastId');
+//        //确定美浓设备计酬的查询范围
+//        if ($lastId === false) {
+//            $where = [
+//                'sczl_rq' => ['between', ['2024-09-01 00:00:00', '2024-09-30 00:00:00']],
+//                'sczl_jtbh' => ['in', $machineList]
+//            ];
+//        } else {
+//            $where = [
+//                'sczl_rq' => ['between', ['2024-09-01 00:00:00', '2024-09-30 00:00:00']],
+//                'sczl_jtbh' => ['in', $machineList],
+//                'UniqId' => ['>', $lastId]
+//            ];
+//        }
+//        //查询美浓数据库时间范围内的产量上报记录
+//        $productData = $db5->name('设备_产量计酬')
+//            ->where($where)
+//            ->limit(5000)
+//            ->order('UniqId')
+//            ->select();
+//        if (!empty($productData)) {
+//            cache('MnLastId', end($productData)['UniqId']);
+//        }
+//        //获取美浓和翌星设备编号对照表
+//        $machineData = \db('设备_基本资料')
+//            ->alias('a')
+//            ->join('dic_lzde b','a.设备编号 = b.适用机型')
+//            ->where('a.mn_设备编号', '<>', '')
+////            ->where('sys_sbID', '<>', '')
+////            ->field('rtrim(a.设备编号) as 设备编号,rtrim(a.mn_设备编号) as 美浓设备编号,b.sys_bh')
+//            ->column('rtrim(a.设备编号) as 设备编号,b.sys_bh','a.mn_设备编号');
+////        halt($machineData);
+//        //获取员工资料
+//        $employee = \db('人事_基本资料')
+//            ->where('mn_员工编号', '<>', '')
+//            ->column('rtrim(mn_员工编号) as 美浓员工编号');
+//        //循环判断机台、员工编号
+//        $j = 0;
+//        $data = [];
+//        foreach ($productData as $key => $value) {
+//            //判断机台编号
+//
+//                if (array_key_exists($value['sczl_jtbh'],$machineData)) {
+//
+//                    if (substr($productData[$key]['sczl_jtbh'],0,2) === 'JP'){
+//                        if (substr((int)$productData[$key]['sczl_dedh'],-1,1) === '1'){
+//                            $productData[$key]['sczl_dedh'] = $machineData[$productData[$key]['sczl_jtbh']]['sys_bh'].'001';
+//                        }else{
+//                            $productData[$key]['sczl_dedh'] = $machineData[$productData[$key]['sczl_jtbh']]['sys_bh'].'002';
+//                        }
+//                    }else{
+//                        $productData[$key]['sczl_dedh'] = $machineData[$productData[$key]['sczl_jtbh']]['sys_bh'];
+//                    }
+//                    $productData[$key]['sczl_jtbh'] = $machineData[$productData[$key]['sczl_jtbh']]['设备编号'];
+//                }
+//                array_push($data, $productData[$key]);
+//
+//        }
+//        if (empty($data)) {
+//            $this->error('未找到新的生产数据');
+//        }
+//        foreach ($data as $key => $value) {
+//            $name = [];
+//            //判断员工编号,如果不存在写入日志文件
+//            for ($i = 1; $i <= 10; $i++) {
+//                if (in_array($data[$key]['sczl_bh' . $i], $employee)) {
+//                    $data[$key]['sczl_bh' . $i] = \db('人事_基本资料')
+//                        ->where('mn_员工编号', $data[$key]['sczl_bh' . $i])
+//                        ->value('员工编号');
+//                } else {
+//                    array_push($name, $value['sczl_bh' . $i]);
+//                }
+//
 //            }
-//            $data[$key]['sczl_gdbh'] = $workcode;
-        }
-        //插入设备产量计酬数据
-//        $sql = \db('设备_产量计酬')->where('sczl_rq','between',['2024-09-01 00:00:00', '2024-09-30 00:00:00'])->delete();
-        $sql = \db('设备_产量计酬')->fetchSql(true)->insertAll($data);
-        $res = \db()->query($sql);
-        if ($res !== false) {
-            $this->success('同步成功');
-        } else {
-            $this->error('同步失败');
-        }
-    }
+//            unset($data[$key]['UniqId']);
+//            $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('设备_产量计酬')->where('sczl_rq','between',['2024-09-01 00:00:00', '2024-09-30 00:00:00'])->delete();
+//        $sql = \db('设备_产量计酬')->fetchSql(true)->insertAll($data);
+//        $res = \db()->query($sql);
+//        if ($res !== false) {
+//            $this->success('同步成功');
+//        } else {
+//            $this->error('同步失败');
+//        }
+//    }
 
 
     /**
@@ -1825,4 +1825,94 @@ class Synchronization extends Api
 //        }
 //    }
 
+    /**
+     * 美浓MES物料领用记录
+     * @return void
+     * @throws \think\Exception
+     * @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 MNReceiptRecordData()
+    {
+        if ($this->request->isGet() === false) {
+            $this->error('请求错误');
+        }
+        $db3 = \db()->connect(config('database.db7'));
+        $OrganizationalDataList = $db3->name('U8_07物料领用')
+            ->where('YX接收时间', null)
+            ->where('YX接收状态', null)
+            ->where('UniqId','>',80838718)
+            ->select();
+        if (empty($OrganizationalDataList)) {
+            $this->success('未找到新的物料领用记录');
+        }
+        $i = 0;
+        foreach ($OrganizationalDataList as $key => $value) {
+            $data = [
+                'st_rq' => $value['日期'],
+                'st_jylb' => $value['交易类别'],
+                'st_gdbh' => $value['工单编号'],
+                '采购单号' => $value['采购单号'],
+                '供方批次' => $value['供方批次'],
+                'st_wlbh' => $value['物料编号'],
+                'st_sl' => $value['领用数量'],
+                'st_dw' => $value['领用单位'],
+                '领用单价' => $value['领用单价'],
+                'st_desc' => $value['备注'],
+                '仓库编号' => $value['仓库编号'],
+                'st_dpt' => $value['采购单号'],
+                'st_jtbh' => $value['机台编号'],
+                'sys_id' => '[272/超级用户]',
+                'sys_rq' => date('Y-m-d H:i:s', time()),
+                'mod_rq' => '1900-01-01 00:00:00',
+                'U8UID' => $value['U8_UID'],
+                'cpdh' => $value['产品编码']
+            ];
+            $number = \db('物料_收发记录')
+                ->where('U8UID', $value['U8_UID'])
+                ->count();
+            if ($number === 0) {
+                $sql = \db('物料_收发记录')->fetchSql(true)->insert($data);
+                $res = \db()->query($sql);
+                if ($res === false) {
+                    $i++;
+                } else {
+                    $sqlString = $db3->name('U8_07物料领用')
+                        ->where('UniqId', $value['UniqId'])
+                        ->fetchSql(true)
+                        ->update([
+                            'YX接收时间' => date('Y-m-d H:i:s', time()),
+                            'YX接收状态' => '1'
+                        ]);
+                    $db3->execute($sqlString);
+                }
+            } else {
+                $sql = \db('物料_收发记录')
+                    ->fetchSql(true)
+                    ->where('U8UID', $value['U8_UID'])
+                    ->update($data);
+                $res = \db()->query($sql);
+                if ($res === false) {
+                    $i++;
+                } else {
+                    $sqlString = $db3->name('U8_07物料领用')
+                        ->where('UniqId', $value['UniqId'])
+                        ->fetchSql(true)
+                        ->update([
+                            'YX接收时间' => date('Y-m-d H:i:s', time()),
+                            'YX接收状态' => '1'
+                        ]);
+                    $db3->execute($sqlString);
+                }
+            }
+        }
+        if ($i !== 0) {
+            $this->error('物料领用记录同步失败');
+        } else {
+            $this->success('物料领用记录同步成功');
+        }
+    }
 }