nc&&ncc笔记及常用api

这篇博客介绍了如何在Java中使用SQL执行查询、更新操作,包括BaseDAO接口的方法,如executeQuery和executeUpdate。同时,展示了在NC和NCC框架下处理面板数据的方法,如获取卡片表头、表体信息,并处理前端传回的参数。内容涵盖数据转换为VO对象、异常处理、接口调用等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/**
**sql语句中获取的数据类型整合
**适用nc&ncc
**basedao的一些方法
**/
//解析:两个都行;
BaseDAO basedao = BaseDAOUtil.getInstance().getBaseDAO();
IUAPQueryBS bs = NCLocator.getInstance().lookup(IUAPQueryBS.class);

/**
list:vo-list,String-list,
**/
//vo-list
List<DataHVO> lists = (List<DataHVO>) bs.executeQuery(sql_data, new BeanListProcessor(DataHVO.class));
//list-vo;list-String
List<MaterialRecord> matRecordList = (List<MaterialRecord>) basedao.executeQuery(psql1, new BeanListProcessor(MaterialRecord.class));
List<String> supplierList = (List<String>) basedao.executeQuery(sql, new ColumnListProcessor());

//map
Map<String, String> map = (Map<String, String>) bs .executeQuery(sql, new MapProcessor());

//column
String datasourse = (String) bs.executeQuery(sql,new ColumnProcessor());
Integer count = (Integer) basedao.executeQuery(sql1, new ColumnProcessor());
String orgname = (String) basedao.executeQuery(sql1, new ColumnProcessor());

/**获取结果做成一个vo;好处:有get/set方法
**/
PublicBidTemp publicBidTemp = (PublicBidTemp) basedao.executeQuery(sql, new BeanProcessor(PublicBidTemp.class));

//更新对应的vo-->updateVOList(volist)类似{"sex":"0",}--用于在某个条件下更新状态
basedao.updateVOList(mdList);

//通过sql语句执行某段更新语句--
basedao.executeUpdate(sql3);

//通过pk查询数据,结果是vo
OfferBargainVO offerBargain = (OfferBargainVO) basedao.retrieveByPK(OfferBargainVO.class, pk_offerbargain);


/**
**nc常用的获取面板某些数据的方法和设值方法--底层类:BillCardPanel
**解析:如果是在按钮的doAction上,需要添加private BillForm editor;并给与get/set方法
**/

//获取卡片表头某个字段的值(e指的是CardHeadTailAfterEditEvent,需要继承CardPanelEvent)
String value = e.getBillCardPanel().getHeadItem(TemplatesHVO.MOUDULE).getValue();

//获取卡片表体选择行数(多选情况)
int[] row = editor.getBillCardPanel().getBillTable().getSelectedRows();

//获取卡片表体选择的是第几行
int row = e.getBillCardPanel().getBillTable().getSelectedRow();

//获取卡片表体某行的某字段值
e.getBillCardPanel().getBillModel().getBodyValueRowVO(row, bodyVOName)

//获取卡片表体某字段的值(整列)
editor.getBillCardPanel().getBillModel().getBodyValueVOs(bodyVOName)

//获取卡片表体所有数据
editor.getBillCardPanel().getBillData().getBillModel().getBodyValueByMetaData()//获取卡片表体vo-TemplatesBVO的name值
TemplatesBVO[] listss = (TemplatesBVO[]) editor.getBillCardPanel().getBillModel().getBodyValueVOs(TemplatesBVO.class.getName());

//获取卡片表头参照类型的属性值 UIRefPane
UIRefPane modulenamevalue = (UIRefPane) e.getBillCardPanel().getHeadItem(TemplatesHVO.MOUDULE).getComponent();
//获取参照面板的name
String refname = modulenamevalue.getRefName();

//设置表头关键字对应元素值setHeadItem(String strKey, Object Value)
e.getBillCardPanel().setHeadItem(TemplatesHVO.DATASOURCE, datasourse);

//卡片表体设值
e.getBillCardPanel().setBodyValueAt(value,row,key);

//卡片增行
e.getBillCardPanel().addLine();


/**
**ncc后端处理前端传回的参数
**类要implements ICommonAction,用于获取前端传回来的参数
**
**/
//传参1
/** 
**前端json格式:
**{"rowsdata":[{"data":{“values”{“name”:{“value”:”template”}…}}},”data”: {“values”{“name”:{“value”:”temp”}…}}}]}
**
**/
		List<String> list = new ArrayList<String>();
		String data = null;
		 data = paramIRequest.read();
		 String rowdata = JSONObject.parseObject(data).getString("rowsdata");
		 String datasources = JSONObject.parseObject(data).getString("datasources");
		 JSONArray jsonstuInfo = JSONObject.parseArray(rowdata);
		 for(int i = 0;i<jsonstuInfo.size();i++) {
			 JSONObject jsonStuInfo = jsonstuInfo.getJSONObject(i);
			 JSONObject nameObject = jsonStuInfo.getJSONObject("data").getJSONObject("values").getJSONObject("name");
			 //获取组件
			 String name = nameObject.getString("value"); 
			 list.add(name);
		 }
