Kaynağa Gözat

资料关联台账分页

qianxb 1 yıl önce
ebeveyn
işleme
5adafe6e9f

+ 57 - 0
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/MiddleMeterApplyVO3.java

@@ -0,0 +1,57 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.meter.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springblade.meter.entity.AttachmentForm;
+import org.springblade.meter.entity.MiddleMeterApply;
+
+import java.math.BigDecimal;
+import java.time.LocalDate;
+import java.util.List;
+
+/**
+ * 中间计量申请表视图实体类
+ *
+ * @author BladeX
+ * @since 2023-11-29
+ */
+@Data
+public class MiddleMeterApplyVO3 {
+
+	@ApiModelProperty(value = "计量单编号")
+	private String meterNumber;
+
+	@ApiModelProperty(value = "工程划分")
+	private String engineerDivide;
+
+	@ApiModelProperty(value = "资料是否齐全:1是0否")
+	private Integer isLinkData;
+
+	@ApiModelProperty(value = "计量金额,应扣回金额就是计量金额")
+	private BigDecimal meterMoney;
+
+	@ApiModelProperty(value = "业务日期")
+	private LocalDate businessDate;
+
+	@ApiModelProperty(value = "距离扣回计量金额日期")
+	private LocalDate deductDate;
+
+
+}

+ 16 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/controller/MiddleMeterApplyController.java

@@ -257,4 +257,20 @@ public class MiddleMeterApplyController extends BladeController {
         IPage<WbsFileVO> iPage = middleMeterApplyService.getWbsNodeInfo(dto);
         return R.data(iPage);
     }
+
+    /**
+     * 分页 中间计量申请表
+     */
+    @GetMapping("/dataLinkPage")
+    @ApiOperationSupport(order = 14)
+    @ApiOperation(value = "分页", notes = "传合同id,节点id,计量期id和分页信息")
+    @ApiImplicitParams(value = {
+            @ApiImplicitParam(name = "contractId", value = "合同id", required = true),
+            @ApiImplicitParam(name = "contractUnitId", value = "节点id", required = true),
+            @ApiImplicitParam(name = "contractPeriodId", value = "合同计量期id", required = true)
+    })
+    public R<IPage<MiddleMeterApplyVO3>> dataLinkPage(MiddleMeterApply middleMeterApply, Query query) {
+        IPage<MiddleMeterApplyVO3> pages = middleMeterApplyService.dataLinkPage(middleMeterApply, query);
+        return R.data(pages);
+    }
 }

+ 2 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/MiddleMeterApplyMapper.java

@@ -53,6 +53,8 @@ public interface MiddleMeterApplyMapper extends BaseMapper<MiddleMeterApply> {
     IPage<MiddleMeterApplyVO> page2(IPage<MiddleMeterApplyVO> iPage,@Param("apply") MiddleMeterApply middleMeterApply);
     //根据部位排序
     IPage<MiddleMeterApplyVO> page3(IPage<MiddleMeterApplyVO> iPage,@Param("apply") MiddleMeterApply middleMeterApply,@Param("ids") List<Long> ids);
+    //和page3相同,只是返回字段不同
+    IPage<MiddleMeterApplyVO3> dataLinkPage(IPage<MiddleMeterApplyVO3> iPage,@Param("apply") MiddleMeterApply middleMeterApply,@Param("ids") List<Long> ids);
 
     List<MeterInventoryDetailVO> meterPeriodAllForm(@Param("apply") MiddleMeterApply apply);
 

+ 15 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/MiddleMeterApplyMapper.xml

@@ -298,6 +298,21 @@
         group by id
         order by sort,create_time
     </select>
+    <select id="dataLinkPage" resultType="org.springblade.meter.vo.MiddleMeterApplyVO3">
+        SELECT meter_number,engineer_divide,is_link_data,meter_money,business_date
+        FROM s_middle_meter_apply mma
+        WHERE contract_id = #{apply.contractId} and is_deleted = 0 and contract_period_id = #{apply.contractPeriodId}
+        and contract_unit_id in (
+        <foreach collection="ids" item="id"  separator=",">
+            #{id}
+        </foreach>
+        )
+        order by FIELD(contract_unit_id,
+        <foreach collection="ids" item="id"  separator=",">
+            #{id}
+        </foreach>
+        )
+    </select>
 
 
 </mapper>

+ 2 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/service/IMiddleMeterApplyService.java

@@ -70,4 +70,6 @@ public interface IMiddleMeterApplyService extends BaseService<MiddleMeterApply>
     List<MeterInventoryVO> getCurrentNodeAllForm(MiddleMeterApply middleMeterApply);
 
     IPage<WbsFileVO> getWbsNodeInfo(WbsNodeDTO dto);
+
+    IPage<MiddleMeterApplyVO3> dataLinkPage(MiddleMeterApply middleMeterApply, Query query);
 }

+ 23 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/service/impl/MiddleMeterApplyServiceImpl.java

@@ -812,6 +812,29 @@ public class MiddleMeterApplyServiceImpl extends BaseServiceImpl<MiddleMeterAppl
         return iPage;
     }
 
+    @Override
+    public IPage<MiddleMeterApplyVO3> dataLinkPage(MiddleMeterApply middleMeterApply, Query query) {
+        IPage<MiddleMeterApplyVO3> iPage = new Page<>(query.getCurrent(),query.getSize());
+        //根据部位分页,先查出部位
+        List<NodeSortVO> vos = baseMapper.getLowestNodeBySort(middleMeterApply.getContractId(),middleMeterApply.getContractUnitId());
+        //转换为树
+        Long l1 = System.currentTimeMillis();
+        List<NodeSortVO> list = ForestNodeMerger.merge(vos);
+        Long l2 = System.currentTimeMillis();
+        System.out.println(l2-l1);
+        //递归循环树,存在子节点就深入,不存在子节点就add后返回上一层
+        List<Long> ids = new ArrayList<>();
+        gatherSortNode(list,ids);
+        if (ids.size() != 0){
+            Long l3 = System.currentTimeMillis();
+            iPage = baseMapper.dataLinkPage(iPage,middleMeterApply,ids);
+            Long l4 = System.currentTimeMillis();
+            System.out.println(l4-l3);
+            iPage.getRecords().forEach(l->l.setDeductDate(l.getBusinessDate().plusMonths(3)));
+        }
+        return iPage;
+    }
+
     //递归方法
     private void gatherSortNode(List<NodeSortVO> list,List<Long> ids){
         for (NodeSortVO vo : list) {