nc生成临时凭证配置

2024-05-11 23:52
文章标签 配置 生成 凭证 临时 nc

本文主要是介绍nc生成临时凭证配置,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

nc生成临时凭证配置

要实现的功能:

  • 审批时生成临时凭证
  • 弃审时删除临时凭证
  1. 前台配置
    在这里插入图片描述
    在这里插入图片描述
  2. 后台配置
  • BillReflectorServiceImpl.java
package nc.pubimpl.jych.qtsq.voucher;import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;import nc.impl.pubapp.pattern.data.bill.BillQuery;
import nc.impl.pubapp.pattern.data.bill.tool.BillConcurrentTool;
import nc.pubitf.fip.external.IBillReflectorService;
import nc.vo.fip.external.FipExtendAggVO;
import nc.vo.fip.service.FipRelationInfoVO;
import nc.vo.jych.qthtfksqd.AggQthtfksqdVO;
import nc.vo.pub.BusinessException;
import nc.vo.pubapp.pattern.log.TimeLog;public class BillReflectorServiceImpl implements IBillReflectorService{@Overridepublic Collection<FipExtendAggVO> queryBillByRelations(Collection<FipRelationInfoVO> collection) throws BusinessException {// TODO 自动生成的方法存根Map<String, FipRelationInfoVO> mapInfo = this.getMapRelationInfo(collection);String[] hids =mapInfo.keySet().toArray(new String[mapInfo.keySet().size()]);BillQuery<AggQthtfksqdVO> query =new BillQuery<AggQthtfksqdVO>(AggQthtfksqdVO.class);AggQthtfksqdVO[] bills = query.query(hids);// 加锁BillConcurrentTool tool = new BillConcurrentTool();TimeLog.logStart();tool.lockBill(bills);TimeLog.info("锁定表头、表体主健"); /*-=notranslate=-*/Collection<FipExtendAggVO> fipAggVO = this.createFipMsgVO(bills);return fipAggVO;}private Collection<FipExtendAggVO> createFipMsgVO(AggQthtfksqdVO[] vos) {Collection<FipExtendAggVO> msgvolist = new ArrayList<FipExtendAggVO>();for (AggQthtfksqdVO vo : vos) {// SaleInvoiceBVO[] items = vo.getChildrenVO();FipExtendAggVO msgvo = new FipExtendAggVO();// String cbillbid = items[0].getCsaleinvoicebid();msgvo.setBillVO(vo);msgvo.setRelationID(vo.getPrimaryKey());// FipRelationInfoVO infovo = mapInfo.get(cbillbid);// msgvo.setMessageinfo(infovo);msgvolist.add(msgvo);}return msgvolist;}private Map<String, FipRelationInfoVO> getMapRelationInfo(Collection<FipRelationInfoVO> relationvos) {Map<String, FipRelationInfoVO> map =new HashMap<String, FipRelationInfoVO>();for (FipRelationInfoVO vo : relationvos) {String id = vo.getRelationID();map.put(id, vo);}return map;}
}
  • 执行一条sql插入脚本
insert into fip_billregister (BILLDRAWCLASS, BILLREFLECTCLASS, BILLSUMCLASS, CLASS_ENTITY_ID, CTRLORGFINDCLASS, DEFDOC1, DEFDOC2, DEFDOC3, DEFQUERYCLASS, DESBILLSERVCLASS, DESBILLSUMCLASS, DESCTRLRULECLASS, DESSUMRULECLASS, DESSUMRULEENTITY, DESSUMRULEREF, DISPLAYCLASS, DR, DRAWQUERYCLASS, EDITCLASS, LINKQUERYCLASS, MODULECODE, ORG_CTRL_ENTITY1, ORG_CTRL_ENTITY2, ORG_ENTITY_ID, PK_BILLREGISTER, PK_BILLTYPE, PK_GROUP, PK_ORG, TS)
values (null, 'nc.pubimpl.zyzj.loanytlx.voucher.BillReflectorServiceImpl', null, '~', null, '990d709e-deeb-4e73-b526-ee0d173c7870', null, null, null, null, null, null, null, null, null, null, 0, null, null, null, 'zyzj', '~', '~', '~', '0000Z80000000zyzj003', 'H104', '~', '~', '2020-04-21 16:05:53');
--------------------------------------------------------------------------------------------------------------------------------
其中:
'nc.pubimpl.zyzj.loanytlx.voucher.BillReflectorServiceImpl'为新建的一个类
'990d709e-deeb-4e73-b526-ee0d173c7870'为该单据在md_class表中的id字段的值(md_class为该单据元数据的实体表)
'zyzj'为该单据的模块名
'0000Z80000000zyzj003'自行命名,不重复即可
'H104'为该单据的单据类型
  • GenQthtsqRule.java
package nc.bs.jych.qthtfksqd.ace.bp.rule;import nc.bs.framework.common.NCLocator;
import nc.impl.pubapp.pattern.rule.IRule;
import nc.pubitf.fip.service.IFipMessageService;
import nc.vo.fip.service.FipMessageVO;
import nc.vo.fip.service.FipRelationInfoVO;
import nc.vo.jych.qthtfksqd.AggQthtfksqdVO;
import nc.vo.jych.qthtfksqd.QthtfksqdVO;
import nc.vo.pub.BusinessException;
import nc.vo.pub.lang.UFDate;
import nc.vo.pub.lang.UFDouble;
import nc.vo.pubapp.AppContext;
import nc.vo.pubapp.pattern.exception.ExceptionUtils;
import nc.vo.wgbfb.tool.NullValueUtils;
/*** @author hanh*/
public class GenQthtsqRule implements IRule<AggQthtfksqdVO>{@Overridepublic void process(AggQthtfksqdVO[] aggvos) {// TODO 自动生成的方法存根for (int i = 0; i < aggvos.length; i++) {execute(aggvos[i]);}}private void execute(AggQthtfksqdVO aggvo) {if(aggvo.getParentVO().getBillstatus() != 1){return;}QthtfksqdVO headvo = null;// 传会计平台try {headvo = aggvo.getParentVO();//核定金额UFDouble nmny = headvo.getHdje();UFDate date = AppContext.getInstance().getBusiDate();FipRelationInfoVO infovo = new FipRelationInfoVO();// 组装VOinfovo.setPk_group(headvo.getPk_group());// 集团infovo.setPk_org(headvo.getPk_org());// 组织infovo.setPk_system("H9");// 系统类型infovo.setPk_billtype("QTSQ");// 单据类型或者交易类型infovo.setRelationID(headvo.getPrimaryKey());// 关联号-主键infovo.setPk_operator(headvo.getCreator());// 制单人infovo.setBusidate(date);// 业务日期infovo.setDefdoc1(null);// 自定义关联档案1infovo.setDefdoc2(null);// 自定义关联档案2infovo.setDefdoc3(null);// 自定义关联档案3infovo.setFreedef1(headvo.getVbillno());// 单据号infovo.setFreedef2(headvo.getZy());// 说明、摘要infovo.setFreedef3(NullValueUtils.getNullStringValue(nmny));// 金额infovo.setFreedef4(null);// 自定义项4infovo.setFreedef5(null);// 自定义项5// 消息VOFipMessageVO msgvo = new FipMessageVO();msgvo.setMessagetype(0);// 0是增加,1是删除msgvo.setBillVO(aggvo);msgvo.setMessageinfo(infovo);getService().sendMessage(msgvo);} catch (BusinessException e) {ExceptionUtils.wrappBusinessException("单据"+headvo.getVbillno()+"审核生成凭证出现异常:"+e.getMessage());}}private IFipMessageService service;private IFipMessageService getService(){if(service == null){service = NCLocator.getInstance().lookup(IFipMessageService.class);}return service;}
}
  • DeleteQthtsqRule.java
package nc.bs.jych.qthtfksqd.ace.bp.rule;import nc.bs.framework.common.NCLocator;
import nc.impl.pubapp.pattern.rule.IRule;
import nc.pubitf.fip.service.IFipMessageService;
import nc.vo.fip.service.FipMessageVO;
import nc.vo.fip.service.FipRelationInfoVO;
import nc.vo.jych.qthtfksqd.AggQthtfksqdVO;
import nc.vo.jych.qthtfksqd.QthtfksqdVO;
import nc.vo.pub.BusinessException;
import nc.vo.pub.lang.UFDouble;
import nc.vo.pubapp.AppContext;
import nc.vo.pubapp.pattern.exception.ExceptionUtils;
import nc.vo.wgbfb.tool.NullValueUtils;
/*** @author hanh*/
public class DeleteQthtsqRule implements IRule<AggQthtfksqdVO>{@Overridepublic void process(AggQthtfksqdVO[] aggvos) {// TODO 自动生成的方法存根for (int i = 0; i < aggvos.length; i++) {execute(aggvos[i]);}}private void execute(AggQthtfksqdVO aggvo) {QthtfksqdVO headvo = null;// 传会计平台try {headvo = aggvo.getParentVO();//核定金额UFDouble nmny = headvo.getHdje();FipRelationInfoVO infovo = new FipRelationInfoVO();// 组装VOinfovo.setPk_group(headvo.getPk_group());// 集团infovo.setPk_org(headvo.getPk_org());// 组织infovo.setPk_system("H9");// 系统类型infovo.setPk_billtype("QTSQ");// 单据类型或者交易类型infovo.setRelationID(headvo.getPrimaryKey());// 关联号-主键infovo.setPk_operator(headvo.getCreator());// 制单人infovo.setBusidate(AppContext.getInstance().getBusiDate());// 业务日期infovo.setDefdoc1(null);// 自定义关联档案1infovo.setDefdoc2(null);// 自定义关联档案2infovo.setDefdoc3(null);// 自定义关联档案3infovo.setFreedef1(headvo.getVbillno());// 单据号infovo.setFreedef2(null);// 说明、摘要infovo.setFreedef3(NullValueUtils.getNullStringValue(nmny));// 核定金额infovo.setFreedef4(null);// 自定义项4infovo.setFreedef5(null);// 自定义项5// 消息VOFipMessageVO msgvo = new FipMessageVO();msgvo.setMessagetype(1);// 0是增加,1是删除msgvo.setBillVO(aggvo);msgvo.setMessageinfo(infovo);getService().sendMessage(msgvo);} catch (BusinessException e) {ExceptionUtils.wrappBusinessException("单据"+headvo.getVbillno()+"弃审删除凭证出现异常:"+e.getMessage());}}private IFipMessageService service;private IFipMessageService getService(){if(service == null){service = NCLocator.getInstance().lookup(IFipMessageService.class);}return service;}
}
  • 往审批规则和弃审规则里面引入这两个类
  1. 前台配置
    在这里插入图片描述
    转换模板找实施配置
    在这里插入图片描述
    在这里插入图片描述

这篇关于nc生成临时凭证配置的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/981012

相关文章

最新版IDEA配置 Tomcat的详细过程

《最新版IDEA配置Tomcat的详细过程》本文介绍如何在IDEA中配置Tomcat服务器,并创建Web项目,首先检查Tomcat是否安装完成,然后在IDEA中创建Web项目并添加Web结构,接着,... 目录配置tomcat第一步,先给项目添加Web结构查看端口号配置tomcat    先检查自己的to

Servlet中配置和使用过滤器的步骤记录

《Servlet中配置和使用过滤器的步骤记录》:本文主要介绍在Servlet中配置和使用过滤器的方法,包括创建过滤器类、配置过滤器以及在Web应用中使用过滤器等步骤,文中通过代码介绍的非常详细,需... 目录创建过滤器类配置过滤器使用过滤器总结在Servlet中配置和使用过滤器主要包括创建过滤器类、配置过滤

在 VSCode 中配置 C++ 开发环境的详细教程

《在VSCode中配置C++开发环境的详细教程》本文详细介绍了如何在VisualStudioCode(VSCode)中配置C++开发环境,包括安装必要的工具、配置编译器、设置调试环境等步骤,通... 目录如何在 VSCode 中配置 C++ 开发环境:详细教程1. 什么是 VSCode?2. 安装 VSCo

详解Java中如何使用JFreeChart生成甘特图

《详解Java中如何使用JFreeChart生成甘特图》甘特图是一种流行的项目管理工具,用于显示项目的进度和任务分配,在Java开发中,JFreeChart是一个强大的开源图表库,能够生成各种类型的图... 目录引言一、JFreeChart简介二、准备工作三、创建甘特图1. 定义数据集2. 创建甘特图3.

在Spring中配置Quartz的三种方式

《在Spring中配置Quartz的三种方式》SpringQuartz是一个任务调度框架,它允许我们定期执行特定的任务,在Spring中,我们可以通过多种方式来配置Quartz,包括使用​​@Sche... 目录介绍使用 ​​@Scheduled​​ 注解XML 配置Java 配置1. 创建Quartz配置

Kibana的安装和配置全过程

《Kibana的安装和配置全过程》Kibana是一个开源的数据分析和可视化平台,它与Elasticsearch紧密集成,提供了一个直观的Web界面,使您可以快速地搜索、分析和可视化数据,在本文中,我们... 目录Kibana的安装和配置1.安装Java运行环境2.下载Kibana3.解压缩Kibana4.配

tomcat在nginx中的配置方式

《tomcat在nginx中的配置方式》文章介绍了如何在Linux系统上安装和配置Tomcat,并通过Nginx进行代理,首先,下载并解压Tomcat压缩包,然后启动Tomcat并查看日志,接着,配置... 目录一、下载安装tomcat二、启动tomcat三、配置nginx总结提示:文章写完后,目录可以自动

Zookeeper安装和配置说明

一、Zookeeper的搭建方式 Zookeeper安装方式有三种,单机模式和集群模式以及伪集群模式。 ■ 单机模式:Zookeeper只运行在一台服务器上,适合测试环境; ■ 伪集群模式:就是在一台物理机上运行多个Zookeeper 实例; ■ 集群模式:Zookeeper运行于一个集群上,适合生产环境,这个计算机集群被称为一个“集合体”(ensemble) Zookeeper通过复制来实现

CentOS7安装配置mysql5.7 tar免安装版

一、CentOS7.4系统自带mariadb # 查看系统自带的Mariadb[root@localhost~]# rpm -qa|grep mariadbmariadb-libs-5.5.44-2.el7.centos.x86_64# 卸载系统自带的Mariadb[root@localhost ~]# rpm -e --nodeps mariadb-libs-5.5.44-2.el7

hadoop开启回收站配置

开启回收站功能,可以将删除的文件在不超时的情况下,恢复原数据,起到防止误删除、备份等作用。 开启回收站功能参数说明 (1)默认值fs.trash.interval = 0,0表示禁用回收站;其他值表示设置文件的存活时间。 (2)默认值fs.trash.checkpoint.interval = 0,检查回收站的间隔时间。如果该值为0,则该值设置和fs.trash.interval的参数值相等。