单据分页的实现

单据分页的实现

1. AceWzcgfkjtMaintainProxy.java

在这里插入图片描述

package nc.ui.jych.wzcgfkjt.ace.serviceproxy;

import nc.bs.framework.common.NCLocator;
import nc.itf.jych.IWzcgfkjtMaintain;
import nc.ui.uif2.components.pagination.IPaginationQueryService;
import nc.vo.jych.wzcgfkjt.AggWzcgfkjtVO;
import nc.vo.pub.BusinessException;
import nc.vo.pubapp.pattern.exception.ExceptionUtils;

/**
 * 示例单据的操作代理
 * 
 * @author author
 * @version tempProject version
 */
public class AceWzcgfkjtMaintainProxy implements IPaginationQueryService {

	@Override
	public Object[] queryObjectByPks(String[] pks)
			throws BusinessException {
		// TODO 自动生成的方法存根
		AggWzcgfkjtVO[] aggvo = null;
		IWzcgfkjtMaintain query = NCLocator.getInstance().lookup(IWzcgfkjtMaintain.class);
		try {
			aggvo = query.queryBillByPK(pks);
		} catch (Exception e) {
			ExceptionUtils.wrappException(e);
		}
		return aggvo;
	}
	

}

2. Wzcgfkjt_config.xml

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

<!--分页新增这三个bean-->
<bean id="maintainProxy" class="nc.ui.jych.wzcgfkjt.ace.serviceproxy.AceWzcgfkjtMaintainProxy" />

<bean id="paginationModel" class="nc.ui.pubapp.uif2app.model.pagination.PubPaginationModel"
	init-method="init">
	<property name="paginationQueryService" ref="maintainProxy" />
</bean>

<bean id="paginationBar" class="nc.ui.uif2.components.pagination.PaginationBar" init-method="onStructChanged">
	<property name="paginationModel" ref="paginationModel" />
</bean>


<!-- 应用服务类,负责进行模型操作的处理 -->
<bean id="bmModelModelService" class="nc.ui.jych.wzcgfkjt.ace.serviceproxy.AceWzcgfkjtMaintainProxy"/>


<!--分页新增这二个bean-->
<bean id="bmModelModelDataManager" class="nc.ui.pubapp.uif2app.model.pagination.PaginationModelDataManager">
	<property name="model" ref="bmModel"></property>
	<property name="paginationModel" ref="paginationModel" />
	<property name="pageQueryService" ref="pageQueryService" />
</bean>

<bean id="pageQueryService" class="nc.ui.pubapp.uif2app.model.pagination.UIPageQueryService">
	<property name="allPagePkQueryServiceMethod" value="nc.itf.jych.IWzcgfkjtMaintain.queryPKs"></property>
	<property name="dataOfPksQueryServiceMethod" value="nc.itf.jych.IWzcgfkjtMaintain.queryBillByPK"></property>
</bean>

	
<!--分页新增这个property-->
<property name="paginationBar" ref="paginationBar" />

3. AceWzcgfkjtPubServiceImpl.java

在这里插入图片描述

package nc.impl.pub.ace;

import java.util.ArrayList;
import java.util.List;

import nc.bs.framework.common.InvocationInfoProxy;
import nc.bs.framework.common.NCLocator;
import nc.impl.pubapp.pattern.data.bill.BillQuery;
import nc.impl.pubapp.pattern.database.DataAccessUtils;
import nc.itf.uap.IUAPQueryBS;
import nc.jdbc.framework.processor.ArrayListProcessor;
import nc.jdbc.framework.processor.ColumnProcessor;
import nc.ui.querytemplate.querytree.IQueryScheme;
import nc.vo.jych.wzcgfkjt.AggWzcgfkjtVO;
import nc.vo.pub.BusinessException;
import nc.vo.pubapp.bill.pagination.util.PaginationUtils;
import nc.vo.pubapp.pattern.data.IRowSet;
import nc.vo.pubapp.pattern.exception.ExceptionUtils;
import nc.vo.pubapp.pattern.pub.SqlBuilder;
import nc.vo.pubapp.query2.sql.process.QuerySchemeProcessor;
import nc.vo.zkch.utils.NullValueUtils;

public abstract class AceWzcgfkjtPubServiceImpl {

