feat: 电子围栏编辑和化多边形

server_five_liuyunhu
lijiayao 2024-04-01 19:47:00 +08:00
parent 42c80590ff
commit ef85dad9c9
9 changed files with 82 additions and 43 deletions

View File

@ -14,8 +14,12 @@ import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder; import lombok.experimental.SuperBuilder;
import org.springframework.format.annotation.DateTimeFormat; import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.validation.annotation.Validated;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.Date; import java.util.Date;
import java.util.List;
/** /**
* @Author: LiJiaYao * @Author: LiJiaYao
@ -37,6 +41,8 @@ public class Fence extends BaseEntity{
/** /**
* *
*/ */
@NotEmpty(message = "围栏名称不能为空")
private String fenceName; private String fenceName;
/** /**
* *
@ -45,6 +51,7 @@ public class Fence extends BaseEntity{
/** /**
* *
*/ */
@NotEmpty(message = "围栏描述不能为空")
private String fenceDescription; private String fenceDescription;
/** /**
* *
@ -66,15 +73,15 @@ public class Fence extends BaseEntity{
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date updateTime; private Date updateTime;
/** /**
* *
*/ */
@NotEmpty(message = "创建人不能为空")
private String createName; private String createName;
/** /**
* *
*/ */
@NotEmpty(message = "维护人不能为空")
private String maintainerName; private String maintainerName;
/** /**
* *
@ -86,7 +93,7 @@ public class Fence extends BaseEntity{
/** /**
* *
*/ */
private Integer[] logoId; private Integer logoId;
@TableField(exist = false) @TableField(exist = false)
private String logoName; private String logoName;

View File

@ -15,13 +15,9 @@ import lombok.NoArgsConstructor;
@NoArgsConstructor @NoArgsConstructor
public class FenceConfig { public class FenceConfig {
private String fenceName; private String fenceName;
/** /**
* *
*/ */
private Integer fenceState; private Integer fenceState;
private Integer pageNum=1;
private Integer pageSize=3;
} }

View File

@ -8,6 +8,7 @@ import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat; import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date; import java.util.Date;
import java.util.List;
/** /**
* @Author: LiJiaYao * @Author: LiJiaYao
@ -69,5 +70,5 @@ public class FenceRequest {
* *
*/ */
@TableField(exist = false) @TableField(exist = false)
private String[] logoId; private String[] logoIds;
} }

View File

