合并前端

pull/1/head
mfay 4 years ago
commit b89efa1db2
  1. 46
      IOReportSysBE/src/main/java/edu/ncst/ioreport/controller/IORecordsController.java
  2. 10
      IOReportSysBE/src/main/java/edu/ncst/ioreport/mapper/IORecordsMapper.java
  3. 69
      IOReportSysBE/src/main/java/edu/ncst/ioreport/model/IORecords.java
  4. 13
      IOReportSysBE/src/main/java/edu/ncst/ioreport/service/IIORecordService.java
  5. 67
      IOReportSysBE/src/main/java/edu/ncst/ioreport/service/impl/IORecordServiceImpl.java
  6. 21
      IOReportSysBE/src/main/java/edu/ncst/ioreport/vo/QRToken.java
  7. 22
      IOReportSysBE/src/main/java/edu/ncst/ioreport/vo/param/QRecord.java
  8. 60
      IOReportSysBE/src/main/java/edu/ncst/ioreport/vo/result/RecordVO.java

@ -0,0 +1,46 @@
package edu.ncst.ioreport.controller;
import edu.ncst.ioreport.exception.CodeMsg;
import edu.ncst.ioreport.model.IORecords;
import edu.ncst.ioreport.service.IIORecordService;
import edu.ncst.ioreport.utils.ResponseUtils;
import edu.ncst.ioreport.utils.ResultUtils;
import edu.ncst.ioreport.vo.ListResultVO;
import edu.ncst.ioreport.vo.ResultVO;
import edu.ncst.ioreport.vo.param.QRecord;
import edu.ncst.ioreport.vo.param.QUser;
import edu.ncst.ioreport.vo.result.UserInfoVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 报备记录 控制器
*/
@Api(description = "出入校报备记录控制器", tags = "IORecordsController")
@Slf4j
@RestController
@RequestMapping("/api/records")
public class IORecordsController {
@Autowired
private IIORecordService iioRecordService;
@ApiOperation("获取报备记录列表")
@PostMapping("/list")
public ResultVO<List<IORecords>> getIORecordsList(@RequestBody QRecord param){
List<IORecords> ioRecordsList = iioRecordService.getIORecordsList(param);
return ResultUtils.success(ioRecordsList);
}
@ApiOperation("根据记录ID获取记录详细信息")
@GetMapping("/detail")
public ResultVO<IORecords> getIORecordByID(@RequestParam(name = "ID", required = true) Integer ID){
IORecords record = iioRecordService.getIORecordsDetail(ID);
return ResultUtils.success(record);
}
}

@ -0,0 +1,10 @@
package edu.ncst.ioreport.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import edu.ncst.ioreport.model.IORecords;
import edu.ncst.ioreport.model.Resource;
import org.springframework.stereotype.Repository;
@Repository
public interface IORecordsMapper extends BaseMapper<IORecords> {
}

@ -0,0 +1,69 @@
package edu.ncst.ioreport.model;
import com.baomidou.mybatisplus.annotation.*;
import edu.ncst.ioreport.model.BaseEntity;
import edu.ncst.ioreport.vo.QRToken;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
/**
* 角色
*/
@ApiModel(value="IORecords", description="报备记录")
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("IORecords")
public class IORecords {
private static final long serialVersionUID=1L;
@ApiModelProperty(value = "报备记录ID")
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
@ApiModelProperty(value = "教师工号")
private String teacherID;
@ApiModelProperty(value = "报备单类型:1-出;0-入")
private String ioType;
@ApiModelProperty(value = "校外居住地")
private String outerResidence;
@ApiModelProperty(value = "校内居住地")
private String innerResidence;
@ApiModelProperty(value = "申请事由")
private String reason;
@ApiModelProperty(value = "出入校时间")
private Date commitTime;
@ApiModelProperty(value = "院级审核人")
private Integer deptAuditorID;
@ApiModelProperty(value = "院级审核时间")
private Date deptAuditTime;
@ApiModelProperty(value = "校级审核人")
private Integer schoolAuditorID;
@ApiModelProperty(value = "校级审核时间")
private Date schoolAuditTime;
@ApiModelProperty(value = "核验人")
private Integer validatorID;
@ApiModelProperty(value = "核验时间")
private Date validateTime;
@ApiModelProperty(value = "单据状态:0-保存;1-提交待审核;2-院级审核通过;3-校级审核通过;4-核验通过;9-院级审核不通过;8-校级审核不通过;7-核验不通过")
private String status;
@ApiModelProperty(value = "二维码token")
@TableField(exist = false)
private QRToken qrToken;
}

@ -0,0 +1,13 @@
package edu.ncst.ioreport.service;
import edu.ncst.ioreport.model.IORecords;
import edu.ncst.ioreport.vo.param.QRecord;
import java.util.List;
public interface IIORecordService {
List<IORecords> getIORecordsList(QRecord query);
IORecords getIORecordsDetail(Integer ID);
}

