单据分页的实现

news2024/11/17 10:53:11

单据分页的实现

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.coloradmin.cn/o/1516359.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

从政府工作报告探计算机行业发展(在医疗健康领域)

从政府工作报告探计算机行业发展 政府工作报告作为政府工作的全面总结和未来规划&#xff0c;不仅反映了国家整体的发展态势&#xff0c;也为各行各业提供了发展的指引和参考。随着信息技术的快速发展&#xff0c;计算机行业已经成为推动经济社会发展的重要引擎之一。因此&…

如何在Linux系统部署APITable容器并实现无公网IP远程管理本地数据

文章目录 前言1. 部署APITable2. cpolar的安装和注册3. 配置APITable公网访问地址4. 固定APITable公网地址 前言 vika维格表作为新一代数据生产力平台&#xff0c;是一款面向 API 的智能多维表格。它将复杂的可视化数据库、电子表格、实时在线协同、低代码开发技术四合为一&am…

PMP成绩判定标准是什么?

2024年3月10日的PMP考试已经结束&#xff0c;不知道大家考得怎么样&#xff0c;对于考试难度有没有值得分享或者吐槽的&#xff1f;可以发出来大家交流一下~ 一、3月PMP考试成绩什么时候出&#xff1f; 按照往期考试成绩发布时间&#xff0c;基本在考后6-8周会出成绩&#xf…

OSCP靶场--Astronaut

OSCP靶场–Astronaut 考点(1.CVE-2021-21425getshell 2.suid php提权) 1.nmap扫描 ┌──(root㉿kali)-[~/Desktop] └─# nmap -sV -sC -p- 192.168.163.12 --min-rate 2500 Starting Nmap 7.92 ( https://nmap.org ) at 2024-03-14 01:24 EDT Nmap scan report for 192.16…

1个二维码能包含多个视频吗?制作视频二维码的方法

二维码在生活中现在随处可见&#xff0c;除了用于支付之外&#xff0c;展示内容也可以通过二维码来展现&#xff0c;比如常见的视频、图片、文件、音频等内容都可以通过二维码来展现。那么当我们需要将多个视频存入一个二维码中展示时&#xff0c;该如何利用二维码生成器的工具…

【超图】导入txt文件至udbx数据源中

作者&#xff1a;taco 最近在支持的过程中&#xff0c;有客户遇到了txt类型的数据导入到udbx中&#xff0c;不知如何导入。本身以为是客户不会用产品&#xff0c;直接叫嚣着客户&#xff0c;数据拿来我看看。 好家伙数据一拿来我直接蒙了。这啥破数据啊。咋一行一行的一点不规整…

【2024-完整版】python爬虫 批量查询自己所有CSDN文章的质量分:附整个实现流程

【2024】批量查询CSDN文章质量分 写在最前面一、分析获取步骤二、获取文章列表1. 前期准备2. 获取文章的接口3. 接口测试&#xff08;更新重点&#xff09; 三、查询质量分1. 前期准备2. 获取文章的接口3. 接口测试 四、python代码实现1. 分步实现2. 批量获取文章信息3. 从exce…

程序员想要搞钱不迷茫,这篇文章你可得码好啦!!!

年已经过完了&#xff0c;现在大家基本都已经返工返校了吧&#xff01;咱又要投入到新一年的战斗了&#xff01;春色恼人不等闲&#xff0c;相信咱都有一个实实在在的愿望和期许&#xff1a;身体健康&#xff0c;财源广进&#xff01;新的一年我们还得继续努力&#xff0c;多多…

自定义Model实现一个增删改查等功能的复用型表格QTableView

目录 一、表格功能总结与预览 1.功能总结 2.尚欠缺的功能&#xff08;后续可能会补充&#xff09; 二、功能设计选择原因 1.QTableWidget与MVC模式的QTableview的选择 2.处理数据的方式 所以后续将会选择第二种方式&#xff0c;直接操作数据库&#xff0c;并且通过数据库…

公众号怎么转移主体

公众号迁移有什么作用&#xff1f;只能变更主体吗&#xff1f;长期以来&#xff0c;由于部分公众号在注册时&#xff0c;主体不准确的历史原因&#xff0c;或者公众号主体发生合并、分立或业务调整等现实状况&#xff0c;在公众号登记主体不能对应实际运营人的情况下&#xff0…

