Commit c9894dba by chenjinjing

no message

parent 0d5ce51e
......@@ -237,35 +237,90 @@ export async function adminWorkLogForProject(page:number, startMs:string, endMs:
* @param endMs 结束时间
* @returns {dataList:工时管理列表, name:`【按时间分工时】.xlsx`}
*/
// export async function outPutAdminWorkingLogListForTime(startMs:string, endMs:string) {
// let selectParam:any = {};
// if (startMs && endMs) {
// selectParam.dateKey = {"%between%":[moment(startMs).format("YYYY-MM-DD") + ' 00:00:00', moment(endMs).format("YYYY-MM-DD") + ' 23:59:59']};
// }
// /**加班 */
// let overtimeList = await selectDataListByParam(TABLENAMEENUM.加班, selectParam, ["dateKey", "userId", "time" ]);
// let overtimeMap = {};
// overtimeList.forEach(info => {
// let {dateKey, userId, time} = info;
// let dateKeyStr = moment(dateKey).format("YYYY-MM-DD");
// if (!overtimeMap[dateKeyStr]) overtimeMap[dateKeyStr] = {};
// if (!overtimeMap[dateKeyStr][userId]) overtimeMap[dateKeyStr][userId] = time;
// });
// /**工时 */
// let includeConf = {};
// includeConf[TABLENAMEENUM.项目表] = ["name", "projectId"];
// includeConf[TABLENAMEENUM.用户表] = ["name", "userId", "departmentId"];
// let column = ["dateKey", "time", "isOutside", "workLog"];
// let dbList = await selectDataToTableAssociation(TABLENAMEENUM.工时表, includeConf, selectParam, column );
// let result = [
// ["日期年","日期月","日期日","部门","姓名","项目名称","项目编号","时长/小时","工作内容", "加班时长"]
// ];
// dbList.forEach(info => {
// let {dateKey, user, project } = info;
// let year = moment(dateKey).year();
// let month = moment(dateKey).month()+1;
// let day = moment(dateKey).date();
// let itemList = [
// year,
// month,
// day,
// changeEnumValue(DEPARTMENTENUM, user.departmentId),
// user.name,
// project.name,
// project.projectId,
// info.time,
// info.workLog
// ];
// let dateKeyStr = moment(dateKey).format("YYYY-MM-DD");
// if (overtimeMap[dateKeyStr] && overtimeMap[dateKeyStr][user.userId]) itemList.push(overtimeMap[dateKeyStr][user.userId]);
// result.push(itemList);
// });
// return {dataList:result, name:`【按时间分工时】.xlsx`};
// }
/**
* 导出按时间分的工时管理列表
* @param startMs 开始时间
* @param endMs 结束时间
* @returns {dataList:工时管理列表, name:`【按时间分工时】.xlsx`}
*/
export async function outPutAdminWorkingLogListForTime(startMs:string, endMs:string) {
let selectParam:any = {};
if (startMs && endMs) {
selectParam.dateKey = {"%between%":[moment(startMs).format("YYYY-MM-DD") + ' 00:00:00', moment(endMs).format("YYYY-MM-DD") + ' 23:59:59']};
}
/**加班 */
let overtimeList = await selectDataListByParam(TABLENAMEENUM.加班, selectParam, ["dateKey", "userId", "time" ]);
let overtimeMap = {};
overtimeList.forEach(info => {
let {dateKey, userId, time} = info;
let dateKeyStr = moment(dateKey).format("YYYY-MM-DD");
if (!overtimeMap[dateKeyStr]) overtimeMap[dateKeyStr] = {};
if (!overtimeMap[dateKeyStr][userId]) overtimeMap[dateKeyStr][userId] = time;
});
/**工时 */
/**工时数据 */
let includeConf = {};
includeConf[TABLENAMEENUM.项目表] = ["name", "projectId"];
includeConf[TABLENAMEENUM.用户表] = ["name", "userId", "departmentId"];
includeConf[TABLENAMEENUM.用户表] = ["name", "userId", "departmentId"];
let column = ["dateKey", "time", "isOutside", "workLog"];
let dbList = await selectDataToTableAssociation(TABLENAMEENUM.工时表, includeConf, selectParam, column );
let dbList = await selectDataToTableAssociation(TABLENAMEENUM.工时表, includeConf, selectParam, column);
let result = [
/**加班数据 */
let includeJiabanConf = {};
includeJiabanConf[TABLENAMEENUM.项目表] = ["name", "projectId"];
includeJiabanConf[TABLENAMEENUM.用户表] = ["name", "userId", "departmentId"];
let overtimeList = await selectDataToTableAssociation(TABLENAMEENUM.加班, includeJiabanConf, selectParam, ["dateKey", "userId", "time", "workLog"]);
let result: (string | number)[][] = [
["日期年","日期月","日期日","部门","姓名","项目名称","项目编号","时长/小时","工作内容", "加班时长"]
];
// 处理工时数据
dbList.forEach(info => {
let {dateKey, user, project } = info;
let {dateKey, user, project} = info;
let year = moment(dateKey).year();
let month = moment(dateKey).month()+1;
let day = moment(dateKey).date();
......@@ -278,13 +333,50 @@ export async function outPutAdminWorkingLogListForTime(startMs:string, endMs:str
project.name,
project.projectId,
info.time,
info.workLog
info.workLog,
"" // 加班时长初始为0
];
result.push(itemList);
});
// 处理加班数据
overtimeList.forEach(info => {
let {dateKey, user, project} = info;
let year = moment(dateKey).year();
let month = moment(dateKey).month()+1;
let day = moment(dateKey).date();
let itemList = [
year,
month,
day,
changeEnumValue(DEPARTMENTENUM, user.departmentId),
user.name,
project.name,
project.projectId,
"", // 正常工时时长为0
info.workLog || '', // 工作内容
info.time // 加班时长
];
let dateKeyStr = moment(dateKey).format("YYYY-MM-DD");
if (overtimeMap[dateKeyStr] && overtimeMap[dateKeyStr][user.userId]) itemList.push(overtimeMap[dateKeyStr][user.userId]);
result.push(itemList);
});
// 按日期排序,确保数据有序
// result.sort((a, b) => {
// // 跳过表头
// if (a[0] === "日期年" || b[0] === "日期年") return 0;
// const yearA = a[0] as number;
// const yearB = b[0] as number;
// const monthA = a[1] as number;
// const monthB = b[1] as number;
// const dayA = a[2] as number;
// const dayB = b[2] as number;
// if (yearA !== yearB) return yearA - yearB;
// if (monthA !== monthB) return monthA - monthB;
// return dayA - dayB;
// });
return {dataList:result, name:`【按时间分工时】.xlsx`};
}
......
......@@ -2,7 +2,7 @@
* 请假
*/
import * as asyncHandler from 'express-async-handler';
import asyncHandler = require('express-async-handler');
import * as askForLeaveBiz from '../biz/askForLeave';
import { checkFuHuaQiToken } from '../middleware/user';
import { eccReqParamater } from '../tools/eccParam';
......
......@@ -2,7 +2,7 @@
* 出勤路由
*/
import * as asyncHandler from 'express-async-handler';
import asyncHandler = require('express-async-handler');
import { checkFuHuaQiToken } from '../middleware/user';
import * as attendanceBiz from '../biz/attendance';
import { eccReqParamater } from '../tools/eccParam';
......
......@@ -2,7 +2,7 @@
* 成员
*/
import * as asyncHandler from 'express-async-handler';
import asyncHandler = require('express-async-handler');
import { checkFuHuaQiToken } from '../middleware/user';
import * as memberBiz from '../biz/member';
import { eccReqParamater } from '../tools/eccParam';
......
......@@ -2,7 +2,7 @@
* 加班路由
*/
import * as asyncHandler from 'express-async-handler';
import asyncHandler = require('express-async-handler');
import { checkFuHuaQiToken } from '../middleware/user';
import { addOvertimeLog, approveOverTime, approveOverTimeList, deleteOvertimeLog, overtimeList, updateOvertimeLog } from '../biz/overtime';
import { eccReqParamater } from '../tools/eccParam';
......
......@@ -2,7 +2,7 @@
* 项目路由
*/
import * as asyncHandler from 'express-async-handler';
import asyncHandler = require('express-async-handler');
import { checkFuHuaQiToken } from '../middleware/user';
import * as projectBiz from '../biz/project';
import { eccReqParamater } from '../tools/eccParam';
......
......@@ -2,7 +2,7 @@
* 公共资源路由
*/
import * as asyncHandler from 'express-async-handler';
import asyncHandler = require('express-async-handler');
import { ASKFORLEAVETYPE, WORKLOGADMINTYPE } from '../config/enum';
import { projectListForSelect } from '../biz/project';
......
......@@ -2,7 +2,7 @@
* 统计路由
*/
import * as asyncHandler from 'express-async-handler';
import asyncHandler = require('express-async-handler');
import * as statsBiz from '../biz/stats';
import moment = require('moment');
import { eccReqParamater } from '../tools/eccParam';
......
......@@ -2,7 +2,7 @@
* 用户路由
*/
import * as asyncHandler from 'express-async-handler';
import asyncHandler = require('express-async-handler');
import * as userBiz from '../biz/user';
import { checkFuHuaQiToken } from '../middleware/user';
import { eccReqParamater } from '../tools/eccParam';
......
......@@ -2,7 +2,7 @@
* 工时路由
*/
import * as asyncHandler from 'express-async-handler';
import asyncHandler = require('express-async-handler');
import * as workingLogBiz from '../biz/workingLog';
import { checkFuHuaQiToken } from '../middleware/user';
import { eccEnumValue, eccReqParamater } from '../tools/eccParam';
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment