From 32286d19d0a0b347c3787f051e95f413566ab4ae Mon Sep 17 00:00:00 2001
From: zjj <3272660260@qq.com>
Date: 星期一, 28 四月 2025 16:45:15 +0800
Subject: [PATCH] #找库位优化
---
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java | 23 +++++++++++
/dev/null | 18 ---------
rsf-admin/src/page/waitPakin/SelectSiteModel.jsx | 38 ++++++++++++-------
rsf-server/src/main/java/com/vincent/rsf/server/manager/utils/LocManageUtil.java | 7 ++-
rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/WcsServiceImpl.java | 23 +++++------
5 files changed, 62 insertions(+), 47 deletions(-)
diff --git a/rsf-admin/src/page/waitPakin/SelectSiteModel.jsx b/rsf-admin/src/page/waitPakin/SelectSiteModel.jsx
index 26ed4ed..3c828af 100644
--- a/rsf-admin/src/page/waitPakin/SelectSiteModel.jsx
+++ b/rsf-admin/src/page/waitPakin/SelectSiteModel.jsx
@@ -19,6 +19,27 @@
},
}));
+const SelectSiteButton = (props) => {
+ const { source, setOpen, refresh, notify } = props;
+ const record = useRecordContext();
+
+ const handleClick = async () => {
+ setOpen(false);
+ const id = record.id;
+ const res = await request.post(`/waitPakin/merge`, {waitPakins: source, siteId: id});
+ if (res?.data?.code === 200) {
+ refresh();
+ notify(res.data.msg);
+ } else {
+ notify(res.data.msg);
+ }
+ };
+
+ return (
+ <Button label="toolbar.selectSite" onClick={handleClick} />
+ );
+};
+
const SelectSiteModel = (props) => {
const { open, setOpen, source } = props;
const translate = useTranslate();
@@ -47,6 +68,7 @@
<DialogContent>
<List
resource='deviceSite'
+ filter={{type : 1}}
sx={{
flexGrow: 1,
transition: (theme) =>
@@ -68,17 +90,7 @@
<StyledDatagrid
preferenceKey='deviceSite'
bulkActionButtons={false}
- rowClick='toggleSelection'
- onToggleItem={async (id)=>{
- setOpen(false);
- const res = await request.post(`/waitPakin/merge`, {waitPakins: source, siteId: id});
- if (res?.data?.code === 200) {
- refresh();
- notify(res.data.msg);
- } else {
- notify(res.data.msg);
- }
- }}
+ rowClick={false}
omit={['id','name', 'createTime','label', 'createBy', 'memo', 'updateBy$', 'createBy$', 'createTime', 'updateTime']}
>
<NumberField source="id" />
@@ -97,9 +109,7 @@
<BooleanField source="statusBool" label="common.field.status" sortable={false} />
<TextField source="memo" label="common.field.memo" sortable={false} />
<WrapperField cellClassName="opt" label="common.field.opt">
- <Button label="toolbar.selectSite" onClick={(event)=>{
- setOpen(false)
- }}/>
+ <SelectSiteButton source={source} setOpen={setOpen} refresh={refresh} notify={notify} />
</WrapperField>
</StyledDatagrid>
</List>
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/enums/LocUseStatusType.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/enums/LocUseStatusType.java
deleted file mode 100644
index dfb4da7..0000000
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/enums/LocUseStatusType.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package com.vincent.rsf.server.api.entity.enums;
-
-public enum LocUseStatusType {
- Empty_Slot("O","绌哄簱浣�"),
- In_Stock("F","鍦ㄥ簱"),
- Empty_Pallet("D","绌烘墭鐩�")
- ;
-
-
-
- LocUseStatusType(String type, String desc) {
- this.type = type;
- this.desc = desc;
- }
-
- public String type;
- public String desc;
-}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/WcsServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/WcsServiceImpl.java
index 8bd62d6..269072b 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/WcsServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/WcsServiceImpl.java
@@ -7,7 +7,6 @@
import com.vincent.rsf.server.api.entity.dto.InTaskMsgDto;
import com.vincent.rsf.server.api.entity.dto.LocTypeDto;
import com.vincent.rsf.server.api.controller.params.TaskInParam;
-import com.vincent.rsf.server.api.entity.enums.LocUseStatusType;
import com.vincent.rsf.server.api.entity.enums.OrderType;
import com.vincent.rsf.server.api.entity.enums.TaskStsType;
import com.vincent.rsf.server.api.entity.enums.TaskType;
@@ -387,7 +386,7 @@
String shallowLocNo = LocUtils.getShallowLoc(slaveProperties, loc1.getCode());
// 妫�娴嬬洰鏍囧簱浣嶆槸鍚︿负绌哄簱浣�
Loc shallowLoc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getCode,shallowLocNo));
- if (shallowLoc != null && shallowLoc.getUseStatus().equals(LocUseStatusType.Empty_Slot.type)) {
+ if (shallowLoc != null && shallowLoc.getUseStatus().equals(LocStsType.LOC_STS_TYPE_O.type)) {
if (LocUtils.locMoveCheckLocTypeComplete(shallowLoc, locTypeDto)) {
loc = shallowLoc;
deviceNo = shallowLoc.getDeviceNo();
@@ -446,7 +445,7 @@
List<Loc> locMasts = null;
locMasts = locService.list(new LambdaQueryWrapper<Loc>()
.eq(Loc::getRow, nearRow)
- .eq(Loc::getUseStatus, LocUseStatusType.Empty_Slot.type)
+ .eq(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_O.type)
.eq(Loc::getType, locTypeDto.getLocType1())
.eq(Loc::getAreaId,area)
.orderByAsc(Loc::getLev)
@@ -461,7 +460,7 @@
//鐩镐技鐗╂枡鎵撳紑锛屽垽鏂繁搴撲綅鏈夋病鏈夎揣锛屾病璐у氨鏀炬繁搴撲綅锛屾湁璐у氨涓嶆搷浣�
Loc locMast2 = locService.getOne(new LambdaQueryWrapper<Loc>()
.eq(Loc::getRow, shallowLoc)
- .eq(Loc::getUseStatus, LocUseStatusType.Empty_Slot.type)
+ .eq(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_O.type)
.eq(Loc::getAreaId,area)
);
if (!Cools.isEmpty(locMast2)) {
@@ -472,7 +471,7 @@
//鐩镐技鐗╂枡鍏抽棴锛屽垽鏂繁搴撲綅鏈夋病鏈夎揣锛屾湁璐у氨鏀炬祬搴撲綅锛屾棤璐у氨涓嶆搷浣�
Loc locMast2 = locService.getOne(new LambdaQueryWrapper<Loc>()
.eq(Loc::getCode, shallowLoc)
- .in(Loc::getUseStatus, LocUseStatusType.Empty_Pallet.type,LocUseStatusType.In_Stock.type)
+ .in(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_D.type,LocStsType.LOC_STS_TYPE_F.type)
.eq(Loc::getAreaId,area)
);
if (!Cools.isEmpty(locMast2)) {
@@ -481,7 +480,7 @@
}else{
locMast2 = locService.getOne(new LambdaQueryWrapper<Loc>()
.eq(Loc::getCode, shallowLoc)
- .eq(Loc::getUseStatus, LocUseStatusType.Empty_Slot.type)
+ .eq(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_O.type)
.eq(Loc::getAreaId,area)
);
if (!Cools.isEmpty(locMast2)) {
@@ -500,7 +499,7 @@
String shallowLoc = LocUtils.getDeepLoc(slaveProperties, locMast1.getCode());
Loc locMast2 = locService.getOne(new LambdaQueryWrapper<Loc>()
.eq(Loc::getCode, shallowLoc)
- .eq(Loc::getUseStatus, LocUseStatusType.Empty_Slot.type)
+ .eq(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_O.type)
.eq(Loc::getAreaId,area)
);
if (!Cools.isEmpty(locMast2)) {
@@ -509,7 +508,7 @@
} else {
locMast2 = locService.getOne(new LambdaQueryWrapper<Loc>()
.eq(Loc::getCode, shallowLoc)
- .in(Loc::getUseStatus, LocUseStatusType.Empty_Pallet.type,LocUseStatusType.In_Stock.type)
+ .in(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_D.type,LocStsType.LOC_STS_TYPE_D.type)
.eq(Loc::getAreaId,area)
);
if (!Cools.isEmpty(locMast2)) {
@@ -528,7 +527,7 @@
}
//鏌ヨ褰撳墠搴撲綅绫诲瀷绌哄簱浣� 灏忎簬5涓垯locmast = null
List<Loc> locTypeLocMasts = locService.list(new LambdaQueryWrapper<Loc>()
- .eq(Loc::getUseStatus, LocUseStatusType.Empty_Slot.type)
+ .eq(Loc::getUseStatus,LocStsType.LOC_STS_TYPE_O.type)
.eq(Loc::getDeviceNo, deviceNo)
.eq(Loc::getType, locTypeDto.getLocType1())
.eq(Loc::getAreaId,area)
@@ -537,7 +536,7 @@
loc = null;
}
// 閫掑綊鏌ヨ
- if (Cools.isEmpty(loc) || !loc.getUseStatus().equals(LocUseStatusType.Empty_Slot.type)) {
+ if (Cools.isEmpty(loc) || !loc.getUseStatus().equals(LocStsType.LOC_STS_TYPE_O.type)) {
// 褰撳墠宸烽亾鏃犵┖搴撲綅鏃讹紝閫掑綊璋冩暣鑷充笅涓�宸烽亾锛屾绱㈠叏閮ㄥ贩閬撴棤鏋滃悗锛岃烦鍑洪�掑綊
if (times < rowCount * 2) {
times = times + 1;
@@ -574,7 +573,7 @@
InTaskMsgDto inTaskMsgDto = new InTaskMsgDto();
List<Loc> loc1 = locService.list(new LambdaQueryWrapper<Loc>()
.eq(Loc::getAreaId, area)
- .eq(Loc::getUseStatus, LocUseStatusType.Empty_Slot.type)
+ .eq(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_O.type)
.eq(Loc::getType, locTypeDto.getLocType1())
.orderByAsc(Loc::getRow)
.orderByAsc(Loc::getCol)
@@ -600,7 +599,7 @@
inTaskMsgDto.setStaNo(Integer.parseInt(deviceSite.getDeviceSite()));
}
// 閫掑綊鏌ヨ
- if (Cools.isEmpty(loc) || !loc.getUseStatus().equals(LocUseStatusType.Empty_Slot.type)) {
+ if (Cools.isEmpty(loc) || !loc.getUseStatus().equals(LocStsType.LOC_STS_TYPE_O.type)) {
// 褰撳墠宸烽亾鏃犵┖搴撲綅鏃讹紝閫掑綊璋冩暣鑷充笅涓�宸烽亾锛屾绱㈠叏閮ㄥ贩閬撴棤鏋滃悗锛岃烦鍑洪�掑綊
if (times < 5) {
times = times + 1;
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java
index 3943f40..479aab1 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java
@@ -2,11 +2,13 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.vincent.rsf.framework.common.Cools;
import com.vincent.rsf.server.api.entity.enums.OrderType;
import com.vincent.rsf.server.api.entity.enums.TaskStsType;
import com.vincent.rsf.framework.common.R;
import com.vincent.rsf.framework.exception.CoolException;
import com.vincent.rsf.server.api.entity.enums.TaskType;
+import com.vincent.rsf.server.api.utils.LocUtils;
import com.vincent.rsf.server.manager.controller.params.GenerateTaskParams;
import com.vincent.rsf.server.manager.entity.*;
import com.vincent.rsf.server.manager.enums.PakinIOStatus;
@@ -62,6 +64,11 @@
@Autowired
private LocItemService locItemService;
+ @Autowired
+ private DeviceBindService deviceBindService;
+ @Autowired
+ private WarehouseAreasService warehouseAreasService;
+
/**
* @param
@@ -82,6 +89,20 @@
if (Objects.isNull(deviceSite)) {
throw new CoolException("绔欑偣涓嶅瓨鍦紒锛�");
}
+ DeviceBind deviceBind = deviceBindService.getById(LocUtils.getAreaType(Integer.valueOf(deviceSite.getSite())));
+ if (Cools.isEmpty(deviceBind)) {
+ throw new CoolException("搴撲綅瑙勫垯鏈煡");
+ }
+ WarehouseAreas warehouseArea = warehouseAreasService.getById(deviceBind.getTypeId());
+ if (Cools.isEmpty(warehouseArea)) {
+ throw new CoolException("鏈壘鍒版墍灞炲簱鍖轰俊鎭�");
+ }
+
+ /**鑾峰彇搴撲綅*/
+ String targetLoc = LocManageUtil.getTargetLoc(warehouseArea.getId());
+ if (Cools.isEmpty(targetLoc)) {
+ throw new CoolException("璇ョ珯鐐瑰搴斿簱鍖烘湭鎵惧埌搴撲綅");
+ }
/**鑾峰彇缁勬嫋*/
List<Long> ids = waitPakin.getWaitPakins().stream().map(WaitPakin::getId).collect(Collectors.toList());
List<WaitPakin> waitPakins = waitPakinService.list(new LambdaQueryWrapper<WaitPakin>()
@@ -100,7 +121,7 @@
task.setTaskCode(ruleCode)
.setTaskStatus(TaskStsType.GENERATE_IN.id.shortValue())
.setTaskType(TaskType.TASK_TYPE_IN.type.shortValue())
- .setTargLoc(LocManageUtil.getTargetLoc())
+ .setTargLoc(targetLoc)
.setBarcode(pakin.getBarcode())
.setTargSite(deviceSite.getDeviceCode())
.setCreateBy(loginUserId)
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/utils/LocManageUtil.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/utils/LocManageUtil.java
index 49a869f..07f3f46 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/utils/LocManageUtil.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/utils/LocManageUtil.java
@@ -21,11 +21,14 @@
* @return
* @time 2025/3/31 08:50
*/
- public static String getTargetLoc() {
+ public static String getTargetLoc(Long areaId) {
//TODO 搴撲綅绛栫暐鍚庣画鎺掓湡
LocService locService = SpringUtils.getBean(LocService.class);
- Loc loc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_O.type), false);
+ Loc loc = locService.getOne(new LambdaQueryWrapper<Loc>()
+ .eq(Loc::getAreaId, areaId)
+ .eq(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_O.type), false
+ );
return !Objects.isNull(loc) ? loc.getCode() : null;
}
--
Gitblit v1.9.1