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
dev
刘武 2024-09-25 09:50:09 +08:00
commit ede54c3762
45 changed files with 1880 additions and 480 deletions

View File

@ -7,7 +7,7 @@ nacos:
addr: 47.101.53.251:8848 addr: 47.101.53.251:8848
user-name: nacos user-name: nacos
password: nacos password: nacos
namespace: four namespace: lgy
# Spring # Spring
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 addr: 47.101.53.251:8848
user-name: nacos user-name: nacos
password: nacos password: nacos
namespace: four namespace: lgy
# SPRING_AMQP_DESERIALIZATION_TRUST_ALL=true spring.amqp.deserialization.trust.all # SPRING_AMQP_DESERIALIZATION_TRUST_ALL=true spring.amqp.deserialization.trust.all
# Spring # Spring
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

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