package jnpf.limsController;
|
|
import com.alibaba.fastjson.JSONObject;
|
import io.swagger.v3.oas.annotations.Operation;
|
import io.swagger.v3.oas.annotations.Parameter;
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
import lombok.RequiredArgsConstructor;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.jdbc.core.JdbcTemplate;
|
import org.springframework.util.StringUtils;
|
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;
|
import org.springframework.beans.factory.annotation.Autowired; // 替换@Resource避免兼容性问题
|
import java.util.Collections;
|
import java.util.List;
|
import java.util.Map;
|
|
/**
|
* 基于数据表+条件查询子表数据(Java版JNPF 6.1)
|
* 修复:替换@Resource为@Autowired解决注解API兼容性问题
|
*/
|
@Slf4j // 添加日志记录
|
@Tag(name = "Lims常用数据", description = "客户联系人子表数据查询")
|
@RestController
|
@RequestMapping("/custom")
|
@RequiredArgsConstructor
|
public class AppLimsController {
|
// 核心修复:用@Autowired替换@Resource,避免javax.annotation.Resource的兼容性问题
|
// @Resource // 注释掉原注解,解决lookup()方法不存在的问题
|
@Autowired
|
private JdbcTemplate jdbcTemplate;
|
|
// 常量定义:避免硬编码,提高可维护性
|
private static final String SUB_TABLE_NAME = "lims_quality_manager_item";
|
private static final String QUERY_FIELDS = "contact_name, contact_phone, create_time";
|
|
/**
|
* 查询客户联系人子表数据
|
* @param customerId 客户ID(关联条件,必填)
|
* @param status 状态(自定义条件,必填,如1-有效 2-无效)
|
* @return JNPF标准格式数据
|
*/
|
@Operation(summary = "或者质量标准信息", description = "或者质量标准信息")
|
@GetMapping("/querySubTableByCondition") // 移除后缀2,命名统一
|
public JSONObject querySubTableByCondition(
|
@Parameter(description = "质量标准ID", required = true)
|
@RequestParam String customerId,
|
|
@Parameter(description = "状态(1-有效 2-无效)", required = true)
|
@RequestParam Integer status) {
|
|
// 初始化返回结果
|
JSONObject result = new JSONObject();
|
result.put("code", 200);
|
result.put("msg", "查询成功");
|
result.put("data", new JSONObject());
|
|
try {
|
// 1. 参数校验
|
if (!StringUtils.hasText(customerId)) {
|
result.put("code", 400);
|
result.put("msg", "客户ID不能为空");
|
return result;
|
}
|
if (status == null || (status != 1 && status != 2)) {
|
result.put("code", 400);
|
result.put("msg", "状态值只能是1(有效)或2(无效)");
|
return result;
|
}
|
|
// 2. 构造参数化SQL(防SQL注入)
|
String sql = String.format("SELECT * FROM %s WHERE f_foreign_id = ? ORDER BY item_sort DESC",
|
SUB_TABLE_NAME);
|
|
// 3. 执行查询
|
List<Map<String, Object>> dataList = jdbcTemplate.queryForList(sql, customerId);
|
|
// 4. 处理空结果
|
if (dataList == null) {
|
dataList = Collections.emptyList();
|
}
|
|
// 5. 封装返回数据(符合JNPF标准)
|
JSONObject data = new JSONObject();
|
data.put("list", dataList);
|
data.put("total", dataList.size()); // 补充总数,增强接口实用性
|
result.put("data", data);
|
|
log.info("查询客户联系人子表成功,客户ID:{},状态:{},查询结果数:{}", customerId, status, dataList.size());
|
|
} catch (org.springframework.dao.EmptyResultDataAccessException e) {
|
// 无数据异常:友好提示,不返回500
|
result.put("msg", "未查询到符合条件的客户联系人数据");
|
log.warn("查询客户联系人子表无数据,客户ID:{},状态:{}", customerId, status);
|
} catch (Exception e) {
|
// 其他异常:记录详细日志,返回友好提示
|
result.put("code", 500);
|
result.put("msg", "查询失败:系统异常");
|
log.error("查询客户联系人子表失败,客户ID:{},状态:{}", customerId, status, e);
|
}
|
|
return result;
|
}
|
|
@GetMapping("/testApi")
|
public void testApi(){
|
log.info("进入接口");
|
}
|
}
|