|
@@ -7,23 +7,35 @@ import cn.hutool.json.JSONUtil;
|
|
import io.swagger.annotations.Api;
|
|
import io.swagger.annotations.Api;
|
|
import io.swagger.annotations.ApiOperation;
|
|
import io.swagger.annotations.ApiOperation;
|
|
import lombok.AllArgsConstructor;
|
|
import lombok.AllArgsConstructor;
|
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
import org.springblade.common.aspect.VendingFlag;
|
|
import org.springblade.common.aspect.VendingFlag;
|
|
import org.springblade.common.constant.CommonConstant;
|
|
import org.springblade.common.constant.CommonConstant;
|
|
|
|
+import org.springblade.common.enums.OrderStateEnum;
|
|
import org.springblade.core.log.annotation.ApiLog;
|
|
import org.springblade.core.log.annotation.ApiLog;
|
|
import org.springblade.modules.api.request.VendingOrderReq;
|
|
import org.springblade.modules.api.request.VendingOrderReq;
|
|
|
|
+import org.springblade.modules.api.request.VendingShipReq;
|
|
import org.springblade.modules.api.response.VendingOrderRes;
|
|
import org.springblade.modules.api.response.VendingOrderRes;
|
|
import org.springblade.modules.api.service.VendingOrderService;
|
|
import org.springblade.modules.api.service.VendingOrderService;
|
|
|
|
+import org.springblade.modules.finance.entity.Order;
|
|
|
|
+import org.springblade.modules.finance.entity.OrderGoods;
|
|
|
|
+import org.springblade.modules.finance.service.IOrderGoodsService;
|
|
|
|
+import org.springblade.modules.finance.service.IOrderService;
|
|
import org.springblade.modules.finance.vo.OrderGoodsVO;
|
|
import org.springblade.modules.finance.vo.OrderGoodsVO;
|
|
import org.springblade.modules.finance.vo.OrderVO;
|
|
import org.springblade.modules.finance.vo.OrderVO;
|
|
-import org.springframework.web.bind.annotation.*;
|
|
|
|
|
|
+import org.springframework.web.bind.annotation.PostMapping;
|
|
|
|
+import org.springframework.web.bind.annotation.RequestBody;
|
|
|
|
+import org.springframework.web.bind.annotation.RequestMapping;
|
|
|
|
+import org.springframework.web.bind.annotation.RestController;
|
|
|
|
|
|
import javax.servlet.http.HttpServletResponse;
|
|
import javax.servlet.http.HttpServletResponse;
|
|
import javax.validation.Valid;
|
|
import javax.validation.Valid;
|
|
import java.io.IOException;
|
|
import java.io.IOException;
|
|
import java.nio.charset.StandardCharsets;
|
|
import java.nio.charset.StandardCharsets;
|
|
|
|
+import java.time.LocalDateTime;
|
|
import java.util.HashMap;
|
|
import java.util.HashMap;
|
|
import java.util.List;
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
import java.util.Map;
|
|
|
|
+import java.util.Objects;
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -33,9 +45,12 @@ import java.util.stream.Collectors;
|
|
@AllArgsConstructor
|
|
@AllArgsConstructor
|
|
@RequestMapping(CommonConstant.API_URL + "/vending")
|
|
@RequestMapping(CommonConstant.API_URL + "/vending")
|
|
@Api(value = "售货机硬件对接接口", tags = "售货机硬件对接接口")
|
|
@Api(value = "售货机硬件对接接口", tags = "售货机硬件对接接口")
|
|
|
|
+@Slf4j
|
|
public class ApiVendingController {
|
|
public class ApiVendingController {
|
|
|
|
|
|
private final VendingOrderService vendingOrderService;
|
|
private final VendingOrderService vendingOrderService;
|
|
|
|
+ private final IOrderGoodsService orderGoodsService;
|
|
|
|
+ private final IOrderService orderService;
|
|
|
|
|
|
|
|
|
|
@ApiLog("查询设备订单信息")
|
|
@ApiLog("查询设备订单信息")
|
|
@@ -76,15 +91,8 @@ public class ApiVendingController {
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
- @ApiLog("设备出货成功回调")
|
|
|
|
- @ApiOperation(value = "出货成功回调", notes = "出货成功回调")
|
|
|
|
- @PostMapping("callback")
|
|
|
|
- public void callback() {
|
|
|
|
-
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
/**
|
|
/**
|
|
- * 硬件接口通用响应
|
|
|
|
|
|
+ * 硬件接口订单信息返回通用响应
|
|
*
|
|
*
|
|
* @param response HttpServletResponse
|
|
* @param response HttpServletResponse
|
|
* @param vendingOrderRes 返值
|
|
* @param vendingOrderRes 返值
|
|
@@ -96,4 +104,48 @@ public class ApiVendingController {
|
|
response.flushBuffer();
|
|
response.flushBuffer();
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ @ApiLog("设备出货成功回调")
|
|
|
|
+ @ApiOperation(value = "出货成功回调", notes = "出货成功回调")
|
|
|
|
+ @PostMapping("callback")
|
|
|
|
+ public void callback(@Valid @RequestBody VendingShipReq req) {
|
|
|
|
+ //设备出货成功回调
|
|
|
|
+ OrderGoods orderGoods = orderGoodsService.lambdaQuery()
|
|
|
|
+ .eq(OrderGoods::getDeviceId, req.getMachine_id())
|
|
|
|
+ .eq(OrderGoods::getOrderId, req.getSaleSn())
|
|
|
|
+ .eq(OrderGoods::getCargoWayNo, req.getChannelNum())
|
|
|
|
+ .one();
|
|
|
|
+
|
|
|
|
+ if (Objects.isNull(orderGoods)){
|
|
|
|
+ log.info("设备出货成功回调,未找到货品信息");
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ //出货量校验
|
|
|
|
+ if (orderGoods.getGoodsNum() < orderGoods.getShipmentNum() + 1){
|
|
|
|
+ log.info("设备出货成功回调,出货量过多");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ orderGoodsService.lambdaUpdate()
|
|
|
|
+ .set(OrderGoods::getShipmentNum, orderGoods.getShipmentNum() + 1)
|
|
|
|
+ .set(OrderGoods::getShippingTime, LocalDateTime.now())
|
|
|
|
+ .eq(OrderGoods::getDeviceId, req.getMachine_id())
|
|
|
|
+ .eq(OrderGoods::getOrderId, req.getSaleSn())
|
|
|
|
+ .eq(OrderGoods::getCargoWayNo,req.getChannelNum());
|
|
|
|
+
|
|
|
|
+ if (orderGoods.getGoodsNum() == orderGoods.getShipmentNum() + 1){
|
|
|
|
+ orderService.lambdaUpdate()
|
|
|
|
+ .set(Order::getOrderState, OrderStateEnum.COMPLETED.getValue())
|
|
|
|
+ .eq(Order::getId, req.getSaleSn());
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @ApiLog("设备心跳")
|
|
|
|
+ @ApiOperation(value = "设备心跳", notes = "设备心跳")
|
|
|
|
+ @PostMapping("heartbeat")
|
|
|
|
+ public void heartbeat(@Valid @RequestBody VendingShipReq req) {
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
}
|
|
}
|