Compare commits

...

36 Commits

Author SHA1 Message Date
刘武 2da914c305 项目整合 初始化 2024-09-25 10:17:53 +08:00
刘武 4a2d419360 项目整合 初始化 2024-09-25 10:12:30 +08:00
刘武 6272836d8a 项目整合 2024-09-25 09:56:06 +08:00
刘武 aa4fb95497 项目整合 2024-09-25 09:50:26 +08:00
刘武 ede54c3762 Merge remote-tracking branch 'origin/dev.fence'
# Conflicts:
#	cloud-auth/src/main/resources/bootstrap.yml
#	cloud-gateway/src/main/resources/bootstrap.yml
#	cloud-modules/cloud-modules-breakdown/src/main/resources/bootstrap.yml
#	cloud-modules/cloud-modules-fence/src/main/java/com/muyu/fence/FenceApplication.java
#	cloud-modules/cloud-modules-file/src/main/resources/bootstrap.yml
#	cloud-modules/cloud-modules-gen/src/main/resources/bootstrap.yml
#	cloud-modules/cloud-modules-system/src/main/resources/bootstrap.yml
#	cloud-visual/cloud-visual-monitor/src/main/resources/bootstrap.yml
2024-09-25 09:50:09 +08:00
刘武 d1338d9e65 项目整合 2024-09-25 09:48:26 +08:00
刘武 b882cb0c01 项目整合 2024-09-25 09:47:55 +08:00
刘武 ec9ebde88c Merge branch 'dev.breakdown' 2024-09-25 09:47:29 +08:00
刘武 15815129bd 项目整合 2024-09-25 09:43:10 +08:00
刘武 4e0562aa3b 项目整合 2024-09-25 09:38:48 +08:00
86191 adafb3248c fix():重构电子围栏以及围栏组 2024-09-25 09:36:37 +08:00
86191 ffc698bc11 fix():重构电子围栏以及围栏组 2024-09-24 11:13:34 +08:00
袁子龙 1f7dc72f8d test:故障记录展示数据修改 2024-09-24 00:20:27 +08:00
袁子龙 08b4d720d8 test:故障记录展示数据修改 2024-09-23 21:07:32 +08:00
袁子龙 efb50cff22 test:故障记录展示数据修改 2024-09-23 21:05:45 +08:00
袁子龙 c13bf9528c test:故障记录展示数据修改 2024-09-23 20:56:10 +08:00
86191 0619a5102c fix():重构电子围栏以及围栏组 2024-09-23 19:35:19 +08:00
袁子龙 2b4111fccd chore:yml文件修改(nacos命名空间名称) 2024-09-23 12:02:22 +08:00
袁子龙 fc78229b0b feat:故障记录添加 2024-09-22 22:37:38 +08:00
袁子龙 24f84b74cf feat:故障记录添加 2024-09-22 22:34:12 +08:00
袁子龙 47a67d40c7 feat:故障记录展示 2024-09-22 22:31:04 +08:00
袁子龙 1facc25586 feat:故障记录展示 2024-09-22 21:25:54 +08:00
袁子龙 a40653dc4d feat:站内信展示 2024-09-22 16:48:26 +08:00
袁子龙 608d934b33 chore:删除不需要的字段 2024-09-22 10:16:12 +08:00
袁子龙 9e59d7f63f test:修改添加唯一值判断 2024-09-22 10:10:31 +08:00
袁子龙 6014f64ecd test:修改查询 2024-09-22 09:15:22 +08:00
袁子龙 590120be16 test:修改查询 2024-09-22 09:13:12 +08:00
袁子龙 4fc54df473 test:修改查询 2024-09-22 09:12:31 +08:00
袁子龙 301a5f82dd 修改表数据 2024-09-21 20:36:24 +08:00
袁子龙 d7b3ecb7c2 修改表数据 2024-09-21 20:33:21 +08:00
袁子龙 034abb5dff chore:修改表数据 2024-09-21 20:32:20 +08:00
袁子龙 737d6bffaa chore:修改表数据 2024-09-21 20:31:23 +08:00
袁子龙 bf235658fb feat:是否警告接口 2024-09-21 19:51:02 +08:00
袁子龙 4686fc17fe 初始化 2024-09-21 18:44:19 +08:00
袁子龙 347f5c3520 测试 2024-09-21 18:43:08 +08:00
袁子龙 034d356972 测试 2024-09-21 12:16:21 +08:00
71 changed files with 2352 additions and 534 deletions

View File

@ -7,7 +7,7 @@ nacos:
addr: 47.101.53.251:8848
user-name: nacos
password: nacos
namespace: four
namespace: yzl
# Spring
spring:
application:

View File

@ -62,6 +62,7 @@ Result<List<Datasource>> tableDataInfoResult = remoteSaaSService.findDatabaseLis
return null;
}
}
// private List<EntInfo> dataPrimarySourceInfoList(){
// List<EntInfo> list = new ArrayList<>();
// list.add(

View File

@ -7,7 +7,7 @@ nacos:
addr: 47.101.53.251:8848
user-name: nacos
password: nacos
namespace: four
namespace: yzl
# Spring
spring:

View File

@ -1,5 +1,6 @@
package com.muyu.breakdown.controller;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.muyu.breakdown.domain.SysCarFault;
import com.muyu.breakdown.service.SysCarFaultService;
import com.muyu.common.core.domain.Result;
@ -72,12 +73,13 @@ public class SysCarFaultController extends BaseController
@Validated @RequestBody SysCarFault sysCarFault)
{
if (sysCarFaultService.checkIdUnique(sysCarFault)) {
return error("新增 车辆故障管理 '" + sysCarFault + "'失败,车辆故障管理已存在");
return error("新增 车辆故障管理 ,失败,车辆故障码已存在");
}
sysCarFault.setCreateBy(SecurityUtils.getUsername());
return toAjax(sysCarFaultService.save(sysCarFault));
}
/**
*
*/
@ -103,4 +105,28 @@ public class SysCarFaultController extends BaseController
sysCarFaultService.removeBatchByIds(Arrays.asList(ids));
return success();
}
/**
*
* @param id
*/
@PutMapping("/enableWarningsById/{id}")
public void enableWarningsById(@PathVariable("id")Long id){
UpdateWrapper<SysCarFault> wrapper = new UpdateWrapper<>();
wrapper.eq("id",id);
wrapper.set("warn_status",0);
sysCarFaultService.update(wrapper);
}
/**
*
* @param id
*/
@PutMapping("/disableWarningsById/{id}")
public void disableWarningsById(@PathVariable("id")Long id){
UpdateWrapper<SysCarFault> wrapper = new UpdateWrapper<>();
wrapper.eq("id",id);
wrapper.set("warn_status",1);
sysCarFaultService.update(wrapper);
}
}

View File

@ -0,0 +1,48 @@
package com.muyu.breakdown.controller;
import com.muyu.breakdown.domain.SysCarFaultMessage;
import com.muyu.breakdown.service.SysCarFaultMessageService;
import com.muyu.common.core.domain.Result;
import com.muyu.common.core.web.controller.BaseController;
import com.muyu.common.core.web.page.TableDataInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* @ClassDescription:
* @JdkVersion: 1.8
* @Author: YZL
* @Created: 2024/9/22 14:39
*/
@RestController
@RequestMapping("/message")
public class SysCarFaultMessageController extends BaseController {
@Autowired
private SysCarFaultMessageService service;
@GetMapping("/list")
public Result<TableDataInfo<SysCarFaultMessage>> list(){
startPage();
List<SysCarFaultMessage> list = service.list();
return getDataTable(list);
}
@GetMapping("/listStatusOne")
public Result<TableDataInfo<SysCarFaultMessage>>listStatusOne(){
startPage();
List<SysCarFaultMessage> list = service.listStatusOnt();
return getDataTable(list);
}
@GetMapping("/listStatusTwo")
public Result<TableDataInfo<SysCarFaultMessage>>listStatusTwo(){
startPage();
List<SysCarFaultMessage> list = service.listStatusTwo();
return getDataTable(list);
}
}

View File

@ -0,0 +1,62 @@
package com.muyu.breakdown.controller;
import com.muyu.breakdown.domain.SysCarFaultLog;
import com.muyu.breakdown.service.SysCarFaultLogService;
import com.muyu.common.core.domain.Result;
import com.muyu.common.core.web.controller.BaseController;
import com.muyu.common.core.web.page.TableDataInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* @ClassDescription:
* @JdkVersion: 1.8
* @Author: YZL
* @Created: 2024/9/22 21:08
*/
@RestController
@RequestMapping("/log")
public class sysCarFaultLogController extends BaseController {
@Autowired
private SysCarFaultLogService service;
@PostMapping("/list")
public Result<TableDataInfo<SysCarFaultLog>> list(@RequestBody SysCarFaultLog sysCarFaultLog){
startPage();
List<SysCarFaultLog> list = service.selectSysCarFaultLogList(sysCarFaultLog);
return getDataTable(list);
}
@PostMapping("/listStatusIgnore")
public Result<TableDataInfo<SysCarFaultLog>>listStatusIgnore(@RequestBody SysCarFaultLog sysCarFaultLog){
startPage();
List<SysCarFaultLog> list = service.listStatusIgnore(sysCarFaultLog);
return getDataTable(list);
}
@PostMapping("/listStatusSolve")
public Result<TableDataInfo<SysCarFaultLog>>listStatusSolve(@RequestBody SysCarFaultLog sysCarFaultLog){
startPage();
List<SysCarFaultLog> list = service.listStatusSolve(sysCarFaultLog);
return getDataTable(list);
}
@PostMapping("/listStatusProcess")
public Result<TableDataInfo<SysCarFaultLog>>listStatusProcess(@RequestBody SysCarFaultLog sysCarFaultLog){
startPage();
List<SysCarFaultLog> list = service.listStatusProcess(sysCarFaultLog);
return getDataTable(list);
}
@PostMapping("/add")
public Result<Integer> add(@RequestBody SysCarFaultLog sysCarFaultLog){
return toAjax(service.save(sysCarFaultLog));
}
}