	 //分页查询方法,根据PK查单据
    public AggWzcgfkjtVO[] pubquerybillbypkbills(String[] pks) {
    	AggWzcgfkjtVO[] bills = null;
        BillQuery<AggWzcgfkjtVO> query =
                new BillQuery<AggWzcgfkjtVO>(AggWzcgfkjtVO.class);
        bills = query.query(pks);
        return PaginationUtils.filterNotExistBills(bills, pks);
    }

    //分页查询方法,查询所有PK
    public String[] pubquerypkbills(IQueryScheme queryScheme) {
        // String beanId=(String) queryScheme.get(QueryConstants.BEAN_ID);
        StringBuffer sql = new StringBuffer();
        QuerySchemeProcessor processor = new QuerySchemeProcessor(queryScheme);
        String mainAlias = processor.getMainTableAlias();
        sql.append(" select distinct ");
        sql.append(mainAlias);
        sql.append(".");
        sql.append("pk_wzcgfkjt");
        sql.append(processor.getFinalFromWhere());

        //系统当前登录用户
        String userId = InvocationInfoProxy.getInstance().getUserId();

        //根据登录用户id查询对应的人员id
        IUAPQueryBS bs = NCLocator.getInstance().lookup(IUAPQueryBS.class);
        String sql1 =
                "select psndoc.pk_psndoc from bd_psndoc psndoc left join sm_user smuser on smuser.pk_psndoc = psndoc.pk_psndoc where smuser.cuserid = '"
                        + userId + "' and nvl(psndoc.dr,0) = 0 and nvl(smuser.dr,0) = 0";
        String pk_psndoc = "";
        
        List<String> yhlist = new ArrayList<String>();
        List<String> rylist = new ArrayList<String>();
        
        try {
        	pk_psndoc = NullValueUtils.getNullStringValue(bs.executeQuery(sql1, new ColumnProcessor()));
            
            if(!pk_psndoc.equals("")) {
            	
                SqlBuilder sqlBuilder = new SqlBuilder();
                sqlBuilder.append("	select distinct ry.pk_psndoc, yh.cuserid	");
                sqlBuilder.append("	  from sm_user yh	");
                sqlBuilder.append("	 inner join bd_psndoc ry	");
                sqlBuilder.append("	    on yh.pk_psndoc = ry.pk_psndoc	");
                sqlBuilder.append("	   and nvl(ry.dr, 0) = 0	");
                sqlBuilder.append("	 where ry.def9 = '"+pk_psndoc+"'	");
            	List<Object[]> list = (List<Object[]>) bs.executeQuery(sqlBuilder.toString(), new ArrayListProcessor());
            	
            	if(list != null && list.size() > 0) {
            		for (int i = 0; i < list.size(); i++) {
            			Object[] objs = list.get(i);
            			yhlist.add(NullValueUtils.getNullStringValue(objs[1]));
            			rylist.add(NullValueUtils.getNullStringValue(objs[0]));
					}
            	}
            	
            }
            
            
        } catch (BusinessException e) {
            ExceptionUtils.wrappBusinessException(e.getMessage());
        }
        
        yhlist.add(userId);
        rylist.add(pk_psndoc);
        
        SqlBuilder rytj = new SqlBuilder();
        rytj.append(" "+mainAlias+".pk_psndoc  ",rylist.toArray(new String[0]));
        
        SqlBuilder yhtj = new SqlBuilder();
        yhtj.append(" "+mainAlias+".creator  ",yhlist.toArray(new String[0]));
        
        //查询出制单人为当前登录人的记录(当前跟踪人为空)。
//        sql.append(" and ( " +yhtj.toString()+" ) ");
        
        DataAccessUtils dao = new DataAccessUtils();
        IRowSet rowset = dao.query(sql.toString());
        String[] keys = rowset.toOneDimensionStringArray();
        return keys;
    }

}

4. WzcgfkjtMaintainImpl.java

在这里插入图片描述

package nc.impl.jych;

import java.util.Arrays;
import java.util.List;

import nc.impl.pub.ace.AceWzcgfkjtPubServiceImpl;
import nc.itf.jych.IWzcgfkjtMaintain;
import nc.ui.querytemplate.querytree.IQueryScheme;
import nc.vo.jych.wzcgfkjt.AggWzcgfkjtVO;
import nc.vo.pub.BusinessException;
import nc.vo.pub.CircularlyAccessibleValueObject;
import nc.vo.pub.IVOMeta;

