From 0a3a59432a0ff8d4169ad7484250a0a0d5bed1f9 Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期四, 09 一月 2025 19:50:58 +0800
Subject: [PATCH] # 1. 波次预览重复问题 2. PDA组拖超过3个物料后,组拖按钮被遮挡 3. 平库入库物料ID为空 4. PDA出库成功后,界面数据重置,避免重复操作 5. 入库单历史档,按时间倒序排列
---
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/OrderLogController.java | 3
zy-asrs-admin/src/components/orderOut/orderOutWavePreview/index.vue | 16 +++--
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/manage/OutManage.java | 65 ++++++++++-----------
zy-asrs-wms/src/main/resources/mapper/asrs/ViewLocDetlMapper.xml | 17 ++++-
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/MobileServiceImpl.java | 38 ++++++++++++
5 files changed, 92 insertions(+), 47 deletions(-)
diff --git a/zy-asrs-admin/src/components/orderOut/orderOutWavePreview/index.vue b/zy-asrs-admin/src/components/orderOut/orderOutWavePreview/index.vue
index c40dcfe..5e20cc2 100644
--- a/zy-asrs-admin/src/components/orderOut/orderOutWavePreview/index.vue
+++ b/zy-asrs-admin/src/components/orderOut/orderOutWavePreview/index.vue
@@ -212,8 +212,8 @@
dataTmp.locNo = null;
dataTmp.locDetlId = null;
dataTmp.anfme = item.anfme;
- dataTmp.typeId = val.typeId;
- dataTmp.workQty = val.workQty;
+ dataTmp.typeId = item.typeId;
+ dataTmp.workQty = item.workQty;
dataTmp.key = idx;
dataTmp.operationPort = defaultOperationPort;
@@ -248,8 +248,8 @@
dataTmp.locId = null;
dataTmp.locNo = null;
dataTmp.locDetlId = null;
- dataTmp.typeId = val.typeId;
- dataTmp.workQty = val.workQty;
+ dataTmp.typeId = item.typeId;
+ dataTmp.workQty = item.workQty;
dataTmp.anfme = isused;
dataTmp.key = idx;
dataTmp.operationPort = defaultOperationPort;
@@ -344,10 +344,12 @@
<template #bodyCell="{ column, text, record, index }">
<template v-if="column.dataIndex === 'locNo'">
<div v-if="record.locId != null && record.anfme > 0">
- <!-- <a-tag color="green">{{ record.locNo }}</a-tag> -->
- <a-select v-model:value="record.locId" :options="record.otherLocs"
+<!-- <a-tag color="green">{{ record.locNo }}</a-tag>-->
+ <a-select v-model:value="record.locNo" :options="record.otherLocs"
:fieldNames="{ label: 'locNo', value: 'locId' }"
- @change="handleOtherLocChange(index, record)"></a-select>
+ @change="handleOtherLocChange(index, record)">
+
+ </a-select>
</div>
<div v-else>
<a-tag color="red">搴撳瓨涓嶈冻</a-tag>
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/OrderLogController.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/OrderLogController.java
index 2a9ac23..9c037ec 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/OrderLogController.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/OrderLogController.java
@@ -53,7 +53,6 @@
String condition = map.getOrDefault("condition", "").toString();
BaseParam baseParam = buildParam(map, BaseParam.class);
PageParam<OrderLog, BaseParam> pageParam = new PageParam<>(baseParam, OrderLog.class);
-// QueryWrapper<OrderLog> wrapper = pageParam.buildWrapper(true);
QueryWrapper<OrderLog> wrapper = new QueryWrapper<>();
ArrayList<Long> types = new ArrayList<>();
@@ -81,7 +80,7 @@
}
}
}
-
+ wrapper.orderByDesc("create_time");
return R.ok().add(orderLogService.page(pageParam, wrapper));
}
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/manage/OutManage.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/manage/OutManage.java
index 6a4b7d9..2a97b80 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/manage/OutManage.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/manage/OutManage.java
@@ -3,6 +3,7 @@
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.mysql.cj.util.StringUtils;
import com.zy.asrs.framework.exception.CoolException;
import com.zy.asrs.wms.asrs.entity.dto.*;
import com.zy.asrs.wms.asrs.entity.dto.OrderOutMergeDto;
@@ -24,6 +25,7 @@
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
+import java.util.stream.Stream;
/**
* 鍑哄簱绠$悊
@@ -551,7 +553,7 @@
sortParams.add(sortParam);
List<MergePreviewResultDto> resultDtos = new ArrayList<>();
-
+ //浼樺厛鏌ヨ骞冲簱鏁版嵁
param.forEach(pars -> {
List<MergePreviewResultLocDto> locDtos = new ArrayList<>();
MergePreviewResultDto resultDto = new MergePreviewResultDto();
@@ -600,15 +602,9 @@
resultDtos.add(resultDto);
- } else {
- resultDto.sync(pars);
- resultDto.setLocs(new ArrayList<>());
- resultDto.setOrderIds(pars.getOrderIds());
- resultDto.setAnfme(pars.getAnfme());
- resultDtos.add(resultDto);
}
});
-
+ //骞冲簱鏌ヨ瀹屾垚鍚庯紝鍐嶆煡璇CU
for (MergePreviewDto dto : param) {
Double anfme = dto.getAnfme() - dto.getWorkQty();
//鍑忓幓骞冲簱鏁伴噺鍚庯紝灏忎簬绛変簬0锛岃烦鍑哄鐞�
@@ -647,7 +643,7 @@
locDto.setLocId(locDetl.getLocId());
locDto.setLocNo(locDetl.getLocNo());
locDto.setLocDetlId(locDetl.getId());
-
+ locDto.setTypeId(LocAreaTypeSts.LOC_AREA_TYPE_UTC.id);
locDtos.add(locDto);
if (anfme - locDetl.getAnfme() < 0) {
locDto.setAnfme(anfme);
@@ -671,6 +667,7 @@
MergePreviewResultLocDto locDto = new MergePreviewResultLocDto();
locDto.setLocId(locDetl.getLocId());
locDto.setLocNo(locDetl.getLocNo());
+ locDto.setTypeId(LocAreaTypeSts.LOC_AREA_TYPE_UTC.id);
locDto.setLocDetlId(locDetl.getId());
locDto.setAnfme(locDetl.getAnfme());
otherLocDtos.add(locDto);
@@ -1014,9 +1011,13 @@
//TUC鏁版嵁婧�
List<OrderOutMergeParam> tucOrders = new ArrayList<>();//listMap.get(LocAreaTypeSts.LOC_AREA_TYPE_UTC);
//鎸夊簱浣嶇被鍨嬪垎绫�
- Map<Long, List<OrderOutMergeParam>> listMap = params.stream().collect(Collectors.groupingBy(OrderOutMergeParam::getTypeId));
-
+ //fixme 濡傛灉搴撳瓨涓嶈冻鏃讹紝鐢熸垚浠诲姟妗� 杩囨护鎺夋病鏈夊簱浣嶄俊鎭殑鏁版嵁銆傛壘鍚涙澃纭
+ List<OrderOutMergeParam> mergeParam = params.stream().filter(par -> {
+ return !StringUtils.isNullOrEmpty(par.getLocNo());
+ }).collect(Collectors.toList());
//鏁版嵁鍒嗙被 1.骞冲簱鏁版嵁 2. TUC鏁版嵁
+ Map<Long, List<OrderOutMergeParam>> listMap = mergeParam.stream().collect(Collectors.groupingBy(OrderOutMergeParam::getTypeId));
+
listMap.keySet().forEach(key -> {
if (key == LocAreaTypeSts.LOC_AREA_TYPE_FLAT.id) {
flatOrders.addAll(listMap.get(key));
@@ -1045,9 +1046,7 @@
*/
private void outStockByTUC(List<OrderOutMergeParam> tucOrders, Wave wave) {//123
Map<Long, List<OrderOutMergeDto>> map = checkLoc(tucOrders, wave);
- if (!Objects.isNull(map)) {
- return;
- }
+
for (Map.Entry<Long, List<OrderOutMergeDto>> entry : map.entrySet()) {
Long locId = entry.getKey();
List<OrderOutMergeDto> list = entry.getValue();
@@ -1232,12 +1231,12 @@
throw new CoolException("閫氶亾鍙傛暟涓嶈兘涓虹┖");
}
- for (String channel : channels) {
- long count = cacheSiteService.count(new LambdaQueryWrapper<CacheSite>().eq(CacheSite::getChannel, channel).ne(CacheSite::getSiteStatus, 0));
- if (count > 0) {
- throw new CoolException(channel + "閫氶亾宸茬粡鍒嗛厤娉㈡");
- }
- }
+// for (String channel : channels) {
+// long count = cacheSiteService.count(new LambdaQueryWrapper<CacheSite>().eq(CacheSite::getChannel, channel).ne(CacheSite::getSiteStatus, 0));
+// if (count > 0) {
+// throw new CoolException(channel + "閫氶亾宸茬粡鍒嗛厤娉㈡");
+// }
+// }
List<Long> orderIds = param.getOrderIds();
@@ -1290,19 +1289,19 @@
throw new CoolException("璁㈠崟鍙嶅啓娉㈡澶辫触");
}
- List<CacheSite> cacheSites = cacheSiteService.list(new LambdaQueryWrapper<CacheSite>().eq(CacheSite::getSiteStatus, CacheSiteStatusType.O.id).in(CacheSite::getChannel, channels).orderBy(true, true, CacheSite::getChannel));
- if (cacheSites.isEmpty()) {
- throw new CoolException("缂撳瓨绔欑┖闂翠笉瓒筹紝璇风◢鍚庡啀璇�");
- }
-
- CacheSite cacheSite = cacheSites.get(0);
- cacheSite.setOrderId(order.getId());
- cacheSite.setOrderNo(order.getOrderNo());
- cacheSite.setSiteStatus(CacheSiteStatusType.R.id);
- cacheSite.setUpdateTime(new Date());
- if (!cacheSiteService.updateById(cacheSite)) {
- throw new CoolException("缂撳瓨绔欐洿鏂板け璐�");
- }
+// List<CacheSite> cacheSites = cacheSiteService.list(new LambdaQueryWrapper<CacheSite>().eq(CacheSite::getSiteStatus, CacheSiteStatusType.O.id).in(CacheSite::getChannel, channels).orderBy(true, true, CacheSite::getChannel));
+// if (cacheSites.isEmpty()) {
+// throw new CoolException("缂撳瓨绔欑┖闂翠笉瓒筹紝璇风◢鍚庡啀璇�");
+// }
+//
+// CacheSite cacheSite = cacheSites.get(0);
+// cacheSite.setOrderId(order.getId());
+// cacheSite.setOrderNo(order.getOrderNo());
+// cacheSite.setSiteStatus(CacheSiteStatusType.R.id);
+// cacheSite.setUpdateTime(new Date());
+// if (!cacheSiteService.updateById(cacheSite)) {
+// throw new CoolException("缂撳瓨绔欐洿鏂板け璐�");
+// }
}
for (Map.Entry<String, List<OrderDetl>> entry : map.entrySet()) {
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/MobileServiceImpl.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/MobileServiceImpl.java
index 0c66545..e0194db 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/MobileServiceImpl.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/MobileServiceImpl.java
@@ -39,6 +39,8 @@
@Autowired
private OrderService orderService;
@Autowired
+ private OrderDetlService orderDetlService;
+ @Autowired
private OrderLogService orderLogService;
@Autowired
private LocService locService;
@@ -52,6 +54,12 @@
private PickSheetService pickSheetService;
@Autowired
private PickSheetDetlService pickSheetDetlService;
+ @Autowired
+ private MatService matService;
+ @Autowired
+ private WaveService waveService;
+ @Autowired
+ private WaveDetlService waveDetlService;
@Override
@Transactional(rollbackFor = Exception.class)
@@ -140,12 +148,16 @@
locDetl.setAnfme(pakin.getAnfme());
locDetl.setBatch(pakin.getBatch());
locDetl.setMatId(pakin.getMatnrId$());
- ;
locDetl.setCreateTime(new Date());
locDetl.setOrderNo(pakin.getOrderNo());
locDetl.setLocNo(loc.getLocNo());
locDetl.setLocId(loc.getId());
locDetl.setMatnr(pakin.getMatnr());
+ Mat one = matService.getOne(new LambdaQueryWrapper<Mat>().eq(Mat::getMatnr, pakin.getMatnr()));
+ if (!Objects.isNull(one)) {
+ throw new CoolException("褰撳墠鐗╂枡涓嶅瓨鍦紒锛�");
+ }
+ locDetl.setMatId(one.getId());
locDetl.setMemo(pakin.getMemo());
locDetl.setUpdateTime(new Date());
if (!locDetlService.saveOrUpdate(locDetl)) {
@@ -167,6 +179,7 @@
if (!waitPakinService.removeBatchByIds(waitPakins)) {
throw new CoolException("缁勬嫋妗e垹闄ゅけ璐ワ紒锛�");
}
+
//閫氳繃缁勬嫋璁㈠崟ID鑾峰彇璁㈠崟锛屽苟鍒犻櫎鍘熷崟鎹紝鍔犲叆鍗曟嵁鍘嗗彶妗�
List<Long> list = waitPakins.stream().map(WaitPakin::getOrderId).collect(Collectors.toList());
List<Order> orders = orderService.list(new LambdaQueryWrapper<Order>().in(Order::getId, list));
@@ -210,6 +223,9 @@
@Transactional(rollbackFor = Exception.class)
public boolean confirmFlatSheet(String code) {
PickSheet pickSheet = pickSheetService.getOne(new LambdaQueryWrapper<PickSheet>().eq(PickSheet::getPickNo, code));
+ if (Objects.isNull(pickSheet)) {
+ throw new CoolException("鎷h揣鍗曚笉瀛樺湪锛侊紒");
+ }
if (pickSheet.getStatus() == 1) {
//鐘舵�佷慨鏀逛负锛� 宸茶浆鍘嗗彶妗�
pickSheet.setStatus(3);
@@ -262,6 +278,26 @@
}
}
});
+
+ //鍒犻櫎娉㈡鍙婂搴旀槑缁嗕俊鎭�
+ if (!waveService.remove(new LambdaQueryWrapper<Wave>().eq(Wave::getId, pickSheet.getWaveId()))) {
+ throw new CoolException("娉㈡鍒楄〃鍗曟嵁鍒犻櫎澶辫触锛侊紒");
+ }
+
+ if (!waveDetlService.remove(new LambdaQueryWrapper<WaveDetl>().eq(WaveDetl::getWaveId, pickSheet.getWaveId()))) {
+ throw new CoolException("娉㈡鏄庣粏鍒楄〃鍒犻櫎澶辫触锛侊紒");
+ }
+
+ List<Order> orders = orderService.list(new LambdaQueryWrapper<Order>().eq(Order::getWaveId, pickSheet.getWaveId()));
+ List<Long> list = orders.stream().map(Order::getId).collect(Collectors.toList());
+ boolean remove = orderDetlService.remove(new LambdaQueryWrapper<OrderDetl>().in(OrderDetl::getOrderId, list));
+ if (!remove) {
+ throw new CoolException("鍘熷璁㈠崟鏄庣粏鍒犻櫎澶辫触锛侊紒");
+ }
+ if (orderService.remove(new LambdaQueryWrapper<Order>().in(Order::getId, list))) {
+ throw new CoolException("鍘熷璁㈠崟鍒犻櫎澶辫触锛侊紒");
+ }
+
return true;
}
diff --git a/zy-asrs-wms/src/main/resources/mapper/asrs/ViewLocDetlMapper.xml b/zy-asrs-wms/src/main/resources/mapper/asrs/ViewLocDetlMapper.xml
index 149b56b..d9f8a0c 100644
--- a/zy-asrs-wms/src/main/resources/mapper/asrs/ViewLocDetlMapper.xml
+++ b/zy-asrs-wms/src/main/resources/mapper/asrs/ViewLocDetlMapper.xml
@@ -3,10 +3,19 @@
<mapper namespace="com.zy.asrs.wms.asrs.mapper.ViewLocDetlMapper">
<select id="queryStock" resultType="map">
- select * from view_man_loc_detl ld
- where matnr = #{matnr}
- and freeze = 0
- and batch = #{batch}
+ SELECT * FROM
+ (
+ SELECT id, loc_id, loc_no, mat_id, IFNULL(type_id, 4) AS type_id, work_qty, matnr, order_no, batch, anfme, host_id, memo,deleted, freeze
+ FROM
+ view_man_loc_detl
+ ) t
+ WHERE t.deleted = 0 AND t.freeze = 0
+ <if test="matnr != null and matnr != ''">
+ AND t.matnr = #{matnr}
+ </if>
+ <if test="batch != null and batch != ''">
+ AND t.batch = #{batch}
+ </if>
<if test="param!=null and param.size()>0">
<foreach item="item" collection="param" index="index">
<if test="item.value!=null and item.value != ''">
--
Gitblit v1.9.1