Browse Source

资产报表接口优化

“study” 1 year ago
parent
commit
01b9674311

+ 15 - 5
ruoyi-admin/src/main/java/com/ruoyi/inventory/controller/TbAssetInventoryController.java

@@ -179,16 +179,26 @@ public class TbAssetInventoryController extends BaseController
      */
     @GetMapping("/getDepAssetLossTb")
     public AjaxResult getDepAssetLossTb(String depId){
-        DepAssetLossResultDto result = tbAssetInventoryService.inventoryDepAssetById(depId);
+
+        List<DepAssetLossResultDto> result = null;
+        try {
+            result = tbAssetInventoryService.inventoryDepAssetById(depId);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
         return success(result);
     }
 
     @PostMapping("/exportDepAssetLossTb/{deptId}")
     public void exportDepAssetLossTb(HttpServletResponse response, @PathVariable("deptId") String depId){
-        DepAssetLossResultDto result = tbAssetInventoryService.inventoryDepAssetById(depId);
+
+        List<DepAssetLossResultDto> result = null;
+        try {
+            result = tbAssetInventoryService.inventoryDepAssetById(depId);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
         ExcelUtil<DepAssetLossResultDto> util = new ExcelUtil<DepAssetLossResultDto>(DepAssetLossResultDto.class);
-        ArrayList<DepAssetLossResultDto> result_list = new ArrayList<>();
-        result_list.add(result);
-        util.exportExcel(response, result_list, "近两次资产盘点损耗统计");
+        util.exportExcel(response, result, "近两次资产盘点损耗统计");
     }
 }

+ 1 - 0
ruoyi-admin/src/main/java/com/ruoyi/inventory/domain/dto/AssetInvOrderDto.java

@@ -13,4 +13,5 @@ public class AssetInvOrderDto {
 
     private String orderNumber;
     private String inventDate;
+    private String deptName;
 }

+ 6 - 0
ruoyi-admin/src/main/java/com/ruoyi/inventory/domain/dto/DepAssetLossResultDto.java

@@ -31,6 +31,12 @@ public class DepAssetLossResultDto {
     private String lastSecondDate;
 
     /**
+     * 盘点部门名称
+     */
+    @Excel(name = "部门名称")
+    private String deptName;
+
+    /**
      * 资产损耗盘点结果集
      */
     @Excel(name = "资产损耗盘点结果集")

+ 2 - 0
ruoyi-admin/src/main/java/com/ruoyi/inventory/mapper/TbAssetInventoryMapper.java

@@ -86,5 +86,7 @@ public interface TbAssetInventoryMapper
 
     List<AssetInvOrderDto> getOrderNumberByDepId(@Param("depId") String depId);
 
+    List<String> getChildDeptId(String deptId);
+
 
 }

+ 1 - 1
ruoyi-admin/src/main/java/com/ruoyi/inventory/service/ITbAssetInventoryService.java

@@ -82,5 +82,5 @@ public interface ITbAssetInventoryService
     public List<TbAssetInventoryDTO> selectTbAssetInventoryDTOList(TbAssetInventoryDTO dto);
 
 
-    DepAssetLossResultDto inventoryDepAssetById(String depId);
+    List<DepAssetLossResultDto> inventoryDepAssetById(String depId) throws Exception;
 }

+ 25 - 14
ruoyi-admin/src/main/java/com/ruoyi/inventory/service/impl/TbAssetInventoryServiceImpl.java

@@ -468,7 +468,7 @@ public class TbAssetInventoryServiceImpl implements ITbAssetInventoryService
      * @param depId
      * @return
      */
