设备型号版本功能完善

This commit is contained in:
SjS 2025-04-16 11:12:45 +08:00
parent d635f9c5a8
commit f669751957
17 changed files with 325 additions and 143 deletions

View File

@ -217,112 +217,76 @@
width="1000px"
append-to-body
>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-col :span="24">
<el-form
ref="form"
:model="form"
:rules="rules"
label-width="100px"
label-position="right"
style="margin-top: -10px"
>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="设备名称" prop="deviceName">
<el-input
v-model="form.deviceName"
placeholder="请输入设备名称"
/>
<el-form-item
label="设备名称"
prop="deviceName"
style="margin-bottom: 12px"
>
<el-input
v-model="form.deviceName"
placeholder="请输入设备名称"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="分类" prop="classifyId" style="width: 100%">
<el-input v-model="form.classifyName" v-if="false" />
<el-select
v-model="form.classifyId"
filterable
clearable
placeholder="请选择"
>
<el-option
v-for="item in classifyOptions"
:key="item.classifyId"
:label="item.classifyName"
:value="item.classifyId"
>
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="型号" prop="modelId" style="width: 100%">
<el-select
v-model="form.modelId"
filterable
clearable
placeholder="请选择型号"
>
<el-option
v-for="item in modelOptions"
:key="item.modelId"
:label="item.model"
:value="item.modelId"
>
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="版本号" prop="versionId" style="width: 100%">
<el-select
v-model="form.versionId"
filterable
clearable
placeholder="请选择"
>
<el-option
v-for="item in versionOptions"
:key="item.versionId"
:label="item.version"
:value="item.versionId"
>
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="图片" prop="picture">
<image-upload v-model="form.picture" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="设备Mac" prop="mac">
<el-input v-model="form.mac" placeholder="请输入设备Mac号" :disabled="title=='修改设备'"/>
</el-form-item>
</el-col>
<el-col :span="12" v-show="title=='修改设备'">
<el-form-item label="用户" prop="userId" style="width: 100%" >
<el-form-item label="用户" prop="userId" >
<el-select
v-model="form.userId"
filterable
clearable
placeholder="请选择"
placeholder="请选择用户"
style="width: 100%"
>
<el-option
v-for="item in userOptions"
:key="item.userId"
:label="item.userName"
:value="item.userId"
>
</el-option>
<el-option
v-for="item in userOptions"
:key="item.userId"
:label="item.userName"
:value="item.userId"
/>
</el-select>
</el-form-item>
</el-col>
</el-col>
</el-row>
<!-- 设备Mac -->
<el-form-item
label="设备Mac"
prop="mac"
style="margin-bottom: 12px"
>
<el-input
v-model="form.mac"
placeholder="请输入设备Mac号"
:disabled="title === '修改设备'"
style="width: 300px"
/>
</el-form-item>
<el-form-item
label="型号前缀"
prop="pre"
style="margin-bottom: 12px"
>
<el-input
v-model="form.pre"
placeholder="请输入型号前缀"
:disabled="title === '修改设备'"
style="width: 300px"
/>
</el-form-item>
<hr style="border-style: groove" />
<el-col :span="24">
<el-form-item label="备注" prop="remark">
<el-input
v-model="form.remark"
type="textarea"
placeholder="请输入内容"
/>
</el-form-item>
</el-col>
<!-- 图片 -->
<el-form-item label="图片" prop="picture">
<image-upload v-model="form.picture" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
@ -331,6 +295,64 @@
</el-dialog>
</div>
</template>
<!-- <el-col :span="12">-->
<!-- <el-form-item label="分类" prop="classifyId" style="width: 100%">-->
<!-- <el-input v-model="form.classifyName" v-if="false" />-->
<!-- <el-select-->
<!-- v-model="form.classifyId"-->
<!-- filterable-->
<!-- clearable-->
<!-- placeholder="请选择"-->
<!-- >-->
<!-- <el-option-->
<!-- v-for="item in classifyOptions"-->
<!-- :key="item.classifyId"-->
<!-- :label="item.classifyName"-->
<!-- :value="item.classifyId"-->
<!-- >-->
<!-- </el-option>-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<!-- </el-col>-->
<!-- <el-col :span="12">-->
<!-- <el-form-item label="型号" prop="modelId" style="width: 100%">-->
<!-- <el-select-->
<!-- v-model="form.modelId"-->
<!-- filterable-->
<!-- clearable-->
<!-- placeholder="请选择型号"-->
<!-- >-->
<!-- <el-option-->
<!-- v-for="item in modelOptions"-->
<!-- :key="item.modelId"-->
<!-- :label="item.model"-->
<!-- :value="item.modelId"-->
<!-- >-->
<!-- </el-option>-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<!-- </el-col>-->
<!-- <el-col :span="12">-->
<!-- <el-form-item label="版本号" prop="versionId" style="width: 100%">-->
<!-- <el-select-->
<!-- v-model="form.versionId"-->
<!-- filterable-->
<!-- clearable-->
<!-- placeholder="请选择"-->
<!-- >-->
<!-- <el-option-->
<!-- v-for="item in versionOptions"-->
<!-- :key="item.versionId"-->
<!-- :label="item.version"-->
<!-- :value="item.versionId"-->
<!-- >-->
<!-- </el-option>-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<!-- </el-col>-->
<script>
import {
@ -519,6 +541,9 @@ export default {
classifyId: [
{ required: true, message: "分类不能为空", trigger: "blur" },
],
pre: [
{ required: true, message: "设备名称不能为空", trigger: "blur" },
],
versionId: [
{ required: true, message: "版本不能为空", trigger: "blur" },
],

View File

@ -19,14 +19,14 @@
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="S/N" prop="idCode">
<el-input
v-model="queryParams.idCode"
placeholder="请输入S/N"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<!-- <el-form-item label="S/N" prop="idCode">-->
<!-- <el-input-->
<!-- v-model="queryParams.idCode"-->
<!-- placeholder="请输入S/N"-->
<!-- clearable-->
<!-- @keyup.enter.native="handleQuery"-->
<!-- />-->
<!-- </el-form-item>-->
<el-form-item label="分类名称" prop="classifyName">
<el-input
v-model="queryParams.classifyName"
@ -94,12 +94,14 @@
<el-table-column label="id" align="center" prop="modelId" />
<el-table-column label="名称" align="center" prop="modelName" />
<el-table-column label="型号" align="center" prop="model" />
<el-table-column label="固件版本" align="center" prop="version" />
<el-table-column label="图片" align="center" prop="picture" width="100">
<template slot-scope="scope">
<image-preview :src="scope.row.picture" :width="50" :height="50"/>
</template>
</el-table-column>
<el-table-column label="S/N" align="center" prop="idCode" />
<!-- <el-table-column label="S/N" align="center" prop="idCode" />-->
<el-table-column label="设备前缀" align="center" prop="pre" />
<el-table-column label="分类名称" align="center" prop="classifyName" />
<el-table-column label="添加时间" align="center" prop="createTime" />
<el-table-column label="累计激活" align="center" prop="activationNum" />
@ -142,13 +144,6 @@
<el-form-item label="型号" prop="model">
<el-input v-model="form.model" placeholder="请输入型号" />
</el-form-item>
<el-form-item label="图片" prop="picture">
<image-upload v-model="form.picture"/>
</el-form-item>
<el-form-item label="S/N" prop="idCode">
<el-input v-model="form.idCode" placeholder="请输入S/N" />
</el-form-item>
<el-form-item label="分类" prop="classifyId">
<el-select v-model="form.classifyId" filterable clearable placeholder="请选择" >
<el-option
@ -159,16 +154,25 @@
</el-option>
</el-select>
</el-form-item>
<el-form-item label="版本" prop="versionId">
<el-select v-model="form.versionId" filterable clearable placeholder="请选择" >
<el-option
v-for="item in versionOptions"
:key="item.versionId"
:label="item.version"
:value="item.versionId">
</el-option>
</el-select>
<!-- <el-form-item label="版本" prop="versionId">-->
<!-- <el-select v-model="form.versionId" filterable clearable placeholder="请绑定固件后再选择版本" >-->
<!-- <el-option-->
<!-- v-for="item in versionOptions"-->
<!-- :key="item.versionId"-->
<!-- :label="item.version"-->
<!-- :value="item.versionId">-->
<!-- </el-option>-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<el-form-item label="图片" prop="picture">
<image-upload v-model="form.picture"/>
</el-form-item>
<el-form-item label="型号前缀" prop="pre">
<el-input v-model="form.pre" type="textarea" placeholder="请输入型号前缀,多个前缀用逗号分隔" />
</el-form-item>
<!-- <el-form-item label="S/N" prop="idCode">-->
<!-- <el-input v-model="form.idCode" placeholder="请输入S/N" />-->
<!-- </el-form-item>-->
<el-form-item label="产品介绍" prop="introduce">
<el-input v-model="form.introduce" type="textarea" placeholder="请输入内容" />
</el-form-item>
@ -241,15 +245,15 @@ export default {
model: [
{ required: true, message: "型号不能为空", trigger: "blur" }
],
idCode: [
{ required: true, message: "S/N不能为空", trigger: "blur" }
],
// idCode: [
// { required: true, message: "S/N", trigger: "blur" }
// ],
classifyId: [
{ required: true, message: "分类不能为空", trigger: "blur" }
],
versionId: [
{ required: true, message: "版本不能为空", trigger: "blur" }
]
pre: [
{ required: true, message: "型号前缀不能为空", trigger: "blur" }
],
}
};
},

