From 559b2321be06967f32eb40ba434790b735d7fa33 Mon Sep 17 00:00:00 2001
From: zyx <zyx123456>
Date: 星期二, 07 十一月 2023 16:53:55 +0800
Subject: [PATCH] 出库时,检测到选择的站点没有空的暂存位,则等成等待任务,等待任务的出库站点暂时不分配。 新增定时处理等待任务
---
src/main/java/com/zy/asrs/task/AgvWrkMastScheduler.java | 17 ++++
src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java | 40 ++++++---
src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java | 22 +----
src/main/java/com/zy/asrs/service/impl/AgvBasDevpServiceImpl.java | 7 +
src/main/java/com/zy/asrs/controller/OutController.java | 139 ++--------------------------------
src/main/java/com/zy/asrs/service/AgvBasDevpService.java | 2
6 files changed, 66 insertions(+), 161 deletions(-)
diff --git a/src/main/java/com/zy/asrs/controller/OutController.java b/src/main/java/com/zy/asrs/controller/OutController.java
index 3c368d0..67c8fe2 100644
--- a/src/main/java/com/zy/asrs/controller/OutController.java
+++ b/src/main/java/com/zy/asrs/controller/OutController.java
@@ -71,38 +71,6 @@
@ManagerAuth
public R pakoutPreview(@RequestBody List<Long> ids) {
-// Order order = orderService.selectById(ids.get(0));
-//
-// DocType docType = docTypeService.selectById(order.getDocType());
-//
-// if("浜哄伐琛ヨ揣鍗�".equals(docType.getDocName())){
-// List<OrderDetl> orderDetlList = orderDetlService.selectBatchIds(ids);
-// //杩斿洖缁欏墠绔殑搴撲綅浠ュ強绔欑偣淇℃伅
-// List<LocDto> locDtoList = new ArrayList<>();
-//
-// for (OrderDetl orderDetl : orderDetlList) {
-//
-// double issued = Optional.of(orderDetl.getAnfme() - orderDetl.getQty()).orElse(0.0D);
-// if (issued <= 0.0D) { continue; }
-//
-// //浠庡钩搴撳鎵�
-// //issued = manLocDetlService.queryStockAndSetLocDto(orderDetl.getMatnr(),orderDetl.getBatch(),orderDetl.getOrderNo(),locDtoList,issued,orderDetl.getThreeCode(),orderDetl.getDeadTime());
-//
-// //鍏堟壘AGV鐨勫簱瀛橈紝濡傛灉杩斿洖鐨刬ssued澶т簬0锛屽垯鍘诲洓椤瑰簱鎵�
-// //issued = agvLocDetlService.queryStockAndSetLocDto(orderDetl.getMatnr(),orderDetl.getBatch(),orderDetl.getOrderNo(),locDtoList,issued,orderDetl.getThreeCode(),orderDetl.getDeadTime());
-//
-// //浠庡洓椤瑰簱鐨勫簱瀛橀噷闈㈡壘锛�
-// issued = locDetlService.queryStockAndSetLocDto1(orderDetl.getMatnr(),orderDetl.getBatch(),orderDetl.getOrderNo(),locDtoList,issued,orderDetl.getThreeCode(),orderDetl.getDeadTime());
-//
-// if (issued > 0) {
-// LocDto locDto = new LocDto(null, orderDetl.getMatnr(), orderDetl.getMaktx(), orderDetl.getBatch(), orderDetl.getOrderNo(), issued);
-// locDto.setLack(Boolean.TRUE);
-// locDtoList.add(locDto);
-// }
-// }
-// return R.ok().add(locDtoList);
-// }
-
List<OrderDetl> orderDetlList = orderDetlService.selectBatchIds(ids);
//杩斿洖缁欏墠绔殑搴撲綅浠ュ強绔欑偣淇℃伅
List<LocDto> locDtoList = new ArrayList<>();
@@ -120,7 +88,6 @@
locDtoList.add(locDto);
}
}else {
- //double issued = Optional.of(orderDetl.getAnfme() - orderDetl.getQty()).orElse(0.0D);
if (issued <= 0.0D) { continue; }
//浠庡钩搴撳鎵�
@@ -187,96 +154,6 @@
workService.stockOut(staNo, taskDto, getUserId());
}
return R.ok();
-
- /*
- if (Cools.isEmpty(locDtos)) {
- return R.parse(BaseRes.PARAM);
- }
- boolean lack = true;
- for (LocDto locDto : locDtos) {
- if (Cools.isEmpty(locDto.getStaNo()) && !locDto.isLack()) {
- return R.error(locDto.getLocNo()+"搴撲綅璇烽�夋嫨鍑哄簱绔�");
- }
- }
- for (LocDto locDto : locDtos) {
- if (!locDto.isLack()) {
- lack = false;
- break;
- }
- }
- if (lack) {
- return R.error("搴撳瓨涓嶈冻");
- }
-
- Thread.sleep(500L);
-
- // 璁㈠崟棰勬牎楠� ===>> 1.璁㈠崟鐘舵�侊紱 2.璁㈠崟甯﹀嚭鏁伴噺
- List<OrderDto> orderDtos = new ArrayList<>();
- for (LocDto locDto : locDtos) {
- if (!isJSON(locDto.getOrderNo())) {
- if (Cools.isEmpty(locDto.getOrderNo())) { continue; }
- OrderDto orderDto = new OrderDto(locDto.getOrderNo(), locDto.getMatnr(), locDto.getBatch(), locDto.getAnfme());
- if (OrderDto.has(orderDtos, orderDto)) {
- OrderDto dto = OrderDto.find(orderDtos, orderDto);
- assert dto != null;
- dto.setAnfme(dto.getAnfme() + orderDto.getAnfme());
- } else {
- orderDtos.add(orderDto);
- }
- } else {
- // 璁㈠崟鍚堝苟鍑哄簱
- List<OrderDto> orderDtoList = JSON.parseArray(locDto.getOrderNo(), OrderDto.class);
- for (OrderDto one : orderDtoList) {
- OrderDto orderDto = new OrderDto(one.getOrderNo(), locDto.getMatnr(), locDto.getBatch(), one.getAnfme());
- if (OrderDto.has(orderDtos, orderDto)) {
- OrderDto dto = OrderDto.find(orderDtos, orderDto);
- assert dto != null;
- dto.setAnfme(dto.getAnfme() + orderDto.getAnfme());
- } else {
- orderDtos.add(orderDto);
- }
- }
- }
- }
- for (OrderDto orderDto : orderDtos) {
- Order order = orderService.selectByNo(orderDto.getOrderNo());
- if (order.getSettle() > 2) {
- return R.error(orderDto.getOrderNo() + "璁㈠崟宸插け鏁堬紝璇峰強鏃跺埛鏂伴〉闈�");
- }
-// OrderDetl orderDetl = orderDetlService.selectItemNoneOfBatch(orderDto.getOrderNo(), orderDto.getMatnr());
-// if (orderDetl.getAnfme() - orderDetl.getQty() < orderDto.getAnfme()) {
-// return R.ok(orderDto.getOrderNo() + "璁㈠崟宸蹭綔涓氾紝璇峰強鏃跺埛鏂伴〉闈�");
-// }
- }
-
- List<TaskDto> taskDtos = new ArrayList<>();
- // 鏍规嵁 锛堝簱浣� & 鍑哄簱绔欙級 鍒嗙粍锛� 鐞嗘兂鐘舵�侊細涓�缁勪负涓�娆″嚭搴撲换鍔�
- for (LocDto locDto : locDtos) {
- if (locDto.isLack()) { continue; }
- // 闃叉鍓嶇椤甸潰鎻愬彇搴撲綅淇℃伅鍚庯紝鍦ㄥ叾浠栧湴鏂瑰璇ュ簱浣嶇敓鎴愪簡鍑哄簱浠诲姟(搴撲綅鐘舵�侀潪F鐘舵��)
- LocMast locMast = locMastService.selectById(locDto.getLocNo());
- if(!Cools.isEmpty(locMast) && !locMast.getLocSts().equals("F")){
- return R.error("搴撲綅鍙烽潪鍦ㄥ簱鐘舵�侊紝璇烽噸鏂伴�夋嫨鍑哄簱搴撲綅===>>" + locDto.getLocNo());
- }
-
- TaskDto taskDto = new TaskDto(locDto.getLocNo(), locDto.getStaNo(), locDto);
- if (TaskDto.has(taskDtos, taskDto)) {
- TaskDto dto = TaskDto.find(taskDtos, taskDto);
- assert dto != null;
- dto.getLocDtos().addAll(taskDto.getLocDtos());
- } else {
- taskDtos.add(taskDto);
- }
- }
-
- // -----------------------------------------------------------------------------------------------
- List<String> excludeLocNos = taskDtos.stream().map(TaskDto::getLocNo).distinct().collect(Collectors.toList());
- for (TaskDto taskDto : taskDtos) {
- BasDevp staNo = basDevpService.checkSiteStatus(taskDto.getStaNo());
- workService.stockOut(staNo, taskDto, getUserId());
- locMastService.breakUp(taskDto.getLocNo(), excludeLocNos);
- }
- return R.ok();*/
}
@@ -389,17 +266,18 @@
if(!Cools.isEmpty(agvLocMast) && !agvLocMast.getLocSts().equals("F")){
throw new CoolException("搴撲綅鍙烽潪鍦ㄥ簱鐘舵�侊紝璇烽噸鏂伴�夋嫨鍑哄簱搴撲綅===>>" + locDto.getLocNo());
}
- AgvBasDevp agvBasDevp = agvBasDevpService.selectOne(new EntityWrapper<AgvBasDevp>()
- .eq("station_code", locDto.getAgvStaNo())
- .eq("loc_sts", "O"));
+ //瀵绘壘绌虹珯鐐逛綅缃�
+ AgvBasDevp agvBasDevp = agvBasDevpService.selectEmptyDevpByStation(locDto.getAgvStaNo());
if(Cools.isEmpty(agvBasDevp)){
- //TODO 鍋囧鍑哄簱绔欑偣涓嶈冻锛岃褰曟湭鍑哄簱鐨勫簱浣嶏紱
+ //濡傛灉娌℃湁鎵惧埌绌虹珯鐐癸紝鍒欑敓鎴愬噯澶囦换鍔�
+ TaskDto taskDto = new TaskDto(locDto.getLocNo(), locDto.getAgvStaNo(), locDto);
+ agvTaskDtos.add(taskDto);
return;
}
- agvBasDevp.setLocSts("S");
- agvBasDevpService.updateById(agvBasDevp);
+// agvBasDevp.setLocSts("S");
+// agvBasDevpService.updateById(agvBasDevp);
+ agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvBasDevp.getDevNo(),"S",null);
TaskDto taskDto = new TaskDto(locDto.getLocNo(), agvBasDevp.getDevNo(), locDto);
- //TODO 鏆備笉鑰冭檻搴撲綅娣疯浇鐘舵�侊紙鍚庣画鐪嬫儏鍐垫槸鍚﹂渶瑕佸垽鏂級
agvTaskDtos.add(taskDto);
}
@@ -433,6 +311,7 @@
if (!Cools.isEmpty(manLocDetl) && !(locDto.getAnfme()>manLocDetl.getAnfme())) {
manLocDetl.setStatus(0);
manLocDetlService.update(manLocDetl, new EntityWrapper<ManLocDetl>().eq("loc_no", manLocDetl.getLocNo()).eq("matnr",manLocDetl.getMatnr()));
+ //addPakOUT 鐢熸垚鎷h揣鍗曟垚鍔�
if (addPakOUT(locDto).equals(R.ok())) {
Order order = orderService.selectByNo(locDto.getOrderNo());
if (Cools.isEmpty(order)){
diff --git a/src/main/java/com/zy/asrs/service/AgvBasDevpService.java b/src/main/java/com/zy/asrs/service/AgvBasDevpService.java
index e3798be..820691d 100644
--- a/src/main/java/com/zy/asrs/service/AgvBasDevpService.java
+++ b/src/main/java/com/zy/asrs/service/AgvBasDevpService.java
@@ -19,4 +19,6 @@
public List<String> getAvailableEmptyInSite();
public AgvBasDevp getByDevNo(String devNo);
+
+ public AgvBasDevp selectEmptyDevpByStation(String stationCode);
}
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 9c4db97..e899743 100644
--- a/src/main/java/com/zy/asrs/service/impl/AgvBasDevpServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/AgvBasDevpServiceImpl.java
@@ -194,4 +194,11 @@
return this.selectOne(new EntityWrapper<AgvBasDevp>().eq("dev_no",devNo));
}
+ @Override
+ public AgvBasDevp selectEmptyDevpByStation(String stationCode) {
+ return this.selectOne(new EntityWrapper<AgvBasDevp>()
+ .eq("station_code", stationCode)
+ .eq("loc_sts", "O"));
+ }
+
}
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 1faa1fc..764889e 100644
--- a/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java
@@ -533,8 +533,10 @@
鏇存柊婧愮珯鐐逛俊鎭�
*/
private void updateAgvBasDevp(AgvBasDevp agvBasDevp, String locSts){
- agvBasDevp.setLocSts(locSts);
- agvBasDevpService.updateById(agvBasDevp);
+ if(!Cools.isEmpty(agvBasDevp)){
+ agvBasDevp.setLocSts(locSts);
+ agvBasDevpService.updateById(agvBasDevp);
+ }
}
/*
@@ -599,9 +601,6 @@
*/
private AgvWrkMast createWrkMast(int ioType, long wrkSts, String sourceLocNo, String locNo, String barcode, Date now, Long userId, boolean isConveyor){
AgvWrkMast wrkMast = new AgvWrkMast();
- //鐢熸垚宸ヤ綔鍙�
-// int workNo = agvCommonService.getWorkNo(WorkNoType.getWorkNoType(ioType));
-// wrkMast.setWrkNo();
//宸ヤ綔鐘舵��
wrkMast.setWrkSts(wrkSts);
//鍏ュ嚭搴撶被鍨�
@@ -617,15 +616,6 @@
wrkMast.setBarcode(barcode);
//鏍囪鏄惁涓鸿緭閫佺嚎鍏ュ簱
wrkMast.setMk(isConveyor ? "Y" : "N");
- // 婊℃澘锛歒
- //wrkMast.setFullPlt("Y");
- // 鎷f枡
- //wrkMast.setPicking("N");
- // 閫�鍑�
- //wrkMast.setExitMk("N");
- // 绌烘澘
- //wrkMast.setEmptyMk("N");
- //wrkMast.setLinkMis("N");
wrkMast.setAppeUser(userId);
wrkMast.setAppeTime(now);
wrkMast.setModiUser(userId);
@@ -634,10 +624,6 @@
if (!agvWrkMastService.insertByIncrease(wrkMast)) {
throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
}
-
- int i = agvWrkMastService.selectCount(new EntityWrapper<AgvWrkMast>());
- log.info(i + "");
-
wrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("loc_no", locNo).eq("source_loc_no",sourceLocNo));
diff --git a/src/main/java/com/zy/asrs/task/AgvWrkMastScheduler.java b/src/main/java/com/zy/asrs/task/AgvWrkMastScheduler.java
index 4063c5e..626410c 100644
--- a/src/main/java/com/zy/asrs/task/AgvWrkMastScheduler.java
+++ b/src/main/java/com/zy/asrs/task/AgvWrkMastScheduler.java
@@ -100,6 +100,7 @@
List<AgvWrkMast> agvWrkMastList = agvWrkMastService.selectPage(new Page<>(1, 50)
,new EntityWrapper<AgvWrkMast>()
.eq("wrk_sts", 21)
+ .like("loc_no","@")
.andNew().eq("io_type", 101)
.or().eq("io_type", 103)
.or().eq("io_type", 11)
@@ -114,4 +115,20 @@
}
}
}
+
+ /*
+ 瀹氭椂澶勭悊绛夊緟鎵ц鐨勪换鍔� 宸ヤ綔鐘舵�佷负21.鐢熸垚鍑哄簱浠诲姟 涓旂洰鏍囧簱浣嶄腑涓嶅惈@瀛楃
+ */
+ @Scheduled(cron = "0/5 * * * * ? ")
+ public void dealWatiWrk(){
+ List<AgvWrkMast> agvWrkMastList = agvWrkMastService.selectList(new EntityWrapper<AgvWrkMast>().eq("wrk_sts", 21).like(false, "loc_no", "@"));
+ if(!Cools.isEmpty(agvWrkMastList)){
+ try {
+ ReturnT<String> returnT = agvWrkMastHandler.dealWatiWrk(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 a616b3d..76a8c0f 100644
--- a/src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java
@@ -4,10 +4,7 @@
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.core.common.Cools;
import com.core.exception.CoolException;
-import com.zy.asrs.entity.AgvLocDetl;
-import com.zy.asrs.entity.AgvWaitPakin;
-import com.zy.asrs.entity.AgvWrkDetl;
-import com.zy.asrs.entity.AgvWrkMast;
+import com.zy.asrs.entity.*;
import com.zy.asrs.service.*;
import com.zy.asrs.task.AbstractHandler;
import com.zy.asrs.task.core.ReturnT;
@@ -25,23 +22,25 @@
public class AgvWrkMastHandler extends AbstractHandler<String> {
@Autowired
- AgvWrkMastService agvWrkMastService;
+ private AgvWrkMastService agvWrkMastService;
@Autowired
- AgvLocMastService agvLocMastService;
+ private AgvLocMastService agvLocMastService;
@Autowired
- AgvLocDetlService agvLocDetlService;
+ private AgvLocDetlService agvLocDetlService;
@Autowired
- AgvWrkMastLogService agvWrkMastLogService;
+ private AgvWrkMastLogService agvWrkMastLogService;
@Autowired
- AgvWrkDetlService agvWrkDetlService;
+ private AgvWrkDetlService agvWrkDetlService;
@Autowired
- AgvWrkDetlLogService agvWrkDetlLogService;
+ private AgvWrkDetlLogService agvWrkDetlLogService;
@Autowired
- AgvWaitPakinService agvWaitPakinService;
+ private AgvWaitPakinService agvWaitPakinService;
@Autowired
- AgvWaitPakinLogService agvWaitPakinLogService;
+ private AgvWaitPakinLogService agvWaitPakinLogService;
@Autowired
- OrderService orderService;
+ private OrderService orderService;
+ @Autowired
+ private AgvBasDevpService agvBasDevpService;
@Transactional
public ReturnT<String> completedPutWayWrk(AgvWrkMast agvWrkMast) {
@@ -192,6 +191,21 @@
return FAIL;
}
+ public ReturnT<String> dealWatiWrk(List<AgvWrkMast> agvWrkMastList) throws IOException {
+
+ agvWrkMastList.forEach(agvWrkMast -> {
+ //瀵绘壘绌虹珯鐐逛綅缃�
+ AgvBasDevp agvBasDevp = agvBasDevpService.selectEmptyDevpByStation(agvWrkMast.getLocNo());
+ if(!Cools.isEmpty(agvBasDevp)){
+ agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvBasDevp.getDevNo(),"S",null);
+ agvWrkMast.setLocNo(agvBasDevp.getDevNo());
+ agvWrkMastService.updateById(agvWrkMast);
+ }
+ });
+
+ return SUCCESS;
+ }
+
private String getOrderNoByWrkNo(int wrkNo){
AgvWrkDetl agvWrkDetl = agvWrkDetlService.selectOne(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", wrkNo));
if(Cools.isEmpty(agvWrkDetl)){
--
Gitblit v1.9.1