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


<!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 session="true" language="java" 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>
		<jsp:include page="FormUI.jsp" />
    <jsp:include page="Utils.jsp" />

    <script sec:authorize="hasRole('ROLE_DSPD_Manager')">
      window.userHasRole = true;
    </script>
    <script sec:authorize="!hasRole('ROLE_DSPD_Manager')">
      window.userHasRole = false;
    </script>
		<script type="text/javascript">

			$(function () {
        var selAct;

				var filter_fields = [
          {
            id: 'filter_date_from',
            label: 'Дата отчета с',
            inputClass: 'date-picker-on',
            value: "<fmt:formatDate value='' pattern='dd.MM.yyyy' />"
          },
          {
            id: 'filter_date_to',
            label: 'Дата отчета по',
            inputClass: 'date-picker-on',
            value: "<fmt:formatDate value='' pattern='dd.MM.yyyy' />"
          }
        ];
				
        var form_fields = [
          {
            id: 'date_report',
            label: 'Дата',
            inputClass: 'date-picker-on',
            value: "<fmt:formatDate value='' pattern='dd.MM.yyyy' />"
          },
          {
            id: 'my_report',
            label: 'Отчетный месяц, год',
            inputClass: 'date-picker-on',
            value: "<fmt:formatDate value='' pattern='MM.yyyy' />"
          },
          {
          id: 'service_type',
          type: "select2",
          label: 'Вид деятельности',
          options: [
            {
              value: "",
              text: ""
            },
            {
              value: "OPS",
              text: "ОПС"
            },
            {
              value: "NPO",
              text: "НПО"
            },
            {
              value: "PDS",
              text: "ПДС"
            }
          ]
        }
        ];
        
        // ---- кнопки ----
      var actions = [
        {
          id: 'btn_forming',
          text: 'Сформировать',
          type: 'submit',
          class: 'btn btn-primary',
          onClick: function () {
            const dateMY = $('#my_report').val();
            const [mStr, yStr] = dateMY.split('.');
            const year = parseInt(yStr, 10);
            const month = parseInt(mStr, 10) - 1;
						const startDate =  new Date(year, month, 1);
            const endDate =  new Date(year, month + 1, 0, 23, 59, 59, 999);
						console.log(startDate.toLocaleDateString('ru-RU'));
            QueryAction.action("a_forming_report_conformity_pu_bu", {
							actionComplete: function (data) {
                reportsTable.reload();
							}
						}, ()=>{
							return {
                startDate:startDate.toLocaleDateString('ru-RU'),
                endDate: endDate.toLocaleDateString('ru-RU'), 
                service_type: $('#service_type').val(),
                date_report: dateMY,
                date_form: $('#date_report').val()
							}
						});
          }
        }
      ];
				
				var actions_fil = [
        {
          id: 'btn_search',
          text: 'Найти',
          type: 'submit',
          class: 'btn btn-success',
          onClick: function () {
						$("#isShow").val(1);
                reportsTable.reload();
          }
        },
        {
          id: 'btn_clear',
          text: 'Сбросить',
          type: 'button',
          class: 'btn btn-warning',
          onClick: function () {
						$("#isShow").val(0);
            FormUI.clearValues('#form_filter');
            reportsTable.reload();
          }
        }
      ];
      
      // ---- рендер формы ----
			FormUI.render('#form_form', 
										form_fields,
										3,
										actions,
										{
  select2: { allowClear:true },
  actionsAlign: 'left'
});
				FormUI.render('#form_filter', 
										filter_fields,
										3,
										actions_fil,
										{
  select2: { allowClear:true },
  actionsAlign: 'left'
});
				
       $('#my_report').datetimepicker({
				date: new Date(),
				format: 'MM.YYYY',
				minDate: '01.01.1990'
			});
			$("#btn_search").prepend('<span class="glyphicon glyphicon-search" aria-hidden="true"></span>&nbsp');
      $("#btn_clear").prepend('<span class="glyphicon glyphicon-trash" aria-hidden="true"></span>&nbsp');
				const cdate = new Date();
			let day = '01';
				const month = String(cdate.getMonth() + 1).padStart(2, '0');
				const year = cdate.getFullYear();
				
    $('#filter_date_from').val(day+'.'+month+'.'+year);
				const lday = new Date(cdate.getFullYear(), cdate.getMonth() + 1, 0);
				day = String(lday.getDate()).padStart(2, '0');
				$('#filter_date_to').val(day+'.'+month+'.'+year);
			$('#date_report').addClass('req');	
      $('#my_report').addClass('req');	
			$('#service_type').addClass('req');	
			$('#btn_forming').prop('disabled', true);
				
			function butState() {
				let allField = true;
				
			if ($('#date_report').val()=='' ){
				allField = false;
			}
				if ($('#my_report').val()=='' ){
				allField = false;
			}
				if ($('#service_type').val()=='' ){
				allField = false;
			}
					 $('#btn_forming').prop('disabled', !allField);
			}	
				
				$(document).on('input change changeDate dp.change', '.req', function(){
					butState();
				})
				
// Таблица 
				var reportsTable = new QueryTable("tbl_report_conformity_pu_bu", {

					initComplete: function (queryAction) { 
            reportsTable.addActionButton("delReport", "Удалить", delReport, "btn-danger", true);
					},

					onRowSelect: function (data, index) {
						compareTable.reload();
					},
					onRowDeselect: function (data, index) {
						compareTable.reload();
					},
					drawCallback: function (settings) {
					}
				}, function () {
					var data = {};
          data.date_from = $("#filter_date_from").val();
					data.date_to = $("#filter_date_to").val();
          data.show_data = ($("#isShow").val() == 1);
					return data;
				}, {
					selectFirstRow: false
				});
				
				var compareTable = new QueryTable("tbl_comparison_of_indicators", {

					initComplete: function (queryAction) {
            if (window.userHasRole) {
              compareTable.addActionButton("addDetail", "Добавить", addDetail, "btn-success", false);
              compareTable.addActionButton("delDetail", "Удалить", delDetail, "btn-danger", true);
            }
            compareTable.addActionButton("formReport", "Выгузить отчет", formReport, "btn-primary", false);
					},

					onRowSelect: function (data, index) {
					},
					onRowDeselect: function (data, index) {
					},
					drawCallback: function (settings) {
					}
				}, function () {
					var data = {};
					let tbl = reportsTable.data();
          data.id = (tbl) ? tbl.id : -1;
					return data;
				}, {
					selectFirstRow: false
				});

        var deleteReport = new QueryAction("a_del_report_conformity_pu_bu", {
            actionComplete: function (data) {
							console.log('h');
              reportsTable.reload();
            },
            actionFailed: function(request, status, error) {
							console.log('g')
					console.log(error);
				}
          }, () => {  
            var data = {};
            let tbl = reportsTable.data();
            console.log(tbl.id);
            data.id = (tbl) ? tbl.id : -1;
            return data;
          }
        );

        var actDetail = new QueryAction("a_add_del_comparison_indicator", {
            initComplete: function (queryAction) {
              actDetail.enable();
            },
            actionComplete: function (data) {
              compareTable.reload();
            }
          }, function() {
            let data = {};
            data.act = selAct;
					  if (selAct == 'add') {
							data.id = reportsTable.data().id;
							data.account = $('#account').val();
							data.pension_scheme_id = $('#pension_scheme_id').val();
							data.strategy_id = $('#strategy_id').val();
							data.operation_sum_pu = $('#sum_pu').val();
							data.operation_sum_bu = $('#sum_bu').val();
						} else {
							data.id = compareTable.data().id;
						}
            return data;   
          }
        );
				
				$("#paramSignAgentIdBU").select2({
						placeholder: "Подписант",
						allowClear: true,
						minimumInputLength: 0,
					  multiple: true,
						id: function (e) {
							return e.id;
						},
						ajax: {
							url: "queryModel?queryModelCode=gM73j3Mo",
							dataType: 'json',
							data: function (term, page) {
								return {
									documentTypeId: 61 //Id типа документа подписания
								};
							},
							results: function (data, page) {
								return {
									results: data.list
								};
							}
						},
						formatResult: function (data) {
							return '<div>' + data.fio + '</div>';
						},
						formatSelection: function formatCheckSelection(data) {
							return data.fio;
						},
						initSelection: function (element, callback) {
							$.ajax("queryModel?queryModelCode=gM73j3Mo", {
								dataType: "json",
								data: {
									sign_username: $(element).val(),
									documentTypeId: 61 //Id типа документа подписания
								}
							}).done(function (data) {
								callback(data.list[0]);
							});
						}
					});
				
				$("#paramSignAgentIdPU").select2({
						placeholder: "Подписант",
						allowClear: true,
						minimumInputLength: 0,
					  multiple: true,
						id: function (e) {
							return e.id;
						},
						ajax: {
							url: "queryModel?queryModelCode=gM73j3Mo",
							dataType: 'json',
							data: function (term, page) {
								return {
									documentTypeId: 61 //Id типа документа подписания
								};
							},
							results: function (data, page) {
								return {
									results: data.list
								};
							}
						},
						formatResult: function (data) {
							return '<div>' + data.fio + '</div>';
						},
						formatSelection: function formatCheckSelection(data) {
							return data.fio;
						},
						initSelection: function (element, callback) {
							$.ajax("queryModel?queryModelCode=gM73j3Mo", {
								dataType: "json",
								data: {
									sign_username: $(element).val(),
									documentTypeId: 61 //Id типа документа подписания
								}
							}).done(function (data) {
								callback(data.list[0]);
							});
						}
					});
				
        
        //FUNCTIONS
        function delReport() {
          deleteReport.button().click();
        }

        function addDetail() {
          selAct = 'add';
          let addDialog = $("#modalWindow");
          addDialog.modal('show');
          //actDetail.button().click();
        }

        function delDetail() {
          selAct = 'del';
          actDetail.button().click();
        }

        function formReport() {
					$("#reportParamModal").modal('show');
        }
				
				$('#printReport').click(function () {
            let tbl = reportsTable.data();
            let $id = (tbl) ? tbl.id : -1;
					let st = (tbl) ? tbl.service_type : 'OPS';
          var report = new QueryReport("rpt_akt_mapping_pu_bu", null, {
              id: $id, signAgentIdPU : $('#paramSignAgentIdPU').val(), 
              signAgentIdBU : $('#paramSignAgentIdBU').val()});
          report.run();	
					if (st != 'OPS') {              
              var report = new QueryReport("rpt_akt_mapping_pu_bu_big", null, {
              id: $id, signAgentIdPU : $('#paramSignAgentIdPU').val(), 
              signAgentIdBU : $('#paramSignAgentIdBU').val()});
              report.run();
            }
          $("#reportParamModal").modal('hide');
				})

		});

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

    <div id="modalWindow" class="modal fade" tabindex="-1" 
         role="dialog" data-backdrop="static" aria-labelledby="modalWindow" 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">&times;</span>
              <span class="sr-only">
                <s:message code="dialog.close" />
              </span>
            </button>
            <h4 class="modal-title">Добавить</h4>
          </div>
          <div class="modal-body">
            <form id="addForm" class="form-vertical" role="form">
              <div class="row">
                <div class="col-md-12">
                  <div class="form-group">
                    <label for="account" class="col-sm-12 control-label">№ счета</label>
                    <div class="col-sm-12">
                      <input type="text" class="text-uppercase text-en-to-ru text-only-ru form-control" id="account" name="account" placeholder="№ счета" />
                    </div>
                  </div>
                  <div class="form-group">
                    <label for="pension_scheme_id" class="col-sm-2 control-label">Пенсионная схема</label>
                    <div class="col-sm-12">
                      <input type="text" class="text-uppercase text-en-to-ru text-only-ru form-control" id="pension_scheme_id" name="pension_scheme_id" placeholder="Пенсионная схема" />
                    </div>
                  </div>
                  <div class="form-group">
                    <label for="strategy_id" class="col-sm-12 control-label">Стратегия</label>
                    <div class="col-sm-12">
                      <input type="text" class=" form-control" id="strategy_id" name="strategy_id" placeholder="Стратегия" />
                    </div>
                  </div>
                  <div class="form-group">
                    <label for="sum_pu" class="col-sm-12 control-label">Сумма ПУ</label>
                    <div class="col-sm-12">
                      <input type="text" class="form-control" id="sum_pu" name="sum_pu" placeholder="Сумма ПУ" />
                    </div>
                  </div>
                  <div class="form-group">
                    <label for="sum_bu" class="col-sm-12 control-label">Сумма БУ</label>
                    <div class="col-sm-12">
                      <input type="text" class="form-control" id="sum_bu" name="sum_bu" placeholder="Сумма БУ" />
                    </div>
                  </div>
                </div>
              </div>
            </form>
          </div>
          <!-- modal-body -->

          <div class="modal-footer">
            <jsp:include page="queryAction.jsp">
                <jsp:param name="queryActionCode" value="a_add_del_comparison_indicator"/>
            </jsp:include> 
            <button class="btn btn-default" type="button" data-dismiss="modal">
                <s:message code="button.cancel"/>
            </button>
        </div>
          <!-- modal-footer -->
        </div>
        <!-- modal-content -->
      </div>
      <!-- modal-dialog -->
    </div>
    <!-- modal-window -->
		
		<div id="reportParamModal" class="modal fade" tabindex="-1" role="dialog" data-backdrop="static" aria-labelledby="reportParamModal" 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">&times;</span>
              <span class="sr-only"><s:message code="dialog.close"/></span></button>
            <h4 class="modal-title">Параметры выписки</h4>
          </div>
          <div class="modal-body">
            <form id="reportParam" class="form-vertical" role="form">
              <input type="hidden" id="paramReportKind" name='paramReportKind'>									
             
              <div class="row" id="paramSignAgentIdPU_div">
                <div class="col-sm-8">
                  <div class="form-group">
                    <label for="paramSignAgentIdPU">Подписант со стороны ПУ</label>
                    <input type="text" id="paramSignAgentIdPU" name="SignAgentIdPU" class="form-control">
                  </div>
                </div>
              </div>
							 <div class="row" id="paramSignAgentIdBU_div">
                <div class="col-sm-8">
                  <div class="form-group">
                    <label for="paramSignAgentIdBU">Подписант со стороны БУ</label>
                    <input type="text" id="paramSignAgentIdBU" name="SignAgentIdBU" class="form-control">
                  </div>
                </div>
              </div>
            </form>
          </div>
          <div class="modal-footer">
            <button type="button" id="printReport" class="btn btn-primary" style="">Сформировать</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>Акт соответствия ПУ с данными БУ</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/32484/"/>

            <div id="form_filter"></div>
						<input type="hidden" id="isShow" value="0">
						<div id="form_form"></div>

						<div class="row">
              <input type="hidden" id="isShow" value="1">
							<div class="col-sm-12">
								<jsp:include page="queryTable.jsp">
									<jsp:param name="queryTableCode" value="tbl_report_conformity_pu_bu"/>
									<jsp:param name="queryTableStyle" value="width: 1000px;"/>
								</jsp:include>
							</div>
						</div>
						<hr>
						<div class="row">
              <input type="hidden" id="isShow" value="1">
							<div class="col-sm-12">
								<jsp:include page="queryTable.jsp">
									<jsp:param name="queryTableCode" value="tbl_comparison_of_indicators"/>
									<jsp:param name="queryTableStyle" value="width: 1000px;"/>
								</jsp:include>
							</div>
						</div>
						
						<div class="btn-group col-sm-12" style="display: none;">
              <jsp:include page="queryAction.jsp">
                <jsp:param name="queryActionCode" value="a_del_report_conformity_pu_bu"/>
              </jsp:include>
            </div>
						<div class="btn-group col-sm-12" style="display: none;">
              <jsp:include page="queryAction.jsp">
                <jsp:param name="queryActionCode" value="a_add_del_comparison_indicator"/>
              </jsp:include>
            </div>
						
					</div>
				</div>
			</div>
		</div>
    
		<jsp:include page="footer.jsp"/>
	</body>
