From ed13d4fecbb497c98df3bed3d5d4037d1448124b Mon Sep 17 00:00:00 2001
From: zhoushihao <zsh19950802@163.com>
Date: 星期三, 23 十月 2024 20:17:14 +0800
Subject: [PATCH] 1、修改表结构,修改liquibase,在本地启动需要打开liquibase开关,重新执行执行脚本,将最新的结构更新到数据库,之后关闭liquibase开关 2、将各个模块的opc设为关闭状态,可按照实际开发情况在本地开关

---
 hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglassdetails/service/impl/RawGlassStorageDetailsServiceImpl.java |  183 ++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 161 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 031e115..a055efd 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,54 +1,193 @@
 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.UpdateWrapper;
+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.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+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;
 
 /**
- * <p>
- *  鏈嶅姟瀹炵幇绫�
- * </p>
- *
- * @author wf
- * @since 2024-09-10
+ * @author system
+ * @since 2024-07-09 14:51:27
  */
 @Service
-public abstract class RawGlassStorageDetailsServiceImpl extends ServiceImpl<RawGlassStorageDetailsMapper, RawGlassStorageDetails> implements RawGlassStorageDetailsService {
+@Slf4j
+public class RawGlassStorageDetailsServiceImpl extends ServiceImpl<RawGlassStorageDetailsMapper, RawGlassStorageDetails> implements RawGlassStorageDetailsService {
 
-    @Override
-    public boolean updateRawGlassStorageDetails(String films_id) {
-        UpdateWrapper<RawGlassStorageDetails> wrapper = new UpdateWrapper<>();  //杩欎釜绫诲瀷瀹氫箟閿欎簡锛屼笉搴旇鏄痶asking
-        wrapper.set("films_id","1005")
-              .eq( "films_id",films_id);
+    @Autowired
+    RawGlassStorageTaskService rawGlassStorageTaskService;
 
-        return update(wrapper);//杩欎釜鏂规硶榛樿杩斿洖鐨勫氨鏄痓ool绫诲瀷 鎵�鏈夊彲浠ョ洿鎺eturn杩欎釜鏂规硶锛宱k浜嗭紝浣犳甯稿垱寤烘柟娉曞幓涓婁竴灞傚垱
-    }
+    @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
-
+        return remove(queryWrapper);//remove鎵嶆槸鍒犻櫎锛宒elete寰楃敤鍙﹀鐨勪緷璧栵紝榛樿鏂规硶鏄痳emove杩斿洖bool
     }
 
     @Override
-               //杩斿洖绫诲瀷                    鏂规硶鍚�              浼犺緭鍊�
+    //杩斿洖绫诲瀷                    鏂规硶鍚�              浼犺緭鍊�
     public List<RawGlassStorageDetails> selectDetails() {
 //        QueryWrapper<RawGlassStorageDetails>queryWrapper=new QueryWrapper<>();
 //         queryWrapper.eq("id",rs.getId());
 //        return list(queryWrapper);
         return list();
     }
+
+
     @Override
-    public boolean insertRawGlassStorageDetails(RawGlassStorageDetails rw){
-        return this.save(rw);
+    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();
+        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";
+    }
+
+    @Override
+    public String UpdateQuantity(RawGlassRequest request) {
+        update(
+                new LambdaUpdateWrapper<RawGlassStorageDetails>()
+                        .set(RawGlassStorageDetails::getRemainQuantity, request.getRemainQuantity())
+                        .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