From 6246673dd42d9faeab27c1372e3eff6aa58d3f0c Mon Sep 17 00:00:00 2001
From: chen.llin <1442464845@qq.comm>
Date: 星期日, 18 一月 2026 15:23:29 +0800
Subject: [PATCH] 倾斜度
---
src/main/java/com/zy/asrs/entity/CrnTiltRecord.java | 209 +++++++++++++++++++++++
src/main/webapp/views/crnTiltRecord/crnTiltRecord.html | 63 +++++++
src/main/java/com/zy/asrs/service/CrnTiltRecordService.java | 11 +
src/main/java/com/zy/asrs/service/impl/CrnTiltRecordServiceImpl.java | 15 +
src/main/java/com/zy/asrs/controller/CrnTiltRecordController.java | 192 +++++++++++++++++++++
src/main/java/com/zy/asrs/mapper/CrnTiltRecordMapper.java | 15 +
6 files changed, 505 insertions(+), 0 deletions(-)
diff --git a/src/main/java/com/zy/asrs/controller/CrnTiltRecordController.java b/src/main/java/com/zy/asrs/controller/CrnTiltRecordController.java
new file mode 100644
index 0000000..fea8912
--- /dev/null
+++ b/src/main/java/com/zy/asrs/controller/CrnTiltRecordController.java
@@ -0,0 +1,192 @@
+package com.zy.asrs.controller;
+
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.core.annotations.ManagerAuth;
+import com.core.common.Cools;
+import com.core.common.DateUtils;
+import com.core.common.R;
+import com.zy.asrs.entity.CrnTiltRecord;
+import com.zy.asrs.service.CrnTiltRecordService;
+import com.zy.common.web.BaseController;
+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.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Map;
+
+/**
+ * 鍫嗗灈鏈哄�炬枩搴﹁褰� Controller
+ */
+@Slf4j
+@RestController
+@RequestMapping("/crnTiltRecord")
+@Api(tags = "鍫嗗灈鏈哄�炬枩搴﹁褰曠鐞�")
+public class CrnTiltRecordController extends BaseController {
+
+ @Autowired
+ private CrnTiltRecordService crnTiltRecordService;
+
+ /**
+ * 鏌ヨ鍊炬枩搴﹁褰曞垪琛紙鍒嗛〉锛�
+ */
+ @RequestMapping(value = "/list/auth", method = RequestMethod.GET)
+ @ManagerAuth
+ @ApiOperation(value = "鏌ヨ鍊炬枩搴﹁褰曞垪琛�", notes = "鏀寔鍒嗛〉鍜屽鏉′欢鏌ヨ")
+ public R list(@RequestParam(defaultValue = "1") Integer curr,
+ @RequestParam(defaultValue = "10") Integer limit,
+ @RequestParam(required = false) String orderByField,
+ @RequestParam(required = false) String orderByType,
+ @RequestParam(required = false) String condition,
+ @RequestParam Map<String, Object> param) {
+ try {
+ EntityWrapper<CrnTiltRecord> wrapper = new EntityWrapper<>();
+
+ // 澶勭悊鏌ヨ鏉′欢
+ excludeTrash(param);
+ convert(param, wrapper);
+ allLike(CrnTiltRecord.class, param.keySet(), wrapper, condition);
+
+ // 鎺掑簭
+ if (!Cools.isEmpty(orderByField)) {
+ wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));
+ } else {
+ // 榛樿鎸夎褰曟棩鏈熷�掑簭
+ wrapper.orderBy("record_date", false);
+ wrapper.orderBy("record_time", false);
+ }
+
+ Page<CrnTiltRecord> page = new Page<>(curr, limit);
+ Page<CrnTiltRecord> result = crnTiltRecordService.selectPage(page, wrapper);
+
+ return R.ok(result);
+ } catch (Exception e) {
+ log.error("鏌ヨ鍊炬枩搴﹁褰曞垪琛ㄥけ璐�", e);
+ return R.error("鏌ヨ澶辫触锛�" + e.getMessage());
+ }
+ }
+
+ /**
+ * 鏍规嵁ID鏌ヨ璇︽儏
+ */
+ @RequestMapping(value = "/detail/auth", method = RequestMethod.GET)
+ @ManagerAuth
+ @ApiOperation(value = "鏌ヨ鍊炬枩搴﹁褰曡鎯�")
+ public R detail(@RequestParam Long id) {
+ try {
+ if (Cools.isEmpty(id)) {
+ return R.error("ID涓嶈兘涓虹┖");
+ }
+
+ CrnTiltRecord record = crnTiltRecordService.selectById(id);
+ if (Cools.isEmpty(record)) {
+ return R.error("璁板綍涓嶅瓨鍦�");
+ }
+
+ return R.ok(record);
+ } catch (Exception e) {
+ log.error("鏌ヨ鍊炬枩搴﹁褰曡鎯呭け璐�", e);
+ return R.error("鏌ヨ澶辫触锛�" + e.getMessage());
+ }
+ }
+
+ /**
+ * 鏍规嵁鍫嗗灈鏈虹紪鍙锋煡璇㈡渶杩戠殑璁板綍
+ */
+ @RequestMapping(value = "/latest/auth", method = RequestMethod.GET)
+ @ManagerAuth
+ @ApiOperation(value = "鏌ヨ鍫嗗灈鏈烘渶杩戠殑鍊炬枩搴﹁褰�")
+ public R latest(@RequestParam Integer crnNo) {
+ try {
+ if (Cools.isEmpty(crnNo)) {
+ return R.error("鍫嗗灈鏈虹紪鍙蜂笉鑳戒负绌�");
+ }
+
+ EntityWrapper<CrnTiltRecord> wrapper = new EntityWrapper<>();
+ wrapper.eq("crn_no", crnNo);
+ wrapper.orderBy("record_date", false);
+ wrapper.orderBy("record_time", false);
+ wrapper.last("OFFSET 0 ROWS FETCH NEXT 1 ROWS ONLY");
+
+ CrnTiltRecord record = crnTiltRecordService.selectOne(wrapper);
+ return R.ok(record);
+ } catch (Exception e) {
+ log.error("鏌ヨ鍫嗗灈鏈烘渶杩戝�炬枩搴﹁褰曞け璐�", e);
+ return R.error("鏌ヨ澶辫触锛�" + e.getMessage());
+ }
+ }
+
+ /**
+ * 瀵煎嚭鍊炬枩搴﹁褰�
+ */
+ @RequestMapping(value = "/export/auth", method = RequestMethod.GET)
+ @ManagerAuth
+ @ApiOperation(value = "瀵煎嚭鍊炬枩搴﹁褰�")
+ public R export(@RequestParam(required = false) String condition,
+ @RequestParam Map<String, Object> param) {
+ try {
+ EntityWrapper<CrnTiltRecord> wrapper = new EntityWrapper<>();
+
+ // 澶勭悊鏌ヨ鏉′欢
+ excludeTrash(param);
+ convert(param, wrapper);
+ allLike(CrnTiltRecord.class, param.keySet(), wrapper, condition);
+
+ // 鎺掑簭锛氶粯璁ゆ寜璁板綍鏃ユ湡鍊掑簭
+ wrapper.orderBy("record_date", false);
+ wrapper.orderBy("record_time", false);
+
+ // 鏌ヨ鎵�鏈夋暟鎹紙涓嶅垎椤碉級
+ java.util.List<CrnTiltRecord> list = crnTiltRecordService.selectList(wrapper);
+
+ // 瀹氫箟瀵煎嚭瀛楁
+ java.util.List<String> fields = new java.util.ArrayList<>();
+ fields.add("id");
+ fields.add("crnNo");
+ fields.add("tiltValue");
+ fields.add("tiltX");
+ fields.add("tiltY");
+ fields.add("tiltZ");
+ fields.add("recordDate");
+ fields.add("recordTime");
+ fields.add("prevTiltValue");
+ fields.add("tiltChange");
+ fields.add("recordType");
+
+ return R.ok(exportSupport(list, fields));
+ } catch (Exception e) {
+ log.error("瀵煎嚭鍊炬枩搴﹁褰曞け璐�", e);
+ return R.error("瀵煎嚭澶辫触锛�" + e.getMessage());
+ }
+ }
+
+ /**
+ * 杞崲鏌ヨ鏉′欢
+ */
+ private <T> void convert(Map<String, Object> map, EntityWrapper<T> wrapper) {
+ for (Map.Entry<String, Object> entry : map.entrySet()) {
+ String val = String.valueOf(entry.getValue());
+ // 璺宠繃绌哄�煎拰null
+ if (Cools.isEmpty(val) || "null".equals(val) || "undefined".equals(val)) {
+ continue;
+ }
+ String columnKey = humpToLine(entry.getKey());
+
+ if (val.contains(RANGE_TIME_LINK)) {
+ // 鏃堕棿鑼冨洿鏌ヨ
+ String[] dates = val.split(RANGE_TIME_LINK);
+ if (dates.length == 2 && !Cools.isEmpty(dates[0]) && !Cools.isEmpty(dates[1])) {
+ wrapper.ge(columnKey, DateUtils.convert(dates[0]));
+ wrapper.le(columnKey, DateUtils.convert(dates[1]));
+ }
+ } else {
+ wrapper.like(columnKey, val);
+ }
+ }
+ }
+}
diff --git a/src/main/java/com/zy/asrs/entity/CrnTiltRecord.java b/src/main/java/com/zy/asrs/entity/CrnTiltRecord.java
new file mode 100644
index 0000000..324635f
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/CrnTiltRecord.java
@@ -0,0 +1,209 @@
+package com.zy.asrs.entity;
+
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableName;
+import com.baomidou.mybatisplus.enums.IdType;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+/**
+ * 鍫嗗灈鏈哄�炬枩搴﹁褰曞疄浣撶被
+ * 鐢ㄤ簬瀛樺偍姣忓懆璁板綍鐨勫爢鍨涙満鍊炬枩搴︽暟鎹�
+ */
+@TableName("asr_crn_tilt_record")
+public class CrnTiltRecord implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 涓婚敭ID
+ */
+ @ApiModelProperty(value = "涓婚敭ID")
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+
+ /**
+ * 鍫嗗灈鏈虹紪鍙�
+ */
+ @ApiModelProperty(value = "鍫嗗灈鏈虹紪鍙�")
+ @TableField("crn_no")
+ private Integer crnNo;
+
+ /**
+ * 鍊炬枩搴﹀�硷紙搴︽垨寮у害锛屾牴鎹疄闄呬紶鎰熷櫒鍗曚綅锛�
+ */
+ @ApiModelProperty(value = "鍊炬枩搴﹀��")
+ @TableField("tilt_value")
+ private Float tiltValue;
+
+ /**
+ * X鏂瑰悜鍊炬枩搴�
+ */
+ @ApiModelProperty(value = "X鏂瑰悜鍊炬枩搴�")
+ @TableField("tilt_x")
+ private Float tiltX;
+
+ /**
+ * Y鏂瑰悜鍊炬枩搴�
+ */
+ @ApiModelProperty(value = "Y鏂瑰悜鍊炬枩搴�")
+ @TableField("tilt_y")
+ private Float tiltY;
+
+ /**
+ * Z鏂瑰悜鍊炬枩搴�
+ */
+ @ApiModelProperty(value = "Z鏂瑰悜鍊炬枩搴�")
+ @TableField("tilt_z")
+ private Float tiltZ;
+
+ /**
+ * 璁板綍鏃ユ湡锛堟瘡鍛ㄨ褰曚竴娆★級
+ */
+ @ApiModelProperty(value = "璁板綍鏃ユ湡")
+ @TableField("record_date")
+ private Date recordDate;
+
+ /**
+ * 璁板綍鏃堕棿
+ */
+ @ApiModelProperty(value = "璁板綍鏃堕棿")
+ @TableField("record_time")
+ private Date recordTime;
+
+ /**
+ * 涓婃璁板綍鐨勫�炬枩搴﹀�硷紙鐢ㄤ簬瀵规瘮锛�
+ */
+ @ApiModelProperty(value = "涓婃璁板綍鐨勫�炬枩搴﹀��")
+ @TableField("prev_tilt_value")
+ private Float prevTiltValue;
+
+ /**
+ * 鍊炬枩搴﹀彉鍖栭噺锛堝綋鍓嶅��-涓婃鍊硷級
+ */
+ @ApiModelProperty(value = "鍊炬枩搴﹀彉鍖栭噺")
+ @TableField("tilt_change")
+ private Float tiltChange;
+
+ /**
+ * 璁板綍绫诲瀷锛欰UTO-鑷姩璁板綍锛孧ANUAL-鎵嬪姩瑙﹀彂
+ */
+ @ApiModelProperty(value = "璁板綍绫诲瀷")
+ @TableField("record_type")
+ private String recordType;
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public Integer getCrnNo() {
+ return crnNo;
+ }
+
+ public void setCrnNo(Integer crnNo) {
+ this.crnNo = crnNo;
+ }
+
+ public Float getTiltValue() {
+ return tiltValue;
+ }
+
+ public void setTiltValue(Float tiltValue) {
+ this.tiltValue = tiltValue;
+ }
+
+ public Float getTiltX() {
+ return tiltX;
+ }
+
+ public void setTiltX(Float tiltX) {
+ this.tiltX = tiltX;
+ }
+
+ public Float getTiltY() {
+ return tiltY;
+ }
+
+ public void setTiltY(Float tiltY) {
+ this.tiltY = tiltY;
+ }
+
+ public Float getTiltZ() {
+ return tiltZ;
+ }
+
+ public void setTiltZ(Float tiltZ) {
+ this.tiltZ = tiltZ;
+ }
+
+ public Date getRecordDate() {
+ return recordDate;
+ }
+
+ public void setRecordDate(Date recordDate) {
+ this.recordDate = recordDate;
+ }
+
+ public String getRecordDate$() {
+ if (recordDate == null) {
+ return "";
+ }
+ return new SimpleDateFormat("yyyy-MM-dd").format(recordDate);
+ }
+
+ public Date getRecordTime() {
+ return recordTime;
+ }
+
+ public void setRecordTime(Date recordTime) {
+ this.recordTime = recordTime;
+ }
+
+ public String getRecordTime$() {
+ if (recordTime == null) {
+ return "";
+ }
+ return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(recordTime);
+ }
+
+ public Float getPrevTiltValue() {
+ return prevTiltValue;
+ }
+
+ public void setPrevTiltValue(Float prevTiltValue) {
+ this.prevTiltValue = prevTiltValue;
+ }
+
+ public Float getTiltChange() {
+ return tiltChange;
+ }
+
+ public void setTiltChange(Float tiltChange) {
+ this.tiltChange = tiltChange;
+ }
+
+ public String getRecordType() {
+ return recordType;
+ }
+
+ public void setRecordType(String recordType) {
+ this.recordType = recordType;
+ }
+
+ public String getRecordType$() {
+ if ("AUTO".equals(recordType)) {
+ return "鑷姩璁板綍";
+ } else if ("MANUAL".equals(recordType)) {
+ return "鎵嬪姩瑙﹀彂";
+ }
+ return recordType != null ? recordType : "";
+ }
+}
diff --git a/src/main/java/com/zy/asrs/mapper/CrnTiltRecordMapper.java b/src/main/java/com/zy/asrs/mapper/CrnTiltRecordMapper.java
new file mode 100644
index 0000000..35720a0
--- /dev/null
+++ b/src/main/java/com/zy/asrs/mapper/CrnTiltRecordMapper.java
@@ -0,0 +1,15 @@
+package com.zy.asrs.mapper;
+
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import com.zy.asrs.entity.CrnTiltRecord;
+import org.apache.ibatis.annotations.Mapper;
+import org.springframework.stereotype.Repository;
+
+/**
+ * 鍫嗗灈鏈哄�炬枩搴﹁褰� Mapper
+ */
+@Mapper
+@Repository
+public interface CrnTiltRecordMapper extends BaseMapper<CrnTiltRecord> {
+
+}
diff --git a/src/main/java/com/zy/asrs/service/CrnTiltRecordService.java b/src/main/java/com/zy/asrs/service/CrnTiltRecordService.java
new file mode 100644
index 0000000..f137e98
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/CrnTiltRecordService.java
@@ -0,0 +1,11 @@
+package com.zy.asrs.service;
+
+import com.baomidou.mybatisplus.service.IService;
+import com.zy.asrs.entity.CrnTiltRecord;
+
+/**
+ * 鍫嗗灈鏈哄�炬枩搴﹁褰� Service 鎺ュ彛
+ */
+public interface CrnTiltRecordService extends IService<CrnTiltRecord> {
+
+}
diff --git a/src/main/java/com/zy/asrs/service/impl/CrnTiltRecordServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/CrnTiltRecordServiceImpl.java
new file mode 100644
index 0000000..5fceefe
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/impl/CrnTiltRecordServiceImpl.java
@@ -0,0 +1,15 @@
+package com.zy.asrs.service.impl;
+
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import com.zy.asrs.entity.CrnTiltRecord;
+import com.zy.asrs.mapper.CrnTiltRecordMapper;
+import com.zy.asrs.service.CrnTiltRecordService;
+import org.springframework.stereotype.Service;
+
+/**
+ * 鍫嗗灈鏈哄�炬枩搴﹁褰� Service 瀹炵幇绫�
+ */
+@Service
+public class CrnTiltRecordServiceImpl extends ServiceImpl<CrnTiltRecordMapper, CrnTiltRecord> implements CrnTiltRecordService {
+
+}
diff --git a/src/main/webapp/views/crnTiltRecord/crnTiltRecord.html b/src/main/webapp/views/crnTiltRecord/crnTiltRecord.html
new file mode 100644
index 0000000..c5e6c2f
--- /dev/null
+++ b/src/main/webapp/views/crnTiltRecord/crnTiltRecord.html
@@ -0,0 +1,63 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="utf-8">
+ <title>鍫嗗灈鏈哄�炬枩搴﹁褰�</title>
+ <meta name="renderer" content="webkit">
+ <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+ <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+ <link rel="stylesheet" href="../../static/layui/css/layui.css" media="all">
+ <link rel="stylesheet" href="../../static/css/cool.css" media="all">
+ <link rel="stylesheet" href="../../static/css/common.css" media="all">
+</head>
+<body>
+
+<!-- 鎼滅储鏍� -->
+<div id="search-box" class="layui-form layui-card-header">
+ <div class="layui-inline">
+ <label class="layui-form-label">鍫嗗灈鏈虹紪鍙凤細</label>
+ <div class="layui-input-inline">
+ <input id="crnNo" class="layui-input" name="crnNo" type="text" placeholder="璇疯緭鍏ュ爢鍨涙満缂栧彿" autocomplete="off">
+ </div>
+ </div>
+ <div class="layui-inline">
+ <label class="layui-form-label">璁板綍鏃ユ湡锛�</label>
+ <div class="layui-input-inline">
+ <input id="recordDate" class="layui-input" name="recordDate" type="text" placeholder="璇烽�夋嫨鏃ユ湡鑼冨洿" autocomplete="off">
+ </div>
+ </div>
+ <div class="layui-inline">
+ <label class="layui-form-label">璁板綍鏃堕棿锛�</label>
+ <div class="layui-input-inline">
+ <input id="recordTime" class="layui-input" name="recordTime" type="text" placeholder="璇烽�夋嫨鏃堕棿鑼冨洿" autocomplete="off">
+ </div>
+ </div>
+ <div id="data-search-btn" class="layui-btn-container layui-form-item" style="display: inline-block">
+ <button id="search" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="search">鎼滅储</button>
+ <button id="reset" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="reset">閲嶇疆</button>
+ </div>
+</div>
+
+<!-- 琛ㄦ牸 -->
+<div class="layui-form">
+ <table class="layui-hide" id="crnTiltRecord" lay-filter="crnTiltRecord"></table>
+</div>
+
+<script type="text/html" id="toolbar">
+ <div class="layui-btn-container">
+ <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData">瀵煎嚭</button>
+ </div>
+</script>
+
+<script type="text/html" id="operate">
+ <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="detail">璇︽儏</a>
+</script>
+
+<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
+<script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/crnTiltRecord/crnTiltRecord.js" charset="utf-8"></script>
+
+</body>
+</html>
--
Gitblit v1.9.1