package com.jcdm.main.restful.qingYan.service; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.http.HttpRequest; import cn.hutool.http.HttpResponse; 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.jcdm.common.core.domain.AjaxResult; 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.qingYan.doman.*; import org.aspectj.weaver.loadtime.Aj; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import java.lang.reflect.Field; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; import java.util.stream.Collectors; @RestController @RequestMapping("/jcdmMes") public class ExternalInterface { @Autowired private IDaTestDeviceInterfaceService daTestDeviceInterfaceService; @Autowired private IDaParamCollectionService daParamCollectionService; @Resource private IDaPassingStationCollectionService daPassingStationCollectionService; @Autowired private IOmProductionOrdeInfoService productionOrdeInfoService; @Autowired private IOmProductionOrdeInfoService omProductionOrdeInfoService; @Autowired private IBsFormulaChildInfoService bsFormulaChildInfoService; private IDaPassingStationCollectionService passingStationCollectionService; String url = "https://imes-uat-group.geelycv-test.com/api/mom-open/restful/aMesSysIntegration/deviceResultFeedback"; /** * 导出点检任务列表 */ @PostMapping("/deviceResultFeedback") public AjaxResult hdy(@RequestBody ParentVO parentVO) { //保存 //过站记录 // String productNum = parentVO.getProductNum(); // if (StrUtil.isNotBlank(productNum)){ // List list = productionOrdeInfoService.list(new LambdaQueryWrapper().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 checkList = parentVO.getCheckList(); // if (CollUtil.isNotEmpty(checkList)){ // List 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 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 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 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); daTestDeviceInterfaceService.save(daTestDeviceInterface); HttpResponse execute = HttpRequest.post(url).body(JSONUtil.toJsonStr(parentVO)).execute(); return AjaxResult.success(execute.body()); } @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()); restFulOrders.add(order); } 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()); return AjaxResult.success(map); } @GetMapping("/productionOrderComponentRequest") public AjaxResult productionOrderComponentRequest(BsFormulaChildInfo bsFormulaChildInfo){ Map> map = new HashMap<>(); 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("/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().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); } } /** * 使用反射获取对象的属性值 * * @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"); } 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); } e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } return null; } 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 null; } }