Commit 05f11d7f LN

库位增加坐标

1 个父辈 073e364c
......@@ -2,6 +2,8 @@ package com.myproject.bean.update;
import com.google.common.base.Strings;
import com.myproject.bean.BaseMongoBean;
import org.springframework.data.mongodb.core.index.GeoSpatialIndexType;
import org.springframework.data.mongodb.core.index.GeoSpatialIndexed;
import java.util.List;
......@@ -14,6 +16,9 @@ public class StoragePos extends BaseMongoBean {
private Barcode barcode;
private String posName;
@GeoSpatialIndexed(type=GeoSpatialIndexType.GEO_2DSPHERE)
private double[] coordinate;
/**
* 该仓位是否限制物编,虚拟仓使用
*/
......@@ -35,6 +40,14 @@ public class StoragePos extends BaseMongoBean {
//可出库时间,类型的锡膏时,可出库时间为最新放入的锡膏的可出库时间
private long canCheckOutTime = 0;
public double[] getCoordinate() {
return coordinate;
}
public void setCoordinate(double[] coordinate) {
this.coordinate = coordinate;
}
public Barcode getBarcode() {
return barcode;
}
......
package com.myproject.util;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.data.geo.Point;
import org.springframework.data.mongodb.core.query.Criteria;
import java.util.concurrent.ExecutionException;
public class PointUtil {
protected static final transient Logger log = LogManager.getLogger(PointUtil.class);
public static Point getPosPoint(String posId ) {
return getPosPoint(posId,true );
}
public static Point getPosPoint(String posId, boolean useDrawerPoint) {
// 库位号格式:
// 例:05AA03040102
// 05:表示料仓编号,01-08
// AA:存储机构A面或B面,AA或者BB
// 03:表示抽屉在第几行
// 04:表示抽屉在第几列
// 01:表示在抽屉中的第几行
// 02:表示在抽屉中的第几列
Point p = new Point(0, 0);
try {
if (posId.length() == 12) {
double storageNum = 0;
int storage = Integer.parseInt(posId.substring(0, 2));
String typeStr = posId.substring(2, 4);
if (typeStr.equals("AA")) {
storageNum = storage * 10 + 1;
} else {
storageNum = storage * 10 + 2;
}
double row = Integer.parseInt(posId.substring(4, 6));
double column = Integer.parseInt(posId.substring(6, 8));
double x = storageNum + column / 100;
double y = storageNum + row / 1000;
if (useDrawerPoint) {
double drawerRow = Integer.parseInt(posId.substring(8, 10));
double drawerColumn = Integer.parseInt(posId.substring(10, 12));
x += drawerColumn / 100 / 1000;
y += +drawerRow / 1000 / 100;
}
p = new Point(x, y);
}
} catch (Exception ex) {
log.error("解析库位[" + posId + "]的坐标出错:" + ex);
}
// log.info("解析库位[" + posId + "]的坐标结果:" + p.toString());
return p;
}
}
\ No newline at end of file
......@@ -13,11 +13,13 @@ import com.myproject.manager.*;
import com.myproject.poi.BarcodeXlsParser;
import com.myproject.poi.BomXlsParser;
import com.myproject.poi.ComponentXlsParser;
import com.myproject.util.PointUtil;
import com.myproject.util.StorageConstants;
import com.myproject.webapp.controller.webService.DataCache;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.geo.Point;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
......@@ -369,6 +371,8 @@ public class FileUploadController extends BaseFormController {
storagePos.setW(storagePosExcel.getW());
storagePos.setH(storagePosExcel.getH());
storagePos.setStorageId(storage.getId());
Point point= PointUtil.getPosPoint(storagePos.getPosName());
storagePos.setCoordinate(new double[]{point.getX(),point.getY()});
storagePosManager.save(storagePos);
}
}
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!