计量记录查询第三方接口

develop-QA
qinyulong 3 months ago
parent 4124aa2ed3
commit d988480ba4
  1. 140
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/device/pojo/entity/MeasurementRecordsEntity.java
  2. 71
      blade-service/blade-desk/src/main/java/org/springblade/desk/device/controller/MeasurementRecordsController.java
  3. 33
      blade-service/blade-desk/src/main/java/org/springblade/desk/device/service/IMeasurementRecordsService.java
  4. 114
      blade-service/blade-desk/src/main/java/org/springblade/desk/device/service/impl/IMeasurementRecordsServiceImpl.java

@ -0,0 +1,140 @@
package org.springblade.desk.device.pojo.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.core.mp.base.BaseEntity;
import java.util.Date;
/**
* 计量记录 实体类
*
* @author qyl
* @since 2026年1月4日
*/
@Data
@Schema(description = "计量记录对象")
@EqualsAndHashCode(callSuper = true)
public class MeasurementRecordsEntity extends BaseEntity {
@Schema(name = "名称(设备名称)")
//@Column(name = "mc_name")
private String mcName;
@Schema(name = "规格")
//@Column(name = "norms")
private String norms;
@Schema(name = "类别(管理类别)")
//@Column(name = "mc_class")
private String mcClass;
@Schema(name = "计量类型")
//@Column(name = "label_no")
private String labelNo;
@Schema(name = "计量子类型")
//@Column(name = "str2")
private String str2;
@Schema(name = "编号(测量设备编码)")
//@Column(name = "mc_code")
private String mcCode;
@Schema(name = "使用单位(试用部门)")
//@Column(name = "use_unit")
private String useUnit;
@Schema(name = "精度(精度等级)")
//@Column(name = "accuracy")
private String accuracy;
@Schema(name = "出厂编号")
//@Column(name = "oem_code")
private String oemCode;
@Schema(name = "生产厂家(制造厂商)")
//@Column(name = "mc_oem")
private String mcOem;
@Schema(name = "启用日期")
//@Column(name = "enable_date")
private Date enableDate;
@Schema(name = "检定日期")
//@Column(name = "when_dccept")
private String whenDccept;
@Schema(name = "型号(型号)")
//@Column(name = "mc_type")
private String mcType;
@Schema(name = "检定周期(检定周期)")
//@Column(name = "test_cycle")
private Integer testCycle;
@Schema(name = "到期日期(有效日期)")
//@Column(name = "due_date")
private Date dueDate;
@Schema(name = "报废日期")
//@Column(name = "date2")
private Date date2;
@Schema(name = "状态")
//@Column(name = "belong")
private String belong;
@Schema(name = "停用日期")
//@Column(name = "when_buy")
private Date whenBuy;
@Schema(name = "检定部门")
//@Column(name = "test_dept")
private String testDept;
@Schema(name = "检定/校验方法(检定校准方法)")
//@Column(name = "test_method")
private String testMethod;
@Schema(name = "备注")
//@Column(name = "str9")
private String str9;
@Schema(name = "备注2")
//@Column(name = "str10")
private String str10;
@Schema(name = "使用人工号")
//@Column(name = "assets_no")
private String assetsNo;
@Schema(name = "责任人")
//@Column(name = "str6")
private String str6;
@Schema(name = "用途分类")
//@Column(name = "purpose_class")
private String purposeClass;
@Schema(name = "超期情况")
//@Column(name = "is_over_str")
private String isOverStr;
@Schema(name = "类型", title = "1、仪表计量;2、设备计量")
//@Column(name = "cm_type")
private Short cmType;
@Schema(name = "是否送检", title = "1:是,0:否")
//@Column(name = "censorship")
private Boolean censorship;
@Schema(name = "检验状态", title = "1:在检,0:未检")
//@Column(name = "check_status")
private Boolean checkStatus;
@Schema(name = "检验结果", title = "1:合格,0:不合格")
//@Column(name = "check_result")
private Boolean checkResult;
}

@ -0,0 +1,71 @@
package org.springblade.desk.device.controller;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.AllArgsConstructor;
import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
import org.springblade.desk.device.pojo.entity.MeasurementRecordsEntity;
import org.springblade.desk.device.pojo.request.MeasuringUsageQuery;
import org.springblade.desk.device.service.IMeasurementRecordsService;
import org.springblade.desk.device.service.IMeasuringUsageService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
/**
* 计量记录 控制器
*
* @author qyl
* @since 2026年1月4日
*/
@RestController
@AllArgsConstructor
@RequestMapping("/measurementRecords")
@Tag(name = "计量记录", description = "计量记录接口")
public class MeasurementRecordsController extends BladeController {
@Autowired
IMeasurementRecordsService iMeasurementRecordsService;
/**
* 计量记录 自定义分页
*
* @param cmType 1仪表计量2设备计量
* @param query
* @return
*/
@GetMapping("/page")
@ApiOperationSupport(order = 3)
@Operation(summary = "分页", description = "")
public R<IPage<JSONObject>> page(@RequestParam("cmType") Integer cmType, Query query) {
IPage<JSONObject> pages = iMeasurementRecordsService.selectMeasurementRecordsPage(Condition.getPage(query), cmType);
return R.data(pages);
}
/**
* 导出数据
*/
// @IsAdmin
// @GetMapping("/export-equipment")
// @ApiOperationSupport(order = 9)
// @Operation(summary = "导出数据", description = "传入equipment")
// public void exportEquipment(@Parameter(hidden = true) @RequestParam Map<String, Object> equipment, BladeUser bladeUser, HttpServletResponse response) {
// QueryWrapper<EquipmentEntity> queryWrapper = Condition.getQueryWrapper(equipment, EquipmentEntity.class);
// //if (!AuthUtil.isAdministrator()) {
// // queryWrapper.lambda().eq(Equipment::getTenantId, bladeUser.getTenantId());
// //}
// //queryWrapper.lambda().eq(EquipmentEntity::getIsDeleted, BladeConstant.DB_NOT_DELETED);
// List<EquipmentExcel> list = measuringUsageService.exportEquipment(queryWrapper);
// ExcelUtil.export(response, "设备信息表数据" + DateUtil.time(), "设备信息表数据表", list, EquipmentExcel.class);
// }
}