@ -17,8 +17,6 @@ import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.util.List; import java.util.List;
import static com.couplet.common.core.utils.PageUtils.startPage;
/** /**
* @Author: LiJiaYao * @Author: LiJiaYao
* @Date: 2024/3/28 * @Date: 2024/3/28
@ -39,7 +37,6 @@ public class FenceController extends BaseController {
@RequiresPermissions("couplet:fence:fenceList") @RequiresPermissions("couplet:fence:fenceList")
@PostMapping("/fenceList") @PostMapping("/fenceList")
public Result<?> fenceList(@RequestBody FenceConfig fenceConfig){ public Result<?> fenceList(@RequestBody FenceConfig fenceConfig){
startPage(); startPage();
List<Fence> list = fenceService.pageQuery(fenceConfig); List<Fence> list = fenceService.pageQuery(fenceConfig);
return getDataTable(list); return getDataTable(list);
@ -55,10 +52,11 @@ public class FenceController extends BaseController {
@RequiresPermissions("couplet:fence:fenceAdd") @RequiresPermissions("couplet:fence:fenceAdd")
@Log(title = "电子围栏新增",businessType = BusinessType.INSERT) @Log(title = "电子围栏新增",businessType = BusinessType.INSERT)
public Result<?> fenceInsert(HttpServletRequest request, @RequestBody FenceRequest fenceRequest){ public Result<?> fenceInsert(HttpServletRequest request, @RequestBody FenceRequest fenceRequest){
if (!fenceService.checkFenceKeyUnique(fenceRequest.getFenceName())) {
return error("新增参数'" + fenceRequest.getFenceName() + "'失败,参数键名已存在");
}
fenceService.fenceInsert(request,fenceRequest); fenceService.fenceInsert(request,fenceRequest);
return Result.success("新增成功"); return Result.success("新增成功");
} }
/** /**
@ -69,8 +67,10 @@ public class FenceController extends BaseController {
@PostMapping("/fenceUpdate") @PostMapping("/fenceUpdate")
@RequiresPermissions("couplet:fence:fenceUpdate") @RequiresPermissions("couplet:fence:fenceUpdate")
@Log(title = "电子围栏修改",businessType = BusinessType.UPDATE) @Log(title = "电子围栏修改",businessType = BusinessType.UPDATE)
public Result<?> fenceUpdate(@Validated @RequestBody FenceUpdateRequest fenceUpdateRequest){ public Result<?> fenceUpdate(@Validated @RequestBody FenceUpdateRequest fenceUpdateRequest){
if (!fenceService.checkFenceKeyUnique(fenceUpdateRequest.getFenceName())) {
return error("修改参数'" + fenceUpdateRequest.getFenceName() + "'失败,参数键名已存在");
}
fenceService.changeFenceStatus(fenceUpdateRequest); fenceService.changeFenceStatus(fenceUpdateRequest);
return Result.success("修改成功"); return Result.success("修改成功");
} }
@ -83,19 +83,21 @@ public class FenceController extends BaseController {
@DeleteMapping("/{fenceId}") @DeleteMapping("/{fenceId}")
@RequiresPermissions("couplet:fence:fenceDelete") @RequiresPermissions("couplet:fence:fenceDelete")
@Log(title = "电子围栏删除",businessType = BusinessType.DELETE) @Log(title = "电子围栏删除",businessType = BusinessType.DELETE)
public Result<?> fenceDelete(@PathVariable Long fenceId){ public Result<?> fenceDelete(@PathVariable Long fenceId){
boolean b = fenceService.removeById(fenceId); fenceService.removeByFenceId(fenceId);
// fenceService.removeByFenceId(fenceId); return Result.success();
return toAjax(b);
} }
/**
*
* @param fenceUpdateRequest
* @return
*/
@PostMapping("/fenceState") @PostMapping("/fenceState")
@RequiresPermissions("couplet:fence:fenceState") @RequiresPermissions("couplet:fence:fenceState")
@Log(title = "围栏启用和停用",businessType = BusinessType.OTHER) @Log(title = "围栏启用和停用",businessType = BusinessType.OTHER)
public Result<?> fenceState(@RequestBody FenceUpdateRequest fenceUpdateRequest){ public Result<?> fenceState(@RequestBody FenceUpdateRequest fenceUpdateRequest){
fenceService.changeFenceStatus(fenceUpdateRequest); fenceService.changeFenceStatus(fenceUpdateRequest);
return success(); return success();
} }

View File

@ -32,4 +32,10 @@ public interface FenceMapper extends BaseMapper<Fence> {
*/ */
List<Fence> pageQuery(FenceConfig fenceConfig); List<Fence> pageQuery(FenceConfig fenceConfig);
/**
*
* @param fenceName
* @return
*/
boolean checkFenceKeyUnique(String fenceName);
} }

View File

@ -35,4 +35,12 @@ public interface FenceService extends IService<Fence> {
*/ */
void removeByFenceId(Long fenceId); void removeByFenceId(Long fenceId);
/**
*
*
* @param fenceName
* @return
*/
boolean checkFenceKeyUnique(String fenceName);
} }

View File