View File

@ -30,6 +30,7 @@ public class SysCarFault extends BaseEntity{
@TableId( type = IdType.AUTO)
private Long id;
/** 故障码编码 */
@Excel(name = "故障码编码")
private String faultCode;
@ -42,17 +43,13 @@ public class SysCarFault extends BaseEntity{
@Excel(name = "故障类型")
private Long typeId;
/** 车辆VIN码 */
@Excel(name = "车辆VIN码")
private String carVin;
/** 故障标签 */
@Excel(name = "故障标签")
private String faultLabel;
/** 故障组 */
@Excel(name = "故障组")
private String faultGroup;
/** 故障位 */
@Excel(name = "故障位")
@ -80,11 +77,11 @@ public class SysCarFault extends BaseEntity{
/** 启用状态(1.待处理 2.处理中 3.已处理 4.忽略) */
@Excel(name = "启用状态(1.待处理 2.处理中 3.已处理 4.忽略)")
private Long status;
private Integer status;
/** 是否警告(0.开启 1.禁止) */
@Excel(name = "是否警告(0.开启 1.禁止)")
private Long warnStatus;
private Integer warnStatus;
@ -95,9 +92,7 @@ public class SysCarFault extends BaseEntity{
.append("faultCode", getFaultCode())
.append("faultName", getFaultName())
.append("typeId", getTypeId())
.append("carVin", getCarVin())
.append("faultLabel", getFaultLabel())
.append("faultGroup", getFaultGroup())
.append("faultBit", getFaultBit())
.append("faultValue", getFaultValue())
.append("faultRank", getFaultRank())

View File

@ -0,0 +1,47 @@
package com.muyu.breakdown.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.muyu.common.core.web.domain.BaseEntity;
import lombok.*;
import lombok.experimental.SuperBuilder;
import java.util.Date;
/**
* @ClassDescription:
* @JdkVersion: 1.8
* @Author: YZL
* @Created: 2024/9/22 20:17
*/
@Data
@Setter
@Getter
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@TableName("sys_car_fault_log")
public class SysCarFaultLog extends BaseEntity {
private static final long serialVersionUID = 1L;
/** 参数主键 */
@TableId( type = IdType.AUTO)
private Long id;
/** 故障码编码 */
private Integer sysCarFaultId;
/**记录时间*/
private Date createTime;
/** 结束时间*/
private Date updateTime;
/** VIN码 */
private String vin;
/** 处理状态 1-解决 2-处理中 3-忽略 */
private Integer status;
}

View File

@ -0,0 +1,41 @@
package com.muyu.breakdown.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.muyu.common.core.web.domain.BaseEntity;
import lombok.*;
import lombok.experimental.SuperBuilder;
import java.util.Date;
/**
* @ClassDescription: sys_car_fault_message
* @JdkVersion: 1.8
* @Author: YZL
* @Created: 2024/9/22 11:57
*/
@Data
@Setter
@Getter
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@TableName("sys_car_fault_message")
public class SysCarFaultMessage extends BaseEntity {
private static final long serialVersionUID = 1L;
/** 参数主键 */
@TableId( type = IdType.AUTO)
private Long id;
/** 内容 */
private String content;
/**开始时间 */
private Date createTime;
/**是否已读 */
private Integer status;
}

View File

@ -1,24 +0,0 @@
package com.muyu.breakdown.domain;
import com.baomidou.mybatisplus.annotation.TableName;
import com.muyu.common.core.web.domain.BaseEntity;
import lombok.*;
import lombok.experimental.SuperBuilder;
/**
* @ClassDescription:
* @JdkVersion: 1.8
* @Author: YZL
* @Created: 2024/9/20 11:34
*/
@Data
@Setter
@Getter
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@TableName("sys_car_fault_type")
public class SysCarFaultType {
private Long faultTypeId;
private String faultTypeName;
}

View File

@ -0,0 +1,25 @@
package com.muyu.breakdown.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.muyu.breakdown.domain.SysCarFaultLog;
import com.muyu.breakdown.domain.SysCarFaultMessage;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import java.util.List;
/**
* @ClassDescription:
* @JdkVersion: 1.8
* @Author: YZL
* @Created: 2024/9/22 21:06
*/
@Mapper
public interface SysCarFaultLogMapper extends BaseMapper<SysCarFaultLog> {
@Select("select * from sys_car_fault_log where is_read=1")
public List<SysCarFaultLog> listIsReadAlready( );
@Select("select * from sys_car_fault_log where is_read=2")
public List<SysCarFaultLog>listISReadNotYet( );
}

View File

@ -0,0 +1,24 @@
package com.muyu.breakdown.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.muyu.breakdown.domain.SysCarFaultMessage;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import java.util.List;
/**
* @ClassDescription:
* @JdkVersion: 1.8
* @Author: YZL
* @Created: 2024/9/22 11:59
*/
@Mapper
public interface SysCarFaultMessageMapper extends BaseMapper<SysCarFaultMessage> {
@Select("select * from sys_car_fault_message where status=1")
public List<SysCarFaultMessage>listStatusOnt( );
@Select("select * from sys_car_fault_message where status=2")
public List<SysCarFaultMessage>listStatusTwo( );
}

View File

@ -0,0 +1,24 @@
package com.muyu.breakdown.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.muyu.breakdown.domain.SysCarFaultLog;
import com.muyu.breakdown.domain.SysCarFaultMessage;
import com.muyu.breakdown.domain.SysCarFaultLog;
import java.util.List;
/**
* @ClassDescription:
* @JdkVersion: 1.8
* @Author: YZL
* @Created: 2024/9/22 21:07
*/
public interface SysCarFaultLogService extends IService<SysCarFaultLog> {
public List<SysCarFaultLog>selectSysCarFaultLogList(SysCarFaultLog sysCarFaultLog);
public List<SysCarFaultLog> listStatusIgnore(SysCarFaultLog sysCarFaultLog);
public List<SysCarFaultLog>listStatusProcess(SysCarFaultLog sysCarFaultLog );
public List<SysCarFaultLog>listStatusSolve(SysCarFaultLog sysCarFaultLog);
}

View File

@ -0,0 +1,21 @@
package com.muyu.breakdown.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.muyu.breakdown.domain.SysCarFault;
import com.muyu.breakdown.domain.SysCarFaultMessage;
import java.util.List;
import java.util.stream.IntStream;
/**
* @ClassDescription:
* @JdkVersion: 1.8
* @Author: YZL
* @Created: 2024/9/22 14:35
*/
public interface SysCarFaultMessageService extends IService<SysCarFaultMessage> {
public List<SysCarFaultMessage> selectSysCarFaultMessageList(SysCarFaultMessage sysCarFaultMessage);
public List<SysCarFaultMessage>listStatusOnt( );
public List<SysCarFaultMessage>listStatusTwo( );
}

View File

@ -35,4 +35,6 @@ public interface SysCarFaultService extends IService<SysCarFault> {
*/
Boolean checkIdUnique(SysCarFault sysCarFault);
}

View File

@ -0,0 +1,38 @@
package com.muyu.breakdown.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.muyu.breakdown.domain.SysCarFault;
import com.muyu.breakdown.domain.SysCarFaultMessage;
import com.muyu.breakdown.mapper.SysCarFaultMessageMapper;
import com.muyu.breakdown.service.SysCarFaultMessageService;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* @ClassDescription:
* @JdkVersion: 1.8
* @Author: YZL
* @Created: 2024/9/22 14:36
*/
@Service
public class SysCarFaultMessageServiceImpl extends ServiceImpl<SysCarFaultMessageMapper, SysCarFaultMessage> implements SysCarFaultMessageService {
@Override
public List<SysCarFaultMessage> selectSysCarFaultMessageList(SysCarFaultMessage sysCarFaultMessage) {
LambdaQueryWrapper<SysCarFaultMessage> wrapper = new LambdaQueryWrapper<>();
return baseMapper.selectList(wrapper);
}
@Override
public List<SysCarFaultMessage> listStatusOnt( ) {
return baseMapper.listStatusOnt();
}
@Override
public List<SysCarFaultMessage> listStatusTwo( ) {
return baseMapper.listStatusTwo();
}
}

View File

@ -57,6 +57,9 @@ public class SysCarFaultServiceImpl
if (sysCarFault.getFaultRank()!=null){
queryWrapper.eq(SysCarFault::getFaultRank, sysCarFault.getFaultRank());
}
if (sysCarFault.getTypeId()!=null){
queryWrapper.eq(SysCarFault::getTypeId,sysCarFault.getTypeId());
}
return this.list(queryWrapper);
}
@ -69,7 +72,10 @@ public class SysCarFaultServiceImpl
public Boolean checkIdUnique(SysCarFault sysCarFault) {
LambdaQueryWrapper<SysCarFault> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(SysCarFault::getId, sysCarFault.getId());
return this.count(queryWrapper) > 0;
queryWrapper.eq(SysCarFault::getFaultCode,sysCarFault.getFaultCode());
return this.count(queryWrapper) == 0;
}
}

View File

@ -0,0 +1,84 @@
package com.muyu.breakdown.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.muyu.breakdown.domain.SysCarFaultLog;
import com.muyu.breakdown.domain.SysCarFaultLog;
import com.muyu.breakdown.mapper.SysCarFaultLogMapper;
import com.muyu.breakdown.mapper.SysCarFaultMapper;
import com.muyu.breakdown.service.SysCarFaultLogService;
import com.muyu.breakdown.service.SysCarFaultLogService;
import com.muyu.common.core.utils.StringUtils;
import org.apache.poi.util.StringUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* @ClassDescription:
* @JdkVersion: 1.8
* @Author: YZL
* @Created: 2024/9/22 21:07
*/
@Service
public class sysCarFaultLogServiceImpl extends ServiceImpl<SysCarFaultLogMapper, SysCarFaultLog> implements SysCarFaultLogService {
@Override
public List<SysCarFaultLog> selectSysCarFaultLogList(SysCarFaultLog sysCarFaultLog) {
LambdaQueryWrapper<SysCarFaultLog> wrapper = new LambdaQueryWrapper<>();
if (StringUtils.isNotEmpty(sysCarFaultLog.getVin())){
wrapper.eq(SysCarFaultLog::getVin,sysCarFaultLog.getVin());
}
if (sysCarFaultLog.getStatus()!=null){
wrapper.eq(SysCarFaultLog::getStatus,sysCarFaultLog.getStatus());
}
return this.list(wrapper);
}
/**
*
* @param sysCarFaultLog
* @return
*/
@Override
public List<SysCarFaultLog> listStatusIgnore(SysCarFaultLog sysCarFaultLog) {
LambdaQueryWrapper<SysCarFaultLog> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(SysCarFaultLog::getStatus,3);
if (StringUtils.isNotEmpty(sysCarFaultLog.getVin())){
wrapper.eq(SysCarFaultLog::getVin,sysCarFaultLog.getVin());
}
return this.list(wrapper);
}
/**
*
* @param sysCarFaultLog
* @return
*/
@Override
public List<SysCarFaultLog> listStatusProcess(SysCarFaultLog sysCarFaultLog) {
LambdaQueryWrapper<SysCarFaultLog> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(SysCarFaultLog::getStatus,2);
if (StringUtils.isNotEmpty(sysCarFaultLog.getVin())){
wrapper.eq(SysCarFaultLog::getVin,sysCarFaultLog.getVin());
}
return this.list(wrapper);
}
//只展示已解决的数据
@Override
public List<SysCarFaultLog> listStatusSolve(SysCarFaultLog sysCarFaultLog) {
LambdaQueryWrapper<SysCarFaultLog> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(SysCarFaultLog::getStatus,1);
if (StringUtils.isNotEmpty(sysCarFaultLog.getVin())){
wrapper.eq(SysCarFaultLog::getVin,sysCarFaultLog.getVin());
}
return this.list(wrapper);
}
}

View File

@ -7,7 +7,7 @@ nacos:
addr: 47.101.53.251:8848
user-name: nacos
password: nacos
namespace: four
namespace: yzl
# SPRING_AMQP_DESERIALIZATION_TRUST_ALL=true spring.amqp.deserialization.trust.all
# Spring
spring:

View File

@ -9,9 +9,7 @@
<result property="faultCode" column="fault_code" />
<result property="faultName" column="fault_name" />
<result property="typeId" column="type_id" />
<result property="carVin" column="car_vin" />
<result property="faultLabel" column="fault_label" />
<result property="faultGroup" column="fault_group" />
<result property="faultBit" column="fault_bit" />
<result property="faultValue" column="fault_value" />
<result property="faultRank" column="fault_rank" />
@ -28,7 +26,7 @@
</resultMap>
<sql id="selectSysCarFaultVo">
select id, fault_code, fault_name, type_id, car_vin, fault_label, fault_group, fault_bit, fault_value, fault_rank, fault_desc, fault_min_threshold, fault_max_threshold, status, warn_status, remark, create_by, create_time, update_by, update_time from sys_car_fault
select id, fault_code, fault_name, type_id, fault_label, fault_bit, fault_value, fault_rank, fault_desc, fault_min_threshold, fault_max_threshold, status, warn_status, remark, create_by, create_time, update_by, update_time from sys_car_fault
</sql>
<select id="selectSysCarFaultList" parameterType="com.muyu.breakdown.domain.SysCarFault" resultMap="SysCarFaultResult">
@ -51,9 +49,7 @@
<if test="faultCode != null and faultCode != ''">fault_code,</if>
<if test="faultName != null">fault_name,</if>
<if test="typeId != null">type_id,</if>
<if test="carVin != null">car_vin,</if>
<if test="faultLabel != null">fault_label,</if>
<if test="faultGroup != null">fault_group,</if>
<if test="faultBit != null">fault_bit,</if>
<if test="faultValue != null">fault_value,</if>
<if test="faultRank != null">fault_rank,</if>
@ -72,9 +68,7 @@
<if test="faultCode != null and faultCode != ''">#{faultCode},</if>
<if test="faultName != null">#{faultName},</if>
<if test="typeId != null">#{typeId},</if>
<if test="carVin != null">#{carVin},</if>
<if test="faultLabel != null">#{faultLabel},</if>
<if test="faultGroup != null">#{faultGroup},</if>
<if test="faultBit != null">#{faultBit},</if>
<if test="faultValue != null">#{faultValue},</if>
<if test="faultRank != null">#{faultRank},</if>
@ -97,9 +91,7 @@
<if test="faultCode != null and faultCode != ''">fault_code = #{faultCode},</if>
<if test="faultName != null">fault_name = #{faultName},</if>
<if test="typeId != null">type_id = #{typeId},</if>
<if test="carVin != null">car_vin = #{carVin},</if>
<if test="faultLabel != null">fault_label = #{faultLabel},</if>
<if test="faultGroup != null">fault_group = #{faultGroup},</if>
<if test="faultBit != null">fault_bit = #{faultBit},</if>
<if test="faultValue != null">fault_value = #{faultValue},</if>
<if test="faultRank != null">fault_rank = #{faultRank},</if>
@ -127,4 +119,11 @@
#{id}
</foreach>
</delete>
<update id="enableWarningsById" parameterType="Long">
update sys_car_fault set warn_status = 0 where id = #{id}
</update>
<update id="disableWarningsById" parameterType="Long">
update sys_car_fault set warn_status = 1 where id = #{id}
</update>
</mapper>

View File

@ -7,7 +7,7 @@ nacos:
addr: 47.101.53.251:8848
user-name: nacos
password: nacos
namespace: four
namespace: lgy
# Spring
spring:

View File

@ -0,0 +1,21 @@
package com.muyu.fence;
import com.muyu.common.security.annotation.EnableCustomConfig;
import com.muyu.common.security.annotation.EnableMyFeignClients;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
*
*
* @author muyu
*/
@EnableCustomConfig
//@EnableCustomSwagger2
@EnableMyFeignClients
@SpringBootApplication
public class CloudElectronicFenceApplication {
public static void main (String[] args) {
SpringApplication.run(CloudElectronicFenceApplication.class, args);
}
}

View File

@ -1,26 +0,0 @@
package com.muyu.fence;
import com.alibaba.druid.spring.boot3.autoconfigure.DruidDataSourceAutoConfigure;
import com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration;
import com.muyu.common.security.annotation.EnableMyFeignClients;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
/**
* @Author YuPing
* @Description
* @Version 1.0
* @Data 2024-09-18 11:27:38
*/
@SpringBootApplication(exclude = {
DataSourceAutoConfiguration.class,
DruidDataSourceAutoConfigure.class,
DynamicDataSourceAutoConfiguration.class
})
@EnableMyFeignClients
public class FenceApplication {
public static void main(String[] args) {
SpringApplication.run(FenceApplication.class, args);
}
}

View File

@ -0,0 +1,139 @@
package com.muyu.fence.controller;
import com.muyu.common.core.domain.Result;
import com.muyu.fence.domain.database.ElectronicFence;
import com.muyu.fence.domain.database.ElectronicFenceGroup;
import com.muyu.fence.domain.req.FenceWayReq;
import com.muyu.fence.domain.req.ElectroicFenceAddReq;
import com.muyu.fence.domain.req.ElectroicFenceListReq;
import com.muyu.fence.domain.req.ElectroicFenceUpdReq;
import com.muyu.fence.domain.resp.ElectronicFenceResp;
import com.muyu.fence.service.ElectronicFenceService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import lombok.extern.log4j.Log4j2;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* @Authoryuping
* @Packagecom.muyu.fence.controller
* @Projectcloud-server
* @nameFenceEtlController
* @Date2024/9/17 16:28
*/
@Log4j2
@Tag(name = "电子围栏")
@RestController
@RequestMapping("/fence")
@RequiredArgsConstructor
public class ElectronicFenceController {
@Autowired
private ElectronicFenceService electronicFenceService;
@PostMapping("/fenceArray")
@Operation(description = "查询所有可用的围栏")
public Result<List<ElectronicFenceResp>> fenceArray() {
System.out.println("=====>" + "hgfvhgjy");
return Result.success(electronicFenceService.fenceArray());
}
@PostMapping("/fenceselectList")
@Operation(description = "列表")
public Result<List<ElectronicFenceResp>> fenceselectList(@RequestBody ElectroicFenceListReq electroicFenceListReq) {
System.out.println("=====>" + "hgfvhgjy");
return Result.success(electronicFenceService.fenceselectList(electroicFenceListReq));
}
@PostMapping("/add")
@Operation(description = "添加")
public Result AddFence(@RequestBody ElectroicFenceAddReq electroicFenceAddReq) {
electronicFenceService.unquireFence(electroicFenceAddReq.getName());
electronicFenceService.AddFence(electroicFenceAddReq);
return Result.success();
}
@PostMapping("/upd/{id}")
@Operation(description = "修改")
public Result UpdFence(@PathVariable("id") Long id, @RequestBody ElectroicFenceUpdReq electroicFenceUpdReq) {
electronicFenceService.updateById(ElectronicFence.buildByElectronicUpd(electroicFenceUpdReq, () -> id));
return Result.success();
}
@PostMapping("/findElectronicByid/{id}")
@Operation(description = "通过id回显围栏信息")
public Result<ElectronicFence> findElectronicByid(@PathVariable("id") Long id) {
ElectronicFence electronicFence= electronicFenceService.findElectronicByid(id);
return Result.success(electronicFence);
}
// @PostMapping("/delElectronById/{id}")
// @Operation(description = "通过id删除围栏")
// public Result delElectronById(@PathVariable("id") Long id) {
//
// electronicFenceService.delElectronById(id);
//
// return Result.success();
// }
/**
*
* @param electronicFenceId
* @return
*/
@DeleteMapping("/{electronicFenceId}")
@Operation(summary = "电子围栏表信息表删除",
description = "通过ID删除电子围栏表信息")
public Result<String> remove(@PathVariable("electronicFenceId") Long electronicFenceId)
{
boolean b = electronicFenceService.removeById(electronicFenceId);
return Result.success(null, "操作成功");
}
@PostMapping("/open/{id}")
@Operation(description = "开启围栏")
public Result openFence(@PathVariable("id") Long id) {
electronicFenceService.openFence(id);
return Result.success();
}
@PostMapping("/close/{id}")
@Operation(description = "关闭围栏")
public Result closeFence(@PathVariable("id") Long id) {
electronicFenceService.closeFence(id);
return Result.success();
}
@PostMapping("/setFenceWay")
@Operation(description = "设置电子围栏的位置")
public Result setFenceWay(@RequestBody FenceWayReq fenceWayReq) {
Long id = fenceWayReq.getId();
String longitudeLatitude = fenceWayReq.getLongitudeLatitude();
log.info("接收到的数据,:{}" + id + "====" + longitudeLatitude);
electronicFenceService.setFenceWay(id, longitudeLatitude);
return Result.success();
}
}

View File

@ -0,0 +1,95 @@
package com.muyu.fence.controller;
import com.muyu.common.core.domain.Result;
import com.muyu.fence.domain.database.ElectronicFence;
import com.muyu.fence.domain.database.ElectronicFenceGroup;
import com.muyu.fence.domain.req.*;
import com.muyu.fence.domain.resp.ElectronicFenceGroupResp;
import com.muyu.fence.domain.resp.GroupFenceListresp;
import com.muyu.fence.service.ElectronicFenceGroupService;
import com.muyu.fence.service.FenceGroupMidService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.extern.log4j.Log4j2;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.*;
import java.util.Collection;
import java.util.List;
/**
* @Authoryuping
* @Packagecom.muyu.fence.controller
* @Projectcloud-server
* @nameFenceGroupController
* @Date2024/9/18 15:15
*/
@Log4j2
@RestController
@RequestMapping("/group")
@Tag(name = "围栏组")
public class ElectronicFenceGroupController {
@Autowired
private ElectronicFenceGroupService electronicFenceGroupService;
@Autowired
private FenceGroupMidService fenceGroupMidService;
@PostMapping("/selectGroupList")
public Result<List<GroupFenceListresp>> selectGroupList(@RequestBody ElectronicFenceGroupListReq req) {
//查询所有的围栏组
List<ElectronicFenceGroup> fenceListList = electronicFenceGroupService.selectGroupList(req);
List<GroupFenceListresp> list = fenceListList.stream().map(ElectronicFenceGroup::buildGroupFence).toList();
return Result.success(list);
}
@Transactional
@PostMapping("/addGroup")
public Result addGroup(@RequestBody ElectronicFenceGroupAddReq addReq) {
ElectronicFenceGroup electronicFenceGroup = ElectronicFenceGroup.buildByAdd(addReq);
//添加围栏组返回添加后的主键自增id
electronicFenceGroupService.save(electronicFenceGroup);
Long id = electronicFenceGroup.getId();
//添加中间表
fenceGroupMidService.addGroupAndFenceMid(id, addReq.getElectronicFenceRespList());
return Result.success();
}
@PostMapping("/findGroupByid/{id}")
@Operation(description = "通过id回显围栏组信息")
public Result<ElectronicFenceGroupResp> findGroupByid(@PathVariable("id") Long id) {
ElectronicFenceGroupResp fenceGroupResp = electronicFenceGroupService.findGroupByid(id);
return Result.success(fenceGroupResp);
}
@Transactional
@PostMapping("/updGroup/{id}")
@Operation(description = "修改")
public Result UpdFence(@PathVariable("id") Long id, @RequestBody ElectronicFenceGroupUpdReq req) {
electronicFenceGroupService.updateById(ElectronicFenceGroup.buildByUpd(req, () -> id));
if (!CollectionUtils.isEmpty(req.getElectronicFenceRespList())) {
//删除中间表
fenceGroupMidService.deliteMid(id);
//增加中间表
fenceGroupMidService.addGroupAndFenceMid(id, req.getElectronicFenceRespList());
}
return Result.success();
}
}

View File

@ -1,112 +0,0 @@
package com.muyu.fence.controller;
import java.util.Arrays;
import java.util.List;
import jakarta.servlet.http.HttpServletResponse;
import javax.annotation.Resource;
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.muyu.common.security.annotation.RequiresPermissions;
import com.muyu.fence.domain.TbFence;
import com.muyu.fence.service.ITbFenceService;
import com.muyu.common.core.web.controller.BaseController;
import com.muyu.common.core.domain.Result;
import com.muyu.common.core.utils.poi.ExcelUtil;
import com.muyu.common.security.utils.SecurityUtils;
import org.springframework.validation.annotation.Validated;
import com.muyu.common.core.web.page.TableDataInfo;
/**
* Controller
*
* @author muyu
* @date 2024-09-18
*/
@RestController
@RequestMapping("/fence")
public class TbFenceController extends BaseController
{
@Resource
private ITbFenceService tbFenceService;
/**
*
*/
@RequiresPermissions("fence:fence:list")
@GetMapping("/list")
public Result<TableDataInfo<TbFence>> list(TbFence tbFence)
{
startPage();
List<TbFence> list = tbFenceService.selectTbFenceList(tbFence);
return getDataTable(list);
}
/**
*
*/
@RequiresPermissions("fence:fence:export")
@PostMapping("/export")
public void export(HttpServletResponse response, TbFence tbFence)
{
List<TbFence> list = tbFenceService.selectTbFenceList(tbFence);
ExcelUtil<TbFence> util = new ExcelUtil<TbFence>(TbFence.class);
util.exportExcel(response, list, "电子围栏数据");
}
/**
*
*/
@RequiresPermissions("fence:fence:query")
@GetMapping(value = "/{fenceId}")
public Result<List<TbFence>> getInfo(@PathVariable("fenceId") Long fenceId)
{
return success(tbFenceService.selectTbFenceByFenceId(fenceId));
}
/**
*
*/
@RequiresPermissions("fence:fence:add")
@PostMapping
public Result<Integer> add(
@Validated @RequestBody TbFence tbFence)
{
if (tbFenceService.checkIdUnique(tbFence)) {
return error("新增 电子围栏 '" + tbFence + "'失败,电子围栏已存在");
}
tbFence.setCreateBy(SecurityUtils.getUsername());
return toAjax(tbFenceService.save(tbFence));
}
/**
*
*/
@RequiresPermissions("fence:fence:edit")
@PutMapping
public Result<Integer> edit(
@Validated @RequestBody TbFence tbFence)
{
if (!tbFenceService.checkIdUnique(tbFence)) {
return error("修改 电子围栏 '" + tbFence + "'失败,电子围栏不存在");
}
tbFence.setUpdateBy(SecurityUtils.getUsername());
return toAjax(tbFenceService.updateById(tbFence));
}
/**
*
*/
@RequiresPermissions("fence:fence:remove")
@DeleteMapping("/{fenceIds}")
public Result<Integer> remove(@PathVariable("fenceIds") Long[] fenceIds)
{
tbFenceService.removeBatchByIds(Arrays.asList(fenceIds));
return success();
}
}

View File

@ -1,36 +0,0 @@
package com.muyu.fence.controller;
import com.muyu.common.core.domain.Result;
import com.muyu.fence.domain.TbGroup;
import com.muyu.fence.service.TbGroupService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* @Author YuPing
* @Description
* @Version 1.0
* @Data 2024-09-22 17:00:08
*/
@RestController
@RequestMapping("/tbGroup")
public class TbGroupController {
@Autowired
private TbGroupService tbGroupService;
/**
*
* @return
*/
@GetMapping("/selectTbGroupList")
public Result<List<TbGroup>> selectTbGroupList() {
return Result.success(tbGroupService.selectTbGroupList());
}
}

View File

@ -1,72 +0,0 @@
package com.muyu.fence.domain;
import com.muyu.common.core.annotation.Excel;
import com.muyu.common.core.web.domain.BaseEntity;
import lombok.*;
import lombok.experimental.SuperBuilder;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
/**
* tb_fence
*
* @author muyu
* @date 2024-09-18
*/
@Data
@Setter
@Getter
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@TableName("tb_fence")
public class TbFence extends BaseEntity{
private static final long serialVersionUID = 1L;
/** 围栏编号 */
@TableId( type = IdType.AUTO)
private Long fenceId;
/** 围栏名称 */
@Excel(name = "围栏名称")
private String fenceName;
/** 围栏类型1.驶入2驶出 */
@Excel(name = "围栏类型1.驶入2驶出")
private Long fenceType;
/** 围栏状态1.正常2.停用 */
@Excel(name = "围栏状态1.正常2.停用")
private Long fenceFlag;
/** 经纬度信息 */
@Excel(name = "经纬度信息")
private String longitudeAndLatitudeInformation;
/** 优先级 */
@Excel(name = "优先级")
private String fencePriority;
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("fenceId", getFenceId())
.append("fenceName", getFenceName())
.append("fenceType", getFenceType())
.append("fenceFlag", getFenceFlag())
.append("longitudeAndLatitudeInformation", getLongitudeAndLatitudeInformation())
.append("fencePriority", getFencePriority())
.append("createBy", getCreateBy())
.append("createTime", getCreateTime())
.append("updateBy", getUpdateBy())
.append("updateTime", getUpdateTime())
.append("remark", getRemark())
.toString();
}
}

View File

@ -1,26 +0,0 @@
package com.muyu.fence.domain;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @Author YuPing
* @Description
* @Version 1.0
* @Data 2024-09-22 16:55:16
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class TbGroup {
/**
*
*/
private Integer groupId;
/**
*
*/
private String groupName;
}

View File

@ -0,0 +1,123 @@
package com.muyu.fence.domain.database;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.muyu.common.core.web.domain.BaseEntity;
import com.muyu.fence.domain.req.ElectroicFenceAddReq;
import com.muyu.fence.domain.req.ElectroicFenceUpdReq;
import com.muyu.fence.domain.resp.ElectronicFenceResp;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import java.util.function.Supplier;
/**
* @Authoryuping
* @Packagecom.muyu.fence.domain
* @Projectcloud-server
* @nameElectronicFence
* @Date2024/9/17 16:34
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@SuperBuilder
@TableName(value = "electronic_fence",autoResultMap = true)
public class ElectronicFence extends BaseEntity {
/**
* id
*/
@TableId(value = "id",type = IdType.AUTO)
private Long id;
/**
*
*/
private String name;
/**
*
*/
private String fenceType;
/**
*
*/
private String longitudeLatitude;
/**
*
*/
private String status;
// /**
// * 电子围栏的开始时间
// */
//
// private Date startTime;
// /**
// * 电子围栏的结束时间
// */
// private Date endTime;
/**
*
*/
private String fenceDesc;
public static ElectronicFenceResp bullerResp(ElectronicFence electronicFence){
return ElectronicFenceResp.builder()
.id(electronicFence.getId())
.name(electronicFence.getName())
.status(electronicFence.getStatus())
.fenceType(electronicFence.getFenceType())
.longitudeLatitude(electronicFence.getLongitudeLatitude())
.desc(electronicFence.getFenceDesc())
.build();
}
public static ElectronicFence buildElectroicAdd(ElectroicFenceAddReq electroicFenceAddReq){
return ElectronicFence.builder()
.name(electroicFenceAddReq.getName())
.fenceDesc(electroicFenceAddReq.getFenceDesc())
.status(electroicFenceAddReq.getStatus())
.longitudeLatitude(electroicFenceAddReq.getLongitudeLatitude())
.fenceType(electroicFenceAddReq.getFenceType())
.build();
}
public static ElectronicFence buildByElectronicUpd(ElectroicFenceUpdReq electroicFenceUpdReq, Supplier<Long> longSupplier){
return ElectronicFence.builder()
.id(longSupplier.get())
.name(electroicFenceUpdReq.getName())
.status(electroicFenceUpdReq.getStatus())
.fenceDesc(electroicFenceUpdReq.getFenceDesc())
.longitudeLatitude(electroicFenceUpdReq.getLongitudeLatitude())
.build();
}
}

