Browse Source

中间表数据同步

qiuenguang 1 year ago
parent
commit
8d6bf30c6c
2 changed files with 192 additions and 190 deletions
  1. 191 190
      application/api/controller/Synchronization.php
  2. 1 0
      application/api/controller/WorkOrder.php

+ 191 - 190
application/api/controller/Synchronization.php

@@ -22,25 +22,22 @@ class Synchronization extends Api
             $this->error('请求错误');
         }
         $db3 = Db::connect(config('database.db3'));
-        $nowTime = date('Y-m-d H:i:s',time());
-        $oldTime = date('Y-m-d 00:00:00',time()-259200);
         $workOrderList = $db3->name('U8_06工单资料')
-            ->where("U8传递时间",'between',[$oldTime,$nowTime])
-            ->where('工单编号','<>','')
-            ->order('U8传递时间 desc')
-            ->limit(10)
+            ->where('MES接收时间',null)
+            ->where('MES接收状态','0')
+            ->where('U8插入类型','<>','关闭')
             ->select();
         if (empty($workOrderList)){
             $this->success('未获取新工单');
         }
-        $data = [];
-        $i = $j = $m = $n =0;
+        $j = $m = $n =0;
         foreach ($workOrderList as $key=>$value){
+            //插入产品资料
             $productData = \db('产品_基本资料')
                 ->where('产品编号',$value['成品编号'])
                 ->count();
             if ($productData === 0){
-                $clientCode = substr($value['成品编号'],0,4);
+                $clientCode = substr($value['成品编号'],0,5);
                 $product = [
                     '客户编号' => $clientCode,
                     '客户名称' => $value['客户名称'],
@@ -62,98 +59,79 @@ class Synchronization extends Api
                     $n++;
                 }
             }
-            $res = \db('工单_基本资料')
+            //插入工单资料
+            $client = \db('产品_基本资料')->where('产品编号',$value['成品编号'])->field('rtrim(客户编号) as 客户编号,rtrim(客户名称) as 客户名称')->find();
+            $data = [
+                'Gd_gdbh' => $value['工单编号'],
+                '行号' => $value['行号'],
+                'Gd_客户代号' => $client['客户编号'],
+                'Gd_客户名称' => $client['客户名称'],
+                'Gd_khdh' => $value['客户编号'],
+                'Gd_khmc' => $value['客户名称'],
+                '客户料号' => $value['客户料号'],
+                '成品代号' => $value['成品编号'],
+                '成品名称' => $value['成品名称'],
+                'Gd_cpdh' => $value['产品编号'],
+                'Gd_cpmc' => $value['产品名称'],
+                '产品版本号' => $value['版本号'],
+                '销售订单号' => $value['销售订单号'],
+                '警语版面' => $value['警语版面'],
+                '码源数量' => substr(str_replace('.','',$value['投料数量']),0,-2),
+                'Gd_desc' => $value['备注'],
+                '接单日期' => $value['接单日期'],
+                '开单日期' => $value['开单日期'],
+                '交货日期' => $value['交货日期'],
+                '订单数量' => $value['订单数量'],
+                '实际投料' => $value['投料数量'],
+                '产品单价' => $value['产品单价'],
+                '计量单位' => '万张',
+                '成本考核_胶印' => 1,
+                '成本考核_凹印' => 1,
+                '成本考核_丝印' => 1,
+                '成本考核_模切' => 1,
+                '成本考核_检验' => 1,
+                'gd_statu' => '3-计划中',
+                'Sys_id' => '[1012/开单员]',
+                'Sys_rq' => date('Y-m-d H:i:s',time()),
+                'Mod_rq' => date('Y-m-d H:i:s',time()),
+                'U8UID' => $value['U8_UID'],
+                'Uniqid' => $value['UniqId']
+            ];
+            $workOrderdata = \db('工单_基本资料')
                 ->where('Uniqid',$value['UniqId'])
                 ->count();
-            $client = \db('产品_基本资料')->where('产品编号',$value['成品编号'])->field('rtrim(客户编号) as 客户编号,rtrim(客户名称) as 客户名称')->find();
-            if ($res === 0){
-                $data['add'][$i] = [
-                    'Gd_gdbh' => $value['工单编号'],
-                    '行号' => $value['行号'],
-                    'Gd_客户代号' => $client['客户编号'],
-                    'Gd_客户名称' => $client['客户名称'],
-                    'Gd_khdh' => $value['客户编号'],
-                    'Gd_khmc' => $value['客户名称'],
-                    '客户料号' => $value['客户料号'],
-                    '成品代号' => $value['成品编号'],
-                    '成品名称' => $value['成品名称'],
-                    'Gd_cpdh' => $value['产品编号'],
-                    'Gd_cpmc' => $value['产品名称'],
-                    '产品版本号' => $value['版本号'],
-                    '销售订单号' => $value['销售订单号'],
-                    '警语版面' => $value['警语版面'],
-                    '码源数量' => substr(str_replace('.','',$value['投料数量']),0,-2),
-                    'Gd_desc' => $value['备注'],
-                    '接单日期' => $value['接单日期'],
-                    '开单日期' => $value['开单日期'],
-                    '交货日期' => $value['交货日期'],
-                    '订单数量' => $value['订单数量'],
-                    '实际投料' => $value['投料数量'],
-                    '产品单价' => $value['产品单价'],
-                    '计量单位' => '万张',
-                    '成本考核_胶印' => 1,
-                    '成本考核_凹印' => 1,
-                    '成本考核_丝印' => 1,
-                    '成本考核_模切' => 1,
-                    '成本考核_检验' => 1,
-                    'gd_statu' => '3-计划中',
-                    'Sys_id' => '[1012/开单员]',
-                    'Sys_rq' => date('Y-m-d H:i:s',time()),
-                    'Mod_rq' => date('Y-m-d H:i:s',time()),
-                    'U8UID' => $value['U8_UID'],
-                    'Uniqid' => $value['UniqId']
-                ];
-                $i++;
+            if ($workOrderdata === 0){
+                $addSql = \db('工单_基本资料')->fetchSql(true)->insert($data);
+                $result = \db()->query($addSql);
+                if ($result === false){
+                    $m++;
+                }else{
+                    $sqlString = $db3->name('U8_06工单资料')
+                        ->where('UniqId', $value['UniqId'])
+                        ->fetchSql(true)
+                        ->update([
+                            'MES接收时间' => date('Y-m-d H:i:s', time()),
+                            'MES接收状态' => '1'
+                        ]);
+                    $db3->execute($sqlString);
+                }
             }else{
-                $data['update'] = [
-                    'Gd_gdbh' => $value['工单编号'],
-                    '行号' => $value['行号'],
-                    'Gd_客户代号' => $client['客户编号'],
-                    'Gd_客户名称' => $client['客户名称'],
-                    'Gd_khdh' => $value['客户编号'],
-                    'Gd_khmc' => $value['客户名称'],
-                    '客户料号' => $value['客户料号'],
-                    '成品代号' => $value['成品编号'],
-                    '成品名称' => $value['成品名称'],
-                    'Gd_cpdh' => $value['产品编号'],
-                    'Gd_cpmc' => $value['产品名称'],
-                    '产品版本号' => $value['版本号'],
-                    '销售订单号' => $value['销售订单号'],
-                    '警语版面' => $value['警语版面'],
-                    '码源数量' => substr(str_replace('.','',$value['投料数量']),0,-2),
-                    'Gd_desc' => $value['备注'],
-                    '接单日期' => $value['接单日期'],
-                    '开单日期' => $value['开单日期'],
-                    '交货日期' => $value['交货日期'],
-                    '订单数量' => $value['订单数量'],
-                    '实际投料' => $value['投料数量'],
-                    '产品单价' => $value['产品单价'],
-                    '计量单位' => '万张',
-                    '成本考核_胶印' => 1,
-                    '成本考核_凹印' => 1,
-                    '成本考核_丝印' => 1,
-                    '成本考核_模切' => 1,
-                    '成本考核_检验' => 1,
-                    'gd_statu' => '3-计划中',
-                    'Sys_id' => '[1012/开单员]',
-                    'Sys_rq' => date('Y-m-d H:i:s',time()),
-                    'Mod_rq' => date('Y-m-d H:i:s',time()),
-                    'U8UID' => $value['U8_UID']
-                ];
-                $updateSql = \db('工单_基本资料')->where('Uniqid',$value['UniqId'])->fetchSql(true)->update($data['update']);
+                $updateSql = \db('工单_基本资料')->where('Uniqid',$value['UniqId'])->fetchSql(true)->update($data);
                 $updateRes = \db()->query($updateSql);
                 if ($updateRes === false){
                     $j++;
+                }else{
+                    $sqlString = $db3->name('U8_06工单资料')
+                        ->where('UniqId', $value['UniqId'])
+                        ->fetchSql(true)
+                        ->update([
+                            'MES接收时间' => date('Y-m-d H:i:s', time()),
+                            'MES接收状态' => '1'
+                        ]);
+                    $db3->execute($sqlString);
                 }
             }
         }
-        if ($i !== 0){
-            $addSql = \db('工单_基本资料')->fetchSql(true)->insertAll($data['add']);
-            $result = \db()->query($addSql);
-            if ($result === false){
-                $m++;
-            }
-        }
         if ($j !== 0 || $m !==0 || $n !== 0){
             $this->error('工单资料同步失败');
         }else{
@@ -171,85 +149,75 @@ class Synchronization extends Api
             $this->error('请求错误');
         }
         $db3 = Db::connect(config('database.db3'));
-        $nowTime = date('Y-m-d H:i:s',time());
-        $oldTime = date('Y-m-d 00:00:00',time()-259200);
         $BomDataList = $db3->name('U8_09工单bom')
-            ->where('U8传递时间','between',[$oldTime,$nowTime])
-            ->where('BOM_工单编号','<>','')
+            ->where('MES接收时间',null)
+            ->where('MES接收状态','0')
             ->order('U8传递时间 desc')
             ->select();
         if (empty($BomDataList)){
             $this->success('未找到新工单BOM');
         }
-        $data = [];
-        $i = $j = $m = 0;
+        $j = $m = 0;
         foreach ($BomDataList as $key=>$value){
             $res = \db('工单_bom资料')->where('UNIQID',$value['UNIQID'])->count();
+            $data = [
+                'BOM_方案' => '工单评审定案',
+                'BOM_工单编号' => $value['BOM_工单编号'],
+                'BOM_版本' => $value['BOM_版本'],
+                'BOM_工单行号' => $value['BOM_工单行号'],
+                'BOM_行号' => $value['BOM_行号'],
+                'BOM_产品编号' => $value['BOM_产品编号'],
+                'BOM_物料编码' => $value['BOM_物料编码'],
+                'BOM_物料名称' => $value['BOM_物料名称'],
+                'BOM_投料单位' => $value['BOM_投料单位'],
+                'BOM_投入数' => $value['BOM_投入数'],
+                'BOM_产出数' => $value['BOM_产出数'],
+                'BOM_产出单位' => $value['BOM_产出单位'],
+                'BOM_标准用量' => $value['BOM_标准用量'],
+                'BOM_实际用量' => $value['BOM_实际用量'],
+                'BOM_计划用量' => $value['BOM_计划用量'],
+                'BOM_核算价格' => 0,
+                'Bom_领用工序' => '01-01',
+                'BOM_备注' => $value['BOM_备注'],
+                'Mod_rq' => date('Y-m-d H:i:s',time()),
+                'U8UID' => $value['U8_UID'],
+                'UNIQID' => $value['UNIQID']
+            ];
             if ($res === 0){
-                $data['add'][$i] = [
-                    'BOM_方案' => '工单评审定案',
-                    'BOM_工单编号' => $value['BOM_工单编号'],
-                    'BOM_版本' => $value['BOM_版本'],
-                    'BOM_工单行号' => $value['BOM_工单行号'],
-                    'BOM_行号' => $value['BOM_行号'],
-                    'BOM_产品编号' => $value['BOM_产品编号'],
-                    'BOM_物料编码' => $value['BOM_物料编码'],
-                    'BOM_物料名称' => $value['BOM_物料名称'],
-                    'BOM_投料单位' => $value['BOM_投料单位'],
-                    'BOM_投入数' => $value['BOM_投入数'],
-                    'BOM_产出数' => $value['BOM_产出数'],
-                    'BOM_产出单位' => $value['BOM_产出单位'],
-                    'BOM_标准用量' => $value['BOM_标准用量'],
-                    'BOM_实际用量' => $value['BOM_实际用量'],
-                    'BOM_计划用量' => $value['BOM_计划用量'],
-                    'BOM_核算价格' => 0,
-                    'Bom_领用工序' => '01-01',
-                    'BOM_备注' => $value['BOM_备注'],
-                    'Mod_rq' => date('Y-m-d H:i:s',time()),
-                    'U8UID' => $value['U8_UID'],
-                    'UNIQID' => $value['UNIQID']
-                ];
-                $i++;
+                $addSql = \db('工单_bom资料')->fetchSql(true)->insert($data);
+                $addRes = \db()->query($addSql);
+                if ($addRes === false){
+                    $m++;
+                }else{
+                    $sqlString = $db3->name('U8_09工单bom')
+                        ->where('UniqId', $value['UNIQID'])
+                        ->fetchSql(true)
+                        ->update([
+                            'MES接收时间' => date('Y-m-d H:i:s', time()),
+                            'MES接收状态' => '1'
+                        ]);
+                    $db3->execute($sqlString);
+                }
             }else{
-                $data['update'] = [
-                    'BOM_方案' => '工单评审定案',
-                    'BOM_工单编号' => $value['BOM_工单编号'],
-                    'BOM_版本' => $value['BOM_版本'],
-                    'BOM_工单行号' => $value['BOM_工单行号'],
-                    'BOM_行号' => $value['BOM_行号'],
-                    'BOM_产品编号' => $value['BOM_产品编号'],
-                    'BOM_物料编码' => $value['BOM_物料编码'],
-                    'BOM_物料名称' => $value['BOM_物料名称'],
-                    'BOM_投料单位' => $value['BOM_投料单位'],
-                    'BOM_投入数' => $value['BOM_投入数'],
-                    'BOM_产出数' => $value['BOM_产出数'],
-                    'BOM_产出单位' => $value['BOM_产出单位'],
-                    'BOM_标准用量' => $value['BOM_标准用量'],
-                    'BOM_实际用量' => $value['BOM_实际用量'],
-                    'BOM_计划用量' => $value['BOM_计划用量'],
-                    'BOM_核算价格' => 0,
-                    'Bom_领用工序' => '01-01',
-                    'BOM_备注' => $value['BOM_备注'],
-                    'Mod_rq' => date('Y-m-d H:i:s',time()),
-                    'U8UID' => $value['U8_UID']
-                ];
                 $updateSql = \db('工单_bom资料')
                     ->where('UNIQID',$value['UNIQID'])
                     ->fetchSql(true)
-                    ->update($data['update']);
+                    ->update($data);
                 $updateRes = \db()->query($updateSql);
                 if ($updateRes === false){
                     $j++;
+                }else{
+                    $sqlString = $db3->name('U8_09工单bom')
+                        ->where('UniqId', $value['UNIQID'])
+                        ->fetchSql(true)
+                        ->update([
+                            'MES接收时间' => date('Y-m-d H:i:s', time()),
+                            'MES接收状态' => '1'
+                        ]);
+                    $db3->execute($sqlString);
                 }
             }
         }
-        if ($i !== 0){
-            $addSql = \db('工单_bom资料')->fetchSql(true)->insertAll($data['add']);
-            $addRes = \db()->query($addSql);
-            if ($addRes === false){
-                $m++;
-            }
-        }
         if ($j !== 0 || $m !== 0){
             $this->error('工单BOM资料同步失败');
         }else{
@@ -257,42 +225,75 @@ class Synchronization extends Api
         }
     }
 
