DssDriverV2Controller.java 6.84 KB
package com.ruoyi.controller.dss2;

import cn.hutool.core.convert.Convert;
import cn.hutool.crypto.asymmetric.Sign;
import com.ruoyi.common.ConstSignInConstSignInProperties;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.domain.entity.SysDictData;
import com.ruoyi.domain.driver.NewDriver;
import com.ruoyi.domain.dss.sign.vo.DssSignVo;
import com.ruoyi.domain.dss2.driver.dto.DssDetailSignV2DTO;
import com.ruoyi.domain.dss2.driver.dto.DssSignV2DTO;
import com.ruoyi.domain.dss2.driver.vo.DssSignInV2Vo;
import com.ruoyi.driver.service.IDriverService;
import com.ruoyi.in.domain.CalDriverScheduling;
import com.ruoyi.in.domain.SignIn;
import com.ruoyi.in.domain.SignInV1;
import com.ruoyi.in.service.ISignInService;
import com.ruoyi.in.service.SignInServiceV1;
import com.ruoyi.in.service.impl.SignInServiceImpl;
import com.ruoyi.pojo.response.SignInResponseVo;
import com.ruoyi.service.BigViewServiceV1;
import com.ruoyi.service.driver.NewDriverService;
import com.ruoyi.system.service.ISysDictDataService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
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.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.ruoyi.common.core.domain.ResponseResult;

import java.util.Date;
import java.util.Objects;

@RestController
@Slf4j
@RequestMapping("/dss/v2")
@Api(tags = "【蓝斯二期】设备信息")
public class DssDriverV2Controller {

    @Autowired
    private SignInServiceV1 signInServiceV1;
    @Autowired
    private ISysDictDataService sysDictDataService;
    @Autowired
    private BigViewServiceV1 bigViewServiceV1;
    @Autowired
    private ISignInService signInService;
    @Autowired
    private NewDriverService newDriverService;

    @ApiOperation("线下签到")
    @PostMapping("/offline/sign/in/add")
    public ResponseResult<DssSignVo> addSign(@RequestBody DssSignV2DTO signV2DTO, BindingResult bindingResult) {
        if (bindingResult.hasErrors()) {
            return ResponseResult.error(bindingResult.getFieldError().getDefaultMessage());
        }

        NewDriver driver = newDriverService.getOne(signV2DTO.getAuditJobCode());
        if (Objects.isNull(driver)) {
            return ResponseResult.error("无法查找到审核人员");
        }


        SignIn signIn = convertSignIn(signV2DTO);
        signIn.setCreateBy(Convert.toStr(driver.getId()));
        AjaxResult ajaxResult = signInServiceV1.addSignInOffice(signIn);

        if (Objects.nonNull(ajaxResult) && ajaxResult.isSuccess()) {
            SysDictData sysDictData = new SysDictData();
            sysDictData.setDictType("drinking");
            SysDictData dictData = sysDictDataService.getOne(sysDictData);

            SignInV1 signInV1 = (SignInV1) ajaxResult.get(AjaxResult.DATA_TAG);

            SignInResponseVo vo = new SignInResponseVo();
            if (Objects.nonNull(signInV1)) {
                BeanUtils.copyProperties(signInV1, vo);

                vo.setDeviceId(signIn.getDeviceId());

                vo.setName(signInV1.getDriver().getPersonnelName());
                vo.setPosts(signInV1.getPosts());
                ResponseResult<DssSignVo> responseResult = ResponseResult.success(convertSignInVo(vo, signV2DTO, dictData, signInV1));
                responseResult.setMsg(Convert.toStr(ajaxResult.get(AjaxResult.MSG_TAG)));
                return responseResult;
            }
        }

        return ResponseResult.error(Convert.toInt(ajaxResult.get(AjaxResult.CODE_TAG)), Convert.toStr(ajaxResult.get(AjaxResult.MSG_TAG)));
    }

    @ApiOperation("签到详情")
    @PostMapping("/offline/sign/in")
    public ResponseResult<DssSignInV2Vo> detailSignIn(@RequestBody DssDetailSignV2DTO signV2DTO, BindingResult bindingResult) {
        if (bindingResult.hasErrors()) {
            return ResponseResult.error(bindingResult.getFieldError().getDefaultMessage());
        }

        Date date = signV2DTO.getDate();
        if (Objects.isNull(date)) {
            date = new Date();
        }

        CalDriverScheduling calDriverScheduling = signInServiceV1.findSchedulingByDateTime(signV2DTO.getJobCode(), date, 1);
        if (Objects.isNull(calDriverScheduling) || Objects.isNull(calDriverScheduling.getDriverScheduling())
                || Objects.isNull(calDriverScheduling.getDriverScheduling().getSignInId())) {
            return ResponseResult.success();
        }
        SignIn signIn = signInService.getById(calDriverScheduling.getDriverScheduling().getSignInId());
        if (Objects.isNull(signIn)) {
            return ResponseResult.success();
        }
        DssSignInV2Vo vo = convertDssSignInV2Vo(signIn);
        return ResponseResult.success(vo);
    }


    private SignIn convertSignIn(DssSignV2DTO dto) {
        SignIn signIn = new SignIn();
//        signIn.setImage();
        signIn.setJobCode(dto.getStaffCode());

        signIn.setCreateTime(dto.getSignTime());
        signIn.setType(1);

        if (Objects.nonNull(dto.getTestValue())) {
            signIn.setAlcoholFlag(ConstSignInConstSignInProperties.ALCOHOL_FLAG_YES);
            signIn.setAlcoholIntake(Convert.toBigDecimal(dto.getTestValue()));
        }
        signIn.setSingnIn("104");
        signIn.setImage(dto.getImageContent());

//        SysDictData sysDictData = querySystData(null,"drunkenness");
//        if(Objects.nonNull(sysDictData)){
//
//        }

        return signIn;
    }


    private DssSignVo convertSignInVo(SignInResponseVo responseVo, DssSignV2DTO dto, SysDictData dictData, SignInV1 signInV1) {
        DssSignVo vo = new DssSignVo();
        vo.setTestId(Convert.toStr(responseVo.getId()));


        Integer testResult = bigViewServiceV1.isSignStatusZoneEnum(signInV1.getSignIn()) ? 2 : 0;
        vo.setTestResult(testResult);
        if (Objects.isNull(dictData) || Objects.equals(testResult, 0) && dto.getTestValue() > Convert.toLong(dictData.getDictValue())) {
            vo.setTestResult(1);
        }

        Integer result = Objects.equals(1, signInV1.getSignIn().getStatus()) ? 0 : 1;
        vo.setResult(result);

        return vo;
    }

    private DssSignInV2Vo convertDssSignInV2Vo(SignIn signIn) {
        DssSignInV2Vo vo = new DssSignInV2Vo();
        vo.setId(Convert.toInt(signIn.getId()));
        vo.setStatus(signIn.getStatus());
        vo.setType(signIn.getType());
        vo.setExType(signIn.getExType());
        vo.setAlcoholIntake(Convert.toStr(signIn.getAlcoholIntake()));
        vo.setAlcoholFlag(signIn.getAlcoholFlag());
        vo.setJobCode(signIn.getJobCode());
        vo.setSignInDate(signIn.getCreateTime());

        return vo;
    }
}