This commit is contained in:
zt
2025-02-22 09:16:29 +08:00
parent bd1a99803b
commit 315191ee73
54 changed files with 1098 additions and 237 deletions

View File

@ -7,6 +7,7 @@ import lombok.EqualsAndHashCode;
import lombok.ToString;
import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@ -45,4 +46,5 @@ public class CarteenPageReqVO extends PageParam {
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
private BigDecimal bindMoney;
}

View File

@ -1,13 +1,13 @@
package cn.iocoder.yudao.module.system.controller.admin.carteen.vo;
import cn.iocoder.yudao.framework.excel.core.convert.BoolenConvert;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import java.util.*;
import org.springframework.format.annotation.DateTimeFormat;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import com.alibaba.excel.annotation.*;
@Schema(description = "管理后台 - 门店管理 Response VO")
@Data
@ -44,4 +44,5 @@ public class CarteenRespVO {
// @ExcelProperty("创建时间")
private LocalDateTime createTime;
private BigDecimal bindMoney;
}

View File

@ -2,9 +2,12 @@ package cn.iocoder.yudao.module.system.controller.admin.carteen.vo;
import cn.hutool.core.lang.RegexPool;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import javax.validation.constraints.*;
import lombok.Data;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import java.math.BigDecimal;
@Schema(description = "管理后台 - 门店管理新增/修改 Request VO")
@Data
@ -38,4 +41,5 @@ public class CarteenSaveReqVO {
@Pattern(regexp = RegexPool.MOBILE, message = "联系电话格式不正确")
private String phone;
private BigDecimal bindMoney;
}

View File

