From 6abae920ad543ebdc3ee2e386828dd65e4c5ec35 Mon Sep 17 00:00:00 2001
From: zhoushihao <zsh19950802@163.com>
Date: 星期三, 06 十一月 2024 23:21:53 +0800
Subject: [PATCH] 1、opc订阅服务同时订阅一个节点两次,仅一个订阅任务生效,将进出片任务/完成任务放在一起 2、移除原片仓储中的下发字段
---
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglassdetails/service/impl/RawGlassStorageDetailsServiceImpl.java | 161 ++++++++++++++++++++++++++++++++++++++++++++++-------
1 files changed, 139 insertions(+), 22 deletions(-)
diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglassdetails/service/impl/RawGlassStorageDetailsServiceImpl.java b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglassdetails/service/impl/RawGlassStorageDetailsServiceImpl.java
index 8be12b1..746269b 100644
--- a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglassdetails/service/impl/RawGlassStorageDetailsServiceImpl.java
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglassdetails/service/impl/RawGlassStorageDetailsServiceImpl.java
@@ -1,19 +1,25 @@
package com.mes.rawglassdetails.service.impl;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.kangaroohy.milo.model.ReadWriteEntity;
+import com.kangaroohy.milo.service.MiloService;
import com.mes.common.config.Const;
import com.mes.rawglassdetails.entity.RawGlassStorageDetails;
import com.mes.rawglassdetails.entity.request.RawGlassRequest;
import com.mes.rawglassdetails.mapper.RawGlassStorageDetailsMapper;
import com.mes.rawglassdetails.service.RawGlassStorageDetailsService;
-import com.mes.rawglassstation.entity.RawGlassStorageStation;
-import com.mes.userinfo.entity.vo.SysUserVO;
+import com.mes.rawglasstask.entity.RawGlassStorageTask;
+import com.mes.rawglasstask.service.RawGlassStorageTaskService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@@ -24,8 +30,15 @@
@Service
@Slf4j
public class RawGlassStorageDetailsServiceImpl extends ServiceImpl<RawGlassStorageDetailsMapper, RawGlassStorageDetails> implements RawGlassStorageDetailsService {
- @Override
- public boolean deleteRawGlassStorageDetails(String device_id) {
+
+ @Autowired
+ RawGlassStorageTaskService rawGlassStorageTaskService;
+
+ @Autowired(required = false)
+ MiloService miloService;
+
+ @Override
+ public boolean deleteRawGlassStorageDetails(String device_id) {
QueryWrapper<RawGlassStorageDetails> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("device_id", device_id);
return remove(queryWrapper);//remove鎵嶆槸鍒犻櫎锛宒elete寰楃敤鍙﹀鐨勪緷璧栵紝榛樿鏂规硶鏄痳emove杩斿洖bool
@@ -42,13 +55,46 @@
@Override
- public String patternWarehousing(RawGlassRequest request) {
- //todo:鍘熺墖淇℃伅瀛樺叆璇︽儏琛�
+ public String warehousingRequest(int leftingStation) {
+ RawGlassStorageDetails storageDetails = getOne(new LambdaQueryWrapper<RawGlassStorageDetails>()
+ .in(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_IN_ALL));
+ if (null != storageDetails) {
+ log.info("褰撳墠鍚婅浣嶆湁鏋跺瓙锛岀粨鏉熸湰鍦板叆搴撹姹�");
+ return "fail";
+ }
+ List<Integer> shelfList = listBySlotState(Const.RAW_GLASS_DEVICE, Const.RAW_GLASS_STATE_IN_ALL);
+ if (CollectionUtils.isEmpty(shelfList)) {
+ log.info("褰撳墠宸ヤ綅涓嶅瓨鍦ㄥ彲鐢ㄧ殑绌烘灦瀛�");
+ return "fail";
+ }
+ Integer shelf = shelfList.get(0);
+ log.info("鐢熸垚浠诲姟");
+ try {
+ generateTask(shelf, leftingStation, shelf, 0, Const.RAW_GLASS_TASK_TYPE_IN_REQUEST);
+ } catch (Exception e) {
+ return "fail";
+ }
+ //鐢熸垚涓�鏉¤鎯呮暟鎹� 浠呰褰曟灦瀛愮姸鎬�
RawGlassStorageDetails details = new RawGlassStorageDetails();
- BeanUtils.copyProperties(request, details);
- details.setState(Const.GLASS_STATE_IN);
- details.setCreateTime(new Date());
+ details.setSlot(shelf);
+ details.setShelf(shelf);
+ details.setState(Const.RAW_GLASS_STATE_RUNNING);
save(details);
+ return "success";
+ }
+
+ @Override
+ public String patternWarehousing(RawGlassRequest request) {
+ RawGlassStorageDetails glassStorageDetails = getOne(new LambdaQueryWrapper<RawGlassStorageDetails>()
+ .eq(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_IN)
+ .eq(RawGlassStorageDetails::getSlot, request.getSlot()));
+ if (null == glassStorageDetails) {
+ log.info("褰撳墠鍚婅浣嶆病鏈夋灦瀛�");
+ }
+ //鍘熺墖淇℃伅瀛樺叆璇︽儏琛�
+ BeanUtils.copyProperties(request, glassStorageDetails);
+ log.info("瑕嗙洊鍚庡緱鍒扮殑宸ヤ綅璇︽儏淇℃伅涓猴細{}", glassStorageDetails);
+ updateById(glassStorageDetails);
return "success";
}
@@ -57,20 +103,91 @@
update(
new LambdaUpdateWrapper<RawGlassStorageDetails>()
.set(RawGlassStorageDetails::getRemainQuantity, request.getRemainQuantity())
- .eq(RawGlassStorageDetails::getSlotId, request.getSlotId()));
- return "success";
- }
- @Override
- public String deleteWarehousing(Long slotId) {
- update(new LambdaUpdateWrapper<RawGlassStorageDetails>().eq(RawGlassStorageDetails::getSlotId, slotId)
- .set(RawGlassStorageDetails::getState,Const.GLASS_STATE_OUT));
- return "success";
- }
- @Override
- public String outWarehousing(Long slotId) {
- update(new LambdaUpdateWrapper<RawGlassStorageDetails>().eq(RawGlassStorageDetails::getSlotId, slotId)
- .set(RawGlassStorageDetails::getState,Const.GLASS_STATE_OUT_ING));
+ .eq(RawGlassStorageDetails::getSlot, request.getSlot())
+ .eq(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_IN));
return "success";
}
+ @Override
+ public String deleteWarehousing(Long slotId) {
+ update(new LambdaUpdateWrapper<RawGlassStorageDetails>().eq(RawGlassStorageDetails::getSlot, slotId)
+ .eq(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_OUT)
+ .set(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_IN));
+ return "success";
+ }
+
+ @Override
+ public String outWarehousing(Long slotId) {
+ update(new LambdaUpdateWrapper<RawGlassStorageDetails>().eq(RawGlassStorageDetails::getSlot, slotId)
+ .eq(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_IN)
+ .set(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_WAIT_OUT));
+ //鐢熸垚涓�鏉¤鎯呮暟鎹� 浠呰褰曟灦瀛愮姸鎬�
+ return "success";
+ }
+
+ @Override
+ public List<Integer> listBySlotState(List<Integer> liftingStation, List<Integer> state) {
+ return baseMapper.listBySlotState(liftingStation, state);
+ }
+
+
+ @Override
+ public String outWarehousingRequest(int leftingStation) {
+ //瀵瑰簲宸ヤ綅鏄惁鏈夌┖鏋跺瓙
+ RawGlassStorageDetails details = getOne(new LambdaQueryWrapper<RawGlassStorageDetails>().eq(RawGlassStorageDetails::getState, Const.GLASS_STATE_IN)
+ .eq(RawGlassStorageDetails::getSlot, leftingStation));
+ if (null == details) {
+ log.info("鏃犵┖鏋跺瓙锛岀粨鏉熸湰鍦板嚭鐗囪姹�");
+ return "fail";
+ }
+ //鐢熸垚涓�鏉¤鎯呮暟鎹� 浠呰褰曟灦瀛愮姸鎬�
+ update(new LambdaUpdateWrapper<RawGlassStorageDetails>()
+ .eq(RawGlassStorageDetails::getSlot, details.getSlot())
+ .eq(RawGlassStorageDetails::getState, Const.GLASS_STATE_IN)
+ .set(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_RUNNING));
+ try {
+ generateTask(leftingStation, details.getShelf(), details.getShelf(), details.getRemainQuantity(), Const.RAW_GLASS_TASK_TYPE_OUT_REQUEST);
+ } catch (Exception e) {
+ return "fail";
+ }
+ return "success";
+ }
+
+ /**
+ * 鐢熸垚鍘熺墖浠撳偍浠诲姟
+ *
+ * @param startSlot
+ * @param endSlot
+ * @param patternQuantity
+ * @param taskType
+ * @return
+ */
+ @Override
+ public boolean generateTask(int startSlot, int endSlot, int shelf, int patternQuantity, int taskType) throws Exception {
+ RawGlassStorageTask task = RawGlassStorageTask.builder()
+ .startSlot(startSlot)
+ .endSlot(endSlot)
+ .patternQuantity(patternQuantity)
+ .taskType(taskType)
+ .taskState(Const.RAW_GLASS_TASK_NEW)
+ .shelf(shelf)
+ .createTime(new Date()).build();
+ rawGlassStorageTaskService.save(task);
+
+
+ List<ReadWriteEntity> list = new ArrayList<>();
+ list.add(generateReadWriteEntity("A01-CC.dev.taskWord", 1));
+// list.add(generateReadWriteEntity("A01-CC.dev.taskSending", 1));
+ list.add(generateReadWriteEntity("A01-CC.dev.startSlot", startSlot));
+ list.add(generateReadWriteEntity("A01-CC.dev.endSlot", endSlot));
+ miloService.writeToOpcWord(list);
+ return Boolean.TRUE;
+ }
+
+ private ReadWriteEntity generateReadWriteEntity(String identifier, int value) {
+ ReadWriteEntity readWriteEntity = new ReadWriteEntity();
+ readWriteEntity.setIdentifier(identifier);
+ readWriteEntity.setValue(value);
+ return readWriteEntity;
+ }
}
\ No newline at end of file
--
Gitblit v1.8.0