严智鑫
2024-10-12 84ea4ef19e5a4945f336dfdd788081510477dfc1
1.卧式缓存前的扫码-增加重复ID验证,2.增加钢化版图查询工程功能
8个文件已修改
8个文件已添加
484 ■■■■■ 已修改文件
hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/entity/OptimizeHeatDetail.java 116 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/entity/OptimizeHeatLayout.java 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/mapper/OptimizeHeatDetailMapper.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/mapper/OptimizeHeatLayoutMapper.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/service/OptimizeHeatDetailService.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/service/OptimizeHeatLayoutService.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/service/impl/OptimizeHeatDetailServiceImpl.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/service/impl/OptimizeHeatLayoutServiceImpl.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/EdgStorageCageDetailsService.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/impl/EdgStorageCageDetailsServiceImpl.java 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/CacheGlassTask.java 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/OpcCacheGlassTask.java 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/opccallback/CacheGlassSubscriptionCallback.java 33 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/controller/TaskCacheController.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/CacheGlassModule/src/test/java/com/mes/CacheGlassModuleApplicationTest.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/pom.xml 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/entity/OptimizeHeatDetail.java
New file
@@ -0,0 +1,116 @@
package com.mes.pp.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
/**
 * <p>
 *
 * </p>
 *
 * @author zhoush
 * @since 2024-04-16
 */
@Data
@EqualsAndHashCode(callSuper = false)
public class OptimizeHeatDetail implements Serializable {
    private static final long serialVersionUID = 1L;
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;
    /**
     * 工程号
     */
    private String projectNo;
    /**
     * 流程卡号
     */
    private String processId;
    /**
     * 补片状态:补片1,0非补片;2024.0409新增
     */
    private Integer patchState;
    /**
     * 层
     */
    private Integer layer;
    /**
     * 订单内排序
     */
    private Integer orderSort;
    /**
     * 版图编号
     */
    private Integer layoutId;
    /**
     * 版图内排序
     */
    private Integer sort;
    /**
     * 小片编号
     */
    private Integer glassId;
    /**
     * 小片宽
     */
    private double width;
    /**
     * 小片高
     */
    private double height;
    /**
     * 配片宽
     */
    private double pairWidth;
    /**
     * 配片高
     */
    private double pairHeight;
    /**
     * x坐标
     */
    private double xAxis;
    /**
     * y坐标
     */
    private double yAxis;
    /**
     * 旋转角度(逆时针)
     */
    private double rotateAngle;
    /**
     * 创建人
     */
    private String creater;
    /**
     * 创建时间
     */
    private Data createTime;
    /**
     * 修改时间
     */
    private Data updateTime;
    @TableField("intRemark")
    private Integer intRemark;
    @TableField("strRemark")
    private String strRemark;
}
hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/entity/OptimizeHeatLayout.java
New file
@@ -0,0 +1,70 @@
package com.mes.pp.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.util.Date;
/**
 * <p>
 *
 * </p>
 *
 * @author zhoush
 * @since 2024-04-16
 */
@Data
@EqualsAndHashCode(callSuper = false)
public class OptimizeHeatLayout implements Serializable {
    private static final long serialVersionUID = 1L;
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    /**
     * 工程号
     */
    private String projectNo;
    /**
     * 版图Id
     */
    private Integer layoutId;
    /**
     * 玻璃数量
     */
    private Integer glassQty;
    /**
     * 版图玻璃面积
     */
    private double glassArea;
    /**
     * 装载率
     */
    private double layoutRate;
    /**
     * 创建人
     */
    private Integer creater;
    /**
     * 创建时间
     */
    private Date createTime;
    @TableField("intRemark")
    private Integer intRemark;
    @TableField("strRemark")
    private String strRemark;
}
hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/mapper/OptimizeHeatDetailMapper.java
New file
@@ -0,0 +1,19 @@
package com.mes.pp.mapper;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.github.yulichang.base.MPJBaseMapper;
import com.mes.pp.entity.OptimizeDetail;
import com.mes.pp.entity.OptimizeHeatDetail;
/**
 * <p>
 * Mapper 接口
 * </p>
 *
 * @author zhoush
 * @since 2024-04-16
 */
