From cbcb59102ab710a394c676df009a7b5fa79b714d Mon Sep 17 00:00:00 2001 From: xiaobin Date: Tue, 27 Feb 2024 14:43:52 +0800 Subject: [PATCH] .stackedit-trash/README.md updated --- .stackedit-trash/README.md | 40 ++++++++++++++++++++++++++++++++------ 1 file changed, 34 insertions(+), 6 deletions(-) diff --git a/.stackedit-trash/README.md b/.stackedit-trash/README.md index 5968a33..1869c9c 100644 --- a/.stackedit-trash/README.md +++ b/.stackedit-trash/README.md @@ -40,14 +40,42 @@ 5. 否则:部分开票 6. 当ERP系统里面发票结案状态为"强结案",同步到CRM系统时需要将强结案的发票红冲状态修改为"作废",将目前系统里面发票核销状态显示"已核销"逻辑去除并按原始核销状态的取值逻辑取值; -**四、收款分析** +**四、收款与核销分析** 收款业务主要有收款单核销与收款单确认主要用于关联发票与收款单进行核销操作。 +#### 算法 +涉及算法的位置:点击核销,打开核销详情页面,匹配发票数,筛选相同开票单位且和当前选中的发票未核销金额相等的发票(最多支持同时匹配3条)。 +注:x=当前发票未核销金额;a=匹配发票未核销金额;b=匹配发票未核销金额;c=匹配发票未核销金额;size=数组长度;i=数组当前下标;minSize=数组最小下标;maxSize=数组最大下标;arr=数组 + +1. 匹配数1条 + +a=x + +1. 匹配数2条 + +a+b=x + +1. 匹配数3条 + +a+b+c=x +该算法的关键在于去除重复匹配的数据,减少循环层数,提高查询效率。 +算法核心:固定i,同时前后移动数组进行比较(这里只说明三条匹配的算法,两条是一样的原理) + +1. 当minSize=0且maxSize=0时,minSize=i+1;maxSize=size+1(同时从数组前后进行比比较) +2. 当minSize>=size时,i+1且跳出循环(此时说明当次比较已经完成,跳出循环进行下次比较) +3. 当minSize>=maxSize时,使maxSize=0,maxSize=0,i+1且跳出循环(此时也说明当次比较完成,跳出循环,将下标进行初始化,当前下标+1进行下一次比较) +4. 当a+b+c=x时,使maxSize=0,maxSize=0,i+1且跳出循环,并将arr[i],arr[minSize],arr[maxSize]放入结果中(此时说明满足条件,将结果放入满足条件的集合中,跳出循环进行下一次比较) + +5. 当a+b+c>x时,minSize,i保持不变,maxSize-1,继续进行比较 +6. 当a+b+c \ No newline at end of file