@ -1,7 +1,5 @@
package com.couplet.map.server.service.impl; package com.couplet.map.server.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.couplet.map.common.domain.Fence; import com.couplet.map.common.domain.Fence;
import com.couplet.map.common.domain.request.FenceConfig; import com.couplet.map.common.domain.request.FenceConfig;
@ -57,15 +55,13 @@ public class FenceServiceImpl extends ServiceImpl<FenceMapper, Fence> implements
@Override @Override
public void fenceInsert(HttpServletRequest request,FenceRequest fenceRequest) { public void fenceInsert(HttpServletRequest request,FenceRequest fenceRequest) {
int a= fenceMapper.insertFence(fenceRequest); int a= fenceMapper.insertFence(fenceRequest);
String[] logoId = fenceRequest.getLogoId(); String[] logoIds = fenceRequest.getLogoIds();
String[] split=null; String[] parts = new String[0];
if (logoId != null && logoId.length> 0){ for (String logoId : logoIds) {
split = logoId[0].split(","); parts = logoId.split(",");
} fenAndLogoService.addBach(fenceRequest.getFenceId(),parts);
if (a>0){
fenAndLogoService.addBach(fenceRequest.getFenceId(),split);
} }
} }
@ -74,4 +70,9 @@ public class FenceServiceImpl extends ServiceImpl<FenceMapper, Fence> implements
public void removeByFenceId(Long fenceId) { public void removeByFenceId(Long fenceId) {
fenceMapper.removeByFenceId(fenceId); fenceMapper.removeByFenceId(fenceId);
} }
@Override
public boolean checkFenceKeyUnique(String fenceName) {
return fenceMapper.checkFenceKeyUnique(fenceName);
}
} }

View File

@ -22,9 +22,10 @@
<insert id="addBach"> <insert id="addBach">
INSERT INTO `couplet-cloud`.`couplet_fences_and_logo` INSERT INTO `couplet-cloud`.`couplet_fences_and_logo`
(`fences_id`, `logo_id`) VALUES (`fences_id`, `logo_id`)
<foreach collection="logoIds" item="logoItemId" separator="," close="(" open=")"> VALUES
(#{fenceId}, #{logoItemId}) <foreach collection="logoIds" item="item" separator=",">
</foreach> (#{fenceId}, #{item})
</foreach>
</insert> </insert>
</mapper> </mapper>

View File

@ -21,7 +21,7 @@
</resultMap> </resultMap>
<sql id="selectFence"> <sql id="selectFence">
SELECT SELECT
fence_id, f.fence_id,
fence_name, fence_name,
fence_longitude_latitude, fence_longitude_latitude,
fence_description, fence_description,
@ -33,19 +33,32 @@
maintainer_name, maintainer_name,
alarm_status, alarm_status,
l.logo_id, l.logo_id,
logo_name GROUP_CONCAT(logo_name) as logoName
FROM couplet_fence_info f INNER JOIN couplet_fences_and_logo m on FROM couplet_fence_info f INNER JOIN couplet_fences_and_logo m on
f.fence_id=m.fences_id INNER JOIN couplet_logo_info l on l.logo_id=m.logo_id GROUP BY fence_id f.fence_id=m.fences_id INNER JOIN couplet_logo_info l on l.logo_id=m.logo_id
</sql>
<sql id="fence">
SELECT
fence_id,
fence_name,
fence_longitude_latitude,
fence_description,
is_delete,
fence_state,
create_time,
update_time,
create_name,
maintainer_name,
alarm_status
FROM couplet_fence_info
</sql> </sql>
<insert id="insertFence" parameterType="com.couplet.map.common.domain.request.FenceRequest" keyProperty="fenceId" <insert id="insertFence" parameterType="com.couplet.map.common.domain.request.FenceRequest" keyProperty="fenceId"
useGeneratedKeys="true"> useGeneratedKeys="true">
INSERT INTO `couplet-cloud`.`couplet_fence_info` INSERT INTO `couplet-cloud`.`couplet_fence_info`
(`fence_name`, `fence_description`, `is_delete`, `fence_state`, `create_time`, (`fence_name`, `fence_longitude_latitude`, `fence_description`, `is_delete`, `fence_state`, `create_time`,
`create_name`, `maintainer_name`, `alarm_status`) `update_time`, `create_name`, `maintainer_name`, `alarm_status`)
VALUES VALUES
(#{fenceName}, #{fenceDescription}, 0, 0, now(), #{createTime}, (#{fenceName}, null, #{fenceDescription}, 0, 0, now(), null, null, #{maintainerName}, 0)
#{createName}, 0);
</insert> </insert>
@ -78,5 +91,9 @@
and fence_state = #{fenceState} and fence_state = #{fenceState}
</if> </if>
</where> </where>
GROUP BY f.fence_id
</select>
<select id="checkFenceKeyUnique" resultType="java.lang.Boolean">
<include refid="fence"/> where fence_name = #{fenceName}
</select> </select>
</mapper> </mapper>