|
@@ -232,7 +232,7 @@ public class ExecutorMeter extends FormulaExecutor {
|
|
|
this.specialList.add(new MaterialSp());
|
|
|
this.specialList.add(new MaterialsArrivalSp());
|
|
|
}else if(MeterType.INTERIM.equals(tec.getMeterType())){
|
|
|
- this.specialList.add(new MaterialSp());
|
|
|
+ this.specialList.add(new MaterialInterimSp());
|
|
|
/*材料*/
|
|
|
this.specialList.add(new MaterialsArrivalSp());
|
|
|
/*中期支付证书*/
|
|
@@ -503,6 +503,45 @@ public class ExecutorMeter extends FormulaExecutor {
|
|
|
}
|
|
|
@Data
|
|
|
@EqualsAndHashCode(callSuper = true)
|
|
|
+ public class MaterialInterimSp extends BaseSpecial<MaterialPriceDifferential> implements Special{
|
|
|
+ /*永久性工程材料差价金额一览表*/
|
|
|
+ @Override
|
|
|
+ public boolean ready() {
|
|
|
+ return MeterInfo.MB_ZJ.equals(tec.getMeterInfo().getTemplate());
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void parse() {
|
|
|
+ builderFormDatas(MaterialPriceDifferential.class);
|
|
|
+ /*本期材料*/
|
|
|
+ List<MaterialAdjust> materialAdjustList=tec.meterInfo.getMaterialAdjustListMap().get(MeterInfo.CUR);
|
|
|
+ if(materialAdjustList.size()>0){
|
|
|
+ for(MaterialAdjust mad:materialAdjustList){
|
|
|
+ MaterialPriceDifferential mpd = new MaterialPriceDifferential();
|
|
|
+ mpd.setPeriodNumber(tec.periodInfo.getPeriodNumber());
|
|
|
+ mpd.setName(mad.getMaterialName());
|
|
|
+ mpd.setUnit(mad.getUnit());
|
|
|
+ mpd.setQuantity(mad.getAdjustTotal().toPlainString());
|
|
|
+ mpd.setPriceBase(mad.getMaterialPrice().toPlainString());
|
|
|
+ mpd.setPrice(mad.getCurrentPrice().toPlainString());
|
|
|
+ mpd.setAmount(StringUtils.number2String(multiFc.apply(mpd.getPrice(),mpd.getQuantity()),0));
|
|
|
+ mpd.setAmountBase(StringUtils.number2String(multiFc.apply(mpd.getPriceBase(),mpd.getQuantity()),0));
|
|
|
+ mpd.setPriceSpread(subtractFc.apply(mpd.getPrice(),mpd.getPriceBase()));
|
|
|
+ mpd.setTotal(StringUtils.number2String(mad.getAdjustMoney().toPlainString(),0));
|
|
|
+ mpd.setMaterialArriveNumber(tec.periodInfo.getPayNumber());
|
|
|
+ dataList.add(mpd);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ /*每页合计*/
|
|
|
+ FormulaUtils.elementFindByKey(fdm,"key_14").ifPresent(fd->{
|
|
|
+ List< List<MaterialPriceDifferential> > list =BaseUtils.splitList(dataList,capacity);
|
|
|
+ elementWriter.write(fd,list.stream().map(l->l.stream().map(MaterialPriceDifferential::getTotal).mapToDouble(Double::parseDouble).sum()).collect(Collectors.toList()));
|
|
|
+ });
|
|
|
+ putOut(MaterialPriceDifferential.class);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ @Data
|
|
|
+ @EqualsAndHashCode(callSuper = true)
|
|
|
public class SupervisionCertificateSp extends BaseSpecial<SupervisionCertificate> implements Special{
|
|
|
|
|
|
private final LinkedHashMap<String,String> itemNamesMap=new LinkedHashMap<>();
|
|
@@ -818,7 +857,7 @@ public class ExecutorMeter extends FormulaExecutor {
|
|
|
hj.setQuantity(v.stream().map(e->BaseUtils.str2BigDecimal(e.getQuantity())).reduce(BigDecimal.ZERO,BigDecimal::add).toPlainString());
|
|
|
hj.setAmount(v.stream().map(e->BaseUtils.str2BigDecimal(e.getAmount())).reduce(BigDecimal.ZERO,BigDecimal::add).toPlainString());
|
|
|
hj.setTotal(divideFc.apply(multiFc.apply(hj.getAmount(),ratio),"100"));
|
|
|
- materialSum=hj.getTotal();
|
|
|
+ materialSum=StringUtils.number2String(hj.getTotal(),0);
|
|
|
tmp.add(hj);
|
|
|
dataList.addAll(tmp);
|
|
|
});
|
|
@@ -1033,9 +1072,9 @@ public class ExecutorMeter extends FormulaExecutor {
|
|
|
/*材料调差*/
|
|
|
if(materialAdjustMap!=null) {
|
|
|
Function<Integer, String> countFc = category -> materialAdjustMap.get(category).stream().map(MaterialAdjust::getAdjustMoney).reduce(BigDecimal.ZERO, BigDecimal::add).toPlainString();
|
|
|
- jgtz.setPreviousPeriodEndPay(countFc.apply(MeterInfo.PRE));
|
|
|
- jgtz.setCurrentPeriodPay(countFc.apply(MeterInfo.CUR));
|
|
|
- jgtz.setCurrentPeriodEndPay(countFc.apply(MeterInfo.END));
|
|
|
+ jgtz.setPreviousPeriodEndPay(StringUtils.number2String(countFc.apply(MeterInfo.PRE),0));
|
|
|
+ jgtz.setCurrentPeriodPay(StringUtils.number2String(countFc.apply(MeterInfo.CUR),0));
|
|
|
+ jgtz.setCurrentPeriodEndPay(StringUtils.number2String(countFc.apply(MeterInfo.END),0));
|
|
|
}
|
|
|
payItemZj.add(jgtz);
|
|
|
InterimPaymentCertificate hj = new InterimPaymentCertificate("合计",true);
|
|
@@ -1209,11 +1248,11 @@ public class ExecutorMeter extends FormulaExecutor {
|
|
|
fieldGetSet(x->!x.getIsSummary(),InterimPaymentCertificate::getInvertState);
|
|
|
InterimPaymentCertificate finalBlj = blj;
|
|
|
dataList.stream().filter(e-> "合计".equals(e.getChapterSeq())).findFirst().ifPresent(t->{
|
|
|
- finalBlj.setCurrentPeriodPay(multiFc.apply(t.getCurrentPeriodPay(),"0.1"));
|
|
|
+ finalBlj.setCurrentPeriodPay(StringUtils.number2String(multiFc.apply(t.getCurrentPeriodPay(),"0.1"),0));
|
|
|
if(BaseUtils.obj2DoubleZero(t.getPreviousPeriodEndPay())>0) {
|
|
|
- finalBlj.setPreviousPeriodEndPay(multiFc.apply(t.getPreviousPeriodEndPay(), "0.1"));
|
|
|
+ finalBlj.setPreviousPeriodEndPay(StringUtils.number2String(multiFc.apply(t.getPreviousPeriodEndPay(), "0.1"),0));
|
|
|
}
|
|
|
- finalBlj.setCurrentPeriodEndPay(multiFc.apply(t.getCurrentPeriodEndPay(),"0.1"));
|
|
|
+ finalBlj.setCurrentPeriodEndPay(addFc.apply(finalBlj.getCurrentPeriodPay(),finalBlj.getPreviousPeriodEndPay()));
|
|
|
dataList.stream().filter(e-> "实际支付".equals(e.getChapterSeq())).findFirst().ifPresent(w->{
|
|
|
w.setCurrentPeriodPay(StringUtils.number2String(subtractFc.apply(w.getCurrentPeriodPay(),finalBlj.getCurrentPeriodPay()),0));
|
|
|
if(BaseUtils.obj2DoubleZero(t.getPreviousPeriodEndPay())>0) {
|