Загрузка данных
<!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"/>
<jsp:useBean id="currentDate" class="java.util.Date"/>
<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 ruFormatter = new Intl.NumberFormat('ru');
var defaultBatches = true;
var BatchesPeopleCount = -1;
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 clickSecondaryTable() {
var sid = urlParams.get('sid');
var id = urlParams.get('id')
if (sid && id) {
$('#queryTable_4PjxV0uP td').filter(function() {
return $(this).text().trim().toLowerCase().includes(sid);
}).click();
}
}
$(function () {
var registerTable = new QueryTable("KDYy3nAd", { //"BM4gpvF2"
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);
registerTable.addActionButton("exportSettings", ' ', exportSettings, "btn-primary", true);
$('#exportSettings').css('display', 'inline-block').append($('<i></i>')
.addClass('glyphicon glyphicon-wrench icon-white')); // glyphicon glyphicon-cog
},
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 ="АСЛС";
let id_register = application().id;
if(skip_url_app) {
data.id = -1;
}else{
data.id = id_register;
}
return data;
},{selectFirstRow: true});
var dataTable = new QueryTable("4PjxV0uP",{
onRowSelect: function (data, index) {
},
onRowDeselect: function (data, index) {
},
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 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: 'wolUtqQA',
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: 'wolUtqQA',
queryActionCode: 'gLEAthpI', //'jLc7z1h4',
id: appData.id,
},
dataType: "json",
success: function (data) {
if(data){
if(data.messages){
showMessages(data.messages);
}
}
registerTable.reload();
}
});
}
function exportSettings(){
let exportSettingsDialog = $("#exportSettingsDialog");
exportSettingsDialogForeground(registerTable.data());
exportSettingsDialog.modal('show');
}
function addNewRegister(){
$.ajax({
url: "queryModel.json",
type: "POST",
data: {
viewCode: 'wolUtqQA',
queryModelCode:'qJmlPzPm',
seq_name: "'report.smev_register_id_sequence'"
},
dataType: "json",
success: function (data) {
QueryAction.action("HfRcAyiY", {
actionComplete: function (data) {
registerTable.reload();
}
},
function () {
var appData = registerTable.data();
var operationData = {};
$("#paramForm").serializeArray().map(function (x) {
operationData[x.name] = x.value;
});
operationData.registerType ="АСЛС";
operationData.registerId = data.id;
operationData.guid = uuid();
return operationData;
});
}
});
}
function exportRegister(){
var data = registerTable.data();
var registerId = (data ? data.id : -1);
var param ='';
var param ='registerId=' + registerId + '&';
param = param + "id=" + registerId ;
if(!defaultBatches){
param = param + "&batchsize=" + BatchesPeopleCount;
}
window.open("queryModel/loop?queryModelCode=0i4oRtb5&queryModelCharset=UTF-8&viewCode=wolUtqQA&"+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);
}
function exportSettingsDialogForeground(ctx){
if(Object.keys(ctx).length != 0){
var rez = getRegisterInfo(ctx.id);
var nCount = rez.count;
var peopleCount = nCount;
var nBatches = 1;
$('#register_count').val(ruFormatter.format(nCount));
$('#register_info').val('ИД: '+ rez.register_id + ' Тип: ' + rez.register_type + ' Номер: ' + rez.register_number);
if (nCount > 0 && nCount < 99){
nBatches = 1;
}else if (nCount > 99 && nCount < 999){
nBatches = 2;
peopleCount = Math.ceil( nCount/ nBatches);
}else if (nCount > 999 && nCount < 9999){
nBatches = 5;
peopleCount = Math.ceil( nCount/ nBatches);
}else if (nCount > 9999 && nCount < 999999){
nBatches = 10;
peopleCount = Math.ceil( nCount/ nBatches);
}else if (nCount > 999999 && nCount < 5000000){
nBatches = 10;
peopleCount = Math.ceil( nCount / nBatches);
if(peopleCount > 100000){
peopleCount = 100000;
nBatches = Math.ceil(nCount / peopleCount);
}
}else{
nBatches = 50;
peopleCount = Math.ceil( nCount / nBatches)
if(peopleCount > 200000){
peopleCount = 200000;
nBatches = Math.ceil(nCount / peopleCount);
}
}
$('#register_batches').val(nBatches);
$('#register_people').val(peopleCount);
$('#smev_register_id').val(rez.register_id);
$('#smev_register_type').val(rez.register_type);
$('#smev_register_count').val(nCount);
}else{
$('#register_count').val('');
$('#register_info').val('ИД: '+ ' ' + ' Тип: ' + ' ' + ' Номер: ' + ' ');
$('#register_batches').val('');
$('#register_people').val('');
$('#smev_register_id').val('');
$('#smev_register_type').val('');
$('#smev_register_count').val('');
}
}
function getRegisterInfo(register_id){
var result = {};
$.ajax({
url: "queryModel.json",
type: "POST",
async: false,
data: {
queryModelCode: 'goEsuxQK',
register_id: register_id
},
dataType: "json",
success: function (data) {
result = Object.assign({}, data.list[0]);
}
});
return result;
}
});
function updateCalculationBatches(){
var nCount = $('#smev_register_count').val();
var peopleCount = $('#register_people').val();
if(!isNaN(Number(peopleCount))){
$('#register_batches').val( Math.ceil(nCount / peopleCount));
}
}
function updateCalculationPeople(){
var nCount = $('#smev_register_count').val();
var nBatches = $('#register_batches').val();
if(!isNaN(Number(nBatches))){
$('#register_people').val( Math.ceil(nCount / nBatches));
}
}
function saveBatchesParameters(){
defaultBatches = false;
BatchesPeopleCount = $('#register_people').val();
$("#exportSettingsDialog").modal('hide');
}
</script>
<jsp:include page="header.jsp"/>
<jsp:include page="navbar.jsp"/>
<!-- Настройки выгрузки реестра-->
<div id="exportSettingsDialog"
class="modal fade"
tabindex="-1"
role="dialog"
data-backdrop="static"
aria-labelledby="exportSettingsDialogLabel"
aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span>
<span class="sr-only"><s:message code="dialog.close" />
</span></button>
<h4 class="modal-title" id="exportSettingsDialogLabel">Параметры выгрузки реестра</h4>
</div>
<div class="modal-body">
<form id="exportSettingsForm" class="form-vertical" role="form">
<input type="hidden" name="smev_register_id" id="smev_register_id">
<input type="hidden" name="smev_register_type" id="smev_register_type">
<input type="hidden" name="smev_register_count" id="smev_register_count">
<div class="form-group">
<label class="control-label" for="register_info">ИД реестра, тип, номер</label>
<input type="text" id="register_info" class="form-control" name="register_info"
placeholder="Информация о реестре" readonly="true">
</div>
<div class="form-group">
<label class="control-label" for="register_count">Количество записей</label>
<input type="text" id="register_count" class="form-control" name="register_count"
placeholder="Записей в реестре" readonly="true">
</div>
<div class="form-group">
<label class="control-label" for="register_batches">Количество пачек</label>
<input type="text" id="register_batches" class="form-control"
name="register_batches" onchange="updateCalculationPeople()" placeholder="На сколько пачек разбить реестр">
</div>
<div class="form-group">
<label class="control-label" for="register_people">Количество людей в пачке</label>
<input type="text" id="register_people" class="form-control"
name="register_people" onchange="updateCalculationBatches()" placeholder="Сколько людей в пачке">
</div>
</form>
</div>
<div class="modal-footer">
<button class="btn btn-success" type="button" onclick="saveBatchesParameters()">
<s:message code="button.save" />
</button>
<button class="btn btn-default" type="button" data-dismiss="modal">
<s:message code="button.cancel" />
</button>
</div>
</div>
</div>
</div> <!-- Настройки выгрузки реестра конец-->
<!-- Главная страница-->
<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/29346/"/>
<div class="row">
<h4 class="col-sm-12">Ежегодный акт сверки состояния лицевых счетов ЗЛ</h4>
<form class="form-vertical" id="paramForm">
<input type="hidden" name="registerId" id="registerId">
<div class="col-sm-2">
<label for="report_date">Дата отбора</label>
<input type="text" class="form-control date-picker-on" name ="report_date"
value="<fmt:formatDate value='${currentDate}' pattern='dd.MM.yyyy' />"
id="report_date" placeholder="Дата">
<p class="help-block">Дата отбора для нового реестра</p>
</div>
<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="col-sm-12">
<jsp:include page="queryTable.jsp">
<jsp:param name="queryTableCode" value="KDYy3nAd"/>
<jsp:param name="queryTableStyle" value="white-space:nowrap;"/>
</jsp:include>
</div>
</form>
</div>
<hr>
<hr>
<div class="row">
<div class="col-sm-12">
<jsp:include page="queryTable.jsp">
<jsp:param name="queryTableCode" value="4PjxV0uP"/>
<jsp:param name="queryTableStyle" value="white-space:nowrap;"/>
</jsp:include>
</div>
</div>
</div>
</div>
</div>
</div>
<jsp:include page="footer.jsp"/>
</body>
</html>