@ -0,0 +1,33 @@
package org.springblade.desk.device.service;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.desk.device.pojo.entity.MeasurementRecordsEntity;
import org.springblade.desk.device.pojo.request.MeasuringUsageQuery;
/**
* 计量记录 服务类
*
* @author qyl
* @since 2026年1月4日
*/
public interface IMeasurementRecordsService {
/**
* 自定义分页
*
* @param page 分页参数
* @param cmType 查询参数
* @return IPage<JSONObject>
*/
IPage<JSONObject> selectMeasurementRecordsPage(IPage<JSONObject> page, Integer cmType);
// /**
// * 导出数据
// *
// * @param queryWrapper 查询条件
// * @return List<EquipmentExcel>
// */
// List<EquipmentExcel> exportEquipment(Wrapper<EquipmentEntity> queryWrapper);
}

@ -0,0 +1,114 @@
package org.springblade.desk.device.service.impl;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage;
import jodd.util.StringUtil;
import lombok.extern.slf4j.Slf4j;
import org.springblade.desk.device.pojo.entity.MeasurementRecordsEntity;
import org.springblade.desk.device.pojo.request.MeasuringUsageQuery;
import org.springblade.desk.device.service.IMeasurementRecordsService;
import org.springblade.desk.device.service.IMeasuringUsageService;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.time.Duration;
import java.util.List;
@Slf4j
@Service
public class IMeasurementRecordsServiceImpl implements IMeasurementRecordsService {
// 使用JDK 17内置的HttpClient(线程安全,可复用)
private final HttpClient httpClient = HttpClient.newBuilder()
.connectTimeout(Duration.ofSeconds(30))
.version(HttpClient.Version.HTTP_2)
.build();
@Value("${request.lims.url}")
private String limsUrl;
@Override
public IPage<JSONObject> selectMeasurementRecordsPage(IPage<JSONObject> page, Integer cmType) {
// 构建请求体JSON
JSONObject requestBody = buildRequestBody(page, cmType);
// 创建HTTP请求
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(limsUrl + "/api/cloud-customized/zhgdDeviceParams/getDeviceListZhgd"))
.header("Content-Type", "application/json")
.header("Accept", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(requestBody.toJSONString()))
.timeout(Duration.ofSeconds(60))
.build();
try {
// 发送同步请求
HttpResponse<String> response = httpClient.send(request, HttpResponse.BodyHandlers.ofString());
// 处理响应
return processResponse(response, page);
} catch (Exception e) {
log.error("获取量具库存记录数据接口调用失败: {}", e.getMessage(), e);
return page.setRecords(List.of()); // 返回空列表而不是null
}
}
/**
* 构建请求体
*/
private JSONObject buildRequestBody(IPage<JSONObject> page, Integer cmType) {
JSONObject requestBody = new JSONObject();
requestBody.put("currPage", page.getCurrent());
requestBody.put("pageSize", page.getSize());
requestBody.put("workGuideNo", "热表分厂");
requestBody.put("labId", "2");
requestBody.put("str1", cmType == null ? 1 : 2);
log.debug("请求参数: {}", requestBody.toJSONString());
return requestBody;
}
/**
* 处理HTTP响应
*/
private IPage<JSONObject> processResponse(HttpResponse<String> response, IPage<JSONObject> page) {
if (response.statusCode() != 200) {
log.error("HTTP请求失败,状态码: {}", response.statusCode());
throw new RuntimeException("HTTP请求失败,状态码: " + response.statusCode());
}
String responseBody = response.body();
if (responseBody == null || responseBody.trim().isEmpty()) {
log.error("响应体为空");
return page.setRecords(List.of());
}
try {
JSONObject result = JSONObject.parseObject(responseBody);
if (result != null && result.getInteger("code") != null && result.getInteger("code").equals(200)) {
JSONObject data = result.getJSONObject("data");
if (data != null) {
List<JSONObject> records = JSONArray.parseArray(data.toJSONString(), JSONObject.class);
log.info("成功获取{}条量具库存记录", records != null ? records.size() : 0);
return page.setRecords(records != null ? records : List.of());
}
} else {
String errorMsg = result != null ? result.getString("message") : "未知错误";
log.error("接口返回错误: {}", errorMsg);
throw new RuntimeException("接口返回错误: " + errorMsg);
}
} catch (Exception e) {
log.error("响应数据解析失败: {}", e.getMessage(), e);
throw new RuntimeException("响应数据解析失败: " + e.getMessage(), e);
}
return page.setRecords(List.of());
}
}
Loading…
Cancel
Save