1、100工位报工前,先将工单状态改为3执行中
2、手动接收工单,修改为先查表中是否有剩余工单,
3、OP030电芯检测放开
4、接收工单时,将两个工位区分开存工单
已修改4个文件
169 ■■■■■ 文件已修改
jcdm-framework/src/main/java/com/jcdm/framework/websocket/WebSocketUsers.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-main/src/main/java/com/jcdm/main/da/paramCollection/service/impl/DaParamCollectionServiceImpl.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-main/src/main/java/com/jcdm/main/om/productionOrde/controller/OmProductionOrdeInfoController.java 92 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-main/src/main/java/com/jcdm/main/plcserver/sub/OPCUaSubscription.java 66 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-framework/src/main/java/com/jcdm/framework/websocket/WebSocketUsers.java
@@ -116,7 +116,7 @@
    /**
     * 发送文本消息
     *
     * @param userName 自己的用户名
     * @param session 自己的用户名
     * @param message 消息内容
     */
    public static void sendMessageToUserByText(Session session, String message)
jcdm-main/src/main/java/com/jcdm/main/da/paramCollection/service/impl/DaParamCollectionServiceImpl.java
@@ -311,9 +311,16 @@
                miloService.writeToOpcShort(ReadWriteEntity.builder().identifier("MOZU1."+daParamCollection.getLocationCode()+".RecordDataDone").value(21).build());
                if(daParamCollection.getLocationCode().equals("M1OP100-1") || daParamCollection.getLocationCode().equals("M1OP100-2") ){
                    try{
                        //更新工单状态为已执行
                        LambdaUpdateWrapper<OmProductionOrdeInfo> updateWrapper = new LambdaUpdateWrapper<>();
                        updateWrapper.set(OmProductionOrdeInfo::getOrderStatus,"3");
                        updateWrapper.eq(OmProductionOrdeInfo::getProductNum,daParamCollection.getProductBarcode());
                        omProductionOrdeInfoService.update(new OmProductionOrdeInfo(),updateWrapper);
                        //上传工厂MES报工
                        CompletableFuture<Void> cp1 = CompletableFuture.runAsync(() -> {
                            logger.info("OP100报工开始-工厂MES异步方法");
                            String stationCode = "M1P100";//因为上层系统只支持6为,所有报工工位为M1P100
                            String stationCode = "M1P100";//因为上层系统只支持6位,所有报工工位为M1P100
                            String reportResult = RestfulService.getWorkReportResultFeedback(daParamCollection.getProductBarcode(), stationCode, format.format(new Date()));
                            JSONObject jsonObject = new JSONObject(reportResult);
                            String code = jsonObject.getStr("code");
jcdm-main/src/main/java/com/jcdm/main/om/productionOrde/controller/OmProductionOrdeInfoController.java
@@ -6,6 +6,7 @@
import java.util.concurrent.CompletableFuture;
import javax.servlet.http.HttpServletResponse;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.json.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -128,48 +129,69 @@
        if (ObjectUtil.isNull(productTypeObjcet)) {
            return AjaxResult.error("接单失败,PLC未传输生产类型,请联系管理员!");
        }
        String productType = productTypeObjcet.toString();//产品类型
        String materialCode = Constants.materialMap.get(productType);
        OmProductionOrdeInfo lastOrder = omProductionOrdeInfoService.getLastOrder();
        String orderJsonString = RestfulService.getProductionWorkOrderRequest(lastOrder.getProductNum(), "M1OP100",materialCode);
        JSONObject jsonObject = new JSONObject(orderJsonString);
        // 从JSONObject中获取data对象
        JSONObject dataObject = jsonObject.getJSONObject("data");
        String code = jsonObject.getStr("code");
        // 判断接单是否成功
        if(code.equals("success")){
            logger.info("请求工厂MES工单:入参pack{}出参pack:{}",paramProductNum,dataObject.getStr("productNum"));
            List<OmProductionOrdeInfo> check = omProductionOrdeInfoService.list(new LambdaQueryWrapper<OmProductionOrdeInfo>().eq(OmProductionOrdeInfo::getProductNum,dataObject.getStr("productNum")));
            if(check.isEmpty()){
                try {
                    log.info("请求工厂MES工单:入参pack{}出参pack:{}", paramProductNum, dataObject.getStr("productNum"));
                    OmProductionOrdeInfo omProductionOrdeInfo = new OmProductionOrdeInfo();
                    omProductionOrdeInfo.setWorkOrderNo(dataObject.getStr("productionOrderNum"));
                    omProductionOrdeInfo.setProductNum(dataObject.getStr("productNum"));
                    omProductionOrdeInfo.setStationCode(dataObject.getStr("stationCode"));
                    omProductionOrdeInfo.setProductCode(dataObject.getStr("materialCode"));
                    omProductionOrdeInfo.setPlanQty(Long.valueOf(dataObject.getStr("plannedQuantity")));
                    omProductionOrdeInfo.setOnlineCompletionMark("0");
                    omProductionOrdeInfo.setSfResult("0");
                    omProductionOrdeInfo.setProductModel(dataObject.getStr("model"));
                    omProductionOrdeInfo.setCreateTime(new Date());
                    omProductionOrdeInfo.setCreateUser("工厂MES");
                    omProductionOrdeInfoService.save(omProductionOrdeInfo);
                    //写PLC
                    miloService.writeToOpcUa(ReadWriteEntity.builder().identifier("MOZU1." + paramOrder.getLineCode() + ".WorkOrderNumber").value(dataObject.getStr("productionOrderNum")).build());
                    miloService.writeToOpcUa(ReadWriteEntity.builder().identifier("MOZU1." + paramOrder.getLineCode() + ".ModuleCode").value(dataObject.getStr("productNum")).build());
                } catch (Exception e) {
                    throw new RuntimeException(e);
        //先查询表中是否有剩余工单
        List<OmProductionOrdeInfo> orderList = omProductionOrdeInfoService.list(new LambdaQueryWrapper<OmProductionOrdeInfo>()
                .eq(OmProductionOrdeInfo::getOrderStatus, Constants.ONE)
                .eq(OmProductionOrdeInfo::getStationCode,paramOrder.getLineCode())//工位
                .eq(OmProductionOrdeInfo::getProductCode,materialCode));//产品类型
        if (CollUtil.isNotEmpty(orderList)){
            Long id = orderList.get(0).getId();
            String productNum = orderList.get(0).getProductNum();//模组码
            String orderNum = orderList.get(0).getWorkOrderNo();
            paramProductNum = productNum;
            //下发产品模组码
            miloService.writeToOpcUa(ReadWriteEntity.builder().identifier("MOZU1." + paramOrder.getLineCode() + ".WorkOrderNumber").value(orderNum).build());
            miloService.writeToOpcUa(ReadWriteEntity.builder().identifier("MOZU1." + paramOrder.getLineCode() + ".ModuleCode").value(productNum).build());
        }else{
            OmProductionOrdeInfo lastOrder = omProductionOrdeInfoService.getLastOrder();
            String orderJsonString = RestfulService.getProductionWorkOrderRequest(lastOrder.getProductNum(), "M1OP100",materialCode);
            JSONObject jsonObject = new JSONObject(orderJsonString);
            // 从JSONObject中获取data对象
            JSONObject dataObject = jsonObject.getJSONObject("data");
            String code = jsonObject.getStr("code");
            // 判断接单是否成功
            if(code.equals("success")){
                logger.info("请求工厂MES工单:入参pack{}出参pack:{}",paramProductNum,dataObject.getStr("productNum"));
                List<OmProductionOrdeInfo> check = omProductionOrdeInfoService.list(new LambdaQueryWrapper<OmProductionOrdeInfo>().eq(OmProductionOrdeInfo::getProductNum,dataObject.getStr("productNum")));
                if(check.isEmpty()){
                    try {
                        log.info("请求工厂MES工单:入参pack{}出参pack:{}", paramProductNum, dataObject.getStr("productNum"));
                        OmProductionOrdeInfo omProductionOrdeInfo = new OmProductionOrdeInfo();
                        omProductionOrdeInfo.setWorkOrderNo(dataObject.getStr("productionOrderNum"));
                        omProductionOrdeInfo.setProductNum(dataObject.getStr("productNum"));
                        omProductionOrdeInfo.setStationCode(paramOrder.getLineCode());//工位
                        omProductionOrdeInfo.setProductCode(dataObject.getStr("materialCode"));
                        omProductionOrdeInfo.setPlanQty(Long.valueOf(dataObject.getStr("plannedQuantity")));
                        omProductionOrdeInfo.setOnlineCompletionMark("0");
                        omProductionOrdeInfo.setSfResult("0");
                        omProductionOrdeInfo.setProductModel(dataObject.getStr("model"));
                        omProductionOrdeInfo.setCreateTime(new Date());
                        omProductionOrdeInfo.setCreateUser("工厂MES");
                        omProductionOrdeInfoService.save(omProductionOrdeInfo);
                        paramProductNum = dataObject.getStr("productNum");
                        //写PLC
                        miloService.writeToOpcUa(ReadWriteEntity.builder().identifier("MOZU1." + paramOrder.getLineCode() + ".WorkOrderNumber").value(dataObject.getStr("productionOrderNum")).build());
                        miloService.writeToOpcUa(ReadWriteEntity.builder().identifier("MOZU1." + paramOrder.getLineCode() + ".ModuleCode").value(dataObject.getStr("productNum")).build());
                    } catch (Exception e) {
                        throw new RuntimeException(e);
                    }
                }else{
                    return AjaxResult.error("工单重复,请重新接收");
                }
            }else{
                return AjaxResult.error("工单重复,请重新接收");
            }else {
                return AjaxResult.error("接单失败,请联系管理员");
            }
        }else {
            return AjaxResult.error("接单失败,请联系管理员");
        }
        return AjaxResult.success(dataObject.getStr("productNum"));
        return AjaxResult.success(paramProductNum);
    }
    @GetMapping(value = "/jieBang/{id}")
jcdm-main/src/main/java/com/jcdm/main/plcserver/sub/OPCUaSubscription.java
@@ -130,13 +130,13 @@
                            String cellCode = value1.toString();
                            scanResult = 11;
                            //反馈电芯ocv检测结果,这里不用再进行检测,只要码没问题就可以了
                            /*boolean b = OCVResultFeedBack(thoroughfare, device,cellCode);//对替换电芯校验
                            boolean b = OCVResultFeedBack(thoroughfare, device,cellCode);//对替换电芯校验
                            //四个电芯的状态
                            if (b){
                                scanResult = 11;
                            }else {
                                scanResult = 12;
                            }*/
                            }
                        }else {
                            scanResult = 12;
                        }
@@ -181,7 +181,7 @@
                        if (ObjectUtil.isNotNull(productTypeObjcet)){
                            String productType = productTypeObjcet.toString();//产品类型
                            String materialCode = Constants.materialMap.get(productType);
                            //调用工厂MES,保存到数据库,并且将工单传给PLC
                            //接收工单,保存到数据库,并且将工单传给PLC
                            CompletableFuture<Void> cp1 = CompletableFuture.runAsync(() -> {
                                receivingWorkOrders(thoroughfare, device,materialCode);
                            });
@@ -326,7 +326,7 @@
                OmProductionOrdeInfo omProductionOrdeInfo = new OmProductionOrdeInfo();
                omProductionOrdeInfo.setWorkOrderNo(dataObject.getStr("productionOrderNum"));
                omProductionOrdeInfo.setProductNum(dataObject.getStr("productNum"));
                omProductionOrdeInfo.setStationCode(dataObject.getStr("stationCode"));
                omProductionOrdeInfo.setStationCode(device);
                omProductionOrdeInfo.setProductCode(dataObject.getStr("materialCode"));
                omProductionOrdeInfo.setPlanQty(Long.valueOf(dataObject.getStr("plannedQuantity")));
                omProductionOrdeInfo.setOnlineCompletionMark("0");
@@ -830,36 +830,6 @@
    }
    /**
     * 030工位返回ocv测试结果
     * @param thoroughfare
     * @param device
     * @param cellCode
     * @throws Exception
     */
    private boolean OCVResultFeedBack(String thoroughfare, String device,String cellCode) throws Exception {
        boolean flag = true;
        List<DaTestDeviceInterfaceTemp> list = daTestDeviceInterfaceTempService.list(new LambdaQueryWrapper<DaTestDeviceInterfaceTemp>()
                .eq(DaTestDeviceInterfaceTemp::getStationCode, "M1OP020")
                .eq(DaTestDeviceInterfaceTemp::getProductNum,cellCode)
                .orderByDesc(DaTestDeviceInterfaceTemp::getCreateTime)
        );
        if (CollUtil.isNotEmpty(list)){
            DaTestDeviceInterfaceTemp daTestDeviceInterfaceTemp = list.get(0);
            if (Constants.ONE.equals(daTestDeviceInterfaceTemp.getTotalResult())){
                flag = true;
            }else {
                flag = false;
            }
            daTestDeviceInterfaceTempService.deleteDaTestDeviceInterfaceTempByProductNum(cellCode);
        }else {
            flag = false;
            log.info("读取到工位{},测试设备返回的数据查询不到,电芯码为:{}",device,cellCode);
        }
        return flag;
    }
    /**
     * OP020校验电芯挡位
     * @param thoroughfare
     * @param device
@@ -898,6 +868,34 @@
     * 030工位返回ocv测试结果
     * @param thoroughfare
     * @param device
     * @param cellCode
     * @throws Exception
     */
    private boolean OCVResultFeedBack(String thoroughfare, String device,String cellCode) throws Exception {
        boolean flag = true;
        List<DaTestDeviceInterfaceTemp> list = daTestDeviceInterfaceTempService.list(new LambdaQueryWrapper<DaTestDeviceInterfaceTemp>()
                //.eq(DaTestDeviceInterfaceTemp::getStationCode, "M1OP020")
                .eq(DaTestDeviceInterfaceTemp::getProductNum,cellCode)
                .orderByDesc(DaTestDeviceInterfaceTemp::getCreateTime)
        );
        if (CollUtil.isNotEmpty(list)){
            DaTestDeviceInterfaceTemp daTestDeviceInterfaceTemp = list.get(0);
            if (Constants.ONE.equals(daTestDeviceInterfaceTemp.getTotalResult())){
                flag = true;
            }else {
                flag = false;
            }
            //daTestDeviceInterfaceTempService.deleteDaTestDeviceInterfaceTempByProductNum(cellCode);
        }else {
            flag = false;
            log.info("读取到工位{},测试设备返回的数据查询不到,电芯码为:{}",device,cellCode);
        }
        return flag;
    }
    /**
     * 030工位返回ocv测试结果
     * @param thoroughfare
     * @param device
     * @throws Exception
     */
    private boolean OCVResultFeedBack(String thoroughfare, String device) throws Exception {