From d836c8366387ab7c44943a9abed29748355b280f Mon Sep 17 00:00:00 2001
From: zhou zhou <3272660260@qq.com>
Date: 星期五, 05 十二月 2025 17:00:56 +0800
Subject: [PATCH] #出库单
---
src/main/java/com/zy/asrs/service/WorkService.java | 3 +
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java | 99 +++++++++++++++++++++++++++++++++
src/main/java/com/zy/common/model/TaskDto.java | 10 +++
src/main/java/com/zy/asrs/entity/TaskDetl.java | 1
src/main/java/com/zy/asrs/controller/OutController.java | 53 +++++++++++++++++
src/main/webapp/static/js/orderPakout/agvOut.js | 2
6 files changed, 166 insertions(+), 2 deletions(-)
diff --git a/src/main/java/com/zy/asrs/controller/OutController.java b/src/main/java/com/zy/asrs/controller/OutController.java
index a8d15c80..cd5a48c 100644
--- a/src/main/java/com/zy/asrs/controller/OutController.java
+++ b/src/main/java/com/zy/asrs/controller/OutController.java
@@ -110,7 +110,6 @@
LocCache locCache = locCacheService.selectOne(new EntityWrapper<LocCache>().eq("loc_no", locDetl.getLocNo()));
locDto.setFrozen(locDetl.getFrozen());
locDto.setFrozenLoc(locCache.getFrozen());
- List<Integer> staNos = staDescService.queryOutStaNosByLocNo(locDetl.getLocNo(), issued >= locDetl.getAnfme() ? 101 : 103);
List<BasStation> basStations = basStationService.selectList(new EntityWrapper<BasStation>().in("area_id", areaIds));
List<String> collect = basStations.stream().map(BasStation::getDevNo).collect(Collectors.toList());
locDto.setAgvStaNos(collect);
@@ -304,4 +303,56 @@
return R.ok();
}
+
+ @PostMapping("/out/agvPakOut/auth")
+ @ManagerAuth(memo = "璁㈠崟鍑哄簱")
+ public synchronized R agvPakOut(@RequestBody List<LocDto> locDtos) throws InterruptedException {
+ if (Cools.isEmpty(locDtos)) {
+ return R.parse(BaseRes.PARAM);
+ }
+ List<LocDto> locDtoArrayList = new ArrayList<>();
+ for (LocDto locDto : locDtos){
+ if (locDto.getFrozen()!=1 && locDto.getFrozenLoc()!=1){
+ locDtoArrayList.add(locDto);
+ }
+ }
+ locDtos = locDtoArrayList;
+ if (Cools.isEmpty(locDtos)) {
+ return R.parse("搴撳瓨/搴撲綅琚喕缁擄紝璇峰鐞嗗悗鍑哄簱锛侊紒锛�");
+ }
+ boolean lack = true;
+ for (LocDto locDto : locDtos) {
+ if (!locDto.isLack()) {
+ lack = false;
+ break;
+ }
+ }
+ if (lack) {
+ return R.error("搴撳瓨涓嶈冻");
+ }
+
+ Thread.sleep(1000L);
+
+ List<TaskDto> taskDtos = new ArrayList<>();
+ // 鏍规嵁 锛堝簱浣� & 鍑哄簱绔欙級 鍒嗙粍锛� 鐞嗘兂鐘舵�侊細涓�缁勪负涓�娆″嚭搴撲换鍔�
+ for (LocDto locDto : locDtos) {
+ if (locDto.isLack()) { continue; }
+ TaskDto taskDto = new TaskDto(locDto.getLocNo(), locDto.getAgvStaNo(), locDto);
+ if (TaskDto.has(taskDtos, taskDto)) {
+ TaskDto dto = TaskDto.find(taskDtos, taskDto);
+ assert dto != null;
+ dto.getLocDtos().addAll(taskDto.getLocDtos());
+ } else {
+ taskDtos.add(taskDto);
+ }
+ }
+ // -----------------------------------------------------------------------------------------------
+ for (TaskDto taskDto : taskDtos) {
+// BasDevp staNo = basDevpService.checkSiteStatus(taskDto.getStaNo());
+ BasStation station = basStationService.selectOne(new EntityWrapper<BasStation>().eq("dev_no", taskDto.getAgvStaNo()));
+ workService.agvStockOut(station, taskDto, getUserId());
+ }
+ return R.ok();
+ }
+
}
diff --git a/src/main/java/com/zy/asrs/entity/TaskDetl.java b/src/main/java/com/zy/asrs/entity/TaskDetl.java
index 2467477..745b03b 100644
--- a/src/main/java/com/zy/asrs/entity/TaskDetl.java
+++ b/src/main/java/com/zy/asrs/entity/TaskDetl.java
@@ -1,6 +1,7 @@
package com.zy.asrs.entity;
import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.enums.IdType;
import com.core.common.Cools;import com.baomidou.mybatisplus.annotations.TableField;
import java.text.SimpleDateFormat;
import java.util.Date;
diff --git a/src/main/java/com/zy/asrs/service/WorkService.java b/src/main/java/com/zy/asrs/service/WorkService.java
index 361e76f..ab0c49e 100644
--- a/src/main/java/com/zy/asrs/service/WorkService.java
+++ b/src/main/java/com/zy/asrs/service/WorkService.java
@@ -1,6 +1,7 @@
package com.zy.asrs.service;
import com.zy.asrs.entity.BasDevp;
+import com.zy.asrs.entity.BasStation;
import com.zy.asrs.entity.WaitPakin;
import com.zy.asrs.entity.WrkMast;
import com.zy.asrs.entity.param.EmptyPlateOutParam;
@@ -44,6 +45,8 @@
void checkStockOut(BasDevp staNo, TaskDto taskDto, Long userId);
+ void agvStockOut(BasStation staNo, TaskDto taskDto, Long userId);
+
/**
* 绌烘澘鍏ュ簱
* @return 搴撲綅鍙�
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 c1caa89..caa1443 100644
--- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -25,6 +25,7 @@
import com.zy.common.service.CommonService;
import com.zy.common.web.WcsController;
import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -91,6 +92,12 @@
@Autowired
private CheckOrderDetlService checkOrderDetlService;
+ @Autowired
+ private LocCacheServiceImpl locCacheService;
+ @Autowired
+ private TaskService taskService;
+ @Autowired
+ private TaskDetlService taskDetlService;
@Override
@Transactional
@@ -578,6 +585,98 @@
}
@Override
+ @Transactional(rollbackFor = Exception.class)
+ public void agvStockOut(BasStation staNo, TaskDto taskDto, Long userId) {
+ Date now = new Date();
+ List<LocDto> locDtos = taskDto.getLocDtos();
+ for (LocDto locDto : locDtos) {
+ if (!taskDto.getLocNo().equals(locDto.getLocNo()) && !taskDto.getStaNo().equals(locDto.getStaNo())) {
+ throw new CoolException("璁㈠崟鍑哄簱寮傚父锛岃鑱旂郴绠$悊鍛�");
+ }
+ }
+ // 鑾峰彇搴撲綅
+ LocCache locCache = locCacheService.selectOne(new EntityWrapper<LocCache>().eq("loc_no", taskDto.getLocNo()));
+ int ioType = (taskDto.isAll() ? 101 : 103);
+ // 鐢熸垚宸ヤ綔鍙�
+ int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(ioType));
+
+ Task task = new Task();
+ task.setWrkNo(workNo)
+ .setIoTime(new Date())
+ .setWrkSts(11L) // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
+ .setIoType(ioType) // 鍏ュ嚭搴撶姸鎬�
+ .setTaskType("agv")
+ .setIoPri(10D)
+ .setFullPlt("Y") // 婊℃澘锛歒
+ .setPicking("N") // 鎷f枡
+ .setExitMk("N")// 閫�鍑�
+ .setStaNo(staNo.getDevNo())
+ .setSourceLocNo(locCache.getLocNo())
+ .setEmptyMk("N")// 绌烘澘
+ .setBarcode(locCache.getBarcode())// 鎵樼洏鐮�
+ .setLinkMis("N")
+ .setAppeUser(userId)
+ .setAppeTime(new Date())
+ .setModiUser(userId)
+ .setModiTime(new Date());
+ if (!taskService.insert(task)) {
+ throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
+ }
+ // 鐢熸垚宸ヤ綔妗f槑缁�
+ for (LocDto locDto : taskDto.getLocDtos()) {
+ if (locDto.getAnfme() == null || locDto.getAnfme() <= 0.0D) {
+ continue;
+ }
+// OrderDetl orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), locDto.getBatch());
+ OrderDetl orderDetl = OrderInAndOutUtil.selectItem(Boolean.FALSE, locDto.getOrderNo(), locDto.getMatnr(), locDto.getBatch(), locDto.getBrand()
+ , locDto.getStandby1(), locDto.getStandby2(), locDto.getStandby3(), locDto.getBoxType1(), locDto.getBoxType2(), locDto.getBoxType3());
+// if (orderDetl == null) {
+//// orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), null);
+// orderDetl = OrderInAndOutUtil.selectItem(Boolean.FALSE, locDto.getOrderNo(), locDto.getMatnr(), null);
+//
+// }
+
+ TaskDetl wrkDetl = new TaskDetl();
+ BeanUtils.copyProperties(orderDetl, wrkDetl);
+ wrkDetl.setWrkNo(workNo)
+ .setId(null)
+ .setIoTime(new Date())
+ .setOrderNo(locDto.getOrderNo())
+ .setAnfme(locDto.getAnfme())
+ .setZpallet(locCache.getBarcode())
+ .setBatch(locDto.getBatch())
+ .setAppeUser(userId)
+ .setAppeTime(new Date())
+ .setModiUser(userId);
+ if (!taskDetlService.insert(wrkDetl)) {
+ throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
+ }
+// // 淇敼璁㈠崟鏄庣粏
+// if (!orderDetlService.increaseWorkQty(orderDetl.getOrderId(), orderDetl.getMatnr(), orderDetl.getBatch(), locDto.getAnfme())) {
+// throw new CoolException("淇敼璁㈠崟鏄庣粏鏁伴噺澶辫触");
+// }
+// orderService.updateSettle(orderDetl.getOrderId(), 2L, userId);
+ OrderInAndOutUtil.increaseWorkQty(Boolean.FALSE, orderDetl.getOrderId(), orderDetl.getMatnr(), orderDetl.getBatch(),
+ orderDetl.getBrand(), orderDetl.getStandby1(), orderDetl.getStandby2(), orderDetl.getStandby3(),
+ orderDetl.getBoxType1(), orderDetl.getBoxType2(), orderDetl.getBoxType3()
+ , locDto.getAnfme());
+ OrderInAndOutUtil.updateOrder(Boolean.FALSE, orderDetl.getOrderId(), 2L, userId);
+ }
+ // 淇敼搴撲綅鐘舵��: F.鍦ㄥ簱 ====>>> R.鍑哄簱棰勭害/P.鎷f枡/鐩樼偣/骞舵澘鍑哄簱涓�
+
+ if (locCache.getLocSts().equals("F")) {
+ locCache.setLocSts(ioType == 101 ? "R" : "P");
+ locCache.setModiUser(userId);
+ locCache.setModiTime(now);
+ if (!locCacheService.updateById(locCache)) {
+ throw new CoolException("棰勭害搴撲綅鐘舵�佸け璐ワ紝搴撲綅鍙凤細" + taskDto.getLocNo());
+ }
+ } else {
+ throw new CoolException(taskDto.getLocNo() + "搴撲綅涓嶆槸鍦ㄥ簱鐘舵��");
+ }
+ }
+
+ @Override
@Transactional
public String emptyPlateIn(Integer devpNo, Long userId) {
// 婧愮珯鐐圭姸鎬佹娴�
diff --git a/src/main/java/com/zy/common/model/TaskDto.java b/src/main/java/com/zy/common/model/TaskDto.java
index 36a5aa3..a06a373 100644
--- a/src/main/java/com/zy/common/model/TaskDto.java
+++ b/src/main/java/com/zy/common/model/TaskDto.java
@@ -22,6 +22,10 @@
private List<LocDto> locDtos;
+
+
+ private String agvStaNo;
+
{
locDtos = new ArrayList<>();
}
@@ -37,6 +41,12 @@
this.locDtos.add(locDto);
}
+ public TaskDto(String locNo, String staNo, LocDto locDto) {
+ this.locNo = locNo;
+ this.agvStaNo = staNo;
+ this.locDtos.add(locDto);
+ }
+
public TaskDto(String locNo, Integer staNo, List<LocDto> locDtos) {
this.locNo = locNo;
this.staNo = staNo;
diff --git a/src/main/webapp/static/js/orderPakout/agvOut.js b/src/main/webapp/static/js/orderPakout/agvOut.js
index 83f8ef9..9559cd2 100644
--- a/src/main/webapp/static/js/orderPakout/agvOut.js
+++ b/src/main/webapp/static/js/orderPakout/agvOut.js
@@ -283,7 +283,7 @@
// let loadIndex = layer.load(2);
notice.msg('姝e湪鐢熸垚鍑哄簱浠诲姟......', {icon: 4});
$.ajax({
- url: baseUrl + "/out/pakout/auth",
+ url: baseUrl + "/out/agvPakOut/auth",
headers: {'token': localStorage.getItem('token')},
contentType: 'application/json;charset=UTF-8',
data: JSON.stringify(tableCache),
--
Gitblit v1.9.1