View File

@ -2,6 +2,8 @@ package com.ruoyi.device.controller;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import com.ruoyi.device.service.IAsModelService;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
@ -34,6 +36,8 @@ public class AsDeviceVersionController extends BaseController
@Autowired
private IAsDeviceVersionService asDeviceVersionService;
@Autowired
private IAsModelService asModelService;
/**
* 查询固件版本列表
*/
@ -77,7 +81,7 @@ public class AsDeviceVersionController extends BaseController
@PostMapping
public AjaxResult add(@RequestBody AsDeviceVersion asDeviceVersion)
{
return toAjax(asDeviceVersionService.insertAsDeviceVersion(asDeviceVersion));
return toAjax(asDeviceVersionService.insertAsDeviceVersionAndUpdateAsModel(asDeviceVersion));
}
/**

View File

@ -3,7 +3,9 @@ package com.ruoyi.device.controller;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import com.ruoyi.common.constant.UserConstants;
import com.ruoyi.device.domain.AsDeviceVersion;
import com.ruoyi.device.domain.vo.AsModelVO;
import com.ruoyi.device.service.IAsDeviceVersionService;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
@ -85,6 +87,8 @@ public class AsModelController extends BaseController
@PostMapping
public AjaxResult add(@RequestBody AsModel asModel)
{
// 前缀校验
asModelService.checkAsModelByPre(asModel);
if (!asModelService.checkModelUnique(asModel))
{
return error("新增型号'" + asModel.getModel() + "'失败,该型号已存在");
@ -101,6 +105,8 @@ public class AsModelController extends BaseController
@PutMapping
public AjaxResult edit(@RequestBody AsModel asModel)
{
// 前缀校验
asModelService.checkAsModelByPre(asModel);
if (!asModelService.checkModelUnique(asModel))
{
return error("修改型号'" + asModel.getModel() + "'失败,该型号已存在");

View File

@ -12,6 +12,8 @@ import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import lombok.NoArgsConstructor;
import javax.validation.constraints.NotNull;
/**
* 设备列表对象 as_device
*
@ -58,6 +60,7 @@ public class AsDevice extends BaseEntity
/** 设备Mac号 */
@Excel(name = "设备Mac号")
@NotNull
private String mac;
/** 激活时间 */
@ -170,6 +173,6 @@ public class AsDevice extends BaseEntity
private String bluetoothName;
/** 设备前缀 */
@Excel(name = "设备前缀")
@Excel(name = "型号前缀")
private String pre;
}