@ -0,0 +1,95 @@
package cn.iocoder.yudao.module.system.controller.admin.devicewarn;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.security.access.prepost.PreAuthorize;
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Operation;
import javax.validation.constraints.*;
import javax.validation.*;
import javax.servlet.http.*;
import java.util.*;
import java.io.IOException;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog;
import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.*;
import cn.iocoder.yudao.module.system.controller.admin.devicewarn.vo.*;
import cn.iocoder.yudao.module.system.dal.dataobject.devicewarn.DeviceWarnDO;
import cn.iocoder.yudao.module.system.service.devicewarn.DeviceWarnService;
@Tag(name = "管理后台 - 设备报警")
@RestController
@RequestMapping("/system/device-warn")
@Validated
public class DeviceWarnController {
@Resource
private DeviceWarnService deviceWarnService;
@PostMapping("/create")
@Operation(summary = "创建设备报警")
@PreAuthorize("@ss.hasPermission('system:device-warn:create')")
public CommonResult<Long> createDeviceWarn(@Valid @RequestBody DeviceWarnSaveReqVO createReqVO) {
return success(deviceWarnService.createDeviceWarn(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新设备报警")
@PreAuthorize("@ss.hasPermission('system:device-warn:update')")
public CommonResult<Boolean> updateDeviceWarn(@Valid @RequestBody DeviceWarnSaveReqVO updateReqVO) {
deviceWarnService.updateDeviceWarn(updateReqVO);
return success(true);
}
@DeleteMapping("/delete")
@Operation(summary = "删除设备报警")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('system:device-warn:delete')")
public CommonResult<Boolean> deleteDeviceWarn(@RequestParam("id") Long id) {
deviceWarnService.deleteDeviceWarn(id);
return success(true);
}
@GetMapping("/get")
@Operation(summary = "获得设备报警")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('system:device-warn:query')")
public CommonResult<DeviceWarnRespVO> getDeviceWarn(@RequestParam("id") Long id) {
DeviceWarnDO deviceWarn = deviceWarnService.getDeviceWarn(id);
return success(BeanUtils.toBean(deviceWarn, DeviceWarnRespVO.class));
}
@GetMapping("/page")
@Operation(summary = "获得设备报警分页")
@PreAuthorize("@ss.hasPermission('system:device-warn:query')")
public CommonResult<PageResult<DeviceWarnRespVO>> getDeviceWarnPage(@Valid DeviceWarnPageReqVO pageReqVO) {
PageResult<DeviceWarnDO> pageResult = deviceWarnService.getDeviceWarnPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, DeviceWarnRespVO.class));
}
@GetMapping("/export-excel")
@Operation(summary = "导出设备报警 Excel")
@PreAuthorize("@ss.hasPermission('system:device-warn:export')")
@OperateLog(type = EXPORT)
public void exportDeviceWarnExcel(@Valid DeviceWarnPageReqVO pageReqVO,
HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<DeviceWarnDO> list = deviceWarnService.getDeviceWarnPage(pageReqVO).getList();
// 导出 Excel
ExcelUtils.write(response, "设备报警.xls", "数据", DeviceWarnRespVO.class,
BeanUtils.toBean(list, DeviceWarnRespVO.class));
}
}

View File

@ -0,0 +1,38 @@
package cn.iocoder.yudao.module.system.controller.admin.devicewarn.vo;
import lombok.*;
import java.util.*;
import io.swagger.v3.oas.annotations.media.Schema;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import java.math.BigDecimal;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@Schema(description = "管理后台 - 设备报警分页 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class DeviceWarnPageReqVO extends PageParam {
@Schema(description = "设备安卓码")
private String deviceSn;
@Schema(description = "设备名", example = "王五")
private String deviceName;
@Schema(description = "门店id", example = "26723")
private Long storeId;
@Schema(description = "报警前重量")
private BigDecimal beforeWeight;
@Schema(description = "报警后重量")
private BigDecimal afterWeight;
@Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
}

View File

@ -0,0 +1,45 @@
package cn.iocoder.yudao.module.system.controller.admin.devicewarn.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import java.util.*;
import java.math.BigDecimal;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import com.alibaba.excel.annotation.*;
@Schema(description = "管理后台 - 设备报警 Response VO")
@Data
@ExcelIgnoreUnannotated
public class DeviceWarnRespVO {
@Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "10059")
@ExcelProperty("主键")
private Long id;
@Schema(description = "设备安卓码")
@ExcelProperty("设备安卓码")
private String deviceSn;
@Schema(description = "设备名", example = "王五")
@ExcelProperty("设备名")
private String deviceName;
@Schema(description = "门店id", example = "26723")
@ExcelProperty("门店id")
private Long storeId;
@Schema(description = "报警前重量")
@ExcelProperty("报警前重量")
private BigDecimal beforeWeight;
@Schema(description = "报警后重量")
@ExcelProperty("报警后重量")
private BigDecimal afterWeight;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("创建时间")
private LocalDateTime createTime;
}

View File

@ -0,0 +1,30 @@
package cn.iocoder.yudao.module.system.controller.admin.devicewarn.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.math.BigDecimal;
@Schema(description = "管理后台 - 设备报警新增/修改 Request VO")
@Data
public class DeviceWarnSaveReqVO {
@Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "10059")
private Long id;
@Schema(description = "设备安卓码")
private String deviceSn;
@Schema(description = "设备名", example = "王五")
private String deviceName;
@Schema(description = "门店id", example = "26723")
private Long storeId;
@Schema(description = "报警前重量")
private BigDecimal beforeWeight;
@Schema(description = "报警后重量")
private BigDecimal afterWeight;
}

View File

@ -62,4 +62,5 @@ public class DishesPageReqVO extends PageParam {
private Integer dailySigns;
private Integer errorNum;
}

View File

@ -84,4 +84,6 @@ public class DishesRespVO {
private String timeSlot;
private Integer dailySigns;
private Integer errorNum;
}

View File

@ -69,4 +69,6 @@ public class DishesSaveReqVO {
private String timeSlot;
private Integer dailySigns;
private Integer errorNum;
}

View File

@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.system.controller.app.carteen.vo;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
@ -24,4 +25,6 @@ public class CarteenRespVO {
private String phone;
private LocalDateTime createTime;
private BigDecimal bindMoney;
}

View File

