单据分页的实现

单据分页的实现

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 {@Overridepublic 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);}//分页查询方法,查询所有PKpublic 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查询对应的人员idIUAPQueryBS 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 {@Overridepublic 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);}@Overridepublic String[] queryPKs(IQueryScheme queryScheme) throws BusinessException {return super.pubquerypkbills(queryScheme);}
}

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

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

相关文章

软考高级:信息系统开发方法2(形式化方法、统计过程方法等)概念和例题

作者&#xff1a;明明如月学长&#xff0c; CSDN 博客专家&#xff0c;大厂高级 Java 工程师&#xff0c;《性能优化方法论》作者、《解锁大厂思维&#xff1a;剖析《阿里巴巴Java开发手册》》、《再学经典&#xff1a;《Effective Java》独家解析》专栏作者。 热门文章推荐&am…

RTC协议与算法基础 - RTP/RTCP

首先&#xff0c;需要说明下&#xff0c;webrtc的核心音视频传输是通过RTP/RTCP协议实现的&#xff0c;源码位于src/modules/rtp_rtcp目录下&#xff1a; 下面让我们对相关的内容基础进行简要分析与说明&#xff1a; 一、TCP与UDP协议 1.1、TCP协议 TCP为了实现数据传输的可…

【Python】新手入门学习:详细介绍依赖倒置原则(DIP)及其作用、代码示例

【Python】新手入门学习&#xff1a;详细介绍依赖倒置原则&#xff08;DIP&#xff09;及其作用、代码示例 &#x1f308; 个人主页&#xff1a;高斯小哥 &#x1f525; 高质量专栏&#xff1a;Matplotlib之旅&#xff1a;零基础精通数据可视化、Python基础【高质量合集】、Py…

如何将.txtpb在IDE中彩色高亮显示

1. 问题描述 文件内容片段如下&#xff0c;它采用了一种键值对的格式&#xff0c;其中还包括了注释。我们可以采用一种近似的语言色彩识别方案处理它&#xff0c;比如YAML或者Python的语法高亮规则&#xff0c;因为这两种语言在处理键值对和注释的表示上与内容片段相似。当然也…

【QT+QGIS跨平台编译】之七十三:【QGIS_Analysis跨平台编译】—【错误处理:字符串错误】

文章目录 一、字符串错误二、处理方法三、涉及到的文件一、字符串错误 常量中有换行符错误:(也有const char * 到 LPCWSTR 转换的错误) 二、处理方法 需要把对应的文档用记事本打开,另存为 “带有BOM的UTF-8” 三、涉及到的文件 涉及到的文件有: src\analysis\processin…

openssl3.2 - exp - 选择最好的内建椭圆曲线

文章目录 openssl3.2 - exp - 选择最好的内建椭圆曲线概述笔记将 openssl ecparam -list_curves 实现迁移到自己的demo工程备注END openssl3.2 - exp - 选择最好的内建椭圆曲线 概述 在openssl中使用椭圆曲线, 只允许选择椭圆曲线的名字, 无法给定椭圆曲线的位数. 估计每种椭…

深度学习armv8/armv9 cache的原理

文章目录 前言1、为什么要用cache?2、背景:架构的变化?2、cache的层级关系 ––big.LITTLE架构&#xff08;A53为例)3、cache的层级关系 –-- DynamIQ架构&#xff08;A76为例)4、DSU / L3 cache5、L1/L2/L3 cache都是多大呢6、cache相关的术语介绍7、cache的分配策略(alocat…

C++函数 加括号与不加括号

很多时候&#xff0c;我们会看到一些在创建对象时有的加括号有的不加括号 那么&#xff0c;这是什么情况呢&#xff1f; 总结&#xff1a;函数需要加上括号&#xff0c;加上括号会对函数初始化&#xff0c;不加括号可能导致未知错误 我们来验证一下。 1.基本数据类型不带括…

利用Python进行网络爬虫:Beautiful Soup和Requests的应用【第131篇—Beautiful Soup】

利用Python进行网络爬虫&#xff1a;Beautiful Soup和Requests的应用 在网络数据变得日益丰富和重要的今天&#xff0c;网络爬虫成为了获取和分析数据的重要工具之一。Python作为一种强大而灵活的编程语言&#xff0c;在网络爬虫领域也拥有广泛的应用。本文将介绍如何使用Pyth…

