|
@@ -999,124 +999,124 @@ class Synchronization extends Api
|
|
|
* @throws \think\exception\DbException
|
|
* @throws \think\exception\DbException
|
|
|
* @throws \think\exception\PDOException
|
|
* @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('物料领用记录同步成功');
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|