</html>



select DISTINCT a.id,
	a.user_id,
	concat_ws(' ', a.last_name, a.first_name, a.middle_name) as fio,
	u.username
FROM ourpension.agent a
join security."USER" u on u.id = a.user_id
join ourpension.agent_position p on a.id = p.agent_id
join ourpension.letter_of_attorney l on p.id = l.agent_position_id
/*Документ-основание */
#if ( $supportingDocumentId ) 
	and l.document_type = :supportingDocumentId
#end
 /*дата должна быть в диапозоне действия доверености*/
and case when l.date is not null then COALESCE( CAST( :date AS date), now() ) >= l.date else true end
and case when l.expire_date is not null then COALESCE( CAST( :date AS date), now() ) <= l.expire_date else true end
join ourpension.letter_of_attorney_document_type ladt on ladt.loa_id = l.id
/*id типа документа подписания*/ 
and case when ladt.dt_id is not null and :documentTypeId is not null and :documentTypeId != 0 then ladt.dt_id = :documentTypeId else true end
where true
/*id типа документа подписания*/ 
#if ( $id  ) 
	 and a.id = :id
#end
#if ( $sign_username ) 
	 and u.username = :sign_username
#end

#if ( $name && !$name.isEmpty() )
	 and concat_ws(' ', a.last_name, a.first_name, a.middle_name) ilike '%' || :name || '%'
#end
order by fio