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


<!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;
  }

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

  #filter_status {
    width: 100%;
  }

  #registerFilterBlock .select2-container {
    width: 100% !important;
  }
</style>
<script type="text/javascript">
  
	

	var skip_url_app = false;
	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 () {

		var registerTable = new QueryTable("uUfTIhHH", {

			initComplete: function (settings, json) {
				registerTable.addActionButton("addNewRegister", "Создать", addNewRegister, "btn-success", false);
				registerTable.addActionButton("exportRegister", "Сформировать xml c проверкой", exportRegister, "btn-primary", true);
				registerTable.addActionButton("uploadRegister", "Отправить в СФР", uploadRegister, "btn-primary", true);
				registerTable.addActionButton("deleteRegister", "Удалить", deleteRegister, "btn-danger", true); 

			},

			onRowSelect: function (data, index) {
				dataTable.reload();

			},
			onRowDeselect: function (data, index) {
				dataTable.reload();

			},
			drawCallback: function (settings) {
				skip_url_app = (settings.oAjaxData.queryTableFilter.size != 0);	
				dataTable.reload();
			}
		},
		function () {
  var appData = registerTable.data();
  var data = {};

  data.registerType = "АНПФ";

  var id_register = application().id;

  if (skip_url_app) {
    data.id = -1;
  } else {
    data.id = id_register;
  }

  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();

  data.filter_status = filter_status;
  data.filter_date_from = filter_date_from;
  data.filter_date_to = filter_date_to;
  data.filter_number = filter_number;

  data.showRecords = !!(
    filter_status ||
    filter_date_from ||
    filter_date_to ||
    filter_number ||
    id_register
  );

  return data;
});	

		
		$('#filter\\.search').click(function () {
  skip_url_app = true;
  registerTable.reload();
});

$('#filter\\.cleanFilter').click(function () {
  $('#filter_status').select2('val', '');
  $('#filter\\.created_at_from').val('');
  $('#filter\\.created_at_to').val('');
  $('#filter\\.account_number').val('');

  skip_url_app = false;
  registerTable.reload();
});
		
		
		var dataTable = new QueryTable("fl4PH1eC",{
			
		},																					
		function () {
			var appData = registerTable.data();
			var data = {};
			data.registerId = (appData ? appData.id : -1);
			return data;
		});	
 
		function addNewRegister(){
			$.ajax({
				url: "queryModel.json",
				type: "POST",
				data: {
					viewCode: 'Q4XSsPYv',
					queryModelCode:'qJmlPzPm',
					seq_name: "'report.smev_register_id_sequence'"
				},
				dataType: "json",
				success: function (data) {
					QueryAction.action("8o3LORwd", {
						actionComplete: function (data) {
							registerTable.reload();
						}
					},
				function () {
						var appData = registerTable.data();
						var operationData = {};
						operationData.registerType ="АНПФ";				
						operationData.registerId = data.id;
						operationData.guid = uuid();
						return operationData;

					});
				}	
			});
		}
		
		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: 'Q4XSsPYv',
					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);
						registerTable.reload();
					}
				}
			});
		}
		
		function deleteRegister(){
			var result = confirm("Вы хотите удалить реестр?");
			if(!result){
				return;
			}
			var appData = registerTable.data();

			$.ajax({
				url: "queryAction/action",
				type: "POST",
				async: false,
				data: { 
					viewCode: 'Q4XSsPYv',
					queryActionCode: '1Nu5JNtB', 
					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 =''; 
			param ='registerId=' + registerId + '&'; 
			param = param + "id=" + registerId;
			window.open("queryModel/file?queryModelCode=PzifM57B&queryModelCharset=UTF-8&"+param, '_blank');
		}
		
		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);
		}					

		 $("#filter_status").select2({
                    placeholder:  "Статус",
                    allowClear: true,
                    minimumInputLength: 0,
                    id: function (e) {
											return e.id;
										},
			 data: {results: [
				 {id: 1, text: 'Сформирован'},
				 {id: 2, text: 'Проверяется'},
				 {id: 3, text: 'ФЛК пройден'},
				 {id: 4, text: 'Ошибка ФЛК'},
				 {id: 5, text: 'Отправлен'}
			 ]},
		 });

	});

