From c348acea19c3c6317bcce63bdc08cf28ded86b99 Mon Sep 17 00:00:00 2001 From: wty <419034340@qq.com> Date: Fri, 23 Sep 2022 17:34:53 +0800 Subject: [PATCH] add plc manage part --- ...vcConfigurer.java => MyMvcConfigurer.java} | 6 +- .../java/com/aiit/xiuos/Utils/MyUtils.java | 94 +------------ .../xiuos/controller/DeviceController.java | 2 +- .../ProtocolProductInfoController.java | 113 +++++++++++++++ .../mappers/ProtocolProductInfoMapper.java | 33 +++++ .../aiit/xiuos/model/ProtocolProductInfo.java | 40 ++++++ .../xiuos/model/VO/ProtocolProductVo.java | 76 ++++++++++ .../aiit/xiuos/service/ProtocolService.java | 13 ++ .../service/impl/ProtocolServiceImpl.java | 38 +++++ .../xiuos/dao/mappers/AvgDayDataMapper.java | 17 --- .../src/main/resources/generatorConfig.xml | 2 +- .../mappers/ProtocolProductInfoMapper.xml | 131 ++++++++++++++++++ 12 files changed, 456 insertions(+), 109 deletions(-) rename xiuosiot-backend/src/main/java/com/aiit/xiuos/Interceptor/{WebMvcConfigurer.java => MyMvcConfigurer.java} (87%) create mode 100644 xiuosiot-backend/src/main/java/com/aiit/xiuos/controller/ProtocolProductInfoController.java create mode 100644 xiuosiot-backend/src/main/java/com/aiit/xiuos/dao/mappers/ProtocolProductInfoMapper.java create mode 100644 xiuosiot-backend/src/main/java/com/aiit/xiuos/model/ProtocolProductInfo.java create mode 100644 xiuosiot-backend/src/main/java/com/aiit/xiuos/model/VO/ProtocolProductVo.java create mode 100644 xiuosiot-backend/src/main/java/com/aiit/xiuos/service/ProtocolService.java create mode 100644 xiuosiot-backend/src/main/java/com/aiit/xiuos/service/impl/ProtocolServiceImpl.java delete mode 100644 xiuosiot-backend/src/main/resources/com/aiit/xiuos/dao/mappers/AvgDayDataMapper.java create mode 100644 xiuosiot-backend/src/main/resources/mappers/ProtocolProductInfoMapper.xml diff --git a/xiuosiot-backend/src/main/java/com/aiit/xiuos/Interceptor/WebMvcConfigurer.java b/xiuosiot-backend/src/main/java/com/aiit/xiuos/Interceptor/MyMvcConfigurer.java similarity index 87% rename from xiuosiot-backend/src/main/java/com/aiit/xiuos/Interceptor/WebMvcConfigurer.java rename to xiuosiot-backend/src/main/java/com/aiit/xiuos/Interceptor/MyMvcConfigurer.java index 267c2aa..0559e76 100644 --- a/xiuosiot-backend/src/main/java/com/aiit/xiuos/Interceptor/WebMvcConfigurer.java +++ b/xiuosiot-backend/src/main/java/com/aiit/xiuos/Interceptor/MyMvcConfigurer.java @@ -4,7 +4,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; -import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; + @Configuration class MyMvcConfigurer implements WebMvcConfigurer { @@ -22,8 +22,8 @@ class MyMvcConfigurer implements WebMvcConfigurer { public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(sessionInterceptor) // .addPathPatterns() 是配置需要拦截的路径 - .addPathPatterns("/**") - // .excludePathPatterns() 用于排除拦截 + //.addPathPatterns("/**") //默认拦截所有路径 + .excludePathPatterns("/**") //用于排除拦截 .excludePathPatterns("/login") // 排除登录接口 .excludePathPatterns("/loginOut") //排除登出接口 .excludePathPatterns("/**/register") //排除注册接口 diff --git a/xiuosiot-backend/src/main/java/com/aiit/xiuos/Utils/MyUtils.java b/xiuosiot-backend/src/main/java/com/aiit/xiuos/Utils/MyUtils.java index 2a8c9ae..55bc01d 100644 --- a/xiuosiot-backend/src/main/java/com/aiit/xiuos/Utils/MyUtils.java +++ b/xiuosiot-backend/src/main/java/com/aiit/xiuos/Utils/MyUtils.java @@ -4,8 +4,10 @@ import com.alibaba.fastjson.JSONObject; import javax.servlet.http.HttpServletRequest; import java.io.*; +import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; +import java.util.Date; import java.util.List; @@ -57,96 +59,14 @@ public class MyUtils { return time; } - - - - /** - * 导出 - * - * @param file - * csv文件(路径+文件名),csv文件不存在会自动创建 - * @param dataList - * 数据 - * @return - */ - public static boolean exportCsv(File file, List dataList) { - boolean isSucess = false; - - FileOutputStream out = null; - OutputStreamWriter osw = null; - BufferedWriter bw = null; - try { - out = new FileOutputStream(file); - osw = new OutputStreamWriter(out); - bw = new BufferedWriter(osw); - if (dataList != null && !dataList.isEmpty()) { - for (String data : dataList) { - bw.append(data).append("\r\n"); - } - } - isSucess = true; - } catch (Exception e) { - isSucess = false; - } finally { - if (bw != null) { - try { - bw.close(); - bw = null; - } catch (IOException e) { - e.printStackTrace(); - } - } - if (osw != null) { - try { - osw.close(); - osw = null; - } catch (IOException e) { - e.printStackTrace(); - } - } - if (out != null) { - try { - out.close(); - out = null; - } catch (IOException e) { - e.printStackTrace(); - } - } - } - - return isSucess; + public static Date getDateTime() throws ParseException { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + Date date = sdf.parse(MyUtils.getTime()); + return date; } - /** - * 导入 - * - * @param file - * csv文件(路径+文件) - * @return - */ - public static List importCsv(File file) { - List dataList = new ArrayList(); - BufferedReader br = null; - try { - br = new BufferedReader(new FileReader(file)); - String line = ""; - while ((line = br.readLine()) != null) { - dataList.add(line); - } - } catch (Exception e) { - } finally { - if (br != null) { - try { - br.close(); - br = null; - } catch (IOException e) { - e.printStackTrace(); - } - } - } - return dataList; - } + public static JSONObject StringToJson(String jsonString){ JSONObject jsonObject =JSONObject.parseObject(jsonString); diff --git a/xiuosiot-backend/src/main/java/com/aiit/xiuos/controller/DeviceController.java b/xiuosiot-backend/src/main/java/com/aiit/xiuos/controller/DeviceController.java index 603f594..e7dee95 100644 --- a/xiuosiot-backend/src/main/java/com/aiit/xiuos/controller/DeviceController.java +++ b/xiuosiot-backend/src/main/java/com/aiit/xiuos/controller/DeviceController.java @@ -39,7 +39,7 @@ public class DeviceController { return new ResultRespons(Constant.ERROR_CODE,"新增设备失败!"); } @GetMapping("/select") - public ResultRespons selectDevice(@RequestParam int activestatus, HttpServletRequest request){ + public ResultRespons selectDevice(@RequestParam("activestatus") int activestatus, HttpServletRequest request){ List deviceInfoList =null; if(1==activestatus){ deviceInfoList=deviceInfoService.selectActiveDevice(); diff --git a/xiuosiot-backend/src/main/java/com/aiit/xiuos/controller/ProtocolProductInfoController.java b/xiuosiot-backend/src/main/java/com/aiit/xiuos/controller/ProtocolProductInfoController.java new file mode 100644 index 0000000..aba6764 --- /dev/null +++ b/xiuosiot-backend/src/main/java/com/aiit/xiuos/controller/ProtocolProductInfoController.java @@ -0,0 +1,113 @@ +package com.aiit.xiuos.controller; + +import com.aiit.xiuos.Utils.*; +import com.aiit.xiuos.model.DeviceInfo; +import com.aiit.xiuos.model.ProtocolProductInfo; +import com.aiit.xiuos.model.UserInfo; +import com.aiit.xiuos.model.VO.ProtocolProductVo; +import com.aiit.xiuos.service.DeviceInfoService; +import com.aiit.xiuos.service.ProtocolService; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import org.apache.tomcat.util.http.fileupload.IOUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import sun.nio.ch.IOUtil; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.net.URLEncoder; +import java.text.ParseException; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@RestController +@RequestMapping("/protocolProduct") +public class ProtocolProductInfoController { + @Autowired + private ProtocolService protocolService; + + @PostMapping("/add") + public ResultRespons addProtocolProduct(@RequestBody ProtocolProductVo protocolProductVo, HttpServletRequest request) throws ParseException { + ProtocolProductInfo productInfo = protocolService.getProtocolByName(protocolProductVo.getProductName()); + if (productInfo != null) { + return new ResultRespons(Constant.ERROR_CODE, "该协议配方已存在!"); + } + productInfo = ProtocolProductVo.changeVoToModel(protocolProductVo); + + int res = protocolService.addProtocolProduct(productInfo); + if (1 == res) { + return new ResultRespons(Constant.SUCCESS_CODE, "新增协议配方成功!"); + } + return new ResultRespons(Constant.ERROR_CODE, "新增协议配方失败!"); + } + + @PostMapping("/delete") + public ResultRespons deleteProtocolProduct(@RequestBody Map jsonMap, HttpServletRequest request) throws ParseException { + + int res = protocolService.deleteProtocolProduct(jsonMap.get("productName").toString()); + if (1 == res) { + return new ResultRespons(Constant.SUCCESS_CODE, "删除协议配方成功!"); + } + return new ResultRespons(Constant.ERROR_CODE, "删除协议配方失败!请检查协议名称是否存在!"); + } + + @GetMapping("/selectAll") + public ResultRespons selectProtocolProductList(HttpServletRequest request) throws ParseException { + List protocolProductInfos = protocolService.getProtocolAll(); + List protocolProductVos= new ArrayList<>(); + if (protocolProductInfos != null && protocolProductInfos.size() > 0) { + for(int i=0;i jsonMap, HttpServletRequest request) throws ParseException { + String productName= jsonMap.get("productName").toString(); + ProtocolProductInfo protocolProductInfo = protocolService.getProtocolByName(productName); + + if (protocolProductInfo != null) { + ProtocolProductVo protocolProductVo = ProtocolProductVo.changeModelToVo(protocolProductInfo); + return new ResultRespons(Constant.SUCCESS_CODE, "查询协议配方成功!", protocolProductVo); + } + return new ResultRespons(Constant.ERROR_CODE, "查询协议配方失败!"); + } + + @GetMapping("/exportCSV") + public ResultRespons exportCSV(@RequestBody Map jsonMap, HttpServletRequest request, HttpServletResponse response) { + String productName = jsonMap.get("productName").toString(); + ProtocolProductInfo protocolProductInfo = protocolService.getProtocolByName(productName); + JSONArray readItemList= (JSONArray) JSONArray.parse(protocolProductInfo.getReadItemList()); + + String filestring = CsvUtils.FinsJson2CSV(readItemList).toString(); + try{ InputStream inputStream = new ByteArrayInputStream(filestring.getBytes()); + OutputStream outputStream = response.getOutputStream();//获取response的输出流对象 + + //设置ContentType字段告知浏览器返回内容类型 + response.setContentType("application/octet-stream"); + //设置Header字段 + response.setHeader("Content-Disposition", "attachment;filename=" + + URLEncoder.encode(productName, "utf-8")); + //下面这行代码必须加,否则前端获取不到Content-Disposition字段,即无法获取文件名 + response.setHeader("Access-Control-Expose-Headers", "Content-Disposition"); + //将读取的文件流复制到response的输出流中 + IOUtils.copy(inputStream, outputStream); + //刷新输出流 + outputStream.flush(); + //关闭输出流 + outputStream.close(); + + } catch (IOException e) { + e.printStackTrace(); + } + return new ResultRespons(Constant.ERROR_CODE, "导出csv成功!"); + } +} diff --git a/xiuosiot-backend/src/main/java/com/aiit/xiuos/dao/mappers/ProtocolProductInfoMapper.java b/xiuosiot-backend/src/main/java/com/aiit/xiuos/dao/mappers/ProtocolProductInfoMapper.java new file mode 100644 index 0000000..90f8d29 --- /dev/null +++ b/xiuosiot-backend/src/main/java/com/aiit/xiuos/dao/mappers/ProtocolProductInfoMapper.java @@ -0,0 +1,33 @@ +package com.aiit.xiuos.dao.mappers; + + + +import com.aiit.xiuos.model.ProtocolProductInfo; +import org.apache.ibatis.annotations.Delete; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; +import org.springframework.stereotype.Repository; + +import java.util.List; + +@Repository +public interface ProtocolProductInfoMapper { + int deleteByPrimaryKey(String productId); + + int insert(ProtocolProductInfo record); + + int insertSelective(ProtocolProductInfo record); + + ProtocolProductInfo selectByPrimaryKey(String productId); + + int updateByPrimaryKeySelective(ProtocolProductInfo record); + + int updateByPrimaryKey(ProtocolProductInfo record); + + @Select("select * from protocol_product_info") + List selectAll(); + + @Select("select * from protocol_product_info where protocol_type =#{type}") + List selectByType(@Param("type") String protocolType); + +} \ No newline at end of file diff --git a/xiuosiot-backend/src/main/java/com/aiit/xiuos/model/ProtocolProductInfo.java b/xiuosiot-backend/src/main/java/com/aiit/xiuos/model/ProtocolProductInfo.java new file mode 100644 index 0000000..c241462 --- /dev/null +++ b/xiuosiot-backend/src/main/java/com/aiit/xiuos/model/ProtocolProductInfo.java @@ -0,0 +1,40 @@ +package com.aiit.xiuos.model; + +import java.util.Date; +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class ProtocolProductInfo { + private String productName; + + private String protocolType; + + private String readItemList; + + private Date updatetime; + + private String deviceId; + + private String deviceName; + + private String socketConfig; + + private String readPeriod; + + public ProtocolProductInfo(String productName, String protocolType, String readItemList, Date updatetime, String deviceId, String deviceName, String socketConfig, String readPeriod) { + this.productName = productName; + this.protocolType = protocolType; + this.readItemList = readItemList; + this.updatetime = updatetime; + this.deviceId = deviceId; + this.deviceName = deviceName; + this.socketConfig = socketConfig; + this.readPeriod = readPeriod; + } + + public ProtocolProductInfo() { + super(); + } +} \ No newline at end of file diff --git a/xiuosiot-backend/src/main/java/com/aiit/xiuos/model/VO/ProtocolProductVo.java b/xiuosiot-backend/src/main/java/com/aiit/xiuos/model/VO/ProtocolProductVo.java new file mode 100644 index 0000000..9afacac --- /dev/null +++ b/xiuosiot-backend/src/main/java/com/aiit/xiuos/model/VO/ProtocolProductVo.java @@ -0,0 +1,76 @@ +package com.aiit.xiuos.model.VO; + +import com.aiit.xiuos.Utils.MyUtils; +import com.aiit.xiuos.model.ProtocolProductInfo; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import lombok.Builder; +import lombok.Data; + +import java.text.ParseException; +import java.util.Date; +@Data +@Builder +public class ProtocolProductVo { + + private String productName; + + private String protocolType; + + private JSONArray readItemList; + + private Date updatetime; + + private String deviceId; + + private String deviceName; + + private JSONObject socketConfig; + + private String readPeriod; + + public ProtocolProductVo(String productName, String protocolType, JSONArray readItemList, Date updatetime, String deviceId, String deviceName, JSONObject socketConfig, String readPeriod) { + this.productName = productName; + this.protocolType = protocolType; + this.readItemList = readItemList; + this.updatetime = updatetime; + this.deviceId = deviceId; + this.deviceName = deviceName; + this.socketConfig = socketConfig; + this.readPeriod = readPeriod; + } + + public ProtocolProductVo(){ + + } + + public static ProtocolProductInfo changeVoToModel(ProtocolProductVo protocolProductVo) throws ParseException { + ProtocolProductInfo protocolProductInfo = new ProtocolProductInfo(); + protocolProductInfo.setProductName(protocolProductVo.getProductName()); + protocolProductInfo.setProtocolType(protocolProductVo.getProtocolType()); + protocolProductInfo.setReadItemList(protocolProductVo.getReadItemList().toJSONString()); + protocolProductInfo.setDeviceId(protocolProductVo.getDeviceId()); + protocolProductInfo.setDeviceName(protocolProductVo.getDeviceName()); + protocolProductInfo.setSocketConfig(protocolProductVo.getSocketConfig().toJSONString()); + protocolProductInfo.setReadPeriod(protocolProductVo.getReadPeriod()); + protocolProductInfo.setUpdatetime(MyUtils.getDateTime()); + return protocolProductInfo; + } + + public static ProtocolProductVo changeModelToVo(ProtocolProductInfo protocolProductInfo) throws ParseException { + ProtocolProductVo protocolProductVo = new ProtocolProductVo(); + protocolProductVo.setProductName(protocolProductInfo.getProductName()); + protocolProductVo.setProtocolType(protocolProductInfo.getProtocolType()); + protocolProductVo.setDeviceId(protocolProductInfo.getDeviceId()); + protocolProductVo.setReadPeriod(protocolProductInfo.getReadPeriod()); + protocolProductVo.setDeviceName(protocolProductInfo.getDeviceName()); + protocolProductVo.setUpdatetime(protocolProductInfo.getUpdatetime()); + protocolProductVo.setSocketConfig((JSONObject) JSONObject.parse(protocolProductInfo.getSocketConfig())); + protocolProductVo.setReadItemList((JSONArray)JSONArray.parse(protocolProductInfo.getReadItemList())); + + return protocolProductVo; + } + + + +} diff --git a/xiuosiot-backend/src/main/java/com/aiit/xiuos/service/ProtocolService.java b/xiuosiot-backend/src/main/java/com/aiit/xiuos/service/ProtocolService.java new file mode 100644 index 0000000..94569a1 --- /dev/null +++ b/xiuosiot-backend/src/main/java/com/aiit/xiuos/service/ProtocolService.java @@ -0,0 +1,13 @@ +package com.aiit.xiuos.service; + +import com.aiit.xiuos.model.ProtocolProductInfo; + +import java.util.List; + +public interface ProtocolService { + List getProtocolByType(String protocolType); + List getProtocolAll(); + ProtocolProductInfo getProtocolByName(String productName); + int addProtocolProduct(ProtocolProductInfo protocolProductInfo); + int deleteProtocolProduct(String productName); +} diff --git a/xiuosiot-backend/src/main/java/com/aiit/xiuos/service/impl/ProtocolServiceImpl.java b/xiuosiot-backend/src/main/java/com/aiit/xiuos/service/impl/ProtocolServiceImpl.java new file mode 100644 index 0000000..10e5e55 --- /dev/null +++ b/xiuosiot-backend/src/main/java/com/aiit/xiuos/service/impl/ProtocolServiceImpl.java @@ -0,0 +1,38 @@ +package com.aiit.xiuos.service.impl; + +import com.aiit.xiuos.dao.mappers.ProtocolProductInfoMapper; +import com.aiit.xiuos.model.ProtocolProductInfo; +import com.aiit.xiuos.service.ProtocolService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; +@Service +public class ProtocolServiceImpl implements ProtocolService { + @Autowired + ProtocolProductInfoMapper protocolProductInfoMapper; + @Override + public List getProtocolByType(String protocolType) { + return protocolProductInfoMapper.selectByType(protocolType); + } + + @Override + public List getProtocolAll() { + return protocolProductInfoMapper.selectAll(); + } + + @Override + public ProtocolProductInfo getProtocolByName(String productName) { + return protocolProductInfoMapper.selectByPrimaryKey(productName); + } + + @Override + public int addProtocolProduct(ProtocolProductInfo protocolProductInfo) { + return protocolProductInfoMapper.insertSelective(protocolProductInfo); + } + + @Override + public int deleteProtocolProduct(String productId) { + return protocolProductInfoMapper.deleteByPrimaryKey(productId); + } +} diff --git a/xiuosiot-backend/src/main/resources/com/aiit/xiuos/dao/mappers/AvgDayDataMapper.java b/xiuosiot-backend/src/main/resources/com/aiit/xiuos/dao/mappers/AvgDayDataMapper.java deleted file mode 100644 index b0edc89..0000000 --- a/xiuosiot-backend/src/main/resources/com/aiit/xiuos/dao/mappers/AvgDayDataMapper.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.aiit.xiuos.dao.mappers; - -import com.aiit.xiuos.model.AvgDayData; - -public interface AvgDayDataMapper { - int deleteByPrimaryKey(Integer id); - - int insert(AvgDayData record); - - int insertSelective(AvgDayData record); - - AvgDayData selectByPrimaryKey(Integer id); - - int updateByPrimaryKeySelective(AvgDayData record); - - int updateByPrimaryKey(AvgDayData record); -} \ No newline at end of file diff --git a/xiuosiot-backend/src/main/resources/generatorConfig.xml b/xiuosiot-backend/src/main/resources/generatorConfig.xml index 9f27cd3..d50d61a 100644 --- a/xiuosiot-backend/src/main/resources/generatorConfig.xml +++ b/xiuosiot-backend/src/main/resources/generatorConfig.xml @@ -82,7 +82,7 @@ - diff --git a/xiuosiot-backend/src/main/resources/mappers/ProtocolProductInfoMapper.xml b/xiuosiot-backend/src/main/resources/mappers/ProtocolProductInfoMapper.xml new file mode 100644 index 0000000..001749c --- /dev/null +++ b/xiuosiot-backend/src/main/resources/mappers/ProtocolProductInfoMapper.xml @@ -0,0 +1,131 @@ + + + + + + + + + + + + + + + + + product_name, protocol_type, read_item_list, updatetime, device_id, device_name, + socket_config, read_period + + + + delete from protocol_product_info + where product_name = #{productName,jdbcType=VARCHAR} + + + insert into protocol_product_info (product_name, protocol_type, read_item_list, + updatetime, device_id, device_name, + socket_config, read_period) + values (#{productName,jdbcType=VARCHAR}, #{protocolType,jdbcType=VARCHAR}, #{readItemList,jdbcType=VARCHAR}, + #{updatetime,jdbcType=TIMESTAMP}, #{deviceId,jdbcType=VARCHAR}, #{deviceName,jdbcType=VARCHAR}, + #{socketConfig,jdbcType=VARCHAR}, #{readPeriod,jdbcType=VARCHAR}) + + + insert into protocol_product_info + + + product_name, + + + protocol_type, + + + read_item_list, + + + updatetime, + + + device_id, + + + device_name, + + + socket_config, + + + read_period, + + + + + #{productName,jdbcType=VARCHAR}, + + + #{protocolType,jdbcType=VARCHAR}, + + + #{readItemList,jdbcType=VARCHAR}, + + + #{updatetime,jdbcType=TIMESTAMP}, + + + #{deviceId,jdbcType=VARCHAR}, + + + #{deviceName,jdbcType=VARCHAR}, + + + #{socketConfig,jdbcType=VARCHAR}, + + + #{readPeriod,jdbcType=VARCHAR}, + + + + + update protocol_product_info + + + protocol_type = #{protocolType,jdbcType=VARCHAR}, + + + read_item_list = #{readItemList,jdbcType=VARCHAR}, + + + updatetime = #{updatetime,jdbcType=TIMESTAMP}, + + + device_id = #{deviceId,jdbcType=VARCHAR}, + + + device_name = #{deviceName,jdbcType=VARCHAR}, + + + socket_config = #{socketConfig,jdbcType=VARCHAR}, + + + read_period = #{readPeriod,jdbcType=VARCHAR}, + + + where product_name = #{productName,jdbcType=VARCHAR} + + + update protocol_product_info + set protocol_type = #{protocolType,jdbcType=VARCHAR}, + read_item_list = #{readItemList,jdbcType=VARCHAR}, + updatetime = #{updatetime,jdbcType=TIMESTAMP}, + device_id = #{deviceId,jdbcType=VARCHAR}, + device_name = #{deviceName,jdbcType=VARCHAR}, + socket_config = #{socketConfig,jdbcType=VARCHAR}, + read_period = #{readPeriod,jdbcType=VARCHAR} + where product_name = #{productName,jdbcType=VARCHAR} + + \ No newline at end of file