Commit db35f26fbbd95ed690d9e7ec7e9ff65ac1d40ce1

Authored by guzijian
1 parent 3168b6ae

fix: 修改人脸更新接口逻辑

ruoyi-admin/src/main/java/com/ruoyi/driver/mapper/DriverMapper.java
@@ -102,4 +102,5 @@ public interface DriverMapper @@ -102,4 +102,5 @@ public interface DriverMapper
102 List<String> queryJobCodesIsExists(@Param("jobCodes") List<String> jobCodes); 102 List<String> queryJobCodesIsExists(@Param("jobCodes") List<String> jobCodes);
103 103
104 void updateDriverInfoByJobCodes(@Param("drivers") List<Driver> drivers); 104 void updateDriverInfoByJobCodes(@Param("drivers") List<Driver> drivers);
  105 +
105 } 106 }
ruoyi-admin/src/main/java/com/ruoyi/driver/service/impl/DriverServiceImpl.java
@@ -284,45 +284,71 @@ public class DriverServiceImpl implements IDriverService { @@ -284,45 +284,71 @@ public class DriverServiceImpl implements IDriverService {
284 Date date = new Date(); 284 Date date = new Date();
285 // 查询当前人员信息库是否存在对应员工数据 285 // 查询当前人员信息库是否存在对应员工数据
286 List<String> jobCodes = vo.getFaceDataList().stream().map(FaceUpdateReqVo.FaceData::getJobCode).collect(Collectors.toList()); 286 List<String> jobCodes = vo.getFaceDataList().stream().map(FaceUpdateReqVo.FaceData::getJobCode).collect(Collectors.toList());
287 - Map<String,String> existsSet = driverMapper.queryJobCodesIsExists(jobCodes).stream().collect(Collectors.toMap(item ->item,s->s)); 287 + Map<String, String> existsSet = driverMapper.queryJobCodesIsExists(jobCodes).stream().collect(Collectors.toMap(item -> item, s -> s));
288 // 更新失败人员工号列表 288 // 更新失败人员工号列表
289 - List<String> updateFailJobCodes = new ArrayList<>(); 289 + List<String> insertDriverJobCodeList = new ArrayList<>();
290 for (String jobCode : jobCodes) { 290 for (String jobCode : jobCodes) {
291 if (Objects.isNull(existsSet.get(jobCode))) { 291 if (Objects.isNull(existsSet.get(jobCode))) {
292 - updateFailJobCodes.add(jobCode); 292 + insertDriverJobCodeList.add(jobCode);
293 } 293 }
294 } 294 }
295 jobCodes = new ArrayList<>(existsSet.values()); 295 jobCodes = new ArrayList<>(existsSet.values());
296 296
297 - List<Driver> drivers = vo.getFaceDataList().stream().map(item -> {  
298 - Driver driver = new Driver();  
299 - driver.setPosts(item.getPosts());  
300 - driver.setJobCode(item.getJobCode());  
301 - try {  
302 - driver.setImage(getNewImageUrl(item.getJobCode(), item.getImageUrl()));  
303 - } catch (IOException e) {  
304 - log.info(e.getMessage());  
305 - throw new RuntimeException(e);  
306 - }  
307 - driver.setPersonnelName(item.getName());  
308 - driver.setUpdateTime(date);  
309 - return driver;  
310 - }).filter(item -> !Objects.isNull(existsSet.get(item.getJobCode()))).collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(s -> s.getJobCode()))), ArrayList::new));  
311 - List<List<Driver>> lists = ListUtils.splitList(drivers, 400); 297 + List<Driver> updateDrivers = getDriversByJobCode(vo, date, existsSet, true);
  298 + List<Driver> insertDrivers = getDriversByJobCode(vo, date, existsSet, false);
  299 + List<List<Driver>> lists = ListUtils.splitList(updateDrivers, 400);
312 log.info("开始人脸数据更新"); 300 log.info("开始人脸数据更新");
313 // 数据更新 更新人脸注册标识 更新基本数据 301 // 数据更新 更新人脸注册标识 更新基本数据
314 for (List<Driver> list : lists) { 302 for (List<Driver> list : lists) {
315 driverMapper.updateSignStatusDriversByJobCodes(list); 303 driverMapper.updateSignStatusDriversByJobCodes(list);
316 } 304 }
  305 + if (insertDrivers.size() > 0) driverMapper.saveDrivers(insertDrivers);
  306 +
317 log.info("人脸数据更新完成"); 307 log.info("人脸数据更新完成");
318 - log.info("未成功更新工号:{}", updateFailJobCodes);  
319 log.info("开始删除注册表中对应工号的数据"); 308 log.info("开始删除注册表中对应工号的数据");
320 - driverMapper.deleteDeviceIdAssociatedJobCode(jobCodes); 309 + if (jobCodes.size() > 0)
  310 + driverMapper.deleteDeviceIdAssociatedJobCode(jobCodes);
321 log.info("删除注册表中对应工号的数据结束"); 311 log.info("删除注册表中对应工号的数据结束");
322 - if (updateFailJobCodes.size() != 0)  
323 - return Result.OK(CODE_207, updateFailJobCodes); 312 +
  313 + return Result.OK();
  314 + }
  315 +
  316 + private ArrayList<Driver> getDriversByJobCode(FaceUpdateReqVo vo, Date date, Map<String, String> existsSet, Boolean updateFlag) {
  317 + if (updateFlag)
  318 + return vo.getFaceDataList().stream().map(item -> {
  319 + Driver driver = new Driver();
  320 + driver.setPosts(item.getPosts());
  321 + driver.setJobCode(item.getJobCode());
  322 + driver.setFleetName(item.getFleetName());
  323 + driver.setLineName(item.getLineName());
  324 + try {
  325 + driver.setImage(getNewImageUrl(item.getJobCode(), item.getImageUrl()));
  326 + } catch (IOException e) {
  327 + log.info(e.getMessage());
  328 + throw new RuntimeException(e);
  329 + }
  330 + driver.setPersonnelName(item.getName());
  331 + driver.setUpdateTime(date);
  332 + return driver;
  333 + }).filter(item -> !Objects.isNull(existsSet.get(item.getJobCode()))).collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(s -> s.getJobCode()))), ArrayList::new));