View File

@ -5,6 +5,8 @@ import lombok.Data;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import java.time.LocalDateTime;
/**
* 固件版本对象 as_device_version
*
@ -49,4 +51,8 @@ public class AsDeviceVersion extends BaseEntity
@Excel(name = "升级")
private String upgradeDescribe;
/** 升级 */
@Excel(name = "创建时间")
private LocalDateTime createLocalDateTime;
}

View File

@ -64,7 +64,13 @@ public class AsModel extends BaseEntity
@Excel(name = "版本数据")
private AsDeviceVersion asDeviceVersion;
@Excel(name = "型号前缀")
private String pre;
@Excel(name = "版本号集合")
private List<String> versionList;
@Excel(name = "固件版本号")
private String version;
}

View File

@ -68,4 +68,6 @@ public interface AsDeviceVersionMapper extends BaseMapper<AsDeviceVersion>
public int deleteAsDeviceVersionByVersionIds(Long[] versionIds);
public List<String> selectAsDeviceVersionByModelId(Long modelId);
AsDeviceVersion selectLatestAsDeviceVersion(Long modelId);
}

View File

@ -5,6 +5,7 @@ import java.util.List;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.device.domain.AsDeviceVersion;
import com.ruoyi.device.domain.AsModel;
import com.ruoyi.device.domain.vo.AsModelVO;
/**
* 型号列表Mapper接口
@ -77,4 +78,6 @@ public interface AsModelMapper extends BaseMapper<AsModel>
* @return 结果
*/
public AsModel checkModelUnique(String model);
public AsModelVO checkModelByPre(AsModel asModel);
}

