DssFaceController.java 4.61 KB
package com.ruoyi.controller.dss;


import cn.hutool.core.convert.Convert;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.domain.driver.NewDriver;
import com.ruoyi.domain.driver.dss.syn.DrivePosEnum;
import com.ruoyi.domain.driver.dss.syn.dto.DssDriveQueryDTO;
import com.ruoyi.domain.driver.dss.syn.res.dto.FaceRegisterDTO;
import com.ruoyi.domain.driver.dss.syn.res.dto.ResDataDriveDTO;
import com.ruoyi.domain.driver.dss.syn.vo.DssDriveVo;
import com.ruoyi.service.driver.NewDriverService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.validation.Valid;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;

/**
 * @author liujun
 * @date 2024年07月11日 14:07
 */

@Slf4j
@RestController
@RequestMapping("/dss/Driver")
@Api(tags = "【蓝斯一期】人脸信息")
public class DssFaceController extends BaseController {

    @Autowired
    private NewDriverService newDriverService;

    @PostMapping("/syn/reqData")
    @ApiOperation("获取数据库人员信息")
    public List<DssDriveVo> queryDriver(@Valid DssDriveQueryDTO dto, BindingResult bindingResult) {
        List<NewDriver> drivers = newDriverService.list();
        return convertDssDriveVo(drivers);
    }

    @ApiOperation("终端同步人脸数据结果上报")
    @PostMapping(value = "/syn/resData")
    public AjaxResult insertDriver(@Valid ResDataDriveDTO dto, BindingResult bindingResult) {
        if (bindingResult.hasErrors()) {
            return AjaxResult.error(bindingResult.getFieldError().getDefaultMessage());
        }
        NewDriver newDriver = convertNewDriver(dto);
        boolean flag = newDriverService.updateClient(newDriver);
        return flag ? AjaxResult.success() : AjaxResult.error();
    }

    @ApiOperation(("人脸注册"))
    @PostMapping(value = "FaceRegister")
    public AjaxResult faceRegister(@Valid FaceRegisterDTO dto, BindingResult bindingResult) {
        if (bindingResult.hasErrors()) {
            return AjaxResult.error(bindingResult.getFieldError().getDefaultMessage());
        }
        NewDriver newDriver = convertFaceRegister(dto);
        boolean flag = newDriverService.faceRegister(newDriver);
        return flag ? AjaxResult.success() : AjaxResult.error();
    }


    private List<DssDriveVo> convertDssDriveVo(List<NewDriver> newDrivers) {
        if (CollectionUtils.isEmpty(newDrivers)) {
            return Collections.emptyList();
        }

        return newDrivers.stream().map(driver -> {
            DssDriveVo vo = new DssDriveVo();
            vo.setStaffId(driver.getJobCode());
            vo.setStaffName(driver.getPersonnelName());
            vo.setIcCardNo(driver.getIcCardCode());
            vo.setFacePhotoPath(driver.getImage());
            vo.setCsn(driver.getIdRfid());
            vo.setFaceFeature(driver.getFaceFeature());
            vo.setBlueTooth(driver.getBlueTooth());
            vo.setSynContent(driver.getSyncontent());

            Integer post = DrivePosEnum.getObjValueOfLabel(driver.getPosts());
            Set<Integer> posts = new HashSet<>();
            posts.add(post);

            vo.setStaffTypeItem(posts);

            return vo;
        }).collect(Collectors.toList());
    }

    private NewDriver convertNewDriver(ResDataDriveDTO dto) {
        NewDriver newDriver = new NewDriver();
        newDriver.setJobCode(dto.getStaffId());
//        newDriver.setPersonnelName(dto.getStaffName());
//        newDriver.setIcCardCode(dto.getIcCardNo());
        newDriver.setImage(dto.getFacePhotoPath());
        newDriver.setFaceFeature(dto.getFaceFeature());
        newDriver.setBlueTooth(dto.getBlueTooth());
        newDriver.setInteger(dto.getInteger());
        newDriver.setSyncontent((dto.getSynContent()));
        newDriver.setCsn(dto.getCsn());

        return null;
    }

    private NewDriver convertFaceRegister(FaceRegisterDTO dto) {
        NewDriver newDriver = new NewDriver();
        newDriver.setIcCardCode(dto.getFaceValue());
        newDriver.setFaceSignIn(1);
        newDriver.setSignInEquipment(dto.getDriverCode());
        newDriver.setImage(dto.getFaceValue());

        return newDriver;
    }


}