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.mzph.cn/news/835726.shtml

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

相关文章

如何批量将十六进制数据转成bin文件

最近在做新项目遇到一个问题&#xff0c;我们要通过上位机把一堆数据通过串口发送给下位机存储&#xff0c;而上位机需要Bin文件。 解决办法&#xff1a; 1)创建一个记事本文件&#xff0c;然后将其后缀修改成.bin 2)然后打开notepad,新建一个文件&#xff0c;随便写下数据 我…

搭建私有仓库Nexus的流程以及npm包的开发和发布

搭建私有仓库 Nexus 的流程&#xff08;Ubuntu&#xff09;以及 npm 包的开发和发布 本文档是关于在 Ubuntu 上面搭建 Nexus&#xff0c;以及制作 npm 包并发布到 Nexus 的流程说明。 关于 Ubuntu Ubuntu 是一个基于 Linux 的操作系统&#xff0c;通常会用在服务器或者嵌入式…

Django简介

Django 1.安装Django pip install djangopython的包的分布 \python- python.exe- Scripts- pip.exe- django-admin.exe [工具&#xff0c;创建django项目]- Lib- 内置模块- site-packages [安装的包]- pymysql- flask- django [框架的源码]2.创建项目 Django项目会有…

java spring 10 Bean的销毁过程 上 在docreatebean中登记要销毁的bean

1.Bean销毁是发送在Spring容器关闭过程中的 AnnotationConfigApplicationContext context new AnnotationConfigApplicationContext(AppConfig.class);UserService userService (UserService) context.getBean("userService");userService.test();// 容器关闭cont…

【1】STM32·FreeRTOS·新建工程模板【一步到位】

目录 一、获取FreeRTOS源码 二、FreeRTOS源码简介 2.1、FreeRTOS源码文件内容 2.2、FreeRTOS内核 2.3、Source文件夹 2.4、portable文件夹 三、FreeRTOS手把手移植 3.1、FreeRTOS移植准备 3.2、FreeRTOS移植步骤 3.2.1、将 FreeRTOS 源码添加至基础工程、头文件路径等…

基于Matplotlib的模型性能可视化工作

一、项目简介 本项目是科技考古墓葬识别工作的中间过程&#xff0c;因为需要大量复用所以另起一章好了。 主要涉及到数据读取、数据可视化和少量的数据处理过程。 二、相关知识 PandasMatplotlib 三、实验过程 1. 数据探索性分析 1.1 准备工作–导入模块 import pandas…

用python写个控制MicroSIP自动拨号和定时呼叫功能(可用在小型酒店叫醒服务)MicroSIP定时拨号

首先直接上结果吧&#xff0c;MicroSIP 助手&#xff0c;控制MicroSIP自动拨号&#xff0c;定时呼叫的非常实用小工具&#xff01; 在使用MicroSIP 助手之前&#xff0c;我们需要了解MicroSIP是什么&#xff0c;MicroSIP是一个SIP拨号软件&#xff0c;支持注册任意SIP平台实现拨…

【xxl-job | 第三篇】SpringBoot整合xxl-job

文章目录 3.SpringBoot整合xxl-job3.1定时任务服务配置3.1.1导入maven依赖3.1.2yml配置3.1.3XxlJobConfig配置类3.1.4定时任务类 3.2xxl-job配置3.2.1新增执行器3.2.2新增任务3.2.3执行任务3.2.4查看日志3.2.5查看任务后台日志 3.3小结 3.SpringBoot整合xxl-job 3.1定时任务服…

AppBuilder低代码体验:构建雅思大作文组件

AppBuilder低代码体验&#xff1a;构建雅思大作文组件 ​ 在4月14日&#xff0c;AppBuilder赢来了一次大更新&#xff0c;具体更新内容见&#xff1a;AppBuilder 2024.04.14发版上线公告 。本次更新最大的亮点就是**新增了工作流&#xff0c;低代码制作组件。**具体包括&#x…

聚合工程搭建、工程依赖导入

上一章讲了自动化云测平台的一些环境的准备 如果还未完成云服务器的环境搭建和本地环境的搭建&#xff0c;请点击左侧 -> 传送门 那么正式开始这一章的内容 聚合工程搭建 创建项目 我们先给项目命个名&#xff1a;xxx-meter&#xff0c;构建系统&#xff0c;我们选择M…

前端开发指导

前端开发指导 本文介绍了配置前端开发环境需要的软件、配置项等,指导如何开始进行UDM部门前端开发的全流程。本文以Windows系统下在Microsoft Virtual Studio Code中开发为基础。 一、综述 目标:零基础或者新员工依照此文档,能够完成开发环境的搭建及熟悉测试环境的搭建。…

代码审计平台sonarqube的安装及使用

docker搭建代码审计平台sonarqube 一、代码审计关注的质量指标二、静态分析技术分类三、使用sonarqube的目的四、sonarqube流程五、docker快速搭建sonarqube六、sonarqube scanner的安装和使用七、sonarqube对maven项目进行分析八、sonarqube分析报告解析九、代码扫描规则定制十…

【数据分析】 JupyterNotebook安装及使用简介

各位大佬好 &#xff0c;这里是阿川的博客 &#xff0c; 祝您变得更强 个人主页&#xff1a;在线OJ的阿川 大佬的支持和鼓励&#xff0c;将是我成长路上最大的动力 阿川水平有限&#xff0c;如有错误&#xff0c;欢迎大佬指正 在数据分析中&#xff0c;一般用Pycharm编辑代…

codeforces round 149 div2(a,b,c,d)

手速场&#xff0c;可惜我傻逼卡 c c c了 题目链接 A #include<bits/stdc.h>using namespace std;#define int long long #define PII pair<int,int>void solve() {int n,k;cin>>n>>k;if(n<k){cout<<1<<\n;cout<<n<<\n;}…

VSCode:设置顶部文件标签页滚动条的宽度

使用VSCode打开多个文件后&#xff0c;顶部的文件标签可以通过滚动条进行滚动&#xff0c;但是缺点是该滚动条太窄了&#xff0c;不好选择。 可以通过如下方法修改改滚动条的宽度&#xff1a; 1.点击设置 2.选择工作台->编辑管理->Title Scrollbar Sizing->Large 3.可…

书生浦语训练营第四次课作业

基础作业 环境配置 拷贝internlm开发机内的环境 studio-conda xtuner0.1.17# 激活环境 conda activate xtuner0.1.17 # 进入家目录 &#xff08;~的意思是 “当前用户的home路径”&#xff09; cd ~ # 创建版本文件夹并进入&#xff0c;以跟随本教程 mkdir -p /root/xtuner0…

专项技能训练五《云计算网络技术与应用》实训8-1:建立基于OpenvSwitch的GRE隧道

文章目录 建立基于OpenvSwitch的GRE隧道1. 使用VMware安装2个CentOS 7虚拟机&#xff0c;安装时记得都开启CPU虚拟化&#xff0c;第一台命名为“Docker”&#xff0c;第二台命名为“KVM”。2. 安装完虚拟机后&#xff0c;进入虚拟机&#xff0c;修改网络配置&#xff08;onboot…

进程间通信(二)

共享内存 当进程A和进程B有一块共享的内存空间时&#xff0c;这两个进程之间的数据交互就会变的很简单&#xff0c;只需要像读取自己内存空间中的元素一样去读取数据即可。实现共享内存进行数据交互的一般步骤&#xff1a; 创建/打开共享内存内存映射数据交换断开与共享内存的…

任务:单域,域树的搭建

一、单域&#xff1a; 搭建所需的系统&#xff1a;win2016 sever&#xff0c;win10 1.在创建域前&#xff0c;先设置静态ip 先查看win2016 sever的IP&#xff0c; ip&#xff1a;192.168.154.133 网关&#xff1a;192.168.154.2 DNS服务器&#xff1a;192.168.154.2 设置…

【nodejs 命令行交互神器 - inquirer.js】

需求 大家在开发时&#xff0c;有时需要从命令行读取用户的输入&#xff0c;或者让用户选择。在nodejs中&#xff0c;这个怎么实现? 原生实现 ❌ process.stdin.setEncoding(utf8);process.stdin.on(readable, () > {let chunk;// 使用循环确保我们读取所有的可用输入wh…