View File

@ -69,4 +69,6 @@ public interface IAsDeviceVersionService
public int deleteAsDeviceVersionByVersionId(Long versionId);
public List<String> selectAsDeviceVersionByModelId(Long modelId);
int insertAsDeviceVersionAndUpdateAsModel(AsDeviceVersion asDeviceVersion);
}

View File

@ -2,6 +2,7 @@ package com.ruoyi.device.service;
import java.util.List;
import com.ruoyi.device.domain.AsModel;
import com.ruoyi.device.domain.vo.AsModelVO;
/**
* 型号列表Service接口
@ -77,4 +78,17 @@ public interface IAsModelService
public boolean checkModelUnique(AsModel asModel);
public AsModel selectAsModelDetail(Long modelId);
/**
* 判断前缀是否已经存在
* @param asModel
*/
void checkAsModelByPre(AsModel asModel);
/**
* 根据前缀查询型号信息
* @param asModel
* @return
*/
AsModelVO selectAsModelByPre(AsModel asModel);
}

View File

@ -17,14 +17,12 @@ import com.ruoyi.common.utils.onenet.Token;
import com.ruoyi.common.utils.pinyin.PinyinUtils;
import com.ruoyi.common.utils.spring.SpringUtils;
import com.ruoyi.device.domain.*;
import com.ruoyi.device.domain.vo.AsModelVO;
import com.ruoyi.device.domain.vo.IPVo;
import com.ruoyi.device.domain.vo.IsBandVO;
import com.ruoyi.device.domain.vo.WeatherResponse;
import com.ruoyi.device.mapper.*;
import com.ruoyi.device.service.IAsDeviceService;
import com.ruoyi.device.service.IAsTimerService;
import com.ruoyi.device.service.IAsUserService;
import com.ruoyi.device.service.IAsWateringRecordService;
import com.ruoyi.device.service.*;
import com.ruoyi.system.mapper.SysUserMapper;
import lombok.SneakyThrows;
import org.apache.commons.lang3.ObjectUtils;
@ -79,6 +77,9 @@ public class AsDeviceServiceImpl extends ServiceImpl<AsDeviceMapper, AsDevice> i
@Resource
private IAsUserService asUserService;
@Resource
private IAsModelService asModelService;
@Resource
private IAsTimerService asTimerService;
@ -279,19 +280,38 @@ public class AsDeviceServiceImpl extends ServiceImpl<AsDeviceMapper, AsDevice> i
public int insertAsDevice(AsDevice asDevice)
{
asDevice.setCreateTime(DateUtils.getNowDate());
AsDeviceClassify deviceClassify = classifyMapper.selectAsDeviceClassifyByClassifyId(asDevice.getClassifyId());
asDevice.setClassifyName(deviceClassify.getClassifyName());
AsDevice device = setValue(asDevice);
AsDevice vo = asDeviceMapper.selectAsDeviceByMac(asDevice.getMac());
ServiceUtil.assertion(vo!=null,"该设备已存在,不允许重复!");
return asDeviceMapper.insertAsDevice(device);
}
public AsDevice setValue(AsDevice asDevice){
// 前缀校验
AsModel asModel = new AsModel();
asModel.setPre(asDevice.getPre());
AsModelVO model = asModelService.selectAsModelByPre(asModel);
// 设置型号数据
asDevice.setModel(model.getModel());
asDevice.setModelId(model.getModelId());
asDevice.setModelName(model.getModelName());
// 设置分类
asDevice.setClassifyId(model.getClassifyId());
AsDeviceClassify asDeviceClassify = classifyMapper.selectAsDeviceClassifyByClassifyId(model.getClassifyId());
asDevice.setClassifyName(asDeviceClassify.getClassifyName());
// 设置用户数据
if(ObjectUtils.isNotEmpty(asDevice.getUserId())){
AsUser user = asUserService.selectUserById(asDevice.getUserId());
asDevice.setUserName(user.getUserName());
asDevice.setNickName(user.getNickName());
}
AsModel model = modelMapper.selectAsModelByModelId(asDevice.getModelId());
asDevice.setModel(model.getModel());
AsDeviceVersion asDeviceVersion = versionMapper.selectAsDeviceVersionByVersionId(asDevice.getVersionId());
// 设置版本数据
AsDeviceVersion asDeviceVersion = versionMapper.selectAsDeviceVersionByVersionId(model.getVersionId());
asDevice.setVersion(asDeviceVersion.getVersion());
asDevice.setVersionId(model.getVersionId());
asDevice.setIsDefault("1");
return asDeviceMapper.insertAsDevice(asDevice);
return asDevice;
}
/**
@ -329,6 +349,13 @@ public class AsDeviceServiceImpl extends ServiceImpl<AsDeviceMapper, AsDevice> i
// logger.info("IOT请求调用结果:【{}】",result);
/**4.更新数据库*/
// 如果修改MAC或者前缀则整个都进行修改
// if (asDevice.getMac()!= null && asDevice.getPre()!=null){
// AsDevice vo = setValue(asDevice);
// return asDeviceMapper.updateAsDevice(vo);
// }
// 否则只修改名称用户还有图片
return asDeviceMapper.updateAsDevice(asDevice);
}

