电子围栏功能

master
guochaojie 5 months ago
parent 3894e9eb30
commit b8b92b27c6

@ -5,11 +5,11 @@ import jnpf.entity.StationAreaEntity;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* nx_station_area
*
* V3.5
* https://www.jnpfsoft.com
* JNPF
* 2024-05-15
* 2024-05-20
*/
public interface StationAreaMapper extends BaseMapper<StationAreaEntity> {

@ -1,18 +1,17 @@
package jnpf.service;
import jnpf.entity.StationAreaEntity;
import jnpf.model.stationarea.*;
import jnpf.entity.*;
import java.util.*;
import com.baomidou.mybatisplus.extension.service.IService;
import jnpf.model.stationarea.StationAreaForm;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
/**
* stationArea
*
* V3.5
* https://www.jnpfsoft.com
* JNPF
* 2024-05-15
* 2024-05-20
*/
public interface StationAreaService extends IService<StationAreaEntity> {
List<StationAreaEntity> getList(StationAreaPagination stationAreaPagination);

@ -32,11 +32,11 @@ import jnpf.base.UserInfo;
import jnpf.permission.entity.UserEntity;
/**
*
* stationArea
*
* V3.5
* https://www.jnpfsoft.com
* JNPF
* 2024-05-15
* 2024-05-20
*/
@Service
public class StationAreaServiceImpl extends ServiceImpl<StationAreaMapper, StationAreaEntity> implements StationAreaService{
@ -144,32 +144,13 @@ public class StationAreaServiceImpl extends ServiceImpl<StationAreaMapper, Stati
}
}
if(isPc){
if(ObjectUtil.isNotEmpty(stationAreaPagination.getStationCode())){
if(ObjectUtil.isNotEmpty(stationAreaPagination.getAreaName())){
stationAreaNum++;
List<String> idList = new ArrayList<>();
try {
String[][] stationCode = JsonUtil.getJsonToBean(stationAreaPagination.getStationCode(),String[][].class);
for(int i=0;i<stationCode.length;i++){
if(stationCode[i].length>0){
idList.add(JsonUtil.getObjectToString(Arrays.asList(stationCode[i])));
}
}
}catch (Exception e1){
try {
List<String> stationCode = JsonUtil.getJsonToList(stationAreaPagination.getStationCode(),String.class);
if(stationCode.size()>0){
idList.addAll(stationCode);
}
}catch (Exception e2){
idList.add(String.valueOf(stationAreaPagination.getStationCode()));
}
}
stationAreaQueryWrapper.lambda().and(t->{
idList.forEach(tt->{
t.like(StationAreaEntity::getStationCode, tt).or();
});
});
String value = stationAreaPagination.getAreaName() instanceof List ?
JsonUtil.getObjectToString(stationAreaPagination.getAreaName()) :
String.valueOf(stationAreaPagination.getAreaName());
stationAreaQueryWrapper.lambda().like(StationAreaEntity::getAreaName,value);
}
@ -202,16 +183,6 @@ public class StationAreaServiceImpl extends ServiceImpl<StationAreaMapper, Stati
}
if(ObjectUtil.isNotEmpty(stationAreaPagination.getAreaName())){
stationAreaNum++;
String value = stationAreaPagination.getAreaName() instanceof List ?
JsonUtil.getObjectToString(stationAreaPagination.getAreaName()) :
String.valueOf(stationAreaPagination.getAreaName());
stationAreaQueryWrapper.lambda().like(StationAreaEntity::getAreaName,value);
}
if(ObjectUtil.isNotEmpty(stationAreaPagination.getStatus())){
stationAreaNum++;
@ -329,8 +300,16 @@ public class StationAreaServiceImpl extends ServiceImpl<StationAreaMapper, Stati
if(isSave){
String mainId = RandomUtil.uuId() ;
entity.setCreatorUserId(userInfo.getUserId());
entity.setDeleteTime(DateUtil.getNowDate());
entity.setLastModifyUserId(null);
entity.setLastModifyTime(null);
entity.setId(mainId);
}else{
entity.setCreatorUserId(userInfo.getUserId());
entity.setDeleteTime(DateUtil.getNowDate());
entity.setLastModifyUserId(null);
entity.setLastModifyTime(null);
}
this.saveOrUpdate(entity);

@ -30,15 +30,15 @@ import jnpf.exception.WorkFlowException;
import org.springframework.transaction.annotation.Transactional;
/**
*
*
* @ V3.5
* @ https://www.jnpfsoft.com
* @ JNPF
* @ 2024-05-16
* @ 2024-05-20
*/
@Slf4j
@RestController
@Tag(name = "回收站地图围栏" , description = "scm")
@Tag(name = "回收站电子围栏" , description = "scm")
@RequestMapping("/api/scm/StationArea")
public class StationAreaController {

@ -9,7 +9,7 @@ import java.util.Date;
* @ V3.5
* @ https://www.jnpfsoft.com
* @ JNPF
* @ 2024-05-16
* @ 2024-05-20
*/
@Data
@TableName("nx_station_area")

@ -6,11 +6,11 @@ import java.math.BigDecimal;
import com.fasterxml.jackson.annotation.JsonProperty;
/**
*
*
* @ V3.5
* @ https://www.jnpfsoft.com
* @ JNPF
* @ 2024-05-16
* @ 2024-05-20
*/
@Data
public class StationAreaForm {
@ -26,13 +26,25 @@ public class StationAreaForm {
/** 是否启用 **/
@JsonProperty("status")
private String status;
/** 所属回收站 **/
/** 点编号 **/
@JsonProperty("stationCode")
private Object stationCode;
private String stationCode;
/** 地图信息 **/
@JsonProperty("areaMapInfo")
private String areaMapInfo;
/** 区域描述 **/
@JsonProperty("areaDesc")
private String areaDesc;
/** 创建用户 **/
@JsonProperty("creatorUserId")
private String creatorUserId;
/** 删除时间 **/
@JsonProperty("deleteTime")
private String deleteTime;
/** 修改用户 **/
@JsonProperty("lastModifyUserId")
private String lastModifyUserId;
/** 修改时间 **/
@JsonProperty("lastModifyTime")
private String lastModifyTime;
}

@ -7,11 +7,11 @@ import java.util.List;
/**
*
*
*
* @ V3.5
* @ https://www.jnpfsoft.com
* @ JNPF
* @ 2024-05-16
* @ 2024-05-20
*/
@Data
public class StationAreaPagination extends Pagination {
@ -27,15 +27,12 @@ public class StationAreaPagination extends Pagination {
private String moduleId;
/** 菜单id */
private String menuId;
/** 所属回收站 */
@JsonProperty("stationCode")
private Object stationCode;
/** 区域类型 */
@JsonProperty("areaType")
private Object areaType;
/** 区域名称 */
@JsonProperty("areaName")
private Object areaName;
/** 区域类型 */
@JsonProperty("areaType")
private Object areaType;
/** 是否启用 */
@JsonProperty("status")
private Object status;

@ -25,8 +25,8 @@
</jnpf-form-tip-item>
</el-col>
<el-col :span="24" >
<jnpf-form-tip-item label="所属回收站"
prop="stationCode" >
<jnpf-form-tip-item label="点编号"
prop="stationCode" tip-label="绑定站点编码" >
<p>{{dataForm.stationCode}}</p>
</jnpf-form-tip-item>
</el-col>
@ -42,6 +42,18 @@
<p>{{dataForm.areaDesc}}</p>
</jnpf-form-tip-item>
</el-col>
<el-col :span="24" >
<jnpf-form-tip-item label="修改用户"
prop="lastModifyUserId" >
<p>{{dataForm.lastModifyUserId}}</p>
</jnpf-form-tip-item>
</el-col>
<el-col :span="24" >
<jnpf-form-tip-item label="修改时间"
prop="lastModifyTime" >
<p>{{dataForm.lastModifyTime}}</p>
</jnpf-form-tip-item>
</el-col>
</template>
</el-form>
</el-row>
@ -70,15 +82,18 @@
dataForm: {
id :'',
areaName : '',
areaType : "1",
areaType : "",
status : "1",
stationCode : "",
areaMapInfo : '',
areaDesc : '',
creatorUserId : "",
deleteTime : "",
lastModifyUserId : "",
lastModifyTime : "",
},
areaTypeProps:{"label":"fullName","value":"enCode" },
statusProps:{"label":"fullName","value":"enCode" },
stationCodeProps:{"label":"fullName","value":"id" },
}
},

File diff suppressed because one or more lines are too long

@ -36,17 +36,17 @@
</el-col>
<el-col :span="24" >
<jnpf-form-tip-item
label="所属回收站" prop="stationCode" >
<JnpfSelect v-model="dataForm.stationCode" @change="changeData('stationCode',-1)"
placeholder="选择本组织回收站进行绑定" clearable :style='{"width":"100%"}' :options="stationCodeOptions" :props="stationCodeProps" >
</JnpfSelect>
label="点编号" tipLabel="绑定站点编码" prop="stationCode" >
<JnpfPopupSelect v-model="dataForm.stationCode" @change="changeData('stationCode',-1)"
:rowIndex="null" :formData="dataForm" :templateJson="interfaceRes.stationCode" placeholder="请选择为那个站点绘制区域" hasPage propsValue="station_code" popupWidth="800px" popupTitle="选择数据" popupType="dialog" relationField='station_name' field='stationCode' interfaceId="520259300875047493" :pageSize="20" :columnOptions="stationCodecolumnOptions" clearable :style='{"width":"100%"}'>
</JnpfPopupSelect>
</jnpf-form-tip-item>
</el-col>
<el-col :span="24" >
<jnpf-form-tip-item
label="地图信息" tipLabel="在地图上绘制电子围栏" prop="areaMapInfo" >
<JnpfInput v-model="dataForm.areaMapInfo" @change="changeData('areaMapInfo',-1)"
placeholder="绘制电子围栏区域" disabled :maxlength="65539" clearable prefix-icon='ym-custom ym-custom-google-maps' :style='{"width":"100%"}' show-password >
placeholder="绘制电子围栏区域" disabled :maxlength="65539" clearable prefix-icon='el-icon-map-location' :style='{"width":"100%"}' show-password >
</JnpfInput>
</jnpf-form-tip-item>
</el-col>
@ -54,8 +54,24 @@
<jnpf-form-tip-item
label="区域描述" tipLabel="请输入区域描述" prop="areaDesc" >
<JnpfTextarea v-model="dataForm.areaDesc" @change="changeData('areaDesc',-1)"
placeholder="请输入不超过两百字的标题描述" :style='{"width":"100%"}' true type="textarea" :autosize='{"minRows":4,"maxRows":4}' >
placeholder="请输入不超过两百字的区域描述" :style='{"width":"100%"}' true type="textarea" :autosize='{"minRows":4,"maxRows":4}' >
</JnpfTextarea>
</jnpf-form-tip-item>
</el-col>
<el-col :span="24" >
<jnpf-form-tip-item
label="修改用户" prop="lastModifyUserId" >
<JnpfInput v-model="dataForm.lastModifyUserId" @change="changeData('lastModifyUserId',-1)"
placeholder="系统自动生成" readonly :style='{"width":"100%"}'>
</JnpfInput>
</jnpf-form-tip-item>
</el-col>
<el-col :span="24" >
<jnpf-form-tip-item
label="修改时间" prop="lastModifyTime" >
<JnpfInput v-model="dataForm.lastModifyTime" @change="changeData('lastModifyTime',-1)"
placeholder="系统自动生成" readonly :style='{"width":"100%"}'>
</JnpfInput>
</jnpf-form-tip-item>
</el-col>
<!-- 表单结束 -->
@ -123,11 +139,15 @@
currVmodel:"",
dataForm: {
areaName : undefined,
areaType : "1",
areaType : undefined,
status : "1",
stationCode : undefined,
areaMapInfo : undefined,
areaDesc : undefined,
creatorUserId : undefined,
deleteTime : undefined,
lastModifyUserId : undefined,
lastModifyTime : undefined,
},
tableRequiredData: {},
dataRule:
@ -142,7 +162,7 @@
areaType: [
{
required: true,
message: '请至少选择一个',
message: '请选择围栏类型',
trigger: 'change'
},
],
@ -156,7 +176,7 @@
stationCode: [
{
required: true,
message: '选择本组织回收站进行绑定',
message: '请选择为那个站点绘制区域',
trigger: 'change'
},
],
@ -172,8 +192,7 @@
areaTypeProps:{"label":"fullName","value":"enCode" },
statusOptions:[],
statusProps:{"label":"fullName","value":"enCode" },
stationCodeOptions:[],
stationCodeProps:{"label":"fullName","value":"id" },
stationCodecolumnOptions:[ {"label":"站点编码","value":"station_code"}, {"label":"站点名称","value":"station_name"},],
childIndex:-1,
isEdit:false,
interfaceRes: {
@ -183,6 +202,10 @@
stationCode:[] ,
areaMapInfo:[] ,
areaDesc:[] ,
creatorUserId:[] ,
deleteTime:[] ,
lastModifyUserId:[] ,
lastModifyTime:[] ,
},
}
},
@ -276,7 +299,6 @@
dataAll(){
this.getareaTypeOptions();
this.getstatusOptions();
this.getstationCodeOptions();
},
getareaTypeOptions() {
getDictionaryDataSelector('560423985691492677').then(res => {
@ -288,31 +310,6 @@
this.statusOptions = res.data.list
})
},
getstationCodeOptions() {
const index = this.childIndex
let templateJsonList = JSON.parse(JSON.stringify(this.interfaceRes.stationCode))
for (let i = 0; i < templateJsonList.length; i++) {
let json = templateJsonList[i];
if(json.relationField){
let relationFieldAll = json.relationField.split("-");
let val = json.defaultValue;
if(relationFieldAll.length>1 && index>-1){
val = this.dataForm[relationFieldAll[0]+'List']&&this.dataForm[relationFieldAll[0]+'List'].length?this.dataForm[relationFieldAll[0]+'List'][index][relationFieldAll[1]]:''
}else {
val = this.dataForm[relationFieldAll]
}
json.defaultValue = val
}
}
let template ={
paramList:templateJsonList
}
getDataInterfaceRes('520259300875047493',template).then(res => {
let data = res.data
this.stationCodeOptions = data
this.changeDataFormData(1,'stationCode','stationCode',index,'')
})
},
clearData(){
this.dataForm = JSON.parse(JSON.stringify(this.dataValueAll))
},

@ -11,11 +11,8 @@
<el-row class="JNPF-common-search-box" :gutter="16">
<el-form @submit.native.prevent>
<el-col :span="6">
<el-form-item label="所属回收站">
<JnpfSelect v-model="query.stationCode" placeholder="选择本组织回收站进行绑定" clearable
:options="stationCodeOptions"
:props="stationCodeProps" multiple >
</JnpfSelect>
<el-form-item label="区域名称">
<el-input v-model="query.areaName" placeholder="请输入" clearable> </el-input>
</el-form-item>
</el-col>
<el-col :span="6">
@ -26,12 +23,6 @@
</JnpfSelect>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="区域名称">
<el-input v-model="query.areaName" placeholder="请输入" clearable> </el-input>
</el-form-item>
</el-col>
<template v-if="showAll">
<el-col :span="6">
<el-form-item label="是否启用">
<JnpfSelect v-model="query.status" placeholder="请选择" clearable
@ -40,17 +31,10 @@
</JnpfSelect>
</el-form-item>
</el-col>
</template>
<el-col :span="6">
<el-form-item>
<el-button type="primary" icon="el-icon-search" @click="search()"></el-button>
<el-button icon="el-icon-refresh-right" @click="reset()"></el-button>
<el-button type="text" icon="el-icon-arrow-down" @click="showAll=true" v-if="!showAll">
展开
</el-button>
<el-button type="text" icon="el-icon-arrow-up" @click="showAll=false" v-else>
收起
</el-button>
</el-form-item>
</el-col>
</el-form>
@ -77,33 +61,48 @@
>
<el-table-column
prop="areaName"
label="区域名称" align="left"
>
prop="stationCode"
label="站点编号" align="center"
sortable="custom" >
</el-table-column>
<el-table-column
prop="areaType"
label="区域类型" align="left"
prop="areaName"
label="区域名称" align="center"
>
</el-table-column>
<el-table-column
prop="stationCode"
label="所属回收站" align="left"
prop="areaType"
label="区域类型" align="center"
>
</el-table-column>
<el-table-column
prop="status"
label="是否启用" align="left"
label="是否启用" align="center"
>
</el-table-column>
<el-table-column
prop="areaMapInfo"
label="地图信息" align="left"
label="地图信息" align="center"
>
</el-table-column>
<el-table-column
prop="areaDesc"
label="区域描述" align="left"
label="区域描述" align="center"
>
</el-table-column>
<el-table-column
prop="creatorUserId"
label="创建用户" align="center"
>
</el-table-column>
<el-table-column
prop="lastModifyUserId"
label="修改用户" align="center"
>
</el-table-column>
<el-table-column
prop="lastModifyTime"
label="修改时间" align="center"
>
</el-table-column>
<el-table-column label="操作"
@ -174,15 +173,13 @@
exportList:[],
columnList,
showAll: false,
superQueryVisible: false,
superQueryJson,
uploadBoxVisible: false,
detailVisible: false,
query: {
stationCode:undefined,
areaType:undefined,
areaName:undefined,
areaType:undefined,
status:undefined,
},
treeProps: {
@ -211,9 +208,8 @@
areaTypeProps:{"label":"fullName","value":"enCode" },
statusOptions:[],
statusProps:{"label":"fullName","value":"enCode" },
stationCodeOptions:[],
stationCodeProps:{"label":"fullName","value":"id" },
interfaceRes: {
stationCode:[] ,
},
}
},
@ -226,7 +222,6 @@
created() {
this.getColumnList(),
this.initSearchDataAndListData()
this.getstationCodeOptions();
this.getareaTypeOptions();
this.getstatusOptions();
this.queryData = JSON.parse(JSON.stringify(this.query))
@ -378,12 +373,6 @@
}
}
this.exportList = exportList
},
getstationCodeOptions() {
getDataInterfaceRes('520259300875047493').then(res => {
let data = res.data
this.stationCodeOptions = data
})
},
getareaTypeOptions() {
getDictionaryDataSelector('560423985691492677').then(res => {

File diff suppressed because one or more lines are too long
Loading…
Cancel
Save