Synchronization.php 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299
  1. <?php
  2. namespace app\api\controller;
  3. use app\common\controller\Api;
  4. use think\Db;
  5. /**
  6. * 中间表数据同步
  7. */
  8. class Synchronization extends Api
  9. {
  10. protected $noNeedLogin = ['*'];
  11. protected $noNeedRight = ['*'];
  12. /**
  13. * 工单资料数据同步
  14. */
  15. public function WorkOrderData()
  16. {
  17. if ($this->request->isGet() === false){
  18. $this->error('请求错误');
  19. }
  20. $db3 = Db::connect(config('database.db3'));
  21. $workOrderList = $db3->name('U8_06工单资料')
  22. ->where('MES接收时间',null)
  23. ->where('MES接收状态','0')
  24. ->where('U8插入类型','<>','关闭')
  25. ->select();
  26. if (empty($workOrderList)){
  27. $this->success('未获取新工单');
  28. }
  29. $j = $m = $n =0;
  30. foreach ($workOrderList as $key=>$value){
  31. //插入产品资料
  32. $productData = \db('产品_基本资料')
  33. ->where('产品编号',$value['成品编号'])
  34. ->count();
  35. if ($productData === 0){
  36. $clientCode = substr($value['成品编号'],0,5);
  37. $product = [
  38. '客户编号' => $clientCode,
  39. '客户名称' => $value['客户名称'],
  40. '产品编号' => $value['成品编号'],
  41. '产品名称' => $value['成品名称'],
  42. '计量单位' => '万张',
  43. '状态' => '',
  44. 'Mod_rq' => date('Y-m-d H:i:s',time()),
  45. 'UniqID' => \db('产品_基本资料')->order('UniqID desc')->value('UniqID')+1,
  46. ];
  47. if (strpos($value['成品名称'],'小盒') === false){
  48. $product['产品类别'] = '条盒';
  49. }else{
  50. $product['产品类别'] = '小盒';
  51. }
  52. $productSql = \db('产品_基本资料')->fetchSql(true)->insert($product);
  53. $productRes = \db()->query($productSql);
  54. if ($productRes === false){
  55. $n++;
  56. }
  57. }
  58. //插入工单资料
  59. $client = \db('产品_基本资料')->where('产品编号',$value['成品编号'])->field('rtrim(客户编号) as 客户编号,rtrim(客户名称) as 客户名称')->find();
  60. $data = [
  61. 'Gd_gdbh' => $value['工单编号'],
  62. '行号' => $value['行号'],
  63. 'Gd_客户代号' => $client['客户编号'],
  64. 'Gd_客户名称' => $client['客户名称'],
  65. 'Gd_khdh' => $value['客户编号'],
  66. 'Gd_khmc' => $value['客户名称'],
  67. '客户料号' => $value['客户料号'],
  68. '成品代号' => $value['成品编号'],
  69. '成品名称' => $value['成品名称'],
  70. 'Gd_cpdh' => $value['产品编号'],
  71. 'Gd_cpmc' => $value['产品名称'],
  72. '产品版本号' => $value['版本号'],
  73. '销售订单号' => $value['销售订单号'],
  74. '警语版面' => $value['警语版面'],
  75. '码源数量' => substr(str_replace('.','',$value['投料数量']),0,-2),
  76. 'Gd_desc' => $value['备注'],
  77. '接单日期' => $value['接单日期'],
  78. '开单日期' => $value['开单日期'],
  79. '交货日期' => $value['交货日期'],
  80. '订单数量' => $value['订单数量'],
  81. '实际投料' => $value['投料数量'],
  82. '产品单价' => $value['产品单价'],
  83. '计量单位' => '万张',
  84. '成本考核_胶印' => 1,
  85. '成本考核_凹印' => 1,
  86. '成本考核_丝印' => 1,
  87. '成本考核_模切' => 1,
  88. '成本考核_检验' => 1,
  89. 'gd_statu' => '3-计划中',
  90. 'Sys_id' => '[1012/开单员]',
  91. 'Sys_rq' => date('Y-m-d H:i:s',time()),
  92. 'Mod_rq' => date('Y-m-d H:i:s',time()),
  93. 'U8UID' => $value['U8_UID'],
  94. 'Uniqid' => $value['UniqId']
  95. ];
  96. $workOrderdata = \db('工单_基本资料')
  97. ->where('Uniqid',$value['UniqId'])
  98. ->count();
  99. if ($workOrderdata === 0){
  100. $addSql = \db('工单_基本资料')->fetchSql(true)->insert($data);
  101. $result = \db()->query($addSql);
  102. if ($result === false){
  103. $m++;
  104. }else{
  105. $sqlString = $db3->name('U8_06工单资料')
  106. ->where('UniqId', $value['UniqId'])
  107. ->fetchSql(true)
  108. ->update([
  109. 'MES接收时间' => date('Y-m-d H:i:s', time()),
  110. 'MES接收状态' => '1'
  111. ]);
  112. $db3->execute($sqlString);
  113. }
  114. }else{
  115. $updateSql = \db('工单_基本资料')->where('Uniqid',$value['UniqId'])->fetchSql(true)->update($data);
  116. $updateRes = \db()->query($updateSql);
  117. if ($updateRes === false){
  118. $j++;
  119. }else{
  120. $sqlString = $db3->name('U8_06工单资料')
  121. ->where('UniqId', $value['UniqId'])
  122. ->fetchSql(true)
  123. ->update([
  124. 'MES接收时间' => date('Y-m-d H:i:s', time()),
  125. 'MES接收状态' => '1'
  126. ]);
  127. $db3->execute($sqlString);
  128. }
  129. }
  130. }
  131. if ($j !== 0 || $m !==0 || $n !== 0){
  132. $this->error('工单资料同步失败');
  133. }else{
  134. $this->success('工单资料同步成功');
  135. }
  136. }
  137. /**
  138. * 工单bom资料同步
  139. */
  140. public function WorkOrderBomData()
  141. {
  142. if ($this->request->isGet() === false){
  143. $this->error('请求错误');
  144. }
  145. $db3 = Db::connect(config('database.db3'));
  146. $BomDataList = $db3->name('U8_09工单bom')
  147. ->where('MES接收时间',null)
  148. ->where('MES接收状态','0')
  149. ->order('U8传递时间 desc')
  150. ->select();
  151. if (empty($BomDataList)){
  152. $this->success('未找到新工单BOM');
  153. }
  154. $j = $m = 0;
  155. foreach ($BomDataList as $key=>$value){
  156. $res = \db('工单_bom资料')->where('UNIQID',$value['UNIQID'])->count();
  157. $data = [
  158. 'BOM_方案' => '工单评审定案',
  159. 'BOM_工单编号' => $value['BOM_工单编号'],
  160. 'BOM_版本' => $value['BOM_版本'],
  161. 'BOM_工单行号' => $value['BOM_工单行号'],
  162. 'BOM_行号' => $value['BOM_行号'],
  163. 'BOM_产品编号' => $value['BOM_产品编号'],
  164. 'BOM_物料编码' => $value['BOM_物料编码'],
  165. 'BOM_物料名称' => $value['BOM_物料名称'],
  166. 'BOM_投料单位' => $value['BOM_投料单位'],
  167. 'BOM_投入数' => $value['BOM_投入数'],
  168. 'BOM_产出数' => $value['BOM_产出数'],
  169. 'BOM_产出单位' => $value['BOM_产出单位'],
  170. 'BOM_标准用量' => $value['BOM_标准用量'],
  171. 'BOM_实际用量' => $value['BOM_实际用量'],
  172. 'BOM_计划用量' => $value['BOM_计划用量'],
  173. 'BOM_核算价格' => 0,
  174. 'Bom_领用工序' => '01-01',
  175. 'BOM_备注' => $value['BOM_备注'],
  176. 'Mod_rq' => date('Y-m-d H:i:s',time()),
  177. 'U8UID' => $value['U8_UID'],
  178. 'UNIQID' => $value['UNIQID']
  179. ];
  180. if ($res === 0){
  181. $addSql = \db('工单_bom资料')->fetchSql(true)->insert($data);
  182. $addRes = \db()->query($addSql);
  183. if ($addRes === false){
  184. $m++;
  185. }else{
  186. $sqlString = $db3->name('U8_09工单bom')
  187. ->where('UniqId', $value['UNIQID'])
  188. ->fetchSql(true)
  189. ->update([
  190. 'MES接收时间' => date('Y-m-d H:i:s', time()),
  191. 'MES接收状态' => '1'
  192. ]);
  193. $db3->execute($sqlString);
  194. }
  195. }else{
  196. $updateSql = \db('工单_bom资料')
  197. ->where('UNIQID',$value['UNIQID'])
  198. ->fetchSql(true)
  199. ->update($data);
  200. $updateRes = \db()->query($updateSql);
  201. if ($updateRes === false){
  202. $j++;
  203. }else{
  204. $sqlString = $db3->name('U8_09工单bom')
  205. ->where('UniqId', $value['UNIQID'])
  206. ->fetchSql(true)
  207. ->update([
  208. 'MES接收时间' => date('Y-m-d H:i:s', time()),
  209. 'MES接收状态' => '1'
  210. ]);
  211. $db3->execute($sqlString);
  212. }
  213. }
  214. }
  215. if ($j !== 0 || $m !== 0){
  216. $this->error('工单BOM资料同步失败');
  217. }else{
  218. $this->success('工单BOM资料同步成功');
  219. }
  220. }
  221. /**
  222. * 存货结构数据同步
  223. */
  224. public function MaterialRequisitionData()
  225. {
  226. if ($this->request->isGet() === false){
  227. $this->error('请求错误');
  228. }
  229. $db3 = \db()->connect(config('database.db3'));
  230. $MaterialDataList = $db3->name('U8_11存货结构')
  231. ->where('MES接收时间',null)
  232. ->where('MES接收状态','0')
  233. ->select();
  234. if (empty($MaterialDataList)){
  235. $this->success('未找到新的物料存货结构');
  236. }
  237. $i = 0;
  238. foreach ($MaterialDataList as $key=>$value){
  239. $data = [
  240. '编号' => $value['编号'],
  241. '名称' => $value['名称'],
  242. 'Sys_id' => '[272/超级用户]',
  243. 'Sys_rq' => date('Y-m-d H:i:s',time()),
  244. 'Mod_rq' => date('Y-m-d H:i:s',time()),
  245. 'U8UID' => $value['U8_UID'],
  246. 'UniqId' => $value['UniqId']
  247. ];
  248. if ($value['U8插入类型'] === '新增'){
  249. $sql = \db('物料_存货结构')->fetchSql(true)->insert($data);
  250. $res = \db()->query($sql);
  251. if ($res === false){
  252. $i++;
  253. }else{
  254. $sqlString = $db3->name('U8_11存货结构')
  255. ->where('UniqId', $value['UniqId'])
  256. ->fetchSql(true)
  257. ->update([
  258. 'MES接收时间' => date('Y-m-d H:i:s', time()),
  259. 'MES接收状态' => '1'
  260. ]);
  261. $db3->execute($sqlString);
  262. }
  263. }else{
  264. $sql = \db('物料_存货结构')
  265. ->fetchSql(true)
  266. ->where('UniqId',$value['UniqId'])
  267. ->update($data);
  268. $res = \db()->query($sql);
  269. if ($res === false){
  270. $i++;
  271. }else{
  272. $sqlString = $db3->name('U8_11存货结构')
  273. ->where('UniqId', $value['UniqId'])
  274. ->fetchSql(true)
  275. ->update([
  276. 'MES接收时间' => date('Y-m-d H:i:s', time()),
  277. 'MES接收状态' => '1'
  278. ]);
  279. $db3->execute($sqlString);
  280. }
  281. }
  282. }
  283. if ($i !== 0){
  284. $this->error('存货结构同步失败');
  285. }else{
  286. $this->success('存货结构同步成功');
  287. }
  288. }
  289. }