@ -0,0 +1,36 @@
package cn.iocoder.yudao.module.system.controller.app.devicewarn;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.module.system.controller.admin.devicewarn.vo.DeviceWarnSaveReqVO;
import cn.iocoder.yudao.module.system.service.devicewarn.DeviceWarnService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.validation.annotation.Validated;
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;
import javax.annotation.Resource;
import javax.validation.Valid;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
@Tag(name = "管理后台 - 设备报警")
@RestController
@RequestMapping("/system/device-warn")
@Validated
public class AppDeviceWarnController {
@Resource
private DeviceWarnService deviceWarnService;
@PostMapping("/create")
@Operation(summary = "创建设备报警")
public CommonResult<Long> createDeviceWarn(@Valid @RequestBody DeviceWarnSaveReqVO createReqVO) {
return success(deviceWarnService.createDeviceWarn(createReqVO));
}
}

View File

@ -1,11 +1,12 @@
package cn.iocoder.yudao.module.system.dal.dataobject.carteen;
import lombok.*;
import java.util.*;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
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 lombok.*;
import java.math.BigDecimal;
/**
* 门店管理 DO
@ -60,4 +61,6 @@ public class CarteenDO extends BaseDO {
*/
private String serialNumber;
private BigDecimal bindMoney;
}

View File

@ -0,0 +1,53 @@
package cn.iocoder.yudao.module.system.dal.dataobject.devicewarn;
import lombok.*;
import java.util.*;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
/**
* 设备报警 DO
*
* @author 我是秦俊旗
*/
@TableName("t_device_warn")
@KeySequence("t_device_warn_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class DeviceWarnDO extends BaseDO {
/**
* 主键
*/
@TableId
private Long id;
/**
* 设备安卓码
*/
private String deviceSn;
/**
* 设备名
*/
private String deviceName;
/**
* 门店id
*/
private Long storeId;
/**
* 报警前重量
*/
private BigDecimal beforeWeight;
/**
* 报警后重量
*/
private BigDecimal afterWeight;
}

View File

@ -82,4 +82,6 @@ public class DishesDO extends BaseDO {
private String timeSlot;
private Integer dailySigns;
private Integer errorNum;
}

View File

@ -0,0 +1,31 @@
package cn.iocoder.yudao.module.system.dal.mysql.devicewarn;
import java.util.*;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.module.system.dal.dataobject.devicewarn.DeviceWarnDO;
import org.apache.ibatis.annotations.Mapper;
import cn.iocoder.yudao.module.system.controller.admin.devicewarn.vo.*;
/**
* 设备报警 Mapper
*
* @author 我是秦俊旗
*/
@Mapper
public interface DeviceWarnMapper extends BaseMapperX<DeviceWarnDO> {
default PageResult<DeviceWarnDO> selectPage(DeviceWarnPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<DeviceWarnDO>()
.likeIfPresent(DeviceWarnDO::getDeviceSn, reqVO.getDeviceSn())
.likeIfPresent(DeviceWarnDO::getDeviceName, reqVO.getDeviceName())
.eqIfPresent(DeviceWarnDO::getStoreId, reqVO.getStoreId())
.eqIfPresent(DeviceWarnDO::getBeforeWeight, reqVO.getBeforeWeight())
.eqIfPresent(DeviceWarnDO::getAfterWeight, reqVO.getAfterWeight())
.betweenIfPresent(DeviceWarnDO::getCreateTime, reqVO.getCreateTime())
.orderByDesc(DeviceWarnDO::getId));
}
}

View File

