Nbsch.php 12 KB

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