Browse Source

网关、维保、设备通信参数接口编写

dev
mh 4 months ago
parent
commit
ebe3633d22
  1. 87
      mh-admin/src/main/java/com/mh/web/controller/device/CommunicationParamsController.java
  2. 89
      mh-admin/src/main/java/com/mh/web/controller/device/GatewayManageController.java
  3. 87
      mh-admin/src/main/java/com/mh/web/controller/device/MaintainInfoController.java
  4. 123
      mh-common/src/main/java/com/mh/common/core/domain/entity/CommunicationParams.java
  5. 160
      mh-common/src/main/java/com/mh/common/core/domain/entity/GatewayManage.java
  6. 123
      mh-common/src/main/java/com/mh/common/core/domain/entity/MaintainInfo.java
  7. 16
      mh-system/src/main/java/com/mh/system/mapper/device/CommunicationParamsMapper.java
  8. 16
      mh-system/src/main/java/com/mh/system/mapper/device/GatewayManageMapper.java
  9. 16
      mh-system/src/main/java/com/mh/system/mapper/device/MaintainInfoMapper.java
  10. 24
      mh-system/src/main/java/com/mh/system/service/device/ICommunicationParamsService.java
  11. 25
      mh-system/src/main/java/com/mh/system/service/device/IGatewayManageService.java
  12. 24
      mh-system/src/main/java/com/mh/system/service/device/IMaintainInfoService.java
  13. 63
      mh-system/src/main/java/com/mh/system/service/device/impl/CommunicationParamsServiceImpl.java
  14. 67
      mh-system/src/main/java/com/mh/system/service/device/impl/GatewayManageServiceImpl.java
  15. 67
      mh-system/src/main/java/com/mh/system/service/device/impl/MaintainInfoServiceImpl.java
  16. 357
      sql/表结构设计.sql

87
mh-admin/src/main/java/com/mh/web/controller/device/CommunicationParamsController.java

@ -0,0 +1,87 @@
package com.mh.web.controller.device;
import com.mh.common.annotation.Log;
import com.mh.common.core.controller.BaseController;
import com.mh.common.core.domain.AjaxResult;
import com.mh.common.core.domain.entity.CommunicationParams;
import com.mh.common.core.page.TableDataInfo;
import com.mh.common.enums.BusinessType;
import com.mh.system.service.device.ICommunicationParamsService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* @author LJF
* @version 1.0
* @project EEMCS
* @description 设备采集参数管理
* @date 2025-01-08 14:36:24
*/
@RestController
@RequestMapping("/device/cmp")
public class CommunicationParamsController extends BaseController {
@Autowired
private ICommunicationParamsService iCommunicationParamsService;
/**
* 获取列表内容数据
*/
@PreAuthorize("@ss.hasPermi('system:cmp:list')")
@GetMapping("/list")
public TableDataInfo list(CommunicationParams communicationParams)
{
startPage();
List<CommunicationParams> list = iCommunicationParamsService.selectCmPList(communicationParams);
return getDataTable(list);
}
/**
* 根据id获取详细信息
*/
@PreAuthorize("@ss.hasPermi('system:cmp:query')")
@GetMapping(value = "/{cmpId}")
public AjaxResult getInfo(@PathVariable String cmpId)
{
return success(iCommunicationParamsService.selectCommunicationParamsById(cmpId));
}
/**
* 新增网关
*/
@PreAuthorize("@ss.hasPermi('system:cmp:add')")
@Log(title = "设备采集参数管理", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@Validated @RequestBody CommunicationParams communicationParams)
{
communicationParams.setCreateBy(getUsername());
return toAjax(iCommunicationParamsService.insertCommunicationParams(communicationParams));
}
/**
* 修改网关信息
*/
@PreAuthorize("@ss.hasPermi('system:cmp:edit')")
@Log(title = "设备采集参数管理", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@Validated @RequestBody CommunicationParams communicationParams)
{
communicationParams.setUpdateBy(getUsername());
return toAjax(iCommunicationParamsService.updateCommunicationParams(communicationParams));
}
/**
* 删除设备采集参数管理
*/
@PreAuthorize("@ss.hasPermi('system:cmp:remove')")
@Log(title = "设备采集参数管理", businessType = BusinessType.DELETE)
@DeleteMapping("/{cmpIds}")
public AjaxResult remove(@PathVariable String[] cmpIds)
{
return toAjax(iCommunicationParamsService.deleteCommunicationByIds(cmpIds));
}
}

89
mh-admin/src/main/java/com/mh/web/controller/device/GatewayManageController.java

@ -0,0 +1,89 @@
package com.mh.web.controller.device;
import com.mh.common.annotation.Log;
import com.mh.common.core.controller.BaseController;
import com.mh.common.core.domain.AjaxResult;
import com.mh.common.core.domain.entity.GatewayManage;
import com.mh.common.core.page.TableDataInfo;
import com.mh.common.enums.BusinessType;
import com.mh.system.domain.SysNotice;
import com.mh.system.service.ISysNoticeService;
import com.mh.system.service.device.IGatewayManageService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* @author LJF
* @version 1.0
* @project EEMCS
* @description 网关设备管理
* @date 2025-01-08 14:36:24
*/
@RestController
@RequestMapping("/device/gateway")
public class GatewayManageController extends BaseController {
@Autowired
private IGatewayManageService gatewayManageService;
/**
* 获取网关列表内容数据
*/
@PreAuthorize("@ss.hasPermi('system:gw:list')")
@GetMapping("/list")
public TableDataInfo list(GatewayManage gatewayManage)
{
startPage();
List<GatewayManage> list = gatewayManageService.selectGwManageList(gatewayManage);
return getDataTable(list);
}
/**
* 根据网关id获取详细信息
*/
@PreAuthorize("@ss.hasPermi('system:gw:query')")
@GetMapping(value = "/{gwId}")
public AjaxResult getInfo(@PathVariable String gwId)
{
return success(gatewayManageService.selectGwManageById(gwId));
}
/**
* 新增网关
*/
@PreAuthorize("@ss.hasPermi('system:gw:add')")
@Log(title = "网关管理", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@Validated @RequestBody GatewayManage gatewayManage)
{
gatewayManage.setCreateBy(getUsername());
return toAjax(gatewayManageService.insertGatewayManage(gatewayManage));
}
/**
* 修改网关信息
*/
@PreAuthorize("@ss.hasPermi('system:gw:edit')")
@Log(title = "网关管理", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@Validated @RequestBody GatewayManage gatewayManage)
{
gatewayManage.setUpdateBy(getUsername());
return toAjax(gatewayManageService.updateGateway(gatewayManage));
}
/**
* 删除网关管理
*/
@PreAuthorize("@ss.hasPermi('system:gw:remove')")
@Log(title = "网关管理", businessType = BusinessType.DELETE)
@DeleteMapping("/{gatewayIds}")
public AjaxResult remove(@PathVariable String[] gatewayIds)
{
return toAjax(gatewayManageService.deleteGatewayByIds(gatewayIds));
}
}

