diff --git a/system/src/main/java/com/canvas/web/modules/device/criteria/DeviceQueryCriteria.java b/system/src/main/java/com/canvas/web/modules/device/criteria/DeviceQueryCriteria.java new file mode 100644 index 0000000..e35be5b --- /dev/null +++ b/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; +} diff --git a/system/src/main/java/com/canvas/web/modules/device/criteria/DeviceSettingCriteria.java b/system/src/main/java/com/canvas/web/modules/device/criteria/DeviceSettingCriteria.java new file mode 100644 index 0000000..b3bbc4a --- /dev/null +++ b/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; +} diff --git a/system/src/main/java/com/canvas/web/modules/device/domain/Device.java b/system/src/main/java/com/canvas/web/modules/device/domain/Device.java index a79bea3..5685e31 100644 --- a/system/src/main/java/com/canvas/web/modules/device/domain/Device.java +++ b/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; diff --git a/system/src/main/java/com/canvas/web/modules/device/dto/DeviceDTO.java b/system/src/main/java/com/canvas/web/modules/device/dto/DeviceDTO.java new file mode 100644 index 0000000..72fbfce --- /dev/null +++ b/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; +} diff --git a/system/src/main/java/com/canvas/web/modules/device/repository/DeviceRepository.java b/system/src/main/java/com/canvas/web/modules/device/repository/DeviceRepository.java index 00a80c2..636b530 100644 --- a/system/src/main/java/com/canvas/web/modules/device/repository/DeviceRepository.java +++ b/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 { + @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> getDeviceList(String deviceId, String deviceName, Integer state, Pageable page); + } diff --git a/system/src/main/java/com/canvas/web/modules/device/rest/DeviceController.java b/system/src/main/java/com/canvas/web/modules/device/rest/DeviceController.java index 6311814..7f83d91 100644 --- a/system/src/main/java/com/canvas/web/modules/device/rest/DeviceController.java +++ b/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>> list( - Pageable page + public Response>> list( + DeviceQueryCriteria criteria, Pageable page + ){ + return Response.success(deviceService.getDeviceList(criteria.getDeviceId(),criteria.getDeviceName(),criteria.getIsState(),page)); + } + + @ApiOperation("编辑设备") + @PostMapping("/save") + public Response 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 findById( + String deviceId + ){ + return Response.success(deviceService.findById(deviceId)); + } + + @ApiOperation("设备开关机列表") + @GetMapping("/switchlist") + public Response>> switchlist( + DeviceQueryCriteria criteria, Pageable page + ){ + return Response.success(deviceService.getDeviceList(criteria.getDeviceId(),criteria.getDeviceName(),criteria.getIsState(),page)); + } + + @ApiOperation("开关机配置") + @PostMapping("/switchSetting") + public Response switchSetting( + DeviceSettingCriteria criteria ){ - return null; + deviceService.setting(criteria); + return Response.success(ResponseEnum.UPDATE_SUCCESS); } + + @ApiOperation("更新设备状态") + @PostMapping("/updateState") + public Response updateState( + String deviceId,Integer state + ){ + deviceService.updateState(deviceId,state); + return Response.success(ResponseEnum.UPDATE_SUCCESS); + } + } diff --git a/system/src/main/java/com/canvas/web/modules/device/service/DeviceService.java b/system/src/main/java/com/canvas/web/modules/device/service/DeviceService.java new file mode 100644 index 0000000..b30b98e --- /dev/null +++ b/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> 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); +} diff --git a/system/src/main/java/com/canvas/web/modules/device/service/impl/DeviceServiceImpl.java b/system/src/main/java/com/canvas/web/modules/device/service/impl/DeviceServiceImpl.java new file mode 100644 index 0000000..bf0211f --- /dev/null +++ b/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> getDeviceList(String deviceId, String deviceName, Integer state, Pageable pageable) { + PageRequest page= PageSort.pageRequest(pageable.getPageNumber(), pageable.getPageSize(), "create_time", Sort.Direction.DESC); + //分页查询 + Page> pageMap = deviceRepository.getDeviceList(deviceId,deviceName,state,page); + //初始化分页返回数据 + List 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 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); + } +} \ No newline at end of file diff --git a/system/src/main/java/com/canvas/web/modules/device/vo/DeviceVO.java b/system/src/main/java/com/canvas/web/modules/device/vo/DeviceVO.java new file mode 100644 index 0000000..3573322 --- /dev/null +++ b/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; +} diff --git a/system/src/main/java/com/canvas/web/modules/material/domain/Material.java b/system/src/main/java/com/canvas/web/modules/material/domain/Material.java new file mode 100644 index 0000000..062fb1d --- /dev/null +++ b/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; + +} diff --git a/system/src/main/java/com/canvas/web/modules/material/repository/MaterialRepository.java b/system/src/main/java/com/canvas/web/modules/material/repository/MaterialRepository.java new file mode 100644 index 0000000..abad6a4 --- /dev/null +++ b/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 { + + + +} diff --git a/system/src/main/java/com/canvas/web/modules/utils/MapUtil.java b/system/src/main/java/com/canvas/web/modules/utils/MapUtil.java new file mode 100644 index 0000000..da57cc9 --- /dev/null +++ b/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> 到 List 数据转换 + */ + public static List setList(final List> srcList, Class clazz) { + JSONArray jsonArray = new JSONArray(); + jsonArray.addAll(srcList); + List addList = jsonArray.toJavaList(clazz); + return addList; + } + +} diff --git a/system/src/main/java/com/canvas/web/modules/utils/PageSort.java b/system/src/main/java/com/canvas/web/modules/utils/PageSort.java new file mode 100644 index 0000000..6715644 --- /dev/null +++ b/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 orderByColumnDef, List sortDirection) { + Integer pageIndex = HttpServletUtil.getParameterInt("page", page); + Integer pageSize = HttpServletUtil.getParameterInt("size", pageSizeDef); + List orderList = new ArrayList(); + for(int i = 0;i