Synchronization.php 42 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084
  1. <?php
  2. namespace app\api\controller;
  3. use app\common\controller\Api;
  4. use think\Db;
  5. use Overtrue\Pinyin;
  6. /**
  7. * 中间表数据同步
  8. */
  9. class Synchronization extends Api
  10. {
  11. protected $noNeedLogin = ['*'];
  12. protected $noNeedRight = ['*'];
  13. /**
  14. * 工单资料数据同步
  15. */
  16. public function WorkOrderData()
  17. {
  18. if ($this->request->isGet() === false){
  19. $this->error('请求错误');
  20. }
  21. $db3 = Db::connect(config('database.db3'));
  22. $workOrderList = $db3->name('U8_06工单资料')
  23. ->where('工单编号','like','Y%')
  24. ->where('MES接收时间',null)
  25. ->where('MES接收状态','0')
  26. ->where('U8插入类型','<>','关闭')
  27. ->select();
  28. if (empty($workOrderList)){
  29. $this->success('未获取新工单');
  30. }
  31. $j = $m = $n =0;
  32. foreach ($workOrderList as $key=>$value){
  33. $code = substr($value['成品编号'],0,5);
  34. $client = \db('物料_存货结构')->where('编号',$code)->value('名称');
  35. //插入产品资料
  36. $processData = \db('产品_基本资料')
  37. ->where('产品编号',$value['成品编号'])
  38. ->count();
  39. $detail = \db('物料_存货编码')->where('物料代码',$value['成品编号'])->find();
  40. if ($processData === 0){
  41. $product = [
  42. '客户编号' => $code,
  43. '客户名称' => $client,
  44. '产品编号' => $value['成品编号'],
  45. '产品名称' => $value['成品名称'],
  46. '计量单位' => $detail['领用单位'],
  47. '状态' => '',
  48. 'U8UID' => $detail['U8UID'],
  49. '产品类别' => $detail['规格'],
  50. 'Sys_id' => '[272/超级用户]',
  51. 'Sys_rq' => date('Y-m-d H:i:s',time()),
  52. 'Mod_rq' => date('Y-m-d H:i:s',time()),
  53. ];
  54. $product['UniqID'] = \db('产品_基本资料')->order('UniqID desc')->value('UniqID')+1;
  55. $productSql = \db('产品_基本资料')->fetchSql(true)->insert($product);
  56. \db()->query($productSql);
  57. }
  58. //插入工单资料
  59. $data = [
  60. 'Gd_gdbh' => $value['工单编号'],
  61. '行号' => $value['行号'],
  62. 'Gd_客户代号' => $code,
  63. 'Gd_客户名称' => $client,
  64. 'Gd_khdh' => $value['客户编号'],
  65. 'Gd_khmc' => $value['客户名称'],
  66. '客户料号' => $value['客户料号'],
  67. '成品代号' => $value['成品编号'],
  68. '成品名称' => $value['成品名称'],
  69. 'Gd_cpdh' => $value['产品编号'],
  70. 'Gd_cpmc' => $value['产品名称'],
  71. '产品版本号' => $value['版本号'],
  72. '销售订单号' => $value['销售订单号'],
  73. '警语版面' => $value['警语版面'],
  74. '码源数量' => substr(str_replace('.','',$value['投料数量']),0,-2),
  75. 'Gd_desc' => $value['备注'],
  76. '接单日期' => $value['接单日期'],
  77. '开单日期' => $value['开单日期'],
  78. '交货日期' => $value['交货日期'],
  79. '订单数量' => $value['订单数量'],
  80. '实际投料' => $value['投料数量'],
  81. '产品单价' => $value['产品单价'],
  82. '计量单位' => '万张',
  83. '成本考核_胶印' => 1,
  84. '成本考核_凹印' => 1,
  85. '成本考核_丝印' => 1,
  86. '成本考核_模切' => 1,
  87. '成本考核_检验' => 1,
  88. 'gd_statu' => '3-计划中',
  89. 'Sys_id' => '[1012/开单员]',
  90. 'Sys_rq' => date('Y-m-d H:i:s',time()),
  91. 'Mod_rq' => date('Y-m-d H:i:s',time()),
  92. 'U8UID' => $value['U8_UID'],
  93. 'Uniqid' => $value['UniqId']
  94. ];
  95. $workOrderdata = \db('工单_基本资料')
  96. ->where('U8UID',$value['U8_UID'])
  97. ->count();
  98. if ($workOrderdata === 0){
  99. $addSql = \db('工单_基本资料')->fetchSql(true)->insert($data);
  100. $result = \db()->query($addSql);
  101. if ($result === false){
  102. $m++;
  103. }else{
  104. $sqlString = $db3->name('U8_06工单资料')
  105. ->where('UniqId', $value['UniqId'])
  106. ->fetchSql(true)
  107. ->update([
  108. 'MES接收时间' => date('Y-m-d H:i:s', time()),
  109. 'MES接收状态' => '1'
  110. ]);
  111. $db3->execute($sqlString);
  112. }
  113. }else{
  114. unset($data['Uniqid']);
  115. $updateSql = \db('工单_基本资料')->where('U8UID',$value['U8_UID'])->fetchSql(true)->update($data);
  116. $updateRes = \db()->query($updateSql);
  117. if ($updateRes === false){
  118. $j++;
  119. }else{
  120. $sqlString = $db3->name('U8_06工单资料')
  121. ->where('UniqId', $value['UniqId'])
  122. ->fetchSql(true)
  123. ->update([
  124. 'MES接收时间' => date('Y-m-d H:i:s', time()),
  125. 'MES接收状态' => '1'
  126. ]);
  127. $db3->execute($sqlString);
  128. }
  129. }
  130. }
  131. if ($j !== 0 || $m !==0 || $n !== 0){
  132. $this->error('工单资料同步失败');
  133. }else{
  134. $this->success('工单资料同步成功');
  135. }
  136. }
  137. /**
  138. * 工单bom资料同步
  139. */
  140. public function WorkOrderBomData()
  141. {
  142. if ($this->request->isGet() === false){
  143. $this->error('请求错误');
  144. }
  145. $db3 = Db::connect(config('database.db3'));
  146. $BomDataList = $db3->name('U8_09工单bom')
  147. ->where('MES接收时间',null)
  148. ->where('MES接收状态','0')
  149. ->order('U8传递时间 desc')
  150. ->select();
  151. if (empty($BomDataList)){
  152. $this->success('未找到新工单BOM');
  153. }
  154. $j = $m = 0;
  155. foreach ($BomDataList as $key=>$value){
  156. $res = \db('工单_bom资料')->where('U8UID',$value['U8_UID'])->count();
  157. if (preg_match("/[A-Za-z]/",$value['BOM_工单编号'])){
  158. $workcode = $value['BOM_工单编号'];
  159. }else{
  160. $workcode = 'Y'.$value['BOM_工单编号'];
  161. }
  162. $data = [
  163. 'BOM_方案' => '工单评审定案',
  164. 'BOM_工单编号' => $workcode,
  165. 'BOM_版本' => $value['BOM_版本'],
  166. 'BOM_工单行号' => $value['BOM_工单行号'],
  167. 'BOM_行号' => $value['BOM_行号'],
  168. 'BOM_产品编号' => $value['BOM_产品编号'],
  169. 'BOM_物料编码' => $value['BOM_物料编码'],
  170. 'BOM_物料名称' => $value['BOM_物料名称'],
  171. 'BOM_投料单位' => $value['BOM_投料单位'],
  172. 'BOM_投入数' => $value['BOM_投入数'],
  173. 'BOM_产出数' => $value['BOM_产出数'],
  174. 'BOM_产出单位' => $value['BOM_产出单位'],
  175. 'BOM_标准用量' => $value['BOM_标准用量'],
  176. 'BOM_实际用量' => $value['BOM_实际用量'],
  177. 'BOM_计划用量' => $value['BOM_计划用量'],
  178. 'BOM_核算价格' => 0,
  179. 'Bom_领用工序' => '01-01',
  180. 'BOM_备注' => $value['BOM_备注'],
  181. 'Mod_rq' => date('Y-m-d H:i:s',time()),
  182. 'U8UID' => $value['U8_UID'],
  183. 'UNIQID' => $value['UNIQID']
  184. ];
  185. if ($res === 0){
  186. $addSql = \db('工单_bom资料')->fetchSql(true)->insert($data);
  187. $addRes = \db()->query($addSql);
  188. if ($addRes === false){
  189. $m++;
  190. }else{
  191. $sqlString = $db3->name('U8_09工单bom')
  192. ->where('UNIQID', $value['UNIQID'])
  193. ->fetchSql(true)
  194. ->update([
  195. 'MES接收时间' => date('Y-m-d H:i:s', time()),
  196. 'MES接收状态' => '1'
  197. ]);
  198. $db3->execute($sqlString);
  199. }
  200. }else{
  201. unset($data['UNIQID']);
  202. $updateSql = \db('工单_bom资料')
  203. ->where('U8UID',$value['U8_UID'])
  204. ->fetchSql(true)
  205. ->update($data);
  206. $updateRes = \db()->query($updateSql);
  207. if ($updateRes === false){
  208. $j++;
  209. }else{
  210. $sqlString = $db3->name('U8_09工单bom')
  211. ->where('UNIQID', $value['UNIQID'])
  212. ->fetchSql(true)
  213. ->update([
  214. 'MES接收时间' => date('Y-m-d H:i:s', time()),
  215. 'MES接收状态' => '1'
  216. ]);
  217. $db3->execute($sqlString);
  218. }
  219. }
  220. }
  221. if ($j !== 0 || $m !== 0){
  222. $this->error('工单BOM资料同步失败');
  223. }else{
  224. $this->success('工单BOM资料同步成功');
  225. }
  226. }
  227. /**
  228. * 存货结构数据同步
  229. */
  230. public function MaterialRequisitionData()
  231. {
  232. if ($this->request->isGet() === false){
  233. $this->error('请求错误');
  234. }
  235. $db3 = \db()->connect(config('database.db3'));
  236. $MaterialDataList = $db3->name('U8_11存货结构')
  237. ->where('MES接收时间',null)
  238. ->where('MES接收状态','0')
  239. ->select();
  240. if (empty($MaterialDataList)){
  241. $this->success('未找到新的物料存货结构');
  242. }
  243. $i = 0;
  244. foreach ($MaterialDataList as $key=>$value){
  245. $data = [
  246. '编号' => $value['编号'],
  247. '名称' => $value['名称'],
  248. 'Sys_id' => '[272/超级用户]',
  249. 'Sys_rq' => date('Y-m-d H:i:s',time()),
  250. 'Mod_rq' => date('Y-m-d H:i:s',time()),
  251. 'U8UID' => $value['U8_UID'],
  252. 'UniqId' => $value['UniqId']
  253. ];
  254. if ($value['U8插入类型'] === '新增'){
  255. $sql = \db('物料_存货结构')->fetchSql(true)->insert($data);
  256. $res = \db()->query($sql);
  257. if ($res === false){
  258. $i++;
  259. }else{
  260. $sqlString = $db3->name('U8_11存货结构')
  261. ->where('UniqId', $value['UniqId'])
  262. ->fetchSql(true)
  263. ->update([
  264. 'MES接收时间' => date('Y-m-d H:i:s', time()),
  265. 'MES接收状态' => '1'
  266. ]);
  267. $db3->execute($sqlString);
  268. }
  269. }else{
  270. $sql = \db('物料_存货结构')
  271. ->fetchSql(true)
  272. ->where('U8UID',$value['U8_UID'])
  273. ->update($data);
  274. $res = \db()->query($sql);
  275. if ($res === false){
  276. $i++;
  277. }else{
  278. $sqlString = $db3->name('U8_11存货结构')
  279. ->where('UniqId', $value['UniqId'])
  280. ->fetchSql(true)
  281. ->update([
  282. 'MES接收时间' => date('Y-m-d H:i:s', time()),
  283. 'MES接收状态' => '1'
  284. ]);
  285. $db3->execute($sqlString);
  286. }
  287. }
  288. }
  289. if ($i !== 0){
  290. $this->error('存货结构同步失败');
  291. }else{
  292. $this->success('存货结构同步成功');
  293. }
  294. }
  295. /**
  296. * 人事基本资料同步
  297. * @return void
  298. * @throws \think\Exception
  299. * @throws \think\db\exception\BindParamException
  300. * @throws \think\db\exception\DataNotFoundException
  301. * @throws \think\db\exception\ModelNotFoundException
  302. * @throws \think\exception\DbException
  303. * @throws \think\exception\PDOException
  304. */
  305. public function PersonnelData()
  306. {
  307. //拼音类
  308. $pinyin = new Pinyin\Pinyin();
  309. if ($this->request->isGet() === false){
  310. $this->error('请求错误');
  311. }
  312. $db3 = \db()->connect(config('database.db3'));
  313. $PersonnelDataList = $db3->name('U8_02人事资料')
  314. ->where('MES接收时间',null)
  315. ->where('MES接收状态','0')
  316. ->select();
  317. if (empty($PersonnelDataList)){
  318. $this->success('未找到新的人事资料');
  319. }
  320. $i = 0;
  321. foreach ($PersonnelDataList as $key=>$value){
  322. //获取姓名首字母
  323. $pycode = $pinyin->abbr($value['员工姓名']);
  324. $nameCode = strtoupper($pycode);
  325. $data = [
  326. '工卡编号'=>'',
  327. '卡钟设定'=>'',
  328. '打卡设置'=>'',
  329. '员工编号'=>$value['员工编号'],
  330. '员工姓名'=>$value['员工姓名'],
  331. '性别'=>$value['性别'],
  332. '聘用日期'=>$value['聘用日期'],
  333. '转正日期'=>$value['转正日期'],
  334. 'U8离职日期'=>$value['离职日期'],
  335. 'MES离职日期'=>$value['离职日期'],
  336. '扣减司龄'=>0,
  337. '部门编码'=>$value['部门编码'],
  338. '所在部门'=>$value['所在部门'],
  339. '人员类别'=>$value['人员类别'],
  340. '人员性质'=>$value['人员性质'],
  341. '班次类型'=>'',
  342. '标准工时制'=>'',
  343. '职称职务'=>$value['职称职务'],
  344. '薪资级别'=>$value['级别'],
  345. '工资表类别'=>'',
  346. '基本工资'=>'',
  347. '绩效工资1'=>'',
  348. '绩效工资2'=>'',
  349. '技能工资'=>'',
  350. '岗位津贴'=>'',
  351. '竞业补贴'=>'',
  352. '专业技术津贴'=>'',
  353. '技工技师津贴'=>'',
  354. '特殊工种津贴'=>'',
  355. '各类奖项津贴'=>'',
  356. '职危津贴'=>'',
  357. '夜班津贴'=>'',
  358. '全勤津贴'=>'',
  359. '住房津贴'=>'',
  360. '高温津贴'=>'',
  361. '用餐津贴'=>'',
  362. '司龄津贴'=>'',
  363. '联系电话'=>$value['联系电话'],
  364. '合同类型'=>'',
  365. '合同起始日期'=>'1900-01-01 00:00:00',
  366. '合同终止日期'=>'1900-01-01 00:00:00',
  367. '合同备注'=>'',
  368. '出生日期'=>$value['出生日期'],
  369. 'pycode'=>$nameCode,
  370. '籍贯'=>'',
  371. '民族'=>'',
  372. '身份证号'=>$value['身份证号'],
  373. '证件有效日期'=>'1900-01-01 00:00:00',
  374. '发证机关'=>'',
  375. '家庭住址'=>'',
  376. '学历'=>'',
  377. '婚姻状况'=>'',
  378. '社保开始日期'=>'1900-01-01 00:00:00',
  379. '开户银行'=>$value['开户银行'],
  380. '开户账号'=>$value['开户账号'],
  381. '存折办理日期'=>'1900-01-01 00:00:00',
  382. '紧急电话'=>'',
  383. '照片ID'=>'',
  384. '在职状态'=>$value['在职状态'],
  385. 'U8在职'=>$value['在职状态'],
  386. '薪酬核算分组'=>'',
  387. '考勤类型'=>'',
  388. '班组代号'=>'',
  389. 'sys_id'=>'[272/超级用户]',
  390. 'sys_rq'=>date('Y-m-d H:i:s',time()),
  391. 'mod_rq'=>'1900-01-01 00:00:00',
  392. 'U8UID'=>$value['U8_UID'],
  393. 'UniqID'=>$value['UniqId']
  394. ];
  395. $number = \db('人事_基本资料')
  396. ->where('U8UID',$value['U8_UID'])
  397. ->count();
  398. if ($number === 0){
  399. $sql = \db('人事_基本资料')->fetchSql(true)->insert($data);
  400. $res = \db()->query($sql);
  401. if ($res === false){
  402. $i++;
  403. }else{
  404. $sqlString = $db3->name('U8_02人事资料')
  405. ->where('UniqId', $value['UniqId'])
  406. ->fetchSql(true)
  407. ->update([
  408. 'MES接收时间' => date('Y-m-d H:i:s', time()),
  409. 'MES接收状态' => '1'
  410. ]);
  411. $db3->execute($sqlString);
  412. }
  413. }else{
  414. $sql = \db('人事_基本资料')
  415. ->fetchSql(true)
  416. ->where('U8UID',$value['U8_UID'])
  417. ->update($data);
  418. $res = \db()->query($sql);
  419. if ($res === false){
  420. $i++;
  421. }else{
  422. $sqlString = $db3->name('U8_02人事资料')
  423. ->where('UniqId', $value['UniqId'])
  424. ->fetchSql(true)
  425. ->update([
  426. 'MES接收时间' => date('Y-m-d H:i:s', time()),
  427. 'MES接收状态' => '1'
  428. ]);
  429. $db3->execute($sqlString);
  430. }
  431. }
  432. }
  433. if ($i !== 0){
  434. $this->error('人事资料同步失败');
  435. }else{
  436. $this->success('人事资料同步成功');
  437. }
  438. }
  439. /**
  440. * 人事组织结构
  441. * @return void
  442. * @throws \think\Exception
  443. * @throws \think\db\exception\BindParamException
  444. * @throws \think\db\exception\DataNotFoundException
  445. * @throws \think\db\exception\ModelNotFoundException
  446. * @throws \think\exception\DbException
  447. * @throws \think\exception\PDOException
  448. */
  449. public function OrganizationalStructureData()
  450. {
  451. if ($this->request->isGet() === false){
  452. $this->error('请求错误');
  453. }
  454. $db3 = \db()->connect(config('database.db3'));
  455. $OrganizationalDataList = $db3->name('U8_01组织结构')
  456. ->where('MES接收时间',null)
  457. ->where('MES接收状态','0')
  458. ->select();
  459. if (empty($OrganizationalDataList)){
  460. $this->success('未找到新的组织结构');
  461. }
  462. $i = 0;
  463. foreach ($OrganizationalDataList as $key=>$value){
  464. $data = [
  465. '编号'=>$value['编号'],
  466. '名称'=>$value['名称'],
  467. '状态'=>$value['状态'],
  468. 'Sys_id'=>'[272/超级用户]',
  469. 'Sys_rq'=>date('Y-m-d H:i:s',time()),
  470. 'Mod_rq'=>'1900-01-01 00:00:00',
  471. 'U8UID'=>$value['U8_UID'],
  472. 'UNIQID'=>$value['UniqId'],
  473. ];
  474. $number = \db('人事_组织结构')
  475. ->where('U8UID',$value['U8_UID'])
  476. ->count();
  477. if ($number === 0){
  478. $sql = \db('人事_组织结构')->fetchSql(true)->insert($data);
  479. $res = \db()->query($sql);
  480. if ($res === false){
  481. $i++;
  482. }else{
  483. $sqlString = $db3->name('U8_01组织结构')
  484. ->where('UniqId', $value['UniqId'])
  485. ->fetchSql(true)
  486. ->update([
  487. 'MES接收时间' => date('Y-m-d H:i:s', time()),
  488. 'MES接收状态' => '1'
  489. ]);
  490. $db3->execute($sqlString);
  491. }
  492. }else{
  493. $sql = \db('人事_组织结构')
  494. ->fetchSql(true)
  495. ->where('U8UID',$value['U8_UID'])
  496. ->update($data);
  497. $res = \db()->query($sql);
  498. if ($res === false){
  499. $i++;
  500. }else{
  501. $sqlString = $db3->name('U8_01组织结构')
  502. ->where('UniqId', $value['UniqId'])
  503. ->fetchSql(true)
  504. ->update([
  505. 'MES接收时间' => date('Y-m-d H:i:s', time()),
  506. 'MES接收状态' => '1'
  507. ]);
  508. $db3->execute($sqlString);
  509. }
  510. }
  511. }
  512. if ($i !== 0){
  513. $this->error('人事组织结构同步失败');
  514. }else{
  515. $this->success('人事组织结构同步成功');
  516. }
  517. }
  518. /**
  519. * 物料存货编码数据同步
  520. * @return void
  521. * @throws \think\Exception
  522. * @throws \think\db\exception\BindParamException
  523. * @throws \think\db\exception\DataNotFoundException
  524. * @throws \think\db\exception\ModelNotFoundException
  525. * @throws \think\exception\DbException
  526. * @throws \think\exception\PDOException
  527. */
  528. public function InventoryCodeData()
  529. {
  530. if ($this->request->isGet() === false){
  531. $this->error('请求错误');
  532. }
  533. $db3 = \db()->connect(config('database.db3'));
  534. $OrganizationalDataList = $db3->name('U8_04物料编码')
  535. ->where('MES接收时间',null)
  536. ->where('MES接收状态','0')
  537. ->select();
  538. if (empty($OrganizationalDataList)){
  539. $this->success('未找到新的物料编码');
  540. }
  541. $i = 0;
  542. foreach ($OrganizationalDataList as $key=>$value){
  543. $code = substr($value['物料代码'],0,3);
  544. if ($code === 'Y10' || $code === 'Y14' || $code === 'Y12'){
  545. //插入产品资料
  546. $productData = \db('产品_基本资料')
  547. ->where('产品编号',$value['物料代码'])
  548. ->count();
  549. $clientCode = substr($value['物料代码'],0,5);
  550. $clientName = \db('物料_存货结构')->where('编号',$clientCode)->value('rtrim(名称)');
  551. $product = [
  552. '客户编号' => $clientCode,
  553. '客户名称' => $clientName,
  554. '产品编号' => $value['物料代码'],
  555. '产品名称' => $value['物料名称'],
  556. '计量单位' => $value['领用单位'],
  557. '状态' => '',
  558. 'U8UID' => $value['U8_UID'],
  559. '产品类别' => $value['规格'],
  560. 'Sys_id' => '[272/超级用户]',
  561. 'Sys_rq' => date('Y-m-d H:i:s',time()),
  562. 'Mod_rq' => date('Y-m-d H:i:s',time()),
  563. ];
  564. if ($productData === 0){
  565. $product['UniqID'] = \db('产品_基本资料')->order('UniqID desc')->value('UniqID')+1;
  566. $productSql = \db('产品_基本资料')->fetchSql(true)->insert($product);
  567. }else{
  568. $productSql = \db('产品_基本资料')->where('产品编号',$value['物料代码'])->fetchSql(true)->update($product);
  569. }
  570. $productRes = \db()->query($productSql);
  571. }
  572. $data = [
  573. '物料代码'=>$value['物料代码'],
  574. '物料名称'=>$value['物料名称'],
  575. '规格'=>$value['规格'],
  576. '采购单位'=>$value['采购单位'],
  577. '领用单位'=>$value['领用单位'],
  578. '单位换算率'=>$value['单位换算率'],
  579. '单价'=>$value['单价'],
  580. '币种'=>$value['币种'],
  581. '物料备注'=>$value['物料备注'],
  582. '状态'=>$value['状态'],
  583. 'Sys_id'=>'[272/超级用户]',
  584. 'Sys_rq'=>date('Y-m-d H:i:s',time()),
  585. 'Mod_rq'=>'1900-01-01 00:00:00',
  586. 'U8UID'=>$value['U8_UID'],
  587. 'UniqId'=>$value['UniqId'],
  588. ];
  589. $number = \db('物料_存货编码')
  590. ->where('U8UID',$value['U8_UID'])
  591. ->count();
  592. if ($number === 0){
  593. $sql = \db('物料_存货编码')->fetchSql(true)->insert($data);
  594. $res = \db()->query($sql);
  595. if ($res === false){
  596. $i++;
  597. }else{
  598. $sqlString = $db3->name('U8_04物料编码')
  599. ->where('UniqId', $value['UniqId'])
  600. ->fetchSql(true)
  601. ->update([
  602. 'MES接收时间' => date('Y-m-d H:i:s', time()),
  603. 'MES接收状态' => '1'
  604. ]);
  605. $db3->execute($sqlString);
  606. }
  607. }else{
  608. $sql = \db('物料_存货编码')
  609. ->fetchSql(true)
  610. ->where('U8UID',$value['U8_UID'])
  611. ->update($data);
  612. $res = \db()->query($sql);
  613. if ($res === false){
  614. $i++;
  615. }else{
  616. $sqlString = $db3->name('U8_04物料编码')
  617. ->where('UniqId', $value['UniqId'])
  618. ->fetchSql(true)
  619. ->update([
  620. 'MES接收时间' => date('Y-m-d H:i:s', time()),
  621. 'MES接收状态' => '1'
  622. ]);
  623. $db3->execute($sqlString);
  624. }
  625. }
  626. }
  627. if ($i !== 0){
  628. $this->error('物料编码同步失败');
  629. }else{
  630. $this->success('物料编码同步成功');
  631. }
  632. }
  633. /**
  634. * 客户供应商数据同步
  635. * @return void
  636. * @throws \think\Exception
  637. * @throws \think\db\exception\BindParamException
  638. * @throws \think\db\exception\DataNotFoundException
  639. * @throws \think\db\exception\ModelNotFoundException
  640. * @throws \think\exception\DbException
  641. * @throws \think\exception\PDOException
  642. */
  643. public function CustomerSupplierData()
  644. {
  645. if ($this->request->isGet() === false){
  646. $this->error('请求错误');
  647. }
  648. $db3 = \db()->connect(config('database.db3'));
  649. $OrganizationalDataList = $db3->name('U8_03客户供应商')
  650. ->where('MES接收时间',null)
  651. ->where('MES接收状态','0')
  652. ->select();
  653. if (empty($OrganizationalDataList)){
  654. $this->success('未找到新的客户供应商');
  655. }
  656. $i = 0;
  657. foreach ($OrganizationalDataList as $key=>$value){
  658. $data = [
  659. '类型'=>$value['类型'],
  660. '编号'=>$value['编号'],
  661. '名称'=>$value['名称'],
  662. '简称'=>$value['简称'],
  663. '地址'=>$value['地址'],
  664. '对口部门'=>$value['对口部门'],
  665. '联系人'=>$value['联系人'],
  666. '电话'=>$value['电话'],
  667. '业务员'=>$value['业务员'],
  668. '币种'=>$value['币种'],
  669. 'Sys_id'=>'[272/超级用户]',
  670. 'Sys_rq'=>date('Y-m-d H:i:s',time()),
  671. 'Mod_rq'=>'1900-01-01 00:00:00',
  672. 'U8UID'=>$value['U8_UID'],
  673. 'UniqId'=>$value['UniqId'],
  674. ];
  675. $number = \db('erp_客户供应商')
  676. ->where('U8UID',$value['U8_UID'])
  677. ->count();
  678. if ($number === 0){
  679. $sql = \db('erp_客户供应商')->fetchSql(true)->insert($data);
  680. $res = \db()->query($sql);
  681. if ($res === false){
  682. $i++;
  683. }else{
  684. $sqlString = $db3->name('U8_03客户供应商')
  685. ->where('UniqId', $value['UniqId'])
  686. ->fetchSql(true)
  687. ->update([
  688. 'MES接收时间' => date('Y-m-d H:i:s', time()),
  689. 'MES接收状态' => '1'
  690. ]);
  691. $db3->execute($sqlString);
  692. }
  693. }else{
  694. $sql = \db('erp_客户供应商')
  695. ->fetchSql(true)
  696. ->where('U8UID',$value['U8_UID'])
  697. ->update($data);
  698. $res = \db()->query($sql);
  699. if ($res === false){
  700. $i++;
  701. }else{
  702. $sqlString = $db3->name('U8_03客户供应商')
  703. ->where('UniqId', $value['UniqId'])
  704. ->fetchSql(true)
  705. ->update([
  706. 'MES接收时间' => date('Y-m-d H:i:s', time()),
  707. 'MES接收状态' => '1'
  708. ]);
  709. $db3->execute($sqlString);
  710. }
  711. }
  712. }
  713. if ($i !== 0){
  714. $this->error('客户供应商同步失败');
  715. }else{
  716. $this->success('客户供应商同步成功');
  717. }
  718. }
  719. /**
  720. * 物料领用记录数据同步
  721. * @return void
  722. * @throws \think\Exception
  723. * @throws \think\db\exception\BindParamException
  724. * @throws \think\db\exception\DataNotFoundException
  725. * @throws \think\db\exception\ModelNotFoundException
  726. * @throws \think\exception\DbException
  727. * @throws \think\exception\PDOException
  728. */
  729. public function ReceiptRecordData()
  730. {
  731. if ($this->request->isGet() === false){
  732. $this->error('请求错误');
  733. }
  734. $db3 = \db()->connect(config('database.db3'));
  735. $OrganizationalDataList = $db3->name('U8_07物料领用')
  736. ->where('MES接收时间',null)
  737. ->where('MES接收状态','0')
  738. ->select();
  739. if (empty($OrganizationalDataList)){
  740. $this->success('未找到新的物料领用记录');
  741. }
  742. $i = 0;
  743. foreach ($OrganizationalDataList as $key=>$value){
  744. if (preg_match("/[A-Za-z]/",$value['工单编号'])){
  745. $workcode = $value['工单编号'];
  746. }else{
  747. $workcode = 'Y'.$value['工单编号'];
  748. }
  749. $data = [
  750. 'st_rq'=>$value['日期'],
  751. 'st_jylb'=>$value['交易类别'],
  752. 'st_gdbh'=>$workcode,
  753. '采购单号'=>$value['采购单号'],
  754. '供方批次'=>$value['供方批次'],
  755. 'st_wlbh'=>$value['物料编号'],
  756. 'st_sl'=>$value['领用数量'],
  757. 'st_dw'=>$value['领用单位'],
  758. '领用单价'=>$value['领用单价'],
  759. 'st_desc'=>$value['备注'],
  760. '仓库编号'=>$value['仓库编号'],
  761. 'st_dpt'=>$value['采购单号'],
  762. 'st_jtbh'=>$value['机台编号'],
  763. 'sys_id'=>'[272/超级用户]',
  764. 'sys_rq'=>date('Y-m-d H:i:s',time()),
  765. 'mod_rq'=>'1900-01-01 00:00:00',
  766. 'U8UID'=>$value['U8_UID'],
  767. 'Uniqid'=>$value['UniqId'],
  768. ];
  769. $number = \db('物料_收发记录')
  770. ->where('U8UID',$value['U8_UID'])
  771. ->count();
  772. if ($number === 0){
  773. $sql = \db('物料_收发记录')->fetchSql(true)->insert($data);
  774. $res = \db()->query($sql);
  775. if ($res === false){
  776. $i++;
  777. }else{
  778. $sqlString = $db3->name('U8_07物料领用')
  779. ->where('UniqId', $value['UniqId'])
  780. ->fetchSql(true)
  781. ->update([
  782. 'MES接收时间' => date('Y-m-d H:i:s', time()),
  783. 'MES接收状态' => '1'
  784. ]);
  785. $db3->execute($sqlString);
  786. }
  787. }else{
  788. $sql = \db('物料_收发记录')
  789. ->fetchSql(true)
  790. ->where('U8UID',$value['U8_UID'])
  791. ->update($data);
  792. $res = \db()->query($sql);
  793. if ($res === false){
  794. $i++;
  795. }else{
  796. $sqlString = $db3->name('U8_07物料领用')
  797. ->where('UniqId', $value['UniqId'])
  798. ->fetchSql(true)
  799. ->update([
  800. 'MES接收时间' => date('Y-m-d H:i:s', time()),
  801. 'MES接收状态' => '1'
  802. ]);
  803. $db3->execute($sqlString);
  804. }
  805. }
  806. }
  807. if ($i !== 0){
  808. $this->error('物料领用记录同步失败');
  809. }else{
  810. $this->success('物料领用记录同步成功');
  811. }
  812. }
  813. /**
  814. * 仓库信息数据同步
  815. * @return void
  816. * @throws \think\Exception
  817. * @throws \think\db\exception\BindParamException
  818. * @throws \think\db\exception\DataNotFoundException
  819. * @throws \think\db\exception\ModelNotFoundException
  820. * @throws \think\exception\DbException
  821. * @throws \think\exception\PDOException
  822. */
  823. public function WarehouseInformationData()
  824. {
  825. if ($this->request->isGet() === false){
  826. $this->error('请求错误');
  827. }
  828. $db3 = \db()->connect(config('database.db3'));
  829. $OrganizationalDataList = $db3->name('U8_12仓库信息')
  830. ->where('MES接收时间',null)
  831. ->where('MES接收状态','0')
  832. ->select();
  833. if (empty($OrganizationalDataList)){
  834. $this->success('未找到新的仓库信息');
  835. }
  836. $i = 0;
  837. foreach ($OrganizationalDataList as $key=>$value){
  838. $data = [
  839. '编号'=>$value['编号'],
  840. '名称'=>$value['名称'],
  841. 'Sys_id'=>'[272/超级用户]',
  842. 'Sys_rq'=>date('Y-m-d H:i:s',time()),
  843. 'Mod_rq'=>'1900-01-01 00:00:00',
  844. 'U8UID'=>$value['U8_UID'],
  845. 'UniqId'=>$value['UniqId'],
  846. ];
  847. $number = \db('物料_仓库信息')
  848. ->where('U8UID',$value['U8_UID'])
  849. ->count();
  850. if ($number === 0){
  851. $sql = \db('物料_仓库信息')->fetchSql(true)->insert($data);
  852. $res = \db()->query($sql);
  853. if ($res === false){
  854. $i++;
  855. }else{
  856. $sqlString = $db3->name('U8_12仓库信息')
  857. ->where('UniqId', $value['UniqId'])
  858. ->fetchSql(true)
  859. ->update([
  860. 'MES接收时间' => date('Y-m-d H:i:s', time()),
  861. 'MES接收状态' => '1'
  862. ]);
  863. $db3->execute($sqlString);
  864. }
  865. }else{
  866. $sql = \db('物料_仓库信息')
  867. ->fetchSql(true)
  868. ->where('U8UID',$value['U8_UID'])
  869. ->update($data);
  870. $res = \db()->query($sql);
  871. if ($res === false){
  872. $i++;
  873. }else{
  874. $sqlString = $db3->name('U8_12仓库信息')
  875. ->where('UniqId', $value['UniqId'])
  876. ->fetchSql(true)
  877. ->update([
  878. 'MES接收时间' => date('Y-m-d H:i:s', time()),
  879. 'MES接收状态' => '1'
  880. ]);
  881. $db3->execute($sqlString);
  882. }
  883. }
  884. }
  885. if ($i !== 0){
  886. $this->error('仓库信息同步失败');
  887. }else{
  888. $this->success('仓库信息同步成功');
  889. }
  890. }
  891. /**
  892. * 职位编码数据同步
  893. * @return void
  894. * @throws \think\Exception
  895. * @throws \think\db\exception\BindParamException
  896. * @throws \think\db\exception\DataNotFoundException
  897. * @throws \think\db\exception\ModelNotFoundException
  898. * @throws \think\exception\DbException
  899. * @throws \think\exception\PDOException
  900. */
  901. public function PositionData()
  902. {
  903. if ($this->request->isGet() === false){
  904. $this->error('请求错误');
  905. }
  906. $db3 = \db()->connect(config('database.db3'));
  907. $OrganizationalDataList = $db3->name('U8_13职位编码')
  908. ->where('MES接收时间',null)
  909. ->where('MES接收状态','0')
  910. ->select();
  911. if (empty($OrganizationalDataList)){
  912. $this->success('未找到新的职位编码');
  913. }
  914. $i = 0;
  915. foreach ($OrganizationalDataList as $key=>$value){
  916. $data = [
  917. '职位编码'=>$value['职位编码'],
  918. '职位名称'=>$value['职位名称'],
  919. '定编人数'=>0,
  920. '备注说明'=>'',
  921. 'sys_id'=>'[272/超级用户]',
  922. 'sys_rq'=>date('Y-m-d H:i:s',time()),
  923. 'Mod_rq'=>'1900-01-01 00:00:00',
  924. 'U8UID'=>$value['U8_UID'],
  925. 'UniqID'=>$value['UniqID'],
  926. ];
  927. $number = \db('人事_职位编码')
  928. ->where('U8UID',$value['U8_UID'])
  929. ->count();
  930. if ($number === 0){
  931. $sql = \db('人事_职位编码')->fetchSql(true)->insert($data);
  932. $res = \db()->query($sql);
  933. if ($res === false){
  934. $i++;
  935. }else{
  936. $sqlString = $db3->name('U8_13职位编码')
  937. ->where('UniqID', $value['UniqID'])
  938. ->fetchSql(true)
  939. ->update([
  940. 'MES接收时间' => date('Y-m-d H:i:s', time()),
  941. 'MES接收状态' => '1'
  942. ]);
  943. $db3->execute($sqlString);
  944. }
  945. }else{
  946. $sql = \db('人事_职位编码')
  947. ->fetchSql(true)
  948. ->where('U8UID',$value['U8_UID'])
  949. ->update($data);
  950. $res = \db()->query($sql);
  951. if ($res === false){
  952. $i++;
  953. }else{
  954. $sqlString = $db3->name('U8_13职位编码')
  955. ->where('UniqID', $value['UniqID'])
  956. ->fetchSql(true)
  957. ->update([
  958. 'MES接收时间' => date('Y-m-d H:i:s', time()),
  959. 'MES接收状态' => '1'
  960. ]);
  961. $db3->execute($sqlString);
  962. }
  963. }
  964. }
  965. if ($i !== 0){
  966. $this->error('职位编码同步失败');
  967. }else{
  968. $this->success('职位编码同步成功');
  969. }
  970. }
  971. /**
  972. * 设备产量计酬云中间表数据库同步
  973. * @return void
  974. * @throws \think\db\exception\BindParamException
  975. * @throws \think\db\exception\DataNotFoundException
  976. * @throws \think\db\exception\ModelNotFoundException
  977. * @throws \think\exception\DbException
  978. * @throws \think\exception\PDOException
  979. */
  980. public function ProductionData()
  981. {
  982. if ($this->request->isGet() === false){
  983. $this->error('请求错误');
  984. }
  985. if(is_dir(ROOT_PATH.'public/'.date('Y-m-d',time())) == null)
  986. {
  987. mkdir(ROOT_PATH.'public/'.date('Y-m-d',time()),0777,true);
  988. }
  989. $db5 = \db()->connect(config('database.db5'));
  990. $where = [
  991. 'sczl_rq' => ['>=','2024-04-01 00:00:00']
  992. ];
  993. $productData = $db5->name('设备_产量计酬')
  994. ->where($where)
  995. ->select();
  996. var_dump($productData);
  997. //获取机台信息
  998. $machineData = \db('设备_基本资料')
  999. ->where('mn_设备编号','<>','')
  1000. ->field('rtrim(设备编号) as 设备编号,rtrim(mn_设备编号) as 美浓设备编号')
  1001. ->select();
  1002. //获取员工资料
  1003. $employeeData = \db('人事_基本资料')
  1004. ->where('mn_员工编号','<>','')
  1005. ->field('rtrim(mn_员工编号) as 美浓员工编号')
  1006. ->select();
  1007. $employee = array_column($employeeData,'美浓员工编号');
  1008. //循环判断机台、员工编号
  1009. $j = 0;
  1010. $data = [];
  1011. foreach ($productData as $key=>$value){
  1012. //判断机台编号
  1013. foreach ($machineData as $v){
  1014. if ($value['sczl_jtbh'] === $v['美浓设备编号']){
  1015. $productData[$key]['sczl_jtbh'] = $v['设备编号'];
  1016. array_push($data,$productData[$key]);
  1017. }
  1018. }
  1019. }
  1020. if (empty($data)){
  1021. $this->error('未找到新的生产数据');
  1022. }
  1023. foreach ($data as $key=>$value){
  1024. $name = [];
  1025. //判断员工编号,如果不存在写入日志文件
  1026. for($i=1;$i<=10;$i++){
  1027. if (in_array($data[$key]['sczl_bh'.$i],$employee)){
  1028. $data[$key]['sczl_bh'.$i] = \db('人事_基本资料')
  1029. ->where('mn_员工编号',$data[$key]['sczl_bh'.$i])
  1030. ->value('员工编号');
  1031. }else{
  1032. array_push($name,$value['sczl_bh'.$i]);
  1033. $data[$key]['sczl_bh'.$i] = '';
  1034. }
  1035. }
  1036. $name = array_unique($name);
  1037. $filename = ROOT_PATH.'public/'.date('Y-m-d',time()).'/'.$value['sczl_jtbh'].'日志文件.txt';
  1038. $handle = fopen($filename, 'w');
  1039. foreach ($name as $v){
  1040. fwrite($handle, $v);
  1041. }
  1042. fclose($handle);
  1043. //修改工单编号
  1044. if (preg_match("/[A-Za-z]/",$value['sczl_gdbh'])){
  1045. $workcode = $value['sczl_gdbh'];
  1046. }else{
  1047. $workcode = 'Y'.$value['sczl_gdbh'];
  1048. }
  1049. $data[$key]['sczl_gdbh'] = $workcode;
  1050. }
  1051. //插入设备产量计酬数据
  1052. \db('设备_产量计酬')->delete(true);
  1053. $sql = \db('设备_产量计酬')->fetchSql(true)->insertAll($data);
  1054. $res = \db()->query($sql);
  1055. if ($res !== false){
  1056. $this->success('同步成功');
  1057. }else{
  1058. $this->error('同步失败');
  1059. }
  1060. }
  1061. }