Nbsch.php 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253
  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. $master = DB::connection('mysql_nbsch')
  46. ->table('RT_SERVICE_SETTLEMENT_MASTER')
  47. ->select(DB::raw("DATE_FORMAT(document_date, '%Y-%m') as document_month"))
  48. ->groupBy('document_month')
  49. ->get()
  50. ->toArray();
  51. $data = DB::connection('mysql_fwe10')->table('uf_jsxmsp')->select('document_date')->groupBy('document_date')->get()->toArray();
  52. // 提取第二个数组中的所有日期
  53. $dataDates = [];
  54. foreach ($data as $item) {
  55. $dataDates[] = $item->document_date;
  56. }
  57. // 过滤第一个数组,移除在第二个数组中存在的日期
  58. $filteredMaster = [];
  59. foreach ($master as $item) {
  60. if (!in_array($item->document_month, $dataDates)) {
  61. $filteredMaster[] = $item->document_month;
  62. }
  63. }
  64. if(count($filteredMaster) > 0){
  65. for($j=0;$j<count($filteredMaster);$j++){
  66. $riqi = $filteredMaster[$j];
  67. $result = DB::connection('mysql_nbsch')->select("
  68. SELECT
  69. a.DOCUMENT_TYPE,
  70. DATE_FORMAT(a.DOCUMENT_DATE, '%Y-%m') AS DOCUMENT_DATE,
  71. ROUND(SUM(a.SETTLEMENT_SUM_AMOUNT) / 10000, 2) AS dyjsje,
  72. ROUND((SUM(a.SETTLEMENT_SUM_AMOUNT) - SUM(CASE WHEN a.isNull = '1' THEN a.SETTLEMENT_SUM_AMOUNT ELSE 0 END)) / 10000, 2) AS zcspje,
  73. ROUND(SUM(CASE WHEN a.isNull = '1' THEN a.SETTLEMENT_SUM_AMOUNT ELSE 0 END) / 10000, 2) AS qtje,
  74. CONCAT(ROUND(SUM(CASE WHEN a.isNull = '0' THEN 1 ELSE 0 END) / COUNT(a.isNull) * 100, 2), '%') AS sptgl,
  75. ROUND(SUM(CASE WHEN a.isNull = '0' THEN 1 ELSE 0 END) / COUNT(a.isNull) * 100, 2) AS sptgl_val
  76. FROM (
  77. SELECT
  78. fwjs.*,
  79. (CASE WHEN lcjl.BILL_ID IS NOT NULL THEN '1' ELSE '0' END) AS isNull
  80. FROM RT_SERVICE_SETTLEMENT_MASTER fwjs
  81. LEFT JOIN (
  82. SELECT * FROM (
  83. SELECT
  84. BILL_ID,
  85. GROUP_CONCAT(approve_node_name ORDER BY approve_node_name SEPARATOR ',') AS lcjdhub
  86. FROM SYS_FLOW_APPROVAL_RECORD
  87. WHERE approve_scheme_id IN (
  88. SELECT ID
  89. FROM SYS_FLOW_SCHEME S
  90. WHERE EXISTS(
  91. SELECT ID
  92. FROM SYS_FLOW_MASTER M
  93. WHERE EXISTS(
  94. SELECT 1
  95. FROM sys_flow_master_dept D
  96. WHERE M.ID = D.PID
  97. )
  98. AND S.PID = M.ID
  99. AND M.MENU_ID = '5ab7b937-19a0-47d4-b479-b9f58999abc8'
  100. )
  101. AND S.IS_DISABLE = 0
  102. )
  103. GROUP BY BILL_ID
  104. ) t
  105. WHERE lcjdhub NOT REGEXP '被服务'
  106. ) lcjl ON fwjs.id = lcjl.BILL_ID
  107. WHERE fwjs.APPROVE_NODE_NAME = '已完成'
  108. ) a
  109. WHERE 1=1 AND DATE_FORMAT(a.DOCUMENT_DATE, '%Y-%m') = ".$riqi."
  110. GROUP BY a.DOCUMENT_TYPE, DATE_FORMAT(a.DOCUMENT_DATE, '%Y-%m')
  111. ORDER BY DATE_FORMAT(a.DOCUMENT_DATE, '%Y-%m') DESC
  112. ");
  113. if(count($result) > 0){
  114. for($i=0;$i<count($result);$i++){
  115. $id = mt_rand(pow(10, 18), pow(10, 18) + 999999999);
  116. $insert = [
  117. 'ID' => $id,
  118. 'FORM_DATA_ID' => $id,
  119. 'DATA_INDEX' => 0.0,
  120. 'CREATE_TIME' => date('Y-m-d H:i:s'),
  121. 'TENANT_KEY' => 't1zz9w8165',
  122. 'IS_DELETE' => 0,
  123. 'DELETE_TYPE' => 0,
  124. 'FT_STATUS' => 0,
  125. 'document_type' => $result[$i]->DOCUMENT_TYPE,
  126. 'document_date' => $result[$i]->DOCUMENT_DATE,
  127. 'dyjsje' => $result[$i]->dyjsje,
  128. 'zcspje' => $result[$i]->zcspje,
  129. 'qtje' => $result[$i]->qtje,
  130. 'sptgl' => $result[$i]->sptgl,
  131. 'sptgl_val' => $result[$i]->sptgl_val
  132. ];
  133. DB::connection('mysql_fwe10')->table('uf_jsxmsp')->insert($insert);
  134. }
  135. }
  136. }
  137. }
  138. }
  139. public function nbschInsert2()
  140. {
  141. $result = DB::connection('mysql_nbsch')->select("
  142. SELECT
  143. TRIM(
  144. REPLACE(
  145. REPLACE(
  146. REPLACE(
  147. ou.dept_name,
  148. '国家能源集团宁夏煤业有限责任公司',
  149. ''
  150. ),
  151. '国家能源集团宁夏煤业',
  152. ''
  153. ),
  154. '国能宁夏煤业',
  155. ''
  156. )
  157. ) AS dept_name,
  158. a.DOCUMENT_DATE,
  159. ROUND(a.dyjsje / 10000, 2) AS dyjsje,
  160. ROUND(a.zcspje / 10000, 2) AS zcspje,
  161. ROUND(a.qtje / 10000, 2) AS qtje,
  162. CONCAT(ROUND(a.sptgl * 100, 2), '%') AS sptgl,
  163. ROUND(a.sptgl * 100, 2) AS sptgl_val
  164. FROM (
  165. SELECT
  166. a.INCOME_DEPT_ID,
  167. DATE_FORMAT(a.DOCUMENT_DATE, '%Y-%m') AS DOCUMENT_DATE,
  168. SUM(a.SETTLEMENT_SUM_AMOUNT) AS dyjsje,
  169. (SUM(a.SETTLEMENT_SUM_AMOUNT) - SUM(CASE WHEN a.isNull = '1' THEN a.SETTLEMENT_SUM_AMOUNT ELSE 0 END)) AS zcspje,
  170. SUM(CASE WHEN a.isNull = '1' THEN a.SETTLEMENT_SUM_AMOUNT ELSE 0 END) AS qtje,
  171. ROUND(SUM(CASE WHEN a.isNull = '0' THEN 1 ELSE 0 END) / COUNT(a.isNull), 2) AS sptgl
  172. FROM (
  173. SELECT
  174. fwjs.*,
  175. (CASE WHEN lcjl.BILL_ID IS NOT NULL THEN '1' ELSE '0' END) AS isNull
  176. FROM RT_SERVICE_SETTLEMENT_MASTER fwjs
  177. LEFT JOIN (
  178. SELECT t.* FROM (
  179. SELECT
  180. BILL_ID,
  181. GROUP_CONCAT(approve_node_name ORDER BY approve_node_name SEPARATOR ',') AS lcjdhub
  182. FROM SYS_FLOW_APPROVAL_RECORD
  183. WHERE approve_scheme_id IN (
  184. SELECT ID
  185. FROM SYS_FLOW_SCHEME S
  186. WHERE EXISTS(
  187. SELECT ID
  188. FROM SYS_FLOW_MASTER M
  189. WHERE EXISTS(
  190. SELECT 1
  191. FROM sys_flow_master_dept D
  192. WHERE M.ID = D.PID
  193. )
  194. AND S.PID = M.ID
  195. AND M.MENU_ID = '5ab7b937-19a0-47d4-b479-b9f58999abc8'
  196. )
  197. AND S.IS_DISABLE = 0
  198. )
  199. GROUP BY BILL_ID
  200. ) t
  201. WHERE t.lcjdhub NOT REGEXP '被服务'
  202. ) lcjl ON fwjs.id = lcjl.BILL_ID
  203. WHERE fwjs.APPROVE_NODE_NAME = '已完成'
  204. AND DATE_FORMAT(fwjs.DOCUMENT_DATE, '%Y-%m') = '2025-06'
  205. ) a
  206. GROUP BY a.INCOME_DEPT_ID, DATE_FORMAT(a.DOCUMENT_DATE, '%Y-%m')
  207. ) a
  208. LEFT JOIN SYS_DEPT ou ON ou.id = a.INCOME_DEPT_ID
  209. ORDER BY a.DOCUMENT_DATE DESC
  210. ");
  211. if(count($result) > 0){
  212. for($i=0;$i<count($result);$i++){
  213. $id = mt_rand(pow(10, 18), pow(10, 18) + 999999999);
  214. $insert = [
  215. 'ID' => $id,
  216. 'FORM_DATA_ID' => $id,
  217. 'DATA_INDEX' => 0.0,
  218. 'CREATE_TIME' => date('Y-m-d H:i:s'),
  219. 'TENANT_KEY' => 't1zz9w8165',
  220. 'IS_DELETE' => 0,
  221. 'DELETE_TYPE' => 0,
  222. 'FT_STATUS' => 0,
  223. 'document_type' => $result[$i]->dept_name,
  224. 'document_date' => $result[$i]->DOCUMENT_DATE,
  225. 'dyjsje' => $result[$i]->dyjsje,
  226. 'zcspje' => $result[$i]->zcspje,
  227. 'qtje' => $result[$i]->qtje,
  228. 'sptgl' => $result[$i]->sptgl,
  229. 'sptgl_val' => $result[$i]->sptgl_val
  230. ];
  231. DB::connection('mysql_fwe10')->table('uf_zzdwsp')->insert($insert);
  232. }
  233. }
  234. }
  235. }