-    public DepAssetLossResultDto inventoryDepAssetById(String depId){
+    public List<DepAssetLossResultDto> inventoryDepAssetById(String depId) throws Exception {
 
        /* 本想这样写sql的:
         select inventory_metadata metadata
@@ -483,27 +483,38 @@ public class TbAssetInventoryServiceImpl implements ITbAssetInventoryService
         暂时选择以下方法解决,要连接四次数据库,很可能需要优化
         */
 
+        List<String> childDeptIdList = tbAssetInventoryMapper.getChildDeptId(depId);
+        if(childDeptIdList == null || childDeptIdList.size()==0){
+            throw new Exception("不存在该部门id");
+        }
+        List<DepAssetLossResultDto> resultDtoList = new ArrayList<>();
         //历史盘点计划编码和日期
-        List<AssetInvOrderDto> invs = tbAssetInventoryMapper.getOrderNumberByDepId(depId);
-
-        //前前一次盘点计划编码和日期
-//        TbAssetInventoryDTO old_inv = tbAssetInventoryMapper.getOrderNumberByDepId(depId);
-
-        if (ObjectUtil.isEmpty(invs) || invs.size()==0) return null;
+        List<AssetInvOrderDto> invs;
+        for (String ch_depId : childDeptIdList) {
+            invs = tbAssetInventoryMapper.getOrderNumberByDepId(ch_depId);
+            if (ObjectUtil.isEmpty(invs) || invs.size()==0){
+                continue;
+            };
 
-        AssetInvOrderDto new_inv = invs.get(0);
+            AssetInvOrderDto new_inv = invs.get(0);
 //        System.out.println("new-盘点计划:"+new_inv);
-        AssetInvOrderDto old_inv = null;
-        if (invs.size()>1) old_inv = invs.get(1);
+            AssetInvOrderDto old_inv = null;
+            if (invs.size()>1) old_inv = invs.get(1);
 
-        DepAssetLossResultDto resultDto = null;
+            DepAssetLossResultDto resultDto = null;
 
-        if (!ObjectUtil.isNull(new_inv)) {
-            resultDto = compareResult(new_inv,old_inv);
+            if (!ObjectUtil.isNull(new_inv)) {
+                resultDto = compareResult(new_inv,old_inv);
+                resultDto.setDeptName(new_inv.getDeptName());
+            }
+            resultDtoList.add(resultDto);
         }
 
 
-        return resultDto;
+        //前前一次盘点计划编码和日期
+//        TbAssetInventoryDTO old_inv = tbAssetInventoryMapper.getOrderNumberByDepId(depId);
+
+        return resultDtoList;
     }
 
     /**

+ 13 - 6
ruoyi-admin/src/main/resources/mapper/inventory/TbAssetInventoryMapper.xml

@@ -195,15 +195,22 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     <select id="getDepAssetByOrderNumber" parameterType="String" resultType="com.ruoyi.inventory.domain.dto.DepAssetDetailDto">
         select inventory_metadata assetData,inventory_quantity inventoryQuantity
         from tb_inventory_detail
-        where order_number = #{orderNumber}
+        where order_number = #{orderNumber} and inventory_status = 1
     </select>
 
     <select id="getOrderNumberByDepId" parameterType="String" resultType="com.ruoyi.inventory.domain.dto.AssetInvOrderDto">
-        select order_number orderNumber,inventory_date inventDate
-        from tb_asset_inventory
-        where inventory_department = #{depId} and inventory_status = 2 and inventory_result!=0
-        and inventory_result != "0"
-        order by inventory_date desc
+        select inv.order_number orderNumber,inv.inventory_date inventDate,dep.dept_name deptName
+        from tb_asset_inventory inv
+        left join sys_dept dep on inv.inventory_department = dep.dept_id
+        where inv.inventory_department = #{depId} and inv.inventory_status = 2 and inv.inventory_result!=0
+        and inv.inventory_result != "0"
+        order by inv.inventory_date desc
     </select>
     <!-- limit #{whichOne},1 -->
+
+    <select id="getChildDeptId" parameterType="String" resultType="String">
+        select dept_id
+        from sys_dept
+        where dept_id = #{deptId} OR ancestors like concat('%,', #{deptId}, ',%')
+    </select>
 </mapper>