mirror of
https://codeup.aliyun.com/64f7d6b8ce01efaafef1e678/coal/coal.git
synced 2026-01-25 07:46:40 +08:00
添加水电表相关接口
This commit is contained in:
@@ -0,0 +1,54 @@
|
||||
package cn.lihongjie.coal.meter.controller;
|
||||
|
||||
import cn.lihongjie.coal.annotation.OrgScope;
|
||||
import cn.lihongjie.coal.annotation.SysLog;
|
||||
import cn.lihongjie.coal.base.dto.CommonQuery;
|
||||
import cn.lihongjie.coal.base.dto.IdRequest;
|
||||
import cn.lihongjie.coal.meter.dto.CreateMeterDto;
|
||||
import cn.lihongjie.coal.meter.dto.MeterDto;
|
||||
import cn.lihongjie.coal.meter.dto.UpdateMeterDto;
|
||||
import cn.lihongjie.coal.meter.service.MeterService;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.domain.Page;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/meter")
|
||||
@SysLog(module = "水电表管理")
|
||||
@Slf4j
|
||||
@OrgScope
|
||||
public class MeterController {
|
||||
@Autowired private MeterService service;
|
||||
|
||||
@PostMapping("/create")
|
||||
public MeterDto create(@RequestBody CreateMeterDto request) {
|
||||
return this.service.create(request);
|
||||
}
|
||||
|
||||
@PostMapping("/update")
|
||||
public MeterDto update(@RequestBody UpdateMeterDto request) {
|
||||
return this.service.update(request);
|
||||
}
|
||||
|
||||
@PostMapping("/delete")
|
||||
public Object delete(@RequestBody IdRequest request) {
|
||||
this.service.delete(request);
|
||||
return true;
|
||||
}
|
||||
|
||||
@PostMapping("/getById")
|
||||
public MeterDto getById(@RequestBody IdRequest request) {
|
||||
return this.service.getById(request.getId());
|
||||
}
|
||||
|
||||
@PostMapping("/list")
|
||||
public Page<MeterDto> list(@RequestBody CommonQuery request) {
|
||||
return this.service.list(request);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package cn.lihongjie.coal.meter.dto;
|
||||
|
||||
import cn.lihongjie.coal.base.dto.OrgCommonDto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import org.hibernate.annotations.Comment;
|
||||
|
||||
@Data
|
||||
public class CreateMeterDto extends OrgCommonDto {
|
||||
@Comment("类型")
|
||||
private String type;
|
||||
|
||||
@Comment("安装位置")
|
||||
private String location;
|
||||
}
|
||||
18
src/main/java/cn/lihongjie/coal/meter/dto/MeterDto.java
Normal file
18
src/main/java/cn/lihongjie/coal/meter/dto/MeterDto.java
Normal file
@@ -0,0 +1,18 @@
|
||||
package cn.lihongjie.coal.meter.dto;
|
||||
|
||||
import cn.lihongjie.coal.base.dto.OrgCommonDto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import org.hibernate.annotations.Comment;
|
||||
|
||||
@Data
|
||||
public class MeterDto extends OrgCommonDto {
|
||||
@Comment("类型")
|
||||
private String type;
|
||||
|
||||
private String typeName;
|
||||
|
||||
@Comment("安装位置")
|
||||
private String location;
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package cn.lihongjie.coal.meter.dto;
|
||||
|
||||
import cn.lihongjie.coal.base.dto.OrgCommonDto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import org.hibernate.annotations.Comment;
|
||||
|
||||
@Data
|
||||
public class UpdateMeterDto extends OrgCommonDto {
|
||||
@Comment("类型")
|
||||
private String type;
|
||||
|
||||
@Comment("安装位置")
|
||||
private String location;
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
package cn.lihongjie.coal.meter.entity;
|
||||
|
||||
import cn.lihongjie.coal.base.entity.OrgCommonEntity;
|
||||
|
||||
import jakarta.persistence.Entity;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import org.hibernate.annotations.Comment;
|
||||
import org.hibernate.annotations.Formula;
|
||||
|
||||
@Data
|
||||
@Entity
|
||||
public class MeterEntity extends OrgCommonEntity {
|
||||
@Comment("类型")
|
||||
private String type;
|
||||
|
||||
@Formula(
|
||||
"(select i.name\n"
|
||||
+ "from t_dictionary d,\n"
|
||||
+ " t_dictionary_item i\n"
|
||||
+ "where d.id = i.dictionary_id\n"
|
||||
+ " and d.code = 'meter.type'\n"
|
||||
+ " and i.code = type)")
|
||||
private String typeName;
|
||||
|
||||
@Comment("安装位置")
|
||||
private String location;
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
package cn.lihongjie.coal.meter.mapper;
|
||||
|
||||
import cn.lihongjie.coal.base.mapper.BaseMapper;
|
||||
import cn.lihongjie.coal.base.mapper.CommonMapper;
|
||||
import cn.lihongjie.coal.meter.dto.CreateMeterDto;
|
||||
import cn.lihongjie.coal.meter.dto.MeterDto;
|
||||
import cn.lihongjie.coal.meter.dto.UpdateMeterDto;
|
||||
import cn.lihongjie.coal.meter.entity.MeterEntity;
|
||||
|
||||
import org.mapstruct.Mapper;
|
||||
import org.mapstruct.control.DeepClone;
|
||||
|
||||
@Mapper(
|
||||
componentModel = org.mapstruct.MappingConstants.ComponentModel.SPRING,
|
||||
uses = {CommonMapper.class},
|
||||
mappingControl = DeepClone.class)
|
||||
public interface MeterMapper
|
||||
extends BaseMapper<MeterEntity, MeterDto, CreateMeterDto, UpdateMeterDto> {}
|
||||
@@ -0,0 +1,9 @@
|
||||
package cn.lihongjie.coal.meter.repository;
|
||||
|
||||
import cn.lihongjie.coal.base.dao.BaseRepository;
|
||||
import cn.lihongjie.coal.meter.entity.MeterEntity;
|
||||
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
@Repository
|
||||
public interface MeterRepository extends BaseRepository<MeterEntity> {}
|
||||
@@ -0,0 +1,68 @@
|
||||
package cn.lihongjie.coal.meter.service;
|
||||
|
||||
import cn.lihongjie.coal.base.dto.CommonQuery;
|
||||
import cn.lihongjie.coal.base.dto.IdRequest;
|
||||
import cn.lihongjie.coal.base.service.BaseService;
|
||||
import cn.lihongjie.coal.meter.dto.CreateMeterDto;
|
||||
import cn.lihongjie.coal.meter.dto.MeterDto;
|
||||
import cn.lihongjie.coal.meter.dto.UpdateMeterDto;
|
||||
import cn.lihongjie.coal.meter.entity.MeterEntity;
|
||||
import cn.lihongjie.coal.meter.mapper.MeterMapper;
|
||||
import cn.lihongjie.coal.meter.repository.MeterRepository;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.core.convert.ConversionService;
|
||||
import org.springframework.data.domain.Page;
|
||||
import org.springframework.data.domain.PageRequest;
|
||||
import org.springframework.data.domain.Sort;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@Service
|
||||
@Slf4j
|
||||
public class MeterService extends BaseService<MeterEntity, MeterRepository> {
|
||||
@Autowired private MeterRepository repository;
|
||||
|
||||
@Autowired private MeterMapper mapper;
|
||||
|
||||
@Autowired private ConversionService conversionService;
|
||||
|
||||
public MeterDto create(CreateMeterDto request) {
|
||||
MeterEntity entity = mapper.toEntity(request);
|
||||
|
||||
this.repository.save(entity);
|
||||
return getById(entity.getId());
|
||||
}
|
||||
|
||||
public MeterDto update(UpdateMeterDto request) {
|
||||
MeterEntity entity = this.repository.get(request.getId());
|
||||
this.mapper.updateEntity(entity, request);
|
||||
|
||||
this.repository.save(entity);
|
||||
|
||||
return getById(entity.getId());
|
||||
}
|
||||
|
||||
public void delete(IdRequest request) {
|
||||
this.repository.deleteAllById(request.getIds());
|
||||
}
|
||||
|
||||
public MeterDto getById(String id) {
|
||||
MeterEntity entity = repository.get(id);
|
||||
|
||||
return mapper.toDto(entity);
|
||||
}
|
||||
|
||||
public Page<MeterDto> list(CommonQuery query) {
|
||||
Page<MeterEntity> page =
|
||||
repository.findAll(
|
||||
query.specification(conversionService),
|
||||
PageRequest.of(
|
||||
query.getPageNo(),
|
||||
query.getPageSize(),
|
||||
Sort.by(query.getOrders())));
|
||||
|
||||
return page.map(this.mapper::toDto);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,54 @@
|
||||
package cn.lihongjie.coal.meterLog.controller;
|
||||
|
||||
import cn.lihongjie.coal.annotation.OrgScope;
|
||||
import cn.lihongjie.coal.annotation.SysLog;
|
||||
import cn.lihongjie.coal.base.dto.CommonQuery;
|
||||
import cn.lihongjie.coal.base.dto.IdRequest;
|
||||
import cn.lihongjie.coal.meterLog.dto.CreateMeterLogDto;
|
||||
import cn.lihongjie.coal.meterLog.dto.MeterLogDto;
|
||||
import cn.lihongjie.coal.meterLog.dto.UpdateMeterLogDto;
|
||||
import cn.lihongjie.coal.meterLog.service.MeterLogService;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.domain.Page;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/meterLog")
|
||||
@SysLog(module = "抄表记录")
|
||||
@Slf4j
|
||||
@OrgScope
|
||||
public class MeterLogController {
|
||||
@Autowired private MeterLogService service;
|
||||
|
||||
@PostMapping("/create")
|
||||
public MeterLogDto create(@RequestBody CreateMeterLogDto request) {
|
||||
return this.service.create(request);
|
||||
}
|
||||
|
||||
@PostMapping("/update")
|
||||
public MeterLogDto update(@RequestBody UpdateMeterLogDto request) {
|
||||
return this.service.update(request);
|
||||
}
|
||||
|
||||
@PostMapping("/delete")
|
||||
public Object delete(@RequestBody IdRequest request) {
|
||||
this.service.delete(request);
|
||||
return true;
|
||||
}
|
||||
|
||||
@PostMapping("/getById")
|
||||
public MeterLogDto getById(@RequestBody IdRequest request) {
|
||||
return this.service.getById(request.getId());
|
||||
}
|
||||
|
||||
@PostMapping("/list")
|
||||
public Page<MeterLogDto> list(@RequestBody CommonQuery request) {
|
||||
return this.service.list(request);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
package cn.lihongjie.coal.meterLog.dto;
|
||||
|
||||
import cn.lihongjie.coal.base.dto.OrgCommonDto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import org.hibernate.annotations.Comment;
|
||||
|
||||
@Data
|
||||
public class CreateMeterLogDto extends OrgCommonDto {
|
||||
private String meter;
|
||||
|
||||
@Comment("抄表时间")
|
||||
private java.time.LocalDateTime time;
|
||||
|
||||
@Comment("抄表值")
|
||||
private java.lang.Double value;
|
||||
|
||||
@Comment("上次抄表值")
|
||||
private java.lang.Double previousValue;
|
||||
|
||||
@Comment("使用量")
|
||||
private java.lang.Double usage;
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
package cn.lihongjie.coal.meterLog.dto;
|
||||
|
||||
import cn.lihongjie.coal.base.dto.OrgCommonDto;
|
||||
import cn.lihongjie.coal.meter.dto.MeterDto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import org.hibernate.annotations.Comment;
|
||||
|
||||
@Data
|
||||
public class MeterLogDto extends OrgCommonDto {
|
||||
private MeterDto meter;
|
||||
|
||||
@Comment("抄表时间")
|
||||
private java.time.LocalDateTime time;
|
||||
|
||||
@Comment("抄表值")
|
||||
private java.lang.Double value;
|
||||
|
||||
@Comment("上次抄表值")
|
||||
private java.lang.Double previousValue;
|
||||
|
||||
@Comment("使用量")
|
||||
private java.lang.Double usage;
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
package cn.lihongjie.coal.meterLog.dto;
|
||||
|
||||
import cn.lihongjie.coal.base.dto.OrgCommonDto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import org.hibernate.annotations.Comment;
|
||||
|
||||
@Data
|
||||
public class UpdateMeterLogDto extends OrgCommonDto {
|
||||
private String meter;
|
||||
|
||||
@Comment("抄表时间")
|
||||
private java.time.LocalDateTime time;
|
||||
|
||||
@Comment("抄表值")
|
||||
private java.lang.Double value;
|
||||
|
||||
@Comment("上次抄表值")
|
||||
private java.lang.Double previousValue;
|
||||
|
||||
@Comment("使用量")
|
||||
private java.lang.Double usage;
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
package cn.lihongjie.coal.meterLog.entity;
|
||||
|
||||
import cn.lihongjie.coal.base.entity.OrgCommonEntity;
|
||||
|
||||
import jakarta.persistence.Entity;
|
||||
import jakarta.persistence.ManyToOne;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import org.hibernate.annotations.Comment;
|
||||
|
||||
@Data
|
||||
@Entity
|
||||
public class MeterLogEntity extends OrgCommonEntity {
|
||||
|
||||
@ManyToOne private cn.lihongjie.coal.meter.entity.MeterEntity meter;
|
||||
|
||||
@Comment("抄表时间")
|
||||
private java.time.LocalDateTime time;
|
||||
|
||||
@Comment("抄表值")
|
||||
private java.lang.Double value;
|
||||
|
||||
@Comment("上次抄表值")
|
||||
private java.lang.Double previousValue;
|
||||
|
||||
@Comment("使用量")
|
||||
private java.lang.Double usage;
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
package cn.lihongjie.coal.meterLog.mapper;
|
||||
|
||||
import cn.lihongjie.coal.base.mapper.BaseMapper;
|
||||
import cn.lihongjie.coal.base.mapper.CommonMapper;
|
||||
import cn.lihongjie.coal.meterLog.dto.CreateMeterLogDto;
|
||||
import cn.lihongjie.coal.meterLog.dto.MeterLogDto;
|
||||
import cn.lihongjie.coal.meterLog.dto.UpdateMeterLogDto;
|
||||
import cn.lihongjie.coal.meterLog.entity.MeterLogEntity;
|
||||
|
||||
import org.mapstruct.Mapper;
|
||||
import org.mapstruct.control.DeepClone;
|
||||
|
||||
@Mapper(
|
||||
componentModel = org.mapstruct.MappingConstants.ComponentModel.SPRING,
|
||||
uses = {CommonMapper.class},
|
||||
mappingControl = DeepClone.class)
|
||||
public interface MeterLogMapper
|
||||
extends BaseMapper<MeterLogEntity, MeterLogDto, CreateMeterLogDto, UpdateMeterLogDto> {}
|
||||
@@ -0,0 +1,9 @@
|
||||
package cn.lihongjie.coal.meterLog.repository;
|
||||
|
||||
import cn.lihongjie.coal.base.dao.BaseRepository;
|
||||
import cn.lihongjie.coal.meterLog.entity.MeterLogEntity;
|
||||
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
@Repository
|
||||
public interface MeterLogRepository extends BaseRepository<MeterLogEntity> {}
|
||||
@@ -0,0 +1,120 @@
|
||||
package cn.lihongjie.coal.meterLog.service;
|
||||
|
||||
import cn.lihongjie.coal.base.dto.CommonQuery;
|
||||
import cn.lihongjie.coal.base.dto.IdRequest;
|
||||
import cn.lihongjie.coal.base.service.BaseService;
|
||||
import cn.lihongjie.coal.meterLog.dto.CreateMeterLogDto;
|
||||
import cn.lihongjie.coal.meterLog.dto.MeterLogDto;
|
||||
import cn.lihongjie.coal.meterLog.dto.UpdateMeterLogDto;
|
||||
import cn.lihongjie.coal.meterLog.entity.MeterLogEntity;
|
||||
import cn.lihongjie.coal.meterLog.mapper.MeterLogMapper;
|
||||
import cn.lihongjie.coal.meterLog.repository.MeterLogRepository;
|
||||
|
||||
import jakarta.persistence.EntityManager;
|
||||
import jakarta.persistence.PersistenceContext;
|
||||
import jakarta.persistence.Query;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.core.convert.ConversionService;
|
||||
import org.springframework.data.domain.Page;
|
||||
import org.springframework.data.domain.PageRequest;
|
||||
import org.springframework.data.domain.Sort;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.util.StopWatch;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Service
|
||||
@Slf4j
|
||||
public class MeterLogService extends BaseService<MeterLogEntity, MeterLogRepository> {
|
||||
@Autowired private MeterLogRepository repository;
|
||||
|
||||
@Autowired private MeterLogMapper mapper;
|
||||
|
||||
@Autowired private ConversionService conversionService;
|
||||
@PersistenceContext private EntityManager entityManager;
|
||||
|
||||
public MeterLogDto create(CreateMeterLogDto request) {
|
||||
MeterLogEntity entity = mapper.toEntity(request);
|
||||
|
||||
this.repository.save(entity);
|
||||
syncMeterLog(entity.getMeter().getId());
|
||||
return getById(entity.getId());
|
||||
}
|
||||
|
||||
public MeterLogDto update(UpdateMeterLogDto request) {
|
||||
MeterLogEntity entity = this.repository.get(request.getId());
|
||||
this.mapper.updateEntity(entity, request);
|
||||
|
||||
this.repository.save(entity);
|
||||
syncMeterLog(entity.getMeter().getId());
|
||||
return getById(entity.getId());
|
||||
}
|
||||
|
||||
public void delete(IdRequest request) {
|
||||
List<MeterLogEntity> all = this.repository.findAllById(request.getIds());
|
||||
this.repository.deleteAllById(request.getIds());
|
||||
|
||||
for (MeterLogEntity entity : all) {
|
||||
|
||||
syncMeterLog(entity.getMeter().getId());
|
||||
}
|
||||
}
|
||||
|
||||
public MeterLogDto getById(String id) {
|
||||
MeterLogEntity entity = repository.get(id);
|
||||
|
||||
return mapper.toDto(entity);
|
||||
}
|
||||
|
||||
public Page<MeterLogDto> list(CommonQuery query) {
|
||||
Page<MeterLogEntity> page =
|
||||
repository.findAll(
|
||||
query.specification(conversionService),
|
||||
PageRequest.of(
|
||||
query.getPageNo(),
|
||||
query.getPageSize(),
|
||||
Sort.by(query.getOrders())));
|
||||
|
||||
return page.map(this.mapper::toDto);
|
||||
}
|
||||
|
||||
public void syncMeterLog(String meterId) {
|
||||
|
||||
Query nativeQuery =
|
||||
entityManager.createNativeQuery(
|
||||
"""
|
||||
|
||||
|
||||
update t_meter_log ta
|
||||
|
||||
|
||||
set previous_value = tb.previous_value,
|
||||
usage = ta.value - tb.previous_value
|
||||
|
||||
from (
|
||||
|
||||
select id, time, value, COALESCE(lag(value) over (order by time), value ) as previous_value from t_meter_log where meter_id = :meterId
|
||||
) tb
|
||||
|
||||
where tb.id = ta.id
|
||||
|
||||
|
||||
""");
|
||||
|
||||
nativeQuery.setParameter("meterId", meterId);
|
||||
|
||||
StopWatch stopWatch = new StopWatch();
|
||||
stopWatch.start();
|
||||
int count = nativeQuery.executeUpdate();
|
||||
|
||||
stopWatch.stop();
|
||||
log.info(
|
||||
"syncMeterLog {} 更新了 {} 条数据, 耗时 {} ms",
|
||||
meterId,
|
||||
count,
|
||||
stopWatch.getLastTaskInfo().getTimeMillis());
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,22 @@
|
||||
[
|
||||
{
|
||||
"code": "meter.type",
|
||||
"name": "表类型",
|
||||
"item": [
|
||||
{
|
||||
"code": "0",
|
||||
"name": "水表"
|
||||
},
|
||||
{
|
||||
"code": "1",
|
||||
"name": "电表"
|
||||
},
|
||||
{
|
||||
"code": "2",
|
||||
"name": "燃气表"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"code": "permission.type",
|
||||
"name": "权限类型",
|
||||
|
||||
Reference in New Issue
Block a user