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

相关文章

SpringBoot线程池配置使用示例详解

《SpringBoot线程池配置使用示例详解》SpringBoot集成@Async注解,支持线程池参数配置(核心数、队列容量、拒绝策略等)及生命周期管理,结合监控与任务装饰器,提升异步处理效率与系统... 目录一、核心特性二、添加依赖三、参数详解四、配置线程池五、应用实践代码说明拒绝策略(Rejected

SQL Server配置管理器无法打开的四种解决方法

《SQLServer配置管理器无法打开的四种解决方法》本文总结了SQLServer配置管理器无法打开的四种解决方法,文中通过图文示例介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录方法一:桌面图标进入方法二:运行窗口进入检查版本号对照表php方法三:查找文件路径方法四:检查 S

Linux中SSH服务配置的全面指南

《Linux中SSH服务配置的全面指南》作为网络安全工程师,SSH(SecureShell)服务的安全配置是我们日常工作中不可忽视的重要环节,本文将从基础配置到高级安全加固,全面解析SSH服务的各项参... 目录概述基础配置详解端口与监听设置主机密钥配置认证机制强化禁用密码认证禁止root直接登录实现双因素

嵌入式数据库SQLite 3配置使用讲解

《嵌入式数据库SQLite3配置使用讲解》本文强调嵌入式项目中SQLite3数据库的重要性,因其零配置、轻量级、跨平台及事务处理特性,可保障数据溯源与责任明确,详细讲解安装配置、基础语法及SQLit... 目录0、惨痛教训1、SQLite3环境配置(1)、下载安装SQLite库(2)、解压下载的文件(3)、

Linux如何快速检查服务器的硬件配置和性能指标

《Linux如何快速检查服务器的硬件配置和性能指标》在运维和开发工作中,我们经常需要快速检查Linux服务器的硬件配置和性能指标,本文将以CentOS为例,介绍如何通过命令行快速获取这些关键信息,... 目录引言一、查询CPU核心数编程(几C?)1. 使用 nproc(最简单)2. 使用 lscpu(详细信

Nginx 重写与重定向配置方法

《Nginx重写与重定向配置方法》Nginx重写与重定向区别:重写修改路径(客户端无感知),重定向跳转新URL(客户端感知),try_files检查文件/目录存在性,return301直接返回永久重... 目录一.try_files指令二.return指令三.rewrite指令区分重写与重定向重写: 请求

Nginx 配置跨域的实现及常见问题解决

《Nginx配置跨域的实现及常见问题解决》本文主要介绍了Nginx配置跨域的实现及常见问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来... 目录1. 跨域1.1 同源策略1.2 跨域资源共享(CORS)2. Nginx 配置跨域的场景2.1

gitlab安装及邮箱配置和常用使用方式

《gitlab安装及邮箱配置和常用使用方式》:本文主要介绍gitlab安装及邮箱配置和常用使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1.安装GitLab2.配置GitLab邮件服务3.GitLab的账号注册邮箱验证及其分组4.gitlab分支和标签的

MySQL MCP 服务器安装配置最佳实践

《MySQLMCP服务器安装配置最佳实践》本文介绍MySQLMCP服务器的安装配置方法,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下... 目录mysql MCP 服务器安装配置指南简介功能特点安装方法数据库配置使用MCP Inspector进行调试开发指

Redis Cluster模式配置

《RedisCluster模式配置》:本文主要介绍RedisCluster模式配置,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录分片 一、分片的本质与核心价值二、分片实现方案对比 ‌三、分片算法详解1. ‌范围分片(顺序分片)‌2. ‌哈希分片3. ‌虚