View File

@ -0,0 +1,114 @@
package com.muyu.fence.domain.database;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.muyu.common.core.web.domain.BaseEntity;
import com.muyu.fence.domain.req.ElectronicFenceGroupAddReq;
import com.muyu.fence.domain.req.ElectronicFenceGroupUpdReq;
import com.muyu.fence.domain.resp.ElectronicFenceGroupResp;
import com.muyu.fence.domain.resp.GroupFenceListresp;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import java.util.function.Supplier;
/**
* @Authoryuping
* @Packagecom.muyu.fence.domain
* @Projectcloud-server
* @nameElectronicFenceGroup
* @Date2024/9/18 11:14
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@SuperBuilder
@TableName(value = "electronic_fence_group",autoResultMap = true)
public class ElectronicFenceGroup extends BaseEntity {
/**
*
*/
@TableId(value = "id",type = IdType.AUTO)
private Long id;
/**
*
*/
private Integer priority;
/**
*
*/
private String groupName;
/**
*
*/
private String groupType;
/**
*
*/
private String status;
public static GroupFenceListresp buildGroupFence(ElectronicFenceGroup electronicFenceGroup){
return GroupFenceListresp.builder()
.id(electronicFenceGroup.getId())
.groupName(electronicFenceGroup.groupName)
.priority(electronicFenceGroup.getPriority())
.status(electronicFenceGroup.getStatus())
.groupType(electronicFenceGroup.groupType)
.build();
}
public static ElectronicFenceGroupResp buildElectronicFenceGroupResp (ElectronicFenceGroup electronicFenceGroup){
return ElectronicFenceGroupResp.builder()
.id(electronicFenceGroup.getId())
.groupName(electronicFenceGroup.groupName)
.priority(electronicFenceGroup.getPriority())
.status(electronicFenceGroup.getStatus())
.groupType(electronicFenceGroup.groupType)
.build();
}
public static ElectronicFenceGroup buildByAdd(ElectronicFenceGroupAddReq addReq){
return ElectronicFenceGroup.builder()
.groupName(addReq.getGroupName())
.groupType(addReq.getGroupType())
.status(addReq.getStatus())
.priority(addReq.getPriority())
.build();
}
public static ElectronicFenceGroup buildByUpd(ElectronicFenceGroupUpdReq updReq, Supplier<Long> ids){
return ElectronicFenceGroup.builder()
.id(ids.get())
.groupName(updReq.getGroupName())
.groupType(updReq.getGroupType())
.status(updReq.getStatus())
.priority(updReq.getPriority())
.build();
}
}