@ -0,0 +1,55 @@
package cn.iocoder.yudao.module.system.service.devicewarn;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.system.controller.admin.devicewarn.vo.DeviceWarnPageReqVO;
import cn.iocoder.yudao.module.system.controller.admin.devicewarn.vo.DeviceWarnSaveReqVO;
import cn.iocoder.yudao.module.system.dal.dataobject.devicewarn.DeviceWarnDO;
import javax.validation.Valid;
/**
* 设备报警 Service 接口
*
* @author 我是秦俊旗
*/
public interface DeviceWarnService {
/**
* 创建设备报警
*
* @param createReqVO 创建信息
* @return 编号
*/
Long createDeviceWarn(@Valid DeviceWarnSaveReqVO createReqVO);
/**
* 更新设备报警
*
* @param updateReqVO 更新信息
*/
void updateDeviceWarn(@Valid DeviceWarnSaveReqVO updateReqVO);
/**
* 删除设备报警
*
* @param id 编号
*/
void deleteDeviceWarn(Long id);
/**
* 获得设备报警
*
* @param id 编号
* @return 设备报警
*/
DeviceWarnDO getDeviceWarn(Long id);
/**
* 获得设备报警分页
*
* @param pageReqVO 分页查询
* @return 设备报警分页
*/
PageResult<DeviceWarnDO> getDeviceWarnPage(DeviceWarnPageReqVO pageReqVO);
}

View File

@ -0,0 +1,92 @@
package cn.iocoder.yudao.module.system.service.devicewarn;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.system.controller.admin.devicewarn.vo.DeviceWarnPageReqVO;
import cn.iocoder.yudao.module.system.controller.admin.devicewarn.vo.DeviceWarnSaveReqVO;
import cn.iocoder.yudao.module.system.dal.dataobject.deviceInfo.DeviceInfoDO;
import cn.iocoder.yudao.module.system.dal.dataobject.devicewarn.DeviceWarnDO;
import cn.iocoder.yudao.module.system.dal.mysql.deviceInfo.DeviceInfoMapper;
import cn.iocoder.yudao.module.system.dal.mysql.devicewarn.DeviceWarnMapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.DEVICE_WARN_NOT_EXISTS;
/**
* 设备报警 Service 实现类
*
* @author 我是秦俊旗
*/
@Service
@Validated
public class DeviceWarnServiceImpl implements DeviceWarnService {
@Resource
private DeviceWarnMapper deviceWarnMapper;
@Resource
private DeviceInfoMapper deviceInfoMapper;
@Resource
private HttpServletRequest httpServletRequest;
@Override
public Long createDeviceWarn(DeviceWarnSaveReqVO createReqVO) {
// 插入
DeviceWarnDO deviceWarn = BeanUtils.toBean(createReqVO, DeviceWarnDO.class);
String mac = this.getHearder();
DeviceInfoDO deviceInfoDO = deviceInfoMapper.selectOne(new LambdaQueryWrapper<DeviceInfoDO>()
.eq(DeviceInfoDO::getDeviceIp, mac)
.last("limit 1"));
deviceWarn.setDeviceSn(mac);
deviceWarn.setStoreId(deviceInfoDO.getCarteenId());
deviceWarn.setDeviceName(deviceInfoDO.getDeviceName());
deviceWarnMapper.insert(deviceWarn);
// 返回
return deviceWarn.getId();
}
@Override
public void updateDeviceWarn(DeviceWarnSaveReqVO updateReqVO) {
// 校验存在
validateDeviceWarnExists(updateReqVO.getId());
// 更新
DeviceWarnDO updateObj = BeanUtils.toBean(updateReqVO, DeviceWarnDO.class);
deviceWarnMapper.updateById(updateObj);
}
@Override
public void deleteDeviceWarn(Long id) {
// 校验存在
validateDeviceWarnExists(id);
// 删除
deviceWarnMapper.deleteById(id);
}
private void validateDeviceWarnExists(Long id) {
if (deviceWarnMapper.selectById(id) == null) {
throw exception(DEVICE_WARN_NOT_EXISTS);
}
}
@Override
public DeviceWarnDO getDeviceWarn(Long id) {
return deviceWarnMapper.selectById(id);
}
@Override
public PageResult<DeviceWarnDO> getDeviceWarnPage(DeviceWarnPageReqVO pageReqVO) {
return deviceWarnMapper.selectPage(pageReqVO);
}
public String getHearder(){
try {
return httpServletRequest.getHeader("Authorization");
} catch (Exception e) {
throw exception(2000_10_001,"无法获取设备编码");
}
}
}