From 3f30983db5b3cd2b25cb215579501a2ef134883c Mon Sep 17 00:00:00 2001
From: zyx <zyx123456>
Date: 星期五, 04 八月 2023 17:00:11 +0800
Subject: [PATCH] agv 订单出库功能完善
---
src/main/webapp/views/mat/mat.html | 2
src/main/java/com/zy/asrs/service/AgvWrkMastService.java | 7
src/main/java/com/zy/common/model/AgvBasDevpDto.java | 3
src/main/java/com/zy/asrs/controller/AgvOpenController.java | 99 ++++---
src/main/java/com/zy/asrs/controller/AgvWrkMastController.java | 4
src/main/java/com/zy/asrs/service/impl/AgvBasDevpServiceImpl.java | 31 +
src/main/java/com/zy/asrs/controller/AgvBasDevpController.java | 104 +++++++
src/main/java/com/zy/asrs/service/impl/AgvWrkMastServiceImp.java | 66 +++-
src/main/webapp/views/agvBasDevp/basDevpWaitPakinDetail.html | 6
src/main/java/com/zy/asrs/task/AgvWrkMastScheduler.java | 56 ++++
src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java | 116 +++++++-
src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java | 50 +-
src/main/webapp/static/js/agvBasDevp/basDevp.js | 7
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java | 33 ++
src/main/webapp/views/agvBasDevpVisualized/basDevp.html | 101 ++++++-
src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java | 57 ++++
src/main/webapp/static/js/common.js | 3
src/main/java/com/zy/asrs/controller/OutController.java | 8
src/main/java/com/zy/asrs/service/AgvWorkService.java | 6
19 files changed, 604 insertions(+), 155 deletions(-)
diff --git a/src/main/java/com/zy/asrs/controller/AgvBasDevpController.java b/src/main/java/com/zy/asrs/controller/AgvBasDevpController.java
index 6587f41..241d8cd 100644
--- a/src/main/java/com/zy/asrs/controller/AgvBasDevpController.java
+++ b/src/main/java/com/zy/asrs/controller/AgvBasDevpController.java
@@ -10,15 +10,17 @@
import com.core.common.Cools;
import com.core.common.DateUtils;
import com.core.common.R;
-import com.zy.asrs.entity.AgvBasDevp;
-import com.zy.asrs.entity.BasDevp;
+import com.core.exception.CoolException;
+import com.zy.asrs.entity.*;
import com.zy.asrs.entity.param.LocMastInitParam;
-import com.zy.asrs.service.AgvBasDevpService;
+import com.zy.asrs.service.*;
import com.zy.common.web.BaseController;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
+import java.io.IOException;
import java.util.*;
+import java.util.stream.Collectors;
@RestController
@RequestMapping("/agv")
@@ -26,6 +28,14 @@
@Autowired
AgvBasDevpService agvBasDevpService;
+ @Autowired
+ AgvWrkMastService agvWrkMastService;
+ @Autowired
+ AgvWrkDetlService agvWrkDetlService;
+ @Autowired
+ AgvWaitPakinService agvWaitPakinService;
+ @Autowired
+ AgvWorkService agvWorkService;
@RequestMapping(value = "/basDevp/list/auth")
@ManagerAuth
@@ -148,6 +158,36 @@
return R.ok();
}
+ @RequestMapping(value = "/basDevp/detail/list/auth")
+ public R basDevpDetailList(@RequestParam(defaultValue = "1")Integer curr,
+ @RequestParam(defaultValue = "10")Integer limit,
+ @RequestParam Map<String, Object> param){
+ String devNo = param.get("devNo").toString();
+ AgvBasDevp agvBasDevp = agvBasDevpService.selectById(devNo);
+ if("F".equals(agvBasDevp.getLocSts()) || "R".equals(agvBasDevp.getLocSts())){
+ //鍏堝幓鍏ュ簱閫氱煡妗f壘鏄庣粏
+ Page<AgvWaitPakin> agvWaitPakinPage = agvWaitPakinService.selectPage(new Page<>(curr, limit), new EntityWrapper<AgvWaitPakin>()
+ .eq("zpallet", agvBasDevp.getBarcode()));
+ if(agvWaitPakinPage.getRecords().size()>0){
+ return R.ok(agvWaitPakinPage);
+ }else {
+ //濡傛灉鍏ュ簱閫氭。鏄庣粏涓虹┖锛屽垯鍘诲伐浣滄。鎵炬槑缁�
+ AgvWrkMast agvWrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>()
+ .eq("loc_no", agvBasDevp.getDevNo())
+ .or().eq("source_loc_no",agvBasDevp.getDevNo()));
+
+ Page<AgvWrkDetl> agvWrkDetlPage = agvWrkDetlService.selectPage(new Page<>(curr, limit), new EntityWrapper<AgvWrkDetl>()
+ .eq("wrk_no", agvWrkMast.getWrkNo()));
+
+ if(agvWrkDetlPage.getRecords().size()>0){
+ return R.ok(agvWrkDetlPage);
+ }
+ }
+ }
+
+ return R.error("鏁版嵁寮傚父");
+ }
+
@RequestMapping(value = "/basDevp/visualized/list/auth")
public R visualizedList(@RequestBody JSONObject param){
@@ -159,6 +199,64 @@
return R.ok(result);
}
+ /*
+ 瀹瑰櫒绂诲満
+ */
+ @RequestMapping(value = "/basDevp/visualized/container/moveOut")
+ public R visualiZedContainerMoveOut(@RequestBody Map<String,Object> map) {
+
+ List<String> devNos = (List<String>) map.get("devNo");
+ List<AgvWrkMast> agvWrkMastList = devNos.stream().map(devNo -> {
+ AgvWrkMast agvWrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("loc_no", devNo));
+ if(agvWrkMast.getIoType() == 103){
+ throw new CoolException("宸ヤ綔鍙蜂负" + agvWrkMast.getWrkNo() + "绫诲瀷涓�103.鎷f枡鍏ュ簱锛屾棤娉曟墽琛屽鍣ㄧ鍦轰换鍔★紝璇烽噸鏂伴�夋嫨绔欑偣銆�");
+ }
+ return agvWrkMast;
+ }).collect(Collectors.toList());
+
+ try {
+ int code = agvWrkMastService.containerMoveOut(agvWrkMastList);
+ if(code == 0){
+ //灏嗗伐浣滃厷鐘舵�佹敼涓哄鍣ㄧ鍦�
+ agvWrkMastList.forEach(agvWrkMast -> {
+ agvWrkMast.setWrkSts(207L);
+ agvWrkMastService.updateById(agvWrkMast);
+ });
+ //淇敼绔欑偣鐘舵��
+ devNos.forEach(devNo -> {
+ AgvBasDevp agvBasDevp = agvBasDevpService.selectById(devNo);
+ agvBasDevp.setBarcode("");
+ agvBasDevp.setLocSts("O");
+ agvBasDevpService.updateById(agvBasDevp);
+ });
+ }
+ } catch (IOException e) {
+ e.printStackTrace();
+ return R.error("瀹瑰櫒绂诲満澶辫触");
+ }
+
+ return R.ok("瀹瑰櫒绂诲満鎴愬姛");
+ }
+
+ /*
+ 鎷f枡鍏ュ簱
+ */
+ @RequestMapping(value = "/basDevp/visualized/container/pickIn")
+ public R visualiZedPickIn(@RequestBody Map<String,Object> map){
+ List<String> devNos = (List<String>) map.get("devNo");
+ List<AgvWrkMast> agvWrkMastList = devNos.stream().map(devNo -> {
+ AgvWrkMast agvWrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("loc_no", devNo));
+ if(agvWrkMast.getIoType() == 101){
+ throw new CoolException("宸ヤ綔鍙蜂负" + agvWrkMast.getWrkNo() + "绫诲瀷涓�101.鍏ュ簱锛屾棤娉曟墽琛屾嫞鏂欏叆搴撲换鍔★紝璇烽噸鏂伴�夋嫨绔欑偣銆�");
+ }
+ return agvWrkMast;
+ }).collect(Collectors.toList());
+
+ agvWorkService.pickIn(agvWrkMastList);
+
+ return R.ok("鐢熸垚鎷f枡鍑哄簱浠诲姟鎴愬姛");
+ }
+
private <T> void convert(Map<String, Object> map, EntityWrapper<T> wrapper){
for (Map.Entry<String, Object> entry : map.entrySet()){
String val = String.valueOf(entry.getValue());
diff --git a/src/main/java/com/zy/asrs/controller/AgvOpenController.java b/src/main/java/com/zy/asrs/controller/AgvOpenController.java
index d922dfe..9ad92d1 100644
--- a/src/main/java/com/zy/asrs/controller/AgvOpenController.java
+++ b/src/main/java/com/zy/asrs/controller/AgvOpenController.java
@@ -70,8 +70,8 @@
AgvTask agvTask = AgvTask.valueOf(param.getEventType());
Class<AgvTask> clz = AgvTask.class;
try {
- Method method = clz.getDeclaredMethod(param.getStatus(),AgvTaskCallBackParam.class);
- method.invoke(agvTask,param);
+ Method method = clz.getDeclaredMethod(param.getStatus(), AgvWrkMast.class, AgvTaskCallBackParam.class);
+ method.invoke(agvTask,agvWrkMast,param);
} catch (NoSuchMethodException e) {
return R.error("浠诲姟鐘舵�乻tatus鍙傛暟鏈夎");
} catch (InvocationTargetException e) {
@@ -103,20 +103,26 @@
*/
task{
@Transactional
- public void success(AgvTaskCallBackParam param) {
+ public void success(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) {
//淇敼AGV宸ヤ綔妗g殑宸ヤ綔鐘舵�佷负205.宸ヤ綔瀹屾垚
- agvWrkMastService.updateWrkStsByWrkNo(Integer.valueOf(param.getTaskCode()),205);
+ agvWrkMastService.updateWrkStsByWrkNo(agvWrkMast.getWrkNo(),205);
+
+ //鍑哄簱浠诲姟 101.鍑哄簱 || 103.鎷f枡鍑哄簱
+ if(agvWrkMast.getIoType() == 101 || agvWrkMast.getIoType() == 103){
+ //淇敼鍑哄簱绔欑偣鐘舵��
+ agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode());
+ }
}
- public void fail(AgvTaskCallBackParam param) {
+ public void fail(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) {
}
- public void cancel(AgvTaskCallBackParam param) {
+ public void cancel(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) {
}
- public void suspend(AgvTaskCallBackParam param) {
+ public void suspend(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) {
}
},
@@ -125,19 +131,19 @@
*/
task_allocated{
@Transactional
- public void success(AgvTaskCallBackParam param) {
+ public void success(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) {
}
- public void fail(AgvTaskCallBackParam param) {
+ public void fail(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) {
}
- public void cancel(AgvTaskCallBackParam param) {
+ public void cancel(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) {
}
- public void suspend(AgvTaskCallBackParam param) {
+ public void suspend(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) {
}
},
@@ -146,25 +152,36 @@
*/
tote_load{
@Transactional
- public void success(AgvTaskCallBackParam param) {
- //淇敼婧愮珯鐐圭姸鎬佷负O.绌猴紝浠ュ強瑙g粦鎵樼洏鏉$爜
- agvBasDevpService.updateLocStsAndBarcodeByDevNo(param.getStationCode(),"O","");
+ public void success(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) {
+
+ //鍏ュ簱浠诲姟 || 鎷f枡鍏ュ簱浠诲姟
+ if(agvWrkMast.getIoType() == 1 || agvWrkMast.getIoType() == 53){
+ //淇敼婧愮珯鐐圭姸鎬佷负O.绌猴紝浠ュ強瑙g粦鎵樼洏鏉$爜
+ agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(),"O","");
+ }
+
+ //鍑哄簱浠诲姟 101.鍑哄簱 || 103.鎷f枡鍑哄簱
+ if(agvWrkMast.getIoType() == 101 || agvWrkMast.getIoType() == 103){
+ //淇敼婧愬簱浣嶇姸鎬�
+
+ }
+
//淇敼AGV宸ヤ綔妗g殑宸ヤ綔鐘舵�佷负203.RCS鏀捐揣涓�
- agvWrkMastService.updateWrkStsByWrkNo(Integer.valueOf(param.getTaskCode()),203);
- //淇敼AGV鍏ュ簱閫氱煡妗g姸鎬�
- //agvWaitPakinService.updateIoStatus(Integer.valueOf(param.getTaskCode()),"Y");
+ agvWrkMastService.updateWrkStsByWrkNo(agvWrkMast.getWrkNo(),203);
+
+
}
- public void fail(AgvTaskCallBackParam param) {
+ public void fail(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) {
}
- public void cancel(AgvTaskCallBackParam param) {
+ public void cancel(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) {
}
- public void suspend(AgvTaskCallBackParam param) {
+ public void suspend(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) {
}
},
@@ -173,86 +190,86 @@
*/
tote_unload{
@Transactional
- public void success(AgvTaskCallBackParam param) {
+ public void success(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) {
//淇敼宸ヤ綔妗g姸鎬佷负204.鏀捐揣瀹屾垚
- agvWrkMastService.updateWrkStsByWrkNo(Integer.valueOf(param.getTaskCode()),204);
+ agvWrkMastService.updateWrkStsByWrkNo(agvWrkMast.getWrkNo(),204);
}
- public void fail(AgvTaskCallBackParam param) {
+ public void fail(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) {
}
- public void cancel(AgvTaskCallBackParam param) {
+ public void cancel(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) {
}
- public void suspend(AgvTaskCallBackParam param) {
+ public void suspend(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) {
}
},
robot_reach{
@Transactional
- public void success(AgvTaskCallBackParam param) {
+ public void success(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) {
}
- public void fail(AgvTaskCallBackParam param) {
+ public void fail(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) {
}
- public void cancel(AgvTaskCallBackParam param) {
+ public void cancel(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) {
}
- public void suspend(AgvTaskCallBackParam param) {
+ public void suspend(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) {
}
},
weight{
@Transactional
- public void success(AgvTaskCallBackParam param) {
+ public void success(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) {
}
- public void fail(AgvTaskCallBackParam param) {
+ public void fail(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) {
}
- public void cancel(AgvTaskCallBackParam param) {
+ public void cancel(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) {
}
- public void suspend(AgvTaskCallBackParam param) {
+ public void suspend(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) {
}
},
rfid{
@Transactional
- public void success(AgvTaskCallBackParam param) {
+ public void success(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) {
}
- public void fail(AgvTaskCallBackParam param) {
+ public void fail(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) {
}
- public void cancel(AgvTaskCallBackParam param) {
+ public void cancel(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) {
}
- public void suspend(AgvTaskCallBackParam param) {
+ public void suspend(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) {
}
};
//浠诲姟鐘舵�佷负鎴愬姛
- public abstract void success(AgvTaskCallBackParam param);
+ public abstract void success(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param);
//浠诲姟鐘舵�佷负澶辫触
- public abstract void fail(AgvTaskCallBackParam param);
+ public abstract void fail(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param);
//浠诲姟鐘舵�佷负鍙栨秷
- public abstract void cancel(AgvTaskCallBackParam param);
+ public abstract void cancel(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param);
//浠诲姟鐘舵�佷负鎸傝捣
- public abstract void suspend(AgvTaskCallBackParam param);
+ public abstract void suspend(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param);
@Setter
AgvBasDevpService agvBasDevpService;
diff --git a/src/main/java/com/zy/asrs/controller/AgvWrkMastController.java b/src/main/java/com/zy/asrs/controller/AgvWrkMastController.java
index a6cc241..b72a706 100644
--- a/src/main/java/com/zy/asrs/controller/AgvWrkMastController.java
+++ b/src/main/java/com/zy/asrs/controller/AgvWrkMastController.java
@@ -165,9 +165,9 @@
if (Cools.isEmpty(agvWrkMastList)){
return R.error();
}
- Map<String, List<Map<String, String>>> containerMoveParam = agvWrkMastService.startWrk(agvWrkMastList);
+ int startWrkCode = agvWrkMastService.startWrk(agvWrkMastList,"putaway");
- int code = agvWrkMastService.containerMove(containerMoveParam);
+ int code = agvWrkMastService.containerMove(agvWrkMastList);
if(code == 0){
agvWrkMastList.forEach(agvWrkMast -> {
diff --git a/src/main/java/com/zy/asrs/controller/OutController.java b/src/main/java/com/zy/asrs/controller/OutController.java
index 79c18af..74f9ee9 100644
--- a/src/main/java/com/zy/asrs/controller/OutController.java
+++ b/src/main/java/com/zy/asrs/controller/OutController.java
@@ -287,12 +287,12 @@
continue;
}
//鍏堟壘AGV鐨勫簱瀛橈紝濡傛灉杩斿洖鐨刬ssued澶т簬0锛屽垯鍘诲洓椤瑰簱鎵�
- issued = agvLocDetlService.queryStockAndSetLocDto(vo.getMatnr(),vo.getBatch(),null,locDtoList,issued);
+ issued = agvLocDetlService.queryStockAndSetLocDto(vo.getMatnr(),vo.getBatch(),JSON.toJSONString(vo.getOrderDtos()),locDtoList,issued);
//浠庡洓椤瑰簱鐨勫簱瀛橀噷闈㈡壘锛�
- issued = locDetlService.queryStockAndSetLocDto(vo.getMatnr(),vo.getBatch(),null,locDtoList,issued);
+ issued = locDetlService.queryStockAndSetLocDto(vo.getMatnr(),vo.getBatch(),JSON.toJSONString(vo.getOrderDtos()),locDtoList,issued);
if (issued > 0) {
- LocDto locDto = new LocDto(null, vo.getMatnr(), vo.getMaktx(), vo.getBatch(), null, issued);
+ LocDto locDto = new LocDto(null, vo.getMatnr(), vo.getMaktx(), vo.getBatch(), JSON.toJSONString(vo.getOrderDtos()), issued);
locDto.setLack(Boolean.TRUE);
locDtoList.add(locDto);
}
@@ -377,6 +377,8 @@
//TODO 鍋囧鍑哄簱绔欑偣涓嶈冻锛岃褰曟湭鍑哄簱鐨勫簱浣嶏紱
return;
}
+ agvBasDevp.setLocSts("S");
+ agvBasDevpService.updateById(agvBasDevp);
TaskDto taskDto = new TaskDto(locDto.getLocNo(), agvBasDevp.getDevNo(), locDto);
//TODO 鏆備笉鑰冭檻搴撲綅娣疯浇鐘舵�侊紙鍚庣画鐪嬫儏鍐垫槸鍚﹂渶瑕佸垽鏂級
agvTaskDtos.add(taskDto);
diff --git a/src/main/java/com/zy/asrs/service/AgvWorkService.java b/src/main/java/com/zy/asrs/service/AgvWorkService.java
index a8f884a..f97aa5d 100644
--- a/src/main/java/com/zy/asrs/service/AgvWorkService.java
+++ b/src/main/java/com/zy/asrs/service/AgvWorkService.java
@@ -1,6 +1,7 @@
package com.zy.asrs.service;
import com.zy.asrs.entity.AgvBasDevp;
+import com.zy.asrs.entity.AgvWrkMast;
import com.zy.common.model.StartupDto;
import com.zy.common.model.TaskDto;
@@ -18,5 +19,10 @@
*/
void stockOutWrkMast(List<TaskDto> agvTaskDtos, Long userId);
+ /*
+ 鐢熸垚鎷f枡鍏ュ簱浠诲姟
+ */
+ void pickIn(List<AgvWrkMast> agvWrkMastList);
+
}
diff --git a/src/main/java/com/zy/asrs/service/AgvWrkMastService.java b/src/main/java/com/zy/asrs/service/AgvWrkMastService.java
index 2ead2e4..d82d2b9 100644
--- a/src/main/java/com/zy/asrs/service/AgvWrkMastService.java
+++ b/src/main/java/com/zy/asrs/service/AgvWrkMastService.java
@@ -5,13 +5,14 @@
import java.io.IOException;
import java.util.List;
-import java.util.Map;
public interface AgvWrkMastService extends IService<AgvWrkMast> {
public void updateWrkStsByWrkNo(int wrkNo, long wrkSts);
- public Map<String,List<Map<String,String>>> startWrk(List<AgvWrkMast> agvWrkMastList) throws IOException;
+ public int startWrk(List<AgvWrkMast> agvWrkMastList, String taskType) throws IOException;
- public int containerMove(Map<String, List<Map<String, String>>> containerMoveParam) throws IOException;
+ public int containerMove(List<AgvWrkMast> agvWrkMastList) throws IOException;
+
+ public int containerMoveOut(List<AgvWrkMast> agvWrkMastList) throws IOException;
}
diff --git a/src/main/java/com/zy/asrs/service/impl/AgvBasDevpServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/AgvBasDevpServiceImpl.java
index 636dc93..069fae5 100644
--- a/src/main/java/com/zy/asrs/service/impl/AgvBasDevpServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/AgvBasDevpServiceImpl.java
@@ -5,6 +5,7 @@
import com.core.common.Cools;
import com.zy.asrs.entity.AgvBasDevp;
import com.zy.asrs.entity.AgvWaitPakin;
+import com.zy.asrs.entity.AgvWrkDetl;
import com.zy.asrs.entity.AgvWrkMast;
import com.zy.asrs.mapper.AgvBasDevpMapper;
import com.zy.asrs.service.AgvBasDevpService;
@@ -108,20 +109,36 @@
AgvBasDevpDto agvBasDevpDto = new AgvBasDevpDto();
BeanUtils.copyProperties(agvBasDevp, agvBasDevpDto);
- if (Cools.isEmpty(agvBasDevpDto.getBarcode())) {
+// if (Cools.isEmpty(agvBasDevpDto.getBarcode())) {
+// return agvBasDevpDto;
+// }
+
+ if("O".equals(agvBasDevpDto.getLocSts())){
return agvBasDevpDto;
}
- AgvWaitPakin agvWaitPakin = agvWaitPakinService.selectOne(new EntityWrapper<AgvWaitPakin>()
- .eq("zpallet", agvBasDevpDto.getBarcode()));
-
- agvBasDevpDto.setAgvWaitPakin(agvWaitPakin);
-
+// AgvWrkMast agvWrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>()
+// .eq("barcode", agvBasDevpDto.getBarcode()));
AgvWrkMast agvWrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>()
- .eq("barcode", agvBasDevpDto.getBarcode()));
+ .eq("loc_no", agvBasDevpDto.getDevNo())
+ .or().eq("source_loc_no",agvBasDevpDto.getDevNo()));
agvBasDevpDto.setAgvWrkMast(agvWrkMast);
+ if("F".equals(agvBasDevpDto.getLocSts()) || "R".equals(agvBasDevpDto.getLocSts())){
+ AgvWaitPakin agvWaitPakin = agvWaitPakinService.selectOne(new EntityWrapper<AgvWaitPakin>()
+ .eq("zpallet", agvBasDevpDto.getBarcode()));
+
+ agvBasDevpDto.setAgvWaitPakin(agvWaitPakin);
+
+ if(Cools.isEmpty(agvWaitPakin)){
+ AgvWrkDetl agvWrkDetl = agvWrkDetlService.selectOne(new EntityWrapper<AgvWrkDetl>().
+ eq("wrk_no",agvWrkMast.getWrkNo()));
+
+ agvBasDevpDto.setAgvWrkDetl(agvWrkDetl);
+ }
+ }
+
return agvBasDevpDto;
}).collect(Collectors.toList());
diff --git a/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java
index 8560782..f5ea49e 100644
--- a/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java
@@ -105,13 +105,14 @@
agvTaskDtos.forEach(taskDto -> {
AgvLocMast agvLocMast = agvLockMastService.selectById(taskDto.getLocNo());
+ AgvLocDetl agvLocDetl = agvLocDetlService.selectOne(new EntityWrapper<AgvLocDetl>().eq("loc_no", taskDto.getLocNo()));
//宸ヤ綔妗f墍闇�鍙傛暟
double anfme = taskDto.getLocDtos().get(0).getAnfme();
long wrkSts = 21L;
String sourceLocNo = taskDto.getLocNo();
String targetLocNo = taskDto.getAgvStaNo();
- String barcode = agvLocMast.getBarcode();
+ String barcode = agvLocDetl.getZpallet();
//鏄庣粏妗f墍闇�鍙傛暟
String mantr = taskDto.getLocDtos().get(0).getMatnr();
String orderNo = taskDto.getLocDtos().get(0).getOrderNo();
@@ -126,9 +127,45 @@
//淇敼璁㈠崟淇℃伅
modifyOrderDetl(taskDto.getLocDtos().get(0), userId);
//鏇存柊婧愮珯鐐逛俊鎭�
- updateAgvLocMast(agvLockMastService.selectById(sourceLocNo),"R");
+ String locSts = ioType == 101 ? "R" : "P";
+ updateAgvLocMast(agvLockMastService.selectById(sourceLocNo),locSts);
//鏇存柊鐩爣绔欑偣鐘舵��
+ //locSts = ioType == 101 ? "S" : "Q";
updateAgvBasDevp(agvBasDevpService.selectById(targetLocNo),"S");
+
+ });
+ }
+
+ //鎷f枡鍏ュ簱
+ @Transactional
+ public void pickIn(List<AgvWrkMast> agvWrkMastList){
+ Date now = new Date();
+ agvWrkMastList.forEach(agvWrkMast -> {
+ //淇敼宸ヤ綔鍏�
+ agvWrkMast.setWrkSts(201L);
+ agvWrkMast.setIoType(53);
+ String locNo = agvWrkMast.getLocNo();
+ agvWrkMast.setLocNo(agvWrkMast.getSourceLocNo());
+ agvWrkMast.setSourceLocNo(locNo);
+ agvWrkMast.setIoTime(now);
+ agvWrkMastService.updateById(agvWrkMast);
+
+ AgvWrkDetl agvWrkDetl = agvWrkDetlService.selectOne(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", agvWrkMast.getWrkNo()));
+ AgvLocMast agvLocMast = agvLockMastService.selectById(agvWrkMast.getLocNo());
+ AgvLocDetl agvLocDetl = agvLocDetlService.selectOne(new EntityWrapper<AgvLocDetl>().eq("loc_no",agvLocMast.getLocNo()));
+ AgvBasDevp agvBasDevp = agvBasDevpService.selectById(agvWrkMast.getSourceLocNo());
+ //淇敼宸ヤ綔鍏氭槑缁�
+ agvWrkDetl.setAnfme(agvLocDetl.getAnfme() - agvWrkDetl.getAnfme());
+ agvWrkDetlService.update(agvWrkDetl,new EntityWrapper<AgvWrkDetl>().eq("wrk_no",agvWrkDetl.getWrkNo()));
+ //淇敼搴撳瓨淇℃伅
+ agvLocDetl.setAnfme(agvWrkDetl.getAnfme());
+ agvLocDetlService.update(agvLocDetl,new EntityWrapper<AgvLocDetl>().eq("loc_no",agvLocDetl.getLocNo()));
+ //淇敼搴撲綅淇℃伅
+ agvLocMast.setLocSts("Q");
+ agvLockMastService.selectById(agvLocMast);
+ //淇敼绔欑偣淇℃伅
+ agvBasDevp.setLocSts("R");
+ agvBasDevpService.updateById(agvBasDevp);
});
}
@@ -309,12 +346,26 @@
}else {
//鍚堝苟鍑哄簱
List<OrderDto> orderDtoList = JSON.parseArray(locDto.getOrderNo(), OrderDto.class);
+
+ //瀹為檯鍑哄簱鏁伴噺
+ Double locAnfme = locDto.getAnfme();
+ //璁㈠崟瀹為檯鍑哄簱鏁伴噺
+ Double orderAnfme;
+
for (OrderDto orderDto : orderDtoList) {
OrderDetl orderDetl = orderDetlService.selectItem(orderDto.getOrderNo(), locDto.getMatnr(), locDto.getBatch());
if (orderDetl == null) {
orderDetl = orderDetlService.selectItem(orderDto.getOrderNo(), locDto.getMatnr(), null);
}
- if (!orderDetlService.increase(orderDetl.getOrderId(), orderDetl.getMatnr(), orderDetl.getBatch(), orderDto.getAnfme())) {
+
+ if(locAnfme > orderDetl.getAnfme()){
+ orderAnfme = orderDetl.getAnfme();
+ locAnfme -= orderAnfme;
+ }else {
+ orderAnfme = locAnfme;
+ }
+
+ if (!orderDetlService.increase(orderDetl.getOrderId(), orderDetl.getMatnr(), orderDetl.getBatch(), orderAnfme)) {
throw new CoolException("淇敼璁㈠崟鏄庣粏鏁伴噺澶辫触");
}
orderService.updateSettle(orderDetl.getOrderId(), 2L, userId);
diff --git a/src/main/java/com/zy/asrs/service/impl/AgvWrkMastServiceImp.java b/src/main/java/com/zy/asrs/service/impl/AgvWrkMastServiceImp.java
index b23a41c..a0f8e09 100644
--- a/src/main/java/com/zy/asrs/service/impl/AgvWrkMastServiceImp.java
+++ b/src/main/java/com/zy/asrs/service/impl/AgvWrkMastServiceImp.java
@@ -9,6 +9,8 @@
import com.zy.asrs.entity.param.AgvTaskParam;
import com.zy.asrs.entity.param.AgvTaskkDescribeParam;
import com.zy.asrs.mapper.AgvWrkMastMapper;
+import com.zy.asrs.service.AgvLocMastService;
+import com.zy.asrs.service.AgvWrkDetlService;
import com.zy.asrs.service.AgvWrkMastService;
import com.zy.asrs.service.ApiLogService;
import com.zy.common.utils.HttpHandler;
@@ -40,6 +42,10 @@
@Autowired
AgvWrkMastMapper agvWrkMastMapper;
@Autowired
+ AgvWrkDetlService agvWrkDetlService;
+ @Autowired
+ AgvLocMastService agvLocMastService;
+ @Autowired
ApiLogService apiLogService;
public void updateWrkStsByWrkNo(int wrkNo, long wrkSts) {
@@ -50,37 +56,66 @@
this.updateById(agvWrkMast);
}
+ // TODO 鍒ゆ柇瑙勫垯
private boolean checkWrkSts(AgvWrkMast agvWrkMast,long wrkSts){
- // 鍒ゆ柇瑙勫垯TODO
+
return true;
}
- public Map<String,List<Map<String,String>>> startWrk(List<AgvWrkMast> agvWrkMastList) throws IOException {
+ public int startWrk(List<AgvWrkMast> agvWrkMastList, String taskType) throws IOException {
AgvTaskCreateParam agvTaskCreateParam = new AgvTaskCreateParam();
- agvTaskCreateParam.setTaskType("putaway");
+ agvTaskCreateParam.setTaskType(taskType);
+// //璋冪敤瀹瑰櫒鍏ュ満鏃舵墍闇�瑕佸弬鏁�
+// Map<String,List<Map<String,String>>> containerMoveParam = new HashMap<>();
+// List<Map<String,String>> positionCodeMapList = new ArrayList<>();
+// containerMoveParam.put("containerMoveIns",positionCodeMapList);
+
+ getRequestParam(agvTaskCreateParam,agvWrkMastList);
+
+ return doHttpRequest(agvTaskCreateParam,"涓婃灦浠诲姟涓嬪彂",url, taskCreatePath,null,"127.0.0.1");
+
+ //return containerMoveParam;
+ }
+
+ //瀹瑰櫒鍏ュ満
+ public int containerMove(List<AgvWrkMast> agvWrkMastList) throws IOException {
//璋冪敤瀹瑰櫒鍏ュ満鏃舵墍闇�瑕佸弬鏁�
Map<String,List<Map<String,String>>> containerMoveParam = new HashMap<>();
List<Map<String,String>> positionCodeMapList = new ArrayList<>();
containerMoveParam.put("containerMoveIns",positionCodeMapList);
- getRequestParam(agvTaskCreateParam,agvWrkMastList,positionCodeMapList);
-
- doHttpRequest(agvTaskCreateParam,"涓婃灦浠诲姟涓嬪彂",url, taskCreatePath,null,"127.0.0.1");
-
- return containerMoveParam;
- }
-
- public int containerMove(Map<String, List<Map<String, String>>> containerMoveParam) throws IOException {
-
+ getContainerMoveParam(agvWrkMastList,positionCodeMapList);
return doHttpRequest(containerMoveParam,"瀹瑰櫒鍏ュ満浠诲姟涓嬪彂",url, containerMoveInPath,null,"127.0.0.1");
}
- private void getRequestParam(AgvTaskCreateParam agvTaskCreateParam,List<AgvWrkMast> agvWrkMastList,List<Map<String,String>> positionCodeMapList){
+ //瀹瑰櫒绂诲満
+ public int containerMoveOut(List<AgvWrkMast> agvWrkMastList){
+ Map<String,List<Map<String,String>>> containerMoveParam = new HashMap<>();
+ List<Map<String,String>> positionCodeMapList = new ArrayList<>();
+ containerMoveParam.put("containerMoveOuts",positionCodeMapList);
+ for(AgvWrkMast agvWrkMast : agvWrkMastList){
+ Map<String,String> positionCodeMap = new HashMap<>();
+ positionCodeMap.put("positionCode",agvWrkMast.getLocNo());
+ positionCodeMapList.add(positionCodeMap);
+ }
+ return doHttpRequest(containerMoveParam,"瀹瑰櫒鍏ュ満浠诲姟涓嬪彂",url, containerMoveInPath,null,"127.0.0.1");
+ }
+
+ private void getContainerMoveParam(List<AgvWrkMast> agvWrkMastList,List<Map<String,String>> positionCodeMapList){
+ //寰�瀹瑰櫒鍏ュ満鍙傛暟涓斁鍏ユ簮绔欑偣浣嶇疆
+ for(AgvWrkMast agvWrkMast : agvWrkMastList){
+ Map<String,String> positionCodeMap = new HashMap<>();
+ positionCodeMap.put("positionCode",agvWrkMast.getSourceLocNo());
+ positionCodeMapList.add(positionCodeMap);
+ }
+ }
+
+ private void getRequestParam(AgvTaskCreateParam agvTaskCreateParam,List<AgvWrkMast> agvWrkMastList){
List<AgvTaskParam> agvTaskParamList = agvWrkMastList.stream().map(agvWrkMast -> {
AgvTaskParam agvTaskParam = new AgvTaskParam();
AgvTaskkDescribeParam agvTaskkDescribeParam = new AgvTaskkDescribeParam();
@@ -88,11 +123,6 @@
//AgvTaskParam
agvTaskParam.setTaskCode(agvWrkMast.getWrkNo().toString());
agvTaskParam.setTaskPriority(agvWrkMast.getIoPri().intValue());
-
- //寰�瀹瑰櫒鍏ュ満鍙傛暟涓斁鍏ユ簮绔欑偣浣嶇疆
- Map<String,String> positionCodeMap = new HashMap<>();
- positionCodeMap.put("positionCode",agvWrkMast.getSourceLocNo());
- positionCodeMapList.add(positionCodeMap);
//AgvTaskkDescribeParam
agvTaskkDescribeParam.setFromLocationCode(agvWrkMast.getSourceLocNo());
diff --git a/src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java
index 6d9e534..2c6449c 100644
--- a/src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java
@@ -85,32 +85,32 @@
}
// 濡傛灉 浣滀笟鏁伴噺绛変簬鍗曟嵁鎬绘暟閲� && 宸ヤ綔鏄庣粏妗d腑鏃犺鍗曟嵁鐨勬暟鎹� && AGV宸ヤ綔鏄庣粏妗d腑鏃犺鍗曟嵁鐨勬暟鎹�
if (complete
- && wrkDetlService.selectCount(new EntityWrapper<WrkDetl>().eq("order_no", orderNo)) < 1
- && agvWrkDetlService.selectCount(new EntityWrapper<AgvWrkDetl>().eq("order_no",orderNo)) < 1) {
+ && wrkDetlService.selectCount(new EntityWrapper<WrkDetl>().like("order_no", orderNo)) < 1
+ && agvWrkDetlService.selectCount(new EntityWrapper<AgvWrkDetl>().like("order_no",orderNo)) < 1) {
// 鍑哄簱璁㈠崟閲嶆柊鏁寸悊鏄庣粏
- DocType docType = docTypeService.selectById(order.getDocType());
- if (null != docType && docType.getPakout() == 1) {
- // 閲嶇粍鏄庣粏
- if (!orderDetlService.delete(new EntityWrapper<OrderDetl>().eq("order_id", order.getId()))) {
- throw new CoolException("閲嶆暣鍑哄簱璁㈠崟銆恛rderNo = " + order.getOrderNo() + "銆戞槑缁嗗け璐�");
- }
- List<WrkDetl> wrkDetls = wrkDetlService.selectAndLogByOrderNo(orderNo);
- for (WrkDetl wrkDetl : wrkDetls) {
- OrderDetl orderDetl = new OrderDetl();
- orderDetl.sync(wrkDetl);
- orderDetl.setQty(orderDetl.getAnfme());
- orderDetl.setOrderId(order.getId());
- orderDetl.setOrderNo(orderNo);
- orderDetl.setStatus(1);
- orderDetl.setCreateTime(order.getCreateTime());
- orderDetl.setCreateBy(order.getCreateBy());
- orderDetl.setUpdateTime(order.getUpdateTime());
- orderDetl.setUpdateBy(order.getUpdateBy());
- if (!orderDetlService.insert(orderDetl)) {
- throw new CoolException("閲嶆暣鍑哄簱璁㈠崟銆恛rderNo = " + order.getOrderNo() + "銆戞槑缁嗗け璐�");
- }
- }
- }
+// DocType docType = docTypeService.selectById(order.getDocType());
+// if (null != docType && docType.getPakout() == 1) {
+// // 閲嶇粍鏄庣粏
+// if (!orderDetlService.delete(new EntityWrapper<OrderDetl>().eq("order_id", order.getId()))) {
+// throw new CoolException("閲嶆暣鍑哄簱璁㈠崟銆恛rderNo = " + order.getOrderNo() + "銆戞槑缁嗗け璐�");
+// }
+// List<WrkDetl> wrkDetls = wrkDetlService.selectAndLogByOrderNo(orderNo);
+// for (WrkDetl wrkDetl : wrkDetls) {
+// OrderDetl orderDetl = new OrderDetl();
+// orderDetl.sync(wrkDetl);
+// orderDetl.setQty(orderDetl.getAnfme());
+// orderDetl.setOrderId(order.getId());
+// orderDetl.setOrderNo(orderNo);
+// orderDetl.setStatus(1);
+// orderDetl.setCreateTime(order.getCreateTime());
+// orderDetl.setCreateBy(order.getCreateBy());
+// orderDetl.setUpdateTime(order.getUpdateTime());
+// orderDetl.setUpdateBy(order.getUpdateBy());
+// if (!orderDetlService.insert(orderDetl)) {
+// throw new CoolException("閲嶆暣鍑哄簱璁㈠崟銆恛rderNo = " + order.getOrderNo() + "銆戞槑缁嗗け璐�");
+// }
+// }
+// }
if (!this.updateSettle(order.getId(), 4L, null)) {
throw new CoolException("淇敼璁㈠崟銆恛rderNo = " + order.getOrderNo() + "銆戠姸鎬佷负宸插畬鎴愬け璐�");
diff --git a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
index fc9d604..6a84d5b 100644
--- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -27,7 +27,6 @@
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
-import javax.swing.*;
import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
@@ -446,12 +445,26 @@
} else {
// 璁㈠崟鍚堝苟鍑哄簱
List<OrderDto> orderDtoList = JSON.parseArray(locDto.getOrderNo(), OrderDto.class);
+
+ //瀹為檯鍑哄簱鏁伴噺
+ Double locAnfme = locDto.getAnfme();
+ //璁㈠崟瀹為檯鍑哄簱鏁伴噺
+ Double orderAnfme;
+
for (OrderDto orderDto : orderDtoList) {
OrderDetl orderDetl = orderDetlService.selectItem(orderDto.getOrderNo(), locDto.getMatnr(), locDto.getBatch());
if (orderDetl == null) {
orderDetl = orderDetlService.selectItem(orderDto.getOrderNo(), locDto.getMatnr(), null);
}
- if (!orderDetlService.increase(orderDetl.getOrderId(), orderDetl.getMatnr(), orderDetl.getBatch(), orderDto.getAnfme())) {
+
+ if(locAnfme > orderDetl.getAnfme()){
+ orderAnfme = orderDetl.getAnfme();
+ locAnfme -= orderAnfme;
+ }else {
+ orderAnfme = locAnfme;
+ }
+
+ if (!orderDetlService.increase(orderDetl.getOrderId(), orderDetl.getMatnr(), orderDetl.getBatch(), orderAnfme)) {
throw new CoolException("淇敼璁㈠崟鏄庣粏鏁伴噺澶辫触");
}
orderService.updateSettle(orderDetl.getOrderId(), 2L, userId);
@@ -947,9 +960,23 @@
}
} else {
// 璁㈠崟鍚堝苟鍑哄簱
+
+ //瀹為檯鍙栨秷鐨勫嚭搴撴暟閲�
+ Double wrkDetlAnfme = wrkDetl.getAnfme();
+ //璁㈠崟瀹為檯鍑哄簱鏁伴噺
+ Double orderAnfme;
+
List<OrderDto> orderDtoList = JSON.parseArray(wrkDetl.getOrderNo(), OrderDto.class);
for (OrderDto orderDto : orderDtoList) {
- if (!orderDetlService.decrease(orderDto.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), orderDto.getAnfme())) {
+
+ if(wrkDetlAnfme > orderDto.getAnfme()){
+ orderAnfme = orderDto.getAnfme();
+ wrkDetlAnfme -= orderAnfme;
+ }else {
+ orderAnfme = wrkDetlAnfme;
+ }
+
+ if (!orderDetlService.decrease(orderDto.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), orderAnfme)) {
throw new CoolException("璁㈠崟鏁版嵁鍥炴粴澶辫触");
}
}
diff --git a/src/main/java/com/zy/asrs/task/AgvWrkMastScheduler.java b/src/main/java/com/zy/asrs/task/AgvWrkMastScheduler.java
index e5f5ad1..a706936 100644
--- a/src/main/java/com/zy/asrs/task/AgvWrkMastScheduler.java
+++ b/src/main/java/com/zy/asrs/task/AgvWrkMastScheduler.java
@@ -16,7 +16,12 @@
import java.util.List;
/**
- * 瀹氭椂澶勭悊AGV宸ヤ綔妗d腑宸ヤ綔鐘舵�佷负205.宸ヤ綔瀹屾垚鐨勬暟鎹�
+ * 浠诲姟绫诲瀷锛�
+ * 飦� putaway锛氫笂鏋躲��
+ * 飦� carry锛氭惉杩愶紝缁熸寚鍑哄簱銆佺Щ搴撱�佺偣鍒扮偣鎼繍绛夈��
+ * 飦� scan锛氭壂鎻忕洏鐐广��
+ * 飦� weight锛氱О閲嶇洏鐐广��
+ * 飦� rfid锛歳fid鐩樼偣銆�
*/
@Slf4j
@Component
@@ -27,11 +32,16 @@
@Autowired
AgvWrkMastService agvWrkMastService;
+
+ /*
+ 瀹氭椂澶勭悊AGV宸ヤ綔妗d腑宸ヤ綔鐘舵�佷负205.宸ヤ綔瀹屾垚 涓� 锛�1.鍏ュ簱 || 53锛屾嫞鏂欏叆搴�)鐨勬暟鎹�
+ */
@Scheduled(cron = "0/5 * * * * ? ")
public void excutePutwayWrk(){
List<AgvWrkMast> agvWrkMastList = agvWrkMastService.selectList(new EntityWrapper<AgvWrkMast>()
.eq("wrk_sts", 205)
- .eq("io_type",1));
+ .andNew().eq("io_type",53)
+ .or().eq("io_type",1));
if(!Cools.isEmpty(agvWrkMastList)){
agvWrkMastList.stream().forEach(agvWrkMast -> {
ReturnT<String> returnT = agvWrkMastHandler.completedPutWayWrk(agvWrkMast);
@@ -39,12 +49,31 @@
}
}
+ /*
+ 瀹氭椂澶勭悊AGV宸ヤ綔妗d腑宸ヤ綔鐘舵�佷负205.宸ヤ綔瀹屾垚 涓� 101鍑哄簱绫诲瀷鐨勬暟鎹�
+ */
+ @Scheduled(cron = "0/5 * * * * ? ")
+ public void excuteCarryWrk(){
+ List<AgvWrkMast> agvWrkMastList = agvWrkMastService.selectList(new EntityWrapper<AgvWrkMast>()
+ .eq("wrk_sts", 207)
+ .eq("io_type",101));
+ if(!Cools.isEmpty(agvWrkMastList)){
+ agvWrkMastList.stream().forEach(agvWrkMast -> {
+ ReturnT<String> returnT = agvWrkMastHandler.completedCarryWrk(agvWrkMast);
+ });
+ }
+ }
+
+ /*
+ putaway锛氫笂鏋�
+ */
@Scheduled(cron = "0/5 * * * * ? ")
public void startPutwayWrk(){
List<AgvWrkMast> agvWrkMastList = agvWrkMastService.selectPage(new Page<>(1, 50)
,new EntityWrapper<AgvWrkMast>()
- .eq("wrk_sts", 201)
+ .eq("wrk_sts", 201) //201.鐢熸垚鍏ュ簱浠诲姟ID
+ .andNew().eq("io_type", 53).or() //53.鎷f枡鍐嶅叆搴�
.eq("io_type", 1)).getRecords();
if(!Cools.isEmpty(agvWrkMastList)){
@@ -55,4 +84,25 @@
}
}
}
+
+ /*
+ carry锛氭惉杩愶紝缁熸寚鍑哄簱銆佺Щ搴撱�佺偣鍒扮偣鎼繍绛�
+ */
+ @Scheduled(cron = "0/5 * * * * ? ")
+ public void startCarryWrk(){
+
+ List<AgvWrkMast> agvWrkMastList = agvWrkMastService.selectPage(new Page<>(1, 50)
+ ,new EntityWrapper<AgvWrkMast>()
+ .eq("wrk_sts", 21) //21.鐢熸垚鍑哄簱浠诲姟
+ .andNew().eq("io_type", 101).or()
+ .eq("io_type", 103)).getRecords();
+
+ if(!Cools.isEmpty(agvWrkMastList)){
+ try {
+ ReturnT<String> returnT = agvWrkMastHandler.startCarryWrk(agvWrkMastList);
+ } catch (IOException e) {
+ log.error(e.getMessage());
+ }
+ }
+ }
}
diff --git a/src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java b/src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java
index a0c3d12..8084635 100644
--- a/src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java
@@ -1,6 +1,9 @@
package com.zy.asrs.task.handler;
+import com.alibaba.fastjson.JSONArray;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.core.common.Cools;
+import com.zy.asrs.entity.AgvLocDetl;
import com.zy.asrs.entity.AgvWaitPakin;
import com.zy.asrs.entity.AgvWrkDetl;
import com.zy.asrs.entity.AgvWrkMast;
@@ -48,39 +51,102 @@
agvWrkMastService.updateById(agvWrkMast);
//淇敼鐩爣搴撲綅鐘舵�佷负F.鍦ㄥ簱
agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"F");
- //鏇存柊鐩爣搴撲綅鏄庣粏
- agvLocDetlService.addLocDetlInfo(agvWrkMast.getLocNo(),wrkNo);
//鐢熸垚AGV宸ヤ綔鍘嗗彶妗�
agvWrkMastLogService.save(wrkNo);
//鐢熸垚AGV宸ヤ綔鏄庣粏鍘嗗彶妗�
agvWrkDetlLogService.save(wrkNo);
- //鐢熸垚鍏ュ簱閫氱煡鍘嗗彶妗�
- agvWaitPakinLogService.save(barcode);
//鍒犻櫎AGV宸ヤ綔妗�
agvWrkMastService.deleteById(wrkNo);
//鍒犻櫎AGV宸ヤ綔鏄庣粏妗�
agvWrkDetlService.delete(new EntityWrapper<AgvWrkDetl>().eq("wrk_no",wrkNo));
- //鍒犻櫎鍏ュ簱閫氱煡妗�
- agvWaitPakinService.delete(new EntityWrapper<AgvWaitPakin>().eq("zpallet",barcode));
+ if(agvWrkMast.getIoType() == 1){
+ //鏇存柊鐩爣搴撲綅鏄庣粏
+ agvLocDetlService.addLocDetlInfo(agvWrkMast.getLocNo(),wrkNo);
+ //鐢熸垚鍏ュ簱閫氱煡鍘嗗彶妗�
+ agvWaitPakinLogService.save(barcode);
+ //鍒犻櫎鍏ュ簱閫氱煡妗�
+ agvWaitPakinService.delete(new EntityWrapper<AgvWaitPakin>().eq("zpallet",barcode));
- //妫�鏌ヨ鍗曟槸鍚﹀凡瀹屾垚
- orderService.checkComplete(orderNo);
+ }
+ if(!isJSON(orderNo)){
+ //妫�鏌ヨ鍗曟槸鍚﹀凡瀹屾垚
+ orderService.checkComplete(orderNo);
+ }else{
+ List<Map> maps = JSONArray.parseArray(orderNo, Map.class);
+ maps.forEach(map -> {
+ String o = map.get("orderNo").toString();
+ orderService.checkComplete(o);
+ });
+ }
return SUCCESS;
}
@Transactional
- public ReturnT<String> startPutWayWrk(List<AgvWrkMast> agvWrkMastList) throws IOException {
- Map<String, List<Map<String, String>>> containerMoveParam = agvWrkMastService.startWrk(agvWrkMastList);
+ public ReturnT<String> completedCarryWrk(AgvWrkMast agvWrkMast) {
+ int wrkNo = agvWrkMast.getWrkNo();
+ String orderNo = getOrderNoByWrkNo(wrkNo);
+ //淇敼宸ヤ綔妗g姸鎬佷负206.搴撳瓨鏇存柊瀹屾垚
+ agvWrkMast.setWrkSts(206L);
+ agvWrkMastService.updateById(agvWrkMast);
+ //淇敼婧愬簱浣嶇姸鎬佷负O
+ agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O");
+ //鏇存柊鐩爣搴撲綅鏄庣粏
+ agvLocDetlService.delete(new EntityWrapper<AgvLocDetl>().eq("loc_no",agvWrkMast.getSourceLocNo()));
+ //鐢熸垚AGV宸ヤ綔鍘嗗彶妗�
+ agvWrkMastLogService.save(wrkNo);
+ //鐢熸垚AGV宸ヤ綔鏄庣粏鍘嗗彶妗�
+ agvWrkDetlLogService.save(wrkNo);
+ //鍒犻櫎AGV宸ヤ綔妗�
+ agvWrkMastService.deleteById(wrkNo);
+ //鍒犻櫎AGV宸ヤ綔鏄庣粏妗�
+ agvWrkDetlService.delete(new EntityWrapper<AgvWrkDetl>().eq("wrk_no",wrkNo));
+ if(!isJSON(orderNo)){
+ //妫�鏌ヨ鍗曟槸鍚﹀凡瀹屾垚
+ orderService.checkComplete(orderNo);
+ }else{
+ List<Map> maps = JSONArray.parseArray(orderNo, Map.class);
+ maps.forEach(map -> {
+ String o = map.get("orderNo").toString();
+ orderService.checkComplete(o);
+ });
+ }
+ return SUCCESS;
+ }
- int code = agvWrkMastService.containerMove(containerMoveParam);
+ @Transactional
+ public ReturnT<String> startPutWayWrk(List<AgvWrkMast> agvWrkMastList) throws IOException {
+
+ int startWwrkCode = agvWrkMastService.startWrk(agvWrkMastList,"putaway");
+
+ int code = agvWrkMastService.containerMove(agvWrkMastList);
if(code == 0){
agvWrkMastList.forEach(agvWrkMast -> {
//202.RCS鍙栬揣涓�
agvWrkMast.setWrkSts((long)202);
- //淇敼AGV鍏ュ簱閫氱煡妗g姸鎬佸叆鍑虹姸鎬佷负Y
- agvWaitPakinService.updateIoStatus(agvWrkMast.getWrkNo(),"Y");
+ agvWrkMastService.updateById(agvWrkMast);
+ if(agvWrkMast.getIoType() == 1){
+ //淇敼AGV鍏ュ簱閫氱煡妗g姸鎬佸叆鍑虹姸鎬佷负Y
+ agvWaitPakinService.updateIoStatus(agvWrkMast.getWrkNo(),"Y");
+ }
+
+ });
+ //agvWrkMastService.updateBatchById(agvWrkMastList);
+
+ return SUCCESS;
+ }
+
+ return FAIL;
+ }
+
+ @Transactional
+ public ReturnT<String> startCarryWrk(List<AgvWrkMast> agvWrkMastList) throws IOException {
+ int code = agvWrkMastService.startWrk(agvWrkMastList,"carry");
+ if(code == 0){
+ agvWrkMastList.forEach(agvWrkMast -> {
+ //202.RCS鍙栬揣涓�
+ agvWrkMast.setWrkSts((long)202);
agvWrkMastService.updateById(agvWrkMast);
});
//agvWrkMastService.updateBatchById(agvWrkMastList);
@@ -95,4 +161,28 @@
AgvWrkDetl agvWrkDetl = agvWrkDetlService.selectOne(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", wrkNo));
return agvWrkDetl.getOrderNo();
}
+
+ public static void main(String[] args) {
+ String order = "[{\"anfme\":50.0,\"orderNo\":\"CS110011001111\"},{\"anfme\":50.0,\"orderNo\":\"CS110011001110\"}]";
+ List<Map> maps = JSONArray.parseArray(order, Map.class);
+ maps.forEach(map -> {
+ Object orderNo = map.get("orderNo");
+ System.out.println(orderNo );
+ });
+ }
+
+ private boolean isJSON(String str) {
+ if (Cools.isEmpty(str)) {
+ return false;
+ } else {
+ str = str.trim();
+ if (str.startsWith("{") && str.endsWith("}")) {
+ return true;
+ } else if (str.startsWith("[") && str.endsWith("]")) {
+ return true;
+ } else {
+ return false;
+ }
+ }
+ }
}
diff --git a/src/main/java/com/zy/common/model/AgvBasDevpDto.java b/src/main/java/com/zy/common/model/AgvBasDevpDto.java
index da9de2d..0f0047f 100644
--- a/src/main/java/com/zy/common/model/AgvBasDevpDto.java
+++ b/src/main/java/com/zy/common/model/AgvBasDevpDto.java
@@ -2,6 +2,7 @@
import com.zy.asrs.entity.AgvBasDevp;
import com.zy.asrs.entity.AgvWaitPakin;
+import com.zy.asrs.entity.AgvWrkDetl;
import com.zy.asrs.entity.AgvWrkMast;
import lombok.Data;
@@ -15,4 +16,6 @@
private AgvWaitPakin agvWaitPakin;
+ private AgvWrkDetl agvWrkDetl;
+
}
diff --git a/src/main/webapp/static/js/agvBasDevp/basDevp.js b/src/main/webapp/static/js/agvBasDevp/basDevp.js
index 75c55ac..c17a0b3 100644
--- a/src/main/webapp/static/js/agvBasDevp/basDevp.js
+++ b/src/main/webapp/static/js/agvBasDevp/basDevp.js
@@ -385,7 +385,7 @@
layer.msg("姝ょ珯鐐圭殑鐘舵�佷笉瀛樺湪鐗╂枡");
return;
}
- locDetlToLayer(data.barcode);
+ locDetlToLayer(data.devNo,data.barcode);
break;
case 'unbind':
// locDetl(data.locNo);
@@ -572,8 +572,9 @@
}
// iframe鐗╂枡璇︽儏
- function locDetlToLayer(val) {
- barcode = val;
+ function locDetlToLayer(val1,val2) {
+ devNo = val1;
+ barcode = val2;
layer.open({
type: 2,
title: '绔欑偣鏄庣粏',
diff --git a/src/main/webapp/static/js/common.js b/src/main/webapp/static/js/common.js
index b719bce..5f5f4ca 100644
--- a/src/main/webapp/static/js/common.js
+++ b/src/main/webapp/static/js/common.js
@@ -220,7 +220,8 @@
]
var detlCols = [
- ,{field: 'zpallet', align: 'center',title: '鎵樼洏鏉$爜', width: 110}
+ ,{field: 'zpallet', align: 'center',title: '鎵樼洏鏉$爜', hide: true}
+ ,{field: 'zpallet', align: 'center',title: '鎵樼洏鏉$爜', hide: false}
,{field: 'matnr', align: 'center',title: '鐗╂枡鍙�'}
,{field: 'batch', align: 'center',title: '搴忓垪鐮�', width: 300, sort:true, hide: false}
,{field: 'maktx', align: 'center',title: '鐗╂枡鍚嶇О'}
diff --git a/src/main/webapp/views/agvBasDevp/basDevpWaitPakinDetail.html b/src/main/webapp/views/agvBasDevp/basDevpWaitPakinDetail.html
index 86336b7..1318a19 100644
--- a/src/main/webapp/views/agvBasDevp/basDevpWaitPakinDetail.html
+++ b/src/main/webapp/views/agvBasDevp/basDevpWaitPakinDetail.html
@@ -52,16 +52,16 @@
}else {
$('#zpallet').val(tmp);
}
-
// 鏁版嵁娓叉煋
tableIns = table.render({
elem: '#locDetlByMap',
headers: {token: localStorage.getItem('token')},
- url: baseUrl+'/agv/waitPakin/list/auth',
+ url: baseUrl+'/agv/basDevp/detail/list/auth',
page: true,
limit: 20,
skin: 'line',
- where: {zpallet: $('#zpallet').val()},
+ //where: {zpallet: $('#zpallet').val()},
+ where: {devNo: parent.devNo},
even: true,
cellMinWidth: 50,
cols: [getCol()],
diff --git a/src/main/webapp/views/agvBasDevpVisualized/basDevp.html b/src/main/webapp/views/agvBasDevpVisualized/basDevp.html
index 521e936..acec6aa 100644
--- a/src/main/webapp/views/agvBasDevpVisualized/basDevp.html
+++ b/src/main/webapp/views/agvBasDevpVisualized/basDevp.html
@@ -57,6 +57,19 @@
<input type="checkbox" lay-skin="primary" name="cardCheckBox" value="{{devNo}}"/>
</div>
<div style="float:right; width:85%;">
+<!-- <div>-->
+<!-- <button type="button" class="layui-btn layui-btn-normal" value="{{devNo}}">鎷f枡鍏ュ簱</button>-->
+<!-- </div>-->
+
+ {{#if agvWrkDetl}}
+ <div style=" padding-bottom: 20px">
+
+ <button type="button" class="layui-btn layui-btn-normal" value="{{devNo}}" lay-submit lay-filter="containerMoveOut">瀹瑰櫒绂诲満</button>
+ <button type="button" class="layui-btn layui-btn-normal" value="{{devNo}}" lay-submit lay-filter="pickIn">鎷f枡鍏ュ簱</button>
+
+ </div>
+ {{/if}}
+
<div>
宸ヤ綔绔欑紪鐮侊細{{devNo}} </br>
绔欑偣鐘舵�侊細{{locSts$}}
@@ -76,6 +89,16 @@
宸ヤ綔鍙凤細{{agvWrkMast.wrkNo}} </br>
宸ヤ綔鐘舵�侊細{{agvWrkMast.wrkSts$ }} </br>
宸ヤ綔绫诲瀷锛歿{agvWrkMast.ioType$}}
+ </div>
+ {{/if}}
+ {{#if agvWrkDetl}}
+ <div style="padding-top: 10px;">
+ 鐗╂枡鍙凤細{{agvWrkDetl.matnr}} </br>
+ {{#if agvWrkDetl.batch}}
+ 搴忓垪鐮侊細{{agvWrkDetl.batch}} </br>
+ {{/if}}
+ 鎵樼洏鐮侊細{{agvWrkDetl.zpallet}} </br>
+ 鏁伴噺锛歿{agvWrkDetl.anfme}}
</div>
{{/if}}
</div>
@@ -114,6 +137,7 @@
var table = layui.table;
var layer = layui.layer;
var param = {'stationCode' : 'CS-101'};
+ loadData(param);
form.on('select(floorSelect)', function (data) {
@@ -136,26 +160,6 @@
param = null;
param = {'stationCode' : $('#rowSelect').val()};
loadData(param);
- // $.ajax({
- // url: baseUrl+"/agv/basDevp/visualized/list/auth",
- // headers: {'token': localStorage.getItem('token')},
- // data: JSON.stringify(param),
- // dataType:'json',
- // contentType:'application/json;charset=UTF-8',
- // method: 'POST',
- // success: function (res) {
- // if (res.code === 200){
- // var tpl = $("#basDevpMapTemplate").html();
- // var template = Handlebars.compile(tpl);
- // var html = template(res.data);
- // $('#basDevpMap').html(html);
- // } else if (res.code === 403){
- // top.location.href = baseUrl+"/";
- // }else {
- // layer.msg(res.msg)
- // }
- // }
- // })
});
//鍏ㄩ��
@@ -172,6 +176,57 @@
for (var i = 0; i < cks.length; i++) {
cks[i].checked = !cks[i].checked;
}
+ });
+
+ //瀹瑰櫒绂诲満
+ form.on('submit(containerMoveOut)', function () {
+ var devNoList = [];
+ devNoList.push(this.value);
+ var moveOutParam = {'devNo' : devNoList};
+ $.ajax({
+ url: baseUrl+"/agv/basDevp/visualized/container/moveOut",
+ headers: {'token': localStorage.getItem('token')},
+ data: JSON.stringify(moveOutParam),
+ dataType:'json',
+ contentType:'application/json;charset=UTF-8',
+ method: 'POST',
+ success: function (res) {
+ if (res.code === 200){
+ layer.msg(res.msg);
+ loadData(param);
+ } else if (res.code === 403){
+ top.location.href = baseUrl+"/";
+ } else {
+ layer.msg(res.msg)
+ }
+ }
+ })
+
+ });
+
+ //鎷f枡鍏ュ簱
+ form.on('submit(pickIn)', function () {
+ var devNoList = [];
+ devNoList.push(this.value);
+ var pickInParam = {'devNo' : devNoList};
+ $.ajax({
+ url: baseUrl+"/agv/basDevp/visualized/container/pickIn",
+ headers: {'token': localStorage.getItem('token')},
+ data: JSON.stringify(pickInParam),
+ dataType:'json',
+ contentType:'application/json;charset=UTF-8',
+ method: 'POST',
+ success: function (res) {
+ if (res.code === 200){
+ layer.msg(res.msg);
+ loadData(param);
+ } else if (res.code === 403){
+ top.location.href = baseUrl+"/";
+ } else {
+ layer.msg(res.msg)
+ }
+ }
+ })
});
//鍚姩鍏ュ簱
@@ -206,9 +261,9 @@
//瀹氭椂鍒锋柊鏁版嵁
//setInterval(loadData(param), 1000);
- setInterval(function() {
- loadData(param);
- }, 1000);
+ // setInterval(function() {
+ // loadData(param);
+ // }, 1000);
function loadData(param){
$.ajax({
diff --git a/src/main/webapp/views/mat/mat.html b/src/main/webapp/views/mat/mat.html
index 4f734c4..7103755 100644
--- a/src/main/webapp/views/mat/mat.html
+++ b/src/main/webapp/views/mat/mat.html
@@ -459,7 +459,7 @@
</div>
</td>
</tr>
- <tr style="height: 74px; font-size: 18px;font-weight: 400">
+ <tr style="height: 50px; font-size: 18px;font-weight: 400">
<td width="50px" align="center" colspan="1">瑙勬牸</td>
<td align="center" colspan="3" style="
overflow:hidden;
--
Gitblit v1.9.1