Browse Source

新增设备模块

新增素材模块
master
xia 3 years ago
parent
commit
7c6c59e3b2
  1. 16
      system/src/main/java/com/canvas/web/modules/device/criteria/DeviceQueryCriteria.java
  2. 21
      system/src/main/java/com/canvas/web/modules/device/criteria/DeviceSettingCriteria.java
  3. 13
      system/src/main/java/com/canvas/web/modules/device/domain/Device.java
  4. 15
      system/src/main/java/com/canvas/web/modules/device/dto/DeviceDTO.java
  5. 15
      system/src/main/java/com/canvas/web/modules/device/repository/DeviceRepository.java
  6. 64
      system/src/main/java/com/canvas/web/modules/device/rest/DeviceController.java
  7. 23
      system/src/main/java/com/canvas/web/modules/device/service/DeviceService.java
  8. 93
      system/src/main/java/com/canvas/web/modules/device/service/impl/DeviceServiceImpl.java
  9. 36
      system/src/main/java/com/canvas/web/modules/device/vo/DeviceVO.java
  10. 60
      system/src/main/java/com/canvas/web/modules/material/domain/Material.java
  11. 15
      system/src/main/java/com/canvas/web/modules/material/repository/MaterialRepository.java
  12. 19
      system/src/main/java/com/canvas/web/modules/utils/MapUtil.java
  13. 81
      system/src/main/java/com/canvas/web/modules/utils/PageSort.java

16
system/src/main/java/com/canvas/web/modules/device/criteria/DeviceQueryCriteria.java

@ -0,0 +1,16 @@
package com.canvas.web.modules.device.criteria;
import com.canvas.web.annotation.Query;
import lombok.Data;
@Data
public class DeviceQueryCriteria {
@Query
private String deviceId;
@Query
private String deviceName;
@Query
private Integer isState;
}

21
system/src/main/java/com/canvas/web/modules/device/criteria/DeviceSettingCriteria.java

@ -0,0 +1,21 @@
package com.canvas.web.modules.device.criteria;
import com.canvas.web.annotation.Query;
import lombok.Data;
import java.sql.Timestamp;
@Data
public class DeviceSettingCriteria {
@Query
private String deviceId;
public Integer openSetting;
public String openWeekly;
public String openTime;
public Integer closeSetting;
public String closeWeekly;
public String closeTime;
public String startupScreen;
}

13
system/src/main/java/com/canvas/web/modules/device/domain/Device.java

