库区AreaNameDic调整
parent
4e120390e2
commit
77d0803413
|
|
@ -95,6 +95,7 @@ public class ScreenViewController {
|
||||||
array.add(this.formatDay("已完成", "" + value2, "center", "#ffffff", "bold"));
|
array.add(this.formatDay("已完成", "" + value2, "center", "#ffffff", "bold"));
|
||||||
return new ResponseEntity(array, HttpStatus.OK);
|
return new ResponseEntity(array, HttpStatus.OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping(value = "/kmdView")
|
@PostMapping(value = "/kmdView")
|
||||||
@ApiOperation("库满度")
|
@ApiOperation("库满度")
|
||||||
@AnonymousAccess
|
@AnonymousAccess
|
||||||
|
|
@ -104,8 +105,6 @@ public class ScreenViewController {
|
||||||
List<Object[]> objs = pointServiceImpl.queryPointKmd();
|
List<Object[]> objs = pointServiceImpl.queryPointKmd();
|
||||||
HashMap<String, Double> qhtk = new HashMap<String, Double>();
|
HashMap<String, Double> qhtk = new HashMap<String, Double>();
|
||||||
HashMap<String, Double> qhtm = new HashMap<String, Double>();
|
HashMap<String, Double> qhtm = new HashMap<String, Double>();
|
||||||
HashMap<String,Double> zck=new HashMap<String,Double>();
|
|
||||||
HashMap<String,Double> zcm=new HashMap<String,Double>();
|
|
||||||
int size = objs.size();
|
int size = objs.size();
|
||||||
if (objs.size() > 0) {
|
if (objs.size() > 0) {
|
||||||
for (int i = 0; i < objs.size(); i++) {
|
for (int i = 0; i < objs.size(); i++) {
|
||||||
|
|
@ -113,9 +112,9 @@ public class ScreenViewController {
|
||||||
String areaName = obj[0].toString();
|
String areaName = obj[0].toString();
|
||||||
String status = obj[1].toString();
|
String status = obj[1].toString();
|
||||||
Double qty = Double.parseDouble(obj[2].toString());
|
Double qty = Double.parseDouble(obj[2].toString());
|
||||||
if (areaName.equals(AreaNameDic.OneFC)||areaName.equals(AreaNameDic.TwoFB)) {
|
if (areaName.equals(AreaNameDic.DJQ) || areaName.equals(AreaNameDic.XJQ)) {
|
||||||
qhtm.put(status, qty);
|
qhtm.put(status, qty);
|
||||||
} else if (areaName.equals(AreaNameDic.OneFK)||areaName.equals(AreaNameDic.TwoFK)) {
|
} else if (areaName.equals(AreaNameDic.DJQ) || areaName.equals(AreaNameDic.XJQ)) {
|
||||||
qhtk.put(status, qty);
|
qhtk.put(status, qty);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -123,12 +122,12 @@ public class ScreenViewController {
|
||||||
if (qhtk != null) {
|
if (qhtk != null) {
|
||||||
Double k = qhtk.get(BaseStatus.FREE) == null ? 0d : qhtk.get(BaseStatus.FREE);
|
Double k = qhtk.get(BaseStatus.FREE) == null ? 0d : qhtk.get(BaseStatus.FREE);
|
||||||
Double m = qhtk.get(BaseStatus.USED) == null ? 0d : qhtk.get(BaseStatus.USED);
|
Double m = qhtk.get(BaseStatus.USED) == null ? 0d : qhtk.get(BaseStatus.USED);
|
||||||
array.add(this.formatKmd(AreaNameDic.OneFK,m*100/(k+m)));
|
array.add(this.formatKmd(AreaNameDic.DJQ, m * 100 / (k + m)));
|
||||||
}
|
}
|
||||||
if (qhtm != null) {
|
if (qhtm != null) {
|
||||||
Double k = qhtm.get(BaseStatus.FREE) == null ? 0d : qhtm.get(BaseStatus.FREE);
|
Double k = qhtm.get(BaseStatus.FREE) == null ? 0d : qhtm.get(BaseStatus.FREE);
|
||||||
Double m = qhtm.get(BaseStatus.USED) == null ? 0d : qhtm.get(BaseStatus.USED);
|
Double m = qhtm.get(BaseStatus.USED) == null ? 0d : qhtm.get(BaseStatus.USED);
|
||||||
array.add(this.formatKmd(AreaNameDic.OneFC,m*100/(k+m)));
|
array.add(this.formatKmd(AreaNameDic.DJQ, m * 100 / (k + m)));
|
||||||
}
|
}
|
||||||
HashMap<String, Object> map = new HashMap<String, Object>();
|
HashMap<String, Object> map = new HashMap<String, Object>();
|
||||||
map.put("data", array);
|
map.put("data", array);
|
||||||
|
|
@ -179,6 +178,7 @@ public class ScreenViewController {
|
||||||
map.put("c4", (int) ck % 10);
|
map.put("c4", (int) ck % 10);
|
||||||
return new ResponseEntity(map, HttpStatus.OK);
|
return new ResponseEntity(map, HttpStatus.OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping(value = "/inMonth")
|
@PostMapping(value = "/inMonth")
|
||||||
@ApiOperation("每月入库")
|
@ApiOperation("每月入库")
|
||||||
@AnonymousAccess
|
@AnonymousAccess
|
||||||
|
|
@ -208,12 +208,12 @@ public class ScreenViewController {
|
||||||
String areaName = obj[0].toString();
|
String areaName = obj[0].toString();
|
||||||
Double qty = Double.parseDouble(obj[1].toString());
|
Double qty = Double.parseDouble(obj[1].toString());
|
||||||
totalQty += qty;
|
totalQty += qty;
|
||||||
if (areaName.equals(AreaNameDic.OneFC)||areaName.equals(AreaNameDic.TwoFB)) {
|
if (areaName.equals(AreaNameDic.DJQ) || areaName.equals(AreaNameDic.XJQ)) {
|
||||||
qht.put(areaName, qty);
|
qht.put(areaName, qty);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (qht != null) {
|
if (qht != null) {
|
||||||
double value=qht.get(AreaNameDic.OneFK);
|
double value = qht.get(AreaNameDic.DJQ);
|
||||||
array.add(this.formatKmd("前后桶", value * 100 / totalQty));
|
array.add(this.formatKmd("前后桶", value * 100 / totalQty));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -239,6 +239,7 @@ public class ScreenViewController {
|
||||||
map.put("activeRadius", "60%");
|
map.put("activeRadius", "60%");
|
||||||
return new ResponseEntity(map, HttpStatus.OK);
|
return new ResponseEntity(map, HttpStatus.OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping(value = "/inOutDay")
|
@PostMapping(value = "/inOutDay")
|
||||||
@ApiOperation("每日出入库")
|
@ApiOperation("每日出入库")
|
||||||
@AnonymousAccess
|
@AnonymousAccess
|
||||||
|
|
@ -372,6 +373,7 @@ public class ScreenViewController {
|
||||||
}
|
}
|
||||||
return new ResponseEntity(map, HttpStatus.OK);
|
return new ResponseEntity(map, HttpStatus.OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping(value = "/taskPerformed")
|
@PostMapping(value = "/taskPerformed")
|
||||||
@ApiOperation("前后桶正在执行的任务")
|
@ApiOperation("前后桶正在执行的任务")
|
||||||
@AnonymousAccess
|
@AnonymousAccess
|
||||||
|
|
@ -428,6 +430,7 @@ public class ScreenViewController {
|
||||||
map.put("number", number);
|
map.put("number", number);
|
||||||
return map;
|
return map;
|
||||||
}
|
}
|
||||||
|
|
||||||
public HashMap<String, Object> formatKmd(String name, double value) {
|
public HashMap<String, Object> formatKmd(String name, double value) {
|
||||||
HashMap<String, Object> map = new HashMap<String, Object>();
|
HashMap<String, Object> map = new HashMap<String, Object>();
|
||||||
map.put("name", name);
|
map.put("name", name);
|
||||||
|
|
|
||||||
|
|
@ -111,23 +111,6 @@ public class XksAppController {
|
||||||
return successRequest("呼叫成功!");
|
return successRequest("呼叫成功!");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@PostMapping("/lineReturn")
|
|
||||||
@Log("线边返空")
|
|
||||||
@ApiOperation("线边返空")
|
|
||||||
@AnonymousAccess
|
|
||||||
public ResponseEntity<Object> lineReturn(@RequestBody LineReturn lineReturn) {
|
|
||||||
try {
|
|
||||||
String stockCode = lineReturn.getStockCode();//容器编号
|
|
||||||
String pointCode = lineReturn.getPointCode();//点位编号
|
|
||||||
stockService.lineContainerReturn(stockCode, pointCode);
|
|
||||||
} catch (Exception e) {
|
|
||||||
return badRequest(e.getMessage());
|
|
||||||
}
|
|
||||||
return successRequest("线边返空成功!");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private ResponseEntity<Object> badRequest(String message) {
|
private ResponseEntity<Object> badRequest(String message) {
|
||||||
return new ResponseEntity<>(ApiResult.fail(BAD_REQUEST.value(), message, ""), HttpStatus.BAD_REQUEST);
|
return new ResponseEntity<>(ApiResult.fail(BAD_REQUEST.value(), message, ""), HttpStatus.BAD_REQUEST);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -117,7 +117,7 @@ public class ContainerServiceImpl implements ContainerService {
|
||||||
String jsonObject = "";
|
String jsonObject = "";
|
||||||
agv_on_off = dictService.getDictDescription("agv_on_off") == null ? "OFF" : dictService.getDictDescription("agv_on_off").getDescription();
|
agv_on_off = dictService.getDictDescription("agv_on_off") == null ? "OFF" : dictService.getDictDescription("agv_on_off").getDescription();
|
||||||
//空车入场和满车入场
|
//空车入场和满车入场
|
||||||
if (areaName.equals(AreaNameDic.OneFK) || areaName.equals(AreaNameDic.OneFK)) {
|
if (areaName.equals(AreaNameDic.CPRKQ) || areaName.equals(AreaNameDic.FBQ)) {
|
||||||
//是否调用AGV
|
//是否调用AGV
|
||||||
if (agv_on_off.equals("ON")) {
|
if (agv_on_off.equals("ON")) {
|
||||||
//调用容器入场接口
|
//调用容器入场接口
|
||||||
|
|
@ -136,7 +136,7 @@ public class ContainerServiceImpl implements ContainerService {
|
||||||
log.error("容器入场失败:{}", message);
|
log.error("容器入场失败:{}", message);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
} else if (areaName.equals(AreaNameDic.OneFC) || areaName.equals(AreaNameDic.TwoFB)) {
|
} else if (areaName.equals(AreaNameDic.DJQ) || areaName.equals(AreaNameDic.XJQ)) {
|
||||||
//满车入场,需要物料号且生成库存信息
|
//满车入场,需要物料号且生成库存信息
|
||||||
String itemCode = containerIn.getItemCode();//物料
|
String itemCode = containerIn.getItemCode();//物料
|
||||||
Item item = itemService.existItem(itemCode);
|
Item item = itemService.existItem(itemCode);
|
||||||
|
|
|
||||||
|
|
@ -181,13 +181,6 @@ public interface StockService {
|
||||||
*/
|
*/
|
||||||
void bindContainer(String itemCode,String stockCode,String pointCode);
|
void bindContainer(String itemCode,String stockCode,String pointCode);
|
||||||
|
|
||||||
/**
|
|
||||||
* 线边容器返空
|
|
||||||
* @param stockCode
|
|
||||||
* @param pointCode
|
|
||||||
*/
|
|
||||||
void lineContainerReturn(String stockCode,String pointCode);
|
|
||||||
|
|
||||||
Map<String,Stock> findByCodes(Set stockCodes);
|
Map<String,Stock> findByCodes(Set stockCodes);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -290,7 +290,7 @@ public class PointServiceImpl implements PointService {
|
||||||
public List<Object[]> queryPointKmd() {
|
public List<Object[]> queryPointKmd() {
|
||||||
List<Object[]> pointList = null;
|
List<Object[]> pointList = null;
|
||||||
String hql = "select p.area.name,p.status,count(p.status) from Point p where p.area.name in " +
|
String hql = "select p.area.name,p.status,count(p.status) from Point p where p.area.name in " +
|
||||||
"('" + AreaNameDic.OneFC + "','" + AreaNameDic.OneFK + "','" + AreaNameDic.TwoFK + "')" +
|
"('" + AreaNameDic.DJQ + "','" + AreaNameDic.XJQ + "')" +
|
||||||
" group by p.area.name,p.status order by p.area.name";
|
" group by p.area.name,p.status order by p.area.name";
|
||||||
Query query = entityMapper.createQuery(hql);
|
Query query = entityMapper.createQuery(hql);
|
||||||
pointList = query.getResultList();
|
pointList = query.getResultList();
|
||||||
|
|
@ -302,7 +302,7 @@ public class PointServiceImpl implements PointService {
|
||||||
List<Object[]> pointList = null;
|
List<Object[]> pointList = null;
|
||||||
String hql = "select min(p.posX),min(p.posY) ,max(p.posX),max(p.posY) from Point p where 1=1 and p.posX>0 and p.posY>0";
|
String hql = "select min(p.posX),min(p.posY) ,max(p.posX),max(p.posY) from Point p where 1=1 and p.posX>0 and p.posY>0";
|
||||||
if (zoneType.equals("QHT")) {
|
if (zoneType.equals("QHT")) {
|
||||||
hql += " and p.area.name in ('" + AreaNameDic.OneFC + "','" + AreaNameDic.OneFK + "','" + AreaNameDic.TwoFK + "')";
|
hql += " and p.area.name in ('" + AreaNameDic.DJQ + "','" + AreaNameDic.XJQ + "')";
|
||||||
}
|
}
|
||||||
Query query = entityMapper.createQuery(hql);
|
Query query = entityMapper.createQuery(hql);
|
||||||
pointList = query.getResultList();
|
pointList = query.getResultList();
|
||||||
|
|
@ -313,11 +313,11 @@ public class PointServiceImpl implements PointService {
|
||||||
public int getPointCoutType(String itemType) {
|
public int getPointCoutType(String itemType) {
|
||||||
String hql = "select count(p.id) from Point p where 1=1 ";
|
String hql = "select count(p.id) from Point p where 1=1 ";
|
||||||
if (itemType.equals("前桶440") || itemType.equals("前桶480")) {
|
if (itemType.equals("前桶440") || itemType.equals("前桶480")) {
|
||||||
hql += " and p.area.name='" + AreaNameDic.OneFC + "' and p.description='" + itemType + "'";
|
hql += " and p.area.name='" + AreaNameDic.DJQ + "' and p.description='" + itemType + "'";
|
||||||
} else if (itemType.equals("KC")) {
|
} else if (itemType.equals("KC")) {
|
||||||
hql = " select count(p.id) from Point p where p.area.id=27 ";//前后桶空车区空车数量
|
hql = " select count(p.id) from Point p where p.area.id=27 ";//前后桶空车区空车数量
|
||||||
} else {
|
} else {
|
||||||
hql += " and p.area.name='" + AreaNameDic.OneFC + "' and (p.description is null or p.description ='')";
|
hql += " and p.area.name='" + AreaNameDic.XJQ + "' and (p.description is null or p.description ='')";
|
||||||
}
|
}
|
||||||
Query query = entityMapper.createQuery(hql);
|
Query query = entityMapper.createQuery(hql);
|
||||||
return Integer.parseInt(query.getResultList().get(0).toString());
|
return Integer.parseInt(query.getResultList().get(0).toString());
|
||||||
|
|
@ -384,7 +384,7 @@ public class PointServiceImpl implements PointService {
|
||||||
"left join base_item it on it.id=ik.item_id\n" +
|
"left join base_item it on it.id=ik.item_id\n" +
|
||||||
"where 1=1 and p.pos_x>0 and p.pos_y>0";
|
"where 1=1 and p.pos_x>0 and p.pos_y>0";
|
||||||
if (zoneType.equals("QHT")) {
|
if (zoneType.equals("QHT")) {
|
||||||
sql += " and z.`name` in ('" + AreaNameDic.OneFC + "','" + AreaNameDic.OneFK + "')";
|
sql += " and z.`name` in ('" + AreaNameDic.DJQ + "','" + AreaNameDic.XJQ + "')";
|
||||||
}
|
}
|
||||||
sql += " order by p.pos_x,p.pos_y";
|
sql += " order by p.pos_x,p.pos_y";
|
||||||
List ts = entityMapper.createNativeQuery(sql)
|
List ts = entityMapper.createNativeQuery(sql)
|
||||||
|
|
|
||||||
|
|
@ -219,9 +219,8 @@ public class StockServiceImpl implements StockService {
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (point.getArea().getName()) {
|
switch (point.getArea().getName()) {
|
||||||
case AreaNameDic.OneFC:
|
case AreaNameDic.XJQ:
|
||||||
case AreaNameDic.TwoFB:
|
case AreaNameDic.DJQ:
|
||||||
case AreaNameDic.TwoFC:
|
|
||||||
if (StringUtils.isEmpty(itemCode)) {
|
if (StringUtils.isEmpty(itemCode)) {
|
||||||
throw new RuntimeException(point.getCode() + "点位入场,需扫描物料!");
|
throw new RuntimeException(point.getCode() + "点位入场,需扫描物料!");
|
||||||
}
|
}
|
||||||
|
|
@ -263,9 +262,6 @@ public class StockServiceImpl implements StockService {
|
||||||
Point endPoint = validateSrcPoint(pointCode);//验证点位
|
Point endPoint = validateSrcPoint(pointCode);//验证点位
|
||||||
checkPointStatus(endPoint);//验证点位状态
|
checkPointStatus(endPoint);//验证点位状态
|
||||||
switch (scene) {
|
switch (scene) {
|
||||||
case 1: // 叫空车
|
|
||||||
handleEmptyContainerCall(endPoint);
|
|
||||||
break;
|
|
||||||
case 2: // 叫满车
|
case 2: // 叫满车
|
||||||
handleFullContainerCall(itemCode, endPoint);
|
handleFullContainerCall(itemCode, endPoint);
|
||||||
break;
|
break;
|
||||||
|
|
@ -281,13 +277,13 @@ public class StockServiceImpl implements StockService {
|
||||||
Stock stock = validateStock(stockCode);//验证容器
|
Stock stock = validateStock(stockCode);//验证容器
|
||||||
validateStockStatus(stock);//验证容器状态
|
validateStockStatus(stock);//验证容器状态
|
||||||
Point srcPoint = validateSrcPoint(pointCode);//验证点位
|
Point srcPoint = validateSrcPoint(pointCode);//验证点位
|
||||||
//只允许1F满车产线、2F满车产线入库
|
//只允许成品入库
|
||||||
String srcPointAreaName = srcPoint.getArea().getName();
|
String srcPointAreaName = srcPoint.getArea().getName();
|
||||||
if (!isValidMCArea(srcPointAreaName)) {
|
if (!isValidMCArea(srcPointAreaName)) {
|
||||||
throw new RuntimeException(srcPoint.getCode() + "点位不能入库!");
|
throw new RuntimeException(srcPoint.getCode() + "点位不能入库!");
|
||||||
}
|
}
|
||||||
//1F满车产线入1F存储区、2F满车产线入2F原材料B区
|
//1F满车产线入1F存储区、2F满车产线入2F原材料B区
|
||||||
String areaName = getMcAreaName(srcPointAreaName);
|
String areaName = null;
|
||||||
Point endPoint = validateEndPoint(areaName);//验证目标点位
|
Point endPoint = validateEndPoint(areaName);//验证目标点位
|
||||||
checkPointStatus(srcPoint);//验证源点位状态
|
checkPointStatus(srcPoint);//验证源点位状态
|
||||||
AgvTask agvTask = createAndSendAgvTask(BizStatus.ASN, stock, srcPoint, endPoint);//生成AGV任务
|
AgvTask agvTask = createAndSendAgvTask(BizStatus.ASN, stock, srcPoint, endPoint);//生成AGV任务
|
||||||
|
|
@ -298,49 +294,7 @@ public class StockServiceImpl implements StockService {
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean isValidMCArea(String areaName) {
|
private boolean isValidMCArea(String areaName) {
|
||||||
return AreaNameDic.OneFMC.equals(areaName) || AreaNameDic.TwoFMC.equals(areaName);
|
return AreaNameDic.CPRKQ.equals(areaName);
|
||||||
}
|
|
||||||
|
|
||||||
private String getMcAreaName(String areaName) {
|
|
||||||
if (AreaNameDic.OneFMC.equals(areaName)) {
|
|
||||||
return "1F存储区";
|
|
||||||
} else if (AreaNameDic.TwoFMC.equals(areaName)) {
|
|
||||||
return "2F原材料B区";
|
|
||||||
}
|
|
||||||
throw new IllegalArgumentException("无效的区域名称! " + areaName);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
|
||||||
@Transactional(rollbackFor = Exception.class)
|
|
||||||
public void lineContainerReturn(String stockCode, String pointCode) {
|
|
||||||
Stock stock = validateStock(stockCode);//验证容器
|
|
||||||
Point srcPoint = validateSrcPoint(pointCode);//验证点位
|
|
||||||
checkPointStatus(srcPoint);//验证点位状态
|
|
||||||
//只允许2F产线反空、2F产线反空2 反空车
|
|
||||||
String srcPointAreaName = srcPoint.getArea().getName();
|
|
||||||
if (!isValidFKArea(srcPointAreaName)) {
|
|
||||||
throw new RuntimeException(srcPoint.getCode() + "点位不能返空车!");
|
|
||||||
}
|
|
||||||
//2F产线反空返回1F空车区、2F产线反空2返回2F空车区
|
|
||||||
String areaName = getFKAreaName(srcPointAreaName);
|
|
||||||
Point endPoint = validateEndPoint(areaName);
|
|
||||||
|
|
||||||
//生成返库车任务
|
|
||||||
AgvTask agvTask = new AgvTask(BizStatus.EMPTY_IN, stock.getCode(), srcPoint.getCode(), endPoint.getCode(), BizStatus.OPEN, "RACK_MOVE");
|
|
||||||
agvTaskService.create(agvTask);
|
|
||||||
|
|
||||||
agvTaskService.sendAgvTaskImpl(agvTask);//发送任务
|
|
||||||
|
|
||||||
|
|
||||||
srcPoint.setStatus(BaseStatus.USED);
|
|
||||||
pointService.update(srcPoint);
|
|
||||||
//目标点位占用
|
|
||||||
endPoint.setStatus(BaseStatus.USED);
|
|
||||||
stock.setPoint(endPoint);
|
|
||||||
pointService.update(endPoint);
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -356,19 +310,6 @@ public class StockServiceImpl implements StockService {
|
||||||
return stockMap;
|
return stockMap;
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean isValidFKArea(String areaName) {
|
|
||||||
return AreaNameDic.TwoFFK.equals(areaName) || AreaNameDic.TwoFFK2.equals(areaName);
|
|
||||||
}
|
|
||||||
|
|
||||||
private String getFKAreaName(String areaName) {
|
|
||||||
if (AreaNameDic.TwoFFK.equals(areaName)) {
|
|
||||||
return "1F空车区";
|
|
||||||
} else if (AreaNameDic.TwoFFK2.equals(areaName)) {
|
|
||||||
return "2F空车区";
|
|
||||||
}
|
|
||||||
throw new IllegalArgumentException("无效的区域名称! " + areaName);
|
|
||||||
}
|
|
||||||
|
|
||||||
private Item validateItem(String itemCode) {
|
private Item validateItem(String itemCode) {
|
||||||
Item item = itemService.existItem(itemCode);
|
Item item = itemService.existItem(itemCode);
|
||||||
if (item == null) {
|
if (item == null) {
|
||||||
|
|
@ -454,48 +395,14 @@ public class StockServiceImpl implements StockService {
|
||||||
pointService.update(srcPoint);
|
pointService.update(srcPoint);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void handleEmptyContainerCall(Point endPoint) {
|
|
||||||
String endPointAreaName = endPoint.getArea().getName();
|
|
||||||
//只允许1F空车产线、2F空车产线叫空车
|
|
||||||
if (!isValidKCArea(endPointAreaName)) {
|
|
||||||
throw new RuntimeException(endPoint.getCode() + "点位不能叫空车!");
|
|
||||||
}
|
|
||||||
//1F空车产线叫空车就查询1F空车区的空车;2F空车产线叫空车就查询2F空车区的空车
|
|
||||||
String areaName = getKcAreaName(endPointAreaName);
|
|
||||||
Stock stock = findByKStock(areaName);
|
|
||||||
if (stock == null) {
|
|
||||||
throw new RuntimeException(areaName + "没有空料车!");
|
|
||||||
}
|
|
||||||
Point startPoint = stock.getPoint();
|
|
||||||
createAndSendAgvTask(BizStatus.EMPTY_OUT, stock, startPoint, endPoint);
|
|
||||||
stock.setPoint(endPoint);
|
|
||||||
update(stock);
|
|
||||||
endPoint.setStatus(BaseStatus.USED);
|
|
||||||
pointService.update(endPoint);
|
|
||||||
}
|
|
||||||
|
|
||||||
private String getKcAreaName(String areaName) {
|
|
||||||
if (AreaNameDic.OneFKC.equals(areaName)) {
|
|
||||||
return "1F空车区";
|
|
||||||
} else if (AreaNameDic.TwoFKC.equals(areaName)) {
|
|
||||||
return "2F空车区";
|
|
||||||
}
|
|
||||||
throw new IllegalArgumentException("无效的区域名称! " + areaName);
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean isValidKCArea(String areaName) {
|
|
||||||
return AreaNameDic.OneFKC.equals(areaName) || AreaNameDic.TwoFKC.equals(areaName);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void handleFullContainerCall(String itemCode, Point endPoint) {
|
private void handleFullContainerCall(String itemCode, Point endPoint) {
|
||||||
Item item = validateItem(itemCode);//验证物料
|
Item item = validateItem(itemCode);//验证物料
|
||||||
String endPointAreaName = endPoint.getArea().getName();
|
String endPointAreaName = endPoint.getArea().getName();
|
||||||
//只允许2F产线叫料、2F产线叫料2叫满车
|
//只允许叫料区叫满车
|
||||||
if (!isValidMCJLArea(endPointAreaName)) {
|
if (!isValidMCJLArea(endPointAreaName)) {
|
||||||
throw new RuntimeException(endPoint.getCode() + "点位不能叫满车!");
|
throw new RuntimeException(endPoint.getCode() + "点位不能叫满车!");
|
||||||
}
|
}
|
||||||
//2F产线叫料叫满车就查询1F存储区的满车;2F产线叫料2叫满车就查询2F齐套C区的满车
|
String areaName = "";
|
||||||
String areaName = getMCJLAreaName(endPointAreaName);
|
|
||||||
List<Inventory> inventoryList = inventoryService.queryInventory(item.getId(), areaName);
|
List<Inventory> inventoryList = inventoryService.queryInventory(item.getId(), areaName);
|
||||||
if (inventoryList.isEmpty()) {
|
if (inventoryList.isEmpty()) {
|
||||||
throw new RuntimeException(itemCode + "物料无库存,呼叫失败!");
|
throw new RuntimeException(itemCode + "物料无库存,呼叫失败!");
|
||||||
|
|
@ -516,19 +423,9 @@ public class StockServiceImpl implements StockService {
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean isValidMCJLArea(String areaName) {
|
private boolean isValidMCJLArea(String areaName) {
|
||||||
return AreaNameDic.TwoFJL.equals(areaName) || AreaNameDic.TwoFJL2.equals(areaName);
|
return AreaNameDic.JLQ.equals(areaName);
|
||||||
}
|
}
|
||||||
|
|
||||||
private String getMCJLAreaName(String areaName) {
|
|
||||||
if (AreaNameDic.TwoFJL.equals(areaName)) {
|
|
||||||
return "1F存储区";
|
|
||||||
} else if (AreaNameDic.TwoFJL2.equals(areaName)) {
|
|
||||||
return "2F齐套C区";
|
|
||||||
}
|
|
||||||
throw new IllegalArgumentException("无效的区域名称! " + areaName);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 验证AGV返回信息
|
* 验证AGV返回信息
|
||||||
*
|
*
|
||||||
|
|
@ -551,9 +448,8 @@ public class StockServiceImpl implements StockService {
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean isRestrictedArea(String areaName) {
|
private boolean isRestrictedArea(String areaName) {
|
||||||
return areaName.equals(AreaNameDic.OneFK) || areaName.equals(AreaNameDic.TwoFK) ||
|
return areaName.equals(AreaNameDic.XJQ) || areaName.equals(AreaNameDic.DJQ) ||
|
||||||
areaName.equals(AreaNameDic.OneFC) || areaName.equals(AreaNameDic.TwoFB) ||
|
areaName.equals(AreaNameDic.CPRKQ);
|
||||||
areaName.equals(AreaNameDic.TwoFC);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void handleFullContainer(Stock stock, Point point, String itemCode) {
|
private void handleFullContainer(Stock stock, Point point, String itemCode) {
|
||||||
|
|
|
||||||
|
|
@ -157,7 +157,7 @@ public class AgvTaskServiceImpl implements AgvTaskService {
|
||||||
String viewBoardType = "";
|
String viewBoardType = "";
|
||||||
Point point = pointService.findByCode(agvTasks.getStartSlotCode(), null, null, null, null);
|
Point point = pointService.findByCode(agvTasks.getStartSlotCode(), null, null, null, null);
|
||||||
//到达上视自动识别
|
//到达上视自动识别
|
||||||
if (AreaNameDic.OneFMC.equals(point.getArea().getName()) || AreaNameDic.TwoFMC.equals(point.getArea().getName()) || AreaNameDic.TwoFFK.equals(point.getArea().getName()) || AreaNameDic.TwoFFK2.equals(point.getArea().getName())) {
|
if (AreaNameDic.CPRKQ.equals(point.getArea().getName())) {
|
||||||
viewBoardType = "IDENTIFY_REQUIRE";
|
viewBoardType = "IDENTIFY_REQUIRE";
|
||||||
}
|
}
|
||||||
objMap.put("viewBoardType", viewBoardType);//上视识别类型;需要 IDENTIFY_REQUIRE 不需要NORMAL
|
objMap.put("viewBoardType", viewBoardType);//上视识别类型;需要 IDENTIFY_REQUIRE 不需要NORMAL
|
||||||
|
|
@ -448,20 +448,11 @@ public class AgvTaskServiceImpl implements AgvTaskService {
|
||||||
}
|
}
|
||||||
List<Task> taskList = taskService.getAgvTaskList(agvTask.getId());
|
List<Task> taskList = taskService.getAgvTaskList(agvTask.getId());
|
||||||
switch (endAreaName) {
|
switch (endAreaName) {
|
||||||
case AreaNameDic.OneFKC:
|
case AreaNameDic.JLQ:
|
||||||
case AreaNameDic.TwoFKC:
|
|
||||||
handleFCX(endPoint, stock);//空车出库
|
|
||||||
break;
|
|
||||||
case AreaNameDic.OneFK:
|
|
||||||
case AreaNameDic.TwoFK:
|
|
||||||
handleFK(endPoint, stock);//回空车
|
|
||||||
break;
|
|
||||||
case AreaNameDic.TwoFJL:
|
|
||||||
case AreaNameDic.TwoFJL2:
|
|
||||||
handleJL(taskList, endPoint, stock);//满车出库
|
handleJL(taskList, endPoint, stock);//满车出库
|
||||||
break;
|
break;
|
||||||
case AreaNameDic.TwoFB:
|
case AreaNameDic.XJQ:
|
||||||
case AreaNameDic.OneFC:
|
case AreaNameDic.DJQ:
|
||||||
handleFBFC(taskList, stock);//满车入库
|
handleFBFC(taskList, stock);//满车入库
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
@ -471,18 +462,6 @@ public class AgvTaskServiceImpl implements AgvTaskService {
|
||||||
update(agvTask);
|
update(agvTask);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 空车出库
|
|
||||||
*
|
|
||||||
* @param endPoint
|
|
||||||
* @param stock
|
|
||||||
*/
|
|
||||||
private void handleFCX(Point endPoint, Stock stock) {
|
|
||||||
//容器到达产线,容器自动出库,线边点位释放
|
|
||||||
containerOut(stock.getCode());
|
|
||||||
endPoint.setStatus(BaseStatus.FREE);
|
|
||||||
pointService.update(endPoint);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 容器出场
|
* 容器出场
|
||||||
|
|
@ -558,22 +537,6 @@ public class AgvTaskServiceImpl implements AgvTaskService {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 回空车
|
|
||||||
*
|
|
||||||
* @param endPoint
|
|
||||||
* @param stock
|
|
||||||
*/
|
|
||||||
private void handleFK(Point endPoint, Stock stock) {
|
|
||||||
//容器回空车区,更新容器状态、点位状态
|
|
||||||
stock.setPoint(endPoint);
|
|
||||||
stock.setStatus(BaseStatus.FREE);
|
|
||||||
stockRepository.save(stock);
|
|
||||||
endPoint.setStatus(BaseStatus.USED);
|
|
||||||
pointService.update(endPoint);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 满车入库
|
* 满车入库
|
||||||
*
|
*
|
||||||
|
|
@ -669,23 +632,13 @@ public class AgvTaskServiceImpl implements AgvTaskService {
|
||||||
throw new RuntimeException(containerCode + "容器不存在! 请维护");
|
throw new RuntimeException(containerCode + "容器不存在! 请维护");
|
||||||
}
|
}
|
||||||
switch (endAreaName) {
|
switch (endAreaName) {
|
||||||
case AreaNameDic.TwoFJL:
|
case AreaNameDic.JLQ:
|
||||||
case AreaNameDic.TwoFJL2:
|
|
||||||
handleJLCancel(agvTask, containerCode, endPoint);//满车到2F达产线取消
|
handleJLCancel(agvTask, containerCode, endPoint);//满车到2F达产线取消
|
||||||
break;
|
break;
|
||||||
case AreaNameDic.OneFKC:
|
case AreaNameDic.XJQ:
|
||||||
case AreaNameDic.TwoFKC:
|
case AreaNameDic.DJQ:
|
||||||
handleFKCCancel(agvTask, containerCode, endPoint);//空车到达产线取消
|
|
||||||
break;
|
|
||||||
case AreaNameDic.OneFC:
|
|
||||||
case AreaNameDic.TwoFB:
|
|
||||||
case AreaNameDic.TwoFC:
|
|
||||||
handleFBFCCancel(agvTask, endPoint, stock);//入库取消
|
handleFBFCCancel(agvTask, endPoint, stock);//入库取消
|
||||||
break;
|
break;
|
||||||
case AreaNameDic.OneFK:
|
|
||||||
case AreaNameDic.TwoFK:
|
|
||||||
handleFKCancel(agvTask, endPoint, stock);//回空车取消
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
agvTask.setStatus(BizStatus.CANCEL);
|
agvTask.setStatus(BizStatus.CANCEL);
|
||||||
|
|
|
||||||
|
|
@ -328,11 +328,11 @@ public class TaskServiceImpl implements TaskService {
|
||||||
List<Object[]> taskList = null;
|
List<Object[]> taskList = null;
|
||||||
String hql = "";
|
String hql = "";
|
||||||
if (type.equals("IN")) {
|
if (type.equals("IN")) {
|
||||||
hql += " select t.dstPoint.area.name,count(t.id) from Task t where t.dstPoint.area.name in ('" + AreaNameDic.OneFC + "','" + AreaNameDic.TwoFB + "','" + AreaNameDic.OneFK + "','" + AreaNameDic.TwoFK + "')";
|
hql += " select t.dstPoint.area.name,count(t.id) from Task t where t.dstPoint.area.name in ('" + AreaNameDic.DJQ + "','" + AreaNameDic.XJQ + "')";
|
||||||
hql += " and t.asnDetail.id is not null ";
|
hql += " and t.asnDetail.id is not null ";
|
||||||
hql += " group by t.dstPoint.area.name";
|
hql += " group by t.dstPoint.area.name";
|
||||||
} else if (type.equals("OUT")) {
|
} else if (type.equals("OUT")) {
|
||||||
hql += " select t.srcPoint.area.name,count(t.id) from Task t where t.srcPoint.area.name in ('" + AreaNameDic.OneFC + "','" + AreaNameDic.TwoFB + "','" + AreaNameDic.OneFK + "','" + AreaNameDic.TwoFK + "')";
|
hql += " select t.srcPoint.area.name,count(t.id) from Task t where t.srcPoint.area.name in ('" + AreaNameDic.DJQ + "','" + AreaNameDic.XJQ + "')";
|
||||||
hql += " and t.pickDetail.id is not null ";
|
hql += " and t.pickDetail.id is not null ";
|
||||||
hql += " group by t.srcPoint.area.name";
|
hql += " group by t.srcPoint.area.name";
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -8,73 +8,33 @@ package com.youchain.utils;
|
||||||
public interface AreaNameDic {
|
public interface AreaNameDic {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 1F满车产线
|
* 大件存储区
|
||||||
*/
|
*/
|
||||||
public static String OneFMC = "1F满车产线";
|
public static String DJQ = "大件存储区";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 1F空车产线
|
* 小件存储区
|
||||||
*/
|
*/
|
||||||
public static String OneFKC = "1F空车产线";
|
public static String XJQ = "小件存储区";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 1F空车区
|
* 翻包区
|
||||||
*/
|
*/
|
||||||
public static String OneFK = "1F空车区";
|
public static String FBQ = "翻包区";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 1F存储区
|
* 成品入库区
|
||||||
*/
|
*/
|
||||||
public static String OneFC = "1F存储区";
|
public static String CPRKQ = "成品入库区";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 2F满车产线
|
* 返修区
|
||||||
*/
|
*/
|
||||||
public static String TwoFMC = "2F满车产线";
|
public static String FXQ = "返修区";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 2F空车产线
|
* 叫料区
|
||||||
*/
|
*/
|
||||||
public static String TwoFKC = "2F空车产线";
|
public static String JLQ = "叫料区";
|
||||||
|
|
||||||
/**
|
|
||||||
* 2F原材料B区
|
|
||||||
*/
|
|
||||||
public static String TwoFB = "2F原材料B区";
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 2F产线叫料
|
|
||||||
*/
|
|
||||||
public static String TwoFJL = "2F产线叫料";
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 2F产线反空
|
|
||||||
*/
|
|
||||||
public static String TwoFFK = "2F产线反空";
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 2F齐套C区
|
|
||||||
*/
|
|
||||||
public static String TwoFC = "2F齐套C区";
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 2F产线叫料2
|
|
||||||
*/
|
|
||||||
public static String TwoFJL2 = "2F产线叫料2";
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 2F空车区
|
|
||||||
*/
|
|
||||||
public static String TwoFK = "2F空车区";
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 2F产线反空2
|
|
||||||
*/
|
|
||||||
public static String TwoFFK2 = "2F产线反空2";
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue