diff --git a/yudao-module-iot/yudao-module-iot-api/src/main/java/cn/iocoder/yudao/module/iot/enums/ErrorCodeConstants.java b/yudao-module-iot/yudao-module-iot-api/src/main/java/cn/iocoder/yudao/module/iot/enums/ErrorCodeConstants.java index 59e4cf48c..7cd1e81ef 100644 --- a/yudao-module-iot/yudao-module-iot-api/src/main/java/cn/iocoder/yudao/module/iot/enums/ErrorCodeConstants.java +++ b/yudao-module-iot/yudao-module-iot-api/src/main/java/cn/iocoder/yudao/module/iot/enums/ErrorCodeConstants.java @@ -10,7 +10,7 @@ import cn.iocoder.yudao.framework.common.exception.ErrorCode; public interface ErrorCodeConstants { ErrorCode DEVICE_NOT_EXISTS = new ErrorCode(1_003_000_000, "设备不存在"); - ErrorCode DEVICE_EXISTS = new ErrorCode(1_003_000_000, "同名设备已存在"); + ErrorCode DEVICE_EXISTS = new ErrorCode(1_003_000_000, "同名或同主题设备已存在"); ErrorCode DEVICE_ATTRIBUTE_NOT_EXISTS = new ErrorCode(1_003_000_000, "设备属性不存在"); ErrorCode FORMULA_NOT_EXISTS = new ErrorCode(1_003_000_000, "公式不存在"); diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/mysql/device/DeviceMapper.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/mysql/device/DeviceMapper.java index 95f0005ee..6989d880d 100644 --- a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/mysql/device/DeviceMapper.java +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/mysql/device/DeviceMapper.java @@ -51,7 +51,9 @@ public interface DeviceMapper extends BaseMapperX { default DeviceDO selectByName(String name) { return selectOne(DeviceDO::getDeviceName,name); } - + default DeviceDO selectByTopic(String topic) { + return selectOne(DeviceDO::getReadTopic,topic); + } default List selectList(DevicePageReqVO reqVO) { return selectList(new LambdaQueryWrapperX() .eqIfPresent(DeviceDO::getDeviceCode, reqVO.getDeviceCode()) diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/device/DeviceService.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/device/DeviceService.java index 859d3965f..930981079 100644 --- a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/device/DeviceService.java +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/device/DeviceService.java @@ -47,6 +47,7 @@ public interface DeviceService { */ DeviceDO getDevice(Long id); DeviceDO getDeviceByName(String name); + DeviceDO getDeviceByTopic(String topic); /** * 获得物联设备分页 * diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/device/DeviceServiceImpl.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/device/DeviceServiceImpl.java index 22cbdad28..8f9ca76c3 100644 --- a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/device/DeviceServiceImpl.java +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/device/DeviceServiceImpl.java @@ -9,6 +9,7 @@ import cn.iocoder.yudao.module.iot.dal.dataobject.device.DeviceDO; import cn.iocoder.yudao.module.iot.dal.dataobject.device.DeviceAttributeDO; import cn.iocoder.yudao.module.iot.dal.mysql.device.DeviceMapper; import cn.iocoder.yudao.module.iot.dal.mysql.device.DeviceAttributeMapper; +import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; @@ -36,9 +37,11 @@ public class DeviceServiceImpl implements DeviceService { @Override public Long createDevice(DeviceSaveReqVO createReqVO) { - DeviceDO temp = deviceMapper.selectByName(createReqVO.getDeviceName()); - if (temp!=null){ - throw exception(DEVICE_EXISTS); + if(StringUtils.isNotBlank(createReqVO.getReadTopic())){ + DeviceDO temp = deviceMapper.selectByTopic(createReqVO.getReadTopic()); + if (temp!=null){ + throw exception(DEVICE_EXISTS); + } } // 插入 DeviceDO device = BeanUtils.toBean(createReqVO, DeviceDO.class); @@ -82,7 +85,10 @@ public class DeviceServiceImpl implements DeviceService { public DeviceDO getDeviceByName(String name) { return deviceMapper.selectByName(name); } - + @Override + public DeviceDO getDeviceByTopic(String topic) { + return deviceMapper.selectByTopic(topic); + } @Override public PageResult getDevicePage(DevicePageReqVO pageReqVO) { return deviceMapper.selectPage(pageReqVO); diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/mqtt/MqttServerDataController.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/mqtt/MqttServerDataController.java index 25462cc7d..a890b4011 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/mqtt/MqttServerDataController.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/mqtt/MqttServerDataController.java @@ -73,7 +73,7 @@ public class MqttServerDataController { createReqVO.setDeviceData(JSON.toJSONString(saveVO.getPayload())); mqttRecordService.createMqttRecord(createReqVO); - DeviceDO deviceDO = deviceService.getDeviceByName(saveVO.getTopic()); + DeviceDO deviceDO = deviceService.getDeviceByTopic(saveVO.getTopic()); if(deviceDO!=null){ //告警检测 mqttDataService.checkDeviceAlert(saveVO.getPayload(), deviceDO); diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/producereport/vo/ProduceReportPageReqVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/producereport/vo/ProduceReportPageReqVO.java index a2ea1f421..6cc18d8c8 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/producereport/vo/ProduceReportPageReqVO.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/producereport/vo/ProduceReportPageReqVO.java @@ -60,5 +60,8 @@ public class ProduceReportPageReqVO extends PageParam { @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) private LocalDateTime[] reportDate; + @Schema(description = "加班时长") + private BigDecimal plusTime; + private List userIds; } \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/producereport/vo/ProduceReportRespVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/producereport/vo/ProduceReportRespVO.java index b578eeaf9..f6769c748 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/producereport/vo/ProduceReportRespVO.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/producereport/vo/ProduceReportRespVO.java @@ -75,5 +75,7 @@ public class ProduceReportRespVO { @DictFormat("mes_produce_report_type") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中 private String reportType; - + @Schema(description = "加班时长") + @ExcelProperty("加班时长") + private BigDecimal plusTime; } \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/producereport/vo/ProduceReportSaveReqVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/producereport/vo/ProduceReportSaveReqVO.java index 2cc8da048..146885979 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/producereport/vo/ProduceReportSaveReqVO.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/producereport/vo/ProduceReportSaveReqVO.java @@ -58,4 +58,7 @@ public class ProduceReportSaveReqVO { private List produceReportDetails; @Schema(description = "报工日期字符串") private String reportDateString; + + @Schema(description = "加班时长") + private BigDecimal plusTime; } \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/producereport/ProduceReportDO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/producereport/ProduceReportDO.java index eb34db1f9..775f7f24d 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/producereport/ProduceReportDO.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/producereport/ProduceReportDO.java @@ -1,13 +1,14 @@ package cn.iocoder.yudao.module.mes.dal.dataobject.producereport; +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import com.baomidou.mybatisplus.annotation.KeySequence; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.sun.xml.bind.v2.TODO; import lombok.*; -import java.util.*; + import java.math.BigDecimal; import java.time.LocalDateTime; -import java.time.LocalDateTime; -import java.time.LocalDateTime; -import com.baomidou.mybatisplus.annotation.*; -import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; /** * 生产报工单 DO @@ -86,4 +87,6 @@ public class ProduceReportDO extends BaseDO { */ private LocalDateTime reportDate; + //@ExcelProperty("加班时长") + private BigDecimal plusTime; } \ No newline at end of file diff --git a/yudao-server/src/main/resources/application-local.yaml b/yudao-server/src/main/resources/application-local.yaml index fb6d7e351..f263eb16e 100644 --- a/yudao-server/src/main/resources/application-local.yaml +++ b/yudao-server/src/main/resources/application-local.yaml @@ -1,5 +1,5 @@ server: - port: 48080 + port: 48081 --- #################### 数据库相关配置 #################### @@ -8,7 +8,7 @@ spring: autoconfigure: exclude: - com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure # 排除 Druid 的自动配置,使用 dynamic-datasource-spring-boot-starter 配置多数据源 - - org.springframework.boot.autoconfigure.quartz.QuartzAutoConfiguration # 默认 local 环境,不开启 Quartz 的自动配置 +# - org.springframework.boot.autoconfigure.quartz.QuartzAutoConfiguration # 默认 local 环境,不开启 Quartz 的自动配置 - de.codecentric.boot.admin.server.config.AdminServerAutoConfiguration # 禁用 Spring Boot Admin 的 Server 的自动配置 - de.codecentric.boot.admin.server.ui.config.AdminServerUiAutoConfiguration # 禁用 Spring Boot Admin 的 Server UI 的自动配置 - de.codecentric.boot.admin.client.config.SpringBootAdminClientAutoConfiguration # 禁用 Spring Boot Admin 的 Client 的自动配置 @@ -48,7 +48,7 @@ spring: datasource: master: name: besure_neimeng - url: jdbc:mysql://127.0.0.1:3306/${spring.datasource.dynamic.datasource.master.name}?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true # MySQL Connector/J 8.X 连接的示例 + url: jdbc:mysql://111.67.199.122:3306/${spring.datasource.dynamic.datasource.master.name}?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true # MySQL Connector/J 8.X 连接的示例 # url: jdbc:mysql://127.0.0.1:3306/${spring.datasource.dynamic.datasource.master.name}?useSSL=false&allowPublicKeyRetrieval=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=CTT # MySQL Connector/J 5.X 连接的示例 username: besure_user1 password: zpW5:,LGHACh