@ -1,5 +1,6 @@
package com.canvas.web.modules.device.domain;
import com.canvas.web.base.BaseEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
@ -15,7 +16,7 @@ import java.sql.Timestamp;
@Setter
@Entity
@Table(name = "device")
public class Device implements Serializable {
public class Device extends BaseEntity implements Serializable {
@Id
@Column(name = "id")
@ -67,16 +68,6 @@ public class Device implements Serializable {
@ApiModelProperty(value = "启动画面地址")
public String startupScreen;
@CreationTimestamp
@Column(name = "is_createdate", updatable = false)
@ApiModelProperty(value = "创建时间", hidden = true)
private Timestamp isCreateTime;
@UpdateTimestamp
@Column(name = "is_updatedate")
@ApiModelProperty(value = "更新时间", hidden = true)
private Timestamp isUpdateTime;
@Column(name = "is_state")
@ApiModelProperty(value = "停用/禁用", hidden = true)
public Integer isState;

15
system/src/main/java/com/canvas/web/modules/device/dto/DeviceDTO.java

@ -0,0 +1,15 @@
package com.canvas.web.modules.device.dto;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
@Getter
@Setter
public class DeviceDTO implements Serializable {
public String deviceId;
public String account;
public String deviceName;
public Integer deviceDirection;
}

15
system/src/main/java/com/canvas/web/modules/device/repository/DeviceRepository.java

@ -1,8 +1,23 @@
package com.canvas.web.modules.device.repository;
import com.canvas.web.modules.device.domain.Device;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import java.util.Map;
public interface DeviceRepository extends JpaRepository<Device, String> {
@Query(nativeQuery = true,
value="select d.id as deviceId,d.account deviceAccount,d.device_name as deviceName,d.device_direction as deviceDirection," +
"o.name as organName,d.open_setting as openSetting,d.open_weekly as openWeekly,d.open_time as openTime," +
"d.close_setting as closeSetting,d.close_weekly as closeWeekly,d.close_time as closeTime," +
"d.startup_screen as startupScreen,d.is_state as deviceState,d.is_createdate as createTime " +
"from device d left join organization o on d.orga_id = o.id " +
"where if(?1 is null,1=1,d.id like %?1%) and if(?2 is null,1=1,d.device_name like %?2%) " +
"and if(?3 is null,1=1,d.is_state = ?3)")
Page<Map<String,Object>> getDeviceList(String deviceId, String deviceName, Integer state, Pageable page);
}

64
system/src/main/java/com/canvas/web/modules/device/rest/DeviceController.java

@ -1,15 +1,20 @@
package com.canvas.web.modules.device.rest;
import com.canvas.web.modules.device.criteria.DeviceQueryCriteria;
import com.canvas.web.modules.device.criteria.DeviceSettingCriteria;
import com.canvas.web.modules.device.domain.Device;
import com.canvas.web.modules.device.dto.DeviceDTO;
import com.canvas.web.modules.device.service.DeviceService;
import com.canvas.web.modules.device.vo.DeviceVO;
import com.canvas.web.modules.utils.Response;
import com.canvas.web.modules.utils.ResultUtils;
import com.canvas.web.modules.utils.enums.ResponseEnum;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import org.springframework.data.domain.Pageable;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@ -18,11 +23,58 @@ import java.util.List;
@Api(tags = "设备管理")
@RequestMapping("/api/device")
public class DeviceController {
DeviceService deviceService;
@ApiOperation("设备列表")
@GetMapping("/list")
public Response<ResultUtils<List<Device>>> list(
Pageable page
public Response<ResultUtils<List<DeviceVO>>> list(
DeviceQueryCriteria criteria, Pageable page
){
return Response.success(deviceService.getDeviceList(criteria.getDeviceId(),criteria.getDeviceName(),criteria.getIsState(),page));
}
@ApiOperation("编辑设备")
@PostMapping("/save")
public Response<Object> save(
@Validated @RequestBody DeviceDTO dto
){
boolean isok = deviceService.edit(dto);
return Response.success(dto.getDeviceId()== null ? ResponseEnum.CREATED : ResponseEnum.UPDATE_SUCCESS);
}
@ApiOperation("根据id查询设备")
@GetMapping("/findById")
public Response<Device> findById(
String deviceId
){
return Response.success(deviceService.findById(deviceId));
}
@ApiOperation("设备开关机列表")
@GetMapping("/switchlist")
public Response<ResultUtils<List<DeviceVO>>> switchlist(
DeviceQueryCriteria criteria, Pageable page
){
return Response.success(deviceService.getDeviceList(criteria.getDeviceId(),criteria.getDeviceName(),criteria.getIsState(),page));
}
@ApiOperation("开关机配置")
@PostMapping("/switchSetting")
public Response<Object> switchSetting(
DeviceSettingCriteria criteria
){
return null;
deviceService.setting(criteria);
return Response.success(ResponseEnum.UPDATE_SUCCESS);
}
@ApiOperation("更新设备状态")
@PostMapping("/updateState")
public Response<Object> updateState(
String deviceId,Integer state
){
deviceService.updateState(deviceId,state);
return Response.success(ResponseEnum.UPDATE_SUCCESS);
}
}

23
system/src/main/java/com/canvas/web/modules/device/service/DeviceService.java

@ -0,0 +1,23 @@
package com.canvas.web.modules.device.service;
import com.canvas.web.modules.device.criteria.DeviceSettingCriteria;
import com.canvas.web.modules.device.domain.Device;
import com.canvas.web.modules.device.dto.DeviceDTO;
import com.canvas.web.modules.device.vo.DeviceVO;
import com.canvas.web.modules.utils.ResultUtils;
import org.springframework.data.domain.Pageable;
import java.util.List;
public interface DeviceService {
//分页查询设备列表
ResultUtils<List<DeviceVO>> getDeviceList(String deviceId, String deviceName, Integer state, Pageable pageable);
//编辑设备
boolean edit(DeviceDTO dto);
//开关机配置
void setting(DeviceSettingCriteria criteria);
//根据id查询设备
Device findById(String deviceId);
//更新设备状态
void updateState(String deviceId,Integer state);
}

93
system/src/main/java/com/canvas/web/modules/device/service/impl/DeviceServiceImpl.java

@ -0,0 +1,93 @@
package com.canvas.web.modules.device.service.impl;
import com.canvas.web.modules.device.criteria.DeviceSettingCriteria;
import com.canvas.web.modules.device.domain.Device;
import com.canvas.web.modules.device.dto.DeviceDTO;
import com.canvas.web.modules.device.repository.DeviceRepository;
import com.canvas.web.modules.device.service.DeviceService;
import com.canvas.web.modules.device.vo.DeviceVO;
import com.canvas.web.modules.utils.MapUtil;
import com.canvas.web.modules.utils.PageSort;
import com.canvas.web.modules.utils.ResultUtils;
import lombok.RequiredArgsConstructor;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.stereotype.Service;
import java.sql.Timestamp;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Optional;
@Service
@RequiredArgsConstructor
public class DeviceServiceImpl implements DeviceService {
private final DeviceRepository deviceRepository;
@Override
public ResultUtils<List<DeviceVO>> getDeviceList(String deviceId, String deviceName, Integer state, Pageable pageable) {
PageRequest page= PageSort.pageRequest(pageable.getPageNumber(), pageable.getPageSize(), "create_time", Sort.Direction.DESC);
//分页查询
Page<Map<String,Object>> pageMap = deviceRepository.getDeviceList(deviceId,deviceName,state,page);
//初始化分页返回数据
List<DeviceVO> deviceVOList = MapUtil.setList(pageMap.getContent(),DeviceVO.class);
return ResultUtils.getResult(deviceVOList,pageMap);
}
@Override
public boolean edit(DeviceDTO dto) {
boolean isok = true;
try {
Device device = new Device();
if(null != dto.getDeviceId()){
device = deviceRepository.findById(dto.getDeviceId()).get();
device.setUpdateTime(new Timestamp(new Date().getTime()));
}else{
device.setCreateTime(new Timestamp(new Date().getTime()));
device.setUpdateTime(new Timestamp(new Date().getTime()));
}
device.setAccount(dto.getAccount());
device.setDeviceName(dto.getDeviceName());
device.setDeviceDirection(dto.getDeviceDirection());
device = deviceRepository.saveAndFlush(device);
}catch (Exception e){
isok = false;
e.printStackTrace();
}
return isok;
}
@Override
public void setting(DeviceSettingCriteria criteria) {
Device device = deviceRepository.findById(criteria.getDeviceId()).get();
device.setOpenSetting(criteria.getOpenSetting());
device.setOpenWeekly(criteria.getOpenWeekly());
device.setOpenTime(Timestamp.valueOf(criteria.getOpenTime()));
device.setCloseSetting(criteria.getCloseSetting());
device.setCloseWeekly(criteria.getCloseWeekly());
device.setCloseTime(Timestamp.valueOf(criteria.getCloseTime()));
device.setStartupScreen(criteria.getStartupScreen());
device.setUpdateTime(new Timestamp(new Date().getTime()));
deviceRepository.saveAndFlush(device);
}
@Override
public Device findById(String deviceId) {
Optional<Device> optional = deviceRepository.findById(deviceId);
if(!optional.isPresent()){
return optional.get();
}
return null;
}
@Override
public void updateState(String deviceId, Integer state) {
Device device = deviceRepository.findById(deviceId).get();
device.setIsState(state);
deviceRepository.saveAndFlush(device);
}
}

36
system/src/main/java/com/canvas/web/modules/device/vo/DeviceVO.java

@ -0,0 +1,36 @@
package com.canvas.web.modules.device.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import java.sql.Timestamp;
@Getter
@Setter
public class DeviceVO {
@ApiModelProperty(value = "设备id")
private String deviceId;
@ApiModelProperty(value = "设备账号")
private String deviceAccount;
@ApiModelProperty(value = "设备名称")
private String deviceName;
@ApiModelProperty(value = "设备方向")
private String deviceDirection;
@ApiModelProperty(value = "机构名称")
private String organName;
@ApiModelProperty(value = "开机设置")
private Integer openSetting;
@ApiModelProperty(value = "开机每周")
private String openWeekly;
@ApiModelProperty(value = "开机时间")
private Timestamp openTime;
@ApiModelProperty(value = "关机设置")
private Integer closeSetting;
@ApiModelProperty(value = "关机每周")
private String closeWeekly;
@ApiModelProperty(value = "关机时间")
private Timestamp closeTime;
@ApiModelProperty(value = "启动动画")
private String startupScreen;
}

60
system/src/main/java/com/canvas/web/modules/material/domain/Material.java

@ -0,0 +1,60 @@
package com.canvas.web.modules.material.domain;
import com.canvas.web.base.BaseEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.*;
import java.io.Serializable;
@Getter
@Setter
@Entity
@Table(name = "material")
public class Material extends BaseEntity implements Serializable {
@Id
@Column(name = "id")
@GeneratedValue(generator = "idGenerator")
@GenericGenerator(name = "idGenerator", strategy = "uuid")
private String id ;
@Column(name = "name")
@ApiModelProperty(value = "素材名称")
private String name;
@Column(name = "type")
@ApiModelProperty(value = "素材类型")
private Integer type;
@Column(name = "store_type")
@ApiModelProperty(value = "库类型 1.素材库 2.主题库")
private Integer storeType;
@Column(name = "deposit_url")
@ApiModelProperty(value = "素材存放路径")
private String depositUrl;
@Column(name = "img_path")
@ApiModelProperty(value = "封面图片路径")
private String imgPath;
@Column(name = "device_direction")
@ApiModelProperty(value = "设备方向")
private String deviceDirection;
@Column(name = "orga_id")
@ApiModelProperty(value = "机构id")
private String orgaId;
@Column(name = "is_state")
@ApiModelProperty(value = "停用/禁用", hidden = true)
public Integer isState;
@Column(name = "is_del")
@ApiModelProperty(value = "停用/禁用", hidden = true)
public Boolean isDel;
}

15
system/src/main/java/com/canvas/web/modules/material/repository/MaterialRepository.java

@ -0,0 +1,15 @@
package com.canvas.web.modules.material.repository;
import com.canvas.web.modules.material.domain.Material;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import java.util.Map;
public interface MaterialRepository extends JpaRepository<Material, String> {
}

19
system/src/main/java/com/canvas/web/modules/utils/MapUtil.java

@ -0,0 +1,19 @@
package com.canvas.web.modules.utils;
import com.alibaba.fastjson.JSONArray;
import java.util.List;
import java.util.Map;
public class MapUtil {
/**
* List<Map<String, Object>> List<T> 数据转换
*/
public static <T> List<T> setList(final List<Map<String, Object>> srcList, Class<T> clazz) {
JSONArray jsonArray = new JSONArray();
jsonArray.addAll(srcList);
List<T> addList = jsonArray.toJavaList(clazz);
return addList;
}
}

81
system/src/main/java/com/canvas/web/modules/utils/PageSort.java

@ -0,0 +1,81 @@
package com.canvas.web.modules.utils;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Sort;
import java.util.ArrayList;
import java.util.List;
/*
*@Description:分页排序数据
*@Author: Liu_Lee
*@Date: 2020/9/16 13:30
*@program: exhibit-admin
*/
public class PageSort {
private static final Integer PAGE_SIZE_DEF = 10;
private static final String ORDER_BY_COLUMN_DEF = "createtime";
private static final Sort.Direction SORT_DIRECTION = Sort.Direction.DESC;
public static PageRequest pageRequest() {
return pageRequest(PAGE_SIZE_DEF, ORDER_BY_COLUMN_DEF, SORT_DIRECTION);
}
/**
* 创建分页排序对象
*
* @param sortDirection 排序方式默认值
*/
public static PageRequest pageRequest(Integer page, Sort.Direction sortDirection) {
return pageRequest(PAGE_SIZE_DEF, ORDER_BY_COLUMN_DEF, sortDirection);
}
/**
* 创建分页排序对象
*
* @param orderByColumnDef 排序字段名称默认值
* @param sortDirection 排序方式默认值
*/
public static PageRequest pageRequest(Integer page, String orderByColumnDef, Sort.Direction sortDirection) {
return pageRequest(PAGE_SIZE_DEF, orderByColumnDef, sortDirection);
}
/**
* 创建分页排序对象
*
* @param pageSizeDef 分页数据数量默认值
* @param orderByColumnDef 排序字段名称默认值
* @param sortDirection 排序方式默认值
*/
public static PageRequest pageRequest(Integer page, Integer pageSizeDef, String orderByColumnDef, Sort.Direction sortDirection) {
Integer pageIndex = HttpServletUtil.getParameterInt("page", page);
Integer pageSize = HttpServletUtil.getParameterInt("size", pageSizeDef);
String orderByColumn = HttpServletUtil.getParameter("orderByColumn", orderByColumnDef);
String direction = HttpServletUtil.getParameter("isAsc", sortDirection.toString());
Sort sort = Sort.by(Sort.Direction.fromString(direction), orderByColumn);
return PageRequest.of(pageIndex - 1, pageSize, sort);
}
/**
* 创建分页排序对象
*
* @param pageSizeDef 分页数据数量默认值
* @param orderByColumnDef 多个排序字段名称默认值
* @param sortDirection 多个排序方式默认值
*/
public static PageRequest pageRequest(Integer page, Integer pageSizeDef, List<String> orderByColumnDef, List<Sort.Direction> sortDirection) {
Integer pageIndex = HttpServletUtil.getParameterInt("page", page);
Integer pageSize = HttpServletUtil.getParameterInt("size", pageSizeDef);
List orderList = new ArrayList();
for(int i = 0;i<orderByColumnDef.size();i++){
Sort.Order order = new Sort.Order(sortDirection.get(i),orderByColumnDef.get(i));
orderList.add(order);
}
Sort sort = Sort.by(orderList);
return PageRequest.of(pageIndex - 1, pageSize, sort);
}
}
Loading…
Cancel
Save