|
@@ -97,79 +97,89 @@ public class OverheadLineService {
|
|
|
// 根据totalFee进行分摊,分摊至最后剩下的 找一个最低层级wbs扣减,并逐层扣减上级wbs
|
|
|
String lastShareWbs = null;
|
|
|
for (JkxlDetailFee jkxlDetailFee : list) {
|
|
|
+ Double totalFee = jkxlDetailFee.getTotalFee();
|
|
|
//建筑费和
|
|
|
if (jkxlDetailFee.getWbsCode().equals("21000000")) {
|
|
|
- jz1 = jkxlDetailFee.getTotalFee()!=null? jkxlDetailFee.getTotalFee():0.00;
|
|
|
+ jz1 = totalFee!=null? jkxlDetailFee.getTotalFee():0.00;
|
|
|
jz2 = jkxlDetailFee.getJzFee()!=null? jkxlDetailFee.getJzFee():0.00;
|
|
|
}
|
|
|
//安装费和
|
|
|
if (jkxlDetailFee.getWbsCode().equals("23000000")) {
|
|
|
- az1 = jkxlDetailFee.getTotalFee()!=null? jkxlDetailFee.getTotalFee():0.00;
|
|
|
+ az1 = totalFee!=null? jkxlDetailFee.getTotalFee():0.00;
|
|
|
az2 = jkxlDetailFee.getAzFee()!=null? jkxlDetailFee.getAzFee():0.00;
|
|
|
}
|
|
|
//其他费用和
|
|
|
- if (jkxlDetailFee.getFeeType().equals("0")&& jkxlDetailFee.getTotalFee() != null) {
|
|
|
- qtTotal += jkxlDetailFee.getTotalFee();
|
|
|
+ if (jkxlDetailFee.getFeeType().equals("0")&& totalFee != null) {
|
|
|
+ qtTotal += totalFee;
|
|
|
}
|
|
|
// wbs简明表示8位,最低层次wbs最后两位为0
|
|
|
String six = jkxlDetailFee.getWbsCode().substring(5,6);
|
|
|
- if(lastShareWbs!=null && jkxlDetailFee.getFeeType().equals("1")&&!six.equals("0")){
|
|
|
+ if(lastShareWbs==null && jkxlDetailFee.getFeeType().equals("1")&&!six.equals("0")&&totalFee!=null&&totalFee!=0.00){
|
|
|
lastShareWbs = jkxlDetailFee.getWbsCode();
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
- double totalJzShare = DoubleUtil.round2(totalDeal*jz1/(jz1+az1));
|
|
|
- double totalAzShare = DoubleUtil.round2(totalDeal*az1/(jz1+az1));
|
|
|
- //实际分摊金额与需分摊金额是否有差额
|
|
|
- double diff = DoubleUtil.sub(totalDeal,(DoubleUtil.add(totalJzShare,totalAzShare)));
|
|
|
- //实际分摊与需分摊存在差额情况下 将差额分配的wbs节点及其父节点
|
|
|
- String wbs1 = null;
|
|
|
- String wbs2 = null;
|
|
|
- String wbs3 = null;
|
|
|
- String wbs4 = null;
|
|
|
- if(diff != 0.00){
|
|
|
- wbs1 = lastShareWbs.substring(0,2)+"000000";
|
|
|
- wbs2 = lastShareWbs.substring(0,3)+"00000";
|
|
|
- wbs3 = lastShareWbs.substring(0,4)+"0000";
|
|
|
- wbs4 = lastShareWbs.substring(0,5)+"000";
|
|
|
- }
|
|
|
- //根据合计分摊至本体部分 看代码jz1=jz2 az1=az2不知道为什么要分开。
|
|
|
- for(JkxlDetailFee jkxlDetailFee:list){
|
|
|
- String wbs = jkxlDetailFee.getWbsCode();
|
|
|
- Double totalFee = jkxlDetailFee.getTotalFee();
|
|
|
- if(wbs.startsWith("21")&&totalFee!=null&&totalFee!=0.00){
|
|
|
- double share = DoubleUtil.round2(totalDeal*totalFee/(jz1+az1));
|
|
|
- jkxlDetailFee.setTotalFee(DoubleUtil.sub(totalFee,share));
|
|
|
- jkxlDetailFee.setJzFee((DoubleUtil.sub(totalFee,share)));
|
|
|
+ if(totalDeal!=0.00){
|
|
|
+ double totalJzShare = DoubleUtil.round2(totalDeal*jz1/(jz1+az1));
|
|
|
+ double totalAzShare = DoubleUtil.round2(totalDeal*az1/(jz1+az1));
|
|
|
+ //实际分摊金额与需分摊金额是否有差额
|
|
|
+ double diff = DoubleUtil.sub(totalDeal,(DoubleUtil.add(totalJzShare,totalAzShare)));
|
|
|
+ //实际分摊与需分摊存在差额情况下 将差额分配的wbs节点及其父节点
|
|
|
+ String wbs1 = null;
|
|
|
+ String wbs2 = null;
|
|
|
+ String wbs3 = null;
|
|
|
+ String wbs4 = null;
|
|
|
+ if(diff != 0.00&&lastShareWbs!=null){
|
|
|
+ wbs1 = lastShareWbs.substring(0,2)+"000000";
|
|
|
+ wbs2 = lastShareWbs.substring(0,3)+"00000";
|
|
|
+ wbs3 = lastShareWbs.substring(0,4)+"0000";
|
|
|
+ wbs4 = lastShareWbs.substring(0,5)+"000";
|
|
|
}
|
|
|
- if(wbs.startsWith("23")&&totalFee!=null&&totalFee!=0.00){
|
|
|
- double share = DoubleUtil.round2(totalDeal*totalFee/(jz1+az1));
|
|
|
- jkxlDetailFee.setTotalFee(DoubleUtil.sub(totalFee,share));
|
|
|
- jkxlDetailFee.setAzFee(DoubleUtil.sub(totalFee,share));
|
|
|
- }
|
|
|
- if(diff!=0.00){
|
|
|
- if(wbs.equals(wbs1)||wbs.equals(wbs2)||wbs.equals(wbs3)||wbs.equals(wbs4)||wbs.equals(lastShareWbs)){
|
|
|
- jkxlDetailFee.setTotalFee(DoubleUtil.sub(jkxlDetailFee.getTotalFee(),diff));
|
|
|
- if(lastShareWbs.startsWith("21")){
|
|
|
- jkxlDetailFee.setJzFee(DoubleUtil.sub(jkxlDetailFee.getJzFee(),diff));
|
|
|
+ //根据合计分摊至本体部分 看代码jz1=jz2 az1=az2不知道为什么要分开。
|
|
|
+ for(JkxlDetailFee jkxlDetailFee:list){
|
|
|
+ String wbs = jkxlDetailFee.getWbsCode();
|
|
|
+ Double totalFee = jkxlDetailFee.getTotalFee();
|
|
|
+ if(wbs.startsWith("21")&&totalFee!=null&&totalFee!=0.00){
|
|
|
+ double share = DoubleUtil.round2(totalDeal*totalFee/(jz1+az1));
|
|
|
+ jkxlDetailFee.setTotalFee(DoubleUtil.sub(totalFee,share));
|
|
|
+ jkxlDetailFee.setJzFee((DoubleUtil.sub(totalFee,share)));
|
|
|
+ }
|
|
|
+ if(wbs.startsWith("23")&&totalFee!=null&&totalFee!=0.00){
|
|
|
+ double share = DoubleUtil.round2(totalDeal*totalFee/(jz1+az1));
|
|
|
+ jkxlDetailFee.setTotalFee(DoubleUtil.sub(totalFee,share));
|
|
|
+ jkxlDetailFee.setAzFee(DoubleUtil.sub(totalFee,share));
|
|
|
+ }
|
|
|
+ if(diff!=0.00&&lastShareWbs!=null){
|
|
|
+ if(wbs.equals(wbs1)||wbs.equals(wbs2)||wbs.equals(wbs3)||wbs.equals(wbs4)||wbs.equals(lastShareWbs)){
|
|
|
+ jkxlDetailFee.setTotalFee(DoubleUtil.sub(jkxlDetailFee.getTotalFee(),diff));
|
|
|
+ if(lastShareWbs.startsWith("21")){
|
|
|
+ jkxlDetailFee.setJzFee(DoubleUtil.sub(jkxlDetailFee.getJzFee(),diff));
|
|
|
+ }else{
|
|
|
+ jkxlDetailFee.setAzFee(DoubleUtil.sub(jkxlDetailFee.getAzFee(),diff));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }else if(diff!=0.00&& lastShareWbs==null){
|
|
|
+ if(jz1>0.00){
|
|
|
+ lastShareWbs = "21000000";
|
|
|
}else{
|
|
|
- jkxlDetailFee.setAzFee(DoubleUtil.sub(jkxlDetailFee.getAzFee(),diff));
|
|
|
+ lastShareWbs = "23000000";
|
|
|
}
|
|
|
}
|
|
|
|
|
|
}
|
|
|
-
|
|
|
- }
|
|
|
- if(lastShareWbs.startsWith("21")){
|
|
|
- totalJzShare = DoubleUtil.add(totalJzShare,diff);
|
|
|
- }else{
|
|
|
- totalAzShare = DoubleUtil.add(totalAzShare,diff);
|
|
|
+ if(lastShareWbs.startsWith("21")){
|
|
|
+ totalJzShare = DoubleUtil.add(totalJzShare,diff);
|
|
|
+ }else{
|
|
|
+ totalAzShare = DoubleUtil.add(totalAzShare,diff);
|
|
|
+ }
|
|
|
+ jz1 = DoubleUtil.sub(jz1,totalJzShare);
|
|
|
+ jz2 = DoubleUtil.sub(jz2,totalJzShare);
|
|
|
+ az1 = DoubleUtil.sub(az1,totalAzShare);
|
|
|
+ az2 = DoubleUtil.sub(az2,totalAzShare);
|
|
|
}
|
|
|
- jz1 = DoubleUtil.sub(jz1,totalJzShare);
|
|
|
- jz2 = DoubleUtil.sub(jz2,totalJzShare);
|
|
|
- az1 = DoubleUtil.sub(az1,totalAzShare);
|
|
|
- az2 = DoubleUtil.sub(az2,totalAzShare);
|
|
|
+
|
|
|
|
|
|
qtTotal = qtTotal + integrityFee;
|
|
|
for (JkxlDetailFee jkxlDetailFee : list) {
|
|
@@ -221,55 +231,54 @@ public class OverheadLineService {
|
|
|
}
|
|
|
|
|
|
//处理税金和甲供材超供抵扣款
|
|
|
- double totalJzShare = 0.00;
|
|
|
- double totalAzShare = 0.00;
|
|
|
- //根据合计分摊至本体部分 看代码jz1=jz2 az1=az2不知道为什么要分开。
|
|
|
- for(JkxlDetailFee jkxlDetailFee:list){
|
|
|
- String wbs = jkxlDetailFee.getWbsCode().substring(0,3);
|
|
|
- String wbs1 = jkxlDetailFee.getWbsCode().substring(3,4);
|
|
|
- Double totalFee = jkxlDetailFee.getTotalFee();
|
|
|
- if(wbs.equals("491") && !wbs1.equals("0")&&totalFee!=null&&totalFee!=0.00){
|
|
|
- double share = DoubleUtil.round2(totalDeal*totalFee/(jz1+az1));
|
|
|
- jkxlDetailFee.setTotalFee(DoubleUtil.sub(totalFee,share));
|
|
|
- jkxlDetailFee.setJzFee((DoubleUtil.sub(totalFee,share)));
|
|
|
- totalJzShare = DoubleUtil.add(totalJzShare,share);
|
|
|
- }
|
|
|
- if(wbs.equals("493") && !wbs1.equals("0")&&totalFee!=null&&totalFee!=0.00){
|
|
|
- double share = DoubleUtil.round2(totalDeal*totalFee/(jz1+az1));
|
|
|
- jkxlDetailFee.setTotalFee(DoubleUtil.sub(totalFee,share));
|
|
|
- jkxlDetailFee.setAzFee(DoubleUtil.sub(totalFee,share));
|
|
|
- totalAzShare = DoubleUtil.add(totalAzShare,share);
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
- //将分摊后的差额放入第一个分部分项
|
|
|
- if(totalDeal!=(totalJzShare+totalAzShare)){
|
|
|
+ if(totalDeal!=0.00){
|
|
|
+ double totalJzShare = 0.00;
|
|
|
+ double totalAzShare = 0.00;
|
|
|
+ //根据合计分摊至本体部分 看代码jz1=jz2 az1=az2不知道为什么要分开。
|
|
|
for(JkxlDetailFee jkxlDetailFee:list){
|
|
|
String wbs = jkxlDetailFee.getWbsCode().substring(0,3);
|
|
|
String wbs1 = jkxlDetailFee.getWbsCode().substring(3,4);
|
|
|
Double totalFee = jkxlDetailFee.getTotalFee();
|
|
|
if(wbs.equals("491") && !wbs1.equals("0")&&totalFee!=null&&totalFee!=0.00){
|
|
|
- jkxlDetailFee.setTotalFee(DoubleUtil.sub(totalFee,DoubleUtil.sub(totalDeal,(DoubleUtil.add(totalJzShare,totalAzShare)))));
|
|
|
- jkxlDetailFee.setJzFee(DoubleUtil.sub(totalFee,DoubleUtil.sub(totalDeal,(DoubleUtil.add(totalJzShare,totalAzShare)))));
|
|
|
- totalJzShare = DoubleUtil.add(totalJzShare,DoubleUtil.sub(totalDeal,(DoubleUtil.add(totalJzShare,totalAzShare))));
|
|
|
- break;
|
|
|
+ double share = DoubleUtil.round2(totalDeal*totalFee/(jz1+az1));
|
|
|
+ jkxlDetailFee.setTotalFee(DoubleUtil.sub(totalFee,share));
|
|
|
+ jkxlDetailFee.setJzFee((DoubleUtil.sub(totalFee,share)));
|
|
|
+ totalJzShare = DoubleUtil.add(totalJzShare,share);
|
|
|
}
|
|
|
if(wbs.equals("493") && !wbs1.equals("0")&&totalFee!=null&&totalFee!=0.00){
|
|
|
- jkxlDetailFee.setTotalFee(DoubleUtil.sub(totalFee,DoubleUtil.sub(totalDeal,(DoubleUtil.add(totalJzShare,totalAzShare)))));
|
|
|
- jkxlDetailFee.setAzFee(DoubleUtil.sub(totalFee,DoubleUtil.sub(totalDeal,(DoubleUtil.add(totalJzShare,totalAzShare)))));
|
|
|
- totalAzShare = DoubleUtil.add(totalAzShare,DoubleUtil.sub(totalDeal,(DoubleUtil.add(totalJzShare,totalAzShare))));
|
|
|
- break;
|
|
|
+ double share = DoubleUtil.round2(totalDeal*totalFee/(jz1+az1));
|
|
|
+ jkxlDetailFee.setTotalFee(DoubleUtil.sub(totalFee,share));
|
|
|
+ jkxlDetailFee.setAzFee(DoubleUtil.sub(totalFee,share));
|
|
|
+ totalAzShare = DoubleUtil.add(totalAzShare,share);
|
|
|
}
|
|
|
|
|
|
}
|
|
|
- }
|
|
|
- jz1 = DoubleUtil.sub(jz1,totalJzShare);
|
|
|
- jz2 = DoubleUtil.sub(jz2,totalJzShare);
|
|
|
- az1 = DoubleUtil.sub(az1,totalAzShare);
|
|
|
- az2 = DoubleUtil.sub(az2,totalAzShare);
|
|
|
-
|
|
|
-
|
|
|
+ //将分摊后的差额放入第一个分部分项
|
|
|
+ if(totalDeal!=(totalJzShare+totalAzShare)){
|
|
|
+ for(JkxlDetailFee jkxlDetailFee:list){
|
|
|
+ String wbs = jkxlDetailFee.getWbsCode().substring(0,3);
|
|
|
+ String wbs1 = jkxlDetailFee.getWbsCode().substring(3,4);
|
|
|
+ Double totalFee = jkxlDetailFee.getTotalFee();
|
|
|
+ if(wbs.equals("491") && !wbs1.equals("0")&&totalFee!=null&&totalFee!=0.00){
|
|
|
+ jkxlDetailFee.setTotalFee(DoubleUtil.sub(totalFee,DoubleUtil.sub(totalDeal,(DoubleUtil.add(totalJzShare,totalAzShare)))));
|
|
|
+ jkxlDetailFee.setJzFee(DoubleUtil.sub(totalFee,DoubleUtil.sub(totalDeal,(DoubleUtil.add(totalJzShare,totalAzShare)))));
|
|
|
+ totalJzShare = DoubleUtil.add(totalJzShare,DoubleUtil.sub(totalDeal,(DoubleUtil.add(totalJzShare,totalAzShare))));
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ if(wbs.equals("493") && !wbs1.equals("0")&&totalFee!=null&&totalFee!=0.00){
|
|
|
+ jkxlDetailFee.setTotalFee(DoubleUtil.sub(totalFee,DoubleUtil.sub(totalDeal,(DoubleUtil.add(totalJzShare,totalAzShare)))));
|
|
|
+ jkxlDetailFee.setAzFee(DoubleUtil.sub(totalFee,DoubleUtil.sub(totalDeal,(DoubleUtil.add(totalJzShare,totalAzShare)))));
|
|
|
+ totalAzShare = DoubleUtil.add(totalAzShare,DoubleUtil.sub(totalDeal,(DoubleUtil.add(totalJzShare,totalAzShare))));
|
|
|
+ break;
|
|
|
+ }
|
|
|
|
|
|
+ }
|
|
|
+ }
|
|
|
+ jz1 = DoubleUtil.sub(jz1,totalJzShare);
|
|
|
+ jz2 = DoubleUtil.sub(jz2,totalJzShare);
|
|
|
+ az1 = DoubleUtil.sub(az1,totalAzShare);
|
|
|
+ az2 = DoubleUtil.sub(az2,totalAzShare);
|
|
|
+ }
|
|
|
|
|
|
//诚信扣款
|
|
|
qtTotal = qtTotal + integrityFee;
|
|
@@ -332,30 +341,31 @@ public class OverheadLineService {
|
|
|
}
|
|
|
|
|
|
//处理税金和甲供材超供抵扣款
|
|
|
- double totalShare = 0.00;
|
|
|
- //根据合计分摊至本体部分
|
|
|
- for(JkxlDetailFee jkxlDetailFee:list){
|
|
|
- Double totalFee = jkxlDetailFee.getTotalFee();
|
|
|
- if(jkxlDetailFee.getFeeType().equals("1") && totalFee != null && totalFee!=0.00){
|
|
|
- double share = DoubleUtil.round2(totalDeal*totalFee/az1);
|
|
|
- jkxlDetailFee.setTotalFee(DoubleUtil.sub(totalFee,share));
|
|
|
- jkxlDetailFee.setAzFee(DoubleUtil.sub(totalFee,share));
|
|
|
- totalShare = DoubleUtil.add(totalShare,share);
|
|
|
- }
|
|
|
- }
|
|
|
- //将分摊后的差额放入第一个分部分项
|
|
|
- if(totalDeal!=totalShare){
|
|
|
+ if(totalDeal!=0.00){
|
|
|
+ double totalShare = 0.00;
|
|
|
+ //根据合计分摊至本体部分
|
|
|
for(JkxlDetailFee jkxlDetailFee:list){
|
|
|
Double totalFee = jkxlDetailFee.getTotalFee();
|
|
|
if(jkxlDetailFee.getFeeType().equals("1") && totalFee != null && totalFee!=0.00){
|
|
|
- jkxlDetailFee.setTotalFee(DoubleUtil.sub(totalFee,DoubleUtil.sub(totalDeal,totalShare)));
|
|
|
- jkxlDetailFee.setAzFee(DoubleUtil.sub(totalFee,DoubleUtil.sub(totalDeal,totalShare)));
|
|
|
- break;
|
|
|
+ double share = DoubleUtil.round2(totalDeal*totalFee/az1);
|
|
|
+ jkxlDetailFee.setTotalFee(DoubleUtil.sub(totalFee,share));
|
|
|
+ jkxlDetailFee.setAzFee(DoubleUtil.sub(totalFee,share));
|
|
|
+ totalShare = DoubleUtil.add(totalShare,share);
|
|
|
}
|
|
|
}
|
|
|
+ //将分摊后的差额放入第一个分部分项
|
|
|
+ if(totalDeal!=totalShare){
|
|
|
+ for(JkxlDetailFee jkxlDetailFee:list){
|
|
|
+ Double totalFee = jkxlDetailFee.getTotalFee();
|
|
|
+ if(jkxlDetailFee.getFeeType().equals("1") && totalFee != null && totalFee!=0.00){
|
|
|
+ jkxlDetailFee.setTotalFee(DoubleUtil.sub(totalFee,DoubleUtil.sub(totalDeal,totalShare)));
|
|
|
+ jkxlDetailFee.setAzFee(DoubleUtil.sub(totalFee,DoubleUtil.sub(totalDeal,totalShare)));
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ az1 = DoubleUtil.sub(az1,totalDeal);
|
|
|
}
|
|
|
- az1 = DoubleUtil.sub(az1,totalDeal);
|
|
|
-
|
|
|
|
|
|
qtTotal = qtTotal + integrityFee;
|
|
|
for (JkxlDetailFee jkxlDetailFee : list) {
|