87
mh-admin/src/main/java/com/mh/web/controller/device/MaintainInfoController.java

@ -0,0 +1,87 @@
package com.mh.web.controller.device;
import com.mh.common.annotation.Log;
import com.mh.common.core.controller.BaseController;
import com.mh.common.core.domain.AjaxResult;
import com.mh.common.core.domain.entity.MaintainInfo;
import com.mh.common.core.page.TableDataInfo;
import com.mh.common.enums.BusinessType;
import com.mh.system.service.device.IMaintainInfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* @author LJF
* @version 1.0
* @project EEMCS
* @description 维护设备设备管理
* @date 2025-01-08 14:36:24
*/
@RestController
@RequestMapping("/device/maintain")
public class MaintainInfoController extends BaseController {
@Autowired
private IMaintainInfoService maintainInfoService;
/**
* 获取维护设备列表内容数据
*/
@PreAuthorize("@ss.hasPermi('system:maintain:list')")
@GetMapping("/list")
public TableDataInfo list(MaintainInfo maintainInfo)
{
startPage();
List<MaintainInfo> list = maintainInfoService.selectMaintainInfoList(maintainInfo);
return getDataTable(list);
}
/**
* 根据维护设备id获取详细信息
*/
@PreAuthorize("@ss.hasPermi('system:maintain:query')")
@GetMapping(value = "/{maintainId}")
public AjaxResult getInfo(@PathVariable String maintainId)
{
return success(maintainInfoService.selectMaintainInfoById(maintainId));
}
/**
* 新增维护设备
*/
@PreAuthorize("@ss.hasPermi('system:maintain:add')")
@Log(title = "维护设备管理", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@Validated @RequestBody MaintainInfo gatewayManage)
{
gatewayManage.setCreateBy(getUsername());
return toAjax(maintainInfoService.insertMaintainInfo(gatewayManage));
}
/**
* 修改维护设备信息
*/
@PreAuthorize("@ss.hasPermi('system:maintain:edit')")
@Log(title = "维护设备管理", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@Validated @RequestBody MaintainInfo gatewayManage)
{
gatewayManage.setUpdateBy(getUsername());
return toAjax(maintainInfoService.updateMaintainInfo(gatewayManage));
}
/**
* 删除维护设备管理
*/
@PreAuthorize("@ss.hasPermi('system:maintain:remove')")
@Log(title = "维护设备管理", businessType = BusinessType.DELETE)
@DeleteMapping("/{maintainIds}")
public AjaxResult remove(@PathVariable String[] maintainIds)
{
return toAjax(maintainInfoService.deleteMaintainInfoByIds(maintainIds));
}
}

123
mh-common/src/main/java/com/mh/common/core/domain/entity/CommunicationParams.java

@ -0,0 +1,123 @@
package com.mh.common.core.domain.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.mh.common.core.domain.BaseEntity;
import org.apache.commons.lang3.builder.ToStringBuilder;
/**
* @author LJF
* @version 1.0
* @project EEMCS
* @description 设备采集通信参数设置
* @date 2025-01-08 15:42:26
*/
@TableName("communication_params")
public class CommunicationParams extends BaseEntity {
/**
* 主键
*/
@TableId(value = "id", type = IdType.ASSIGN_UUID)
private String id;
/**
* 仪表类型从字典表中拿
*/
private Integer mtType;
/**
* 波特率
*/
private int baudRate;
/**
* 数据位
*/
private int dataBit;
/**
* 停止位
*/
private int stopBit;
/**
* 校验位
*/
private String parity;
/**
* 备注
*/
private String remark;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public Integer getMtType() {
return mtType;
}
public void setMtType(Integer mtType) {
this.mtType = mtType;
}
public int getBaudRate() {
return baudRate;
}
public void setBaudRate(int baudRate) {
this.baudRate = baudRate;
}
public int getDataBit() {
return dataBit;
}
public void setDataBit(int dataBit) {
this.dataBit = dataBit;
}
public int getStopBit() {
return stopBit;
}
public void setStopBit(int stopBit) {
this.stopBit = stopBit;
}
public String getParity() {
return parity;
}
public void setParity(String parity) {
this.parity = parity;
}
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
@Override
public String toString() {
return new ToStringBuilder(this)
.append("id", id)
.append("mtType", mtType)
.append("baudRate", baudRate)
.append("dataBit", dataBit)
.append("stopBit", stopBit)
.append("parity", parity)
.append("remark", remark)
.toString();
}
}

160
mh-common/src/main/java/com/mh/common/core/domain/entity/GatewayManage.java

