Synchronization.php 61 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536
  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. $sort = 0;
  33. if (substr($value['工单编号'],0,1) === 'Y'){
  34. $sort = 1;
  35. }else if (substr($value['工单编号'],-2) === 'JZ' || substr($value['工单编号'],-2) === 'JS'){
  36. $sort = 2;
  37. }
  38. $code = substr($value['成品编号'],0,5);
  39. $client = \db('物料_存货结构')->where('编号',$code)->value('名称');
  40. //插入产品资料
  41. $processData = \db('产品_基本资料')
  42. ->where('产品编号',$value['成品编号'])
  43. ->count();
  44. $detail = \db('物料_存货编码')->where('物料代码',$value['成品编号'])->find();
  45. if ($processData === 0){
  46. $product = [
  47. '客户编号' => $code,
  48. '客户名称' => $client,
  49. '产品编号' => $value['成品编号'],
  50. '产品名称' => $value['成品名称'],
  51. '计量单位' => $detail['领用单位'],
  52. '状态' => '',
  53. 'U8UID' => $detail['U8UID'],
  54. '产品类别' => $detail['规格'],
  55. 'Sys_id' => '[272/超级用户]',
  56. 'Sys_rq' => date('Y-m-d H:i:s',time()),
  57. 'Mod_rq' => date('Y-m-d H:i:s',time()),
  58. ];
  59. $productSql = \db('产品_基本资料')->fetchSql(true)->insert($product);
  60. \db()->query($productSql);
  61. }
  62. //插入工单资料
  63. if (substr($value['工单编号'],0,1) === 'Y' || substr($value['工单编号'],-2) === 'JZ' || substr($value['工单编号'],-2) === 'JS'){
  64. $data = [
  65. 'Gd_gdbh' => $value['工单编号'],
  66. '行号' => $value['行号'],
  67. 'Gd_客户代号' => $code,
  68. 'Gd_客户名称' => $client,
  69. 'Gd_khdh' => $value['客户编号'],
  70. 'Gd_khmc' => $value['客户名称'],
  71. '客户料号' => $value['客户料号'],
  72. '成品代号' => $value['成品编号'],
  73. '成品名称' => $value['成品名称'],
  74. 'Gd_cpdh' => $value['产品编号'],
  75. 'Gd_cpmc' => $value['产品名称'],
  76. '产品版本号' => $value['版本号'],
  77. '销售订单号' => $value['销售订单号'],
  78. '警语版面' => $value['警语版面'],
  79. '码源数量' => substr(str_replace('.','',$value['投料数量']),0,-2),
  80. 'Gd_desc' => $value['备注'],
  81. '接单日期' => $value['接单日期'],
  82. '开单日期' => $value['开单日期'],
  83. '交货日期' => $value['交货日期'],
  84. '订单数量' => $value['订单数量'],
  85. '实际投料' => $value['投料数量'],
  86. '产品单价' => $value['产品单价'],
  87. '计量单位' => '万张',
  88. '成本考核_胶印' => 1,
  89. '成本考核_凹印' => 1,
  90. '成本考核_丝印' => 1,
  91. '成本考核_模切' => 1,
  92. '成本考核_检验' => 1,
  93. 'gd_statu' => '3-计划中',
  94. 'Sys_id' => '[1012/开单员]',
  95. 'Sys_rq' => date('Y-m-d H:i:s',time()),
  96. 'Mod_rq' => date('Y-m-d H:i:s',time()),
  97. 'U8UID' => $value['U8_UID'],
  98. '工单分类' => $sort
  99. ];
  100. $workOrderdata = \db('工单_基本资料')
  101. ->where('U8UID',$value['U8_UID'])
  102. ->count();
  103. if ($workOrderdata === 0){
  104. $addSql = \db('工单_基本资料')->fetchSql(true)->insert($data);
  105. $result = \db()->query($addSql);
  106. if ($result === false){
  107. $m++;
  108. }else{
  109. $sqlString = $db3->name('U8_06工单资料')
  110. ->where('UniqId', $value['UniqId'])
  111. ->fetchSql(true)
  112. ->update([
  113. 'MES接收时间' => date('Y-m-d H:i:s', time()),
  114. 'MES接收状态' => '1'
  115. ]);
  116. $db3->execute($sqlString);
  117. }
  118. }else{
  119. unset($data['Uniqid']);
  120. $updateSql = \db('工单_基本资料')->where('U8UID',$value['U8_UID'])->fetchSql(true)->update($data);
  121. $updateRes = \db()->query($updateSql);
  122. if ($updateRes === false){
  123. $j++;
  124. }else{
  125. $sqlString = $db3->name('U8_06工单资料')
  126. ->where('UniqId', $value['UniqId'])
  127. ->fetchSql(true)
  128. ->update([
  129. 'MES接收时间' => date('Y-m-d H:i:s', time()),
  130. 'MES接收状态' => '1'
  131. ]);
  132. $db3->execute($sqlString);
  133. }
  134. }
  135. }
  136. }
  137. if ($j !== 0 || $m !==0 || $n !== 0){
  138. $this->error('工单资料同步失败');
  139. }else{
  140. $this->success('工单资料同步成功');
  141. }
  142. }
  143. /**
  144. * 工单bom资料同步
  145. */
  146. public function WorkOrderBomData()
  147. {
  148. if ($this->request->isGet() === false){
  149. $this->error('请求错误');
  150. }
  151. $db3 = Db::connect(config('database.db3'));
  152. $BomDataList = $db3->name('U8_09工单bom')
  153. ->where('MES接收时间',null)
  154. ->where('MES接收状态','0')
  155. ->order('U8传递时间 desc')
  156. ->select();
  157. if (empty($BomDataList)){
  158. $this->success('未找到新工单BOM');
  159. }
  160. $j = $m = 0;
  161. foreach ($BomDataList as $key=>$value){
  162. $res = \db('工单_bom资料')->where('U8UID',$value['U8_UID'])->count();
  163. if (preg_match("/[A-Za-z]/",$value['BOM_工单编号'])){
  164. $workcode = $value['BOM_工单编号'];
  165. }else{
  166. $workcode = 'Y'.$value['BOM_工单编号'];
  167. }
  168. $data = [
  169. 'BOM_方案' => '工单评审定案',
  170. 'BOM_工单编号' => $workcode,
  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_实际用量' => $value['BOM_实际用量'],
  183. 'BOM_计划用量' => $value['BOM_计划用量'],
  184. 'BOM_核算价格' => 0,
  185. 'Bom_领用工序' => '01-01',
  186. 'BOM_备注' => $value['BOM_备注'],
  187. 'Mod_rq' => date('Y-m-d H:i:s',time()),
  188. 'U8UID' => $value['U8_UID'],
  189. ];
  190. if ($res === 0){
  191. $addSql = \db('工单_bom资料')->fetchSql(true)->insert($data);
  192. $addRes = \db()->query($addSql);
  193. if ($addRes === false){
  194. $m++;
  195. }else{
  196. $sqlString = $db3->name('U8_09工单bom')
  197. ->where('UNIQID', $value['UNIQID'])
  198. ->fetchSql(true)
  199. ->update([
  200. 'MES接收时间' => date('Y-m-d H:i:s', time()),
  201. 'MES接收状态' => '1'
  202. ]);
  203. $db3->execute($sqlString);
  204. }
  205. }else{
  206. unset($data['UNIQID']);
  207. $updateSql = \db('工单_bom资料')
  208. ->where('U8UID',$value['U8_UID'])
  209. ->fetchSql(true)
  210. ->update($data);
  211. $updateRes = \db()->query($updateSql);
  212. if ($updateRes === false){
  213. $j++;
  214. }else{
  215. $sqlString = $db3->name('U8_09工单bom')
  216. ->where('UNIQID', $value['UNIQID'])
  217. ->fetchSql(true)
  218. ->update([
  219. 'MES接收时间' => date('Y-m-d H:i:s', time()),
  220. 'MES接收状态' => '1'
  221. ]);
  222. $db3->execute($sqlString);
  223. }
  224. }
  225. }
  226. if ($j !== 0 || $m !== 0){
  227. $this->error('工单BOM资料同步失败');
  228. }else{
  229. $this->success('工单BOM资料同步成功');
  230. }
  231. }
  232. /**
  233. * 存货结构数据同步
  234. */
  235. public function MaterialRequisitionData()
  236. {
  237. if ($this->request->isGet() === false){
  238. $this->error('请求错误');
  239. }
  240. $db3 = \db()->connect(config('database.db3'));
  241. $MaterialDataList = $db3->name('U8_11存货结构')
  242. ->where('MES接收时间',null)
  243. ->where('MES接收状态','0')
  244. ->select();
  245. if (empty($MaterialDataList)){
  246. $this->success('未找到新的物料存货结构');
  247. }
  248. $i = 0;
  249. foreach ($MaterialDataList as $key=>$value){
  250. $data = [
  251. '编号' => $value['编号'],
  252. '名称' => $value['名称'],
  253. 'Sys_id' => '[272/超级用户]',
  254. 'Sys_rq' => date('Y-m-d H:i:s',time()),
  255. 'Mod_rq' => date('Y-m-d H:i:s',time()),
  256. 'U8UID' => $value['U8_UID'],
  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. ];
  398. $number = \db('人事_基本资料')
  399. ->where('U8UID',$value['U8_UID'])
  400. ->count();
  401. if ($number === 0){
  402. $sql = \db('人事_基本资料')->fetchSql(true)->insert($data);
  403. $res = \db()->query($sql);
  404. if ($res === false){
  405. $i++;
  406. }else{
  407. $sqlString = $db3->name('U8_02人事资料')
  408. ->where('UniqId', $value['UniqId'])
  409. ->fetchSql(true)
  410. ->update([
  411. 'MES接收时间' => date('Y-m-d H:i:s', time()),
  412. 'MES接收状态' => '1'
  413. ]);
  414. $db3->execute($sqlString);
  415. }
  416. }else{
  417. $sql = \db('人事_基本资料')
  418. ->fetchSql(true)
  419. ->where('U8UID',$value['U8_UID'])
  420. ->update($data);
  421. $res = \db()->query($sql);
  422. if ($res === false){
  423. $i++;
  424. }else{
  425. $sqlString = $db3->name('U8_02人事资料')
  426. ->where('UniqId', $value['UniqId'])
  427. ->fetchSql(true)
  428. ->update([
  429. 'MES接收时间' => date('Y-m-d H:i:s', time()),
  430. 'MES接收状态' => '1'
  431. ]);
  432. $db3->execute($sqlString);
  433. }
  434. }
  435. }
  436. if ($i !== 0){
  437. $this->error('人事资料同步失败');
  438. }else{
  439. $this->success('人事资料同步成功');
  440. //14906570@qq.com
  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. ];
  477. $number = \db('人事_组织结构')
  478. ->where('U8UID',$value['U8_UID'])
  479. ->count();
  480. if ($number === 0){
  481. $sql = \db('人事_组织结构')->fetchSql(true)->insert($data);
  482. $res = \db()->query($sql);
  483. if ($res === false){
  484. $i++;
  485. }else{
  486. $sqlString = $db3->name('U8_01组织结构')
  487. ->where('UniqId', $value['UniqId'])
  488. ->fetchSql(true)
  489. ->update([
  490. 'MES接收时间' => date('Y-m-d H:i:s', time()),
  491. 'MES接收状态' => '1'
  492. ]);
  493. $db3->execute($sqlString);
  494. }
  495. }else{
  496. $sql = \db('人事_组织结构')
  497. ->fetchSql(true)
  498. ->where('U8UID',$value['U8_UID'])
  499. ->update($data);
  500. $res = \db()->query($sql);
  501. if ($res === false){
  502. $i++;
  503. }else{
  504. $sqlString = $db3->name('U8_01组织结构')
  505. ->where('UniqId', $value['UniqId'])
  506. ->fetchSql(true)
  507. ->update([
  508. 'MES接收时间' => date('Y-m-d H:i:s', time()),
  509. 'MES接收状态' => '1'
  510. ]);
  511. $db3->execute($sqlString);
  512. }
  513. }
  514. }
  515. if ($i !== 0){
  516. $this->error('人事组织结构同步失败');
  517. }else{
  518. $this->success('人事组织结构同步成功');
  519. }
  520. }
  521. /**
  522. * 物料存货编码数据同步
  523. * @return void
  524. * @throws \think\Exception
  525. * @throws \think\db\exception\BindParamException
  526. * @throws \think\db\exception\DataNotFoundException
  527. * @throws \think\db\exception\ModelNotFoundException
  528. * @throws \think\exception\DbException
  529. * @throws \think\exception\PDOException
  530. */
  531. public function InventoryCodeData()
  532. {
  533. if ($this->request->isGet() === false){
  534. $this->error('请求错误');
  535. }
  536. $db3 = \db()->connect(config('database.db3'));
  537. $OrganizationalDataList = $db3->name('U8_04物料编码')
  538. ->where('MES接收时间',null)
  539. ->where('MES接收状态','0')
  540. ->select();
  541. if (empty($OrganizationalDataList)){
  542. $this->success('未找到新的物料编码');
  543. }
  544. $i = 0;
  545. foreach ($OrganizationalDataList as $key=>$value){
  546. $code = substr($value['物料代码'],0,3);
  547. if ($code === 'Y10' || $code === 'Y14' || $code === 'Y12' || $code === 'J00' || $code === 'J01' || $code === 'J02'){
  548. //插入产品资料
  549. $productData = \db('产品_基本资料')
  550. ->where('产品编号',$value['物料代码'])
  551. ->count();
  552. $clientCode = substr($value['物料代码'],0,5);
  553. $clientName = \db('物料_存货结构')->where('编号',$clientCode)->value('rtrim(名称)');
  554. $product = [
  555. '客户编号' => $clientCode,
  556. '客户名称' => $clientName,
  557. '产品编号' => $value['物料代码'],
  558. '产品名称' => $value['物料名称'],
  559. '计量单位' => $value['领用单位'],
  560. '状态' => '',
  561. 'U8UID' => $value['U8_UID'],
  562. '产品类别' => $value['规格'],
  563. 'Sys_id' => '[272/超级用户]',
  564. 'Sys_rq' => date('Y-m-d H:i:s',time()),
  565. 'Mod_rq' => date('Y-m-d H:i:s',time()),
  566. ];
  567. if ($productData === 0){
  568. $productSql = \db('产品_基本资料')->fetchSql(true)->insert($product);
  569. }else{
  570. $productSql = \db('产品_基本资料')->where('产品编号',$value['物料代码'])->fetchSql(true)->update($product);
  571. }
  572. $productRes = \db()->query($productSql);
  573. }
  574. $data = [
  575. '物料代码'=>$value['物料代码'],
  576. '物料名称'=>$value['物料名称'],
  577. '规格'=>$value['规格'],
  578. '采购单位'=>$value['采购单位'],
  579. '领用单位'=>$value['领用单位'],
  580. '单位换算率'=>$value['单位换算率'],
  581. '单价'=>$value['单价'],
  582. '币种'=>$value['币种'],
  583. '物料备注'=>$value['物料备注'],
  584. '状态'=>$value['状态'],
  585. 'Sys_id'=>'[272/超级用户]',
  586. 'Sys_rq'=>date('Y-m-d H:i:s',time()),
  587. 'Mod_rq'=>'1900-01-01 00:00:00',
  588. 'U8UID'=>$value['U8_UID'],
  589. ];
  590. $number = \db('物料_存货编码')
  591. ->where('U8UID',$value['U8_UID'])
  592. ->count();
  593. if ($number === 0){
  594. $sql = \db('物料_存货编码')->fetchSql(true)->insert($data);
  595. $res = \db()->query($sql);
  596. if ($res === false){
  597. $i++;
  598. }else{
  599. $sqlString = $db3->name('U8_04物料编码')
  600. ->where('UniqId', $value['UniqId'])
  601. ->fetchSql(true)
  602. ->update([
  603. 'MES接收时间' => date('Y-m-d H:i:s', time()),
  604. 'MES接收状态' => '1'
  605. ]);
  606. $db3->execute($sqlString);
  607. }
  608. }else{
  609. $sql = \db('物料_存货编码')
  610. ->fetchSql(true)
  611. ->where('U8UID',$value['U8_UID'])
  612. ->update($data);
  613. $res = \db()->query($sql);
  614. if ($res === false){
  615. $i++;
  616. }else{
  617. $sqlString = $db3->name('U8_04物料编码')
  618. ->where('UniqId', $value['UniqId'])
  619. ->fetchSql(true)
  620. ->update([
  621. 'MES接收时间' => date('Y-m-d H:i:s', time()),
  622. 'MES接收状态' => '1'
  623. ]);
  624. $db3->execute($sqlString);
  625. }
  626. }
  627. }
  628. if ($i !== 0){
  629. $this->error('物料编码同步失败');
  630. }else{
  631. $this->success('物料编码同步成功');
  632. }
  633. }
  634. /**
  635. * 客户供应商数据同步
  636. * @return void
  637. * @throws \think\Exception
  638. * @throws \think\db\exception\BindParamException
  639. * @throws \think\db\exception\DataNotFoundException
  640. * @throws \think\db\exception\ModelNotFoundException
  641. * @throws \think\exception\DbException
  642. * @throws \think\exception\PDOException
  643. */
  644. public function CustomerSupplierData()
  645. {
  646. if ($this->request->isGet() === false){
  647. $this->error('请求错误');
  648. }
  649. $db3 = \db()->connect(config('database.db3'));
  650. $OrganizationalDataList = $db3->name('U8_03客户供应商')
  651. ->where('MES接收时间',null)
  652. ->where('MES接收状态','0')
  653. ->select();
  654. if (empty($OrganizationalDataList)){
  655. $this->success('未找到新的客户供应商');
  656. }
  657. $i = 0;
  658. foreach ($OrganizationalDataList as $key=>$value){
  659. $data = [
  660. '类型'=>$value['类型'],
  661. '编号'=>$value['编号'],
  662. '名称'=>$value['名称'],
  663. '简称'=>$value['简称'],
  664. '地址'=>$value['地址'],
  665. '对口部门'=>$value['对口部门'],
  666. '联系人'=>$value['联系人'],
  667. '电话'=>$value['电话'],
  668. '业务员'=>$value['业务员'],
  669. '币种'=>$value['币种'],
  670. 'Sys_id'=>'[272/超级用户]',
  671. 'Sys_rq'=>date('Y-m-d H:i:s',time()),
  672. 'Mod_rq'=>'1900-01-01 00:00:00',
  673. 'U8UID'=>$value['U8_UID'],
  674. 'UniqId'=>$value['UniqId'],
  675. ];
  676. $number = \db('erp_客户供应商')
  677. ->where('U8UID',$value['U8_UID'])
  678. ->count();
  679. if ($number === 0){
  680. $sql = \db('erp_客户供应商')->fetchSql(true)->insert($data);
  681. $res = \db()->query($sql);
  682. if ($res === false){
  683. $i++;
  684. }else{
  685. $sqlString = $db3->name('U8_03客户供应商')
  686. ->where('UniqId', $value['UniqId'])
  687. ->fetchSql(true)
  688. ->update([
  689. 'MES接收时间' => date('Y-m-d H:i:s', time()),
  690. 'MES接收状态' => '1'
  691. ]);
  692. $db3->execute($sqlString);
  693. }
  694. }else{
  695. $sql = \db('erp_客户供应商')
  696. ->fetchSql(true)
  697. ->where('U8UID',$value['U8_UID'])
  698. ->update($data);
  699. $res = \db()->query($sql);
  700. if ($res === false){
  701. $i++;
  702. }else{
  703. $sqlString = $db3->name('U8_03客户供应商')
  704. ->where('UniqId', $value['UniqId'])
  705. ->fetchSql(true)
  706. ->update([
  707. 'MES接收时间' => date('Y-m-d H:i:s', time()),
  708. 'MES接收状态' => '1'
  709. ]);
  710. $db3->execute($sqlString);
  711. }
  712. }
  713. }
  714. if ($i !== 0){
  715. $this->error('客户供应商同步失败');
  716. }else{
  717. $this->success('客户供应商同步成功');
  718. }
  719. }
  720. /**
  721. * 物料领用记录数据同步
  722. * @return void
  723. * @throws \think\Exception
  724. * @throws \think\db\exception\BindParamException
  725. * @throws \think\db\exception\DataNotFoundException
  726. * @throws \think\db\exception\ModelNotFoundException
  727. * @throws \think\exception\DbException
  728. * @throws \think\exception\PDOException
  729. */
  730. public function ReceiptRecordData()
  731. {
  732. if ($this->request->isGet() === false){
  733. $this->error('请求错误');
  734. }
  735. $db3 = \db()->connect(config('database.db3'));
  736. $OrganizationalDataList = $db3->name('U8_07物料领用')
  737. ->where('MES接收时间',null)
  738. ->where('MES接收状态','0')
  739. ->select();
  740. if (empty($OrganizationalDataList)){
  741. $this->success('未找到新的物料领用记录');
  742. }
  743. $i = 0;
  744. foreach ($OrganizationalDataList as $key=>$value){
  745. if (preg_match("/[A-Za-z]/",$value['工单编号'])){
  746. $workcode = $value['工单编号'];
  747. }else{
  748. $workcode = 'Y'.$value['工单编号'];
  749. }
  750. $data = [
  751. 'st_rq'=>$value['日期'],
  752. 'st_jylb'=>$value['交易类别'],
  753. 'st_gdbh'=>$workcode,
  754. '采购单号'=>$value['采购单号'],
  755. '供方批次'=>$value['供方批次'],
  756. 'st_wlbh'=>$value['物料编号'],
  757. 'st_sl'=>$value['领用数量'],
  758. 'st_dw'=>$value['领用单位'],
  759. '领用单价'=>$value['领用单价'],
  760. 'st_desc'=>$value['备注'],
  761. '仓库编号'=>$value['仓库编号'],
  762. 'st_dpt'=>$value['采购单号'],
  763. 'st_jtbh'=>$value['机台编号'],
  764. 'sys_id'=>'[272/超级用户]',
  765. 'sys_rq'=>date('Y-m-d H:i:s',time()),
  766. 'mod_rq'=>'1900-01-01 00:00:00',
  767. 'U8UID'=>$value['U8_UID'],
  768. 'cpdh' => $value['产品编码']
  769. ];
  770. $number = \db('物料_收发记录')
  771. ->where('U8UID',$value['U8_UID'])
  772. ->count();
  773. if ($number === 0){
  774. $sql = \db('物料_收发记录')->fetchSql(true)->insert($data);
  775. $res = \db()->query($sql);
  776. if ($res === false){
  777. $i++;
  778. }else{
  779. $sqlString = $db3->name('U8_07物料领用')
  780. ->where('UniqId', $value['UniqId'])
  781. ->fetchSql(true)
  782. ->update([
  783. 'MES接收时间' => date('Y-m-d H:i:s', time()),
  784. 'MES接收状态' => '1'
  785. ]);
  786. $db3->execute($sqlString);
  787. }
  788. }else{
  789. $sql = \db('物料_收发记录')
  790. ->fetchSql(true)
  791. ->where('U8UID',$value['U8_UID'])
  792. ->update($data);
  793. $res = \db()->query($sql);
  794. if ($res === false){
  795. $i++;
  796. }else{
  797. $sqlString = $db3->name('U8_07物料领用')
  798. ->where('UniqId', $value['UniqId'])
  799. ->fetchSql(true)
  800. ->update([
  801. 'MES接收时间' => date('Y-m-d H:i:s', time()),
  802. 'MES接收状态' => '1'
  803. ]);
  804. $db3->execute($sqlString);
  805. }
  806. }
  807. }
  808. if ($i !== 0){
  809. $this->error('物料领用记录同步失败');
  810. }else{
  811. $this->success('物料领用记录同步成功');
  812. }
  813. }
  814. /**
  815. * 仓库信息数据同步
  816. * @return void
  817. * @throws \think\Exception
  818. * @throws \think\db\exception\BindParamException
  819. * @throws \think\db\exception\DataNotFoundException
  820. * @throws \think\db\exception\ModelNotFoundException
  821. * @throws \think\exception\DbException
  822. * @throws \think\exception\PDOException
  823. */
  824. public function WarehouseInformationData()
  825. {
  826. if ($this->request->isGet() === false){
  827. $this->error('请求错误');
  828. }
  829. $db3 = \db()->connect(config('database.db3'));
  830. $OrganizationalDataList = $db3->name('U8_12仓库信息')
  831. ->where('MES接收时间',null)
  832. ->where('MES接收状态','0')
  833. ->select();
  834. if (empty($OrganizationalDataList)){
  835. $this->success('未找到新的仓库信息');
  836. }
  837. $i = 0;
  838. foreach ($OrganizationalDataList as $key=>$value){
  839. $data = [
  840. '编号'=>$value['编号'],
  841. '名称'=>$value['名称'],
  842. 'Sys_id'=>'[272/超级用户]',
  843. 'Sys_rq'=>date('Y-m-d H:i:s',time()),
  844. 'Mod_rq'=>'1900-01-01 00:00:00',
  845. 'U8UID'=>$value['U8_UID'],
  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. ];
  926. $number = \db('人事_职位编码')
  927. ->where('U8UID',$value['U8_UID'])
  928. ->count();
  929. if ($number === 0){
  930. $sql = \db('人事_职位编码')->fetchSql(true)->insert($data);
  931. $res = \db()->query($sql);
  932. if ($res === false){
  933. $i++;
  934. }else{
  935. $sqlString = $db3->name('U8_13职位编码')
  936. ->where('UniqID', $value['UniqID'])
  937. ->fetchSql(true)
  938. ->update([
  939. 'MES接收时间' => date('Y-m-d H:i:s', time()),
  940. 'MES接收状态' => '1'
  941. ]);
  942. $db3->execute($sqlString);
  943. }
  944. }else{
  945. $sql = \db('人事_职位编码')
  946. ->fetchSql(true)
  947. ->where('U8UID',$value['U8_UID'])
  948. ->update($data);
  949. $res = \db()->query($sql);
  950. if ($res === false){
  951. $i++;
  952. }else{
  953. $sqlString = $db3->name('U8_13职位编码')
  954. ->where('UniqID', $value['UniqID'])
  955. ->fetchSql(true)
  956. ->update([
  957. 'MES接收时间' => date('Y-m-d H:i:s', time()),
  958. 'MES接收状态' => '1'
  959. ]);
  960. $db3->execute($sqlString);
  961. }
  962. }
  963. }
  964. if ($i !== 0){
  965. $this->error('职位编码同步失败');
  966. }else{
  967. $this->success('职位编码同步成功');
  968. }
  969. }
  970. /**
  971. * 设备产量计酬云中间表数据库同步
  972. * @return void
  973. * @throws \think\db\exception\BindParamException
  974. * @throws \think\db\exception\DataNotFoundException
  975. * @throws \think\db\exception\ModelNotFoundException
  976. * @throws \think\exception\DbException
  977. * @throws \think\exception\PDOException
  978. */
  979. // public function ProductionData()
  980. // {
  981. // if ($this->request->isGet() === false){
  982. // $this->error('请求错误');
  983. // }
  984. // if(is_dir(ROOT_PATH.'public/'.date('Y-m-d',time())) == null)
  985. // {
  986. // mkdir(ROOT_PATH.'public/'.date('Y-m-d',time()),0777,true);
  987. // }
  988. // $machineList = \db('设备_基本资料')
  989. // ->where('mn_设备编号','<>','')
  990. // ->where('sys_sbID','<>','')
  991. // ->field('mn_设备编号')
  992. // ->select();
  993. // $machine = [];
  994. // foreach ($machineList as $value){
  995. // array_push($machine,$value['mn_设备编号']);
  996. // }
  997. // $db5 = \db()->connect(config('database.db5'));
  998. // $where = [
  999. // 'sczl_rq' => ['>=','2024-05-01 00:00:00']
  1000. // ];
  1001. // $productData = $db5->name('设备_产量计酬')
  1002. // ->where($where)
  1003. // ->where('sczl_jtbh','in',$machine)
  1004. // ->select();
  1005. // //获取机台信息
  1006. // $machineData = \db('设备_基本资料')
  1007. // ->where('mn_设备编号','<>','')
  1008. // ->where('sys_sbID','<>','')
  1009. // ->field('rtrim(设备编号) as 设备编号,rtrim(mn_设备编号) as 美浓设备编号')
  1010. // ->select();
  1011. // //获取员工资料
  1012. // $employeeData = \db('人事_基本资料')
  1013. // ->where('mn_员工编号','<>','')
  1014. // ->field('rtrim(mn_员工编号) as 美浓员工编号')
  1015. // ->select();
  1016. // $employee = array_column($employeeData,'美浓员工编号');
  1017. // //循环判断机台、员工编号
  1018. // $j = 0;
  1019. // $data = [];
  1020. // foreach ($productData as $key=>$value){
  1021. //// 判断机台编号
  1022. // foreach ($machineData as $v){
  1023. // if ($value['sczl_jtbh'] === $v['美浓设备编号']){
  1024. // $productData[$key]['sczl_jtbh'] = $v['美浓设备编号'];
  1025. // array_push($data,$productData[$key]);
  1026. // }
  1027. // }
  1028. // }
  1029. // if (empty($data)){
  1030. // $this->error('未找到新的生产数据');
  1031. // }
  1032. // foreach ($data as $key=>$value){
  1033. // $name = [];
  1034. // //判断员工编号,如果不存在写入日志文件
  1035. // for($i=1;$i<=10;$i++){
  1036. // if (in_array($data[$key]['sczl_bh'.$i],$employee)){
  1037. // $data[$key]['sczl_bh'.$i] = \db('人事_基本资料')
  1038. // ->where('mn_员工编号',$data[$key]['sczl_bh'.$i])
  1039. // ->value('员工编号');
  1040. // }else{
  1041. // array_push($name,$value['sczl_bh'.$i]);
  1042. // $data[$key]['sczl_bh'.$i] = '';
  1043. // }
  1044. //
  1045. // }
  1046. // $name = array_unique($name);
  1047. // $filename = ROOT_PATH.'public/'.date('Y-m-d',time()).'/'.$value['sczl_jtbh'].'日志文件.txt';
  1048. // $handle = fopen($filename, 'w');
  1049. // foreach ($name as $v){
  1050. // fwrite($handle, $v);
  1051. // }
  1052. // fclose($handle);
  1053. // //修改工单编号
  1054. //// if (preg_match("/[A-Za-z]/",$value['sczl_gdbh'])){
  1055. //// $workcode = $value['sczl_gdbh'];
  1056. //// }else{
  1057. //// $workcode = 'Y'.$value['sczl_gdbh'];
  1058. //// }
  1059. //// $data[$key]['sczl_gdbh'] = $workcode;
  1060. // }
  1061. // //插入设备产量计酬数据
  1062. // \db('设备_产量计酬')->delete(true);
  1063. // $sql = \db('设备_产量计酬')->fetchSql(true)->insertAll($data);
  1064. // $res = \db()->query($sql);
  1065. // if ($res !== false){
  1066. // $this->success('同步成功');
  1067. // }else{
  1068. // $this->error('同步失败');
  1069. // }
  1070. // }
  1071. //工单核检单同步
  1072. // public function copy()
  1073. // {
  1074. // $param = $this->request->param();
  1075. // $db5 = \db()->connect(config('database.db5'));
  1076. // $list = $db5->name('db_qczl')
  1077. // ->where('qczl_gdbh',$param['order'])
  1078. // ->where('qczl_yjno',$param['yjno'])
  1079. // ->select();
  1080. // foreach ($list as $key=>$value){
  1081. // for ($i=1;$i<14;$i++){
  1082. // if (!empty($value['fp_bh'.$i])){
  1083. // $name = \db('人事_基本资料')
  1084. // ->where('mn_员工编号',$value['fp_bh'.$i])
  1085. // ->order('Uniqid')
  1086. // ->value('员工编号');
  1087. // if (empty($name)){
  1088. // $name = '0000';
  1089. // }
  1090. // $list[$key]['fp_bh'.$i] = $name;
  1091. // }
  1092. // }
  1093. // }
  1094. // $sql = \db('db_qczl')->fetchSql(true)->insertAll($list);
  1095. // \db()->query($sql);
  1096. // }
  1097. /**
  1098. * 美浓工单数据同步
  1099. * @return void
  1100. * @throws \think\Exception
  1101. * @throws \think\db\exception\BindParamException
  1102. * @throws \think\db\exception\DataNotFoundException
  1103. * @throws \think\db\exception\ModelNotFoundException
  1104. * @throws \think\exception\DbException
  1105. * @throws \think\exception\PDOException
  1106. */
  1107. public function MNWorkOrderData()
  1108. {
  1109. if ($this->request->isGet() === false){
  1110. $this->error('请求错误');
  1111. }
  1112. $db7 = Db::connect(config('database.db7'));
  1113. $workOrderList = $db7->name('U8_06工单资料')
  1114. ->where('YX接收时间',null)
  1115. ->where('YX接收状态',null)
  1116. ->where('U8插入类型','<>','关闭')
  1117. ->select();
  1118. if (empty($workOrderList)){
  1119. $this->success('未获取新工单');
  1120. }
  1121. $j = $m = $n =0;
  1122. foreach ($workOrderList as $key=>$value){
  1123. $sort = 3;
  1124. $code = substr($value['成品编号'],0,4);
  1125. $client = \db('物料_存货结构')->where('编号',$code)->value('名称');
  1126. //插入产品资料
  1127. $processData = \db('产品_基本资料')
  1128. ->where('产品编号',$value['成品编号'])
  1129. ->count();
  1130. $detail = \db('物料_存货编码')->where('物料代码',$value['成品编号'])->find();
  1131. if ($processData === 0){
  1132. $product = [
  1133. '客户编号' => $code,
  1134. '客户名称' => $client,
  1135. '产品编号' => $value['成品编号'],
  1136. '产品名称' => $value['成品名称'],
  1137. '计量单位' => $detail['领用单位'],
  1138. '状态' => '',
  1139. 'U8UID' => $detail['U8UID'],
  1140. '产品类别' => $detail['规格'],
  1141. 'Sys_id' => '[272/超级用户]',
  1142. 'Sys_rq' => date('Y-m-d H:i:s',time()),
  1143. 'Mod_rq' => date('Y-m-d H:i:s',time()),
  1144. ];
  1145. $productSql = \db('产品_基本资料')->fetchSql(true)->insert($product);
  1146. \db()->query($productSql);
  1147. }
  1148. //插入工单资料
  1149. $data = [
  1150. 'Gd_gdbh' => $value['工单编号'],
  1151. '行号' => $value['行号'],
  1152. 'Gd_客户代号' => $code,
  1153. 'Gd_客户名称' => $client,
  1154. 'Gd_khdh' => $value['客户编号'],
  1155. 'Gd_khmc' => $value['客户名称'],
  1156. '客户料号' => $value['客户料号'],
  1157. '成品代号' => $value['成品编号'],
  1158. '成品名称' => $value['成品名称'],
  1159. 'Gd_cpdh' => $value['产品编号'],
  1160. 'Gd_cpmc' => $value['产品名称'],
  1161. '产品版本号' => $value['版本号'],
  1162. '销售订单号' => $value['销售订单号'],
  1163. '警语版面' => $value['警语版面'],
  1164. '码源数量' => substr(str_replace('.','',$value['投料数量']),0,-2),
  1165. 'Gd_desc' => $value['备注'],
  1166. '接单日期' => $value['接单日期'],
  1167. '开单日期' => $value['开单日期'],
  1168. '交货日期' => $value['交货日期'],
  1169. '订单数量' => $value['订单数量'],
  1170. '实际投料' => $value['投料数量'],
  1171. '产品单价' => $value['产品单价'],
  1172. '计量单位' => '万张',
  1173. '成本考核_胶印' => 1,
  1174. '成本考核_凹印' => 1,
  1175. '成本考核_丝印' => 1,
  1176. '成本考核_模切' => 1,
  1177. '成本考核_检验' => 1,
  1178. 'gd_statu' => '3-计划中',
  1179. 'Sys_id' => '[1012/开单员]',
  1180. 'Sys_rq' => date('Y-m-d H:i:s',time()),
  1181. 'Mod_rq' => date('Y-m-d H:i:s',time()),
  1182. 'U8UID' => $value['U8_UID'],
  1183. '工单分类' => $sort
  1184. ];
  1185. $workOrderdata = \db('工单_基本资料')
  1186. ->where('U8UID',$value['U8_UID'])
  1187. ->count();
  1188. if ($workOrderdata === 0){
  1189. $addSql = \db('工单_基本资料')->fetchSql(true)->insert($data);
  1190. $result = \db()->query($addSql);
  1191. if ($result === false){
  1192. $m++;
  1193. }else{
  1194. $sqlString = $db7->name('U8_06工单资料')
  1195. ->where('UniqId', $value['UniqId'])
  1196. ->fetchSql(true)
  1197. ->update([
  1198. 'YX接收时间' => date('Y-m-d H:i:s', time()),
  1199. 'YX接收状态' => '1'
  1200. ]);
  1201. $db7->execute($sqlString);
  1202. }
  1203. }else{
  1204. $updateSql = \db('工单_基本资料')->where('U8UID',$value['U8_UID'])->fetchSql(true)->update($data);
  1205. $updateRes = \db()->query($updateSql);
  1206. if ($updateRes === false){
  1207. $j++;
  1208. }else{
  1209. $sqlString = $db7->name('U8_06工单资料')
  1210. ->where('UniqId', $value['UniqId'])
  1211. ->fetchSql(true)
  1212. ->update([
  1213. 'YX接收时间' => date('Y-m-d H:i:s', time()),
  1214. 'YX接收状态' => '1'
  1215. ]);
  1216. $db7->execute($sqlString);
  1217. }
  1218. }
  1219. }
  1220. if ($j !== 0 || $m !==0 || $n !== 0){
  1221. $this->error('工单资料同步失败');
  1222. }else{
  1223. $this->success('工单资料同步成功');
  1224. }
  1225. }
  1226. /**
  1227. * 美浓工单BOM同步
  1228. * @return void
  1229. * @throws \think\Exception
  1230. * @throws \think\db\exception\BindParamException
  1231. * @throws \think\db\exception\DataNotFoundException
  1232. * @throws \think\db\exception\ModelNotFoundException
  1233. * @throws \think\exception\DbException
  1234. * @throws \think\exception\PDOException
  1235. */
  1236. public function MNWorkOrderBomData()
  1237. {
  1238. if ($this->request->isGet() === false){
  1239. $this->error('请求错误');
  1240. }
  1241. $db7 = Db::connect(config('database.db7'));
  1242. $BomDataList = $db7->name('U8_09工单bom')
  1243. ->where('YX接收时间',null)
  1244. ->where('YX接收状态',null)
  1245. ->order('U8传递时间 desc')
  1246. ->select();
  1247. if (empty($BomDataList)){
  1248. $this->success('未找到新工单BOM');
  1249. }
  1250. $j = $m = 0;
  1251. foreach ($BomDataList as $key=>$value){
  1252. $res = \db('工单_bom资料')->where('U8UID',$value['U8_UID'])->count();
  1253. $data = [
  1254. 'BOM_方案' => '工单评审定案',
  1255. 'BOM_工单编号' => $value['BOM_工单编号'],
  1256. 'BOM_版本' => $value['BOM_版本'],
  1257. 'BOM_工单行号' => $value['BOM_工单行号'],
  1258. 'BOM_行号' => $value['BOM_行号'],
  1259. 'BOM_产品编号' => $value['BOM_产品编号'],
  1260. 'BOM_物料编码' => $value['BOM_物料编码'],
  1261. 'BOM_物料名称' => $value['BOM_物料名称'],
  1262. 'BOM_投料单位' => $value['BOM_投料单位'],
  1263. 'BOM_投入数' => $value['BOM_投入数'],
  1264. 'BOM_产出数' => $value['BOM_产出数'],
  1265. 'BOM_产出单位' => $value['BOM_产出单位'],
  1266. 'BOM_标准用量' => $value['BOM_标准用量'],
  1267. 'BOM_实际用量' => $value['BOM_实际用量'],
  1268. 'BOM_计划用量' => $value['BOM_计划用量'],
  1269. 'BOM_核算价格' => 0,
  1270. 'Bom_领用工序' => '01-01',
  1271. 'BOM_备注' => $value['BOM_备注'],
  1272. 'Mod_rq' => date('Y-m-d H:i:s',time()),
  1273. 'U8UID' => $value['U8_UID'],
  1274. ];
  1275. if ($res === 0){
  1276. $addSql = \db('工单_bom资料')->fetchSql(true)->insert($data);
  1277. $addRes = \db()->query($addSql);
  1278. if ($addRes === false){
  1279. $m++;
  1280. }else{
  1281. $sqlString = $db7->name('U8_09工单bom')
  1282. ->where('UNIQID', $value['UNIQID'])
  1283. ->fetchSql(true)
  1284. ->update([
  1285. 'YX接收时间' => date('Y-m-d H:i:s', time()),
  1286. 'YX接收状态' => '1'
  1287. ]);
  1288. $db7->execute($sqlString);
  1289. }
  1290. }else{
  1291. unset($data['UNIQID']);
  1292. $updateSql = \db('工单_bom资料')
  1293. ->where('U8UID',$value['U8_UID'])
  1294. ->fetchSql(true)
  1295. ->update($data);
  1296. $updateRes = \db()->query($updateSql);
  1297. if ($updateRes === false){
  1298. $j++;
  1299. }else{
  1300. $sqlString = $db7->name('U8_09工单bom')
  1301. ->where('UNIQID', $value['UNIQID'])
  1302. ->fetchSql(true)
  1303. ->update([
  1304. 'YX接收时间' => date('Y-m-d H:i:s', time()),
  1305. 'YX接收状态' => '1'
  1306. ]);
  1307. $db7->execute($sqlString);
  1308. }
  1309. }
  1310. }
  1311. if ($j !== 0 || $m !== 0){
  1312. $this->error('工单BOM资料同步失败');
  1313. }else{
  1314. $this->success('工单BOM资料同步成功');
  1315. }
  1316. }
  1317. /**
  1318. * 美浓物料存货结构同步
  1319. * @return void
  1320. * @throws \think\Exception
  1321. * @throws \think\db\exception\BindParamException
  1322. * @throws \think\db\exception\DataNotFoundException
  1323. * @throws \think\db\exception\ModelNotFoundException
  1324. * @throws \think\exception\DbException
  1325. * @throws \think\exception\PDOException
  1326. */
  1327. public function MNMaterialRequisitionData()
  1328. {
  1329. if ($this->request->isGet() === false){
  1330. $this->error('请求错误');
  1331. }
  1332. $db7 = \db()->connect(config('database.db7'));
  1333. $MaterialDataList = $db7->name('U8_11存货结构')
  1334. ->where('YX接收时间',null)
  1335. ->where('YX接收状态',null)
  1336. ->select();
  1337. if (empty($MaterialDataList)){
  1338. $this->success('未找到新的物料存货结构');
  1339. }
  1340. $i = 0;
  1341. foreach ($MaterialDataList as $key=>$value){
  1342. $data = [
  1343. '编号' => $value['编号'],
  1344. '名称' => $value['名称'],
  1345. 'Sys_id' => '[272/超级用户]',
  1346. 'Sys_rq' => date('Y-m-d H:i:s',time()),
  1347. 'Mod_rq' => date('Y-m-d H:i:s',time()),
  1348. 'U8UID' => $value['U8_UID'],
  1349. ];
  1350. if ($value['U8插入类型'] === '新增'){
  1351. $sql = \db('物料_存货结构')->fetchSql(true)->insert($data);
  1352. $res = \db()->query($sql);
  1353. if ($res === false){
  1354. $i++;
  1355. }else{
  1356. $sqlString = $db7->name('U8_11存货结构')
  1357. ->where('UniqId', $value['UniqId'])
  1358. ->fetchSql(true)
  1359. ->update([
  1360. 'YX接收时间' => date('Y-m-d H:i:s', time()),
  1361. 'YX接收状态' => '1'
  1362. ]);
  1363. $db7->execute($sqlString);
  1364. }
  1365. }else{
  1366. $sql = \db('物料_存货结构')
  1367. ->fetchSql(true)
  1368. ->where('U8UID',$value['U8_UID'])
  1369. ->update($data);
  1370. $res = \db()->query($sql);
  1371. if ($res === false){
  1372. $i++;
  1373. }else{
  1374. $sqlString = $db7->name('U8_11存货结构')
  1375. ->where('UniqId', $value['UniqId'])
  1376. ->fetchSql(true)
  1377. ->update([
  1378. 'YX接收时间' => date('Y-m-d H:i:s', time()),
  1379. 'YX接收状态' => '1'
  1380. ]);
  1381. $db7->execute($sqlString);
  1382. }
  1383. }
  1384. }
  1385. if ($i !== 0){
  1386. $this->error('存货结构同步失败');
  1387. }else{
  1388. $this->success('存货结构同步成功');
  1389. }
  1390. }
  1391. /**
  1392. * 美浓物料存货编码同步
  1393. * @return void
  1394. * @throws \think\Exception
  1395. * @throws \think\db\exception\BindParamException
  1396. * @throws \think\db\exception\DataNotFoundException
  1397. * @throws \think\db\exception\ModelNotFoundException
  1398. * @throws \think\exception\DbException
  1399. * @throws \think\exception\PDOException
  1400. */
  1401. public function MNInventoryCodeData()
  1402. {
  1403. if ($this->request->isGet() === false){
  1404. $this->error('请求错误');
  1405. }
  1406. $db7 = \db()->connect(config('database.db7'));
  1407. $OrganizationalDataList = $db7->name('U8_04物料编码')
  1408. ->where('YX接收时间',null)
  1409. ->where('YX接收状态',null)
  1410. ->select();
  1411. if (empty($OrganizationalDataList)){
  1412. $this->success('未找到新的物料编码');
  1413. }
  1414. $i = 0;
  1415. foreach ($OrganizationalDataList as $key=>$value){
  1416. $code = substr($value['物料代码'],0,2);
  1417. if ($code === '10' || $code === '14' || $code === '12'){
  1418. //插入产品资料
  1419. $productData = \db('产品_基本资料')
  1420. ->where('产品编号',$value['物料代码'])
  1421. ->count();
  1422. $clientCode = substr($value['物料代码'],0,4);
  1423. $clientName = \db('物料_存货结构')->where('编号',$clientCode)->value('rtrim(名称)');
  1424. $product = [
  1425. '客户编号' => $clientCode,
  1426. '客户名称' => $clientName,
  1427. '产品编号' => $value['物料代码'],
  1428. '产品名称' => $value['物料名称'],
  1429. '计量单位' => $value['领用单位'],
  1430. '状态' => '',
  1431. 'U8UID' => $value['U8_UID'],
  1432. '产品类别' => $value['规格'],
  1433. 'Sys_id' => '[272/超级用户]',
  1434. 'Sys_rq' => date('Y-m-d H:i:s',time()),
  1435. 'Mod_rq' => date('Y-m-d H:i:s',time()),
  1436. ];
  1437. if ($productData === 0){
  1438. $productSql = \db('产品_基本资料')->fetchSql(true)->insert($product);
  1439. }else{
  1440. $productSql = \db('产品_基本资料')->where('产品编号',$value['物料代码'])->fetchSql(true)->update($product);
  1441. }
  1442. $productRes = \db()->query($productSql);
  1443. }
  1444. $data = [
  1445. '物料代码'=>$value['物料代码'],
  1446. '物料名称'=>$value['物料名称'],
  1447. '规格'=>$value['规格'],
  1448. '采购单位'=>$value['采购单位'],
  1449. '领用单位'=>$value['领用单位'],
  1450. '单位换算率'=>$value['单位换算率'],
  1451. '单价'=>$value['单价'],
  1452. '币种'=>$value['币种'],
  1453. '物料备注'=>$value['物料备注'],
  1454. '状态'=>$value['状态'],
  1455. 'Sys_id'=>'[272/超级用户]',
  1456. 'Sys_rq'=>date('Y-m-d H:i:s',time()),
  1457. 'Mod_rq'=>'1900-01-01 00:00:00',
  1458. 'U8UID'=>$value['U8_UID'],
  1459. ];
  1460. $number = \db('物料_存货编码')
  1461. ->where('U8UID',$value['U8_UID'])
  1462. ->count();
  1463. if ($number === 0){
  1464. $sql = \db('物料_存货编码')->fetchSql(true)->insert($data);
  1465. $res = \db()->query($sql);
  1466. if ($res === false){
  1467. $i++;
  1468. }else{
  1469. $sqlString = $db7->name('U8_04物料编码')
  1470. ->where('UniqId', $value['UniqId'])
  1471. ->fetchSql(true)
  1472. ->update([
  1473. 'YX接收时间' => date('Y-m-d H:i:s', time()),
  1474. 'YX接收状态' => '1'
  1475. ]);
  1476. $db7->execute($sqlString);
  1477. }
  1478. }else{
  1479. $sql = \db('物料_存货编码')
  1480. ->fetchSql(true)
  1481. ->where('U8UID',$value['U8_UID'])
  1482. ->update($data);
  1483. $res = \db()->query($sql);
  1484. if ($res === false){
  1485. $i++;
  1486. }else{
  1487. $sqlString = $db7->name('U8_04物料编码')
  1488. ->where('UniqId', $value['UniqId'])
  1489. ->fetchSql(true)
  1490. ->update([
  1491. 'YX接收时间' => date('Y-m-d H:i:s', time()),
  1492. 'YX接收状态' => '1'
  1493. ]);
  1494. $db7->execute($sqlString);
  1495. }
  1496. }
  1497. }
  1498. if ($i !== 0){
  1499. $this->error('物料编码同步失败');
  1500. }else{
  1501. $this->success('物料编码同步成功');
  1502. }
  1503. }
  1504. }