Synchronization.php 43 KB

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