-//    /**
-//     * 物料领用数据同步
-//     */
-//
-//    public function MaterialRequisitionData()
-//    {
-//        if ($this->request->isGet() === false){
-//            $this->error('请求错误');
-//        }
-//        $db3 = Db::connect(config('database.db3'));
-//        $nowTime = date('Y-m-d H:i:s',time());
-//        $oldTime = date('Y-m-d 00:00:00',time()-259200);
-//        $MaterialDataList = $db3->name('U8_07物料领用')
-//            ->where('U8传递时间','between',[$oldTime,$nowTime])
-//            ->where('工单编号','<>','')
-//            ->order('U8传递时间 desc')
-//            ->select();
-//        if (empty($MaterialDataList)){
-//            $this->success('未找到新的物料领用记录');
-//        }
-//        $data = [];
-//        $i = $j = $m = 0;
-//        foreach ($MaterialDataList as $key=>$value){
-//            $res = \db('物料_收发记录')->where('Uniqid',$value['UniqId'])->count();
-//            if ($res === 0){
-////                $data['add']
-//            }
-//        }
-//    }
-//
-//    //产品资料同步
-//
-//    public function ProductData()
-//    {
-//        if ($this->request->isGet() === false){
-//            $this->error('请求错误');
-//        }
-//    }
+    /**
+     * 存货结构数据同步
+     */
+
+    public function MaterialRequisitionData()
+    {
+        if ($this->request->isGet() === false){
+            $this->error('请求错误');
+        }
+        $db3 = \db()->connect(config('database.db3'));
+        $MaterialDataList = $db3->name('U8_11存货结构')
+            ->where('MES接收时间',null)
+            ->where('MES接收状态','0')
+            ->select();
+        if (empty($MaterialDataList)){
+            $this->success('未找到新的物料领用记录');
+        }
+        $i = 0;
+        foreach ($MaterialDataList as $key=>$value){
+            $data = [
+                '编号' => $value['编号'],
+                '名称' => $value['名称'],
+                'Sys_id' => '[272/超级用户]',
+                'Sys_rq' => date('Y-m-d H:i:s',time()),
+                'Mod_rq' => date('Y-m-d H:i:s',time()),
+                'U8UID' => $value['U8_UID'],
+                'UniqId' => $value['UniqId']
+            ];
+            if ($value['U8插入类型'] === '新增'){
+                $sql = \db('物料_存货结构')->fetchSql(true)->insert($data);
+                $res = \db()->query($sql);
+                if ($res === false){
+                    $i++;
+                }else{
+                    $sqlString = $db3->name('U8_11存货结构')
+                        ->where('UniqId', $value['UniqId'])
+                        ->fetchSql(true)
+                        ->update([
+                            'MES接收时间' => date('Y-m-d H:i:s', time()),
+                            'MES接收状态' => '1'
+                        ]);
+                    $db3->execute($sqlString);
+                }
+            }else{
+                $sql = \db('物料_存货结构')
+                    ->fetchSql(true)
+                    ->where('UniqId',$value['UniqId'])
+                    ->update($data);
+                $res = \db()->query($sql);
+                if ($res === false){
+                    $i++;
+                }else{
+
+                    $sqlString = $db3->name('U8_11存货结构')
+                        ->where('UniqId', $value['UniqId'])
+                        ->fetchSql(true)
+                        ->update([
+                            'MES接收时间' => date('Y-m-d H:i:s', time()),
+                            'MES接收状态' => '1'
+                        ]);
+                    $db3->execute($sqlString);
+
+                }
+            }
+        }
+        if ($i !== 0){
+            $this->error('存货结构同步失败');
+        }else{
+            $this->success('存货结构同步成功');
+        }
+    }
 }

+ 1 - 0
application/api/controller/WorkOrder.php

@@ -1954,6 +1954,7 @@ class WorkOrder extends Api
             ->where('a.Gd_gdbh','like','%'.$param['search'].'%')
             ->whereOr('a.成品名称','like','%'.$param['search'].'%')
             ->group('a.Gd_gdbh')
+            ->order('a.Uniqid desc')
             ->select();
         if (empty($list)){
             $this->success('未找到工单资料');