View File

@ -0,0 +1,32 @@
package com.muyu.fence.domain.database;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @Authoryuping
* @Packagecom.muyu.fence.domain
* @Projectcloud-server
* @nameFenceGroupMid
* @Date2024/9/19 21:01
*/
@Tag(name = "围栏组连接表")
@Data
@AllArgsConstructor
@NoArgsConstructor
@TableName(value = "fence_group_mid",autoResultMap = true)
public class FenceGroupMid {
/**
*
*/
@TableId(value = "id",type = IdType.AUTO)
private Long id;
private Long groupId;
private Long fenceId;
}

View File

@ -0,0 +1,74 @@
package com.muyu.fence.domain.req;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
/**
* @Authoryuping
* @Packagecom.muyu.fence.domain.req
* @Projectcloud-server
* @nameElectroicAdd
* @Date2024/9/17 20:53
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class ElectroicFenceAddReq {
/**
* id
*/
@TableId(value = "id",type = IdType.AUTO)
private Long id;
/**
*
*/
private String name;
/**
*
*/
private String fenceType;
/**
*
*/
private String longitudeLatitude;
/**
*
*/
private String status;
/**
*
*/
private String fenceDesc;
/**
*
*/
private Date startTime;
/**
*
*/
private Date endTime;
}

View File