蓝桥杯前端Web赛道-水果消消乐

蓝桥杯前端Web赛道-水果消消乐 题目链接&#xff1a;2.水果消消乐 - 蓝桥云课 (lanqiao.cn) 题目要求可查看题目文件夹中的effect.gif文件。 下面开始分析题目需要我们做什么 首先显而易见的是&#xff0c;当点到相同的水果的时候&#xff0c;对于的格子消失&#xff1b;如…

论文阅读——Align before Fuse

Align before Fuse: Vision and Language Representation Learning with Momentum Distillation image-text contrastive learning(ITC)用在单模态&#xff0c;masked language modeling (MLM) and image-text matching (ITM) 用在多模态。 单模态编码器的表示上引入了中间图像…

在dpvs上实现ICMP的源进源出

目录 1. 缘起2. 源码分析3. 让ICMP也走源进源出1. 缘起 在网络通信中,当一个请求报文从源主机到达目标主机,并经过中间路由器或交换机进行转发时,请求报文进入主机A的路径和响应报文离开主机A的路径可能不同。这种情况下,就会出现所谓的三角路径问题。如下图: 具体来说,…

精通Linux的磁盘分区:从理论到实战

前言 在这篇技术文章中&#xff0c;我详细介绍了Linux磁盘分区的理论知识&#xff0c;并结合实际示例演示了如何在CentOS 7系统上使用fdisk工具进行磁盘分区和删除操作。无论您是新手还是有一定经验的用户&#xff0c;本文都将帮助您轻松掌握磁盘分区的关键概念和操作技巧。如…

C++:vector类

vector的介绍及使用 1. vector 是表示可变大小数组的序列容器。 2. 就像数组一样&#xff0c; vector 也采用的连续存储空间来存储元素。也就是意味着可以采用下标对 vector 的元素进行访问&#xff0c;和数组一样高效。但是又不像数组&#xff0c;它的大小是可以动态改变的…

Linux信号灯

概念&#xff1a;是不同进程间或一个给定进程内部不同线程间同步的机制。类似我们的 PV操作概念&#xff1a; 生产者和消费者场景 &#xff30;(&#xff33;) 含义如下:if (信号量的值大于0) { 申请资源的任务继续运行&#xff1b;信号量的值减一&#xff1b;} else { 申…

同态滤波算法详解

同态滤波是一种用于增强图像的方法&#xff0c;特别适用于去除图像中的照明不均和阴影。该算法基于照射反射模型&#xff0c;将图像分解为两个分量&#xff1a;照射分量&#xff08;illumination component&#xff09;和反射分量&#xff08;reflection component&#xff09;…

腾讯云服务器地域是什么?地域选择看着一篇就够了

腾讯云服务器地域怎么选择&#xff1f;不同地域之间有什么区别&#xff1f;腾讯云哪个地域好&#xff1f;地域选择遵循就近原则&#xff0c;访客距离地域越近网络延迟越低&#xff0c;速度越快。腾讯云百科txybk.com告诉大家关于地域的选择还有很多因素&#xff0c;地域节点选择…

如何在Windows系统部署Plex影音站点并实现公网访问内网媒体库

文章目录 1.前言2. Plex网站搭建2.1 Plex下载和安装2.2 Plex网页测试2.3 cpolar的安装和注册 3. 本地网页发布3.1 Cpolar云端设置3.2 Cpolar本地设置 4. 公网访问测试5. 结语 1.前言 用手机或者平板电脑看视频&#xff0c;已经算是生活中稀松平常的场景了&#xff0c;特别是各…

NO5 蓝桥杯实践之矩阵键盘的使用(或许是一篇求助帖...)

1 任务 2 思路 视频中老师的思路写的代码过长&#xff0c;所以我想了个自己的思路&#xff0c;但是没完全跑出来&#xff0c;求大神指教&#xff01;&#xff01;&#xff01;&#xff01; 我的思路是首先将矩阵键盘的行和列对应的端口引脚分别存储在类似数组&#xff0c;然后…