Nbsch.php 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225
  1. <?php
  2. namespace App\Console\Commands;
  3. use Illuminate\Console\Command;
  4. use Illuminate\Support\Facades\Input;
  5. use Illuminate\Support\Facades\DB;
  6. use Illuminate\Support\Facades\Log;
  7. class Nbsch extends Command
  8. {
  9. /**
  10. * The name and signature of the console command.
  11. *
  12. * @var string
  13. */
  14. protected $signature = 'nbsch:update';
  15. /**
  16. * The console command description.
  17. *
  18. * @var string
  19. */
  20. protected $description = '内部市场化';
  21. /**
  22. * Create a new command instance.
  23. *
  24. * @return void
  25. */
  26. public function __construct()
  27. {
  28. parent::__construct();
  29. }
  30. /**
  31. * Execute the console command.
  32. *
  33. * @return mixed
  34. */
  35. public function handle()
  36. {
  37. $start_time = time();
  38. echo '开始时间:'.date('Y-m-d H:i:s');
  39. // $this->nbschInsert();
  40. $this->nbschInsert2();
  41. echo '时长:'.number_format(((time()-$start_time)/60),2).'分钟';
  42. }
  43. public function nbschInsert()
  44. {
  45. $result = DB::connection('mysql_nbsch')->select("
  46. SELECT
  47. a.DOCUMENT_TYPE,
  48. DATE_FORMAT(a.DOCUMENT_DATE, '%Y-%m') AS DOCUMENT_DATE,
  49. ROUND(SUM(a.SETTLEMENT_SUM_AMOUNT) / 10000, 2) AS dyjsje,
  50. ROUND((SUM(a.SETTLEMENT_SUM_AMOUNT) - SUM(CASE WHEN a.isNull = '1' THEN a.SETTLEMENT_SUM_AMOUNT ELSE 0 END)) / 10000, 2) AS zcspje,
  51. ROUND(SUM(CASE WHEN a.isNull = '1' THEN a.SETTLEMENT_SUM_AMOUNT ELSE 0 END) / 10000, 2) AS qtje,
  52. CONCAT(ROUND(SUM(CASE WHEN a.isNull = '0' THEN 1 ELSE 0 END) / COUNT(a.isNull) * 100, 2), '%') AS sptgl,
  53. ROUND(SUM(CASE WHEN a.isNull = '0' THEN 1 ELSE 0 END) / COUNT(a.isNull) * 100, 2) AS sptgl_val
  54. FROM (
  55. SELECT
  56. fwjs.*,
  57. (CASE WHEN lcjl.BILL_ID IS NOT NULL THEN '1' ELSE '0' END) AS isNull
  58. FROM RT_SERVICE_SETTLEMENT_MASTER fwjs
  59. LEFT JOIN (
  60. SELECT * FROM (
  61. SELECT
  62. BILL_ID,
  63. GROUP_CONCAT(approve_node_name ORDER BY approve_node_name SEPARATOR ',') AS lcjdhub
  64. FROM SYS_FLOW_APPROVAL_RECORD
  65. WHERE approve_scheme_id IN (
  66. SELECT ID
  67. FROM SYS_FLOW_SCHEME S
  68. WHERE EXISTS(
  69. SELECT ID
  70. FROM SYS_FLOW_MASTER M
  71. WHERE EXISTS(
  72. SELECT 1
  73. FROM sys_flow_master_dept D
  74. WHERE M.ID = D.PID
  75. )
  76. AND S.PID = M.ID
  77. AND M.MENU_ID = '5ab7b937-19a0-47d4-b479-b9f58999abc8'
  78. )
  79. AND S.IS_DISABLE = 0
  80. )
  81. GROUP BY BILL_ID
  82. ) t
  83. WHERE lcjdhub NOT REGEXP '被服务'
  84. ) lcjl ON fwjs.id = lcjl.BILL_ID
  85. WHERE fwjs.APPROVE_NODE_NAME = '已完成'
  86. ) a
  87. WHERE 1=1 AND DATE_FORMAT(a.DOCUMENT_DATE, '%Y-%m') = '2025-06' -- 日期筛选条件
  88. GROUP BY a.DOCUMENT_TYPE, DATE_FORMAT(a.DOCUMENT_DATE, '%Y-%m')
  89. ORDER BY DATE_FORMAT(a.DOCUMENT_DATE, '%Y-%m') DESC
  90. ");
  91. if(count($result) > 0){
  92. for($i=0;$i<count($result);$i++){
  93. $id = mt_rand(pow(10, 18), pow(10, 18) + 999999999);
  94. $insert = [
  95. 'ID' => $id,
  96. 'FORM_DATA_ID' => $id,
  97. 'DATA_INDEX' => 0.0,
  98. 'CREATE_TIME' => date('Y-m-d H:i:s'),
  99. 'TENANT_KEY' => 't1zz9w8165',
  100. 'IS_DELETE' => 0,
  101. 'DELETE_TYPE' => 0,
  102. 'FT_STATUS' => 0,
  103. 'document_type' => $result[$i]->DOCUMENT_TYPE,
  104. 'document_date' => $result[$i]->DOCUMENT_DATE,
  105. 'dyjsje' => $result[$i]->dyjsje,
  106. 'zcspje' => $result[$i]->zcspje,
  107. 'qtje' => $result[$i]->qtje,
  108. 'sptgl' => $result[$i]->sptgl,
  109. 'sptgl_val' => $result[$i]->sptgl_val
  110. ];
  111. DB::connection('mysql_fwe10')->table('uf_jsxmsp')->insert($insert);
  112. }
  113. }
  114. }
  115. public function nbschInsert2()
  116. {
  117. $result = DB::connection('mysql_nbsch')->select("
  118. SELECT
  119. TRIM(
  120. REPLACE(
  121. REPLACE(
  122. REPLACE(
  123. ou.dept_name,
  124. '国家能源集团宁夏煤业有限责任公司',
  125. ''
  126. ),
  127. '国家能源集团宁夏煤业',
  128. ''
  129. ),
  130. '国能宁夏煤业',
  131. ''
  132. )
  133. ) AS dept_name,
  134. a.DOCUMENT_DATE,
  135. ROUND(a.dyjsje / 10000, 2) AS dyjsje,
  136. ROUND(a.zcspje / 10000, 2) AS zcspje,
  137. ROUND(a.qtje / 10000, 2) AS qtje,
  138. CONCAT(ROUND(a.sptgl * 100, 2), '%') AS sptgl,
  139. ROUND(a.sptgl * 100, 2) AS sptgl_val
  140. FROM (
  141. SELECT
  142. a.INCOME_DEPT_ID,
  143. DATE_FORMAT(a.DOCUMENT_DATE, '%Y-%m') AS DOCUMENT_DATE,
  144. SUM(a.SETTLEMENT_SUM_AMOUNT) AS dyjsje,
  145. (SUM(a.SETTLEMENT_SUM_AMOUNT) - SUM(CASE WHEN a.isNull = '1' THEN a.SETTLEMENT_SUM_AMOUNT ELSE 0 END)) AS zcspje,
  146. SUM(CASE WHEN a.isNull = '1' THEN a.SETTLEMENT_SUM_AMOUNT ELSE 0 END) AS qtje,
  147. ROUND(SUM(CASE WHEN a.isNull = '0' THEN 1 ELSE 0 END) / COUNT(a.isNull), 2) AS sptgl
  148. FROM (
  149. SELECT
  150. fwjs.*,
  151. (CASE WHEN lcjl.BILL_ID IS NOT NULL THEN '1' ELSE '0' END) AS isNull
  152. FROM RT_SERVICE_SETTLEMENT_MASTER fwjs
  153. LEFT JOIN (
  154. SELECT t.* FROM (
  155. SELECT
  156. BILL_ID,
  157. GROUP_CONCAT(approve_node_name ORDER BY approve_node_name SEPARATOR ',') AS lcjdhub
  158. FROM SYS_FLOW_APPROVAL_RECORD
  159. WHERE approve_scheme_id IN (
  160. SELECT ID
  161. FROM SYS_FLOW_SCHEME S
  162. WHERE EXISTS(
  163. SELECT ID
  164. FROM SYS_FLOW_MASTER M
  165. WHERE EXISTS(
  166. SELECT 1
  167. FROM SYS_DEPT D
  168. WHERE M.ID = D.PID
  169. )
  170. AND S.PID = M.ID
  171. AND M.MENU_ID = '5ab7b937-19a0-47d4-b479-b9f58999abc8'
  172. )
  173. AND S.IS_DISABLE = 0
  174. )
  175. GROUP BY BILL_ID
  176. ) t
  177. WHERE t.lcjdhub NOT REGEXP '被服务'
  178. ) lcjl ON fwjs.id = lcjl.BILL_ID
  179. WHERE fwjs.APPROVE_NODE_NAME = '已完成'
  180. AND DATE_FORMAT(fwjs.DOCUMENT_DATE, '%Y-%m') = '2025-06'
  181. ) a
  182. GROUP BY a.INCOME_DEPT_ID, DATE_FORMAT(a.DOCUMENT_DATE, '%Y-%m')
  183. ) a
  184. LEFT JOIN SYS_DEPT ou ON ou.id = a.INCOME_DEPT_ID
  185. ORDER BY a.DOCUMENT_DATE DESC
  186. ");
  187. if(count($result) > 0){
  188. for($i=0;$i<count($result);$i++){
  189. $id = mt_rand(pow(10, 18), pow(10, 18) + 999999999);
  190. $insert = [
  191. 'ID' => $id,
  192. 'FORM_DATA_ID' => $id,
  193. 'DATA_INDEX' => 0.0,
  194. 'CREATE_TIME' => date('Y-m-d H:i:s'),
  195. 'TENANT_KEY' => 't1zz9w8165',
  196. 'IS_DELETE' => 0,
  197. 'DELETE_TYPE' => 0,
  198. 'FT_STATUS' => 0,
  199. 'document_type' => $result[$i]->DOCUMENT_TYPE,
  200. 'document_date' => $result[$i]->DOCUMENT_DATE,
  201. 'dyjsje' => $result[$i]->dyjsje,
  202. 'zcspje' => $result[$i]->zcspje,
  203. 'qtje' => $result[$i]->qtje,
  204. 'sptgl' => $result[$i]->sptgl,
  205. 'sptgl_val' => $result[$i]->sptgl_val
  206. ];
  207. DB::connection('mysql_fwe10')->table('uf_zzdwsp')->insert($insert);
  208. }
  209. }
  210. }
  211. }