@ -0,0 +1,65 @@
package com.muyu.fence.domain.req;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
/**
* @Authoryuping
* @Packagecom.muyu.fence.domain.req
* @Projectcloud-server
* @nameElectroicFenceReq
* @Date2024/9/17 20:04
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class ElectroicFenceListReq {
/**
*
*/
private String name;
/**
*
*/
private String fenceType;
/**
*
*/
private String longitudeLatitude;
/**
*
*/
private String status;
/**
*
*/
private Date startTime;
/**
*
*/
private Date endTime;
}

View File

@ -0,0 +1,72 @@
package com.muyu.fence.domain.req;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @Authoryuping
* @Packagecom.muyu.fence.domain.req
* @Projectcloud-server
* @nameElectroicFenceUpdReq
* @Date2024/9/17 21:03
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class ElectroicFenceUpdReq {
/**
* id
*/
private Long id;
/**
*
*/
private String name;
/**
*
*/
private String fenceType;
/**
*
*/
private String longitudeLatitude;
/**
*
*/
private String status;
/**
*
*/
private String fenceDesc;
}

View File

@ -0,0 +1,62 @@
package com.muyu.fence.domain.req;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.muyu.fence.domain.resp.ElectronicFenceResp;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @Authoryuping
* @Packagecom.muyu.fence.domain.req
* @Projectcloud-server
* @nameElectronicFenceGroupAddReq
* @Date2024/9/20 19:14
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class ElectronicFenceGroupAddReq {
/**
*
*/
private Integer priority;
/**
*
*/
private String groupName;
/**
*
*/
private String groupType;
/**
*
*/
private String status;
/**
*
*/
List<ElectronicFenceResp> electronicFenceRespList;
}

