|
@@ -10,12 +10,19 @@ import lombok.AllArgsConstructor;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.springblade.common.aspect.VendingFlag;
|
|
|
import org.springblade.common.constant.CommonConstant;
|
|
|
+import org.springblade.common.enums.FacilityStatusEnum;
|
|
|
import org.springblade.common.enums.OrderStateEnum;
|
|
|
import org.springblade.core.log.annotation.ApiLog;
|
|
|
+import org.springblade.modules.api.request.VendingHeartReq;
|
|
|
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.service.VendingOrderService;
|
|
|
+import org.springblade.modules.business.entity.Facility;
|
|
|
+import org.springblade.modules.business.entity.FacilityFault;
|
|
|
+import org.springblade.modules.business.enums.FacilityFaultStatusEnum;
|
|
|
+import org.springblade.modules.business.service.IFacilityFaultService;
|
|
|
+import org.springblade.modules.business.service.IFacilityService;
|
|
|
import org.springblade.modules.finance.entity.Order;
|
|
|
import org.springblade.modules.finance.entity.OrderGoods;
|
|
|
import org.springblade.modules.finance.service.IOrderGoodsService;
|
|
@@ -32,10 +39,7 @@ import javax.validation.Valid;
|
|
|
import java.io.IOException;
|
|
|
import java.nio.charset.StandardCharsets;
|
|
|
import java.time.LocalDateTime;
|
|
|
-import java.util.HashMap;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Map;
|
|
|
-import java.util.Objects;
|
|
|
+import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
@@ -51,6 +55,8 @@ public class ApiVendingController {
|
|
|
private final VendingOrderService vendingOrderService;
|
|
|
private final IOrderGoodsService orderGoodsService;
|
|
|
private final IOrderService orderService;
|
|
|
+ private final IFacilityService facilityService;
|
|
|
+ private final IFacilityFaultService facilityFaultService;
|
|
|
|
|
|
|
|
|
@ApiLog("查询设备订单信息")
|
|
@@ -115,27 +121,31 @@ public class ApiVendingController {
|
|
|
.eq(OrderGoods::getCargoWayNo, req.getChannelNum())
|
|
|
.one();
|
|
|
|
|
|
- if (Objects.isNull(orderGoods)){
|
|
|
+ if (Objects.isNull(orderGoods)) {
|
|
|
log.info("设备出货成功回调,未找到货品信息");
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
//出货量校验
|
|
|
- if (orderGoods.getGoodsNum() < orderGoods.getShipmentNum() + 1){
|
|
|
+ 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 ("OK".equals(req.getStatus())) {
|
|
|
+ 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());
|
|
|
+ }
|
|
|
+ } else {//出货故障处理
|
|
|
|
|
|
- if (orderGoods.getGoodsNum() == orderGoods.getShipmentNum() + 1){
|
|
|
- orderService.lambdaUpdate()
|
|
|
- .set(Order::getOrderState, OrderStateEnum.COMPLETED.getValue())
|
|
|
- .eq(Order::getId, req.getSaleSn());
|
|
|
}
|
|
|
|
|
|
}
|
|
@@ -143,9 +153,44 @@ public class ApiVendingController {
|
|
|
@ApiLog("设备心跳")
|
|
|
@ApiOperation(value = "设备心跳", notes = "设备心跳")
|
|
|
@PostMapping("heartbeat")
|
|
|
- public void heartbeat(@Valid @RequestBody VendingShipReq req) {
|
|
|
-
|
|
|
-
|
|
|
+ public void heartbeat(@Valid @RequestBody VendingHeartReq req) {
|
|
|
+ Facility facility = facilityService.getById(req.getMachine_id());
|
|
|
+ if (Objects.isNull(facility)) {
|
|
|
+ log.info("设备心跳,未找到设备信息");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ Date now = new Date();
|
|
|
+ facility.setHeartbeatTime(now);
|
|
|
+ if ("0".equals(req.getErrorNum())) {
|
|
|
+ facility.setFacilityStatus(FacilityStatusEnum.ON_LINE.getValue());
|
|
|
+ facilityService.updateById(facility);
|
|
|
+
|
|
|
+ FacilityFault facilityFault = new FacilityFault();
|
|
|
+ facilityFault.setFacilityId(req.getMachine_id());
|
|
|
+ facilityFault.setFaultDesc(FacilityFaultStatusEnum.getDesc("0"));
|
|
|
+ facilityFault.setFaultStatus("0");
|
|
|
+ facilityFault.setCreateTime(now);
|
|
|
+ facilityFaultService.save(facilityFault);
|
|
|
+ return;
|
|
|
+ } else {
|
|
|
+ //设备故障
|
|
|
+ facility.setFacilityStatus(FacilityStatusEnum.FAULT.getValue());
|
|
|
+ facilityService.updateById(facility);
|
|
|
+
|
|
|
+ //录入故障信息
|
|
|
+ String[] split = req.getErrorArray().replace("{", "").replace("}", "").split(",");
|
|
|
+
|
|
|
+ List<FacilityFault> facilityFaults = new ArrayList<>();
|
|
|
+ for (String status : split) {
|
|
|
+ FacilityFault facilityFault = new FacilityFault();
|
|
|
+ facilityFault.setFacilityId(req.getMachine_id());
|
|
|
+ facilityFault.setFaultDesc(FacilityFaultStatusEnum.getDesc(status));
|
|
|
+ facilityFault.setFaultStatus(status);
|
|
|
+ facilityFault.setCreateTime(now);
|
|
|
+ facilityFaults.add(facilityFault);
|
|
|
+ }
|
|
|
+ facilityFaultService.saveBatch(facilityFaults);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
}
|