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. 前台配置
    在这里插入图片描述
    转换模板找实施配置
    在这里插入图片描述
    在这里插入图片描述

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

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

相关文章

LeetCode 106.从中序与后序遍历序列构造二叉树

LeetCode 106.从中序与后序遍历序列构造二叉树 1、题目 题目链接&#xff1a;106. 从中序与后序遍历序列构造二叉树 给定两个整数数组 inorder 和 postorder &#xff0c;其中 inorder 是二叉树的中序遍历&#xff0c; postorder 是同一棵树的后序遍历&#xff0c;请你构造并…

Scala编程入门:从零开始的完整教程

目录 引言环境准备创建第一个Scala项目基本语法高阶概念进阶资源结语 引言 Scala是一种强大的、静态类型的、多范式编程语言&#xff0c;它结合了面向对象和函数式编程的特点。本教程将指导您如何从零开始学习Scala&#xff0c;并搭建一个简单的开发环境。让我们开始探索Scala…

搭建一个Xx431?

搭建一个Xx431? 嘿uu们!刚结束了一周六天班感觉如何? 我的状态倒还行,工作生活总能找到乐子,本周整活就是用纸巾和蛋糕托做的油灯,另外想制冷片做个温水冷水可调的杯托,但我还不会搞3d,希望今年能搞起来. 题外话就说到这,这个选题也是因为实际遇到的问题需要这玩意,下班路…

配置Docker对象与管理守护进程

前言&#xff1a;本博客仅作记录学习使用&#xff0c;部分图片出自网络&#xff0c;如有侵犯您的权益&#xff0c;请联系删除 本章节的快速目录导航&#xff1a; 一、配置Docker对象 1.1、Docker对象的标记 1.2、格式化命令和日志的输出 二、示例&#xff1a; 2.1、管理…

【Ubuntu 安装erlang】

apt-get 安装 apt-get install erlang或 源码安装 git clone https://github.com/erlang/otp.git cd otp git checkout maint-25 # current latest stable version ./configure make make install安装完后&#xff0c;验证是否成功 # 命令行输入 erl

分布式事务?哪几种方式实现?一文看懂!

什么是分布式事务 分布式事务是指在分布式系统中涉及到多个数据库或多个应用程序之间的事务处理&#xff0c;这些数据库或应用程序可能分布在不同的物理节点上&#xff0c;甚至可能位于不同的地理位置。在分布式事务中&#xff0c;需要确保所有参与者的事务操作都能够保持一致性…

分布式链路追踪 Zipkin+Sleuth(8)

项目的源码地址 Spring Cloud Alibaba 工程搭建&#xff08;1&#xff09; Spring Cloud Alibaba 工程搭建连接数据库&#xff08;2&#xff09; Spring Cloud Alibaba 集成 nacos 以及整合 Ribbon 与 Feign 实现负载调用&#xff08;3&#xff09; Spring Cloud Alibaba Ribbo…

【姿态解算与滤波算法】

姿态解算 一、主线 姿态表示方式&#xff1a;矩阵表示&#xff0c;轴角表示&#xff0c;欧拉角表示&#xff0c;四元数表示。 惯性测量单元IMU&#xff08;Inertial Measurement Unit&#xff09;&#xff1a;MPU6050芯片&#xff0c;包含陀螺仪和加速度计&#xff0c;分别测…

表面的相似,本质的不同

韩信与韩王信&#xff0c;两个韩信的结局都是被刘邦所杀&#xff0c;似乎结局类似。但是&#xff0c;略加分析&#xff0c;就会发现其中存在本质的区别。 韩信属于必杀。他的王位是要来的&#xff0c;有居功自傲的本意&#xff0c;功高震主而且毫不避讳。而且年轻&#xff0c;…

代码随想录算法训练营第二十五天 | 669. 修剪二叉搜索树、108.将有序数组转换为二叉搜索树、538.把二叉搜索树转换为累加树

669. 修剪二叉搜索树 题目链接/文章讲解&#xff1a; 代码随想录 视频讲解&#xff1a; 你修剪的方式不对&#xff0c;我来给你纠正一下&#xff01;| LeetCode&#xff1a;669. 修剪二叉搜索树_哔哩哔哩_bilibili 解题思路 在上一题的删除二叉树节点中&#xff0c;我们通过在…

