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.jcdm.common.core.domain.AjaxResult; 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.om.productionOrde.domain.OmProductionOrdeInfo; import com.jcdm.main.om.productionOrde.service.IOmProductionOrdeInfoService; import com.jcdm.main.restful.qingYan.doman.ChildVO; import com.jcdm.main.restful.qingYan.doman.ParentVO; import com.jcdm.main.restful.qingYan.doman.PostEntity; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; import java.lang.reflect.Field; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.stream.Collectors; @RestController @RequestMapping("/jcdmMes") public class ExternalInterface { @Autowired private IDaParamCollectionService daParamCollectionService; @Resource private IDaPassingStationCollectionService daPassingStationCollectionService; @Autowired private IOmProductionOrdeInfoService productionOrdeInfoService; 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); } } } } HttpResponse execute = HttpRequest.post(url).body(JSONUtil.toJsonStr(parentVO)).execute(); return AjaxResult.success(execute.body()); } @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; } }