View File

@ -0,0 +1,56 @@
package com.muyu.fence.domain.req;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @Authoryuping
* @Packagecom.muyu.fence.domain.req
* @Projectcloud-server
* @nameElectronicFenceGroupListReq
* @Date2024/9/20 16:06
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class ElectronicFenceGroupListReq {
/**
*
*/
@TableId(value = "id",type = IdType.AUTO)
private Long id;
/**
*
*/
private Integer priority;
/**
*
*/
private String groupName;
/**
*
*/
private String groupType;
/**
*
*/
private String status;
}

View File

@ -0,0 +1,66 @@
package com.muyu.fence.domain.req;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.muyu.fence.domain.resp.ElectronicFenceResp;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @Authoryuping
* @Packagecom.muyu.fence.domain.req
* @Projectcloud-server
* @nameElectronicFenceGroupAddReq
* @Date2024/9/20 19:14
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class ElectronicFenceGroupUpdReq {
/**
*
*/
@TableId(value = "id",type = IdType.AUTO)
private Long id;
/**
*
*/
private Integer priority;
/**
*
*/
private String groupName;
/**
*
*/
private String groupType;
/**
*
*/
private String status;
/**
*
*/
List<ElectronicFenceResp> electronicFenceRespList;
}

View File

@ -0,0 +1,35 @@
package com.muyu.fence.domain.req;
import com.muyu.fence.domain.resp.ElectronicFenceResp;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @Authoryuping
* @Packagecom.muyu.fence.domain.req
* @Projectcloud-server
* @nameFenceAndGroupBoundReq
* @Date2024/9/21 9:05
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Tag(name = "用于绑定围栏和围栏组的请求")
public class FenceAndGroupBoundReq {
/**
*
*/
private Long id;
/**
*
*/
private List<ElectronicFenceResp> electronicFenceRespList;
}

View File

@ -0,0 +1,20 @@
package com.muyu.fence.domain.req;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @Authoryuping
* @Packagecom.muyu.fence.domain
* @Projectcloud-server
* @nameFenceWay
* @Date2024/9/20 9:27
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class FenceWayReq {
private Long id;
private String longitudeLatitude;
}

View File

@ -0,0 +1,60 @@
package com.muyu.fence.domain.resp;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @Authoryuping
* @Packagecom.muyu.fence.domain.resp
* @Projectcloud-server
* @nameElectronicFenceGroupResp
* @Date2024/9/22 10:22
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
@Tag(name = "回显围栏组及绑定的电子围栏")
public class ElectronicFenceGroupResp {
/**
*
*/
@TableId(value = "id",type = IdType.AUTO)
private Long id;
/**
*
*/
private Integer priority;
/**
*
*/
private String groupName;
/**
*
*/
private String groupType;
/**
*
*/
private String status;
/**
*
*/
List<ElectronicFenceResp> electronicFenceRespList;
}

View File

@ -0,0 +1,72 @@
package com.muyu.fence.domain.resp;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.muyu.common.core.web.domain.BaseEntity;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
/**
* @Authoryuping
* @Packagecom.muyu.fence.domain
* @Projectcloud-server
* @nameElectronicFence
* @Date2024/9/17 16:34
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class ElectronicFenceResp {
/**
* id
*/
private Long id;
/**
*
*/
private String name;
/**
*
*/
private String fenceType;
/**
*
*/
private String longitudeLatitude;
/**
*
*/
private String status;
/**
*
*/
private String desc;
//private String groupType;
//
//private int priority;
}

View File

@ -0,0 +1,52 @@
package com.muyu.fence.domain.resp;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @Authoryuping
* @Packagecom.muyu.fence.domain.req
* @Projectcloud-server
* @nameGroupFenceListresp
* @Date2024/9/20 9:04
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
@Tag(name = "围栏组列表")
public class GroupFenceListresp {
/**
*
*/
@TableId(value = "id",type = IdType.AUTO)
private Long id;
/**
*
*/
private Integer priority;
/**
*
*/
private String groupName;
/**
*
*/
private String groupType;
/**
*
*/
private String status;
}

View File

@ -0,0 +1,75 @@
package com.muyu.fence.domain.utils;
/**
* @Authoryuping
* @Packagecom.muyu.fence.domain
* @Projectcloud-server
* @nameElectricFenceModel
* @Date2024/9/17 17:27
*/
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
*
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ElectricFenceModel implements Comparable<ElectricFenceModel> {
//车架号
private String vin = "";
//电子围栏结果表UUID
private Long uuid = -999999L;
//上次状态 0 里面 1 外面
private int lastStatus = -999999;
//当前状态 0 里面 1 外面
private int nowStatus = -999999;
//位置时间 yyyy-MM-dd HH:mm:ss
private String gpsTime = "";
//位置纬度--
private Double lat = -999999D;
//位置经度--
private Double lng = -999999D;
//电子围栏ID
private int eleId = -999999;
//电子围栏名称
private String eleName = "";
//中心点地址
private String address = "";
//中心点纬度
private Double latitude;
//中心点经度
private Double longitude = -999999D;
//电子围栏半径
private Float radius = -999999F;
//出围栏时间
private String outEleTime = null;
//进围栏时间
private String inEleTime = null;
//是否在mysql结果表中
private Boolean inMysql = false;
//状态报警 0出围栏 1进围栏
private int statusAlarm = -999999;
//报警信息
private String statusAlarmMsg = "";
//终端时间
private String terminalTime = "";
// 扩展字段 终端时间
private Long terminalTimestamp = -999999L;
@Override
public int compareTo(ElectricFenceModel o) {
if(this.getTerminalTimestamp() > o.getTerminalTimestamp()){
return 1;
}
else if(this.getTerminalTimestamp() < o.getTerminalTimestamp()){
return -1;
}else{
return 0;
}
}
}

View File

@ -0,0 +1,53 @@
package com.muyu.fence.domain.utils;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
/**
* @Authoryuping
* @Packagecom.muyu.fence.domain
* @Projectcloud-server
* @nameElectricFenceResultTmp
* @Date2024/9/17 17:57
*/
/**
*
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ElectricFenceResultTmp {
//电子围栏id
private int id;
//电子围栏名称
private String name;
//电子围栏中心地址
private String address;
//电子围栏半径
private float radius;
//电子围栏中心点的经度
private double longitude;
//电子围栏中心点的维度
private double latitude;
//电子围栏的开始时间
private Date startTime;
//电子围栏的结束时间
private Date endTime;
@Override
public String toString() {
return "ElectricFenceResultTmp{" +
"id=" + id +
", name='" + name + '\'' +
", address='" + address + '\'' +
", radius=" + radius +
", longitude=" + longitude +
", latitude=" + latitude +
", startTime=" + startTime +
", endTime=" + endTime +
'}';
}
}

View File

@ -0,0 +1,55 @@
package com.muyu.fence.domain.utils;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.sql.Timestamp;
import java.util.Date;
/**
* @Authoryuping
* @Packagecom.muyu.fence.domain
* @Projectcloud-server
* @nameElectronicFenceResult
* @Date2024/9/17 17:43
*/
/**
*
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class ElectronicFenceResult {
/**
*
*/
private Long id;
/**
*
*/
private String vin;
/**
*
*/
private String inTime;
private String outTime;
/**
* gps
*/
private Date gpsTime;
private Double lat;
private Double lng;
private Integer eleId;
private String eleName;
private String address;
private Double latitude;
private Double longitude;
private Double radius;
private String terminalTime;
private Date processTime;
}

View File

@ -0,0 +1,63 @@
package com.muyu.fence.domain.utils;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
/**
* @Authoryuping
* @Packagecom.muyu.fence.domain
* @Projectcloud-server
* @nameElectronicFenceSetting
* @Date2024/9/17 16:47
*/
@Data
@SuperBuilder
@AllArgsConstructor
@NoArgsConstructor
@TableName(value = "electronic_fence_setting",autoResultMap = true)
public class ElectronicFenceSetting {
/**
* id
*/
@TableId(value = "id",type = IdType.AUTO)
private String id;
/**
*
*/
private String name;
/**
*
*/
private String address;
/**
*
*/
private String radius;
/**
*
*/
private String longitude;
/**
*
*/
private String latitude;
/**
*
*/
private String startTime;
/**
*
*/
private String endTime;
/**
* (,)
*/
private String status;
}

View File

@ -0,0 +1,16 @@
package com.muyu.fence.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.muyu.fence.domain.database.ElectronicFenceGroup;
import org.apache.ibatis.annotations.Mapper;
/**
* @Authoryuping
* @Packagecom.muyu.fence.mapper
* @Projectcloud-server
* @nameFenceGroupMapper
* @Date2024/9/18 15:19
*/
@Mapper
public interface ElectronicFenceGroupMapper extends BaseMapper<ElectronicFenceGroup> {
}

View File

@ -0,0 +1,16 @@
package com.muyu.fence.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.muyu.fence.domain.database.ElectronicFence;
import org.apache.ibatis.annotations.Mapper;
/**
* @Authoryuping
* @Packagecom.muyu.fence.mapper
* @Projectcloud-server
* @nameElectronicFenceMapper
* @Date2024/9/17 19:29
*/
@Mapper
public interface ElectronicFenceMapper extends BaseMapper<ElectronicFence> {
}

View File

