|
@@ -5,7 +5,6 @@ import com.alibaba.fastjson.annotation.JSONField;
|
|
|
import com.mixsmart.utils.CustomFunction;
|
|
|
import com.mixsmart.utils.FormulaUtils;
|
|
|
import com.mixsmart.utils.StringUtils;
|
|
|
-import io.swagger.models.auth.In;
|
|
|
import lombok.Data;
|
|
|
import lombok.EqualsAndHashCode;
|
|
|
import org.springblade.common.utils.BaseUtils;
|
|
@@ -27,7 +26,6 @@ import org.springframework.beans.BeanUtils;
|
|
|
import java.math.BigDecimal;
|
|
|
import java.math.RoundingMode;
|
|
|
import java.time.LocalDate;
|
|
|
-import java.time.LocalDateTime;
|
|
|
import java.util.*;
|
|
|
import java.util.concurrent.atomic.AtomicBoolean;
|
|
|
import java.util.concurrent.atomic.AtomicInteger;
|
|
@@ -209,6 +207,7 @@ public class ExecutorMeter extends FormulaExecutor {
|
|
|
this.specialList.add(new MaterialsArrivalSp());
|
|
|
}else if(MeterType.INTERIM.equals(tec.getMeterType())){
|
|
|
this.specialList.add(new InterimPayCert());
|
|
|
+ this.specialList.add(new MaterialsArrivalSp());
|
|
|
this.specialList.add(new InterimSum());
|
|
|
/*分项工程中期支付汇总*/
|
|
|
this.specialList.add(new SubIPaySum());
|
|
@@ -723,12 +722,14 @@ public class ExecutorMeter extends FormulaExecutor {
|
|
|
return MeterInfo.MB_ZJ.equals(tec.getMeterInfo().getTemplate());
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+ private Function<MaterialsArrival,String> fc= m-> m.getPeriodNumber()+m.getName()+m.getUnit()+m.getPrice()+m.getSource()+m.getInvoice()+m.getWarrantyNumber()+m.getSsr();
|
|
|
@Override
|
|
|
public void parse() {
|
|
|
builderFormDatas(MaterialsArrival.class);
|
|
|
if(materials.size()>0){
|
|
|
String ratio = BaseUtils.str2BigDecimal(tec.meterInfo.getBaseInfo().getDeductRatio()).toPlainString();
|
|
|
- dataList.addAll(materials.stream().map(e->{
|
|
|
+ List<MaterialsArrival> list =materials.stream().map(e->{
|
|
|
MaterialsArrival ma = new MaterialsArrival();
|
|
|
ma.setPeriodNumber(tec.periodInfo.getPeriodNumber());
|
|
|
ma.setName(e.getMaterialName());
|
|
@@ -746,7 +747,38 @@ public class ExecutorMeter extends FormulaExecutor {
|
|
|
ma.setSsr(e.getCertificate());
|
|
|
return ma;
|
|
|
}
|
|
|
- ).collect(Collectors.toList()));
|
|
|
+ ).collect(Collectors.toList());
|
|
|
+ LinkedHashMap<String,List<MaterialsArrival>> group= list.stream().collect(Collectors.groupingBy(MaterialsArrival::getName, LinkedHashMap::new,Collectors.toList()));
|
|
|
+ int rowSize= capacity-1;
|
|
|
+ group.forEach((k,v)->{
|
|
|
+ List<List<MaterialsArrival>> pages=BaseUtils.splitList(v,rowSize);
|
|
|
+ List<MaterialsArrival> tmp = new ArrayList<>();
|
|
|
+ for(int i=0;i<pages.size();i++){
|
|
|
+ List<MaterialsArrival> data = pages.get(i);
|
|
|
+ tmp.addAll(data);
|
|
|
+ int over= rowSize-v.size();
|
|
|
+ if(i==pages.size()-1){
|
|
|
+ over--;
|
|
|
+ }
|
|
|
+ if(over>0){
|
|
|
+ tmp.addAll(Collections.nCopies(over,new MaterialsArrival()));
|
|
|
+ }
|
|
|
+ MaterialsArrival xj= new MaterialsArrival();
|
|
|
+
|
|
|
+ xj.setName("小计");
|
|
|
+ xj.setQuantity(data.stream().map(e->BaseUtils.str2BigDecimal(e.getQuantity())).reduce(BigDecimal.ZERO,BigDecimal::add).toPlainString());
|
|
|
+ xj.setAmount(data.stream().map(e->BaseUtils.str2BigDecimal(e.getAmount())).reduce(BigDecimal.ZERO,BigDecimal::add).toPlainString());
|
|
|
+ xj.setTotal(divideFc.apply(multiFc.apply(xj.getAmount(),ratio),"100"));
|
|
|
+ tmp.add(xj);
|
|
|
+ }
|
|
|
+ MaterialsArrival hj= new MaterialsArrival();
|
|
|
+ hj.setName("合计");
|
|
|
+ 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"));
|
|
|
+ tmp.add(hj);
|
|
|
+ dataList.addAll(tmp);
|
|
|
+ });
|
|
|
}
|
|
|
putOut(MaterialsArrival.class);
|
|
|
}
|
|
@@ -1161,6 +1193,9 @@ public class ExecutorMeter extends FormulaExecutor {
|
|
|
});
|
|
|
/*内容输出*/
|
|
|
putOut();
|
|
|
+
|
|
|
+ /*材料预付款关联*/
|
|
|
+ materials=tec.meterInfo.getMaterialsAll();
|
|
|
}
|
|
|
|
|
|
public void periodCount(InterimPaymentCertificate last){
|