|
|
|
@ -1,28 +1,28 @@
|
|
|
|
package com.zhehekeji.web.service;
|
|
|
|
package com.zhehekeji.web.service;
|
|
|
|
|
|
|
|
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
|
import com.zhehekeji.core.util.Assert;
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
|
|
|
|
|
|
|
import com.zhehekeji.common.util.PathUtil;
|
|
|
|
import com.zhehekeji.web.entity.Order;
|
|
|
|
import com.zhehekeji.web.entity.Order;
|
|
|
|
import com.zhehekeji.web.entity.Street;
|
|
|
|
import com.zhehekeji.web.entity.Street;
|
|
|
|
import com.zhehekeji.web.entity.StreetShelve;
|
|
|
|
import com.zhehekeji.web.entity.StreetShelve;
|
|
|
|
|
|
|
|
import com.zhehekeji.web.lib.OrderRealtime;
|
|
|
|
import com.zhehekeji.web.lib.PtzControlModule;
|
|
|
|
import com.zhehekeji.web.lib.PtzControlModule;
|
|
|
|
import com.zhehekeji.web.mapper.OrderMapper;
|
|
|
|
import com.zhehekeji.web.mapper.OrderMapper;
|
|
|
|
import com.zhehekeji.web.mapper.StreetMapper;
|
|
|
|
import com.zhehekeji.web.mapper.StreetMapper;
|
|
|
|
import com.zhehekeji.web.mapper.StreetShelveMapper;
|
|
|
|
import com.zhehekeji.web.mapper.StreetShelveMapper;
|
|
|
|
import com.zhehekeji.web.pojo.OrderSaveReq;
|
|
|
|
import com.zhehekeji.web.pojo.OrderSaveReq;
|
|
|
|
import com.zhehekeji.web.pojo.OrderSearch;
|
|
|
|
import com.zhehekeji.web.pojo.OrderSearch;
|
|
|
|
import org.springframework.beans.BeanUtils;
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
|
|
import org.springframework.dao.DuplicateKeyException;
|
|
|
|
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
import org.springframework.util.StringUtils;
|
|
|
|
|
|
|
|
import org.springframework.web.bind.annotation.RequestParam;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
|
import javax.annotation.Resource;
|
|
|
|
import java.time.LocalDateTime;
|
|
|
|
import java.time.LocalDateTime;
|
|
|
|
import java.util.List;
|
|
|
|
import java.util.List;
|
|
|
|
|
|
|
|
|
|
|
|
@Service
|
|
|
|
@Service
|
|
|
|
|
|
|
|
@Slf4j
|
|
|
|
public class OrderService {
|
|
|
|
public class OrderService {
|
|
|
|
|
|
|
|
|
|
|
|
@Resource
|
|
|
|
@Resource
|
|
|
|
@ -35,37 +35,108 @@ public class OrderService {
|
|
|
|
@Value("${picPort}")
|
|
|
|
@Value("${picPort}")
|
|
|
|
private String picPort;
|
|
|
|
private String picPort;
|
|
|
|
|
|
|
|
|
|
|
|
public List<Order> orders(OrderSearch orderSearch){
|
|
|
|
@Value("${mp4Path}")
|
|
|
|
QueryWrapper<Order> queryWrapper = new QueryWrapper<Order>().eq("order_num",orderSearch.getOrderNum());
|
|
|
|
private String mp4Path;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public List<Order> orders(OrderSearch orderSearch) {
|
|
|
|
|
|
|
|
QueryWrapper<Order> queryWrapper = new QueryWrapper<Order>().eq("order_num", orderSearch.getOrderNum());
|
|
|
|
List<Order> orders = orderMapper.selectList(queryWrapper);
|
|
|
|
List<Order> orders = orderMapper.selectList(queryWrapper);
|
|
|
|
return orders;
|
|
|
|
return orders;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public void pic(Integer type,String orderNum){
|
|
|
|
public void pic(Integer type, String orderNum) {
|
|
|
|
//todo 根据订单号直接找到货架号
|
|
|
|
//todo 根据订单号直接找到货架号
|
|
|
|
String shelveId = "aaa";
|
|
|
|
String shelveId = "aaa";
|
|
|
|
List<StreetShelve> streetShelves = streetShelveMapper.selectList(new QueryWrapper<StreetShelve>().eq("shelve_id",shelveId));
|
|
|
|
List<StreetShelve> streetShelves = streetShelveMapper.selectList(new QueryWrapper<StreetShelve>().eq("shelve_id", shelveId));
|
|
|
|
if(streetShelves.size() > 0){
|
|
|
|
if (streetShelves.size() > 0) {
|
|
|
|
Street street = streetMapper.selectById(streetShelves.get(0).getStreetId());
|
|
|
|
Street street = streetMapper.selectById(streetShelves.get(0).getStreetId());
|
|
|
|
if(street.getCamera1Id() != null){
|
|
|
|
if (street.getCamera1Id() != null) {
|
|
|
|
PtzControlModule.pic(street.getCamera1Id(),0,orderNum,type);
|
|
|
|
PtzControlModule.pic(street.getCamera1Id(), 0, orderNum, type);
|
|
|
|
}else if(street.getCamera2Id() != null){
|
|
|
|
} else if (street.getCamera2Id() != null) {
|
|
|
|
PtzControlModule.pic(street.getCamera2Id(),0,orderNum,type);
|
|
|
|
PtzControlModule.pic(street.getCamera2Id(), 0, orderNum, type);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public Long add(OrderSaveReq saveReq){
|
|
|
|
public Long add(OrderSaveReq saveReq) {
|
|
|
|
Order order = new Order();
|
|
|
|
Order order = new Order();
|
|
|
|
String orderNum = saveReq.getOrderNum();
|
|
|
|
String orderNum = saveReq.getOrderNum();
|
|
|
|
//todo 转换row shelveId column
|
|
|
|
order.setStatus(0);
|
|
|
|
order.setColumn(1);
|
|
|
|
|
|
|
|
order.setShelveId("aaa");
|
|
|
|
|
|
|
|
order.setRow(1);
|
|
|
|
|
|
|
|
order.setOrderNum(orderNum);
|
|
|
|
order.setOrderNum(orderNum);
|
|
|
|
order.setCreateTime(LocalDateTime.now());
|
|
|
|
order.setCreateTime(LocalDateTime.now());
|
|
|
|
orderMapper.insert(order);
|
|
|
|
orderMapper.insert(order);
|
|
|
|
return order.getId();
|
|
|
|
return order.getId();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public void orderStart(String orderNum) {
|
|
|
|
|
|
|
|
Order order = new Order();
|
|
|
|
|
|
|
|
order.setOrderNum(orderNum);
|
|
|
|
|
|
|
|
order.setStartTime(LocalDateTime.now());
|
|
|
|
|
|
|
|
//todo 根据订单号,找到plcId,找到巷道
|
|
|
|
|
|
|
|
String plcId = "123";
|
|
|
|
|
|
|
|
Street street = streetMapper.getStreetByPlcId(plcId);
|
|
|
|
|
|
|
|
if(street == null){
|
|
|
|
|
|
|
|
log.error("订单开始信号,巷道不存在,orderNum:{},plcId:{}", orderNum,plcId);
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
OrderRealtime.startOrder(street.getId(), orderNum);
|
|
|
|
|
|
|
|
orderMapper.update(order, new UpdateWrapper<Order>().eq("order_num", orderNum));
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* 结束订单,下载该段时间的视频
|
|
|
|
|
|
|
|
* @param orderNum
|
|
|
|
|
|
|
|
* @param type 是否告警 1:是
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
public void orderStop(String orderNum,Integer type) {
|
|
|
|
|
|
|
|
Order order = orderMapper.getOneByOrderNum(orderNum);
|
|
|
|
|
|
|
|
if (order == null) {
|
|
|
|
|
|
|
|
log.error("订单结束信号,订单不存在,orderNum:{}", orderNum);
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if (order.getStartTime() == null) {
|
|
|
|
|
|
|
|
log.error("订单结束信号,订单未开始,orderNum:{}", orderNum);
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if(type != null && type == 1){
|
|
|
|
|
|
|
|
order.setStatus(type);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
order.setOrderNum(orderNum);
|
|
|
|
|
|
|
|
order.setEndTime(LocalDateTime.now());
|
|
|
|
|
|
|
|
//todo 根据订单号,找到plcId,找到巷道
|
|
|
|
|
|
|
|
String plcId = "123";
|
|
|
|
|
|
|
|
Street street = streetMapper.getStreetByPlcId(plcId);
|
|
|
|
|
|
|
|
if(street == null){
|
|
|
|
|
|
|
|
log.error("订单结束信号,巷道不存在,orderNum:{},plcId:{}", orderNum,plcId);
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if (street.getCamera1Id() != null) {
|
|
|
|
|
|
|
|
String path = PathUtil.createFileName("mp4");
|
|
|
|
|
|
|
|
PtzControlModule.downloadMp4(street.getCamera1Id(), mp4Path + path, orderNum, order.getStartTime(), order.getEndTime());
|
|
|
|
|
|
|
|
order.setVideoPath1(path);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if (street.getCamera2Id() != null) {
|
|
|
|
|
|
|
|
String path = PathUtil.createFileName("mp4");
|
|
|
|
|
|
|
|
PtzControlModule.downloadMp4(street.getCamera2Id(), mp4Path + path, orderNum, order.getStartTime(), order.getEndTime());
|
|
|
|
|
|
|
|
order.setVideoPath2(path);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
orderMapper.update(order, new UpdateWrapper<Order>().eq("order_num", orderNum));
|
|
|
|
|
|
|
|
OrderRealtime.stopOrder(street.getId());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* 发生告警,如果仍有运行的订单,需要将该订单标记为告警,并下载录像
|
|
|
|
|
|
|
|
* @param plcId
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
public void error(String plcId){
|
|
|
|
|
|
|
|
Street street = streetMapper.getStreetByPlcId(plcId);
|
|
|
|
|
|
|
|
if(street == null){
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
String orderNum = OrderRealtime.stopOrder(street.getId());
|
|
|
|
|
|
|
|
//停止订单
|
|
|
|
|
|
|
|
orderStop(orderNum,1);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|