diff --git a/nxhs-service/src/main/java/cc/yunxi/controller/DeviceController.java b/nxhs-service/src/main/java/cc/yunxi/controller/DeviceController.java
index 3c24e44..f4a5aec 100644
--- a/nxhs-service/src/main/java/cc/yunxi/controller/DeviceController.java
+++ b/nxhs-service/src/main/java/cc/yunxi/controller/DeviceController.java
@@ -2,27 +2,31 @@ package cc.yunxi.controller;
import cc.yunxi.common.domain.CommonResult;
-import cc.yunxi.common.utils.BeanUtils;
-import cc.yunxi.common.utils.WebUtils;
-import cc.yunxi.domain.dto.QrCodeDTO;
-import cc.yunxi.domain.vo.device.RecycleDeviceOpenDoorReqVO;
-import cc.yunxi.domain.vo.device.RecycleDeviceRespVO;
-import cc.yunxi.domain.vo.device.RecycleDeviceRespVO.RecycleDeviceDoorVO;
+import cc.yunxi.domain.po.RecycleBucket;
+import cc.yunxi.domain.po.RecycleDevice;
+import cc.yunxi.domain.po.RecycleDeviceConfig;
+import cc.yunxi.domain.vo.device.*;
+import cc.yunxi.domain.vo.file.FileUploadRespVO;
+import cc.yunxi.service.IFileService;
+import cc.yunxi.service.IRecycleBucketService;
+import cc.yunxi.service.IRecycleDeviceConfigService;
import cc.yunxi.service.IRecycleDeviceService;
+import cc.yunxi.utils.DeviceStatusManager;
import cn.hutool.core.util.StrUtil;
-import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONUtil;
import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import lombok.SneakyThrows;
+import io.swagger.annotations.ApiModelProperty;
import lombok.extern.slf4j.Slf4j;
+import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
-import java.io.IOException;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.util.ArrayList;
+import java.util.Base64;
import java.util.List;
-import java.util.Map;
/**
*
@@ -36,84 +40,146 @@ import java.util.Map;
@RestController
@RequestMapping("/device")
@Slf4j
+@Validated
public class DeviceController {
@Resource
- private IRecycleDeviceService deviceService;
-
- private static final String OPEN_API_URL = "https://dev-api.zsgai.com/open_api/open_door_for_devsn";
-
- @ApiOperation("设备状态上报")
- @PostMapping("/device_state")
- public CommonResult deviceState(HttpServletRequest request) throws Exception {
- // 1. 参数解析处理
- Map dataMap = WebUtils.parseQueryString(request);
- String listDoor = dataMap.remove("listDoor");
- RecycleDeviceRespVO recycleDeviceRespVO = BeanUtils.copyBean(dataMap, RecycleDeviceRespVO.class);
- if(StrUtil.isNotEmpty(listDoor)) {
- JSONArray jsonArray = JSONUtil.parseArray(listDoor);
- List deviceDoorVOList = BeanUtils.copyList(jsonArray, RecycleDeviceDoorVO.class);
- recycleDeviceRespVO.setListDoor(deviceDoorVOList);
+ private DeviceStatusManager deviceStatusManager;
+
+ @Resource
+ private IRecycleDeviceService recycleDeviceService;
+ @Resource
+ private IRecycleDeviceConfigService recycleDeviceConfigService;
+ @Resource
+ private IRecycleBucketService recycleBucketService;
+ @Resource
+ private IFileService fileService;
+
+ //获取设备配置
+ @PostMapping("/conf")
+ @ApiModelProperty("获取设备配置")
+ public CommonResult conf(@RequestBody DeviceVO deviceVO) {
+ CommonResult result = new CommonResult<>();
+ DeviceRespVO respVO = new DeviceRespVO();
+ RecycleDevice device = recycleDeviceService.getByDeviceCode(deviceVO.getDeviceCode());
+ if (device == null) {
+ return result.error(400, "设备不存在");
+ }
+ String companyId = device.getBeLongCompanyId();
+ if (StrUtil.isBlank(companyId)) {
+ return result.error(400, "设备未绑定公司,还未投用!!");
+ }
+ RecycleDeviceConfig config = recycleDeviceConfigService.getByCompanyId(companyId);
+ if (config == null) {
+ return result.error(400, "设备未配置!!");
}
- log.info("recycleDeviceRespVO = {}", recycleDeviceRespVO);
- deviceService.saveDeviceInfo(recycleDeviceRespVO);
- return CommonResult.success("ok");
+ List buckets = recycleBucketService.getByDeviceCode(deviceVO.getDeviceCode());
+ if (buckets.size() == 0) {
+ return result.error(400, "当前设备没有桶配置清单!!");
+ }
+ respVO.setDeviceCode(device.getDeviceCode());
+ respVO.setDeviceName(device.getDeviceName());
+ respVO.setUserStatus(device.getUseStatus());
+ respVO.setCleanLock(Integer.valueOf(config.getCleanLock()));
+ respVO.setUsePhoneLogin(config.getAllowPhoneLogin());
+ ArrayList list = new ArrayList<>();
+ for (RecycleBucket bucket : buckets) {
+ DeviceRespVO.Bucket _bucket = new DeviceRespVO.Bucket();
+ _bucket.setBucketCode(bucket.getBucketCode());
+ _bucket.setDoorNum(bucket.getDoorNum());
+ _bucket.setOrdNum(bucket.getShowOrd());
+ _bucket.setCode(bucket.getProductCode());
+ _bucket.setSubCode(bucket.getProductSubCode());
+ _bucket.setShowText(bucket.getShowName());
+ _bucket.setPrice(bucket.getPrice());
+ _bucket.setSingleWeightLimit(BigDecimal.ZERO);
+ _bucket.setTotalWeightLimit(bucket.getWarningWeight());
+ _bucket.setSmokeAlarm(bucket.getSmogSet());
+ _bucket.setFullAlarm(bucket.getFullSet());
+ String bucketImg = bucket.getBucketImg();
+ List img = JSONUtil.toList(bucketImg, FileUploadRespVO.class);
+ if (img.size() > 0) {
+ FileUploadRespVO file = img.get(0);
+ byte[] bytes = fileService.download(file.getUrl());
+ String base64 = fileService.encodeToBase64(bytes);
+ _bucket.setImage(base64);
+ }
+ list.add(_bucket);
+ }
+ respVO.setBucketList(list);
+ respVO.setPromotionSet(config.getPromotionSet());
+ respVO.setSlogan(config.getPromotionSlogans());
+ ArrayList posters = new ArrayList<>();
+ String pics = config.getPromotionPic1();
+ List files = JSONUtil.toList(pics, FileUploadRespVO.class);
+ for (int i = 0; i < files.size(); i++) {
+ FileUploadRespVO file = files.get(i);
+ DeviceRespVO.Poster poster = new DeviceRespVO.Poster();
+ byte[] bytes = fileService.download(file.getUrl());
+ String base64 = fileService.encodeToBase64(bytes);
+ poster.setShowOrd(i);
+ poster.setImage(base64);
+ posters.add(poster);
+ }
+ respVO.setPosterList(posters);
+ result.setData(respVO);
+ return result;
}
+ //手机号登录
+ @PostMapping("/login")
+ @ApiModelProperty("手机号登录")
+ public CommonResult login(@RequestBody LoginReqVO loginReqVO) {
+ CommonResult result = new CommonResult<>();
- @ApiOperation("请求登陆")
- @GetMapping("/login_name")
- public CommonResult loginName(@RequestBody QrCodeDTO qrCodeDTO) {
- // 处理数据
- String devsn = qrCodeDTO.getDevsn();
- Integer devid = qrCodeDTO.getDevid();
- return CommonResult.success("ok");
+ return result;
}
+ //投递重量上传
+ @PostMapping("/delivery")
+ @ApiModelProperty("投递订单上传")
+ public CommonResult delivery(@RequestBody DeliveryOrderVO orderVO) {
- @SneakyThrows
- @ApiOperation("开门")
- @GetMapping("/open_door_for_devsn")
- public CommonResult openDoor(@RequestBody RecycleDeviceOpenDoorReqVO recycleDeviceOpenDoorReqVO) {
-// devUserId
- return CommonResult.success("ok");
+ return null;
}
- @SneakyThrows
- @ApiOperation("关门")
- @GetMapping("/close_door_for_devsn")
- public CommonResult closeDoor(HttpServletRequest request) {
- String queryString = request.getQueryString();
- String parameters = WebUtils.getParameters(request);
- String requestBody = WebUtils.getRequestPostStr(request);
- log.info("deliveryData receive params = {}", parameters);
- log.info("deliveryData receive json = {}", requestBody);
- return CommonResult.success(queryString);
+ //清运重量上传
+ @PostMapping("/clean")
+ @ApiModelProperty("清运订单上传")
+ public CommonResult clean(@RequestBody CleanOrderVO orderVO) {
+
+ return null;
+ }
+
+ //设备事件上报
+ @PostMapping("/event")
+ @ApiModelProperty("设备事件上报")
+ public CommonResult event(@RequestBody DeviceEventVO eventVO) {
+ CommonResult result = new CommonResult<>();
+
+ return result;
}
- @SneakyThrows
- @ApiOperation("上传投递重量")
- @GetMapping("/delivery_data")
- public CommonResult deliveryData(HttpServletRequest request) {
- String queryString = request.getQueryString();
- String parameters = WebUtils.getParameters(request);
- String requestBody = WebUtils.getRequestPostStr(request);
- log.info("deliveryData receive params = {}", parameters);
- log.info("deliveryData receive json = {}", requestBody);
- return CommonResult.success(queryString);
+ //设备心跳上报
+ @PostMapping("/heartbeat")
+ @ApiModelProperty("设备心跳上报")
+ public CommonResult heartbeat(@RequestParam String deviceCode, HttpServletRequest request) {
+ String remoteAddr = request.getRemoteAddr();
+ DeviceStatus des = new DeviceStatus();
+ des.setDeviceCode(deviceCode);
+ des.setIp(remoteAddr);
+ des.setHeartBeat(LocalDateTime.now());
+ deviceStatusManager.putDeviceStatus(des);
+ log.info("设备心跳上报成功,设备编码:{}", deviceCode);
+ return CommonResult.success(deviceCode);
}
+ @ApiModelProperty("设备命令下发")
+ @PostMapping("/command")
+ public CommonResult command(@RequestBody CommandVO commandVO) {
- @SneakyThrows
- @ApiOperation("上传清运重量")
- @GetMapping("/clean_data")
- public CommonResult cleanData(HttpServletRequest request) {
- String queryString = request.getQueryString();
- String parameters = WebUtils.getParameters(request);
- String requestBody = WebUtils.getRequestPostStr(request);
- log.info("cleanData receive params = {}", parameters);
- log.info("cleanData receive json = {}", requestBody);
- return CommonResult.success(queryString);
+ //todo 记录指令下发事件
+ return null;
}
}
diff --git a/nxhs-service/src/main/java/cc/yunxi/controller/EntranceController.java b/nxhs-service/src/main/java/cc/yunxi/controller/EntranceController.java
index ef8731c..04d2c22 100644
--- a/nxhs-service/src/main/java/cc/yunxi/controller/EntranceController.java
+++ b/nxhs-service/src/main/java/cc/yunxi/controller/EntranceController.java
@@ -1,49 +1,24 @@
package cc.yunxi.controller;
-import cc.yunxi.aspect.UserTypeAnnotation;
import cc.yunxi.common.domain.CommonResult;
-import cc.yunxi.common.domain.PageDTO;
import cc.yunxi.common.utils.BeanUtils;
import cc.yunxi.common.utils.WebUtils;
-import cc.yunxi.domain.dto.UserDTO;
-import cc.yunxi.domain.dto.WxLoginDTO;
import cc.yunxi.domain.dto.ZSGLoginDTO;
-import cc.yunxi.domain.po.Client;
-import cc.yunxi.domain.po.ClientAccountDetail;
-import cc.yunxi.domain.query.ClientAccountQuery;
-import cc.yunxi.domain.query.ClientQuery;
-import cc.yunxi.domain.vo.client.ClientAccountRespVO;
-import cc.yunxi.domain.vo.client.ClientRespVO;
-import cc.yunxi.domain.vo.client.ClientUpdateVO;
-import cc.yunxi.domain.vo.device.RecycleDeviceOpenDoorReqVO;
import cc.yunxi.domain.vo.device.RecycleDeviceRespVO;
-import cc.yunxi.domain.vo.file.FileUploadReqVO;
-import cc.yunxi.domain.vo.file.FileUploadRespVO;
-import cc.yunxi.enums.UserTypeEnum;
-import cc.yunxi.service.*;
+import cc.yunxi.service.IFileService;
import cc.yunxi.service.impl.CommonService;
import cc.yunxi.utils.RestTemplateUtils;
-import cc.yunxi.utils.UserContext;
-import cn.hutool.core.util.StrUtil;
-import cn.hutool.json.JSONArray;
-import cn.hutool.json.JSONUtil;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
-import org.springframework.http.HttpHeaders;
-import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
-import org.springframework.web.client.RestTemplate;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
-import java.util.LinkedHashMap;
-import java.util.List;
import java.util.Map;
/**
@@ -66,17 +41,17 @@ public class EntranceController {
@Resource
private CommonService commonService;
- @Resource
- private IRecycleDeviceService deviceService;
+// @Resource
+// private IRecycleDeviceService deviceService;
@Resource
private final IFileService fileService;
- @Resource
- private IRecycleDevicePhotoService recycleDevicePhotoService;
+// @Resource
+// private IRecycleDevicePhotoService recycleDevicePhotoService;
- @Resource
- private IRecycleDeviceRunningDataService recycleDeviceRunningDataService;
+// @Resource
+// private IRecycleDeviceRunningDataService recycleDeviceRunningDataService;
@ApiOperation("回收柜二维码请求设备信息接口")
@@ -94,22 +69,22 @@ public class EntranceController {
return CommonResult.success(zsgLoginDTO,"请求成功");
}
- @ApiOperation("回收柜设备状态上报")
- @RequestMapping("/device_state")
- public CommonResult ZSG_DeviceState(HttpServletRequest request) throws Exception {
- // 1. 参数解析处理
- Map dataMap = WebUtils.parseQueryString(request);
- String listDoor = dataMap.remove("listDoor");
- RecycleDeviceRespVO recycleDeviceRespVO = BeanUtils.copyBean(dataMap, RecycleDeviceRespVO.class);
- if(StrUtil.isNotEmpty(listDoor)) {
- JSONArray jsonArray = JSONUtil.parseArray(listDoor);
- List deviceDoorVOList = BeanUtils.copyList(jsonArray, RecycleDeviceRespVO.RecycleDeviceDoorVO.class);
- recycleDeviceRespVO.setListDoor(deviceDoorVOList);
- }
- log.info("recycleDeviceRespVO = {}", recycleDeviceRespVO);
- deviceService.saveDeviceInfo(recycleDeviceRespVO);
- return CommonResult.success("ok");
- }
+// @ApiOperation("回收柜设备状态上报")
+// @RequestMapping("/device_state")
+// public CommonResult ZSG_DeviceState(HttpServletRequest request) throws Exception {
+// // 1. 参数解析处理
+// Map dataMap = WebUtils.parseQueryString(request);
+// String listDoor = dataMap.remove("listDoor");
+// RecycleDeviceRespVO recycleDeviceRespVO = BeanUtils.copyBean(dataMap, RecycleDeviceRespVO.class);
+// if(StrUtil.isNotEmpty(listDoor)) {
+// JSONArray jsonArray = JSONUtil.parseArray(listDoor);
+// List deviceDoorVOList = BeanUtils.copyList(jsonArray, RecycleDeviceRespVO.RecycleDeviceDoorVO.class);
+// recycleDeviceRespVO.setListDoor(deviceDoorVOList);
+// }
+// log.info("recycleDeviceRespVO = {}", recycleDeviceRespVO);
+// deviceService.saveDeviceInfo(recycleDeviceRespVO);
+// return CommonResult.success("ok");
+// }
@SneakyThrows
@ApiOperation("开门")
@GetMapping("/open_door_for_devsn")
@@ -144,49 +119,49 @@ public class EntranceController {
return CommonResult.success("ok");
}
- @ApiOperation("投递照片上传")
- @PostMapping(value ="/device/file/delivery_photo", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
- public CommonResult ZSG_DeliveryPhoto(@RequestParam(name="orderid ",required = true) String orderid,@RequestBody FileUploadReqVO uploadReqVO) {
- FileUploadRespVO uploadRespVO = fileService.uploadImage(uploadReqVO);
-
- recycleDevicePhotoService.addRecycleDevicePhoto(orderid,uploadRespVO.getUrl());
- return CommonResult.success("请求成功");
- }
-
- @ApiOperation("清运照片上传")
- @PostMapping(value ="/device/file/clean_photo", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
- public CommonResult ZSG_CleanPhoto(@RequestParam(name="orderid ",required = true) String orderid,@RequestBody FileUploadReqVO uploadReqVO) {
- FileUploadRespVO uploadRespVO = fileService.uploadImage(uploadReqVO);
- recycleDevicePhotoService.addRecycleDevicePhoto(orderid,uploadRespVO.getUrl());
- return CommonResult.success("请求成功");
- }
-
- @ApiOperation("上传投递重量")
- @PostMapping(value ="/delivery_data")
- public CommonResult ZSG_DeliveryData(HttpServletRequest request) throws Exception {
-
- // 1. 参数解析处理
- Map dataMap = WebUtils.parseQueryString(request);
-
- RecycleDeviceRespVO recycleDeviceRespVO = BeanUtils.copyBean(dataMap, RecycleDeviceRespVO.class);
-
- // 2. 保存数据
- recycleDeviceRunningDataService.addRecycleDeviceRunningData(recycleDeviceRespVO,1);
-
- return CommonResult.success("上传成功");
- }
-
- @ApiOperation("上传清运重量")
- @PostMapping(value ="/clean_data")
- public CommonResult ZSG_CleanData(HttpServletRequest request) throws Exception {
- // 1. 参数解析处理
- Map dataMap = WebUtils.parseQueryString(request);
-
- RecycleDeviceRespVO recycleDeviceRespVO = BeanUtils.copyBean(dataMap, RecycleDeviceRespVO.class);
-
- // 2. 保存数据
- recycleDeviceRunningDataService.addRecycleDeviceRunningData(recycleDeviceRespVO,2);
-
- return CommonResult.success("上传成功");
- }
+// @ApiOperation("投递照片上传")
+// @PostMapping(value ="/device/file/delivery_photo", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
+// public CommonResult ZSG_DeliveryPhoto(@RequestParam(name="orderid ",required = true) String orderid,@RequestBody FileUploadReqVO uploadReqVO) {
+// FileUploadRespVO uploadRespVO = fileService.uploadImage(uploadReqVO);
+//
+// recycleDevicePhotoService.addRecycleDevicePhoto(orderid,uploadRespVO.getUrl());
+// return CommonResult.success("请求成功");
+// }
+
+// @ApiOperation("清运照片上传")
+// @PostMapping(value ="/device/file/clean_photo", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
+// public CommonResult ZSG_CleanPhoto(@RequestParam(name="orderid ",required = true) String orderid,@RequestBody FileUploadReqVO uploadReqVO) {
+// FileUploadRespVO uploadRespVO = fileService.uploadImage(uploadReqVO);
+// recycleDevicePhotoService.addRecycleDevicePhoto(orderid,uploadRespVO.getUrl());
+// return CommonResult.success("请求成功");
+// }
+
+// @ApiOperation("上传投递重量")
+// @PostMapping(value ="/delivery_data")
+// public CommonResult ZSG_DeliveryData(HttpServletRequest request) throws Exception {
+//
+// // 1. 参数解析处理
+// Map dataMap = WebUtils.parseQueryString(request);
+//
+// RecycleDeviceRespVO recycleDeviceRespVO = BeanUtils.copyBean(dataMap, RecycleDeviceRespVO.class);
+//
+// // 2. 保存数据
+// recycleDeviceRunningDataService.addRecycleDeviceRunningData(recycleDeviceRespVO,1);
+//
+// return CommonResult.success("上传成功");
+// }
+
+// @ApiOperation("上传清运重量")
+// @PostMapping(value ="/clean_data")
+// public CommonResult ZSG_CleanData(HttpServletRequest request) throws Exception {
+// // 1. 参数解析处理
+// Map dataMap = WebUtils.parseQueryString(request);
+//
+// RecycleDeviceRespVO recycleDeviceRespVO = BeanUtils.copyBean(dataMap, RecycleDeviceRespVO.class);
+//
+// // 2. 保存数据
+// recycleDeviceRunningDataService.addRecycleDeviceRunningData(recycleDeviceRespVO,2);
+//
+// return CommonResult.success("上传成功");
+// }
}
diff --git a/nxhs-service/src/main/java/cc/yunxi/domain/po/RecycleBucket.java b/nxhs-service/src/main/java/cc/yunxi/domain/po/RecycleBucket.java
new file mode 100644
index 0000000..a72f349
--- /dev/null
+++ b/nxhs-service/src/main/java/cc/yunxi/domain/po/RecycleBucket.java
@@ -0,0 +1,128 @@
+package cc.yunxi.domain.po;
+
+import com.baomidou.mybatisplus.annotation.*;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 回收桶配置
+ *
+ */
+@Data
+@TableName("nx_recycle_bucket")
+@ApiModel(value = "RecycleBucket", description = "回收桶配置")
+@EqualsAndHashCode(callSuper = false)
+public class RecycleBucket {
+ @TableId(value = "ID", type = IdType.ASSIGN_UUID)
+ private String id;
+ @TableField(value = "BUCKET_CODE")
+ @ApiModelProperty("回收桶编码")
+ private String bucketCode;
+ @TableField(value = "SHOW_NAME")
+ @ApiModelProperty("显示名字")
+ private String showName;
+ @TableField(value = "DOOR_NUM")
+ @ApiModelProperty("桶编号")
+ private Integer doorNum;
+ @TableField(value = "DEVICE_CODE")
+ @ApiModelProperty("设备编码")
+ private String deviceCode;
+ @TableField(value = "IS_SHOW")
+ @ApiModelProperty("是否显示")
+ private Integer isShow;
+ @TableField(value = "SHOW_ORD")
+ @ApiModelProperty("显示顺序")
+ private Integer showOrd;
+ @TableField(value = "PRODUCT_CODE")
+ @ApiModelProperty("产品编码")
+ private String productCode;
+ @TableField(value = "PRODUCT_SUB_CODE")
+ @ApiModelProperty("产品子编码")
+ private String productSubCode;
+ @TableField(value = "PRICE")
+ @ApiModelProperty("单价")
+ private BigDecimal price;
+ @TableField(value = "FULL_STATUS")
+ @ApiModelProperty("满溢状态")
+ private Integer fullStatus;
+ @TableField(value = "FULL_SET")
+ @ApiModelProperty(value = "满溢报警 0:关闭,1开启", allowableValues = "0,1")
+ private Integer fullSet;
+ @TableField(value = "SMOG_STATUS")
+ @ApiModelProperty(value = "烟雾报警状态 0:关闭,1开启", allowableValues = "0,1")
+ private Integer smogStatus;
+ @TableField(value = "SMOG_SET")
+ @ApiModelProperty(value = "烟雾报警 0:关闭,1开启", allowableValues = "0,1")
+ private Integer smogSet;
+ @TableField(value = "CONTAINER_WEIGHT")
+ @ApiModelProperty("容器重量")
+ private BigDecimal containerWeight;
+ @TableField(value = "CURRENT_WEIGHT")
+ @ApiModelProperty("当前总重")
+ private BigDecimal currentWeight;
+ @TableField(value = "WARNING_WEIGHT")
+ @ApiModelProperty("报警重量")
+ private BigDecimal warningWeight;
+ @TableField(value = "CLOSE_DELAY")
+ @ApiModelProperty("关闭延时")
+ private Integer closeDelay;
+ @TableField(value = "DELIVERY_DOOR_STATUS")
+ @ApiModelProperty(value = "投递门状态", allowableValues = "0,1")
+ private Integer deliveryDoorStatus;
+ @TableField(value = "CLEAN_DOOR_STATUS")
+ @ApiModelProperty(value = "清运门状态", allowableValues = "0,1")
+ private Integer cleanDoorStatus;
+ @TableField(value = "BAG_NO")
+ @ApiModelProperty("回收袋编号")
+ private String bagNo;
+ @TableField(value = "BUCKET_IMG")
+ @ApiModelProperty("桶图片")
+ private String bucketImg;
+ @TableField(value = "STATUS")
+ @ApiModelProperty(value = "使用状态", allowableValues = "0,1")
+ private Integer status;
+ @TableField(value = "F_TENANT_ID")
+ @ApiModelProperty("租户编码")
+ private String tenantId;
+ @TableField("F_CREATOR_TIME")
+ @ApiModelProperty("创建时间")
+ private Date creatorTime;
+ @TableField("F_CREATOR_USER_ID")
+ @ApiModelProperty("创建用户")
+ private String creatorUserId;
+ @TableField("F_LAST_MODIFY_TIME")
+ @ApiModelProperty("修改时间")
+ private Date lastModifyTime;
+ @TableField("F_LAST_MODIFY_USER_ID")
+ @ApiModelProperty("修改用户")
+ private String lastModifyUserId;
+ @TableField("F_DELETE_TIME")
+ @ApiModelProperty("删除时间")
+ private Date deleteTime;
+ @TableField("F_DELETE_USER_ID")
+ @ApiModelProperty("删除用户")
+ private String deleteUserId;
+ @TableField("F_DELETE_MARK")
+ @ApiModelProperty("删除标记")
+ private String deleteMark;
+ @TableField("COMPANY_ID")
+ @ApiModelProperty("公司ID")
+ private String companyId;
+ @TableField("DEPARTMENT_ID")
+ @ApiModelProperty("部门ID")
+ private String departmentId;
+ @TableField("ORGANIZE_JSON_ID")
+ @ApiModelProperty("组织架构")
+ private String organizeJsonId;
+ @TableField("F_VERSION")
+ @ApiModelProperty("版本")
+ private Integer version;
+ @TableField("F_FLOW_ID")
+ @ApiModelProperty("工作流")
+ private String flowId;
+}
diff --git a/nxhs-service/src/main/java/cc/yunxi/domain/po/RecycleCleanOrderEntity.java b/nxhs-service/src/main/java/cc/yunxi/domain/po/RecycleCleanOrderEntity.java
new file mode 100644
index 0000000..9d8250e
--- /dev/null
+++ b/nxhs-service/src/main/java/cc/yunxi/domain/po/RecycleCleanOrderEntity.java
@@ -0,0 +1,87 @@
+package cc.yunxi.domain.po;
+
+import com.baomidou.mybatisplus.annotation.FieldStrategy;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 回收柜清运单
+ *
+ * @版本: V3.5
+ * @版权: 引迈信息技术有限公司(https://www.jnpfsoft.com)
+ * @作者: JNPF开发平台组
+ * @日期: 2024-05-29
+ */
+@Data
+@TableName("nx_recycle_clean_order")
+public class RecycleCleanOrderEntity {
+ @TableId(value ="ID" )
+ private String id;
+ @TableField(value = "ORDER_NO" , updateStrategy = FieldStrategy.IGNORED)
+ private String orderNo;
+ @TableField(value = "DEVICE_CODE" , updateStrategy = FieldStrategy.IGNORED)
+ private String deviceCode;
+ @TableField(value = "BUCKET_CODE" , updateStrategy = FieldStrategy.IGNORED)
+ private String bucketCode;
+ @TableField(value = "DOOR_NUM" , updateStrategy = FieldStrategy.IGNORED)
+ private String doorNum;
+ @TableField(value = "PRODUCT_CODE" , updateStrategy = FieldStrategy.IGNORED)
+ private String productCode;
+ @TableField(value = "DEVICE_ORDER_NO" , updateStrategy = FieldStrategy.IGNORED)
+ private String deviceOrderNo;
+ @TableField(value = "PRODUCT_SUB_CODE" , updateStrategy = FieldStrategy.IGNORED)
+ private String productSubCode;
+ @TableField(value = "PRICE" , updateStrategy = FieldStrategy.IGNORED)
+ private BigDecimal price;
+ @TableField(value = "WEIGHT" , updateStrategy = FieldStrategy.IGNORED)
+ private BigDecimal weight;
+ @TableField(value = "TOTAL_PRICE" , updateStrategy = FieldStrategy.IGNORED)
+ private BigDecimal totalPrice;
+ @TableField(value = "ADJUST_WEIGHT" , updateStrategy = FieldStrategy.IGNORED)
+ private BigDecimal adjustWeight;
+ @TableField(value = "ADJUST_PRICE" , updateStrategy = FieldStrategy.IGNORED)
+ private BigDecimal adjustPrice;
+ @TableField(value = "CLEAN_USER_ID" , updateStrategy = FieldStrategy.IGNORED)
+ private String cleanUserId;
+ @TableField(value = "PHONE" , updateStrategy = FieldStrategy.IGNORED)
+ private String phone;
+ @TableField(value = "ENTRY_STATUS" , updateStrategy = FieldStrategy.IGNORED)
+ private Integer entryStatus;
+ @TableField(value = "BAG_NO" , updateStrategy = FieldStrategy.IGNORED)
+ private String bagNo;
+ @TableField(value = "ADJUST_STATUS" , updateStrategy = FieldStrategy.IGNORED)
+ private Integer adjustStatus;
+ @TableField(value = "ADJUST_COMM" , updateStrategy = FieldStrategy.IGNORED)
+ private String adjustComm;
+ @TableField(value = "F_TENANT_ID" , updateStrategy = FieldStrategy.IGNORED)
+ private String tenantId;
+ @TableField("F_CREATOR_TIME")
+ private Date creatorTime;
+ @TableField("F_CREATOR_USER_ID")
+ private String creatorUserId;
+ @TableField("F_LAST_MODIFY_TIME")
+ private Date lastModifyTime;
+ @TableField("F_LAST_MODIFY_USER_ID")
+ private String lastModifyUserId;
+ @TableField("F_DELETE_TIME")
+ private Date deleteTime;
+ @TableField("F_DELETE_USER_ID")
+ private Integer deleteUserId;
+ @TableField("F_DELETE_MARK")
+ private String deleteMark;
+ @TableField("COMPANY_ID")
+ private String companyId;
+ @TableField("DEPARTMENT_ID")
+ private String departmentId;
+ @TableField("ORGANIZE_JSON_ID")
+ private String organizeJsonId;
+ @TableField("F_VERSION")
+ private Integer version;
+ @TableField("F_FLOW_ID")
+ private String flowId;
+}
diff --git a/nxhs-service/src/main/java/cc/yunxi/domain/po/RecycleDeliveryOrderEntity.java b/nxhs-service/src/main/java/cc/yunxi/domain/po/RecycleDeliveryOrderEntity.java
new file mode 100644
index 0000000..ec53108
--- /dev/null
+++ b/nxhs-service/src/main/java/cc/yunxi/domain/po/RecycleDeliveryOrderEntity.java
@@ -0,0 +1,99 @@
+package cc.yunxi.domain.po;
+
+import com.baomidou.mybatisplus.annotation.FieldStrategy;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 回收柜投递订单
+ *
+ * @版本: V3.5
+ * @版权: 引迈信息技术有限公司(https://www.jnpfsoft.com)
+ * @作者: JNPF开发平台组
+ * @日期: 2024-05-31
+ */
+@Data
+@TableName("nx_recycle_delivery_order")
+public class RecycleDeliveryOrderEntity {
+ @TableId(value ="ID" )
+ private String id;
+ @TableField(value = "ORDER_NO" , updateStrategy = FieldStrategy.IGNORED)
+ private String orderNo;
+ @TableField(value = "DEVICE_ORDER_NO" , updateStrategy = FieldStrategy.IGNORED)
+ private Integer deviceOrderNo;
+ @TableField(value = "DEVICE_CODE" , updateStrategy = FieldStrategy.IGNORED)
+ private String deviceCode;
+ @TableField(value = "BUCKET_CODE" , updateStrategy = FieldStrategy.IGNORED)
+ private String bucketCode;
+ @TableField(value = "DOOR_NUM" , updateStrategy = FieldStrategy.IGNORED)
+ private Integer doorNum;
+ @TableField(value = "BAG_NO" , updateStrategy = FieldStrategy.IGNORED)
+ private Integer bagNo;
+ @TableField(value = "ORIGINAL_WEIGHT" , updateStrategy = FieldStrategy.IGNORED)
+ private BigDecimal originalWeight;
+ @TableField(value = "REPORT_WEIGHT" , updateStrategy = FieldStrategy.IGNORED)
+ private BigDecimal reportWeight;
+ @TableField(value = "ADJUST_WEIGHT" , updateStrategy = FieldStrategy.IGNORED)
+ private BigDecimal adjustWeight;
+ @TableField(value = "PRODUCT_CODE" , updateStrategy = FieldStrategy.IGNORED)
+ private String productCode;
+ @TableField(value = "PRODUCT_SUB_CODE" , updateStrategy = FieldStrategy.IGNORED)
+ private String productSubCode;
+ @TableField(value = "PRICE" , updateStrategy = FieldStrategy.IGNORED)
+ private BigDecimal price;
+ @TableField(value = "TOTAL_PRICE" , updateStrategy = FieldStrategy.IGNORED)
+ private BigDecimal totalPrice;
+ @TableField(value = "ADJUST_PRICE" , updateStrategy = FieldStrategy.IGNORED)
+ private BigDecimal adjustPrice;
+ @TableField(value = "ADJUST_SET" , updateStrategy = FieldStrategy.IGNORED)
+ private Integer adjustSet;
+ @TableField(value = "ADJUST_STATUS" , updateStrategy = FieldStrategy.IGNORED)
+ private Integer adjustStatus;
+ @TableField(value = "ADJUST_COMM" , updateStrategy = FieldStrategy.IGNORED)
+ private String adjustComm;
+ @TableField(value = "DELIVER_ID" , updateStrategy = FieldStrategy.IGNORED)
+ private String deliverId;
+ @TableField(value = "PHONE" , updateStrategy = FieldStrategy.IGNORED)
+ private String phone;
+ @TableField(value = "CLEAN_STATUS" , updateStrategy = FieldStrategy.IGNORED)
+ private Integer cleanStatus;
+ @TableField(value = "CLEAN_NO" , updateStrategy = FieldStrategy.IGNORED)
+ private String cleanNo;
+ @TableField(value = "CLEANER_PHONE" , updateStrategy = FieldStrategy.IGNORED)
+ private String cleanerPhone;
+ @TableField(value = "LOGIN_TYPE" , updateStrategy = FieldStrategy.IGNORED)
+ private Integer loginType;
+ @TableField(value = "PHOTO" , updateStrategy = FieldStrategy.IGNORED)
+ private String photo;
+ @TableField("F_FLOW_ID")
+ private String flowId;
+ @TableField("F_CREATOR_TIME")
+ private Date creatorTime;
+ @TableField("F_CREATOR_USER_ID")
+ private String creatorUserId;
+ @TableField("F_LAST_MODIFY_TIME")
+ private Date lastModifyTime;
+ @TableField("F_LAST_MODIFY_USER_ID")
+ private String lastModifyUserId;
+ @TableField("F_DELETE_TIME")
+ private Date deleteTime;
+ @TableField("F_DELETE_USER_ID")
+ private String deleteUserId;
+ @TableField("F_DELETE_MARK")
+ private String deleteMark;
+ @TableField("F_TENANT_ID")
+ private String tenantId;
+ @TableField("COMPANY_ID")
+ private String companyId;
+ @TableField("DEPARTMENT_ID")
+ private String departmentId;
+ @TableField("ORGANIZE_JSON_ID")
+ private String organizeJsonId;
+ @TableField("F_VERSION")
+ private Integer version;
+}
diff --git a/nxhs-service/src/main/java/cc/yunxi/domain/po/RecycleDevice.java b/nxhs-service/src/main/java/cc/yunxi/domain/po/RecycleDevice.java
index 105c05d..14a5b07 100644
--- a/nxhs-service/src/main/java/cc/yunxi/domain/po/RecycleDevice.java
+++ b/nxhs-service/src/main/java/cc/yunxi/domain/po/RecycleDevice.java
@@ -1,84 +1,92 @@
package cc.yunxi.domain.po;
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-
-import java.time.LocalDateTime;
-import java.util.Date;
+import com.baomidou.mybatisplus.annotation.*;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
-import lombok.Getter;
-import lombok.Setter;
+
+import java.util.Date;
/**
- *
* 回收柜设备表
- *
*
- * @author ccongli
- * @since 2024-04-11 10:33:58
*/
@Data
+@ApiModel(value = "RecycleDevice", description = "回收柜设备表")
+@EqualsAndHashCode(callSuper = false)
@TableName("nx_recycle_device")
-@ApiModel(value = "RecycleDevice对象", description = "回收柜设备表")
public class RecycleDevice {
-
- @ApiModelProperty("主键id")
- @EqualsAndHashCode.Exclude
- @TableId(value = "id", type = IdType.ASSIGN_ID)
+ @TableId(value = "ID", type = IdType.ASSIGN_UUID)
+ @ApiModelProperty("主键ID")
private String id;
-
+ @TableField(value = "DEVICE_CODE")
@ApiModelProperty("设备编码")
- @TableField("devsn")
- private String devsn;
-
- @ApiModelProperty("烟雾报警 0未报警 1报警")
- @TableField("allSmoke")
- private Integer allSmoke;
-
- @ApiModelProperty("是否满溢 0未满溢 1满溢")
- @TableField("isSpill")
- private Integer isSpill;
-
- @ApiModelProperty("是否超重报警 0未报警 1报警")
- @TableField("weightSpill")
- private Integer weightSpill;
-
- @ApiModelProperty("是否压缩报警 0未报警 1报警")
- @TableField("compressdSpill")
- private Integer compressdSpill;
-
- @ApiModelProperty("当前设备整体重量,多筒累加 kg")
- @TableField("weight")
- private Double weight;
-
- @ApiModelProperty("筒数量")
- @TableField("size")
- private Integer size;
-
- @ApiModelProperty("配置的版本号")
- @TableField("appConfigVersion")
- private String appConfigVersion;
-
+ private String deviceCode;
+ @TableField(value = "DEVICE_NAME")
+ @ApiModelProperty("设备名称")
+ private String deviceName;
+ @TableField(value = "CITY")
+ @ApiModelProperty("设备城市")
+ private String city;
+ @TableField(value = "ADDRESS")
+ @ApiModelProperty("地址")
+ private String address;
+ @TableField(value = "STATUS")
+ @ApiModelProperty(value = "在线状态")
+ private Integer status;
+ @TableField(value = "USE_STATUS")
+ @ApiModelProperty("启用状态")
+ private Integer useStatus;
+ @TableField(value = "IP_ADDRESS")
+ @ApiModelProperty("IP地址")
+ private String ipAddress;
+ @TableField(value = "BOX_WEIGHT")
+ @ApiModelProperty("箱体重量")
+ private Double boxWeight;
+ @TableField(value = "BE_LONG_STATION_CODE")
+ @ApiModelProperty("所属回收站")
+ private String beLongStationCode;
+ @TableField(value = "BE_LONG_COMPANY_ID")
+ @ApiModelProperty("所属商户")
+ private String beLongCompanyId;
+ @TableField(value = "LATITUDE")
+ @ApiModelProperty("纬度")
+ private String latitude;
+ @TableField(value = "LONGITUDE")
+ @ApiModelProperty("经度")
+ private String longitude;
+ @TableField("F_CREATOR_USER_ID")
+ @ApiModelProperty("创建用户")
+ private String creatorUserId;
+ @TableField("F_CREATOR_TIME")
@ApiModelProperty("创建时间")
- @TableField("f_creator_time")
- private LocalDateTime createTime;
-
- @ApiModelProperty("更新时间")
- @TableField("f_last_modify_time")
- private LocalDateTime updateTime;
-
- @ApiModelProperty("公司id")
- @TableField("company_id")
+ private Date creatorTime;
+ @TableField("F_LAST_MODIFY_TIME")
+ @ApiModelProperty("修改时间")
+ private Date lastModifyTime;
+ @TableField("F_LAST_MODIFY_USER_ID")
+ @ApiModelProperty("修改人")
+ private String lastModifyUserId;
+ @TableField("COMPANY_ID")
+ @ApiModelProperty("公司")
private String companyId;
-
+ @TableField("ORGANIZE_JSON_ID")
@ApiModelProperty("组织id")
- @TableField("organize_json_id")
private String organizeJsonId;
-
-
+ @TableField("F_FLOW_ID")
+ @ApiModelProperty("工作流")
+ private String flowId;
+ @TableField("F_DELETE_TIME")
+ @ApiModelProperty("删除时间")
+ private Date deleteTime;
+ @TableField("F_DELETE_USER_ID")
+ @ApiModelProperty("删除用户")
+ private String deleteUserId;
+ @TableField("F_DELETE_MARK")
+ @ApiModelProperty("删除标记")
+ private Integer deleteMark;
+ @TableField("F_TENANT_ID")
+ @ApiModelProperty("租户id")
+ private Integer tenantId;
}
diff --git a/nxhs-service/src/main/java/cc/yunxi/domain/po/RecycleDeviceConfig.java b/nxhs-service/src/main/java/cc/yunxi/domain/po/RecycleDeviceConfig.java
new file mode 100644
index 0000000..c67baf8
--- /dev/null
+++ b/nxhs-service/src/main/java/cc/yunxi/domain/po/RecycleDeviceConfig.java
@@ -0,0 +1,146 @@
+package cc.yunxi.domain.po;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 商户设备(配置)
+ */
+@Data
+@TableName("nx_recycle_device_config")
+@ApiModel(value = "商户设备(配置)")
+public class RecycleDeviceConfig {
+ @TableId(value = "ID")
+ @ApiModelProperty("主键")
+ private String id;
+ @TableField(value = "DELIVERY_PRICE")
+ @ApiModelProperty("统一价格")
+ private BigDecimal deliveryPrice;
+ @TableField(value = "BUCKET1_PRICE")
+ @ApiModelProperty("1号桶价格")
+ private BigDecimal bucket1Price;
+ @TableField(value = "BUCKET2_PRICE")
+ @ApiModelProperty("2号桶价格")
+ private BigDecimal bucket2Price;
+ @TableField(value = "BUCKET3_PRICE")
+ @ApiModelProperty("3号桶价格")
+ private BigDecimal bucket3Price;
+ @TableField(value = "BUCKET4_PRICE")
+ @ApiModelProperty("4号桶价格")
+ private BigDecimal bucket4Price;
+ @TableField(value = "BUCKET5_PRICE")
+ @ApiModelProperty("5号桶价格")
+ private BigDecimal bucket5Price;
+ @TableField(value = "BUCKET6_PRICE")
+ @ApiModelProperty("6号桶价格")
+ private BigDecimal bucket6Price;
+ @TableField(value = "BUCKET7_PRICE")
+ @ApiModelProperty("7号桶价格")
+ private BigDecimal bucket7Price;
+ @TableField(value = "BUCKET8_PRICE")
+ @ApiModelProperty("8号桶价格")
+ private BigDecimal bucket8Price;
+ @TableField(value = "BUCKET9_PRICE")
+ @ApiModelProperty("9号桶价格")
+ private BigDecimal bucket9Price;
+ @TableField(value = "BUCKET10_PRICE")
+ @ApiModelProperty("10号桶价格")
+ private BigDecimal bucket10Price;
+ @TableField(value = "BUCKET11_PRICE")
+ @ApiModelProperty("11号桶价格")
+ private BigDecimal bucket11Price;
+ @TableField(value = "BUCKET12_PRICE")
+ @ApiModelProperty("12号桶价格")
+ private BigDecimal bucket12Price;
+ @TableField(value = "DELIVERY_ADJUST_SET")
+ @ApiModelProperty(value = "投递审核配置 1:自动 2:24H 3:48H", allowableValues = "1,2,3")
+ private String deliveryAdjustSet;
+ @TableField(value = "CLEAN_ADJUST_SET")
+ @ApiModelProperty(value = "清运审核配置 1:自动 2:手动", allowableValues = "1,2")
+ private String cleanAdjustSet;
+ @TableField(value = "WARNING_WEIGHT")
+ @ApiModelProperty("报警重量")
+ private BigDecimal warningWeight;
+ @TableField(value = "CLOSE_DELAY")
+ @ApiModelProperty("投递关门延时")
+ private Integer closeDelay;
+ @TableField(value = "FULL_SET")
+ @ApiModelProperty(value = "满意报警 0:关闭 1:开启")
+ private String fullSet;
+ @TableField(value = "SMOG_SET")
+ @ApiModelProperty(value = "烟雾报警 0:关闭 1:开启")
+ private String smogSet;
+ @TableField(value = "CLEAN_LOCK")
+ @ApiModelProperty(value = "清运锁 0:关闭 1:开启")
+ private String cleanLock;
+ @TableField(value = "PROMOTION_SET")
+ @ApiModelProperty(value = "宣传配置 0:关闭 1:开启")
+ private String promotionSet;
+ @TableField(value = "ALLOW_PHONE_LOGIN")
+ @ApiModelProperty(value = "手机号登录 0:关闭 1:开启")
+ private String allowPhoneLogin;
+ @TableField("PROMOTION_SLOGANS")
+ @ApiModelProperty("宣传语")
+ private String promotionSlogans;
+ @TableField(value = "PROMOTION_PIC1")
+ @ApiModelProperty("宣传图片1")
+ private String promotionPic1;
+ @TableField("PROMOTION_PIC2")
+ @ApiModelProperty("宣传海报2")
+ private String promotionPic2;
+ @TableField("PROMOTION_PIC3")
+ @ApiModelProperty("宣传海报3")
+ private String promotionPic3;
+ @TableField("PROMOTION_PIC4")
+ @ApiModelProperty("宣传海报4")
+ private String promotionPic4;
+ @TableField("PROMOTION_PIC5")
+ @ApiModelProperty("宣传海报5")
+ private String promotionPic5;
+ @TableField("F_TENANT_ID")
+ @ApiModelProperty("租户id")
+ private String tenantId;
+ @TableField("F_CREATOR_TIME")
+ @ApiModelProperty("创建时间")
+ private Date creatorTime;
+ @TableField("F_CREATOR_USER_ID")
+ @ApiModelProperty("创建用户id")
+ private String creatorUserId;
+ @TableField("F_LAST_MODIFY_TIME")
+ @ApiModelProperty("修改时间")
+ private Date lastModifyTime;
+ @TableField("F_LAST_MODIFY_USER_ID")
+ @ApiModelProperty("修改用户")
+ private String lastModifyUserId;
+ @TableField("F_DELETE_TIME")
+ @ApiModelProperty("删除时间")
+ private Date deleteTime;
+ @TableField("F_DELETE_USER_ID")
+ @ApiModelProperty("删除用户")
+ private String deleteUserId;
+ @TableField("F_DELETE_MARK")
+ @ApiModelProperty("删除编辑")
+ private String deleteMark;
+ @TableField("COMPANY_ID")
+ @ApiModelProperty("公司id")
+ private String companyId;
+ @TableField("DEPARTMENT_ID")
+ @ApiModelProperty("部门id")
+ private String departmentId;
+ @TableField("ORGANIZE_JSON_ID")
+ @ApiModelProperty("组织id")
+ private String organizeJsonId;
+ @TableField("F_VERSION")
+ @ApiModelProperty("版本")
+ private Integer version;
+ @TableField("F_FLOW_ID")
+ @ApiModelProperty("工作流")
+ private String flowId;
+}
diff --git a/nxhs-service/src/main/java/cc/yunxi/domain/po/RecycleDevicePhoto.java b/nxhs-service/src/main/java/cc/yunxi/domain/po/RecycleDevicePhoto.java
deleted file mode 100644
index 486de50..0000000
--- a/nxhs-service/src/main/java/cc/yunxi/domain/po/RecycleDevicePhoto.java
+++ /dev/null
@@ -1,58 +0,0 @@
-package cc.yunxi.domain.po;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-
-import java.time.LocalDateTime;
-
-/**
- *
- * 回收柜设备表
- *
- *
- * @author ccongli
- * @since 2024-04-11 10:33:58
- */
-@Data
-@TableName("nx_recycle_device_photo")
-@ApiModel(value = "RecycleDevicePhoto对象", description = "回收柜投递/清运照片表")
-public class RecycleDevicePhoto {
-
- @ApiModelProperty("主键id")
- @EqualsAndHashCode.Exclude
- @TableId(value = "id", type = IdType.ASSIGN_ID)
- private String id;
-
- @ApiModelProperty("订单编号")
- @TableField("order_id")
- private String orderId;
-
- @ApiModelProperty("上传文件地址")
- @TableField("file_url")
- private String fileUrl;
-
-
- @ApiModelProperty("创建时间")
- @TableField("f_creator_time")
- private LocalDateTime createTime;
-
- @ApiModelProperty("更新时间")
- @TableField("f_last_modify_time")
- private LocalDateTime updateTime;
-
- @ApiModelProperty("公司id")
- @TableField("company_id")
- private String companyId;
-
- @ApiModelProperty("组织id")
- @TableField("organize_json_id")
- private String organizeJsonId;
-
-
-}
diff --git a/nxhs-service/src/main/java/cc/yunxi/domain/po/RecycleDeviceRunningData.java b/nxhs-service/src/main/java/cc/yunxi/domain/po/RecycleDeviceRunningData.java
deleted file mode 100644
index 432e9f6..0000000
--- a/nxhs-service/src/main/java/cc/yunxi/domain/po/RecycleDeviceRunningData.java
+++ /dev/null
@@ -1,79 +0,0 @@
-package cc.yunxi.domain.po;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
-
-/**
- *
- * 回收柜设备表
- *
- *
- * @author ccongli
- * @since 2024-04-11 10:33:58
- */
-@Data
-@TableName("nx_recycle_device_running_data")
-@ApiModel(value = "RecycleDeviceRunningData", description = "回收柜投递/清运订单表")
-public class RecycleDeviceRunningData {
-
- @ApiModelProperty("主键id")
- @EqualsAndHashCode.Exclude
- @TableId(value = "id", type = IdType.ASSIGN_ID)
- private String id;
-
- @ApiModelProperty("投递/清运编号")
- @TableField("no")
- private String no;
-
- @ApiModelProperty("重量")
- @TableField("weight")
- private BigDecimal weight;
-
- @ApiModelProperty("价格")
- @TableField("price")
- private BigDecimal price;
-
- @ApiModelProperty("订单编号")
- @TableField("order_id")
- private String orderId;
-
- @ApiModelProperty("手机号码")
- @TableField("phone")
- private String phone;
-
- @ApiModelProperty("类型:1为投递,2为清运")
- @TableField("type")
- private Integer type;
-
- @ApiModelProperty("提交信息详细")
- @TableField("postDetail")
- private String postDetail;
-
-
- @ApiModelProperty("创建时间")
- @TableField("f_creator_time")
- private LocalDateTime createTime;
-
- @ApiModelProperty("更新时间")
- @TableField("f_last_modify_time")
- private LocalDateTime updateTime;
-
- @ApiModelProperty("公司id")
- @TableField("company_id")
- private String companyId;
-
- @ApiModelProperty("组织id")
- @TableField("organize_json_id")
- private String organizeJsonId;
-
-
-}
diff --git a/nxhs-service/src/main/java/cc/yunxi/domain/vo/device/CleanOrderVO.java b/nxhs-service/src/main/java/cc/yunxi/domain/vo/device/CleanOrderVO.java
new file mode 100644
index 0000000..2e85d9b
--- /dev/null
+++ b/nxhs-service/src/main/java/cc/yunxi/domain/vo/device/CleanOrderVO.java
@@ -0,0 +1,26 @@
+package cc.yunxi.domain.vo.device;
+
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+@Data
+@ApiModel("清运单")
+public class CleanOrderVO {
+
+ private String id;
+ private String orderNo;
+ private String orderType;
+ private String orderStatus;
+ private String orderTime;
+ private String orderAddress;
+ private String orderDesc;
+ private String orderUser;
+ private String orderUserPhone;
+ private String orderUserAddress;
+ private String orderUserAddressDetail;
+ private String orderUserAddressLongitude;
+ private String orderUserAddressLatitude;
+ private String orderUserAddressArea;
+ private String orderUserAddressAreaCode;
+ private String orderUserAddressCity;
+}
diff --git a/nxhs-service/src/main/java/cc/yunxi/domain/vo/device/CommandVO.java b/nxhs-service/src/main/java/cc/yunxi/domain/vo/device/CommandVO.java
new file mode 100644
index 0000000..d747f2b
--- /dev/null
+++ b/nxhs-service/src/main/java/cc/yunxi/domain/vo/device/CommandVO.java
@@ -0,0 +1,26 @@
+package cc.yunxi.domain.vo.device;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.time.LocalDateTime;
+
+@Data
+@ApiModel("设备控制命令")
+public class CommandVO {
+ @ApiModelProperty(value = "命令", required = true, example = "reboot")
+ @NotBlank(message = "命令不能为空")
+ private String cmd;
+ @ApiModelProperty(value = "命令参数", required = true, example = "设备编码")
+ @NotBlank(message = "命令参数不能为空")
+ private String data;
+ @ApiModelProperty(value = "操作时间", required = true, example = "admin")
+ @NotNull(message = "操作时间不能为空")
+ private LocalDateTime optTime;
+ @ApiModelProperty(value = "备注", example = "重启设备")
+ private String remark;
+
+}
diff --git a/nxhs-service/src/main/java/cc/yunxi/domain/vo/device/DeliveryOrderVO.java b/nxhs-service/src/main/java/cc/yunxi/domain/vo/device/DeliveryOrderVO.java
new file mode 100644
index 0000000..6431a24
--- /dev/null
+++ b/nxhs-service/src/main/java/cc/yunxi/domain/vo/device/DeliveryOrderVO.java
@@ -0,0 +1,46 @@
+package cc.yunxi.domain.vo.device;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.util.List;
+
+@Data
+@ApiModel("投递单")
+public class DeliveryOrderVO {
+ @ApiModelProperty("订单号")
+ private String orderNum;
+ @ApiModelProperty("设备编码")
+ private String deviceCode;
+ @ApiModelProperty("桶编码")
+ private String bucketCode;
+ @ApiModelProperty("门号")
+ private String doorNum;
+ @ApiModelProperty("回收大类")
+ private String code;
+ @ApiModelProperty("回收子类")
+ private String subCode;
+ @ApiModelProperty("回收单价")
+ private BigDecimal price;
+ @ApiModelProperty("重量")
+ private BigDecimal weight;
+ @ApiModelProperty("总价")
+ private BigDecimal totalPrice;
+ @ApiModelProperty("开始时间")
+ private LocalDateTime starTime;
+ @ApiModelProperty("完成时间")
+ private LocalDateTime finishTime;
+ @ApiModelProperty("用户id")
+ private String userId;
+ @ApiModelProperty("用户手机")
+ private String phone;
+ @ApiModelProperty("上报类型")
+ private String reportType;
+ @ApiModelProperty("上报时间")
+ private LocalDateTime reportTime;
+ @ApiModelProperty("抓拍图片")
+ private List images;
+}
diff --git a/nxhs-service/src/main/java/cc/yunxi/domain/vo/device/DeviceEventVO.java b/nxhs-service/src/main/java/cc/yunxi/domain/vo/device/DeviceEventVO.java
new file mode 100644
index 0000000..6c1f92e
--- /dev/null
+++ b/nxhs-service/src/main/java/cc/yunxi/domain/vo/device/DeviceEventVO.java
@@ -0,0 +1,33 @@
+package cc.yunxi.domain.vo.device;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel("设备事件")
+public class DeviceEventVO {
+
+ @ApiModelProperty("设备编码")
+ private String deviceCode;
+ @ApiModelProperty("桶编码")
+ private String bucketCode;
+ @ApiModelProperty("门号")
+ private String doorNum;
+ @ApiModelProperty("事件类型")
+ private String eventType;
+ @ApiModelProperty("事件时间")
+ private String eventTime;
+ @ApiModelProperty("事件描述")
+ private String eventDesc;
+ @ApiModelProperty("订单号")
+ private String orderNo;
+ @ApiModelProperty("订单类型")
+ private String orderType;
+ @ApiModelProperty("用户ID")
+ private String userId;
+ @ApiModelProperty("用户手机号")
+ private String phone;
+ @ApiModelProperty("是否本地")
+ private String isLocal;
+}
diff --git a/nxhs-service/src/main/java/cc/yunxi/domain/vo/device/DeviceRespVO.java b/nxhs-service/src/main/java/cc/yunxi/domain/vo/device/DeviceRespVO.java
new file mode 100644
index 0000000..daf17bb
--- /dev/null
+++ b/nxhs-service/src/main/java/cc/yunxi/domain/vo/device/DeviceRespVO.java
@@ -0,0 +1,95 @@
+package cc.yunxi.domain.vo.device;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+import java.util.List;
+
+@Data
+@ApiModel("设备信息配置")
+public class DeviceRespVO {
+ @ApiModelProperty(value = "设备编码", required = true, example = "DE000001")
+ @NotBlank(message = "设备编码不能为空")
+ private String deviceCode;
+ @ApiModelProperty(value = "设备名称", required = true, example = "设备1")
+ @NotBlank(message = "设备名称不能为空")
+ private String deviceName;
+ @ApiModelProperty(value = "是否开启服务", required = true, example = "1")
+ @NotNull(message = "是否开启服务不能为空")
+ private Integer userStatus;
+ @ApiModelProperty(value = "是否开启清理锁", required = true, example = "1")
+ @NotNull(message = "是否开启清理锁不能为空")
+ private Integer cleanLock;
+ @ApiModelProperty("是否开启手机号登录")
+ private String usePhoneLogin;
+ @ApiModelProperty("设备桶清单")
+ private List bucketList;
+ @ApiModelProperty("设备二维码")
+ @NotNull(message = "设备二维码不能为空")
+ private String qrCode;
+ @ApiModelProperty(value = "设备宣传设置", required = true, example = "1")
+ @NotBlank(message = "设备宣传设置不能为空")
+ private String promotionSet;
+ @ApiModelProperty("设备宣传语")
+ private String slogan;
+ @ApiModelProperty("宣传海报")
+ private List posterList;
+
+ @Data
+ @ApiModel("桶配置信息")
+ @Accessors(chain = true)
+ public static class Bucket {
+ @ApiModelProperty(value = "桶编码", required = true, example = "bk00001")
+ @NotBlank(message = "桶编码不能为空")
+ private String bucketCode;
+ @ApiModelProperty(value = "门号", required = true, example = "1")
+ @NotBlank(message = "门号不能为空")
+ private Integer doorNum;
+ @ApiModelProperty(value = "显示顺序", required = true, example = "1")
+ @NotNull(message = "显示顺序不能为空")
+ private Integer ordNum;
+ @ApiModelProperty(value = "回收大类", required = true, example = "HS001")
+ @NotBlank(message = "回收大类不能为空")
+ private String code;
+ @ApiModelProperty(value = "回收子类", example = "HS001001")
+ private String subCode;
+ @ApiModelProperty(value = "显示文字", required = true, example = "纸张&废塑料")
+ @NotBlank(message = "显示文字不能为空")
+ private String showText;
+ @ApiModelProperty(value = "满溢报警", required = true, example = "1")
+ @NotNull(message = "满溢报警不能为空")
+ private Integer fullAlarm;
+ @ApiModelProperty(value = "烟雾报警", required = true, example = "1")
+ @NotNull(message = "烟雾报警不能为空")
+ private Integer smokeAlarm;
+ @ApiModelProperty(value = "单价", required = true, example = "1.00")
+ @NotNull(message = "单价不能为空")
+ private BigDecimal price;
+ @ApiModelProperty(value = "单次限重", required = true, example = "1.00")
+ @NotNull(message = "单次限重不能为空")
+ private BigDecimal singleWeightLimit;
+ @ApiModelProperty(value = "总限重", required = true, example = "1.00")
+ @NotNull(message = "总限重不能为空")
+ private BigDecimal totalWeightLimit;
+ @ApiModelProperty(value = "桶身图片", required = true)
+ @NotNull(message = "桶身图片不能为空")
+ private String image;
+ }
+
+
+ @Data
+ @ApiModel("海报")
+ @Accessors(chain = true)
+ public static class Poster {
+ @ApiModelProperty("显示顺序")
+ private Integer showOrd;
+ @ApiModelProperty("图片")
+ private String image;
+
+ }
+}
diff --git a/nxhs-service/src/main/java/cc/yunxi/domain/vo/device/DeviceStatus.java b/nxhs-service/src/main/java/cc/yunxi/domain/vo/device/DeviceStatus.java
new file mode 100644
index 0000000..bec9c97
--- /dev/null
+++ b/nxhs-service/src/main/java/cc/yunxi/domain/vo/device/DeviceStatus.java
@@ -0,0 +1,22 @@
+package cc.yunxi.domain.vo.device;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Data
+@ApiModel("设备状态")
+public class DeviceStatus {
+ @ApiModelProperty("设备编码")
+ private String deviceCode;//设备编码
+ @ApiModelProperty("设备ip地址")
+ private String ip;//IP地址
+ @ApiModelProperty("最后心跳时间")
+ private LocalDateTime heartBeat;//心跳时间
+ @ApiModelProperty("ip是否变化")
+ private Boolean ipChanged;//ip是否变化
+ @ApiModelProperty("设备是否在线")
+ private Boolean online;//设备是否在线
+}
diff --git a/nxhs-service/src/main/java/cc/yunxi/domain/vo/device/DeviceVO.java b/nxhs-service/src/main/java/cc/yunxi/domain/vo/device/DeviceVO.java
new file mode 100644
index 0000000..2fd4efb
--- /dev/null
+++ b/nxhs-service/src/main/java/cc/yunxi/domain/vo/device/DeviceVO.java
@@ -0,0 +1,15 @@
+package cc.yunxi.domain.vo.device;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+
+@Data
+@ApiModel(value = "DeviceVO", description = "设备信息")
+public class DeviceVO {
+ @ApiModelProperty(value = "设备编码", required = true)
+ @NotBlank(message = "设备编码不能为空")
+ private String deviceCode;
+}
diff --git a/nxhs-service/src/main/java/cc/yunxi/domain/vo/device/LoginReqVO.java b/nxhs-service/src/main/java/cc/yunxi/domain/vo/device/LoginReqVO.java
new file mode 100644
index 0000000..7e7f1c2
--- /dev/null
+++ b/nxhs-service/src/main/java/cc/yunxi/domain/vo/device/LoginReqVO.java
@@ -0,0 +1,23 @@
+package cc.yunxi.domain.vo.device;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+
+//手机号登录
+@Data
+@ApiModel("手机号登录")
+public class LoginReqVO {
+ //手机号
+ @ApiModelProperty(value = "设备编码", required = true, example = "DE123456789")
+ @NotBlank(message = "设备编码不能为空")
+ private String deviceCode;
+ //设备编码
+ @ApiModelProperty(value = "手机号", required = true, example = "13800138000")
+ @NotBlank(message = "手机号不能为空")
+ private String phone;
+
+}
diff --git a/nxhs-service/src/main/java/cc/yunxi/domain/vo/device/LoginRespVO.java b/nxhs-service/src/main/java/cc/yunxi/domain/vo/device/LoginRespVO.java
new file mode 100644
index 0000000..807f63c
--- /dev/null
+++ b/nxhs-service/src/main/java/cc/yunxi/domain/vo/device/LoginRespVO.java
@@ -0,0 +1,24 @@
+package cc.yunxi.domain.vo.device;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+//设备手机号登录成功
+@Data
+@ApiModel("设备手机号登录成功")
+public class LoginRespVO {
+ @ApiModelProperty("用户id")
+ private String userId;//用户id
+ @ApiModelProperty("用户名")
+ private String userName;//用户名
+ @ApiModelProperty("用户状态")
+ private String status;//用户状态
+ private String phone;//手机号
+ private String token;//手机号
+ private Long timeExpire;
+ private String deviceCode;//设备编码
+ private List roles;//用户角色
+}
diff --git a/nxhs-service/src/main/java/cc/yunxi/domain/vo/device/RecycleDeviceOpenDoorReqVO.java b/nxhs-service/src/main/java/cc/yunxi/domain/vo/device/RecycleDeviceOpenDoorReqVO.java
deleted file mode 100644
index 27dcf8e..0000000
--- a/nxhs-service/src/main/java/cc/yunxi/domain/vo/device/RecycleDeviceOpenDoorReqVO.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package cc.yunxi.domain.vo.device;
-
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-
-import javax.validation.constraints.NotBlank;
-import javax.validation.constraints.NotNull;
-import javax.validation.constraints.Past;
-import javax.validation.constraints.Size;
-import java.time.LocalDateTime;
-
-/**
- *
- * 散户信息VO
- *
- *
- * @author ccongli
- * @since 2024-02-28 16:08:09
- */
-@Data
-@ApiModel(description = "设备柜开门 Request VO")
-public class RecycleDeviceOpenDoorReqVO {
-
- @ApiModelProperty(value = "设备编码", required = true)
- @NotBlank(message = "设备编码不能为空")
- private String devsn;
-
- @ApiModelProperty(value = "手机号码", required = true)
- @NotBlank(message = "手机号码不能为空")
- private String loginName;
-
- @ApiModelProperty(value = "垃圾袋编码", required = true)
- @NotBlank(message = "垃圾袋编码不能为空")
- private String bagNo;
-}
diff --git a/nxhs-service/src/main/java/cc/yunxi/domain/vo/device/Snap.java b/nxhs-service/src/main/java/cc/yunxi/domain/vo/device/Snap.java
new file mode 100644
index 0000000..2b00a88
--- /dev/null
+++ b/nxhs-service/src/main/java/cc/yunxi/domain/vo/device/Snap.java
@@ -0,0 +1,18 @@
+package cc.yunxi.domain.vo.device;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+@Data
+@ApiModel("抓拍")
+@Accessors(chain = true)
+public class Snap {
+ @ApiModelProperty(value = "内外",required = true,allowableValues = "inside,outside")
+ private String inside;
+ @ApiModelProperty("抓拍时间")
+ private String takeTime;
+ @ApiModelProperty("图片")
+ private byte[] image;
+}
diff --git a/nxhs-service/src/main/java/cc/yunxi/mapper/RecycleBucketMapper.java b/nxhs-service/src/main/java/cc/yunxi/mapper/RecycleBucketMapper.java
new file mode 100644
index 0000000..4c11f97
--- /dev/null
+++ b/nxhs-service/src/main/java/cc/yunxi/mapper/RecycleBucketMapper.java
@@ -0,0 +1,12 @@
+package cc.yunxi.mapper;
+
+import cc.yunxi.domain.po.RecycleBucket;
+import cc.yunxi.domain.po.RecycleDevice;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface RecycleBucketMapper extends BaseMapper {
+
+ // TODO 此处编写RecycleDevice的mapper.xml文件中需要的方法
+}
diff --git a/nxhs-service/src/main/java/cc/yunxi/mapper/RecycleDeviceConfigMapper.java b/nxhs-service/src/main/java/cc/yunxi/mapper/RecycleDeviceConfigMapper.java
new file mode 100644
index 0000000..2c46158
--- /dev/null
+++ b/nxhs-service/src/main/java/cc/yunxi/mapper/RecycleDeviceConfigMapper.java
@@ -0,0 +1,11 @@
+package cc.yunxi.mapper;
+
+import cc.yunxi.domain.po.RecycleDeviceConfig;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface RecycleDeviceConfigMapper extends BaseMapper {
+
+ // TODO 此处编写RecycleDevice的mapper.xml文件中需要的方法
+}
diff --git a/nxhs-service/src/main/java/cc/yunxi/mapper/RecycleDeviceMapper.java b/nxhs-service/src/main/java/cc/yunxi/mapper/RecycleDeviceMapper.java
index 9b924bd..8a36d32 100644
--- a/nxhs-service/src/main/java/cc/yunxi/mapper/RecycleDeviceMapper.java
+++ b/nxhs-service/src/main/java/cc/yunxi/mapper/RecycleDeviceMapper.java
@@ -4,14 +4,6 @@ import cc.yunxi.domain.po.RecycleDevice;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
-/**
- *
- * 回收柜设备表 Mapper 接口
- *
- *
- * @author ccongli
- * @since 2024-04-11 10:33:58
- */
@Mapper
public interface RecycleDeviceMapper extends BaseMapper {
diff --git a/nxhs-service/src/main/java/cc/yunxi/mapper/RecycleDevicePhotoMapper.java b/nxhs-service/src/main/java/cc/yunxi/mapper/RecycleDevicePhotoMapper.java
deleted file mode 100644
index 218a98a..0000000
--- a/nxhs-service/src/main/java/cc/yunxi/mapper/RecycleDevicePhotoMapper.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package cc.yunxi.mapper;
-
-import cc.yunxi.domain.po.RecycleDevice;
-import cc.yunxi.domain.po.RecycleDevicePhoto;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import org.apache.ibatis.annotations.Mapper;
-
-/**
- *
- * 回收柜设备表 Mapper 接口
- *
- *
- * @author ccongli
- * @since 2024-04-11 10:33:58
- */
-@Mapper
-public interface RecycleDevicePhotoMapper extends BaseMapper {
-
-}
diff --git a/nxhs-service/src/main/java/cc/yunxi/mapper/RecycleDeviceRunningDataMapper.java b/nxhs-service/src/main/java/cc/yunxi/mapper/RecycleDeviceRunningDataMapper.java
deleted file mode 100644
index 81b217d..0000000
--- a/nxhs-service/src/main/java/cc/yunxi/mapper/RecycleDeviceRunningDataMapper.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package cc.yunxi.mapper;
-
-import cc.yunxi.domain.po.RecycleDevicePhoto;
-import cc.yunxi.domain.po.RecycleDeviceRunningData;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import org.apache.ibatis.annotations.Mapper;
-
-/**
- *
- * 回收柜设备表 Mapper 接口
- *
- *
- * @author ccongli
- * @since 2024-04-11 10:33:58
- */
-@Mapper
-public interface RecycleDeviceRunningDataMapper extends BaseMapper {
-
-}
diff --git a/nxhs-service/src/main/java/cc/yunxi/service/IFileService.java b/nxhs-service/src/main/java/cc/yunxi/service/IFileService.java
index 4143a26..3babc2b 100644
--- a/nxhs-service/src/main/java/cc/yunxi/service/IFileService.java
+++ b/nxhs-service/src/main/java/cc/yunxi/service/IFileService.java
@@ -21,6 +21,7 @@ public interface IFileService extends IService {
/**
* 上传文件
+ *
* @param uploadReqVO
* @return FileUploadRespVO
*/
@@ -29,11 +30,36 @@ public interface IFileService extends IService {
/**
* 上传图片
+ *
* @param uploadReqVO
* @return FileUploadRespVO
*/
FileUploadRespVO uploadImage(@Valid FileUploadReqVO uploadReqVO);
+ /**
+ * 将图片文件转换成base64
+ *
+ * @param file
+ * @return base64
+ */
+ String encodeToBase64(byte[] file);
+
+ /**
+ * 将base64转换成图片文件
+ *
+ * @param image
+ * @return
+ */
+ byte[] decodeToBase64(String image);
+
+
+ /**
+ * 上传Base64图片
+ *
+ * @param image64
+ * @return FileUploadRespVO
+ */
+ FileUploadRespVO uploadImage(String image64, String filename);
/**
* 下载文件
diff --git a/nxhs-service/src/main/java/cc/yunxi/service/IRecycleBucketService.java b/nxhs-service/src/main/java/cc/yunxi/service/IRecycleBucketService.java
new file mode 100644
index 0000000..59a6be4
--- /dev/null
+++ b/nxhs-service/src/main/java/cc/yunxi/service/IRecycleBucketService.java
@@ -0,0 +1,14 @@
+package cc.yunxi.service;
+
+import cc.yunxi.domain.po.RecycleBucket;
+import com.baomidou.mybatisplus.extension.service.IService;
+import javax.validation.constraints.NotBlank;
+import java.util.List;
+
+public interface IRecycleBucketService extends IService {
+
+ RecycleBucket getByBucketCode(@NotBlank(message = "桶编码不能为空") String bucketCode);
+
+ List getByDeviceCode(@NotBlank(message = "设备编码不能为空") String deviceCode);
+
+}
diff --git a/nxhs-service/src/main/java/cc/yunxi/service/IRecycleDeviceConfigService.java b/nxhs-service/src/main/java/cc/yunxi/service/IRecycleDeviceConfigService.java
new file mode 100644
index 0000000..f9a221c
--- /dev/null
+++ b/nxhs-service/src/main/java/cc/yunxi/service/IRecycleDeviceConfigService.java
@@ -0,0 +1,11 @@
+package cc.yunxi.service;
+
+import cc.yunxi.domain.po.RecycleDeviceConfig;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import javax.validation.constraints.NotBlank;
+
+public interface IRecycleDeviceConfigService extends IService {
+
+ RecycleDeviceConfig getByCompanyId(@NotBlank(message = "companyId 不能为空") String companyId);
+}
diff --git a/nxhs-service/src/main/java/cc/yunxi/service/IRecycleDevicePhotoService.java b/nxhs-service/src/main/java/cc/yunxi/service/IRecycleDevicePhotoService.java
deleted file mode 100644
index 6c5afde..0000000
--- a/nxhs-service/src/main/java/cc/yunxi/service/IRecycleDevicePhotoService.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package cc.yunxi.service;
-
-import cc.yunxi.domain.po.RecycleDevice;
-import cc.yunxi.domain.po.RecycleDevicePhoto;
-import cc.yunxi.domain.vo.device.RecycleDeviceRespVO;
-import com.baomidou.mybatisplus.extension.service.IService;
-
-import javax.validation.Valid;
-
-/**
- *
- * 回收柜设备表 服务类
- *
- *
- * @author ccongli
- * @since 2024-04-11 10:33:58
- */
-public interface IRecycleDevicePhotoService extends IService {
-
- Boolean addRecycleDevicePhoto(String orderId,String url);
-}
diff --git a/nxhs-service/src/main/java/cc/yunxi/service/IRecycleDeviceRunningDataService.java b/nxhs-service/src/main/java/cc/yunxi/service/IRecycleDeviceRunningDataService.java
deleted file mode 100644
index dc392c8..0000000
--- a/nxhs-service/src/main/java/cc/yunxi/service/IRecycleDeviceRunningDataService.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package cc.yunxi.service;
-
-import cc.yunxi.domain.po.RecycleDevicePhoto;
-import cc.yunxi.domain.po.RecycleDeviceRunningData;
-import cc.yunxi.domain.vo.device.RecycleDeviceRespVO;
-import com.baomidou.mybatisplus.extension.service.IService;
-
-/**
- *
- * 回收柜设备表 服务类
- *
- *
- * @author ccongli
- * @since 2024-04-11 10:33:58
- */
-public interface IRecycleDeviceRunningDataService extends IService {
-
- Boolean addRecycleDeviceRunningData(RecycleDeviceRespVO recycleDeviceRespVO,Integer type);
-}
diff --git a/nxhs-service/src/main/java/cc/yunxi/service/IRecycleDeviceService.java b/nxhs-service/src/main/java/cc/yunxi/service/IRecycleDeviceService.java
index f4bd450..3c3feec 100644
--- a/nxhs-service/src/main/java/cc/yunxi/service/IRecycleDeviceService.java
+++ b/nxhs-service/src/main/java/cc/yunxi/service/IRecycleDeviceService.java
@@ -1,30 +1,16 @@
package cc.yunxi.service;
import cc.yunxi.domain.po.RecycleDevice;
-import cc.yunxi.domain.vo.device.RecycleDeviceRespVO;
import com.baomidou.mybatisplus.extension.service.IService;
-import javax.validation.Valid;
+import javax.validation.constraints.NotBlank;
+import java.util.List;
-/**
- *
- * 回收柜设备表 服务类
- *
- *
- * @author ccongli
- * @since 2024-04-11 10:33:58
- */
public interface IRecycleDeviceService extends IService {
- /**
- * 获取设备信息
- */
- RecycleDevice getDeviceInfo(String devsn);
+ RecycleDevice getByDeviceCode(@NotBlank String deviceCode);
+ List getByDeviceName(@NotBlank String companyId);
-
- /**
- * 保存设备信息
- */
- void saveDeviceInfo(@Valid RecycleDeviceRespVO recycleDeviceRespVO);
+ int updateDevice();
}
diff --git a/nxhs-service/src/main/java/cc/yunxi/service/impl/FileServiceImpl.java b/nxhs-service/src/main/java/cc/yunxi/service/impl/FileServiceImpl.java
index 3d319d2..7377a1f 100644
--- a/nxhs-service/src/main/java/cc/yunxi/service/impl/FileServiceImpl.java
+++ b/nxhs-service/src/main/java/cc/yunxi/service/impl/FileServiceImpl.java
@@ -32,6 +32,7 @@ import java.io.InputStream;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.time.LocalDateTime;
+import java.util.Base64;
import java.util.List;
import java.util.Optional;
@@ -70,6 +71,7 @@ public class FileServiceImpl extends ServiceImpl implements IF
/**
* 通过hash值查找File
+ *
* @param hashName
* @return File
*/
@@ -167,6 +169,71 @@ public class FileServiceImpl extends ServiceImpl implements IF
}
}
+ @Override
+ public String encodeToBase64(byte[] file) {
+ return Base64.getEncoder().encodeToString(file);
+ }
+
+ @Override
+ public byte[] decodeToBase64(String image) {
+ return Base64.getDecoder().decode(image);
+ }
+
+ @Override
+ public FileUploadRespVO uploadImage(String image64, String fileName) {
+ byte[] image = decodeToBase64(image64);
+ return base64ImageUpload(image, fileName, FileStyleEnum.IMAGE);
+ }
+
+ private FileUploadRespVO base64ImageUpload(byte[] content, String fileName, FileStyleEnum fileStyleEnum) {
+ try {
+ String[] split = fileName.split("\\.");
+ String fileType = split[split.length - 1];
+ if (!imageAllowTypes.contains(fileType.toLowerCase())) {
+ throw new BizIllegalException("图片格式不正确");
+ }
+ if (content.length > DataSizeUtil.parse(imageMaxSize)) {
+ throw new BizIllegalException("图片大小限制" + fileMaxSize);
+ }
+ // 生成md5文件名
+ String hashName = FileUtils.generateName(content, fileName);
+ // 确定上传路径
+ String URI = basePath + fileStyleEnum.toString().toLowerCase() + "/" + hashName;
+ String fullPath = System.getProperty("user.dir") + URI;
+ // 判断文件是否存在,如果存在直接返回
+ FileUploadRespVO uploadRespVO = new FileUploadRespVO();
+ File fileInfo = getFileInfoByHashVal(hashName);
+ if (fileInfo != null && FileUtil.exist(fullPath)) {
+ uploadRespVO.setName(fileInfo.getFilename());
+ uploadRespVO.setUrl(fileInfo.getUrl());
+ uploadRespVO.setField(fileInfo.getHashVal());
+ } else {
+ // 上传到文件存储位置
+ FileUtil.writeBytes(content, fullPath);
+ uploadRespVO.setName(fileName);
+ uploadRespVO.setField(hashName);
+// uploadRespVO.setUrl(getUrl(URI));
+ uploadRespVO.setUrl(URI);
+ // 判断文件来源
+ String userId = ObjectUtil.isNotEmpty(UserContext.getUser()) ? UserContext.getUser().getId() : "";
+ Integer source = StrUtil.isNotEmpty(userId) ? 1 : 2;
+ if (fileInfo == null) {
+ // 入库操作
+ fileInfo = new File().setUrl(URI)
+ .setFilename(fileName)
+ .setHashVal(hashName)
+ .setSize(DataSizeUtil.format(content.length))
+ .setSource(source)
+ .setCreatorTime(LocalDateTime.now())
+ .setCreatorUserId(userId);
+ this.save(fileInfo);
+ }
+ }
+ return uploadRespVO;
+ } catch (Exception exception) {
+ throw new BizIllegalException("上传失败");
+ }
+ }
// 拼接为完整的静态访问地址
private String getUrl(String Uri) {
diff --git a/nxhs-service/src/main/java/cc/yunxi/service/impl/RecycleBucketServiceImpl.java b/nxhs-service/src/main/java/cc/yunxi/service/impl/RecycleBucketServiceImpl.java
new file mode 100644
index 0000000..f11de79
--- /dev/null
+++ b/nxhs-service/src/main/java/cc/yunxi/service/impl/RecycleBucketServiceImpl.java
@@ -0,0 +1,33 @@
+package cc.yunxi.service.impl;
+
+import cc.yunxi.domain.po.RecycleBucket;
+import cc.yunxi.mapper.RecycleBucketMapper;
+import cc.yunxi.mapper.RecycleDeviceMapper;
+import cc.yunxi.service.IRecycleBucketService;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+@Service
+public class RecycleBucketServiceImpl extends ServiceImpl implements IRecycleBucketService {
+
+ @Resource
+ private RecycleBucketMapper recycleBucketMapper;
+
+ @Override
+ public RecycleBucket getByBucketCode(String bucketCode) {
+ QueryWrapper query = new QueryWrapper<>();
+ query.eq("bucket_code", bucketCode);
+ return recycleBucketMapper.selectOne(query);
+ }
+
+ @Override
+ public List getByDeviceCode(String deviceCode) {
+ QueryWrapper query = new QueryWrapper<>();
+ query.eq("device_code", deviceCode);
+ return recycleBucketMapper.selectList(query);
+ }
+}
diff --git a/nxhs-service/src/main/java/cc/yunxi/service/impl/RecycleDeviceConfigServiceImpl.java b/nxhs-service/src/main/java/cc/yunxi/service/impl/RecycleDeviceConfigServiceImpl.java
new file mode 100644
index 0000000..37184de
--- /dev/null
+++ b/nxhs-service/src/main/java/cc/yunxi/service/impl/RecycleDeviceConfigServiceImpl.java
@@ -0,0 +1,25 @@
+package cc.yunxi.service.impl;
+
+import cc.yunxi.domain.po.RecycleDeviceConfig;
+import cc.yunxi.mapper.RecycleDeviceConfigMapper;
+import cc.yunxi.service.IRecycleDeviceConfigService;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+
+@Service
+public class RecycleDeviceConfigServiceImpl extends ServiceImpl implements IRecycleDeviceConfigService {
+
+ @Resource
+ private RecycleDeviceConfigMapper recycleDeviceConfigMapper;
+
+
+ @Override
+ public RecycleDeviceConfig getByCompanyId(String companyId) {
+ QueryWrapper query = new QueryWrapper<>();
+ query.eq("company_id", companyId);
+ return recycleDeviceConfigMapper.selectOne(query);
+ }
+}
diff --git a/nxhs-service/src/main/java/cc/yunxi/service/impl/RecycleDeviceDoorServiceImpl.java b/nxhs-service/src/main/java/cc/yunxi/service/impl/RecycleDeviceDoorServiceImpl.java
deleted file mode 100644
index c20b4ab..0000000
--- a/nxhs-service/src/main/java/cc/yunxi/service/impl/RecycleDeviceDoorServiceImpl.java
+++ /dev/null
@@ -1,47 +0,0 @@
-package cc.yunxi.service.impl;
-
-import cc.yunxi.common.utils.BeanUtils;
-import cc.yunxi.domain.po.RecycleDevice;
-import cc.yunxi.domain.po.RecycleDeviceDoor;
-import cc.yunxi.domain.vo.device.RecycleDeviceRespVO;
-import cc.yunxi.mapper.RecycleDeviceDoorMapper;
-import cc.yunxi.service.IRecycleDeviceDoorService;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
-import com.baomidou.mybatisplus.core.enums.SqlMethod;
-import com.baomidou.mybatisplus.core.toolkit.Constants;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import org.apache.ibatis.binding.MapperMethod;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.validation.annotation.Validated;
-
-import javax.validation.Valid;
-import java.util.Collection;
-import java.util.function.Function;
-
-/**
- *
- * 回收设备筒表 服务实现类
- *
- *
- * @author ccongli
- * @since 2024-04-11 10:34:14
- */
-@Service
-@Validated
-public class RecycleDeviceDoorServiceImpl extends ServiceImpl implements IRecycleDeviceDoorService {
-
- // 批量更新
- public boolean updateBatchByQueryWrapper(Collection entityList,
- Function wrapperFunction) {
- String sqlStatement = this.getSqlStatement(SqlMethod.UPDATE);
- return this.executeBatch(entityList, DEFAULT_BATCH_SIZE, (sqlSession, entity) -> {
- MapperMethod.ParamMap param = new MapperMethod.ParamMap<>();
- param.put(Constants.ENTITY, entity);
- param.put(Constants.WRAPPER, wrapperFunction.apply(entity));
- sqlSession.update(sqlStatement, param);
- });
- }
-
-}
diff --git a/nxhs-service/src/main/java/cc/yunxi/service/impl/RecycleDevicePhotoServiceImpl.java b/nxhs-service/src/main/java/cc/yunxi/service/impl/RecycleDevicePhotoServiceImpl.java
deleted file mode 100644
index c6e2379..0000000
--- a/nxhs-service/src/main/java/cc/yunxi/service/impl/RecycleDevicePhotoServiceImpl.java
+++ /dev/null
@@ -1,49 +0,0 @@
-package cc.yunxi.service.impl;
-
-import cc.yunxi.common.domain.LambdaQueryWrapperX;
-import cc.yunxi.common.domain.LambdaUpdateWrapperX;
-import cc.yunxi.common.utils.BeanUtils;
-import cc.yunxi.domain.po.RecycleDevice;
-import cc.yunxi.domain.po.RecycleDeviceDoor;
-import cc.yunxi.domain.po.RecycleDevicePhoto;
-import cc.yunxi.domain.vo.device.RecycleDeviceRespVO;
-import cc.yunxi.mapper.RecycleDeviceMapper;
-import cc.yunxi.mapper.RecycleDevicePhotoMapper;
-import cc.yunxi.service.IRecycleDeviceDoorService;
-import cc.yunxi.service.IRecycleDevicePhotoService;
-import cc.yunxi.service.IRecycleDeviceService;
-import cn.hutool.core.util.ObjectUtil;
-import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import javax.annotation.Resource;
-import java.time.LocalDateTime;
-import java.util.List;
-
-/**
- *
- * 回收柜设备表 服务实现类
- *
- *
- * @author ccongli
- * @since 2024-04-11 10:33:58
- */
-@Service
-public class RecycleDevicePhotoServiceImpl extends ServiceImpl implements IRecycleDevicePhotoService {
-
-
- @Override
- public Boolean addRecycleDevicePhoto(String orderId,String url) {
- RecycleDevicePhoto recycleDevicePhoto = new RecycleDevicePhoto();
- recycleDevicePhoto.setId(orderId);
- recycleDevicePhoto.setFileUrl(url);
- recycleDevicePhoto.setCreateTime(LocalDateTime.now());
- return this.save(recycleDevicePhoto);
- }
-
-
-
-
-}
diff --git a/nxhs-service/src/main/java/cc/yunxi/service/impl/RecycleDeviceRunningDataServiceImpl.java b/nxhs-service/src/main/java/cc/yunxi/service/impl/RecycleDeviceRunningDataServiceImpl.java
deleted file mode 100644
index 44f0077..0000000
--- a/nxhs-service/src/main/java/cc/yunxi/service/impl/RecycleDeviceRunningDataServiceImpl.java
+++ /dev/null
@@ -1,54 +0,0 @@
-package cc.yunxi.service.impl;
-
-import cc.yunxi.domain.po.RecycleDevicePhoto;
-import cc.yunxi.domain.po.RecycleDeviceRunningData;
-import cc.yunxi.domain.vo.device.RecycleDeviceRespVO;
-import cc.yunxi.mapper.RecycleDevicePhotoMapper;
-import cc.yunxi.mapper.RecycleDeviceRunningDataMapper;
-import cc.yunxi.service.IRecycleDevicePhotoService;
-import cc.yunxi.service.IRecycleDeviceRunningDataService;
-import cn.hutool.json.JSONArray;
-import cn.hutool.json.JSONObject;
-import cn.hutool.json.JSONUtil;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import org.springframework.stereotype.Service;
-
-import java.time.LocalDateTime;
-
-/**
- *
- * 回收柜设备表 服务实现类
- *
- *
- * @author ccongli
- * @since 2024-04-11 10:33:58
- */
-@Service
-public class RecycleDeviceRunningDataServiceImpl extends ServiceImpl implements IRecycleDeviceRunningDataService {
-
-
- @Override
- public Boolean addRecycleDeviceRunningData(RecycleDeviceRespVO recycleDeviceRespVO,Integer type) {
-
- String data = recycleDeviceRespVO.getData();
-
- JSONObject jsonObject = JSONUtil.parseObj(data);
-
- RecycleDeviceRunningData recycleDeviceRunningData = new RecycleDeviceRunningData();
-
- recycleDeviceRunningData.setType(type);
- recycleDeviceRunningData.setNo(jsonObject.getStr("no"));
- recycleDeviceRunningData.setWeight(jsonObject.getBigDecimal("weight"));
- recycleDeviceRunningData.setPrice(jsonObject.getBigDecimal("price"));
- recycleDeviceRunningData.setOrderId(recycleDeviceRespVO.getOrderId());
- recycleDeviceRunningData.setPhone(jsonObject.getStr("phone"));
- recycleDeviceRunningData.setPostDetail(JSONUtil.toJsonStr(recycleDeviceRespVO));
-
- recycleDeviceRunningData.setCreateTime(LocalDateTime.now());
- return this.save(recycleDeviceRunningData);
- }
-
-
-
-
-}
diff --git a/nxhs-service/src/main/java/cc/yunxi/service/impl/RecycleDeviceServiceImpl.java b/nxhs-service/src/main/java/cc/yunxi/service/impl/RecycleDeviceServiceImpl.java
index 0831015..739078f 100644
--- a/nxhs-service/src/main/java/cc/yunxi/service/impl/RecycleDeviceServiceImpl.java
+++ b/nxhs-service/src/main/java/cc/yunxi/service/impl/RecycleDeviceServiceImpl.java
@@ -1,84 +1,38 @@
package cc.yunxi.service.impl;
-import cc.yunxi.common.domain.LambdaQueryWrapperX;
-import cc.yunxi.common.domain.LambdaUpdateWrapperX;
-import cc.yunxi.common.utils.BeanUtils;
import cc.yunxi.domain.po.RecycleDevice;
-import cc.yunxi.domain.po.RecycleDeviceDoor;
-import cc.yunxi.domain.vo.device.RecycleDeviceRespVO;
-import cc.yunxi.mapper.RecycleDeviceDoorMapper;
import cc.yunxi.mapper.RecycleDeviceMapper;
-import cc.yunxi.service.IRecycleDeviceDoorService;
import cc.yunxi.service.IRecycleDeviceService;
-import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
-import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
-import com.baomidou.mybatisplus.core.enums.SqlMethod;
-import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import org.apache.ibatis.session.SqlSession;
import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
-import javax.validation.Valid;
-import java.time.LocalDateTime;
-import java.util.HashMap;
import java.util.List;
-import java.util.Map;
-/**
- *
- * 回收柜设备表 服务实现类
- *
- *
- * @author ccongli
- * @since 2024-04-11 10:33:58
- */
@Service
public class RecycleDeviceServiceImpl extends ServiceImpl implements IRecycleDeviceService {
@Resource
- private IRecycleDeviceDoorService recycleDeviceDoorService;
+ private RecycleDeviceMapper recycleDeviceMapper;
@Override
- public RecycleDevice getDeviceInfo(String devsn) {
- LambdaQueryWrapperX wrapperX = new LambdaQueryWrapperX();
- wrapperX.eq(RecycleDevice::getDevsn, devsn);
- return this.getOne(wrapperX, false);
+ public RecycleDevice getByDeviceCode(String deviceCode) {
+ QueryWrapper wrapper = new QueryWrapper<>();
+ wrapper.eq("device_code", deviceCode);
+ return recycleDeviceMapper.selectOne(wrapper);
}
- /**
- * 保存设备信息
- */
@Override
- @Transactional(rollbackFor = Exception.class)
- public void saveDeviceInfo(RecycleDeviceRespVO recycleDeviceRespVO) {
- RecycleDevice recycleDevice = BeanUtils.copyBean(recycleDeviceRespVO, RecycleDevice.class);
- List deviceDoorList = BeanUtils.copyList(recycleDeviceRespVO.getListDoor(), RecycleDeviceDoor.class);
- RecycleDevice deviceInfo = this.getDeviceInfo(recycleDevice.getDevsn());
- LocalDateTime now = LocalDateTime.now();
- if (ObjectUtil.isEmpty(deviceInfo)) { // 添加
- recycleDevice.setCreateTime(now); // 组织机构维护 todo
- this.save(recycleDevice);
- deviceDoorList.forEach(v -> {
- v.setDevsn(recycleDevice.getDevsn());
- v.setCreateTime(now);
- });
- recycleDeviceDoorService.saveBatch(deviceDoorList);
- } else { // 更新
- LambdaUpdateWrapperX wrapperX = new LambdaUpdateWrapperX<>();
- wrapperX.eq(RecycleDevice::getDevsn, deviceInfo.getDevsn());
- recycleDevice.setUpdateTime(now);
- this.update(recycleDevice, wrapperX);
- LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>();
- updateWrapper.eq(RecycleDeviceDoor::getDevsn, deviceInfo.getDevsn());
- deviceDoorList.forEach(v -> v.setUpdateTime(now));
- recycleDeviceDoorService.updateBatchByQueryWrapper(deviceDoorList, v -> updateWrapper);
- }
+ public List getByDeviceName(String companyId) {
+ QueryWrapper wrapper = new QueryWrapper<>();
+ wrapper.eq("company_id", companyId);
+ return recycleDeviceMapper.selectList(wrapper);
}
-
+ @Override
+ public int updateDevice() {
+ return 0;
+ }
}
diff --git a/nxhs-service/src/main/java/cc/yunxi/utils/DeviceStatusManager.java b/nxhs-service/src/main/java/cc/yunxi/utils/DeviceStatusManager.java
new file mode 100644
index 0000000..7b5042b
--- /dev/null
+++ b/nxhs-service/src/main/java/cc/yunxi/utils/DeviceStatusManager.java
@@ -0,0 +1,51 @@
+package cc.yunxi.utils;
+
+import cc.yunxi.domain.vo.device.DeviceStatus;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+
+@Slf4j
+@Component
+public class DeviceStatusManager {
+
+ private static final ConcurrentHashMap DEVICE_STATUS_MAP = new ConcurrentHashMap<>();
+
+ public DeviceStatus getDeviceStatus(String deviceCode) {
+ return DEVICE_STATUS_MAP.get(deviceCode);
+ }
+
+ public ConcurrentHashMap getAllDeviceStatus() {
+ return DEVICE_STATUS_MAP;
+ }
+
+
+ public void putDeviceStatus(DeviceStatus deviceStatus) {
+ DEVICE_STATUS_MAP.put(deviceStatus.getDeviceCode(), deviceStatus);
+ }
+
+
+ public void removeDeviceStatus(String deviceCode) {
+ DEVICE_STATUS_MAP.remove(deviceCode);
+ }
+
+ //状态是否改变
+ private boolean isChanged(DeviceStatus deviceStatus) {
+ DeviceStatus oldStatus = DEVICE_STATUS_MAP.get(deviceStatus.getDeviceCode());
+ if (oldStatus == null) {
+ return true;
+ } else {
+ if (!oldStatus.getIp().equals(deviceStatus.getIp())) {
+ log.info("设备编码:{} 的IP地址发生变化,old:{} , new:{} ", deviceStatus.getDeviceCode(), oldStatus.getIp(), deviceStatus.getIp());
+ return true;
+ }
+ }
+ return false;
+ }
+
+
+}
diff --git a/nxhs-service/src/main/java/cc/yunxi/utils/DeviceStatusMonitor.java b/nxhs-service/src/main/java/cc/yunxi/utils/DeviceStatusMonitor.java
new file mode 100644
index 0000000..df8ce00
--- /dev/null
+++ b/nxhs-service/src/main/java/cc/yunxi/utils/DeviceStatusMonitor.java
@@ -0,0 +1,55 @@
+package cc.yunxi.utils;
+
+import cc.yunxi.domain.vo.device.DeviceStatus;
+import io.swagger.annotations.ApiModel;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+import javax.annotation.Resource;
+import java.time.ZoneOffset;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.ConcurrentHashMap;
+
+@Slf4j
+@Component
+@ApiModel("设备状态监控")
+public class DeviceStatusMonitor {
+
+ //注入设备service
+
+ //注入桶service
+
+ private final Long TIME_OUT = new Long(1000 * 60);//心跳周期
+ @Resource
+ private DeviceStatusManager statusManager;
+
+ @Scheduled(fixedDelay = 1000 * 90)//每1.5个周期执行一次 必定有一次心跳 无则视为掉线
+ public void monitorDeviceStatus() {
+ ConcurrentHashMap allDeviceStatus = statusManager.getAllDeviceStatus();
+ if (allDeviceStatus.size() > 0) {
+ log.info("设备状态监控开始");
+ //需要更新状态的设备
+ List list = new ArrayList<>();
+ // 遍历设备状态
+ for (DeviceStatus deviceStatus : allDeviceStatus.values()) {
+ // 判断设备状态是否超时
+ if (System.currentTimeMillis() - deviceStatus.getHeartBeat().toEpochSecond(ZoneOffset.of("+8")) > TIME_OUT) {
+ // 设备状态超时,修改设备状态为离线
+ deviceStatus.setOnline(false);
+ //todo 更新设备在线状态
+ log.info("设备 {} 已离线", deviceStatus.getDeviceCode());
+ }
+ if (deviceStatus.getIpChanged()) {
+ //todo 更新设备通信地址
+ deviceStatus.setIpChanged(false);
+ log.info("设备ip地址发生变化,新的地址:{},已更新至数据库", deviceStatus.getIp());
+ }
+ }
+ // todo 更新设备状态
+ log.info("设备状态监控结束");
+ } else {
+ log.error("没有设备在线!!!");
+ }
+ }
+}
diff --git a/nxhs-service/src/main/resources/mapper/RecycleDevicePhotoMapper.xml b/nxhs-service/src/main/resources/mapper/RecycleBucketMapper.xml
similarity index 71%
rename from nxhs-service/src/main/resources/mapper/RecycleDevicePhotoMapper.xml
rename to nxhs-service/src/main/resources/mapper/RecycleBucketMapper.xml
index ae7b01c..a82b98a 100644
--- a/nxhs-service/src/main/resources/mapper/RecycleDevicePhotoMapper.xml
+++ b/nxhs-service/src/main/resources/mapper/RecycleBucketMapper.xml
@@ -1,5 +1,6 @@
-
+
+
diff --git a/nxhs-service/src/main/resources/mapper/RecycleDeviceRunningDataMapper.xml b/nxhs-service/src/main/resources/mapper/RecycleDeviceConfigMapper.xml
similarity index 69%
rename from nxhs-service/src/main/resources/mapper/RecycleDeviceRunningDataMapper.xml
rename to nxhs-service/src/main/resources/mapper/RecycleDeviceConfigMapper.xml
index a97c759..788cd35 100644
--- a/nxhs-service/src/main/resources/mapper/RecycleDeviceRunningDataMapper.xml
+++ b/nxhs-service/src/main/resources/mapper/RecycleDeviceConfigMapper.xml
@@ -1,5 +1,6 @@
-
+
+
diff --git a/nxhs-service/src/main/resources/mapper/RecycleDeviceMapper.xml b/nxhs-service/src/main/resources/mapper/RecycleDeviceMapper.xml
index 1254091..1f31742 100644
--- a/nxhs-service/src/main/resources/mapper/RecycleDeviceMapper.xml
+++ b/nxhs-service/src/main/resources/mapper/RecycleDeviceMapper.xml
@@ -2,4 +2,5 @@
+