哇哈哈哈。。。。。解决了票据号不重号不跳号的难题

software_artisan 2014-11-14 12:00:02
这个问题的难点主要是多任务机制下,在很短的时间段内多个客户端请求了流水号,但因某种原因其中某个客户端又放弃该号码的情况下会出现跳号现象。例如:
A:SN00001
B:SN00002
C:SN00003
结果B并没有使用SN00002这个号,又重新获取了新的流水号:SN00004。那么流水号SN00002就被跳过了,在比较严格的单据号管理体系中,这种情况是不被允许的。

这个问题曾经困扰过很多客户,现在本人接手,使用存储过程很简单就完成了,念头果然通达!
...全文
545 13 打赏 收藏 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
fcqm8888 2015-04-05
  • 打赏
  • 举报
回复
解决了就好,你很棒!
Tiger_Zhao 2014-11-19
  • 打赏
  • 举报
回复
主表用自增ID做主键,子表的外键就和票据号没关系。
插入时票据号为空,打印时分配,更新一下票据号。
谁规定打印时不能做UPDATE的?
software_artisan 2014-11-19
  • 打赏
  • 举报
回复
呃,我们的业务流程是打印票据时才分配票据号,因为一旦票据号生成后,就不能删除业务记录,只能作废。但这个时候其实只有系统中有数据,是可以删除掉的,所以我们也允许用户删除仅仅只是新建的业务(到下一步就只能作废了)。所以没法在保存业务数据的时候生成流水号。。。。。 对sql了解不深,也就会增删改查。。。。我不太明白怎么用存储过程保存一笔有3级子表的业务数据?明细数据用xml传参?
Tiger_Zhao 2014-11-18
  • 打赏
  • 举报
回复
不觉得用存储过程其实更方便吗?
客户端根本不需要预先生成流水号,调用存储过程保存,由存储过程来生成流水号即可。
总之原则是流水号只在真正插入时生成,就不会有断号的问题了。
software_artisan 2014-11-18
  • 打赏
  • 举报
回复
嗯,是一个比较方便的实现思路。但使用触发器的话,可维护性比较差。每种业务都需要在相应的表里面加上触发器,这对于不了解系统由来的人来说,很难维护。我用存储过程主要是为了插入流水记录并绑定业务ID,仅仅生成票据号的话,标量值函数使用更加方便。
Tiger_Zhao 2014-11-18
  • 打赏
  • 举报
回复
和业务没关系。
既然你原先就可以按规则生成流水号,现在又没有更改生成规则。
只是把调用生成方法的时点更改了一下,从预先生成流水号变成插入触发器时生成,仅此而已。
software_artisan 2014-11-17
  • 打赏
  • 举报
回复
不一定是最好的,就目前来说,我觉得是最简单有效的。
software_artisan 2014-11-17
  • 打赏
  • 举报
回复
没这么简单呀,不同的业务使用一套独立的流水号不用说,相同的业务不同的类型也要独立的流水号。有的业务一年重置一次,有的一个月重置一次。这要求流水号需要按规则生成,不是简单分一个就行了。
Tiger_Zhao 2014-11-17
  • 打赏
  • 举报
回复
哪用得着这么复杂(空间上),先申请临时的流水号(比如T000001、T000002、T000003)保证各客户端号码唯一。
用INSERT触发器将临时流水号更改为正式流水号,这样只有正式递交的记录才会分配正式流水号,就不会有正式流水号被丢弃。
不知道你的业务号是否唯一,如果唯一可以直接当作临时流水号用。
cnmhx 2014-11-16
  • 打赏
  • 举报
回复
这个,这个,肯定是最好的解决办法吗?
software_artisan 2014-11-15
  • 打赏
  • 举报
回复
引用 2 楼 Smile_Tiger 的回复:
能说说你的思路吗
思路其实很简单,就是申请流水码的时候传入业务号作为参数,这样生成的流水码就可以和业务号绑定了。如果流水码生成成功,但使用失败,那么下次申请时就可以不再生成新的流水码,而是找回已经生成且和该业务号绑定的流水码,这样就不会产生跳号现象了。 当然这个解决方案必须记录每一个已生成的流水码,则会让流水码记录表无限地增长。我的解决办法很粗暴,就是每月删除一次半年以前的记录,这样,记录数量可以保持在一个不会影响性能的水平之下。
Smile_Tiger 2014-11-15
  • 打赏
  • 举报
回复
能说说你的思路吗
欢乐的小猪 2014-11-14
  • 打赏
  • 举报
