admin
2024-07-11 1c7c8148c6e5189cae44973ca7108cf0056779c9
jcdm-main/src/main/java/com/jcdm/main/restful/qingYan/service/ExternalInterface.java
@@ -9,6 +9,7 @@
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.jcdm.common.core.domain.AjaxResult;
import com.jcdm.common.utils.StringUtils;
@@ -18,12 +19,16 @@
import com.jcdm.main.bs.formulaChild.domain.BsFormulaChildInfo;
import com.jcdm.main.bs.formulaChild.service.IBsFormulaChildInfoService;
import com.jcdm.main.constant.Constants;
import com.jcdm.main.da.cellData.domain.DaCellData;
import com.jcdm.main.da.cellData.service.IDaCellDataService;
import com.jcdm.main.da.paramCollection.domain.DaParamCollection;
import com.jcdm.main.da.paramCollection.service.IDaParamCollectionService;
import com.jcdm.main.da.passingStationCollection.domain.DaPassingStationCollection;
import com.jcdm.main.da.passingStationCollection.service.IDaPassingStationCollectionService;
import com.jcdm.main.da.testDeviceInterface.domain.DaTestDeviceInterface;
import com.jcdm.main.da.testDeviceInterface.service.IDaTestDeviceInterfaceService;
import com.jcdm.main.da.testDeviceInterfaceTemp.domain.DaTestDeviceInterfaceTemp;
import com.jcdm.main.da.testDeviceInterfaceTemp.service.IDaTestDeviceInterfaceTempService;
import com.jcdm.main.om.productionOrde.domain.OmProductionOrdeInfo;
import com.jcdm.main.om.productionOrde.service.IOmProductionOrdeInfoService;
import com.jcdm.main.restful.factoryMes.service.RestfulService;
@@ -55,14 +60,6 @@
    @Autowired
    private IDaTestDeviceInterfaceService daTestDeviceInterfaceService;
    @Autowired
    private IDaParamCollectionService daParamCollectionService;
    @Resource
    private IDaPassingStationCollectionService daPassingStationCollectionService;
    @Autowired
    private IOmProductionOrdeInfoService productionOrdeInfoService;
    @Autowired
    private IOmProductionOrdeInfoService omProductionOrdeInfoService;
