From 441a445223b4ec4a6517065d55f4a7f3bfb0a186 Mon Sep 17 00:00:00 2001 From: wanglizhong <wlz> Date: 星期五, 02 五月 2025 23:28:18 +0800 Subject: [PATCH] feat:增加车辆及车辆配置GPS --- sql/dict_type.sql | 13 ruoyi-system/src/main/java/com/ruoyi/system/domain/VehicleGps.java | 136 ++ ruoyi-ui/src/views/system/vehicle/index.vue | 334 +++++++ ruoyi-ui/src/views/system/gpslog/index.vue | 357 +++++++ ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/GpsCollectLogController.java | 93 + sql/dict_data.sql | 26 ruoyi-system/src/main/java/com/ruoyi/system/service/IVehicleGpsService.java | 39 ruoyi-system/src/main/java/com/ruoyi/system/exception/ServiceException.java | 55 + ruoyi-system/src/main/java/com/ruoyi/system/mapper/VehicleGpsMapper.java | 44 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/VehicleGpsServiceImpl.java | 78 + ruoyi-system/src/main/java/com/ruoyi/system/domain/GpsCollectLog.java | 110 ++ ruoyi-system/src/main/resources/mapper/system/GpsCollectLogMapper.xml | 88 + ruoyi-system/src/main/java/com/ruoyi/system/mapper/VehicleInfoMapper.java | 39 ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/VehicleGpsController.java | 93 + ruoyi-ui/src/views/system/gps/index.vue | 329 +++++++ ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/ServiceOrderController.java | 2 ruoyi-ui/src/api/system/vehicle.js | 53 + sql/menu.sql | 68 + ruoyi-system/src/main/resources/mapper/system/VehicleGpsMapper.xml | 98 ++ ruoyi-system/src/main/java/com/ruoyi/system/mapper/GpsCollectLogMapper.java | 44 ruoyi-admin/src/main/resources/mybatis/mybatis-config.xml | 10 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/GpsCollectLogServiceImpl.java | 78 + ruoyi-system/src/main/java/com/ruoyi/system/service/impl/VehicleInfoServiceImpl.java | 65 + ruoyi-admin/src/main/resources/application.yml | 2 ruoyi-ui/src/api/system/gps.js | 53 + ruoyi-system/src/main/java/com/ruoyi/system/service/IGpsCollectLogService.java | 39 ruoyi-system/src/main/java/com/ruoyi/system/service/IVehicleInfoService.java | 39 ruoyi-system/src/main/java/com/ruoyi/system/domain/VehicleInfo.java | 101 ++ ruoyi-ui/src/api/system/gpslog.js | 53 + sql/vehicle_gps.sql | 46 ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/VehicleInfoController.java | 93 + ruoyi-system/src/main/resources/mapper/system/VehicleInfoMapper.xml | 96 ++ sql/vehicle_info.sql | 17 33 files changed, 2,780 insertions(+), 11 deletions(-) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/GpsCollectLogController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/GpsCollectLogController.java new file mode 100644 index 0000000..21d9bc6 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/GpsCollectLogController.java @@ -0,0 +1,93 @@ +package com.ruoyi.web.controller.system; + +import java.util.List; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.PathVariable; +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.annotation.Log; +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.enums.BusinessType; +import com.ruoyi.system.domain.GpsCollectLog; +import com.ruoyi.system.service.IGpsCollectLogService; +import com.ruoyi.common.utils.poi.ExcelUtil; +import com.ruoyi.common.core.page.TableDataInfo; + +/** + * GPS閲囬泦鏃ュ織Controller + */ +@RestController +@RequestMapping("/system/gpslog") +public class GpsCollectLogController extends BaseController { + @Autowired + private IGpsCollectLogService gpsCollectLogService; + + /** + * 鏌ヨGPS閲囬泦鏃ュ織鍒楄〃 + */ + @PreAuthorize("@ss.hasPermi('system:gpslog:list')") + @GetMapping("/list") + public TableDataInfo list(GpsCollectLog gpsCollectLog) { + startPage(); + List<GpsCollectLog> list = gpsCollectLogService.selectGpsCollectLogList(gpsCollectLog); + return getDataTable(list); + } + + /** + * 瀵煎嚭GPS閲囬泦鏃ュ織鍒楄〃 + */ + @PreAuthorize("@ss.hasPermi('system:gpslog:export')") + @Log(title = "GPS閲囬泦鏃ュ織", businessType = BusinessType.EXPORT) + @GetMapping("/export") + public AjaxResult export(GpsCollectLog gpsCollectLog) { + List<GpsCollectLog> list = gpsCollectLogService.selectGpsCollectLogList(gpsCollectLog); + ExcelUtil<GpsCollectLog> util = new ExcelUtil<GpsCollectLog>(GpsCollectLog.class); + return util.exportExcel(list, "GPS閲囬泦鏃ュ織鏁版嵁"); + } + + /** + * 鑾峰彇GPS閲囬泦鏃ュ織璇︾粏淇℃伅 + */ + @PreAuthorize("@ss.hasPermi('system:gpslog:query')") + @GetMapping(value = "/{logId}") + public AjaxResult getInfo(@PathVariable("logId") Long logId) { + return success(gpsCollectLogService.selectGpsCollectLogById(logId)); + } + + /** + * 鏂板GPS閲囬泦鏃ュ織 + */ + @PreAuthorize("@ss.hasPermi('system:gpslog:add')") + @Log(title = "GPS閲囬泦鏃ュ織", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody GpsCollectLog gpsCollectLog) { + return toAjax(gpsCollectLogService.insertGpsCollectLog(gpsCollectLog)); + } + + /** + * 淇敼GPS閲囬泦鏃ュ織 + */ + @PreAuthorize("@ss.hasPermi('system:gpslog:edit')") + @Log(title = "GPS閲囬泦鏃ュ織", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody GpsCollectLog gpsCollectLog) { + return toAjax(gpsCollectLogService.updateGpsCollectLog(gpsCollectLog)); + } + + /** + * 鍒犻櫎GPS閲囬泦鏃ュ織 + */ + @PreAuthorize("@ss.hasPermi('system:gpslog:remove')") + @Log(title = "GPS閲囬泦鏃ュ織", businessType = BusinessType.DELETE) + @DeleteMapping("/{logIds}") + public AjaxResult remove(@PathVariable Long[] logIds) { + return toAjax(gpsCollectLogService.deleteGpsCollectLogByIds(logIds)); + } +} \ No newline at end of file diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/ServiceOrderController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/ServiceOrderController.java index 9f41c76..901c977 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/ServiceOrderController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/ServiceOrderController.java @@ -7,7 +7,7 @@ import com.ruoyi.common.annotation.Anonymous; import com.ruoyi.common.annotation.DataSource; import com.ruoyi.common.constant.HttpStatus; -import com.ruoyi.common.core.domain.entity.ServiceOrderAppVo; + import com.ruoyi.common.enums.DataSourceType; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/VehicleGpsController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/VehicleGpsController.java new file mode 100644 index 0000000..d5ae6ef --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/VehicleGpsController.java @@ -0,0 +1,93 @@ +package com.ruoyi.web.controller.system; + +import java.util.List; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.PathVariable; +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.annotation.Log; +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.enums.BusinessType; +import com.ruoyi.system.domain.VehicleGps; +import com.ruoyi.system.service.IVehicleGpsService; +import com.ruoyi.common.utils.poi.ExcelUtil; +import com.ruoyi.common.core.page.TableDataInfo; + +/** + * 杞﹁締GPS鍧愭爣Controller + */ +@RestController +@RequestMapping("/system/gps") +public class VehicleGpsController extends BaseController { + @Autowired + private IVehicleGpsService vehicleGpsService; + + /** + * 鏌ヨ杞﹁締GPS鍧愭爣鍒楄〃 + */ + @PreAuthorize("@ss.hasPermi('system:gps:list')") + @GetMapping("/list") + public TableDataInfo list(VehicleGps vehicleGps) { + startPage(); + List<VehicleGps> list = vehicleGpsService.selectVehicleGpsList(vehicleGps); + return getDataTable(list); + } + + /** + * 瀵煎嚭杞﹁締GPS鍧愭爣鍒楄〃 + */ + @PreAuthorize("@ss.hasPermi('system:gps:export')") + @Log(title = "杞﹁締GPS鍧愭爣", businessType = BusinessType.EXPORT) + @GetMapping("/export") + public AjaxResult export(VehicleGps vehicleGps) { + List<VehicleGps> list = vehicleGpsService.selectVehicleGpsList(vehicleGps); + ExcelUtil<VehicleGps> util = new ExcelUtil<VehicleGps>(VehicleGps.class); + return util.exportExcel(list, "杞﹁締GPS鍧愭爣鏁版嵁"); + } + + /** + * 鑾峰彇杞﹁締GPS鍧愭爣璇︾粏淇℃伅 + */ + @PreAuthorize("@ss.hasPermi('system:gps:query')") + @GetMapping(value = "/{gpsId}") + public AjaxResult getInfo(@PathVariable("gpsId") Long gpsId) { + return success(vehicleGpsService.selectVehicleGpsById(gpsId)); + } + + /** + * 鏂板杞﹁締GPS鍧愭爣 + */ + @PreAuthorize("@ss.hasPermi('system:gps:add')") + @Log(title = "杞﹁締GPS鍧愭爣", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody VehicleGps vehicleGps) { + return toAjax(vehicleGpsService.insertVehicleGps(vehicleGps)); + } + + /** + * 淇敼杞﹁締GPS鍧愭爣 + */ + @PreAuthorize("@ss.hasPermi('system:gps:edit')") + @Log(title = "杞﹁締GPS鍧愭爣", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody VehicleGps vehicleGps) { + return toAjax(vehicleGpsService.updateVehicleGps(vehicleGps)); + } + + /** + * 鍒犻櫎杞﹁締GPS鍧愭爣 + */ + @PreAuthorize("@ss.hasPermi('system:gps:remove')") + @Log(title = "杞﹁締GPS鍧愭爣", businessType = BusinessType.DELETE) + @DeleteMapping("/{gpsIds}") + public AjaxResult remove(@PathVariable Long[] gpsIds) { + return toAjax(vehicleGpsService.deleteVehicleGpsByIds(gpsIds)); + } +} \ No newline at end of file diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/VehicleInfoController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/VehicleInfoController.java new file mode 100644 index 0000000..b33aea0 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/VehicleInfoController.java @@ -0,0 +1,93 @@ +package com.ruoyi.web.controller.system; + +import java.util.List; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.PathVariable; +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.annotation.Log; +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.enums.BusinessType; +import com.ruoyi.system.domain.VehicleInfo; +import com.ruoyi.system.service.IVehicleInfoService; +import com.ruoyi.common.utils.poi.ExcelUtil; +import com.ruoyi.common.core.page.TableDataInfo; + +/** + * 杞﹁締淇℃伅Controller + */ +@RestController +@RequestMapping("/system/vehicle") +public class VehicleInfoController extends BaseController { + @Autowired + private IVehicleInfoService vehicleInfoService; + + /** + * 鏌ヨ杞﹁締淇℃伅鍒楄〃 + */ + @PreAuthorize("@ss.hasPermi('system:vehicle:list')") + @GetMapping("/list") + public TableDataInfo list(VehicleInfo vehicleInfo) { + startPage(); + List<VehicleInfo> list = vehicleInfoService.selectVehicleInfoList(vehicleInfo); + return getDataTable(list); + } + + /** + * 瀵煎嚭杞﹁締淇℃伅鍒楄〃 + */ + @PreAuthorize("@ss.hasPermi('system:vehicle:export')") + @Log(title = "杞﹁締淇℃伅", businessType = BusinessType.EXPORT) + @GetMapping("/export") + public AjaxResult export(VehicleInfo vehicleInfo) { + List<VehicleInfo> list = vehicleInfoService.selectVehicleInfoList(vehicleInfo); + ExcelUtil<VehicleInfo> util = new ExcelUtil<VehicleInfo>(VehicleInfo.class); + return util.exportExcel(list, "杞﹁締淇℃伅鏁版嵁"); + } + + /** + * 鑾峰彇杞﹁締淇℃伅璇︾粏淇℃伅 + */ + @PreAuthorize("@ss.hasPermi('system:vehicle:query')") + @GetMapping(value = "/{vehicleId}") + public AjaxResult getInfo(@PathVariable("vehicleId") Long vehicleId) { + return success(vehicleInfoService.selectVehicleInfoById(vehicleId)); + } + + /** + * 鏂板杞﹁締淇℃伅 + */ + @PreAuthorize("@ss.hasPermi('system:vehicle:add')") + @Log(title = "杞﹁締淇℃伅", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody VehicleInfo vehicleInfo) { + return toAjax(vehicleInfoService.insertVehicleInfo(vehicleInfo)); + } + + /** + * 淇敼杞﹁締淇℃伅 + */ + @PreAuthorize("@ss.hasPermi('system:vehicle:edit')") + @Log(title = "杞﹁締淇℃伅", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody VehicleInfo vehicleInfo) { + return toAjax(vehicleInfoService.updateVehicleInfo(vehicleInfo)); + } + + /** + * 鍒犻櫎杞﹁締淇℃伅 + */ + @PreAuthorize("@ss.hasPermi('system:vehicle:remove')") + @Log(title = "杞﹁締淇℃伅", businessType = BusinessType.DELETE) + @DeleteMapping("/{vehicleIds}") + public AjaxResult remove(@PathVariable Long[] vehicleIds) { + return toAjax(vehicleInfoService.deleteVehicleInfoByIds(vehicleIds)); + } +} \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml index 43751f6..db0b9f1 100644 --- a/ruoyi-admin/src/main/resources/application.yml +++ b/ruoyi-admin/src/main/resources/application.yml @@ -74,7 +74,7 @@ # 鍦板潃 host: localhost # 绔彛锛岄粯璁や负6379 - port: 16379 + port: 6379 # 鏁版嵁搴撶储寮� database: 0 # 瀵嗙爜 diff --git a/ruoyi-admin/src/main/resources/mybatis/mybatis-config.xml b/ruoyi-admin/src/main/resources/mybatis/mybatis-config.xml index 04111e8..d986d0e 100644 --- a/ruoyi-admin/src/main/resources/mybatis/mybatis-config.xml +++ b/ruoyi-admin/src/main/resources/mybatis/mybatis-config.xml @@ -13,15 +13,7 @@ <setting name="defaultExecutorType" value="SIMPLE" /> <!-- 鎸囧畾 MyBatis 鎵�鐢ㄦ棩蹇楃殑鍏蜂綋瀹炵幇 --> <setting name="logImpl" value="SLF4J" /> - <!-- 浣跨敤椹煎嘲鍛藉悕娉曡浆鎹㈠瓧娈� --> - <setting name="mapUnderscoreToCamelCase" value="true"/> - <!-- 浣跨敤鍒楀埆鍚嶆浛鎹㈠垪鍚� 榛樿:true --> - <setting name="useColumnLabel" value="true" /> - <!-- 閰嶇疆SQL Server鏂硅█ --> - <setting name="databaseId" value="sqlserver" /> - <!-- SQL Server鐗瑰畾閰嶇疆 --> - <setting name="jdbcTypeForNull" value="NULL"/> - <setting name="defaultExecutorType" value="BATCH"/> + </settings> </configuration> diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/GpsCollectLog.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/GpsCollectLog.java new file mode 100644 index 0000000..c711fa5 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/GpsCollectLog.java @@ -0,0 +1,110 @@ +package com.ruoyi.system.domain; + +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; +import com.ruoyi.common.annotation.Excel; +import com.ruoyi.common.core.domain.BaseEntity; + +/** + * GPS閲囬泦鏃ュ織瀵硅薄 tb_gps_collect_log + */ +public class GpsCollectLog extends BaseEntity { + private static final long serialVersionUID = 1L; + + /** 鏃ュ織ID */ + private Long logId; + + /** 杞﹁締ID */ + @Excel(name = "杞﹁締ID") + private Long vehicleId; + + /** 杞︾墝鍙� */ + @Excel(name = "杞︾墝鍙�") + private String vehicleNo; + + /** 閲囬泦绫诲瀷锛�1鑷姩 2鎵嬪姩锛� */ + @Excel(name = "閲囬泦绫诲瀷", readConverterExp = "1=鑷姩,2=鎵嬪姩") + private String collectType; + + /** 閲囬泦鐘舵�侊紙0鎴愬姛 1澶辫触锛� */ + @Excel(name = "閲囬泦鐘舵��", readConverterExp = "0=鎴愬姛,1=澶辫触") + private String collectStatus; + + /** 閿欒淇℃伅 */ + @Excel(name = "閿欒淇℃伅") + private String errorMsg; + + /** 閲囬泦鏃堕棿 */ + @Excel(name = "閲囬泦鏃堕棿", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private String collectTime; + + public void setLogId(Long logId) { + this.logId = logId; + } + + public Long getLogId() { + return logId; + } + + public void setVehicleId(Long vehicleId) { + this.vehicleId = vehicleId; + } + + public Long getVehicleId() { + return vehicleId; + } + + public void setVehicleNo(String vehicleNo) { + this.vehicleNo = vehicleNo; + } + + public String getVehicleNo() { + return vehicleNo; + } + + public void setCollectType(String collectType) { + this.collectType = collectType; + } + + public String getCollectType() { + return collectType; + } + + public void setCollectStatus(String collectStatus) { + this.collectStatus = collectStatus; + } + + public String getCollectStatus() { + return collectStatus; + } + + public void setErrorMsg(String errorMsg) { + this.errorMsg = errorMsg; + } + + public String getErrorMsg() { + return errorMsg; + } + + public void setCollectTime(String collectTime) { + this.collectTime = collectTime; + } + + public String getCollectTime() { + return collectTime; + } + + @Override + public String toString() { + return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE) + .append("logId", getLogId()) + .append("vehicleId", getVehicleId()) + .append("vehicleNo", getVehicleNo()) + .append("collectType", getCollectType()) + .append("collectStatus", getCollectStatus()) + .append("errorMsg", getErrorMsg()) + .append("collectTime", getCollectTime()) + .append("createTime", getCreateTime()) + .toString(); + } +} \ No newline at end of file diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/VehicleGps.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/VehicleGps.java new file mode 100644 index 0000000..9f16903 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/VehicleGps.java @@ -0,0 +1,136 @@ +package com.ruoyi.system.domain; + +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; +import com.ruoyi.common.annotation.Excel; +import com.ruoyi.common.core.domain.BaseEntity; + +/** + * 杞﹁締GPS鍧愭爣瀵硅薄 tb_vehicle_gps + */ +public class VehicleGps extends BaseEntity { + private static final long serialVersionUID = 1L; + + /** GPS璁板綍ID */ + private Long gpsId; + + /** 杞﹁締ID */ + @Excel(name = "杞﹁締ID") + private Long vehicleId; + + /** 杞︾墝鍙� */ + @Excel(name = "杞︾墝鍙�") + private String vehicleNo; + + /** 缁忓害 */ + @Excel(name = "缁忓害") + private Double longitude; + + /** 绾害 */ + @Excel(name = "绾害") + private Double latitude; + + /** 娴锋嫈 */ + @Excel(name = "娴锋嫈") + private Double altitude; + + /** 閫熷害(km/h) */ + @Excel(name = "閫熷害") + private Double speed; + + /** 鏂瑰悜(搴�) */ + @Excel(name = "鏂瑰悜") + private Double direction; + + /** 閲囬泦鏃堕棿 */ + @Excel(name = "閲囬泦鏃堕棿", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private String collectTime; + + public void setGpsId(Long gpsId) { + this.gpsId = gpsId; + } + + public Long getGpsId() { + return gpsId; + } + + public void setVehicleId(Long vehicleId) { + this.vehicleId = vehicleId; + } + + public Long getVehicleId() { + return vehicleId; + } + + public void setVehicleNo(String vehicleNo) { + this.vehicleNo = vehicleNo; + } + + public String getVehicleNo() { + return vehicleNo; + } + + public void setLongitude(Double longitude) { + this.longitude = longitude; + } + + public Double getLongitude() { + return longitude; + } + + public void setLatitude(Double latitude) { + this.latitude = latitude; + } + + public Double getLatitude() { + return latitude; + } + + public void setAltitude(Double altitude) { + this.altitude = altitude; + } + + public Double getAltitude() { + return altitude; + } + + public void setSpeed(Double speed) { + this.speed = speed; + } + + public Double getSpeed() { + return speed; + } + + public void setDirection(Double direction) { + this.direction = direction; + } + + public Double getDirection() { + return direction; + } + + public void setCollectTime(String collectTime) { + this.collectTime = collectTime; + } + + public String getCollectTime() { + return collectTime; + } + + @Override + public String toString() { + return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE) + .append("gpsId", getGpsId()) + .append("vehicleId", getVehicleId()) + .append("vehicleNo", getVehicleNo()) + .append("longitude", getLongitude()) + .append("latitude", getLatitude()) + .append("altitude", getAltitude()) + .append("speed", getSpeed()) + .append("direction", getDirection()) + .append("collectTime", getCollectTime()) + .append("createTime", getCreateTime()) + .toString(); + } +} \ No newline at end of file diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/VehicleInfo.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/VehicleInfo.java new file mode 100644 index 0000000..359b3c1 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/VehicleInfo.java @@ -0,0 +1,101 @@ +package com.ruoyi.system.domain; + +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; +import com.ruoyi.common.annotation.Excel; +import com.ruoyi.common.core.domain.BaseEntity; + +/** + * 杞﹁締淇℃伅瀵硅薄 tb_vehicle_info + */ +public class VehicleInfo extends BaseEntity { + private static final long serialVersionUID = 1L; + + /** 杞﹁締ID */ + private Long vehicleId; + + /** 杞︾墝鍙� */ + @Excel(name = "杞︾墝鍙�") + private String vehicleNo; + + /** 杞﹁締绫诲瀷 */ + @Excel(name = "杞﹁締绫诲瀷") + private String vehicleType; + + /** 杞﹁締鍝佺墝 */ + @Excel(name = "杞﹁締鍝佺墝") + private String vehicleBrand; + + /** 杞﹁締鍨嬪彿 */ + @Excel(name = "杞﹁締鍨嬪彿") + private String vehicleModel; + + /** 鐘舵�侊紙0姝e父 1鍋滅敤锛� */ + @Excel(name = "鐘舵��", readConverterExp = "0=姝e父,1=鍋滅敤") + private String status; + + public void setVehicleId(Long vehicleId) { + this.vehicleId = vehicleId; + } + + public Long getVehicleId() { + return vehicleId; + } + + public void setVehicleNo(String vehicleNo) { + this.vehicleNo = vehicleNo; + } + + public String getVehicleNo() { + return vehicleNo; + } + + public void setVehicleType(String vehicleType) { + this.vehicleType = vehicleType; + } + + public String getVehicleType() { + return vehicleType; + } + + public void setVehicleBrand(String vehicleBrand) { + this.vehicleBrand = vehicleBrand; + } + + public String getVehicleBrand() { + return vehicleBrand; + } + + public void setVehicleModel(String vehicleModel) { + this.vehicleModel = vehicleModel; + } + + public String getVehicleModel() { + return vehicleModel; + } + + public void setStatus(String status) { + this.status = status; + } + + public String getStatus() { + return status; + } + + @Override + public String toString() { + return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE) + .append("vehicleId", getVehicleId()) + .append("vehicleNo", getVehicleNo()) + .append("vehicleType", getVehicleType()) + .append("vehicleBrand", getVehicleBrand()) + .append("vehicleModel", getVehicleModel()) + .append("status", getStatus()) + .append("createBy", getCreateBy()) + .append("createTime", getCreateTime()) + .append("updateBy", getUpdateBy()) + .append("updateTime", getUpdateTime()) + .append("remark", getRemark()) + .toString(); + } +} \ No newline at end of file diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/exception/ServiceException.java b/ruoyi-system/src/main/java/com/ruoyi/system/exception/ServiceException.java new file mode 100644 index 0000000..7e6eb5e --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/exception/ServiceException.java @@ -0,0 +1,55 @@ +package com.ruoyi.system.exception; + +/** + * 涓氬姟寮傚父绫� + */ +public class ServiceException extends RuntimeException { + private static final long serialVersionUID = 1L; + + /** + * 閿欒鐮� + */ + private Integer code; + + /** + * 閿欒鎻愮ず + */ + private String message; + + /** + * 閿欒鏄庣粏锛屽唴閮ㄨ皟璇曢敊璇� + */ + private String detailMessage; + + /** + * 绌烘瀯閫犳柟娉曪紝閬垮厤鍙嶅簭鍒楀寲闂 + */ + public ServiceException() { + } + + public ServiceException(String message) { + this.message = message; + } + + public ServiceException(String message, Integer code) { + this.message = message; + this.code = code; + } + + public String getDetailMessage() { + return detailMessage; + } + + public String getMessage() { + return message; + } + + public Integer getCode() { + return code; + } + + public ServiceException setDetailMessage(String detailMessage) { + this.detailMessage = detailMessage; + return this; + } +} \ No newline at end of file diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/GpsCollectLogMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/GpsCollectLogMapper.java new file mode 100644 index 0000000..67aeb8a --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/GpsCollectLogMapper.java @@ -0,0 +1,44 @@ +package com.ruoyi.system.mapper; + +import java.util.List; +import com.ruoyi.system.domain.GpsCollectLog; + +/** + * GPS閲囬泦鏃ュ織Mapper鎺ュ彛 + */ +public interface GpsCollectLogMapper { + /** + * 鏌ヨGPS閲囬泦鏃ュ織 + */ + public GpsCollectLog selectGpsCollectLogById(Long logId); + + /** + * 鏌ヨGPS閲囬泦鏃ュ織鍒楄〃 + */ + public List<GpsCollectLog> selectGpsCollectLogList(GpsCollectLog gpsCollectLog); + + /** + * 鏂板GPS閲囬泦鏃ュ織 + */ + public int insertGpsCollectLog(GpsCollectLog gpsCollectLog); + + /** + * 淇敼GPS閲囬泦鏃ュ織 + */ + public int updateGpsCollectLog(GpsCollectLog gpsCollectLog); + + /** + * 鍒犻櫎GPS閲囬泦鏃ュ織 + */ + public int deleteGpsCollectLogById(Long logId); + + /** + * 鎵归噺鍒犻櫎GPS閲囬泦鏃ュ織 + */ + public int deleteGpsCollectLogByIds(Long[] logIds); + + /** + * 鏍规嵁杞︾墝鍙疯幏鍙栬溅杈咺D + */ + public Long getVehicleIdByNo(String vehicleNo); +} \ No newline at end of file diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/VehicleGpsMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/VehicleGpsMapper.java new file mode 100644 index 0000000..fb1310c --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/VehicleGpsMapper.java @@ -0,0 +1,44 @@ +package com.ruoyi.system.mapper; + +import java.util.List; +import com.ruoyi.system.domain.VehicleGps; + +/** + * 杞﹁締GPS鍧愭爣Mapper鎺ュ彛 + */ +public interface VehicleGpsMapper { + /** + * 鏌ヨ杞﹁締GPS鍧愭爣 + */ + public VehicleGps selectVehicleGpsById(Long gpsId); + + /** + * 鏌ヨ杞﹁締GPS鍧愭爣鍒楄〃 + */ + public List<VehicleGps> selectVehicleGpsList(VehicleGps vehicleGps); + + /** + * 鏂板杞﹁締GPS鍧愭爣 + */ + public int insertVehicleGps(VehicleGps vehicleGps); + + /** + * 淇敼杞﹁締GPS鍧愭爣 + */ + public int updateVehicleGps(VehicleGps vehicleGps); + + /** + * 鍒犻櫎杞﹁締GPS鍧愭爣 + */ + public int deleteVehicleGpsById(Long gpsId); + + /** + * 鎵归噺鍒犻櫎杞﹁締GPS鍧愭爣 + */ + public int deleteVehicleGpsByIds(Long[] gpsIds); + + /** + * 鏍规嵁杞︾墝鍙疯幏鍙栬溅杈咺D + */ + public Long getVehicleIdByNo(String vehicleNo); +} \ No newline at end of file diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/VehicleInfoMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/VehicleInfoMapper.java new file mode 100644 index 0000000..8af5386 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/VehicleInfoMapper.java @@ -0,0 +1,39 @@ +package com.ruoyi.system.mapper; + +import java.util.List; +import com.ruoyi.system.domain.VehicleInfo; + +/** + * 杞﹁締淇℃伅Mapper鎺ュ彛 + */ +public interface VehicleInfoMapper { + /** + * 鏌ヨ杞﹁締淇℃伅 + */ + public VehicleInfo selectVehicleInfoById(Long vehicleId); + + /** + * 鏌ヨ杞﹁締淇℃伅鍒楄〃 + */ + public List<VehicleInfo> selectVehicleInfoList(VehicleInfo vehicleInfo); + + /** + * 鏂板杞﹁締淇℃伅 + */ + public int insertVehicleInfo(VehicleInfo vehicleInfo); + + /** + * 淇敼杞﹁締淇℃伅 + */ + public int updateVehicleInfo(VehicleInfo vehicleInfo); + + /** + * 鍒犻櫎杞﹁締淇℃伅 + */ + public int deleteVehicleInfoById(Long vehicleId); + + /** + * 鎵归噺鍒犻櫎杞﹁締淇℃伅 + */ + public int deleteVehicleInfoByIds(Long[] vehicleIds); +} \ No newline at end of file diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/IGpsCollectLogService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/IGpsCollectLogService.java new file mode 100644 index 0000000..8f3b0a9 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/IGpsCollectLogService.java @@ -0,0 +1,39 @@ +package com.ruoyi.system.service; + +import java.util.List; +import com.ruoyi.system.domain.GpsCollectLog; + +/** + * GPS閲囬泦鏃ュ織Service鎺ュ彛 + */ +public interface IGpsCollectLogService { + /** + * 鏌ヨGPS閲囬泦鏃ュ織 + */ + public GpsCollectLog selectGpsCollectLogById(Long logId); + + /** + * 鏌ヨGPS閲囬泦鏃ュ織鍒楄〃 + */ + public List<GpsCollectLog> selectGpsCollectLogList(GpsCollectLog gpsCollectLog); + + /** + * 鏂板GPS閲囬泦鏃ュ織 + */ + public int insertGpsCollectLog(GpsCollectLog gpsCollectLog); + + /** + * 淇敼GPS閲囬泦鏃ュ織 + */ + public int updateGpsCollectLog(GpsCollectLog gpsCollectLog); + + /** + * 鎵归噺鍒犻櫎GPS閲囬泦鏃ュ織 + */ + public int deleteGpsCollectLogByIds(Long[] logIds); + + /** + * 鍒犻櫎GPS閲囬泦鏃ュ織淇℃伅 + */ + public int deleteGpsCollectLogById(Long logId); +} \ No newline at end of file diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/IVehicleGpsService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/IVehicleGpsService.java new file mode 100644 index 0000000..061954d --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/IVehicleGpsService.java @@ -0,0 +1,39 @@ +package com.ruoyi.system.service; + +import java.util.List; +import com.ruoyi.system.domain.VehicleGps; + +/** + * 杞﹁締GPS鍧愭爣Service鎺ュ彛 + */ +public interface IVehicleGpsService { + /** + * 鏌ヨ杞﹁締GPS鍧愭爣 + */ + public VehicleGps selectVehicleGpsById(Long gpsId); + + /** + * 鏌ヨ杞﹁締GPS鍧愭爣鍒楄〃 + */ + public List<VehicleGps> selectVehicleGpsList(VehicleGps vehicleGps); + + /** + * 鏂板杞﹁締GPS鍧愭爣 + */ + public int insertVehicleGps(VehicleGps vehicleGps); + + /** + * 淇敼杞﹁締GPS鍧愭爣 + */ + public int updateVehicleGps(VehicleGps vehicleGps); + + /** + * 鎵归噺鍒犻櫎杞﹁締GPS鍧愭爣 + */ + public int deleteVehicleGpsByIds(Long[] gpsIds); + + /** + * 鍒犻櫎杞﹁締GPS鍧愭爣淇℃伅 + */ + public int deleteVehicleGpsById(Long gpsId); +} \ No newline at end of file diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/IVehicleInfoService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/IVehicleInfoService.java new file mode 100644 index 0000000..d2f5927 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/IVehicleInfoService.java @@ -0,0 +1,39 @@ +package com.ruoyi.system.service; + +import java.util.List; +import com.ruoyi.system.domain.VehicleInfo; + +/** + * 杞﹁締淇℃伅Service鎺ュ彛 + */ +public interface IVehicleInfoService { + /** + * 鏌ヨ杞﹁締淇℃伅 + */ + public VehicleInfo selectVehicleInfoById(Long vehicleId); + + /** + * 鏌ヨ杞﹁締淇℃伅鍒楄〃 + */ + public List<VehicleInfo> selectVehicleInfoList(VehicleInfo vehicleInfo); + + /** + * 鏂板杞﹁締淇℃伅 + */ + public int insertVehicleInfo(VehicleInfo vehicleInfo); + + /** + * 淇敼杞﹁締淇℃伅 + */ + public int updateVehicleInfo(VehicleInfo vehicleInfo); + + /** + * 鎵归噺鍒犻櫎杞﹁締淇℃伅 + */ + public int deleteVehicleInfoByIds(Long[] vehicleIds); + + /** + * 鍒犻櫎杞﹁締淇℃伅淇℃伅 + */ + public int deleteVehicleInfoById(Long vehicleId); +} \ No newline at end of file diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/GpsCollectLogServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/GpsCollectLogServiceImpl.java new file mode 100644 index 0000000..645e960 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/GpsCollectLogServiceImpl.java @@ -0,0 +1,78 @@ +package com.ruoyi.system.service.impl; + +import java.util.List; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.ruoyi.system.mapper.GpsCollectLogMapper; +import com.ruoyi.system.domain.GpsCollectLog; +import com.ruoyi.system.service.IGpsCollectLogService; +import com.ruoyi.system.exception.ServiceException; + +/** + * GPS閲囬泦鏃ュ織Service涓氬姟灞傚鐞� + */ +@Service +public class GpsCollectLogServiceImpl implements IGpsCollectLogService { + @Autowired + private GpsCollectLogMapper gpsCollectLogMapper; + + /** + * 鏌ヨGPS閲囬泦鏃ュ織 + */ + @Override + public GpsCollectLog selectGpsCollectLogById(Long logId) { + return gpsCollectLogMapper.selectGpsCollectLogById(logId); + } + + /** + * 鏌ヨGPS閲囬泦鏃ュ織鍒楄〃 + */ + @Override + public List<GpsCollectLog> selectGpsCollectLogList(GpsCollectLog gpsCollectLog) { + return gpsCollectLogMapper.selectGpsCollectLogList(gpsCollectLog); + } + + /** + * 鏂板GPS閲囬泦鏃ュ織 + */ + @Override + public int insertGpsCollectLog(GpsCollectLog gpsCollectLog) { + // 鏍规嵁杞︾墝鍙疯幏鍙栬溅杈咺D + Long vehicleId = gpsCollectLogMapper.getVehicleIdByNo(gpsCollectLog.getVehicleNo()); + if (vehicleId == null) { + throw new ServiceException("鏈壘鍒板搴旂殑杞﹁締淇℃伅"); + } + gpsCollectLog.setVehicleId(vehicleId); + return gpsCollectLogMapper.insertGpsCollectLog(gpsCollectLog); + } + + /** + * 淇敼GPS閲囬泦鏃ュ織 + */ + @Override + public int updateGpsCollectLog(GpsCollectLog gpsCollectLog) { + // 鏍规嵁杞︾墝鍙疯幏鍙栬溅杈咺D + Long vehicleId = gpsCollectLogMapper.getVehicleIdByNo(gpsCollectLog.getVehicleNo()); + if (vehicleId == null) { + throw new ServiceException("鏈壘鍒板搴旂殑杞﹁締淇℃伅"); + } + gpsCollectLog.setVehicleId(vehicleId); + return gpsCollectLogMapper.updateGpsCollectLog(gpsCollectLog); + } + + /** + * 鎵归噺鍒犻櫎GPS閲囬泦鏃ュ織 + */ + @Override + public int deleteGpsCollectLogByIds(Long[] logIds) { + return gpsCollectLogMapper.deleteGpsCollectLogByIds(logIds); + } + + /** + * 鍒犻櫎GPS閲囬泦鏃ュ織淇℃伅 + */ + @Override + public int deleteGpsCollectLogById(Long logId) { + return gpsCollectLogMapper.deleteGpsCollectLogById(logId); + } +} \ No newline at end of file diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/VehicleGpsServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/VehicleGpsServiceImpl.java new file mode 100644 index 0000000..7dcfb56 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/VehicleGpsServiceImpl.java @@ -0,0 +1,78 @@ +package com.ruoyi.system.service.impl; + +import java.util.List; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.ruoyi.system.mapper.VehicleGpsMapper; +import com.ruoyi.system.domain.VehicleGps; +import com.ruoyi.system.service.IVehicleGpsService; +import com.ruoyi.system.exception.ServiceException; + +/** + * 杞﹁締GPS鍧愭爣Service涓氬姟灞傚鐞� + */ +@Service +public class VehicleGpsServiceImpl implements IVehicleGpsService { + @Autowired + private VehicleGpsMapper vehicleGpsMapper; + + /** + * 鏌ヨ杞﹁締GPS鍧愭爣 + */ + @Override + public VehicleGps selectVehicleGpsById(Long gpsId) { + return vehicleGpsMapper.selectVehicleGpsById(gpsId); + } + + /** + * 鏌ヨ杞﹁締GPS鍧愭爣鍒楄〃 + */ + @Override + public List<VehicleGps> selectVehicleGpsList(VehicleGps vehicleGps) { + return vehicleGpsMapper.selectVehicleGpsList(vehicleGps); + } + + /** + * 鏂板杞﹁締GPS鍧愭爣 + */ + @Override + public int insertVehicleGps(VehicleGps vehicleGps) { + // 鏍规嵁杞︾墝鍙疯幏鍙栬溅杈咺D + Long vehicleId = vehicleGpsMapper.getVehicleIdByNo(vehicleGps.getVehicleNo()); + if (vehicleId == null) { + throw new ServiceException("鏈壘鍒板搴旂殑杞﹁締淇℃伅"); + } + vehicleGps.setVehicleId(vehicleId); + return vehicleGpsMapper.insertVehicleGps(vehicleGps); + } + + /** + * 淇敼杞﹁締GPS鍧愭爣 + */ + @Override + public int updateVehicleGps(VehicleGps vehicleGps) { + // 鏍规嵁杞︾墝鍙疯幏鍙栬溅杈咺D + Long vehicleId = vehicleGpsMapper.getVehicleIdByNo(vehicleGps.getVehicleNo()); + if (vehicleId == null) { + throw new ServiceException("鏈壘鍒板搴旂殑杞﹁締淇℃伅"); + } + vehicleGps.setVehicleId(vehicleId); + return vehicleGpsMapper.updateVehicleGps(vehicleGps); + } + + /** + * 鎵归噺鍒犻櫎杞﹁締GPS鍧愭爣 + */ + @Override + public int deleteVehicleGpsByIds(Long[] gpsIds) { + return vehicleGpsMapper.deleteVehicleGpsByIds(gpsIds); + } + + /** + * 鍒犻櫎杞﹁締GPS鍧愭爣淇℃伅 + */ + @Override + public int deleteVehicleGpsById(Long gpsId) { + return vehicleGpsMapper.deleteVehicleGpsById(gpsId); + } +} \ No newline at end of file diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/VehicleInfoServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/VehicleInfoServiceImpl.java new file mode 100644 index 0000000..c40b283 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/VehicleInfoServiceImpl.java @@ -0,0 +1,65 @@ +package com.ruoyi.system.service.impl; + +import java.util.List; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.ruoyi.system.mapper.VehicleInfoMapper; +import com.ruoyi.system.domain.VehicleInfo; +import com.ruoyi.system.service.IVehicleInfoService; + +/** + * 杞﹁締淇℃伅Service涓氬姟灞傚鐞� + */ +@Service +public class VehicleInfoServiceImpl implements IVehicleInfoService { + @Autowired + private VehicleInfoMapper vehicleInfoMapper; + + /** + * 鏌ヨ杞﹁締淇℃伅 + */ + @Override + public VehicleInfo selectVehicleInfoById(Long vehicleId) { + return vehicleInfoMapper.selectVehicleInfoById(vehicleId); + } + + /** + * 鏌ヨ杞﹁締淇℃伅鍒楄〃 + */ + @Override + public List<VehicleInfo> selectVehicleInfoList(VehicleInfo vehicleInfo) { + return vehicleInfoMapper.selectVehicleInfoList(vehicleInfo); + } + + /** + * 鏂板杞﹁締淇℃伅 + */ + @Override + public int insertVehicleInfo(VehicleInfo vehicleInfo) { + return vehicleInfoMapper.insertVehicleInfo(vehicleInfo); + } + + /** + * 淇敼杞﹁締淇℃伅 + */ + @Override + public int updateVehicleInfo(VehicleInfo vehicleInfo) { + return vehicleInfoMapper.updateVehicleInfo(vehicleInfo); + } + + /** + * 鎵归噺鍒犻櫎杞﹁締淇℃伅 + */ + @Override + public int deleteVehicleInfoByIds(Long[] vehicleIds) { + return vehicleInfoMapper.deleteVehicleInfoByIds(vehicleIds); + } + + /** + * 鍒犻櫎杞﹁締淇℃伅淇℃伅 + */ + @Override + public int deleteVehicleInfoById(Long vehicleId) { + return vehicleInfoMapper.deleteVehicleInfoById(vehicleId); + } +} \ No newline at end of file diff --git a/ruoyi-system/src/main/resources/mapper/system/GpsCollectLogMapper.xml b/ruoyi-system/src/main/resources/mapper/system/GpsCollectLogMapper.xml new file mode 100644 index 0000000..3d03992 --- /dev/null +++ b/ruoyi-system/src/main/resources/mapper/system/GpsCollectLogMapper.xml @@ -0,0 +1,88 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<!DOCTYPE mapper +PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" +"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="com.ruoyi.system.mapper.GpsCollectLogMapper"> + + <resultMap type="GpsCollectLog" id="GpsCollectLogResult"> + <result property="logId" column="log_id" /> + <result property="vehicleId" column="vehicle_id" /> + <result property="vehicleNo" column="vehicle_no" /> + <result property="collectType" column="collect_type" /> + <result property="collectStatus" column="collect_status" /> + <result property="errorMsg" column="error_msg" /> + <result property="collectTime" column="collect_time" /> + <result property="createTime" column="create_time" /> + </resultMap> + + <sql id="selectGpsCollectLogVo"> + select l.log_id, l.vehicle_id, v.vehicle_no, l.collect_type, l.collect_status, l.error_msg, l.collect_time, l.create_time + from tb_gps_collect_log l + left join tb_vehicle_info v on l.vehicle_id = v.vehicle_id + </sql> + + <select id="selectGpsCollectLogList" parameterType="GpsCollectLog" resultMap="GpsCollectLogResult"> + <include refid="selectGpsCollectLogVo"/> + <where> + <if test="vehicleId != null "> and l.vehicle_id = #{vehicleId}</if> + <if test="vehicleNo != null and vehicleNo != ''"> and v.vehicle_no like concat('%', #{vehicleNo}, '%')</if> + <if test="collectType != null and collectType != ''"> and l.collect_type = #{collectType}</if> + <if test="collectStatus != null and collectStatus != ''"> and l.collect_status = #{collectStatus}</if> + <if test="errorMsg != null and errorMsg != ''"> and l.error_msg like concat('%', #{errorMsg}, '%')</if> + <if test="collectTime != null and collectTime != ''"> and l.collect_time = #{collectTime}</if> + </where> + </select> + + <select id="selectGpsCollectLogById" parameterType="Long" resultMap="GpsCollectLogResult"> + <include refid="selectGpsCollectLogVo"/> + where log_id = #{logId} + </select> + + <insert id="insertGpsCollectLog" parameterType="GpsCollectLog" useGeneratedKeys="true" keyProperty="logId"> + insert into tb_gps_collect_log + <trim prefix="(" suffix=")" suffixOverrides=","> + <if test="vehicleId != null">vehicle_id,</if> + <if test="collectType != null">collect_type,</if> + <if test="collectStatus != null">collect_status,</if> + <if test="errorMsg != null">error_msg,</if> + <if test="collectTime != null">collect_time,</if> + <if test="createTime != null">create_time,</if> + </trim> + <trim prefix="values (" suffix=")" suffixOverrides=","> + <if test="vehicleId != null">#{vehicleId},</if> + <if test="collectType != null">#{collectType},</if> + <if test="collectStatus != null">#{collectStatus},</if> + <if test="errorMsg != null">#{errorMsg},</if> + <if test="collectTime != null">#{collectTime},</if> + <if test="createTime != null">#{createTime},</if> + </trim> + </insert> + + <select id="getVehicleIdByNo" parameterType="String" resultType="Long"> + select vehicle_id from tb_vehicle_info where vehicle_no = #{vehicleNo} + </select> + + <update id="updateGpsCollectLog" parameterType="GpsCollectLog"> + update tb_gps_collect_log + <trim prefix="SET" suffixOverrides=","> + <if test="vehicleId != null">vehicle_id = #{vehicleId},</if> + <if test="collectType != null">collect_type = #{collectType},</if> + <if test="collectStatus != null">collect_status = #{collectStatus},</if> + <if test="errorMsg != null">error_msg = #{errorMsg},</if> + <if test="collectTime != null">collect_time = #{collectTime},</if> + <if test="createTime != null">create_time = #{createTime},</if> + </trim> + where log_id = #{logId} + </update> + + <delete id="deleteGpsCollectLogById" parameterType="Long"> + delete from tb_gps_collect_log where log_id = #{logId} + </delete> + + <delete id="deleteGpsCollectLogByIds" parameterType="String"> + delete from tb_gps_collect_log where log_id in + <foreach item="logId" collection="array" open="(" separator="," close=")"> + #{logId} + </foreach> + </delete> +</mapper> \ No newline at end of file diff --git a/ruoyi-system/src/main/resources/mapper/system/VehicleGpsMapper.xml b/ruoyi-system/src/main/resources/mapper/system/VehicleGpsMapper.xml new file mode 100644 index 0000000..e899130 --- /dev/null +++ b/ruoyi-system/src/main/resources/mapper/system/VehicleGpsMapper.xml @@ -0,0 +1,98 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<!DOCTYPE mapper +PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" +"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="com.ruoyi.system.mapper.VehicleGpsMapper"> + + <resultMap type="VehicleGps" id="VehicleGpsResult"> + <result property="gpsId" column="gps_id" /> + <result property="vehicleId" column="vehicle_id" /> + <result property="vehicleNo" column="vehicle_no" /> + <result property="longitude" column="longitude" /> + <result property="latitude" column="latitude" /> + <result property="altitude" column="altitude" /> + <result property="speed" column="speed" /> + <result property="direction" column="direction" /> + <result property="collectTime" column="collect_time" /> + <result property="createTime" column="create_time" /> + </resultMap> + + <sql id="selectVehicleGpsVo"> + select g.gps_id, g.vehicle_id, v.vehicle_no, g.longitude, g.latitude, g.altitude, g.speed, g.direction, g.collect_time, g.create_time + from tb_vehicle_gps g + left join tb_vehicle_info v on g.vehicle_id = v.vehicle_id + </sql> + + <select id="selectVehicleGpsList" parameterType="VehicleGps" resultMap="VehicleGpsResult"> + <include refid="selectVehicleGpsVo"/> + <where> + <if test="vehicleId != null "> and g.vehicle_id = #{vehicleId}</if> + <if test="vehicleNo != null and vehicleNo != ''"> and v.vehicle_no like concat('%', #{vehicleNo}, '%')</if> + <if test="longitude != null "> and g.longitude = #{longitude}</if> + <if test="latitude != null "> and g.latitude = #{latitude}</if> + <if test="altitude != null "> and g.altitude = #{altitude}</if> + <if test="speed != null "> and g.speed = #{speed}</if> + <if test="direction != null "> and g.direction = #{direction}</if> + <if test="collectTime != null and collectTime != ''"> and g.collect_time = #{collectTime}</if> + </where> + </select> + + <select id="selectVehicleGpsById" parameterType="Long" resultMap="VehicleGpsResult"> + <include refid="selectVehicleGpsVo"/> + where gps_id = #{gpsId} + </select> + + <insert id="insertVehicleGps" parameterType="VehicleGps" useGeneratedKeys="true" keyProperty="gpsId"> + insert into tb_vehicle_gps + <trim prefix="(" suffix=")" suffixOverrides=","> + <if test="vehicleId != null">vehicle_id,</if> + <if test="longitude != null">longitude,</if> + <if test="latitude != null">latitude,</if> + <if test="altitude != null">altitude,</if> + <if test="speed != null">speed,</if> + <if test="direction != null">direction,</if> + <if test="collectTime != null">collect_time,</if> + <if test="createTime != null">create_time,</if> + </trim> + <trim prefix="values (" suffix=")" suffixOverrides=","> + <if test="vehicleId != null">#{vehicleId},</if> + <if test="longitude != null">#{longitude},</if> + <if test="latitude != null">#{latitude},</if> + <if test="altitude != null">#{altitude},</if> + <if test="speed != null">#{speed},</if> + <if test="direction != null">#{direction},</if> + <if test="collectTime != null">#{collectTime},</if> + <if test="createTime != null">#{createTime},</if> + </trim> + </insert> + + <update id="updateVehicleGps" parameterType="VehicleGps"> + update tb_vehicle_gps + <trim prefix="SET" suffixOverrides=","> + <if test="vehicleId != null">vehicle_id = #{vehicleId},</if> + <if test="longitude != null">longitude = #{longitude},</if> + <if test="latitude != null">latitude = #{latitude},</if> + <if test="altitude != null">altitude = #{altitude},</if> + <if test="speed != null">speed = #{speed},</if> + <if test="direction != null">direction = #{direction},</if> + <if test="collectTime != null">collect_time = #{collectTime},</if> + <if test="createTime != null">create_time = #{createTime},</if> + </trim> + where gps_id = #{gpsId} + </update> + + <delete id="deleteVehicleGpsById" parameterType="Long"> + delete from tb_vehicle_gps where gps_id = #{gpsId} + </delete> + + <delete id="deleteVehicleGpsByIds" parameterType="String"> + delete from tb_vehicle_gps where gps_id in + <foreach item="gpsId" collection="array" open="(" separator="," close=")"> + #{gpsId} + </foreach> + </delete> + + <select id="getVehicleIdByNo" parameterType="String" resultType="Long"> + select vehicle_id from tb_vehicle_info where vehicle_no = #{vehicleNo} + </select> +</mapper> \ No newline at end of file diff --git a/ruoyi-system/src/main/resources/mapper/system/VehicleInfoMapper.xml b/ruoyi-system/src/main/resources/mapper/system/VehicleInfoMapper.xml new file mode 100644 index 0000000..844a0f5 --- /dev/null +++ b/ruoyi-system/src/main/resources/mapper/system/VehicleInfoMapper.xml @@ -0,0 +1,96 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<!DOCTYPE mapper +PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" +"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="com.ruoyi.system.mapper.VehicleInfoMapper"> + + <resultMap type="VehicleInfo" id="VehicleInfoResult"> + <result property="vehicleId" column="vehicle_id" /> + <result property="vehicleNo" column="vehicle_no" /> + <result property="vehicleType" column="vehicle_type" /> + <result property="vehicleBrand" column="vehicle_brand" /> + <result property="vehicleModel" column="vehicle_model" /> + <result property="status" column="status" /> + <result property="createBy" column="create_by" /> + <result property="createTime" column="create_time" /> + <result property="updateBy" column="update_by" /> + <result property="updateTime" column="update_time" /> + <result property="remark" column="remark" /> + </resultMap> + + <sql id="selectVehicleInfoVo"> + select vehicle_id, vehicle_no, vehicle_type, vehicle_brand, vehicle_model, status, create_by, create_time, update_by, update_time, remark from tb_vehicle_info + </sql> + + <select id="selectVehicleInfoList" parameterType="VehicleInfo" resultMap="VehicleInfoResult"> + <include refid="selectVehicleInfoVo"/> + <where> + <if test="vehicleNo != null and vehicleNo != ''"> and vehicle_no like concat('%', #{vehicleNo}, '%')</if> + <if test="vehicleType != null and vehicleType != ''"> and vehicle_type = #{vehicleType}</if> + <if test="vehicleBrand != null and vehicleBrand != ''"> and vehicle_brand = #{vehicleBrand}</if> + <if test="vehicleModel != null and vehicleModel != ''"> and vehicle_model = #{vehicleModel}</if> + <if test="status != null and status != ''"> and status = #{status}</if> + </where> + </select> + + <select id="selectVehicleInfoById" parameterType="Long" resultMap="VehicleInfoResult"> + <include refid="selectVehicleInfoVo"/> + where vehicle_id = #{vehicleId} + </select> + + <insert id="insertVehicleInfo" parameterType="VehicleInfo" useGeneratedKeys="true" keyProperty="vehicleId"> + insert into tb_vehicle_info + <trim prefix="(" suffix=")" suffixOverrides=","> + <if test="vehicleNo != null">vehicle_no,</if> + <if test="vehicleType != null">vehicle_type,</if> + <if test="vehicleBrand != null">vehicle_brand,</if> + <if test="vehicleModel != null">vehicle_model,</if> + <if test="status != null">status,</if> + <if test="createBy != null">create_by,</if> + <if test="createTime != null">create_time,</if> + <if test="updateBy != null">update_by,</if> + <if test="updateTime != null">update_time,</if> + <if test="remark != null">remark,</if> + </trim> + <trim prefix="values (" suffix=")" suffixOverrides=","> + <if test="vehicleNo != null">#{vehicleNo},</if> + <if test="vehicleType != null">#{vehicleType},</if> + <if test="vehicleBrand != null">#{vehicleBrand},</if> + <if test="vehicleModel != null">#{vehicleModel},</if> + <if test="status != null">#{status},</if> + <if test="createBy != null">#{createBy},</if> + <if test="createTime != null">#{createTime},</if> + <if test="updateBy != null">#{updateBy},</if> + <if test="updateTime != null">#{updateTime},</if> + <if test="remark != null">#{remark},</if> + </trim> + </insert> + + <update id="updateVehicleInfo" parameterType="VehicleInfo"> + update tb_vehicle_info + <trim prefix="SET" suffixOverrides=","> + <if test="vehicleNo != null">vehicle_no = #{vehicleNo},</if> + <if test="vehicleType != null">vehicle_type = #{vehicleType},</if> + <if test="vehicleBrand != null">vehicle_brand = #{vehicleBrand},</if> + <if test="vehicleModel != null">vehicle_model = #{vehicleModel},</if> + <if test="status != null">status = #{status},</if> + <if test="createBy != null">create_by = #{createBy},</if> + <if test="createTime != null">create_time = #{createTime},</if> + <if test="updateBy != null">update_by = #{updateBy},</if> + <if test="updateTime != null">update_time = #{updateTime},</if> + <if test="remark != null">remark = #{remark},</if> + </trim> + where vehicle_id = #{vehicleId} + </update> + + <delete id="deleteVehicleInfoById" parameterType="Long"> + delete from tb_vehicle_info where vehicle_id = #{vehicleId} + </delete> + + <delete id="deleteVehicleInfoByIds" parameterType="String"> + delete from tb_vehicle_info where vehicle_id in + <foreach item="vehicleId" collection="array" open="(" separator="," close=")"> + #{vehicleId} + </foreach> + </delete> +</mapper> \ No newline at end of file diff --git a/ruoyi-ui/src/api/system/gps.js b/ruoyi-ui/src/api/system/gps.js new file mode 100644 index 0000000..20ec35a --- /dev/null +++ b/ruoyi-ui/src/api/system/gps.js @@ -0,0 +1,53 @@ +import request from '@/utils/request' + +// 鏌ヨGPS鍧愭爣鍒楄〃 +export function listGps(query) { + return request({ + url: '/system/gps/list', + method: 'get', + params: query + }) +} + +// 鏌ヨGPS鍧愭爣璇︾粏 +export function getGps(gpsId) { + return request({ + url: '/system/gps/' + gpsId, + method: 'get' + }) +} + +// 鏂板GPS鍧愭爣 +export function addGps(data) { + return request({ + url: '/system/gps', + method: 'post', + data: data + }) +} + +// 淇敼GPS鍧愭爣 +export function updateGps(data) { + return request({ + url: '/system/gps', + method: 'put', + data: data + }) +} + +// 鍒犻櫎GPS鍧愭爣 +export function delGps(gpsId) { + return request({ + url: '/system/gps/' + gpsId, + method: 'delete' + }) +} + +// 瀵煎嚭GPS鍧愭爣 +export function exportGps(query) { + return request({ + url: '/system/gps/export', + method: 'get', + params: query + }) +} \ No newline at end of file diff --git a/ruoyi-ui/src/api/system/gpslog.js b/ruoyi-ui/src/api/system/gpslog.js new file mode 100644 index 0000000..69ea4f6 --- /dev/null +++ b/ruoyi-ui/src/api/system/gpslog.js @@ -0,0 +1,53 @@ +import request from '@/utils/request' + +// 鏌ヨGPS閲囬泦鏃ュ織鍒楄〃 +export function listGpsLog(query) { + return request({ + url: '/system/gpslog/list', + method: 'get', + params: query + }) +} + +// 鏌ヨGPS閲囬泦鏃ュ織璇︾粏 +export function getGpsLog(logId) { + return request({ + url: '/system/gpslog/' + logId, + method: 'get' + }) +} + +// 鏂板GPS閲囬泦鏃ュ織 +export function addGpsLog(data) { + return request({ + url: '/system/gpslog', + method: 'post', + data: data + }) +} + +// 淇敼GPS閲囬泦鏃ュ織 +export function updateGpsLog(data) { + return request({ + url: '/system/gpslog', + method: 'put', + data: data + }) +} + +// 鍒犻櫎GPS閲囬泦鏃ュ織 +export function delGpsLog(logId) { + return request({ + url: '/system/gpslog/' + logId, + method: 'delete' + }) +} + +// 瀵煎嚭GPS閲囬泦鏃ュ織 +export function exportGpsLog(query) { + return request({ + url: '/system/gpslog/export', + method: 'get', + params: query + }) +} \ No newline at end of file diff --git a/ruoyi-ui/src/api/system/vehicle.js b/ruoyi-ui/src/api/system/vehicle.js new file mode 100644 index 0000000..56f0627 --- /dev/null +++ b/ruoyi-ui/src/api/system/vehicle.js @@ -0,0 +1,53 @@ +import request from '@/utils/request' + +// 鏌ヨ杞﹁締淇℃伅鍒楄〃 +export function listVehicle(query) { + return request({ + url: '/system/vehicle/list', + method: 'get', + params: query + }) +} + +// 鏌ヨ杞﹁締淇℃伅璇︾粏 +export function getVehicle(vehicleId) { + return request({ + url: '/system/vehicle/' + vehicleId, + method: 'get' + }) +} + +// 鏂板杞﹁締淇℃伅 +export function addVehicle(data) { + return request({ + url: '/system/vehicle', + method: 'post', + data: data + }) +} + +// 淇敼杞﹁締淇℃伅 +export function updateVehicle(data) { + return request({ + url: '/system/vehicle', + method: 'put', + data: data + }) +} + +// 鍒犻櫎杞﹁締淇℃伅 +export function delVehicle(vehicleId) { + return request({ + url: '/system/vehicle/' + vehicleId, + method: 'delete' + }) +} + +// 瀵煎嚭杞﹁締淇℃伅 +export function exportVehicle(query) { + return request({ + url: '/system/vehicle/export', + method: 'get', + params: query + }) +} \ No newline at end of file diff --git a/ruoyi-ui/src/views/system/gps/index.vue b/ruoyi-ui/src/views/system/gps/index.vue new file mode 100644 index 0000000..e36349a --- /dev/null +++ b/ruoyi-ui/src/views/system/gps/index.vue @@ -0,0 +1,329 @@ +<template> + <div class="app-container"> + <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px"> + <el-form-item label="杞︾墝鍙�" prop="vehicleNo"> + <el-select v-model="queryParams.vehicleNo" placeholder="璇烽�夋嫨杞︾墝鍙�" clearable size="small"> + <el-option + v-for="item in vehicleOptions" + :key="item.vehicleId" + :label="item.vehicleNo" + :value="item.vehicleNo" + /> + </el-select> + </el-form-item> + <el-form-item label="閲囬泦鏃堕棿" prop="collectTime"> + <el-date-picker + v-model="queryParams.collectTime" + type="datetime" + placeholder="閫夋嫨閲囬泦鏃堕棿" + value-format="yyyy-MM-dd HH:mm:ss" + /> + </el-form-item> + <el-form-item> + <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">鎼滅储</el-button> + <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">閲嶇疆</el-button> + </el-form-item> + </el-form> + + <el-row :gutter="10" class="mb8"> + <el-col :span="1.5"> + <el-button + type="primary" + plain + icon="el-icon-plus" + size="mini" + @click="handleAdd" + v-hasPermi="['system:gps:add']" + >鏂板</el-button> + </el-col> + <el-col :span="1.5"> + <el-button + type="success" + plain + icon="el-icon-edit" + size="mini" + :disabled="single" + @click="handleUpdate" + v-hasPermi="['system:gps:edit']" + >淇敼</el-button> + </el-col> + <el-col :span="1.5"> + <el-button + type="danger" + plain + icon="el-icon-delete" + size="mini" + :disabled="multiple" + @click="handleDelete" + v-hasPermi="['system:gps:remove']" + >鍒犻櫎</el-button> + </el-col> + <el-col :span="1.5"> + <el-button + type="warning" + plain + icon="el-icon-download" + size="mini" + @click="handleExport" + v-hasPermi="['system:gps:export']" + >瀵煎嚭</el-button> + </el-col> + <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> + </el-row> + + <el-table v-loading="loading" :data="gpsList" @selection-change="handleSelectionChange"> + <el-table-column type="selection" width="55" align="center" /> + <el-table-column label="GPS璁板綍ID" align="center" prop="gpsId" /> + <el-table-column label="杞︾墝鍙�" align="center" prop="vehicleNo" /> + <el-table-column label="缁忓害" align="center" prop="longitude" /> + <el-table-column label="绾害" align="center" prop="latitude" /> + <el-table-column label="娴锋嫈" align="center" prop="altitude" /> + <el-table-column label="閫熷害" align="center" prop="speed" /> + <el-table-column label="鏂瑰悜" align="center" prop="direction" /> + <el-table-column label="閲囬泦鏃堕棿" align="center" prop="collectTime" width="180"> + <template slot-scope="scope"> + <span>{{ parseTime(scope.row.collectTime) }}</span> + </template> + </el-table-column> + <el-table-column label="鎿嶄綔" align="center" class-name="small-padding fixed-width"> + <template slot-scope="scope"> + <el-button + size="mini" + type="text" + icon="el-icon-edit" + @click="handleUpdate(scope.row)" + v-hasPermi="['system:gps:edit']" + >淇敼</el-button> + <el-button + size="mini" + type="text" + icon="el-icon-delete" + @click="handleDelete(scope.row)" + v-hasPermi="['system:gps:remove']" + >鍒犻櫎</el-button> + </template> + </el-table-column> + </el-table> + + <pagination + v-show="total>0" + :total="total" + :page.sync="queryParams.pageNum" + :limit.sync="queryParams.pageSize" + @pagination="getList" + /> + + <!-- 娣诲姞鎴栦慨鏀硅溅杈咷PS鍧愭爣瀵硅瘽妗� --> + <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body> + <el-form ref="form" :model="form" :rules="rules" label-width="80px"> + <el-form-item label="杞︾墝鍙�" prop="vehicleNo"> + <el-select v-model="form.vehicleNo" placeholder="璇烽�夋嫨杞︾墝鍙�" clearable> + <el-option + v-for="item in vehicleOptions" + :key="item.vehicleId" + :label="item.vehicleNo" + :value="item.vehicleNo" + /> + </el-select> + </el-form-item> + <el-form-item label="缁忓害" prop="longitude"> + <el-input v-model="form.longitude" placeholder="璇疯緭鍏ョ粡搴�" /> + </el-form-item> + <el-form-item label="绾害" prop="latitude"> + <el-input v-model="form.latitude" placeholder="璇疯緭鍏ョ含搴�" /> + </el-form-item> + <el-form-item label="娴锋嫈" prop="altitude"> + <el-input v-model="form.altitude" placeholder="璇疯緭鍏ユ捣鎷�" /> + </el-form-item> + <el-form-item label="閫熷害" prop="speed"> + <el-input v-model="form.speed" placeholder="璇疯緭鍏ラ�熷害" /> + </el-form-item> + <el-form-item label="鏂瑰悜" prop="direction"> + <el-input v-model="form.direction" placeholder="璇疯緭鍏ユ柟鍚�" /> + </el-form-item> + <el-form-item label="閲囬泦鏃堕棿" prop="collectTime"> + <el-date-picker + v-model="form.collectTime" + type="datetime" + placeholder="閫夋嫨閲囬泦鏃堕棿" + value-format="yyyy-MM-dd HH:mm:ss" + /> + </el-form-item> + </el-form> + <div slot="footer" class="dialog-footer"> + <el-button type="primary" @click="submitForm">纭� 瀹�</el-button> + <el-button @click="cancel">鍙� 娑�</el-button> + </div> + </el-dialog> + </div> +</template> + +<script> +import { listGps, getGps, delGps, addGps, updateGps } from "@/api/system/gps"; +import { listVehicle } from "@/api/system/vehicle"; + +export default { + name: "Gps", + data() { + return { + // 閬僵灞� + loading: true, + // 杞﹁締鍒楄〃 + vehicleOptions: [], + // 閫変腑鏁扮粍 + ids: [], + // 闈炲崟涓鐢� + single: true, + // 闈炲涓鐢� + multiple: true, + // 鏄剧ず鎼滅储鏉′欢 + showSearch: true, + // 鎬绘潯鏁� + total: 0, + // 杞﹁締GPS鍧愭爣琛ㄦ牸鏁版嵁 + gpsList: [], + // 寮瑰嚭灞傛爣棰� + title: "", + // 鏄惁鏄剧ず寮瑰嚭灞� + open: false, + // 鏌ヨ鍙傛暟 + queryParams: { + pageNum: 1, + pageSize: 10, + vehicleNo: null, + longitude: null, + latitude: null, + altitude: null, + speed: null, + direction: null, + collectTime: null + }, + // 琛ㄥ崟鍙傛暟 + form: {}, + // 琛ㄥ崟鏍¢獙 + rules: { + vehicleNo: [ + { required: true, message: "杞︾墝鍙蜂笉鑳戒负绌�", trigger: "blur" } + ], + longitude: [ + { required: true, message: "缁忓害涓嶈兘涓虹┖", trigger: "blur" } + ], + latitude: [ + { required: true, message: "绾害涓嶈兘涓虹┖", trigger: "blur" } + ], + collectTime: [ + { required: true, message: "閲囬泦鏃堕棿涓嶈兘涓虹┖", trigger: "blur" } + ] + } + }; + }, + created() { + this.getList(); + this.getVehicleList(); + }, + methods: { + /** 鑾峰彇杞﹁締鍒楄〃 */ + getVehicleList() { + listVehicle().then(response => { + this.vehicleOptions = response.rows; + }); + }, + /** 鏌ヨ杞﹁締GPS鍧愭爣鍒楄〃 */ + getList() { + this.loading = true; + listGps(this.queryParams).then(response => { + this.gpsList = response.rows; + this.total = response.total; + this.loading = false; + }); + }, + // 鍙栨秷鎸夐挳 + cancel() { + this.open = false; + this.reset(); + }, + // 琛ㄥ崟閲嶇疆 + reset() { + this.form = { + gpsId: null, + vehicleNo: null, + longitude: null, + latitude: null, + altitude: null, + speed: null, + direction: null, + collectTime: null + }; + this.resetForm("form"); + }, + /** 鎼滅储鎸夐挳鎿嶄綔 */ + handleQuery() { + this.queryParams.pageNum = 1; + this.getList(); + }, + /** 閲嶇疆鎸夐挳鎿嶄綔 */ + resetQuery() { + this.resetForm("queryForm"); + this.handleQuery(); + }, + // 澶氶�夋閫変腑鏁版嵁 + handleSelectionChange(selection) { + this.ids = selection.map(item => item.gpsId) + this.single = selection.length!==1 + this.multiple = !selection.length + }, + /** 鏂板鎸夐挳鎿嶄綔 */ + handleAdd() { + this.reset(); + this.open = true; + this.title = "娣诲姞杞﹁締GPS鍧愭爣"; + }, + /** 淇敼鎸夐挳鎿嶄綔 */ + handleUpdate(row) { + this.reset(); + const gpsId = row.gpsId || this.ids + getGps(gpsId).then(response => { + this.form = response.data; + this.open = true; + this.title = "淇敼杞﹁締GPS鍧愭爣"; + }); + }, + /** 鎻愪氦鎸夐挳 */ + submitForm() { + this.$refs["form"].validate(valid => { + if (valid) { + if (this.form.gpsId != null) { + updateGps(this.form).then(response => { + this.$modal.msgSuccess("淇敼鎴愬姛"); + this.open = false; + this.getList(); + }); + } else { + addGps(this.form).then(response => { + this.$modal.msgSuccess("鏂板鎴愬姛"); + this.open = false; + this.getList(); + }); + } + } + }); + }, + /** 鍒犻櫎鎸夐挳鎿嶄綔 */ + handleDelete(row) { + const gpsIds = row.gpsId || this.ids; + this.$modal.confirm('鏄惁纭鍒犻櫎杞﹁締GPS鍧愭爣缂栧彿涓�"' + gpsIds + '"鐨勬暟鎹」锛�').then(function() { + return delGps(gpsIds); + }).then(() => { + this.getList(); + this.$modal.msgSuccess("鍒犻櫎鎴愬姛"); + }).catch(() => {}); + }, + /** 瀵煎嚭鎸夐挳鎿嶄綔 */ + handleExport() { + this.download('system/gps/export', { + ...this.queryParams + }, `gps_${new Date().getTime()}.xlsx`) + } + } +}; +</script> \ No newline at end of file diff --git a/ruoyi-ui/src/views/system/gpslog/index.vue b/ruoyi-ui/src/views/system/gpslog/index.vue new file mode 100644 index 0000000..1c5e806 --- /dev/null +++ b/ruoyi-ui/src/views/system/gpslog/index.vue @@ -0,0 +1,357 @@ +<template> + <div class="app-container"> + <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px"> + <el-form-item label="杞︾墝鍙�" prop="vehicleNo"> + <el-input + v-model="queryParams.vehicleNo" + placeholder="璇疯緭鍏ヨ溅鐗屽彿" + clearable + size="small" + @keyup.enter.native="handleQuery" + /> + </el-form-item> + <el-form-item label="閲囬泦绫诲瀷" prop="collectType"> + <el-select v-model="queryParams.collectType" placeholder="璇烽�夋嫨閲囬泦绫诲瀷" clearable size="small"> + <el-option + v-for="dict in dict.type.sys_collect_type" + :key="dict.value" + :label="dict.label" + :value="dict.value" + /> + </el-select> + </el-form-item> + <el-form-item label="閲囬泦鐘舵��" prop="collectStatus"> + <el-select v-model="queryParams.collectStatus" placeholder="璇烽�夋嫨閲囬泦鐘舵��" clearable size="small"> + <el-option + v-for="dict in dict.type.sys_collect_status" + :key="dict.value" + :label="dict.label" + :value="dict.value" + /> + </el-select> + </el-form-item> + <el-form-item label="閲囬泦鏃堕棿" prop="collectTime"> + <el-date-picker + v-model="queryParams.collectTime" + type="datetime" + placeholder="閫夋嫨閲囬泦鏃堕棿" + value-format="yyyy-MM-dd HH:mm:ss" + /> + </el-form-item> + <el-form-item> + <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">鎼滅储</el-button> + <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">閲嶇疆</el-button> + </el-form-item> + </el-form> + + <el-row :gutter="10" class="mb8"> + <el-col :span="1.5"> + <el-button + type="primary" + plain + icon="el-icon-plus" + size="mini" + @click="handleAdd" + v-hasPermi="['system:gpslog:add']" + >鏂板</el-button> + </el-col> + <el-col :span="1.5"> + <el-button + type="success" + plain + icon="el-icon-edit" + size="mini" + :disabled="single" + @click="handleUpdate" + v-hasPermi="['system:gpslog:edit']" + >淇敼</el-button> + </el-col> + <el-col :span="1.5"> + <el-button + type="danger" + plain + icon="el-icon-delete" + size="mini" + :disabled="multiple" + @click="handleDelete" + v-hasPermi="['system:gpslog:remove']" + >鍒犻櫎</el-button> + </el-col> + <el-col :span="1.5"> + <el-button + type="warning" + plain + icon="el-icon-download" + size="mini" + @click="handleExport" + v-hasPermi="['system:gpslog:export']" + >瀵煎嚭</el-button> + </el-col> + <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> + </el-row> + + <el-table v-loading="loading" :data="gpsLogList" @selection-change="handleSelectionChange"> + <el-table-column type="selection" width="55" align="center" /> + <el-table-column label="鏃ュ織ID" align="center" prop="logId" /> + <el-table-column label="杞︾墝鍙�" align="center" prop="vehicleNo" /> + <el-table-column label="閲囬泦绫诲瀷" align="center" prop="collectType"> + <template slot-scope="scope"> + <dict-tag :options="dict.type.sys_collect_type" :value="scope.row.collectType"/> + </template> + </el-table-column> + <el-table-column label="閲囬泦鐘舵��" align="center" prop="collectStatus"> + <template slot-scope="scope"> + <dict-tag :options="dict.type.sys_collect_status" :value="scope.row.collectStatus"/> + </template> + </el-table-column> + <el-table-column label="閿欒淇℃伅" align="center" prop="errorMsg" :show-overflow-tooltip="true" /> + <el-table-column label="閲囬泦鏃堕棿" align="center" prop="collectTime" width="180"> + <template slot-scope="scope"> + <span>{{ parseTime(scope.row.collectTime) }}</span> + </template> + </el-table-column> + <el-table-column label="鎿嶄綔" align="center" class-name="small-padding fixed-width"> + <template slot-scope="scope"> + <el-button + size="mini" + type="text" + icon="el-icon-edit" + @click="handleUpdate(scope.row)" + v-hasPermi="['system:gpslog:edit']" + >淇敼</el-button> + <el-button + size="mini" + type="text" + icon="el-icon-delete" + @click="handleDelete(scope.row)" + v-hasPermi="['system:gpslog:remove']" + >鍒犻櫎</el-button> + </template> + </el-table-column> + </el-table> + + <pagination + v-show="total>0" + :total="total" + :page.sync="queryParams.pageNum" + :limit.sync="queryParams.pageSize" + @pagination="getList" + /> + + <!-- 娣诲姞鎴栦慨鏀笹PS閲囬泦鏃ュ織瀵硅瘽妗� --> + <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body> + <el-form ref="form" :model="form" :rules="rules" label-width="80px"> + <el-form-item label="杞︾墝鍙�" prop="vehicleNo"> + <el-select v-model="form.vehicleNo" placeholder="璇烽�夋嫨杞︾墝鍙�" clearable> + <el-option + v-for="item in vehicleOptions" + :key="item.vehicleId" + :label="item.vehicleNo" + :value="item.vehicleNo" + /> + </el-select> + </el-form-item> + <el-form-item label="閲囬泦绫诲瀷" prop="collectType"> + <el-radio-group v-model="form.collectType"> + <el-radio + v-for="dict in dict.type.sys_collect_type" + :key="dict.value" + :label="dict.value" + >{{dict.label}}</el-radio> + </el-radio-group> + </el-form-item> + <el-form-item label="閲囬泦鐘舵��" prop="collectStatus"> + <el-radio-group v-model="form.collectStatus"> + <el-radio + v-for="dict in dict.type.sys_collect_status" + :key="dict.value" + :label="dict.value" + >{{dict.label}}</el-radio> + </el-radio-group> + </el-form-item> + <el-form-item label="閿欒淇℃伅" prop="errorMsg"> + <el-input v-model="form.errorMsg" type="textarea" placeholder="璇疯緭鍏ラ敊璇俊鎭�" /> + </el-form-item> + <el-form-item label="閲囬泦鏃堕棿" prop="collectTime"> + <el-date-picker + v-model="form.collectTime" + type="datetime" + placeholder="閫夋嫨閲囬泦鏃堕棿" + value-format="yyyy-MM-dd HH:mm:ss" + /> + </el-form-item> + </el-form> + <div slot="footer" class="dialog-footer"> + <el-button type="primary" @click="submitForm">纭� 瀹�</el-button> + <el-button @click="cancel">鍙� 娑�</el-button> + </div> + </el-dialog> + </div> +</template> + +<script> +import { listGpsLog, getGpsLog, delGpsLog, addGpsLog, updateGpsLog } from "@/api/system/gpslog"; +import { listVehicle } from "@/api/system/vehicle"; + +export default { + name: "GpsLog", + dicts: ['sys_collect_type', 'sys_collect_status'], + data() { + return { + // 閬僵灞� + loading: true, + // 杞﹁締鍒楄〃 + vehicleOptions: [], + // 閫変腑鏁扮粍 + ids: [], + // 闈炲崟涓鐢� + single: true, + // 闈炲涓鐢� + multiple: true, + // 鏄剧ず鎼滅储鏉′欢 + showSearch: true, + // 鎬绘潯鏁� + total: 0, + // GPS閲囬泦鏃ュ織琛ㄦ牸鏁版嵁 + gpsLogList: [], + // 寮瑰嚭灞傛爣棰� + title: "", + // 鏄惁鏄剧ず寮瑰嚭灞� + open: false, + // 鏌ヨ鍙傛暟 + queryParams: { + pageNum: 1, + pageSize: 10, + vehicleNo: null, + collectType: null, + collectStatus: null, + errorMsg: null, + collectTime: null + }, + // 琛ㄥ崟鍙傛暟 + form: {}, + // 琛ㄥ崟鏍¢獙 + rules: { + vehicleNo: [ + { required: true, message: "杞︾墝鍙蜂笉鑳戒负绌�", trigger: "blur" } + ], + collectType: [ + { required: true, message: "閲囬泦绫诲瀷涓嶈兘涓虹┖", trigger: "change" } + ], + collectStatus: [ + { required: true, message: "閲囬泦鐘舵�佷笉鑳戒负绌�", trigger: "change" } + ], + collectTime: [ + { required: true, message: "閲囬泦鏃堕棿涓嶈兘涓虹┖", trigger: "blur" } + ] + } + }; + }, + created() { + this.getList(); + this.getVehicleList(); + }, + methods: { + /** 鑾峰彇杞﹁締鍒楄〃 */ + getVehicleList() { + listVehicle().then(response => { + this.vehicleOptions = response.rows; + }); + }, + /** 鏌ヨGPS閲囬泦鏃ュ織鍒楄〃 */ + getList() { + this.loading = true; + listGpsLog(this.queryParams).then(response => { + this.gpsLogList = response.rows; + this.total = response.total; + this.loading = false; + }); + }, + // 鍙栨秷鎸夐挳 + cancel() { + this.open = false; + this.reset(); + }, + // 琛ㄥ崟閲嶇疆 + reset() { + this.form = { + logId: null, + vehicleNo: null, + collectType: null, + collectStatus: null, + errorMsg: null, + collectTime: null + }; + this.resetForm("form"); + }, + /** 鎼滅储鎸夐挳鎿嶄綔 */ + handleQuery() { + this.queryParams.pageNum = 1; + this.getList(); + }, + /** 閲嶇疆鎸夐挳鎿嶄綔 */ + resetQuery() { + this.resetForm("queryForm"); + this.handleQuery(); + }, + // 澶氶�夋閫変腑鏁版嵁 + handleSelectionChange(selection) { + this.ids = selection.map(item => item.logId) + this.single = selection.length!==1 + this.multiple = !selection.length + }, + /** 鏂板鎸夐挳鎿嶄綔 */ + handleAdd() { + this.reset(); + this.open = true; + this.title = "娣诲姞GPS閲囬泦鏃ュ織"; + }, + /** 淇敼鎸夐挳鎿嶄綔 */ + handleUpdate(row) { + this.reset(); + const logId = row.logId || this.ids + getGpsLog(logId).then(response => { + this.form = response.data; + this.open = true; + this.title = "淇敼GPS閲囬泦鏃ュ織"; + }); + }, + /** 鎻愪氦鎸夐挳 */ + submitForm() { + this.$refs["form"].validate(valid => { + if (valid) { + if (this.form.logId != null) { + updateGpsLog(this.form).then(response => { + this.$modal.msgSuccess("淇敼鎴愬姛"); + this.open = false; + this.getList(); + }); + } else { + addGpsLog(this.form).then(response => { + this.$modal.msgSuccess("鏂板鎴愬姛"); + this.open = false; + this.getList(); + }); + } + } + }); + }, + /** 鍒犻櫎鎸夐挳鎿嶄綔 */ + handleDelete(row) { + const logIds = row.logId || this.ids; + this.$modal.confirm('鏄惁纭鍒犻櫎GPS閲囬泦鏃ュ織缂栧彿涓�"' + logIds + '"鐨勬暟鎹」锛�').then(function() { + return delGpsLog(logIds); + }).then(() => { + this.getList(); + this.$modal.msgSuccess("鍒犻櫎鎴愬姛"); + }).catch(() => {}); + }, + /** 瀵煎嚭鎸夐挳鎿嶄綔 */ + handleExport() { + this.download('system/gpslog/export', { + ...this.queryParams + }, `gpslog_${new Date().getTime()}.xlsx`) + } + } +}; +</script> \ No newline at end of file diff --git a/ruoyi-ui/src/views/system/vehicle/index.vue b/ruoyi-ui/src/views/system/vehicle/index.vue new file mode 100644 index 0000000..dd8660a --- /dev/null +++ b/ruoyi-ui/src/views/system/vehicle/index.vue @@ -0,0 +1,334 @@ +<template> + <div class="app-container"> + <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px"> + <el-form-item label="杞︾墝鍙�" prop="vehicleNo"> + <el-input + v-model="queryParams.vehicleNo" + placeholder="璇疯緭鍏ヨ溅鐗屽彿" + clearable + size="small" + @keyup.enter.native="handleQuery" + /> + </el-form-item> + <el-form-item label="杞﹁締绫诲瀷" prop="vehicleType"> + <el-input + v-model="queryParams.vehicleType" + placeholder="璇疯緭鍏ヨ溅杈嗙被鍨�" + clearable + size="small" + @keyup.enter.native="handleQuery" + /> + </el-form-item> + <el-form-item label="鐘舵��" prop="status"> + <el-select v-model="queryParams.status" placeholder="璇烽�夋嫨鐘舵��" clearable size="small"> + <el-option + v-for="dict in dict.type.sys_normal_disable" + :key="dict.value" + :label="dict.label" + :value="dict.value" + /> + </el-select> + </el-form-item> + <el-form-item label="骞冲彴鏍囪瘑" prop="platformCode"> + <el-select v-model="queryParams.platformCode" placeholder="璇烽�夋嫨骞冲彴" clearable size="small"> + <el-option label="A骞冲彴" value="A" /> + <el-option label="B骞冲彴" value="B" /> + </el-select> + </el-form-item> + <el-form-item> + <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">鎼滅储</el-button> + <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">閲嶇疆</el-button> + </el-form-item> + </el-form> + + <el-row :gutter="10" class="mb8"> + <el-col :span="1.5"> + <el-button + type="primary" + plain + icon="el-icon-plus" + size="mini" + @click="handleAdd" + v-hasPermi="['system:vehicle:add']" + >鏂板</el-button> + </el-col> + <el-col :span="1.5"> + <el-button + type="success" + plain + icon="el-icon-edit" + size="mini" + :disabled="single" + @click="handleUpdate" + v-hasPermi="['system:vehicle:edit']" + >淇敼</el-button> + </el-col> + <el-col :span="1.5"> + <el-button + type="danger" + plain + icon="el-icon-delete" + size="mini" + :disabled="multiple" + @click="handleDelete" + v-hasPermi="['system:vehicle:remove']" + >鍒犻櫎</el-button> + </el-col> + <el-col :span="1.5"> + <el-button + type="warning" + plain + icon="el-icon-download" + size="mini" + @click="handleExport" + v-hasPermi="['system:vehicle:export']" + >瀵煎嚭</el-button> + </el-col> + <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> + </el-row> + + <el-table v-loading="loading" :data="vehicleList" @selection-change="handleSelectionChange"> + <el-table-column type="selection" width="55" align="center" /> + <el-table-column label="杞﹁締ID" align="center" prop="vehicleId" /> + <el-table-column label="杞︾墝鍙�" align="center" prop="vehicleNo" /> + <el-table-column label="杞﹁締绫诲瀷" align="center" prop="vehicleType" /> + <el-table-column label="杞﹁締鍝佺墝" align="center" prop="vehicleBrand" /> + <el-table-column label="杞﹁締鍨嬪彿" align="center" prop="vehicleModel" /> + <el-table-column label="骞冲彴鏍囪瘑" align="center" prop="platformCode"> + <template slot-scope="scope"> + <dict-tag :options="dict.type.sys_platform" :value="scope.row.platformCode"/> + </template> + </el-table-column> + <el-table-column label="鐘舵��" align="center" prop="status"> + <template slot-scope="scope"> + <dict-tag :options="dict.type.sys_normal_disable" :value="scope.row.status"/> + </template> + </el-table-column> + <el-table-column label="鍒涘缓鏃堕棿" align="center" prop="createTime" width="180"> + <template slot-scope="scope"> + <span>{{ parseTime(scope.row.createTime) }}</span> + </template> + </el-table-column> + <el-table-column label="鎿嶄綔" align="center" class-name="small-padding fixed-width"> + <template slot-scope="scope"> + <el-button + size="mini" + type="text" + icon="el-icon-edit" + @click="handleUpdate(scope.row)" + v-hasPermi="['system:vehicle:edit']" + >淇敼</el-button> + <el-button + size="mini" + type="text" + icon="el-icon-delete" + @click="handleDelete(scope.row)" + v-hasPermi="['system:vehicle:remove']" + >鍒犻櫎</el-button> + </template> + </el-table-column> + </el-table> + + <pagination + v-show="total>0" + :total="total" + :page.sync="queryParams.pageNum" + :limit.sync="queryParams.pageSize" + @pagination="getList" + /> + + <!-- 娣诲姞鎴栦慨鏀硅溅杈嗕俊鎭璇濇 --> + <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body> + <el-form ref="form" :model="form" :rules="rules" label-width="80px"> + <el-form-item label="杞︾墝鍙�" prop="vehicleNo"> + <el-input v-model="form.vehicleNo" placeholder="璇疯緭鍏ヨ溅鐗屽彿" /> + </el-form-item> + <el-form-item label="杞﹁締绫诲瀷" prop="vehicleType"> + <el-input v-model="form.vehicleType" placeholder="璇疯緭鍏ヨ溅杈嗙被鍨�" /> + </el-form-item> + <el-form-item label="杞﹁締鍝佺墝" prop="vehicleBrand"> + <el-input v-model="form.vehicleBrand" placeholder="璇疯緭鍏ヨ溅杈嗗搧鐗�" /> + </el-form-item> + <el-form-item label="杞﹁締鍨嬪彿" prop="vehicleModel"> + <el-input v-model="form.vehicleModel" placeholder="璇疯緭鍏ヨ溅杈嗗瀷鍙�" /> + </el-form-item> + <el-form-item label="骞冲彴鏍囪瘑" prop="platformCode"> + <el-select v-model="form.platformCode" placeholder="璇烽�夋嫨骞冲彴"> + <el-option label="A骞冲彴" value="A" /> + <el-option label="B骞冲彴" value="B" /> + </el-select> + </el-form-item> + <el-form-item label="鐘舵��" prop="status"> + <el-radio-group v-model="form.status"> + <el-radio + v-for="dict in dict.type.sys_normal_disable" + :key="dict.value" + :label="dict.value" + >{{dict.label}}</el-radio> + </el-radio-group> + </el-form-item> + <el-form-item label="澶囨敞" prop="remark"> + <el-input v-model="form.remark" type="textarea" placeholder="璇疯緭鍏ュ唴瀹�" /> + </el-form-item> + </el-form> + <div slot="footer" class="dialog-footer"> + <el-button type="primary" @click="submitForm">纭� 瀹�</el-button> + <el-button @click="cancel">鍙� 娑�</el-button> + </div> + </el-dialog> + </div> +</template> + +<script> +import { listVehicle, getVehicle, delVehicle, addVehicle, updateVehicle } from "@/api/system/vehicle"; + +export default { + name: "Vehicle", + dicts: ['sys_normal_disable', 'sys_platform'], + data() { + return { + // 閬僵灞� + loading: true, + // 閫変腑鏁扮粍 + ids: [], + // 闈炲崟涓鐢� + single: true, + // 闈炲涓鐢� + multiple: true, + // 鏄剧ず鎼滅储鏉′欢 + showSearch: true, + // 鎬绘潯鏁� + total: 0, + // 杞﹁締淇℃伅琛ㄦ牸鏁版嵁 + vehicleList: [], + // 寮瑰嚭灞傛爣棰� + title: "", + // 鏄惁鏄剧ず寮瑰嚭灞� + open: false, + // 鏌ヨ鍙傛暟 + queryParams: { + pageNum: 1, + pageSize: 10, + vehicleNo: null, + vehicleType: null, + vehicleBrand: null, + vehicleModel: null, + status: null, + platformCode: null + }, + // 琛ㄥ崟鍙傛暟 + form: {}, + // 琛ㄥ崟鏍¢獙 + rules: { + vehicleNo: [ + { required: true, message: "杞︾墝鍙蜂笉鑳戒负绌�", trigger: "blur" } + ], + status: [ + { required: true, message: "鐘舵�佷笉鑳戒负绌�", trigger: "change" } + ] + } + }; + }, + created() { + this.getList(); + }, + methods: { + /** 鏌ヨ杞﹁締淇℃伅鍒楄〃 */ + getList() { + this.loading = true; + listVehicle(this.queryParams).then(response => { + this.vehicleList = response.rows; + this.total = response.total; + this.loading = false; + }); + }, + // 鍙栨秷鎸夐挳 + cancel() { + this.open = false; + this.reset(); + }, + // 琛ㄥ崟閲嶇疆 + reset() { + this.form = { + vehicleId: null, + vehicleNo: null, + vehicleType: null, + vehicleBrand: null, + vehicleModel: null, + status: "0", + remark: null, + platformCode: null + }; + this.resetForm("form"); + }, + /** 鎼滅储鎸夐挳鎿嶄綔 */ + handleQuery() { + this.queryParams.pageNum = 1; + this.getList(); + }, + /** 閲嶇疆鎸夐挳鎿嶄綔 */ + resetQuery() { + this.resetForm("queryForm"); + this.handleQuery(); + }, + // 澶氶�夋閫変腑鏁版嵁 + handleSelectionChange(selection) { + this.ids = selection.map(item => item.vehicleId) + this.single = selection.length!==1 + this.multiple = !selection.length + }, + /** 鏂板鎸夐挳鎿嶄綔 */ + handleAdd() { + this.reset(); + this.open = true; + this.title = "娣诲姞杞﹁締淇℃伅"; + }, + /** 淇敼鎸夐挳鎿嶄綔 */ + handleUpdate(row) { + this.reset(); + const vehicleId = row.vehicleId || this.ids + getVehicle(vehicleId).then(response => { + this.form = response.data; + this.open = true; + this.title = "淇敼杞﹁締淇℃伅"; + }); + }, + /** 鎻愪氦鎸夐挳 */ + submitForm() { + this.$refs["form"].validate(valid => { + if (valid) { + if (this.form.vehicleId != null) { + updateVehicle(this.form).then(response => { + this.$modal.msgSuccess("淇敼鎴愬姛"); + this.open = false; + this.getList(); + }); + } else { + addVehicle(this.form).then(response => { + this.$modal.msgSuccess("鏂板鎴愬姛"); + this.open = false; + this.getList(); + }); + } + } + }); + }, + /** 鍒犻櫎鎸夐挳鎿嶄綔 */ + handleDelete(row) { + const vehicleIds = row.vehicleId || this.ids; + this.$modal.confirm('鏄惁纭鍒犻櫎杞﹁締淇℃伅缂栧彿涓�"' + vehicleIds + '"鐨勬暟鎹」锛�').then(function() { + return delVehicle(vehicleIds); + }).then(() => { + this.getList(); + this.$modal.msgSuccess("鍒犻櫎鎴愬姛"); + }).catch(() => {}); + }, + /** 瀵煎嚭鎸夐挳鎿嶄綔 */ + handleExport() { + this.download('system/vehicle/export', { + ...this.queryParams + }, `vehicle_${new Date().getTime()}.xlsx`) + } + } +}; +</script> \ No newline at end of file diff --git a/sql/dict_data.sql b/sql/dict_data.sql new file mode 100644 index 0000000..62b40e8 --- /dev/null +++ b/sql/dict_data.sql @@ -0,0 +1,26 @@ +-- 閲囬泦绫诲瀷瀛楀吀鏁版嵁 +INSERT INTO sys_dict_data( dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, STATUS, create_by, create_time, update_by, update_time, remark) +VALUES( 1, '鑷姩閲囬泦', '1', 'sys_collect_type', '', 'primary', 'N', '0', 'admin', SYSDATE(), '', NULL, '鑷姩閲囬泦'); + +INSERT INTO sys_dict_data( dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, STATUS, create_by, create_time, update_by, update_time, remark) +VALUES( 2, '鎵嬪姩閲囬泦', '2', 'sys_collect_type', '', 'success', 'N', '0', 'admin', SYSDATE(), '', NULL, '鎵嬪姩閲囬泦'); + +INSERT INTO sys_dict_data( dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, STATUS, create_by, create_time, update_by, update_time, remark) +VALUES( 3, '瀹氭椂閲囬泦', '3', 'sys_collect_type', '', 'warning', 'N', '0', 'admin', SYSDATE(), '', NULL, '瀹氭椂閲囬泦'); + +-- 閲囬泦鐘舵�佸瓧鍏告暟鎹� +INSERT INTO sys_dict_data( dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, STATUS, create_by, create_time, update_by, update_time, remark) +VALUES( 1, '閲囬泦鎴愬姛', '1', 'sys_collect_status', '', 'success', 'N', '0', 'admin', SYSDATE(), '', NULL, '閲囬泦鎴愬姛'); + +INSERT INTO sys_dict_data( dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, STATUS, create_by, create_time, update_by, update_time, remark) +VALUES( 2, '閲囬泦澶辫触', '2', 'sys_collect_status', '', 'danger', 'N', '0', 'admin', SYSDATE(), '', NULL, '閲囬泦澶辫触'); + +INSERT INTO sys_dict_data( dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, STATUS, create_by, create_time, update_by, update_time, remark) +VALUES( 3, '閲囬泦涓�', '3', 'sys_collect_status', '', 'primary', 'N', '0', 'admin', SYSDATE(), '', NULL, '閲囬泦涓�'); + +-- 骞冲彴瀛楀吀鏁版嵁 +INSERT INTO sys_dict_data( dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, STATUS, create_by, create_time, update_by, update_time, remark) +VALUES( 1, 'A骞冲彴', 'A', 'sys_platform', '', 'primary', 'N', '0', 'admin', SYSDATE(), '', NULL, 'A骞冲彴'); + +INSERT INTO sys_dict_data( dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, STATUS, create_by, create_time, update_by, update_time, remark) +VALUES( 2, 'B骞冲彴', 'B', 'sys_platform', '', 'success', 'N', '0', 'admin', SYSDATE(), '', NULL, 'B骞冲彴'); diff --git a/sql/dict_type.sql b/sql/dict_type.sql new file mode 100644 index 0000000..27889e9 --- /dev/null +++ b/sql/dict_type.sql @@ -0,0 +1,13 @@ +-- 閲囬泦绫诲瀷瀛楀吀绫诲瀷 +INSERT INTO sys_dict_type( dict_name, dict_type, STATUS, create_by, create_time, update_by, update_time, remark) +VALUES( '閲囬泦绫诲瀷', 'sys_collect_type', '0', 'admin', SYSDATE(), '', NULL, '閲囬泦绫诲瀷鍒楄〃'); + +-- 閲囬泦鐘舵�佸瓧鍏哥被鍨� +INSERT INTO sys_dict_type( dict_name, dict_type, STATUS, create_by, create_time, update_by, update_time, remark) +VALUES( '閲囬泦鐘舵��', 'sys_collect_status', '0', 'admin', SYSDATE(), '', NULL, '閲囬泦鐘舵�佸垪琛�'); + +-- 骞冲彴瀛楀吀绫诲瀷 +INSERT INTO sys_dict_type( dict_name, dict_type, STATUS, create_by, create_time, update_by, update_time, remark) +VALUES( '骞冲彴鏍囪瘑', 'sys_platform', '0', 'admin', SYSDATE(), '', NULL, '骞冲彴鏍囪瘑鍒楄〃'); + + diff --git a/sql/menu.sql b/sql/menu.sql new file mode 100644 index 0000000..7a09050 --- /dev/null +++ b/sql/menu.sql @@ -0,0 +1,68 @@ +-- 鑿滃崟 SQL +insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) +values('杞﹁締淇℃伅', '3', '1', 'vehicle', 'system/vehicle/index', 1, 0, 'C', '0', '0', 'system:vehicle:list', 'car', 'admin', sysdate(), '', null, '杞﹁締淇℃伅鑿滃崟'); + +-- 鎸夐挳鐖惰彍鍗旾D +SELECT @parentId := LAST_INSERT_ID(); + +-- 杞﹁締淇℃伅鎸夐挳 +insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) +values('杞﹁締淇℃伅鏌ヨ', @parentId, '1', '#', '', 1, 0, 'F', '0', '0', 'system:vehicle:query', '#', 'admin', sysdate(), '', null, ''); + +insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) +values('杞﹁締淇℃伅鏂板', @parentId, '2', '#', '', 1, 0, 'F', '0', '0', 'system:vehicle:add', '#', 'admin', sysdate(), '', null, ''); + +insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) +values('杞﹁締淇℃伅淇敼', @parentId, '3', '#', '', 1, 0, 'F', 'F', '0', 'system:vehicle:edit', '#', 'admin', sysdate(), '', null, ''); + +insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) +values('杞﹁締淇℃伅鍒犻櫎', @parentId, '4', '#', '', 1, 0, 'F', '0', '0', 'system:vehicle:remove', '#', 'admin', sysdate(), '', null, ''); + +insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) +values('杞﹁締淇℃伅瀵煎嚭', @parentId, '5', '#', '', 1, 0, 'F', '0', '0', 'system:vehicle:export', '#', 'admin', sysdate(), '', null, ''); + +-- GPS鍧愭爣鑿滃崟 +insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) +values('GPS鍧愭爣', '3', '2', 'gps', 'system/gps/index', 1, 0, 'C', '0', '0', 'system:gps:list', 'location', 'admin', sysdate(), '', null, 'GPS鍧愭爣鑿滃崟'); + +-- 鎸夐挳鐖惰彍鍗旾D +SELECT @parentId := LAST_INSERT_ID(); + +-- GPS鍧愭爣鎸夐挳 +insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) +values('GPS鍧愭爣鏌ヨ', @parentId, '1', '#', '', 1, 0, 'F', '0', '0', 'system:gps:query', '#', 'admin', sysdate(), '', null, ''); + +insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) +values('GPS鍧愭爣鏂板', @parentId, '2', '#', '', 1, 0, 'F', '0', '0', 'system:gps:add', '#', 'admin', sysdate(), '', null, ''); + +insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) +values('GPS鍧愭爣淇敼', @parentId, '3', '#', '', 1, 0, 'F', '0', '0', 'system:gps:edit', '#', 'admin', sysdate(), '', null, ''); + +insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) +values('GPS鍧愭爣鍒犻櫎', @parentId, '4', '#', '', 1, 0, 'F', '0', '0', 'system:gps:remove', '#', 'admin', sysdate(), '', null, ''); + +insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) +values('GPS鍧愭爣瀵煎嚭', @parentId, '5', '#', '', 1, 0, 'F', '0', '0', 'system:gps:export', '#', 'admin', sysdate(), '', null, ''); + +-- GPS閲囬泦鏃ュ織鑿滃崟 +insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) +values('GPS閲囬泦鏃ュ織', '3', '3', 'gpslog', 'system/gpslog/index', 1, 0, 'C', '0', '0', 'system:gpslog:list', 'documentation', 'admin', sysdate(), '', null, 'GPS閲囬泦鏃ュ織鑿滃崟'); + +-- 鎸夐挳鐖惰彍鍗旾D +SELECT @parentId := LAST_INSERT_ID(); + +-- GPS閲囬泦鏃ュ織鎸夐挳 +insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) +values('GPS閲囬泦鏃ュ織鏌ヨ', @parentId, '1', '#', '', 1, 0, 'F', '0', '0', 'system:gpslog:query', '#', 'admin', sysdate(), '', null, ''); + +insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) +values('GPS閲囬泦鏃ュ織鏂板', @parentId, '2', '#', '', 1, 0, 'F', '0', '0', 'system:gpslog:add', '#', 'admin', sysdate(), '', null, ''); + +insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) +values('GPS閲囬泦鏃ュ織淇敼', @parentId, '3', '#', '', 1, 0, 'F', '0', '0', 'system:gpslog:edit', '#', 'admin', sysdate(), '', null, ''); + +insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) +values('GPS閲囬泦鏃ュ織鍒犻櫎', @parentId, '4', '#', '', 1, 0, 'F', '0', '0', 'system:gpslog:remove', '#', 'admin', sysdate(), '', null, ''); + +insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) +values('GPS閲囬泦鏃ュ織瀵煎嚭', @parentId, '5', '#', '', 1, 0, 'F', '0', '0', 'system:gpslog:export', '#', 'admin', sysdate(), '', null, ''); \ No newline at end of file diff --git a/sql/vehicle_gps.sql b/sql/vehicle_gps.sql new file mode 100644 index 0000000..87630d7 --- /dev/null +++ b/sql/vehicle_gps.sql @@ -0,0 +1,46 @@ +-- 杞﹁締淇℃伅琛� +CREATE TABLE `tb_vehicle_info` ( + `vehicle_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '杞﹁締ID', + `vehicle_no` varchar(20) NOT NULL COMMENT '杞︾墝鍙�', + `vehicle_type` varchar(20) DEFAULT NULL COMMENT '杞﹁締绫诲瀷', + `vehicle_brand` varchar(50) DEFAULT NULL COMMENT '杞﹁締鍝佺墝', + `vehicle_model` varchar(50) DEFAULT NULL COMMENT '杞﹁締鍨嬪彿', + `status` char(1) DEFAULT '0' COMMENT '鐘舵�侊紙0姝e父 1鍋滅敤锛�', + `create_by` varchar(64) DEFAULT '' COMMENT '鍒涘缓鑰�', + `create_time` datetime DEFAULT NULL COMMENT '鍒涘缓鏃堕棿', + `update_by` varchar(64) DEFAULT '' COMMENT '鏇存柊鑰�', + `update_time` datetime DEFAULT NULL COMMENT '鏇存柊鏃堕棿', + `remark` varchar(500) DEFAULT NULL COMMENT '澶囨敞', + PRIMARY KEY (`vehicle_id`), + UNIQUE KEY `vehicle_no` (`vehicle_no`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='杞﹁締淇℃伅琛�'; + +-- 杞﹁締GPS鍧愭爣琛� +CREATE TABLE `tb_vehicle_gps` ( + `gps_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'GPS璁板綍ID', + `vehicle_id` bigint(20) NOT NULL COMMENT '杞﹁締ID', + `longitude` decimal(10,7) NOT NULL COMMENT '缁忓害', + `latitude` decimal(10,7) NOT NULL COMMENT '绾害', + `altitude` decimal(10,2) DEFAULT NULL COMMENT '娴锋嫈', + `speed` decimal(10,2) DEFAULT NULL COMMENT '閫熷害(km/h)', + `direction` decimal(10,2) DEFAULT NULL COMMENT '鏂瑰悜(搴�)', + `collect_time` datetime NOT NULL COMMENT '閲囬泦鏃堕棿', + `create_time` datetime DEFAULT NULL COMMENT '鍒涘缓鏃堕棿', + PRIMARY KEY (`gps_id`), + KEY `idx_vehicle_id` (`vehicle_id`), + KEY `idx_collect_time` (`collect_time`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='杞﹁締GPS鍧愭爣琛�'; + +-- GPS閲囬泦鏃ュ織琛� +CREATE TABLE `tb_gps_collect_log` ( + `log_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '鏃ュ織ID', + `vehicle_id` bigint(20) NOT NULL COMMENT '杞﹁締ID', + `collect_type` char(1) NOT NULL COMMENT '閲囬泦绫诲瀷锛�1鑷姩 2鎵嬪姩锛�', + `collect_status` char(1) NOT NULL COMMENT '閲囬泦鐘舵�侊紙0鎴愬姛 1澶辫触锛�', + `error_msg` varchar(500) DEFAULT NULL COMMENT '閿欒淇℃伅', + `collect_time` datetime NOT NULL COMMENT '閲囬泦鏃堕棿', + `create_time` datetime DEFAULT NULL COMMENT '鍒涘缓鏃堕棿', + PRIMARY KEY (`log_id`), + KEY `idx_vehicle_id` (`vehicle_id`), + KEY `idx_collect_time` (`collect_time`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='GPS閲囬泦鏃ュ織琛�'; \ No newline at end of file diff --git a/sql/vehicle_info.sql b/sql/vehicle_info.sql new file mode 100644 index 0000000..bf73724 --- /dev/null +++ b/sql/vehicle_info.sql @@ -0,0 +1,17 @@ +-- 杞﹁締淇℃伅琛� +create table tb_vehicle_info ( + vehicle_id bigint(20) not null auto_increment comment '杞﹁締ID', + platform_code varchar(50) not null comment '骞冲彴鏍囪瘑锛圓/B锛�', + vehicle_no varchar(50) not null comment '杞︾墝鍙�', + vehicle_type varchar(50) not null comment '杞﹁締绫诲瀷', + vehicle_brand varchar(50) comment '杞﹁締鍝佺墝', + vehicle_model varchar(50) comment '杞﹁締鍨嬪彿', + vehicle_color varchar(20) comment '杞﹁締棰滆壊', + vehicle_status char(1) default '0' comment '杞﹁締鐘舵�侊紙0姝e父 1鍋滅敤锛�', + create_by varchar(64) default '' comment '鍒涘缓鑰�', + create_time datetime comment '鍒涘缓鏃堕棿', + update_by varchar(64) default '' comment '鏇存柊鑰�', + update_time datetime comment '鏇存柊鏃堕棿', + remark varchar(500) default null comment '澶囨敞', + primary key (vehicle_id) +) engine=innodb auto_increment=100 comment = '杞﹁締淇℃伅琛�'; \ No newline at end of file -- Gitblit v1.9.1