From a2c63d09f13e3372e919409080d9374c532c69fb Mon Sep 17 00:00:00 2001 From: andy <1042025947@qq.com> Date: Tue, 9 Dec 2025 11:37:45 +0800 Subject: [PATCH] =?UTF-8?q?1,=20=E5=B7=A5=E8=B5=84=E8=A1=A8=E5=AF=BC?= =?UTF-8?q?=E5=87=BA=E8=B0=83=E6=95=B4=202.=20=E9=A4=90=E9=A5=AE=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E5=A2=9E=E5=8A=A0=E7=BB=B4=E6=8A=A4=E5=8F=8A=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E5=AF=BC=E5=85=A5=203.=20=E8=80=83=E5=8B=A4=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E8=BF=9E=E7=BB=AD3=E5=A4=A9=E6=9C=AA=E6=89=93?= =?UTF-8?q?=E5=8D=A1=E9=80=9A=E7=9F=A5=E4=BA=BA=E8=B5=84=E5=8A=9E=E5=92=8C?= =?UTF-8?q?=E8=B4=9F=E8=B4=A3=E4=BA=BA=204.=20=E6=96=B0=E5=A2=9E=E9=A4=90?= =?UTF-8?q?=E5=8E=85=E8=B4=B9=E7=94=A8=E6=A8=A1=E5=9D=97=205.=20=E6=89=93?= =?UTF-8?q?=E5=BC=80=E8=AE=B0=E5=BD=95=E6=96=B0=E5=A2=9E=E6=89=93=E5=8D=A1?= =?UTF-8?q?=E4=BA=BA=E5=91=98=E7=85=A7=E7=89=87=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/PunchTheClockController.java | 3 +- .../attendance/domain/RzAttendanceDetail.java | 2 + .../vo/RzAttendanceDetailTimeLineVO.java | 5 +- ...unchTheClockStrategyExchangeProcessor.java | 2 +- .../impl/KQDeviceExchangeProcessor.java | 4 +- .../impl/TSDeviceExchangeProcessor.java | 2 +- .../service/PunchTheClockService.java | 4 +- .../service/RzAttendanceDetailService.java | 4 +- .../impl/PunchTheClockServiceImpl.java | 7 +- .../impl/RzAttendanceDetailServiceImpl.java | 11 ++- .../service/impl/RzAttendanceServiceImpl.java | 6 +- .../impl/RzMealExpensesServiceImpl.java | 5 +- .../RzRestaurantDetailController.java | 94 ++++++++++++++++++- .../evo/system/service/ISysStaffService.java | 2 + .../service/impl/SysStaffServiceImpl.java | 5 + .../RzMealExpensesDetailMapper.xml | 6 +- .../restaurant/RzRestaurantDetailMapper.xml | 14 +-- 17 files changed, 144 insertions(+), 32 deletions(-) diff --git a/evo-admin/src/main/java/com/evo/attendance/controller/PunchTheClockController.java b/evo-admin/src/main/java/com/evo/attendance/controller/PunchTheClockController.java index 4fd9f82..3cf8ae8 100644 --- a/evo-admin/src/main/java/com/evo/attendance/controller/PunchTheClockController.java +++ b/evo-admin/src/main/java/com/evo/attendance/controller/PunchTheClockController.java @@ -5,6 +5,7 @@ import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; +import java.io.UnsupportedEncodingException; @RestController @@ -55,7 +56,7 @@ public class PunchTheClockController { * String sn,String userId,String userName,String userType,String cardNumber,String recog_type,String recog_time,String photo,String body_temperature,String confidence,String button */ @RequestMapping("/record/face") - public String face(@RequestBody String json){ + public String face(@RequestBody String json) throws UnsupportedEncodingException { return punchTheClockService.recordFace(json); } diff --git a/evo-admin/src/main/java/com/evo/attendance/domain/RzAttendanceDetail.java b/evo-admin/src/main/java/com/evo/attendance/domain/RzAttendanceDetail.java index 4583b74..5b0e1f2 100644 --- a/evo-admin/src/main/java/com/evo/attendance/domain/RzAttendanceDetail.java +++ b/evo-admin/src/main/java/com/evo/attendance/domain/RzAttendanceDetail.java @@ -51,6 +51,8 @@ public class RzAttendanceDetail extends BaseEntity /** 周六标识 */ private String remark; + private String photo; + /** 删除标记 */ private String delFlag; @Override diff --git a/evo-admin/src/main/java/com/evo/attendance/domain/vo/RzAttendanceDetailTimeLineVO.java b/evo-admin/src/main/java/com/evo/attendance/domain/vo/RzAttendanceDetailTimeLineVO.java index 156acae..d86f672 100644 --- a/evo-admin/src/main/java/com/evo/attendance/domain/vo/RzAttendanceDetailTimeLineVO.java +++ b/evo-admin/src/main/java/com/evo/attendance/domain/vo/RzAttendanceDetailTimeLineVO.java @@ -17,6 +17,8 @@ public class RzAttendanceDetailTimeLineVO { String content; + String photo; + String timestamp; String type; @@ -25,8 +27,9 @@ public class RzAttendanceDetailTimeLineVO { String size = "large"; - public RzAttendanceDetailTimeLineVO(String content, String timestamp, String delFlag) { + public RzAttendanceDetailTimeLineVO(String content, String photo, String timestamp, String delFlag) { this.content = content; + this.photo = photo; this.timestamp = timestamp; TimeLineEnum timeLine = TimeLineEnum.get(content, delFlag); this.type = timeLine.type; diff --git a/evo-admin/src/main/java/com/evo/attendance/processor/PunchTheClockStrategyExchangeProcessor.java b/evo-admin/src/main/java/com/evo/attendance/processor/PunchTheClockStrategyExchangeProcessor.java index 9863a05..2112b4c 100644 --- a/evo-admin/src/main/java/com/evo/attendance/processor/PunchTheClockStrategyExchangeProcessor.java +++ b/evo-admin/src/main/java/com/evo/attendance/processor/PunchTheClockStrategyExchangeProcessor.java @@ -51,7 +51,7 @@ public interface PunchTheClockStrategyExchangeProcessor { * @param rules * @return */ - String exchangeFace(String userId, String sn, Date date, String button, String rules); + String exchangeFace(String userId, String sn, Date date, String button, String rules, String photo); default String checkStaff(SysStaff sysStaff, String sn){ if(sysStaff == null){ diff --git a/evo-admin/src/main/java/com/evo/attendance/processor/impl/KQDeviceExchangeProcessor.java b/evo-admin/src/main/java/com/evo/attendance/processor/impl/KQDeviceExchangeProcessor.java index 98a56c9..68d73e4 100644 --- a/evo-admin/src/main/java/com/evo/attendance/processor/impl/KQDeviceExchangeProcessor.java +++ b/evo-admin/src/main/java/com/evo/attendance/processor/impl/KQDeviceExchangeProcessor.java @@ -113,7 +113,7 @@ public class KQDeviceExchangeProcessor implements PunchTheClockStrategyExchangeP } @Override - public String exchangeFace(String userId, String sn, Date date, String button, String rules) { + public String exchangeFace(String userId, String sn, Date date, String button, String rules, String photo) { //根据ID查询员工信息 ,判断员工是否存在,不存在返回失败 SysStaff sysStaff = sysStaffMapper.selectSysStaffByUserId(Long.valueOf(userId));//打卡记录信息 log.info("日常-打卡信息如下: 员工姓名:{}, 打卡时间:{}. 打卡设备:{}, 打卡情况: {}",sysStaff.getName(), sdfd.format(date), sn, rules); @@ -160,7 +160,7 @@ public class KQDeviceExchangeProcessor implements PunchTheClockStrategyExchangeP // attendanceDetail.setEquipmentCode(sn); // attendanceDetail.setCreateTime(new Date()); //获取员工的工作时长 - RzAttendanceDetail attendanceDetail = rzAttendanceDetailService.addDetail(attendance, rules, sn, date, ""); + RzAttendanceDetail attendanceDetail = rzAttendanceDetailService.addDetail(attendance, rules, sn, date, "", photo); if(attendanceDetail.getId() == null){ return initMessage(1, "打卡失败"); } diff --git a/evo-admin/src/main/java/com/evo/attendance/processor/impl/TSDeviceExchangeProcessor.java b/evo-admin/src/main/java/com/evo/attendance/processor/impl/TSDeviceExchangeProcessor.java index f342ca3..615c5c5 100644 --- a/evo-admin/src/main/java/com/evo/attendance/processor/impl/TSDeviceExchangeProcessor.java +++ b/evo-admin/src/main/java/com/evo/attendance/processor/impl/TSDeviceExchangeProcessor.java @@ -82,7 +82,7 @@ public class TSDeviceExchangeProcessor implements PunchTheClockStrategyExchangeP } @Override - public String exchangeFace(String userId, String sn, Date date, String button, String rules) { + public String exchangeFace(String userId, String sn, Date date, String button, String rules, String photo) { if(!ParamUtils.checkTsDeviceButton(sn, rules)){ return initMessage(1, "无效打卡"); } diff --git a/evo-admin/src/main/java/com/evo/attendance/service/PunchTheClockService.java b/evo-admin/src/main/java/com/evo/attendance/service/PunchTheClockService.java index 293e64b..6d03cfa 100644 --- a/evo-admin/src/main/java/com/evo/attendance/service/PunchTheClockService.java +++ b/evo-admin/src/main/java/com/evo/attendance/service/PunchTheClockService.java @@ -1,5 +1,7 @@ package com.evo.attendance.service; +import java.io.UnsupportedEncodingException; + public interface PunchTheClockService { /** @@ -9,6 +11,6 @@ public interface PunchTheClockService { /** * 用户点击打卡按钮后请求的接口 */ - public String recordFace(String json); + public String recordFace(String json) throws UnsupportedEncodingException; } diff --git a/evo-admin/src/main/java/com/evo/attendance/service/RzAttendanceDetailService.java b/evo-admin/src/main/java/com/evo/attendance/service/RzAttendanceDetailService.java index 903fdd0..d80febf 100644 --- a/evo-admin/src/main/java/com/evo/attendance/service/RzAttendanceDetailService.java +++ b/evo-admin/src/main/java/com/evo/attendance/service/RzAttendanceDetailService.java @@ -21,9 +21,9 @@ import java.util.List; */ public interface RzAttendanceDetailService extends IService { - public RzAttendanceDetail addDetail(RzAttendance attendance, String rules, String sn, Date date, String remark); + public RzAttendanceDetail addDetail(RzAttendance attendance, String rules, String sn, Date date, String remark, String photo); - public RzAttendanceDetail addOrUpdateDetail(String source, RzAttendance attendance, String rules, String sn, Date date, String remark); + public RzAttendanceDetail addOrUpdateDetail(String source, RzAttendance attendance, String rules, String sn, Date date, String remark, String photo); public RzAttendanceDetail selectLastRzAttendanceDetail(Long staffId); diff --git a/evo-admin/src/main/java/com/evo/attendance/service/impl/PunchTheClockServiceImpl.java b/evo-admin/src/main/java/com/evo/attendance/service/impl/PunchTheClockServiceImpl.java index ba1d0e9..a3af302 100644 --- a/evo-admin/src/main/java/com/evo/attendance/service/impl/PunchTheClockServiceImpl.java +++ b/evo-admin/src/main/java/com/evo/attendance/service/impl/PunchTheClockServiceImpl.java @@ -16,6 +16,8 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; +import java.io.UnsupportedEncodingException; +import java.nio.charset.StandardCharsets; import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; @@ -197,10 +199,11 @@ public class PunchTheClockServiceImpl implements PunchTheClockService { */ @Override @Transactional - public String recordFace(String json){ + public String recordFace(String json) throws UnsupportedEncodingException { //解析收到的数据 JSONObject jsonObject = JSONObject.parseObject(json); log.info("获取打卡信息{}", jsonObject.toString()); + String photo = java.net.URLDecoder.decode(jsonObject.getString("photo"), StandardCharsets.UTF_8.name()).replaceAll("\n",""); String userId = jsonObject.getString("user_id"); String sn = jsonObject.getString("sn"); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); @@ -222,7 +225,7 @@ public class PunchTheClockServiceImpl implements PunchTheClockService { Map mqttRequestExchangeProcessorMap = applicationContext.getBeansOfType(PunchTheClockStrategyExchangeProcessor.class); for (PunchTheClockStrategyExchangeProcessor processor : mqttRequestExchangeProcessorMap.values()) { if(processor.accept(sn)){ - return processor.exchangeFace(userId, sn, date, button, rules); + return processor.exchangeFace(userId, sn, date, button, rules, photo); } } return initMessage(1,"打卡失败"); diff --git a/evo-admin/src/main/java/com/evo/attendance/service/impl/RzAttendanceDetailServiceImpl.java b/evo-admin/src/main/java/com/evo/attendance/service/impl/RzAttendanceDetailServiceImpl.java index b3356d3..e20c915 100644 --- a/evo-admin/src/main/java/com/evo/attendance/service/impl/RzAttendanceDetailServiceImpl.java +++ b/evo-admin/src/main/java/com/evo/attendance/service/impl/RzAttendanceDetailServiceImpl.java @@ -57,12 +57,12 @@ public class RzAttendanceDetailServiceImpl extends ServiceImpl selectListByAttendanceId(Long attId) { return list(new LambdaQueryWrapper().eq(RzAttendanceDetail::getAttendanceId, attId)).stream().map(data ->{ - return new RzAttendanceDetailTimeLineVO(data.getButtonType(), DateUtils.parseDateToStr("yyyy-MM-dd HH:mm:ss",data.getDateTime()), data.getDelFlag()); + return new RzAttendanceDetailTimeLineVO(data.getButtonType(), data.getPhoto(), DateUtils.parseDateToStr("yyyy-MM-dd HH:mm:ss",data.getDateTime()), data.getDelFlag()); }).collect(Collectors.toList()); } diff --git a/evo-admin/src/main/java/com/evo/attendance/service/impl/RzAttendanceServiceImpl.java b/evo-admin/src/main/java/com/evo/attendance/service/impl/RzAttendanceServiceImpl.java index 92a9754..8eb6520 100644 --- a/evo-admin/src/main/java/com/evo/attendance/service/impl/RzAttendanceServiceImpl.java +++ b/evo-admin/src/main/java/com/evo/attendance/service/impl/RzAttendanceServiceImpl.java @@ -105,14 +105,14 @@ public class RzAttendanceServiceImpl extends ServiceImpl 0){ - rzAttendanceDetailService.addOrUpdateDetail("fill_in", rzAttendance, rzAttendance.getRules(), sysUser.getTimeClockList().get(0), rzAttendance.getWorkStartTime(),rzAttendance.getRemark()); + rzAttendanceDetailService.addOrUpdateDetail("fill_in", rzAttendance, rzAttendance.getRules(), sysUser.getTimeClockList().get(0), rzAttendance.getWorkStartTime(),rzAttendance.getRemark(), null); } return 1; }else if(rzAttendance.getWorkStartTime() != null && rzAttendance.getWorkEndTime() != null){ - rzAttendanceDetailService.addOrUpdateDetail("fill_in",rzAttendance, rzAttendance.getRules(), sysUser.getTimeClockList().get(0), rzAttendance.getWorkStartTime(),rzAttendance.getRemark()); + rzAttendanceDetailService.addOrUpdateDetail("fill_in",rzAttendance, rzAttendance.getRules(), sysUser.getTimeClockList().get(0), rzAttendance.getWorkStartTime(),rzAttendance.getRemark(), null); if(KqUtils.workOffDutyCard(rzAttendance.getWorkEndTime(), rzAttendance.getRules(), rzAttendance)){ //此处特殊, 使用rules 记录下班卡规则, 但是不持久化 - rzAttendanceDetailService.addOrUpdateDetail("fill_in",rzAttendance, "下班卡", sysUser.getTimeClockList().get(0), rzAttendance.getWorkEndTime(),rzAttendance.getRemark()); + rzAttendanceDetailService.addOrUpdateDetail("fill_in",rzAttendance, "下班卡", sysUser.getTimeClockList().get(0), rzAttendance.getWorkEndTime(),rzAttendance.getRemark(), null); } return 1; } diff --git a/evo-admin/src/main/java/com/evo/personnelMatters/service/impl/RzMealExpensesServiceImpl.java b/evo-admin/src/main/java/com/evo/personnelMatters/service/impl/RzMealExpensesServiceImpl.java index e54b262..51a64c0 100644 --- a/evo-admin/src/main/java/com/evo/personnelMatters/service/impl/RzMealExpensesServiceImpl.java +++ b/evo-admin/src/main/java/com/evo/personnelMatters/service/impl/RzMealExpensesServiceImpl.java @@ -97,7 +97,7 @@ public class RzMealExpensesServiceImpl extends ServiceImpl public SysStaff selectSysStaffByName(String employeeName); + SysStaff queryStaffByIdCard(String idCard); + SysStaff selectByDepId(Long deptId); AjaxResult importSalesCommissions(List attendanceList); diff --git a/evo-admin/src/main/java/com/evo/system/service/impl/SysStaffServiceImpl.java b/evo-admin/src/main/java/com/evo/system/service/impl/SysStaffServiceImpl.java index 0dedc53..39d4ed8 100644 --- a/evo-admin/src/main/java/com/evo/system/service/impl/SysStaffServiceImpl.java +++ b/evo-admin/src/main/java/com/evo/system/service/impl/SysStaffServiceImpl.java @@ -745,6 +745,11 @@ public class SysStaffServiceImpl extends ServiceImpl i return getBaseMapper().selectOne(wrapper); } + @Override + public SysStaff queryStaffByIdCard(String idCard) { + return getBaseMapper().queryysStaffByIdCard(idCard); + } + @Override public SysStaff selectByDepId(Long deptId) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); diff --git a/evo-admin/src/main/resources/mapper/personnelMatters/RzMealExpensesDetailMapper.xml b/evo-admin/src/main/resources/mapper/personnelMatters/RzMealExpensesDetailMapper.xml index 81115d3..5d3b68d 100644 --- a/evo-admin/src/main/resources/mapper/personnelMatters/RzMealExpensesDetailMapper.xml +++ b/evo-admin/src/main/resources/mapper/personnelMatters/RzMealExpensesDetailMapper.xml @@ -19,9 +19,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"