2016-2021年全国范围的2.5m分辨率的建筑屋顶数据

一、论文介绍 摘要&#xff1a;大规模且多年的建筑屋顶面积&#xff08;BRA&#xff09;地图对于解决政策决策和可持续发展至关重要。此外&#xff0c;作为人类活动的细粒度指标&#xff0c;BRA可以为城市规划和能源模型提供帮助&#xff0c;为人类福祉带来好处。然而&#xf…

【数组算法】598. 区间加法

给你一个 m x n 的矩阵 M 和一个操作数组 op 。矩阵初始化时所有的单元格都为 0 。ops[i] [ai, bi] 意味着当所有的 0 < x < ai 和 0 < y < bi 时&#xff0c; M[x][y] 应该加 1。 在 执行完所有操作后 &#xff0c;计算并返回 矩阵中最大整数的个数 。 示例 1: …

C语言的打字小游戏

目录 游戏内容 伪代码 main 函数 随机字符串 匹配逻辑 用户决定是否继续或退出游戏 完整代码 从0开始记录我的学习历程&#xff0c;我会尽我所能&#xff0c;写出最最大白话的文章&#xff0c;希望能够帮到你&#xff0c;谢谢。 提示&#xff1a;文章作者为初学者&#xf…

【算法】动态规划之背包DP问题(2024.5.11)

前言&#xff1a; 本系列是学习了董晓老师所讲的知识点做的笔记 董晓算法的个人空间-董晓算法个人主页-哔哩哔哩视频 (bilibili.com) 动态规划系列 【算法】动态规划之线性DP问题-CSDN博客 01背包 步骤&#xff1a; 分析容量j与w[i]的关系&#xff0c;然后分析是否要放…

解决“电脑开机黑屏Explorer进程卡死“问题

今天&#xff0c;给台式机按电源键&#xff0c;进入windows系统时&#xff0c;发现电脑黑屏了&#xff0c;昨天还好好的&#xff0c;怎么今天电脑桌面进不去了&#xff1f;想起Windows XP、Windows 7、Windows 10 、Windows 11等系统&#xff0c;在使用多个文件拷贝时&#xff…

IDEA创建springboot项目时不能选择java 8或者java 11等等版本的问题,解决方案

文章目录 1. Project JDK 和 Java 的区别2. 没有 java 8 或 java 11 等版本2.1 方案一2.2 方案二2.3 方案三 1. Project JDK 和 Java 的区别 我们在利用 idea 创建 spring boot 项目时&#xff0c;会有以上两个选项&#xff0c;这两个选项有什么区别&#xff1f; 答&#xff…

3分钟掌握Suno API!音痴也能创作热门曲!免费拥有个人爆款音乐!

Suno API 的申请及使用 随着 AI 的应用变广&#xff0c;各类 AI 程序已逐渐普及。AI 已逐渐深入到人们的工作生活方方面面。而 AI 涉及的行业也越来越多&#xff0c;从最初的写作&#xff0c;到医疗教育&#xff0c;再到现在的音乐。 Suno 是一个专业高质量的 AI 歌曲和音乐创…

示例十一、声音传感器

通过以下几个示例来具体展开学习,了解声音传感器原理及特性&#xff0c;学习声音传感器的应用&#xff08;干货版&#xff09;&#xff1a; 示例十一、声音传感器 ino文件源码&#xff1a; //Arduino C demo void setup() {Serial.begin(9600);pinMode(5, OUTPUT); }void loo…

C++相关概念和易错语法(11)(npos、string的基本使用)

本文主要是分享一些基础的用法和接口&#xff0c;不会涉及迭代器版本&#xff0c;也没有底层概念&#xff0c;主要是保证简单入门和使用。 1.npos string本质上是一个类&#xff0c;里面包含了上百个成员函数&#xff0c;在调用这个头文件后&#xff0c;我们要知道整个类都被…

在 Navicat 17 中探索表配置文件

距离 Navicat 17&#xff08;英文版&#xff09;的发布还有不到一周的时间&#xff0c;现在是深入研究新的表配置文件功能的最佳时机。它允许我们保存经常用于表的筛选、排序和列显示的不同组合。所以&#xff0c;事不宜迟&#xff0c;让我们开始吧&#xff01; 创建表配置文件…