增加 street与shelves的关联关系表

camera_merge
王一鸣 5 years ago
parent 6b955832d8
commit 3f7ba8dbfa

@ -3,14 +3,11 @@ package com.zhehekeji.web.controller;
import com.zhehekeji.common.util.ValidatorUtil;
import com.zhehekeji.core.pojo.Result;
import com.zhehekeji.core.util.Assert;
import com.zhehekeji.filter.pojo.SessionHandler;
import com.zhehekeji.filter.pojo.UserType;
import com.zhehekeji.web.entity.Order;
import com.zhehekeji.web.pojo.OrderSaveReq;
import com.zhehekeji.web.pojo.OrderSearch;
import com.zhehekeji.web.service.OrderService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;

@ -48,6 +48,13 @@ public class StreetController {
return Result.success();
}
@DeleteMapping("/{id}")
@ApiOperation(value = "巷道删除")
public Result del(@PathVariable Integer id){
streetService.del(id);
return Result.success();
}
/*@GetMapping("/userCenter")

@ -19,8 +19,14 @@ public class Order {
@ApiModelProperty("订单号")
private String orderNum;
@ApiModelProperty("仓位号")
private String positionNum;
private String shelveId;
private Integer row;
private Integer column;
// @ApiModelProperty("仓位号")
// private String positionNum;
@ApiModelProperty("视频图片地址")
private String videoPath;

@ -0,0 +1,36 @@
package com.zhehekeji.web.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@TableName
@Data
public class OrderLastMedia {
@TableId
private String shelveId;
@TableField("`row`")
private Integer row;
@TableField("`column`")
private Integer column;
private Long lastPutOrderId;
@ApiModelProperty("入库照片")
private String putPath;
private Long lastOutOrderId;
@ApiModelProperty("出库照片")
private String outPutPath;
private Long lastGoodsOrderId;
@ApiModelProperty("货位照片")
private String goodsPath;
}

@ -1,19 +1,16 @@
package com.zhehekeji.web.lib;
import com.sun.jna.Pointer;
import com.zhehekeji.common.util.PathUtil;
import com.zhehekeji.web.entity.Order;
import com.zhehekeji.web.mapper.OrderLastMediaMapper;
import com.zhehekeji.web.mapper.OrderMapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.IOException;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
/**
* @Description
@ -32,56 +29,20 @@ public class CaptureReceiveCB implements NetSDKLib.fSnapRev{
private static String fileType = "jpg";
@Override
public void invoke(NetSDKLib.LLong lLoginID, Pointer pBuf, int RevLen, int EncodeType, int CmdSerial, Pointer dwUser) {
OrderInfo orderInfo = OrderCmdSerial.getOrderInfo(CmdSerial);
OrderCmdSerial.remove(CmdSerial);
if(orderInfo != null){
String path = PathUtil.createFileName(fileType);
String picPath = savePic(pBuf,RevLen,mediaPath+path);
if(picPath == null){
return;
}
log.debug("save pic orderId:{} path:{}",orderInfo.getOrderId(),picPath);
Order order = new Order();
order.setId(orderInfo.getOrderId());
if(OrderInfo.OrderPathType.GOODS.getType().equals(orderInfo.getType())){
order.setGoodsPath(path);
}else if(OrderInfo.OrderPathType.PUT.getType().equals(orderInfo.getType())){
order.setPutPath(path);
}else if(OrderInfo.OrderPathType.OUTPUT.getType().equals(orderInfo.getType())){
order.setOutPutPath(path);
}
orderMapper.updateById(order);
return;
}
log.warn("no order");
@Resource
private OrderLastMediaMapper lastMediaMapper;
}
/**
* 线
*/
private static ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(2, 10, 200,
TimeUnit.MILLISECONDS, new ArrayBlockingQueue<>(10000000));
private String savePic(Pointer pBuf, int RevLen,String path){
BufferedImage bufferedImage = null;
if(pBuf != null && RevLen > 0) {
byte[] buf = pBuf.getByteArray(0, RevLen);
ByteArrayInputStream byteArrInput = new ByteArrayInputStream(buf);
try {
bufferedImage = ImageIO.read(byteArrInput);
if(bufferedImage == null) {
return null;
}
File file = PathUtil.getFile(path);
ImageIO.write(bufferedImage, fileType, file);
return path;
} catch (IOException e) {
e.printStackTrace();
}finally {
if(bufferedImage != null){
bufferedImage.flush();
}
@Override
public void invoke(NetSDKLib.LLong lLoginID, Pointer pBuf, int RevLen, int EncodeType, int CmdSerial, Pointer dwUser) {
CaptureRunnable captureRunnable = new CaptureRunnable(CmdSerial,fileType,RevLen,mediaPath,pBuf,orderMapper,lastMediaMapper);
threadPoolExecutor.execute(captureRunnable);
}
}
return null;
}
}