@@ -71,128 +68,68 @@
    private IBsFormulaChildInfoService bsFormulaChildInfoService;
    @Autowired
    private IBsBeatSettingService bsBeatSettingService;
    private IDaCellDataService daCellDataService;
    private IDaPassingStationCollectionService passingStationCollectionService;
    @Autowired
    private IDaTestDeviceInterfaceTempService daTestDeviceInterfaceTempService;
    String url = Constants.FACTORY_EMS_UAT_RUL+"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 url = "https://imes-group.geelycv.com/api/mom-open/restful/aMesSysIntegration/deviceResultFeedback";
    /**
     * 20工位接收清研数据
     */
    @PostMapping("/receiveOVCDataFrom020Workstations")
    public AjaxResult receiveOVCDataFrom020Workstations(@RequestBody ParentVO parentVO)
    {
        return AjaxResult.success(null);
    }
    /**
     * 导出点检任务列表
     */
    @PostMapping("/deviceResultFeedback")
    public AjaxResult hdy(@RequestBody ParentVO parentVO)
    public AjaxResult deviceResultFeedback(@RequestBody ParentVO parentVO)
    {
        //保存
        //过站记录
//        String productNum = parentVO.getProductNum();
//        if (StrUtil.isNotBlank(productNum)){
//            List<OmProductionOrdeInfo> list = productionOrdeInfoService.list(new LambdaQueryWrapper<OmProductionOrdeInfo>().eq(OmProductionOrdeInfo::getProductNum, productNum));
//            if (CollUtil.isNotEmpty(list)){
//                OmProductionOrdeInfo omProductionOrdeInfo = list.get(0);
//                DaPassingStationCollection passingStationCollection = new DaPassingStationCollection();
//                passingStationCollection.setWorkOrderNo(omProductionOrdeInfo.getWorkOrderNo());
//                passingStationCollection.setSfcCode(productNum);
//                passingStationCollection.setProductCode(omProductionOrdeInfo.getProductCode());
//                passingStationCollection.setLocationCode(parentVO.getStationCode());
//                passingStationCollection.setOutRsSign(parentVO.getTotalResult());
//                passingStationCollection.setCreateTime(new Date());
//
//                List<ChildVO> checkList = parentVO.getCheckList();
//                if (CollUtil.isNotEmpty(checkList)){
//                    List<String> collect = checkList.stream()
//                            .filter(x -> Constants.IN_BOUND_TIME_CODE.equals(x.getItemCode()))
//                            .map(ChildVO::getItemValue)
//                            .collect(Collectors.toList());
//                    if (CollUtil.isNotEmpty(collect)){
//                        String s = collect.get(0);
//                        if (StrUtil.isNotBlank(s)){
//                            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//                            try {
//                                Date parse = simpleDateFormat.parse(s);
//                                passingStationCollection.setInboundTime(parse);
//                            } catch (ParseException e) {
//                                throw new RuntimeException(e);
//                            }
//                        }
//                    }
//                    List<String> collect2 = checkList.stream()
//                            .filter(x -> Constants.OUT_BOUND_TIME_CODE.equals(x.getItemCode()))
//                            .map(ChildVO::getItemValue)
//                            .collect(Collectors.toList());
//                    if (CollUtil.isNotEmpty(collect2)){
//                        String s = collect2.get(0);
//                        if (StrUtil.isNotBlank(s)){
//                            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//                            try {
//                                Date parse = simpleDateFormat.parse(s);
//                                passingStationCollection.setOutboundTime(parse);
//                            } catch (ParseException e) {
//                                throw new RuntimeException(e);
//                            }
//                        }
//                    }
//                    daPassingStationCollectionService.save(passingStationCollection);
//                    //参数保存
//                    List<DaParamCollection> paramCollectionList = new ArrayList<>();
//                    for (ChildVO childVO : checkList) {
//                        DaParamCollection daParamCollection = new DaParamCollection();
//                        daParamCollection.setWorkOrderNo(omProductionOrdeInfo.getWorkOrderNo());
//                        daParamCollection.setSfcCode(productNum);
//                        daParamCollection.setProductCode(omProductionOrdeInfo.getProductCode());
//                        daParamCollection.setLocationCode(omProductionOrdeInfo.getStationCode());
//                        daParamCollection.setParamCode(childVO.getItemCode());
//                        daParamCollection.setParamValue(childVO.getItemValue());
//                        daParamCollection.setCollectionTime(new Date());
//                        daParamCollection.setParamName(childVO.getItemText());
//                        paramCollectionList.add(daParamCollection);
//                    }
//                    if (CollUtil.isNotEmpty(paramCollectionList)){
//                        daParamCollectionService.insertBatch(paramCollectionList);
//                    }
//                }
//            }
//        }
        ObjectMapper mapper = new ObjectMapper();
        List<ChildVO> li = parentVO.getCheckList();
        String s = null;
        String checkList = "";
        try {
            s = mapper.writeValueAsString(li);
            checkList = mapper.writeValueAsString(li);
        } catch (JsonProcessingException e) {
            throw new RuntimeException(e);
        }
        this.saveDaTestDeviceInterface(parentVO,checkList);
        if(parentVO.getStationCode().equals("M1OP020")){
            this.saveDaTestDeviceInterfaceTemp(parentVO,checkList);
        }
        HttpResponse execute = HttpRequest.post(url).body(JSONUtil.toJsonStr(parentVO)).execute();
        return AjaxResult.success(execute.body());
    }
    public void saveDaTestDeviceInterface(ParentVO parentVO,String checkList){
        DaTestDeviceInterface daTestDeviceInterface = new DaTestDeviceInterface();
        daTestDeviceInterface.setRecordId(parentVO.getRecordId());
        daTestDeviceInterface.setStationCode(parentVO.getStationCode());
        daTestDeviceInterface.setProductNum(parentVO.getProductNum());
        daTestDeviceInterface.setTotalResult(parentVO.getTotalResult());
        daTestDeviceInterface.setCheckList(s);
        daTestDeviceInterface.setCheckList(checkList);
        daTestDeviceInterface.setCreateTime(new Date());
        daTestDeviceInterfaceService.save(daTestDeviceInterface);
        if(parentVO.getStationCode().contains("OP480")){
            if(StringUtils.isNotBlank(parentVO.getProductNum())){
                OmProductionOrdeInfo one = omProductionOrdeInfoService.getOne(new LambdaQueryWrapper<OmProductionOrdeInfo>().eq(OmProductionOrdeInfo::getProductNum, parentVO.getProductNum()));
                if(ObjectUtil.isNotNull(one)){
                    logger.info("解绑小车{},pack码是{}"+one.getTrolleyYard(),one.getProductNum());
                    one.setTrolleyYard("");
                    omProductionOrdeInfoService.saveOrUpdate(one);
                }
            }
        }
//        try{
//            CompletableFuture<Void> cp1 = CompletableFuture.runAsync(() -> {
//                logger.info("开始执行异步方法");
//                HttpResponse execute = HttpRequest.post(url).body(JSONUtil.toJsonStr(parentVO)).execute();
//                logger.info("异步方法执行结束");
//                logger.info("接收清研,气密异步方法{}"+execute.body());
//            });
//        }catch (Exception e){
//            System.out.println(e.getMessage());
//        }
        HttpResponse execute = HttpRequest.post(url).body(JSONUtil.toJsonStr(parentVO)).execute();
        return AjaxResult.success(execute.body());
    }
    public void saveDaTestDeviceInterfaceTemp(ParentVO parentVO,String checkList){
        DaTestDeviceInterfaceTemp daTestDeviceInterfaceTemp = new DaTestDeviceInterfaceTemp();
        daTestDeviceInterfaceTemp.setRecordId(parentVO.getRecordId());
        daTestDeviceInterfaceTemp.setStationCode(parentVO.getStationCode());
        daTestDeviceInterfaceTemp.setProductNum(parentVO.getProductNum());
        daTestDeviceInterfaceTemp.setTotalResult(parentVO.getTotalResult());
        daTestDeviceInterfaceTemp.setCheckList(checkList);
        daTestDeviceInterfaceTemp.setCreateTime(new Date());
        daTestDeviceInterfaceTempService.save(daTestDeviceInterfaceTemp);
    }
    @GetMapping("/productionWorkOrderRequest")
@@ -212,45 +149,8 @@
        return AjaxResult.success(restFulOrders);
    }
    public static void main(String[] args) {
        String str = "0RSPB0011A2E3AE5P0000002  2024-05-28 15:48:51";
        String[] split = str.split("  ");
        System.out.println(split[0]);
        System.out.println(split[1]);
    }
    @GetMapping("/getQualityData")
    public AjaxResult getQualityData(){
//        List<DaPassingStationCollection> qualified = daPassingStationCollectionService.list(new LambdaQueryWrapper<DaPassingStationCollection>().eq(DaPassingStationCollection::getOutRsSign, "1"));
//        List<DaPassingStationCollection> unQualified = daPassingStationCollectionService.list(new LambdaQueryWrapper<DaPassingStationCollection>().eq(DaPassingStationCollection::getOutRsSign, "2"));
//        Map<String,Integer> map = new HashMap<>();
//        map.put("qualified",qualified.size());
//        map.put("unQualified",unQualified.size());
        for (BsBeatSetting bsBeatSetting : bsBeatSettingService.list()) {
            String str = bsBeatSetting.getProductCode();
            String[] split = str.split("  ");
            String reportResult = RestfulService.getWorkReportResultFeedback(split[0], "OP500", "2024-06-27 15:48:51");
            JSONObject jsonObject = new JSONObject(reportResult);
            String code = jsonObject.getStr("code");
            String status = jsonObject.getJSONObject("data").getStr("resultCode");
            if("success".equals(code)&&"S".equals(status)){
                //如果成功,执行报工成功方法,修改是否报工为1,添加报工时间
                bsBeatSetting.setProductName("S");
                this.bsBeatSettingService.saveOrUpdate(bsBeatSetting);
            }else{
                bsBeatSetting.setProductName("F");
                this.bsBeatSettingService.saveOrUpdate(bsBeatSetting);
            }
        }
        return AjaxResult.success();
    }
    @GetMapping("/productionOrderComponentRequest")
    public AjaxResult productionOrderComponentRequest(BsFormulaChildInfo bsFormulaChildInfo){
        Map<String,List<String>> map = new HashMap<>();
        List<BsFormulaChildInfo> list = bsFormulaChildInfoService.list(new LambdaQueryWrapper<BsFormulaChildInfo>()
                .eq(BsFormulaChildInfo::getProcessesCode, bsFormulaChildInfo.getProcessesCode())
                .eq(BsFormulaChildInfo::getOperationType, "2")
@@ -265,90 +165,68 @@
        return AjaxResult.success(requests);
    }
    @PostMapping("/pushParamData")
    public void receivingData(@RequestBody PostEntity postEntity) throws JsonProcessingException {
//        ObjectMapper objectMapper = new ObjectMapper();
//        PostEntity person = objectMapper.readValue(postEntity, PostEntity.class);
        Class<?> entityClass = PostEntity.class; // 替换为你的实体类
        String packId = postEntity.getPEOL_PackID();
        OmProductionOrdeInfo one = productionOrdeInfoService.getOne(new LambdaQueryWrapper<OmProductionOrdeInfo>().eq(OmProductionOrdeInfo::getProductNum, packId));
        String productType = "type";
        String workOrderNo = one.getWorkOrderNo();
        for (Field field : entityClass.getDeclaredFields()) {
            String fieldName = field.getName();
            DaParamCollection daParamCollection = new DaParamCollection();
            daParamCollection.setWorkOrderNo(workOrderNo);
            daParamCollection.setProductCode(productType);
            daParamCollection.setSfcCode(packId);
            daParamCollection.setParamCode(field.getName());
            daParamCollection.setParamValue((String) getFieldValue(postEntity, fieldName));
            if(fieldName.contains("GDBH")){
                daParamCollection.setParamValue(workOrderNo);
            }
            if(fieldName.contains("CPXH")){
                daParamCollection.setParamValue(productType);
            }
            daParamCollectionService.save(daParamCollection);
        }
    }
    /**
     * 放行请空状态
     */
    @PostMapping("/sendWebSocket")
    public void sendWebSocket(@RequestBody BsFormulaChildInfo bsFormulaChildInfo)
    {
        WebSocketUsers.sendMessageToUserByText(map.get(bsFormulaChildInfo.getLocationCode()), bsFormulaChildInfo.getResults());
        CompletableFuture<Void> cp1 = CompletableFuture.runAsync(() -> {
            logger.info("接收电芯开始执行异步方法");
            WebSocketUsers.sendMessageToUserByText(map.get(bsFormulaChildInfo.getLocationCode()), bsFormulaChildInfo.getResults());
            logger.info("接收电芯异步方法执行结束");
        });
//        WebSocketUsers.sendMessageToUserByText(map.get(bsFormulaChildInfo.getLocationCode()), bsFormulaChildInfo.getResults());
    }
    /**
     * 使用反射获取对象的属性值
     *
     * @param obj       目标对象
     * @param fieldName 属性名
     * @return 属性值,如果获取失败则返回null
     * 接收电芯数据
     */
    public static Object getFieldValue(Object obj, String fieldName) {
        if (obj == null) {
            throw new IllegalArgumentException("Object must not be null");
        }
    @PostMapping("/receivingBatteryCellData")
    public AjaxResult receivingBatteryCellData(@RequestBody CellDataVo cellDataVo){
        try {
            Field field = obj.getClass().getDeclaredField(fieldName);
            field.setAccessible(true); // 设置可访问性,以便访问私有字段
            return field.get(obj);
        } catch (NoSuchFieldException e) {
            // 如果当前类没有该字段,则尝试从父类中获取
            Class<?> superClass = obj.getClass().getSuperclass();
            if (superClass != null && !superClass.equals(Object.class)) {
                return getFieldValue(obj, fieldName, superClass);
            ObjectMapper objectMapper = new ObjectMapper();
            JSONObject jsonObject = new JSONObject(cellDataVo);
            String cellListString = jsonObject.getStr("cellList");
            JsonNode cellListNode = objectMapper.readValue(cellListString, JsonNode.class);
            List<DaCellData> daCellDataList = new ArrayList<>();
            for (JsonNode jsonNode : cellListNode) {
                String cellCheckListString = jsonNode.path("cellCheckList").toString();
                JsonNode cellCheckListNode = objectMapper.readValue(cellCheckListString, JsonNode.class);
                for (JsonNode checkNode : cellCheckListNode) {
                    //电芯挡位
                    String batteryCellGear = checkNode.path("cellItem").toString().replaceAll("\"", "");
                    if(batteryCellGear.equals("电芯档位")){
                        DaCellData daCellData = new DaCellData();
                        daCellData.setSiteCode(jsonObject.getStr("siteCode"));
                        daCellData.setModuleSerial(jsonObject.getStr("moduleSerial"));
                        daCellData.setModuleModel(jsonObject.getStr("moduleModel"));
                        daCellData.setAbModule(jsonObject.getStr("ABModule"));
                        daCellData.setPackageNo(jsonObject.getStr("packageNo"));
                        daCellData.setSupplierModuleBarcode(jsonObject.getStr("supplierModuleBarcode"));
                        daCellData.setCustomerModuleBarcode(jsonObject.getStr("customerModuleBarcode"));
                        daCellData.setCellSerial(jsonNode.path("cellSerial").toString().replaceAll("\"", ""));
                        daCellData.setCellModel(jsonNode.path("cellModel").toString().replaceAll("\"", ""));
                        daCellData.setGbCellCode(jsonNode.path("GBCellCode").toString().replaceAll("\"", ""));
                        daCellData.setGbModuleCode(jsonNode.path("GBModuleCode").toString().replaceAll("\"", ""));
                        daCellData.setCellItem(checkNode.path("cellItem").toString().replaceAll("\"", ""));
                        daCellData.setCellValue(checkNode.path("cellValue").toString().replaceAll("\"", ""));
                        daCellData.setCreateUser("工厂MES");
                        daCellData.setCreateTime(new Date());
                        daCellDataList.add(daCellData);
                    }
                }
            }
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        }
        return null;
    }
            CompletableFuture<Void> cp1 = CompletableFuture.runAsync(() -> {
                logger.info("接收电芯开始执行异步方法");
                daCellDataService.insertBatch(daCellDataList);
                logger.info("接收电芯异步方法执行结束");
            });
    private static Object getFieldValue(Object obj, String fieldName, Class<?> superClass) {
        try {
            Field field = superClass.getDeclaredField(fieldName);
            field.setAccessible(true);
            return field.get(obj);
        } catch (NoSuchFieldException e) {
            // 如果父类也没有该字段,则继续向上查找
            Class<?> grandParentClass = superClass.getSuperclass();
            if (grandParentClass != null && !grandParentClass.equals(Object.class)) {
                return getFieldValue(obj, fieldName, grandParentClass);
            }
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
            return AjaxResult.success("API调用成功");
        }catch (Exception e){
            return AjaxResult.error("API调用失败");
        }
        return null;
    }
}