Nbsch.php 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281
  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. $master = DB::connection('mysql_nbsch')
  142. ->table('RT_SERVICE_SETTLEMENT_MASTER')
  143. ->select(DB::raw("DATE_FORMAT(document_date, '%Y-%m') as document_month"))
  144. ->groupBy('document_month')
  145. ->get()
  146. ->toArray();
  147. $data = DB::connection('mysql_fwe10')->table('uf_zzdwsp')->select('document_date')->groupBy('document_date')->get()->toArray();
  148. // 提取第二个数组中的所有日期
  149. $dataDates = [];
  150. foreach ($data as $item) {
  151. $dataDates[] = $item->document_date;
  152. }
  153. // 过滤第一个数组,移除在第二个数组中存在的日期
  154. $filteredMaster = [];
  155. foreach ($master as $item) {
  156. if (!in_array($item->document_month, $dataDates)) {
  157. $filteredMaster[] = $item->document_month;
  158. }
  159. }
  160. if(count($filteredMaster) > 0){
  161. for($j=0;$j<count($filteredMaster);$j++){
  162. $riqi = $filteredMaster[$j];
  163. $result = DB::connection('mysql_nbsch')->select("
  164. SELECT
  165. TRIM(
  166. REPLACE(
  167. REPLACE(
  168. REPLACE(
  169. ou.dept_name,
  170. '国家能源集团宁夏煤业有限责任公司',
  171. ''
  172. ),
  173. '国家能源集团宁夏煤业',
  174. ''
  175. ),
  176. '国能宁夏煤业',
  177. ''
  178. )
  179. ) AS dept_name,
  180. a.DOCUMENT_DATE,
  181. ROUND(a.dyjsje / 10000, 2) AS dyjsje,
  182. ROUND(a.zcspje / 10000, 2) AS zcspje,
  183. ROUND(a.qtje / 10000, 2) AS qtje,
  184. CONCAT(ROUND(a.sptgl * 100, 2), '%') AS sptgl,
  185. ROUND(a.sptgl * 100, 2) AS sptgl_val
  186. FROM (
  187. SELECT
  188. a.INCOME_DEPT_ID,
  189. DATE_FORMAT(a.DOCUMENT_DATE, '%Y-%m') AS DOCUMENT_DATE,
  190. SUM(a.SETTLEMENT_SUM_AMOUNT) AS dyjsje,
  191. (SUM(a.SETTLEMENT_SUM_AMOUNT) - SUM(CASE WHEN a.isNull = '1' THEN a.SETTLEMENT_SUM_AMOUNT ELSE 0 END)) AS zcspje,
  192. SUM(CASE WHEN a.isNull = '1' THEN a.SETTLEMENT_SUM_AMOUNT ELSE 0 END) AS qtje,
  193. ROUND(SUM(CASE WHEN a.isNull = '0' THEN 1 ELSE 0 END) / COUNT(a.isNull), 2) AS sptgl
  194. FROM (
  195. SELECT
  196. fwjs.*,
  197. (CASE WHEN lcjl.BILL_ID IS NOT NULL THEN '1' ELSE '0' END) AS isNull
  198. FROM RT_SERVICE_SETTLEMENT_MASTER fwjs
  199. LEFT JOIN (
  200. SELECT t.* FROM (
  201. SELECT
  202. BILL_ID,
  203. GROUP_CONCAT(approve_node_name ORDER BY approve_node_name SEPARATOR ',') AS lcjdhub
  204. FROM SYS_FLOW_APPROVAL_RECORD
  205. WHERE approve_scheme_id IN (
  206. SELECT ID
  207. FROM SYS_FLOW_SCHEME S
  208. WHERE EXISTS(
  209. SELECT ID
  210. FROM SYS_FLOW_MASTER M
  211. WHERE EXISTS(
  212. SELECT 1
  213. FROM sys_flow_master_dept D
  214. WHERE M.ID = D.PID
  215. )
  216. AND S.PID = M.ID
  217. AND M.MENU_ID = '5ab7b937-19a0-47d4-b479-b9f58999abc8'
  218. )
  219. AND S.IS_DISABLE = 0
  220. )
  221. GROUP BY BILL_ID
  222. ) t
  223. WHERE t.lcjdhub NOT REGEXP '被服务'
  224. ) lcjl ON fwjs.id = lcjl.BILL_ID
  225. WHERE fwjs.APPROVE_NODE_NAME = '已完成'
  226. AND DATE_FORMAT(fwjs.DOCUMENT_DATE, '%Y-%m') = '".$riqi."'
  227. ) a
  228. GROUP BY a.INCOME_DEPT_ID, DATE_FORMAT(a.DOCUMENT_DATE, '%Y-%m')
  229. ) a
  230. LEFT JOIN SYS_DEPT ou ON ou.id = a.INCOME_DEPT_ID
  231. ORDER BY a.DOCUMENT_DATE DESC
  232. ");
  233. if(count($result) > 0){
  234. for($i=0;$i<count($result);$i++){
  235. $id = mt_rand(pow(10, 18), pow(10, 18) + 999999999);
  236. $insert = [
  237. 'ID' => $id,
  238. 'FORM_DATA_ID' => $id,
  239. 'DATA_INDEX' => 0.0,
  240. 'CREATE_TIME' => date('Y-m-d H:i:s'),
  241. 'TENANT_KEY' => 't1zz9w8165',
  242. 'IS_DELETE' => 0,
  243. 'DELETE_TYPE' => 0,
  244. 'FT_STATUS' => 0,
  245. 'document_type' => $result[$i]->dept_name,
  246. 'document_date' => $result[$i]->DOCUMENT_DATE,
  247. 'dyjsje' => $result[$i]->dyjsje,
  248. 'zcspje' => $result[$i]->zcspje,
  249. 'qtje' => $result[$i]->qtje,
  250. 'sptgl' => $result[$i]->sptgl,
  251. 'sptgl_val' => $result[$i]->sptgl_val
  252. ];
  253. DB::connection('mysql_fwe10')->table('uf_zzdwsp')->insert($insert);
  254. }
  255. }
  256. }
  257. }
  258. }
  259. }