admin
2024-07-09 4e83fa344f6cba81412fb354e7f32a88a8f34fde
jcdm-main/src/main/java/com/jcdm/main/da/paramCollection/service/impl/DaParamCollectionServiceImpl.java
@@ -7,11 +7,15 @@
import cn.hutool.db.Db;
import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.google.gson.Gson;
import com.jcdm.common.core.domain.AjaxResult;
import com.jcdm.common.utils.DateUtils;
import com.jcdm.common.utils.SecurityUtils;
import com.jcdm.common.utils.StringUtils;
import com.jcdm.main.bs.formula.service.IBsFormulaInfoService;
import com.jcdm.main.bs.formula.service.impl.BsFormulaInfoServiceImpl;
@@ -30,6 +34,8 @@
import com.jcdm.main.da.passingStationCollection.domain.DaPassingStationCollection;
import com.jcdm.main.da.passingStationCollection.mapper.DaPassingStationCollectionMapper;
import com.jcdm.main.da.passingStationCollection.service.IDaPassingStationCollectionService;
import com.jcdm.main.om.productionOrde.domain.OmProductionOrdeInfo;
import com.jcdm.main.om.productionOrde.service.IOmProductionOrdeInfoService;
import com.jcdm.main.plcserver.sub.OPCUaSubscription;
import com.jcdm.main.restful.factoryMes.service.RestfulService;
import com.jcdm.main.restful.qingYan.doman.ChildVO;
@@ -50,6 +56,7 @@
import java.text.SimpleDateFormat;
import java.time.Instant;
import java.util.*;
import java.util.concurrent.CompletableFuture;
import java.util.stream.Collectors;
/**
@@ -93,6 +100,12 @@
    @Autowired
    private IDaParamCollectionTempService daParamCollectionTempService;
    @Autowired
    private IOmProductionOrdeInfoService omProductionOrdeInfoService;
    @Autowired
    private IDaPassingStationCollectionService daPassingStationCollectionService;
    public SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
@@ -245,6 +258,7 @@
                daParamCollectionTemp.setCollectionTime(new Date());
                daParamCollectionTemp.setSfcCode(daParamCollection.getProductBarcode());
                daParamCollectionTemp.setLocationCode(daParamCollection.getLocationCode());
                daParamCollectionTemp.setProductCode(daParamCollection.getProductCode());
                daParamCollectionTempService.save(daParamCollectionTemp);
            }
        }
@@ -252,12 +266,13 @@
    @Override
    public void saveCampaignTimeParameters(DaParamCollection daParamCollection) {
        List<BsFormulaChildInfo> list = bsFormulaChildInfoService.list(new LambdaQueryWrapper<BsFormulaChildInfo>()
                .eq(BsFormulaChildInfo::getProcessesCode, daParamCollection.getLocationCode())
                .eq(BsFormulaChildInfo::getSpareField4, "1")
        );
        if(StringUtils.isNotBlank(list.get(0).getResults())){
            if(!list.get(0).getResults().equals("OK")){
//        List<BsFormulaChildInfo> list = bsFormulaChildInfoService.list(new LambdaQueryWrapper<BsFormulaChildInfo>()
//                .eq(BsFormulaChildInfo::getProcessesCode, daParamCollection.getLocationCode())
//                .eq(BsFormulaChildInfo::getSpareField4, "1")
//        );
        BsFormulaChildInfo childInfo = daParamCollection.getFormulaChildEntity();
        if(StringUtils.isNotBlank(childInfo.getResults())){
            if(!childInfo.getResults().equals("OK")){
                try {
                    miloService.writeToOpcShort(ReadWriteEntity.builder().identifier("PACK."+daParamCollection.getLocationCode()+".RecordDataDone").value(22).build());
                } catch (Exception e) {
@@ -273,45 +288,80 @@
            }
            return;
        }
        BsFormulaChildInfo bsFormulaChildInfo = new BsFormulaChildInfo();
        bsFormulaChildInfo.setProcessesCode(daParamCollection.getLocationCode());
        bsFormulaChildInfo.setProductCode(daParamCollection.getProductCode());
        bsFormulaChildInfo.setSpareField4("1");
        List<BsFormulaChildInfo> bsFormulaChildInfos = bsFormulaChildInfoMapper.selectBsFormulaChildInfoList(bsFormulaChildInfo);
        String result = bsFormulaChildInfos.get(0).getResults();
//        BsFormulaChildInfo bsFormulaChildInfo = new BsFormulaChildInfo();
//        bsFormulaChildInfo.setProcessesCode(daParamCollection.getLocationCode());
//        bsFormulaChildInfo.setProductCode(daParamCollection.getProductCode());
//        bsFormulaChildInfo.setSpareField4("1");
//        List<BsFormulaChildInfo> bsFormulaChildInfos = bsFormulaChildInfoMapper.selectBsFormulaChildInfoList(bsFormulaChildInfo);
        String result = childInfo.getResults();
        if(result != null && !result.isEmpty()){
            try {
                //过站参数采集记录出站时间
                DaCollectionParamConf daCollectionParamConf = new DaCollectionParamConf();
                daCollectionParamConf.setProcessesCode(daParamCollection.getLocationCode());
                daCollectionParamConf.setCollectParameterId("OUTT");
                List<DaCollectionParamConf> daCollectionParamConfs = daCollectionParamConfMapper.selectDaCollectionParamConfList(daCollectionParamConf);
                DaParamCollection saveData = new DaParamCollection();
                saveData.setWorkOrderNo(daParamCollection.getWorkOrderNo());
                saveData.setProductCode(daParamCollection.getProductCode());
                saveData.setLocationCode(daParamCollection.getLocationCode());
                saveData.setSfcCode(daParamCollection.getProductBarcode());
                saveData.setParamCode(daCollectionParamConfs.get(0).getCollectParameterId());
                saveData.setParamName(daCollectionParamConfs.get(0).getCollectParameterName());
                saveData.setCollectionTime(new Date());
                saveData.setParamValue(DateUtil.formatDateTime(new Date()));
                daParamCollectionMapper.insertDaParamCollection(saveData);
//                //更新参数采集配置表
//                DaCollectionParamConf daCollectionParamConf = new DaCollectionParamConf();
//                daCollectionParamConf.setProcessesCode(daParamCollection.getLocationCode());
//                daCollectionParamConf.setCollectParameterId("OUTT");
//                List<DaCollectionParamConf> daCollectionParamConfs = daCollectionParamConfMapper.selectDaCollectionParamConfList(daCollectionParamConf);
//                DaParamCollection saveData = new DaParamCollection();
//                saveData.setWorkOrderNo(daParamCollection.getWorkOrderNo());
//                saveData.setProductCode(daParamCollection.getProductCode());
//                saveData.setLocationCode(daParamCollection.getLocationCode());
//                saveData.setSfcCode(daParamCollection.getProductBarcode());
//                saveData.setParamCode(daCollectionParamConfs.get(0).getCollectParameterId());
//                saveData.setParamName(daCollectionParamConfs.get(0).getCollectParameterName());
//                saveData.setCollectionTime(new Date());
//                saveData.setParamValue(DateUtil.formatDateTime(new Date()));
//                daParamCollectionMapper.insertDaParamCollection(saveData);
                //更新过站记录表出站时间
                //增加过站记录
                DaPassingStationCollection daPassingStationCollection = new DaPassingStationCollection();
                daPassingStationCollection.setWorkOrderNo(daParamCollection.getWorkOrderNo());
                daPassingStationCollection.setSfcCode(daParamCollection.getProductBarcode());
                daPassingStationCollection.setProductCode(daParamCollection.getProductCode());
                daPassingStationCollection.setLocationCode(daParamCollection.getLocationCode());
                List<DaPassingStationCollection> daPassingStationCollections = daPassingStationCollectionMapper.selectDaPassingStationCollectionList(daPassingStationCollection);
                daPassingStationCollections.get(0).setOutboundTime(new Date());
                int i = daPassingStationCollectionMapper.updateDaPassingStationCollection(daPassingStationCollections.get(0));
                daPassingStationCollection.setInboundTime(daParamCollection.getInboundTime());
                daPassingStationCollection.setOutboundTime(new Date());
                daPassingStationCollection.setCreateTime(new Date());
                daPassingStationCollection.setOutRsSign("1");
                boolean save = daPassingStationCollectionService.save(daPassingStationCollection);
                //添加基础参数
                this.manualWorkstationsAddBasicParameters(daParamCollection);
//                //更新过站记录表出站时间
//                DaPassingStationCollection daPassingStationCollection = new DaPassingStationCollection();
//                daPassingStationCollection.setWorkOrderNo(daParamCollection.getWorkOrderNo());
//                daPassingStationCollection.setLocationCode(daParamCollection.getLocationCode());
//                List<DaPassingStationCollection> daPassingStationCollections = daPassingStationCollectionMapper.selectDaPassingStationCollectionList(daPassingStationCollection);
//                daPassingStationCollections.get(0).setOutboundTime(new Date());
//                int i = daPassingStationCollectionMapper.updateDaPassingStationCollection(daPassingStationCollections.get(0));
//                OPCUaSubscription.SaveParamData(daParamCollection.getProductBarcode(),"OP",daParamCollection.getLocationCode(),daParamCollection.getWorkOrderNo(),daParamCollection.getProductCode());
                //给opc发21
                miloService.writeToOpcShort(ReadWriteEntity.builder().identifier("PACK."+daParamCollection.getLocationCode()+".RecordDataDone").value(21).build());
                if(daParamCollection.getLocationCode().equals("OP240")){
                    RestfulService.getWorkReportResultFeedback(daParamCollection.getProductBarcode(),"OP230",format.format(new Date()));
                    try{
                        CompletableFuture<Void> cp1 = CompletableFuture.runAsync(() -> {
                            logger.info("OP230报工开始-工厂MES异步方法");
                            String reportResult = RestfulService.getWorkReportResultFeedback(daParamCollection.getProductBarcode(), "POP230", format.format(new Date()));
                            JSONObject jsonObject = new JSONObject(reportResult);
                            String code = jsonObject.getStr("code");
                            if("success".equals(code)){
                                //如果成功,执行报工成功方法,修改是否报工为1,添加报工时间
                                omProductionOrdeInfoService.updateOrderByProductNum("1",daParamCollection.getProductBarcode(),"POP230");
                            }else{
                                //解析工厂mes返回结果,如果失败,执行报工失败方法,修改是否报工为2,添加报工时间
                                omProductionOrdeInfoService.updateOrderByProductNum("2",daParamCollection.getProductBarcode(),"POP230");
                            }
                            logger.info("OP230报工结束-工厂MES异步方法{}"+reportResult);
                        });
                    }catch (Exception e){
                        System.out.println(e.getMessage());
                    }
//                    RestfulService.getWorkReportResultFeedback(daParamCollection.getProductBarcode(),"OP230",format.format(new Date()));
                }
            } catch (Exception e) {
                throw new RuntimeException(e);
            }
@@ -374,36 +424,26 @@
    @Override
    public void jrmSaveCampaignTimeParameters(DaParamCollection daParamCollection) {
        DaCollectionParamConf daCollectionParamConf = new DaCollectionParamConf();
        daCollectionParamConf.setProcessesCode(daParamCollection.getLocationCode());
        daCollectionParamConf.setCollectParameterId("OUTT");
        List<DaCollectionParamConf> daCollectionParamConfs = daCollectionParamConfMapper.selectDaCollectionParamConfList(daCollectionParamConf);
        DaParamCollection saveData = new DaParamCollection();
        saveData.setWorkOrderNo(daParamCollection.getWorkOrderNo());
        saveData.setProductCode(daParamCollection.getProductCode());
        saveData.setLocationCode(daParamCollection.getLocationCode());
        saveData.setSfcCode(daParamCollection.getProductBarcode());
        saveData.setParamCode(daCollectionParamConfs.get(0).getCollectParameterId());
        saveData.setParamName(daCollectionParamConfs.get(0).getCollectParameterName());
        saveData.setCollectionTime(new Date());
        saveData.setParamValue(DateUtil.formatDateTime(new Date()));
        daParamCollectionMapper.insertDaParamCollection(saveData);
        //更新过站记录表出站时间
        //增加过站记录
        DaPassingStationCollection daPassingStationCollection = new DaPassingStationCollection();
        daPassingStationCollection.setWorkOrderNo(daParamCollection.getWorkOrderNo());
        daPassingStationCollection.setSfcCode(daParamCollection.getProductBarcode());
        daPassingStationCollection.setProductCode(daParamCollection.getProductCode());
        daPassingStationCollection.setLocationCode(daParamCollection.getLocationCode());
        List<DaPassingStationCollection> daPassingStationCollections = daPassingStationCollectionMapper.selectDaPassingStationCollectionList(daPassingStationCollection);
        daPassingStationCollections.get(0).setOutboundTime(new Date());
        int i = daPassingStationCollectionMapper.updateDaPassingStationCollection(daPassingStationCollections.get(0));
        daPassingStationCollection.setInboundTime(daParamCollection.getInboundTime());
        daPassingStationCollection.setOutboundTime(new Date());
        daPassingStationCollection.setCreateTime(new Date());
        daPassingStationCollection.setOutRsSign("1");
        boolean save = daPassingStationCollectionService.save(daPassingStationCollection);
//                OPCUaSubscription.SaveParamData(daParamCollection.getProductBarcode(),"OP",daParamCollection.getLocationCode(),daParamCollection.getWorkOrderNo(),daParamCollection.getProductCode());
        //添加基础参数
        this.manualWorkstationsAddBasicParameters(daParamCollection);
        //给opc发21
        try {
//            miloService.writeToOpcShort(ReadWriteEntity.builder().identifier("PACK."+daParamCollection.getLocationCode()+".RecordDataDone").value(21).build());
            String strA = daParamCollection.getLocationCode();
            miloService.writeToOpcShort(ReadWriteEntity.builder().identifier("PACK."+strA+".RecordDataDone").value(21).build());
            String str = daParamCollection.getLocationCode();
            miloService.writeToOpcShort(ReadWriteEntity.builder().identifier("PACK."+str+".RecordDataDone").value(21).build());
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
@@ -462,9 +502,10 @@
    @Override
    public void pushGeelycvMesFeedback(String packID, String stationCode) {
        logger.info("进入人工工位推送工厂MES数据方法-pushGeelycvMesFeedback-工位{}-pack码{}",stationCode,packID);
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//        String url = "https://imes-uat-group.geelycv-test.com/api/mom-open/restful/aMesSysIntegration/deviceResultFeedback";
        String url = "https://imes-group.geelycv.com/api/mom-open/restful/aMesSysIntegration/deviceResultFeedback";
        String url = "https://imes-uat-group.geelycv-test.com/api/mom-open/restful/aMesSysIntegration/deviceResultFeedback";
//        String url = "https://imes-group.geelycv.com/api/mom-open/restful/aMesSysIntegration/deviceResultFeedback";
        String totalResult = "0";
        List<DaParamCollectionTemp> paramList = daParamCollectionTempService.list(new LambdaQueryWrapper<DaParamCollectionTemp>().eq(DaParamCollectionTemp::getSfcCode, packID).eq(DaParamCollectionTemp::getLocationCode, stationCode));
        if(paramList.size() > 0){
@@ -516,12 +557,29 @@
            }
            parentVO.setCheckList(listChildVo);
            HttpResponse execute = HttpRequest.post(url).body(JSONUtil.toJsonStr(parentVO)).execute();
            List<Long> idsList = paramList.stream().map(DaParamCollectionTemp::getId).collect(Collectors.toList());
            Long[] array = idsList.toArray(new Long[0]);
            daParamCollectionTempService.deleteDaParamCollectionTempByIds(array);
            System.out.println(execute.body());
            System.out.println("-----------------------"+totalResult);
            try{
                CompletableFuture<Void> cp1 = CompletableFuture.runAsync(() -> {
                    logger.info("开始执行异步方法");
                    HttpResponse execute = HttpRequest.post(url).body(JSONUtil.toJsonStr(parentVO)).execute();
                    logger.info("异步方法执行结束");
                    logger.info("手动工位{}传工厂入参VO{}" + stationCode,new Gson().toJson(parentVO));
                    logger.info("手动工位{}传工厂MES异步方法{}"+stationCode,execute.body());
                    DaParamCollectionTemp daParamCollectionTemp = new DaParamCollectionTemp();
                    daParamCollectionTemp.setSfcCode(packID);
                    daParamCollectionTemp.setLocationCode(stationCode);
                    int i = daParamCollectionTempService.deleteDaParamCollectionTempBySfcCodeAndLocationCode(daParamCollectionTemp);
                    logger.info("删除临时表数据条数{}-工位{}-pack码{}",i,stationCode,packID);
//                    List<Long> idsList = paramList.stream().map(DaParamCollectionTemp::getId).collect(Collectors.toList());
//                    Long[] array = idsList.toArray(new Long[0]);
//                    int i = daParamCollectionTempService.deleteDaParamCollectionTempByIds(array);
//                    logger.info("删除临时表数据条数{}-工位{}-pack码{}",i,stationCode,packID);
                });
            }catch (Exception e){
                System.out.println(e.getMessage());
            }
//            HttpResponse execute = HttpRequest.post(url).body(JSONUtil.toJsonStr(parentVO)).execute();
            logger.info("结束人工工位推送工厂MES数据方法-pushGeelycvMesFeedback-工位{}-pack码{}",stationCode,packID);
        }
    }
@@ -584,10 +642,19 @@
            parentVO.setCheckList(listChildVo);
            logger.info("结束工位{}-拼数据",stationCode);
            logger.info("进入工位{}-工厂MES推送数据方法HttpResponseSend",stationCode);
            HttpResponse execute = HttpRequest.post(url).body(JSONUtil.toJsonStr(parentVO)).execute();
            try{
                CompletableFuture<Void> cp1 = CompletableFuture.runAsync(() -> {
                    logger.info("开始执行异步方法");
                    HttpResponse execute = HttpRequest.post(url).body(JSONUtil.toJsonStr(parentVO)).execute();
                    logger.info("异步方法执行结束");
                    logger.info("自动工位{}传工厂入参VO{}" + stationCode,new Gson().toJson(parentVO));
                    logger.info("自动工位{}传工厂MES异步方法返回{}"+stationCode,execute.body());
                });
            }catch (Exception e){
                System.out.println(e.getMessage());
            }
//            HttpResponse execute = HttpRequest.post(url).body(JSONUtil.toJsonStr(parentVO)).execute();
            logger.info("结束工位{}-工厂MES推送数据方法HttpResponseSend",stationCode);
            System.out.println(execute.body());
            System.out.println("-----------------------"+totalResult);
        }
        logger.info("结束工位{}-工厂MES推送数据方法automaticWorkstationPushGeelycvMesFeedback",stationCode);
    }
@@ -631,13 +698,78 @@
        childVOList.add(childVO);
        parentVO.setSiteCode("3983");
        parentVO.setRecordId(""+timestampMillis);
        parentVO.setStationCode("OP500");
        parentVO.setStationCode("POP430");
        parentVO.setProductNum(daParamCollection.getSfcCode());
        parentVO.setTotalResult("1");
        parentVO.setCheckList(childVOList);
        HttpResponse execute = HttpRequest.post(url).body(JSONUtil.toJsonStr(parentVO)).execute();
        RestfulService.getWorkReportResultFeedback(daParamCollection.getSfcCode(),"OP500",format.format(new Date()));
        System.out.println(execute.body());
//        try{
//            CompletableFuture<Void> cp1 = CompletableFuture.runAsync(() -> {
//                logger.info("开始执行异步方法");
//                HttpResponse execute = HttpRequest.post(url).body(JSONUtil.toJsonStr(parentVO)).execute();
//                System.out.println(execute.body());
//                logger.info("异步方法执行结束");
//                logger.info("称重异步方法{}",execute.body());
//            });
//        }catch (Exception e){
//            System.out.println(e.getMessage());
//        }
        RestfulService.getWorkReportResultFeedback(daParamCollection.getSfcCode(),"POP430",format.format(new Date()));
    }
    @Override
    public void manualWorkstationsAddBasicParameters(DaParamCollection daParamCollection) {
        // 假设这是从数据库或其他地方获取的参数数据
        Map<String, String> map = new HashMap<>();
        map.put("GC", "南浔工厂");
        map.put("CXBH", "Pack线");
        map.put("SBBH", "设备001");
        map.put("YGBH", SecurityUtils.getUsername());
        map.put("GDBH", daParamCollection.getWorkOrderNo());
        map.put("CPXH", daParamCollection.getProductCode());
        map.put("INT", format.format(daParamCollection.getInboundTime()));
        map.put("OUTT",format.format(new Date()));
        map.forEach((key, value) -> {
            DaCollectionParamConf daCollectionParamConf = new DaCollectionParamConf();
            daCollectionParamConf.setProcessesCode(daParamCollection.getLocationCode());
            daCollectionParamConf.setCollectParameterId(key);
            List<DaCollectionParamConf> daCollectionParamConfs = daCollectionParamConfMapper.selectDaCollectionParamConfList(daCollectionParamConf);
            DaParamCollection saveData = new DaParamCollection();
            saveData.setWorkOrderNo(daParamCollection.getWorkOrderNo());
            saveData.setProductCode(daParamCollection.getProductCode());
            saveData.setLocationCode(daParamCollection.getLocationCode());
            saveData.setSfcCode(daParamCollection.getProductBarcode());
            saveData.setParamCode(daCollectionParamConfs.get(0).getCollectParameterId());
            saveData.setParamName(daCollectionParamConfs.get(0).getCollectParameterName());
            saveData.setCollectionTime(new Date());
            saveData.setParamValue(value);
            daParamCollectionMapper.insertDaParamCollection(saveData);
        });
    }
    @Override
    public void preInstallOut(DaParamCollection daParamCollection) {
        String locationCode = daParamCollection.getLocationCode();
        //增加过站记录
        DaPassingStationCollection daPassingStationCollection = new DaPassingStationCollection();
        daPassingStationCollection.setSfcCode(daParamCollection.getProductBarcode());
        daPassingStationCollection.setLocationCode(locationCode);
        daPassingStationCollection.setInboundTime(daParamCollection.getInboundTime());
        daPassingStationCollection.setOutboundTime(new Date());
        daPassingStationCollection.setCreateTime(new Date());
        daPassingStationCollection.setOutRsSign("1");
        boolean save = daPassingStationCollectionService.save(daPassingStationCollection);
        //添加基础参数
        this.manualWorkstationsAddBasicParameters(daParamCollection);
        try {
            String str = "PACK."+locationCode+".RecordDataDone";
            miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(str).value(21).build());
            logger.info("预装工位写入OPC成功,工位:{},值{}",str,21);
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }
}