Elasticseach基础认识

ES的起源&#xff1f; Elasticsearch 是由 Elastic 公司创建 简称&#xff08;ES&#xff09; Elasticsearch 是一个分布式、免费和开放的搜索和分析引擎&#xff0c;适用于所有类型的数据&#xff0c;包括文本、数字、地理空间、结构化和非结构化数据。 Elasticsearch 基于 …

Oracle 主从切换脚本

一、 切换前预检查 1. dg_precheck_main_v1.4.sh #!/bin/bash#********************************************************************************** # Author: Hehuyi_In # Date: 2022年06月16日 # FileName: dg_precheck_main_v1.4.sh # # For sys user, execute the sc…

LLM之RAG实战(二十九)| 探索RAG PDF解析

对于RAG来说&#xff0c;从文档中提取信息是一种不可避免的场景&#xff0c;确保从源文件中提取出有效的内容对于提高最终输出的质量至关重要。 文件解析过程在RAG中的位置如图1所示&#xff1a; 在实际工作中&#xff0c;非结构化数据比结构化数据丰富得多。如果这些海量数据无…

如何使用vue定义组件之——子组件调用父组件数据

1.定义父子模板template <div class"container"><my-father></my-father><my-father></my-father><my-father></my-father><!-- 此处无法调用子组件&#xff0c;子组件必须依赖于父组件进行展示 --><!-- <my-…

数学实验_Matlab使用2_简单绘图

简单使用 x -pi * 2 : .1 : pi*2;y sin(x);plot(x, y); % 绘制普通图像plot(x, y, k-.*); % 绘制2维图像&#xff0c;线为实线&#xff0c;*为每个点&#xff08;Matlab的画图比较原始&#xff0c;就是简单的秒点画图&#xff09;grid on; % 打开网状格式% grid off; % 关闭…

SORA和大语言模型的区别

OpenAI的文生视频模型SORA与大语言模型&#xff08;LLM&#xff09;的主要区别在于它们的应用领域和处理的数据类型&#xff0c;数据处理能力、技术架构、多模态能力和创新点。SORA作为一款专注于视频生成的模型&#xff0c;展现了在处理视觉数据方面的独特优势和创新能力。 1…

R语言读取大型NetCDF文件

失踪人口回归&#xff0c;本篇来介绍下R语言读取大型NetCDF文件的一些实践。 1 NetCDF数据简介 先给一段Wiki上关于NetCDF的定义。 NetCDF (Network Common Data Form) is a set of software libraries and self-describing, machine-independent data formats that support…

STM32串口通信—串口的接收和发送详解

目录 前言&#xff1a; STM32串口通信基础知识&#xff1a; 1&#xff0c;STM32里的串口通信 2&#xff0c;串口的发送和接收 串口发送&#xff1a; 串口接收&#xff1a; 串口在STM32中的配置&#xff1a; 1. RCC开启USART、串口TX/RX所对应的GPIO口 2. 初始化GPIO口 …

YOLOv8改进 | 图像去雾 | 特征融合注意网络FFA-Net增强YOLOv8对于模糊图片检测能力(北大和北航联合提出)

一、本文介绍 本文给大家带来的改进机制是由北大和北航联合提出的FFA-net: Feature Fusion Attention Network for Single Image Dehazing图像增强去雾网络,该网络的主要思想是利用特征融合注意力网络(Feature Fusion Attention Network)直接恢复无雾图像,FFA-Net通过特征…

MyBatis-Plus学习记录

目录 MyBatis-Plus快速入门 简介 快速入门 MyBatis-Plus核心功能 基于Mapper接口 CRUD 对比mybatis和mybatis-plus&#xff1a; CRUD方法介绍&#xff1a; 基于Service接口 CRUD 对比Mapper接口CRUD区别&#xff1a; 为什么要加强service层&#xff1a; 使用方式 CR…

开发指南009-从list导出excel文件

从数据库返回一般是对象的列表&#xff0c;平台底层提供了从list转为excel文件的方法。平台的设计思想就是为一些典型的场景设计对应的解决方法&#xff0c;通过模式化的方法来简化编程和提高维护性&#xff08;通过标准化来减少学习成本和维护成本&#xff0c;张三做的东西和李…