From 50a862870d6945c8b69adfb283826b84abeb236b Mon Sep 17 00:00:00 2001
From: Junjie <xjj@123>
Date: 星期三, 03 四月 2024 16:56:47 +0800
Subject: [PATCH] #
---
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/entity/TaskSerialNo.java | 230 +++++++++++++
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/impl/MainServiceImpl.java | 371 ++++++++++++++------
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/AnalyzeService.java | 32
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/entity/Task.java | 39 ++
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/mapper/TaskSerialNoMapper.java | 12
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/TaskService.java | 4
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/impl/TaskServiceImpl.java | 10
zy-asrs-wcs/src/main/resources/mapper/core/TaskMapper.xml | 13
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/controller/TaskSerialNoController.java | 101 +++++
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/impl/TaskSerialNoServiceImpl.java | 12
zy-asrs-wcs/src/main/resources/mapper/core/TaskSerialNoMapper.xml | 5
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/SurayShuttleThread.java | 60 +++
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/mapper/TaskMapper.java | 4
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/utils/Utils.java | 90 +++++
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/TaskSerialNoService.java | 8
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/ShuttleThread.java | 6
16 files changed, 861 insertions(+), 136 deletions(-)
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/controller/TaskSerialNoController.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/controller/TaskSerialNoController.java
new file mode 100644
index 0000000..cda1803
--- /dev/null
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/controller/TaskSerialNoController.java
@@ -0,0 +1,101 @@
+package com.zy.asrs.wcs.system.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.zy.asrs.framework.common.Cools;
+import com.zy.asrs.framework.common.R;
+import com.zy.asrs.wcs.common.annotation.OperationLog;
+import com.zy.asrs.wcs.common.domain.BaseParam;
+import com.zy.asrs.wcs.common.domain.KeyValVo;
+import com.zy.asrs.wcs.common.domain.PageParam;
+import com.zy.asrs.wcs.core.entity.TaskSerialNo;
+import com.zy.asrs.wcs.core.service.TaskSerialNoService;
+import com.zy.asrs.wcs.utils.ExcelUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+
+@RestController
+@RequestMapping("/api")
+public class TaskSerialNoController extends BaseController {
+
+ @Autowired
+ private TaskSerialNoService taskSerialNoService;
+
+ @PreAuthorize("hasAuthority('core:taskSerialNo:list')")
+ @PostMapping("/taskSerialNo/page")
+ public R page(@RequestBody Map<String, Object> map) {
+ BaseParam baseParam = buildParam(map, BaseParam.class);
+ PageParam<TaskSerialNo, BaseParam> pageParam = new PageParam<>(baseParam, TaskSerialNo.class);
+ return R.ok().add(taskSerialNoService.page(pageParam, pageParam.buildWrapper(true)));
+ }
+
+ @PreAuthorize("hasAuthority('core:taskSerialNo:list')")
+ @PostMapping("/taskSerialNo/list")
+ public R list(@RequestBody Map<String, Object> map) {
+ return R.ok().add(taskSerialNoService.list());
+ }
+
+ @PreAuthorize("hasAuthority('core:taskSerialNo:list')")
+ @GetMapping("/taskSerialNo/{id}")
+ public R get(@PathVariable("id") Long id) {
+ return R.ok().add(taskSerialNoService.getById(id));
+ }
+
+ @PreAuthorize("hasAuthority('core:taskSerialNo:save')")
+ @OperationLog("娣诲姞浠诲姟搴忓垪鍙�")
+ @PostMapping("/taskSerialNo/save")
+ public R save(@RequestBody TaskSerialNo taskSerialNo) {
+ if (!taskSerialNoService.save(taskSerialNo)) {
+ return R.error("娣诲姞澶辫触");
+ }
+ return R.ok("娣诲姞鎴愬姛");
+ }
+
+ @PreAuthorize("hasAuthority('core:taskSerialNo:update')")
+ @OperationLog("淇敼浠诲姟搴忓垪鍙�")
+ @PostMapping("/taskSerialNo/update")
+ public R update(@RequestBody TaskSerialNo taskSerialNo) {
+ if (!taskSerialNoService.updateById(taskSerialNo)) {
+ return R.error("淇敼澶辫触");
+ }
+ return R.ok("淇敼鎴愬姛");
+ }
+
+ @PreAuthorize("hasAuthority('core:taskSerialNo:remove')")
+ @OperationLog("鍒犻櫎浠诲姟搴忓垪鍙�")
+ @PostMapping("/taskSerialNo/remove/{ids}")
+ public R remove(@PathVariable Long[] ids) {
+ if (!taskSerialNoService.removeByIds(Arrays.asList(ids))) {
+ return R.error("鍒犻櫎澶辫触");
+ }
+ return R.ok("鍒犻櫎鎴愬姛");
+ }
+
+ @PreAuthorize("hasAuthority('core:taskSerialNo:list')")
+ @PostMapping("/taskSerialNo/query")
+ public R query(@RequestParam(required = false) String condition) {
+ List<KeyValVo> vos = new ArrayList<>();
+ LambdaQueryWrapper<TaskSerialNo> wrapper = new LambdaQueryWrapper<>();
+ if (!Cools.isEmpty(condition)) {
+ wrapper.like(TaskSerialNo::getName, condition);
+ }
+ taskSerialNoService.page(new Page<>(1, 30), wrapper).getRecords().forEach(
+ item -> vos.add(new KeyValVo(item.getId(), item.getName()))
+ );
+ return R.ok().add(vos);
+ }
+
+ @PreAuthorize("hasAuthority('core:taskSerialNo:list')")
+ @PostMapping("/taskSerialNo/export")
+ public void export(@RequestBody Map<String, Object> map, HttpServletResponse response) throws Exception {
+ ExcelUtil.build(ExcelUtil.create(taskSerialNoService.list(), TaskSerialNo.class), response);
+ }
+
+}
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/entity/Task.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/entity/Task.java
index 9c5ebeb..04eb896 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/entity/Task.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/entity/Task.java
@@ -224,9 +224,39 @@
@ApiModelProperty(value= "澶囨敞")
private String memo;
+ /**
+ * 鍥涘悜绌挎杞﹀彿
+ */
+ @ApiModelProperty(value= "鍥涘悜绌挎杞﹀彿")
+ private Integer shuttleNo;
+
+ /**
+ * 鎻愬崌鏈哄彿
+ */
+ @ApiModelProperty(value= "鎻愬崌鏈哄彿")
+ private Integer liftNo;
+
+ /**
+ * 鍫嗗灈鏈哄彿
+ */
+ @ApiModelProperty(value= "鍫嗗灈鏈哄彿")
+ private Integer crnNo;
+
+ /**
+ * RGV鍙�
+ */
+ @ApiModelProperty(value= "RGV鍙�")
+ private Integer rgvNo;
+
+ /**
+ * AGV鍙�
+ */
+ @ApiModelProperty(value= "AGV鍙�")
+ private Integer agvNo;
+
public Task() {}
- public Task(String uuid,Long busId,String taskNo,String serialNum,String title,Long taskSts,Long taskCtg,Integer priority,String originSite,String originLoc,String destSite,String destLoc,Integer emptyMk,String zpallet,String phase,Date ioTime,Date startTime,Date endTime,Date exceptionTime,String exceptionDesc,Long hostId,Integer status,Integer deleted,Date createTime,Long createBy,Date updateTime,Long updateBy,String memo) {
+ public Task(String uuid, Long busId, String taskNo, String serialNum, String title, Long taskSts, Long taskCtg, Integer priority, String originSite, String originLoc, String destSite, String destLoc, Integer emptyMk, String zpallet, String phase, Date ioTime, Date startTime, Date endTime, Date exceptionTime, String exceptionDesc, Long hostId, Integer status, Integer deleted, Date createTime, Long createBy, Date updateTime, Long updateBy, String memo, Integer shuttleNo, Integer liftNo, Integer crnNo, Integer rgvNo, Integer agvNo) {
this.uuid = uuid;
this.busId = busId;
this.taskNo = taskNo;
@@ -255,9 +285,14 @@
this.updateTime = updateTime;
this.updateBy = updateBy;
this.memo = memo;
+ this.shuttleNo = shuttleNo;
+ this.liftNo = liftNo;
+ this.crnNo = crnNo;
+ this.rgvNo = rgvNo;
+ this.agvNo = agvNo;
}
-// Task task = new Task(
+ // Task task = new Task(
// null, // 缂栧彿
// null, // 鎬荤嚎
// null, // 浠诲姟鍙�
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/entity/TaskSerialNo.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/entity/TaskSerialNo.java
new file mode 100644
index 0000000..e541f04
--- /dev/null
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/entity/TaskSerialNo.java
@@ -0,0 +1,230 @@
+package com.zy.asrs.wcs.core.entity;
+
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+import com.zy.asrs.wcs.system.entity.Host;
+import com.zy.asrs.wcs.system.entity.User;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import com.zy.asrs.framework.common.Cools;
+import com.zy.asrs.framework.common.SpringUtils;
+import com.zy.asrs.wcs.system.service.UserService;
+import com.zy.asrs.wcs.system.service.HostService;
+
+import java.io.Serializable;
+import java.util.Date;
+
+@Data
+@TableName("wcs_task_serial_no")
+public class TaskSerialNo implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * ID
+ */
+ @ApiModelProperty(value= "ID")
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+
+ /**
+ * 缂栧彿
+ */
+ @ApiModelProperty(value= "缂栧彿")
+ private String uuid;
+
+ /**
+ * 鍚嶇О
+ */
+ @ApiModelProperty(value= "鍚嶇О")
+ private String name;
+
+ /**
+ * 鏍囪瘑
+ */
+ @ApiModelProperty(value= "鏍囪瘑")
+ private String flag;
+
+ /**
+ * 鎵�灞炴満鏋�
+ */
+ @ApiModelProperty(value= "鎵�灞炴満鏋�")
+ private Long hostId;
+
+ /**
+ * 鐘舵�� 1: 姝e父 0: 绂佺敤
+ */
+ @ApiModelProperty(value= "鐘舵�� 1: 姝e父 0: 绂佺敤 ")
+ private Integer status;
+
+ /**
+ * 鏄惁鍒犻櫎 1: 鏄� 0: 鍚�
+ */
+ @ApiModelProperty(value= "鏄惁鍒犻櫎 1: 鏄� 0: 鍚� ")
+ @TableLogic
+ private Integer deleted;
+
+ /**
+ * 娣诲姞鏃堕棿
+ */
+ @ApiModelProperty(value= "娣诲姞鏃堕棿")
+ @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+ private Date createTime;
+
+ /**
+ * 娣诲姞浜哄憳
+ */
+ @ApiModelProperty(value= "娣诲姞浜哄憳")
+ private Long createBy;
+
+ /**
+ * 淇敼鏃堕棿
+ */
+ @ApiModelProperty(value= "淇敼鏃堕棿")
+ @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+ private Date updateTime;
+
+ /**
+ * 淇敼浜哄憳
+ */
+ @ApiModelProperty(value= "淇敼浜哄憳")
+ private Long updateBy;
+
+ /**
+ * 澶囨敞
+ */
+ @ApiModelProperty(value= "澶囨敞")
+ private String memo;
+
+ /**
+ * 褰撳墠ID
+ */
+ @ApiModelProperty(value= "褰撳墠ID")
+ private Integer taskNo;
+
+ /**
+ * 璧峰ID
+ */
+ @ApiModelProperty(value= "璧峰ID")
+ private Integer startNo;
+
+ /**
+ * 鐩爣ID
+ */
+ @ApiModelProperty(value= "鐩爣ID")
+ private Integer targetNo;
+
+ public TaskSerialNo() {}
+
+ public TaskSerialNo(String uuid,String name,String flag,Long hostId,Integer status,Integer deleted,Date createTime,Long createBy,Date updateTime,Long updateBy,String memo,Integer taskNo,Integer startNo,Integer targetNo) {
+ this.uuid = uuid;
+ this.name = name;
+ this.flag = flag;
+ this.hostId = hostId;
+ this.status = status;
+ this.deleted = deleted;
+ this.createTime = createTime;
+ this.createBy = createBy;
+ this.updateTime = updateTime;
+ this.updateBy = updateBy;
+ this.memo = memo;
+ this.taskNo = taskNo;
+ this.startNo = startNo;
+ this.targetNo = targetNo;
+ }
+
+// TaskSerialNo taskSerialNo = new TaskSerialNo(
+// null, // 缂栧彿
+// null, // 鍚嶇О
+// null, // 鏍囪瘑
+// null, // 鎵�灞炴満鏋�
+// null, // 鐘舵��
+// null, // 鏄惁鍒犻櫎
+// null, // 娣诲姞鏃堕棿
+// null, // 娣诲姞浜哄憳
+// null, // 淇敼鏃堕棿
+// null, // 淇敼浜哄憳
+// null, // 澶囨敞
+// null, // 褰撳墠ID
+// null, // 璧峰ID
+// null // 鐩爣ID
+// );
+
+ public String getHostId$(){
+ HostService service = SpringUtils.getBean(HostService.class);
+ Host host = service.getById(this.hostId);
+ if (!Cools.isEmpty(host)){
+ return String.valueOf(host.getName());
+ }
+ return null;
+ }
+
+ public String getStatus$(){
+ if (null == this.status){ return null; }
+ switch (this.status){
+ case 1:
+ return "姝e父";
+ case 0:
+ return "绂佺敤";
+ default:
+ return String.valueOf(this.status);
+ }
+ }
+
+ public String getDeleted$(){
+ if (null == this.deleted){ return null; }
+ switch (this.deleted){
+ case 1:
+ return "鏄�";
+ case 0:
+ return "鍚�";
+ default:
+ return String.valueOf(this.deleted);
+ }
+ }
+
+ public String getCreateTime$(){
+ if (Cools.isEmpty(this.createTime)){
+ return "";
+ }
+ return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.createTime);
+ }
+
+ public String getCreateBy$(){
+ UserService service = SpringUtils.getBean(UserService.class);
+ User user = service.getById(this.createBy);
+ if (!Cools.isEmpty(user)){
+ return String.valueOf(user.getNickname());
+ }
+ return null;
+ }
+
+ public String getUpdateTime$(){
+ if (Cools.isEmpty(this.updateTime)){
+ return "";
+ }
+ return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.updateTime);
+ }
+
+ public String getUpdateBy$(){
+ UserService service = SpringUtils.getBean(UserService.class);
+ User user = service.getById(this.updateBy);
+ if (!Cools.isEmpty(user)){
+ return String.valueOf(user.getNickname());
+ }
+ return null;
+ }
+
+
+}
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/AnalyzeService.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/AnalyzeService.java
index 4f7ef93..357d9c6 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/AnalyzeService.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/AnalyzeService.java
@@ -703,11 +703,11 @@
}
-// /**
-// * 鐢熸垚鍏呯數鍔ㄤ綔
-// */
-// public List<Motion> generateChargeMotion(WrkCharge wrkCharge) {
-// List<Motion> motionList = new ArrayList<>();
+ /**
+ * 鐢熸垚鍏呯數鍔ㄤ綔
+ */
+ public List<Motion> generateChargeMotion(Task task) {
+ List<Motion> motionList = new ArrayList<>();
// if (wrkCharge.getWrkSts() != WrkMastStsType.NEW_CHARGE.sts || wrkCharge.getIoType() != WrkIoTypeType.CHARGE.sts) {
// return motionList;
// }
@@ -866,15 +866,15 @@
// dto.setShuttleNo(shuttleProtocol.getShuttleNo().intValue());
// }))
// ));
-//
-// return motionList;
-// }
-//
-// /**
-// * 鐢熸垚鍏呯數瀹屾垚鍔ㄤ綔
-// */
-// public List<Motion> generateShuttleChargeWrkComplete(WrkCharge wrkCharge) {
-// List<Motion> motionList = new ArrayList<>();
+
+ return motionList;
+ }
+
+ /**
+ * 鐢熸垚鍏呯數瀹屾垚鍔ㄤ綔
+ */
+ public List<Motion> generateShuttleChargeWrkComplete(Task task) {
+ List<Motion> motionList = new ArrayList<>();
// if (wrkCharge.getWrkSts() != WrkMastStsType.NEW_MOVE.sts || wrkCharge.getIoType() != WrkIoTypeType.MOVE.sts) {
// return motionList;
// }
@@ -909,8 +909,8 @@
// ));
//
// }
-// return motionList;
-// }
+ return motionList;
+ }
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/mapper/TaskMapper.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/mapper/TaskMapper.java
index 2254cd8..44ecb45 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/mapper/TaskMapper.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/mapper/TaskMapper.java
@@ -22,4 +22,8 @@
List<Task> selectPakOut();
+ List<Task> hasChargeInLoc(String locNo);
+
+ Task selectMoveWorking(Integer shuttleNo);
+
}
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/mapper/TaskSerialNoMapper.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/mapper/TaskSerialNoMapper.java
new file mode 100644
index 0000000..536e4d2
--- /dev/null
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/mapper/TaskSerialNoMapper.java
@@ -0,0 +1,12 @@
+package com.zy.asrs.wcs.core.mapper;
+
+import com.zy.asrs.wcs.core.entity.TaskSerialNo;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import org.springframework.stereotype.Repository;
+
+@Mapper
+@Repository
+public interface TaskSerialNoMapper extends BaseMapper<TaskSerialNo> {
+
+}
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/TaskSerialNoService.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/TaskSerialNoService.java
new file mode 100644
index 0000000..228d750
--- /dev/null
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/TaskSerialNoService.java
@@ -0,0 +1,8 @@
+package com.zy.asrs.wcs.core.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.zy.asrs.wcs.core.entity.TaskSerialNo;
+
+public interface TaskSerialNoService extends IService<TaskSerialNo> {
+
+}
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/TaskService.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/TaskService.java
index 21bbcdd..06dc014 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/TaskService.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/TaskService.java
@@ -20,4 +20,8 @@
List<Task> selectPakOut();
+ List<Task> hasChargeInLoc(String locNo);
+
+ Task selectMoveWorking(Integer shuttleNo);
+
}
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/impl/MainServiceImpl.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/impl/MainServiceImpl.java
index b804446..7c6e2d7 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/impl/MainServiceImpl.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/impl/MainServiceImpl.java
@@ -1,22 +1,34 @@
package com.zy.asrs.wcs.core.service.impl;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.zy.asrs.framework.common.Cools;
-import com.zy.asrs.wcs.core.entity.Task;
+import com.zy.asrs.framework.common.SnowflakeIdWorker;
+import com.zy.asrs.wcs.core.entity.*;
import com.zy.asrs.wcs.core.kernel.AnalyzeService;
+import com.zy.asrs.wcs.core.model.enums.DeviceCtgType;
+import com.zy.asrs.wcs.core.model.enums.MotionStsType;
import com.zy.asrs.wcs.core.model.enums.TaskStsType;
-import com.zy.asrs.wcs.core.service.TaskService;
+import com.zy.asrs.wcs.core.service.*;
+import com.zy.asrs.wcs.core.utils.Utils;
import com.zy.asrs.wcs.rcs.News;
-import com.zy.asrs.wcs.core.entity.Motion;
-import com.zy.asrs.wcs.core.service.MotionService;
import com.zy.asrs.wcs.rcs.cache.SlaveConnection;
+import com.zy.asrs.wcs.rcs.entity.Device;
+import com.zy.asrs.wcs.rcs.entity.DeviceType;
import com.zy.asrs.wcs.rcs.model.enums.SlaveType;
+import com.zy.asrs.wcs.rcs.model.protocol.ShuttleProtocol;
import com.zy.asrs.wcs.rcs.model.protocol.StaProtocol;
+import com.zy.asrs.wcs.rcs.service.DeviceService;
+import com.zy.asrs.wcs.rcs.service.DeviceTypeService;
import com.zy.asrs.wcs.rcs.thread.DevpThread;
+import com.zy.asrs.wcs.rcs.thread.ShuttleThread;
+import com.zy.asrs.wcs.system.entity.Dict;
+import com.zy.asrs.wcs.system.service.DictService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
+import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@@ -35,6 +47,20 @@
private AnalyzeService analyzeService;
@Autowired
private MotionService motionService;
+ @Autowired
+ private DeviceService deviceService;
+ @Autowired
+ private DeviceTypeService deviceTypeService;
+ @Autowired
+ private LocCtgService locCtgService;
+ @Autowired
+ private LocService locService;
+ @Autowired
+ private SnowflakeIdWorker snowflakeIdWorker;
+ @Autowired
+ private TaskCtgService taskCtgService;
+ @Autowired
+ private DictService dictService;
/**
* 缁勬墭
@@ -127,126 +153,235 @@
* 鍥涘悜绌挎杞︾數閲忔娴� ===>> 鍙戣捣鍏呯數
*/
public synchronized void loopShuttleCharge() {
-// ShuttleChargeType shuttleCharge = ShuttleChargeType.CHARGE_1;
-// for (ShuttleSlave shuttle : slaveProperties.getShuttle()) {
-// // 鍒ゆ柇鍏呯數浣嶆槸鍚﹁鍗犵敤
-// if (wrkChargeService.hasShuttleInChargeLoc(shuttleCharge.locNo, shuttle.getId())) {
-// continue;
-// }
-//
-// //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
-// ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttle.getId());
-// ShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol();
-// if (shuttleProtocol == null) {
-// continue;
-// }
-// if (motionService.selectCount(new EntityWrapper<Motion>()
-// .eq("device_ctg", DeviceCtgType.SHUTTLE.val())
-// .eq("device", shuttle.getId())
-// .eq("motion_sts", MotionStsType.EXECUTING.val())) > 0) {
-// continue;
-// }
-//
-// //鍒ゆ柇褰撳墠灏忚溅鏄惁婊¤冻闇�瑕佸厖鐢佃姹�
-// if (!shuttleProtocol.isRequireCharge()) {
-// continue;
-// }
-//
-// WrkCharge wrkCharge = wrkChargeService.selectWorking(null);
-// if (wrkCharge != null) {//宸叉湁鍏呯數浠诲姟
-// continue;
-// }
-//
-// String chargeLocNo = shuttleCharge.locNo;
-// wrkCharge = new WrkCharge();
-// wrkCharge.setShuttleNo(shuttle.getId());
-// wrkCharge.setCharge(shuttleCharge.id);
-// wrkCharge.setWrkNo(commonService.getChargeWorkNo(4));
-// wrkCharge.setUuid(String.valueOf(snowflakeIdWorker.nextId()));
-// wrkCharge.setWrkSts(WrkMastStsType.NEW_CHARGE.sts); // 鍏呯數浠诲姟
-// wrkCharge.setIoType(WrkIoTypeType.CHARGE.sts);
-// wrkCharge.setIoPri((double) 10);
-// wrkCharge.setLocNo(chargeLocNo);
-// wrkCharge.setMemo("charge");
-// wrkCharge.setAppeTime(new Date());
-//
-// // generate motion list
-// List<Motion> motionList = analyzeService.generateChargeMotion(wrkCharge);
-// if (Cools.isEmpty(motionList)) {
-// News.error("淇濆瓨{}鍙峰洓鍚戠┛姊溅鍏呯數浠诲姟澶辫触!!!", shuttle.getId());
-// continue;
-// }
-// motionService.batchInsert(motionList, wrkCharge.getUuid(), wrkCharge.getWrkNo());
-//
-// wrkCharge.setWrkSts(WrkMastStsType.ANALYZE_CHARGE.sts);
-//
-// if (!wrkChargeService.insert(wrkCharge)) {
-// News.error("淇濆瓨{}鍙峰洓鍚戠┛姊溅鍏呯數浠诲姟澶辫触!!!", shuttle.getId());
-// continue;
-// }
-//
-// News.info("淇濆瓨{}鍙峰洓鍚戠┛姊溅鍏呯數浠诲姟鎴愬姛!!!", shuttle.getId());
-// }
+ // 鑾峰彇鍏呯數妗╁簱浣嶇被鍨�
+ LocCtg locCtg = locCtgService.getOne(new LambdaQueryWrapper<LocCtg>()
+ .eq(LocCtg::getFlag, "CHARGE")
+ .eq(LocCtg::getStatus, 1));
+ if (locCtg == null) {
+ return;
+ }
+
+ //鑾峰彇鍏呯數浠诲姟绫诲瀷
+ TaskCtg taskCtg = taskCtgService.getOne(new LambdaQueryWrapper<TaskCtg>()
+ .eq(TaskCtg::getFlag, "CHARGE")
+ .eq(TaskCtg::getStatus, 1));
+ if (taskCtg == null) {
+ return;
+ }
+
+ DeviceType deviceType = deviceTypeService.getOne(new LambdaQueryWrapper<DeviceType>()
+ .eq(DeviceType::getFlag, String.valueOf(SlaveType.Shuttle))
+ .eq(DeviceType::getStatus, 1));
+ if (deviceType == null) {
+ return;
+ }
+
+ List<Device> list = deviceService.list(new LambdaQueryWrapper<Device>()
+ .eq(Device::getDeviceType, deviceType.getId())
+ .eq(Device::getStatus, 1));
+ for (Device device : list) {
+ //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
+ ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, device.getId().intValue());
+ if (shuttleThread == null) {
+ continue;
+ }
+
+ ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
+ if (shuttleProtocol == null) {
+ continue;
+ }
+
+ String currentLocNo = shuttleProtocol.getCurrentLocNo();
+ int lev = Utils.getLev(currentLocNo);//鑾峰彇灏忚溅妤煎眰
+ //鎼滅储灏忚溅褰撳墠妤煎眰鍏呯數妗�
+ ArrayList<Loc> allChargeLoc = new ArrayList<>();
+ List<Loc> list1 = locService.list(new LambdaQueryWrapper<Loc>()
+ .eq(Loc::getLocCtg, locCtg.getId())
+ .eq(Loc::getStatus, 1)
+ .eq(Loc::getLev, lev));
+ if (!list1.isEmpty()) {
+ allChargeLoc.addAll(list1);
+ }
+
+ //鎼滅储鍏朵粬妤煎眰鍏呯數妗�
+ List<Loc> list2 = locService.list(new LambdaQueryWrapper<Loc>()
+ .eq(Loc::getLocCtg, locCtg.getId())
+ .eq(Loc::getStatus, 1)
+ .notIn(Loc::getLev, lev));
+ if (!list2.isEmpty()) {
+ allChargeLoc.addAll(list2);
+ }
+
+ //娌℃湁鎵惧埌鍏呯數妗�
+ if (allChargeLoc.isEmpty()) {
+ continue;
+ }
+
+ //閫夋嫨绌洪棽鍏呯數妗�
+ Loc chargeLoc = null;
+ for (Loc loc : allChargeLoc) {
+ // 鍒ゆ柇鍏呯數浣嶆槸鍚﹁鍗犵敤(杞﹁締浣嶇疆)
+ if (Utils.hasShuttleInLoc(loc.getLocNo(), device.getId())) {
+ continue;
+ }
+
+ // 鐩樼偣鍏呯數浣嶆槸鍚﹀瓨鍦ㄤ换鍔℃。
+ List<Task> tasks = taskService.hasChargeInLoc(loc.getLocNo());
+ if (!tasks.isEmpty()) {
+ continue;
+ }
+
+ chargeLoc = loc;
+ break;
+ }
+
+ if (chargeLoc == null) {
+ continue;//鏈壘鍒板厖鐢垫々
+ }
+
+ if (motionService.count(new LambdaQueryWrapper<Motion>()
+ .eq(Motion::getDeviceCtg, DeviceCtgType.SHUTTLE.val())
+ .eq(Motion::getDevice, device.getDeviceNo())
+ .eq(Motion::getMotionSts, MotionStsType.EXECUTING.val())) > 0) {
+ continue;
+ }
+
+ //鍒ゆ柇褰撳墠灏忚溅鏄惁婊¤冻闇�瑕佸厖鐢佃姹�
+ if (!shuttleThread.isRequireCharge()) {
+ continue;
+ }
+
+ String chargeLocNo = chargeLoc.getLocNo();
+ Task task = new Task();
+ task.setUuid(String.valueOf(snowflakeIdWorker.nextId()));
+ task.setTaskNo(String.valueOf(Utils.getTaskNo("CHARGE")));
+ task.setTaskSts(TaskStsType.NEW_CHARGE.sts);
+ task.setTaskCtg(taskCtg.getId());
+ task.setPriority(10);
+ task.setOriginSite(null);
+ task.setOriginLoc(null);
+ task.setDestSite(null);
+ task.setDestLoc(chargeLocNo);
+ task.setIoTime(new Date());
+ task.setStartTime(new Date());
+ task.setHostId(device.getHostId());
+ task.setStatus(1);
+ task.setMemo("charge");
+ task.setShuttleNo(Integer.valueOf(device.getDeviceNo()));
+
+ // generate motion list
+ List<Motion> motionList = analyzeService.generateChargeMotion(task);
+ if (Cools.isEmpty(motionList)) {
+ News.error("淇濆瓨{}鍙峰洓鍚戠┛姊溅鍏呯數浠诲姟澶辫触!!!", device.getDeviceNo());
+ continue;
+ }
+ motionService.batchInsert(motionList, task.getUuid(), Integer.valueOf(task.getTaskNo()));
+
+ task.setTaskSts(TaskStsType.ANALYZE_CHARGE.sts);
+ if (!taskService.save(task)) {
+ News.error("淇濆瓨{}鍙峰洓鍚戠┛姊溅鍏呯數浠诲姟澶辫触!!!", device.getDeviceNo());
+ continue;
+ }
+
+ News.info("淇濆瓨{}鍙峰洓鍚戠┛姊溅鍏呯數浠诲姟鎴愬姛!!!", device.getDeviceNo());
+ }
}
/**
* 鍥涘悜绌挎杞︾數閲忔娴� ===>> 婊$數鍚庡洖鍒板緟鏈轰綅
*/
public synchronized void loopShuttleToStandbyCauseCharge() {
-// ShuttleChargeType shuttleCharge = ShuttleChargeType.CHARGE_1;
-// Integer enoughPower = 90;
-// Config config = configService.selectOne(new EntityWrapper<Config>()
-// .eq("code", "chargeMaxValue")
-// .eq("status", 1));
-// if (config != null) {
-// enoughPower = Integer.parseInt(config.getValue());
-// }
-//
-// for (ShuttleSlave shuttle : slaveProperties.getShuttle()) {
-// //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
-// ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttle.getId());
-// ShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol();
-// if (shuttleProtocol == null) {
-// continue;
-// }
-// // 鏄惁瀛樺湪鍏呯數浠诲姟
-// WrkCharge wrkCharge = wrkChargeService.selectWorking(shuttle.getId());
-// if (wrkCharge == null) {
-// continue;
-// }
-//
-// if (motionService.selectCount(new EntityWrapper<Motion>()
-// .eq("device_ctg", DeviceCtgType.SHUTTLE.val())
-// .eq("device", shuttle.getId())
-// .eq("motion_sts", MotionStsType.EXECUTING.val())) > 0) {
-// continue;
-// }
-// // 涓嶅浜庡厖鐢典腑
-// if (!shuttleProtocol.getPlcOutputCharge()) {
-// continue;
-// }
-// // 鍦ㄥ厖鐢典綅
-// if (!shuttleProtocol.getCurrentLocNo().equals(shuttleCharge.locNo)) {
-// continue;
-// }
-// // 鐢甸噺鏄惁杈惧埌婊$數瑕佹眰
-// if (shuttleProtocol.getBatteryPower$().intValue() < enoughPower) {
-// continue;
-// }
-// // 宸叉湁杩佺Щ浠诲姟
-// if (wrkChargeService.selectMoveWorking(shuttle.getId()) != null) {
-// continue;
-// }
-//
-// // 寰呮満浣�
-// String standByLocNo = ShuttleTempLocType.query(shuttleProtocol.getShuttleNo().intValue(), 2, Utils.getLev(shuttleCharge.locNo)).locNo;
-//
-// shuttleDispatcher.generateShuttleChargeWrkComplete(shuttleProtocol.getShuttleNo().intValue(), standByLocNo);
-//
-// wrkCharge.setWrkSts(WrkMastStsType.COMPLETE_CHARGE.sts);
-// wrkCharge.setIoTime(new Date());
-// wrkChargeMapper.updateById(wrkCharge);
-// }
+ Integer enoughPower = 90;
+ Dict dict = dictService.getOne(new LambdaQueryWrapper<Dict>()
+ .eq(Dict::getFlag, "chargeMaxValue")
+ .eq(Dict::getStatus, 1));
+ if (dict != null) {
+ enoughPower = Integer.parseInt(dict.getValue());
+ }
+
+ //鑾峰彇杩佺Щ浠诲姟绫诲瀷
+ TaskCtg taskCtg = taskCtgService.getOne(new LambdaQueryWrapper<TaskCtg>()
+ .eq(TaskCtg::getFlag, "MOVE")
+ .eq(TaskCtg::getStatus, 1));
+ if (taskCtg == null) {
+ return;
+ }
+
+ DeviceType deviceType = deviceTypeService.getOne(new LambdaQueryWrapper<DeviceType>()
+ .eq(DeviceType::getFlag, String.valueOf(SlaveType.Shuttle))
+ .eq(DeviceType::getStatus, 1));
+ if (deviceType == null) {
+ return;
+ }
+
+ List<Device> list = deviceService.list(new LambdaQueryWrapper<Device>()
+ .eq(Device::getDeviceType, deviceType.getId())
+ .eq(Device::getStatus, 1));
+ for (Device device : list) {
+ //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
+ ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, device.getId().intValue());
+ if (shuttleThread == null) {
+ continue;
+ }
+
+ if (!shuttleThread.isCharging()) {
+ continue;
+ }
+
+ if (!shuttleThread.isChargingCompleted()) {
+ continue;
+ }
+
+ //鏌ユ壘鍏呯數浠诲姟
+ Task chargeTask = taskService.getOne(new LambdaQueryWrapper<Task>()
+ .eq(Task::getTaskSts, TaskStsType.CHARGE_WORKING.sts)
+ .eq(Task::getShuttleNo, device.getDeviceNo()));
+ if (chargeTask == null) {
+ continue;
+ }
+
+ //鍏呯數瀹屾垚
+ // 宸叉湁杩佺Щ浠诲姟
+ if (taskService.selectMoveWorking(Integer.valueOf(device.getDeviceNo())) != null) {
+ continue;
+ }
+
+ Task task = new Task();
+ task.setUuid(String.valueOf(snowflakeIdWorker.nextId()));
+ task.setTaskNo(String.valueOf(Utils.getTaskNo("MOVE")));
+ task.setTaskSts(TaskStsType.NEW_MOVE.sts);
+ task.setTaskCtg(taskCtg.getId());
+ task.setPriority(10);
+ task.setOriginSite(null);
+ task.setOriginLoc(null);
+ task.setDestSite(null);
+ task.setDestLoc("1-1-1"); // 鏆傛椂鏈畾
+ task.setIoTime(new Date());
+ task.setStartTime(new Date());
+ task.setHostId(device.getHostId());
+ task.setStatus(1);
+ task.setMemo("charge");
+ task.setShuttleNo(Integer.valueOf(device.getDeviceNo()));
+
+ // generate motion list
+ List<Motion> motionList = analyzeService.generateShuttleChargeWrkComplete(task);
+ if (Cools.isEmpty(motionList)) {
+ News.error("淇濆瓨{}鍙峰洓鍚戠┛姊溅杩佺Щ浠诲姟澶辫触!!!", device.getDeviceNo());
+ continue;
+ }
+ motionService.batchInsert(motionList, task.getUuid(), Integer.valueOf(task.getTaskNo()));
+
+ task.setTaskSts(TaskStsType.ANALYZE_MOVE.sts);
+
+ if (!taskService.save(task)) {
+ News.error("淇濆瓨{}鍙峰洓鍚戠┛姊溅杩佺Щ浠诲姟澶辫触!!!", device.getDeviceNo());
+ continue;
+ }
+
+ chargeTask.setTaskSts(TaskStsType.COMPLETE_CHARGE.sts);
+ chargeTask.setIoTime(new Date());
+ taskService.updateById(chargeTask);
+ }
}
}
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/impl/TaskSerialNoServiceImpl.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/impl/TaskSerialNoServiceImpl.java
new file mode 100644
index 0000000..fa66d3b
--- /dev/null
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/impl/TaskSerialNoServiceImpl.java
@@ -0,0 +1,12 @@
+package com.zy.asrs.wcs.core.service.impl;
+
+import com.zy.asrs.wcs.core.mapper.TaskSerialNoMapper;
+import com.zy.asrs.wcs.core.entity.TaskSerialNo;
+import com.zy.asrs.wcs.core.service.TaskSerialNoService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+@Service("taskSerialNoService")
+public class TaskSerialNoServiceImpl extends ServiceImpl<TaskSerialNoMapper, TaskSerialNo> implements TaskSerialNoService {
+
+}
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/impl/TaskServiceImpl.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/impl/TaskServiceImpl.java
index 4580124..19d2aac 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/impl/TaskServiceImpl.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/impl/TaskServiceImpl.java
@@ -74,4 +74,14 @@
public List<Task> selectPakOut() {
return this.baseMapper.selectPakOut();
}
+
+ @Override
+ public List<Task> hasChargeInLoc(String locNo) {
+ return this.baseMapper.hasChargeInLoc(locNo);
+ }
+
+ @Override
+ public Task selectMoveWorking(Integer shuttleNo) {
+ return this.baseMapper.selectMoveWorking(shuttleNo);
+ }
}
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/utils/Utils.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/utils/Utils.java
index d8f7718..1a3efdc 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/utils/Utils.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/utils/Utils.java
@@ -1,6 +1,21 @@
package com.zy.asrs.wcs.core.utils;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.zy.asrs.framework.common.Cools;
+import com.zy.asrs.framework.common.SpringUtils;
+import com.zy.asrs.framework.exception.CoolException;
+import com.zy.asrs.wcs.core.entity.Task;
+import com.zy.asrs.wcs.core.entity.TaskSerialNo;
+import com.zy.asrs.wcs.core.service.TaskSerialNoService;
+import com.zy.asrs.wcs.core.service.TaskService;
+import com.zy.asrs.wcs.rcs.cache.SlaveConnection;
+import com.zy.asrs.wcs.rcs.entity.Device;
+import com.zy.asrs.wcs.rcs.entity.DeviceType;
+import com.zy.asrs.wcs.rcs.model.enums.SlaveType;
+import com.zy.asrs.wcs.rcs.model.protocol.ShuttleProtocol;
+import com.zy.asrs.wcs.rcs.service.DeviceService;
+import com.zy.asrs.wcs.rcs.service.DeviceTypeService;
+import com.zy.asrs.wcs.rcs.thread.ShuttleThread;
import java.util.ArrayList;
import java.util.List;
@@ -94,4 +109,79 @@
return list;
}
+ public static boolean hasShuttleInLoc(String locNo, Long deviceId) {
+ DeviceTypeService deviceTypeService = SpringUtils.getBean(DeviceTypeService.class);
+ DeviceService deviceService = SpringUtils.getBean(DeviceService.class);
+
+ DeviceType deviceType = deviceTypeService.getOne(new LambdaQueryWrapper<DeviceType>()
+ .eq(DeviceType::getFlag, String.valueOf(SlaveType.Shuttle))
+ .eq(DeviceType::getStatus, 1));
+ if (deviceType == null) {
+ return false;
+ }
+
+ List<Device> list = deviceService.list(new LambdaQueryWrapper<Device>()
+ .eq(Device::getDeviceType, deviceType.getId())
+ .eq(Device::getStatus, 1));
+
+ for (Device device : list) {
+ if (deviceId.equals(device.getId())) {
+ continue;
+ }
+
+ //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
+ ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, device.getId().intValue());
+ if (shuttleThread == null) {
+ continue;
+ }
+
+ ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
+ if (shuttleProtocol == null) {
+ continue;
+ }
+
+ if (shuttleProtocol.getCurrentLocNo().equals(locNo)) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ /**
+ * 鐢熸垚宸ヤ綔鍙�
+ * @return taskNo(宸ヤ綔鍙�)
+ */
+ public static int getTaskNo(String flag) {
+ TaskSerialNoService taskSerialNoService = SpringUtils.getBean(TaskSerialNoService.class);
+ TaskService taskService = SpringUtils.getBean(TaskService.class);
+ TaskSerialNo taskSerialNo = taskSerialNoService.getOne(new LambdaQueryWrapper<TaskSerialNo>()
+ .eq(TaskSerialNo::getFlag, flag)
+ .eq(TaskSerialNo::getStatus, 1));
+ if (Cools.isEmpty(taskSerialNo)) {
+ throw new CoolException("鏁版嵁寮傚父锛岃鑱旂郴绠$悊鍛�");
+ }
+
+ int taskNo = taskSerialNo.getTaskNo();
+ int sNo = taskSerialNo.getStartNo();
+ int eNo = taskSerialNo.getTargetNo();
+ taskNo = taskNo >= eNo ? sNo : taskNo + 1;
+ while (true) {
+ Task task = taskService.getOne(new LambdaQueryWrapper<Task>()
+ .eq(Task::getTaskNo, taskNo));
+ if (null != task) {
+ taskNo = taskNo >= eNo ? sNo : taskNo + 1;
+ } else {
+ break;
+ }
+ }
+ // 淇敼搴忓彿璁板綍
+ if (taskNo > 0){
+ taskSerialNo.setTaskNo(taskNo);
+ taskSerialNoService.updateById(taskSerialNo);
+ return taskNo;
+ }
+ throw new CoolException("宸ヤ綔鍙风敓鎴愬け璐�");
+ }
+
}
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/ShuttleThread.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/ShuttleThread.java
index 2f31443..0b37b7e 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/ShuttleThread.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/ShuttleThread.java
@@ -25,6 +25,12 @@
boolean isIdle();//鏄惁绌洪棽
+ boolean isRequireCharge();//鏄惁婊¤冻鍏呯數鐘舵��
+
+ boolean isCharging();//鏄惁鍏呯數涓�
+
+ boolean isChargingCompleted();//鏄惁鍏呯數瀹屾垚
+
//***************鑾峰彇鍛戒护*****************
ShuttleCommand getMoveCommand(Integer taskNo, String startCodeNum, String distCodeNum, Integer allDistance, Integer runDirection, Integer runSpeed);//鑾峰彇绉诲姩鍛戒护
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/SurayShuttleThread.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/SurayShuttleThread.java
index 75dd1fd..e97a25f 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/SurayShuttleThread.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/SurayShuttleThread.java
@@ -7,11 +7,13 @@
import com.zy.asrs.framework.common.DateUtils;
import com.zy.asrs.framework.common.SpringUtils;
import com.zy.asrs.framework.exception.CoolException;
+import com.zy.asrs.wcs.core.entity.BasShuttle;
import com.zy.asrs.wcs.core.entity.Loc;
import com.zy.asrs.wcs.core.model.NavigateNode;
import com.zy.asrs.wcs.core.model.command.ShuttleCommand;
import com.zy.asrs.wcs.core.model.enums.ShuttleCommandModeType;
import com.zy.asrs.wcs.core.model.enums.ShuttleRunDirection;
+import com.zy.asrs.wcs.core.service.BasShuttleService;
import com.zy.asrs.wcs.core.service.LocService;
import com.zy.asrs.wcs.core.utils.NavigateUtils;
import com.zy.asrs.wcs.rcs.News;
@@ -357,6 +359,64 @@
}
@Override
+ public boolean isRequireCharge() {
+ if (this.shuttleProtocol.getIdle() == null
+ || this.shuttleProtocol.getPakMk() == null
+ || this.shuttleProtocol.getErrorCode() == null
+ || this.shuttleProtocol.getProtocolStatus() == null
+ ) {
+ return false;
+ }
+
+ boolean res = this.shuttleProtocol.getIdle()
+ && this.shuttleProtocol.getPakMk()
+ && this.shuttleProtocol.getErrorCode().equals("0")
+ && this.shuttleProtocol.getProtocolStatus() == ShuttleProtocolStatusType.IDLE.id
+ ;
+ if (!res) {
+ return res;
+ } else {
+ // 鐢甸噺灏忎簬闃堝�奸渶瑕佽繘琛屽厖鐢�
+ try {
+ BasShuttleService shuttleService = SpringUtils.getBean(BasShuttleService.class);
+ if (shuttleService == null) {
+ return false;
+ }
+ BasShuttle basShuttle = shuttleService.getById(this.device.getDeviceNo());
+ if (basShuttle == null) {
+ return false;
+ }
+ Integer chargeLine = basShuttle.getChargeLine();
+ if (chargeLine == null) {
+ return false;
+ }
+ return Integer.valueOf(this.shuttleProtocol.getBatteryPower()) < chargeLine;
+ } catch (Exception e) {
+ News.error("fail", e);
+ return false;
+ }
+ }
+ }
+
+ @Override
+ public boolean isCharging() {
+ if (this.shuttleProtocol.getDeviceStatus() == null) {
+ return false;
+ }
+
+ if (this.shuttleProtocol.getDeviceStatus() == 5 || this.shuttleProtocol.getDeviceStatus() == 13) {
+ //鍏呯數涓拰鐢垫睜鍧囪 =銆� 鍏呯數
+ return true;
+ }
+ return false;
+ }
+
+ @Override
+ public boolean isChargingCompleted() {
+ return false;
+ }
+
+ @Override
public ShuttleCommand getMoveCommand(Integer taskNo, String startCodeNum, String distCodeNum, Integer allDistance, Integer runDirection, Integer runSpeed) {
HashMap<String, Object> body = new HashMap<>();
body.put("messageName", "runOrder");
diff --git a/zy-asrs-wcs/src/main/resources/mapper/core/TaskMapper.xml b/zy-asrs-wcs/src/main/resources/mapper/core/TaskMapper.xml
index 6e65e4a..ab16d96 100644
--- a/zy-asrs-wcs/src/main/resources/mapper/core/TaskMapper.xml
+++ b/zy-asrs-wcs/src/main/resources/mapper/core/TaskMapper.xml
@@ -35,5 +35,18 @@
order by priority desc,start_time,task_no asc
</select>
+ <select id="hasChargeInLoc" resultType="com.zy.asrs.wcs.core.entity.Task">
+ select * from wcs_task
+ where task_sts in (201,202,203,204)
+ and dest_loc = #{locNo}
+ order by priority desc,start_time,task_no asc
+ </select>
+
+ <select id="selectMoveWorking" resultType="com.zy.asrs.wcs.core.entity.Task">
+ select * from wcs_task
+ where task_sts in (301,302,303)
+ and shuttle_no = #{shuttleNo}
+ order by priority desc,start_time,task_no asc
+ </select>
</mapper>
diff --git a/zy-asrs-wcs/src/main/resources/mapper/core/TaskSerialNoMapper.xml b/zy-asrs-wcs/src/main/resources/mapper/core/TaskSerialNoMapper.xml
new file mode 100644
index 0000000..78280c4
--- /dev/null
+++ b/zy-asrs-wcs/src/main/resources/mapper/core/TaskSerialNoMapper.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.zy.asrs.wcs.core.mapper.TaskSerialNoMapper">
+
+</mapper>
--
Gitblit v1.9.1