@DS("pp")
public interface OptimizeHeatDetailMapper extends MPJBaseMapper<OptimizeHeatDetail> {
}
hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/mapper/OptimizeHeatLayoutMapper.java
New file
@@ -0,0 +1,19 @@
package com.mes.pp.mapper;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.github.yulichang.base.MPJBaseMapper;
import com.mes.pp.entity.OptimizeDetail;
import com.mes.pp.entity.OptimizeHeatLayout;
/**
 * <p>
 * Mapper 接口
 * </p>
 *
 * @author zhoush
 * @since 2024-04-16
 */
@DS("pp")
public interface OptimizeHeatLayoutMapper extends MPJBaseMapper<OptimizeHeatLayout> {
}
hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/service/OptimizeHeatDetailService.java
New file
@@ -0,0 +1,17 @@
package com.mes.pp.service;
import com.github.yulichang.base.MPJBaseService;
import com.mes.pp.entity.OptimizeDetail;
import com.mes.pp.entity.OptimizeHeatDetail;
/**
 * <p>
 * 服务类
 * </p>
 *
 * @author zhoush
 * @since 2024-04-16
 */
public interface OptimizeHeatDetailService extends MPJBaseService<OptimizeHeatDetail> {
}
hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/service/OptimizeHeatLayoutService.java
New file
@@ -0,0 +1,17 @@
package com.mes.pp.service;
import com.github.yulichang.base.MPJBaseService;
import com.mes.pp.entity.OptimizeDetail;
import com.mes.pp.entity.OptimizeHeatLayout;
/**
 * <p>
 * 服务类
 * </p>
 *
 * @author zhoush
 * @since 2024-04-16
 */
public interface OptimizeHeatLayoutService extends MPJBaseService<OptimizeHeatLayout> {
}
hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/service/impl/OptimizeHeatDetailServiceImpl.java
New file
@@ -0,0 +1,25 @@
package com.mes.pp.service.impl;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.github.yulichang.base.MPJBaseServiceImpl;
import com.mes.pp.entity.OptimizeDetail;
import com.mes.pp.entity.OptimizeHeatDetail;
import com.mes.pp.mapper.OptimizeDetailMapper;
import com.mes.pp.mapper.OptimizeHeatDetailMapper;
import com.mes.pp.service.OptimizeDetailService;
import com.mes.pp.service.OptimizeHeatDetailService;
import org.springframework.stereotype.Service;
/**
 * <p>
 * 服务实现类
 * </p>
 *
 * @author zhoush
 * @since 2024-04-16
 */
@Service
@DS("pp")
public class OptimizeHeatDetailServiceImpl extends MPJBaseServiceImpl<OptimizeHeatDetailMapper, OptimizeHeatDetail> implements OptimizeHeatDetailService {
}
hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/service/impl/OptimizeHeatLayoutServiceImpl.java
New file
@@ -0,0 +1,25 @@
package com.mes.pp.service.impl;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.github.yulichang.base.MPJBaseServiceImpl;
import com.mes.pp.entity.OptimizeDetail;
import com.mes.pp.entity.OptimizeHeatLayout;
import com.mes.pp.mapper.OptimizeDetailMapper;
import com.mes.pp.mapper.OptimizeHeatLayoutMapper;
import com.mes.pp.service.OptimizeDetailService;
import com.mes.pp.service.OptimizeHeatLayoutService;
import org.springframework.stereotype.Service;
/**
 * <p>
 * 服务实现类
 * </p>
 *
 * @author zhoush
 * @since 2024-04-16
 */
