From c48e3aabf2947e45a9db2eac3ef91190e8647655 Mon Sep 17 00:00:00 2001
From: skyouc <958836976@qq.com>
Date: 星期二, 02 九月 2025 17:03:34 +0800
Subject: [PATCH] agv站点功能调整
---
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocItemServiceImpl.java | 2
rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskSchedules.java | 67 ++++----
rsf-admin/src/page/basicInfo/deviceSite/DeviceSiteList.jsx | 4
rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/RcsTaskType.java | 2
rsf-open-api/src/main/resources/application-dev.yml | 4
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/DeviceSiteServiceImpl.java | 4
rsf-open-api/src/main/java/com/vincent/rsf/openApi/service/impl/WmsRcsServiceImpl.java | 5
rsf-server/src/main/java/com/vincent/rsf/server/api/entity/dto/InTaskMsgDto.java | 2
rsf-server/src/main/java/com/vincent/rsf/server/manager/constant/StaGroupConstant.java | 60 +++---
rsf-server/src/main/java/com/vincent/rsf/server/api/utils/LocUtils.java | 2
rsf-open-api/src/main/java/com/vincent/rsf/openApi/controller/WmsRcsController.java | 2
rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/AutoRunSchedules.java | 212 ++++++++++++++++++--------
rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/WcsServiceImpl.java | 19 +
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/DeviceSite.java | 30 +-
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java | 3
rsf-server/src/main/resources/application.yml | 1
rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/LocStsType.java | 2
rsf-server/src/main/resources/application-dev.yml | 8
18 files changed, 260 insertions(+), 169 deletions(-)
diff --git a/rsf-admin/src/page/basicInfo/deviceSite/DeviceSiteList.jsx b/rsf-admin/src/page/basicInfo/deviceSite/DeviceSiteList.jsx
index 3ba3c50..3a7cdf1 100644
--- a/rsf-admin/src/page/basicInfo/deviceSite/DeviceSiteList.jsx
+++ b/rsf-admin/src/page/basicInfo/deviceSite/DeviceSiteList.jsx
@@ -150,14 +150,14 @@
omit={['id', 'createTime', 'createBy', 'memo', 'label','name','target','statusBool','updateBy']}
>
<NumberField source="id" />
- <TextField source="site$" label="table.field.deviceSite.site" />
+ <TextField source="site" label="table.field.deviceSite.site" />
<TextField source="name" label="table.field.deviceSite.name" />
<NumberField source="type$" label="table.field.deviceSite.type" />
<TextField source="target" label="table.field.deviceSite.target" />
<TextField source="label" label="table.field.deviceSite.label" />
<TextField source="device$" label="table.field.deviceSite.device" />
<TextField source="channel" label="table.field.deviceSite.channel" />
- <TextField source="deviceSite$" label="table.field.deviceSite.deviceSite" />
+ <TextField source="deviceSite" label="table.field.deviceSite.deviceSite" />
<ReferenceField source="updateBy" label="common.field.updateBy" reference="user" link={false} sortable={false}>
<TextField source="nickname" />
</ReferenceField>
diff --git a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/controller/WmsRcsController.java b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/controller/WmsRcsController.java
index 379b594..4167a0f 100644
--- a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/controller/WmsRcsController.java
+++ b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/controller/WmsRcsController.java
@@ -58,7 +58,7 @@
* @description: 浠诲姟鍥炶皟锛岀姸鎬佸洖鍐�
* @version 1.0
*/
- @ApiOperation("寮傚父浠诲姟鍥炶皟")
+ @ApiOperation("鐘舵�佷笂鎶ュ洖璋�")
@PostMapping("/callback/event")
public R callBackEvent(@RequestBody ExMsgCallbackParams params) {
return wmsRcsService.callBackEvent(params);
diff --git a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/service/impl/WmsRcsServiceImpl.java b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/service/impl/WmsRcsServiceImpl.java
index b630ed3..6adacd8 100644
--- a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/service/impl/WmsRcsServiceImpl.java
+++ b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/service/impl/WmsRcsServiceImpl.java
@@ -115,7 +115,7 @@
ResponseEntity<String> exchange = restTemplate.exchange(callUrl, HttpMethod.POST, httpEntity, String.class);
log.info("浠诲姟鎵ц鐘舵�佷笂鎶ワ紝鍝嶅簲缁撴灉锛� {}", exchange);
if (Objects.isNull(exchange.getBody())) {
- throw new CoolException("浠诲姟鎵ц鐘舵�佷笂鎶ュけ璐ワ紒锛�");
+ return R.error();
} else {
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.coercionConfigDefaults()
@@ -125,7 +125,8 @@
if (result.getCode() == 200) {
return R.ok();
} else {
- throw new CoolException("浠诲姟鎵ц鐘舵�佷笂鎶ュけ璐ワ紒锛�");
+ return R.error(result.getMsg());
+// throw new CoolException("浠诲姟鎵ц鐘舵�佷笂鎶ュけ璐ワ紒锛�");
}
} catch (JsonProcessingException e) {
throw new CoolException(e.getMessage());
diff --git a/rsf-open-api/src/main/resources/application-dev.yml b/rsf-open-api/src/main/resources/application-dev.yml
index c11aeb2..ef16461 100644
--- a/rsf-open-api/src/main/resources/application-dev.yml
+++ b/rsf-open-api/src/main/resources/application-dev.yml
@@ -58,11 +58,11 @@
#RCS閾炬帴
rcs:
#閾炬帴
- host: http://10.10.10.247
+ host: http://10.10.10.200
#绔彛
port: 8088
wms:
#閾炬帴
- host: http://127.0.0.1
+ host: http://10.10.10.157
#绔彛
port: 8080
\ No newline at end of file
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/dto/InTaskMsgDto.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/dto/InTaskMsgDto.java
index f4e01c9..6399d72 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/dto/InTaskMsgDto.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/dto/InTaskMsgDto.java
@@ -6,7 +6,7 @@
public class InTaskMsgDto {
private String sourceStaNo;
- private Integer staNo;
+ private String staNo;
private Integer deviceNo;
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 f765964..8af462a 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
@@ -45,6 +45,7 @@
import java.util.List;
import java.util.Objects;
+import java.util.Random;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
@@ -422,8 +423,13 @@
if (dtos.isEmpty()) {
scheduled.shutdown();
}
- dtos.forEach(dto -> {
+ for (SyncLocsDto dto : dtos) {
Loc loc = new Loc();
+ String string = new Random().nextInt(10000000) + "";
+ Loc one = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getCode, string));
+ if (!Objects.isNull(one)) {
+ string = new Random().nextInt(10000000) + "";
+ }
loc.setCode(dto.getLocNo())
.setBarcode(dto.getBarcode())
.setRow(dto.getRow())
@@ -431,6 +437,7 @@
.setId(null)
.setAreaId(41L)
.setWarehouseId(27L)
+ .setBarcode(string)
.setCol(dto.getBay())
.setType(dto.getLocType())
.setStatus(dto.getStatusBool())
@@ -439,7 +446,7 @@
scheduled.shutdown();
throw new CoolException("WCS搴撲綅鍚屾澶辫触锛侊紒");
}
- });
+ }
current++;
}
}, 1, 1, TimeUnit.SECONDS);
@@ -460,7 +467,7 @@
if (Objects.isNull(task)) {
throw new CoolException("浠诲姟涓嶅瓨鍦紒锛�");
}
-
+
if (params.getEventType().equals("END")) {
if (task.getTaskType().equals(TaskType.TASK_TYPE_IN.type)
|| task.getTaskType().equals(TaskType.TASK_TYPE_PICK_IN.type)
@@ -641,7 +648,7 @@
if (Cools.isEmpty(deviceSite)) {
channel = 0;
} else {
- inTaskMsgDto.setStaNo(Integer.parseInt(deviceSite.getDeviceSite()));
+ inTaskMsgDto.setStaNo(deviceSite.getDeviceSite());
}
//鏇存柊褰撳墠鎺�
@@ -834,13 +841,13 @@
DeviceSite deviceSite = deviceSiteService.getOne(new LambdaQueryWrapper<DeviceSite>()
.eq(DeviceSite::getType, ioType)
.eq(DeviceSite::getSite, sourceStaNo)
- .eq(DeviceSite::getDeviceCode, loc.getDeviceNo())
+ .eq(!Objects.isNull(loc.getDeviceNo()), DeviceSite::getDeviceCode, loc.getDeviceNo())
);
if (Cools.isEmpty(deviceSite)) {
deviceNo = 0;
loc = null;
} else {
- inTaskMsgDto.setStaNo(Integer.parseInt(deviceSite.getDeviceSite()));
+ inTaskMsgDto.setStaNo(deviceSite.getDeviceSite());
}
// 閫掑綊鏌ヨ
if (Cools.isEmpty(loc) || !loc.getUseStatus().equals(LocStsType.LOC_STS_TYPE_O.type)) {
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/utils/LocUtils.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/utils/LocUtils.java
index 2cfc21a..9a56570 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/utils/LocUtils.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/utils/LocUtils.java
@@ -338,7 +338,7 @@
if (Cools.isEmpty(deviceSite)) {
channel = 0;
} else {
- inTaskMsgDto.setStaNo(Integer.parseInt(deviceSite.getDeviceSite()));
+ inTaskMsgDto.setStaNo(deviceSite.getDeviceSite());
}
//鏇存柊褰撳墠鎺�
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/constant/StaGroupConstant.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/constant/StaGroupConstant.java
index a3bb269..8644a31 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/constant/StaGroupConstant.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/constant/StaGroupConstant.java
@@ -5,50 +5,50 @@
public class StaGroupConstant {
public static final ArrayList<String> FAR_LEFT_STA_ROW_LIST = new ArrayList<String>(){{
- add("9-1");
- add("9-2");
- add("9-3");
- add("10-1");
- add("10-2");
- add("10-3");
+ add("109-1");
+ add("109-2");
+ add("109-3");
+ add("110-1");
+ add("110-2");
+ add("110-3");
add("1001");
add("1007");
}};
public static final ArrayList<String> LEFT_STA_ROW_LIST = new ArrayList<String>(){{
- add("7-1");
- add("7-2");
- add("7-3");
- add("8-1");
- add("8-2");
- add("8-3");
+ add("107-1");
+ add("107-2");
+ add("107-3");
+ add("108-1");
+ add("108-2");
+ add("108-3");
}};
public static final ArrayList<String> MIDDLE_STA_ROW_LIST = new ArrayList<String>(){{
- add("5-1");
- add("5-2");
- add("5-3");
- add("6-1");
- add("6-2");
- add("6-3");
+ add("105-1");
+ add("105-2");
+ add("105-3");
+ add("106-1");
+ add("106-2");
+ add("106-3");
}};
public static final ArrayList<String> RIGHT_STA_ROW_LIST = new ArrayList<String>(){{
- add("3-1");
- add("3-2");
- add("3-3");
- add("4-1");
- add("4-2");
- add("4-3");
+ add("103-1");
+ add("103-2");
+ add("103-3");
+ add("104-1");
+ add("104-2");
+ add("104-3");
}};
public static final ArrayList<String> FAR_RIGHT_STA_ROW_LIST = new ArrayList<String>(){{
- add("1-1");
- add("1-2");
- add("1-3");
- add("2-1");
- add("2-2");
- add("2-3");
+ add("101-1");
+ add("101-2");
+ add("101-3");
+ add("101-1");
+ add("101-2");
+ add("101-3");
}};
}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/DeviceSite.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/DeviceSite.java
index 242362e..b11a951 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/DeviceSite.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/DeviceSite.java
@@ -197,21 +197,21 @@
// );
- public String getSite$() {
- if (this.site == null) {return null;}
- BasStationService service = SpringUtils.getBean(BasStationService.class);
- BasStation station = service.getOne(new LambdaQueryWrapper<BasStation>().eq(BasStation::getStationName, this.site));
- if (Objects.isNull(station)) {return null;}
- return station.getStationName();
- }
-
- public String getDeviceSite$() {
- if (this.deviceSite == null) {return null;}
- BasStationService service = SpringUtils.getBean(BasStationService.class);
- BasStation station = service.getById(this.deviceSite);
- if (Objects.isNull(station)) {return null;}
- return station.getStationName();
- }
+// public String getSite$() {
+// if (this.site == null) {return null;}
+// BasStationService service = SpringUtils.getBean(BasStationService.class);
+// BasStation station = service.getOne(new LambdaQueryWrapper<BasStation>().eq(BasStation::getStationName, this.site));
+// if (Objects.isNull(station)) {return null;}
+// return station.getStationName();
+// }
+//
+// public String getDeviceSite$() {
+// if (this.deviceSite == null) {return null;}
+// BasStationService service = SpringUtils.getBean(BasStationService.class);
+// BasStation station = service.getById(this.deviceSite);
+// if (Objects.isNull(station)) {return null;}
+// return station.getStationName();
+// }
public String getType$(){
if (null == this.type){ return null; }
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/LocStsType.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/LocStsType.java
index 0047168..59e397d 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/LocStsType.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/LocStsType.java
@@ -43,7 +43,7 @@
*/
public static String getLocSts(String val) {
if (val.equals(RcsLocStsType.LOC_STS_TYPE_D.type)) {
- return LocStsType.LOC_STS_TYPE_D.type;
+ return LocStsType.LOC_STS_TYPE_O.type;
} else if (val.equals(RcsLocStsType.LOC_STS_TYPE_F.type)) {
return LocStsType.LOC_STS_TYPE_F.type;
} else if (val.equals(RcsLocStsType.LOC_STS_TYPE_S.type)) {
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/RcsTaskType.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/RcsTaskType.java
index cebe02f..4510bf0 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/RcsTaskType.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/RcsTaskType.java
@@ -6,7 +6,7 @@
//浠诲姟绫诲瀷
RCS_TASK_TYPE_ENUM_TRANSFER("LOC_TO_LOC", "绉诲簱"),
RCS_TASK_TYPE_ENUM_OUT("LOC_TO_STA", "鍑哄簱"),
- RCS_TASK_TYPE_ENUM_IN("LOC_TO_LOC", "鍏ュ簱"),
+ RCS_TASK_TYPE_ENUM_IN("STA_TO_LOC", "鍏ュ簱"),
RCS_TASK_TYPE_ENUM_STA("STA_TO_STA", "绔欑偣闂存惉杩�"),
;
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/AutoRunSchedules.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/AutoRunSchedules.java
index e1459e4..01fdedd 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/AutoRunSchedules.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/AutoRunSchedules.java
@@ -12,7 +12,7 @@
import com.vincent.rsf.server.manager.entity.*;
import com.vincent.rsf.server.manager.enums.*;
import com.vincent.rsf.server.manager.service.*;
-import com.vincent.rsf.server.manager.service.impl.DeviceSiteServiceImpl;
+import com.vincent.rsf.server.manager.service.impl.BasStationServiceImpl;
import com.vincent.rsf.server.system.constant.SerialRuleCode;
import com.vincent.rsf.server.system.service.ConfigService;
import com.vincent.rsf.server.system.utils.SerialRuleUtils;
@@ -52,43 +52,47 @@
@Autowired
private DeviceSiteService deviceSiteService;
- /**
- * @author Ryan
- * @date 2025/9/1
- * @description: 鑷姩鐢熸垚鐩樼偣璺戝簱鍗�
- * @version 1.0
- */
- public void autoCheckOrders() {
- Boolean autoRunArea = configService.getVal("AUTO_RUN_CHECK_ORDERS", Boolean.class);
- if (!autoRunArea) {
- return;
- }
- //鑾峰彇浠诲姟鍒楄〃涓紝涓虹洏鐐瑰嚭搴撶殑浠诲姟
- List<Task> tasks = taskService.list(new LambdaQueryWrapper<Task>()
- .in(Task::getTaskType, Arrays.asList(TaskType.TASK_TYPE_CHECK_OUT.type, TaskType.TASK_TYPE_CHECK_IN.type)));
- if (tasks.size() >= 10) {
- return;
- }
- List<Loc> locs = locService.list(new LambdaQueryWrapper<Loc>().eq(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_F.type).last("limit 1"));
- locs.forEach(loc -> {
- List<LocItem> locItems = locItemService.list(new LambdaQueryWrapper<LocItem>().eq(LocItem::getLocId, loc.getId()));
- if (!locItems.isEmpty()) {
- DeviceSite deviceSite = deviceSiteService.getOne(new LambdaQueryWrapper<DeviceSite>().eq(DeviceSite::getType, TaskType.TASK_TYPE_CHECK_OUT.type), false);
- //鐢熸垚鐩樼偣浠诲姟鍙傛暟
- LocToTaskParams locToTaskParams = new LocToTaskParams();
- locToTaskParams.setType(Constants.TASK_TYPE_OUT_CHECK)
- .setItems(locItems)
- .setSiteNo(deviceSite.getSite())
- .setOrgLoc(loc.getCode());
- try {
- locItemService.generateTask(TaskResouceType.TASK_RESOUCE_CHECK_TYPE.val, locToTaskParams, getLoginUserId());
- } catch (Exception e) {
- throw new CoolException(e.getMessage());
- }
+ /**
+ * 鑷姩鐢熸垚搴撲綅鏄庣粏
+ */
+ @Transactional(rollbackFor = Exception.class)
+// @Scheduled(cron = "0/25 * * * * ?")
+ public void insertRandomMats() {
+ List<Loc> list = locService.list(new LambdaQueryWrapper<Loc>().eq(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_F.type));
+ for (Loc loc : list) {
+ List<LocItem> items = locItemService.list(new LambdaQueryWrapper<LocItem>().eq(LocItem::getLocId, loc.getId()));
+ if (!items.isEmpty()) {
+ continue;
}
- });
+ List<Matnr> matnrs = matnrService.list(new LambdaQueryWrapper<Matnr>().orderByAsc(Matnr::getBarcode).last("limit 100"));
+ Collections.shuffle(matnrs);
+ Matnr matnr = matnrs.stream().findFirst().get();
+ LocItem locItem = new LocItem();
+ BeanUtils.copyProperties(matnr, locItem);
+ locItem.setBarcode(loc.getBarcode())
+ .setLocId(loc.getId())
+ .setMatnrCode(matnr.getCode())
+ .setMaktx(matnr.getName())
+ .setMatnrId(matnr.getId())
+ .setId(null)
+ .setAnfme(45.0)
+ .setLocCode(loc.getCode());
+ locItemService.save(locItem);
+ }
}
+
+// /**
+// * @author Ryan
+// * @date 2025/9/1
+// * @description: 鑷姩鐢熸垚鐩樼偣璺戝簱鍗�
+// * @version 1.0
+// */
+// @Scheduled(cron = "0/25 * * * * ?")
+// public void autoCheckOrders() {
+//
+//
+// }
/**
* @author Ryan
@@ -96,6 +100,7 @@
* @description: 鑷姩瀹屾垚鐩樼偣鍔熻兘
* @version 1.0
*/
+ @Scheduled(cron = "0/35 * * * * ?")
public void autoCheckComplete() {
Boolean autoRunArea = configService.getVal("AUTO_RUN_CHECK_ORDERS", Boolean.class);
if (!autoRunArea) {
@@ -111,23 +116,37 @@
if (!tasks.isEmpty()) {
tasks.forEach(task -> {
if (task.getTaskType().equals(TaskType.TASK_TYPE_CHECK_IN.type)) {
- if (task.getTaskStatus().equals(TaskStsType.GENERATE_IN.id)) {
- task.setTaskStatus(TaskStsType.COMPLETE_IN.id);
- if (!taskService.updateById(task)) {
- throw new CoolException("鐩樼偣鍐嶅叆搴撲换鍔″畬鎴愬け璐ワ紒锛�");
+ if (task.getTaskStatus().equals(TaskStsType.COMPLETE_IN.id)) {
+ if (!stationService.update(new LambdaUpdateWrapper<BasStation>()
+ .eq(BasStation::getStationName, task.getOrgSite())
+ .set(BasStation::getUseStatus, LocStsType.LOC_STS_TYPE_O.type))) {
+ throw new CoolException("绔欑偣鐘舵�佷慨鏀瑰け璐ワ紒锛�");
}
}
} else {
//鍒涘缓鍑哄簱浠诲姟鐘舵��
- if (task.getTaskStatus().equals(TaskStsType.GENERATE_OUT.id)) {
- task.setTaskStatus(TaskStsType.COMPLETE_OUT.id);
- if (!taskService.updateById(task)) {
- throw new CoolException("鐩樼偣鍑哄簱浠诲姟瀹屾垚澶辫触锛侊紒");
+// if (task.getTaskStatus().equals(TaskStsType.WCS_EXECUTE_OUT.id)) {
+// task.setTaskStatus(TaskStsType.COMPLETE_OUT.id);
+// if (!taskService.updateById(task)) {
+// throw new CoolException("鐩樼偣鍑哄簱浠诲姟瀹屾垚澶辫触锛侊紒");
+// }
+// //鍑哄簱宸插畬鎴愶紝绛夊緟鐩樼偣涓�
+// } else
+
+ if (task.getTaskStatus().equals(TaskStsType.WAVE_SEED.id)) {
+ if (!stationService.update(new LambdaUpdateWrapper<BasStation>()
+ .eq(BasStation::getStationName, task.getOrgSite())
+ .set(BasStation::getUseStatus, LocStsType.LOC_STS_TYPE_F.type))) {
+ throw new CoolException("绔欑偣鐘舵�佷慨鏀瑰け璐ワ紒锛�");
}
- //鍑哄簱宸插畬鎴愶紝绛夊緟鐩樼偣涓�
- } else if (task.getTaskStatus().equals(TaskStsType.WAVE_SEED.id)) {
try {
taskService.pickOrCheckTask(task.getId(), Constants.TASK_TYPE_OUT_CHECK);
+
+ if (!stationService.update(new LambdaUpdateWrapper<BasStation>()
+ .eq(BasStation::getStationName, task.getOrgSite())
+ .set(BasStation::getUseStatus, LocStsType.LOC_STS_TYPE_R.type))) {
+ throw new CoolException("绔欑偣鐘舵�佷慨鏀瑰け璐ワ紒锛�");
+ }
} catch (Exception e) {
throw new CoolException(e.getMessage());
}
@@ -138,7 +157,24 @@
}
+ /**
+ * @author Ryan
+ * @date 2025/9/1
+ * @description: 鑷姩瀹屾垚鐩樼偣鍔熻兘
+ * @version 1.0
+ */
+ @Scheduled(cron = "0/25 * * * * ?")
public void genRun() {
+ Boolean flagAuto = configService.getVal("AUTO_RUN_CHECK_ORDERS", Boolean.class);
+ if (!flagAuto) {
+ return;
+ }
+ //鑾峰彇浠诲姟鍒楄〃涓紝涓虹洏鐐瑰嚭搴撶殑浠诲姟
+ List<Task> tasks = taskService.list(new LambdaQueryWrapper<Task>()
+ .in(Task::getTaskType, Arrays.asList(TaskType.TASK_TYPE_CHECK_OUT.type, TaskType.TASK_TYPE_CHECK_IN.type)));
+ if (tasks.size() >= 6) {
+ return;
+ }
String autoRunArea = configService.getVal("AUTO_RUN_AREA", String.class);
if (Cools.isEmpty(autoRunArea)) {
return;
@@ -169,38 +205,79 @@
private void autoRun(List<Integer> locGroupList, List<String> staGroupList) {
List<String> staPreNos = getStaPrefixes(staGroupList);
String staTaskMemo = "DEMO_STA_" + String.join("-", staPreNos);
- log.error("=========>");
- log.info(staTaskMemo);
- System.out.println(staTaskMemo);
-
List<Task> list = taskService.list(new LambdaQueryWrapper<Task>().eq(Task::getMemo, staTaskMemo));
- if (!Cools.isEmpty(list) && list.size() > 30) {
+ if (!Cools.isEmpty(list) && list.size() >= 1) {
return;
}
- // 鍏ュ簱 搴旇鏍规嵁宸ヤ綔妗e洖鍘�
- this.runStaToLoc(locGroupList, staGroupList, staTaskMemo);
- // 鍑哄簱,闇�瑕佹牎楠屽伐浣滄。鏄惁瀛樺湪锛屽瓨鍦ㄥ氨璇存槑绔欑偣澶勪簬蹇欑鐘舵��
- this.runLocToSta(locGroupList, staGroupList, staTaskMemo);
- // 绉诲簱
- this.runLocToLoc(locGroupList, staTaskMemo);
+ List<Loc> locs = getAreaLocs(locGroupList, staGroupList, staTaskMemo);
+
+ for (Loc loc : locs) {
+ List<LocItem> locItems = locItemService.list(new LambdaQueryWrapper<LocItem>().eq(LocItem::getLocId, loc.getId()));
+ if (!locItems.isEmpty()) {
+ locItems.forEach(locItem -> {
+ locItem.setOutQty(locItem.getAnfme());
+ });
+ List<BasStation> stations = stationService.list(new LambdaQueryWrapper<BasStation>().eq(BasStation::getUseStatus, LocStsType.LOC_STS_TYPE_O.type));
+ if (Cools.isEmpty(stations)) {
+ throw new CoolException("鏃犲彲鐢ㄧ珯鐐癸紒锛�");
+ }
+ DeviceSite deviceSite = deviceSiteService.getOne(new LambdaQueryWrapper<DeviceSite>()
+ .in(DeviceSite::getSite, stations)
+ .eq(DeviceSite::getType, TaskType.TASK_TYPE_CHECK_OUT.type), false);
+ if (Cools.isEmpty(deviceSite)) {
+ throw new CoolException("鏃犲彲鐢ㄨ矾寰勶紒锛�");
+ }
+ //鐢熸垚鐩樼偣浠诲姟鍙傛暟
+ LocToTaskParams locToTaskParams = new LocToTaskParams();
+ locToTaskParams.setType(Constants.TASK_TYPE_OUT_CHECK)
+ .setItems(locItems)
+ .setSiteNo(deviceSite.getSite())
+ .setOrgLoc(loc.getCode());
+
+ List<Task> tasks = taskService.list(new LambdaQueryWrapper<Task>().eq(Task::getTargSite, deviceSite.getSite()));
+ if (!tasks.isEmpty()) {
+ continue;
+ }
+ try {
+ //鐢熸垚鐩樼偣鍑哄簱浠诲姟锛岀珯鐐归绾�
+ if (!stationService.update(new LambdaUpdateWrapper<BasStation>()
+ .eq(BasStation::getStationName, deviceSite.getSite())
+ .set(BasStation::getUseStatus, LocStsType.LOC_STS_TYPE_S.type))) {
+ throw new CoolException("绔欑偣鐘舵�佹洿鏂板け璐ワ紒锛�");
+ }
+ locItemService.generateTask(TaskResouceType.TASK_RESOUCE_CHECK_TYPE.val, locToTaskParams, getLoginUserId());
+ } catch (Exception e) {
+ throw new CoolException(e.getMessage());
+ }
+ }
+ }
+
+
+ // 鍏ュ簱 搴旇鏍规嵁宸ヤ綔妗e洖鍘�
+// this.runStaToLoc(locGroupList, staGroupList, staTaskMemo);
+
+// // 鍑哄簱,闇�瑕佹牎楠屽伐浣滄。鏄惁瀛樺湪锛屽瓨鍦ㄥ氨璇存槑绔欑偣澶勪簬蹇欑鐘舵��
+// this.runLocToSta(locGroupList, staGroupList, staTaskMemo);
+// // 绉诲簱
+// this.runLocToLoc(locGroupList, staTaskMemo);
}
- // 鍏ュ簱
- private void runStaToLoc(List<Integer> locGroupList, List<String> staGroupList, String memo) {
+
+ private List<Loc> getAreaLocs(List<Integer> locGroupList, List<String> staGroupList, String memo) {
Integer startRow = Collections.min(locGroupList);
Integer endRow = Collections.max(locGroupList);
// STA IDLE
- LambdaQueryWrapper<BasStation> idleWrapper = new LambdaQueryWrapper<BasStation>().eq(BasStation::getUseStatus, LocStsType.LOC_STS_TYPE_F.type).in(BasStation::getStationName, staGroupList);
- List<BasStation> idleList = stationService.list(idleWrapper);
- if (Cools.isEmpty(idleList)) {
- return;
- }
- Collections.shuffle(idleList);
+// LambdaQueryWrapper<BasStation> idleWrapper = new LambdaQueryWrapper<BasStation>().eq(BasStation::getUseStatus, LocStsType.LOC_STS_TYPE_O.type).in(BasStation::getStationName, staGroupList);
+// List<BasStation> idleList = stationService.list(idleWrapper);
+// if (Cools.isEmpty(idleList)) {
+// return new ArrayList<>();
+// }
+// Collections.shuffle(idleList);
// LOC STOCK
- LambdaQueryWrapper<Loc> stockWrapper = new LambdaQueryWrapper<Loc>().eq(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_O.type);
+ LambdaQueryWrapper<Loc> stockWrapper = new LambdaQueryWrapper<Loc>().eq(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_F.type);
if (null != startRow) {
stockWrapper.ge(Loc::getRow, startRow);
}
@@ -209,12 +286,13 @@
}
List<Loc> stockList = locService.list(stockWrapper);
if (Cools.isEmpty(stockList)) {
- return;
+ return new ArrayList<>();
}
Collections.shuffle(stockList);
+ return stockList;
//鐢熸垚鍏ュ簱宸ヤ綔妗�
- generateTask(idleList.get(0).getStationName(), stockList.get(0).getCode(), idleList.get(0).getBarcode());
+// generateTask(idleList.get(0).getStationName(), stockList.get(0).getCode(), idleList.get(0).getBarcode());
}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskSchedules.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskSchedules.java
index d96d3df..8aed60a 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskSchedules.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskSchedules.java
@@ -252,31 +252,31 @@
.in(Task::getTaskStatus, integers)
.orderByDesc(Task::getSort));
for (Task task : tasks) {
- Loc loc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getBarcode, task.getBarcode()));
- if (Objects.isNull(loc)) {
- continue;
- }
- //鍒ゆ柇鏄惁娣卞簱浣�
- if (!LocUtils.isShallowLoc(loc.getCode())) {
- //鑾峰彇娣卞簱浣嶅搴旂殑娴呭簱浣�
- String shallowLoc = LocUtils.getShallowLoc(loc.getCode());
- if (StringUtils.isBlank(shallowLoc)) {
- continue;
- }
- Loc shalloc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getCode, shallowLoc));
- if (Objects.isNull(shalloc) || !shalloc.getUseStatus().equals(LocStsType.LOC_STS_TYPE_F.type)) {
- //濡傛灉娴呭簱浣嶄笉鍦ㄥ簱璺冲嚭寰幆
- continue;
- }
- LocToTaskParams params = new LocToTaskParams();
- params.setOrgLoc(shallowLoc).setType(TaskType.TASK_TYPE_LOC_MOVE.type + "");
- //鐢熸垚绉诲簱浠诲姟
- Task moveTask = locItemService.genMoveTask(params, loginUserId);
- moveTask.setSort(!Objects.isNull(task.getSort()) ? task.getSort() + 1 : Constants.TASK_SORT_DEFAULT_VALUE + 1);
- if (!taskService.updateById(moveTask)) {
- throw new Exception("浠诲姟浼樺厛绾ф洿鏂板け璐ワ紒锛�");
- }
- }
+// Loc loc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getBarcode, task.getBarcode()));
+// if (Objects.isNull(loc)) {
+// continue;
+// }
+// //鍒ゆ柇鏄惁娣卞簱浣�
+// if (!LocUtils.isShallowLoc(loc.getCode())) {
+// //鑾峰彇娣卞簱浣嶅搴旂殑娴呭簱浣�
+// String shallowLoc = LocUtils.getShallowLoc(loc.getCode());
+// if (StringUtils.isBlank(shallowLoc)) {
+// continue;
+// }
+// Loc shalloc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getCode, shallowLoc));
+// if (Objects.isNull(shalloc) || !shalloc.getUseStatus().equals(LocStsType.LOC_STS_TYPE_F.type)) {
+// //濡傛灉娴呭簱浣嶄笉鍦ㄥ簱璺冲嚭寰幆
+// continue;
+// }
+// LocToTaskParams params = new LocToTaskParams();
+// params.setOrgLoc(shallowLoc).setType(TaskType.TASK_TYPE_LOC_MOVE.type + "");
+// //鐢熸垚绉诲簱浠诲姟
+// Task moveTask = locItemService.genMoveTask(params, loginUserId);
+// moveTask.setSort(!Objects.isNull(task.getSort()) ? task.getSort() + 1 : Constants.TASK_SORT_DEFAULT_VALUE + 1);
+// if (!taskService.updateById(moveTask)) {
+// throw new Exception("浠诲姟浼樺厛绾ф洿鏂板け璐ワ紒锛�");
+// }
+// }
//TODO 璋冪敤涓嬪彂浠诲姟鎺ュ彛
pubTaskToWcs(task);
}
@@ -321,20 +321,18 @@
taskParams.setBatch(task.getBarcode());
if (task.getTaskType().equals(TaskType.TASK_TYPE_IN.type)
- || task.getTaskType().equals(TaskType.TASK_TYPE_CHECK_IN.type )
- || task.getTaskType().equals(TaskType.TASK_TYPE_PICK_IN.type)
|| task.getTaskType().equals(TaskType.TASK_TYPE_MERGE_IN.type)
|| task.getTaskType().equals(TaskType.TASK_TYPE_EMPITY_IN.type)) {
-
itemParam.setDestLoc(task.getTargLoc())
.setOriSta(task.getOrgSite());
+ } else if (task.getTaskType().equals(TaskType.TASK_TYPE_CHECK_IN.type) || task.getTaskType().equals(TaskType.TASK_TYPE_PICK_IN.type)) {
+ itemParam.setDestLoc(task.getTargLoc())
+ .setOriSta(task.getTargSite());
} else if (task.getTaskType().equals(TaskType.TASK_TYPE_OUT.type)
-
|| task.getTaskType().equals(TaskType.TASK_TYPE_PICK_AGAIN_OUT.type)
|| task.getTaskType().equals(TaskType.TASK_TYPE_EMPITY_OUT.type)
|| task.getTaskType().equals(TaskType.TASK_TYPE_CHECK_OUT.type)
- || task.getTaskType().equals(TaskType.TASK_TYPE_MERGE_OUT.type)
- ) {
+ || task.getTaskType().equals(TaskType.TASK_TYPE_MERGE_OUT.type)) {
itemParam.setOriLoc(task.getOrgLoc())
.setDestSta(task.getTargSite());
@@ -378,7 +376,12 @@
.set(Task::getTaskStatus, TaskStsType.WCS_EXECUTE_IN.id))) {
throw new CoolException("浠诲姟鐘舵�佷慨鏀瑰け璐ワ紒锛�");
}
- } else if (task.getTaskType().equals(TaskType.TASK_TYPE_OUT.type)) {
+ } else if (task.getTaskType().equals(TaskType.TASK_TYPE_OUT.type)
+ || task.getTaskType().equals(TaskType.TASK_TYPE_CHECK_OUT.type)
+ || task.getTaskType().equals(TaskType.TASK_TYPE_MERGE_OUT.type)
+ || task.getTaskType().equals(TaskType.TASK_TYPE_EMPITY_OUT.type)
+ || task.getTaskType().equals(TaskType.TASK_TYPE_PICK_AGAIN_OUT.type)
+ ) {
if (!taskService.update(new LambdaUpdateWrapper<Task>().eq(Task::getTaskCode, task.getTaskCode())
.set(Task::getTaskStatus, TaskStsType.WCS_EXECUTE_OUT.id))) {
throw new CoolException("浠诲姟鐘舵�佷慨鏀瑰け璐ワ紒锛�");
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/DeviceSiteServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/DeviceSiteServiceImpl.java
index c06c01a..ac8e42a 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/DeviceSiteServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/DeviceSiteServiceImpl.java
@@ -70,9 +70,9 @@
for (String target : targets) {
DeviceSite site1 = new DeviceSite();
site1.setType(id + "")
- .setSite(site)
+ .setSite(basStation.getStationName())
.setDevice(param.getDeviceType())
- .setDeviceSite(deviceSite)
+ .setDeviceSite(basStation2.getStationName())
.setTarget(target)
.setDeviceCode(param.getDeviceCode())
.setChannel(param.getChannel())
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocItemServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocItemServiceImpl.java
index a3bd489..91e0d70 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocItemServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocItemServiceImpl.java
@@ -157,7 +157,7 @@
} else if (map.getType().equals(Constants.TASK_TYPE_OUT_CHECK)) {
//鐩樼偣鍑哄簱
DeviceSite deviceSite = deviceSiteService.getOne(new LambdaQueryWrapper<DeviceSite>()
- .eq(DeviceSite::getChannel, loc.getChannel())
+ .eq(!Objects.isNull(loc.getChannel()), DeviceSite::getChannel, loc.getChannel())
.eq(DeviceSite::getSite, siteNo)
.eq(DeviceSite::getType, TaskType.TASK_TYPE_CHECK_OUT.type));
if (Objects.isNull(deviceSite)) {
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 0604bc7..601c72a 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
@@ -979,7 +979,8 @@
if (Objects.isNull(locInfo)) {
throw new CoolException("鑾峰彇搴撲綅澶辫触锛侊紒");
}
- task.setTargLoc(locInfo.getLocNo());
+ task.setTargLoc(locInfo.getLocNo())
+ .setOrgSite(task.getTargSite());
if (!this.updateById(task)) {
throw new CoolException("浠诲姟鐘舵�佹洿鏂板け璐ワ紒锛�");
diff --git a/rsf-server/src/main/resources/application-dev.yml b/rsf-server/src/main/resources/application-dev.yml
index 72f5cf3..a817733 100644
--- a/rsf-server/src/main/resources/application-dev.yml
+++ b/rsf-server/src/main/resources/application-dev.yml
@@ -14,10 +14,10 @@
# url: jdbc:mysql://47.76.147.249:3306/rsf?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
# username: rsf
username: root
-# url: jdbc:mysql://10.10.10.200:3306/rsf?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
-# password: xltys1995
- url: jdbc:mysql://127.0.0.1:3306/rsf?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
- password: 34821015
+ url: jdbc:mysql://10.10.10.200:3306/rsf?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
+ password: xltys1995
+# url: jdbc:mysql://127.0.0.1:3306/rsf?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
+# password: 34821015
type: com.alibaba.druid.pool.DruidDataSource
druid:
initial-size: 5
diff --git a/rsf-server/src/main/resources/application.yml b/rsf-server/src/main/resources/application.yml
index ac31a5b..0c99aef 100644
--- a/rsf-server/src/main/resources/application.yml
+++ b/rsf-server/src/main/resources/application.yml
@@ -46,6 +46,7 @@
# 涓嬩綅鏈洪厤缃�
wcs-slave:
+ agv: false
# 鍙屾繁
doubleDeep: true
# 鍙屾繁搴撲綅鎺掑彿
--
Gitblit v1.9.1