wang
2024-04-15 5d938403bcdb72346a963e831e41f812434ecca3
Merge branch 'master' of http://10.153.19.25:10101/r/HangZhouMes
2 文件已复制
40个文件已修改
10 文件已重命名
6个文件已添加
6个文件已删除
2037 ■■■■ 已修改文件
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/CacheVerticalClassModuleApplication.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/controller/BigStorageCageController.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/controller/BigStorageCageDetailsController.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/mapper/BigStorageCageDetailsMapper.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/mapper/BigStorageCageMapper.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/BigStorageCageDetailsService.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/BigStorageCageService.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageDetailsServiceImpl.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageServiceImpl.java 122 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/component/PlcStorageCage.java 21 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/glassinfo/controller/GlassInfoController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/glassinfo/entity/GlassInfo.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/glassinfo/mapper/GlassInfoMapper.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/glassinfo/service/GlassInfoService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/glassinfo/service/impl/GlassInfoServiceImpl.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/temperingglass/service/TemperingGlassInfoService.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/uppattenusage/entity/GlassInfo.java 130 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/glassinfo/controller/UpPattenUsageController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/glassinfo/entity/UpPattenUsage.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/glassinfo/mapper/UpPattenUsageMapper.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/glassinfo/service/UpPattenUsageService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/glassinfo/service/impl/UpPattenUsageServiceImpl.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/pom.xml 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/UnLoadGlassApplication.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/common/PLCAutoMes.java 91 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/common/S7control.java 470 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/controller/DownGlassInfoController.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/controller/DownGlassTaskController.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/entity/DownGlassInfo.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/mapper/DownGlassInfoMapper.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/mapper/DownGlassTaskMapper.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/DownGlassInfoService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/DownGlassTaskService.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/impl/DownGlassInfoServiceImpl.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/impl/DownGlassTaskServiceImpl.java 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/controller/DownStorageCageDetailsController.java 27 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/entity/DownStorageCageDetails.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/mapper/DownStorageCageDetailsMapper.java 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/DownGlassCacheLogic.java 245 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/DownStorageCageDetailsService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/DownStorageCageService.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/impl/DownStorageCageDetailsServiceImpl.java 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/impl/DownStorageCageServiceImpl.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/controller/DownWorkstationController.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/controller/DownWorkstationTaskController.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/entity/DownWorkstation.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/mapper/DownWorkstationMapper.java 58 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/mapper/DownWorkstationTaskMapper.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/DownGlassLogic.java 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/DownWorkstationService.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/DownWorkstationTaskService.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/impl/DownWorkstationServiceImpl.java 113 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/impl/DownWorkstationTaskServiceImpl.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/glassinfo/controller/GlassInfoController.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/glassinfo/entity/GlassInfo.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/glassinfo/mapper/GlassInfoMapper.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/glassinfo/service/GlassInfoService.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/glassinfo/service/impl/GlassInfoServiceImpl.java 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/uppattenusage/controller/GlassInfoController.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/uppattenusage/mapper/GlassInfoMapper.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/uppattenusage/service/GlassInfoService.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/uppattenusage/service/impl/GlassInfoServiceImpl.java 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/application.yml 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/mapper/DownGlassInfoMapper.xml 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/CacheVerticalClassModuleApplication.java
@@ -18,7 +18,6 @@
@EnableDiscoveryClient
@MapperScan(basePackages = "com.mes.*.mapper")
public class CacheVerticalClassModuleApplication {
    public static void main(String[] args) {
        try {
            SpringApplication.run(CacheVerticalClassModuleApplication.class, args);
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/controller/BigStorageCageController.java
@@ -35,13 +35,12 @@
    @ApiOperation("理片笼信息")
    @GetMapping("/bigStorageCage")
    public List<BigStorageCage> querybigStorageCageDetail() {
//        return bigStorageCageService.list();
        return bigStorageCageService.querybigStorageCageDetail();
    }
    @ApiOperation("手动完成任务")
    @GetMapping("/FinishTask")
    public void FinishTask(int type, int id) {
    @GetMapping("/finishTask")
    public void finishTask(int type, int id) {
        //    bigStorageCageDetailsService.FinishTask();
    }
}
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/controller/BigStorageCageDetailsController.java
@@ -29,16 +29,11 @@
    private BigStorageCageDetailsService bigStorageCageDetailsService;
    @ApiOperation("理片笼详情")
    @GetMapping("/BigStorageCageDetails")
    public List<BigStorageCageDetails> BigStorageCageDetails() {
    @GetMapping("/bigStorageCageDetails")
    public List<BigStorageCageDetails> bigStorageCageDetails() {
        return bigStorageCageDetailsService.list();
    }
    @ApiOperation("小车实时位置")
    @GetMapping("/CarPosition")
    public List<Integer> CarPosition() {
        return bigStorageCageDetailsService.getCarposition();
    }
}
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/mapper/BigStorageCageDetailsMapper.java
@@ -15,7 +15,4 @@
 */
public interface BigStorageCageDetailsMapper extends BaseMapper<BigStorageCageDetails> {
    BigStorageCageDetails SelectTemperingFeedSlot(@Param("bigStorageCageDetails") BigStorageCageDetails bigStorageCageDetails);
    BigStorageCageDetails SelectEmptyFeedSlot();
}
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/mapper/BigStorageCageMapper.java
@@ -3,7 +3,7 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.mes.bigstorage.entity.BigStorageCage;
import com.mes.bigstorage.entity.BigStorageCageDetails;
import com.mes.uppattenusage.entity.GlassInfo;
import com.mes.glassinfo.entity.GlassInfo;
import org.apache.ibatis.annotations.Update;
import java.util.List;
@@ -18,15 +18,4 @@
 */
public interface BigStorageCageMapper extends BaseMapper<BigStorageCage> {
    BigStorageCageDetails SelectEmptyFeedSlot();
    @Update("update big_storage_cage set remain_width = #{width} where slot=#{slot}")
    public void UpdateRemainWidth(int slot,int width);
    BigStorageCageDetails SelectTemperingFeedSlot(GlassInfo glassInfo);
    BigStorageCageDetails SelectOtherFeedSlot();
    List<String> selectTemperingId();
}
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/BigStorageCageDetailsService.java
@@ -2,9 +2,6 @@
import com.baomidou.mybatisplus.extension.service.IService;
import com.mes.bigstorage.entity.BigStorageCageDetails;
import com.mes.bigstorage.mapper.BigStorageCageMapper;
import java.util.List;
/**
 * <p>
@@ -16,7 +13,4 @@
 */
public interface BigStorageCageDetailsService extends IService<BigStorageCageDetails> {
    public boolean getTemperingGlass();
    List<Integer> getCarposition();
}
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/BigStorageCageService.java
@@ -3,7 +3,8 @@
import com.baomidou.mybatisplus.extension.service.IService;
import com.mes.bigstorage.entity.BigStorageCage;
import com.mes.bigstorage.entity.BigStorageCageDetails;
import com.mes.uppattenusage.entity.GlassInfo;
import com.mes.glassinfo.entity.GlassInfo;
import com.mes.glassinfo.entity.GlassInfo;
import java.util.List;
@@ -19,7 +20,11 @@
    void updateRemainWidth(int Slot);
    BigStorageCageDetails FeedGlass(GlassInfo glassInfo, BigStorageCageDetails bigStorageCageDetails);
    BigStorageCageDetails feedGlass(GlassInfo glassInfo, BigStorageCageDetails bigStorageCageDetails);
    boolean outGlass();
    List<BigStorageCage> querybigStorageCageDetail();
}
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageDetailsServiceImpl.java
@@ -8,6 +8,7 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
/**
@@ -20,8 +21,9 @@
 */
@Service
public class BigStorageCageDetailsServiceImpl extends ServiceImpl<BigStorageCageDetailsMapper, BigStorageCageDetails> implements BigStorageCageDetailsService {
    @Autowired
    @Resource
    private BigStorageCageMapper bigStorageCageMapper;
    @Override
    public boolean getTemperingGlass(){
        //获取笼子内所有版图号
@@ -31,9 +33,5 @@
        }
        return true;
    }
    @Override
    public List<Integer> getCarposition(){
        return null;
    }
}
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageServiceImpl.java
@@ -1,13 +1,18 @@
package com.mes.bigstorage.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.mes.bigstorage.entity.BigStorageCage;
import com.mes.bigstorage.entity.BigStorageCageDetails;
import com.mes.bigstorage.mapper.BigStorageCageDetailsMapper;
import com.mes.bigstorage.mapper.BigStorageCageMapper;
import com.mes.bigstorage.service.BigStorageCageService;
import com.mes.uppattenusage.entity.GlassInfo;
import com.mes.glassinfo.entity.GlassInfo;
import com.mes.temperingglass.entity.TemperingGlassInfo;
import lombok.extern.slf4j.Slf4j;
import com.mes.glassinfo.entity.GlassInfo;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@@ -15,6 +20,7 @@
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
 * <p>
@@ -27,7 +33,6 @@
@Service
@Slf4j
public class BigStorageCageServiceImpl extends ServiceImpl<BigStorageCageMapper, BigStorageCage> implements BigStorageCageService {
    @Resource
    private BigStorageCageMapper bigStorageCageMapper;
@@ -35,39 +40,105 @@
    private BigStorageCageDetailsMapper bigStorageCageDetailsMapper;
    @Override
    public BigStorageCageDetails FeedGlass(GlassInfo glassInfo, BigStorageCageDetails bigStorageCageDetails) {
    public BigStorageCageDetails feedGlass(GlassInfo glassInfo, BigStorageCageDetails bigStorageCageDetails) {
        //1、查询理片笼内玻璃片序等于当前玻璃片序-1的玻璃
        LambdaQueryWrapper<BigStorageCageDetails> wrapper = new LambdaQueryWrapper<>();
        wrapper.eq(BigStorageCageDetails::getTemperingLayoutId, glassInfo.getTemperingLayoutId())
                .eq(BigStorageCageDetails::getTemperingFeedSequence, glassInfo.getTemperingFeedSequence() + 1);
        //获取同钢化版图id可进片的格子
        BigStorageCageDetails layoutSlotInfo = bigStorageCageMapper.SelectTemperingFeedSlot(glassInfo);
        //有符合条件的格子时
        if (layoutSlotInfo != null) {
            //将玻璃信息填入理片笼详情表
        BigStorageCageDetails layoutSlotInfo = bigStorageCageDetailsMapper.selectOne(wrapper);
        BeanUtils.copyProperties(glassInfo, bigStorageCageDetails);
        bigStorageCageDetails.setSlot(layoutSlotInfo.getSlot());
        //2、有符合条件的格子活片序为1时
        if (layoutSlotInfo.getSlot() != null) {
            bigStorageCageDetails.setSlot(layoutSlotInfo.getSlot());
        } else {
            //获取不到时:
//            LambdaQueryWrapper<BigStorageCageDetails> BigStorageCageDetailslambdaQueryWrapper = new LambdaQueryWrapper<>();
//            BigStorageCageDetailslambdaQueryWrapper
//                    .select(BigStorageCageDetails::getTemperingLayoutId)
//                    .groupBy(BigStorageCageDetails::getTemperingLayoutId);
//            List<Map<String, Object>> temperingLayoutIdList= bigStorageCageDetailsMapper.selectMaps(BigStorageCageDetailslambdaQueryWrapper);
//            for (Map<String, Object> map : temperingLayoutIdList) {
//                for (Map.Entry<String, Object> entry : map.entrySet()) {
//                    String prefix = entry.getKey().substring(0, entry.getKey().indexOf('-'));
//                    String suffix = entry.getKey().substring(entry.getKey().indexOf('-') + 1);
//                    if(suffix.equals(entry.getValue())){
//
//                    }
//                }
//            }
            //获取可进片格子信息
            BigStorageCageDetails EmptySlotInfo = bigStorageCageMapper.SelectEmptyFeedSlot();
            if (EmptySlotInfo != null) {
                bigStorageCageDetails.setSlot(EmptySlotInfo.getSlot());
            } else {
                //获取其他笼格子-
                BigStorageCageDetails OtherSlotInfo = bigStorageCageMapper.SelectOtherFeedSlot();
                bigStorageCageDetails.setSlot(OtherSlotInfo.getSlot());
            }
//            BigStorageCageDetails EmptySlotInfo = bigStorageCageMapper.selectEmptyFeedSlot();
//            if (EmptySlotInfo != null) {
//                bigStorageCageDetails.setSlot(EmptySlotInfo.getSlot());
//            } else {
//                //获取其他笼格子-
//                BigStorageCageDetails OtherSlotInfo = bigStorageCageMapper.selectOtherFeedSlot();
//                bigStorageCageDetails.setSlot(OtherSlotInfo.getSlot());
//            }
            //将玻璃信息放入该格子
        }
        if (bigStorageCageDetails.getSlot() != null) {
            bigStorageCageDetailsMapper.insert(bigStorageCageDetails);
        updateRemainWidth(bigStorageCageDetails.getSlot());
        }
        return bigStorageCageDetails;
    }
    @Override
    public boolean outGlass() {
//        // 1、查询钢化小片任务表是否有待出玻璃
//        List<TemperingGlassInfo> temperingGlassInfoList = temperingGlassInfoService.SelectTemperingGlassInfo();
//        //没有可出的玻璃时
//        if (temperingGlassInfoList != null) {
//            //查询是否有小片全部到齐的钢化版图
//        } else {
//            //继续当前钢化版图的任务
//        }
        LambdaQueryWrapper<BigStorageCageDetails> bigStorageCageDetailslambdaQueryWrapper = new LambdaQueryWrapper<>();
        bigStorageCageDetailslambdaQueryWrapper
                .select(BigStorageCageDetails::getTemperingLayoutId)
                .groupBy(BigStorageCageDetails::getTemperingLayoutId);
        List<Map<String, Object>> temperingLayoutIdList = bigStorageCageDetailsMapper.selectMaps(bigStorageCageDetailslambdaQueryWrapper);
        for (Map<String, Object> map : temperingLayoutIdList) {
            for (Map.Entry<String, Object> entry : map.entrySet()) {
                String prefix = entry.getKey().substring(0, entry.getKey().indexOf('-'));
                String suffix = entry.getKey().substring(entry.getKey().indexOf('-') + 1);
                if (suffix.equals(entry.getValue())) {
                }
            }
        }
        return true;
    }
    //修改格子剩余宽度
    @Override
    public void updateRemainWidth(int slot) {
        //获取该格子内玻璃信息
        Integer width = 5000;
        List<BigStorageCageDetails> bigStorageCageDetailsList = Collections.singletonList(bigStorageCageDetailsMapper.selectById(slot));
        for (BigStorageCageDetails bigStorageCageDetails : bigStorageCageDetailsList
        ) {
            width -= Integer.parseInt(bigStorageCageDetails.getWidth().toString()) + bigStorageCageDetails.getGap();
        }
        //修改格子剩余宽度
        BigStorageCage bigStorageCage = new BigStorageCage();
        bigStorageCage.setRemainWidth(width);
        UpdateWrapper<BigStorageCage> bigStorageCageWrapper = new UpdateWrapper<>();
        bigStorageCageWrapper.eq("remain_width", width);
        bigStorageCageMapper.update(bigStorageCage, bigStorageCageWrapper);
    }
    @Override
    public List<BigStorageCage> querybigStorageCageDetail() {
        //1、获取大理片笼信息
//        List<BigStorageCage> bigStorageCages = bigStorageCageMapper.querybigStorageCageDetail(null);
        List<BigStorageCage> bigStorageCages = bigStorageCageMapper.selectList(null);
        log.info("1、获取大理片笼信息完成,获取到的数据{}", bigStorageCages.size());
        //2获取理片笼所有信息
@@ -78,21 +149,6 @@
            bigStorageCage.setBigStorageCageDetails(bigStorageCageDetails);
        }
        return bigStorageCages;
    }
    //修改格子剩余宽度
    @Override
    public void updateRemainWidth(int Slot) {
        //获取该格子内玻璃信息
        int width = 5000;
        List<BigStorageCageDetails> bigStorageCageDetailsList = Collections.singletonList(bigStorageCageDetailsMapper.selectById(Slot));
        for (BigStorageCageDetails bigStorageCageDetails : bigStorageCageDetailsList
        ) {
            width -= Integer.parseInt(bigStorageCageDetails.getWidth().toString()) + bigStorageCageDetails.getGap();
        }
        //修改格子剩余宽度
        bigStorageCageMapper.UpdateRemainWidth(Slot, width);
    }
}
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/component/PlcStorageCage.java
@@ -5,8 +5,8 @@
import com.mes.bigstorage.service.BigStorageCageService;
import com.mes.temperingglass.entity.TemperingGlassInfo;
import com.mes.temperingglass.service.TemperingGlassInfoService;
import com.mes.uppattenusage.entity.GlassInfo;
import com.mes.uppattenusage.service.GlassInfoService;
import com.mes.glassinfo.entity.GlassInfo;
import com.mes.glassinfo.service.GlassInfoService;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.List;
@@ -21,11 +21,11 @@
    private TemperingGlassInfoService temperingGlassInfoService;
    @Autowired
    private GlassInfoService glassInfoService;
    @Override
    public void run() {
        while (this != null) {
            try {
                Thread.sleep(500);
                String plcFeedReq ="0";
                String plcFeedGlassid ="111";
@@ -35,7 +35,7 @@
                    //传入玻璃id
                    GlassInfo glassInfo=glassInfoService.getById(plcFeedGlassid);
                    BigStorageCageDetails SlotInfo=bigStorageCageService.FeedGlass(glassInfo,bigStorageCageDetails);
                    BigStorageCageDetails SlotInfo = bigStorageCageService.feedGlass(glassInfo, bigStorageCageDetails);
                    if(SlotInfo!=null){
                        //plc任务发送字
                    }
@@ -46,23 +46,12 @@
                boolean result=false;
                if("1".equals(plcOutReq)){
                    //获取钢化小片表未出笼信息
                    List<TemperingGlassInfo> temperingGlassInfoList = temperingGlassInfoService.SelectTemperingGlassInfo();
                    //没有可出的玻璃时
                    if(temperingGlassInfoList!=null){
                        //查询是否有小片全部到齐的钢化版图
                        result = bigStorageCageDetailsService.getTemperingGlass();
                    }else{
                        //继续当前钢化版图的任务
                        temperingGlassInfoService.addOutTask(temperingGlassInfoList);
                        result=true;
                    }
                    if(result==true){
                        //plc任务发送字
                    }
                }
            } catch (Exception e) {
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/glassinfo/controller/GlassInfoController.java
File was renamed from hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/uppattenusage/controller/GlassInfoController.java
@@ -1,4 +1,4 @@
package com.mes.uppattenusage.controller;
package com.mes.glassinfo.controller;
import org.springframework.web.bind.annotation.RequestMapping;
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/glassinfo/entity/GlassInfo.java
copy from hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/uppattenusage/entity/GlassInfo.java copy to hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/glassinfo/entity/GlassInfo.java
File was copied from hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/uppattenusage/entity/GlassInfo.java
@@ -1,11 +1,10 @@
package com.mes.uppattenusage.entity;
package com.mes.glassinfo.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import java.io.Serializable;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
/**
 * <p>
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/glassinfo/mapper/GlassInfoMapper.java
File was renamed from hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/uppattenusage/mapper/GlassInfoMapper.java
@@ -1,7 +1,7 @@
package com.mes.uppattenusage.mapper;
package com.mes.glassinfo.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.mes.uppattenusage.entity.GlassInfo;
import com.mes.glassinfo.entity.GlassInfo;
/**
 * <p>
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/glassinfo/service/GlassInfoService.java
File was renamed from hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/uppattenusage/service/GlassInfoService.java
@@ -1,7 +1,7 @@
package com.mes.uppattenusage.service;
package com.mes.glassinfo.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.mes.uppattenusage.entity.GlassInfo;
import com.mes.glassinfo.entity.GlassInfo;
/**
 * <p>
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/glassinfo/service/impl/GlassInfoServiceImpl.java
File was renamed from hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/uppattenusage/service/impl/GlassInfoServiceImpl.java
@@ -1,9 +1,9 @@
package com.mes.uppattenusage.service.impl;
package com.mes.glassinfo.service.impl;
import com.mes.uppattenusage.entity.GlassInfo;
import com.mes.glassinfo.entity.GlassInfo;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.mes.uppattenusage.mapper.GlassInfoMapper;
import com.mes.uppattenusage.service.GlassInfoService;
import com.mes.glassinfo.mapper.GlassInfoMapper;
import com.mes.glassinfo.service.GlassInfoService;
import org.springframework.stereotype.Service;
/**
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/temperingglass/service/TemperingGlassInfoService.java
@@ -15,5 +15,6 @@
 */
public interface TemperingGlassInfoService extends IService<TemperingGlassInfo> {
    public void addOutTask(List<TemperingGlassInfo> temperingGlassInfoList);
    public List<TemperingGlassInfo> SelectTemperingGlassInfo();
}
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/uppattenusage/entity/GlassInfo.java
File was deleted
hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/glassinfo/controller/UpPattenUsageController.java
File was renamed from hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/uppattenusage/controller/UpPattenUsageController.java
@@ -1,4 +1,4 @@
package com.mes.uppattenusage.controller;
package com.mes.glassinfo.controller;
import org.springframework.web.bind.annotation.RequestMapping;
hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/glassinfo/entity/UpPattenUsage.java
File was renamed from hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/uppattenusage/entity/UpPattenUsage.java
@@ -1,4 +1,4 @@
package com.mes.uppattenusage.entity;
package com.mes.glassinfo.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/glassinfo/mapper/UpPattenUsageMapper.java
File was renamed from hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/uppattenusage/mapper/UpPattenUsageMapper.java
@@ -1,7 +1,7 @@
package com.mes.uppattenusage.mapper;
package com.mes.glassinfo.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.mes.uppattenusage.entity.UpPattenUsage;
import com.mes.glassinfo.entity.UpPattenUsage;
/**
 * <p>
hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/glassinfo/service/UpPattenUsageService.java
File was renamed from hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/uppattenusage/service/UpPattenUsageService.java
@@ -1,7 +1,7 @@
package com.mes.uppattenusage.service;
package com.mes.glassinfo.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.mes.uppattenusage.entity.UpPattenUsage;
import com.mes.glassinfo.entity.UpPattenUsage;
/**
 * <p>
hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/glassinfo/service/impl/UpPattenUsageServiceImpl.java
File was renamed from hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/uppattenusage/service/impl/UpPattenUsageServiceImpl.java
@@ -1,9 +1,9 @@
package com.mes.uppattenusage.service.impl;
package com.mes.glassinfo.service.impl;
import com.mes.uppattenusage.entity.UpPattenUsage;
import com.mes.glassinfo.entity.UpPattenUsage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.mes.uppattenusage.mapper.UpPattenUsageMapper;
import com.mes.uppattenusage.service.UpPattenUsageService;
import com.mes.glassinfo.mapper.UpPattenUsageMapper;
import com.mes.glassinfo.service.UpPattenUsageService;
import org.springframework.stereotype.Service;
/**
hangzhoumesParent/moduleService/UnLoadGlassModule/pom.xml
@@ -23,6 +23,16 @@
            <version>2.8.9</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>com.github.yulichang</groupId>
            <artifactId>mybatis-plus-join</artifactId>
            <version>1.2.4</version>
        </dependency>
    </dependencies>
    <properties>
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/UnLoadGlassApplication.java
@@ -9,7 +9,7 @@
/**
 * @Author : zhoush
 * @Date: 2024/4/7 14:36
 * @Date: 2024/4/7 14:36RRRR
 * @Description:
 */
@SpringBootApplication
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/common/PLCAutoMes.java
New file
@@ -0,0 +1,91 @@
package com.mes.common;
import com.mes.device.PlcParameterObject;
import com.mes.tools.InitUtil;
import org.springframework.context.annotation.Configuration;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import static com.mes.tools.InitUtil.readAndUpdateWordValues;
public class PLCAutoMes extends Thread {
    // 用于存储应用程序的配置信息
    private Configuration config;
    private static InitUtil initUtil;
    // 单例实例
    private static PLCAutoMes instance;
    private static String PlcMes = PLCAutoMes.class.getResource("/JsonFile/PlcMes.json").getPath();
    private static String PlcRead = PLCAutoMes.class.getResource("/JsonFile/PlcRead.json").getPath();
    private static String Plcframe = PLCAutoMes.class.getResource("/JsonFile/Plcframe.json").getPath();
//    private static String PlcParameter = PLCAutomaticParameterSettingReview2.class
//            .getResource("/JsonFile/PlcParameter.json").getPath();
//    private static String PlcSign = PLCAutomaticParameterSettingReview2.class.getResource("/JsonFile/PlcSign.json")
//            .getPath();
//    private static String PlcState = PLCAutomaticParameterSettingReview2.class.getResource("/JsonFile/PlcState.json")
//            .getPath();
    private static String PlcAlarm = PLCAutoMes.class.getResource("/JsonFile/PlcAlarm.json").getPath();
   // private static String PlcTest = PLCAutoMes.class.getResource("/JsonFile/PlcTest.json").getPath();
    // 调用initword方法
//
   // public static PlcBitObject plcPlcAlarm = initUtil.initbit(PlcAlarm);
    public static PlcParameterObject PlcMesObject = initUtil.initword(PlcMes);
    public static PlcParameterObject PlcReadObject = initUtil.initword(PlcRead);
    public static PlcParameterObject PlcframeObject = initUtil.initword(Plcframe);
    // 私有构造函数
    public PLCAutoMes() throws IOException {
        initUtil = new InitUtil();
    }
    // 获取单例实例
    public static synchronized PLCAutoMes getInstance() throws IOException {
        if (instance == null) {
            instance = new PLCAutoMes();
        }
        return instance;
    }
    @Override
    public void run() {
        while (this != null) {
            try {
                Thread.sleep(100);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            // System.out.println(jsonFilePath);
          // readAndUpdateWordValues(PlcReadObject);
            readAndUpdateWordValues(PlcMesObject);
//      readAndUpdateWordValues(PlcframeObject);
            // readAndUpdateWordValues(PlcframeObject);
            // readAndUpdateWordValues(plcStateObject);
          //  int index = PlcMesObject.getPlcParameter("AddStart").getAddressIndex();
            // System.out.println(index);
          //  PlcMesObject.getPlcParameter("AddStart").getAddress(index);
            // System.out.println(PlcMesObject.getPlcParameter("AddStart").getAddress(index));
            List<String> addresses = new ArrayList<>();
            addresses.add("FeedID");
            addresses.add("AddStart");
            // System.out.println(addresses);
            // System.out.println(PlcMesObject.getPlcParameterValues(addresses));
            List<String> addresses2 = new ArrayList<>();
            addresses2.add("FeedID");
            addresses2.add("FeedCarStatus");
         //   System.out.println(PlcReadObject.getPlcParameterValues(addresses2));
        }
    }
}
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/common/S7control.java
New file
@@ -0,0 +1,470 @@
package com.mes.common;
import com.github.xingshuangs.iot.protocol.s7.enums.EPlcType;
import com.github.xingshuangs.iot.protocol.s7.service.MultiAddressWrite;
import com.github.xingshuangs.iot.protocol.s7.service.S7PLC;
import com.google.common.primitives.Bytes;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.List;
public class S7control {
    S7PLC s7PLC; // PLC通讯类实例
    private EPlcType plcType = EPlcType.S1500; // 西门子PLC类型
    private String ip = "192.168.10.1"; // plc ip地址
    private int port = 102; // plc 端口号
    private static volatile S7control instance = null;
    private S7control() {
        if (s7PLC == null)
            s7PLC = new S7PLC(plcType, ip, port,0,0);
    }
    // 单例模式 获取类的唯一实例
    public static S7control getinstance() {
        if (instance == null) {
            synchronized (S7control.class) {
                if (instance == null) {
                    instance = new S7control();
                }
            }
        }
        return instance;
    }
    /**
     * 关闭西门子s7通讯连接
     */
    public void CloseS7client() {
        if (s7PLC == null)
            s7PLC.close();
            s7PLC.checkConnected();
    }
    /**
     * s7通讯连接状态
     */
    public boolean CheckConnected() {
        return s7PLC.checkConnected();
    }
    /**
     * 按指定的地址 写入一个word
     *
     * @param address 地址
     * @param data    word的值
     */
    public void WriteWord(String address, short data) {
        if (s7PLC==null)
        {
            return;
        }
        s7PLC.writeInt16(address, data);
    }
    /**
     * 从某地址连续 写入多个word
     *
     * @param address 地址
     * @param datas   word的值
     */
    public void WriteWord(String address, List<Short> datas) {
        if (s7PLC==null)
            return;
        // s7PLC.write(address, data);
        List<String> addresslist = GetAddressList(address, datas.size(), 16);
        MultiAddressWrite addressWrite = new MultiAddressWrite();
        for (int i = 0; i < datas.size(); i++) {
            addressWrite.addInt16(addresslist.get(i), datas.get(i));
        }
        s7PLC.writeMultiData(addressWrite);
    }
    /**
     * 按指定的地址 写入多个word
     *
     * @param address 地址
     * @param datas   word的值
     */
    /**
     * 按指定的地址 写入一个Bit
     *
     * @param address 地址
     * @param data    Bit的值
     */
    public void WriteBit(String address, Boolean data) {
        if (s7PLC==null)
            return;
        s7PLC.writeBoolean(address, data);
    }
    /**
     * 按指定的地址 写入多个bit
     *
     * @param address 地址
     * @param datas   bit的值
     */
    public void WriteBit(List<String> address, List<Boolean> datas) {
        if (s7PLC==null)
            return;
        // s7PLC.write(address, data);
        MultiAddressWrite addressWrite = new MultiAddressWrite();
        for (int i = 0; i < address.size(); i++) {
            addressWrite.addBoolean(address.get(i), datas.get(i));
        }
        s7PLC.writeMultiData(addressWrite);
    }
    /**
     * 从某地址连续 写入多个bit
     *
     * @param address 地址
     * @param datas   word的值
     */
    public void WriteBit(String address, List<Boolean> datas) {
        if (s7PLC==null)
            return;
        // s7PLC.write(address, data);
        List<String> addresslist = GetAddressList(address, datas.size(), 1);
        MultiAddressWrite addressWrite = new MultiAddressWrite();
        for (int i = 0; i < datas.size(); i++) {
            addressWrite.addBoolean(addresslist.get(i), datas.get(i));
        }
        s7PLC.writeMultiData(addressWrite);
    }
     /**
     * 按指定的地址 写入多个byte
     *
     * @param address 地址
     * @param datas   byte的值
     */
    public void WriteByte(String address, byte[] datas) {
        if (s7PLC==null)
            return;
        // s7PLC.write(address, data);
        s7PLC.writeByte(address, datas);
    }
    /**
     * 按指定的地址 读取word结果集
     *
     * @param address 地址
     * @return 结果
     */
    public List<Short> ReadWord(List<String> address) {
        if (s7PLC == null)
            return null;
        try {
            return s7PLC.readInt16(address);
        } catch (Exception e) {
            System.out.println("读取 " + address + " 失败:" + e.getMessage());
            return null;
        }
    }
    private int getIndexFromAddress(String address) {
        // 可以解析出地址中的数字部分,并转换为整数
        return 0;
    }
    private String getAddressFromIndex(int index) {
        // 整数转换为地址格式的字符串
        return "";
    }
    /**
     * 按指定的地址 读取word结果集
     *
     * @param address 地址
     * @param count   连续读多少个word
     * @return 结果
     */
    public List<Short> ReadWord(String address, int count) {
        if (s7PLC == null)
            return null;
        List<String> addresslist = GetAddressList(address, count, 16);
        try {
            return s7PLC.readInt16(addresslist);
        } catch (Exception e) {
            System.out.println("读取 " + address + " 失败:" + e.getMessage());
            return null;
        }
    }
    /**
     * 按指定的地址 读取byte结果集
     *
     * @param address 地址
     * @param count   连续读多少个byte
     * @return 结果
     */
    public byte[] ReadByte(String address, int count) {
        if (s7PLC==null)
             return null;
       // List<String> addresslist = GetAddressList(address, count, 16);
        try {
            return s7PLC.readByte(address, count);
        }catch (Exception e) {
            // 处理异常
            System.out.println("读取 " + address + " 失败:" + e.getMessage());
            return null;
        }
    }
    /**
     * 按指定的地址 按bit位 0 flase 1 true 读取结果
     *
     * @param addresslist 地址集
     * @return Boolean结果
     */
    public List<Boolean> ReadBits(List<String> addresslist) {
        if (s7PLC==null)
             return null;
        return s7PLC.readBoolean(addresslist);
    }
//读取不连续地址bit
public List<Boolean> readBits(List<String> addressList) {
    if (s7PLC == null || addressList.isEmpty()) {
        return null;
    }
    List<Boolean> values = new ArrayList<>();
    for (String address : addressList) {
        try {
            boolean value = s7PLC.readBoolean(address);
            values.add(value);
        } catch (Exception e) {
            // 处理异常
            System.out.println("读取 " + address + " 失败:" + e.getMessage());
        }
    }
    return values;
}
//读取String
public List<String> readStrings(List<String> addressList) {
    if (s7PLC == null) {
        return null;
    }
    List<String> result = new ArrayList<>();
    for (String address : addressList) {
        try {
            byte[] bytes = s7PLC.readByte(address, 14);
            if (bytes != null) {
                String str = new String(bytes, StandardCharsets.UTF_8);
                result.add(str);
            }
        } catch (Exception e) {
            System.out.println("读取 " + address + " 失败:" + e.getMessage());
            result.add(null);
        }
    }
    return result;
}
    public List<String> readStringsandword(List<String> addressList) {
        if (s7PLC == null) {
            return null;
        }
        List<String> result = new ArrayList<>();
        for (String address : addressList) {
            try {
                if (address.contains("-")) {
                    address = address.substring(0, address.indexOf("-"));
                    byte[] bytes = s7PLC.readByte(address, 14);
                    if (bytes != null) {
                        String str = new String(bytes, StandardCharsets.UTF_8);
                        result.add(str);
                    }
                } else {
                    Short value = s7PLC.readInt16(address);
                    result.add(value.toString());
                }
            } catch (Exception e) {
                System.out.println("读取 " + address + " 失败:" + e.getMessage());
                result.add(null);
            }
        }
        return result;
    }
//不连续地址写入Word
    public void WriteWord(List<String> address, List<Short> datas) {
        if (s7PLC == null)
            return;
        for (int i = 0; i < address.size(); i++) {
            String addr = address.get(i);
            short data = datas.get(i);
            if (addr.contains("-")) {
                outmesid(String.valueOf(data),addr); // 单独处理带破折号的地址
            } else {
                s7PLC.writeInt16(addr, data); // 将数据写入单个地址
            }
        }
    }
//字符串写入
    public void outmesid(String data, String addr) {
//        System.out.println("outmesid: " + data);
        List<Byte> glassidlist = new ArrayList<>();
        String[] parts = addr.split("-");
        if (parts.length == 2) {
            addr = parts[0]; // 只保留 "-" 前面的部分
        }
        for (char iditem : data.toCharArray()) {
            glassidlist.add(Byte.valueOf(String.valueOf(iditem)));
        }
        byte[] bytes = Bytes.toArray(glassidlist);
        S7control.getinstance().WriteByte(addr, bytes);
    }
//读取不连续word
    public List<Short> readWords(List<String> addresses) {
        if (s7PLC == null) {
            return null;
        }
        List<Short> data = new ArrayList<>();
        for (String address : addresses) {
            try {
                // 单个地址
                Short value = s7PLC.readInt16(address);
                data.add(value);
            } catch (Exception e) {
                System.out.println("读取 " + address + " 失败:" + e.getMessage());
            }
        }
        return data;
    }
//读取时间
public Long readtime(String address) {
    if (s7PLC == null)
        return null;
    try {
        return s7PLC.readTime(address);
    } catch (Exception e) {
        System.out.println("读取 " + address + " 失败:" + e.getMessage());
        return null;
    }
}
    public void writetime(String address, long datas) {
        if (s7PLC == null)
            return;
        s7PLC.writeTime(address, datas); // 将数据写入单个地址
    }
    private int extractAddressNumber(String address) {
        String numberStr = address.replaceAll("\\D+", ""); // 使用正则表达式提取数字部分
        return Integer.parseInt(numberStr);
    }
    /**
     * 从指定的地址开始 连续按bit位读取
     *
     * @param address 地址
     * @param count   长度
     * @return Boolean结果
     */
    public List<Boolean> ReadBits(String address, int count) {
        if (s7PLC == null)
            return null;
        List<String> addresslist = GetAddressList(address, count, 1);
        try {
            return s7PLC.readBoolean(addresslist);
        } catch (Exception e) {
            System.out.println("读取 " + address + " 失败:" + e.getMessage());
            return null;
        }
    };
    public void writeString(String addr,String data) {
        s7PLC.writeString(addr,data);
    }
    private List<String> GetAddressList(String address, int count, int addedbit) {
        List<String> addresslist = new ArrayList<String>();
        String[] stringdatas = address.trim().split("\\.");
        if (stringdatas.length < 2 || !address.startsWith("DB"))
            return null;
        int dbwindex = 0;
        int bitindex = 0;
        if (stringdatas.length == 2) {
            dbwindex = Integer.parseInt(stringdatas[1]);
        } else if (stringdatas.length == 3) {
            dbwindex = Integer.parseInt(stringdatas[1]);
            bitindex = Integer.parseInt(stringdatas[2]);
        } else
            return null;
            addresslist.add(address);
        for (int i = 0; i < count-1; i++) {
            int bitcurrent = bitindex + addedbit;
            if (bitcurrent > 7) {
                dbwindex += bitcurrent / 8;
                bitindex = 0;
            } else
                bitindex = bitcurrent;
                String endstr=stringdatas.length==3?"." + bitindex:"";
            addresslist.add(stringdatas[0] + "." + dbwindex + endstr);
        }
        return addresslist;
    }
}
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/controller/DownGlassInfoController.java
@@ -1,30 +1,22 @@
package com.mes.downglassinfo.controller;
import com.mes.downglassinfo.entity.DownGlassInfo;
import com.mes.downglassinfo.service.DownGlassInfoService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
 * <p>
 * 前端控制器
 * </p>
 *
 * @author zhoush
 * @since 2024-03-27
 */
@Api(tags = "下料信息")
@RestController
@RequestMapping("/downGlassInfo")
public class DownGlassInfoController {
    @Autowired
    private DownGlassInfoService downGlassInfoService;
    // Other endpoints can be added for CRUD operations
}
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/controller/DownGlassTaskController.java
@@ -1,16 +1,9 @@
package com.mes.downglassinfo.controller;
import com.mes.downworkstation.entity.DownWorkstation;
import com.mes.downworkstation.service.DownWorkstationService;
import com.mes.uppattenusage.service.GlassInfoService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Map;
/**
 * <p>
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/entity/DownGlassInfo.java
@@ -51,7 +51,7 @@
    private Double thickness;
    private int Filmsid;
    private String Filmsid;
}
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/mapper/DownGlassInfoMapper.java
@@ -2,7 +2,10 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.mes.downglassinfo.entity.DownGlassInfo;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
import org.springframework.stereotype.Repository;
import java.util.List;
@@ -10,12 +13,11 @@
@Repository
public interface DownGlassInfoMapper extends BaseMapper<DownGlassInfo> {
    // 查询下片任务表中状态为1的下片信息
    List<DownGlassInfo> selectunloadingtaskstate();
//   @Select("SELECT MAX(sequence) FROM down_glass_info WHERE flow_card_id = #{flowCardId} LIMIT 1")
//   Integer getMaxSequenceByFlowCardId(@Param("flowCardId") String flowCardId);
////
// @Delete("delete  from down_glass_task where flow_card_id = #{flowCardId}")
//  void deletetask(@Param("flowCardId") String flowCardId);
    void updateTaskStateToZero(@Param("flowCardId") String flowCardId);
    Integer getMaxSequenceByFlowCardId(@Param("flowCardId") String flowCardId);
    void deletetask(@Param("flowCardId") String flowCardId);
}
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/mapper/DownGlassTaskMapper.java
@@ -1,7 +1,11 @@
package com.mes.downglassinfo.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.mes.downglassinfo.entity.DownGlassInfo;
import com.mes.downglassinfo.entity.DownGlassTask;
import org.apache.ibatis.annotations.Select;
import java.util.List;
/**
 * <p>
@@ -13,4 +17,5 @@
 */
public interface DownGlassTaskMapper extends BaseMapper<DownGlassTask> {
}
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/DownGlassInfoService.java
@@ -2,18 +2,16 @@
import com.baomidou.mybatisplus.extension.service.IService;
import com.mes.downglassinfo.entity.DownGlassInfo;
import org.springframework.beans.factory.annotation.Autowired;
/**
 * <p>
 *  服务类
 * </p>
 *
 * @author zhoush
 * @since 2024-03-27
 */
public interface DownGlassInfoService extends IService<DownGlassInfo> {
    Integer getMaxSequenceByFlowCardId(String flowCardId);
    void insertDownGlassInfo(DownGlassInfo downGlassInfo);
}
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/DownGlassTaskService.java
@@ -3,6 +3,8 @@
import com.baomidou.mybatisplus.extension.service.IService;
import com.mes.downglassinfo.entity.DownGlassTask;
import java.util.List;
/**
 * <p>
 *  服务类
@@ -13,4 +15,11 @@
 */
public interface DownGlassTaskService extends IService<DownGlassTask> {
    List<DownGlassTask> getUnloadingTaskState();
    void updateTaskStateToZero(String flowCardId);
    void deleteTask(String flowCardId);
    DownGlassTask  selectLastOutCacheInfo(String endCell);
    Integer insertCacheTask(int id, String start, String end, String type, double width, double height, String filmsId, double thickness, String flowCardId);
}
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/impl/DownGlassInfoServiceImpl.java
@@ -1,22 +1,33 @@
package com.mes.downglassinfo.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.mes.downglassinfo.entity.DownGlassInfo;
import com.mes.downglassinfo.mapper.DownGlassInfoMapper;
import com.mes.downglassinfo.service.DownGlassInfoService;
import org.springframework.stereotype.Service;
/**
 * <p>
 *  服务实现类
 * </p>
 *
 * @author zhoush
 * @since 2024-03-27
 */
@Service
public class DownGlassInfoServiceImpl extends ServiceImpl<DownGlassInfoMapper, DownGlassInfo> implements DownGlassInfoService {
    // 根据流程卡号查询最大序号
    @Override
    public Integer getMaxSequenceByFlowCardId(String flowCardId) {
        QueryWrapper<DownGlassInfo> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("flow_card_id", flowCardId);
        queryWrapper.select("MAX(sequence)"); // 选择最大序号
        DownGlassInfo downGlassInfo = baseMapper.selectOne(queryWrapper);
        if (downGlassInfo != null) {
            return downGlassInfo.getSequence(); // 返回最大序号
        }
        return 0; // 如果没有找到记录,返回0或者其他适当的值
    }
    @Override
    public void insertDownGlassInfo(DownGlassInfo downGlassInfo) {
        baseMapper.insert(downGlassInfo);
    }
}
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/impl/DownGlassTaskServiceImpl.java
@@ -1,11 +1,17 @@
package com.mes.downglassinfo.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.extension.service.impl.ServiceImpl;
import com.mes.downglassinfo.entity.DownGlassInfo;
import com.mes.downglassinfo.entity.DownGlassTask;
import com.mes.downglassinfo.mapper.DownGlassTaskMapper;
import com.mes.downglassinfo.service.DownGlassTaskService;
import org.springframework.stereotype.Service;
import java.util.List;
/**
 * <p>
@@ -18,4 +24,55 @@
@Service
public class DownGlassTaskServiceImpl extends ServiceImpl<DownGlassTaskMapper, DownGlassTask> implements DownGlassTaskService {
    @Override
    public List<DownGlassTask> getUnloadingTaskState() {
        QueryWrapper<DownGlassTask> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("task_stauts", 1);
        return baseMapper.selectList(queryWrapper);
    }
    @Override
    public void updateTaskStateToZero(String flowCardId) {
        UpdateWrapper<DownGlassTask> updateWrapper = new UpdateWrapper<>();
        updateWrapper.set("task_stauts", 0).eq("flow_card_id", flowCardId);
        baseMapper.update(null, updateWrapper);
    }
    @Override
    public void deleteTask(String flowCardId) {
        LambdaQueryWrapper<DownGlassTask> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(DownGlassTask::getFlowCardId, flowCardId);
        baseMapper.delete(queryWrapper);
    }
    @Override
    public DownGlassTask selectLastOutCacheInfo(String endCell) {
        QueryWrapper<DownGlassTask> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("task_type", "2")
                .eq("task_status", "2")
                .eq("end_cell", endCell)
                .last("LIMIT 1");
        return baseMapper.selectOne(queryWrapper);
    }
    @Override
    public Integer insertCacheTask(int id, String start, String end, String type, double width, double height, String filmsId, double thickness, String flowCardId) {
        DownGlassTask glassInfo = new DownGlassTask();
        glassInfo.setId(id);
        glassInfo.setStartCell(start);
        glassInfo.setEndCell(end);
        glassInfo.setTaskType(type);
        glassInfo.setWidth(width);
        glassInfo.setHeight(height);
        glassInfo.setFilmsid(filmsId);
        glassInfo.setThickness(thickness);
        glassInfo.setFlowCardId(flowCardId);
        glassInfo.setTaskStauts(0); // 默认任务状态为0
        int rows = baseMapper.insert(glassInfo);
        return rows > 0 ? rows : null;
    }
}
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/controller/DownStorageCageDetailsController.java
@@ -1,21 +1,22 @@
package com.mes.downstorage.controller;
import com.mes.downstorage.entity.DownStorageCageDetails;
import com.mes.downstorage.service.DownStorageCageDetailsService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
 * <p>
 *  前端控制器
 * </p>
 *
 * @author zhoush
 * @since 2024-03-27
 */
@RestController
@RequestMapping("/downStorageCageDetails")
@RequestMapping("/down-storage-cage-details")
public class DownStorageCageDetailsController {
    @Autowired
    private DownStorageCageDetailsService downStorageCageDetailsService;
    @PostMapping("/add")
    public String addDownStorageCageDetails(@RequestBody DownStorageCageDetails details) {
        downStorageCageDetailsService.addDownStorageCageDetails(details);
        return "Details added successfully";
}
    // Other CRUD operations can be defined here
}
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/entity/DownStorageCageDetails.java
@@ -81,6 +81,11 @@
     */
    private Integer temperingFeedSequence;
    /**
     * 膜系id
     */
    private int filmsid;
    /**
     * 状态
     */
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/mapper/DownStorageCageDetailsMapper.java
@@ -1,7 +1,12 @@
package com.mes.downstorage.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.mes.downglassinfo.entity.DownGlassTask;
import com.mes.downstorage.entity.DownStorageCageDetails;
import com.mes.glassinfo.entity.GlassInfo;
import org.apache.ibatis.annotations.*;
import java.util.List;
/**
 * <p>
@@ -11,6 +16,55 @@
 * @author zhoush
 * @since 2024-03-27
 */
@Mapper
public interface DownStorageCageDetailsMapper extends BaseMapper<DownStorageCageDetails> {
//
//    @Select("select * from `glass_info` where id=#{id}")
//    GlassInfo SelectGlassId(String id);
    // 查询笼子内空闲
    @Select("select escd.* from down_storage_cage as esc LEFT JOIN down_storage_cage_details as escd on esc.slot=escd.slot where escd.slot is null order by escd.slot")
    List<DownStorageCageDetails> SelectCacheLeisure();
    // 查询笼子内出片任务
    @Select("select escd.* from down_storage_cage as esc LEFT JOIN down_storage_cage_details as escd on esc.slot=escd.slot WHERE escd.slot IS NOT NULL order by escd.tempering_layout_id,escd.tempering_feed_sequence")
    List<DownStorageCageDetails> SelectCacheOut();
    // 查询笼子内信息
    @Select("select escd.* from down_storage_cage as esc LEFT JOIN down_storage_cage_details as escd on esc.slot=escd.slot order by esc.slot")
    List<DownStorageCageDetails> SelectCachInfo();
    // 查询可进此片玻璃的栅格号
    @Select("select escd.* from down_storage_cage as esc LEFT JOIN down_storage_cage_details as escd on esc.slot=escd.slot where escd.slot is not null escd.tempering_layout_id=#{tempering_layout_id} and escd.tempering_feed_sequence<#{tempering_feed_sequence} and esc.remain_width-#{width}>0 order by escd.tempering_feed_sequence")
    List<DownStorageCageDetails> SelectIsExistIntoCache(Integer tempering_layout_id, Integer tempering_feed_sequence,
                                                        double width);
    // 查询可进此片玻璃的栅格号
    @Select("select escd.* from down_storage_cage as esc LEFT JOIN down_storage_cage_details as escd on esc.slot=escd.slot where escd.slot is not null escd.tempering_layout_id<#{tempering_layout_id} and esc.remain_width-#{width}>0 order by escd.tempering_layout_id desc,escd.tempering_feed_sequence")
    List<DownStorageCageDetails> SelectIsExistIntoCache(Integer tempering_layout_id, double width);
//    // 查询全部任务
//    @Select("select * from down_glass_task")
//    List<DownGlassTask> SelectCacheInfoAll();
//
//    // 查询进片任务
//    @Select("select * from down_glass_task where task_type='1' and task_stauts='0'")
//    List<DownGlassTask> SelectInputCacheInfo();
//
//    // 查询出片任务
//    @Select("select * from down_glass_task where task_type='2' and task_stauts='0'")
//    List<DownGlassTask> SelectOutCacheInfo();
    // 查询  A06  或 A11 最新的一片 出片任务
    @Select("select * from down_glass_task where task_type='2' and task_stauts='2' and end_cell=#{EndCell} limit 1")
    GlassInfo SelectLastOutCacheInfo(String EndCell);
    // 修改笼子内信息
//    @Update("update")
//    Integer UpdateCache(@Param("id") Integer id, @Param("order_id") String order_id);
    // 添加下片任务
    @Insert("INSERT into down_glass_task VALUES(#{id},#{start},#{end},#{type},0,)")
    Integer insertCacheTask(String id, String start, String end, String type,double width,double height,Integer filmsId,double thickness,String flowCardId);
}
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/DownGlassCacheLogic.java
New file
@@ -0,0 +1,245 @@
package com.mes.downstorage.service;
import com.mes.common.PLCAutoMes;
import com.mes.common.S7control;
import com.mes.device.PlcParameterObject;
import com.mes.downstorage.entity.DownStorageCageDetails;
import com.mes.downstorage.mapper.DownStorageCageDetailsMapper;
import com.mes.downworkstation.mapper.DownWorkstationMapper;
import com.mes.tools.WebSocketServer;
import com.mes.glassinfo.entity.GlassInfo;
import com.mes.glassinfo.service.GlassInfoService;
import lombok.Data;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Data
@Service
public class DownGlassCacheLogic {
    @Autowired
    private DownStorageCageDetailsMapper selectInfo;
    private GlassInfoService GlassInfoService;
    private DownStorageCageDetailsService downStorageCageDetailsService;
    /**
     * @param Number
     *    //识别逻辑    不交互
     */
    public void identify(String Number){
        //查询任务
        PlcParameterObject plcmes= PLCAutoMes.PlcMesObject;
        S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToGaStatus").getAddress(),(short) 1);
        String s=S7control.getinstance().ReadWord("DB14.26", 1).get(0)+"";
        boolean isexist=isExist(Number);
        if (isexist) {
            //存在逻辑    1.添加信息 2.回复PLC存在
            //S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToGaStatus").getAddress(),(short) 1);
        }else {
            //不存在逻辑  1.回复PLC不存在
            //S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToGaStatus").getAddress(),(short) 2);
        }
    }
    //下片前理片
    public static final String RESULT_IN = "1";
    public static final String RESULT_OUT = "2";
    public static final String RESULT_IN_OUT = "3";
    public void process() {
        String result = S7control.getinstance().ReadWord("DB14.0", 1).get(0) + "";
        String number = S7control.getinstance().ReadWord("DB14.2", 1).get(0) + "";
        // 进片请求
        if (RESULT_IN.equals(result)) {
            processInto(number);
        }
        // 出片请求
        else if (RESULT_OUT.equals(result)) {
            processOut();
        }
        // 进出片请求
        else if (RESULT_IN_OUT.equals(result)) {
            // 先出后进
            if (!processOut()) {
                processInto(number);
            }
        }
    }
    /**
     * @param Number
     * @return
     *   //下片前理片 进
     */
    public boolean processInto(String Number){
        GlassInfoService = WebSocketServer.applicationContext.getBean(GlassInfoService.class);
        //按id查询玻璃信息表里的玻璃
        GlassInfo GlassInfo=GlassInfoService.selectGlassId(Number);
        PlcParameterObject plcmes=PLCAutoMes.PlcMesObject;
        //存在此玻璃编号
        if(GlassInfo!=null){
            //同钢化版图内的栅格号
            List<DownStorageCageDetails> list=selectInfo.SelectIsExistIntoCache(GlassInfo.getTemperingLayoutId(),GlassInfo.getTemperingFeedSequence(),GlassInfo.getWidth());
            //空栅格号
            if (list.size()==0) {
                list=selectInfo.SelectCacheLeisure();
            }
            //小于此玻璃钢化版图序号的栅格号
            if(list.size()==0){
                list=selectInfo.SelectIsExistIntoCache(GlassInfo.getTemperingLayoutId(),GlassInfo.getWidth());
            }
            if(list.size()>0){
                //存在空格
                //1.生成任务:  起始位置0   结束位置this.slot  任务类型 1   (进片任务)
                //2.回复 1进片
                DownStorageCageDetails item=list.get(0);
                selectInfo.insertCacheTask(GlassInfo.getId()+"","0",item.getSlot()+"","1",GlassInfo.getWidth(),GlassInfo.getHeight(),GlassInfo.getFilmsid(),GlassInfo.getThickness(),GlassInfo.getFlowcardId());
                S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToGaStatus").getAddress(),(short) 1);
                return true;
            }
        }else{
            // ID编号不存在   不处理/回复PLC  进行报警提示
        }
        //返回结果
        return false;
    }
    //理片 出
    public boolean processOut(){
        //查询任务
        String G06=S7control.getinstance().ReadWord("DB14.56", 1).get(0)+"";
        String G11=S7control.getinstance().ReadWord("DB14.58", 1).get(0)+"";
        String G13=S7control.getinstance().ReadWord("DB14.58", 1).get(0)+"";
        PlcParameterObject plcmes=PLCAutoMes.PlcMesObject;
        List<DownStorageCageDetails> list=selectInfo.SelectCacheOut();
        //其他情况条件 如:后续设备故障禁止理片出片 等
        boolean isOut=true;
        if (list.size()>0&&isOut) {
            DownStorageCageDetails item=list.get(0);
           //
            if(G06=="0"&&G11=="1"){
                //出到  G06
                selectInfo.insertCacheTask(item.getGlassId()+"","0","06","2",item.getWidth(),item.getHeight(),item.getFilmsid(),item.getThickness(),item.getFlowCardId());
                S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.28").getAddress(), "1");
                S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.20").getAddress(), "1");
                return true;
            }else if(G06=="1"&&G11=="0"){
                //出到  G11
                selectInfo.insertCacheTask(item.getGlassId()+"","0","11","2",item.getWidth(),item.getHeight(),item.getFilmsid(),item.getThickness(),item.getFlowCardId());
                S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.28").getAddress(), "2");
                S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.20").getAddress(), "1");
                return true;
            }else if(G06=="0"&&G11=="0"){
                //都允许    G04/G05  上一片是否和此片玻璃尺寸尺寸相同
                String endcell="06";
                String SendEndcell="1";
                boolean If_=false;
                GlassInfo glassInfo06= selectInfo.SelectLastOutCacheInfo("06");
                GlassInfo glassInfo11= selectInfo.SelectLastOutCacheInfo("11");
                GlassInfo glassInfo13= selectInfo.SelectLastOutCacheInfo("13");
                if(glassInfo06!=null&& glassInfo11.getWidth().equals(item.getWidth()) && glassInfo06.getHeight().equals(item.getHeight())){
                    endcell="11";
                    SendEndcell="2";
                }else if(item.getHeight()>=3440&&item.getWidth()>=1440){
                    //其他条件人工处理
                }
                selectInfo.insertCacheTask(item.getGlassId()+"","0",endcell,"2",item.getWidth(),item.getHeight(),item.getFilmsid(),item.getThickness(),item.getFlowCardId());
                S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.28").getAddress(), SendEndcell);
                S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.20").getAddress(), "1");
                return true;
            }
        }
        //返回结果
        return false;
    }
//查询是否绑定架子
//    public boolean selectFlowCardId(String FlowCardId){
//
//    }
    /**
     * @param Number
     *  //磨边   不交互  理片和磨边机自己交互
     */
    public void processMb(String Number){
          //按id查询玻璃信息表里的玻璃
        GlassInfo GlassInfo=GlassInfoService.selectGlassId(Number);
        PlcParameterObject plcmes=PLCAutoMes.PlcMesObject;
        if(GlassInfo!=null){
            //发送任务   ID   长 宽 厚 倒角 工艺功能等
            S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.22").getAddress(),"N10000");
            S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.24").getAddress(), "1000");
            S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.26").getAddress(),"800");
            S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.28").getAddress(),"60");
            S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.30").getAddress(), "2");
            S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.20").getAddress(), "1");
        }
        //返回结果
    }
    /**
     * @param Number
     * @return
     * 查询消息队列里此玻璃ID的数据
     */
    public boolean selectMessageId(String Number){
        //查询是否存在
        GlassInfo GlassInfo=GlassInfoService.selectGlassId(Number);
        if(GlassInfo==null){
            //返回 不存在
            return false;
        }
        //返回 存在
        return true;
    }
    /**
     * @param Number
     * @return
     *   删除消息队列里此玻璃ID的数据
     */
    public boolean deleteMessageId(String Number){
        //查询是否存在
        GlassInfo GlassInfo=GlassInfoService.selectGlassId(Number);
        if(GlassInfo==null){
            //返回 不存在
            return false;
        }
        //返回 存在
        return true;
    }
    /**
     * @param Number
     * @return
     *   //是否存在此编号玻璃
     */
    public boolean isExist(String Number){
        //查询是否存在
        GlassInfo GlassInfo=GlassInfoService.selectGlassId(Number);
        if(GlassInfo==null){
            //返回 不存在
            return false;
        }
        //返回 存在
        return true;
    }
}
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/DownStorageCageDetailsService.java
@@ -1,16 +1,12 @@
package com.mes.downstorage.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.mes.downstorage.entity.DownStorageCageDetails;
/**
 * <p>
 *  服务类
 * </p>
 *
 * @author zhoush
 * @since 2024-03-27
 */
public interface DownStorageCageDetailsService extends IService<DownStorageCageDetails> {
public interface DownStorageCageDetailsService {
    void addDownStorageCageDetails(DownStorageCageDetails details);
}
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/DownStorageCageService.java
@@ -3,6 +3,9 @@
import com.baomidou.mybatisplus.extension.service.IService;
import com.mes.downstorage.entity.DownStorageCage;
import java.util.List;
import java.util.Map;
/**
 * <p>
 *  服务类
@@ -12,5 +15,5 @@
 * @since 2024-03-27
 */
public interface DownStorageCageService extends IService<DownStorageCage> {
    public List<Map> gettask();
}
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/impl/DownStorageCageDetailsServiceImpl.java
@@ -1,20 +1,21 @@
package com.mes.downstorage.service.impl;
import com.mes.downstorage.entity.DownStorageCageDetails;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.mes.downstorage.entity.DownStorageCageDetails;
import com.mes.downstorage.mapper.DownStorageCageDetailsMapper;
import com.mes.downstorage.service.DownStorageCageDetailsService;
import org.springframework.stereotype.Service;
/**
 * <p>
 *  服务实现类
 * </p>
 *
 * @author zhoush
 * @since 2024-03-27
 */
@Service
public class DownStorageCageDetailsServiceImpl extends ServiceImpl<DownStorageCageDetailsMapper, DownStorageCageDetails> implements DownStorageCageDetailsService {
    @Override
    public void addDownStorageCageDetails(DownStorageCageDetails details) {
        this.save(details);
    }
    // Other business methods can be implemented here
}
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/impl/DownStorageCageServiceImpl.java
@@ -4,7 +4,11 @@
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.mes.downstorage.mapper.DownStorageCageMapper;
import com.mes.downstorage.service.DownStorageCageService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
/**
 * <p>
@@ -16,5 +20,12 @@
 */
@Service
public class DownStorageCageServiceImpl extends ServiceImpl<DownStorageCageMapper, DownStorageCage> implements DownStorageCageService {
    @Autowired
    private DownStorageCageMapper downStorageCageMapper;
    @Override
    public List<Map> gettask(){
        downStorageCageMapper.selectList(null);
//        downStorageCageMapper.selectJoin();
        return null;
    };
}
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/controller/DownWorkstationController.java
@@ -3,7 +3,7 @@
import com.mes.downworkstation.entity.DownWorkstation;
import com.mes.downworkstation.service.DownWorkstationService;
import com.mes.uppattenusage.service.GlassInfoService;
import com.mes.glassinfo.service.GlassInfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
@@ -34,7 +34,7 @@
    @GetMapping("/getone")
    public ResponseEntity<?> getOneDownWorkstations() {
        try {
            List<DownWorkstation> data = downWorkstationService.getoneDownWorkstations();
            List<DownWorkstation> data = downWorkstationService.getoneDownWorkstations(1,5);
            // 构建符合预期格式的响应数据
            Map<String, Object> responseData = new HashMap<>();
            responseData.put("code", 200);
@@ -54,13 +54,13 @@
    @GetMapping("/gettwo")
    public List<DownWorkstation> gettwoDownWorkstations() {
        return downWorkstationService.gettwoDownWorkstations();
        return downWorkstationService.getoneDownWorkstations(6,10);
    }
    @GetMapping("/getflowCardId")
    public ResponseEntity<Map<String, Object>> getflowCardId() {
        Map<String, Object> responseData = new HashMap<>();
        try {
            List<Map<String, Object>> data = downWorkstationService.getflowCardId();
            List<Map<String, Object>> data = glassInfoService.getFlowCardId();
            responseData.put("code", 200);
            responseData.put("msg", "成功");
            responseData.put("data", data);
@@ -75,7 +75,7 @@
//绑定架子
    @PostMapping("/updateFlowCardId")
    public ResponseEntity<Map<String, Object>> updateFlowCardId(@RequestBody Map<String, Object> requestData) {
        // 从 requestData 中获取传入的 flowCardId
@@ -86,7 +86,7 @@
        int glassInfoCount = glassInfoService.getGlassInfoCountByFlowCardId(flowCardId);
        // 更新 down_workstation 表中的总数量
        glassInfoService.updateFlowCardIdAndCount(flowCardId, glassInfoCount, workstationId);
        downWorkstationService.updateFlowCardIdAndCount(flowCardId, glassInfoCount, workstationId);
        // 构建响应数据
        Map<String, Object> responseData = new HashMap<>();
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/controller/DownWorkstationTaskController.java
@@ -1,6 +1,5 @@
package com.mes.downworkstation.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/entity/DownWorkstation.java
@@ -52,6 +52,8 @@
    private Integer workState;
    private Integer total_quantity;
    private Integer Racksnumber;
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/mapper/DownWorkstationMapper.java
@@ -4,6 +4,7 @@
import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.mes.downglassinfo.entity.DownGlassInfo;
import com.mes.downglassinfo.entity.DownGlassTask;
import com.mes.downworkstation.entity.DownWorkstation;
import org.apache.ibatis.annotations.*;
import org.springframework.stereotype.Repository;
@@ -22,62 +23,59 @@
@Mapper
@Repository
@InterceptorIgnore(tenantLine = "true")
@DS("salve_1") // 指定使用 hangzhoumes 数据源
// 指定使用 hangzhoumes 数据源
public interface DownWorkstationMapper extends BaseMapper<DownWorkstation> {
//查询工位表和任务表中状态为1的流程卡号和已落架数量
    @Select("SELECT dwt.flow_card_id,dw.id,dw.racks_number FROM down_workstation_task dwt JOIN down_workstation dw ON dwt.flow_card_id = dw.flow_card_id WHERE dwt.state = 1 LIMIT 1")
    List<DownWorkstation> selectdownWorkstationstate();
    @Select("SELECT flow_card_id,filmsid,width,height,thickness FROM down_glass_task WHERE task_stauts = 1;")
    List<DownGlassTask> selectunloadingtaskstate();
    //更新落架数量
    @Update("UPDATE down_workstation SET racks_number = #{racksNumber} " +
            "WHERE flow_card_id = #{flowCardId}")
    void  update_racks_number(@Param("flowCardId") String flowCardId,
                              @Param("racksNumber") Integer racksNumber);
//    @Update("UPDATE down_workstation SET racks_number = #{racksNumber} " +
//            "WHERE flow_card_id = #{flowCardId}")
//    void  update_racks_number(@Param("flowCardId") String flowCardId,
//                              @Param("racksNumber") Integer racksNumber);
    //插入机械任务表
    @Insert("INSERT INTO down_workstation_task (flow_card_id, width, height, thickness, filmsid,state) " +
            "VALUES (#{flowCardId}, #{width}, #{height}, #{thickness}, #{filmsid},1)")
    void insertdownWorkstationtask(DownGlassInfo downGlassInfo);
//    @Insert("INSERT INTO down_workstation_task (flow_card_id, width, height, thickness, filmsid,state) " +
//            "VALUES (#{flowCardId}, #{width}, #{height}, #{thickness}, #{filmsid},1)")
//    void insertdownWorkstationtask(DownGlassInfo downGlassInfo);
    //根据工位id更新实体类接收的数据
    @Update("UPDATE down_workstation SET width = #{width}, height = #{height}, flow_card_id = #{flowCardId} WHERE workstation_id = #{workstationId}")
    void updateFlowCardId(DownWorkstation downWorkstation);
//    @Update("UPDATE down_workstation SET width = #{width}, height = #{height}, flow_card_id = #{flowCardId} WHERE workstation_id = #{workstationId}")
//    void updateFlowCardId(DownWorkstation downWorkstation);
    //满架拉走,清空信息
    @Update("UPDATE down_workstation SET width = null, height = null, flow_card_id = null WHERE workstation_id = #{workstationId}")
    void clearFlowCardId(DownWorkstation downWorkstation);
    @Update("UPDATE down_workstation_task SET state = 0 WHERE flow_card_id = #{flowCardId}")
    void update_task_state_to_zero(@Param("flowCardId") String flowCardId);
//    @Update("UPDATE down_workstation_task SET state = 0 WHERE flow_card_id = #{flowCardId}")
//    void update_task_state_to_zero(@Param("flowCardId") String flowCardId);
    @Select(" SELECT * FROM down_workstation WHERE workstation_id >= 1 AND workstation_id <= 5")
    List<DownWorkstation> getoneDownWorkstations();
    @Select(" SELECT * FROM down_workstation WHERE workstation_id >= 6 AND workstation_id <= 10")
    List<DownWorkstation> gettwoDownWorkstations();
//    @Select("SELECT * FROM down_workstation WHERE workstation_id BETWEEN #{startId} AND #{endId}")
//    List<DownWorkstation> getDownWorkstationsInRange(@Param("startId") int startId, @Param("endId") int endId);
    @Select("SELECT DISTINCT  flowcard_id from glass_info")
    @ResultType(Map.class)
    List<Map<String, Object>> getflowCardId();
//    @Select("SELECT DISTINCT  flowcard_id from glass_info")
//    @ResultType(Map.class)
//    List<Map<String, Object>> getflowCardId();
    @Update("UPDATE down_workstation SET flow_card_id = NULL, total_quantity = 0, racks_number = 0 WHERE workstation_id = #{workstationId}")
    void clearFlowCardInfoByWorkstationId(@Param("workstationId") int workstationId);
//    @Update("UPDATE down_workstation SET flow_card_id = NULL, total_quantity = 0, racks_number = 0 WHERE workstation_id = #{workstationId}")
//    void clearFlowCardInfoByWorkstationId(@Param("workstationId") int workstationId);
    // 获取总数量
    @Select("SELECT total_quantity FROM down_workstation WHERE workstation_id = #{workstationId}")
    int getTotalQuantity(@Param("workstationId") int workstationId);
//    @Select("SELECT total_quantity FROM down_workstation WHERE workstation_id = #{workstationId}")
//    int getTotalQuantity(@Param("workstationId") int workstationId);
    // 获取落架数量
    @Select("SELECT racks_number FROM down_workstation WHERE workstation_id = #{workstationId}")
    int getRacksNumber(@Param("workstationId") int workstationId);
//    @Select("SELECT racks_number FROM down_workstation WHERE workstation_id = #{workstationId}")
//    int getRacksNumber(@Param("workstationId") int workstationId);
}
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/mapper/DownWorkstationTaskMapper.java
@@ -1,7 +1,10 @@
package com.mes.downworkstation.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.mes.downworkstation.entity.DownWorkstation;
import com.mes.downworkstation.entity.DownWorkstationTask;
import java.util.List;
/**
 * <p>
@@ -13,4 +16,7 @@
 */
public interface DownWorkstationTaskMapper extends BaseMapper<DownWorkstationTask> {
    List<DownWorkstationTask> selectList();
    DownWorkstation selectdownWorkstationstate();
}
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/DownGlassLogic.java
@@ -1,12 +1,14 @@
package com.mes.downworkstation.service;
import com.mes.device.PLCAutoMes;
import com.mes.device.PlcParameterObject;
import com.mes.common.PLCAutoMes;
import com.mes.downglassinfo.entity.DownGlassInfo;
import com.mes.downglassinfo.mapper.DownGlassInfoMapper;
import com.mes.downglassinfo.entity.DownGlassTask;
import com.mes.downglassinfo.service.DownGlassInfoService;
import com.mes.downglassinfo.service.DownGlassTaskService;
import com.mes.downstorage.entity.DownStorageCageDetails;
import com.mes.downworkstation.entity.DownWorkstation;
import com.mes.device.PlcParameterObject;
import com.mes.downglassinfo.mapper.DownGlassInfoMapper;
import com.mes.downworkstation.mapper.DownWorkstationMapper;
import com.mes.tools.WebSocketServer;
import lombok.Data;
@@ -23,7 +25,10 @@
    private DownWorkstation downWorkstation;
    private DownGlassInfoMapper downGlassInfoMapper;
    private DownGlassInfoService downGlassInfoService;
    private DownGlassTaskService downGlassTaskService;
    private DownWorkstationMapper downWorkstationMapper;
    private DownWorkstationService downWorkstationService;
    private DownWorkstationTaskService downWorkstationTaskService;
    PlcParameterObject plcread = PLCAutoMes.PlcReadObject;
    /**
     * // 机械手1PLC请求字
@@ -60,21 +65,25 @@
        downWorkstationMapper = WebSocketServer.applicationContext.getBean(DownWorkstationMapper.class);
        downWorkstationService = WebSocketServer.applicationContext.getBean(DownWorkstationService.class);
        downWorkstationTaskService = WebSocketServer.applicationContext.getBean(DownWorkstationTaskService.class);
        downGlassInfoService = WebSocketServer.applicationContext.getBean(DownGlassInfoService.class);
        downGlassInfoMapper = WebSocketServer.applicationContext.getBean(DownGlassInfoMapper.class);
        List<DownGlassInfo> taskdownGlassInf = downGlassInfoMapper.selectunloadingtaskstate();
        downGlassTaskService = WebSocketServer.applicationContext.getBean(DownGlassTaskService.class);
        List<DownGlassTask> taskdownGlassInf = downWorkstationMapper.selectunloadingtaskstate();
//
        if (taskdownGlassInf != null && !taskdownGlassInf.isEmpty()) {
//
            for (DownGlassInfo downGlassInfo : taskdownGlassInf) {
            for (DownGlassTask downGlassInfo : taskdownGlassInf) {
                // 创建新的 DownGlassInfo 对象并设置相关属性
                DownGlassInfo newdownGlassInfo = new DownGlassInfo();
                newdownGlassInfo.setFlowCardId(downGlassInfo.getFlowCardId());
                Integer maxSequence = downGlassInfoMapper.getMaxSequenceByFlowCardId(downGlassInfo.getFlowCardId());
                Integer maxSequence = downGlassInfoService.getMaxSequenceByFlowCardId(downGlassInfo.getFlowCardId());
                // 初始化顺序字段值
                int sequence = maxSequence != null ? maxSequence + 1 : 1;
@@ -86,11 +95,12 @@
                newdownGlassInfo.setSequence(sequence);
                // 插入数据到下片玻璃信息表
                downGlassInfoMapper.insert(newdownGlassInfo);
                downGlassInfoService.insertDownGlassInfo(newdownGlassInfo);
                //插入数据到机械手任务表
                downWorkstationMapper.insertdownWorkstationtask(newdownGlassInfo);
                downWorkstationTaskService.insertdownWorkstationtask(newdownGlassInfo);
                //更新下片任务表状态为0
                downGlassInfoMapper.updateTaskStateToZero(downGlassInfo.getFlowCardId());
                downGlassTaskService.updateTaskStateToZero(downGlassInfo.getFlowCardId());
                sequence++; // 递增顺序字段值
@@ -115,12 +125,12 @@
                for (DownWorkstation downWorkstation : taskdownWorkstation) {
                    //更新下片工位表中已落架数量
                    downWorkstationMapper.update_racks_number(downWorkstation.getFlowCardId(), downWorkstation.getRacksnumber() + 1);
                    downWorkstationService.updateracksnumber(downWorkstation.getFlowCardId(), downWorkstation.getRacksnumber() + 1);
                    //更新机械任务表中状态为0
                    downWorkstationMapper.update_task_state_to_zero(downWorkstation.getFlowCardId());
                    downWorkstationTaskService.updateTaskStateToZero(downWorkstation.getFlowCardId());
                    //删除下片任务表中的记录
                    downGlassInfoMapper.deletetask(downWorkstation.getFlowCardId());
                    downGlassTaskService.deleteTask(downWorkstation.getFlowCardId());
                }
            }
@@ -134,23 +144,19 @@
    }
    /**
     * @param downWorkstation // 绑定流程卡号架子
     */
    public void bindingshelf(DownWorkstation downWorkstation) {
        downWorkstationMapper.updateFlowCardId(downWorkstation);
    }
    /**
     * @param downWorkstation // 满架拉走 清除流程卡信息
     */
    public void clearFlowCardId(DownWorkstation downWorkstation) {
        downWorkstationMapper.clearFlowCardId(downWorkstation);
    }
//    public void clearFlowCardId(DownWorkstation downWorkstation) {
//
//        downWorkstationMapper.clearFlowCardId(downWorkstation);
//    }
}
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/DownWorkstationService.java
@@ -16,15 +16,18 @@
 */
public interface DownWorkstationService extends IService<DownWorkstation> {
    List<DownWorkstation> getoneDownWorkstations();
    List<DownWorkstation> gettwoDownWorkstations();
    List<Map<String, Object>> getflowCardId();
    List<DownWorkstation> getoneDownWorkstations(int startId, int endId);
    int getTotalQuantity(int workstationId);
    int getRacksNumber(int workstationId);
    void clearFlowCardId(int workstationId);
    void updateracksnumber( String flowCardId, int racksnumber);
    int updateFlowCardIdAndCount(String flowCardId, int glassInfoCount, int workstationId);
}
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/DownWorkstationTaskService.java
@@ -1,6 +1,7 @@
package com.mes.downworkstation.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.mes.downglassinfo.entity.DownGlassInfo;
import com.mes.downworkstation.entity.DownWorkstationTask;
/**
@@ -12,5 +13,6 @@
 * @since 2024-04-07
 */
public interface DownWorkstationTaskService extends IService<DownWorkstationTask> {
     void insertdownWorkstationtask(DownGlassInfo downGlassInfo);
     void updateTaskStateToZero(String flowCardId);
}
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/impl/DownWorkstationServiceImpl.java
@@ -1,11 +1,17 @@
package com.mes.downworkstation.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.mes.downglassinfo.entity.DownGlassTask;
import com.mes.downworkstation.entity.DownWorkstation;
import com.mes.downworkstation.entity.DownWorkstationTask;
import com.mes.downworkstation.mapper.DownWorkstationMapper;
import com.mes.downworkstation.mapper.DownWorkstationTaskMapper;
import com.mes.downworkstation.service.DownWorkstationService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.Map;
@@ -15,36 +21,107 @@
    @Autowired
    private DownWorkstationMapper downWorkstationMapper;
    private DownWorkstationTaskMapper downWorkstationTaskMapper;
    @Override
    public List<DownWorkstation> getoneDownWorkstations() {
        return downWorkstationMapper.getoneDownWorkstations();
    }
    @Override
    public List<DownWorkstation> gettwoDownWorkstations() {
        return downWorkstationMapper.gettwoDownWorkstations();
    }
    @Override
    public List<Map<String, Object>> getflowCardId() {
        return downWorkstationMapper.getflowCardId();
    }
//    @Override
//    public List<DownWorkstation> gettwoDownWorkstations() {
//        return downWorkstationMapper.getDownWorkstationsInRange(6,10);
//    }
//获取总数量
    @Override
    public int getTotalQuantity(int workstationId) {
        Integer totalQuantity = downWorkstationMapper.getTotalQuantity(workstationId);
        return totalQuantity != null ? totalQuantity : 0;
        QueryWrapper<DownWorkstation> queryWrapper = new QueryWrapper<>();
        queryWrapper.select("total_quantity")
                .eq("workstation_id", workstationId);
        DownWorkstation result = baseMapper.selectOne(queryWrapper);
        return result != null ? result.getTotal_quantity() : 0;
    }
//    @Override
//    public int getTotalQuantity(int workstationId) {
//        Integer totalQuantity = downWorkstationMapper.getTotalQuantity(workstationId);
//        return totalQuantity != null ? totalQuantity : 0;
//    }
//    @Override
//    public int getRacksNumber(int workstationId) {
//        Integer racksNumber = downWorkstationMapper.getRacksNumber(workstationId);
//        return racksNumber != null ? racksNumber : 0;
//    }
    //根据条件获取落架数量
    @Override
    public int getRacksNumber(int workstationId) {
        Integer racksNumber = downWorkstationMapper.getRacksNumber(workstationId);
        return racksNumber != null ? racksNumber : 0;
        QueryWrapper<DownWorkstation> queryWrapper = new QueryWrapper<>();
        queryWrapper.select("racks_number")
                .eq("workstation_id", workstationId);
        DownWorkstation result = baseMapper.selectOne(queryWrapper);
        return result != null ? result.getRacksnumber() : 0;
    }
//根据条件获取工位玻璃信息
    @Override
    public List<DownWorkstation> getoneDownWorkstations(int startId, int endId) {
        QueryWrapper<DownWorkstation> queryWrapper = new QueryWrapper<>();
        queryWrapper.between("workstation_id", startId, endId);
        return baseMapper.selectList(queryWrapper);
    }
//
    @Override
    public void updateracksnumber(String flowCardId, int racksNumber) {
        UpdateWrapper<DownWorkstation> updateWrapper = new UpdateWrapper<>();
        updateWrapper.set("racks_number",racksNumber).eq("flow_card_id", flowCardId);
        baseMapper.update(null, updateWrapper);
    }
    @Override
    public int updateFlowCardIdAndCount(String flowCardId, int glassInfoCount, int workstationId) {
        UpdateWrapper<DownWorkstation> updateWrapper = new UpdateWrapper<>();
        updateWrapper.set("total_quantity", glassInfoCount)
                .set("flow_card_id", flowCardId)
                .eq("workstation_id", workstationId);
        return baseMapper.update(null, updateWrapper);
    }
    @Override
    public void clearFlowCardId(int workstationId) {
        downWorkstationMapper.clearFlowCardInfoByWorkstationId(workstationId);
        UpdateWrapper<DownWorkstation> updateWrapper = new UpdateWrapper<>();
        updateWrapper.set("flow_card_id", null)
                .set("total_quantity", 0)
                .set("racks_number", 0)
                .eq("workstation_id", workstationId);
        baseMapper.update(null, updateWrapper);
    }
    @Transactional
    public void crossDatabaseQuery() {
        // 从 MySQL 数据库中查询数据,只返回一条符合条件的数据
        DownWorkstation downWorkstation = downWorkstationTaskMapper.selectdownWorkstationstate();
        // 从 SQL Server 数据库中查询数据
        List<DownWorkstationTask> downWorkstationTasks = downWorkstationTaskMapper.selectList();
    }
}
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/impl/DownWorkstationTaskServiceImpl.java
@@ -1,6 +1,8 @@
package com.mes.downworkstation.service.impl;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.mes.downglassinfo.entity.DownGlassInfo;
import com.mes.downworkstation.entity.DownWorkstationTask;
import com.mes.downworkstation.mapper.DownWorkstationTaskMapper;
import com.mes.downworkstation.service.DownWorkstationTaskService;
@@ -17,4 +19,25 @@
@Service
public class DownWorkstationTaskServiceImpl extends ServiceImpl<DownWorkstationTaskMapper, DownWorkstationTask> implements DownWorkstationTaskService {
    public void insertdownWorkstationtask(DownGlassInfo downGlassInfo) {
        DownWorkstationTask entity = new DownWorkstationTask();
        entity.setFlowCardId(downGlassInfo.getFlowCardId());
        entity.setWidth(downGlassInfo.getWidth());
        entity.setHeight(downGlassInfo.getHeight());
        entity.setThickness(downGlassInfo.getThickness());
        entity.setFilmsid(downGlassInfo.getFilmsid());
        entity.setState(1);
        baseMapper.insert(entity);
    }
    @Override
    public void updateTaskStateToZero(String flowCardId) {
        UpdateWrapper<DownWorkstationTask> updateWrapper = new UpdateWrapper<>();
        updateWrapper.set("state", 0).eq("flow_card_id", flowCardId);
        baseMapper.update(null, updateWrapper);
    }
}
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/glassinfo/controller/GlassInfoController.java
copy from hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/uppattenusage/controller/GlassInfoController.java copy to hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/glassinfo/controller/GlassInfoController.java
File was copied from hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/uppattenusage/controller/GlassInfoController.java
@@ -1,8 +1,7 @@
package com.mes.uppattenusage.controller;
package com.mes.glassinfo.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/glassinfo/entity/GlassInfo.java
File was renamed from hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/uppattenusage/entity/GlassInfo.java
@@ -1,4 +1,4 @@
package com.mes.uppattenusage.entity;
package com.mes.glassinfo.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/glassinfo/mapper/GlassInfoMapper.java
New file
@@ -0,0 +1,28 @@
package com.mes.glassinfo.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.mes.glassinfo.entity.GlassInfo;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
import org.mapstruct.Mapper;
/**
 * <p>
 *  Mapper 接口
 * </p>
 *
 * @author zhoush
 * @since 2024-03-27
 */
@Mapper
public interface GlassInfoMapper extends BaseMapper<GlassInfo> {
//    @Select("SELECT COUNT(*) FROM glass_info WHERE flowcard_id = #{flowCardId}")
//    int getGlassInfoCountByFlowCardId(@Param("flowCardId") String flowCardId);
//    @Update("UPDATE down_workstation SET  total_quantity = #{glassInfoCount},flow_card_id=#{flowCardId} WHERE workstation_id = #{workstationId}")
//    int updateFlowCardIdAndCount(@Param("flowCardId") String flowCardId, @Param("glassInfoCount") int glassInfoCount,@Param("workstationId")int workstationId);
}
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/glassinfo/service/GlassInfoService.java
New file
@@ -0,0 +1,23 @@
package com.mes.glassinfo.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.mes.glassinfo.entity.GlassInfo;
import java.util.List;
import java.util.Map;
/**
 * <p>
 *  服务类
 * </p>
 *
 * @author zhoush
 * @since 2024-03-27
 */
public interface GlassInfoService extends IService<GlassInfo> {
    int getGlassInfoCountByFlowCardId(String flowCardId);
    List<Map<String, Object>> getFlowCardId();
    GlassInfo selectGlassId(String id);
}
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/glassinfo/service/impl/GlassInfoServiceImpl.java
New file
@@ -0,0 +1,63 @@
package com.mes.uppattenusage.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.mes.downworkstation.entity.DownWorkstation;
import com.mes.glassinfo.entity.GlassInfo;
import com.mes.glassinfo.mapper.GlassInfoMapper;
import com.mes.glassinfo.service.GlassInfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
/**
 * <p>
 *  服务实现类
 * </p>
 *
 * @author zhoush
 * @since 2024-03-27
 */
@Service
public class GlassInfoServiceImpl extends ServiceImpl<GlassInfoMapper, GlassInfo> implements GlassInfoService {
    private GlassInfoMapper glassInfoMapper;
    @Autowired
    public GlassInfoServiceImpl(GlassInfoMapper glassInfoMapper) {
        this.glassInfoMapper = glassInfoMapper;
    }
    @Override
    public int getGlassInfoCountByFlowCardId(String flowCardId) {
        QueryWrapper<GlassInfo> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("flowcard_id", flowCardId);
        return baseMapper.selectCount(queryWrapper);
    }
    @Override
    public List<Map<String, Object>> getFlowCardId() {
        return baseMapper.selectMaps(new QueryWrapper<GlassInfo>().select("DISTINCT flowcard_id"));
    }
    @Override
    public GlassInfo selectGlassId(String id) {
        QueryWrapper<GlassInfo> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("id", id);
        return baseMapper.selectOne(queryWrapper);
    }
//    public void updateFlowCardIdAndCount(String flowCardId, int glassInfoCount, int workstationId) {
//        int rowsAffected = glassInfoMapper.updateFlowCardIdAndCount(flowCardId, glassInfoCount, workstationId);
//        if (rowsAffected > 0) {
//            System.out.println("更新架子上流程卡 ID 和数量成功");
//        } else {
//            System.out.println("更新架子上流程卡 ID 和数量失败");
//        }
//    }
}
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/uppattenusage/controller/GlassInfoController.java
File was deleted
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/uppattenusage/mapper/GlassInfoMapper.java
File was deleted
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/uppattenusage/service/GlassInfoService.java
File was deleted
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/uppattenusage/service/impl/GlassInfoServiceImpl.java
File was deleted
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/application.yml
@@ -12,6 +12,12 @@
          username: root
          password: beibo.123/
          driver-class-name: com.mysql.cj.jdbc.Driver
#          sqlserver:
#            url: jdbc:sqlserver://localhost:1433;databaseName=hangzhoumes
#            username: sa
#            password: beibo.123/
#            driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
  cloud:
    nacos:
      discovery:
@@ -24,7 +30,8 @@
    port: 6379
    password: 123456
mybatis-plus:
  mapper-locations: classpath*:mapper/*.xml
    mapper-locations: classpath*:mapper/sqlserver/*.xml
  #    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  # 设置 MyBatis 日志级别为 ERROR
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/mapper/DownGlassInfoMapper.xml
File was deleted