@ -0,0 +1,160 @@
package com.mh.common.core.domain.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.mh.common.core.domain.BaseEntity;
import org.apache.commons.lang3.builder.ToStringBuilder;
import java.util.Date;
/**
* @author ljf
* @title
* @description 网关管理实体类
* @updateTime 2020-05-21
* @throws
*/
@TableName("gateway_manage")
public class GatewayManage extends BaseEntity {
@TableId(value = "id", type = IdType.ASSIGN_UUID)
private String id;
private String gwName; // 网关名称
private String gwIp; // 网关IP地址
private String gwAddr; // 网关安装地址
private int port; // 端口号
private int collectionLoop; // 采集周期
private Date connectTime; // 最新上线连接时间
private String internetCard; // 物联网卡号
private int operatorType; // 0:中国移动 1:中国联通 2:中国电信
private int communicationType; // 通讯类型
private String remark; // 备注
private int grade; // 标志位(连接状态) 0:正常;1:不在线;2:异常
private Integer status; // (连接状态) 0:正常;1:不在线;2:异常
public Integer getStatus() {
return status;
}
public void setStatus(Integer status) {
this.status = status;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getGwName() {
return gwName;
}
public void setGwName(String gwName) {
this.gwName = gwName;
}
public String getGwIp() {
return gwIp;
}
public void setGwIp(String gwIp) {
this.gwIp = gwIp;
}
public String getGwAddr() {
return gwAddr;
}
public void setGwAddr(String gwAddr) {
this.gwAddr = gwAddr;
}
public int getPort() {
return port;
}
public void setPort(int port) {
this.port = port;
}
public int getCollectionLoop() {
return collectionLoop;
}
public void setCollectionLoop(int collectionLoop) {
this.collectionLoop = collectionLoop;
}
public Date getConnectTime() {
return connectTime;
}
public void setConnectTime(Date connectTime) {
this.connectTime = connectTime;
}
public String getInternetCard() {
return internetCard;
}
public void setInternetCard(String internetCard) {
this.internetCard = internetCard;
}
public int getOperatorType() {
return operatorType;
}
public void setOperatorType(int operatorType) {
this.operatorType = operatorType;
}
public int getCommunicationType() {
return communicationType;
}
public void setCommunicationType(int communicationType) {
this.communicationType = communicationType;
}
@Override
public String getRemark() {
return remark;
}
@Override
public void setRemark(String remark) {
this.remark = remark;
}
public int getGrade() {
return grade;
}
public void setGrade(int grade) {
this.grade = grade;
}
@Override
public String toString() {
return new ToStringBuilder(this)
.append("id", id)
.append("gwName", gwName)
.append("gwIp", gwIp)
.append("gwAddr", gwAddr)
.append("port", port)
.append("collectionLoop", collectionLoop)
.append("connectTime", connectTime)
.append("internetCard", internetCard)
.append("operatorType", operatorType)
.append("communicationType", communicationType)
.append("remark", remark)
.append("grade", grade)
.append("status", status)
.toString();
}
}

123
mh-common/src/main/java/com/mh/common/core/domain/entity/MaintainInfo.java

@ -0,0 +1,123 @@
package com.mh.common.core.domain.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.mh.common.core.domain.BaseEntity;
import org.apache.commons.lang3.builder.ToStringBuilder;
import java.math.BigDecimal;
import java.util.Date;
@TableName("maintain_info")
public class MaintainInfo extends BaseEntity {
@TableId(value = "id", type = IdType.ASSIGN_UUID)
private String id; // 编号
private String deviceId; // 设备编号
private String deviceType; // 设备类型
private String maintainType; // 维护类型
private String maintainPeople; // 维护人员
private BigDecimal cost; // 费用
private String contents; // 维保内容
private String evaluate; // 评价分数
private Date execTime; // 执行时间
private Integer spendTime; // 花费时间
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getDeviceId() {
return deviceId;
}
public void setDeviceId(String deviceId) {
this.deviceId = deviceId;
}
public String getDeviceType() {
return deviceType;
}
public void setDeviceType(String deviceType) {
this.deviceType = deviceType;
}
public String getMaintainType() {
return maintainType;
}
public void setMaintainType(String maintainType) {
this.maintainType = maintainType;
}
public String getMaintainPeople() {
return maintainPeople;
}
public void setMaintainPeople(String maintainPeople) {
this.maintainPeople = maintainPeople;
}
public BigDecimal getCost() {
return cost;
}
public void setCost(BigDecimal cost) {
this.cost = cost;
}
public String getContents() {
return contents;
}
public void setContents(String contents) {
this.contents = contents;
}
public String getEvaluate() {
return evaluate;
}
public void setEvaluate(String evaluate) {
this.evaluate = evaluate;
}
public Date getExecTime() {
return execTime;
}
public void setExecTime(Date execTime) {
this.execTime = execTime;
}
public Integer getSpendTime() {
return spendTime;
}
public void setSpendTime(Integer spendTime) {
this.spendTime = spendTime;
}
@Override
public String toString() {
return new ToStringBuilder(this)
.append("id", id)
.append("deviceId", deviceId)
.append("deviceType", deviceType)
.append("maintainType", maintainType)
.append("maintainPeople", maintainPeople)
.append("cost", cost)
.append("contents", contents)
.append("evaluate", evaluate)
.append("execTime", execTime)
.append("spendTime", spendTime)
.toString();
}
}

16
mh-system/src/main/java/com/mh/system/mapper/device/CommunicationParamsMapper.java

@ -0,0 +1,16 @@
package com.mh.system.mapper.device;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.mh.common.core.domain.entity.CommunicationParams;
import org.apache.ibatis.annotations.Mapper;
/**
* @author LJF
* @version 1.0
* @project EEMCS
* @description 网关管理数据库操作mapper
* @date 2025-01-08 15:13:16
*/
@Mapper
public interface CommunicationParamsMapper extends BaseMapper<CommunicationParams> {
}

16
mh-system/src/main/java/com/mh/system/mapper/device/GatewayManageMapper.java

@ -0,0 +1,16 @@
package com.mh.system.mapper.device;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.mh.common.core.domain.entity.GatewayManage;
import org.apache.ibatis.annotations.Mapper;
/**
* @author LJF
* @version 1.0
* @project EEMCS
* @description 网关管理数据库操作mapper
* @date 2025-01-08 15:13:16
*/
@Mapper
public interface GatewayManageMapper extends BaseMapper<GatewayManage> {
}

16
mh-system/src/main/java/com/mh/system/mapper/device/MaintainInfoMapper.java

@ -0,0 +1,16 @@
package com.mh.system.mapper.device;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.mh.common.core.domain.entity.MaintainInfo;
import org.apache.ibatis.annotations.Mapper;
/**
* @author LJF
* @version 1.0
* @project EEMCS
* @description 维保管理mapper
* @date 2025-01-08 17:31:03
*/
@Mapper
public interface MaintainInfoMapper extends BaseMapper<MaintainInfo> {
}

24
mh-system/src/main/java/com/mh/system/service/device/ICommunicationParamsService.java

@ -0,0 +1,24 @@
package com.mh.system.service.device;
import com.mh.common.core.domain.entity.CommunicationParams;
import java.util.List;
/**
* @author LJF
* @version 1.0
* @project EEMCS
* @description 设备采集通信参数配置
* @date 2025-01-08 16:28:53
*/
public interface ICommunicationParamsService {
List<CommunicationParams> selectCmPList(CommunicationParams communicationParams);
CommunicationParams selectCommunicationParamsById(String cmpId);
int insertCommunicationParams(CommunicationParams communicationParams);
int updateCommunicationParams(CommunicationParams communicationParams);
int deleteCommunicationByIds(String[] cmpIds);
}

25
mh-system/src/main/java/com/mh/system/service/device/IGatewayManageService.java

@ -0,0 +1,25 @@
package com.mh.system.service.device;
import com.mh.common.core.domain.entity.GatewayManage;
import java.util.List;
/**
* @author LJF
* @version 1.0
* @project EEMCS
* @description 网管管理接口
* @date 2025-01-08 14:47:32
*/
public interface IGatewayManageService {
List<GatewayManage> selectGwManageList(GatewayManage gatewayManage);
GatewayManage selectGwManageById(String gwId);
int insertGatewayManage(GatewayManage gatewayManage);
int updateGateway(GatewayManage gatewayManage);
int deleteGatewayByIds(String[] gatewayIds);
}

24
mh-system/src/main/java/com/mh/system/service/device/IMaintainInfoService.java

@ -0,0 +1,24 @@
package com.mh.system.service.device;
import com.mh.common.core.domain.entity.MaintainInfo;
import java.util.List;
/**
* @author LJF
* @version 1.0
* @project EEMCS
* @description 设备维护管理服务类
* @date 2025-01-08 17:37:26
*/
public interface IMaintainInfoService {
List<MaintainInfo> selectMaintainInfoList(MaintainInfo maintainInfo);
MaintainInfo selectMaintainInfoById(String maintainId);
int insertMaintainInfo(MaintainInfo maintainInfo);
int updateMaintainInfo(MaintainInfo maintainInfo);
int deleteMaintainInfoByIds(String[] maintainIds);
}

63
mh-system/src/main/java/com/mh/system/service/device/impl/CommunicationParamsServiceImpl.java

@ -0,0 +1,63 @@
package com.mh.system.service.device.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.mh.common.core.domain.entity.CommunicationParams;
import com.mh.system.mapper.device.CommunicationParamsMapper;
import com.mh.system.service.device.ICommunicationParamsService;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* @author LJF
* @version 1.0
* @project EEMCS
* @description 设备采集通信参数配置实现类
* @date 2025-01-08 16:33:54
*/
@Service
public class CommunicationParamsServiceImpl implements ICommunicationParamsService {
@Resource
private CommunicationParamsMapper communicationParamsMapper;
@Override
public List<CommunicationParams> selectCmPList(CommunicationParams communicationParams) {
if (communicationParams == null) {
return List.of();
}
QueryWrapper<CommunicationParams> queryWrapper = new QueryWrapper<>();
if (communicationParams.getMtType() != null) {
queryWrapper.eq("mt_type", communicationParams.getMtType());
}
queryWrapper.orderByAsc("mt_type");
return communicationParamsMapper.selectList(queryWrapper);
}
@Override
public CommunicationParams selectCommunicationParamsById(String cmpId) {
return communicationParamsMapper.selectById(cmpId);
}
@Override
public int insertCommunicationParams(CommunicationParams communicationParams) {
return communicationParamsMapper.insert(communicationParams);
}
@Override
public int updateCommunicationParams(CommunicationParams communicationParams) {
return communicationParamsMapper.updateById(communicationParams);
}
@Override
public int deleteCommunicationByIds(String[] cmpIds) {
if (cmpIds != null && cmpIds.length > 0) {
for (String cmpId : cmpIds) {
communicationParamsMapper.deleteById(cmpId);
}
return cmpIds.length;
}
return 0;
}
}

67
mh-system/src/main/java/com/mh/system/service/device/impl/GatewayManageServiceImpl.java

@ -0,0 +1,67 @@
package com.mh.system.service.device.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.mh.common.core.domain.entity.GatewayManage;
import com.mh.common.utils.StringUtils;
import com.mh.system.mapper.device.GatewayManageMapper;
import com.mh.system.service.device.IGatewayManageService;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* @author LJF
* @version 1.0
* @project EEMCS
* @description 网关管理接口实现类
* @date 2025-01-08 14:48:17
*/
@Service
public class GatewayManageServiceImpl implements IGatewayManageService {
@Resource
private GatewayManageMapper gatewayManageMapper;
@Override
public List<GatewayManage> selectGwManageList(GatewayManage gatewayManage) {
QueryWrapper<GatewayManage> queryWrapper = new QueryWrapper<>();
if (!StringUtils.isEmpty(gatewayManage.getGwName())) {
queryWrapper.like("gw_name", gatewayManage.getGwName());
}
if (gatewayManage.getStatus() != null) {
queryWrapper.eq("status", gatewayManage.getStatus());
}
if (!StringUtils.isEmpty(gatewayManage.getCreateBy())) {
queryWrapper.like("create_by", gatewayManage.getCreateBy());
}
queryWrapper.orderByDesc("create_time");
return gatewayManageMapper.selectList(queryWrapper);
}
@Override
public GatewayManage selectGwManageById(String gwId) {
return gatewayManageMapper.selectById(gwId);
}
@Override
public int insertGatewayManage(GatewayManage gatewayManage) {
return gatewayManageMapper.insert(gatewayManage);
}
@Override
public int updateGateway(GatewayManage gatewayManage) {
return gatewayManageMapper.updateById(gatewayManage);
}
@Override
public int deleteGatewayByIds(String[] gatewayIds) {
if (gatewayIds != null && gatewayIds.length > 0) {
for (String gatewayId : gatewayIds) {
gatewayManageMapper.deleteById(gatewayId);
}
return gatewayIds.length;
}
return 0;
}
}

67
mh-system/src/main/java/com/mh/system/service/device/impl/MaintainInfoServiceImpl.java

@ -0,0 +1,67 @@
package com.mh.system.service.device.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.mh.common.core.domain.entity.MaintainInfo;
import com.mh.common.utils.StringUtils;
import com.mh.system.mapper.device.MaintainInfoMapper;
import com.mh.system.service.device.IMaintainInfoService;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* @author LJF
* @version 1.0
* @project EEMCS
* @description 设备维护管理服务类
* @date 2025-01-08 17:37:53
*/
@Service
public class MaintainInfoServiceImpl implements IMaintainInfoService {
@Resource
private MaintainInfoMapper maintainInfoMapper;
@Override
public List<MaintainInfo> selectMaintainInfoList(MaintainInfo maintainInfo) {
if (maintainInfo == null) {
return List.of();
}
QueryWrapper<MaintainInfo> queryWrapper = new QueryWrapper<>();
if (maintainInfo.getMaintainType() != null) {
queryWrapper.eq("maintain_type", maintainInfo.getMaintainType());
}
if (!StringUtils.isEmpty(maintainInfo.getMaintainPeople())) {
queryWrapper.like("maintain_people", maintainInfo.getMaintainPeople());
}
queryWrapper.orderByDesc("create_time");
return maintainInfoMapper.selectList(queryWrapper);
}
@Override
public MaintainInfo selectMaintainInfoById(String maintainId) {
return maintainInfoMapper.selectById(maintainId);
}
@Override
public int insertMaintainInfo(MaintainInfo maintainInfo) {
return maintainInfoMapper.insert(maintainInfo);
}
@Override
public int updateMaintainInfo(MaintainInfo maintainInfo) {
return maintainInfoMapper.updateById(maintainInfo);
}
@Override
public int deleteMaintainInfoByIds(String[] maintainIds) {
if (maintainIds != null) {
for (String maintainId : maintainIds) {
maintainInfoMapper.deleteById(maintainId);
}
return maintainIds.length;
}
return 0;
}
}

357
sql/表结构设计.sql

@ -0,0 +1,357 @@
--1 device_ledger
CREATE TABLE device_ledger (
id VARCHAR(36) NOT NULL, -- 设备id
device_name VARCHAR(50) NULL, -- 设备名称
model_specs VARCHAR(100) NULL, -- 规格型号
asset_num VARCHAR(50) NULL, -- 资产编号
qr_code_id VARCHAR(36) NULL, -- 二维码id
service_life VARCHAR(10) NULL, -- 使用寿命
device_type VARCHAR(50) NULL, -- 设备类型(字典)
tech_params VARCHAR(200) NULL, -- 技术参数
tech_doc VARCHAR(100) NULL, -- 技术文档
install_time TIMESTAMP NULL, -- 安装时间
create_time TIMESTAMP NULL, -- 创建时间
update_time TIMESTAMP NULL, -- 更新时间
create_by VARCHAR(100) NULL, -- 创建者
status int null, -- 状态(0:在线或者使用中,1:不在线或者停用)
is_collection int null, -- 是否是需要采集(0:是,1:不采集)
is_calc_energy int null, -- 是否计算能效(0:计算,1不计算)
PRIMARY KEY (id)
);
-- 为表添加备注
COMMENT ON TABLE device_ledger IS '设备台账表,用于记录所有设备的基本信息、安装及维护情况';
-- 为各列添加备注
COMMENT ON COLUMN device_ledger.id IS '设备唯一标识符';
COMMENT ON COLUMN device_ledger.device_name IS '设备的名称';
COMMENT ON COLUMN device_ledger.model_specs IS '设备的规格和型号';
COMMENT ON COLUMN device_ledger.asset_num IS '设备的资产编号';
COMMENT ON COLUMN device_ledger.qr_code_id IS '与设备关联的二维码ID';
COMMENT ON COLUMN device_ledger.service_life IS '设备的预计使用寿命';
COMMENT ON COLUMN device_ledger.device_type IS '设备所属类型(字典值获取)';
COMMENT ON COLUMN device_ledger.tech_params IS '设备的技术参数描述';
COMMENT ON COLUMN device_ledger.tech_doc IS '设备相关的技术文档链接或文件名';
COMMENT ON COLUMN device_ledger.install_time IS '设备的安装日期和时间';
COMMENT ON COLUMN device_ledger.create_time IS '记录创建的时间戳';
COMMENT ON COLUMN device_ledger.update_time IS '记录最后一次更新的时间戳';
COMMENT ON COLUMN device_ledger.create_by IS '创建该记录的用户';
COMMENT ON COLUMN device_ledger.status IS '状态(0:在线或者使用中,1:不在线或者停用)';
COMMENT ON COLUMN device_ledger.is_collection IS '是否是需要采集(0:是,1:不采集)';
COMMENT ON COLUMN device_ledger.is_calc_energy IS '是否计算能效(0:计算,1不计算)';
-- 为 device_ledger 表的 device_type_id 字段添加索引
CREATE INDEX idx_device_ledger_device_ledger_id ON device_ledger (device_type);
-- 为 device_ledger 表的 create_time 字段添加索引(倒序)
CREATE INDEX idx_device_ledger_create_time_desc ON device_ledger (create_time DESC);
--2 device_qr_manage
CREATE TABLE device_qr_manage (
id VARCHAR(36) NOT NULL, -- 设备二维码管理记录ID
serial_num VARCHAR(50) NULL, -- 设备序列号编号
pic_content VARCHAR(100) NULL, -- 二维码图片内容或链接
device_ledger_id VARCHAR(36), -- 关联的设备台账ID
device_name VARCHAR(50), -- 设备名称(冗余字段,方便查询)
bind_time TIMESTAMP NULL, -- 二维码与设备绑定的时间
create_time TIMESTAMP NULL, -- 记录创建的时间戳
update_time TIMESTAMP NULL, -- 记录最后一次更新的时间戳
create_by VARCHAR(100) NULL, -- 创建该记录的用户
PRIMARY KEY (id)
);
-- 为表添加备注
COMMENT ON TABLE device_qr_manage IS '设备二维码管理表,用于记录设备与二维码之间的绑定关系及二维码相关信息';
-- 为各列添加备注
COMMENT ON COLUMN device_qr_manage.id IS '设备二维码管理记录的唯一标识符';
COMMENT ON COLUMN device_qr_manage.serial_num IS '设备的序列号,用于唯一识别每个设备';
COMMENT ON COLUMN device_qr_manage.pic_content IS '二维码图片的内容或存储路径';
COMMENT ON COLUMN device_qr_manage.device_ledger_id IS '关联到设备台账表的设备ID,建立外键关系';
COMMENT ON COLUMN device_qr_manage.device_name IS '设备名称,作为冗余字段便于快速查询';
COMMENT ON COLUMN device_qr_manage.bind_time IS '二维码与设备绑定的具体时间';
COMMENT ON COLUMN device_qr_manage.create_time IS '记录创建的时间戳';
COMMENT ON COLUMN device_qr_manage.update_time IS '记录最后一次更新的时间戳';
COMMENT ON COLUMN device_qr_manage.create_by IS '创建该记录的用户';
-- 为 device_qr_manage 表的 device_ledger_id 字段添加索引
CREATE INDEX idx_device_qr_manage_device_ledger_id ON device_qr_manage (device_ledger_id);
-- 为 device_qr_manage 表的 create_time 字段添加索引(倒序)
CREATE INDEX idx_device_qr_manage_create_time_desc ON device_qr_manage (create_time DESC);
--3 collection_params_manage
CREATE TABLE collection_params_manage (
id varchar(36) NOT NULL, -- 主键
device_ledger_id varchar(36) NULL, -- 设备台账id
mt_type varchar(10), -- 设备类型(字典)
mt_num VARCHAR(20) NULL, -- 设备地址
mt_code VARCHAR(20) NULL, -- 设备采集地址
register_addr VARCHAR(20) NULL, -- 寄存器地址
func_code VARCHAR(20) NULL, -- 功能码
identify_code VARCHAR(20) NULL, -- 数据标识码
mt_caliber_pulse VARCHAR(20) NULL, -- 口径
mt_range NUMERIC(24, 3) NULL, -- 取值范围
mt_ratio INT NULL, -- 倍率
mt_init_value NUMERIC(24, 3) NULL, -- 初始值
digits INT NULL, -- 保留小数位
data_type INT NULL, -- 数据类型(字典)
cur_value NUMERIC(24, 3) NULL, -- 当前值
cur_time TIMESTAMP NULL, -- 采集时间
mt_is_sum BOOLEAN NULL, -- 是否是总表
unit VARCHAR(20) NULL, -- 单位
sort BIGINT NULL, -- 排序
gateway_id varchar(36) NULL, -- 网关id
param_id varchar(36) NULL, -- 串口采集通讯配置id
protocol_type varchar(5) NULL, -- 协议类型
communication_type varchar(5) NULL, -- 通讯类型(字典)
remark varchar(200) NULL, -- 备注
register_size INT NULL, -- 读取寄存器大小
is_use INT NULL, -- 是否启用采集(0:正常,1:不采集)
create_time TIMESTAMP NULL, -- 创建时间
update_time TIMESTAMP NULL, -- 更新时间
PRIMARY KEY (id)
);
-- 为表添加备注
COMMENT ON TABLE collection_params_manage IS '仪表管理表,用于记录各种仪表的基本信息、配置及状态';
-- 为各列添加备注
COMMENT ON COLUMN collection_params_manage.id IS '自增主键';
COMMENT ON COLUMN collection_params_manage.mt_type IS '仪表类型ID';
COMMENT ON COLUMN collection_params_manage.mt_name IS '仪表名称';
COMMENT ON COLUMN collection_params_manage.other_name IS '其他名称';
COMMENT ON COLUMN collection_params_manage.mt_brand IS '仪表品牌';
COMMENT ON COLUMN collection_params_manage.mt_num IS '仪表编号';
COMMENT ON COLUMN collection_params_manage.mt_code IS '仪表代码';
COMMENT ON COLUMN collection_params_manage.register_addr IS '注册地址';
COMMENT ON COLUMN collection_params_manage.func_code IS '功能代码';
COMMENT ON COLUMN collection_params_manage.identify_code IS '识别代码';
COMMENT ON COLUMN collection_params_manage.mt_caliber_pulse IS '口径脉冲';
COMMENT ON COLUMN collection_params_manage.mt_range IS '量程';
COMMENT ON COLUMN collection_params_manage.mt_ratio IS '比例';
COMMENT ON COLUMN collection_params_manage.mt_init_value IS '初始值';
COMMENT ON COLUMN collection_params_manage.digits IS '位数';
COMMENT ON COLUMN collection_params_manage.data_type IS '数据类型';
COMMENT ON COLUMN collection_params_manage.cur_value IS '当前值';
COMMENT ON COLUMN collection_params_manage.cur_time IS '当前时间';
COMMENT ON COLUMN collection_params_manage.mt_is_sum IS '是否累计(0: 否, 1: 是)';
COMMENT ON COLUMN collection_params_manage.create_time IS '记录创建的时间戳';
COMMENT ON COLUMN collection_params_manage.update_time IS '记录最后一次更新的时间戳';
COMMENT ON COLUMN collection_params_manage.unit IS '单位';
COMMENT ON COLUMN collection_params_manage.sort IS '排序';
COMMENT ON COLUMN collection_params_manage.data_com IS '数据通信配置';
COMMENT ON COLUMN collection_params_manage.device_id IS '设备ID';
COMMENT ON COLUMN collection_params_manage.gateway_id IS '网关ID';
COMMENT ON COLUMN collection_params_manage.param_id IS '参数ID';
COMMENT ON COLUMN collection_params_manage.protocol_type IS '协议类型ID';
COMMENT ON COLUMN collection_params_manage.communication_type IS '通信类型';
COMMENT ON COLUMN collection_params_manage.remark IS '备注';
COMMENT ON COLUMN collection_params_manage.register_size IS '注册大小';
COMMENT ON COLUMN collection_params_manage.is_use IS '是否使用(0: 使用, 1: 不使用)';
-- 为 device_qr_manage 表的 device_ledger_id 字段添加索引
CREATE INDEX idx_meter_manage_mt_type ON collection_params_manage (mt_type);
-- 为 device_qr_manage 表的 create_time 字段添加索引(倒序)
CREATE INDEX idx_meter_manage_create_time_desc ON collection_params_manage (create_time DESC);
--4/ spare_parts_manage
CREATE TABLE spare_parts_manage (
id VARCHAR(36) NOT NULL, -- 备件ID
serial_num VARCHAR(50) NULL, -- 序列号编号
spare_name VARCHAR(100) NULL, -- 备件名称
model_specs VARCHAR(100) NULL, -- 规格型号
device_type_id VARCHAR(50) NULL, -- 设备类型ID
inventory_levels INT NULL, -- 当前库存量
min_inventory_levels INT NULL, -- 最低库存量阈值
service_life INT NULL, -- 使用年限(单位:年)
unit_price NUMERIC(24, 3), -- 单价(保留三位小数)
create_time TIMESTAMP NULL, -- 记录创建的时间戳
update_time TIMESTAMP NULL, -- 记录最后一次更新的时间戳
create_by VARCHAR(100) NULL, -- 创建该记录的用户
PRIMARY KEY (id)
);
-- 为表添加备注
COMMENT ON TABLE spare_parts_manage IS '备品/备件管理表,用于记录所有备件的基本信息、库存情况及价格';
-- 为各列添加备注
COMMENT ON COLUMN spare_parts_manage.id IS '备件的唯一标识符';
COMMENT ON COLUMN spare_parts_manage.serial_num IS '备件的序列号,用于唯一识别每个备件';
COMMENT ON COLUMN spare_parts_manage.spare_name IS '备件的名称';
COMMENT ON COLUMN spare_parts_manage.model_specs IS '备件的规格和型号';
COMMENT ON COLUMN spare_parts_manage.device_type_id IS '关联到设备类型的ID,标识备件适用于哪种设备类型';
COMMENT ON COLUMN spare_parts_manage.inventory_levels IS '当前备件的库存数量';
COMMENT ON COLUMN spare_parts_manage.min_inventory_levels IS '最低库存量阈值,当库存低于此值时需要补货';
COMMENT ON COLUMN spare_parts_manage.service_life IS '备件的预计使用年限,单位为年';
COMMENT ON COLUMN spare_parts_manage.unit_price IS '备件的单价,保留三位小数';
COMMENT ON COLUMN spare_parts_manage.create_time IS '记录创建的时间戳';
COMMENT ON COLUMN spare_parts_manage.update_time IS '记录最后一次更新的时间戳';
COMMENT ON COLUMN spare_parts_manage.create_by IS '创建该记录的用户';
CREATE INDEX idx_spare_parts_device_type_id ON spare_parts_manage (device_type_id);
CREATE INDEX idx_spare_parts_create_time_desc ON spare_parts_manage (create_time DESC);
--5device_in_out_manage
CREATE TABLE device_in_out_manage (
id VARCHAR(36) NOT NULL, -- 出入库管理ID
spare_parts_id VARCHAR(36) NULL, -- 备件ID
spare_name VARCHAR(100) NULL, -- 备件名称
opera_type VARCHAR(10) NULL, -- 出入库操作类型(0:入库,1:出库)
int_out_num INT NULL, -- 出入库数量
inventory_levels INT NULL, -- 当前库存量
create_time TIMESTAMP NULL, -- 记录创建的时间戳
update_time TIMESTAMP NULL, -- 记录最后一次更新的时间戳
create_by VARCHAR(100) NULL, -- 创建该记录的用户
PRIMARY KEY (id)
);
-- 为表添加备注
COMMENT ON TABLE device_in_out_manage IS '备品/备件出入库管理表,用于记录备件的出入库操作及当前库存情况';
-- 为各列添加备注
COMMENT ON COLUMN device_in_out_manage.id IS '出入库管理记录的唯一标识符';
COMMENT ON COLUMN device_in_out_manage.spare_parts_id IS '关联到备件的唯一标识符,用于标识具体的备件';
COMMENT ON COLUMN device_in_out_manage.spare_name IS '备件的名称,便于快速识别';
COMMENT ON COLUMN device_in_out_manage.opera_type IS '出入库操作类型,0表示入库,1表示出库';
COMMENT ON COLUMN device_in_out_manage.int_out_num IS '本次出入库操作的数量,正值表示入库,负值表示出库';
COMMENT ON COLUMN device_in_out_manage.inventory_levels IS '当前备件的库存数量,在每次出入库操作后更新';
COMMENT ON COLUMN device_in_out_manage.create_time IS '记录创建的时间戳,表示此次出入库操作的时间';
COMMENT ON COLUMN device_in_out_manage.update_time IS '记录最后一次更新的时间戳,通常与 create_time 相同,除非后续有修改';
COMMENT ON COLUMN device_in_out_manage.create_by IS '创建该记录的用户,记录是谁执行了此次出入库操作';
CREATE INDEX idx_device_in_out_manage_opera_type ON device_in_out_manage (opera_type);
CREATE INDEX idx_device_in_out_manage_spare_parts_id ON device_in_out_manage (spare_parts_id);
CREATE INDEX idx_device_in_out_manage_create_time_desc ON device_in_out_manage (create_time DESC);
-- 6、创建网关管理 gateway_manage 表
CREATE TABLE gateway_manage (
id varchar(36) NOT NULL, -- 自增主键
gw_name VARCHAR(100) NULL, -- 网关名称
gw_ip VARCHAR(20) NULL, -- 网关IP地址
gw_addr VARCHAR(100) NULL, -- 网关对应的编号地址
port INT NULL, -- 网关端口
collection_loop INT NULL, -- 采集周期
create_time TIMESTAMP NULL, -- 创建时间
update_time TIMESTAMP NULL, -- 更新时间
connect_time TIMESTAMP NULL, -- 连接时间
internet_card VARCHAR(50) NULL, -- 卡号
operator_type INT NULL, -- 运营商类型(0: 中国移动, 1: 中国联通, 2: 中国电信)
remark VARCHAR(100) NULL, -- 备注
communication_type INT NULL, -- 通信类型(字典表)
grade INT NULL, -- 预留字段
PRIMARY KEY (id)
);
-- 为表添加备注
COMMENT ON TABLE gateway_manage IS '网关管理表,用于记录网关的基本信息、配置及状态';
-- 为各列添加备注
COMMENT ON COLUMN gateway_manage.id IS '编号';
COMMENT ON COLUMN gateway_manage.gw_name IS '网关名称';
COMMENT ON COLUMN gateway_manage.gw_ip IS '网关IP地址';
COMMENT ON COLUMN gateway_manage.gw_addr IS '网关对应的编号地址';
COMMENT ON COLUMN gateway_manage.port IS '网关端口';
COMMENT ON COLUMN gateway_manage.collection_loop IS '采集周期';
COMMENT ON COLUMN gateway_manage.create_time IS '创建时间';
COMMENT ON COLUMN gateway_manage.update_time IS '更新时间';
COMMENT ON COLUMN gateway_manage.connect_time IS '连接时间';
COMMENT ON COLUMN gateway_manage.internet_card IS '卡号';
COMMENT ON COLUMN gateway_manage.operator_type IS '运营商类型(0: 中国移动, 1: 中国联通, 2: 中国电信)';
COMMENT ON COLUMN gateway_manage.remark IS '备注';
COMMENT ON COLUMN gateway_manage.communication_type IS '通信类型(字典表)';
COMMENT ON COLUMN gateway_manage.grade IS '预留字段';
CREATE INDEX idx_gateway_manage_gw_name ON gateway_manage (gw_name);
CREATE INDEX idx_gateway_manage_status ON gateway_manage (status);
CREATE INDEX idx_gateway_manage_create_time_desc ON gateway_manage (create_time DESC);
ALTER TABLE public.gateway_manage ADD create_by varchar(100) NULL;
COMMENT ON COLUMN public.gateway_manage.create_by IS '创建者';
ALTER TABLE public.gateway_manage ADD update_by varchar(100) NULL;
COMMENT ON COLUMN public.gateway_manage.update_by IS '更新者';
ALTER TABLE public.gateway_manage ADD status int NULL;
COMMENT ON COLUMN public.gateway_manage.status IS '状态(0:在线,1:离线)';
-- 7、通讯采集参数创建 device_params 表
CREATE TABLE communication_params (
id varchar(36) NOT NULL, -- 自增主键
mt_type INT NOT NULL, -- 仪表类型(从字典中获取)
baud_rate INT NOT NULL, -- 波特率
data_bit INT NOT NULL, -- 数据位
stop_bit INT NOT NULL, -- 停止位
parity VARCHAR(10) NOT NULL, -- 校验位
remark VARCHAR(100) NULL, -- 备注
PRIMARY KEY (id)
);
-- 为表添加备注
COMMENT ON TABLE communication_params IS '设备采集参数表,用于记录设备的通信参数';
-- 为各列添加备注
COMMENT ON COLUMN communication_params.id IS '编号';
COMMENT ON COLUMN communication_params.mt_type IS '仪表类型(从字典中获取)';
COMMENT ON COLUMN communication_params.baud_rate IS '波特率';
COMMENT ON COLUMN communication_params.data_bit IS '数据位';
COMMENT ON COLUMN communication_params.stop_bit IS '停止位';
COMMENT ON COLUMN communication_params.parity IS '校验位';
COMMENT ON COLUMN communication_params.remark IS '备注';
ALTER TABLE public.communication_params ADD create_by varchar(100) NULL;
COMMENT ON COLUMN public.communication_params.create_by IS '创建者';
ALTER TABLE public.communication_params ADD update_by varchar(100) NULL;
COMMENT ON COLUMN public.communication_params.update_by IS '更新者';
-- 8、维保管理
CREATE TABLE maintain_info
(
id varchar(36) NOT NULL,
device_id varchar(36) , -- 设备表id
device_type VARCHAR(32) NULL,
maintain_type VARCHAR(50) NULL,
maintain_people VARCHAR(50) NULL,
cost NUMERIC(24, 2) NULL,
contents VARCHAR(100) NULL,
evaluate VARCHAR(10) NULL,
exec_time timestamp NULL, -- 维修时间
spend_times int NULL, -- 花费时间
create_time TIMESTAMP NULL, -- 创建时间
update_time TIMESTAMP NULL, -- 更新时间
create_by varchar(100) NULL,
update_by varchar(100) NULL,
PRIMARY KEY (id)
);
CREATE INDEX idx_maintain_info_create_time_desc ON maintain_info (create_time DESC);
CREATE INDEX idx_maintain_info_maintain_people_desc ON maintain_info (maintain_people);
COMMENT ON TABLE maintain_info IS '维保管理:登记维护信息';
-- Extended properties
COMMENT
ON COLUMN maintain_info.id IS '序号';
COMMENT
ON COLUMN maintain_info.device_id IS '设备id';
COMMENT
ON COLUMN maintain_info.device_type IS '设备类型';
COMMENT
ON COLUMN maintain_info.maintain_type IS '维护类型';
COMMENT
ON COLUMN maintain_info.maintain_people IS '维护人员';
COMMENT
ON COLUMN maintain_info.cost IS '材料费用';
COMMENT
ON COLUMN maintain_info.contents IS '维保内容';
COMMENT
ON COLUMN maintain_info.evaluate IS '评价内容';
COMMENT
ON COLUMN maintain_info.create_time IS '创建时间';
COMMENT
ON COLUMN maintain_info.update_time IS '更新时间';
COMMENT
ON COLUMN maintain_info.create_by IS '创建者';
COMMENT
ON COLUMN maintain_info.update_by IS '更新者';
COMMENT
ON COLUMN maintain_info.exec_time IS '执行维修时间';
COMMENT
ON COLUMN maintain_info.spend_times IS '维修花费时间';
Loading…
Cancel
Save