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 @@ +