DssDriverController.java 3.86 KB
package com.ruoyi.controller.dss;

import cn.hutool.core.convert.Convert;
import cn.hutool.system.UserInfo;
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.login.dto.LoginDriverDTO;
import com.ruoyi.domain.driver.dss.syn.login.vo.LoginDriverVo;
import com.ruoyi.domain.driver.dss.syn.login.vo.LoginUserInfoVo;
import com.ruoyi.service.driver.NewDriverService;
import io.swagger.annotations.Api;
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.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.validation.Valid;
import java.util.*;

/**
 * @author liujun
 * @date 2024年07月11日 16:37
 */
@RestController
@Slf4j
@RequestMapping("/dss/Driver")
@Api(tags = "【蓝斯一期】人员信息")
public class DssDriverController extends BaseController {
    @Autowired
    private NewDriverService newDriverService;

    public AjaxResult login(@Valid LoginDriverDTO loginDriverDTO, BindingResult bindingResult) {
        if (bindingResult.hasErrors()) {
            return AjaxResult.error(bindingResult.getFieldError().getDefaultMessage());
        }
        Integer id = checkFace();
        if (Objects.isNull(id)) {
            return AjaxResult.error("登陆数据错误,无法识别人脸");
        }
        NewDriver newDriver = newDriverService.getById(id);
        return AjaxResult.success(convertNewDriver(newDriver));
    }

    /***
     * 第三方识别人脸
     * @author liujun
     * @date 2024/7/11 17:04
     * @return java.lang.Integer
     */
    private Integer checkFace() {
        List<NewDriver> lists = newDriverService.list(new NewDriver());
        if (CollectionUtils.isEmpty(lists)) {
            return null;
        }
        //TODO 对接第三方

        return 10;
    }

    /***
     * 登陆转换
     * @author liujun
     * @date 2024/7/11 17:26
     * @param newDriver
     * @return com.ruoyi.domain.driver.dss.syn.login.vo.LoginDriverVo
     */
    private LoginDriverVo convertNewDriver(NewDriver newDriver) {
        LoginDriverVo loginDriverVo = new LoginDriverVo();
        loginDriverVo.setDriverCode(newDriver.getIcRfid());
        loginDriverVo.setDriverName(newDriver.getPersonnelName());
        loginDriverVo.setWorkCode(newDriver.getJobCode());
        loginDriverVo.setStaffCode(newDriver.getJobCode());
        loginDriverVo.setStaffType(DrivePosEnum.getObjValueOfLabel(newDriver.getPosts()));
        loginDriverVo.setCropFacePhotoUrl(newDriver.getImage());
        loginDriverVo.setBlueTooth(newDriver.getBlueTooth());

        loginDriverVo.setFaceFeature(newDriver.getFaceFeature());
        loginDriverVo.setSynState(newDriver.getInteger());
        loginDriverVo.setSynContent(newDriver.getSyncontent());
        loginDriverVo.setCsn(newDriver.getCsn());

        //TODO 是否强制做检查
        loginDriverVo.setHealthCheck(0);
        //TODO 当日最后一次登签的签到状态
        loginDriverVo.setSignInType(0);
        //TODO 当日最后一次登签的签退状态
        loginDriverVo.setSignOutType(0);


        Set<Integer> postSets = new HashSet<>();
        loginDriverVo.setStaffTypeItem(postSets);

        LoginUserInfoVo loginUserInfoVo = new LoginUserInfoVo();
        loginUserInfoVo.setStaffId(Convert.toStr(newDriver.getId()));
        loginUserInfoVo.setStaffName(newDriver.getPersonnelName());
        loginUserInfoVo.setIcCardNo(newDriver.getIcRfid());
        loginUserInfoVo.setFacePhotoPath(newDriver.getImage());

        loginDriverVo.setUserInfo(loginUserInfoVo);

        return loginDriverVo;
    }
}