@Service
@DS("pp")
public class OptimizeHeatLayoutServiceImpl extends MPJBaseServiceImpl<OptimizeHeatLayoutMapper, OptimizeHeatLayout> implements OptimizeHeatLayoutService {
}
hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/EdgStorageCageDetailsService.java
@@ -31,6 +31,12 @@
     * @return
     */
    List<List<Map<String, Object>>> selectCurrentCutTerritory(String current);
    /**
     * 获取 工程下的钢化版图
     * @param current
     * @return
     */
    List<List<Map<String, Object>>> selectTemperingTerritory(String current);
    /**
     * 查询笼内版图差值范围内的  此尺寸玻璃  如无则按照 钢化版图序号 以及玻璃序号
@@ -64,4 +70,12 @@
     * @return
     */
    String edgReportStatus(IdentWornRequest request);
    /**
     * 进片  扫码ID验证重复
     *
     * @param glassId
     * @return
     */
    boolean inToVerify(String glassId);
}
hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/impl/EdgStorageCageDetailsServiceImpl.java
@@ -8,7 +8,6 @@
import com.github.yulichang.query.MPJLambdaQueryWrapper;
import com.github.yulichang.toolkit.JoinWrappers;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import com.mes.common.config.Const;
import com.mes.damage.entity.Damage;
import com.mes.damage.mapper.DamageMapper;
import com.mes.damage.service.DamageService;
@@ -24,9 +23,9 @@
import com.mes.engineering.mapper.EngineeringMapper;
import com.mes.glassinfo.entity.GlassInfo;
import com.mes.glassinfo.mapper.GlassInfoMapper;
import com.mes.pp.entity.OptimizeDetail;
import com.mes.pp.entity.OptimizeLayout;
import com.mes.pp.entity.*;
import com.mes.pp.mapper.OptimizeDetailMapper;
import com.mes.pp.mapper.OptimizeHeatDetailMapper;
import com.mes.taskcache.entity.TaskCache;
import com.mes.taskcache.service.TaskCacheService;
import com.mes.uppattenusage.entity.UpPattenUsage;
@@ -62,6 +61,9 @@
    @Autowired
    OptimizeDetailMapper optimizeDetailMapper;
    @Autowired
    OptimizeHeatDetailMapper optimizeHeatDetailMapper;
    @Autowired
    EdgStorageCageMapper edgStorageCageMapper;