@ -0,0 +1,16 @@
package com.muyu.fence.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.muyu.fence.domain.database.FenceGroupMid;
import org.apache.ibatis.annotations.Mapper;
/**
* @Authoryuping
* @Packagecom.muyu.fence.mapper
* @Projectcloud-server
* @nameFenceGroupMidMapper
* @Date2024/9/20 11:35
*/
@Mapper
public interface FenceGroupMidMapper extends BaseMapper<FenceGroupMid> {
}

View File

@ -1,17 +0,0 @@
package com.muyu.fence.mapper;
import java.util.List;
import com.muyu.fence.domain.TbFence;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
/**
* Mapper
*
* @author muyu
* @date 2024-09-18
*/
@Mapper
public interface TbFenceMapper extends BaseMapper<TbFence>{
}

View File

@ -1,12 +0,0 @@
package com.muyu.fence.mapper;
import com.muyu.fence.domain.TbGroup;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper
public interface TbGroupDao {
//查询围栏组列表
public List<TbGroup> selectTbGroupList();
}

View File

@ -0,0 +1,27 @@
package com.muyu.fence.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.muyu.fence.domain.database.ElectronicFence;
import com.muyu.fence.domain.database.ElectronicFenceGroup;
import com.muyu.fence.domain.req.ElectronicFenceGroupAddReq;
import com.muyu.fence.domain.req.ElectronicFenceGroupListReq;
import com.muyu.fence.domain.resp.ElectronicFenceGroupResp;
import java.util.List;
/**
* @Authoryuping
* @Packagecom.muyu.fence.service
* @Projectcloud-server
* @nameFenceGroupController
* @Date2024/9/18 15:16
*/
public interface ElectronicFenceGroupService extends IService<ElectronicFenceGroup> {
List<ElectronicFenceGroup> selectGroupList(ElectronicFenceGroupListReq req);
ElectronicFenceGroupResp findGroupByid(Long id);
}

View File

@ -0,0 +1,77 @@
package com.muyu.fence.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.muyu.fence.domain.database.ElectronicFence;
import com.muyu.fence.domain.req.ElectroicFenceAddReq;
import com.muyu.fence.domain.req.ElectroicFenceListReq;
import com.muyu.fence.domain.resp.ElectronicFenceResp;
import java.util.List;
/**
* @Authoryuping
* @Packagecom.muyu.fence.service
* @Projectcloud-server
* @nameElectronicFenceService
* @Date2024/9/17 19:29
*/
public interface ElectronicFenceService extends IService<ElectronicFence> {
/**
*
* @param electroicFenceListReq
* @return
*/
List<ElectronicFenceResp> fenceselectList(ElectroicFenceListReq electroicFenceListReq);
/**
*
* @param electroicFenceAddReq
*/
void AddFence(ElectroicFenceAddReq electroicFenceAddReq);
/**
* id
*
* @param id
* @return
*/
ElectronicFence findElectronicByid(Long id);
/**
* id
* @param id
*/
void delElectronById(Long id);
/**
*
* @param id
*/
void openFence(Long id);
/**
*
* @param id
*/
void closeFence(Long id);
/**
* id
* @param id
* @param longitudeLatitude
*/
void setFenceWay(Long id, String longitudeLatitude);
/**
*
* @return
*/
List<ElectronicFenceResp> fenceArray();
void unquireFence(String name);
List<ElectronicFenceResp> selectListByIds(List<Long> ids);
}

View File

@ -0,0 +1,26 @@
package com.muyu.fence.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.muyu.fence.domain.database.FenceGroupMid;
import com.muyu.fence.domain.req.ElectronicFenceGroupUpdReq;
import com.muyu.fence.domain.resp.ElectronicFenceResp;
import java.util.List;
/**
* @Authoryuping
* @Packagecom.muyu.fence.service
* @Projectcloud-server
* @nameFenceGroupMidService
* @Date2024/9/20 11:33
*/
public interface FenceGroupMidService extends IService<FenceGroupMid> {
void addGroupAndFenceMid(Long id, List<ElectronicFenceResp> electronicFenceRespList);
List<FenceGroupMid> selectFenceGroupMidListById(Long id);
void deliteMid(Long id);
}

View File

@ -1,37 +0,0 @@
package com.muyu.fence.service;
import java.util.List;
import com.muyu.fence.domain.TbFence;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* Service
*
* @author muyu
* @date 2024-09-18
*/
public interface ITbFenceService extends IService<TbFence> {
/**
*
*
* @param fenceId
* @return
*/
public TbFence selectTbFenceByFenceId(Long fenceId);
/**
*
*
* @param tbFence
* @return
*/
public List<TbFence> selectTbFenceList(TbFence tbFence);
/**
* id
* @param tbFence
* @return
*/
Boolean checkIdUnique(TbFence tbFence);
}

View File

@ -1,10 +0,0 @@
package com.muyu.fence.service;
import com.muyu.fence.domain.TbGroup;
import java.util.List;
public interface TbGroupService {
//查询围栏组列表
public List<TbGroup> selectTbGroupList();
}

View File

@ -0,0 +1,88 @@
package com.muyu.fence.service.impl;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.muyu.common.core.utils.StringUtils;
import com.muyu.fence.domain.database.ElectronicFenceGroup;
import com.muyu.fence.domain.database.FenceGroupMid;
import com.muyu.fence.domain.req.ElectronicFenceGroupListReq;
import com.muyu.fence.domain.resp.ElectronicFenceGroupResp;
import com.muyu.fence.domain.resp.ElectronicFenceResp;
import com.muyu.fence.mapper.ElectronicFenceGroupMapper;
import com.muyu.fence.service.ElectronicFenceGroupService;
import com.muyu.fence.service.ElectronicFenceService;
import com.muyu.fence.service.FenceGroupMidService;
import lombok.extern.log4j.Log4j2;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
/**
* @Authoryuping
* @Packagecom.muyu.fence.service.impl
* @Projectcloud-server
* @nameFenceGroupServiceImpl
* @Date2024/9/18 15:17
*/
@Log4j2
@Service
public class ElectronicFenceGroupServiceImpl extends ServiceImpl<ElectronicFenceGroupMapper, ElectronicFenceGroup> implements ElectronicFenceGroupService {
@Autowired
private ElectronicFenceGroupMapper electronicFenceGroupMapper;
@Autowired
private ElectronicFenceService electronicFenceService;
@Autowired
private FenceGroupMidService fenceGroupMidService;
@Override
public List<ElectronicFenceGroup> selectGroupList(ElectronicFenceGroupListReq req) {
LambdaQueryWrapper<ElectronicFenceGroup> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.like(
StringUtils.isNotNull(req.getGroupName()),ElectronicFenceGroup::getGroupName,req.getGroupName()
);
queryWrapper.eq(
StringUtils.isNotEmpty(req.getGroupType()),ElectronicFenceGroup::getGroupType,req.getGroupType()
);
queryWrapper.eq(
StringUtils.isNotEmpty(req.getStatus()),ElectronicFenceGroup::getStatus, req.getStatus()
);
List<ElectronicFenceGroup> list = this.list(queryWrapper);
return list;
}
@Override
public ElectronicFenceGroupResp findGroupByid(Long id) {
ElectronicFenceGroup electronicFenceGroup = this.getById(id);
ElectronicFenceGroupResp electronicFenceGroupResp = ElectronicFenceGroup.buildElectronicFenceGroupResp(electronicFenceGroup);
List<FenceGroupMid> fenceGroupMidList = fenceGroupMidService.selectFenceGroupMidListById(id);
if (0<fenceGroupMidList.size()){
List<Long> ids = fenceGroupMidList.stream().map(FenceGroupMid::getFenceId).toList();
List<ElectronicFenceResp> electronicFenceRespList= electronicFenceService.selectListByIds(ids);
electronicFenceGroupResp.setElectronicFenceRespList(electronicFenceRespList);
}
return electronicFenceGroupResp;
}
}

View File

