档案开发:增加查询和打卡按钮

news2024/12/23 22:43:02

档案开发:增加查询和打卡按钮

和单据开发的不同点

  1. 没有单据类型
  2. 不是右击–>特性–>单据主表/单据子表,而是右击–>特性–>选择想要的接口
  3. 访问器类型是NCVO
  4. 不需要映射
  5. 不是项目右键–>新建–>其他–>主子表单据结点,而是项目右键–>新建–>其他–>单表档案结点
  6. 档案无查询按钮,只有刷新按钮
    在这里插入图片描述
    在这里插入图片描述

查询按钮开发

package nc.ui.cjkcmg.cjyxdk.action;

import nc.bs.framework.common.NCLocator;
import nc.itf.cjkcmg.ICjyxdkMaintain;
import nc.ui.pubapp.uif2app.query2.action.DefaultQueryAction;
import nc.ui.querytemplate.querytree.IQueryScheme;
import nc.ui.uif2.IShowMsgConstant;
import nc.ui.uif2.ShowStatusBarMsgUtil;
import nc.vo.cjkcmg.cjyxdk.Cjyxdk;
import nc.vo.ml.NCLangRes4VoTransl;
import nc.vo.pubapp.pattern.exception.ExceptionUtils;

public class QueryAction extends DefaultQueryAction{
	

	/**
	 * 点击查询按钮,弹出打卡档案查询模板
	 */
	private static final long serialVersionUID = 1310679326706972915L;
	
	@Override
	protected void executeQuery(IQueryScheme queryScheme) {
		// TODO 自动生成的方法存根
		try {
			Cjyxdk[] vos = getService().query(queryScheme);
			if (vos == null || vos.length == 0) {
				getModel().initModel(null);
				ShowStatusBarMsgUtil.showStatusBarMsg(IShowMsgConstant.getQueryNullInfo(), this.getModel().getContext());
			} else {
				getModel().initModel(vos);
				ShowStatusBarMsgUtil.showStatusBarMsg(NCLangRes4VoTransl.getNCLangRes().getStrByID("pubapp_0",
						"0pubapp-0265", (String) null, new String[] { "" + vos.length }), this.getModel().getContext());
			}
		} catch (Exception e) {
			// TODO 自动生成的 catch 块
			ExceptionUtils.wrappBusinessException("查询异常:"+e.getMessage());
		}
	}
	
	//要修改哪个单子调哪个单子的接口
	private ICjyxdkMaintain service;
	private ICjyxdkMaintain getService(){
		if (service == null) {
			service = NCLocator.getInstance().lookup(ICjyxdkMaintain.class);
		}
		return service;
	}
	
}
	<bean id="queryTemplateContainer" class="nc.ui.uif2.editor.QueryTemplateContainer">
		<property name="context" ref="context"></property>
		<property name="nodeKey" value="qt"></property>
	</bean> 
	<!--======= 动作:[newActions] [查询] ===========-->
	<bean id="queryAction" class="nc.ui.cjkcmg.cjyxdk.action.QueryAction">
		<property name="model"><ref bean="batchModel" /></property>
		<property name="templateContainer"><ref bean="queryTemplateContainer" /></property>
		<property name="nodeKey" value="qt"/>
	</bean>

打卡按钮开发

package nc.ui.cjkcmg.cjyxdk.action;

import java.awt.event.ActionEvent;

import nc.bs.framework.common.NCLocator;
import nc.itf.cjkcmg.ICjyxdkMaintain;
import nc.ui.pub.beans.MessageDialog;
import nc.ui.pub.beans.UIRefPane;
import nc.ui.pubapp.uif2app.model.BatchBillTableModel;
import nc.ui.pubapp.uif2app.model.BatchModelDataManager;
import nc.ui.uif2.NCAction;
import nc.ui.uif2.editor.BatchBillTable;
import nc.uif2.annoations.MethodType;
import nc.uif2.annoations.ModelMethod;
import nc.uif2.annoations.ModelType;
import nc.vo.bd.meta.BatchOperateVO;
import nc.vo.cjkcmg.cjyxdk.Cjyxdk;
import nc.vo.pub.BusinessException;
import nc.vo.pub.lang.UFDate;
import nc.vo.wgbfb.utils.NullValueUtils;