View File

@ -1,14 +1,19 @@
package com.ruoyi.device.service.impl;
import java.time.LocalDateTime;
import java.util.Collections;
import java.util.List;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.device.domain.AsModel;
import com.ruoyi.device.mapper.AsModelMapper;
import com.ruoyi.device.service.IAsModelService;
import org.springframework.stereotype.Service;
import com.ruoyi.device.mapper.AsDeviceVersionMapper;
import com.ruoyi.device.domain.AsDeviceVersion;
import com.ruoyi.device.service.IAsDeviceVersionService;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
@ -24,6 +29,8 @@ public class AsDeviceVersionServiceImpl extends ServiceImpl<AsDeviceVersionMappe
@Resource
private AsDeviceVersionMapper asDeviceVersionMapper;
@Resource
private IAsModelService asModelService;
/**
* 查询固件版本
*
@ -82,6 +89,10 @@ public class AsDeviceVersionServiceImpl extends ServiceImpl<AsDeviceVersionMappe
public int updateAsDeviceVersion(AsDeviceVersion asDeviceVersion)
{
asDeviceVersion.setUpdateTime(DateUtils.getNowDate());
// 更新对应的设备固件版本为最新的版本
asModelService.selectAsModelByModelId(asDeviceVersion.getModelId());
AsDeviceVersion latestAsDeviceVersion = asDeviceVersionMapper.selectLatestAsDeviceVersion(asDeviceVersion.getModelId());
asDeviceVersion.setVersionId(latestAsDeviceVersion.getVersionId());
return asDeviceVersionMapper.updateAsDeviceVersion(asDeviceVersion);
}
@ -113,4 +124,17 @@ public class AsDeviceVersionServiceImpl extends ServiceImpl<AsDeviceVersionMappe
public List<String> selectAsDeviceVersionByModelId(Long modelId) {
return asDeviceVersionMapper.selectAsDeviceVersionByModelId(modelId);
}
@Override
@Transactional
public int insertAsDeviceVersionAndUpdateAsModel(AsDeviceVersion asDeviceVersion) {
asDeviceVersion.setCreateLocalDateTime(LocalDateTime.now());
int rows = asDeviceVersionMapper.insertAsDeviceVersion(asDeviceVersion);
if (rows > 0) {
AsModel asModel = asModelService.selectAsModelByModelId(asDeviceVersion.getModelId());
asModel.setVersionId(asDeviceVersion.getVersionId());
asModelService.updateAsModel(asModel);
}
return rows;
}
}

View File

@ -10,8 +10,10 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.constant.UserConstants;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.ServiceUtil;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.device.domain.*;
import com.ruoyi.device.domain.vo.AsModelVO;
import com.ruoyi.device.mapper.AsDeviceClassifyMapper;
import com.ruoyi.device.mapper.AsDeviceMapper;
import com.ruoyi.device.mapper.AsDeviceVersionMapper;
@ -198,4 +200,20 @@ public class AsModelServiceImpl extends ServiceImpl<AsModelMapper, AsModel> impl
asModel.setAsDeviceVersion(asDeviceVersion);
return asModel;
}
@Override
public void checkAsModelByPre(AsModel asModel) {
asModelMapper.checkModelByPre(asModel);
AsModelVO asModelVO = asModelMapper.checkModelByPre(asModel);
if (asModelVO!= null){
ServiceUtil.assertion(true,"存在相同前缀");
}
}
@Override
public AsModelVO selectAsModelByPre(AsModel asModel) {
AsModelVO asModelVO = asModelMapper.checkModelByPre(asModel);
ServiceUtil.assertion(asModelVO == null,"当前型号不存在");
return asModelVO;
}
}

View File

@ -119,11 +119,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="createTime != null">create_time,</if>
<if test="updateBy != null">update_by,</if>
<if test="updateTime != null">update_time,</if>
<if test="modelName != null">model_name,</if>
<if test="remark != null">remark,</if>
<if test="regularWateringJson != null">regular_watering_json,</if>
<if test="soilMoisture != null">soil_moisture,</if>
<if test="waterIntensitySwitch != null">water_intensity_switch</if>
<if test="pre != null">pre,</if>
<if test="waterIntensitySwitch != null">water_intensity_switch,</if>
<if test="pre != null">pre</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="picture != null">#{picture},</if>
@ -151,11 +152,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="createTime != null">#{createTime},</if>
<if test="updateBy != null">#{updateBy},</if>
<if test="updateTime != null">#{updateTime},</if>
<if test="modelName != null">#{modelName},</if>
<if test="remark != null">#{remark},</if>
<if test="regularWateringJson != null">#{regularWateringJson},</if>
<if test="soilMoisture != null">#{soilMoisture},</if>
<if test="waterIntensitySwitch != null">#{waterIntensitySwitch}</if>
<if test="pre != null">#{pre},</if>
<if test="waterIntensitySwitch != null">#{waterIntensitySwitch},</if>
<if test="pre != null">#{pre}</if>
</trim>
</insert>

View File

@ -9,7 +9,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="modelId" column="model_id" />
<result property="version" column="version" />
<result property="createBy" column="create_by" />
<result property="createTime" column="create_time" />
<result property="createLocalDateTime" column="create_time" />
<result property="updateBy" column="update_by" />
<result property="updateTime" column="update_time" />
<result property="size" column="size" />
@ -46,6 +46,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="upgradeRequire != null and upgradeRequire != ''"> and v.upgrade_require like concat('%', #{upgradeRequire}, '%')</if>
<if test="upgradeDescribe != null and upgradeDescribe != ''"> and v.upgrade_describe like concat('%', #{upgradeDescribe}, '%')</if>
</where>
order by v.model_id asc,v.version asc
</select>
<select id="selectAsDeviceVersionByVersionId" parameterType="Long" resultMap="AsDeviceVersionResult">
@ -67,6 +68,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
where am.model_id = #{modelId}
</select>
<select id="selectLatestAsDeviceVersion" resultType="com.ruoyi.device.domain.AsDeviceVersion">
<include refid="selectAsDeviceVersionVo"/>
where v.model_id = #{modelId}
order by v.create_time desc limit 1
</select>
<insert id="insertAsDeviceVersion" parameterType="AsDeviceVersion" useGeneratedKeys="true" keyProperty="versionId">
insert into as_device_version
<trim prefix="(" suffix=")" suffixOverrides=",">

View File

@ -22,7 +22,25 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</resultMap>
<sql id="selectAsModelVo">
select model_id, classify_id, model_name, model, picture, id_code, classify_name, version_id, introduce, create_by, create_time, update_by, update_time, remark from as_model
select
am.model_id,
am.classify_id,
am.model_name,
am.model,
am.picture,
am.id_code,
am.classify_name,
am.version_id,
am.introduce,
am.create_by,
am.create_time,
am.update_by,
am.update_time,
am.pre,
am.remark,
adv.version
from as_model am
left join as_device_version adv on am.version_id = adv.version_id
</sql>
<select id="selectAsModelList" parameterType="AsModel" resultMap="AsModelResult">
@ -35,6 +53,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="classifyName != null and classifyName != ''"> and classify_name like concat('%', #{classifyName}, '%')</if>
<if test="versionId != null "> and version_id = #{versionId}</if>
<if test="introduce != null and introduce != ''"> and introduce = #{introduce}</if>
<if test="pre != null and introduce != ''"> and pre = #{pre}</if>
</where>
</select>
@ -51,6 +70,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<include refid="selectAsModelVo"/>
where model = #{model}
</select>
<select id="checkModelByPre" resultType="com.ruoyi.device.domain.vo.AsModelVO">
<include refid="selectAsModelVo"/>
<where>
<if test="pre != null and pre != ''">and FIND_IN_SET (#{pre},am.pre) </if>
<if test="modelId != null and modelId != ''">and model_id != #{modelId}</if>
</where>
</select>
<insert id="insertAsModel" parameterType="AsModel" useGeneratedKeys="true" keyProperty="modelId">
insert into as_model
@ -68,6 +94,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="updateBy != null">update_by,</if>
<if test="updateTime != null">update_time,</if>
<if test="remark != null">remark,</if>
<if test="pre != null">pre,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="classifyId != null">#{classifyId},</if>
@ -83,16 +110,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="updateBy != null">#{updateBy},</if>
<if test="updateTime != null">#{updateTime},</if>
<if test="remark != null">#{remark},</if>
<if test="pre != null">#{pre},</if>
</trim>
</insert>
<update id="updateAsModel" parameterType="AsModel">
update as_model
<trim prefix="SET" suffixOverrides=",">
<if test="picture != null">picture = #{picture},</if>
<if test="classifyId != null">classify_id = #{classifyId},</if>
<if test="modelName != null">model_name = #{modelName},</if>
<if test="model != null">model = #{model},</if>
<if test="picture != null">picture = #{picture},</if>
<if test="idCode != null">id_code = #{idCode},</if>
<if test="classifyName != null">classify_name = #{classifyName},</if>
<if test="versionId != null">version_id = #{versionId},</if>
@ -102,6 +130,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="updateBy != null">update_by = #{updateBy},</if>
<if test="updateTime != null">update_time = #{updateTime},</if>
<if test="remark != null">remark = #{remark},</if>
<if test="pre != null">pre = #{pre},</if>
</trim>
where model_id = #{modelId}
</update>