|
|
@ -2,17 +2,17 @@ package cc.yunxi.controller;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import cc.yunxi.common.domain.CommonResult;
|
|
|
|
import cc.yunxi.common.domain.CommonResult;
|
|
|
|
import cc.yunxi.domain.po.RecycleBucket;
|
|
|
|
import cc.yunxi.common.exception.BizIllegalException;
|
|
|
|
import cc.yunxi.domain.po.RecycleDevice;
|
|
|
|
import cc.yunxi.domain.dto.UserDTO;
|
|
|
|
import cc.yunxi.domain.po.RecycleDeviceConfig;
|
|
|
|
import cc.yunxi.domain.po.*;
|
|
|
|
import cc.yunxi.domain.vo.device.*;
|
|
|
|
import cc.yunxi.domain.vo.device.*;
|
|
|
|
import cc.yunxi.domain.vo.file.FileUploadRespVO;
|
|
|
|
import cc.yunxi.domain.vo.file.FileUploadRespVO;
|
|
|
|
import cc.yunxi.service.IFileService;
|
|
|
|
import cc.yunxi.service.*;
|
|
|
|
import cc.yunxi.service.IRecycleBucketService;
|
|
|
|
|
|
|
|
import cc.yunxi.service.IRecycleDeviceConfigService;
|
|
|
|
|
|
|
|
import cc.yunxi.service.IRecycleDeviceService;
|
|
|
|
|
|
|
|
import cc.yunxi.utils.DeviceStatusManager;
|
|
|
|
import cc.yunxi.utils.DeviceStatusManager;
|
|
|
|
|
|
|
|
import cc.yunxi.utils.UserContext;
|
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
|
|
|
|
|
import cn.hutool.http.HttpUtil;
|
|
|
|
|
|
|
|
import cn.hutool.json.JSONObject;
|
|
|
|
import cn.hutool.json.JSONUtil;
|
|
|
|
import cn.hutool.json.JSONUtil;
|
|
|
|
import io.swagger.annotations.Api;
|
|
|
|
import io.swagger.annotations.Api;
|
|
|
|
import io.swagger.annotations.ApiModelProperty;
|
|
|
|
import io.swagger.annotations.ApiModelProperty;
|
|
|
@ -24,9 +24,8 @@ import javax.annotation.Resource;
|
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
|
|
import java.math.BigDecimal;
|
|
|
|
import java.math.BigDecimal;
|
|
|
|
import java.time.LocalDateTime;
|
|
|
|
import java.time.LocalDateTime;
|
|
|
|
import java.util.ArrayList;
|
|
|
|
import java.time.format.DateTimeFormatter;
|
|
|
|
import java.util.Base64;
|
|
|
|
import java.util.*;
|
|
|
|
import java.util.List;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* <p>
|
|
|
|
* <p>
|
|
|
@ -45,13 +44,18 @@ public class DeviceController {
|
|
|
|
|
|
|
|
|
|
|
|
@Resource
|
|
|
|
@Resource
|
|
|
|
private DeviceStatusManager deviceStatusManager;
|
|
|
|
private DeviceStatusManager deviceStatusManager;
|
|
|
|
|
|
|
|
|
|
|
|
@Resource
|
|
|
|
@Resource
|
|
|
|
private IRecycleDeviceService recycleDeviceService;
|
|
|
|
private IRecycleDeviceService deviceService;
|
|
|
|
|
|
|
|
@Resource
|
|
|
|
|
|
|
|
private IRecycleDeviceConfigService configService;
|
|
|
|
|
|
|
|
@Resource
|
|
|
|
|
|
|
|
private IRecycleBucketService bucketService;
|
|
|
|
@Resource
|
|
|
|
@Resource
|
|
|
|
private IRecycleDeviceConfigService recycleDeviceConfigService;
|
|
|
|
private IRecycleDeviceEventService eventService;
|
|
|
|
@Resource
|
|
|
|
@Resource
|
|
|
|
private IRecycleBucketService recycleBucketService;
|
|
|
|
private IRecycleCleanOrderService cleanOrderService;
|
|
|
|
|
|
|
|
@Resource
|
|
|
|
|
|
|
|
private IRecycleDeliveryOrderService deliveryOrderService;
|
|
|
|
@Resource
|
|
|
|
@Resource
|
|
|
|
private IFileService fileService;
|
|
|
|
private IFileService fileService;
|
|
|
|
|
|
|
|
|
|
|
@ -61,37 +65,51 @@ public class DeviceController {
|
|
|
|
public CommonResult<DeviceRespVO> conf(@RequestBody DeviceVO deviceVO) {
|
|
|
|
public CommonResult<DeviceRespVO> conf(@RequestBody DeviceVO deviceVO) {
|
|
|
|
CommonResult<DeviceRespVO> result = new CommonResult<>();
|
|
|
|
CommonResult<DeviceRespVO> result = new CommonResult<>();
|
|
|
|
DeviceRespVO respVO = new DeviceRespVO();
|
|
|
|
DeviceRespVO respVO = new DeviceRespVO();
|
|
|
|
RecycleDevice device = recycleDeviceService.getByDeviceCode(deviceVO.getDeviceCode());
|
|
|
|
RecycleDevice device = deviceService.getByDeviceCode(deviceVO.getDeviceCode());
|
|
|
|
if (device == null) {
|
|
|
|
if (device == null) {
|
|
|
|
return result.error(400, "设备不存在");
|
|
|
|
return CommonResult.error(404, "设备不存在");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
String companyId = device.getBeLongCompanyId();
|
|
|
|
String companyId = device.getBeLongCompanyId();
|
|
|
|
if (StrUtil.isBlank(companyId)) {
|
|
|
|
if (StrUtil.isBlank(companyId)) {
|
|
|
|
return result.error(400, "设备未绑定公司,还未投用!!");
|
|
|
|
return CommonResult.error(404, "设备未绑定公司,还未投用!!");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
RecycleDeviceConfig config = recycleDeviceConfigService.getByCompanyId(companyId);
|
|
|
|
RecycleDeviceConfig config = configService.getByCompanyId(companyId);
|
|
|
|
if (config == null) {
|
|
|
|
if (config == null) {
|
|
|
|
return result.error(400, "设备未配置!!");
|
|
|
|
return CommonResult.error(404, "设备未配置配置项!!");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
List<RecycleBucket> buckets = recycleBucketService.getByDeviceCode(deviceVO.getDeviceCode());
|
|
|
|
List<RecycleBucket> buckets = bucketService.getByDeviceCode(deviceVO.getDeviceCode());
|
|
|
|
if (buckets.size() == 0) {
|
|
|
|
if (buckets.size() == 0) {
|
|
|
|
return result.error(400, "当前设备没有桶配置清单!!");
|
|
|
|
return CommonResult.error(404, "当前设备没有桶配置清单!!");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
respVO.setDeviceCode(device.getDeviceCode());
|
|
|
|
respVO.setDeviceCode(device.getDeviceCode());
|
|
|
|
respVO.setDeviceName(device.getDeviceName());
|
|
|
|
respVO.setDeviceName(device.getDeviceName());
|
|
|
|
respVO.setUserStatus(device.getUseStatus());
|
|
|
|
respVO.setUserStatus(device.getUseStatus());
|
|
|
|
respVO.setCleanLock(Integer.valueOf(config.getCleanLock()));
|
|
|
|
respVO.setCleanLock(Integer.valueOf(config.getCleanLock()));
|
|
|
|
respVO.setUsePhoneLogin(config.getAllowPhoneLogin());
|
|
|
|
respVO.setUsePhoneLogin(config.getAllowPhoneLogin());
|
|
|
|
|
|
|
|
//桶配置
|
|
|
|
|
|
|
|
fillBucketConfig(respVO, buckets, config);
|
|
|
|
|
|
|
|
//宣传配置
|
|
|
|
|
|
|
|
respVO.setPromotionSet(config.getPromotionSet());
|
|
|
|
|
|
|
|
respVO.setSlogan(config.getPromotionSlogans());
|
|
|
|
|
|
|
|
String pics = config.getPromotionPic1();
|
|
|
|
|
|
|
|
fillPoster(pics, respVO);
|
|
|
|
|
|
|
|
result.setData(respVO);
|
|
|
|
|
|
|
|
result.setMsg("success");
|
|
|
|
|
|
|
|
return result;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private void fillBucketConfig(DeviceRespVO respVO, List<RecycleBucket> buckets, RecycleDeviceConfig config) {
|
|
|
|
ArrayList<DeviceRespVO.Bucket> list = new ArrayList<>();
|
|
|
|
ArrayList<DeviceRespVO.Bucket> list = new ArrayList<>();
|
|
|
|
for (RecycleBucket bucket : buckets) {
|
|
|
|
for (RecycleBucket bucket : buckets) {
|
|
|
|
DeviceRespVO.Bucket _bucket = new DeviceRespVO.Bucket();
|
|
|
|
DeviceRespVO.Bucket _bucket = new DeviceRespVO.Bucket();
|
|
|
|
|
|
|
|
BigDecimal price = calculatePrice(bucket, config);//计算价格
|
|
|
|
_bucket.setBucketCode(bucket.getBucketCode());
|
|
|
|
_bucket.setBucketCode(bucket.getBucketCode());
|
|
|
|
_bucket.setDoorNum(bucket.getDoorNum());
|
|
|
|
_bucket.setDoorNum(bucket.getDoorNum());
|
|
|
|
_bucket.setOrdNum(bucket.getShowOrd());
|
|
|
|
_bucket.setOrdNum(bucket.getShowOrd());
|
|
|
|
_bucket.setCode(bucket.getProductCode());
|
|
|
|
_bucket.setCode(bucket.getProductCode());
|
|
|
|
_bucket.setSubCode(bucket.getProductSubCode());
|
|
|
|
_bucket.setSubCode(bucket.getProductSubCode());
|
|
|
|
_bucket.setShowText(bucket.getShowName());
|
|
|
|
_bucket.setShowText(bucket.getShowName());
|
|
|
|
_bucket.setPrice(bucket.getPrice());
|
|
|
|
_bucket.setPrice(price);
|
|
|
|
_bucket.setSingleWeightLimit(BigDecimal.ZERO);
|
|
|
|
_bucket.setSingleWeightLimit(BigDecimal.ZERO);
|
|
|
|
_bucket.setTotalWeightLimit(bucket.getWarningWeight());
|
|
|
|
_bucket.setTotalWeightLimit(bucket.getWarningWeight());
|
|
|
|
_bucket.setSmokeAlarm(bucket.getSmogSet());
|
|
|
|
_bucket.setSmokeAlarm(bucket.getSmogSet());
|
|
|
@ -107,10 +125,11 @@ public class DeviceController {
|
|
|
|
list.add(_bucket);
|
|
|
|
list.add(_bucket);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
respVO.setBucketList(list);
|
|
|
|
respVO.setBucketList(list);
|
|
|
|
respVO.setPromotionSet(config.getPromotionSet());
|
|
|
|
|
|
|
|
respVO.setSlogan(config.getPromotionSlogans());
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private void fillPoster(String pics, DeviceRespVO respVO) {
|
|
|
|
ArrayList<DeviceRespVO.Poster> posters = new ArrayList<>();
|
|
|
|
ArrayList<DeviceRespVO.Poster> posters = new ArrayList<>();
|
|
|
|
String pics = config.getPromotionPic1();
|
|
|
|
|
|
|
|
List<FileUploadRespVO> files = JSONUtil.toList(pics, FileUploadRespVO.class);
|
|
|
|
List<FileUploadRespVO> files = JSONUtil.toList(pics, FileUploadRespVO.class);
|
|
|
|
for (int i = 0; i < files.size(); i++) {
|
|
|
|
for (int i = 0; i < files.size(); i++) {
|
|
|
|
FileUploadRespVO file = files.get(i);
|
|
|
|
FileUploadRespVO file = files.get(i);
|
|
|
@ -122,8 +141,75 @@ public class DeviceController {
|
|
|
|
posters.add(poster);
|
|
|
|
posters.add(poster);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
respVO.setPosterList(posters);
|
|
|
|
respVO.setPosterList(posters);
|
|
|
|
result.setData(respVO);
|
|
|
|
}
|
|
|
|
return result;
|
|
|
|
|
|
|
|
|
|
|
|
private BigDecimal calculatePrice(RecycleBucket bucket, RecycleDeviceConfig config) {
|
|
|
|
|
|
|
|
BigDecimal bucketPrice = bucket.getPrice();
|
|
|
|
|
|
|
|
if (null != bucketPrice && bucketPrice.compareTo(BigDecimal.ZERO) > 0) {
|
|
|
|
|
|
|
|
return bucketPrice;//优先桶配置
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
BigDecimal price = BigDecimal.ZERO;
|
|
|
|
|
|
|
|
BigDecimal comm = config.getDeliveryPrice();//统一价格
|
|
|
|
|
|
|
|
if (comm != null && comm.compareTo(BigDecimal.ZERO) > 0) {
|
|
|
|
|
|
|
|
price = comm;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
BigDecimal doorNumPrice = BigDecimal.ZERO;//按编号算价格
|
|
|
|
|
|
|
|
Integer doorNum = bucket.getDoorNum();
|
|
|
|
|
|
|
|
switch (doorNum) {
|
|
|
|
|
|
|
|
case 1:
|
|
|
|
|
|
|
|
doorNumPrice = config.getBucket1Price();
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
case 2:
|
|
|
|
|
|
|
|
doorNumPrice = config.getBucket2Price();
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
case 3:
|
|
|
|
|
|
|
|
doorNumPrice = config.getBucket3Price();
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
case 4:
|
|
|
|
|
|
|
|
doorNumPrice = config.getBucket4Price();
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
case 5:
|
|
|
|
|
|
|
|
doorNumPrice = config.getBucket5Price();
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
case 6:
|
|
|
|
|
|
|
|
doorNumPrice = config.getBucket6Price();
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
case 7:
|
|
|
|
|
|
|
|
doorNumPrice = config.getBucket7Price();
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
case 8:
|
|
|
|
|
|
|
|
doorNumPrice = config.getBucket8Price();
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
case 9:
|
|
|
|
|
|
|
|
doorNumPrice = config.getBucket9Price();
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
case 10:
|
|
|
|
|
|
|
|
doorNumPrice = config.getBucket10Price();
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
case 11:
|
|
|
|
|
|
|
|
doorNumPrice = config.getBucket11Price();
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
case 12:
|
|
|
|
|
|
|
|
doorNumPrice = config.getBucket12Price();
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
default:
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if (doorNumPrice.compareTo(BigDecimal.ZERO) > 0) {
|
|
|
|
|
|
|
|
price = doorNumPrice;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return price;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private String uploadImages(List<Snap> snaps) {
|
|
|
|
|
|
|
|
List<FileUploadRespVO> list = new ArrayList<>();
|
|
|
|
|
|
|
|
for (Snap snap : snaps) {
|
|
|
|
|
|
|
|
FileUploadRespVO uploadRespVO = fileService.uploadImage(snap.getImage(), snap.getFileName());
|
|
|
|
|
|
|
|
list.add(uploadRespVO);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return JSONUtil.toJsonStr(list);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//手机号登录
|
|
|
|
//手机号登录
|
|
|
@ -131,6 +217,7 @@ public class DeviceController {
|
|
|
|
@ApiModelProperty("手机号登录")
|
|
|
|
@ApiModelProperty("手机号登录")
|
|
|
|
public CommonResult<LoginRespVO> login(@RequestBody LoginReqVO loginReqVO) {
|
|
|
|
public CommonResult<LoginRespVO> login(@RequestBody LoginReqVO loginReqVO) {
|
|
|
|
CommonResult<LoginRespVO> result = new CommonResult<>();
|
|
|
|
CommonResult<LoginRespVO> result = new CommonResult<>();
|
|
|
|
|
|
|
|
//todo
|
|
|
|
|
|
|
|
|
|
|
|
return result;
|
|
|
|
return result;
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -139,25 +226,134 @@ public class DeviceController {
|
|
|
|
@PostMapping("/delivery")
|
|
|
|
@PostMapping("/delivery")
|
|
|
|
@ApiModelProperty("投递订单上传")
|
|
|
|
@ApiModelProperty("投递订单上传")
|
|
|
|
public CommonResult<String> delivery(@RequestBody DeliveryOrderVO orderVO) {
|
|
|
|
public CommonResult<String> delivery(@RequestBody DeliveryOrderVO orderVO) {
|
|
|
|
|
|
|
|
// UserDTO user = UserContext.getUser();
|
|
|
|
|
|
|
|
RecycleDevice device = deviceService.getByDeviceCode(orderVO.getDeviceCode());
|
|
|
|
|
|
|
|
|
|
|
|
return null;
|
|
|
|
if (null == device || StrUtil.isEmpty(device.getBeLongCompanyId())) {
|
|
|
|
|
|
|
|
throw new BizIllegalException("上传失败:根据设备编号,未查询到设备信息!!");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
String companyId = device.getBeLongCompanyId();
|
|
|
|
|
|
|
|
//查询配置
|
|
|
|
|
|
|
|
RecycleDeviceConfig config = configService.getByCompanyId(companyId);
|
|
|
|
|
|
|
|
String adjustSet = config.getDeliveryAdjustSet();//审核配置
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
RecycleDeliveryOrder order = new RecycleDeliveryOrder();
|
|
|
|
|
|
|
|
order.setDeviceCode(orderVO.getDeviceCode());
|
|
|
|
|
|
|
|
order.setBucketCode(orderVO.getBucketCode());
|
|
|
|
|
|
|
|
order.setDeviceOrderNo(orderVO.getDeviceOrderNo());
|
|
|
|
|
|
|
|
order.setDoorNum(orderVO.getDoorNum());
|
|
|
|
|
|
|
|
order.setBagNo(orderVO.getBagNo());
|
|
|
|
|
|
|
|
order.setOriginalWeight(orderVO.getOriginalWeight());
|
|
|
|
|
|
|
|
order.setReportWeight(orderVO.getWeight());
|
|
|
|
|
|
|
|
order.setPrice(orderVO.getPrice());
|
|
|
|
|
|
|
|
order.setProductCode(orderVO.getProductCode());
|
|
|
|
|
|
|
|
order.setProductSubCode(orderVO.getProductSubCode());
|
|
|
|
|
|
|
|
order.setTotalPrice(orderVO.getTotalPrice());
|
|
|
|
|
|
|
|
if ("1".equals(adjustSet)) {//自动审核
|
|
|
|
|
|
|
|
order.setAdjustStatus(1);
|
|
|
|
|
|
|
|
order.setAdjustWeight(orderVO.getWeight());
|
|
|
|
|
|
|
|
order.setAdjustPrice(orderVO.getTotalPrice());
|
|
|
|
|
|
|
|
order.setAdjustComm("自动审核");
|
|
|
|
|
|
|
|
} else {//手动审核
|
|
|
|
|
|
|
|
order.setAdjustStatus(0);
|
|
|
|
|
|
|
|
order.setAdjustWeight(BigDecimal.ZERO);
|
|
|
|
|
|
|
|
order.setAdjustPrice(BigDecimal.ZERO);
|
|
|
|
|
|
|
|
order.setAdjustComm("");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
order.setBagNo(orderVO.getBagNo());
|
|
|
|
|
|
|
|
order.setDeliverId(orderVO.getUserId());
|
|
|
|
|
|
|
|
order.setPhone(orderVO.getPhone());
|
|
|
|
|
|
|
|
// 上传照片
|
|
|
|
|
|
|
|
List<Snap> images = orderVO.getImages();
|
|
|
|
|
|
|
|
String photos = uploadImages(images);
|
|
|
|
|
|
|
|
order.setPhoto(photos);
|
|
|
|
|
|
|
|
order.setCompanyId(companyId);//绑定订单对应商户
|
|
|
|
|
|
|
|
order.setLoginType(orderVO.getLoginType());
|
|
|
|
|
|
|
|
// order.setStartTime(orderVO.getStartTime());
|
|
|
|
|
|
|
|
// order.setFinishTime(orderVO.getFinishTime());
|
|
|
|
|
|
|
|
order.setReportTime(new Date());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
deliveryOrderService.save(order);
|
|
|
|
|
|
|
|
return CommonResult.success(orderVO.getDeviceOrderNo());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//清运重量上传
|
|
|
|
//清运重量上传
|
|
|
|
@PostMapping("/clean")
|
|
|
|
@PostMapping("/clean")
|
|
|
|
@ApiModelProperty("清运订单上传")
|
|
|
|
@ApiModelProperty("清运订单上传")
|
|
|
|
public CommonResult<String> clean(@RequestBody CleanOrderVO orderVO) {
|
|
|
|
public CommonResult<String> clean(@RequestBody CleanOrderVO orderVO) {
|
|
|
|
|
|
|
|
UserDTO user = UserContext.getUser();
|
|
|
|
|
|
|
|
RecycleDevice device = deviceService.getByDeviceCode(orderVO.getDeviceCode());
|
|
|
|
|
|
|
|
if (null == device) {
|
|
|
|
|
|
|
|
throw new BizIllegalException("上传失败:根据设备编号,未查询到设备信息!!");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return null;
|
|
|
|
//查询配置
|
|
|
|
|
|
|
|
RecycleDeviceConfig config = configService.getByCompanyId(user.getCompanyId());
|
|
|
|
|
|
|
|
String adjustSet = config.getCleanAdjustSet();//审核配置
|
|
|
|
|
|
|
|
//查询桶
|
|
|
|
|
|
|
|
// RecycleBucket bucket = bucketService.getByBucketCode(orderVO.getBucketCode());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
RecycleCleanOrder order = new RecycleCleanOrder();
|
|
|
|
|
|
|
|
order.setDeviceCode(orderVO.getDeviceCode());
|
|
|
|
|
|
|
|
order.setBucketCode(orderVO.getBucketCode());
|
|
|
|
|
|
|
|
order.setDoorNum(orderVO.getDoorNum());
|
|
|
|
|
|
|
|
order.setProductCode(orderVO.getProductCode());
|
|
|
|
|
|
|
|
order.setProductSubCode(orderVO.getProductSubCode());
|
|
|
|
|
|
|
|
order.setPrice(orderVO.getPrice());
|
|
|
|
|
|
|
|
//开始时间
|
|
|
|
|
|
|
|
//完成时间
|
|
|
|
|
|
|
|
List<Snap> images = orderVO.getImages();
|
|
|
|
|
|
|
|
if (images == null || images.size() == 0) {
|
|
|
|
|
|
|
|
throw new BizIllegalException("上传失败:未上传抓拍图片!!");
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
String result = uploadImages(images);
|
|
|
|
|
|
|
|
order.setPhoto(result);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
//审核
|
|
|
|
|
|
|
|
if ("1".equals(adjustSet)) {
|
|
|
|
|
|
|
|
order.setAdjustStatus(1);
|
|
|
|
|
|
|
|
order.setAdjustComm("自动审核");
|
|
|
|
|
|
|
|
order.setAdjustWeight(orderVO.getTotalWeight());
|
|
|
|
|
|
|
|
order.setAdjustPrice(orderVO.getTotalPrice());
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
order.setAdjustStatus(0);
|
|
|
|
|
|
|
|
order.setAdjustComm("");
|
|
|
|
|
|
|
|
order.setAdjustWeight(BigDecimal.ZERO);
|
|
|
|
|
|
|
|
order.setAdjustPrice(BigDecimal.ZERO);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
// order.setStartTime(orderVO.getStartTime());
|
|
|
|
|
|
|
|
// order.setFinishTime(orderVO.getFinishTime());
|
|
|
|
|
|
|
|
order.setReportTime(new Date());
|
|
|
|
|
|
|
|
order.setCreatorUserId(orderVO.getUserId());
|
|
|
|
|
|
|
|
order.setCreatorTime(new Date());
|
|
|
|
|
|
|
|
order.setPhone(orderVO.getPhone());
|
|
|
|
|
|
|
|
order.setCompanyId(user.getCompanyId());
|
|
|
|
|
|
|
|
cleanOrderService.save(order);
|
|
|
|
|
|
|
|
return CommonResult.success(orderVO.getDeviceOrderNo());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//设备事件上报
|
|
|
|
//设备事件上报
|
|
|
|
@PostMapping("/event")
|
|
|
|
@PostMapping("/event")
|
|
|
|
@ApiModelProperty("设备事件上报")
|
|
|
|
@ApiModelProperty("设备事件上报")
|
|
|
|
public CommonResult<String> event(@RequestBody DeviceEventVO eventVO) {
|
|
|
|
public CommonResult<String> event(@RequestBody DeviceEventVO eventVO) {
|
|
|
|
CommonResult<String> result = new CommonResult<>();
|
|
|
|
RecycleDevice device = deviceService.getByDeviceCode(eventVO.getDeviceCode());
|
|
|
|
|
|
|
|
|
|
|
|
return result;
|
|
|
|
RecycleDeviceEvent event = new RecycleDeviceEvent();
|
|
|
|
|
|
|
|
event.setDeviceCode(eventVO.getDeviceCode());
|
|
|
|
|
|
|
|
event.setPhone(eventVO.getPhone());
|
|
|
|
|
|
|
|
event.setIsLocal("0");
|
|
|
|
|
|
|
|
event.setEventType(eventVO.getEventType());
|
|
|
|
|
|
|
|
// event.setEventTime(eventVO.getEventTime());
|
|
|
|
|
|
|
|
event.setEventDesc(eventVO.getEventDesc());
|
|
|
|
|
|
|
|
event.setDoorNum(eventVO.getDoorNum());
|
|
|
|
|
|
|
|
event.setBucketCode(eventVO.getBucketCode());
|
|
|
|
|
|
|
|
event.setOrderNo(eventVO.getOrderNum());
|
|
|
|
|
|
|
|
event.setOrderType(eventVO.getOrderType());
|
|
|
|
|
|
|
|
event.setCompanyId(device.getCompanyId());
|
|
|
|
|
|
|
|
event.setCreateUserId(eventVO.getUserId());//公司
|
|
|
|
|
|
|
|
event.setCreateTime(new Date());
|
|
|
|
|
|
|
|
eventService.save(event);
|
|
|
|
|
|
|
|
return CommonResult.success("事件上报成功");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//设备心跳上报
|
|
|
|
//设备心跳上报
|
|
|
@ -177,9 +373,65 @@ public class DeviceController {
|
|
|
|
@ApiModelProperty("设备命令下发")
|
|
|
|
@ApiModelProperty("设备命令下发")
|
|
|
|
@PostMapping("/command")
|
|
|
|
@PostMapping("/command")
|
|
|
|
public CommonResult<String> command(@RequestBody CommandVO commandVO) {
|
|
|
|
public CommonResult<String> command(@RequestBody CommandVO commandVO) {
|
|
|
|
|
|
|
|
String deviceCode = commandVO.getDeviceCode();
|
|
|
|
|
|
|
|
UserDTO user = UserContext.getUser();
|
|
|
|
|
|
|
|
DeviceStatus status = deviceStatusManager.getDeviceStatus(deviceCode);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 判断设备是否在线
|
|
|
|
|
|
|
|
Boolean online = status.getOnline();
|
|
|
|
|
|
|
|
if (!online) return CommonResult.error(400, "设备不在线");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
String ip = status.getIp();
|
|
|
|
|
|
|
|
// 下发指令
|
|
|
|
|
|
|
|
String res = HttpUtil.post("http://" + ip + "/command", JSONUtil.toJsonStr(commandVO), 1000);
|
|
|
|
|
|
|
|
// 记录指令下发事件
|
|
|
|
|
|
|
|
CommonResult _result = JSONUtil.toBean(res, CommonResult.class);
|
|
|
|
|
|
|
|
RecycleDeviceEvent event = new RecycleDeviceEvent();
|
|
|
|
|
|
|
|
event.setDeviceCode(deviceCode);
|
|
|
|
|
|
|
|
event.setBucketCode("");//
|
|
|
|
|
|
|
|
event.setDoorNum(0);//
|
|
|
|
|
|
|
|
event.setEventType(deviceCode);
|
|
|
|
|
|
|
|
event.setEventDesc("设备命令下发");
|
|
|
|
|
|
|
|
event.setEventTime(new Date());
|
|
|
|
|
|
|
|
event.setIsLocal("0");//远程调用
|
|
|
|
|
|
|
|
|
|
|
|
//todo 记录指令下发事件
|
|
|
|
if (_result.getCode() != 200) {
|
|
|
|
return null;
|
|
|
|
event.setEventResult("1");
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
event.setEventResult("0");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
event.setCreateUserId(user.getId());
|
|
|
|
|
|
|
|
event.setCreateTime(new Date());
|
|
|
|
|
|
|
|
event.setCompanyId(user.getCompanyId());
|
|
|
|
|
|
|
|
event.setOrganizeJsonId("");
|
|
|
|
|
|
|
|
eventService.save(event);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return _result;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ApiModelProperty("获取设备状态")
|
|
|
|
|
|
|
|
@PostMapping("/status")
|
|
|
|
|
|
|
|
public CommonResult<String> command(@RequestBody DeviceVO deviceVO)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
String deviceCode = deviceVO.getDeviceCode();
|
|
|
|
|
|
|
|
CommandVO cmd = new CommandVO();
|
|
|
|
|
|
|
|
cmd.setCmd(CMDEnum.status);
|
|
|
|
|
|
|
|
cmd.setDeviceCode(deviceCode);
|
|
|
|
|
|
|
|
cmd.setOptTime(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
|
|
|
|
|
|
|
|
cmd.setRemark("获取设备状态");
|
|
|
|
|
|
|
|
DeviceStatus status = deviceStatusManager.getDeviceStatus(deviceCode);
|
|
|
|
|
|
|
|
// 判断设备是否在线
|
|
|
|
|
|
|
|
Boolean online = status.getOnline();
|
|
|
|
|
|
|
|
if (!online) return CommonResult.error(400, "设备不在线");
|
|
|
|
|
|
|
|
String post = HttpUtil.post("http://" + status.getIp() + "/command", JSONUtil.toJsonStr(cmd), 1000);
|
|
|
|
|
|
|
|
JSONObject json = JSONUtil.parseObj(post);
|
|
|
|
|
|
|
|
Integer code = json.getInt("code");
|
|
|
|
|
|
|
|
if (code == 200 || code == 201) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
return CommonResult.error(400, json.getStr("msg"));
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return CommonResult.success("状态已更新", "success");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|