diff --git a/src/main/java/com/weaver/seconddev/attend/controller/AttendanceSchedulingController.java b/src/main/java/com/weaver/seconddev/attend/controller/AttendanceSchedulingController.java index 8987427..fd70f5a 100644 --- a/src/main/java/com/weaver/seconddev/attend/controller/AttendanceSchedulingController.java +++ b/src/main/java/com/weaver/seconddev/attend/controller/AttendanceSchedulingController.java @@ -49,8 +49,8 @@ public class AttendanceSchedulingController { } @PostMapping("/createSummaryApprovalFlow") - private WeaResult createSummaryApprovalFlow(@RequestBody Map params) throws UnsupportedEncodingException { - return attendanceSchedulingService.createSummaryApprovalFlow(params); + private WeaResult createSummaryApprovalFlow(@RequestHeader Map header,@RequestBody Map params) throws UnsupportedEncodingException { + return attendanceSchedulingService.createSummaryApprovalFlow(header,params); } @PostMapping("/updateAttendStatus") diff --git a/src/main/java/com/weaver/seconddev/attend/entity/po/ShiftStatistics.java b/src/main/java/com/weaver/seconddev/attend/entity/po/ShiftStatistics.java new file mode 100644 index 0000000..2735b0f --- /dev/null +++ b/src/main/java/com/weaver/seconddev/attend/entity/po/ShiftStatistics.java @@ -0,0 +1,14 @@ +package com.weaver.seconddev.attend.entity.po; + +import lombok.Data; + +/** + * @author:dxfeng + * @createTime: 2025/06/24 + * @version: 1.0 + */ +@Data +public class ShiftStatistics { + private String id; + private String name; +} diff --git a/src/main/java/com/weaver/seconddev/attend/hook/AttendSecHookEvent.java b/src/main/java/com/weaver/seconddev/attend/hook/AttendSecHookEvent.java new file mode 100644 index 0000000..9f17dbd --- /dev/null +++ b/src/main/java/com/weaver/seconddev/attend/hook/AttendSecHookEvent.java @@ -0,0 +1,22 @@ +package com.weaver.seconddev.attend.hook; + +import com.weaver.loom.api.enums.WeaHookModuleInfo; +import com.weaver.loom.context.annotation.WeaHook; +import com.weaver.loom.context.annotation.WeaHookDef; + +/** + * @author:dxfeng + * @createTime: 2025/06/25 + * @version: 1.0 + */ +@WeaHookDef(moduleInfo = WeaHookModuleInfo.ATTEND) +public class AttendSecHookEvent { + @WeaHook(code = "ATTEND_CUSTOM_HOOK_001",owner = "attend",desc = "ATTEND_CUSTOM_HOOK_001" ,descLabelId = 0L) + private final static String ATTEND_CUSTOM_HOOK_001 = "ATTEND_CUSTOM_HOOK_001"; + @WeaHook(code = "ATTEND_CUSTOM_HOOK_002",owner = "attend",desc = "ATTEND_CUSTOM_HOOK_002" ,descLabelId = 0L) + private final static String ATTEND_CUSTOM_HOOK_002 = "ATTEND_CUSTOM_HOOK_002"; + @WeaHook(code = "ATTEND_CUSTOM_HOOK_003",owner = "attend",desc = "ATTEND_CUSTOM_HOOK_003" ,descLabelId = 0L) + private final static String ATTEND_CUSTOM_HOOK_003 = "ATTEND_CUSTOM_HOOK_003"; + @WeaHook(code = "ATTEND_CUSTOM_HOOK_004",owner = "attend",desc = "ATTEND_CUSTOM_HOOK_004" ,descLabelId = 0L) + private final static String ATTEND_CUSTOM_HOOK_004 = "ATTEND_CUSTOM_HOOK_004"; +} diff --git a/src/main/java/com/weaver/seconddev/attend/mapper/ShiftStatisticMapper.java b/src/main/java/com/weaver/seconddev/attend/mapper/ShiftStatisticMapper.java new file mode 100644 index 0000000..203d843 --- /dev/null +++ b/src/main/java/com/weaver/seconddev/attend/mapper/ShiftStatisticMapper.java @@ -0,0 +1,19 @@ +package com.weaver.seconddev.attend.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.weaver.seconddev.attend.entity.po.ShiftStatistics; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @author:dxfeng + * @createTime: 2025/06/24 + * @version: 1.0 + */ +@Mapper +public interface ShiftStatisticMapper extends BaseMapper { + + ShiftStatistics getShiftStatistics(@Param("tenantKey") String tenantKey,@Param("targetId") Long targetId,@Param("attendDate") String attendDate); + + +} diff --git a/src/main/java/com/weaver/seconddev/attend/service/AttendanceSchedulingService.java b/src/main/java/com/weaver/seconddev/attend/service/AttendanceSchedulingService.java index 39d1588..ab66d23 100644 --- a/src/main/java/com/weaver/seconddev/attend/service/AttendanceSchedulingService.java +++ b/src/main/java/com/weaver/seconddev/attend/service/AttendanceSchedulingService.java @@ -28,7 +28,7 @@ public interface AttendanceSchedulingService { String saveSheet(Map header,Map body); - WeaResult createSummaryApprovalFlow(Map params) throws UnsupportedEncodingException; + WeaResult createSummaryApprovalFlow(Map header,Map params) throws UnsupportedEncodingException; diff --git a/src/main/java/com/weaver/seconddev/attend/service/impl/AttendanceSchedulingServiceImpl.java b/src/main/java/com/weaver/seconddev/attend/service/impl/AttendanceSchedulingServiceImpl.java index 2271d4c..9f32d82 100644 --- a/src/main/java/com/weaver/seconddev/attend/service/impl/AttendanceSchedulingServiceImpl.java +++ b/src/main/java/com/weaver/seconddev/attend/service/impl/AttendanceSchedulingServiceImpl.java @@ -15,6 +15,7 @@ import com.weaver.common.form.dto.data.FormDataDtoParam; import com.weaver.common.form.dto.data.FormDataOptionDto; import com.weaver.common.form.metadata.ModuleSource; import com.weaver.common.hrm.dao.HrmCommonEmployeeDao; +import com.weaver.datasecurity.util.DateUtil; import com.weaver.framework.rpc.annotation.RpcReference; import com.weaver.seconddev.attend.entity.param.SummaryApprovalParam; import com.weaver.seconddev.attend.entity.po.SchedulingStatusPo; @@ -505,11 +506,20 @@ public class AttendanceSchedulingServiceImpl implements AttendanceSchedulingServ } @Override - public WeaResult createSummaryApprovalFlow(Map params) throws UnsupportedEncodingException { + public WeaResult createSummaryApprovalFlow(Map header, Map params) throws UnsupportedEncodingException { String workflowId = params.get("workflowId"); String formId = params.get("formId"); String detailData = params.get("detailData"); String month = params.get("month"); + // 该月份的最后一天 + String firstDayOfMonth = month + "-01"; + String lastDayOfMonth = DateUtil.getLastDayOfMonth(firstDayOfMonth); + + String origin = header.get("origin"); + String realUrl = String.valueOf(params.get("realUrl")); + String url = origin + realUrl; + log.error("url===" + url); + WfcRequestOperateParamDataEntity wfcRequestOperateParamDataEntity = new WfcRequestOperateParamDataEntity(); wfcRequestOperateParamDataEntity.setWorkflowId(Long.parseLong(workflowId)); @@ -573,6 +583,42 @@ public class AttendanceSchedulingServiceImpl implements AttendanceSchedulingServ summaryApprovalParams.add(new SummaryApprovalParam("未签到次数", "wqdcs", 1144950543713460227L, "absenseNumOfMonth")); summaryApprovalParams.add(new SummaryApprovalParam("未签退次数", "wqtcs", 1144950543713460228L, "unSignOutNumOfMonth")); summaryApprovalParams.add(new SummaryApprovalParam("未打卡次数", "wdkcs", 1144950818599755777L, "unSignNum")); + //TODO 班次统计 + + + // 每日统计数据 + List daysApprovalParams = new ArrayList<>(); + daysApprovalParams.add(new SummaryApprovalParam("1", "fhlijij", 1149047126405562370L, "week0")); + daysApprovalParams.add(new SummaryApprovalParam("2", "fm1g5yo", 1149047126405562371L, "week1")); + daysApprovalParams.add(new SummaryApprovalParam("3", "f73udpv", 1149047126405562372L, "week2")); + daysApprovalParams.add(new SummaryApprovalParam("4", "fg0dh8k", 1149047126405562373L, "week3")); + daysApprovalParams.add(new SummaryApprovalParam("5", "fl1tf66", 1149047126405562374L, "week4")); + daysApprovalParams.add(new SummaryApprovalParam("6", "fcmjzu8", 1149047130583089152L, "week5")); + daysApprovalParams.add(new SummaryApprovalParam("7", "f8xfoy5", 1149047130583089153L, "week6")); + daysApprovalParams.add(new SummaryApprovalParam("8", "fsgffnx", 1149047130583089154L, "week7")); + daysApprovalParams.add(new SummaryApprovalParam("9", "f376xdt", 1149047130583089155L, "week8")); + daysApprovalParams.add(new SummaryApprovalParam("10", "fe8big9", 1149047130583089156L, "week9")); + daysApprovalParams.add(new SummaryApprovalParam("11", "fqa461f", 1149047134936776704L, "week10")); + daysApprovalParams.add(new SummaryApprovalParam("12", "frbyuxd", 1149047134936776705L, "week11")); + daysApprovalParams.add(new SummaryApprovalParam("13", "fiomojc", 1149047134936776706L, "week12")); + daysApprovalParams.add(new SummaryApprovalParam("14", "fmtp80q", 1149047134936776707L, "week13")); + daysApprovalParams.add(new SummaryApprovalParam("15", "fuv82an", 1149047134936776708L, "week14")); + daysApprovalParams.add(new SummaryApprovalParam("16", "fowflx1", 1149047199503892481L, "week15")); + daysApprovalParams.add(new SummaryApprovalParam("17", "fvcwt2b", 1149047199503892482L, "week16")); + daysApprovalParams.add(new SummaryApprovalParam("18", "fvfs6t3", 1149047199503892483L, "week17")); + daysApprovalParams.add(new SummaryApprovalParam("19", "f3705rp", 1149047199503892484L, "week18")); + daysApprovalParams.add(new SummaryApprovalParam("20", "fzgrlhe", 1149047199503892485L, "week19")); + daysApprovalParams.add(new SummaryApprovalParam("21", "fnz5psm", 1149047229459611651L, "week20")); + daysApprovalParams.add(new SummaryApprovalParam("22", "f7yp3y9", 1149047229459611652L, "week21")); + daysApprovalParams.add(new SummaryApprovalParam("23", "f5ykr53", 1149047229459611653L, "week22")); + daysApprovalParams.add(new SummaryApprovalParam("24", "fkh3rim", 1149047229459611654L, "week23")); + daysApprovalParams.add(new SummaryApprovalParam("25", "fqqlv6h", 1149047229459611655L, "week24")); + daysApprovalParams.add(new SummaryApprovalParam("26", "flj98m9", 1149047272509947904L, "week25")); + daysApprovalParams.add(new SummaryApprovalParam("27", "fibgwfm", 1149047272509947905L, "week26")); + daysApprovalParams.add(new SummaryApprovalParam("28", "fc2ryya", 1149047272509947906L, "week27")); + daysApprovalParams.add(new SummaryApprovalParam("29", "fwchanv", 1149047272509947907L, "week28")); + daysApprovalParams.add(new SummaryApprovalParam("30", "fvcdy8x", 1149047272509947908L, "week29")); + daysApprovalParams.add(new SummaryApprovalParam("31", "f5c8acn", 1149047276637143040L, "week30")); //表单字段集合 @@ -606,6 +652,59 @@ public class AttendanceSchedulingServiceImpl implements AttendanceSchedulingServ formDataDetailDtos.add(detailDto); } + Long empId = detailRow.getLong("empId"); + // 处理每日统计数据 + // 构建请求参数 + JSONObject jsonObject = new JSONObject(); + jsonObject.put("beginDate", firstDayOfMonth); + jsonObject.put("endDate", lastDayOfMonth); + jsonObject.put("keyword", ""); + jsonObject.put("rules", new ArrayList<>()); + jsonObject.put("current", 1); + jsonObject.put("pageSize", 10); + jsonObject.put("resourceType", Collections.singletonList("1")); + jsonObject.put("searchAndOr", ""); + jsonObject.put("showAddTime", false); + jsonObject.put("shiftGroup", false); + jsonObject.put("abnormalLength", false); + jsonObject.put("otherParams", new JSONObject()); + jsonObject.put("deptScope", new ArrayList<>()); + jsonObject.put("resourceScope", new ArrayList<>()); + jsonObject.put("rulebrowsers", new ArrayList<>()); + Map resourceMap = new HashMap<>(); + resourceMap.put("id", empId.toString()); + jsonObject.put("resource", Collections.singletonList(resourceMap)); + jsonObject.put("hrmStatus", Arrays.asList("1", "2", "3", "4", "5")); + jsonObject.put("empId", empId); + log.error("jsonObject==" + jsonObject); + + String resultStr = HttpRequest.post(url).headerMap(header, true).body(jsonObject.toJSONString()).execute().body(); + JSONObject resultObject = JSONObject.parseObject(resultStr); + log.error("resultObject===" + resultObject); + if (resultObject.getBoolean("status") && 200 == resultObject.getIntValue("code")) { + JSONObject data = resultObject.getJSONObject("data"); + if (data != null) { + JSONArray datas = data.getJSONArray("datas"); + if (datas.size() > 0) { + JSONObject dataObj = datas.getJSONObject(0); + // 遍历每日统计数据 + for (SummaryApprovalParam daysApprovalParam : daysApprovalParams) { + String content = dataObj.getString(daysApprovalParam.getRowKey()); + if (StringUtils.isBlank(content)) { + // 如果为空,置为null + content = ""; + } + FormDataDetailDto detailDto = new FormDataDetailDto(); + detailDto.setFieldId(daysApprovalParam.getFieldId()); + detailDto.setDataIndex((long) rowNum); + detailDto.setContent(content); + formDataDetailDtos.add(detailDto); + } + } + } + } + + log.error("formDataDetailDtos==" + JSON.toJSONString(formDataDetailDtos)); } diff --git a/src/main/java/com/weaver/seconddev/attend/summary/AttendCustomHook001.java b/src/main/java/com/weaver/seconddev/attend/summary/AttendCustomHook001.java new file mode 100644 index 0000000..4be2273 --- /dev/null +++ b/src/main/java/com/weaver/seconddev/attend/summary/AttendCustomHook001.java @@ -0,0 +1,71 @@ +package com.weaver.seconddev.attend.summary; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSON; +import com.google.common.collect.HashBasedTable; +import com.google.common.collect.Table; +import com.weaver.loom.context.annotation.WeaHookReg; +import com.weaver.loom.context.domain.AppInfo; +import com.weaver.loom.context.domain.WeaHookRequest; +import com.weaver.loom.context.domain.WeaHookResponse; +import com.weaver.loom.context.register.RegHookEvent; +import com.weaver.seconddev.attend.entity.po.ShiftStatistics; +import com.weaver.seconddev.attend.mapper.ShiftStatisticMapper; +import com.weaver.workflow.common.entity.org.WeaUser; +import com.weaver.workflow.common.util.OrgUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; + +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.List; +import java.util.Map; + +/** + * @author:dxfeng + * @createTime: 2025/06/24 + * @version: 1.0 + */ +@Slf4j +@WeaHookReg(code = "ATTEND_CUSTOM_HOOK_001", order = 0) +public class AttendCustomHook001 extends RegHookEvent { + + @Autowired + ShiftStatisticMapper shiftStatisticMapper; + + @Override + public WeaHookResponse handle(WeaHookRequest request, WeaHookResponse response, AppInfo appInfo) { + //入参,修改入参并不会影响到埋点的原始数据 + Map params = request.getParams(); + String attendDate = String.valueOf(params.get("attendDate")); + log.error("ATTEND_CUSTOM_HOOK_001获取入参,params==" + JSON.toJSONString(params)); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + Date newD = new Date(attendDate); + String kqdate = sdf.format(newD); + List empIdsList = (List) params.get("empIds"); + Table result = HashBasedTable.create(); + for (int i = 0, n = empIdsList.size(); i < n; i++) { + String id = String.valueOf(empIdsList.get(i)); + WeaUser user = OrgUtil.getUser(Long.parseLong(id)); + String tenantKey = user.getTenantKey(); + log.error("tenantKey==" + tenantKey + ",id==" + id + ",kqdate==" + kqdate + ",attendDate==" + attendDate); + ShiftStatistics shiftStatistics = shiftStatisticMapper.getShiftStatistics(tenantKey, Long.valueOf(id), kqdate); + Double value = 0.0; + log.error("shiftStatistics==" + JSON.toJSONString(shiftStatistics)); + if (null != shiftStatistics && "夜班".equals(shiftStatistics.getName())) { + value = 1.0; + } + log.error("value==" + value); + result.put(Long.parseLong(id), Long.parseLong(id), value); + + } + response.setResult(result); + return response; + } + + @Override + public void rollBack(WeaHookRequest request, WeaHookResponse response, AppInfo appInfo) throws Exception { + log.info("执行事件回滚机制 => {}, {}", DateUtil.now(), appInfo.getAppName()); + } + +} diff --git a/src/main/java/com/weaver/seconddev/attend/summary/AttendCustomHook002.java b/src/main/java/com/weaver/seconddev/attend/summary/AttendCustomHook002.java new file mode 100644 index 0000000..b44a71d --- /dev/null +++ b/src/main/java/com/weaver/seconddev/attend/summary/AttendCustomHook002.java @@ -0,0 +1,52 @@ +package com.weaver.seconddev.attend.summary; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSON; +import com.google.common.collect.HashBasedTable; +import com.google.common.collect.Table; +import com.weaver.loom.context.annotation.WeaHookReg; +import com.weaver.loom.context.domain.AppInfo; +import com.weaver.loom.context.domain.WeaHookRequest; +import com.weaver.loom.context.domain.WeaHookResponse; +import com.weaver.loom.context.register.RegHookEvent; +import com.weaver.seconddev.attend.mapper.ShiftStatisticMapper; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.Map; + +/** + * @author:dxfeng + * @createTime: 2025/06/24 + * @version: 1.0 + */ +@Slf4j +@WeaHookReg(code = "ATTEND_CUSTOM_HOOK_002", order = 0) +@Component() +public class AttendCustomHook002 extends RegHookEvent { + + @Autowired + ShiftStatisticMapper shiftStatisticMapper; + + @Override + public WeaHookResponse handle(WeaHookRequest request, WeaHookResponse response, AppInfo appInfo) throws Exception { + //入参,修改入参并不会影响到埋点的原始数据 + Map params = request.getParams(); + log.error("ATTEND_CUSTOM_HOOK_002获取入参,params==" + JSON.toJSONString(params)); + + Table result = HashBasedTable.create(); + log.error("result111=="+JSON.toJSONString(result)); + + result.put(1L, 1L, 1D); + log.error("result222=="+JSON.toJSONString(result)); + response.setResult(result); + return response; + } + + @Override + public void rollBack(WeaHookRequest request, WeaHookResponse response, AppInfo appInfo) throws Exception { + log.error("执行事件回滚机制 => {}, {}", DateUtil.now(), appInfo.getAppName()); + } + +} diff --git a/src/main/java/com/weaver/seconddev/attend/summary/AttendCustomHook003.java b/src/main/java/com/weaver/seconddev/attend/summary/AttendCustomHook003.java new file mode 100644 index 0000000..dac7a4c --- /dev/null +++ b/src/main/java/com/weaver/seconddev/attend/summary/AttendCustomHook003.java @@ -0,0 +1,70 @@ +package com.weaver.seconddev.attend.summary; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSON; +import com.google.common.collect.HashBasedTable; +import com.google.common.collect.Table; +import com.weaver.loom.context.annotation.WeaHookReg; +import com.weaver.loom.context.domain.AppInfo; +import com.weaver.loom.context.domain.WeaHookRequest; +import com.weaver.loom.context.domain.WeaHookResponse; +import com.weaver.loom.context.register.RegHookEvent; +import com.weaver.seconddev.attend.entity.po.ShiftStatistics; +import com.weaver.seconddev.attend.mapper.ShiftStatisticMapper; +import com.weaver.workflow.common.entity.org.WeaUser; +import com.weaver.workflow.common.util.OrgUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; + +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.List; +import java.util.Map; + +/** + * @author:dxfeng + * @createTime: 2025/06/24 + * @version: 1.0 + */ +@Slf4j +@WeaHookReg(code = "ATTEND_CUSTOM_HOOK_003", order = 0) +public class AttendCustomHook003 extends RegHookEvent { + + @Autowired + ShiftStatisticMapper shiftStatisticMapper; + + @Override + public WeaHookResponse handle(WeaHookRequest request, WeaHookResponse response, AppInfo appInfo) { + //入参,修改入参并不会影响到埋点的原始数据 + Map params = request.getParams(); + String attendDate = String.valueOf(params.get("attendDate")); + log.error("ATTEND_CUSTOM_HOOK_003获取入参,params==" + JSON.toJSONString(params)); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + Date newD = new Date(attendDate); + String kqdate = sdf.format(newD); + List empIdsList = (List) params.get("empIds"); + Table result = HashBasedTable.create(); + for (int i = 0, n = empIdsList.size(); i < n; i++) { + String id = String.valueOf(empIdsList.get(i)); + WeaUser user = OrgUtil.getUser(Long.parseLong(id)); + String tenantKey = user.getTenantKey(); + log.error("tenantKey==" + tenantKey + ",id==" + id + ",kqdate==" + kqdate + ",attendDate==" + attendDate); + ShiftStatistics shiftStatistics = shiftStatisticMapper.getShiftStatistics(tenantKey, Long.valueOf(id), kqdate); + Double value = 0.0; + log.error("shiftStatistics==" + JSON.toJSONString(shiftStatistics)); + if (null != shiftStatistics && "大夜".equals(shiftStatistics.getName())) { + value = 1.0; + } + log.error("value==" + value); + result.put(Long.parseLong(id), Long.parseLong(id), value); + } + response.setResult(result); + return response; + } + + @Override + public void rollBack(WeaHookRequest request, WeaHookResponse response, AppInfo appInfo) throws Exception { + log.info("执行事件回滚机制 => {}, {}", DateUtil.now(), appInfo.getAppName()); + } + +} diff --git a/src/main/java/com/weaver/seconddev/attend/summary/AttendCustomHook004.java b/src/main/java/com/weaver/seconddev/attend/summary/AttendCustomHook004.java new file mode 100644 index 0000000..77c4b49 --- /dev/null +++ b/src/main/java/com/weaver/seconddev/attend/summary/AttendCustomHook004.java @@ -0,0 +1,70 @@ +package com.weaver.seconddev.attend.summary; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSON; +import com.google.common.collect.HashBasedTable; +import com.google.common.collect.Table; +import com.weaver.loom.context.annotation.WeaHookReg; +import com.weaver.loom.context.domain.AppInfo; +import com.weaver.loom.context.domain.WeaHookRequest; +import com.weaver.loom.context.domain.WeaHookResponse; +import com.weaver.loom.context.register.RegHookEvent; +import com.weaver.seconddev.attend.entity.po.ShiftStatistics; +import com.weaver.seconddev.attend.mapper.ShiftStatisticMapper; +import com.weaver.workflow.common.entity.org.WeaUser; +import com.weaver.workflow.common.util.OrgUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; + +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.List; +import java.util.Map; + +/** + * @author:dxfeng + * @createTime: 2025/06/24 + * @version: 1.0 + */ +@Slf4j +@WeaHookReg(code = "ATTEND_CUSTOM_HOOK_004", order = 0) +public class AttendCustomHook004 extends RegHookEvent { + + @Autowired + ShiftStatisticMapper shiftStatisticMapper; + + @Override + public WeaHookResponse handle(WeaHookRequest request, WeaHookResponse response, AppInfo appInfo) { + //入参,修改入参并不会影响到埋点的原始数据 + Map params = request.getParams(); + String attendDate = String.valueOf(params.get("attendDate")); + log.error("ATTEND_CUSTOM_HOOK_004获取入参,params==" + JSON.toJSONString(params)); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + Date newD = new Date(attendDate); + String kqdate = sdf.format(newD); + List empIdsList = (List) params.get("empIds"); + Table result = HashBasedTable.create(); + for (int i = 0, n = empIdsList.size(); i < n; i++) { + String id = String.valueOf(empIdsList.get(i)); + WeaUser user = OrgUtil.getUser(Long.parseLong(id)); + String tenantKey = user.getTenantKey(); + log.error("tenantKey==" + tenantKey + ",id==" + id + ",kqdate==" + kqdate + ",attendDate==" + attendDate); + ShiftStatistics shiftStatistics = shiftStatisticMapper.getShiftStatistics(tenantKey, Long.valueOf(id), kqdate); + Double value = 0.0; + log.error("shiftStatistics==" + JSON.toJSONString(shiftStatistics)); + if (null != shiftStatistics && "中班".equals(shiftStatistics.getName())) { + value = 1.0; + } + log.error("value==" + value); + result.put(Long.parseLong(id), Long.parseLong(id), value); + } + response.setResult(result); + return response; + } + + @Override + public void rollBack(WeaHookRequest request, WeaHookResponse response, AppInfo appInfo) throws Exception { + log.info("执行事件回滚机制 => {}, {}", DateUtil.now(), appInfo.getAppName()); + } + +} diff --git a/src/main/resources/mapper/ShiftStatisticMapper.xml b/src/main/resources/mapper/ShiftStatisticMapper.xml new file mode 100644 index 0000000..bbb20a9 --- /dev/null +++ b/src/main/resources/mapper/ShiftStatisticMapper.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + +