• 实习任务——对查询结果进行筛选过滤


    将查询到的信息进行筛选过滤

    首先这次的任务是根据查询条件将数据库的内容进行查询,但是由于新增加了几个条件,在数据库中并没有这个条件,所以增加了难度。
    首先行政区中加入了深海,近海,特殊海域,需要在下拉框中加入这三个条件。
    然后后边的所属矿权人和项目状态在数据库中也没有存,也需要自己写下拉列表。

    初始化所属矿权人下拉树代码:

    	private ComboList initComboList1(ComboList combo1){
    		ComboList com1=combo1;
    		InternalList list=com1.getList();
    		
    		ListItem items=new ListItem(list);
    		items.setText("全部");
    		items.setData("全部");
    		
    		ListItem items1=new ListItem(list);
    		items1.setText("中石油");
    		items1.setData(1);
    
    		ListItem items2=new ListItem(list);
    		items2.setText("中石化");
    		items2.setData("2");
    		
    		ListItem items3=new ListItem(list);
    		items3.setText("中海油");
    		items3.setData("3");
    		
    		ListItem items4=new ListItem(list);
    		items4.setText("中联煤");
    		items4.setData("4");
    		
    		ListItem items5=new ListItem(list);
    		items5.setText("延长油矿");
    		items5.setData("5");
    		
    		ListItem items6=new ListItem(list);
    		items6.setText("地方油田");
    		items6.setData("6");
    		
    		ListItem items7=new ListItem(list);
    		items7.setText("地方企业");
    		items7.setData("9");
    		
    		com1.setSelection(0);
    		return com1;
    	}
    

    初始化项目状态和上面大同小异,不列出来了。
    最后是初始化行政区,初始化行政区首先写一个初始化下拉树的方法。
    由于原表中不存在三个海域,所以需要自己手动添加,设置他们的stdcode和stdname。

    public class YQComboListHelper {
    	public static String XINGZHENGQUHUA="DIC_ADMINISTRATIVE_DIVISIONS";
    	public static List<FBaseDataObject> getBaseDataYQList(Context context,String tableName){
    		List<FBaseDataObject> list = BaseDataCenter.getObjectList(context, tableName);
    		
    		
    		if("DIC_ADMINISTRATIVE_DIVISIONS".equals(tableName)){
    			String name=context.getLogin().getUser().getName();
    		    Pattern pattern = Pattern.compile("^[0-9]{6}$");
    	        Matcher isNum = pattern.matcher(name);
    	        if (isNum.matches()  && name.equals("100000")) {
    	        	List<FBaseDataObject> ranks =new ArrayList<FBaseDataObject>();
    				GUID unitGuid = ContextManager.getContext().getLogin().getUserCurrentOrg();
    //				String unitCode = BaseDataCenter.findObject(ContextManager.getContext(), "MD_ORG", unitGuid).getStdCode();
    				String code = "0000";
    			
    				for(FBaseDataObject f:list){
    					if(f.getStdCode().endsWith(code) && !f.getStdCode().equals(100000) && !f.getStdCode().equals("710000") && !f.getStdCode().equals("810000") && !f.getStdCode().equals("820000")){
    						ranks.add(f);
    					}
    				}
    				
    				TableDefine define = BaseDataCenter.getObjectList(context, tableName).get(0).getTable().getTable();
    				ITable tab = new Table(define);
    				//新增油气项目  海域类别节点(原MD_org表中无此类数据)
    				BaseDataObjectImpl hysh1 = new BaseDataObjectImpl(tab);
    				hysh1.setStdCode("800001");
    				hysh1.setStdName("特殊海域");
    				ranks.add(hysh1);
    				BaseDataObjectImpl hyjh2 = new BaseDataObjectImpl(tab);
    				hyjh2.setStdCode("800002");
    				hyjh2.setStdName("深海");
    				ranks.add(hyjh2);
    				BaseDataObjectImpl tshy3 = new BaseDataObjectImpl(tab);
    				tshy3.setStdCode("800003");
    				tshy3.setStdName("近海");
    				ranks.add(tshy3);
    				//三类海域类别
    				return ranks;
    	        }
    	        else if(isNum.matches() && name.substring(2, 6).equals("0000") && !name.equals("100000") )
    	        {
    	        	List<FBaseDataObject> ranks =new ArrayList<FBaseDataObject>();
    				GUID unitGuid = ContextManager.getContext().getLogin().getUserCurrentOrg();
    //				String unitCode = BaseDataCenter.findObject(ContextManager.getContext(), "MD_ORG", unitGuid).getStdCode();
    			
    				for(FBaseDataObject f:list){
    					if( f.getStdCode().equals(name)){
    						ranks.add(f);
    					}
    				}
    				
    				
    				return ranks;
    	        }
    				
    		}
    		return list;
    	}
    	/*根据STDCODE获取对应基础数据对象*/
    	public static FBaseDataObject getBaseDataByCode(Context context,String tableName,String stdCode){
    		FBaseDataObject data = BaseDataCenter.findObject(context, tableName, stdCode);
    		return data;
    	}
    	/**
    	 * 获取下拉列表中选中的选项的值
    	 * @param comboList
    	 * @return String类型
    	 */
    	public static String selectComboListData(ComboList comboList){
    		ListItem[] item = comboList.getList().getSelection();
    		if(item!=null && item.length>0){
    			String result = (String)item[0].getData(); 
    			if(result!=null)
    				return result; 
    		}
    		return null;
    	}
    	
    	/**
    	 * 获取下拉列表选中的显示内容
    	 * @param comboList
    	 * @return
    	 */
    	public static String selectComboListText(ComboList comboList){
    		ListItem[] item = comboList.getList().getSelection(); 
    		if(item!=null && item.length>0)
    			return item[0].getText();
    		return null;
    	}
    	
    	
    	
    	/**
    	 * 根据数组内容,把数组内容转换为下拉列表
    	 * @param list		下拉控件
    	 * @param values	数组
    	 * @param includeDefault 	是否包含默认下拉值
    	 * @param context
    	 * @return
    	 */
    	public static void initComboList(ComboList list,String[][] values,boolean includeDefault){
    		InternalList iList = list.getList();
    		for (int i = 0; i < values.length; i++) {
    			ListItem item = new ListItem(iList);
    			item.setID(values[i][0]);
    			item.setData(values[i][0]);
    			item.setText(values[i][1]);
    		}
    	}
    	
    	/**
    	 * 根据基础数据内容初始化一个下拉列表
    	 * @param comboList
    	 * @param list
    	 * @param includeDefault
    	 * @return
    	 */
    	public static void initComboList(ComboList comboList,List<FBaseDataObject> list,boolean includeDefault){
    		InternalList iList = comboList.getList();
    		for(FBaseDataObject obj :list){
    			ListItem item = new ListItem(iList);
    			item.setID(obj.getStdCode());
    			item.setData(obj.getStdCode());
    			item.setText(obj.getStdName());
    		}
    	}
    	/**
    	 * 修改数据表格的属性,把属性修改为下拉列表形式
    	 * @param grid
    	 * @param comboList	下拉列表(包含初始化值)
    	 * @return
    	 */
    	public static GridCellEditor getGridComboList(Grid grid,final ComboList comboList,final int index){
    		return new GridCellEditor(grid) {
    			@Override
    			protected Control createControl(Grid grid) {
    				comboList.setSelection(index);
    				return comboList;
    			}
    			@Override
    			public int getFace(){
    				return JWT.GRID_EDITOR_FACE_LIST;
    			}
    		};
    	}
    	
    	
    	public static GridCellEditor getGridComboTree(Grid grid,final ComboTree tree){
    		return new GridCellEditor(grid) {
    			
    			@Override
    			protected Control createControl(Grid grid) {
    				return tree;
    			}
    		};
    	}
    
    	public static void initComboList(ComboList list, String[] value) {
    		InternalList iList = list.getList();
    		for (int i = 0; i < value.length; i++) {
    			ListItem item = new ListItem(iList);
    			item.setID(String.valueOf(i));
    			item.setData(value[i]);
    			item.setText(value[i]);
    		}
    	}
    	
    	/*行政区划列表*/
    	public static List<FBaseDataObject> getxzqhList(Context context){
    		return getBaseDataYQList(context, XINGZHENGQUHUA);
    	}
    }
    
    

    然后再调用这个方法

    	private void initSearchs() {
    		// TODO Auto-generated method stub
    		//行政区划
    		List<FBaseDataObject> xzqh_list = YQComboListHelper.getxzqhList(getContext());
    		YQComboTreeUtils.initComboTree(controls.cbt_1.getTree(),xzqh_list,false,getContext());
    		controls.cbt_1.setPanelWidth(100);
    	}
    

    然后下拉树就设置好了,然后需要按照这几个查询条件进行查询,将下拉树选中的信息传入到sql方法中,用sql语句进行查询。
    刚开始查询一直出错,因为最开始写的代码是这样的

    	private void flushGrid() {
    		// TODO Auto-generated method stub
    		xmlist=service.getYQPerambulateLicence(controls.cbt_1.getText(),controls.cbl_2.getList().getSelection()[0].getData(),controls.txt_1.getText(),controls.cbl_1.getList().getSelection()[0].getText());
    		controls.lbl_8.setText(xmlist.size()+"");
    	}
    

    后边两个下拉树可以查询到数据,因为这个是自己手动设置的,然后第一个下拉树,传进去的是行政区的recid,但是由于三个海域是自己添加的,只有stdcode和stdname,没有recid,所以会出现空指针,查询出错。

    所以后来这样写

    	private void flushGrid() {
    		// TODO Auto-generated method stub
    		xmlist=service.getYQPerambulateLicence(stdcode,controls.cbl_2.getList().getSelection()[0].getData(),controls.txt_1.getText(),controls.cbl_1.getList().getSelection()[0].getText());
    		controls.lbl_8.setText(xmlist.size()+"");
    		
    	}
    	
    	/**
    	 * 查询按钮
    	 * @param mouseEvent
    	 */
    	protected void on_lbl_5_Click(MouseEvent mouseEvent) {
    		// TODO Auto-generated method stub
    		if(controls.cbt_1.getText() != null &&  !"".equals(controls.cbt_1.getText()) &&!"null".equals(controls.cbt_1.getText()) )
    		{
    			stdcode=BaseDataCenter.findObjectbyObjectID(getContext(), "DIC_ADMINISTRATIVE_DIVISIONS", GUID.valueOf(controls.cbt_1.getText())).getStdCode();
    			stdcode=stdcode.substring(0, 2);
    		}
    		else if(controls.cbt_1.getText() != null && !"".equals(controls.cbt_1.getText()))
    		{
    			TreeItem[] rootItem = controls.cbt_1.getTree().getSelection();
    			stdcode = ((String) rootItem[0].getData()).substring(5, 6);
    //			stdcode=((BaseDataObjectImpl)controls.cbt_1.getControl().getData()).getStdCode()==null?null:((BaseDataObjectImpl)controls.cbt_1.getData()).getStdCode().substring(5, 6);
    			
    		}
    		else
    		{
    			stdcode=null;
    		}
    		flushGrid();
    		paginateRender();
    	}
    

    首先由于除三个海域其他行政区recid都有值,所以可以直接传recid所对应的stdcode值,
    对于这三个海域,首先查找这棵树的节点上的数据,然后直接得到它的stdcode值。
    最后就可以根据传过去的值在sql语句中进行查询。

  • 相关阅读:
    「日常训练」Single-use Stones (CFR476D2D)
    「日常训练」Greedy Arkady (CFR476D2C)
    「Haskell 学习」二 类型和函数(上)
    「学习记录」《数值分析》第二章计算实习题(Python语言)
    「日常训练」Alena And The Heater (CFR466D2D)
    Dubbo 消费者
    Dubbo 暴露服务
    Rpc
    git fail to push some refs....
    Spring Cloud (6)config 客户端配置 与GitHub通信
  • 原文地址:https://www.cnblogs.com/mingey/p/6391191.html
Copyright © 2020-2023  润新知