@ -0,0 +1,125 @@
package com.zhehekeji.web.lib;
import com.sun.jna.Pointer;
import com.zhehekeji.common.util.PathUtil;
import com.zhehekeji.web.entity.Order;
import com.zhehekeji.web.entity.OrderLastMedia;
import com.zhehekeji.web.mapper.OrderLastMediaMapper;
import com.zhehekeji.web.mapper.OrderMapper;
import lombok.extern.slf4j.Slf4j;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.IOException;
@Slf4j
public class CaptureRunnable implements Runnable {
private int CmdSerial;
private String fileType;
private Integer RevLen;
private String mediaPath;
private Pointer pBuf;
private OrderMapper orderMapper;
private OrderLastMediaMapper lastMediaMapper;
public CaptureRunnable(int cmdSerial, String fileType, Integer revLen, String mediaPath,
Pointer pBuf, OrderMapper orderMapper, OrderLastMediaMapper lastMediaMapper) {
this.CmdSerial = cmdSerial;
this.fileType = fileType;
this.RevLen = revLen;
this.mediaPath = mediaPath;
this.pBuf = pBuf;
this.orderMapper = orderMapper;
this.lastMediaMapper = lastMediaMapper;
}
@Override
public void run() {
OrderInfo orderInfo = OrderCmdSerial.getOrderInfo(CmdSerial);
OrderCmdSerial.remove(CmdSerial);
if(orderInfo != null){
String path = PathUtil.createFileName(fileType);
String picPath = savePic(pBuf,RevLen,mediaPath+path);
if(picPath == null){
return;
}
log.debug("save pic orderId:{} path:{}",orderInfo.getOrderId(),picPath);
OrderLastMedia orderLastMedia = lastMediaMapper.selectById("qqq");
if(orderLastMedia == null){
orderLastMedia = initLastOrder();
}
Order order = new Order();
order.setId(orderInfo.getOrderId());
if(OrderInfo.OrderPathType.GOODS.getType().equals(orderInfo.getType())){
order.setGoodsPath(path);
if(orderInfo.getOrderId()>orderLastMedia.getLastGoodsOrderId()){
orderLastMedia.setGoodsPath(path);
lastMediaMapper.updateById(orderLastMedia);
}
}else if(OrderInfo.OrderPathType.PUT.getType().equals(orderInfo.getType())){
order.setPutPath(path);
if(orderInfo.getOrderId()>orderLastMedia.getLastPutOrderId()){
orderLastMedia.setPutPath(path);
lastMediaMapper.updateById(orderLastMedia);
}
}else if(OrderInfo.OrderPathType.OUTPUT.getType().equals(orderInfo.getType())){
order.setOutPutPath(path);
if(orderInfo.getOrderId()>orderLastMedia.getLastOutOrderId()){
orderLastMedia.setOutPutPath(path);
lastMediaMapper.updateById(orderLastMedia);
}
}
orderMapper.updateById(order);
return;
}
log.warn("no order");
}
private OrderLastMedia initLastOrder(){
OrderLastMedia orderLastMedia = new OrderLastMedia();
orderLastMedia.setShelveId("qqq");
orderLastMedia.setLastOutOrderId(0L);
orderLastMedia.setLastPutOrderId(0L);
orderLastMedia.setLastGoodsOrderId(0L);
lastMediaMapper.insert(orderLastMedia);
return orderLastMedia;
}
private String savePic(Pointer pBuf, int RevLen,String path){
BufferedImage bufferedImage = null;
if(pBuf != null && RevLen > 0) {
byte[] buf = pBuf.getByteArray(0, RevLen);
ByteArrayInputStream byteArrInput = new ByteArrayInputStream(buf);
try {
bufferedImage = ImageIO.read(byteArrInput);
if(bufferedImage == null) {
return null;
}
File file = PathUtil.getFile(path);
ImageIO.write(bufferedImage, fileType, file);
return path;
} catch (IOException e) {
e.printStackTrace();
}finally {
if(bufferedImage != null){
bufferedImage.flush();
}
}
}
return null;
}
}

