Commit 9d2c2b6e17abf243c7eaa8148035238cfa37bfab
1 parent
33a17c25
fix: 修改人脸更新接口逻辑
Showing
8 changed files
with
43 additions
and
16 deletions
ruoyi-admin/src/main/java/com/ruoyi/common/global/Result.java
| ... | ... | @@ -39,6 +39,15 @@ public class Result<T extends Object> { |
| 39 | 39 | return r; |
| 40 | 40 | } |
| 41 | 41 | |
| 42 | + public static <T> Result<T> OK(ResultCode code,T data){ | |
| 43 | + Result r = new Result(); | |
| 44 | + r.setSuccess(true); | |
| 45 | + r.setCode(code.getCode()); | |
| 46 | + r.setMsg("部分成功"); | |
| 47 | + r.setData(data); | |
| 48 | + return r; | |
| 49 | + } | |
| 50 | + | |
| 42 | 51 | /** 成功静态方法 */ |
| 43 | 52 | public static <T> Result<T> OK(T data) { |
| 44 | 53 | Result r = new Result(); | ... | ... |
ruoyi-admin/src/main/java/com/ruoyi/common/global/ResultCode.java
ruoyi-admin/src/main/java/com/ruoyi/driver/controller/DriverController.java
| ... | ... | @@ -151,11 +151,10 @@ public class DriverController extends BaseController { |
| 151 | 151 | @ApiOperation("人脸数据更新接口") |
| 152 | 152 | public Result<?> updateFaceByJob(HttpServletRequest request, @ApiParam @Validated @RequestBody FaceUpdateReqVo vo) { |
| 153 | 153 | try { |
| 154 | - driverService.updateFaceByJob(request, vo); | |
| 154 | + return driverService.updateFaceByJob(request, vo); | |
| 155 | 155 | } catch (Exception e) { |
| 156 | - return Result.ERROR(ResultCode.CODE_401, e.getMessage()); | |
| 156 | + return Result.ERROR(e.getMessage()); | |
| 157 | 157 | } |
| 158 | - return Result.OK(); | |
| 159 | 158 | } |
| 160 | 159 | |
| 161 | 160 | /** | ... | ... |
ruoyi-admin/src/main/java/com/ruoyi/driver/service/IDriverService.java
| ... | ... | @@ -5,6 +5,7 @@ import java.util.List; |
| 5 | 5 | |
| 6 | 6 | import com.ruoyi.common.core.domain.AjaxResult; |
| 7 | 7 | import com.ruoyi.common.exception.file.InvalidExtensionException; |
| 8 | +import com.ruoyi.common.global.Result; | |
| 8 | 9 | import com.ruoyi.driver.domain.Driver; |
| 9 | 10 | import com.ruoyi.pojo.request.DriverSignInRequestVo; |
| 10 | 11 | import com.ruoyi.pojo.request.FaceUpdateReqVo; |
| ... | ... | @@ -94,7 +95,7 @@ public interface IDriverService |
| 94 | 95 | |
| 95 | 96 | void updateDriverByComputed(); |
| 96 | 97 | |
| 97 | - void updateFaceByJob(HttpServletRequest request, FaceUpdateReqVo vo); | |
| 98 | + Result updateFaceByJob(HttpServletRequest request, FaceUpdateReqVo vo); | |
| 98 | 99 | |
| 99 | 100 | void saveDriverSignInfo(DriverSignInRequestVo vo); |
| 100 | 101 | ... | ... |
ruoyi-admin/src/main/java/com/ruoyi/driver/service/impl/DriverServiceImpl.java
| ... | ... | @@ -12,6 +12,8 @@ import com.ruoyi.common.config.RuoYiConfig; |
| 12 | 12 | import com.ruoyi.common.core.domain.AjaxResult; |
| 13 | 13 | import com.ruoyi.common.core.redis.RedisCache; |
| 14 | 14 | import com.ruoyi.common.exception.file.InvalidExtensionException; |
| 15 | +import com.ruoyi.common.global.Result; | |
| 16 | +import com.ruoyi.common.global.ResultCode; | |
| 15 | 17 | import com.ruoyi.common.utils.file.FileUploadUtils; |
| 16 | 18 | import com.ruoyi.common.utils.file.FileUtils; |
| 17 | 19 | import com.ruoyi.common.utils.file.MimeTypeUtils; |
| ... | ... | @@ -42,6 +44,7 @@ import javax.servlet.http.HttpServletRequest; |
| 42 | 44 | import javax.servlet.http.HttpServletResponse; |
| 43 | 45 | |
| 44 | 46 | import static com.ruoyi.common.ApiProperties.PERSONNEL_API_KEY; |
| 47 | +import static com.ruoyi.common.global.ResultCode.CODE_207; | |
| 45 | 48 | import static com.ruoyi.common.redispre.GlobalRedisPreName.DRIVER_SCHEDULING_PRE; |
| 46 | 49 | |
| 47 | 50 | /** |
| ... | ... | @@ -187,7 +190,6 @@ public class DriverServiceImpl implements IDriverService { |
| 187 | 190 | } |
| 188 | 191 | |
| 189 | 192 | |
| 190 | - | |
| 191 | 193 | @Override |
| 192 | 194 | public AjaxResult getDriverSchedulingAll() { |
| 193 | 195 | return AjaxResult.success(redisCache.getHashKeys(DRIVER_SCHEDULING_PRE + ConstDateUtil.formatDate("yyyyMMdd"))); |
| ... | ... | @@ -273,16 +275,24 @@ public class DriverServiceImpl implements IDriverService { |
| 273 | 275 | } |
| 274 | 276 | |
| 275 | 277 | @Override |
| 276 | - public void updateFaceByJob(HttpServletRequest request, FaceUpdateReqVo vo) { | |
| 278 | + public Result<?> updateFaceByJob(HttpServletRequest request, FaceUpdateReqVo vo) { | |
| 277 | 279 | // 获取校验 |
| 278 | 280 | String header = request.getHeader("X-TOKEN-AUTHORIZATION"); |
| 279 | 281 | if (!PERSONNEL_API_KEY.equals(header)) { |
| 280 | - throw new RuntimeException("X-TOKEN-AUTHORIZATION value error"); | |
| 282 | + return Result.ERROR(ResultCode.CODE_401, "X-TOKEN-AUTHORIZATION value error"); | |
| 281 | 283 | } |
| 282 | 284 | Date date = new Date(); |
| 283 | 285 | // 查询当前人员信息库是否存在对应员工数据 |
| 284 | 286 | List<String> jobCodes = vo.getFaceDataList().stream().map(FaceUpdateReqVo.FaceData::getJobCode).collect(Collectors.toList()); |
| 285 | - List<String> existsJobCodes = driverMapper.queryJobCodesIsExists(jobCodes); | |
| 287 | + Map<String,String> existsSet = driverMapper.queryJobCodesIsExists(jobCodes).stream().collect(Collectors.toMap(item ->item,s->s)); | |
| 288 | + // 更新失败人员工号列表 | |
| 289 | + List<String> updateFailJobCodes = new ArrayList<>(); | |
| 290 | + for (String jobCode : jobCodes) { | |
| 291 | + if (Objects.isNull(existsSet.get(jobCode))) { | |
| 292 | + updateFailJobCodes.add(jobCode); | |
| 293 | + } | |
| 294 | + } | |
| 295 | + jobCodes = new ArrayList<>(existsSet.values()); | |
| 286 | 296 | |
| 287 | 297 | List<Driver> drivers = vo.getFaceDataList().stream().map(item -> { |
| 288 | 298 | Driver driver = new Driver(); |
| ... | ... | @@ -297,7 +307,7 @@ public class DriverServiceImpl implements IDriverService { |
| 297 | 307 | driver.setPersonnelName(item.getName()); |
| 298 | 308 | driver.setUpdateTime(date); |
| 299 | 309 | return driver; |
| 300 | - }).collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(s -> s.getJobCode()))), ArrayList::new)); | |
| 310 | + }).filter(item -> !Objects.isNull(existsSet.get(item.getJobCode()))).collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(s -> s.getJobCode()))), ArrayList::new)); | |
| 301 | 311 | List<List<Driver>> lists = ListUtils.splitList(drivers, 400); |
| 302 | 312 | log.info("开始人脸数据更新"); |
| 303 | 313 | // 数据更新 更新人脸注册标识 更新基本数据 |
| ... | ... | @@ -305,11 +315,14 @@ public class DriverServiceImpl implements IDriverService { |
| 305 | 315 | driverMapper.updateSignStatusDriversByJobCodes(list); |
| 306 | 316 | } |
| 307 | 317 | log.info("人脸数据更新完成"); |
| 308 | - // TODO 删除注册表中对应工号的数据 | |
| 309 | -// List<String> jobCodes = drivers.stream().map(Driver::getJobCode).collect(Collectors.toList()); | |
| 318 | + log.info("未成功更新工号:{}", updateFailJobCodes); | |
| 310 | 319 | log.info("开始删除注册表中对应工号的数据"); |
| 311 | 320 | driverMapper.deleteDeviceIdAssociatedJobCode(jobCodes); |
| 312 | 321 | log.info("删除注册表中对应工号的数据结束"); |
| 322 | + if (updateFailJobCodes.size() != 0) | |
| 323 | + return Result.OK(CODE_207, updateFailJobCodes); | |
| 324 | + else | |
| 325 | + return Result.OK(); | |
| 313 | 326 | } |
| 314 | 327 | |
| 315 | 328 | @Override | ... | ... |
ruoyi-admin/src/main/java/com/ruoyi/pojo/request/FaceUpdateReqVo.java
ruoyi-admin/src/main/resources/application-druid-prd.yml
| ... | ... | @@ -71,11 +71,10 @@ spring: |
| 71 | 71 | devtools: |
| 72 | 72 | restart: |
| 73 | 73 | # 热部署开关 |
| 74 | - enabled: true | |
| 74 | + enabled: false | |
| 75 | 75 | # redis 配置 |
| 76 | 76 | redis: |
| 77 | 77 | # 地址 |
| 78 | - # host: 1.14.107.94 | |
| 79 | 78 | host: 121.41.83.61 |
| 80 | 79 | database: 0 |
| 81 | 80 | password: "guzijian" |
| ... | ... | @@ -112,7 +111,7 @@ ruoyi: |
| 112 | 111 | # 实例演示开关 |
| 113 | 112 | demoEnabled: true |
| 114 | 113 | # 文件路径 示例( Windows配置D:/ruoyi/uploadPath,Linux配置 /home/ruoyi/uploadPath) |
| 115 | - profile: /home/ruoyi/uploadPath | |
| 114 | + profile: D:/ruoyi/uploadPath | |
| 116 | 115 | # 获取ip地址开关 |
| 117 | 116 | addressEnabled: false |
| 118 | 117 | # 验证码类型 math 数字计算 char 字符验证 |
| ... | ... | @@ -120,7 +119,7 @@ ruoyi: |
| 120 | 119 | # 开发环境配置 |
| 121 | 120 | server: |
| 122 | 121 | # 服务器的HTTP端口,默认为8080 |
| 123 | - port: 8100 | |
| 122 | + port: 8080 | |
| 124 | 123 | servlet: |
| 125 | 124 | # 应用的访问路径 |
| 126 | 125 | context-path: / | ... | ... |
ruoyi-admin/src/main/resources/mapper/driver/DriverMapper.xml
| ... | ... | @@ -140,6 +140,7 @@ |
| 140 | 140 | </select> |
| 141 | 141 | <select id="queryJobCodesIsExists" resultType="java.lang.String"> |
| 142 | 142 | select job_code |
| 143 | + from driver | |
| 143 | 144 | where job_code in |
| 144 | 145 | <foreach collection="jobCodes" item="item" open="(" separator="," close=")"> |
| 145 | 146 | #{item} |
| ... | ... | @@ -273,7 +274,7 @@ |
| 273 | 274 | </foreach> |
| 274 | 275 | </delete> |
| 275 | 276 | <delete id="deleteDeviceIdAssociatedJobCode"> |
| 276 | - delete from driver where | |
| 277 | + delete from driver_face_device_id where | |
| 277 | 278 | job_code in |
| 278 | 279 | ( <foreach collection="jobCodes" item="item" separator=","> |
| 279 | 280 | #{item} | ... | ... |