phx-node 1.0.79 → 1.0.80
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/module/department-manager/department-manager.service.d.ts +5 -0
- package/dist/module/department-manager/department-manager.service.js.map +1 -1
- package/dist/module/hrm-checkin/get-actual-working-hours.service.d.ts +1 -2
- package/dist/module/hrm-checkin/get-actual-working-hours.service.js +37 -26
- package/dist/module/hrm-checkin/get-actual-working-hours.service.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
import { PHXGrpcClientSystemService } from "../grpc-client/grpc-client-system.service";
|
|
2
2
|
import { PayloadGetDepartmentManager } from "src/lib/types/department-manager";
|
|
3
|
+
export interface Department {
|
|
4
|
+
id: number;
|
|
5
|
+
name: string;
|
|
6
|
+
department_manager_id: number;
|
|
7
|
+
}
|
|
3
8
|
export declare class DepartmentManagerService {
|
|
4
9
|
private readonly grpcClientSystemService;
|
|
5
10
|
constructor(grpcClientSystemService: PHXGrpcClientSystemService);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"department-manager.service.js","sourceRoot":"","sources":["../../../src/module/department-manager/department-manager.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA,2CAA4C;AAE5C,0FAAuF;AAQvF,gEAG4C;
|
|
1
|
+
{"version":3,"file":"department-manager.service.js","sourceRoot":"","sources":["../../../src/module/department-manager/department-manager.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA,2CAA4C;AAE5C,0FAAuF;AAQvF,gEAG4C;AASrC,IAAM,wBAAwB,GAA9B,MAAM,wBAAwB;IACnC,YACmB,uBAAmD;QAAnD,4BAAuB,GAAvB,uBAAuB,CAA4B;IACnE,CAAC;IAEU,mBAAmB,CAC/B,OAAoC;;YAEpC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;YACtC,MAAM,aAAa,GAAG,CAAC,MAAM,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC;gBAC9D,KAAK,EAAE,+BAAuB;gBAC9B,SAAS,EAAE,EAAE,OAAO,EAAE;gBACtB,QAAQ;aACT,CAAC,CAA4B,CAAC;YAE/B,MAAM,EAAE,eAAe,EAAE,GAAG,aAAa,CAAC;YAC1C,MAAM,YAAY,GAAkB,eAAe,CAAC,GAAG,CACrD,CAAC,IAAwB,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CACjD,CAAC;YAEF,OAAO,YAAY,CAAC;QACtB,CAAC;KAAA;IAEa,wBAAwB,CACpC,OAAoC;;YAEpC,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;YAC7B,MAAM,YAAY,GAAkB,MAAM,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;YAC5E,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,EAAE,CAAC;YAEzC,MAAM,UAAU,GAAG,CAAC,MAAM,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC;gBAC3D,KAAK,EAAE,gCAAwB;gBAC/B,SAAS,EAAE;oBACT,qBAAqB,EAAE,IAAI,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG;iBACrD;gBACD,QAAQ;aACT,CAAC,CAA6B,CAAC;YAEhC,MAAM,EAAE,eAAe,EAAE,GAAG,UAAU,CAAC;YAEvC,MAAM,sBAAsB,GAAkB,eAAe,CAAC,GAAG,CAC/D,CAAC,IAAyB,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAClD,CAAC;YAEF,OAAO,CAAC,GAAG,YAAY,EAAE,GAAG,sBAAsB,CAAC,CAAC;QACtD,CAAC;KAAA;IAEY,GAAG,CACd,OAAoC;;YAEpC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC;YACzD,OAAO,GAAG,CAAC;QACb,CAAC;KAAA;CACF,CAAA;AArDY,4DAAwB;mCAAxB,wBAAwB;IADpC,IAAA,mBAAU,GAAE;qCAGiC,uDAA0B;GAF3D,wBAAwB,CAqDpC"}
|
|
@@ -3,9 +3,8 @@ import { PayloadGetActualWorkingHoursService } from "src/lib/types/hrm-checkin";
|
|
|
3
3
|
export declare class GetActualWorkingHoursService {
|
|
4
4
|
private readonly grpcClientSystemService;
|
|
5
5
|
constructor(grpcClientSystemService: PHXGrpcClientSystemService);
|
|
6
|
-
private getMinutesDiff;
|
|
7
6
|
private getDurationTime;
|
|
8
7
|
private getTimeCheckInOut;
|
|
9
8
|
private getTotalActualWorkingHours;
|
|
10
|
-
get(payload: PayloadGetActualWorkingHoursService): Promise<
|
|
9
|
+
get(payload: PayloadGetActualWorkingHoursService): Promise<any>;
|
|
11
10
|
}
|
|
@@ -26,31 +26,34 @@ let GetActualWorkingHoursService = class GetActualWorkingHoursService {
|
|
|
26
26
|
constructor(grpcClientSystemService) {
|
|
27
27
|
this.grpcClientSystemService = grpcClientSystemService;
|
|
28
28
|
}
|
|
29
|
-
|
|
30
|
-
if (!
|
|
31
|
-
return 0;
|
|
32
|
-
const [h1, m1, s1] = timeStart.split(":").map(Number);
|
|
33
|
-
const [h2, m2, s2] = timeEnd.split(":").map(Number);
|
|
34
|
-
const totalMinutesStart = h1 * 60 + m1 + s1 / 60;
|
|
35
|
-
const totalMinutesEnd = h2 * 60 + m2 + s2 / 60;
|
|
36
|
-
return Math.round(Math.abs(totalMinutesEnd - totalMinutesStart));
|
|
37
|
-
}
|
|
38
|
-
getDurationTime(timeCheckin, timeCheckout, breakMinutes) {
|
|
39
|
-
if (!timeCheckin || !timeCheckout) {
|
|
29
|
+
getDurationTime(timeCheckin, timeCheckout, lunchBreakStart, lunchBreakEnd) {
|
|
30
|
+
if (!timeCheckin || !timeCheckout)
|
|
40
31
|
return "";
|
|
41
|
-
}
|
|
42
32
|
const start = new Date(timeCheckin);
|
|
43
33
|
const end = new Date(timeCheckout);
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
34
|
+
let totalMinutes = Math.floor((end.getTime() - start.getTime()) / (1000 * 60));
|
|
35
|
+
if (lunchBreakStart && lunchBreakEnd) {
|
|
36
|
+
const parseTimeToDate = (base, timeStr) => {
|
|
37
|
+
const [h, m, s] = timeStr.split(":").map(Number);
|
|
38
|
+
const d = new Date(base);
|
|
39
|
+
d.setHours(h, m, s || 0, 0);
|
|
40
|
+
return d;
|
|
41
|
+
};
|
|
42
|
+
const breakStart = parseTimeToDate(start, lunchBreakStart);
|
|
43
|
+
const breakEnd = parseTimeToDate(start, lunchBreakEnd);
|
|
44
|
+
const overlapStart = new Date(Math.max(start.getTime(), breakStart.getTime()));
|
|
45
|
+
const overlapEnd = new Date(Math.min(end.getTime(), breakEnd.getTime()));
|
|
46
|
+
const breakDurationMinutes = Math.max(0, (overlapEnd.getTime() - overlapStart.getTime()) / (1000 * 60));
|
|
47
|
+
totalMinutes -= breakDurationMinutes;
|
|
48
48
|
}
|
|
49
|
-
const
|
|
50
|
-
const
|
|
49
|
+
const totalMinuteCeils = Math.ceil(totalMinutes);
|
|
50
|
+
const totalHours = totalMinuteCeils / 60;
|
|
51
|
+
const hoursView = Math.floor(totalHours);
|
|
52
|
+
const minutes = totalMinuteCeils % 60;
|
|
51
53
|
return {
|
|
52
|
-
|
|
53
|
-
|
|
54
|
+
totalMinutes: totalMinuteCeils,
|
|
55
|
+
totalHours: Math.round(totalHours * 100) / 100,
|
|
56
|
+
view: `${hoursView}h${minutes.toString().padStart(2, "0")}`,
|
|
54
57
|
};
|
|
55
58
|
}
|
|
56
59
|
getTimeCheckInOut(listCheckins) {
|
|
@@ -66,7 +69,7 @@ let GetActualWorkingHoursService = class GetActualWorkingHoursService {
|
|
|
66
69
|
}
|
|
67
70
|
getTotalActualWorkingHours(payload) {
|
|
68
71
|
return __awaiter(this, void 0, void 0, function* () {
|
|
69
|
-
var _a, _b
|
|
72
|
+
var _a, _b;
|
|
70
73
|
const { user_id, hostname, working_day } = payload;
|
|
71
74
|
let totalHours = "";
|
|
72
75
|
const isHasFullData = Boolean(user_id && hostname && working_day);
|
|
@@ -92,13 +95,13 @@ let GetActualWorkingHoursService = class GetActualWorkingHoursService {
|
|
|
92
95
|
const listAttendanceConfigs = (school === null || school === void 0 ? void 0 : school.hrm_checkin_shift_configs) || [];
|
|
93
96
|
const dataAttendanceConfig = listAttendanceConfigs.find((configData) => configData.department_id === staffDepartmentId ||
|
|
94
97
|
configData.department_id === null);
|
|
95
|
-
totalHours =
|
|
98
|
+
totalHours = this.getDurationTime(dataCheckInOut.checkIn, dataCheckInOut.checkOut);
|
|
96
99
|
if (dataAttendanceConfig) {
|
|
97
100
|
const { break_start, break_end, allow_break_time } = dataAttendanceConfig;
|
|
98
|
-
const
|
|
99
|
-
|
|
101
|
+
const isHasBreakTime = Boolean(allow_break_time && break_start && break_end);
|
|
102
|
+
totalHours = isHasBreakTime
|
|
103
|
+
? this.getDurationTime(dataCheckInOut.checkIn, dataCheckInOut.checkOut, break_start, break_end)
|
|
100
104
|
: 0;
|
|
101
|
-
totalHours = (_d = this.getDurationTime(dataCheckInOut.checkIn, dataCheckInOut.checkOut, totalTimeBreak)) === null || _d === void 0 ? void 0 : _d.view;
|
|
102
105
|
}
|
|
103
106
|
}
|
|
104
107
|
return totalHours;
|
|
@@ -107,8 +110,16 @@ let GetActualWorkingHoursService = class GetActualWorkingHoursService {
|
|
|
107
110
|
get(payload) {
|
|
108
111
|
return __awaiter(this, void 0, void 0, function* () {
|
|
109
112
|
try {
|
|
113
|
+
let dataTimeWorking = {
|
|
114
|
+
totalMinutes: 0,
|
|
115
|
+
totalHours: 0,
|
|
116
|
+
view: "",
|
|
117
|
+
};
|
|
110
118
|
const res = yield this.getTotalActualWorkingHours(payload);
|
|
111
|
-
|
|
119
|
+
if (res) {
|
|
120
|
+
dataTimeWorking = res;
|
|
121
|
+
}
|
|
122
|
+
return dataTimeWorking;
|
|
112
123
|
}
|
|
113
124
|
catch (error) {
|
|
114
125
|
console.log(`Không tìm được giờ làm thực tế: ${new Date()}-${error}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-actual-working-hours.service.js","sourceRoot":"","sources":["../../../src/module/hrm-checkin/get-actual-working-hours.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA,2CAA4C;AAC5C,0FAAuF;AAEvF,yDAAgE;AAGzD,IAAM,4BAA4B,GAAlC,MAAM,4BAA4B;IACvC,YACmB,uBAAmD;QAAnD,4BAAuB,GAAvB,uBAAuB,CAA4B;IACnE,CAAC;IAGI,
|
|
1
|
+
{"version":3,"file":"get-actual-working-hours.service.js","sourceRoot":"","sources":["../../../src/module/hrm-checkin/get-actual-working-hours.service.ts"],"names":[],"mappings":"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"}
|