@ -11,6 +11,8 @@ public class OrderInfo {
private Long orderId;
private String orderNum;
/**
* 1: 2 3
*/

@ -220,7 +220,7 @@ public class PtzControlModule {
stuSnapParams.InterSnap = 0; // timer capture picture time interval
stuSnapParams.CmdSerial = OrderCmdSerial.nextSerial();
Long orderId = 1L;
OrderInfo orderInfo = new OrderInfo(orderId,1);
OrderInfo orderInfo = new OrderInfo(orderId,"qwe",1);
OrderCmdSerial.put(stuSnapParams.CmdSerial,orderInfo);
IntByReference reserved = new IntByReference(0);
return LoginModule.netsdk.CLIENT_SnapPictureEx(CameraConnMap.getConnId(cameraId), stuSnapParams, reserved);

@ -0,0 +1,7 @@
package com.zhehekeji.web.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zhehekeji.web.entity.OrderLastMedia;
public interface OrderLastMediaMapper extends BaseMapper<OrderLastMedia> {
}

@ -1,20 +1,14 @@
package com.zhehekeji.web.pojo;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.time.LocalDateTime;
@Data
public class OrderSaveReq {
@NotNull(message = "serialNum(流水号不能为空)")
@ApiModelProperty("流水号")
private Long serialNum;
@ApiModelProperty("订单号")
@NotEmpty(message = "orderNum订单号不能为空")
private String orderNum;
@ -23,20 +17,6 @@ public class OrderSaveReq {
@NotEmpty(message = "positionNum仓位号不能为空")
private String positionNum;
@ApiModelProperty("视频/图片地址")
private String filePath;
@ApiModelProperty("媒体类型 MP4 or jpg or ???")
private String mediaType;
@NotEmpty(message = "deviceid设备不能为空")
@ApiModelProperty("设备标识")
private String deviceid;
@ApiModelProperty("执行时间 形式2019-09-09 12:12:12")
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss")
private LocalDateTime execTime;
@ApiModelProperty("约定token")
@NotEmpty(message = "token不能为空")
private String token;

@ -9,6 +9,4 @@ public class OrderSearch {
@NotEmpty(message = "订单号不能为空")
private String orderNum;
private String deviceid;
}

@ -27,46 +27,19 @@ public class OrderService {
public List<Order> orders(OrderSearch orderSearch){
QueryWrapper<Order> queryWrapper = new QueryWrapper<Order>().eq("order_num",orderSearch.getOrderNum());
if(!StringUtils.isEmpty(orderSearch.getDeviceid())){
queryWrapper.eq("deviceid",orderSearch.getDeviceid());
}
List<Order> orders = orderMapper.selectList(queryWrapper);
//图片地址处理
// orders.forEach(order -> {
// String deviceId = order.getDeviceid();
// if(!StringUtils.isEmpty(deviceId)){
// String [] strings = deviceId.split("_");
// if(strings != null && strings.length > 4){
// Integer len = strings.length;
// String ip = strings[len -4]+"."+strings[len-3]+"."+strings[len-2]+"."+strings[len-1];
// // fliePath -> E:/stable3262/tadpole/tpvs17/x64/Release/../../../runner17/x64/LIQUN_Image/20200827/155907_HL0101001002031_name1.jpg
// //去掉盘符,取后面的地址 拼接
// int i = order.getFilePath().indexOf(":");
// String path = "http://"+ip+":"+picPort+order.getFilePath().substring(i+1,order.getFilePath().length());
// order.setMediaPath(path);
// }
// }
// });
return orders;
}
public static void main(String[] args) {
String filePath = "E2:/stable3262/tadpole/tpvs17/x64/Release/../../../runner17/x64/LIQUN_Image/20200827/155907_HL0101001002031_name1.jpg";
int i = filePath.indexOf(":");
System.out.println(filePath.substring(i+1,filePath.length()));
System.out.println(i);
}
public Long add(OrderSaveReq saveReq){
Order order = new Order();
BeanUtils.copyProperties(saveReq,order);
String orderNum = saveReq.getOrderNum();
//todo 转换row shelveId column
order.setColumn(1);
order.setShelveId("aaa");
order.setRow(1);
order.setCreateTime(LocalDateTime.now());
try {
orderMapper.insert(order);
}catch (DuplicateKeyException e){
Assert.isTrue(false,"流水号不合法");
}
return order.getId();
}

@ -1,9 +1,11 @@
package com.zhehekeji.web.service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.zhehekeji.web.entity.Street;
import com.zhehekeji.web.entity.StreetShelve;
import com.zhehekeji.web.mapper.OrderLastMediaMapper;
import com.zhehekeji.web.mapper.StreetMapper;
import com.zhehekeji.web.mapper.StreetShelveMapper;
import com.zhehekeji.web.pojo.street.StreetSearch;
@ -20,6 +22,7 @@ import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@Service
@Slf4j
@ -29,6 +32,8 @@ public class StreetService {
private StreetMapper streetMapper;
@Resource
private StreetShelveMapper streetShelveMapper;
@Resource
private OrderLastMediaMapper lastMediaMapper;
@Transactional(rollbackFor = Exception.class)
public Integer add(Street street){
@ -40,10 +45,21 @@ public class StreetService {
return street.getId();
}
public List<String> shelvesByStreetId(Integer streetId){
List<StreetShelve> streetShelves = streetShelveMapper.selectList(new QueryWrapper<StreetShelve>().eq("street_id",streetId));
return streetShelves.stream().map(StreetShelve::getShelveId).collect(Collectors.toList());
}
@Transactional(rollbackFor = Exception.class)
public void del(Integer id){
streetMapper.deleteById(id);
// List<String> sheleves = shelvesByStreetId(id);
// if(!CollectionUtils.isEmpty(sheleves)){
// lastMediaMapper.deleteBatchIds(sheleves);
// }
delStreetShelve(id);
}
private List<String> check(Street street){

Loading…
Cancel
Save