public ScResult DisplayWorkInProgress(Map<String, String> valueMap) { if (valueMap.size() > 0) { String productionNo = valueMap.get("productionNo"); String processCode = valueMap.get("processCode"); String startDate = valueMap.get("startDate"); String endDate = valueMap.get("endDate"); //当前页 int page = Integer.parseInt(valueMap.get("page")); int limit = Integer.parseInt(valueMap.get("limit")); StringBuilder sql = new StringBuilder(); sql.append("WITH mp AS (SELECT \n" + "info.ID ,\n" + "info.CREATED ,\n" + "info.LAST_UPDATER ,\n" + "info.VERSION ,\n" + "info.UPDATED ,\n" + "info.BUNDLE_NO, \n" + "info.COUNT , \n" + "info.ENTRUST_LIST_NO,\n" + "info.FINISHING_PLAN_NO,\n" + "info.HEAT_NO,\n" + "info.INGOT_NO,\n" + "info.INGOT_SHAPE,\n" + "info.INGOT_WEIGHT,\n" + "info.MOTHER_HEAT_NO,\n" + "info.ORDER_TYPE,\n" + "info.PLAN_NO,\n" + "info.PLAN_STEP_NO,\n" + "info.POINTS_CARD_NO,\n" + "info.PROCESS_CODE,\n" + "info.CRAFT_PRC_CODE,\n" + "info.PRODUCT_CLASS,\n" + "info.PRODUCT_CODE,\n" + "info.PRODUCT_NAME,\n" + "info.PRODUCT_SHAPE,\n" + "info.PRODUCTION_NO,\n" + "info.SIZE_FLAG,\n" + "info.SLAB_SOURCE,\n" + "info.SLAB_WEIGHT,\n" + "info.SPEC_VAL1,\n" + "info.SPEC_VAL2,\n" + "info.SPEC_VAL3,\n" + "info.STEEL_TYPE,\n" + "info.STOCK_AREA,\n" + "info.STOCK_LOCATION,\n" + "info.TECHNICAL_STANDARD,\n" + "info.TIMES_FLAG,\n" + "info.UNIT_CODE,\n" + "info.WEIGHT,\n" + "info.WORK_SHOP_CODE,\n" + "info.CUT_FLAG,\n" + "info.ENTRUST_STATUS,\n" + "info.HEATING_NAME,\n" + "info.HEATING_NO,\n" + "info.IS_CLEAN,\n" + "info.IS_LINE,\n" + "info.LOCK_COUNT,\n" + "info.LOCK_WEIGHT,\n" + "info.LOCK_SLAB_WEIGHT,\n" + "info.LOCK_INGOT_WEIGHT,\n" + "info.LOCK_TYPE,\n" + "info.LOCK_REASON,\n" + "info.LOCK_NOTE,\n" + "info.NO_FLAG,\n" + "info.ORG_BUNDLE_NO,\n" + "info.ORG_INGOT_NO,\n" + "info.POSITION_CODE,\n" + "info.QUTITY_CODE,\n" + "info.SURFACE_STATUS,\n" + "info.FINISHING_SN,\n" + "info.SPARE1,\n" + "info.NOTE,\n" + "info.PCH,\n" + "info.SYH,\n" + "info.YH,\n" + "info.GROUP_HEAT_NO,\n" + "sn .STEEL_NO_CODE STEEL_NO, sn.STEEL_NO_NAME STEEL_NO_NAME\n" + "FROM STEEL_NO sn inner JOIN PROCESS_MATERIAL_INFO info ON sn.STEEL_NO_CODE = info.STEEL_NO\n" + "WHERE info.POSITION_CODE='3' AND info.COUNT >0 "); if (productionNo != null && !productionNo.isEmpty()) { sql.append(String.format("and instr( PRODUCTION_NO,'%s')>0 ", productionNo)); } if (processCode != null && !processCode.isEmpty()) { sql.append(String.format("AND info.PROCESS_CODE='%s' ", processCode)); } --- 时间查询 if (startDate != null && !startDate.isEmpty() && endDate != null && !endDate.isEmpty()) { sql.append(String.format("AND info.CREATED >= TO_DATE( '%s', 'yyyy-mm-dd hh24:mi:ss' ) ", startDate)); sql.append(String.format("AND info.CREATED <= TO_DATE( '%s', 'yyyy-mm-dd hh24:mi:ss' ) ", endDate)); } sql.append(" ) "); ---- 分页 sql.append(", data AS(SELECT mp.*,count(mp.PRODUCTION_NO) over() total,ROWNUM row_num FROM mp)SELECT data.* FROM data WHERE row_num BETWEEN "); sql.append(String.format("%d AND %d", (page - 1) * limit + 1, page * limit)); List<Map<String, Object>> list = MyUtil.traverseReplaceMapKeyObj(this.nativeQuery(sql.toString())); Map<String, Object> returnMap = new HashMap<>(list.size()); returnMap.put("totalElements", MyUtil.getTotal(list)); returnMap.put("data", list); return ScResult.set(returnMap, "查询成功"); } return ScResult.err("参数不能为空"); }
public static List<Map<String, Object>> traverseReplaceMapKeyObj(List<Map> list) { List<Map<String, Object>> listAfterChange = new ArrayList<>(); list.forEach(item -> { Map<String, Object> newMap = new HashMap<>(); item.keySet().forEach(obj -> { newMap.put(MyUtil.camelName(obj.toString()), item.get(obj)); }); listAfterChange.add(newMap); }); list.clear(); return listAfterChange; }
/** * 映射数据库列名字到实体类属性 * * @param name 数据库字段 * @return */ public static String camelName(String name) { StringBuilder result = new StringBuilder(); // 快速检查 if (name == null || name.isEmpty()) { // 没必要转换 return ""; } else if (!name.contains("_")) { // 不含下划线,仅将首字母小写 return name.substring(0, 1).toLowerCase() + name.substring(1).toLowerCase(); } // 用下划线将原始字符串分割 String[] camels = name.split("_"); for (String camel : camels) { // 跳过原始字符串中开头、结尾的下换线或双重下划线 if (camel.isEmpty()) { continue; } // 处理真正的驼峰片段 if (result.length() == 0) { // 第一个驼峰片段,全部字母都小写 result.append(camel.toLowerCase()); } else { // 其他的驼峰片段,首字母大写 result.append(camel.substring(0, 1).toUpperCase()); result.append(camel.substring(1).toLowerCase()); } } return result.toString(); }