324 else 334 else
325 - return Result.OK(); 335 + return vo.getFaceDataList().stream().map(item -> {
  336 + Driver driver = new Driver();
  337 + driver.setPosts(item.getPosts());
  338 + driver.setJobCode(item.getJobCode());
  339 + driver.setFleetName(item.getFleetName());
  340 + driver.setLineName(item.getLineName());
  341 + try {
  342 + driver.setImage(getNewImageUrl(item.getJobCode(), item.getImageUrl()));
  343 + } catch (IOException e) {
  344 + log.info(e.getMessage());
  345 + throw new RuntimeException(e);
  346 + }
  347 + driver.setPersonnelName(item.getName());
  348 + driver.setUpdateTime(date);
  349 + return driver;
  350 + }).filter(item -> Objects.isNull(existsSet.get(item.getJobCode()))).collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(s -> s.getJobCode()))), ArrayList::new));
  351 +
326 } 352 }
327 353
328 @Override 354 @Override
ruoyi-admin/src/main/java/com/ruoyi/job/DriverJob.java
@@ -181,6 +181,7 @@ public class DriverJob implements InitializingBean { @@ -181,6 +181,7 @@ public class DriverJob implements InitializingBean {
181 } 181 }
182 182
183 public Map<String, List<ResponseScheduling>> saveSchedulingToRedis(String getSchedulingInfoUrl, String dateKey) { 183 public Map<String, List<ResponseScheduling>> saveSchedulingToRedis(String getSchedulingInfoUrl, String dateKey) {
  184 + log.info("开始拉取排班:{}", dateKey);
184 List<ResponseScheduling> originSchedulingList = RESTTEMPLATE.exchange( 185 List<ResponseScheduling> originSchedulingList = RESTTEMPLATE.exchange(
185 getSchedulingInfoUrl, 186 getSchedulingInfoUrl,
186 HttpMethod.GET, 187 HttpMethod.GET,
@@ -212,6 +213,7 @@ public class DriverJob implements InitializingBean { @@ -212,6 +213,7 @@ public class DriverJob implements InitializingBean {
212 // DRIVER_SERVICE.saveDriverScheduling(originSchedulingList); 213 // DRIVER_SERVICE.saveDriverScheduling(originSchedulingList);
213 // 存入redis 214 // 存入redis
214 REDIS_CACHE.setCacheMap(DRIVER_SCHEDULING_PRE + dateKey, driverSchedulingMap, 1, TimeUnit.DAYS); 215 REDIS_CACHE.setCacheMap(DRIVER_SCHEDULING_PRE + dateKey, driverSchedulingMap, 1, TimeUnit.DAYS);
  216 + log.info("拉取排班完毕:{}", dateKey);
215 return driverSchedulingMap; 217 return driverSchedulingMap;
216 } 218 }
217 219
ruoyi-admin/src/main/resources/mapper/driver/DriverMapper.xml
@@ -252,7 +252,7 @@ @@ -252,7 +252,7 @@
252 <update id="updateSignStatusDriversByJobCodes"> 252 <update id="updateSignStatusDriversByJobCodes">
253 <foreach collection="list" item="item" separator=";"> 253 <foreach collection="list" item="item" separator=";">
254 update driver set face_sign_in = 1, 254 update driver set face_sign_in = 1,
255 - personnel_name = #{item.personnelName,jdbcType=VARCHAR},posts = #{item.posts,jdbcType=VARCHAR},image = #{item.image,jdbcType=VARCHAR},update_time = #{item.updateTime} 255 + personnel_name = #{item.personnelName,jdbcType=VARCHAR},posts = #{item.posts,jdbcType=VARCHAR},image = #{item.image,jdbcType=VARCHAR},update_time = #{item.updateTime},fleet_name = #{item.fleetName},line_name = #{item.lineName}
256 where job_code = #{item.jobCode,jdbcType=VARCHAR} 256 where job_code = #{item.jobCode,jdbcType=VARCHAR}
257 </foreach> 257 </foreach>
258 </update> 258 </update>
@@ -278,10 +278,10 @@ @@ -278,10 +278,10 @@
278 </delete> 278 </delete>
279 <delete id="deleteDeviceIdAssociatedJobCode"> 279 <delete id="deleteDeviceIdAssociatedJobCode">
280 delete from driver_face_device_id where 280 delete from driver_face_device_id where
281 - job_code in  
282 - ( <foreach collection="jobCodes" item="item" separator=",">  
283 - #{item}  
284 - </foreach> ) 281 + job_code in
  282 + ( <foreach collection="jobCodes" item="item" separator=",">
  283 + #{item}
  284 + </foreach> )
285 </delete> 285 </delete>
286 286
287 287
@@ -332,4 +332,5 @@ @@ -332,4 +332,5 @@
332 device_id = values(device_id) 332 device_id = values(device_id)
333 </insert> 333 </insert>
334 334
  335 +
335 </mapper> 336 </mapper>
336 \ No newline at end of file 337 \ No newline at end of file