public class DkAction  extends NCAction{


	/**
	 * 新增打卡按钮,点击打卡按钮,自动生成一条打卡记录
	 */
	private static final long serialVersionUID = 1L;
	private BatchBillTableModel model;
	private BatchBillTable editor;
	private BatchModelDataManager  dataManager ;


	public DkAction() {
		// TODO 自动生成的构造函数存根
		setCode("dkAction");
		setBtnName("打卡");
	}

	@Override
	public void doAction(ActionEvent e) throws BusinessException {
		try{
			//直接弹一个(客户)参照
			UIRefPane refPane = new UIRefPane("客户档案");
			//显示参照
			refPane.showModel();
			//获取选中参照的数据
			String[] unit = (String[]) refPane.getValueObj();
			if(unit == null) {
				return;
			}
			//客户
			String pk_customer = refPane.getRefPK();
			//打卡人
			String userId = getModel().getContext().getPk_loginUser();
			//新建一个打卡vo
			Cjyxdk dkvo = new Cjyxdk();
			//集团
			dkvo.setPk_group("0001A1100000000003UJ");
			//组织
			dkvo.setPk_org("GLOBLE00000000000000");
			//客户
			dkvo.setCustomer(pk_customer);
			//打卡时间
			dkvo.setDksj(new UFDate());
			//打卡人
			dkvo.setDkr(userId);
			//打卡年度
			dkvo.setDknd(NullValueUtils.getNullStringValue(new UFDate()).substring(0, 4));
			//档案新增方法
			BatchOperateVO batchVO = new BatchOperateVO();
			batchVO.setAddObjs(new Cjyxdk[]{dkvo});
			getService().batchSave(batchVO);
			//刷新打卡档案
			getDataManager().refresh();
			//弹框提示打卡成功
			MessageDialog.showHintDlg(null, "提示", "打卡成功");
		}catch(Exception e2){
			throw new BusinessException("打卡失败:" + e2.getMessage());
		}
	}

	//要修改哪个单子调哪个单子的接口
	private ICjyxdkMaintain service;
	private ICjyxdkMaintain getService(){
		if (service == null) {
			service = NCLocator.getInstance().lookup(ICjyxdkMaintain.class);
		}
		return service;
	}

	public BatchBillTableModel getModel() {
		return model;
	}

	@ModelMethod(modelType=ModelType.AbstractUIAppModel, methodType=MethodType.SETTER)
	public void setModel(BatchBillTableModel model) {
		this.model = model;
		this.model.addAppEventListener(this);
	}

	public BatchBillTable getEditor() {
		return editor;
	}

	public void setEditor(BatchBillTable editor) {
		this.editor = editor;
	}
	public BatchModelDataManager getDataManager() {
		return dataManager;
	}
	public void setDataManager(BatchModelDataManager dataManager) {
		this.dataManager = dataManager;
	}


}

	<!--======= 动作:[newActions] [打卡] ===========-->
	<bean id="dkAction" class="nc.ui.cjkcmg.cjyxdk.action.DkAction">
		<property name="model" ref="batchModel" />
		<property name="editor" ref="batchBillTable" />
		<property name="dataManager" ref ="batchModelModelDataManager"/>
		<property name="exceptionHandler"><ref bean="exceptionHandler" /></property>
	</bean>

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

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

相关文章

怕封店吗?来看看这份亚马逊测评宝典吧!

测评&#xff0c;一直是跨境电商亚马逊行业常谈论的话题&#xff0c;因为它是获取销量最快的方法之一&#xff0c;但对于测评&#xff0c;跨境电商亚马逊平台也是深恶痛绝&#xff0c;严厉打击测评行为&#xff0c;但不少的卖家仍旧喜欢铤而走险&#xff0c;做测评去提高店铺的…

