From c10942f0ce07e41f05f9174e1d8d8a825473f188 Mon Sep 17 00:00:00 2001 From: cwchen <1048842385@qq.com> Date: Mon, 28 Jul 2025 15:56:34 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bonus-business/pom.xml | 4 +- .../controller/robot/RobotController.java | 2 + .../bonus/business/mapper/SbdUserMapper.java | 9 +++ .../business/schedule/UserConfigSchedule.java | 3 +- .../service/impl/RobotServiceImpl.java | 4 +- .../service/impl/SbdUserServiceImpl.java | 58 ++++++++++++++++++- .../java/com/bonus/business/vo/RobotVo.java | 4 ++ .../java/com/bonus/business/vo/SbdUserVo.java | 2 + .../src/main/resources/application-druid.yml | 10 ++-- .../src/main/resources/application.yml | 5 +- bonus-business/src/main/resources/logback.xml | 11 +++- .../resources/mapper/robot/RobotMapper.xml | 2 +- .../resources/mapper/robot/SbdUserMapper.xml | 39 ++++++++++++- bonus-framework/pom.xml | 6 +- .../framework/security/filter/JwtUtils.java | 12 ++++ .../filter/SbdUserJwtTokenFilter.java | 6 +- 16 files changed, 156 insertions(+), 21 deletions(-) diff --git a/bonus-business/pom.xml b/bonus-business/pom.xml index 2653112..e165423 100644 --- a/bonus-business/pom.xml +++ b/bonus-business/pom.xml @@ -122,10 +122,10 @@ compile - + org.projectlombok diff --git a/bonus-business/src/main/java/com/bonus/business/controller/robot/RobotController.java b/bonus-business/src/main/java/com/bonus/business/controller/robot/RobotController.java index 3a6365a..1653e85 100644 --- a/bonus-business/src/main/java/com/bonus/business/controller/robot/RobotController.java +++ b/bonus-business/src/main/java/com/bonus/business/controller/robot/RobotController.java @@ -104,6 +104,7 @@ public class RobotController extends BaseController { @PostMapping("sedXml") public AjaxResult getDetails(@RequestBody RobotVo robotVo) { + log.info("机器人puid:{}",robotVo.getPuId()); return service.getDetails(robotVo); } @@ -179,6 +180,7 @@ public class RobotController extends BaseController { */ @PostMapping("delVideo") public AjaxResult delVideo(@RequestBody RobotVideoVo vo) { + log.info("删除录音文件:{}",vo); return service.delVideo(vo); } diff --git a/bonus-business/src/main/java/com/bonus/business/mapper/SbdUserMapper.java b/bonus-business/src/main/java/com/bonus/business/mapper/SbdUserMapper.java index 243aa15..b687250 100644 --- a/bonus-business/src/main/java/com/bonus/business/mapper/SbdUserMapper.java +++ b/bonus-business/src/main/java/com/bonus/business/mapper/SbdUserMapper.java @@ -89,4 +89,13 @@ public interface SbdUserMapper { void addSbdStatus(@Param("id") String uuid); + /** + * 查询库里已存在的数据 + * @return List + * @author cwchen + * @date 2025/7/25 17:55 + */ + List getExistGdWorker(); + + void addOrUpdateSbdUserInfo(@Param("list") List missDataList, @Param("type") int type); } diff --git a/bonus-business/src/main/java/com/bonus/business/schedule/UserConfigSchedule.java b/bonus-business/src/main/java/com/bonus/business/schedule/UserConfigSchedule.java index d8841d4..a256492 100644 --- a/bonus-business/src/main/java/com/bonus/business/schedule/UserConfigSchedule.java +++ b/bonus-business/src/main/java/com/bonus/business/schedule/UserConfigSchedule.java @@ -22,7 +22,8 @@ public class UserConfigSchedule { @Autowired ISbdUserService service; - @Scheduled(cron = "0 0/10 * * * ?") + @Scheduled(cron = "0 0/30 * * * ?") +// @Scheduled(cron = "0 0/2 * * * ?") @PostConstruct public void initUserInfo(){ service.initUserInfo(); diff --git a/bonus-business/src/main/java/com/bonus/business/service/impl/RobotServiceImpl.java b/bonus-business/src/main/java/com/bonus/business/service/impl/RobotServiceImpl.java index 81e2c35..77660e4 100644 --- a/bonus-business/src/main/java/com/bonus/business/service/impl/RobotServiceImpl.java +++ b/bonus-business/src/main/java/com/bonus/business/service/impl/RobotServiceImpl.java @@ -624,7 +624,9 @@ public class RobotServiceImpl implements IRobotService { String delXml= QxUtils.getAddVideo(XxmSendUtils.CONTROLLER,XxmSendUtils.ROBOT_DEL_VIDEO,vo.getId(),null,null); String delRes=QxVideotape.sendXmlPost(token,TVideoConfigUtil.Q2HTTPURL,vo.getPuid(),delXml); Map map= XmlUtils.getSuccess(delRes); - if("200".equals(map.get("code"))){ + log.info("删除结果:{}",map); + if("200".equals(map.get("code")) || 200 ==Integer.parseInt(map.get("code"))){ + log.info("删除成功"); mapper.delVideo(vo); } return AjaxResult.success(map); diff --git a/bonus-business/src/main/java/com/bonus/business/service/impl/SbdUserServiceImpl.java b/bonus-business/src/main/java/com/bonus/business/service/impl/SbdUserServiceImpl.java index 4191a4a..adbe847 100644 --- a/bonus-business/src/main/java/com/bonus/business/service/impl/SbdUserServiceImpl.java +++ b/bonus-business/src/main/java/com/bonus/business/service/impl/SbdUserServiceImpl.java @@ -15,6 +15,7 @@ import com.bonus.common.core.domain.AjaxResult; import com.bonus.common.utils.DateUtils; import com.bonus.common.utils.StringUtils; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; import org.hibernate.validator.internal.util.StringHelper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -24,6 +25,8 @@ import java.io.File; import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; /** * @author 黑子 @@ -185,11 +188,25 @@ public class SbdUserServiceImpl implements ISbdUserService { @Override public void initUserInfo() { try{ - //查询每日作业人员数据 + // 1.查询每日作业人员数据 List list=mapper.getGdWorker(); - if(list!=null && !list.isEmpty()){ - mapper.replaceSbdUserInfo(list); + // 2.查询库里已存在的施工人员数据 + List existList=mapper.getExistGdWorker(); + // 3.新增人员 + List missDataList = findMissingInB(existList, list); + // 4.已存在人员-更新即可 + List updateDataList = findExitInB(existList, list); + if(CollectionUtils.isNotEmpty(missDataList)){ + log.info("新增施工人员数据:{}",missDataList.size()); + mapper.addOrUpdateSbdUserInfo(missDataList,1); } + if(CollectionUtils.isNotEmpty(updateDataList)){ + log.info("更新施工人员数据:{}",updateDataList.size()); + mapper.addOrUpdateSbdUserInfo(updateDataList,2); + } + /*if(list!=null && !list.isEmpty()){ + mapper.replaceSbdUserInfo(list); + }*/ }catch (Exception e){ @@ -197,6 +214,41 @@ public class SbdUserServiceImpl implements ISbdUserService { } } + public static List findMissingInB(List listA, List listB) { + if(CollectionUtils.isEmpty(listB)){ + return new ArrayList<>(); + } + if(CollectionUtils.isEmpty(listA) && CollectionUtils.isNotEmpty(listB)){ + return listB; + } + if(CollectionUtils.isNotEmpty(listA)&& listA.size() == listB.size()){ + return new ArrayList<>(); + } + // 收集 listA 中的所有 id 到 Set 中 + Set aIdCards = listA.stream() + .map(SbdUserVo::getId) + .collect(Collectors.toSet()); + // 筛选出 listB 中 idCard 不在 listA 中的元素 + return listB.stream() + .filter(b -> !aIdCards.contains(b.getId())) + .collect(Collectors.toList()); + } + + public static List findExitInB(List listA, List listB) { + if(CollectionUtils.isEmpty(listB)){ + return new ArrayList<>(); + } + // 提取listA中的所有id + List idCardsInA = listA.stream() + .map(SbdUserVo::getId) + .collect(Collectors.toList()); + + // 过滤listB,只保留id在listA中存在的元素 + return listB.stream() + .filter(fcFaceContrastBean -> idCardsInA.contains(fcFaceContrastBean.getId())) + .collect(Collectors.toList()); + } + /** * 下方人员人脸数据 * @param vo diff --git a/bonus-business/src/main/java/com/bonus/business/vo/RobotVo.java b/bonus-business/src/main/java/com/bonus/business/vo/RobotVo.java index f999a4a..0400f07 100644 --- a/bonus-business/src/main/java/com/bonus/business/vo/RobotVo.java +++ b/bonus-business/src/main/java/com/bonus/business/vo/RobotVo.java @@ -1,5 +1,7 @@ package com.bonus.business.vo; +import com.fasterxml.jackson.annotation.JsonAlias; +import com.fasterxml.jackson.annotation.JsonProperty; import lombok.Data; import java.util.List; @@ -18,6 +20,8 @@ public class RobotVo { /** * 设备编码 */ + @JsonProperty("puId") + @JsonAlias({"puid", "puId"}) private String puId; /** * 设备名称 diff --git a/bonus-business/src/main/java/com/bonus/business/vo/SbdUserVo.java b/bonus-business/src/main/java/com/bonus/business/vo/SbdUserVo.java index 40f3e3d..6ffb01a 100644 --- a/bonus-business/src/main/java/com/bonus/business/vo/SbdUserVo.java +++ b/bonus-business/src/main/java/com/bonus/business/vo/SbdUserVo.java @@ -73,6 +73,8 @@ public class SbdUserVo { */ private String bast64; + private String birthDate; + diff --git a/bonus-business/src/main/resources/application-druid.yml b/bonus-business/src/main/resources/application-druid.yml index 227f555..85494d4 100644 --- a/bonus-business/src/main/resources/application-druid.yml +++ b/bonus-business/src/main/resources/application-druid.yml @@ -21,11 +21,11 @@ spring: # username: root # password: Bonus@admin123! # master: -# url: jdbc:mysql://127.0.0.1:3306/sbd_robot?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 -# username: mroot -# password: bonus@admin123 +# url: jdbc:mysql://127.0.0.1:3306/wunan?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&allowMultiQueries=true +# username: root +# password: ccw1998@yyt1999 master: - url: jdbc:mysql://127.0.0.1:23306/wunan?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 + url: jdbc:mysql://127.0.0.1:23306/wunan?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&allowMultiQueries=true username: root password: youotech123# # 从库数据源 @@ -77,7 +77,7 @@ spring: merge-sql: true wall: config: - multi-statement-allow: true + multi-statement-allow: false #minio: # endpoint: http://127.0.0.1:9001 diff --git a/bonus-business/src/main/resources/application.yml b/bonus-business/src/main/resources/application.yml index 1eb4696..b8506a8 100644 --- a/bonus-business/src/main/resources/application.yml +++ b/bonus-business/src/main/resources/application.yml @@ -34,7 +34,7 @@ server: # 日志配置 logging: level: - com.bonus: debug + com.bonus: info org.springframework: warn # 用户配置 @@ -47,6 +47,8 @@ user: # Spring配置 spring: + jpa: + show-sql: false # 资源信息 messages: # 国际化资源文件路径 @@ -74,6 +76,7 @@ spring: # 数据库索引 database: 7 password: youotech123# +# password: # 密码 # password: Xbzbns@Redis123! # 连接超时时间 diff --git a/bonus-business/src/main/resources/logback.xml b/bonus-business/src/main/resources/logback.xml index 0b57bbb..47f3314 100644 --- a/bonus-business/src/main/resources/logback.xml +++ b/bonus-business/src/main/resources/logback.xml @@ -70,12 +70,19 @@ ${log.pattern} - + - + + + + + + + + diff --git a/bonus-business/src/main/resources/mapper/robot/RobotMapper.xml b/bonus-business/src/main/resources/mapper/robot/RobotMapper.xml index 1aff4ac..1ef6ab3 100644 --- a/bonus-business/src/main/resources/mapper/robot/RobotMapper.xml +++ b/bonus-business/src/main/resources/mapper/robot/RobotMapper.xml @@ -78,7 +78,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - delete from robot_location_point where id=#{id} + delete from robot_video_file where id=#{id} diff --git a/bonus-business/src/main/resources/mapper/robot/SbdUserMapper.xml b/bonus-business/src/main/resources/mapper/robot/SbdUserMapper.xml index f32f0d4..c1df31b 100644 --- a/bonus-business/src/main/resources/mapper/robot/SbdUserMapper.xml +++ b/bonus-business/src/main/resources/mapper/robot/SbdUserMapper.xml @@ -42,6 +42,38 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ) + + + insert into robot_sbd_user( + id, data_source, user_name, sex, image, post, + work_type, mobile, create_time, update_time, del_flag,age,id_card,birth_date + )values + ( + #{item.id}, #{item.dataSource},#{item.userName},#{item.sex}, + #{item.idCard},#{item.post},#{item.workType},#{item.mobile},now(),now(),0,#{item.age},#{item.idCard},#{item.birthDate} + ) + + + + + UPDATE robot_sbd_user + + data_source=#{item.dataSource}, + user_name=#{item.userName}, + sex=#{item.sex}, + image=#{item.idCard}, + post=#{item.post}, + work_type=#{item.workType}, + mobile=#{item.mobile}, + update_time=now(), + age = #{item.age}, + id_card = #{item.idCard}, + birth_date = #{item.birthDate} + + WHERE id = #{item.id} + + + update robot_sbd_user set del_flag=1 where id=#{id} @@ -105,7 +137,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" limit 12 + + \ No newline at end of file diff --git a/bonus-framework/pom.xml b/bonus-framework/pom.xml index 2f979df..0f7d66f 100644 --- a/bonus-framework/pom.xml +++ b/bonus-framework/pom.xml @@ -58,7 +58,11 @@ com.bonus bonus-system - + + com.auth0 + java-jwt + 3.4.0 + \ No newline at end of file diff --git a/bonus-framework/src/main/java/com/bonus/framework/security/filter/JwtUtils.java b/bonus-framework/src/main/java/com/bonus/framework/security/filter/JwtUtils.java index a6e6014..b79b922 100644 --- a/bonus-framework/src/main/java/com/bonus/framework/security/filter/JwtUtils.java +++ b/bonus-framework/src/main/java/com/bonus/framework/security/filter/JwtUtils.java @@ -1,5 +1,8 @@ package com.bonus.framework.security.filter; +import com.auth0.jwt.JWT; +import com.auth0.jwt.exceptions.JWTDecodeException; +import com.auth0.jwt.interfaces.DecodedJWT; import io.jsonwebtoken.Claims; import io.jsonwebtoken.Jwts; import io.jsonwebtoken.SignatureAlgorithm; @@ -154,4 +157,13 @@ public class JwtUtils { return Convert.toStr(claims.get(key), ""); } + + public static String getSessionKey(String token) { + try { + DecodedJWT jwt = JWT.decode(token); + return jwt.getClaim("sessionKey").asString(); + } catch (JWTDecodeException e) { + return null; + } + } } diff --git a/bonus-framework/src/main/java/com/bonus/framework/security/filter/SbdUserJwtTokenFilter.java b/bonus-framework/src/main/java/com/bonus/framework/security/filter/SbdUserJwtTokenFilter.java index 3790554..ed808eb 100644 --- a/bonus-framework/src/main/java/com/bonus/framework/security/filter/SbdUserJwtTokenFilter.java +++ b/bonus-framework/src/main/java/com/bonus/framework/security/filter/SbdUserJwtTokenFilter.java @@ -44,7 +44,7 @@ public class SbdUserJwtTokenFilter implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { String uri=request.getRequestURI(); - System.err.println(uri); +// System.err.println(uri); if (StringUtils.matches(uri, AuthWriteUtils.getWriteUrl())) { return true; } @@ -58,7 +58,9 @@ public class SbdUserJwtTokenFilter implements HandlerInterceptor { } } RestTemplate restTemplate = new RestTemplate(); - String sessionKey = JwtUtils.getValue(token,"seesion"); +// String sessionKey = JwtUtils.getValue(token,"session"); + String sessionKey = JwtUtils.getSessionKey(token); +// System.err.println("sessionKey:" + sessionKey); HttpHeaders headers = new HttpHeaders(); HttpEntity> formEntity = new HttpEntity>(headers); ResponseEntity responseEntity = restTemplate.exchange("http://10.138.55.105:8097/cas/api/validate/sk?sessionKey=" + sessionKey, HttpMethod.GET, formEntity, JSONObject.class);