回复
恭喜
源码直接下载地址: https://pan.quark.cn/s/0c43ed5159df 本资源为HCDA认证培训教程,旨在面向准备参加HCDA考试的学员,或希望掌握TCP/IP基础、路由、交换技术、广域网、以太网技术基本原理以及华为通用路由平台VRP上实现的相关内容。具体涵盖的模块包括:Module 1-网络互联基础、Module 2-路由和路由协议基础与实现、Module 3-以太网交换技术基础与实现、Module 4-广域网技术基本原理与实现、Module 5-网络安全基础、Module 6-华为数通产品概述 ### 华为-NAT技术详解 #### 一、概述 NAT(Network Address Translation,网络地址转换)是一种在专用网络内部使用私有IP地址的情况下,使这些设备能够通过公有IP地址进行外部通信的技术手段。NAT技术在多种网络环境中得到广泛应用,特别是在企业网络中发挥着关键性作用。作为HCDA认证培训教程的一部分,本文档将系统性地阐述NAT的基础理论及其实现方法,并深入探讨在华为VRP平台上的具体应用场景。 #### 二、NAT处理流程 NAT处理流程主要包含两种类型:基于源IP地址和基于目的IP地址的处理模式。 ##### 1. 基于源IP地址的NAT处理 **1.1 一对一NO-PAT** 一对一NO-PAT即非端口地址转换(No-Port Address Translation),在这种模式下,一个私有IP地址对应一个公有IP地址,不涉及端口号的转换。当配置了NAT no-pat时,华为设备会为已配置的多通道协议产生的实际流量数据建立server-map表项。这种方式适用于需要固定公网IP的服务器等场景。 **1.2 多对一...
内容概要:本文基于Simulink仿真平台,复现并深入研究了一篇关于全桥LLC谐振变换器的学术论文,重点聚焦于变频控制与移相控制相结合的协同策略,旨在优化变换器在不同工作模式切换过程中的动态响应特性。通过构建高精度的全桥LLC变换器仿真模型,系统分析了传统单一控制方式下模式切换易引发的电压电流冲击问题,进而提出一种融合频率调节与移相角调节的复合控制方法。该方法通过精确协调两个控制自由度,有效平抑了切换瞬态的电气应力,显著提升了系统的运行平稳性、效率及整体稳定性。文中详尽阐述了协同控制的逻辑架构、关键参数的设计与整定原则,并通过严谨的仿真对比实验,验证了所提策略在改善模式切换平滑性方面的优越性能。; 适合人群:具备扎实的电力电子与电力传动理论基础,熟练掌握Simulink/MATLAB仿真工具,正在从事高频软开关变换器、DC-DC电源变换、新能源并网逆变器等相关领域研究的硕士、博士研究生及科研技术人员。; 使用场景及目标:①深入理解全桥LLC谐振变换器的工作原理、谐振特性及其多模式运行机制;②掌握变频与移相结合的混合控制策略的设计思想与实现方法;③将其应用于高效率、高可靠性电源系统的动态性能优化,为解决实际工程中电源启停、负载突变等工况下的稳定性问题提供理论依据和技术方案。; 阅读建议:建议读者结合所提供的Simulink模型文件进行同步操作与学习,重点关注控制器模块的搭建细节、控制逻辑的实现方式以及各关键参数的调节过程。应主动对比单一变频、单一移相与协同控制三种策略下的仿真波形,从电压、电流的瞬态响应中直观感受协同控制的优势,从而深化对先进控制理论在电力电子系统中应用价值的理解。
代码转载自:https://pan.quark.cn/s/b9146ae38508 《Linux From Scratch》(LFS)是一部详尽阐述如何从源代码开始构建Linux系统的指南性著作。书中包含了完整的流程和说明,指导读者逐步构建个性化的Linux系统。这本书不仅适合那些希望探究Linux操作系统内部运作机制的用户,同时也适合那些希望构建专业级、高度定制化系统的进阶用户。LFS的中文版本将这一过程用中文详细描述,使中文用户能够毫无障碍地遵循书中的步骤来定制Linux系统。本书的翻译工作由多位译者分别承担,他们分别是金步国、ipconfigme和bobkey,各自负责不同章节的翻译任务。本书的结构分为若干部分,各部分内容如下: 第一部分主要阐述了如何构建LFS系统。在这一部分中,首先解释了LFS的定义以及构建LFS系统的必要性。接着,列出了构建LFS系统的目标读者群体、先决条件、对宿主系统的要求,并说明了排版约定和本书的组织结构。此外,还提供了版本更新记录,帮助读者了解不同版本之间的差异。 在“准备一个新分区”章节中,讲解了如何在计算机上创建新分区并在该分区上建立文件系统,为安装LFS系统进行准备。 在“软件包和补丁”章节,LFS列出了所有需要下载的软件包和补丁,并介绍了它们的用途。 在“最后的准备工作”章节,书中指导读者设置环境变量$LFS,创建$LFS/tools目录,添加LFS用户,并设定工作环境。 紧随其后,在“构建临时编译环境”章节中,详细介绍了如何创建一个临时编译环境,这个环境是编译和安装最终的LFS系统所必需的工具链。这一部分包括了如何编译安装Binutils、GCC、Linux内核头文件、Glibc,以及调整工具链等步骤。 本书详细说...
IEEE基于高频信号注入法的PMSM零低速无位置控制永磁同步电机仿真,有参考文献内容概要:本文主要介绍了一种基于高频信号注入法的永磁同步电机(PMSM)在零低速条件下的无位置传感器控制技术,重点研究了通过高频信号注入实现转子初始位置辨识和零低速运行时的精确控制。该方法利用电机交直轴高频阻抗的差异特性,通过注入高频电压信号并检测响应电流,构建转子位置观测器,从而实现对转子位置与速度的准确估计。文中详细阐述了脉振高频电压注入法的原理、观测器设计方法及其收敛性分析,并结合Simulink仿真平台验证了所提控制策略的有效性和鲁棒性。此外,文档还列举了大量相关研究主题,涵盖电机控制、新能源系统优化、智能算法应用等多个领域,体现出该技术在现代电力电子与电机控制系统中的广泛适用性。; 适合人群:具备一定电机控制与电力电子基础知识,从事自动化、电气工程及相关领域研究的研发人员与高校研究生。; 使用场景及目标:①应用于永磁同步电机驱动系统中,解决低速及零速时因反电动势微弱而导致的传统观测器失效问题;②为无位置传感器控制策略的科研仿真与工程实现提供技术参考与代码支持;③结合Matlab/Simulink进行教学演示与算法验证,促进理论与实践结合。; 阅读建议:此资源以仿真为核心,建议读者结合提供的Simulink模型与Matlab代码进行实操演练,重点关注高频信号注入参数设计、观测器结构搭建与系统稳定性分析,同时可参照文中列出的相关研究方向拓展学习深度。

33,026

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