Python打印七夕礼物

参考&#xff1a; python写七夕硬核礼物&#xff01; - 周旋机器视觉的文章 - 知乎 https://zhuanlan.zhihu.com/p/196451223 # -*- coding:utf-8 -*-# 导入opencv和openpyxl import openpyxl import cv2 as cv import numpy as np from openpyxl import load_workbook from o…

组织机构代码,注册号,纳税人识别号有什么区别?海关备案是什么?

组织机构代码&#xff0c;注册号&#xff0c;纳税人识别号有什么区别&#xff1f; 之前写过关于企业信用代码的文章&#xff0c;今天来讲一下企业的三证合一。三证合一指的是将识别号&#xff0c;注册号&#xff0c;组织机构代码三者共用一个号的说法。 但是&#xff0c;你看…

群英荟萃,决战渝城 | 第七届集创赛“加速科技杯”总决赛圆满落幕!

8月20-22日&#xff0c;第七届全国大学生集成电路创新创业大赛全国总决赛在重庆举办&#xff0c;“加速科技杯”中有26支优秀队伍从四百多支报名队伍中脱颖而出&#xff0c;获得总决赛各项大奖&#xff0c;取得了优异的成绩&#xff01;大赛同期举办的还有集创赛嘉年华、人才对…

python 项目打包器pyinstaller实践

在创建了独立应用&#xff08;自包含该应用的依赖包&#xff09;之后&#xff0c;还可以使用 PyInstaller 将 Python 程序生成可直接运行的程序&#xff0c;这个程序就可以被分发到对应的 Windows 或 Mac OS X 平台上运行。 安装 PyInstalle Python 默认并不包含 PyInstaller…

高隔音活动隔断墙是一种设计用于隔离声音、提供隐私和创建灵活空间的分隔墙

高隔音活动隔断墙是一种设计用于隔离声音、提供隐私和创建灵活空间的分隔墙。这种隔断墙通常在需要随时改变房间布局的场合&#xff0c;如酒店、会议中心、展览厅、办公室等地使用。 以下是有关高隔音活动隔断墙的一些重要特点和优势&#xff1a; 1. 隔音性能&#xff1a;高隔音…

Protobuf在IDEA中的插件安装教程

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…

【中危】Apache Ivy<2.5.2 存在XXE漏洞 (CVE-2022-46751)

漏洞描述 Apache Ivy 是一个管理基于 ANT 项目依赖关系的开源工具&#xff0c;文档类型定义(DTD)是一种文档类型定义语言,它用于定义XML文档中所包含的元素以及元素之间的关系。 Apache Ivy 2.5.2之前版本中&#xff0c;当解析自身配置、Ivy 文件或 Apache Maven 的 POM 文件…

改变住宅区空气质量,你一定要知道!

在现代城市生活中&#xff0c;住宅区的环境质量对居民的健康和舒适感起着至关重要的作用。扬尘颗粒和噪声不仅直接影响人们的日常生活&#xff0c;还可能对居民的健康和生活品质造成持续的影响。 在不断提升环保意识的同时&#xff0c;政府、社区和居民也将共同努力&#xff0c…

0基础入门代码审计-2 Fortify初探

0x01 序言 目前又加入一位新童鞋了&#xff0c;最近将会再加入cs相关的专栏&#xff0c;都是以基础为主&#xff0c;毕竟太复杂的东西&#xff0c;能看懂的人太少。 0x02 准备工具 1、Fortify 2、需要审计的源码 0x03 Fortify的简单使用 1、 1、在开始菜单栏中找到Audit Wo…

【Flutter】Flutter 使用 font_awesome_flutter 展示图标

