Synchronization.php 79 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935
  1. <?php
  2. namespace app\api\controller;
  3. use app\common\controller\Api;
  4. use app\common\library\token\driver\Redis;
  5. use think\Db;
  6. use Overtrue\Pinyin;
  7. /**
  8. * 中间表数据同步
  9. */
  10. class Synchronization extends Api
  11. {
  12. protected $noNeedLogin = ['*'];
  13. protected $noNeedRight = ['*'];
  14. /**
  15. * 工单资料数据同步
  16. */
  17. public function WorkOrderData()
  18. {
  19. if ($this->request->isGet() === false) {
  20. $this->error('请求错误');
  21. }
  22. $db3 = Db::connect(config('database.db3'));
  23. $workOrderList = $db3->name('U8_06工单资料')
  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. $sort = 0;
  34. if (substr($value['工单编号'], 0, 1) === 'Y') {
  35. $sort = 1;
  36. } else if (substr($value['工单编号'], -2) === 'JZ' || substr($value['工单编号'], -2) === 'JS') {
  37. $sort = 2;
  38. }
  39. $code = substr($value['成品编号'], 0, 5);
  40. $client = \db('物料_存货结构')->where('编号', $code)->value('名称');
  41. //插入产品资料
  42. $processData = \db('产品_基本资料')
  43. ->where('产品编号', $value['成品编号'])
  44. ->count();
  45. $detail = \db('物料_存货编码')->where('物料代码', $value['成品编号'])->find();
  46. if ($processData === 0) {
  47. $product = [
  48. '客户编号' => $code,
  49. '客户名称' => $client,
  50. '产品编号' => $value['成品编号'],
  51. '产品名称' => $value['成品名称'],
  52. '计量单位' => $detail['领用单位'],
  53. '状态' => '',
  54. 'U8UID' => $detail['U8UID'],
  55. '产品类别' => $detail['规格'],
  56. 'Sys_id' => '[272/超级用户]',
  57. 'Sys_rq' => date('Y-m-d H:i:s', time()),
  58. 'Mod_rq' => date('Y-m-d H:i:s', time()),
  59. ];
  60. $productSql = \db('产品_基本资料')->fetchSql(true)->insert($product);
  61. \db()->query($productSql);
  62. }
  63. //插入工单资料
  64. if (substr($value['工单编号'], 0, 1) === 'Y' || substr($value['工单编号'], -2) === 'JZ' || substr($value['工单编号'], -2) === 'JS') {
  65. $data = [
  66. 'Gd_gdbh' => $value['工单编号'],
  67. '行号' => $value['行号'],
  68. 'Gd_客户代号' => $code,
  69. 'Gd_客户名称' => $client,
  70. 'Gd_khdh' => $value['客户编号'],
  71. 'Gd_khmc' => $value['客户名称'],
  72. '客户料号' => $value['客户料号'],
  73. '成品代号' => $value['成品编号'],
  74. '成品名称' => $value['成品名称'],
  75. 'Gd_cpdh' => $value['产品编号'],
  76. 'Gd_cpmc' => $value['产品名称'],
  77. '产品版本号' => $value['版本号'],
  78. '销售订单号' => $value['销售订单号'],
  79. '警语版面' => $value['警语版面'],
  80. '码源数量' => substr(str_replace('.', '', $value['投料数量']), 0, -2),
  81. 'Gd_desc' => $value['备注'],
  82. '接单日期' => $value['接单日期'],
  83. '开单日期' => $value['开单日期'],
  84. '交货日期' => $value['交货日期'],
  85. '订单数量' => $value['订单数量'],
  86. '实际投料' => $value['投料数量'],
  87. '产品单价' => $value['产品单价'],
  88. '计量单位' => '万张',
  89. '成本考核_胶印' => 1,
  90. '成本考核_凹印' => 1,
  91. '成本考核_丝印' => 1,
  92. '成本考核_模切' => 1,
  93. '成本考核_检验' => 1,
  94. 'gd_statu' => '3-计划中',
  95. 'Sys_id' => '[1012/开单员]',
  96. 'Sys_rq' => date('Y-m-d H:i:s', time()),
  97. 'Mod_rq' => date('Y-m-d H:i:s', time()),
  98. 'U8UID' => $value['U8_UID'],
  99. '工单分类' => $sort
  100. ];
  101. //获取版本号
  102. $banben = \db('工单_基本资料')
  103. ->where('Gd_cpdh',$data['Gd_cpdh'])
  104. ->order('Sys_rq desc')
  105. ->column('产品版本号');
  106. if ($banben){
  107. $data['产品版本号'] = $banben[0];
  108. }
  109. //插入数据
  110. $workOrderdata = \db('工单_基本资料')
  111. ->where('U8UID', $value['U8_UID'])
  112. ->count();
  113. if ($workOrderdata === 0) {
  114. $addSql = \db('工单_基本资料')->fetchSql(true)->insert($data);
  115. $result = \db()->query($addSql);
  116. if ($result === false) {
  117. $m++;
  118. } else {
  119. $sqlString = $db3->name('U8_06工单资料')
  120. ->where('UniqId', $value['UniqId'])
  121. ->fetchSql(true)
  122. ->update([
  123. 'MES接收时间' => date('Y-m-d H:i:s', time()),
  124. 'MES接收状态' => '1'
  125. ]);
  126. $db3->execute($sqlString);
  127. }
  128. } else {
  129. unset($data['Uniqid']);
  130. $updateSql = \db('工单_基本资料')->where('U8UID', $value['U8_UID'])->fetchSql(true)->update($data);
  131. $updateRes = \db()->query($updateSql);
  132. if ($updateRes === false) {
  133. $j++;
  134. } else {
  135. $sqlString = $db3->name('U8_06工单资料')
  136. ->where('UniqId', $value['UniqId'])
  137. ->fetchSql(true)
  138. ->update([
  139. 'MES接收时间' => date('Y-m-d H:i:s', time()),
  140. 'MES接收状态' => '1'
  141. ]);
  142. $db3->execute($sqlString);
  143. }
  144. }
  145. }
  146. }
  147. if ($j !== 0 || $m !== 0 || $n !== 0) {
  148. $this->error('工单资料同步失败');
  149. } else {
  150. $this->success('工单资料同步成功');
  151. }
  152. }
  153. /**
  154. * 工单bom资料同步
  155. */
  156. public function WorkOrderBomData()
  157. {
  158. if ($this->request->isGet() === false) {
  159. $this->error('请求错误');
  160. }
  161. $db3 = Db::connect(config('database.db3'));
  162. $BomDataList = $db3->name('U8_09工单bom')
  163. ->where('MES接收时间', null)
  164. ->where('MES接收状态', '0')
  165. ->order('U8传递时间 desc')
  166. ->select();
  167. if (empty($BomDataList)) {
  168. $this->success('未找到新工单BOM');
  169. }
  170. $j = $m = 0;
  171. foreach ($BomDataList as $key => $value) {
  172. $res = \db('工单_bom资料')->where('U8UID', $value['U8_UID'])->count();
  173. if (preg_match("/[A-Za-z]/", $value['BOM_工单编号'])) {
  174. $workcode = $value['BOM_工单编号'];
  175. } else {
  176. $workcode = 'Y' . $value['BOM_工单编号'];
  177. }
  178. $data = [
  179. 'BOM_方案' => '工单评审定案',
  180. 'BOM_工单编号' => $workcode,
  181. 'BOM_版本' => $value['BOM_版本'],
  182. 'BOM_工单行号' => $value['BOM_工单行号'],
  183. 'BOM_行号' => $value['BOM_行号'],
  184. 'BOM_产品编号' => $value['BOM_产品编号'],
  185. 'BOM_物料编码' => $value['BOM_物料编码'],
  186. 'BOM_物料名称' => $value['BOM_物料名称'],
  187. 'BOM_投料单位' => $value['BOM_投料单位'],
  188. 'BOM_投入数' => $value['BOM_投入数'],
  189. 'BOM_产出数' => $value['BOM_产出数'],
  190. 'BOM_产出单位' => $value['BOM_产出单位'],
  191. 'BOM_标准用量' => $value['BOM_标准用量'],
  192. 'BOM_实际用量' => $value['BOM_实际用量'],
  193. 'BOM_计划用量' => $value['BOM_计划用量'],
  194. 'BOM_核算价格' => 0,
  195. 'Bom_领用工序' => '01-01',
  196. 'BOM_备注' => $value['BOM_备注'],
  197. 'Mod_rq' => date('Y-m-d H:i:s', time()),
  198. 'U8UID' => $value['U8_UID'],
  199. ];
  200. if ($res === 0) {
  201. $addSql = \db('工单_bom资料')->fetchSql(true)->insert($data);
  202. $addRes = \db()->query($addSql);
  203. if ($addRes === false) {
  204. $m++;
  205. } else {
  206. $sqlString = $db3->name('U8_09工单bom')
  207. ->where('UNIQID', $value['UNIQID'])
  208. ->fetchSql(true)
  209. ->update([
  210. 'MES接收时间' => date('Y-m-d H:i:s', time()),
  211. 'MES接收状态' => '1'
  212. ]);
  213. $db3->execute($sqlString);
  214. }
  215. } else {
  216. unset($data['UNIQID']);
  217. $updateSql = \db('工单_bom资料')
  218. ->where('U8UID', $value['U8_UID'])
  219. ->fetchSql(true)
  220. ->update($data);
  221. $updateRes = \db()->query($updateSql);
  222. if ($updateRes === false) {
  223. $j++;
  224. } else {
  225. $sqlString = $db3->name('U8_09工单bom')
  226. ->where('UNIQID', $value['UNIQID'])
  227. ->fetchSql(true)
  228. ->update([
  229. 'MES接收时间' => date('Y-m-d H:i:s', time()),
  230. 'MES接收状态' => '1'
  231. ]);
  232. $db3->execute($sqlString);
  233. }
  234. }
  235. }
  236. if ($j !== 0 || $m !== 0) {
  237. $this->error('工单BOM资料同步失败');
  238. } else {
  239. $this->success('工单BOM资料同步成功');
  240. }
  241. }
  242. /**
  243. * 存货结构数据同步
  244. */
  245. public function MaterialRequisitionData()
  246. {
  247. if ($this->request->isGet() === false) {
  248. $this->error('请求错误');
  249. }
  250. $db3 = \db()->connect(config('database.db3'));
  251. $MaterialDataList = $db3->name('U8_11存货结构')
  252. ->where('MES接收时间', null)
  253. ->where('MES接收状态', '0')
  254. ->select();
  255. if (empty($MaterialDataList)) {
  256. $this->success('未找到新的物料存货结构');
  257. }
  258. $i = 0;
  259. foreach ($MaterialDataList as $key => $value) {
  260. $data = [
  261. '编号' => $value['编号'],
  262. '名称' => $value['名称'],
  263. 'Sys_id' => '[272/超级用户]',
  264. 'Sys_rq' => date('Y-m-d H:i:s', time()),
  265. 'Mod_rq' => date('Y-m-d H:i:s', time()),
  266. 'U8UID' => $value['U8_UID'],
  267. ];
  268. if ($value['U8插入类型'] === '新增') {
  269. $sql = \db('物料_存货结构')->fetchSql(true)->insert($data);
  270. $res = \db()->query($sql);
  271. if ($res === false) {
  272. $i++;
  273. } else {
  274. $sqlString = $db3->name('U8_11存货结构')
  275. ->where('UniqId', $value['UniqId'])
  276. ->fetchSql(true)
  277. ->update([
  278. 'MES接收时间' => date('Y-m-d H:i:s', time()),
  279. 'MES接收状态' => '1'
  280. ]);
  281. $db3->execute($sqlString);
  282. }
  283. } else {
  284. $sql = \db('物料_存货结构')
  285. ->fetchSql(true)
  286. ->where('U8UID', $value['U8_UID'])
  287. ->update($data);
  288. $res = \db()->query($sql);
  289. if ($res === false) {
  290. $i++;
  291. } else {
  292. $sqlString = $db3->name('U8_11存货结构')
  293. ->where('UniqId', $value['UniqId'])
  294. ->fetchSql(true)
  295. ->update([
  296. 'MES接收时间' => date('Y-m-d H:i:s', time()),
  297. 'MES接收状态' => '1'
  298. ]);
  299. $db3->execute($sqlString);
  300. }
  301. }
  302. }
  303. if ($i !== 0) {
  304. $this->error('存货结构同步失败');
  305. } else {
  306. $this->success('存货结构同步成功');
  307. }
  308. }
  309. /**
  310. * 人事基本资料同步
  311. * @return void
  312. * @throws \think\Exception
  313. * @throws \think\db\exception\BindParamException
  314. * @throws \think\db\exception\DataNotFoundException
  315. * @throws \think\db\exception\ModelNotFoundException
  316. * @throws \think\exception\DbException
  317. * @throws \think\exception\PDOException
  318. */
  319. public function PersonnelData()
  320. {
  321. //拼音类
  322. $pinyin = new Pinyin\Pinyin();
  323. if ($this->request->isGet() === false) {
  324. $this->error('请求错误');
  325. }
  326. $db3 = \db()->connect(config('database.db3'));
  327. $PersonnelDataList = $db3->name('U8_02人事资料')
  328. ->where('MES接收时间', null)
  329. ->where('MES接收状态', '0')
  330. ->select();
  331. if (empty($PersonnelDataList)) {
  332. $this->success('未找到新的人事资料');
  333. }
  334. $i = 0;
  335. foreach ($PersonnelDataList as $key => $value) {
  336. //获取姓名首字母
  337. $pycode = $pinyin->abbr($value['员工姓名']);
  338. $nameCode = strtoupper($pycode);
  339. $data = [
  340. '工卡编号' => '',
  341. '卡钟设定' => '',
  342. '打卡设置' => '',
  343. '员工编号' => $value['员工编号'],
  344. '员工姓名' => $value['员工姓名'],
  345. '性别' => $value['性别'],
  346. '聘用日期' => $value['聘用日期'],
  347. '转正日期' => $value['转正日期'],
  348. 'U8离职日期' => $value['离职日期'],
  349. 'MES离职日期' => $value['离职日期'],
  350. '扣减司龄' => 0,
  351. '部门编码' => $value['部门编码'],
  352. '所在部门' => $value['所在部门'],
  353. '人员类别' => $value['人员类别'],
  354. '人员性质' => $value['人员性质'],
  355. '班次类型' => '',
  356. '标准工时制' => '',
  357. '职称职务' => $value['职称职务'],
  358. '薪资级别' => $value['级别'],
  359. '工资表类别' => '',
  360. '基本工资' => '',
  361. '绩效工资1' => '',
  362. '绩效工资2' => '',
  363. '技能工资' => '',
  364. '岗位津贴' => '',
  365. '竞业补贴' => '',
  366. '专业技术津贴' => '',
  367. '技工技师津贴' => '',
  368. '特殊工种津贴' => '',
  369. '各类奖项津贴' => '',
  370. '职危津贴' => '',
  371. '夜班津贴' => '',
  372. '全勤津贴' => '',
  373. '住房津贴' => '',
  374. '高温津贴' => '',
  375. '用餐津贴' => '',
  376. '司龄津贴' => '',
  377. '联系电话' => $value['联系电话'],
  378. '合同类型' => '',
  379. '合同起始日期' => '1900-01-01 00:00:00',
  380. '合同终止日期' => '1900-01-01 00:00:00',
  381. '合同备注' => '',
  382. '出生日期' => $value['出生日期'],
  383. 'pycode' => $nameCode,
  384. '籍贯' => '',
  385. '民族' => '',
  386. '身份证号' => $value['身份证号'],
  387. '证件有效日期' => '1900-01-01 00:00:00',
  388. '发证机关' => '',
  389. '家庭住址' => '',
  390. '学历' => '',
  391. '婚姻状况' => '',
  392. '社保开始日期' => '1900-01-01 00:00:00',
  393. '开户银行' => $value['开户银行'],
  394. '开户账号' => $value['开户账号'],
  395. '存折办理日期' => '1900-01-01 00:00:00',
  396. '紧急电话' => '',
  397. '照片ID' => '',
  398. '在职状态' => $value['在职状态'],
  399. 'U8在职' => $value['在职状态'],
  400. '薪酬核算分组' => '',
  401. '考勤类型' => '',
  402. '班组代号' => '',
  403. 'sys_id' => '[272/超级用户]',
  404. 'sys_rq' => date('Y-m-d H:i:s', time()),
  405. 'mod_rq' => '1900-01-01 00:00:00',
  406. 'U8UID' => $value['U8_UID'],
  407. ];
  408. $number = \db('人事_基本资料')
  409. ->where('U8UID', $value['U8_UID'])
  410. ->count();
  411. if ($number === 0) {
  412. $sql = \db('人事_基本资料')->fetchSql(true)->insert($data);
  413. $res = \db()->query($sql);
  414. if ($res === false) {
  415. $i++;
  416. } else {
  417. $sqlString = $db3->name('U8_02人事资料')
  418. ->where('UniqId', $value['UniqId'])
  419. ->fetchSql(true)
  420. ->update([
  421. 'MES接收时间' => date('Y-m-d H:i:s', time()),
  422. 'MES接收状态' => '1'
  423. ]);
  424. $db3->execute($sqlString);
  425. }
  426. } else {
  427. $sql = \db('人事_基本资料')
  428. ->fetchSql(true)
  429. ->where('U8UID', $value['U8_UID'])
  430. ->update($data);
  431. $res = \db()->query($sql);
  432. if ($res === false) {
  433. $i++;
  434. } else {
  435. $sqlString = $db3->name('U8_02人事资料')
  436. ->where('UniqId', $value['UniqId'])
  437. ->fetchSql(true)
  438. ->update([
  439. 'MES接收时间' => date('Y-m-d H:i:s', time()),
  440. 'MES接收状态' => '1'
  441. ]);
  442. $db3->execute($sqlString);
  443. }
  444. }
  445. }
  446. if ($i !== 0) {
  447. $this->error('人事资料同步失败');
  448. } else {
  449. $this->success('人事资料同步成功');
  450. //14906570@qq.com
  451. }
  452. }
  453. /**
  454. * 人事组织结构
  455. * @return void
  456. * @throws \think\Exception
  457. * @throws \think\db\exception\BindParamException
  458. * @throws \think\db\exception\DataNotFoundException
  459. * @throws \think\db\exception\ModelNotFoundException
  460. * @throws \think\exception\DbException
  461. * @throws \think\exception\PDOException
  462. */
  463. public function OrganizationalStructureData()
  464. {
  465. if ($this->request->isGet() === false) {
  466. $this->error('请求错误');
  467. }
  468. $db3 = \db()->connect(config('database.db3'));
  469. $OrganizationalDataList = $db3->name('U8_01组织结构')
  470. ->where('MES接收时间', null)
  471. ->where('MES接收状态', '0')
  472. ->select();
  473. if (empty($OrganizationalDataList)) {
  474. $this->success('未找到新的组织结构');
  475. }
  476. $i = 0;
  477. foreach ($OrganizationalDataList as $key => $value) {
  478. $data = [
  479. '编号' => $value['编号'],
  480. '名称' => $value['名称'],
  481. '状态' => $value['状态'],
  482. 'Sys_id' => '[272/超级用户]',
  483. 'Sys_rq' => date('Y-m-d H:i:s', time()),
  484. 'Mod_rq' => '1900-01-01 00:00:00',
  485. 'U8UID' => $value['U8_UID'],
  486. ];
  487. $number = \db('人事_组织结构')
  488. ->where('U8UID', $value['U8_UID'])
  489. ->count();
  490. if ($number === 0) {
  491. $sql = \db('人事_组织结构')->fetchSql(true)->insert($data);
  492. $res = \db()->query($sql);
  493. if ($res === false) {
  494. $i++;
  495. } else {
  496. $sqlString = $db3->name('U8_01组织结构')
  497. ->where('UniqId', $value['UniqId'])
  498. ->fetchSql(true)
  499. ->update([
  500. 'MES接收时间' => date('Y-m-d H:i:s', time()),
  501. 'MES接收状态' => '1'
  502. ]);
  503. $db3->execute($sqlString);
  504. }
  505. } else {
  506. $sql = \db('人事_组织结构')
  507. ->fetchSql(true)
  508. ->where('U8UID', $value['U8_UID'])
  509. ->update($data);
  510. $res = \db()->query($sql);
  511. if ($res === false) {
  512. $i++;
  513. } else {
  514. $sqlString = $db3->name('U8_01组织结构')
  515. ->where('UniqId', $value['UniqId'])
  516. ->fetchSql(true)
  517. ->update([
  518. 'MES接收时间' => date('Y-m-d H:i:s', time()),
  519. 'MES接收状态' => '1'
  520. ]);
  521. $db3->execute($sqlString);
  522. }
  523. }
  524. }
  525. if ($i !== 0) {
  526. $this->error('人事组织结构同步失败');
  527. } else {
  528. $this->success('人事组织结构同步成功');
  529. }
  530. }
  531. /**
  532. * 物料存货编码数据同步
  533. * @return void
  534. * @throws \think\Exception
  535. * @throws \think\db\exception\BindParamException
  536. * @throws \think\db\exception\DataNotFoundException
  537. * @throws \think\db\exception\ModelNotFoundException
  538. * @throws \think\exception\DbException
  539. * @throws \think\exception\PDOException
  540. */
  541. public function InventoryCodeData()
  542. {
  543. if ($this->request->isGet() === false) {
  544. $this->error('请求错误');
  545. }
  546. $db3 = \db()->connect(config('database.db3'));
  547. $OrganizationalDataList = $db3->name('U8_04物料编码')
  548. ->where('MES接收时间', null)
  549. ->where('MES接收状态', '0')
  550. ->select();
  551. if (empty($OrganizationalDataList)) {
  552. $this->success('未找到新的物料编码');
  553. }
  554. $i = 0;
  555. foreach ($OrganizationalDataList as $key => $value) {
  556. $code = substr($value['物料代码'], 0, 3);
  557. if ($code === 'Y10' || $code === 'Y14' || $code === 'Y12' || $code === 'J00' || $code === 'J01' || $code === 'J02') {
  558. //插入产品资料
  559. $productData = \db('产品_基本资料')
  560. ->where('产品编号', $value['物料代码'])
  561. ->count();
  562. $clientCode = substr($value['物料代码'], 0, 5);
  563. $clientName = \db('物料_存货结构')->where('编号', $clientCode)->value('rtrim(名称)');
  564. $product = [
  565. '客户编号' => $clientCode,
  566. '客户名称' => $clientName,
  567. '产品编号' => $value['物料代码'],
  568. '产品名称' => $value['物料名称'],
  569. '计量单位' => $value['领用单位'],
  570. '状态' => '',
  571. 'U8UID' => $value['U8_UID'],
  572. '产品类别' => $value['规格'],
  573. 'Sys_id' => '[272/超级用户]',
  574. 'Sys_rq' => date('Y-m-d H:i:s', time()),
  575. 'Mod_rq' => date('Y-m-d H:i:s', time()),
  576. ];
  577. if ($productData === 0) {
  578. $productSql = \db('产品_基本资料')->fetchSql(true)->insert($product);
  579. } else {
  580. $productSql = \db('产品_基本资料')->where('产品编号', $value['物料代码'])->fetchSql(true)->update($product);
  581. }
  582. $productRes = \db()->query($productSql);
  583. }
  584. $data = [
  585. '物料代码' => $value['物料代码'],
  586. '物料名称' => $value['物料名称'],
  587. '规格' => $value['规格'],
  588. '采购单位' => $value['采购单位'],
  589. '领用单位' => $value['领用单位'],
  590. '单位换算率' => $value['单位换算率'],
  591. '单价' => $value['单价'],
  592. '币种' => $value['币种'],
  593. '物料备注' => $value['物料备注'],
  594. '状态' => $value['状态'],
  595. 'Sys_id' => '[272/超级用户]',
  596. 'Sys_rq' => date('Y-m-d H:i:s', time()),
  597. 'Mod_rq' => '1900-01-01 00:00:00',
  598. 'U8UID' => $value['U8_UID'],
  599. ];
  600. $number = \db('物料_存货编码')
  601. ->where('U8UID', $value['U8_UID'])
  602. ->count();
  603. if ($number === 0) {
  604. $sql = \db('物料_存货编码')->fetchSql(true)->insert($data);
  605. $res = \db()->query($sql);
  606. if ($res === false) {
  607. $i++;
  608. } else {
  609. $sqlString = $db3->name('U8_04物料编码')
  610. ->where('UniqId', $value['UniqId'])
  611. ->fetchSql(true)
  612. ->update([
  613. 'MES接收时间' => date('Y-m-d H:i:s', time()),
  614. 'MES接收状态' => '1'
  615. ]);
  616. $db3->execute($sqlString);
  617. }
  618. } else {
  619. $sql = \db('物料_存货编码')
  620. ->fetchSql(true)
  621. ->where('U8UID', $value['U8_UID'])
  622. ->update($data);
  623. $res = \db()->query($sql);
  624. if ($res === false) {
  625. $i++;
  626. } else {
  627. $sqlString = $db3->name('U8_04物料编码')
  628. ->where('UniqId', $value['UniqId'])
  629. ->fetchSql(true)
  630. ->update([
  631. 'MES接收时间' => date('Y-m-d H:i:s', time()),
  632. 'MES接收状态' => '1'
  633. ]);
  634. $db3->execute($sqlString);
  635. }
  636. }
  637. }
  638. if ($i !== 0) {
  639. $this->error('物料编码同步失败');
  640. } else {
  641. $this->success('物料编码同步成功');
  642. }
  643. }
  644. /**
  645. * 客户供应商数据同步
  646. * @return void
  647. * @throws \think\Exception
  648. * @throws \think\db\exception\BindParamException
  649. * @throws \think\db\exception\DataNotFoundException
  650. * @throws \think\db\exception\ModelNotFoundException
  651. * @throws \think\exception\DbException
  652. * @throws \think\exception\PDOException
  653. */
  654. public function CustomerSupplierData()
  655. {
  656. if ($this->request->isGet() === false) {
  657. $this->error('请求错误');
  658. }
  659. $db3 = \db()->connect(config('database.db3'));
  660. $OrganizationalDataList = $db3->name('U8_03客户供应商')
  661. ->where('MES接收时间', null)
  662. ->where('MES接收状态', '0')
  663. ->select();
  664. if (empty($OrganizationalDataList)) {
  665. $this->success('未找到新的客户供应商');
  666. }
  667. $i = 0;
  668. foreach ($OrganizationalDataList as $key => $value) {
  669. $data = [
  670. '类型' => $value['类型'],
  671. '编号' => $value['编号'],
  672. '名称' => $value['名称'],
  673. '简称' => $value['简称'],
  674. '地址' => $value['地址'],
  675. '对口部门' => $value['对口部门'],
  676. '联系人' => $value['联系人'],
  677. '电话' => $value['电话'],
  678. '业务员' => $value['业务员'],
  679. '币种' => $value['币种'],
  680. 'Sys_id' => '[272/超级用户]',
  681. 'Sys_rq' => date('Y-m-d H:i:s', time()),
  682. 'Mod_rq' => '1900-01-01 00:00:00',
  683. 'U8UID' => $value['U8_UID'],
  684. 'UniqId' => $value['UniqId'],
  685. ];
  686. $number = \db('erp_客户供应商')
  687. ->where('U8UID', $value['U8_UID'])
  688. ->count();
  689. if ($number === 0) {
  690. $sql = \db('erp_客户供应商')->fetchSql(true)->insert($data);
  691. $res = \db()->query($sql);
  692. if ($res === false) {
  693. $i++;
  694. } else {
  695. $sqlString = $db3->name('U8_03客户供应商')
  696. ->where('UniqId', $value['UniqId'])
  697. ->fetchSql(true)
  698. ->update([
  699. 'MES接收时间' => date('Y-m-d H:i:s', time()),
  700. 'MES接收状态' => '1'
  701. ]);
  702. $db3->execute($sqlString);
  703. }
  704. } else {
  705. $sql = \db('erp_客户供应商')
  706. ->fetchSql(true)
  707. ->where('U8UID', $value['U8_UID'])
  708. ->update($data);
  709. $res = \db()->query($sql);
  710. if ($res === false) {
  711. $i++;
  712. } else {
  713. $sqlString = $db3->name('U8_03客户供应商')
  714. ->where('UniqId', $value['UniqId'])
  715. ->fetchSql(true)
  716. ->update([
  717. 'MES接收时间' => date('Y-m-d H:i:s', time()),
  718. 'MES接收状态' => '1'
  719. ]);
  720. $db3->execute($sqlString);
  721. }
  722. }
  723. }
  724. if ($i !== 0) {
  725. $this->error('客户供应商同步失败');
  726. } else {
  727. $this->success('客户供应商同步成功');
  728. }
  729. }
  730. /**
  731. * 物料领用记录数据同步
  732. * @return void
  733. * @throws \think\Exception
  734. * @throws \think\db\exception\BindParamException
  735. * @throws \think\db\exception\DataNotFoundException
  736. * @throws \think\db\exception\ModelNotFoundException
  737. * @throws \think\exception\DbException
  738. * @throws \think\exception\PDOException
  739. */
  740. public function ReceiptRecordData()
  741. {
  742. if ($this->request->isGet() === false) {
  743. $this->error('请求错误');
  744. }
  745. $db3 = \db()->connect(config('database.db3'));
  746. $OrganizationalDataList = $db3->name('U8_07物料领用')
  747. ->where('MES接收时间', null)
  748. ->where('MES接收状态', '0')
  749. ->select();
  750. if (empty($OrganizationalDataList)) {
  751. $this->success('未找到新的物料领用记录');
  752. }
  753. $i = 0;
  754. foreach ($OrganizationalDataList as $key => $value) {
  755. if (preg_match("/[A-Za-z]/", $value['工单编号'])) {
  756. $workcode = $value['工单编号'];
  757. } else {
  758. $workcode = 'Y' . $value['工单编号'];
  759. }
  760. $data = [
  761. 'st_rq' => $value['日期'],
  762. 'st_jylb' => $value['交易类别'],
  763. 'st_gdbh' => $workcode,
  764. '采购单号' => $value['采购单号'],
  765. '供方批次' => $value['供方批次'],
  766. 'st_wlbh' => $value['物料编号'],
  767. 'st_sl' => $value['领用数量'],
  768. 'st_dw' => $value['领用单位'],
  769. '领用单价' => $value['领用单价'],
  770. 'st_desc' => $value['备注'],
  771. '仓库编号' => $value['仓库编号'],
  772. 'st_dpt' => $value['采购单号'],
  773. 'st_jtbh' => $value['机台编号'],
  774. 'sys_id' => '[272/超级用户]',
  775. 'sys_rq' => date('Y-m-d H:i:s', time()),
  776. 'mod_rq' => '1900-01-01 00:00:00',
  777. 'U8UID' => $value['U8_UID'],
  778. 'cpdh' => $value['产品编码']
  779. ];
  780. $number = \db('物料_收发记录')
  781. ->where('U8UID', $value['U8_UID'])
  782. ->count();
  783. if ($number === 0) {
  784. $sql = \db('物料_收发记录')->fetchSql(true)->insert($data);
  785. $res = \db()->query($sql);
  786. if ($res === false) {
  787. $i++;
  788. } else {
  789. $sqlString = $db3->name('U8_07物料领用')
  790. ->where('UniqId', $value['UniqId'])
  791. ->fetchSql(true)
  792. ->update([
  793. 'MES接收时间' => date('Y-m-d H:i:s', time()),
  794. 'MES接收状态' => '1'
  795. ]);
  796. $db3->execute($sqlString);
  797. }
  798. } else {
  799. $sql = \db('物料_收发记录')
  800. ->fetchSql(true)
  801. ->where('U8UID', $value['U8_UID'])
  802. ->update($data);
  803. $res = \db()->query($sql);
  804. if ($res === false) {
  805. $i++;
  806. } else {
  807. $sqlString = $db3->name('U8_07物料领用')
  808. ->where('UniqId', $value['UniqId'])
  809. ->fetchSql(true)
  810. ->update([
  811. 'MES接收时间' => date('Y-m-d H:i:s', time()),
  812. 'MES接收状态' => '1'
  813. ]);
  814. $db3->execute($sqlString);
  815. }
  816. }
  817. }
  818. if ($i !== 0) {
  819. $this->error('物料领用记录同步失败');
  820. } else {
  821. $this->success('物料领用记录同步成功');
  822. }
  823. }
  824. /**
  825. * 仓库信息数据同步
  826. * @return void
  827. * @throws \think\Exception
  828. * @throws \think\db\exception\BindParamException
  829. * @throws \think\db\exception\DataNotFoundException
  830. * @throws \think\db\exception\ModelNotFoundException
  831. * @throws \think\exception\DbException
  832. * @throws \think\exception\PDOException
  833. */
  834. public function WarehouseInformationData()
  835. {
  836. if ($this->request->isGet() === false) {
  837. $this->error('请求错误');
  838. }
  839. $db3 = \db()->connect(config('database.db3'));
  840. $OrganizationalDataList = $db3->name('U8_12仓库信息')
  841. ->where('MES接收时间', null)
  842. ->where('MES接收状态', '0')
  843. ->select();
  844. if (empty($OrganizationalDataList)) {
  845. $this->success('未找到新的仓库信息');
  846. }
  847. $i = 0;
  848. foreach ($OrganizationalDataList as $key => $value) {
  849. $data = [
  850. '编号' => $value['编号'],
  851. '名称' => $value['名称'],
  852. 'Sys_id' => '[272/超级用户]',
  853. 'Sys_rq' => date('Y-m-d H:i:s', time()),
  854. 'Mod_rq' => '1900-01-01 00:00:00',
  855. 'U8UID' => $value['U8_UID'],
  856. ];
  857. $number = \db('物料_仓库信息')
  858. ->where('U8UID', $value['U8_UID'])
  859. ->count();
  860. if ($number === 0) {
  861. $sql = \db('物料_仓库信息')->fetchSql(true)->insert($data);
  862. $res = \db()->query($sql);
  863. if ($res === false) {
  864. $i++;
  865. } else {
  866. $sqlString = $db3->name('U8_12仓库信息')
  867. ->where('UniqId', $value['UniqId'])
  868. ->fetchSql(true)
  869. ->update([
  870. 'MES接收时间' => date('Y-m-d H:i:s', time()),
  871. 'MES接收状态' => '1'
  872. ]);
  873. $db3->execute($sqlString);
  874. }
  875. } else {
  876. $sql = \db('物料_仓库信息')
  877. ->fetchSql(true)
  878. ->where('U8UID', $value['U8_UID'])
  879. ->update($data);
  880. $res = \db()->query($sql);
  881. if ($res === false) {
  882. $i++;
  883. } else {
  884. $sqlString = $db3->name('U8_12仓库信息')
  885. ->where('UniqId', $value['UniqId'])
  886. ->fetchSql(true)
  887. ->update([
  888. 'MES接收时间' => date('Y-m-d H:i:s', time()),
  889. 'MES接收状态' => '1'
  890. ]);
  891. $db3->execute($sqlString);
  892. }
  893. }
  894. }
  895. if ($i !== 0) {
  896. $this->error('仓库信息同步失败');
  897. } else {
  898. $this->success('仓库信息同步成功');
  899. }
  900. }
  901. /**
  902. * 职位编码数据同步
  903. * @return void
  904. * @throws \think\Exception
  905. * @throws \think\db\exception\BindParamException
  906. * @throws \think\db\exception\DataNotFoundException
  907. * @throws \think\db\exception\ModelNotFoundException
  908. * @throws \think\exception\DbException
  909. * @throws \think\exception\PDOException
  910. */
  911. public function PositionData()
  912. {
  913. if ($this->request->isGet() === false) {
  914. $this->error('请求错误');
  915. }
  916. $db3 = \db()->connect(config('database.db3'));
  917. $OrganizationalDataList = $db3->name('U8_13职位编码')
  918. ->where('MES接收时间', null)
  919. ->where('MES接收状态', '0')
  920. ->select();
  921. if (empty($OrganizationalDataList)) {
  922. $this->success('未找到新的职位编码');
  923. }
  924. $i = 0;
  925. foreach ($OrganizationalDataList as $key => $value) {
  926. $data = [
  927. '职位编码' => $value['职位编码'],
  928. '职位名称' => $value['职位名称'],
  929. '定编人数' => 0,
  930. '备注说明' => '',
  931. 'sys_id' => '[272/超级用户]',
  932. 'sys_rq' => date('Y-m-d H:i:s', time()),
  933. 'Mod_rq' => '1900-01-01 00:00:00',
  934. 'U8UID' => $value['U8_UID'],
  935. ];
  936. $number = \db('人事_职位编码')
  937. ->where('U8UID', $value['U8_UID'])
  938. ->count();
  939. if ($number === 0) {
  940. $sql = \db('人事_职位编码')->fetchSql(true)->insert($data);
  941. $res = \db()->query($sql);
  942. if ($res === false) {
  943. $i++;
  944. } else {
  945. $sqlString = $db3->name('U8_13职位编码')
  946. ->where('UniqID', $value['UniqID'])
  947. ->fetchSql(true)
  948. ->update([
  949. 'MES接收时间' => date('Y-m-d H:i:s', time()),
  950. 'MES接收状态' => '1'
  951. ]);
  952. $db3->execute($sqlString);
  953. }
  954. } else {
  955. $sql = \db('人事_职位编码')
  956. ->fetchSql(true)
  957. ->where('U8UID', $value['U8_UID'])
  958. ->update($data);
  959. $res = \db()->query($sql);
  960. if ($res === false) {
  961. $i++;
  962. } else {
  963. $sqlString = $db3->name('U8_13职位编码')
  964. ->where('UniqID', $value['UniqID'])
  965. ->fetchSql(true)
  966. ->update([
  967. 'MES接收时间' => date('Y-m-d H:i:s', time()),
  968. 'MES接收状态' => '1'
  969. ]);
  970. $db3->execute($sqlString);
  971. }
  972. }
  973. }
  974. if ($i !== 0) {
  975. $this->error('职位编码同步失败');
  976. } else {
  977. $this->success('职位编码同步成功');
  978. }
  979. }
  980. /**
  981. * 设备产量计酬云中间表数据库同步
  982. * @return void
  983. * @throws \think\db\exception\BindParamException
  984. * @throws \think\db\exception\DataNotFoundException
  985. * @throws \think\db\exception\ModelNotFoundException
  986. * @throws \think\exception\DbException
  987. * @throws \think\exception\PDOException
  988. */
  989. // public function ProductionData()
  990. // {
  991. // if ($this->request->isGet() === false) {
  992. // $this->error('请求错误');
  993. // }
  994. // if (is_dir(ROOT_PATH . 'public/' . date('Y-m-d', time())) == null) {
  995. // mkdir(ROOT_PATH . 'public/' . date('Y-m-d', time()), 0777, true);
  996. // }
  997. // //查询翌星数据库美浓设备编号
  998. // $machineList = \db('设备_基本资料')
  999. // ->where('mn_设备编号', '<>', '')
  1000. //// ->where('sys_sbID', '<>', '')
  1001. // ->column('mn_设备编号');
  1002. //// halt($machineList);
  1003. //// $machineList = ['JP17#','MQ02#','PM04#','SY03#','TJ03#','TJ05#','TJ07#'];
  1004. // //链接美浓mes数据库
  1005. // $db5 = \db()->connect(config('database.db5'));
  1006. // //获取缓存中最后的id
  1007. // $lastId = cache('MnLastId');
  1008. // //确定美浓设备计酬的查询范围
  1009. // if ($lastId === false) {
  1010. // $where = [
  1011. // 'sczl_rq' => ['between', ['2024-09-01 00:00:00', '2024-09-30 00:00:00']],
  1012. // 'sczl_jtbh' => ['in', $machineList]
  1013. // ];
  1014. // } else {
  1015. // $where = [
  1016. // 'sczl_rq' => ['between', ['2024-09-01 00:00:00', '2024-09-30 00:00:00']],
  1017. // 'sczl_jtbh' => ['in', $machineList],
  1018. // 'UniqId' => ['>', $lastId]
  1019. // ];
  1020. // }
  1021. // //查询美浓数据库时间范围内的产量上报记录
  1022. // $productData = $db5->name('设备_产量计酬')
  1023. // ->where($where)
  1024. // ->limit(5000)
  1025. // ->order('UniqId')
  1026. // ->select();
  1027. // if (!empty($productData)) {
  1028. // cache('MnLastId', end($productData)['UniqId']);
  1029. // }
  1030. // //获取美浓和翌星设备编号对照表
  1031. // $machineData = \db('设备_基本资料')
  1032. // ->alias('a')
  1033. // ->join('dic_lzde b','a.设备编号 = b.适用机型')
  1034. // ->where('a.mn_设备编号', '<>', '')
  1035. //// ->where('sys_sbID', '<>', '')
  1036. //// ->field('rtrim(a.设备编号) as 设备编号,rtrim(a.mn_设备编号) as 美浓设备编号,b.sys_bh')
  1037. // ->column('rtrim(a.设备编号) as 设备编号,b.sys_bh','a.mn_设备编号');
  1038. //// halt($machineData);
  1039. // //获取员工资料
  1040. // $employee = \db('人事_基本资料')
  1041. // ->where('mn_员工编号', '<>', '')
  1042. // ->column('rtrim(mn_员工编号) as 美浓员工编号');
  1043. // //循环判断机台、员工编号
  1044. // $j = 0;
  1045. // $data = [];
  1046. // foreach ($productData as $key => $value) {
  1047. // //判断机台编号
  1048. //
  1049. // if (array_key_exists($value['sczl_jtbh'],$machineData)) {
  1050. //
  1051. // if (substr($productData[$key]['sczl_jtbh'],0,2) === 'JP'){
  1052. // if (substr((int)$productData[$key]['sczl_dedh'],-1,1) === '1'){
  1053. // $productData[$key]['sczl_dedh'] = $machineData[$productData[$key]['sczl_jtbh']]['sys_bh'].'001';
  1054. // }else{
  1055. // $productData[$key]['sczl_dedh'] = $machineData[$productData[$key]['sczl_jtbh']]['sys_bh'].'002';
  1056. // }
  1057. // }else{
  1058. // $productData[$key]['sczl_dedh'] = $machineData[$productData[$key]['sczl_jtbh']]['sys_bh'];
  1059. // }
  1060. // $productData[$key]['sczl_jtbh'] = $machineData[$productData[$key]['sczl_jtbh']]['设备编号'];
  1061. // }
  1062. // array_push($data, $productData[$key]);
  1063. //
  1064. // }
  1065. // if (empty($data)) {
  1066. // $this->error('未找到新的生产数据');
  1067. // }
  1068. // foreach ($data as $key => $value) {
  1069. // $name = [];
  1070. // //判断员工编号,如果不存在写入日志文件
  1071. // for ($i = 1; $i <= 10; $i++) {
  1072. // if (in_array($data[$key]['sczl_bh' . $i], $employee)) {
  1073. // $data[$key]['sczl_bh' . $i] = \db('人事_基本资料')
  1074. // ->where('mn_员工编号', $data[$key]['sczl_bh' . $i])
  1075. // ->value('员工编号');
  1076. // } else {
  1077. // array_push($name, $value['sczl_bh' . $i]);
  1078. // }
  1079. //
  1080. // }
  1081. // unset($data[$key]['UniqId']);
  1082. // $name = array_unique($name);
  1083. // $filename = ROOT_PATH . 'public/' . date('Y-m-d', time()) . '/' . $value['sczl_jtbh'] . '日志文件.txt';
  1084. // $handle = fopen($filename, 'w');
  1085. // foreach ($name as $v) {
  1086. // fwrite($handle, $v);
  1087. // }
  1088. // fclose($handle);
  1089. // //修改工单编号
  1090. //// if (preg_match("/[A-Za-z]/",$value['sczl_gdbh'])){
  1091. //// $workcode = $value['sczl_gdbh'];
  1092. //// }else{
  1093. //// $workcode = 'Y'.$value['sczl_gdbh'];
  1094. //// }
  1095. //// $data[$key]['sczl_gdbh'] = $workcode;
  1096. // }
  1097. // //插入设备产量计酬数据
  1098. //// $sql = \db('设备_产量计酬')->where('sczl_rq','between',['2024-09-01 00:00:00', '2024-09-30 00:00:00'])->delete();
  1099. // $sql = \db('设备_产量计酬')->fetchSql(true)->insertAll($data);
  1100. // $res = \db()->query($sql);
  1101. // if ($res !== false) {
  1102. // $this->success('同步成功');
  1103. // } else {
  1104. // $this->error('同步失败');
  1105. // }
  1106. // }
  1107. /**
  1108. * 美浓工单数据同步
  1109. * @return void
  1110. * @throws \think\Exception
  1111. * @throws \think\db\exception\BindParamException
  1112. * @throws \think\db\exception\DataNotFoundException
  1113. * @throws \think\db\exception\ModelNotFoundException
  1114. * @throws \think\exception\DbException
  1115. * @throws \think\exception\PDOException
  1116. */
  1117. public function MNWorkOrderData()
  1118. {
  1119. if ($this->request->isGet() === false) {
  1120. $this->error('请求错误');
  1121. }
  1122. $db7 = Db::connect(config('database.db7'));
  1123. $workOrderList = $db7->name('U8_06工单资料')
  1124. ->where('YX接收时间', null)
  1125. ->where('YX接收状态', null)
  1126. ->where('U8插入类型', '<>', '关闭')
  1127. ->select();
  1128. if (empty($workOrderList)) {
  1129. $this->success('未获取新工单');
  1130. }
  1131. $j = $m = $n = 0;
  1132. foreach ($workOrderList as $key => $value) {
  1133. $sort = 3;
  1134. $code = substr($value['成品编号'], 0, 4);
  1135. $client = \db('物料_存货结构')->where('编号', $code)->value('名称');
  1136. //插入产品资料
  1137. $processData = \db('产品_基本资料')
  1138. ->where('产品编号', $value['成品编号'])
  1139. ->count();
  1140. $detail = \db('物料_存货编码')->where('物料代码', $value['成品编号'])->find();
  1141. if ($processData === 0) {
  1142. $product = [
  1143. '客户编号' => $code,
  1144. '客户名称' => $client,
  1145. '产品编号' => $value['成品编号'],
  1146. '产品名称' => $value['成品名称'],
  1147. '计量单位' => $detail['领用单位'],
  1148. '状态' => '',
  1149. 'U8UID' => $detail['U8UID'],
  1150. '产品类别' => $detail['规格'],
  1151. 'Sys_id' => '[272/超级用户]',
  1152. 'Sys_rq' => date('Y-m-d H:i:s', time()),
  1153. 'Mod_rq' => date('Y-m-d H:i:s', time()),
  1154. ];
  1155. $productSql = \db('产品_基本资料')->fetchSql(true)->insert($product);
  1156. \db()->query($productSql);
  1157. }
  1158. //插入工单资料
  1159. $data = [
  1160. 'Gd_gdbh' => $value['工单编号'],
  1161. '行号' => $value['行号'],
  1162. 'Gd_客户代号' => $code,
  1163. 'Gd_客户名称' => $client,
  1164. 'Gd_khdh' => $value['客户编号'],
  1165. 'Gd_khmc' => $value['客户名称'],
  1166. '客户料号' => $value['客户料号'],
  1167. '成品代号' => $value['成品编号'],
  1168. '成品名称' => $value['成品名称'],
  1169. 'Gd_cpdh' => $value['产品编号'],
  1170. 'Gd_cpmc' => $value['产品名称'],
  1171. '产品版本号' => $value['版本号'],
  1172. '销售订单号' => $value['销售订单号'],
  1173. '警语版面' => $value['警语版面'],
  1174. '码源数量' => substr(str_replace('.', '', $value['投料数量']), 0, -2),
  1175. 'Gd_desc' => $value['备注'],
  1176. '接单日期' => $value['接单日期'],
  1177. '开单日期' => $value['开单日期'],
  1178. '交货日期' => $value['交货日期'],
  1179. '订单数量' => $value['订单数量'],
  1180. '实际投料' => $value['投料数量'],
  1181. '产品单价' => $value['产品单价'],
  1182. '计量单位' => '万张',
  1183. '成本考核_胶印' => 1,
  1184. '成本考核_凹印' => 1,
  1185. '成本考核_丝印' => 1,
  1186. '成本考核_模切' => 1,
  1187. '成本考核_检验' => 1,
  1188. 'gd_statu' => '3-计划中',
  1189. 'Sys_id' => '[1012/开单员]',
  1190. 'Sys_rq' => date('Y-m-d H:i:s', time()),
  1191. 'Mod_rq' => date('Y-m-d H:i:s', time()),
  1192. 'U8UID' => $value['U8_UID'],
  1193. '工单分类' => $sort
  1194. ];
  1195. //获取版本号
  1196. $banben = \db('工单_基本资料')
  1197. ->where('Gd_cpdh',$data['Gd_cpdh'])
  1198. ->order('Sys_rq desc')
  1199. ->column('产品版本号');
  1200. if ($banben){
  1201. $data['产品版本号'] = $banben[0];
  1202. }
  1203. $workOrderdata = \db('工单_基本资料')
  1204. ->where('U8UID', $value['U8_UID'])
  1205. ->count();
  1206. if ($workOrderdata === 0) {
  1207. $addSql = \db('工单_基本资料')->fetchSql(true)->insert($data);
  1208. $result = \db()->query($addSql);
  1209. if ($result === false) {
  1210. $m++;
  1211. } else {
  1212. $sqlString = $db7->name('U8_06工单资料')
  1213. ->where('UniqId', $value['UniqId'])
  1214. ->fetchSql(true)
  1215. ->update([
  1216. 'YX接收时间' => date('Y-m-d H:i:s', time()),
  1217. 'YX接收状态' => '1'
  1218. ]);
  1219. $db7->execute($sqlString);
  1220. }
  1221. } else {
  1222. $updateSql = \db('工单_基本资料')->where('U8UID', $value['U8_UID'])->fetchSql(true)->update($data);
  1223. $updateRes = \db()->query($updateSql);
  1224. if ($updateRes === false) {
  1225. $j++;
  1226. } else {
  1227. $sqlString = $db7->name('U8_06工单资料')
  1228. ->where('UniqId', $value['UniqId'])
  1229. ->fetchSql(true)
  1230. ->update([
  1231. 'YX接收时间' => date('Y-m-d H:i:s', time()),
  1232. 'YX接收状态' => '1'
  1233. ]);
  1234. $db7->execute($sqlString);
  1235. }
  1236. }
  1237. }
  1238. if ($j !== 0 || $m !== 0 || $n !== 0) {
  1239. $this->error('工单资料同步失败');
  1240. } else {
  1241. $this->success('工单资料同步成功');
  1242. }
  1243. }
  1244. /**
  1245. * 美浓工单BOM同步
  1246. * @return void
  1247. * @throws \think\Exception
  1248. * @throws \think\db\exception\BindParamException
  1249. * @throws \think\db\exception\DataNotFoundException
  1250. * @throws \think\db\exception\ModelNotFoundException
  1251. * @throws \think\exception\DbException
  1252. * @throws \think\exception\PDOException
  1253. */
  1254. public function MNWorkOrderBomData()
  1255. {
  1256. if ($this->request->isGet() === false) {
  1257. $this->error('请求错误');
  1258. }
  1259. $db7 = Db::connect(config('database.db7'));
  1260. $BomDataList = $db7->name('U8_09工单bom')
  1261. ->where('YX接收时间', null)
  1262. ->where('YX接收状态', null)
  1263. ->order('U8传递时间 desc')
  1264. ->select();
  1265. if (empty($BomDataList)) {
  1266. $this->success('未找到新工单BOM');
  1267. }
  1268. $j = $m = 0;
  1269. foreach ($BomDataList as $key => $value) {
  1270. $res = \db('工单_bom资料')->where('U8UID', $value['U8_UID'])->count();
  1271. $data = [
  1272. 'BOM_方案' => '工单评审定案',
  1273. 'BOM_工单编号' => $value['BOM_工单编号'],
  1274. 'BOM_版本' => $value['BOM_版本'],
  1275. 'BOM_工单行号' => $value['BOM_工单行号'],
  1276. 'BOM_行号' => $value['BOM_行号'],
  1277. 'BOM_产品编号' => $value['BOM_产品编号'],
  1278. 'BOM_物料编码' => $value['BOM_物料编码'],
  1279. 'BOM_物料名称' => $value['BOM_物料名称'],
  1280. 'BOM_投料单位' => $value['BOM_投料单位'],
  1281. 'BOM_投入数' => $value['BOM_投入数'],
  1282. 'BOM_产出数' => $value['BOM_产出数'],
  1283. 'BOM_产出单位' => $value['BOM_产出单位'],
  1284. 'BOM_标准用量' => $value['BOM_标准用量'],
  1285. 'BOM_实际用量' => $value['BOM_实际用量'],
  1286. 'BOM_计划用量' => $value['BOM_计划用量'],
  1287. 'BOM_核算价格' => 0,
  1288. 'Bom_领用工序' => '01-01',
  1289. 'BOM_备注' => $value['BOM_备注'],
  1290. 'Mod_rq' => date('Y-m-d H:i:s', time()),
  1291. 'U8UID' => $value['U8_UID'],
  1292. ];
  1293. if ($res === 0) {
  1294. $addSql = \db('工单_bom资料')->fetchSql(true)->insert($data);
  1295. $addRes = \db()->query($addSql);
  1296. if ($addRes === false) {
  1297. $m++;
  1298. } else {
  1299. $sqlString = $db7->name('U8_09工单bom')
  1300. ->where('UNIQID', $value['UNIQID'])
  1301. ->fetchSql(true)
  1302. ->update([
  1303. 'YX接收时间' => date('Y-m-d H:i:s', time()),
  1304. 'YX接收状态' => '1'
  1305. ]);
  1306. $db7->execute($sqlString);
  1307. }
  1308. } else {
  1309. unset($data['UNIQID']);
  1310. $updateSql = \db('工单_bom资料')
  1311. ->where('U8UID', $value['U8_UID'])
  1312. ->fetchSql(true)
  1313. ->update($data);
  1314. $updateRes = \db()->query($updateSql);
  1315. if ($updateRes === false) {
  1316. $j++;
  1317. } else {
  1318. $sqlString = $db7->name('U8_09工单bom')
  1319. ->where('UNIQID', $value['UNIQID'])
  1320. ->fetchSql(true)
  1321. ->update([
  1322. 'YX接收时间' => date('Y-m-d H:i:s', time()),
  1323. 'YX接收状态' => '1'
  1324. ]);
  1325. $db7->execute($sqlString);
  1326. }
  1327. }
  1328. }
  1329. if ($j !== 0 || $m !== 0) {
  1330. $this->error('工单BOM资料同步失败');
  1331. } else {
  1332. $this->success('工单BOM资料同步成功');
  1333. }
  1334. }
  1335. /**
  1336. * 美浓物料存货结构同步
  1337. * @return void
  1338. * @throws \think\Exception
  1339. * @throws \think\db\exception\BindParamException
  1340. * @throws \think\db\exception\DataNotFoundException
  1341. * @throws \think\db\exception\ModelNotFoundException
  1342. * @throws \think\exception\DbException
  1343. * @throws \think\exception\PDOException
  1344. */
  1345. public function MNMaterialRequisitionData()
  1346. {
  1347. if ($this->request->isGet() === false) {
  1348. $this->error('请求错误');
  1349. }
  1350. $db7 = \db()->connect(config('database.db7'));
  1351. $MaterialDataList = $db7->name('U8_11存货结构')
  1352. ->where('YX接收时间', null)
  1353. ->where('YX接收状态', null)
  1354. ->select();
  1355. if (empty($MaterialDataList)) {
  1356. $this->success('未找到新的物料存货结构');
  1357. }
  1358. $i = 0;
  1359. foreach ($MaterialDataList as $key => $value) {
  1360. $data = [
  1361. '编号' => $value['编号'],
  1362. '名称' => $value['名称'],
  1363. 'Sys_id' => '[272/超级用户]',
  1364. 'Sys_rq' => date('Y-m-d H:i:s', time()),
  1365. 'Mod_rq' => date('Y-m-d H:i:s', time()),
  1366. 'U8UID' => $value['U8_UID'],
  1367. ];
  1368. if ($value['U8插入类型'] === '新增') {
  1369. $sql = \db('物料_存货结构')->fetchSql(true)->insert($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. } else {
  1384. $sql = \db('物料_存货结构')
  1385. ->fetchSql(true)
  1386. ->where('U8UID', $value['U8_UID'])
  1387. ->update($data);
  1388. $res = \db()->query($sql);
  1389. if ($res === false) {
  1390. $i++;
  1391. } else {
  1392. $sqlString = $db7->name('U8_11存货结构')
  1393. ->where('UniqId', $value['UniqId'])
  1394. ->fetchSql(true)
  1395. ->update([
  1396. 'YX接收时间' => date('Y-m-d H:i:s', time()),
  1397. 'YX接收状态' => '1'
  1398. ]);
  1399. $db7->execute($sqlString);
  1400. }
  1401. }
  1402. }
  1403. if ($i !== 0) {
  1404. $this->error('存货结构同步失败');
  1405. } else {
  1406. $this->success('存货结构同步成功');
  1407. }
  1408. }
  1409. /**
  1410. * 美浓物料存货编码同步
  1411. * @return void
  1412. * @throws \think\Exception
  1413. * @throws \think\db\exception\BindParamException
  1414. * @throws \think\db\exception\DataNotFoundException
  1415. * @throws \think\db\exception\ModelNotFoundException
  1416. * @throws \think\exception\DbException
  1417. * @throws \think\exception\PDOException
  1418. */
  1419. public function MNInventoryCodeData()
  1420. {
  1421. if ($this->request->isGet() === false) {
  1422. $this->error('请求错误');
  1423. }
  1424. $db7 = \db()->connect(config('database.db7'));
  1425. $OrganizationalDataList = $db7->name('U8_04物料编码')
  1426. ->where('YX接收时间', null)
  1427. ->where('YX接收状态', null)
  1428. ->select();
  1429. if (empty($OrganizationalDataList)) {
  1430. $this->success('未找到新的物料编码');
  1431. }
  1432. $i = 0;
  1433. foreach ($OrganizationalDataList as $key => $value) {
  1434. $code = substr($value['物料代码'], 0, 2);
  1435. if ($code === '10' || $code === '14' || $code === '12') {
  1436. //插入产品资料
  1437. $productData = \db('产品_基本资料')
  1438. ->where('产品编号', $value['物料代码'])
  1439. ->count();
  1440. $clientCode = substr($value['物料代码'], 0, 4);
  1441. $clientName = \db('物料_存货结构')->where('编号', $clientCode)->value('rtrim(名称)');
  1442. $product = [
  1443. '客户编号' => $clientCode,
  1444. '客户名称' => $clientName,
  1445. '产品编号' => $value['物料代码'],
  1446. '产品名称' => $value['物料名称'],
  1447. '计量单位' => $value['领用单位'],
  1448. '状态' => '',
  1449. 'U8UID' => $value['U8_UID'],
  1450. '产品类别' => $value['规格'],
  1451. 'Sys_id' => '[272/超级用户]',
  1452. 'Sys_rq' => date('Y-m-d H:i:s', time()),
  1453. 'Mod_rq' => date('Y-m-d H:i:s', time()),
  1454. ];
  1455. if ($productData === 0) {
  1456. $productSql = \db('产品_基本资料')->fetchSql(true)->insert($product);
  1457. } else {
  1458. $productSql = \db('产品_基本资料')->where('产品编号', $value['物料代码'])->fetchSql(true)->update($product);
  1459. }
  1460. $productRes = \db()->query($productSql);
  1461. }
  1462. $data = [
  1463. '物料代码' => $value['物料代码'],
  1464. '物料名称' => $value['物料名称'],
  1465. '规格' => $value['规格'],
  1466. '采购单位' => $value['采购单位'],
  1467. '领用单位' => $value['领用单位'],
  1468. '单位换算率' => $value['单位换算率'],
  1469. '单价' => $value['单价'],
  1470. '币种' => $value['币种'],
  1471. '物料备注' => $value['物料备注'],
  1472. '状态' => $value['状态'],
  1473. 'Sys_id' => '[272/超级用户]',
  1474. 'Sys_rq' => date('Y-m-d H:i:s', time()),
  1475. 'Mod_rq' => '1900-01-01 00:00:00',
  1476. 'U8UID' => $value['U8_UID'],
  1477. ];
  1478. $number = \db('物料_存货编码')
  1479. ->where('U8UID', $value['U8_UID'])
  1480. ->count();
  1481. if ($number === 0) {
  1482. $sql = \db('物料_存货编码')->fetchSql(true)->insert($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. } else {
  1497. $sql = \db('物料_存货编码')
  1498. ->fetchSql(true)
  1499. ->where('U8UID', $value['U8_UID'])
  1500. ->update($data);
  1501. $res = \db()->query($sql);
  1502. if ($res === false) {
  1503. $i++;
  1504. } else {
  1505. $sqlString = $db7->name('U8_04物料编码')
  1506. ->where('UniqId', $value['UniqId'])
  1507. ->fetchSql(true)
  1508. ->update([
  1509. 'YX接收时间' => date('Y-m-d H:i:s', time()),
  1510. 'YX接收状态' => '1'
  1511. ]);
  1512. $db7->execute($sqlString);
  1513. }
  1514. }
  1515. }
  1516. if ($i !== 0) {
  1517. $this->error('物料编码同步失败');
  1518. } else {
  1519. $this->success('物料编码同步成功');
  1520. }
  1521. }
  1522. /**
  1523. * 美浓MES产品资料同步
  1524. * @return void
  1525. * @throws \think\db\exception\BindParamException
  1526. * @throws \think\db\exception\DataNotFoundException
  1527. * @throws \think\db\exception\ModelNotFoundException
  1528. * @throws \think\exception\DbException
  1529. * @throws \think\exception\PDOException
  1530. */
  1531. // public function minoMesProductData()
  1532. // {
  1533. // if ($this->request->isGet() === false) {
  1534. // $this->error('请求错误');
  1535. // }
  1536. // $db5 = \db()->connect(config('database.db5'));
  1537. // //工单数据查询
  1538. ////
  1539. //
  1540. // $workOrderList = \db('设备_产量计酬')->where('sczl_rq', 'between', ['2024-09-01 00:00:00', '2024-09-30 00:00:00'])->column('DISTINCT(sczl_gdbh) as gdbh');
  1541. //
  1542. //// $workOrderData = $db5->name('工单_基本资料')->where('Gd_gdbh','in',$workOrderList)->select();
  1543. // $workOrderData = $db5->name('工单_基本资料')->where('Gd_gdbh', 'in', $workOrderList)->column('rtrim(Gd_gdbh) as gdbh');
  1544. //// $print = $process = [];
  1545. //// foreach ($workOrderData as $key=> $value){
  1546. //// unset($workOrderData[$key]['Uniqid']);
  1547. // //删除工单基本资料表中重复工单
  1548. //// $workOrderNum = \db('工单_基本资料')->where('Gd_gdbh',$value['Gd_gdbh'])->count();
  1549. //// if ($workOrderNum !== 0){
  1550. //// \db('工单_基本资料')->where('Gd_gdbh',$value['Gd_gdbh'])->delete();
  1551. //// }
  1552. // //查询工单印件表中印件数据
  1553. //
  1554. //// $printData = $db5->name('工单_印件资料')->where('Yj_Gdbh','in',$workOrderData)->select();
  1555. //// \db('工单_印件资料')->where('Yj_Gdbh','in',$workOrderData)->delete();
  1556. //// foreach ($printData as $kk=>$vv){
  1557. //// unset($printData[$kk]['Uniqid']);
  1558. //// array_push($print,$printData[$kk]);
  1559. // //删除工单印件表中重复数据
  1560. //// $printNum = \db('工单_印件资料')
  1561. //// ->where('Yj_Gdbh',$vv['Yj_Gdbh'])
  1562. //// ->where('yj_Yjno',$vv['yj_Yjno'])
  1563. //// ->count();
  1564. //// if ($printNum !== 0){
  1565. //// \db('工单_印件资料')
  1566. //// ->where('Yj_Gdbh',$vv['Yj_Gdbh'])
  1567. //// ->where('yj_Yjno',$vv['yj_Yjno'])
  1568. //// ->delete();
  1569. //// }
  1570. // //查询工单工艺资料表中数据
  1571. // \db('工单_工艺资料')
  1572. // ->where('Gy0_gdbh', 'in', $workOrderData)
  1573. // ->delete();
  1574. // $processData = $db5->name('工单_工艺资料')
  1575. // ->where('Gy0_gdbh', 'in', $workOrderData)
  1576. // ->select();
  1577. //// \db('工单_工艺资料')
  1578. //// ->where('Gy0_gdbh',$value['Gd_gdbh'])
  1579. //// ->delete();
  1580. // foreach ($processData as $k => $v) {
  1581. // unset($processData[$k]['UniqId']);
  1582. //// array_push($process,$processData[$k]);
  1583. //// }
  1584. //
  1585. //// }
  1586. // }
  1587. //// halt($workOrderData);
  1588. //// $workSql = \db('工单_基本资料')->fetchSql(true)->insertAll($workOrderData);
  1589. //// $workRes = \db()->query($workSql);
  1590. //// die;
  1591. //// halt($printData);
  1592. //// $printSql = \db('工单_印件资料')->fetchSql(true)->insertAll($printData);
  1593. //// $printRes = \db()->query($printSql);
  1594. //// die;
  1595. //// halt($processData);
  1596. // $processSql = \db('工单_工艺资料')->fetchSql(true)->insertAll($processData);
  1597. // $processRes = \db()->query($processSql);
  1598. //// die;
  1599. // if ($workRes !== false && $printRes !== false && $processRes !== false) {
  1600. // $this->success('成功');
  1601. // } else {
  1602. // $this->error('失败');
  1603. // }
  1604. // }
  1605. //工单核检单同步
  1606. // public function hejiandancopy()
  1607. // {
  1608. //// $param = $this->request->param();
  1609. // $db5 = \db()->connect(config('database.db5'));
  1610. // //查询本月工单核检单数据
  1611. // $list = $db5->name('db_qczl')
  1612. // ->where('sys_rq', '>=', '2024-11-21 00:00:00')
  1613. // ->select();
  1614. // $employeeList = \db('人事_基本资料')
  1615. // ->whereNotNull('mn_员工编号')
  1616. // ->column('员工编号', 'mn_员工编号');
  1617. // foreach ($list as $key => $value) {
  1618. // for ($i = 1; $i < 14; $i++) {
  1619. // if ($value['fp_bh' . $i] !== '') {
  1620. // if (array_key_exists($value['fp_bh' . $i], $employeeList)) {
  1621. // $list[$key]['fp_bh' . $i] = $employeeList[$value['fp_bh' . $i]];
  1622. // }
  1623. // }
  1624. // }
  1625. // unset($list[$key]['UniqId']);
  1626. // }
  1627. // $sql = \db('db_qczl')->fetchSql(true)->insertAll($list);
  1628. // $res = \db()->query($sql);
  1629. // if ($res !== false) {
  1630. // $this->success('成功');
  1631. // } else {
  1632. // $this->error('失败');
  1633. // }
  1634. // }
  1635. //拆片工序数据同步
  1636. // public function chaipianCopy()
  1637. // {
  1638. // if ($this->request->isGet() === false) {
  1639. // $this->error('请求错误');
  1640. // }
  1641. // $param = $this->request->param();
  1642. // if (!empty($param['end'])) {
  1643. // $where['sczl_rq'] = ['between', [$param['start'], $param['end']]];
  1644. // } else {
  1645. // $where['sczl_rq'] = ['>=', $param['start']];
  1646. // }
  1647. // $db5 = \db()->connect(config('database.db5'));
  1648. // $list = $db5->name('db_sczl')
  1649. // ->where($where)
  1650. // ->select();
  1651. // $employeeList = \db('人事_基本资料')
  1652. // ->whereNotNull('mn_员工编号')
  1653. // ->column('员工编号', 'mn_员工编号');
  1654. // foreach ($list as $key => $value) {
  1655. // unset($list[$key]['UniqId']);
  1656. // if (array_key_exists($value['sczl_bh1'], $employeeList)) {
  1657. // $list[$key]['sczl_bh1'] = $employeeList[$value['sczl_bh1']];
  1658. // }
  1659. // }
  1660. // $sql = \db('db_sczl')->fetchSql(true)->insertAll($list);
  1661. // $res = \db()->query($sql);
  1662. // if ($res !== false) {
  1663. // $this->success('成功');
  1664. // } else {
  1665. // $this->error('失败');
  1666. // }
  1667. // }
  1668. //手工检验报工数据同步
  1669. // public function shougongCopy()
  1670. // {
  1671. // if ($this->request->isGet() === false) {
  1672. // $this->error('请求错误');
  1673. // }
  1674. // $param = $this->request->param();
  1675. // if (!empty($param['end'])) {
  1676. // $where['sczl_rq'] = ['between', [$param['start'], $param['end']]];
  1677. // } else {
  1678. // $where['sczl_rq'] = ['>=', $param['start']];
  1679. // }
  1680. // $db5 = \db()->connect(config('database.db5'));
  1681. // $list = $db5->name('db_手工检验')
  1682. // ->where($where)
  1683. // ->select();
  1684. // $employeeList = \db('人事_基本资料')
  1685. // ->whereNotNull('mn_员工编号')
  1686. // ->column('员工编号', 'mn_员工编号');
  1687. // foreach ($list as $key => $value) {
  1688. // for ($i = 0; $i < 13; $i++) {
  1689. // if ($value['sczl_bh' . $i] !== '') {
  1690. // if (array_key_exists($value['sczl_bh' . $i], $employeeList)) {
  1691. // $list[$key]['sczl_bh' . $i] = $employeeList[$value['sczl_bh' . $i]];
  1692. // }
  1693. // }
  1694. // }
  1695. // unset($list[$key]['UniqId']);
  1696. // }
  1697. // $sql = \db('db_手工检验')->fetchSql(true)->insertAll($list);
  1698. // $res = \db()->query($sql);
  1699. // if ($res !== false) {
  1700. // $this->success('成功');
  1701. // } else {
  1702. // $this->error('失败');
  1703. // }
  1704. // }
  1705. //包装计件数据同步
  1706. // public function baozhaungCopy()
  1707. // {
  1708. // if ($this->request->isGet() === false) {
  1709. // $this->error('请求错误');
  1710. // }
  1711. // $param = $this->request->param();
  1712. // if (!empty($param['end'])) {
  1713. // $where['sczl_rq'] = ['between', [$param['start'], $param['end']]];
  1714. // } else {
  1715. // $where['sczl_rq'] = ['>=', $param['start']];
  1716. // }
  1717. // $db5 = \db()->connect(config('database.db5'));
  1718. // $list = $db5->name('db_包装计件')
  1719. // ->where($where)
  1720. // ->select();
  1721. // $typeList = $db5->name('物料_存货编码')
  1722. // ->where('物料代码','like','10%')
  1723. // ->whereOr('物料代码','like','12%')
  1724. // ->whereOr('物料代码','like','14%')
  1725. // ->column('rtrim(规格) as 规格','rtrim(物料代码)');
  1726. // $cpdhList = $db5->name('工单_印件资料')
  1727. // ->where('Uniqid', '>', 18000)
  1728. // ->where('yj_cpdh', '<>', '') // 确保 yj_cpdh 不为空
  1729. // ->where('Yj_Gdbh','<>','')
  1730. // ->column('rtrim(yj_cpdh) AS cpdh, rtrim(yj_Yjno) AS yjno', 'CONCAT(rtrim(Yj_Gdbh), "-", rtrim(yj_Yjno))');
  1731. // $employeeList = \db('人事_基本资料')
  1732. // ->whereNotNull('mn_员工编号')
  1733. // ->column('员工编号', 'mn_员工编号');
  1734. // foreach ($list as $key => $value) {
  1735. // for ($i = 1; $i < 7; $i++) {
  1736. // //循环判断工单编号是否为空,不为空判断物料规格是条盒或小盒,条盒核算参数取1000,小盒核算参数取2500,如果工单编号为空,核算参数为空
  1737. // if ($value['sczl_gdbh' . $i] !== '') {
  1738. // $yjno = (int)substr($value['sczl_yjGx'.$i],0,2);
  1739. // $liatKey = $value['sczl_gdbh' . $i].'-'.$yjno;
  1740. // if (array_key_exists($liatKey,$cpdhList) !== false){
  1741. // $cpdh = $cpdhList[$liatKey]['cpdh'];
  1742. // $guige = $typeList[$cpdh];
  1743. // if ($guige == '小盒'){
  1744. // $list[$key]['sczl_type'.$i] = '2500';
  1745. // }else{
  1746. // $list[$key]['sczl_type'.$i] = '1000';
  1747. // }
  1748. // }else{
  1749. // $list[$key]['sczl_type'.$i] = '1000';
  1750. // }
  1751. // }else{
  1752. // $list[$key]['sczl_type'.$i] = '';
  1753. // }
  1754. //
  1755. // }
  1756. // if (array_key_exists($value['sczl_bh'], $employeeList)) {
  1757. // $list[$key]['sczl_bh'] = $employeeList[$value['sczl_bh']];
  1758. // }
  1759. // unset($list[$key]['UniqId']);
  1760. // }
  1761. // $sql = \db('db_包装计件')->fetchSql(true)->insertAll($list);
  1762. // $res = \db()->query($sql);
  1763. // if ($res !== false) {
  1764. // $this->success('成功');
  1765. // } else {
  1766. // $this->error('失败');
  1767. // }
  1768. // }
  1769. //计时工资数据同步
  1770. // public function jishiCopy()
  1771. // {
  1772. // if ($this->request->isGet() === false) {
  1773. // $this->error('请求错误');
  1774. // }
  1775. // $param = $this->request->param();
  1776. // if (!empty($param['end'])) {
  1777. // $where['wgjs_rq'] = ['between', [$param['start'], $param['end']]];
  1778. // } else {
  1779. // $where['wgjs_rq'] = ['>=', $param['start']];
  1780. // }
  1781. // $db5 = \db()->connect(config('database.db5'));
  1782. // $list = $db5->name('db_wgjs')
  1783. // ->where($where)
  1784. // ->select();
  1785. // $employeeList = \db('人事_基本资料')
  1786. // ->whereNotNull('mn_员工编号')
  1787. // ->column('员工编号', 'mn_员工编号');
  1788. // foreach ($list as $key => $value) {
  1789. // for ($i = 1; $i < 7; $i++) {
  1790. // if ($value['wgjs_bh' . $i] !== '') {
  1791. // if (array_key_exists($value['wgjs_bh' . $i], $employeeList)) {
  1792. // $list[$key]['wgjs_bh' . $i] = $employeeList[$value['wgjs_bh' . $i]];
  1793. // }
  1794. // }
  1795. // }
  1796. // unset($list[$key]['UniqId']);
  1797. // }
  1798. // $sql = \db('db_wgjs')->fetchSql(true)->insertAll($list);
  1799. // $res = \db()->query($sql);
  1800. // if ($res !== false) {
  1801. // $this->success('成功');
  1802. // } else {
  1803. // $this->error('失败');
  1804. // }
  1805. // }
  1806. /**
  1807. * 美浓MES物料领用记录
  1808. * @return void
  1809. * @throws \think\Exception
  1810. * @throws \think\db\exception\BindParamException
  1811. * @throws \think\db\exception\DataNotFoundException
  1812. * @throws \think\db\exception\ModelNotFoundException
  1813. * @throws \think\exception\DbException
  1814. * @throws \think\exception\PDOException
  1815. */
  1816. public function MNReceiptRecordData()
  1817. {
  1818. if ($this->request->isGet() === false) {
  1819. $this->error('请求错误');
  1820. }
  1821. $db3 = \db()->connect(config('database.db7'));
  1822. $OrganizationalDataList = $db3->name('U8_07物料领用')
  1823. ->where('YX接收时间', null)
  1824. ->where('YX接收状态', null)
  1825. ->where('UniqId','>',80838718)
  1826. ->select();
  1827. if (empty($OrganizationalDataList)) {
  1828. $this->success('未找到新的物料领用记录');
  1829. }
  1830. $i = 0;
  1831. foreach ($OrganizationalDataList as $key => $value) {
  1832. $data = [
  1833. 'st_rq' => $value['日期'],
  1834. 'st_jylb' => $value['交易类别'],
  1835. 'st_gdbh' => $value['工单编号'],
  1836. '采购单号' => $value['采购单号'],
  1837. '供方批次' => $value['供方批次'],
  1838. 'st_wlbh' => $value['物料编号'],
  1839. 'st_sl' => $value['领用数量'],
  1840. 'st_dw' => $value['领用单位'],
  1841. '领用单价' => $value['领用单价'],
  1842. 'st_desc' => $value['备注'],
  1843. '仓库编号' => $value['仓库编号'],
  1844. 'st_dpt' => $value['采购单号'],
  1845. 'st_jtbh' => $value['机台编号'],
  1846. 'sys_id' => '[272/超级用户]',
  1847. 'sys_rq' => date('Y-m-d H:i:s', time()),
  1848. 'mod_rq' => '1900-01-01 00:00:00',
  1849. 'U8UID' => $value['U8_UID'],
  1850. 'cpdh' => $value['产品编码']
  1851. ];
  1852. $number = \db('物料_收发记录')
  1853. ->where('U8UID', $value['U8_UID'])
  1854. ->count();
  1855. if ($number === 0) {
  1856. $sql = \db('物料_收发记录')->fetchSql(true)->insert($data);
  1857. $res = \db()->query($sql);
  1858. if ($res === false) {
  1859. $i++;
  1860. } else {
  1861. $sqlString = $db3->name('U8_07物料领用')
  1862. ->where('UniqId', $value['UniqId'])
  1863. ->fetchSql(true)
  1864. ->update([
  1865. 'YX接收时间' => date('Y-m-d H:i:s', time()),
  1866. 'YX接收状态' => '1'
  1867. ]);
  1868. $db3->execute($sqlString);
  1869. }
  1870. } else {
  1871. $sql = \db('物料_收发记录')
  1872. ->fetchSql(true)
  1873. ->where('U8UID', $value['U8_UID'])
  1874. ->update($data);
  1875. $res = \db()->query($sql);
  1876. if ($res === false) {
  1877. $i++;
  1878. } else {
  1879. $sqlString = $db3->name('U8_07物料领用')
  1880. ->where('UniqId', $value['UniqId'])
  1881. ->fetchSql(true)
  1882. ->update([
  1883. 'YX接收时间' => date('Y-m-d H:i:s', time()),
  1884. 'YX接收状态' => '1'
  1885. ]);
  1886. $db3->execute($sqlString);
  1887. }
  1888. }
  1889. }
  1890. if ($i !== 0) {
  1891. $this->error('物料领用记录同步失败');
  1892. } else {
  1893. $this->success('物料领用记录同步成功');
  1894. }
  1895. }
  1896. }