Munka ráfordítás összesítő hozzáadva
This commit is contained in:
parent
02ed2fea42
commit
9d07f9d3bd
9
app.js
9
app.js
|
|
@ -24,7 +24,8 @@ var PdfPrinter=require('pdfmake');
|
||||||
//const util = require('util');
|
//const util = require('util');
|
||||||
//var currentWorkNumber=0;
|
//var currentWorkNumber=0;
|
||||||
const { XMLParser, XMLBuilder, XMLValidator} = require("fast-xml-parser/src/fxp");
|
const { XMLParser, XMLBuilder, XMLValidator} = require("fast-xml-parser/src/fxp");
|
||||||
const { apiSaveReport, apiGetReport, apiGetReportList, apiGetUsers, apiGetReportDates, apiUpdateReport } = require('./js/workReport.js');
|
const { apiSaveReport, apiGetReport, apiGetReportList, apiGetUsers, apiGetReportDates, apiUpdateReport, apiGetReportSum } = require('./js/workReport.js');
|
||||||
|
const { apiGetDailyReportSum } = require('./js/dailyReport.js');
|
||||||
let WorkReport = require('./models/workReportModel');
|
let WorkReport = require('./models/workReportModel');
|
||||||
moment.locale('HU');
|
moment.locale('HU');
|
||||||
const fss = require('fs');
|
const fss = require('fs');
|
||||||
|
|
@ -1223,6 +1224,7 @@ var wnY=dt.getFullYear();
|
||||||
|
|
||||||
// Get Single Work
|
// Get Single Work
|
||||||
app.get('/work/:id',utils.ensureAuthenticated,function(req,res){
|
app.get('/work/:id',utils.ensureAuthenticated,function(req,res){
|
||||||
|
|
||||||
Work.findById(req.params.id, function(err,work) // Munka keresése sz ID-je alapján
|
Work.findById(req.params.id, function(err,work) // Munka keresése sz ID-je alapján
|
||||||
{
|
{
|
||||||
if (err)
|
if (err)
|
||||||
|
|
@ -1299,6 +1301,7 @@ Work.findById(req.params.id, function(err,work) // Munka keresése sz ID-je alap
|
||||||
{ $group: {_id: '$dailyReport._id','foreman':{$first: '$dailyReport.foremanId'}, list: {$push: '$books'},'date': {$first: '$dailyReport.date'},'title': {$first: '$dailyReport.workTitle'}}},
|
{ $group: {_id: '$dailyReport._id','foreman':{$first: '$dailyReport.foremanId'}, list: {$push: '$books'},'date': {$first: '$dailyReport.date'},'title': {$first: '$dailyReport.workTitle'}}},
|
||||||
{ $sort : { 'date' : -1 } }
|
{ $sort : { 'date' : -1 } }
|
||||||
]).exec((err,results)=>{
|
]).exec((err,results)=>{
|
||||||
|
|
||||||
res.render('work',
|
res.render('work',
|
||||||
{
|
{
|
||||||
dailyReports:results,
|
dailyReports:results,
|
||||||
|
|
@ -2199,8 +2202,11 @@ app.route('/workreportSave').post(apiSaveReport);
|
||||||
app.route('/workreportUpdate').post(apiUpdateReport);
|
app.route('/workreportUpdate').post(apiUpdateReport);
|
||||||
app.route('/workreportUserList').get(apiGetUsers);
|
app.route('/workreportUserList').get(apiGetUsers);
|
||||||
app.route('/workreportGet/:id/:date').get(apiGetReport);
|
app.route('/workreportGet/:id/:date').get(apiGetReport);
|
||||||
|
app.route('/workreportGetSum/:id').get(apiGetReportSum);
|
||||||
app.route('/workreportList/:id').get(apiGetReportList);
|
app.route('/workreportList/:id').get(apiGetReportList);
|
||||||
app.route('/workreportDates/:id').get(apiGetReportDates);
|
app.route('/workreportDates/:id').get(apiGetReportDates);
|
||||||
|
|
||||||
|
app.route('/dailyReportGetSum/:id').get(apiGetDailyReportSum);
|
||||||
// Route Files
|
// Route Files
|
||||||
app.locals.moment = require('moment');
|
app.locals.moment = require('moment');
|
||||||
//app.use('/articles', articles);
|
//app.use('/articles', articles);
|
||||||
|
|
@ -2232,6 +2238,7 @@ const { string } = require('jszip/lib/support');
|
||||||
const { generateXML } = require('./js/enaploGen');
|
const { generateXML } = require('./js/enaploGen');
|
||||||
const { auto } = require('async');
|
const { auto } = require('async');
|
||||||
|
|
||||||
|
|
||||||
app.use('/devicesrfid', devices_rfid);
|
app.use('/devicesrfid', devices_rfid);
|
||||||
app.use('/vehicles', vehicles);
|
app.use('/vehicles', vehicles);
|
||||||
app.use('/gantt', gantt);
|
app.use('/gantt', gantt);
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,43 @@
|
||||||
|
let Work = require('../models/works');
|
||||||
|
const asyncHandler = require('express-async-handler');
|
||||||
|
var mongoose = require('mongoose');
|
||||||
|
|
||||||
|
// A teljes munka ráfordítás műhelyben
|
||||||
|
exports.apiGetDailyReportSum=asyncHandler(async (req,res)=>{
|
||||||
|
//const {workId,foremanId, workTitle,employeeList }=req.body;
|
||||||
|
|
||||||
|
res.setHeader('Content-Type', 'application/json');
|
||||||
|
try{
|
||||||
|
var wtSum=0;
|
||||||
|
|
||||||
|
const count=await Work.aggregate([
|
||||||
|
{$match:{'_id' : mongoose.Types.ObjectId(req.params.id)}},
|
||||||
|
{$unwind: '$dailyReport'},
|
||||||
|
|
||||||
|
{$unwind: {path:'$dailyReport.employeeList',preserveNullAndEmptyArrays:true}},
|
||||||
|
|
||||||
|
|
||||||
|
{"$lookup": {
|
||||||
|
"localField": "dailyReport.employeeList",
|
||||||
|
|
||||||
|
"from": "employees",
|
||||||
|
"foreignField": "_id",
|
||||||
|
"as": "books"
|
||||||
|
}},
|
||||||
|
|
||||||
|
{$unwind: {path:'$books',preserveNullAndEmptyArrays:true}},
|
||||||
|
{$group: {_id: '$workFlow.EmployeeList', count:{$sum:1}}},
|
||||||
|
{ "$limit": 1 },
|
||||||
|
{"$project": {"_id":0,
|
||||||
|
"count": 1,}
|
||||||
|
}
|
||||||
|
])
|
||||||
|
|
||||||
|
if (count) wtSum=count[0].count*8
|
||||||
|
res.send({'response':'ok', 'dailyReportSum':wtSum});
|
||||||
|
}catch(err){
|
||||||
|
|
||||||
|
res.status(500).json({'response':'fail','message':'Hiba a mentésnél !\n'+err.message});
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
|
@ -118,6 +118,38 @@ exports.apiGetReport=asyncHandler(async (req,res)=>{
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// A teljes munka ráfordítás műhelyben
|
||||||
|
exports.apiGetReportSum=asyncHandler(async (req,res)=>{
|
||||||
|
//const {workId,foremanId, workTitle,employeeList }=req.body;
|
||||||
|
|
||||||
|
res.setHeader('Content-Type', 'application/json');
|
||||||
|
try{
|
||||||
|
var wtSum=0;
|
||||||
|
|
||||||
|
const workTimesSum=await WorkReport.aggregate(
|
||||||
|
[
|
||||||
|
{ $match: { 'workId': mongoose.Types.ObjectId(req.params.id),
|
||||||
|
|
||||||
|
} },
|
||||||
|
{$unwind: '$workFlow'},
|
||||||
|
{$unwind: '$workFlow.employeeList'},
|
||||||
|
{$group: {_id: '$workFlow.EmployeeList', count:{$sum:1}}},
|
||||||
|
{ "$limit": 1 },
|
||||||
|
{"$project": {"_id":0,
|
||||||
|
"count": 1,}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
)
|
||||||
|
|
||||||
|
if (workTimesSum.length>0) wtSum=workTimesSum[0].count*8
|
||||||
|
res.send({'response':'ok', 'workTimesSum':wtSum});
|
||||||
|
}catch(err){
|
||||||
|
|
||||||
|
res.status(500).json({'response':'fail','message':'Hiba a mentésnél !\n'+err.message});
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
// Használt dátumok
|
// Használt dátumok
|
||||||
exports.apiGetReportDates=asyncHandler(async (req,res)=>{
|
exports.apiGetReportDates=asyncHandler(async (req,res)=>{
|
||||||
//const {workId,foremanId, workTitle,employeeList }=req.body;
|
//const {workId,foremanId, workTitle,employeeList }=req.body;
|
||||||
|
|
|
||||||
|
|
@ -76,6 +76,46 @@
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function getWorkReportSumMuhely()
|
||||||
|
{
|
||||||
|
document.getElementById ('workReportSumMuhely').textContent=0;
|
||||||
|
//Fetch workReport
|
||||||
|
var wid = document.getElementById ('wn').textContent;
|
||||||
|
fetch('/workreportGetSum/'+wid , {
|
||||||
|
method: 'GET',
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/json',
|
||||||
|
'Authorization': 'Bearer YOUR_ACCESS_TOKEN'
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.then(response => response.json())
|
||||||
|
.then(data => {
|
||||||
|
document.getElementById ('workReportSumMuhely').textContent=`Műhely munkaórák: ${data.workTimesSum} óra`
|
||||||
|
})
|
||||||
|
|
||||||
|
.catch(error => console.error('Error:', error));
|
||||||
|
}
|
||||||
|
|
||||||
|
function getDailyReportSum()
|
||||||
|
{
|
||||||
|
document.getElementById ('dailyReportGetSum').textContent=0;
|
||||||
|
//Fetch workReport
|
||||||
|
var wid = document.getElementById ('wn').textContent;
|
||||||
|
fetch('/dailyReportGetSum/'+wid , {
|
||||||
|
method: 'GET',
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/json',
|
||||||
|
'Authorization': 'Bearer YOUR_ACCESS_TOKEN'
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.then(response => response.json())
|
||||||
|
.then(data => {
|
||||||
|
document.getElementById ('dailyReportGetSum').textContent=`Terep munkaórák: ${data.dailyReportSum} óra`
|
||||||
|
})
|
||||||
|
|
||||||
|
.catch(error => console.error('Error:', error));
|
||||||
|
}
|
||||||
|
|
||||||
function updateWorkReport()
|
function updateWorkReport()
|
||||||
{
|
{
|
||||||
var selectedDate = $('#workReportDate').data("DateTimePicker").date().format('YYYY.MM');
|
var selectedDate = $('#workReportDate').data("DateTimePicker").date().format('YYYY.MM');
|
||||||
|
|
@ -138,13 +178,15 @@
|
||||||
$('#workReportTable2 > tbody:last-child').append (newRow);
|
$('#workReportTable2 > tbody:last-child').append (newRow);
|
||||||
})
|
})
|
||||||
//$('#workReportTable > tbody:last-child').append (newRow);
|
//$('#workReportTable > tbody:last-child').append (newRow);
|
||||||
document.getElementById ('workTimesSum').textContent=`Munkaórák: ${data.workTimesSum} óra`
|
document.getElementById ('workTimesSum').textContent=`Műhely munkaórák: ${data.workTimesSum} óra`
|
||||||
})
|
})
|
||||||
|
|
||||||
.catch(error => console.error('Error:', error));
|
.catch(error => console.error('Error:', error));
|
||||||
}
|
}
|
||||||
|
|
||||||
$(document).ready(function () {
|
$(document).ready(function () {
|
||||||
|
getWorkReportSumMuhely();
|
||||||
|
getDailyReportSum();
|
||||||
$('#workReportDate').datetimepicker({
|
$('#workReportDate').datetimepicker({
|
||||||
locale: 'hu',
|
locale: 'hu',
|
||||||
format: 'LD',
|
format: 'LD',
|
||||||
|
|
|
||||||
|
|
@ -5851,7 +5851,7 @@ async function makeWorktimeAll(calcdate)
|
||||||
if (element.isSubcontractor===null) // Alkalmazott
|
if (element.isSubcontractor===null) // Alkalmazott
|
||||||
{
|
{
|
||||||
msz=getMunkaszunet(calcdate);
|
msz=getMunkaszunet(calcdate);
|
||||||
const data= printPage(employee,som,month,weekend,req.params.mindate,holidaysArray,sickpaysArray,msz)
|
const data= printPage(element,som,month,weekend,calcdate,holidaysArray,sickpaysArray,msz)
|
||||||
//var data= printPage(element,som,month,weekend,calcdate,holidaysArray,sickpaysArray,msz)//.then(function(data){
|
//var data= printPage(element,som,month,weekend,calcdate,holidaysArray,sickpaysArray,msz)//.then(function(data){
|
||||||
var fonts = {
|
var fonts = {
|
||||||
Roboto: {
|
Roboto: {
|
||||||
|
|
@ -5891,7 +5891,7 @@ async function makeWorktimeAll(calcdate)
|
||||||
{
|
{
|
||||||
msz=getMunkaszunet(calcdate);
|
msz=getMunkaszunet(calcdate);
|
||||||
//printPageContractor(element,som,month,weekend,calcdate,holidaysArray, function(err,data){
|
//printPageContractor(element,som,month,weekend,calcdate,holidaysArray, function(err,data){
|
||||||
const data= printPage(employee,som,month,weekend,req.params.mindate,holidaysArray,sickpaysArray,msz)
|
const data= printPage(element,som,month,weekend,calcdate,holidaysArray,sickpaysArray,msz)
|
||||||
// var data= printPage(element,som,month,weekend,calcdate,holidaysArray,sickpaysArray,msz)
|
// var data= printPage(element,som,month,weekend,calcdate,holidaysArray,sickpaysArray,msz)
|
||||||
var fonts = {
|
var fonts = {
|
||||||
Roboto: {
|
Roboto: {
|
||||||
|
|
|
||||||
|
|
@ -142,7 +142,7 @@ block content
|
||||||
col(width='1%')
|
col(width='1%')
|
||||||
col(width='auto')
|
col(width='auto')
|
||||||
col(width='auto')
|
col(width='auto')
|
||||||
col(width='5%')
|
//-col(width='5%')
|
||||||
col(width='5%')
|
col(width='5%')
|
||||||
col(width='5%')
|
col(width='5%')
|
||||||
col(width='5%')
|
col(width='5%')
|
||||||
|
|
@ -156,7 +156,7 @@ block content
|
||||||
th
|
th
|
||||||
th(style='text-align:left') Megrendelő
|
th(style='text-align:left') Megrendelő
|
||||||
th Megnevezés
|
th Megnevezés
|
||||||
th(style='text-align:center') File
|
//-th(style='text-align:center') File
|
||||||
th(style='text-align:center') Létrehozva
|
th(style='text-align:center') Létrehozva
|
||||||
th(style='text-align:center') Státusz
|
th(style='text-align:center') Státusz
|
||||||
th(style='text-align:left') M.SZ.
|
th(style='text-align:left') M.SZ.
|
||||||
|
|
@ -176,7 +176,7 @@ block content
|
||||||
td(style='text-align:left; vertical-align:middle;font-size: 9px;font-weight: bold;') #{work.megrendelo || "-"}
|
td(style='text-align:left; vertical-align:middle;font-size: 9px;font-weight: bold;') #{work.megrendelo || "-"}
|
||||||
td(style='vertical-align:middle')
|
td(style='vertical-align:middle')
|
||||||
a(href="/work/"+work._id)= work.title
|
a(href="/work/"+work._id)= work.title
|
||||||
td(style='text-align:center;vertical-align:middle')
|
//-td(style='text-align:center;vertical-align:middle')
|
||||||
if (work.filesCM.length>0)
|
if (work.filesCM.length>0)
|
||||||
span.badge.badge-success #{work.filesCM.length}
|
span.badge.badge-success #{work.filesCM.length}
|
||||||
else
|
else
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,7 @@ html
|
||||||
title Munka nyílvántartó
|
title Munka nyílvántartó
|
||||||
//-link(rel='icon' href='IOCT_LOGO.ico' type='image/icon type')
|
//-link(rel='icon' href='IOCT_LOGO.ico' type='image/icon type')
|
||||||
link(rel='stylesheet' href='/bower_components/bootstrap/dist/css/bootstrap.css')
|
link(rel='stylesheet' href='/bower_components/bootstrap/dist/css/bootstrap.css')
|
||||||
|
|
||||||
//-link(rel='stylesheet', href='//maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css')
|
//-link(rel='stylesheet', href='//maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css')
|
||||||
link(rel='stylesheet' href='/css/style.css')
|
link(rel='stylesheet' href='/css/style.css')
|
||||||
link(rel='stylesheet' href='/css/switch.css')
|
link(rel='stylesheet' href='/css/switch.css')
|
||||||
|
|
@ -125,7 +126,7 @@ html
|
||||||
hr
|
hr
|
||||||
footer
|
footer
|
||||||
p IO-Technic Hungary Copyright © 2018
|
p IO-Technic Hungary Copyright © 2018
|
||||||
script(src='/bower_components/jquery/dist/jquery.js')
|
script(src='/bower_components/jquery/dist/jquery.min.js')
|
||||||
//script(src='http://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js')
|
//script(src='http://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js')
|
||||||
//script(type='text/javascript', src='/bower_components/jquery/dist/jquery.min.js')
|
//script(type='text/javascript', src='/bower_components/jquery/dist/jquery.min.js')
|
||||||
script(src='/bower_components/bootstrap/dist/js/bootstrap.js')
|
script(src='/bower_components/bootstrap/dist/js/bootstrap.js')
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,8 @@ extends layout
|
||||||
|
|
||||||
block content
|
block content
|
||||||
.container
|
.container
|
||||||
link(rel='stylesheet' href='/bower_components/bootstrap/dist/css/bootstrap.css')
|
//-link(rel='stylesheet' href='/bower_components/bootstrap/dist/css/bootstrap.css')
|
||||||
|
//-link(rel='stylesheet' href='https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/css/bootstrap.min.css')
|
||||||
link(href='//maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css', rel='stylesheet')
|
link(href='//maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css', rel='stylesheet')
|
||||||
link(rel='stylesheet', type='text/css', href='https://unpkg.com/lightpick@latest/css/lightpick.css')
|
link(rel='stylesheet', type='text/css', href='https://unpkg.com/lightpick@latest/css/lightpick.css')
|
||||||
link(rel='stylesheet', href='/bower_components/eonasdan-bootstrap-datetimepicker/build/css/bootstrap-datetimepicker.min.css')
|
link(rel='stylesheet', href='/bower_components/eonasdan-bootstrap-datetimepicker/build/css/bootstrap-datetimepicker.min.css')
|
||||||
|
|
@ -84,7 +85,13 @@ block content
|
||||||
hr
|
hr
|
||||||
div.row
|
div.row
|
||||||
div.col-md-12
|
div.col-md-12
|
||||||
p Megjegyzés: #{work.body}
|
h4#workTimeSum
|
||||||
|
hr
|
||||||
|
.row
|
||||||
|
.col-sm-6
|
||||||
|
h4#workReportSumMuhely
|
||||||
|
.col-sm-6
|
||||||
|
h4#dailyReportGetSum
|
||||||
if (work.filesCM.length)
|
if (work.filesCM.length)
|
||||||
hr
|
hr
|
||||||
each file, i in work.filesCM
|
each file, i in work.filesCM
|
||||||
|
|
@ -296,7 +303,7 @@ block content
|
||||||
script(src='/bower_components/moment/min/moment-with-locales.js')
|
script(src='/bower_components/moment/min/moment-with-locales.js')
|
||||||
script(type='text/javascript',src='/build/pdfmake.js')
|
script(type='text/javascript',src='/build/pdfmake.js')
|
||||||
script(type='text/javascript',src='/build/vfs_fonts.js')
|
script(type='text/javascript',src='/build/vfs_fonts.js')
|
||||||
|
script(src='https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/js/bootstrap.bundle.min.js')
|
||||||
script(src='https://unpkg.com/lightpick@latest/lightpick.js')
|
script(src='https://unpkg.com/lightpick@latest/lightpick.js')
|
||||||
script(src="https://cdnjs.cloudflare.com/ajax/libs/limonte-sweetalert2/11.14.2/sweetalert2.min.js" integrity="sha512-nD7/PXl2UD6bAYMJVKTLhr7qwnWVvoyqk8/WMzedDKMiQbaNXT3EUPzLYbLUHCLWqAZoXO37aVCtCKmAxZfqGw==" crossorigin="anonymous" referrerpolicy="no-referrer")
|
script(src="https://cdnjs.cloudflare.com/ajax/libs/limonte-sweetalert2/11.14.2/sweetalert2.min.js" integrity="sha512-nD7/PXl2UD6bAYMJVKTLhr7qwnWVvoyqk8/WMzedDKMiQbaNXT3EUPzLYbLUHCLWqAZoXO37aVCtCKmAxZfqGw==" crossorigin="anonymous" referrerpolicy="no-referrer")
|
||||||
script.
|
script.
|
||||||
|
|
@ -316,38 +323,7 @@ block content
|
||||||
$(document).ready(function () {
|
$(document).ready(function () {
|
||||||
moment.locale('HU')
|
moment.locale('HU')
|
||||||
updateWorkReport()
|
updateWorkReport()
|
||||||
/*fetch('/workreportList/'+wid, {
|
|
||||||
method: 'GET',
|
|
||||||
headers: {
|
|
||||||
'Content-Type': 'application/json',
|
|
||||||
'Authorization': 'Bearer YOUR_ACCESS_TOKEN'
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.then(response => response.json())
|
|
||||||
.then(data => {
|
|
||||||
console.log(data)
|
|
||||||
$.each(data.reports,function(i,item){
|
|
||||||
var newRow="<tr><td>"+(i+1)+"</td>"
|
|
||||||
newRow+=
|
|
||||||
'<td style="text-align:left">'+moment(new Date(item.date)).format('YYYY.MM.DD')+'</td>'
|
|
||||||
//'<td style="text-align:right">'+item.workTitle+'</td>'
|
|
||||||
|
|
||||||
newRow+='<td>'
|
|
||||||
$.each(item.items,function(i,employee){
|
|
||||||
newRow+=employee.name+'<br>'
|
|
||||||
});
|
|
||||||
newRow+='</td>'
|
|
||||||
newRow+='<td>'
|
|
||||||
$.each(item.items,function(i,wf){
|
|
||||||
newRow+=wf.workFlow+'<br>'
|
|
||||||
});
|
|
||||||
newRow+='</td>'
|
|
||||||
newRow+='</tr>';
|
|
||||||
$('#workReportTable > tbody:last-child').append (newRow);
|
|
||||||
})
|
|
||||||
})
|
|
||||||
.catch(error => console.error('Error:', error));
|
|
||||||
*/
|
|
||||||
|
|
||||||
document.getElementById('enaploImp').addEventListener('change', readFile, false);
|
document.getElementById('enaploImp').addEventListener('change', readFile, false);
|
||||||
/* var entemplate = document.getElementById ('entemp').textContent;
|
/* var entemplate = document.getElementById ('entemp').textContent;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue