package com.jcdm.main.restful.qingYan.service; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; 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.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.google.gson.Gson; import com.jcdm.common.core.domain.AjaxResult; import com.jcdm.common.utils.StringUtils; import com.jcdm.framework.websocket.WebSocketUsers; import com.jcdm.main.bs.beatSetting.domain.BsBeatSetting; import com.jcdm.main.bs.beatSetting.service.IBsBeatSettingService; 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.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.om.productionOrde.domain.OmProductionOrdeInfo; import com.jcdm.main.om.productionOrde.service.IOmProductionOrdeInfoService; import com.jcdm.main.restful.factoryMes.service.RestfulService; import com.jcdm.main.restful.qingYan.doman.*; import lombok.extern.slf4j.Slf4j; import org.aspectj.weaver.loadtime.Aj; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.websocket.Session; import java.lang.reflect.Field; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; import java.util.concurrent.CompletableFuture; import java.util.stream.Collectors; @Slf4j @RestController @RequestMapping("/jcdmMes") public class ExternalInterface { Map map = WebSocketUsers.getUsers(); private static final Logger logger = LoggerFactory.getLogger("sys-user"); public SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); @Autowired private IDaTestDeviceInterfaceService daTestDeviceInterfaceService; @Autowired private IDaParamCollectionService daParamCollectionService; @Resource private IDaPassingStationCollectionService daPassingStationCollectionService; @Autowired private IOmProductionOrdeInfoService productionOrdeInfoService; @Autowired private IOmProductionOrdeInfoService omProductionOrdeInfoService; @Autowired private IBsFormulaChildInfoService bsFormulaChildInfoService; @Autowired private IBsBeatSettingService bsBeatSettingService; private IDaPassingStationCollectionService passingStationCollectionService; // 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"; /** * 导出点检任务列表 */ @PostMapping("/deviceResultFeedback") public AjaxResult deviceResultFeedback(@RequestBody ParentVO parentVO) { ObjectMapper mapper = new ObjectMapper(); List li = parentVO.getCheckList(); String s = null; try { s = mapper.writeValueAsString(li); } catch (JsonProcessingException e) { throw new RuntimeException(e); } DaTestDeviceInterface daTestDeviceInterface = new DaTestDeviceInterface(); daTestDeviceInterface.setRecordId(parentVO.getRecordId()); daTestDeviceInterface.setStationCode(parentVO.getStationCode()); daTestDeviceInterface.setProductNum(parentVO.getProductNum()); daTestDeviceInterface.setTotalResult(parentVO.getTotalResult()); daTestDeviceInterface.setCheckList(s); daTestDeviceInterface.setCreateTime(new Date()); daTestDeviceInterfaceService.save(daTestDeviceInterface); // if(parentVO.getStationCode().contains("POP410")){ // if(StringUtils.isNotBlank(parentVO.getProductNum())){ // OmProductionOrdeInfo one = omProductionOrdeInfoService.getOne(new LambdaQueryWrapper().eq(OmProductionOrdeInfo::getProductNum, parentVO.getProductNum())); // if(ObjectUtil.isNotNull(one)){ // logger.info("解绑小车{},pack码是{}"+one.getTrolleyYard(),one.getProductNum()); // one.setTrolleyYard(""); // omProductionOrdeInfoService.saveOrUpdate(one); // } // } // } // try{ // CompletableFuture 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()); // } logger.info("收到工位{}的测试设备数据入参VO{}" + parentVO.getStationCode(),new Gson().toJson(parentVO)); HttpResponse execute = HttpRequest.post(url).body(JSONUtil.toJsonStr(parentVO)).execute(); logger.info("工厂MES返回报文{}-工位{}" + execute.body(),parentVO.getStationCode()); return AjaxResult.success(execute.body()); } @GetMapping("/productionWorkOrderRequest") public AjaxResult productionWorkOrderRequest(){ List restFulOrders = new ArrayList<>(); // try{ // CompletableFuture cp1 = CompletableFuture.runAsync(() -> { // List list = omProductionOrdeInfoService.list(); // for (OmProductionOrdeInfo omProductionOrdeInfo : list) { // RestFulOrder order = new RestFulOrder(); // order.setProductionOrderNum(omProductionOrdeInfo.getWorkOrderNo()); // order.setProductNum(omProductionOrdeInfo.getProductNum()); // order.setMaterialCode(omProductionOrdeInfo.getMaterialCode()); // order.setStationCode(omProductionOrdeInfo.getStationCode()); // order.setPlanQty(omProductionOrdeInfo.getPlanQty()); // order.setCreateTime(format.format(omProductionOrdeInfo.getCreateTime())); // restFulOrders.add(order); // } // }); // }catch (Exception e){ // System.out.println(e.getMessage()); // } return AjaxResult.success(restFulOrders); } @GetMapping("/getQualityData") public AjaxResult getQualityData(){ // List qualified = daPassingStationCollectionService.list(new LambdaQueryWrapper().eq(DaPassingStationCollection::getOutRsSign, "1")); // List unQualified = daPassingStationCollectionService.list(new LambdaQueryWrapper().eq(DaPassingStationCollection::getOutRsSign, "2")); // Map 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], "", "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){ List requests = new ArrayList<>(); // try{ // CompletableFuture cp1 = CompletableFuture.runAsync(() -> { // List list = bsFormulaChildInfoService.list(new LambdaQueryWrapper() // .eq(BsFormulaChildInfo::getProcessesCode, bsFormulaChildInfo.getProcessesCode()) // .eq(BsFormulaChildInfo::getOperationType, "2") // ); // for (BsFormulaChildInfo info : list) { // ProductionOrderComponentRequest request = new ProductionOrderComponentRequest(); // request.setMaterialCode(info.getMaterialCode()); // request.setOperationSteps(info.getOperationSteps()); // requests.add(request); // } // }); // }catch (Exception e){ // System.out.println(e.getMessage()); // } return AjaxResult.success(requests); } /** * 放行请空状态 */ @PostMapping("/sendWebSocket") public void sendWebSocket(@RequestBody BsFormulaChildInfo bsFormulaChildInfo) { WebSocketUsers.sendMessageToUserByText(map.get(bsFormulaChildInfo.getLocationCode()), bsFormulaChildInfo.getResults()); } }