@ -0,0 +1,149 @@
package com.muyu.fence.service.impl;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.muyu.common.core.utils.StringUtils;
import com.muyu.fence.domain.database.ElectronicFence;
import com.muyu.fence.domain.req.ElectroicFenceAddReq;
import com.muyu.fence.domain.req.ElectroicFenceListReq;
import com.muyu.fence.domain.resp.ElectronicFenceResp;
import com.muyu.fence.mapper.ElectronicFenceMapper;
import com.muyu.fence.service.ElectronicFenceService;
import lombok.extern.log4j.Log4j2;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Set;
/**
* @Authoryuping
* @Packagecom.muyu.fence.service.impl
* @Projectcloud-server
* @nameElectronicFenceServiceImpl
* @Date2024/9/17 19:31
*/
@Log4j2
@Service
public class ElectronicFenceServiceImpl extends ServiceImpl<ElectronicFenceMapper, ElectronicFence> implements ElectronicFenceService {
@Autowired
private ElectronicFenceMapper electronicFenceMapper;
@Override
public List<ElectronicFenceResp> fenceselectList(ElectroicFenceListReq electroicFenceListReq) {
LambdaQueryWrapper<ElectronicFence> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.like(
StringUtils.isNotNull(electroicFenceListReq.getName()),ElectronicFence::getName, electroicFenceListReq.getName()
);
queryWrapper.eq(
StringUtils.isNotEmpty(electroicFenceListReq.getFenceType()),ElectronicFence::getFenceType, electroicFenceListReq.getFenceType()
);
queryWrapper.eq(
StringUtils.isNotEmpty(electroicFenceListReq.getStatus()),ElectronicFence::getStatus, electroicFenceListReq.getStatus()
);
List<ElectronicFence> list = this.list(queryWrapper);
return list.stream().map(ElectronicFence::bullerResp).toList();
}
@Override
public void AddFence(ElectroicFenceAddReq electroicFenceAddReq) {
electronicFenceMapper.insert(ElectronicFence.buildElectroicAdd(electroicFenceAddReq));
}
@Override
public ElectronicFence findElectronicByid(Long id) {
ElectronicFence electronicFence = electronicFenceMapper.selectById(id);
return electronicFence;
}
@Override
public void delElectronById(Long id) {
electronicFenceMapper.deleteById(id);
}
@Override
public void openFence(Long id) {
updateStatus(id,0);
}
@Override
public void closeFence(Long id) {
updateStatus(id,1);
}
public void updateStatus (Long id,int status){
UpdateWrapper<ElectronicFence> updateWrapper = new UpdateWrapper<>();
updateWrapper.eq("id",id).set("status",status);
this.update(updateWrapper);
}
@Override
public void setFenceWay(Long id, String longitudeLatitude) {
UpdateWrapper<ElectronicFence> updateWrapper = new UpdateWrapper<>();
updateWrapper.eq("id",id).set("longitude_latitude",longitudeLatitude);
this.update(updateWrapper);
}
@Override
public List<ElectronicFenceResp> fenceArray() {
LambdaQueryWrapper<ElectronicFence> queryWrapper = new LambdaQueryWrapper<>();
LambdaQueryWrapper<ElectronicFence> wrapper = queryWrapper.eq(ElectronicFence::getStatus, 0);
List<ElectronicFence> list = this.list(wrapper);
return list.stream().map(ElectronicFence::bullerResp).toList();
}
@Override
public void unquireFence(String name) {
LambdaQueryWrapper<ElectronicFence> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(ElectronicFence::getName,name);
List<ElectronicFence> fenceList = this.list(queryWrapper);
if (fenceList.size()>0){
throw new RuntimeException("电子围栏名不能重复");
}
}
@Override
public List<ElectronicFenceResp> selectListByIds(List<Long> ids) {
List<ElectronicFence> electronicFenceList = this.list(Wrappers.<ElectronicFence>lambdaQuery().in(ElectronicFence::getId, ids));
return electronicFenceList.stream().map(ElectronicFence::bullerResp).toList();
}
}

View File

@ -0,0 +1,58 @@
package com.muyu.fence.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.muyu.fence.domain.database.ElectronicFenceGroup;
import com.muyu.fence.domain.database.FenceGroupMid;
import com.muyu.fence.domain.req.ElectronicFenceGroupUpdReq;
import com.muyu.fence.domain.resp.ElectronicFenceResp;
import com.muyu.fence.mapper.FenceGroupMidMapper;
import com.muyu.fence.service.FenceGroupMidService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* @Authoryuping
* @Packagecom.muyu.fence.service.impl
* @Projectcloud-server
* @nameFenceGroupMidServiceImpl
* @Date2024/9/20 11:34
*/
@Service
public class FenceGroupMidServiceImpl extends ServiceImpl<FenceGroupMidMapper, FenceGroupMid> implements FenceGroupMidService {
@Autowired
private FenceGroupMidMapper fenceGroupMidMapper;
@Override
public void addGroupAndFenceMid(Long id, List<ElectronicFenceResp> electronicFenceRespList) {
for (ElectronicFenceResp electronicFenceResp : electronicFenceRespList) {
fenceGroupMidMapper.insert(new FenceGroupMid(null,id,electronicFenceResp.getId()));
}
}
@Override
public List<FenceGroupMid> selectFenceGroupMidListById(Long groupId) {
LambdaQueryWrapper<FenceGroupMid> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(FenceGroupMid::getGroupId,groupId);
this.list(queryWrapper);
return this.list(queryWrapper);
}
@Override
public void deliteMid(Long id) {
LambdaQueryWrapper<FenceGroupMid> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(FenceGroupMid::getGroupId,id);
this.remove(wrapper);
}
}

View File

@ -1,80 +0,0 @@
package com.muyu.fence.service.impl;
import java.util.List;
import org.springframework.stereotype.Service;
import com.muyu.fence.mapper.TbFenceMapper;
import com.muyu.fence.domain.TbFence;
import com.muyu.fence.service.ITbFenceService;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.muyu.common.core.utils.StringUtils;
import org.springframework.util.Assert;
/**
* Service
*
* @author muyu
* @date 2024-09-18
*/
@Service
public class TbFenceServiceImpl
extends ServiceImpl<TbFenceMapper, TbFence>
implements ITbFenceService {
/**
*
*
* @param fenceId
* @return
*/
@Override
public TbFence selectTbFenceByFenceId(Long fenceId)
{
LambdaQueryWrapper<TbFence> queryWrapper = new LambdaQueryWrapper<>();
Assert.notNull(fenceId, "fenceId不可为空");
queryWrapper.eq(TbFence::getFenceId, fenceId);
return this.getOne(queryWrapper);
}
/**
*
*
* @param tbFence
* @return
*/
@Override
public List<TbFence> selectTbFenceList(TbFence tbFence)
{
LambdaQueryWrapper<TbFence> queryWrapper = new LambdaQueryWrapper<>();
if (StringUtils.isNotEmpty(tbFence.getFenceName())){
queryWrapper.like(TbFence::getFenceName, tbFence.getFenceName());
}
if (tbFence.getFenceType()!=null){
queryWrapper.eq(TbFence::getFenceType, tbFence.getFenceType());
}
if (tbFence.getFenceFlag()!=null){
queryWrapper.eq(TbFence::getFenceFlag, tbFence.getFenceFlag());
}
if (StringUtils.isNotEmpty(tbFence.getLongitudeAndLatitudeInformation())){
queryWrapper.eq(TbFence::getLongitudeAndLatitudeInformation, tbFence.getLongitudeAndLatitudeInformation());
}
if (tbFence.getFencePriority()!=null){
queryWrapper.eq(TbFence::getFencePriority, tbFence.getFencePriority());
}
return this.list(queryWrapper);
}
/**
*
* @param tbFence
* @return
*/
@Override
public Boolean checkIdUnique(TbFence tbFence) {
LambdaQueryWrapper<TbFence> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(TbFence::getFenceId, tbFence.getFenceId());
return this.count(queryWrapper) > 0;
}
}

View File

@ -1,32 +0,0 @@
package com.muyu.fence.service.impl;
import com.muyu.fence.domain.TbGroup;
import com.muyu.fence.mapper.TbGroupDao;
import com.muyu.fence.service.TbGroupService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* @Author YuPing
* @Description
* @Version 1.0
* @Data 2024-09-22 16:59:33
*/
@Service
public class TbGroupServiceImpl implements TbGroupService {
@Autowired
private TbGroupDao tbGroupDao;
/**
*
* @return
*/
@Override
public List<TbGroup> selectTbGroupList() {
return tbGroupDao.selectTbGroupList();
}
}

View File

@ -6,7 +6,7 @@ nacos:
addr: 47.101.53.251:8848
user-name: nacos
password: nacos
namespace: four
namespace: lgy
# SPRING_AMQP_DESERIALIZATION_TRUST_ALL=true spring.amqp.deserialization.trust.all
# Spring
spring:

View File

@ -1,17 +0,0 @@
<?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">
<!--
1.在mybats的开发中namespace有特殊的意思一定要是对应接口的全限定名
通过namespace可以简历mapper.xml和接口之间的关系(名字不重要,位置不重要)
-->
<mapper namespace="com.muyu.fence.mapper.TbGroupDao">
<!--查询围栏组列表-->
<select id="selectTbGroupList" resultType="com.muyu.fence.domain.TbGroup">
select group_id, group_name
from tb_group;
</select>
</mapper>

View File

@ -7,7 +7,7 @@ nacos:
addr: 47.101.53.251:8848
user-name: nacos
password: nacos
namespace: four
namespace: yzl
# Spring
spring:

View File

@ -7,7 +7,7 @@ nacos:
addr: 47.101.53.251:8848
user-name: nacos
password: nacos
namespace: four
namespace: yzl
# SPRING_AMQP_DESERIALIZATION_TRUST_ALL=true spring.amqp.deserialization.trust.all
# Spring
spring:

View File

@ -7,7 +7,7 @@ nacos:
addr: 47.101.53.251:8848
user-name: nacos
password: nacos
namespace: four
namespace: yzl
# SPRING_AMQP_DESERIALIZATION_TRUST_ALL=true spring.amqp.deserialization.trust.all
# Spring
spring:

View File

@ -20,7 +20,6 @@ import org.springframework.cloud.openfeign.EnableFeignClients;
public class TemplateApplication {
public static void main(String[] args) {
SpringApplication.run(TemplateApplication.class, args);
}

View File

@ -6,7 +6,7 @@ nacos:
addr: 47.101.53.251:8848
user-name: nacos
password: nacos
namespace: four
namespace: lgy
# SPRING_AMQP_DESERIALIZATION_TRUST_ALL=true spring.amqp.deserialization.trust.all
# Spring
spring:

View File

@ -81,7 +81,7 @@ public class WxTestController {
// message.setMsgType(map.get("MsgType"));
message.setMsgType("text");
message.setCreateTime(System.currentTimeMillis() / 1000);
message.setContent("自动回复:您好");
message.setContent("官方回复:您好");
//XStream将java对象转换为xml字符串
XStream xStream = new XStream();
xStream.processAnnotations(Message.class);

View File

@ -7,7 +7,7 @@ nacos:
addr: 47.101.53.251:8848
user-name: nacos
password: nacos
namespace: four
namespace: yzl
# Spring
spring: