|
|
@@ -3,6 +3,7 @@
|
|
|
namespace app\api\controller;
|
|
|
|
|
|
use app\common\controller\Api;
|
|
|
+use app\common\library\token\driver\Redis;
|
|
|
use think\Db;
|
|
|
use Overtrue\Pinyin;
|
|
|
|
|
|
@@ -998,98 +999,110 @@ 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','<>','')
|
|
|
-// ->field('mn_设备编号')
|
|
|
-// ->select();
|
|
|
-// $machine = [];
|
|
|
-// foreach ($machineList as $value){
|
|
|
-// array_push($machine,$value['mn_设备编号']);
|
|
|
-// }
|
|
|
-// $db5 = \db()->connect(config('database.db5'));
|
|
|
-// $where = [
|
|
|
-// 'sczl_rq' => ['>=','2024-05-01 00:00:00']
|
|
|
-// ];
|
|
|
-// $productData = $db5->name('设备_产量计酬')
|
|
|
-// ->where($where)
|
|
|
-// ->where('sczl_jtbh','in',$machine)
|
|
|
-// ->select();
|
|
|
-// //获取机台信息
|
|
|
-// $machineData = \db('设备_基本资料')
|
|
|
-// ->where('mn_设备编号','<>','')
|
|
|
-// ->where('sys_sbID','<>','')
|
|
|
-// ->field('rtrim(设备编号) as 设备编号,rtrim(mn_设备编号) as 美浓设备编号')
|
|
|
-// ->select();
|
|
|
-// //获取员工资料
|
|
|
-// $employeeData = \db('人事_基本资料')
|
|
|
-// ->where('mn_员工编号','<>','')
|
|
|
-// ->field('rtrim(mn_员工编号) as 美浓员工编号')
|
|
|
-// ->select();
|
|
|
-// $employee = array_column($employeeData,'美浓员工编号');
|
|
|
-// //循环判断机台、员工编号
|
|
|
-// $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++){
|
|
|
-// 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_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);
|
|
|
+ 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_设备编号');
|
|
|
+ //链接美浓mes数据库
|
|
|
+ $db5 = \db()->connect(config('database.db5'));
|
|
|
+ //获取缓存中最后的id
|
|
|
+ $lastId = cache('MnLastId');
|
|
|
+ //确定美浓设备计酬的查询范围
|
|
|
+ if ($lastId === false){
|
|
|
+ $where = [
|
|
|
+ 'sczl_rq' => ['>=','2024-11-01 00:00:00'],
|
|
|
+ 'sczl_jtbh' => ['in',$machineList]
|
|
|
+ ];
|
|
|
+ }else{
|
|
|
+ $where = [
|
|
|
+ 'sczl_rq' => ['>=','2024-11-01 00:00:00'],
|
|
|
+ 'sczl_jtbh' => ['in',$machineList],
|
|
|
+ 'UniqId' => ['>',$lastId]
|
|
|
+ ];
|
|
|
+ }
|
|
|
+ //查询美浓数据库时间范围内的产量上报记录
|
|
|
+ $productData = $db5->name('设备_产量计酬')
|
|
|
+ ->where($where)
|
|
|
+ ->limit(1000)
|
|
|
+ ->order('UniqId')
|
|
|
+ ->select();
|
|
|
+ if (!empty($productData)){
|
|
|
+ cache('MnLastId',end($productData)['UniqId']);
|
|
|
+ }
|
|
|
+ //获取美浓和翌星设备编号对照表
|
|
|
+ $machineData = \db('设备_基本资料')
|
|
|
+ ->where('mn_设备编号','<>','')
|
|
|
+ ->where('sys_sbID','<>','')
|
|
|
+ ->field('rtrim(设备编号) as 设备编号,rtrim(mn_设备编号) as 美浓设备编号')
|
|
|
+ ->select();
|
|
|
+ //获取员工资料
|
|
|
+ $employee = \db('人事_基本资料')
|
|
|
+ ->where('mn_员工编号','<>','')
|
|
|
+ ->column('rtrim(mn_员工编号) as 美浓员工编号');
|
|
|
+ //循环判断机台、员工编号
|
|
|
+ $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++){
|
|
|
+ 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_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'];
|
|
|
// }
|
|
|
-// 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;
|
|
|
-// }
|
|
|
-// //插入设备产量计酬数据
|
|
|
-// \db('设备_产量计酬')->delete(true);
|
|
|
-// $sql = \db('设备_产量计酬')->fetchSql(true)->insertAll($data);
|
|
|
-// $res = \db()->query($sql);
|
|
|
-// if ($res !== false){
|
|
|
-// $this->success('同步成功');
|
|
|
-// }else{
|
|
|
-// $this->error('同步失败');
|
|
|
-// }
|
|
|
-// }
|
|
|
+// $data[$key]['sczl_gdbh'] = $workcode;
|
|
|
+ }
|
|
|
+ //插入设备产量计酬数据
|
|
|
+ $sql = \db('设备_产量计酬')->fetchSql(true)->insertAll($data);
|
|
|
+ $res = \db()->query($sql);
|
|
|
+ if ($res !== false){
|
|
|
+ $this->success('同步成功');
|
|
|
+ }else{
|
|
|
+ $this->error('同步失败');
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
|
|
|
|