@ -0,0 +1,67 @@
package edu.ncst.ioreport.service.impl;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import edu.ncst.ioreport.exception.BusinessException;
import edu.ncst.ioreport.exception.CodeMsg;
import edu.ncst.ioreport.mapper.IORecordsMapper;
import edu.ncst.ioreport.model.IORecords;
import edu.ncst.ioreport.service.IIORecordService;
import edu.ncst.ioreport.vo.QRToken;
import edu.ncst.ioreport.vo.param.QRecord;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Random;
import java.util.concurrent.TimeUnit;
@Service
public class IORecordServiceImpl implements IIORecordService {
@Autowired
private IORecordsMapper recordsMapper;
@Autowired
private RedisTemplate<String, String> stringRedisTemplate;
@Override
public List<IORecords> getIORecordsList(QRecord query) {
IORecords ioRecords = new IORecords();
ioRecords.setTeacherID(query.getTeacherID());
ioRecords.setStatus(query.getStatus());
ioRecords.setIoType(query.getType());
QueryWrapper<IORecords> queryWrapper = new QueryWrapper(ioRecords);
List<IORecords> list = recordsMapper.selectList(queryWrapper);
return list;
}
@Override
public IORecords getIORecordsDetail(Integer ID) {
if(null==ID){
throw new BusinessException(CodeMsg.PARAM_ERROR.fillArgs("记录单ID为空"));
}
IORecords records = recordsMapper.selectById(ID);
if(records.getStatus().compareTo("SCHOOL_PASS")==0){
if(!stringRedisTemplate.hasKey("qrToken_"+ID)){
QRToken qrToken = new QRToken();
qrToken.setRecordID(ID);
stringRedisTemplate.opsForValue().set("qrToken_"+ID,JSON.toJSONString(qrToken),1, TimeUnit.MINUTES);
}
String qrTokenStr = stringRedisTemplate.opsForValue().get("qrToken_"+ID);
QRToken qrToken = JSON.parseObject(qrTokenStr,QRToken.class);
if(qrToken!=null){
Long seconds = stringRedisTemplate.getExpire("qrToken_"+ID);
qrToken.setExpireTime(seconds);
records.setQrToken(qrToken);
}
}
if(null==records){
throw new BusinessException("记录不存在");
}
return records;
}
}

@ -0,0 +1,21 @@
package edu.ncst.ioreport.vo;
import lombok.Data;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
@Data
public class QRToken {
private Integer recordID;
private Date expireTime;
public void setExpireTime(Long time){
Calendar calendar=Calendar.getInstance();
if(time!=null&&time>0){
calendar.add(Calendar.SECOND, time.intValue());
}
this.expireTime = calendar.getTime();
}
}

@ -0,0 +1,22 @@
package edu.ncst.ioreport.vo.param;
import edu.ncst.ioreport.vo.Query;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
@ApiModel(description = "出入报备记录查询对象")
@Data
public class QRecord extends Query {
@ApiModelProperty(value = "教师工号")
private String teacherID;
@ApiModelProperty(value = "记录类型")
private String type;
@ApiModelProperty(value = "记录状态")
private String status;
}

@ -0,0 +1,60 @@
package edu.ncst.ioreport.vo.result;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import edu.ncst.ioreport.model.User;
import edu.ncst.ioreport.vo.QRToken;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
@ApiModel(description = "当前用户信息")
@Data
public class RecordVO {
@ApiModelProperty(value = "报备记录ID")
private Integer ID;
@ApiModelProperty(value = "教师工号")
private User Teacher;
@ApiModelProperty(value = "报备单类型:1-出;0-入")
private Integer IOType;
@ApiModelProperty(value = "校外居住地")
private String OuterResidence;
@ApiModelProperty(value = "校内居住地")
private String InnerResidence;
@ApiModelProperty(value = "申请事由")
private String Reason;
@ApiModelProperty(value = "出入校时间")
private Date CommitTime;
@ApiModelProperty(value = "院级审核人")
private User DeptAuditor;
@ApiModelProperty(value = "院级审核时间")
private Date DeptAuditTime;
@ApiModelProperty(value = "校级审核人")
private User SchoolAuditor;
@ApiModelProperty(value = "校级审核时间")
private Date SchoolAuditTime;
@ApiModelProperty(value = "核验人")
private User Validator;
@ApiModelProperty(value = "核验时间")
private Date ValidateTime;
@ApiModelProperty(value = "单据状态:0-保存;1-提交待审核;2-院级审核通过;3-校级审核通过;4-核验通过;9-院级审核不通过;8-校级审核不通过;7-核验不通过")
private String Status;
@ApiModelProperty(value = "二维码token")
private QRToken qrToken;
}
Loading…
Cancel
Save