</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/29345/"/>

				<div class="row">
					<h4 class="col-sm-12">Анкета НПФ</h4>
					<div class="col-sm-12">

  <div id="registerFilterBlock">

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

    <div class="col-sm-3 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">
    </div>

    <div class="col-sm-3 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">
    </div>

    <div class="col-sm-3 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-12 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 id="registerTableBlock">
    <form class="form-vertical" id="paramForm">
      <input type="hidden" name="registerId" id="registerId">
      <jsp:include page="queryTable.jsp">
        <jsp:param name="queryTableCode" value="uUfTIhHH"/>
        <jsp:param name="queryTableStyle" value="white-space:nowrap;"/>
      </jsp:include>
    </form>
  </div>

</div>		
				<hr>
				<div class="row">
					<div class="col-sm-12">
						<jsp:include page="queryTable.jsp">				
								<jsp:param name="queryTableCode" value="fl4PH1eC"/>
								<jsp:param name="queryTableStyle" value="white-space:nowrap;"/>
						</jsp:include>
					</div>
				</div>				
			</div>
		</div>
	</div>

	</div>

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

</body>
</html>





SELECT
  r.id as id,
  to_char(r.date, 'dd.MM.yyyy') as date,
  r.year as year,
  r.number as number,
  case when mftv.zip_name is null then
  case when mftv.name is not null then
    '<a target="_blank" href="modelFileToVerification/modelFileToVerification/downloadSource?id='|| mftv.id ||'" '|| 
        case when mftv.name is null then 'style="color: #d9534f;"' else '' end ||'>	
    <span class="glyphicon glyphicon-file" aria-hidden="true"></span>' || case when mftv.name = '' then 
         '' else mftv.name end || '</a>'
  else ''
  end
else 
   '<a target="_blank" href="modelFileToVerification/modelFileToVerification/downloadArchive?ArchiveName='|| mftv.zip_name 
     ||'" '|| '>
    <span class="glyphicon glyphicon-file" aria-hidden="true"></span>' || mftv.zip_name ||   '</a>'
end as verified_file_id,
  case when  mftv.id is not null then
    '<a target="_blank" href="view?viewCode=9hUIiHYU&ids=' || mftv.id ||'">	
    <span class="glyphicon glyphicon-book" aria-hidden="true"></span>' || ' ' || mftv.id || '</a>'
else
    ' '
end as journal_id,
  case mftv.count when 1 then 'Сформирован'
        when 2 then 'Проверяется'
        when 3 then 'ФЛК пройден'
  	when 4 then 'Ошибка ФЛК'
        when 5 then 'Отправлен'
  	else ''
end as sfr_status,
  '<a href="queryDataSource/ufvhPMTj/queryDataSourceFile/download?id='|| smev.get_sk_file_id(r.sk1) ||'" '|| 
case when r.sk1 is not null then 
    case when smev.get_sk_file_status_id(r.sk1) = 0 then 'style="color: #d9534f;"' else '' end
end ||'>	
<span class="glyphicon glyphicon-file" aria-hidden="true"></span>' || case when r.sk1 is not null then 
    case when smev.get_sk_file_status_id(r.sk1) = 0 then 'Ошибка' else 'Отчёт' end
end || '</a>' as sk1,
  '<a href="queryDataSource/ufvhPMTj/queryDataSourceFile/download?id='|| smev.get_sk_file_id(r.sk2) ||'" '|| 
case when r.sk2 is not null then 
    case when smev.get_sk_file_status_id(r.sk2) = 0 then 'style="color: #d9534f;"' else '' end
end ||'>	
<span class="glyphicon glyphicon-file" aria-hidden="true"></span>' || case when r.sk2 is not null then 
    case when smev.get_sk_file_status_id(r.sk2) = 0 then 'Ошибка' else 'Отчёт' end
end || '</a>' as sk2,
  mftv.name as sfr_file_name,
  r.description as decription,
  mftv.id as v_file_id,
  mftv.count in (3,5) as ready_to_upload,
  r.short_name as short_name,
  r.inn as inn,
  r.kpp as kpp,
  r.address as address,
  r.guid as guid,
  r.username as username,
  to_char(r.version, 'DD.MM.YYYY HH24:MI:SS') as version 
FROM report.smev_register r
left join dev.model_file_to_verification mftv on r.verified_file_id = mftv.id
WHERE (case when :like_sign = false 
 then r.smev_register_type_code = any(string_to_array(:registerType, ','))
 else r.smev_register_type_code in ('РПФР-ДСВ','РПФР-М','РПФР-СВ') end)
AND case  
when :id = -1 then true
when :id is null then false 
else r.id = :id
end