//传参2:弄成vo--CommitOfferPriceAction
String strRequestJson = paramIRequest.read();
JSONObject jsonObject = JSONObject.parseObject(strRequestJson);
Integer operation = (Integer) jsonObject.get("operation");
JSONArray b = (JSONArray) jsonObject.get("tableData");
ArrayList<MaterialRecord> list= (ArrayList<MaterialRecord>) JSONObject.parseArray(b.toJSONString(), MaterialRecord.class);
//或者
String read = request.read();
IJson json = JsonFactory.create();
SCMQueryTreeFormatVO info = (SCMQueryTreeFormatVO)json.fromJson(read, SCMQueryTreeFormatVO.class);

//传参3:获取的是map
String str = request.read();
Map<String,Object> map = JsonFactory.create().fromJson(str,Map.class);


//传参4:接收的是整个面板的vo
// 核价
		BillCardOperator billCardOperator = new BillCardOperator();
	    // 1、获取AGGVO (request转换主子VO),多注意这个类:BillCardOperator中的toBill方法,其实就是json转vo
		SpecilAggBill vo = billCardOperator.toBill(paramIRequest);
		//获取表头的数据做成一个vo
		FindSourceHVO headData = (FindSourceHVO) vo.getHead();
		//获取表体的数据做成一个数组
		SuperVO[] sv = vo.getBodys();
		//创建vo型的集合
		ArrayList<MaterialDetail> mList = new ArrayList<>();
		//设值
		MaterialDetail materialDetail = new MaterialDetail();
			if(sv[i].getAttributeValue("selectreason") != null) {
				materialDetail.setSelectreason((String)sv[i].getAttributeValue("selectreason"));
			}
		//循环内每设值一个字段就将这个字段传进这个vo集合中
		mLis.add(materialDetail);


/**
**map,list格式
**/
//map
Map<Class<?>, SuperVO[]> map = new HashMap<Class<?>, SuperVO[]>();
Map<String,Integer> recordMap = new HashMap<>();
Map<String,List<MaterialRecord>> map = new HashMap<>();
Map<String,String> matRecordMap = new HashMap<>();
map.put(AssessGroupBVO.class, (SuperVO[]) aggvo.getChildren(AssessGroupBVO.class));
//list中某个{} 转数据[]
String[] pk_finsource_temp = (String[]) list.toArray(new String[0]);
//乘法格式
bidprice = Double.parseDouble(publicBidTempDetail.getNqtorigtaxprice()) 
* Double.parseDouble(publicBidTempDetail.getDistributenum());


/**
**调用接口的方式(注意后面的形式)IFindsourcehvoMaintain是接口;
**调用接口传参到方法中时,需要对传进去的参数进行是否为空判断,
**if(){}else {throw new BusinessException("参数异常");}易于让用户知道哪个环节出错了;
**
**/
IFindsourcehvoMaintain fservice = ServiceLocator.find(IFindsourcehvoMaintain.class);
IFindsourcehvoManageService service = NCLocator.getInstance().lookup(IFindsourcehvoManageService.class);

/**
**用in组装关键字的方式(关键字:pk_matdetail)
**
**/
String[] pkArray = pkList.toArray(new String [0]);
String contactsql = SQLUtil.buildSqlForIn("pk_matdetail", pkArray);
String psql1 = "select pk_matdetail,pk_offerbargain from srmdyg_offerbargain "
				+ "where obstatus = 1 and operatestatus = 2 and" + contactsql;


/**
**注意:每次进行设值的时候都要对被设值的参数值进行是否为空的判断--可用于单据转换规则,或者回写
**
**/
if(findSourceHVO.getDofferdeadline() != null) {
publicFindSourceMsg.setEndtime(findSourceHVO.getDofferdeadline().toString());
							}

/**
**异常信息
**
**/
//报错:e.getMessage()
throw new BusinessException("传入参数异常!");
ExceptionUtils.wrappBusinessException("查询错误:"+e.getMessage());
// 处理异常信息
Logger.error(e);
ExceptionUtils.wrapException(e);


/**
**Steam流
**取出pk_matdetail数组(list是一个vo类型的集合,类似{"name",value:"aa"},{"sex",value:"0"}...)
-->CounterOfferMsg::getPk_matdetail-->做成这种格式的(数据格式::value)这里的value是一种获取方法

**/
List<String> pkList=  list.stream().map(CounterOfferMsg::getPk_matdetail).collect(Collectors.toList());
//获取成<String,String>类型的数据
matRecordMap = matRecordList.stream().collect(Collectors.toMap(MaterialRecord::getPk_matdetail,MaterialRecord::getPk_offerbargain));
//判断结果集含有pk主键-用于if中
matRecordMap.containsKey(counterPriceMsg.getPk_matdetail())

//通过pk查询数据,结果是vo
OfferBargainVO offerBargain = (OfferBargainVO) basedao.retrieveByPK(OfferBargainVO.class, pk_offerbargain);

//获得当前还价人
String counter =  AppContext.getInstance().getPkUser();

会持续更新的!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值