From 82ae4f5a83ffaadc6c7f37c19050400156eb8a9e Mon Sep 17 00:00:00 2001
From: zhoushihao <zsh19950802@163.com>
Date: 星期六, 28 十二月 2024 21:56:20 +0800
Subject: [PATCH] 1、中空大理片笼详情页新增删除、破损、拿走操作按钮接口 2、理片笼进片任务计算目标格子优化:笼子进笼将格子分组求笼内最大组序,确保中间块玻璃破损后仍能进入,导致玻璃错乱的情况

---
 hangzhoumesParent/moduleService/howllowGlassModule/src/main/java/com/mes/hollow/service/impl/HollowBigStorageCageDetailsServiceImpl.java |   96 ++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 92 insertions(+), 4 deletions(-)

diff --git a/hangzhoumesParent/moduleService/howllowGlassModule/src/main/java/com/mes/hollow/service/impl/HollowBigStorageCageDetailsServiceImpl.java b/hangzhoumesParent/moduleService/howllowGlassModule/src/main/java/com/mes/hollow/service/impl/HollowBigStorageCageDetailsServiceImpl.java
index e8a5742..25e0566 100644
--- a/hangzhoumesParent/moduleService/howllowGlassModule/src/main/java/com/mes/hollow/service/impl/HollowBigStorageCageDetailsServiceImpl.java
+++ b/hangzhoumesParent/moduleService/howllowGlassModule/src/main/java/com/mes/hollow/service/impl/HollowBigStorageCageDetailsServiceImpl.java
@@ -1,17 +1,27 @@
 package com.mes.hollow.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.mes.base.entity.vo.BigStorageVO;
+import com.mes.common.config.Const;
+import com.mes.glassinfo.entity.GlassInfo;
+import com.mes.glassinfo.service.GlassInfoService;
 import com.mes.hollow.entity.HollowBigStorageCageDetails;
-import com.mes.hollow.entity.dto.BigStorageSequenceDTO;
-import com.mes.hollow.entity.dto.FlowCardGlassInfoDTO;
-import com.mes.hollow.entity.dto.FlowCardVirtualSlotDTO;
-import com.mes.hollow.entity.dto.UpdateHollowBigStorageCageDTO;
+import com.mes.hollow.entity.HollowGlassRelationInfo;
+import com.mes.hollow.entity.dto.*;
+import com.mes.hollow.entity.vo.HollowBigStorageDetailsQueryVO;
 import com.mes.hollow.mapper.HollowBigStorageCageDetailsMapper;
 import com.mes.hollow.service.HollowBigStorageCageDetailsService;