【Flutter】Flutter 使用 font_awesome_flutter 展示图标 文章目录 一、前言二、安装和基本使用1. 安装2. 基本使用示例3. 图标的命名和样式 三、自定义图标和高级功能1.动态检索图标2.排除样式和优化 四、完整示例五、总结 一、前言 在现代移动应用开发中&#xff0c;图标起着…

Dockerfile制作LAMP环境镜像

文章目录 使用Dockerfile制作LAMP环境镜像编写Dockerfile不修改默认页面修改默认页面 Start Script目录结构及文件登录私有仓库给镜像打标签上传镜像页面检查检测镜像可用性 使用Dockerfile制作LAMP环境镜像 编写Dockerfile 不修改默认页面 FROM centos:7 MAINTAINER "…

怎么把cad文件转成图片?

怎么把cad文件转成图片&#xff1f;我知道有些朋友经常需要制作各种 CAD 图纸。通常情况下&#xff0c;这些图纸以 DWG 格式保存&#xff0c;只能使用专业的 CAD 软件来打开。但是&#xff0c;如果你想与他人共享这些 CAD 图纸&#xff0c;并且对方的计算机上没有安装 CAD 软件…

实验五 Linux 内核的安装与加载

【实验目的】 掌握 uboot 的使用方法&#xff0c;能够使用 uboot 安装和加载内核 【实验环境】 ubuntu 14.04 发行版FS4412 实验平台 【注意事项】 实验步骤中以“$”开头的命令表示在 ubuntu 环境下执行&#xff0c;以“#”开头的命令表 示在开发板下执行 【实验步骤】 …

cve-2023-3079漏洞与patch分析

POC function set(arr, key, val) {arr[key] val; } function leak_hole() {for(let i 0; i < 10; i) {set(arguments, "foo", 1);}set(new Array(), 0, 1);set(arguments, 0, 1);return arguments[1]; } %DebugPrint(leak_hole());分析 通过对此漏洞的patch分…

ASEMI新能源专用整流桥GBU816参数,GBU816封装

编辑-Z GBU816参数描述&#xff1a; 型号&#xff1a;GBU816 最大峰值反向电压(VRRM)&#xff1a;1600V 平均整流正向电流(IF)&#xff1a;8A 正向浪涌电流(IFSM)&#xff1a;200A 工作接点温度和储存温度(TJ, Tstg)&#xff1a;-55 to 150℃ 最大热阻(RθJC)&#xff1…

融云深度参与「新加坡 GTLC 大会」,连接亚太机遇、开拓国际市场

8 月 18 日&#xff0c;由 TGO 鲲鹏会主办的新加坡 GTLC&#xff08;Global Tech Leadership Conference&#xff0c;全球技术领导力大会&#xff09;圆满收官&#xff0c;融云作为共创伙伴深度参与了大会。关注【融云全球互联网通信云】了解更多 本次大会以“Connecting Asia…

RunnerGo性能测试时如何从数据库获取数据

我们在做性能测试或者场景测试时往往需要从数据库中获取一些真实的系统数据让我们配置的场景更加贴合实际。而RunnerGo也是在最近的大版本更新中推出连接数据库功能&#xff0c;本篇文章也给大家讲解一下具体的操作方法和实际应用场景。 配置数据库 首先进入RunnerGo页面&…

Java实现excel表数据的批量存储(结合easyexcel插件)

场景&#xff1a;加哥最近在做项目时&#xff0c;苦于系统自身并未提供数据批量导入的功能还不能自行添加上该功能&#xff0c;且自身不想手动一条一条将数据录入系统。随后&#xff0c;自己使用JDBC连接数据库、使用EasyExcel插件读取表格并将数据按照业务逻辑批量插入数据库完…

芯片行业入行小知识,快速学习!

进入芯片行业是一个充满挑战但又充满机会的领域。无论是作为工程师、设计师、销售人员还是管理者&#xff0c;以下是一些有关芯片行业入行的小知识。 1、什么是IC 集成电路的英文简称叫IC&#xff0c;IC即integrated circuit。如果有人和你说他做的是IT行业&#xff0c;那么你…