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 102 List<String> queryJobCodesIsExists(@Param("jobCodes") List<String> jobCodes);
103 103  
104 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 284 Date date = new Date();
285 285 // 查询当前人员信息库是否存在对应员工数据
286 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 290 for (String jobCode : jobCodes) {
291 291 if (Objects.isNull(existsSet.get(jobCode))) {
292   - updateFailJobCodes.add(jobCode);
  292 + insertDriverJobCodeList.add(jobCode);
293 293 }
294 294 }
295 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 300 log.info("开始人脸数据更新");
313 301 // 数据更新 更新人脸注册标识 更新基本数据
314 302 for (List<Driver> list : lists) {
315 303 driverMapper.updateSignStatusDriversByJobCodes(list);
316 304 }
  305 + if (insertDrivers.size() > 0) driverMapper.saveDrivers(insertDrivers);
  306 +
317 307 log.info("人脸数据更新完成");
318   - log.info("未成功更新工号:{}", updateFailJobCodes);
319 308 log.info("开始删除注册表中对应工号的数据");
320   - driverMapper.deleteDeviceIdAssociatedJobCode(jobCodes);
  309 + if (jobCodes.size() > 0)
  310 + driverMapper.deleteDeviceIdAssociatedJobCode(jobCodes);
321 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 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 354 @Override
... ...
ruoyi-admin/src/main/java/com/ruoyi/job/DriverJob.java
... ... @@ -181,6 +181,7 @@ public class DriverJob implements InitializingBean {
181 181 }
182 182  
183 183 public Map<String, List<ResponseScheduling>> saveSchedulingToRedis(String getSchedulingInfoUrl, String dateKey) {
  184 + log.info("开始拉取排班:{}", dateKey);
184 185 List<ResponseScheduling> originSchedulingList = RESTTEMPLATE.exchange(
185 186 getSchedulingInfoUrl,
186 187 HttpMethod.GET,
... ... @@ -212,6 +213,7 @@ public class DriverJob implements InitializingBean {
212 213 // DRIVER_SERVICE.saveDriverScheduling(originSchedulingList);
213 214 // 存入redis
214 215 REDIS_CACHE.setCacheMap(DRIVER_SCHEDULING_PRE + dateKey, driverSchedulingMap, 1, TimeUnit.DAYS);
  216 + log.info("拉取排班完毕:{}", dateKey);
215 217 return driverSchedulingMap;
216 218 }
217 219  
... ...
ruoyi-admin/src/main/resources/mapper/driver/DriverMapper.xml
... ... @@ -252,7 +252,7 @@
252 252 <update id="updateSignStatusDriversByJobCodes">
253 253 <foreach collection="list" item="item" separator=";">
254 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 256 where job_code = #{item.jobCode,jdbcType=VARCHAR}
257 257 </foreach>
258 258 </update>
... ... @@ -278,10 +278,10 @@
278 278 </delete>
279 279 <delete id="deleteDeviceIdAssociatedJobCode">
280 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 285 </delete>
286 286  
287 287  
... ... @@ -332,4 +332,5 @@
332 332 device_id = values(device_id)
333 333 </insert>
334 334  
  335 +
335 336 </mapper>
336 337 \ No newline at end of file
... ...