FileControl.java 5.37 KB
package com.sincere.haikangface.control;

import com.sincere.haikangface.CMSServer;
import com.sincere.haikangface.async.SendUserAsync;
import com.sincere.haikangface.bean.Images2Ddevices;
import com.sincere.haikangface.bean.StudentBean;
import com.sincere.haikangface.bean.UploadBean;
import com.sincere.haikangface.dao.UserDao;
import com.sincere.haikangface.utils.FileUtils;
import com.sincere.haikangface.utils.SendRecoderUtils;
import com.sincere.haikangface.xiananDao.SendRecordDao;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.FileOutputStream;
import java.text.SimpleDateFormat;
import java.util.*;

@RestController
@Api("文件管理器")
@RequestMapping("file/*")
public class FileControl {

    @Autowired
    SendUserAsync sendUserAsync;

    @Autowired
    SendRecordDao sendRecordDao;

    @Autowired
    UserDao userDao;

    @Autowired
    CMSServer cmsServer;

    SendRecoderUtils sendRecoderUtils;

    Queue<UploadBean> uploadBeanQueue = new LinkedList<>();

    @RequestMapping(method = RequestMethod.POST, value = "uploadImg")
    public String uploadImg(@RequestParam("file") MultipartFile file, @RequestParam("card") String card
            , @RequestParam("name") String name, @RequestParam("deviceId") String deviceId, @RequestParam("startTime") String startTime,
                            @RequestParam("endTime") String endTime, @RequestParam("validTimeEnabled") int validTimeEnabled, @RequestParam("userType") String userType) {


        try {
            if (!cmsServer.getIsDeviceOnline(deviceId)){
                FileUtils.getInstance().writeLogs("设备不在线:" +deviceId, FileUtils.devices);
                return "0";
            }

            String fileName = file.getOriginalFilename();//文件名
            File outFile = new File(".//imgCom");
            if (!outFile.exists()) outFile.mkdirs();
            File dest = new File(outFile, fileName);
            FileOutputStream fileOutputStream = new FileOutputStream(dest);
            fileOutputStream.write(file.getBytes());
            fileOutputStream.close();
            String filePath = dest.getAbsolutePath();
            FileUtils.getInstance().writeLogs("filePath:" + filePath + " card:" + card + " name:" + name + " deviceId:" + deviceId, FileUtils.sendUserInfo);
            long time = System.currentTimeMillis();
            if (filePath.contains(".jpg")) filePath = filePath.replace(".jpg", ".png");
            if (new File(filePath.trim()).exists()) {
                String targetPath = FileUtils.picPathComp + new File(filePath).getName().replace(".png",".jpg");
                try {
                    int isPiliang = 0;//0:批量,1:单张
                    if (filePath.contains("face17e50")) {//批量发送
                        isPiliang = 0;
                    } else {//单图发送
                        isPiliang = 1;
                    }
                    sendUserAsync.sendStuToHaiKang(filePath, targetPath, Long.parseLong(getCard(card), 16) + "", startTime, endTime, validTimeEnabled, name, deviceId, userType, isPiliang);

                    System.out.println("time:" + (System.currentTimeMillis() - time) / 1000);
                    return "1";
                } catch (Exception e) {
                    e.printStackTrace();
                    return "0";
                }
            } else {

                if (null == sendRecoderUtils) sendRecoderUtils = new SendRecoderUtils();
                sendRecoderUtils.sendFail(sendRecordDao, Long.parseLong(getCard(card), 16) + "", filePath, deviceId, userDao, "文件不存在", userType);
                System.out.println("文件不存在:" + filePath);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

        return "0";
    }


    @RequestMapping(value = "IsDeviceOnline", method = RequestMethod.GET)
    @ApiOperation("判断设备是否在线")
    public String IsDeviceOnline(@RequestParam("deviceId") String deviceId) {
        return cmsServer.getIsDeviceOnline(deviceId) ? "1" : "0";
    }


    @RequestMapping(value = "DeleteCard", method = RequestMethod.GET)
    @ApiOperation("删除人脸")
    public String deleteCard(@RequestParam("deviceId") String deviceId, @RequestParam("card") String card) {
        cmsServer.deleteCard(deviceId, Long.parseLong(getCard(card), 16) + "");
        return "1";
    }

    @RequestMapping(value = "getCard", method = RequestMethod.GET)
    @ApiOperation("获取设备人脸是否存在")
    public String getCard(@RequestParam("deviceId") String deviceId, @RequestParam("card") String card) {
        if (cmsServer.getFace(deviceId, Long.parseLong(getCard(card), 16) + "") )
            return "1";
        return "0";
    }


    private String getCard(String card) {

        if (card.length() == 8) {
            int length = card.length();
            String result = card.substring(length - 2, length) + card.substring(length - 4, length - 2) + card.substring(length - 6, length - 4)
                    + card.substring(length - 8, length - 6);
            return result;

        } else {
            System.out.println("卡号位数不对:" + card);
            return "";
        }

    }
}