Nbsch.php 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231
  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. echo '时长:'.number_format(((time()-$start_time)/60),2).'分钟';
  41. }
  42. public function nbschInsert()
  43. {
  44. // $id_list_data = DB::connection('mysql_nbsch')->select("SELECT ID
  45. // FROM SYS_FLOW_SCHEME S
  46. // WHERE EXISTS(
  47. // SELECT ID
  48. // FROM SYS_FLOW_MASTER M
  49. // WHERE EXISTS(
  50. // SELECT 1
  51. // FROM sys_flow_master_dept D
  52. // WHERE M.ID = D.PID
  53. // )
  54. // AND S.PID = M.ID
  55. // AND M.MENU_ID = '5ab7b937-19a0-47d4-b479-b9f58999abc8'
  56. // )
  57. // AND S.IS_DISABLE = 0");
  58. // $id_list = [];
  59. // if(count($id_list_data) > 0){
  60. // for($i=0;$i<count($id_list_data);$i++){
  61. // array_push($id_list,$id_list_data[$i]->ID);
  62. // }
  63. // }
  64. // // dd($id_list);
  65. // $bill_id_list = [];
  66. // if($id_list > 0){
  67. // for($i=0;$i<count($id_list);$i++){
  68. // // for($i=0;$i<3;$i++){
  69. // $bill_id_data = DB::connection('mysql_nbsch')->table('SYS_FLOW_APPROVAL_RECORD')->where('approve_scheme_id',$id_list[$i])->get(['bill_id', 'approve_node_name']);
  70. // if(count($bill_id_data) > 0){
  71. // for($j=0;$j<count($bill_id_data);$j++){
  72. // array_push($bill_id_list,$bill_id_data[$j]);
  73. // }
  74. // }
  75. // }
  76. // }
  77. //
  78. // $grouped = [];
  79. // foreach ($bill_id_list as $item) {
  80. //
  81. // $billId = $item->bill_id;
  82. //
  83. // if (!isset($grouped[$billId])) {
  84. // $grouped[$billId] = [];
  85. // }
  86. //
  87. // $grouped[$billId][] = $item->approve_node_name;
  88. // }
  89. //
  90. // $bill_array = [];
  91. // foreach ($grouped as $billId => $nodeNames) {
  92. // $bill_array[] = [
  93. // 'bill_id' => $billId,
  94. // 'approve_flow' => implode(',', array_unique($nodeNames))
  95. // ];
  96. // }
  97. //// dd($bill_array);
  98. // $filteredResult = array_filter($bill_array, function($item) {
  99. // return strpos($item['approve_flow'], '被服务') === false;
  100. // });
  101. //
  102. //
  103. //// 重置索引
  104. // $filteredResult = array_values($filteredResult);
  105. //
  106. // // dd($filteredResult);
  107. // $id_list = [];
  108. // foreach($filteredResult as $k=>$v){
  109. // array_push($id_list,$v['bill_id']);
  110. // }
  111. // // dd($id_list);
  112. // $master = DB::connection('mysql_nbsch')->table('RT_SERVICE_SETTLEMENT_MASTER')->where('DOCUMENT_DATE','like','%2025-06%')->where('APPROVE_NODE_NAME','已完成')->get(['ID','DOCUMENT_TYPE','DOCUMENT_DATE','SETTLEMENT_SUM_AMOUNT']);
  113. //
  114. // if(count($master) > 0){
  115. // for($i=0;$i<count($master);$i++){
  116. // $master[$i]->BILL_ID = null;
  117. // $master[$i]->isNull = 0;
  118. // $master[$i]->riqi = '2025-06';
  119. // }
  120. // for($i=0;$i<count($master);$i++){
  121. // if(count($id_list) > 0){
  122. // for($j=0;$j<count($id_list);$j++){
  123. // // dd($id_list[$j]);
  124. // // dd($master[$i]->ID);
  125. // if($master[$i]->ID == $id_list[$j]){
  126. // $master[$i]->BILL_ID = $id_list[$j];
  127. // $master[$i]->isNull = 1;
  128. // }
  129. // }
  130. // }
  131. // }
  132. // }
  133. //
  134. //
  135. // $groupedData = [];
  136. //
  137. // foreach ($master as $item) {
  138. //
  139. // $key = $item->DOCUMENT_TYPE;
  140. //
  141. // if (!isset($groupedData[$key])) {
  142. // $groupedData[$key] = [
  143. // 'DOCUMENT_TYPE' => $item->DOCUMENT_TYPE,
  144. // 'DOCUMENT_DATE' => $item->riqi,
  145. // 'total_amount' => 0,
  146. // 'normal_amount' => 0,
  147. // 'null_amount' => 0
  148. // ];
  149. // }
  150. //
  151. // $groupedData[$key]['total_amount'] += $item->SETTLEMENT_SUM_AMOUNT;
  152. //
  153. // if ($item->isNull == 0) {
  154. // $groupedData[$key]['normal_amount'] += $item->SETTLEMENT_SUM_AMOUNT;
  155. // } else {
  156. // $groupedData[$key]['null_amount'] += $item->SETTLEMENT_SUM_AMOUNT;
  157. // }
  158. // }
  159. //
  160. // $result = [];
  161. // foreach ($groupedData as $item) {
  162. // $sptgl_val = $item['total_amount'] > 0 ?
  163. // round($item['normal_amount'] / $item['total_amount'] * 100, 2) : 0;
  164. //
  165. // $result[] = [
  166. // 'DOCUMENT_TYPE' => $item['DOCUMENT_TYPE'],
  167. // 'DOCUMENT_DATE' => $item['DOCUMENT_DATE'],
  168. // 'dyjsje' => round($item['total_amount'] / 10000, 2),
  169. // 'zcspje' => round($item['normal_amount'] / 10000, 2),
  170. // 'qtje' => round($item['null_amount'] / 10000, 2),
  171. // 'sptgl' => $sptgl_val . '%',
  172. // 'sptgl_val' => $sptgl_val
  173. // ];
  174. // }
  175. $result = DB::connection('mysql_nbsch')->select("SELECT
  176. a.DOCUMENT_TYPE,
  177. DATE_FORMAT(a.DOCUMENT_DATE, '%Y-%m') AS DOCUMENT_DATE,
  178. ROUND(SUM(a.SETTLEMENT_SUM_AMOUNT) / 10000, 2) AS dyjsje,
  179. ROUND((SUM(a.SETTLEMENT_SUM_AMOUNT) - SUM(CASE WHEN a.isNull = '1' THEN a.SETTLEMENT_SUM_AMOUNT ELSE 0 END)) / 10000, 2) AS zcspje,
  180. ROUND(SUM(CASE WHEN a.isNull = '1' THEN a.SETTLEMENT_SUM_AMOUNT ELSE 0 END) / 10000, 2) AS qtje,
  181. CONCAT(ROUND(SUM(CASE WHEN a.isNull = '0' THEN 1 ELSE 0 END) / COUNT(a.isNull) * 100, 2), '%') AS sptgl,
  182. ROUND(SUM(CASE WHEN a.isNull = '0' THEN 1 ELSE 0 END) / COUNT(a.isNull) * 100, 2) AS sptgl_val
  183. FROM (
  184. SELECT
  185. fwjs.*,
  186. (CASE WHEN lcjl.BILL_ID IS NOT NULL THEN '1' ELSE '0' END) AS isNull
  187. FROM RT_SERVICE_SETTLEMENT_MASTER fwjs
  188. LEFT JOIN (
  189. SELECT * FROM (
  190. SELECT
  191. BILL_ID,
  192. GROUP_CONCAT(approve_node_name ORDER BY approve_node_name SEPARATOR ',') AS lcjdhub
  193. FROM SYS_FLOW_APPROVAL_RECORD
  194. WHERE approve_scheme_id IN (
  195. SELECT ID
  196. FROM SYS_FLOW_SCHEME S
  197. WHERE EXISTS(
  198. SELECT ID
  199. FROM SYS_FLOW_MASTER M
  200. WHERE EXISTS(
  201. SELECT 1
  202. FROM sys_flow_master_dept D
  203. WHERE M.ID = D.PID
  204. )
  205. AND S.PID = M.ID
  206. AND M.MENU_ID = '5ab7b937-19a0-47d4-b479-b9f58999abc8'
  207. )
  208. AND S.IS_DISABLE = 0
  209. )
  210. GROUP BY BILL_ID
  211. ) t
  212. WHERE lcjdhub NOT REGEXP '被服务'
  213. ) lcjl ON fwjs.id = lcjl.BILL_ID
  214. WHERE fwjs.APPROVE_NODE_NAME = '已完成'
  215. ) a
  216. WHERE 1=1 AND DATE_FORMAT(a.DOCUMENT_DATE, '%Y-%m') = '2025-06' -- 日期筛选条件
  217. GROUP BY a.DOCUMENT_TYPE, DATE_FORMAT(a.DOCUMENT_DATE, '%Y-%m')
  218. ORDER BY DATE_FORMAT(a.DOCUMENT_DATE, '%Y-%m') DESC");
  219. Log::info(332211);
  220. Log::info($result);
  221. }
  222. }