diff --git a/common/tskv/src/main/java/com/thing/common/tskv/service/LatestNativeSQL.java b/common/tskv/src/main/java/com/thing/common/tskv/service/LatestNativeSQL.java index d10b64d..1c60198 100644 --- a/common/tskv/src/main/java/com/thing/common/tskv/service/LatestNativeSQL.java +++ b/common/tskv/src/main/java/com/thing/common/tskv/service/LatestNativeSQL.java @@ -53,9 +53,9 @@ public class LatestNativeSQL { } }); if (DatabaseType.MYSQL.equals(dataType) || DatabaseType.Tidb.equals(dataType)) { - sql.append(" ON DUPLICATE KEY UPDATE val = VALUES(val),ts = VALUES(ts)"); + sql.append(" ON DUPLICATE KEY UPDATE val = VALUES(val),ts = VALUES(ts),YEAR = VALUES(YEAR),MONTH = VALUES(MONTH),DAY = VALUES(DAY),HOUR = VALUES(HOUR),MINUTE = VALUES(MINUTE)"); } else if (DatabaseType.PG.equals(dataType) || DatabaseType.Timescale.equals(dataType)) { - sql.append(" ON CONFLICT (thing_code, attr_key) DO UPDATE SET val = EXCLUDED.val,ts= EXCLUDED.ts"); + sql.append(" ON CONFLICT (thing_code, attr_key) DO UPDATE SET val = EXCLUDED.val,ts= EXCLUDED.ts,YEAR = EXCLUDED.YEAR,MONTH = EXCLUDED.MONTH,DAY = EXCLUDED.DAY,HOUR = EXCLUDED.HOUR,MINUTE = EXCLUDED.MINUTE"); } sql.append(";"); return sql.toString(); diff --git a/common/tskv/src/main/java/com/thing/common/tskv/service/TsKvNativeSQL.java b/common/tskv/src/main/java/com/thing/common/tskv/service/TsKvNativeSQL.java index 7855988..b4ada46 100644 --- a/common/tskv/src/main/java/com/thing/common/tskv/service/TsKvNativeSQL.java +++ b/common/tskv/src/main/java/com/thing/common/tskv/service/TsKvNativeSQL.java @@ -111,9 +111,9 @@ public class TsKvNativeSQL { } }); if (DatabaseType.MYSQL.equals(dataType) || DatabaseType.Tidb.equals(dataType)) { - sql.append(" ON DUPLICATE KEY UPDATE val = VALUES(val)"); + sql.append(" ON DUPLICATE KEY UPDATE val = VALUES(val),YEAR = VALUES(YEAR),MONTH = VALUES(MONTH),DAY = VALUES(DAY),HOUR = VALUES(HOUR),MINUTE = VALUES(MINUTE)"); } else if (DatabaseType.PG.equals(dataType) || DatabaseType.Timescale.equals(dataType)) { - sql.append(" ON CONFLICT (thing_code, attr_key, ts) DO UPDATE SET val = EXCLUDED.val"); + sql.append(" ON CONFLICT (thing_code, attr_key, ts) DO UPDATE SET val = EXCLUDED.val,YEAR = EXCLUDED.YEAR,MONTH = EXCLUDED.MONTH,DAY = EXCLUDED.DAY,HOUR = EXCLUDED.HOUR,MINUTE = EXCLUDED.MINUTE"); } sql.append(";"); return sql.toString(); @@ -161,9 +161,9 @@ public class TsKvNativeSQL { } }); if (DatabaseType.MYSQL.equals(dataType) || DatabaseType.Tidb.equals(dataType)) { - sql.append(" ON DUPLICATE KEY UPDATE val = VALUES(val)"); + sql.append(" ON DUPLICATE KEY UPDATE val = VALUES(val),YEAR = VALUES(YEAR),MONTH = VALUES(MONTH),DAY = VALUES(DAY),HOUR = VALUES(HOUR),MINUTE = VALUES(MINUTE)"); } else if (DatabaseType.PG.equals(dataType) || DatabaseType.Timescale.equals(dataType)) { - sql.append(" ON CONFLICT (thing_code, attr_key, ts) DO UPDATE SET val = EXCLUDED.val"); + sql.append(" ON CONFLICT (thing_code, attr_key, ts) DO UPDATE SET val = EXCLUDED.val,YEAR = EXCLUDED.YEAR,MONTH = EXCLUDED.MONTH,DAY = EXCLUDED.DAY,HOUR = EXCLUDED.HOUR,MINUTE = EXCLUDED.MINUTE"); } sql.append(";"); return sql.toString(); diff --git a/modules/carbon-track/src/main/java/com/thing/carbontrack/dict/controller/IotCarbonUnitDictController.java b/modules/carbon-track/src/main/java/com/thing/carbontrack/dict/controller/IotCarbonUnitDictController.java new file mode 100644 index 0000000..84bb9be --- /dev/null +++ b/modules/carbon-track/src/main/java/com/thing/carbontrack/dict/controller/IotCarbonUnitDictController.java @@ -0,0 +1,58 @@ +package com.thing.carbontrack.dict.controller; + +import com.thing.carbontrack.dict.dto.IotCarbonUnitDto; +import com.thing.carbontrack.dict.service.IotCarbonUnitDictService; +import com.thing.common.core.web.response.Result; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +/** +* 计量单位字典 +* +* @author xc +* @since 3.0 2024-09-23 +*/ +@RestController +@RequestMapping("v2/carbonDict") +@Tag(name="计量单位字典") +@RequiredArgsConstructor +public class IotCarbonUnitDictController { + + private final IotCarbonUnitDictService iotCarbonUnitDictService; + + + + @GetMapping("list") + @Operation(summary="一级结构列表") + public Result> getList(){ + List info = iotCarbonUnitDictService.getList(); + return new Result< List>().ok(info); + } + + + @GetMapping("listByPName") + @Operation(summary="二级结构列表") + public Result> listByPName(@RequestParam String pName){ + List info = iotCarbonUnitDictService.listByPName(pName); + return new Result< List>().ok(info); + } + + + + @GetMapping("listInfo") + @Operation(summary="树结构列表") + public Result> listInfo(){ + List info = iotCarbonUnitDictService.listInfo(); + return new Result< List>().ok(info); + } + + + +} \ No newline at end of file diff --git a/modules/carbon-track/src/main/java/com/thing/carbontrack/dict/dto/IotCarbonUnitDictDTO.java b/modules/carbon-track/src/main/java/com/thing/carbontrack/dict/dto/IotCarbonUnitDictDTO.java new file mode 100644 index 0000000..34eb6c0 --- /dev/null +++ b/modules/carbon-track/src/main/java/com/thing/carbontrack/dict/dto/IotCarbonUnitDictDTO.java @@ -0,0 +1,27 @@ +package com.thing.carbontrack.dict.dto; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; + +/** +* 计量单位字典 +* +* @author xc +* @since 3.0 2024-09-23 +*/ +@Data +@Schema(description = "计量单位字典") +public class IotCarbonUnitDictDTO implements Serializable { + @Serial + private static final long serialVersionUID = 1L; + + private Long id; + private String pName; + private String pCode; + private String cName; + private String cCode; + +} \ No newline at end of file diff --git a/modules/carbon-track/src/main/java/com/thing/carbontrack/dict/dto/IotCarbonUnitDto.java b/modules/carbon-track/src/main/java/com/thing/carbontrack/dict/dto/IotCarbonUnitDto.java new file mode 100644 index 0000000..7d99d9a --- /dev/null +++ b/modules/carbon-track/src/main/java/com/thing/carbontrack/dict/dto/IotCarbonUnitDto.java @@ -0,0 +1,14 @@ +package com.thing.carbontrack.dict.dto; + + +import lombok.Data; + +import java.util.List; + +@Data +public class IotCarbonUnitDto { + + private String pNAME; + + private List cList; +} diff --git a/modules/carbon-track/src/main/java/com/thing/carbontrack/dict/entity/IotCarbonUnitDictEntity.java b/modules/carbon-track/src/main/java/com/thing/carbontrack/dict/entity/IotCarbonUnitDictEntity.java new file mode 100644 index 0000000..8c8577f --- /dev/null +++ b/modules/carbon-track/src/main/java/com/thing/carbontrack/dict/entity/IotCarbonUnitDictEntity.java @@ -0,0 +1,32 @@ +package com.thing.carbontrack.dict.entity; + +import com.mybatisflex.annotation.Id; +import com.mybatisflex.annotation.Table; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serial; +import java.io.Serializable; + +/** + * 计量单位字典 + * + * @author xc + * @since 3.0 2024-09-23 + */ +@Data +@Accessors(chain = true) +@EqualsAndHashCode(callSuper=false) +@Table("iot_carbon_unit_dict") +public class IotCarbonUnitDictEntity implements Serializable { + @Serial + private static final long serialVersionUID = 1L; + + @Id + private Long id; + private String pName; + private String pCode; + private String cName; + private String cCode; +} \ No newline at end of file diff --git a/modules/carbon-track/src/main/java/com/thing/carbontrack/dict/mapper/IotCarbonUnitDictMapper.java b/modules/carbon-track/src/main/java/com/thing/carbontrack/dict/mapper/IotCarbonUnitDictMapper.java new file mode 100644 index 0000000..7d727ce --- /dev/null +++ b/modules/carbon-track/src/main/java/com/thing/carbontrack/dict/mapper/IotCarbonUnitDictMapper.java @@ -0,0 +1,16 @@ +package com.thing.carbontrack.dict.mapper; + +import com.thing.carbontrack.dict.entity.IotCarbonUnitDictEntity; +import com.thing.common.orm.mapper.PowerBaseMapper; +import org.apache.ibatis.annotations.Mapper; + +/** +* 计量单位字典 +* +* @author xc +* @since 3.0 2024-09-23 +*/ +@Mapper +public interface IotCarbonUnitDictMapper extends PowerBaseMapper { + +} \ No newline at end of file diff --git a/modules/carbon-track/src/main/java/com/thing/carbontrack/dict/service/IotCarbonUnitDictService.java b/modules/carbon-track/src/main/java/com/thing/carbontrack/dict/service/IotCarbonUnitDictService.java new file mode 100644 index 0000000..548aea4 --- /dev/null +++ b/modules/carbon-track/src/main/java/com/thing/carbontrack/dict/service/IotCarbonUnitDictService.java @@ -0,0 +1,22 @@ +package com.thing.carbontrack.dict.service; + +import com.thing.carbontrack.dict.dto.IotCarbonUnitDto; +import com.thing.carbontrack.dict.entity.IotCarbonUnitDictEntity; +import com.thing.common.orm.service.IBaseService; + +import java.util.List; + +/** + * 计量单位字典 + * + * @author xc + * @since 3.0 2024-09-23 + */ +public interface IotCarbonUnitDictService extends IBaseService { + + List getList(); + + List listByPName(String pName); + + List listInfo(); +} \ No newline at end of file diff --git a/modules/carbon-track/src/main/java/com/thing/carbontrack/dict/service/impl/IotCarbonUnitDictServiceImpl.java b/modules/carbon-track/src/main/java/com/thing/carbontrack/dict/service/impl/IotCarbonUnitDictServiceImpl.java new file mode 100644 index 0000000..a77a521 --- /dev/null +++ b/modules/carbon-track/src/main/java/com/thing/carbontrack/dict/service/impl/IotCarbonUnitDictServiceImpl.java @@ -0,0 +1,65 @@ +package com.thing.carbontrack.dict.service.impl; + +import com.mybatisflex.core.query.QueryColumn; +import com.mybatisflex.core.query.QueryWrapper; +import com.thing.carbontrack.dict.dto.IotCarbonUnitDto; +import com.thing.carbontrack.dict.entity.IotCarbonUnitDictEntity; +import com.thing.carbontrack.dict.mapper.IotCarbonUnitDictMapper; +import com.thing.carbontrack.dict.service.IotCarbonUnitDictService; +import com.thing.common.orm.service.impl.BaseServiceImpl; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +import static com.mybatisflex.core.query.QueryMethods.distinct; + +/** + * 计量单位字典 + * + * @author xc + * @since 3.0 2024-09-23 + */ +@Service +public class IotCarbonUnitDictServiceImpl extends BaseServiceImpl implements IotCarbonUnitDictService { + + @Override + public QueryWrapper getWrapper(Map params){ + QueryWrapper wrapper = new QueryWrapper(); + return wrapper; + } + + + @Override + public List getList() { + QueryColumn pName = new QueryColumn("p_name"); + QueryWrapper wrapper = new QueryWrapper(); + wrapper.select(distinct(pName)) + .from("iot_carbon_unit_dict"); + return this.listAs(wrapper,String.class); + } + + @Override + public List listByPName(String pName) { + QueryColumn cName = new QueryColumn("c_name"); + QueryWrapper wrapper = new QueryWrapper(); + wrapper.select(distinct(cName)) + .from("iot_carbon_unit_dict"); + wrapper.eq("p_name",pName); + return this.listAs(wrapper,String.class); + } + + @Override + public List listInfo() { + List resultList = new ArrayList<>(); + List pNames = this.getList(); + pNames.forEach(temp->{ + IotCarbonUnitDto dto = new IotCarbonUnitDto(); + dto.setPNAME(temp); + dto.setCList(this.listByPName(temp)); + resultList.add(dto); + }); + return resultList; + } +} \ No newline at end of file diff --git a/modules/thing/src/main/java/com/thing/device/source/service/IotThingSourceService.java b/modules/thing/src/main/java/com/thing/device/source/service/IotThingSourceService.java index fcd88bc..be79a95 100644 --- a/modules/thing/src/main/java/com/thing/device/source/service/IotThingSourceService.java +++ b/modules/thing/src/main/java/com/thing/device/source/service/IotThingSourceService.java @@ -49,5 +49,7 @@ public interface IotThingSourceService extends IBaseService attrGroup(); + Long getMaxSort(String configType,Long fromId,Long rootId); + List attrGroupRootId(IotThingSourceReqDTO iotThingSourceDTO); } diff --git a/modules/thing/src/main/java/com/thing/device/source/service/impl/IotThingSourceServiceImpl.java b/modules/thing/src/main/java/com/thing/device/source/service/impl/IotThingSourceServiceImpl.java index 88723b4..f26cb84 100644 --- a/modules/thing/src/main/java/com/thing/device/source/service/impl/IotThingSourceServiceImpl.java +++ b/modules/thing/src/main/java/com/thing/device/source/service/impl/IotThingSourceServiceImpl.java @@ -566,6 +566,21 @@ public class IotThingSourceServiceImpl extends BaseServiceImpl !StringUtils.isBlank(s)).distinct().collect(Collectors.toList()); } + @Override + public Long getMaxSort(String configType, Long fromId,Long rootId) { + List iotThingSourceEntities = mapper.selectListByQuery( + new QueryWrapper() + .eq(IotThingSourceEntity::getFromId, fromId) + .eq(IotThingSourceEntity::getConfigType, configType) + .eq(IotThingSourceEntity::getRootId, rootId) + .eq(IotThingSourceEntity::getTenantCode, UserContext.getRealTenantCode()) + ); + if(CollectionUtils.isEmpty(iotThingSourceEntities)){ + return 0L; + } + return iotThingSourceEntities.stream().max(Comparator.comparing(IotThingSourceEntity::getSort)).get().getSort()+1; + } + @Override public List attrGroupRootId(IotThingSourceReqDTO iotThingSourceDTO) { List iotThingSourceRelationDTOList = iotThingSourceDTO.getIotThingSourceRelationDTOList();