|
@@ -607,18 +607,62 @@ public class ExecutorMeter extends FormulaExecutor {
|
|
|
|
|
|
@Override
|
|
|
public void parse() {
|
|
|
+ builderFormDatas(SupervisionCertificate.class);
|
|
|
List<InventoryForm> inventoryForms = tec.meterInfo.getInventoryForms();
|
|
|
- List<InventoryForm> chapters = tec.meterInfo.getChapter();
|
|
|
- LinkedHashMap<Integer, List<ChangeToken>> changeTokenListMap = tec.meterInfo.getChangeTokenListMap();
|
|
|
- /* 本期变更 */
|
|
|
- List<ChangeToken> changeTokenList0 = changeTokenListMap.get(MeterInfo.CUR);
|
|
|
- /* 上期末变更 */
|
|
|
- List<ChangeToken> changeTokenList1 = changeTokenListMap.get(MeterInfo.PRE);
|
|
|
- /* 本期末变更 */
|
|
|
- List<ChangeToken> changeTokenList2 = changeTokenListMap.get(MeterInfo.END);
|
|
|
+ /*List<InventoryForm> chapters = tec.meterInfo.getChapter();*/
|
|
|
/*合同金额*/
|
|
|
Map<String, BigDecimal[]> contractMoney = contractMoneySum.apply(inventoryForms);
|
|
|
- LinkedHashMap<String, InventoryForm> dictMap = chapters.stream().collect(Collectors.toMap(e->chapterPreFixFc.apply(e),e -> e, (v1, v2) -> v1,LinkedHashMap::new));
|
|
|
+ Map<String,List<InventoryForm>> group=inventoryForms.stream().filter(e->StringUtils.isNotEmpty(e.getContractMoney())).collect(Collectors.groupingBy(ExecutorMeter.this::getPrefix,Collectors.toList()));
|
|
|
+ // LinkedHashMap<String, InventoryForm> dictMap = chapters.stream().sorted(Comparator.comparingInt(toIntFc)).collect(Collectors.toMap(e->chapterPreFixFc.apply(e),e -> e, (v1, v2) -> v1,LinkedHashMap::new));
|
|
|
+ Map<SupervisionCertificate, Map<Function<SupervisionCertificate, String>, Consumer<String>>> summaryConfigMap = new HashMap<>();
|
|
|
+ itemNamesMap.forEach((k,v)->{
|
|
|
+ SupervisionCertificate sc= new SupervisionCertificate(k);
|
|
|
+ BigDecimal[] arr = contractMoney.get(v);
|
|
|
+ if(arr!=null) {
|
|
|
+ if ("100".equals(v)) {
|
|
|
+ BigDecimal[] chapter200 = contractMoney.get("200");
|
|
|
+ if (chapter200 != null) {
|
|
|
+ arr[0] = arr[0].add(chapter200[0]);
|
|
|
+ arr[1] = arr[1].add(chapter200[1]);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ sc.setContractAmount(arr[0].toPlainString());
|
|
|
+ }
|
|
|
+ if(BaseUtils.handleObj2Integer(v)>0) {
|
|
|
+ List<InventoryForm> list= group.get(v);
|
|
|
+ InventoryForm one =list.get(0);
|
|
|
+ sc.setPrice(one.getCurrentPrice());
|
|
|
+ sc.setMonth(one.getUnit());
|
|
|
+ }
|
|
|
+ if("小计".equals(k)){
|
|
|
+ addGetSetConfig(sc, summaryConfigMap, SupervisionCertificate::getContractAmount, sc::setContractAmount);
|
|
|
+ }
|
|
|
+ if("动员预付款".equals(k)){
|
|
|
+ sc.setContractAmount(StringUtils.handleNull(tec.meterInfo.getBaseInfo().getDyTotalAmount()));
|
|
|
+ sc.setCurrentAmount(currentStart);
|
|
|
+ sc.setPeriodEndAmount(sumStart);
|
|
|
+ sc.setPreviousEndAmount(subtractFc.apply(sumStart,currentStart));
|
|
|
+ }
|
|
|
+ if("实际支付金额".equals(k)){
|
|
|
+ sc.setCurrentAmount(currentStart);
|
|
|
+ sc.setPeriodEndAmount(sumStart);
|
|
|
+ sc.setPreviousEndAmount(subtractFc.apply(sumStart,currentStart));
|
|
|
+ }
|
|
|
+ dataList.add(sc);
|
|
|
+ });
|
|
|
+ /*分行合计列,合计的时候需要计入手填部分*/
|
|
|
+ fieldGetSet(summaryConfigMap,x->!x.getIsSummary(),SupervisionCertificate::getInvertState);
|
|
|
+ /*占位行*/
|
|
|
+ dataList.stream().filter(t->t.getItemName().equals("小计")).findFirst().ifPresent(t->{
|
|
|
+ int over= capacity-dataList.size();
|
|
|
+ if(over>0){
|
|
|
+ int index = dataList.indexOf(t);
|
|
|
+ for(int i=0;i<over;i++){
|
|
|
+ dataList.add(index,new SupervisionCertificate(""));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ putOut();
|
|
|
}
|
|
|
|
|
|
}
|