@@ -299,6 +301,39 @@
    }
    /**
     * 获取 工程下的钢化版图
     *
     * @param current
     * @return
     */
    @Override
    public List<List<Map<String, Object>>> selectTemperingTerritory(String current) {
        //此工程的所有优化数据
        List<Map<String, Object>> resultCutTerritory=optimizeHeatDetailMapper.selectJoinMaps(JoinWrappers.lambda(OptimizeHeatDetail.class)
                .selectAll(OptimizeHeatDetail.class)
                .selectAs(OptimizeProject::getLoadWidth, "olWidth")
                .selectAs(OptimizeProject::getLoadLength, "olHeight")
                .leftJoin(OptimizeHeatLayout.class, on -> on
                        .eq(OptimizeHeatLayout::getProjectNo, OptimizeHeatDetail::getProjectNo)
                        .eq(OptimizeHeatLayout::getLayoutId, OptimizeHeatDetail::getLayoutId))
                .leftJoin(OptimizeProject.class, on -> on
                        .eq(OptimizeProject::getProjectNo, OptimizeHeatLayout::getProjectNo))
                .eq(OptimizeHeatDetail::getProjectNo, current)
        );
        Map<String, List<Map<String, Object>>> groupBy=resultCutTerritory.stream().collect(Collectors.groupingBy(item->item.get("layout_id").toString()));
//        List<List<Map<String, Object>>> Result=groupBy.values().stream().collect(Collectors.toList());
        List<List<Map<String, Object>>> result=new ArrayList<>();
        for (int i=1;i<=groupBy.keySet().size();i++) {
            String key=i+"";
            if(key!=null){
                result.add(groupBy.get(key));
            }
        }
        return result;
    }
    /**
     * 查询笼内版图差值范围内的  此尺寸玻璃  如无则按照 钢化版图序号 以及玻璃序号
     *
     * @param glassId
@@ -431,4 +466,30 @@
                .set(EdgGlassTaskInfo::getStatus, request.getState()).eq(EdgGlassTaskInfo::getGlassId, request.getGlassId()));
        return "success";
    }
    /**
     * 进片  扫码ID验证重复
     *
     * @param glassId
     * @return
     */
    @Override
    public boolean inToVerify(String glassId){
        List<EdgStorageCageDetails> listEdgStorageCageDetails = baseMapper.selectList(new LambdaQueryWrapper<EdgStorageCageDetails>()
                .eq(EdgStorageCageDetails::getGlassId, glassId)
        );
        if (listEdgStorageCageDetails.isEmpty()) {
            //说明此玻璃没有进过理片
            return true;
        }else{
            List<Damage> damage=damageMapper.selectList(new LambdaQueryWrapper<Damage>()
                    .eq(Damage::getGlassId, glassId)
                    .and(wrapper->wrapper.eq(Damage::getType, 8).or().eq(Damage::getType, 9))
            );
            if(!damage.isEmpty()){
                return true;
            }
        }
        return false;
    }
}
hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/CacheGlassTask.java
@@ -94,7 +94,7 @@
    public static String engineerId = "";
    @Scheduled(fixedDelay = 1000)
    //@Scheduled(fixedDelay = 1000)
    public void plcHomeEdgTask() {
        Date startDate = new Date();
        log.info("本次任务开始执行时间:{}", startDate);
@@ -124,8 +124,9 @@
            log.info("2、获取到的请求字不为0,将确认字不为0,直接结束");
            return;
        }
        if ("1".equals(taskRequestTypeValue)) {
            log.info("2、进片请求,且确认字为0,执行进片任务");
        boolean result = edgStorageCageDetailsService.inToVerify(glassIdeValue);
        if ("1".equals(taskRequestTypeValue)&&result) {
            log.info("2、进片请求,且确认字为0,执行进片任务,扫码重复ID验证【有重复=false,无重复=true】:{}",result);
            inTo(glassIdeValue, confirmationWrodAddress, currentSlot);
        } else if ("2".equals(taskRequestTypeValue)) {
            //09空闲 :1      10空闲 :2        都空闲:3    其他0
@@ -137,8 +138,8 @@
            //加笼子里面是否有玻璃,有先出,无玻璃先进
            boolean outFlase = outTo(Integer.parseInt(out08Glassstate),
                    Integer.parseInt(out10Glassstate), confirmationWrodAddress, glassIdeValue, Integer.parseInt(currentSlot));
            log.info("出片任务是否完成:{},且玻璃id:{}不为空则执行进片任务", outFlase, glassIdeValue);
            if (!outFlase && StringUtils.isNotBlank(glassIdeValue)) {
            log.info("出片任务是否完成:{},且玻璃id:{}不为空则执行进片任务,扫码重复ID验证【有重复=false,无重复=true】:{}", outFlase, glassIdeValue,result);
            if (!outFlase && StringUtils.isNotBlank(glassIdeValue)&&result) {
                inTo(glassIdeValue, confirmationWrodAddress, currentSlot);
            }
        }
hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/OpcCacheGlassTask.java
@@ -1,7 +1,5 @@
package com.mes.job;
import com.mes.milo.runner.subscription.SubscriptionCallback;
import com.mes.milo.service.MiloService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
@@ -18,14 +16,14 @@
@Slf4j
public class OpcCacheGlassTask {
    @Autowired
    MiloService miloService;
    @Autowired
    SubscriptionCallback cacheGlassSubscriptionCallback;
    @Scheduled(fixedDelay = Long.MAX_VALUE)
    public void startOpcTask() throws Exception {
        miloService.subscriptionFromOpcUa(Arrays.asList("my.device.x1", "my.device.x2"), cacheGlassSubscriptionCallback);
    }
//    @Autowired
//    MiloService miloService;
//
//    @Autowired
//    SubscriptionCallback cacheGlassSubscriptionCallback;
//
//    @Scheduled(fixedDelay = Long.MAX_VALUE)
//    public void startOpcTask() throws Exception {
//        miloService.subscriptionFromOpcUa(Arrays.asList("my.device.x1", "my.device.x2"), cacheGlassSubscriptionCallback);
//    }
}
hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/opccallback/CacheGlassSubscriptionCallback.java
@@ -1,8 +1,5 @@
package com.mes.opccallback;
import com.mes.milo.model.ReadWriteEntity;
import com.mes.milo.runner.subscription.SubscriptionCallback;
import com.mes.milo.service.MiloService;
import lombok.extern.slf4j.Slf4j;
import org.eclipse.milo.opcua.sdk.client.subscriptions.ManagedDataItem;
import org.eclipse.milo.opcua.stack.core.types.builtin.DataValue;
@@ -16,20 +13,20 @@
 */
@Service
@Slf4j
public class CacheGlassSubscriptionCallback implements SubscriptionCallback {
public class CacheGlassSubscriptionCallback  {
    @Autowired
    MiloService miloService;
    @Override
    public void onSubscribe(ManagedDataItem dataItem, DataValue value) {
        try {
            log.info("{}___________{}" + dataItem, value);
            ReadWriteEntity readWriteEntity = miloService.readFromOpcUa("my.device.x1");
            log.info("{}___________{}" + readWriteEntity);
        } catch (Exception e) {
        }
    }
//    @Autowired
//    MiloService miloService;
//
//    @Override
//    public void onSubscribe(ManagedDataItem dataItem, DataValue value) {
//        try {
//            log.info("{}___________{}" + dataItem, value);
//            ReadWriteEntity readWriteEntity = miloService.readFromOpcUa("my.device.x1");
//            log.info("{}___________{}" + readWriteEntity);
//        } catch (Exception e) {
//
//        }
//
//    }
}
hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/controller/TaskCacheController.java
@@ -32,6 +32,14 @@
    @Autowired
    private TaskCacheService taskCacheService;
    @ApiOperation("查询钢化版图信息-根据 工程号   参数(工程号)")
    @PostMapping("/temperingTerritory")
    @ResponseBody
    public Result temperingTerritory(String current) {
        List<List<Map<String, Object>>> h = edgStorageCageDetailsService.selectTemperingTerritory(current);
        return Result.build(200, "成功", h);
    }
    @ApiOperation("查询切割版图信息-根据 工程号   参数(工程号)")
    @PostMapping("/cutTerritory")
    @ResponseBody
hangzhoumesParent/moduleService/CacheGlassModule/src/test/java/com/mes/CacheGlassModuleApplicationTest.java
@@ -143,6 +143,12 @@
    }
    @Test
    public void testEngineerTerritory() {
        List<List<Map<String, Object>>> map = edgStorageCageDetailsService.selectTemperingTerritory("P24052203");
        log.info("钢化工程版图信息:{}", Arrays.asList(map));
    }
    @Test
    public void testidentWorn() {
        Map<String, Object> arguments=new HashMap<>();
        arguments.put("glassId","NG24051802A002-1-4-2-4");//玻璃ID
@@ -152,6 +158,11 @@
//        edgStorageCageDetailsService.identWorn(arguments);
        log.info("识别台【破损/拿走】:{}", 1);
    }
    @Test
    public void testInToVerify() {
        boolean result=edgStorageCageDetailsService.inToVerify("P24060405|30|1");
        log.info("是否存在重复ID 》允许进片:{}", result);
    }
    @Test
    public void testPpOptimizeDetail() {
hangzhoumesParent/moduleService/pom.xml
@@ -55,11 +55,11 @@
            <groupId>com.mes</groupId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
        <dependency>
            <artifactId>opcuaClient</artifactId>
            <groupId>com.mes</groupId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
<!--        <dependency>-->
<!--            <artifactId>opcuaClient</artifactId>-->
<!--            <groupId>com.mes</groupId>-->
<!--            <version>1.0-SNAPSHOT</version>-->
<!--        </dependency>-->
        <!--开发者工具-->
        <!--        <dependency>-->