public class WzcgfkjtMaintainImpl extends AceWzcgfkjtPubServiceImpl
implements IWzcgfkjtMaintain {

	@Override
	public AggWzcgfkjtVO[] queryBillByPK(String[] pks) throws BusinessException {
		AggWzcgfkjtVO[] pubquerybillbypkbills = super.pubquerybillbypkbills(pks);
		if (pubquerybillbypkbills != null && pubquerybillbypkbills.length > 0) {
			for (AggWzcgfkjtVO aggVO : pubquerybillbypkbills) {
				IVOMeta[] children = aggVO.getMetaData().getChildren();
				if (children != null && children.length != 0) {
					for (IVOMeta item : children) {
						CircularlyAccessibleValueObject[] childrenVO = (CircularlyAccessibleValueObject[]) aggVO
								.getChildren(item);
//						@SuppressWarnings("unchecked")
						List<CircularlyAccessibleValueObject> asList = Arrays.asList(childrenVO);
//						asList.sort((x, y) -> Double.compare(
//								x.getAttributeValue("rowno") == null ? 0
//										: new Double(x.getAttributeValue("rowno").toString()),
//								y.getAttributeValue("rowno") == null ? 0
//										: new Double(y.getAttributeValue("rowno").toString())));
					}
				}
			}
		}
		return super.pubquerybillbypkbills(pks);
	}

	@Override
	public String[] queryPKs(IQueryScheme queryScheme) throws BusinessException {
		return super.pubquerypkbills(queryScheme);
	}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/456058.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python小设计

1. 五个PPT上的界面打印【print、input函数】 &#xff08;1&#xff09;英雄商城登陆界面 print(英雄联盟商城登录界面 ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~1. 用户登录2. 新用户注册3. 退出系统 ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~…

请说一下卷积神经网络里的特征图和感受野怎么计算?VGG网络的特点?如何解释?

请说一下卷积神经网络里的特征图和感受野怎么计算&#xff1f; 特征图的计算 首先要明确什么是特征图&#xff1f; 特征图是卷积层输出的二维数组&#xff0c;每个元素表示一个特定区域的特征。特征图的大小取决于输入图像的大小、卷积核的大小、步幅&#xff08;stride&…

无需编程技能:Python爬虫与数据可视化毕业论文代写服务

引言 作为一名在软件技术领域深耕多年的专业人士&#xff0c;我不仅在软件开发和项目部署方面积累了丰富的实践经验&#xff0c;更以卓越的技术实力获得了&#x1f3c5;30项软件著作权证书的殊荣。这些成就不仅是对我的技术专长的肯定&#xff0c;也是对我的创新精神和专业承诺…

S4 Hana SD -信贷管理 - 02

2.3 给信贷控制范围分配公司代码 TCODE: SPRO 配置路径:IMG > 企业结构 > 分配 > 财务会计 > 给信贷控制区分配公司代码 配置路径截图: 公司:被分配的公司代码。 公司名称&城市:已在公司代码数据中维护。 CCAR:分配的信贷控制范围。 覆盖CC范围:如…

【C语言】C语言内存函数

&#x1f451;个人主页&#xff1a;啊Q闻 &#x1f387;收录专栏&#xff1a;《C语言》 &#x1f389;道阻且长&#xff0c;行则将至 前言 这篇博客是关于C语言内存函数(memcpy,memmove,memset,memcmp)的使用以及部分的模拟实现 memcpy,memmove,memset,memc…

搭建项目后台系统基础架构

任务描述 1、了解搭建民航后端框架 2、使用IDEA创建基于SpringBoot、MyBatis、MySQL、Redis的Java项目 3、以原项目为参照搭建项目所涉及到的各个业务和底层服务 4、以原项目为例&#xff0c;具体介绍各个目录情况并参照创建相关文件夹 1、创建项目后端 BigData-KongGuan …

Apache Paimon系列之:主键表

Apache Paimon系列之&#xff1a;主键表 一、主键表1.Bucket2.LSM Trees3.Compaction 二、数据分布1.固定Bucket2.动态Bucket3.正常动态Bucket模式4.跨分区更新插入动态存储桶模式 三、Merge Engine1.Deduplicate2.部分更新3.序列组4.聚合部分更新5.聚合6.Retract7.First Row 四…

【内存分布管理】new与malloc以及delede与delete[]的区别

文章目录 1.内存分布示意图(重要)2.判断以下程序中的变量在什么区域3.new和delete4.malloc和new的区别5.内存泄漏内存泄漏的分类&#xff1a;_CrtDumpMemoryLeaks() 函数如何避免内存泄漏 1.内存分布示意图(重要) 其中数据共享区也叫内存映射段&#xff0c;是高效的I/O映射方式…

【Python】成功解决ModuleNotFoundError: No module named ‘bs4‘

【Python】成功解决ModuleNotFoundError: No module named ‘bs4’ &#x1f308; 个人主页&#xff1a;高斯小哥 &#x1f525; 高质量专栏&#xff1a;Matplotlib之旅&#xff1a;零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程&#x1f448; 希望…

windows10+cpu+pycharm跑yolov5

1、安装anaconda和pycharm&#xff0c;安装方法参考&#xff1a; anaconda和pycharm安装&#xff08;windows10 &#xff09;-CSDN博客 2、创建yolov5环境&#xff0c;打开Anaconda Prompt命令打开cmd命令行窗口&#xff0c;如下所示&#xff1a; 输入&#xff1a;conda crea…

.net框架和c#程序设计第一次测试

一、html整体结构 首先&#xff0c;代码的一个整体结构&#xff0c;可以通过输入一个英文!来实现 加个备注&#xff1a; <!DOCTYPE html> <!-- 声明文档类型为 HTML --> <html lang"en"> <!-- 标识文档语言为英语 --> <head><met…

谷歌关键词优化#川圣SEO#蜘蛛池

baidu搜索&#xff1a;如何联系八爪鱼SEO&#xff1f; baidu搜索&#xff1a;如何联系八爪鱼SEO&#xff1f; baidu搜索&#xff1a;如何联系八爪鱼SEO&#xff1f; 谷歌关键词优化&#xff0c;也被称为谷歌搜索引擎优化 (SEO)&#xff0c;是一种策略&#xff0c;旨在提高网…

一个悄然崛起的AI开源项目!

众所周知&#xff0c;最近这半年AI相关的话题实在是火到出圈。尤其是生成式AI的流行&#xff0c;让我们普通人也可以近距离地接触和应用AI。这其中最典型的就是ChatGPT。 那除了ChatGPT&#xff0c;还有一个非常实用的领域&#xff0c;也是我们今天要讨论的话题&#xff0c;那…

C++内存分布与动态内存管理

文章目录 :dizzy: C/C内存分布:dizzy:C语言中动态内存管理方式  :sparkles:malloc   :sparkles:calloc  :sparkles:realloc :dizzy:C语言中动态内存管理方式  :sparkles:new和delete操作内置类型  :sparkles:new和delete操作自定义类型 :dizzy:operator new与operato…

面试经典-16- 环形链表

题目 给你一个链表的头节点 head &#xff0c;判断链表中是否有环。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 为了表示给定链表中的环&#xff0c;评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置&#…

揭秘Kafka拦截器的神奇操作

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 揭秘Kafka拦截器的神奇操作 前言拦截器的基本概念Kafka 拦截器的定义和基本原理&#xff1a;拦截器是 Kafka 消息传递的不可或缺的组成部分的原因&#xff1a; 生产者拦截器配置和使用生产者拦截器的步…

C# 文件拖入控件中,显示文件路径

1.设置所需拖入的控件&#xff08;以Textbox为列&#xff09;属性为&#xff1a; this.textBox1.AllowDrop true; //设置AllowDrop 属性为 true&#xff0c;使之支持拖拽&#xff0c;否则拖拽显示禁用状态 2.设置该控件的两个事件&#xff0c;分别为&#xff1a; ①DragEnt…

Vcenter esxi web界面访问提示权限被拒绝

一、问题现象 原因 应该是在vCenter中添加主机的时候&#xff0c;将锁定模式设置成了严格。 二、解决过程 2.1 方式一 BMC登录主机&#xff0c;连接显示器和键盘。 输入账号密码&#xff0c;按F2进行设置&#xff0c;将会打开一个界面&#xff0c;第一个选项是设置密码&…

c++指针的定义和使用

1、定义一个指针 int a10; //定义指针的语法&#xff1a;数据类型 * 指针变量名&#xff1a;int * p&#xff1b; //让指针记录变量a的地址&#xff1a;p &a; int a 10;int* p; p &a; cout << "a的地址为&#xff1a;" << &a <<…

疯狂数钞票H5游戏

移动端微信h5 <template><div class"container" id"container"><div class"regBag"></div><div class"moneyBox"><transitionv-for"(item,index) in showImgList":key"index"…
最新文章