|
@@ -109,20 +109,20 @@ public class ExecutorMeter extends FormulaExecutor {
|
|
|
|
|
|
@Data
|
|
|
public class MaterialCalc implements Special{
|
|
|
- private FormData index;
|
|
|
+/* private FormData index;
|
|
|
private FormData materialName;
|
|
|
private FormData unit;
|
|
|
private FormData meterAmount;
|
|
|
- private FormData price;
|
|
|
+ private FormData price;*/
|
|
|
private FormData sum;
|
|
|
- private FormData ratio;
|
|
|
+ /* private FormData ratio;*/
|
|
|
private FormData advancePayment;
|
|
|
- private FormData source;
|
|
|
+/* private FormData source;
|
|
|
private FormData materialConform;
|
|
|
private FormData storagePlace;
|
|
|
private FormData storageStatus;
|
|
|
private FormData storageConform;
|
|
|
- private FormData remark;
|
|
|
+ private FormData remark;*/
|
|
|
/**材料合计*/
|
|
|
private String total;
|
|
|
/**预付款合计*/
|
|
@@ -145,55 +145,23 @@ public class ExecutorMeter extends FormulaExecutor {
|
|
|
}
|
|
|
select(candidate);
|
|
|
}
|
|
|
+
|
|
|
+ private final List<String> FIELD_SORT_ORDER = Arrays.asList(
|
|
|
+ "序号", "材料名称", "单位", "数量", "单价", "材料合计价",
|
|
|
+ "预付比例(%)", "材料预付款", "材料来源", "是否符合要求",
|
|
|
+ "备料堆放地点", "存储情况", "存储方法是否符合要求", "备注"
|
|
|
+ );
|
|
|
+
|
|
|
public void select(List<FormData> candidate ){
|
|
|
- for(FormData fd:candidate){
|
|
|
- if(fd.getEName().contains("序号")){
|
|
|
- this.index=fd;
|
|
|
- fds.add(fd);
|
|
|
- }else if(fd.getEName().contains("材料名称")){
|
|
|
- this.materialName=fd;
|
|
|
- fds.add(fd);
|
|
|
- }else if(fd.getEName().contains("单位")){
|
|
|
- this.unit=fd;
|
|
|
- fds.add(fd);
|
|
|
- }else if(fd.getEName().contains("数量")){
|
|
|
- this.meterAmount=fd;
|
|
|
- fds.add(fd);
|
|
|
- }else if(fd.getEName().contains("单价")){
|
|
|
- this.price=fd;
|
|
|
- fds.add(fd);
|
|
|
- }else if(fd.getEName().contains("材料合计价")){
|
|
|
- this.sum=fd;
|
|
|
- fds.add(fd);
|
|
|
- }else if(fd.getEName().contains("预付比例")){
|
|
|
- this.ratio=fd;
|
|
|
- fds.add(fd);
|
|
|
- }else if(fd.getEName().contains("材料预付款")){
|
|
|
- this.advancePayment=fd;
|
|
|
- fds.add(fd);
|
|
|
- }else if(fd.getEName().contains("材料来源")){
|
|
|
- this.source=fd;
|
|
|
- fds.add(fd);
|
|
|
- }else if(fd.getEName().contains("是否符合要求")){
|
|
|
- this.materialConform=fd;
|
|
|
- fds.add(fd);
|
|
|
- }else if(fd.getEName().contains("备料堆放地点")){
|
|
|
- this.storagePlace=fd;
|
|
|
- fds.add(fd);
|
|
|
- }else if(fd.getEName().contains("存储情况")){
|
|
|
- this.storageStatus=fd;
|
|
|
- fds.add(fd);
|
|
|
- }else if(fd.getEName().contains("存储方法是否符合要求")){
|
|
|
- this.storageConform=fd;
|
|
|
- fds.add(fd);
|
|
|
- }else if(fd.getEName().contains("备注")){
|
|
|
- this.remark=fd;
|
|
|
- fds.add(fd);
|
|
|
- }
|
|
|
- if(fds.size()>=14){
|
|
|
- break;
|
|
|
- }
|
|
|
+ Map<String, FormData> fieldMap = new HashMap<>();
|
|
|
+ for (FormData fd : candidate) {
|
|
|
+ fieldMap.put(fd.getEName(), fd);
|
|
|
}
|
|
|
+ this.sum=fieldMap.get(FIELD_SORT_ORDER.get(5));
|
|
|
+ this.advancePayment=fieldMap.get(FIELD_SORT_ORDER.get(7));
|
|
|
+ this.fds = FIELD_SORT_ORDER.stream()
|
|
|
+ .map(fieldMap::get)
|
|
|
+ .collect(Collectors.toList());
|
|
|
}
|
|
|
|
|
|
@Override
|
|
@@ -216,6 +184,13 @@ public class ExecutorMeter extends FormulaExecutor {
|
|
|
}
|
|
|
this.total=StringUtils.number2StringZero(materials.stream().mapToDouble(m->Double.parseDouble(m.getSum())).sum(),1);
|
|
|
this.totalAdvance=StringUtils.number2StringZero(materials.stream().mapToDouble(m->Double.parseDouble(m.getAdvancePayment())).sum(),1);
|
|
|
+ /*合计*/
|
|
|
+ Material summary= new Material();
|
|
|
+ summary.setMaterialName("合计");
|
|
|
+ summary.setIndex(materials.size());
|
|
|
+ summary.setSum(this.total);
|
|
|
+ summary.setAdvancePayment(this.totalAdvance);
|
|
|
+ materials.add(summary);
|
|
|
List<Object> dataList= materials.stream().flatMap(m->m.getData().stream()).collect(Collectors.toList());
|
|
|
if(dataList.size()>0){
|
|
|
Map<Integer,List<Object>> groupData= IntStream.range(0, dataList.size()).boxed()
|
|
@@ -224,28 +199,14 @@ public class ExecutorMeter extends FormulaExecutor {
|
|
|
for(int i=0;i<this.fds.size();i++){
|
|
|
List<Object> dl= groupData.get(i);
|
|
|
FormData fd= fds.get(i);
|
|
|
+ /*计算完结*/
|
|
|
+ fd.setFinished(true);
|
|
|
elementWriter.write(fd,dl);
|
|
|
}
|
|
|
- /*追加合计*/
|
|
|
- append(this.sum,this.total);
|
|
|
- append(this.advancePayment,this.totalAdvance);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- public void append(FormData fd,Object value){
|
|
|
- if(fd!=null&&value!=null&&fd.getCoordsList().size()>0){
|
|
|
- if(fd.empty()){
|
|
|
- fd.getValues().get(0).setValue(value);
|
|
|
- }else{
|
|
|
- for(int n=0;n<fd.getValues().size();n++){
|
|
|
- ElementData ed = fd.getValues().get(n);
|
|
|
- if(ed.isEmpty()){
|
|
|
- ed.setValue(value);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
+
|
|
|
}
|
|
|
|
|
|
|