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.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; 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.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; 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 IOmProductionOrdeInfoService omProductionOrdeInfoService; @Autowired private IBsFormulaChildInfoService bsFormulaChildInfoService; @Autowired private IDaCellDataService daCellDataService; @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"; /** * 20工位接收清研数据 */ @PostMapping("/receiveOVCDataFrom020Workstations") public AjaxResult receiveOVCDataFrom020Workstations(@RequestBody ParentVO parentVO) { return AjaxResult.success(null); } /** * 导出点检任务列表 */ @PostMapping("/deviceResultFeedback") public AjaxResult deviceResultFeedback(@RequestBody ParentVO parentVO) { ObjectMapper mapper = new ObjectMapper(); List li = parentVO.getCheckList(); String checkList = ""; try { 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(checkList); daTestDeviceInterface.setCreateTime(new Date()); daTestDeviceInterfaceService.save(daTestDeviceInterface); } 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") public AjaxResult productionWorkOrderRequest(){ List list = omProductionOrdeInfoService.list(); List restFulOrders = new ArrayList<>(); 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); } return AjaxResult.success(restFulOrders); } @GetMapping("/productionOrderComponentRequest") public AjaxResult productionOrderComponentRequest(BsFormulaChildInfo bsFormulaChildInfo){ List list = bsFormulaChildInfoService.list(new LambdaQueryWrapper() .eq(BsFormulaChildInfo::getProcessesCode, bsFormulaChildInfo.getProcessesCode()) .eq(BsFormulaChildInfo::getOperationType, "2") ); List requests = new ArrayList<>(); for (BsFormulaChildInfo info : list) { ProductionOrderComponentRequest request = new ProductionOrderComponentRequest(); request.setMaterialCode(info.getMaterialCode()); request.setOperationSteps(info.getOperationSteps()); requests.add(request); } return AjaxResult.success(requests); } /** * 放行请空状态 */ @PostMapping("/sendWebSocket") public void sendWebSocket(@RequestBody BsFormulaChildInfo bsFormulaChildInfo) { CompletableFuture cp1 = CompletableFuture.runAsync(() -> { logger.info("接收电芯开始执行异步方法"); WebSocketUsers.sendMessageToUserByText(map.get(bsFormulaChildInfo.getLocationCode()), bsFormulaChildInfo.getResults()); logger.info("接收电芯异步方法执行结束"); }); // WebSocketUsers.sendMessageToUserByText(map.get(bsFormulaChildInfo.getLocationCode()), bsFormulaChildInfo.getResults()); } /** * 接收电芯数据 */ @PostMapping("/receivingBatteryCellData") public AjaxResult receivingBatteryCellData(@RequestBody CellDataVo cellDataVo){ try { ObjectMapper objectMapper = new ObjectMapper(); JSONObject jsonObject = new JSONObject(cellDataVo); String cellListString = jsonObject.getStr("cellList"); JsonNode cellListNode = objectMapper.readValue(cellListString, JsonNode.class); List daCellDataList = new ArrayList<>(); for (JsonNode jsonNode : cellListNode) { String cellCheckListString = jsonNode.path("cellCheckList").toString(); JsonNode cellCheckListNode = objectMapper.readValue(cellCheckListString, JsonNode.class); for (JsonNode checkNode : cellCheckListNode) { if(checkNode.path("cellItem").toString().replaceAll("\"", "").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); } // 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); } } CompletableFuture cp1 = CompletableFuture.runAsync(() -> { logger.info("接收电芯开始执行异步方法"); daCellDataService.insertBatch(daCellDataList); logger.info("接收电芯异步方法执行结束"); }); return AjaxResult.success("API调用成功"); }catch (Exception e){ return AjaxResult.error("API调用失败"); } } }