+import com.mes.hollow.service.HollowBigStorageCageService;
+import com.mes.hollow.service.HollowGlassRelationInfoService;
+import com.mes.job.OpcPlcStorageCageHollowTask;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 
+import javax.annotation.Resource;
+import java.util.Arrays;
 import java.util.List;
 
 /**
@@ -24,6 +34,15 @@
 @Slf4j
 public class HollowBigStorageCageDetailsServiceImpl extends ServiceImpl<HollowBigStorageCageDetailsMapper, HollowBigStorageCageDetails> implements HollowBigStorageCageDetailsService {
 
+    @Resource
+    HollowBigStorageCageService hollowBigStorageCageService;
+
+    @Resource
+    HollowGlassRelationInfoService hollowGlassRelationInfoService;
+    @Resource
+    GlassInfoService glassInfoService;
+    @Resource
+    OpcPlcStorageCageHollowTask opcPlcStorageCageHollowTask;
 
     @Override
     public void updateBySlot(List<UpdateHollowBigStorageCageDTO> storageCageDTOList, Integer state) {
@@ -54,5 +73,74 @@
     public List<BigStorageVO> queryHollowbigStorageCageDetail() {
         return baseMapper.queryHollowbigStorageCageDetail();
     }
+
+    @Override
+    public List<HollowBigStorageCageDetails> querySlotMaxSequence(String flowCardId, Integer totalLayer, Integer layer, Integer virtualSlot) {
+        return baseMapper.querySlotMaxSequence(flowCardId, totalLayer, layer, virtualSlot);
+    }
+
+    @Override
+    public List<HollowBigStorageAndDetailsDTO> insertHollowBigStorageCageDetails(HollowBigStorageCageDetails bigStorageCageDetails) {
+        GlassInfo info = glassInfoService.getOne(new LambdaQueryWrapper<GlassInfo>().in(GlassInfo::getGlassId, bigStorageCageDetails.getGlassId()));
+        HollowBigStorageDTO hollowBigStorageDTO = hollowGlassRelationInfoService.queryHollowTargetSlot(bigStorageCageDetails.getFlowCardId(), bigStorageCageDetails.getWidth(),
+                bigStorageCageDetails.getHeight(), bigStorageCageDetails.getTotalLayer(), bigStorageCageDetails.getLayer());
+        HollowBigStorageCageDetails cageDetails = new HollowBigStorageCageDetails();
+        BeanUtils.copyProperties(hollowBigStorageDTO, cageDetails);
+        BeanUtils.copyProperties(info, cageDetails);
+        cageDetails.setState(Const.GLASS_STATE_NEW);
+        cageDetails.setSequence(hollowBigStorageDTO.getSlotSequence());
+        cageDetails.setGap(250);
+        cageDetails.setId(null);
+        this.save(cageDetails);
+        hollowGlassRelationInfoService.update(new LambdaUpdateWrapper<HollowGlassRelationInfo>()
+                .set(HollowGlassRelationInfo::getGlassId, cageDetails.getGlassId())
+                .set(HollowGlassRelationInfo::getTemperingLayoutId, cageDetails.getTemperingLayoutId())
+                .set(HollowGlassRelationInfo::getTemperingFeedSequence, cageDetails.getTemperingFeedSequence())
+                .set(HollowGlassRelationInfo::getEngineerId, cageDetails.getEngineerId())
+                .set(HollowGlassRelationInfo::getState, Const.HOLLOW_RELATION_OCCUPY)
+                .eq(HollowGlassRelationInfo::getFlowCardId, hollowBigStorageDTO.getFlowCardId())
+                .eq(HollowGlassRelationInfo::getLayer, hollowBigStorageDTO.getLayer())
+                .eq(HollowGlassRelationInfo::getVirtualSlot, hollowBigStorageDTO.getVirtualSlot())
+                .eq(HollowGlassRelationInfo::getSlotSequence, hollowBigStorageDTO.getSlotSequence())
+                .eq(HollowGlassRelationInfo::getHollowSequence, hollowBigStorageDTO.getHollowSequence())
+        );
+        HollowBigStorageDetailsQueryVO query = new HollowBigStorageDetailsQueryVO();
+        query.setDeviceId(bigStorageCageDetails.getDeviceId());
+        return hollowBigStorageCageService.queryHollowBigStorageCageDetail(query);
+    }
+
+    @Override
+    public List<HollowBigStorageAndDetailsDTO> deleteHollowBigStorageCageDetails(String glassId, Integer deviceId, Integer slot) {
+        return hollowBigStorageCageDetailsChild(glassId, deviceId, slot, Const.GLASS_STATE_OUT);
+    }
+
+    @Override
+    public List<HollowBigStorageAndDetailsDTO> damageHollowBigStorageCageDetails(String glassId, Integer deviceId, Integer slot, int state) {
+        return hollowBigStorageCageDetailsChild(glassId, deviceId, slot, state);
+    }
+
+    private List<HollowBigStorageAndDetailsDTO> hollowBigStorageCageDetailsChild(String glassId, Integer deviceId, Integer slot, int state) {
+        //灏嗗搴旀牸瀛愬彿鐨勭幓鐠僫d缃负101
+        this.update(new LambdaUpdateWrapper<HollowBigStorageCageDetails>()
+                .set(HollowBigStorageCageDetails::getState, state)
+                .eq(HollowBigStorageCageDetails::getSlot, slot)
+                .eq(HollowBigStorageCageDetails::getGlassId, glassId)
+        );
+        //灏嗘祦绋嬪崱骞胯タ琛ㄥ唴瀵瑰簲鐨勭幓鐠冧俊鎭竻闄�
+        hollowGlassRelationInfoService.update(new LambdaUpdateWrapper<HollowGlassRelationInfo>()
+                .set(HollowGlassRelationInfo::getGlassId, null)
+                .set(HollowGlassRelationInfo::getTemperingLayoutId, null)
+                .set(HollowGlassRelationInfo::getTemperingFeedSequence, null)
+                .set(HollowGlassRelationInfo::getEngineerId, null)
+                .set(HollowGlassRelationInfo::getState, Const.HOLLOW_RELATION_NEW)
+                .eq(HollowGlassRelationInfo::getGlassId, glassId)
+        );
+        //鏇存柊瀵瑰簲鏍煎瓙鐨勫墿浣欏昂瀵�
+        opcPlcStorageCageHollowTask.updateSlotRemainBySlots(Arrays.asList(slot));
+        //杩斿洖瀵瑰簲鐨勭瀛愮殑鍒楄〃淇℃伅
+        HollowBigStorageDetailsQueryVO query = new HollowBigStorageDetailsQueryVO();
+        query.setDeviceId(deviceId);
+        return hollowBigStorageCageService.queryHollowBigStorageCageDetail(query);
+    }
 }
 

--
Gitblit v1.8.0