Synchronization.php 13 KB

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