Загрузка данных


<!DOCTYPE html>
<%@ taglib prefix="tags" tagdir="/WEB-INF/tags" %>

	<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
		<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
			<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
				<%@ taglib prefix="s" uri="http://www.springframework.org/tags" %>
					<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>

						<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>

							<html lang="ru">

								<jsp:include page="head.jsp"/>

								<body>

									<script type="text/javascript" src="<c:url value='/js/${version}/queryAction.js'/>"></script>
									<script type="text/javascript" src="<c:url value='/js/${version}/queryTable.js'/>"></script>
									<style>
										#registerFilterBlock {
											margin-bottom: 15px;
										}

										#registerFilterBlock .filter-field {
											margin-bottom: 10px;
										}

										#registerFilterBlock .register-filter-buttons {
											margin-top: 8px;
											margin-bottom: 18px;
											padding-left: 15px;
											white-space: nowrap;											
										}

										#registerFilterBlock .register-filter-buttons .btn {
											margin-right: 8px;
											width: 48%;
										}

										#registerTableBlock {
											clear: both;
											margin-top: 10px;
										}

										#filter_status {
											width: 100%;
										}

										#registerFilterBlock .select2-container {
											width: 100% !important;
										}
									</style>
									<script type="text/javascript">
										const urlParams = new URLSearchParams(window.location.search);
										// Идентификатор реестра из параметров запуска
										function application() {
											var smevRegId = urlParams.get('id');
											if (smevRegId !== null) {
												return {
													id: smevRegId
												}
											} else {
												return {
													id: null
												}					
											}
										};

										function clickSecondaryTable() {									
											var sid = urlParams.get('sid');
											var id = urlParams.get('id')
											if (sid && id) {
												$('#queryTable_vZjOF9hm td').filter(function() {
													return $(this).text().trim().toLowerCase().includes(sid);
												}).click();
											}
										}

										$(function () {

											var registerTable = new QueryTable("gSyx4NG8", {  

												initComplete: function (settings, json) {
													registerTable.insertActionButton("addNewRegister", "Создать", addNewRegister, "btn-success", false, 0);
													registerTable.addActionButton("exportRegister", "Сформировать xml c проверкой", exportRegister, "btn-primary", true);
													registerTable.addActionButton("uploadRegister", "Отправить в СФР", uploadRegister, "btn-primary", true);			
													registerTable.addActionButton("deleteRegister", "Удалить", deleteRegister, "btn-danger", true);
													/*registerTable.addActionButton("updateRegisterTable", "Обновить", updateRegister, "btn-primary", false, 0);
				$("#updateRegisterTable").prepend('<span class="glyphicon glyphicon-refresh" style="text-align:center; padding-right: 5px;"></span>');*/

												},

												onRowSelect: function (data, index) {
													dataTable.reload();
												},
												onRowDeselect: function (data, index) {
													dataTable.reload();
												},
												drawCallback: function (settings) {
													dataTable.reload();
												}
											},
												function () {
												var appData = registerTable.data();
												var data = {};
												data.registerType ="УОПС-П";
												let id_register = application().id ? application().id : $('#smev_register_id').val();
					
												// есть ли выбранные фильтры
												const isFilterActive = registerTable.filter().parts.some(function (value) {
													return (
														["VALUE", "PREDICATE"].includes(value.type) || value.id.includes("NULL")
													);
												});
												
												// фильтры
												var filter_status = $("#filter_status").val();
												var filter_date_from = $("#filter\\.created_at_from").val();
												var filter_date_to = $("#filter\\.created_at_to").val();
												var filter_number = $("#filter\\.register_number").val();
												
												if (filter_date_from > '')
													filter_date_from = filter_date_from.split('.').reverse().join('-');
												if (filter_date_to > '')
													filter_date_to = filter_date_to.split('.').reverse().join('-');

												
												const isCustomFilterActive =
													(filter_status && filter_status !== '') ||
													(filter_date_from && filter_date_from !== '') ||
													(filter_date_to && filter_date_to !== '') ||
													(filter_number && filter_number !== '');

												if (id_register && id_register > -1) {
													data.id = id_register;
												} else if (isFilterActive || isCustomFilterActive) {
													data.id = -1;
												} else {
													data.id = null;
												}

												data.filter_status = filter_status;
												data.filter_date_from = filter_date_from;
												data.filter_date_to = filter_date_to;
												data.filter_number = filter_number;
												console.log(data);
												return data;
												
											}, {order: [[0, 'desc']], selectFirstRow: true});	


											$('#filter\\.search').click(function () {
												var filterStatus = $('#filter_status').val();
												var filterFrom   = $('#filter\\.created_at_from').val();
												var filterTo     = $('#filter\\.created_at_to').val();
												var filterNumber = $('#filter\\.register_number').val();

												var hasFilter = filterStatus || filterFrom || filterTo || filterNumber;

												if (!hasFilter) {
													showMessages([{ messageType: 'info', message: 'Задайте хотя бы один фильтр для поиска' }]);
													return;
												}
												registerTable.reload();
											});


											function clear_filter(from_xml = false){
		 $('#filter_status').select2('val', '');
     $('#filter\\.created_at_from').val('');
     $('#filter\\.created_at_to').val('');
     $('#filter\\.register_number').val('');
		 if(!from_xml){
		 	$('#smev_register_id').val('');
		 }
     registerTable.reload();
	 }

   $('#filter\\.cleanFilter').click(function () {
     clear_filter();
   });


 $("#filter_status").select2({
					placeholder: "Статус реестра",
					allowClear: true,
					minimumInputLength: 0,
					id: function (e) {
						return e.name;
					},
					ajax: {
						url: "queryModel?queryModelCode=kqxHzMwq",
						type: "post",
						dataType: "json",
						data: function (term, page) {
							return {
								term: term,
								maxResults: 10
							};
						},
						results: function (data, page) {
							return {
								results: data.list
							};
						}
					},
					formatResult: function (data) {
						return '<div>' + data.name + '</div>';
					},
					formatSelection: function (data) {
						return data.name
					}
				}).on("change", function (e) {
					console.log(e.val);
				});


											var dataTable = new QueryTable("vZjOF9hm",{
												drawCallback: function(settings) {
													clickSecondaryTable();
												}
											},																					
																										 function () {
												var appData = registerTable.data();
												var data = {};
												data.registerId = (appData ? appData.id : -1);
												var sid = urlParams.get('sid');
												if (sid) {
													data.id = sid;
												}
												return data;
											});	


											function addNewRegister(){
												openNewWindow("view?viewCode=uvuiPq5S"); 	
											}

											function uploadRegister(){
												var validationResult = [];
												var mes = {};
												var message_level = 'info';

												var appData = registerTable.data();
												if(appData.verified_file_id == '' || appData.verified_file_id == null ){
													mes = {messageType: message_level, message: 'Отсутствует документ в СФР'};
													validationResult.push(mes);
													showMessages(validationResult);
													return;
												}
												if(!appData.ready_to_upload){
													mes = {messageType: message_level, message: 'Документ в СФР не прошёл форматно-логический контроль'};
													validationResult.push(mes);
													showMessages(validationResult);
													return;
												}
												// remove the extension from the file name (as we constructing archive name)
												var archiveName = appData.sfr_file_name;
												var dotPosition = (archiveName).lastIndexOf('.');
												if(dotPosition != -1){
													archiveName = archiveName.slice(0, dotPosition);
												}
												archiveName = archiveName + '.tar.gz';
												$.ajax({
													url: "queryAction/action",
													type: "POST",
													async: false,
													data: {
														viewCode: '4rBNO10p',
														queryActionCode: 'DaizGytc',
														record_id: appData.v_file_id,
														unload_mode: 1,  
														unload_format: 'gzp',
														unload_archive_name: archiveName 
													},
													dataType: "json",
													success: function (data) {
														if(data){
															if(data.data == 0){	
																mes = {messageType: message_level, message: 'Файл выгружен.'};
																validationResult.push(mes);
															}
															if(data.data == 1){
																mes = {messageType: message_level, message: 'Файл с таким именем уже существует во внешнем хранилище.'};
																validationResult.push(mes);
															}
															if(data.data != 0 && data.data != 1){
																mes = {messageType: message_level, message: 'Ошибка: код процесса выгрузки ' + data};
																validationResult.push(mes);
															}
															showMessages(validationResult);
														}
													}
												});
											}

											function deleteRegister(){
												var result = confirm("Вы хотите удалить реестр?");
												if(!result){
													return;
												}
												var appData = registerTable.data();

												$.ajax({
													url: "queryAction/action",
													type: "POST",
													async: false,
													data: { 
														viewCode: '4rBNO10p',
														queryActionCode: 'ANTFi01T',
														id: appData.id,
													},
													dataType: "json",
													success: function (data) {
														if(data){
															if(data.messages){
																showMessages(data.messages);
															}
														}
														registerTable.reload();
													}
												});
											}		

											function exportRegister(){
												var data = registerTable.data();
												var registerId = (data ? data.id : -1);
												var param ='registerId=' + registerId + '&'; 
												param = param + "id=" + registerId;
												$('#smev_register_id').val(registerId);
		 
												 clear_filter(true);

												 registerTable.reload();
												window.open("queryModel/file?queryModelCode=FMuXUhwV&queryModelCharset=UTF-8&viewCode=4rBNO10p&"+param, '_blank');
											}

											/*function updateRegister() {
												registerTable.reload();
											}*/
											
											function uuid() {
												function randomDigit() {
													if (crypto && crypto.getRandomValues) {
														var rands = new Uint8Array(1);
														crypto.getRandomValues(rands);
														return (rands[0] % 16).toString(16);
													} else {
														return ((Math.random() * 16) | 0).toString(16);
													}
												}
												var crypto = window.crypto || window.msCrypto;
												return 'xxxxxxxx-xxxx-4xxx-xxxx-xxxxxxxxxxxx'.replace(/x/g, randomDigit);
											}					

										});

									</script>

									<jsp:include page="header.jsp"/>
									<jsp:include page="navbar.jsp"/>

									<div class="container" id="mainContainer">

										<div class="page-header">
											<h1>${view.name}</h1>
										</div>

										<div class="container-fluid">
											<div class="row row-main">
												<jsp:include page="sidebar.jsp"/>
												<div class="col-sm-10">
													<tags:breadcrumbs path="https://portal.futurenpf.ru/knowledgebase/category/29342/"/>

													<div class="row">
														<h4 class="col-sm-12">Уведомление о прекращении договоров об ОПС</h4>
														<div id="registerFilterBlock">

															<div class="col-sm-2 filter-field">
																<label class="control-label">Статус</label>
																<input type="hidden" name="smev_register_id" id="smev_register_id">	
																<input type="text" class="form-control" id="filter_status" name="filter_status"/>
															</div>

															<div class="col-sm-2 filter-field">
																<label for="filter.created_at_from">Дата реестра с</label>
																<!--input type="date" id="filter.created_at_from" name="filter.created_at_from" class="form-control"-->
																<input type="text" class="form-control date-picker-on" 
																			 id="filter.created_at_from" name="filter.created_at_from">
																
															</div>

															<div class="col-sm-2 filter-field">
																<label for="filter.created_at_to">Дата реестра по</label>
																<!--input type="date" id="filter.created_at_to" name="filter.created_at_to" class="form-control"-->
																<input type="text" class="form-control date-picker-on" 
																			 id="filter.created_at_to" name="filter.created_at_to">
															</div>

															<div class="col-sm-2 filter-field">
																<label for="filter.register_number">Номер реестра</label>
																<input type="text" id="filter.register_number" name="filter.register_number" class="form-control" placeholder="Номер реестра">
															</div>

															<div class="clearfix"></div>

															<div class="col-sm-2 register-filter-buttons">
																<button id="filter.search" name="filter.search" type="button" class="btn btn-success">
																	<span class="glyphicon glyphicon-search" aria-hidden="true"></span> Найти
																</button>

																<button id="filter.cleanFilter" name="filter.cleanFilter" type="button" class="btn btn-warning">
																	<span class="glyphicon glyphicon-trash" aria-hidden="true"></span> Сбросить
																</button>
															</div>

															<div class="clearfix"></div>

														</div>
														<div class="col-sm-12">
															<form class="form-vertical" id="paramForm">
																<input type="hidden" name="registerId" id="registerId">
																<jsp:include page="queryTable.jsp">
																	<jsp:param name="queryTableCode" value="gSyx4NG8"/>
																	<jsp:param name="queryTableStyle" value="white-space:nowrap;"/>
																</jsp:include>
															</form>
														</div>
													</div>			
													<hr>
													<div class="row">
														<div class="col-sm-8">
															<jsp:include page="queryTable.jsp">				
																<jsp:param name="queryTableCode" value="vZjOF9hm"/>
																<jsp:param name="queryTableStyle" value="white-space:nowrap;"/>
															</jsp:include>
														</div>
													</div>				
												</div>
											</div>
										</div>
									</div>
									<jsp:include page="footer.jsp"/>

								</body>
							</html>




SELECT
  t.id as id,
  coalesce('<a target="_blank" href="view?viewCode=Client_list&id='||i.id||'">'||t.insurance_number||'</a>',t.insurance_number) as insurance_number,
  t.last_name as last_name,
  t.first_name as first_name,
  t.middle_name as middle_name 
FROM report.smev_uops t
join ourpension.individual i on i.insurance_number = t.insurance_number
WHERE t.smev_register_id = :registerId
AND 1=1

#if ($id)
	and t.id = $id
#end