Jul 23, 2025, 9:20:20,178 AM China Standard Time> <Warning> <EJB> <BEA-010227> <EJB exception occurred during invocation from home or business: com.lkm.ejb.tooldb.server.ToolCheckDbEjb_gfpdem_Intf of EJB: ToolCheckDbEjb(Application: LkmPoiEjbs, EJBComponent: ToolDbEjb.jar) generated exception: javax.persistence.NonUniqueResultException: More than one result was returned from Query.getSingleResult(), private String buildDynamicQuery(Map<String, String> queryMap, Map<String, String> sortMap, boolean isCountQuery) {
StringBuilder sqlBuilder = new StringBuilder();
if (isCountQuery) {
sqlBuilder.append("SELECT COUNT(c) ");
} else {
sqlBuilder.append("SELECT c.id, c.orgCode, c.locator, c.empNo, c.empName, ");
sqlBuilder.append("c.itemCode, c.itemDesc, c.useableQty, c.unUseableQty, c.demageQty, ");
sqlBuilder.append("c.offQty, c.signNo, c.checkoutEmpNo, c.checkoutEmpName, c.checkOutDate, ");
sqlBuilder.append("c.finishedEmpNo, c.finishedEmpName, c.finishedDate, c.payMoney, c.overTime, ");
sqlBuilder.append("MAX(n.oldToolGatherNo), c.requestNo, c.erpState ");
}
sqlBuilder.append("FROM ToolCheckEntity c LEFT JOIN ToolNoteRequestEntity n ON n.requestNo = c.requestNo ");
// StringBuilder sqlBuilder = new StringBuilder();
// sqlBuilder.append("SELECT c.id, c.orgCode, c.locator, c.empNo, c.empName, ");
// sqlBuilder.append("c.itemCode, c.itemDesc, c.useableQty, c.unUseableQty, c.demageQty, ");
// sqlBuilder.append("c.offQty, c.signNo, c.checkoutEmpNo, c.checkoutEmpName, c.checkOutDate, ");
// sqlBuilder.append("c.finishedEmpNo, c.finishedEmpName, c.finishedDate, c.payMoney, c.overTime, ");
// sqlBuilder.append("n.oldToolGatherNo, c.requestNo, c.erpState ");
// sqlBuilder.append("FROM ToolCheckEntity c LEFT JOIN ToolNoteRequestEntity n ON n.requestNo = c.requestNo ");
// 添加WHERE条件
if (queryMap != null && !queryMap.isEmpty()) {
sqlBuilder.append("WHERE ");
boolean firstCondition = true;
// 处理orgCode条件
if (queryMap.containsKey("orgCode") && StringUtils.isNotBlank(queryMap.get("orgCode"))) {
sqlBuilder.append("c.orgCode = :orgCode ");
firstCondition = false;
}
// 处理locator条件
if (queryMap.containsKey("locator") && StringUtils.isNotBlank(queryMap.get("locator"))) {
if (!firstCondition) sqlBuilder.append("AND ");
sqlBuilder.append("c.locator = :locator ");
firstCondition = false;
}
// 处理empNo条件
if (queryMap.containsKey("empNo") && StringUtils.isNotBlank(queryMap.get("empNo"))) {
if (!firstCondition) sqlBuilder.append("AND ");
sqlBuilder.append("c.empNo = :empNo ");
firstCondition = false;
}
if (queryMap.containsKey("itemCode") && StringUtils.isNotBlank(queryMap.get("itemCode"))) {
if (!firstCondition) sqlBuilder.append("AND ");
sqlBuilder.append("c.itemCode like :itemCode ");
firstCondition = false;
}
if (queryMap.containsKey("startDate") && StringUtils.isNotBlank(queryMap.get("startDate"))&&
queryMap.containsKey("endDate") && StringUtils.isNotBlank(queryMap.get("endDate")) ){
if (!firstCondition) sqlBuilder.append("AND ");
// 添加日期范围条件 - 根据业务需求选择合适的日期字段
sqlBuilder.append("(c.checkOutDate BETWEEN :startDate AND :endDate) ");
firstCondition = false;
}
// 如果没有有效条件,移除WHERE关键字
if (firstCondition) {
sqlBuilder.setLength(sqlBuilder.length() - 6); // 移除"WHERE "
}
}
String groupByStr=" group by c.id, c.orgCode, c.locator, c.empNo, c.empName, \n" +
" c.itemCode, c.itemDesc, c.useableQty, c.unUseableQty, \n" +
" c.demageQty, c.offQty, c.signNo, c.checkoutEmpNo, \n" +
" c.checkoutEmpName, c.checkOutDate, c.finishedEmpNo, \n" +
" c.finishedEmpName, c.finishedDate, c.payMoney, \n" +
" c.overTime, c.requestNo, c.erpState";
sqlBuilder.append(groupByStr);
return sqlBuilder.toString();
}
最新发布