From 22249b54b93641d97900fbe6ce40290931730a6a Mon Sep 17 00:00:00 2001 From: zhangye <654600784@qq.com> Date: Mon, 23 May 2022 09:39:45 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9ocr=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ccsens/delivery/api/HealthController.java | 6 +- .../ccsens/delivery/bean/dto/HealthDto.java | 11 +++- .../ccsens/delivery/bean/po/RecordHealth.java | 11 ++++ .../delivery/bean/po/RecordHealthExample.java | 60 +++++++++++++++++++ .../com/ccsens/delivery/bean/po/StuOrder.java | 11 ++++ .../delivery/bean/po/StuOrderExample.java | 60 +++++++++++++++++++ .../com/ccsens/delivery/bean/vo/HealthVo.java | 21 +++++++ .../delivery/service/HealthService.java | 29 ++++++++- .../delivery/service/IHealthService.java | 2 +- .../delivery/service/StudentService.java | 1 + src/main/resources/application-prod.yml | 6 +- src/main/resources/application.yml | 2 +- .../resources/mapper_dao/FormRecordDao.xml | 8 +-- .../resources/mapper_dao/RecordHealthDao.xml | 2 +- .../resources/mapper_dao/RecordTrailsDao.xml | 6 +- .../mapper_raw/RecordHealthMapper.xml | 33 +++++++--- .../resources/mapper_raw/StuOrderMapper.xml | 29 ++++++--- src/main/resources/mbg.xml | 4 +- 18 files changed, 263 insertions(+), 39 deletions(-) diff --git a/src/main/java/com/ccsens/delivery/api/HealthController.java b/src/main/java/com/ccsens/delivery/api/HealthController.java index 1cb4216..7957d06 100644 --- a/src/main/java/com/ccsens/delivery/api/HealthController.java +++ b/src/main/java/com/ccsens/delivery/api/HealthController.java @@ -60,10 +60,10 @@ public class HealthController { @ApiImplicitParams({ }) @RequestMapping(value = "/ocr", method = RequestMethod.POST,produces = {"application/json;charset=UTF-8"}) - public JsonResponse ocrHealthConclusion(@ApiParam @RequestBody @Validated List params) throws Exception { + public JsonResponse> ocrHealthConclusion(@ApiParam @RequestBody @Validated List params) throws Exception { log.info("识别后上传健康相关信息:{}",params); - healthService.ocrHealthConclusion(params); - return JsonResponse.newInstance().ok(); + List ocrQueryHealthVoList = healthService.ocrHealthConclusion(params); + return JsonResponse.newInstance().ok(ocrQueryHealthVoList); } @MustLogin diff --git a/src/main/java/com/ccsens/delivery/bean/dto/HealthDto.java b/src/main/java/com/ccsens/delivery/bean/dto/HealthDto.java index dae1331..8e1a694 100644 --- a/src/main/java/com/ccsens/delivery/bean/dto/HealthDto.java +++ b/src/main/java/com/ccsens/delivery/bean/dto/HealthDto.java @@ -23,7 +23,7 @@ public class HealthDto { @Data @ApiModel("请求-提交健康相关的表单") public static class HealthForm{ - @NotNull(message = "表单id不能为空") + @NotNull(message = "id不能为空") @ApiModelProperty("表单页面id") private Long id; @ApiModelProperty("类型 0健康码、1行程码、2核酸检测、3抗原检测") @@ -35,11 +35,14 @@ public class HealthDto { @Data @ApiModel("请求-查询某天提交的健康信息") public static class HealthByDay{ + @NotNull(message = "请选择图片类型") @ApiModelProperty("类型 0健康码、1行程码、2核酸检测、3抗原检测") - private byte type; + private Byte type; + @NotNull(message = "请选择起始时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @ApiModelProperty("日期 yyyy-MM-dd HH:mm:ss") private Date startTime; + @NotNull(message = "请选择截止时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @ApiModelProperty("日期 yyyy-MM-dd HH:mm:ss") private Date endTime; @@ -50,10 +53,12 @@ public class HealthDto { @Data @ApiModel("请求-识别后的健康信息") public static class HealthConclusion{ + @NotNull(message = "id不能为空") @ApiModelProperty("提交记录id") private Long id; + @NotNull(message = "请选择图片类型") @ApiModelProperty("类型 0健康码、1行程码、2核酸检测、3抗原检测") - private byte type; + private Byte type; @ApiModelProperty("健康码颜色 0绿色 1黄色 2红色") private byte colour; @ApiModelProperty("行程码是否带星 0否 1是") diff --git a/src/main/java/com/ccsens/delivery/bean/po/RecordHealth.java b/src/main/java/com/ccsens/delivery/bean/po/RecordHealth.java index 7451fe1..904f457 100644 --- a/src/main/java/com/ccsens/delivery/bean/po/RecordHealth.java +++ b/src/main/java/com/ccsens/delivery/bean/po/RecordHealth.java @@ -12,6 +12,8 @@ public class RecordHealth implements Serializable { private Long fileId; + private Byte ocr; + private Byte colour; private Byte star; @@ -62,6 +64,14 @@ public class RecordHealth implements Serializable { this.fileId = fileId; } + public Byte getOcr() { + return ocr; + } + + public void setOcr(Byte ocr) { + this.ocr = ocr; + } + public Byte getColour() { return colour; } @@ -136,6 +146,7 @@ public class RecordHealth implements Serializable { sb.append(", userId=").append(userId); sb.append(", type=").append(type); sb.append(", fileId=").append(fileId); + sb.append(", ocr=").append(ocr); sb.append(", colour=").append(colour); sb.append(", star=").append(star); sb.append(", positive=").append(positive); diff --git a/src/main/java/com/ccsens/delivery/bean/po/RecordHealthExample.java b/src/main/java/com/ccsens/delivery/bean/po/RecordHealthExample.java index 12f0ce9..d02ac7c 100644 --- a/src/main/java/com/ccsens/delivery/bean/po/RecordHealthExample.java +++ b/src/main/java/com/ccsens/delivery/bean/po/RecordHealthExample.java @@ -345,6 +345,66 @@ public class RecordHealthExample { return (Criteria) this; } + public Criteria andOcrIsNull() { + addCriterion("ocr is null"); + return (Criteria) this; + } + + public Criteria andOcrIsNotNull() { + addCriterion("ocr is not null"); + return (Criteria) this; + } + + public Criteria andOcrEqualTo(Byte value) { + addCriterion("ocr =", value, "ocr"); + return (Criteria) this; + } + + public Criteria andOcrNotEqualTo(Byte value) { + addCriterion("ocr <>", value, "ocr"); + return (Criteria) this; + } + + public Criteria andOcrGreaterThan(Byte value) { + addCriterion("ocr >", value, "ocr"); + return (Criteria) this; + } + + public Criteria andOcrGreaterThanOrEqualTo(Byte value) { + addCriterion("ocr >=", value, "ocr"); + return (Criteria) this; + } + + public Criteria andOcrLessThan(Byte value) { + addCriterion("ocr <", value, "ocr"); + return (Criteria) this; + } + + public Criteria andOcrLessThanOrEqualTo(Byte value) { + addCriterion("ocr <=", value, "ocr"); + return (Criteria) this; + } + + public Criteria andOcrIn(List values) { + addCriterion("ocr in", values, "ocr"); + return (Criteria) this; + } + + public Criteria andOcrNotIn(List values) { + addCriterion("ocr not in", values, "ocr"); + return (Criteria) this; + } + + public Criteria andOcrBetween(Byte value1, Byte value2) { + addCriterion("ocr between", value1, value2, "ocr"); + return (Criteria) this; + } + + public Criteria andOcrNotBetween(Byte value1, Byte value2) { + addCriterion("ocr not between", value1, value2, "ocr"); + return (Criteria) this; + } + public Criteria andColourIsNull() { addCriterion("colour is null"); return (Criteria) this; diff --git a/src/main/java/com/ccsens/delivery/bean/po/StuOrder.java b/src/main/java/com/ccsens/delivery/bean/po/StuOrder.java index 7e88884..a29c6fe 100644 --- a/src/main/java/com/ccsens/delivery/bean/po/StuOrder.java +++ b/src/main/java/com/ccsens/delivery/bean/po/StuOrder.java @@ -46,6 +46,8 @@ public class StuOrder implements Serializable { private String dormitoryName; + private Long submitTime; + private static final long serialVersionUID = 1L; public Long getId() { @@ -216,6 +218,14 @@ public class StuOrder implements Serializable { this.dormitoryName = dormitoryName == null ? null : dormitoryName.trim(); } + public Long getSubmitTime() { + return submitTime; + } + + public void setSubmitTime(Long submitTime) { + this.submitTime = submitTime; + } + @Override public String toString() { StringBuilder sb = new StringBuilder(); @@ -243,6 +253,7 @@ public class StuOrder implements Serializable { sb.append(", recStatus=").append(recStatus); sb.append(", collegeName=").append(collegeName); sb.append(", dormitoryName=").append(dormitoryName); + sb.append(", submitTime=").append(submitTime); sb.append("]"); return sb.toString(); } diff --git a/src/main/java/com/ccsens/delivery/bean/po/StuOrderExample.java b/src/main/java/com/ccsens/delivery/bean/po/StuOrderExample.java index 3cd7cfc..a9b514d 100644 --- a/src/main/java/com/ccsens/delivery/bean/po/StuOrderExample.java +++ b/src/main/java/com/ccsens/delivery/bean/po/StuOrderExample.java @@ -1454,6 +1454,66 @@ public class StuOrderExample { addCriterion("dormitory_name not between", value1, value2, "dormitoryName"); return (Criteria) this; } + + public Criteria andSubmitTimeIsNull() { + addCriterion("submit_time is null"); + return (Criteria) this; + } + + public Criteria andSubmitTimeIsNotNull() { + addCriterion("submit_time is not null"); + return (Criteria) this; + } + + public Criteria andSubmitTimeEqualTo(Long value) { + addCriterion("submit_time =", value, "submitTime"); + return (Criteria) this; + } + + public Criteria andSubmitTimeNotEqualTo(Long value) { + addCriterion("submit_time <>", value, "submitTime"); + return (Criteria) this; + } + + public Criteria andSubmitTimeGreaterThan(Long value) { + addCriterion("submit_time >", value, "submitTime"); + return (Criteria) this; + } + + public Criteria andSubmitTimeGreaterThanOrEqualTo(Long value) { + addCriterion("submit_time >=", value, "submitTime"); + return (Criteria) this; + } + + public Criteria andSubmitTimeLessThan(Long value) { + addCriterion("submit_time <", value, "submitTime"); + return (Criteria) this; + } + + public Criteria andSubmitTimeLessThanOrEqualTo(Long value) { + addCriterion("submit_time <=", value, "submitTime"); + return (Criteria) this; + } + + public Criteria andSubmitTimeIn(List values) { + addCriterion("submit_time in", values, "submitTime"); + return (Criteria) this; + } + + public Criteria andSubmitTimeNotIn(List values) { + addCriterion("submit_time not in", values, "submitTime"); + return (Criteria) this; + } + + public Criteria andSubmitTimeBetween(Long value1, Long value2) { + addCriterion("submit_time between", value1, value2, "submitTime"); + return (Criteria) this; + } + + public Criteria andSubmitTimeNotBetween(Long value1, Long value2) { + addCriterion("submit_time not between", value1, value2, "submitTime"); + return (Criteria) this; + } } public static class Criteria extends GeneratedCriteria { diff --git a/src/main/java/com/ccsens/delivery/bean/vo/HealthVo.java b/src/main/java/com/ccsens/delivery/bean/vo/HealthVo.java index 54db887..7a7346b 100644 --- a/src/main/java/com/ccsens/delivery/bean/vo/HealthVo.java +++ b/src/main/java/com/ccsens/delivery/bean/vo/HealthVo.java @@ -89,4 +89,25 @@ public class HealthVo { } } + + + @Data + @ApiModel("返回-健康相关信息列表") + public static class OcrQueryHealthVo{ + @ApiModelProperty("记录id") + private Long id; + @ApiModelProperty("是否已识别 0否 1是") + private Byte ocr; + @ApiModelProperty("图片路径") + private String imgPath; + @ApiModelProperty("提交状态 0未上报 1已上报 ") + private Byte status; + @ApiModelProperty("颜色 0绿色 1黄色 2红色") + private Byte colour; + @ApiModelProperty("是否带星 0否 1是") + private Byte star; + @ApiModelProperty("是否阳性 0阴性 1阳性") + private Byte positive; + + } } diff --git a/src/main/java/com/ccsens/delivery/service/HealthService.java b/src/main/java/com/ccsens/delivery/service/HealthService.java index d8ff4af..db2a25f 100644 --- a/src/main/java/com/ccsens/delivery/service/HealthService.java +++ b/src/main/java/com/ccsens/delivery/service/HealthService.java @@ -3,6 +3,7 @@ package com.ccsens.delivery.service; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.ObjectUtil; import com.ccsens.delivery.bean.dto.HealthDto; +import com.ccsens.delivery.bean.po.FileCommit; import com.ccsens.delivery.bean.po.RecordHealth; import com.ccsens.delivery.bean.po.RecordHealthExample; import com.ccsens.delivery.bean.po.SysMaterial; @@ -10,6 +11,7 @@ import com.ccsens.delivery.bean.vo.HealthVo; import com.ccsens.delivery.bean.vo.MaterialVo; import com.ccsens.delivery.persist.dao.FormRecordDao; import com.ccsens.delivery.persist.dao.RecordHealthDao; +import com.ccsens.delivery.persist.mapper.FileCommitMapper; import com.ccsens.delivery.persist.mapper.RecordHealthMapper; import com.ccsens.delivery.util.DeliveryCodeError; import com.ccsens.delivery.util.DeliveryConstant; @@ -23,6 +25,7 @@ import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; +import java.util.ArrayList; import java.util.List; /** @@ -41,6 +44,8 @@ public class HealthService implements IHealthService { private RecordHealthDao recordHealthDao; @Resource private FormRecordDao formRecordDao; + @Resource + private FileCommitMapper fileCommitMapper; @Override public void submitHealth(HealthDto.HealthForm param, Long userId) throws InterruptedException { @@ -71,24 +76,44 @@ public class HealthService implements IHealthService { } @Override - public void ocrHealthConclusion(List params) { + public List ocrHealthConclusion(List params) { + List ocrQueryHealthVoList = new ArrayList<>(); if(CollectionUtil.isNotEmpty(params)){ params.forEach(param -> { + HealthVo.OcrQueryHealthVo ocrQueryHealthVo = new HealthVo.OcrQueryHealthVo(); + ocrQueryHealthVo.setId(param.getId()); + RecordHealth recordHealth = recordHealthMapper.selectByPrimaryKey(param.getId()); - if(ObjectUtil.isNotNull(recordHealth) && recordHealth.getType() == param.getType()){ + if(ObjectUtil.isNotNull(recordHealth) && recordHealth.getType().equals(param.getType())){ recordHealth.setColour(param.getColour()); recordHealth.setStar(param.getStar()); recordHealth.setPositive(param.getPositive()); + recordHealth.setOcr((byte) 1); recordHealthMapper.updateByPrimaryKeySelective(recordHealth); + + ocrQueryHealthVo.setOcr(recordHealth.getOcr()); + ocrQueryHealthVo.setColour(recordHealth.getColour()); + ocrQueryHealthVo.setStar(recordHealth.getStar()); + ocrQueryHealthVo.setPositive(recordHealth.getPositive()); + FileCommit fileCommit = fileCommitMapper.selectByPrimaryKey(recordHealth.getFileId()); + if(ObjectUtil.isNotNull(fileCommit)){ + ocrQueryHealthVo.setImgPath(fileCommit.getVisitPath()); + } } + ocrQueryHealthVoList.add(ocrQueryHealthVo); }); } + return ocrQueryHealthVoList; } @Override public PageInfo backQueryHealth(HealthDto.BackQueryHealth param,Long userId) { //根据条件查询提交的信息 PageHelper.startPage(param.getPageNum(),param.getPageSize()); + //TODO 默认当天 + if(ObjectUtil.isNull(param.getSubmitTime())){ + param.setSubmitTime(System.currentTimeMillis()); + } List queryHealthVoList = recordHealthDao.backQueryMaterialOrder(param); return new PageInfo<>(queryHealthVoList); } diff --git a/src/main/java/com/ccsens/delivery/service/IHealthService.java b/src/main/java/com/ccsens/delivery/service/IHealthService.java index d0734ab..ba74888 100644 --- a/src/main/java/com/ccsens/delivery/service/IHealthService.java +++ b/src/main/java/com/ccsens/delivery/service/IHealthService.java @@ -30,7 +30,7 @@ public interface IHealthService { * 上传识别后的信息 * @param params 信息 */ - void ocrHealthConclusion(List params); + List ocrHealthConclusion(List params); /** * 后台查看健康信息的提交记录 diff --git a/src/main/java/com/ccsens/delivery/service/StudentService.java b/src/main/java/com/ccsens/delivery/service/StudentService.java index bd2df10..0e5f67d 100644 --- a/src/main/java/com/ccsens/delivery/service/StudentService.java +++ b/src/main/java/com/ccsens/delivery/service/StudentService.java @@ -124,6 +124,7 @@ public class StudentService implements IStudentService { BeanUtil.copyProperties(param,stuOrder); stuOrder.setId(snowflake.nextId()); stuOrder.setUserId(userId); + stuOrder.setSubmitTime(System.currentTimeMillis()); // String stuNum = SymmetricCryptoUtil.encrypt(DeliveryConstant.ENCRYPT_KEY,param.getStuNum()); // stuOrder.setStuNum(stuNum == null ? param.getStuNum() : stuNum); // String phone = SymmetricCryptoUtil.encrypt(DeliveryConstant.ENCRYPT_KEY,param.getPhone()); diff --git a/src/main/resources/application-prod.yml b/src/main/resources/application-prod.yml index 1d2927b..1e07555 100644 --- a/src/main/resources/application-prod.yml +++ b/src/main/resources/application-prod.yml @@ -16,7 +16,7 @@ spring: max-idle: 10 max-wait: -1ms min-idle: 0 - password: 'areowqr!@43ef' + password: '' port: 6379 timeout: 1000ms swagger: @@ -24,5 +24,5 @@ swagger: file: path: /home/cloud/delivery/server/uploads/ - domain: https://www.tall.wiki/delivery/v1.0/ - imgDomain: https://www.tall.wiki/delivery/v1.0/uploads/ + domain: https://www.eight-hertz.com/delivery/v1.0/ + imgDomain: https://www.eight-hertz.com/delivery/v1.0/uploads/ diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 0ee65bb..d7b5c1e 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -1,4 +1,4 @@ spring: profiles: - active: test + active: prod include: common diff --git a/src/main/resources/mapper_dao/FormRecordDao.xml b/src/main/resources/mapper_dao/FormRecordDao.xml index e97b3e5..4231f99 100644 --- a/src/main/resources/mapper_dao/FormRecordDao.xml +++ b/src/main/resources/mapper_dao/FormRecordDao.xml @@ -114,7 +114,7 @@ #{id} ) - AND ocr = 0 + -- AND ocr = 0 and `type` = #{types} and submit_time >= #{startTime} and submit_time < #{endTime} @@ -226,7 +226,7 @@ SELECT h.id, h.type, - f.visit_path, + f.visit_path as path, h.ocr FROM t_record_health h, @@ -234,8 +234,8 @@ WHERE h.file_id = f.id and h.type = #{params.type} - and submit_time >= #{params.startTime} - and submit_time < #{params.endTime} + and FROM_UNIXTIME(submit_time/1000,'%Y-%m-%d %H:%i:%s') >= #{params.startTime} + and FROM_UNIXTIME(submit_time/1000,'%Y-%m-%d %H:%i:%s') < #{params.endTime} SELECT id, - CONCAT(FROM_UNIXTIME(start_time / 1000,'%h:%i'),'至',FROM_UNIXTIME(end_time / 1000,'%h:%i')) as time, + CONCAT(FROM_UNIXTIME(start_time / 1000,'%H:%i'),'至',FROM_UNIXTIME(end_time / 1000,'%H:%i')) as time, trails_detail as trailsDetail, vehicle, vehicle_remark as vehicleRemark, @@ -117,8 +117,8 @@ and trails_detail like CONCAT('%',#{param.trailsDetail},'%') - and FROM_UNIXTIME(start_time / 1000,'%h:%i') <= #{param.endTime} - and FROM_UNIXTIME(end_time / 1000,'%h:%i') >= #{param.startTime} + and FROM_UNIXTIME(start_time / 1000,'%H:%i') <= #{param.endTime} + and FROM_UNIXTIME(end_time / 1000,'%H:%i') >= #{param.startTime} diff --git a/src/main/resources/mapper_raw/RecordHealthMapper.xml b/src/main/resources/mapper_raw/RecordHealthMapper.xml index c69042d..5407b44 100644 --- a/src/main/resources/mapper_raw/RecordHealthMapper.xml +++ b/src/main/resources/mapper_raw/RecordHealthMapper.xml @@ -6,6 +6,7 @@ + @@ -74,7 +75,7 @@ - id, user_id, type, file_id, colour, star, positive, submit_time, operator, created_at, + id, user_id, type, file_id, ocr, colour, star, positive, submit_time, operator, created_at, updated_at, rec_status select @@ -124,16 +125,16 @@ symptom, broken, remark, plan_time, real_time, status, operator, created_at, updated_at, - rec_status, college_name, dormitory_name - ) + rec_status, college_name, dormitory_name, + submit_time) values (#{id,jdbcType=BIGINT}, #{userId,jdbcType=BIGINT}, #{name,jdbcType=VARCHAR}, #{stuNum,jdbcType=VARCHAR}, #{phone,jdbcType=VARCHAR}, #{idCard,jdbcType=VARCHAR}, #{collegeId,jdbcType=BIGINT}, #{dormitoryId,jdbcType=BIGINT}, #{address,jdbcType=VARCHAR}, #{symptom,jdbcType=VARCHAR}, #{broken,jdbcType=TINYINT}, #{remark,jdbcType=VARCHAR}, #{planTime,jdbcType=BIGINT}, #{realTime,jdbcType=BIGINT}, #{status,jdbcType=TINYINT}, #{operator,jdbcType=BIGINT}, #{createdAt,jdbcType=TIMESTAMP}, #{updatedAt,jdbcType=TIMESTAMP}, - #{recStatus,jdbcType=TINYINT}, #{collegeName,jdbcType=VARCHAR}, #{dormitoryName,jdbcType=VARCHAR} - ) + #{recStatus,jdbcType=TINYINT}, #{collegeName,jdbcType=VARCHAR}, #{dormitoryName,jdbcType=VARCHAR}, + #{submitTime,jdbcType=BIGINT}) insert into t_stu_order @@ -201,6 +202,9 @@ dormitory_name, + + submit_time, + @@ -266,6 +270,9 @@ #{dormitoryName,jdbcType=VARCHAR}, + + #{submitTime,jdbcType=BIGINT}, +