Parcourir la source

物资-库存导出调整

huangguoce il y a 4 semaines
Parent
commit
39be6989dc

+ 1 - 1
jeeplus-modules/jeeplus-psi-management/src/main/java/com/jeeplus/psimanage/psiWareHouse/mapper/PsiWareHouseBasicMapper.java

@@ -54,7 +54,7 @@ public interface PsiWareHouseBasicMapper extends BaseMapper<PsiWareHouseBasic> {
 
     IPage<PsiWareHouseDto> summaryList(Page<PsiWareHouseDto> page,@Param(Constants.WRAPPER) QueryWrapper<PsiWareHouseDto> queryWrapper);
 
-    IPage<PsiWareSummaryExportDto> exportSummaryList(Page<PsiWareHouseDto> page, @Param(Constants.WRAPPER) QueryWrapper<PsiWareHouseDto> queryWrapper);
+    IPage<PsiWareSummaryExportDto> exportSummaryList(Page<PsiWareHouseDto> page, @Param(Constants.WRAPPER) QueryWrapper<PsiWareHouseDto> queryWrapper,@Param("dto") PsiWareHouseDto dto);
 
     IPage<PsiWareHouseDto> summaryList2(Page<PsiWareHouseDto> page,@Param(Constants.WRAPPER) QueryWrapper<PsiWareHouseDto> queryWrapper);
 

+ 73 - 8
jeeplus-modules/jeeplus-psi-management/src/main/java/com/jeeplus/psimanage/psiWareHouse/mapper/xml/PsiWareHouseBasicMapper.xml

@@ -149,10 +149,14 @@
 			a.trade_name,
 			a.company,
 			c.name as wareHouseTypeName,
-			sum( trade_number ) AS allNumber,
+			sum( a.trade_number)  AS allNumber,
 			b.collect_number AS borrowNumber,
 			loss.loss_number AS lossNumber,
+			IFNULL(loss_after.loss_number, 0) AS afterLossNumber,
+			IFNULL(after_pmwd.trade_number, 0) AS afterTradeNumber,
+			IFNULL(after_pmcdra.not_surplus_stock, 0) AS afterNotSurplusStock,
 			sum(a.current_inventory) AS tradeNumber,
+			all_stock.allCurrentInventory,
 			a.warn_num,
 			a.warn_flag,
 			a.produce_date,
@@ -160,7 +164,7 @@
 			a.shelf_life_unit,
 			a.spec,
 			pmcdra.returned_num as returnedNum,
-			pmcdra.not_surplus_stock as notSurplusStock
+			IFNULL(pmcdra.not_surplus_stock, 0) AS notSurplusStock
 		FROM
 			psi_management_warehouse_detailed a
 				left join
@@ -171,7 +175,12 @@
 					status
 				from psi_management_collect_detailed e
 						 left join psi_management_collect_basics f on e.basic_id = f.id and f.del_flag = 0
-				WHERE f.`status` = 5 and e.del_flag = 0 and e.is_return = '0'
+				WHERE f.`status` = 5
+				  and e.del_flag = 0
+				  and e.is_return = '0'
+				<if test="dto != null and dto.dateRange != null and dto.dateRange.length == 2">
+					and f.collect_date &gt;= #{dto.dateRange[0]} AND f.collect_date &lt;= #{dto.dateRange[1]}
+				</if>
 				GROUP BY e.goods_name
 			) b
 			on a.trade_name = b.goods_name
@@ -183,24 +192,80 @@
 					status
 				from psi_management_loss_detailed e
 						 left join psi_management_loss_basics f on e.basic_id = f.id and f.del_flag = 0
-				WHERE f.`status` = 5 and e.del_flag = 0
+				WHERE f.`status` = 5
+				  and e.del_flag = 0
+				<if test="dto != null and dto.dateRange != null and dto.dateRange.length == 2">
+					and f.collect_date &gt;= #{dto.dateRange[0]} AND f.collect_date &lt;= #{dto.dateRange[1]}
+				</if>
 				GROUP BY e.goods_name
 			) loss
 			on a.trade_name = loss.goods_name
+			left join(
+				select
+				sum(loss_number) as loss_number,
+				goods_name,
+				status
+				from psi_management_loss_detailed e
+				left join psi_management_loss_basics f on e.basic_id = f.id and f.del_flag = 0
+				WHERE f.`status` = 5
+				and e.del_flag = 0
+				<if test="dto != null and dto.dateRange != null and dto.dateRange.length == 2">
+				and f.collect_date  &gt;= #{dto.dateRange[1]}
+				</if>
+				GROUP BY e.goods_name
+			) loss_after
+			on a.trade_name = loss_after.goods_name
 				left join
 			(
 				select
 					sum(returned_num) AS returned_num,
 					sum(not_surplus_stock) AS not_surplus_stock,
-					inventory_id,
-					goods_name,
-					status
+					goods_name
 				from psi_management_collect_detailed_record e
 						 left join psi_management_collect_basics pmcba on e.basic_id = pmcba.id and pmcba.del_flag = 0
-				WHERE pmcba.`status` = 5 and e.del_flag = 0
+				WHERE pmcba.`status` = 5
+				  and e.del_flag = 0
+				<if test=" dto != null and dto.dateRange != null and dto.dateRange.length == 2">
+					and pmcba.collect_date &gt;= #{dto.dateRange[0]} AND pmcba.collect_date &lt;= #{dto.dateRange[1]}
+				</if>
 				group BY e.goods_name
 			) pmcdra
 			on a.trade_name = pmcdra.goods_name
+		LEFT JOIN (
+				select
+					sum(returned_num) AS returned_num,
+					sum(not_surplus_stock) AS not_surplus_stock,
+					goods_name
+				from psi_management_collect_detailed_record e
+					left join psi_management_collect_basics pmcba on e.basic_id = pmcba.id and pmcba.del_flag = 0
+					WHERE pmcba.`status` = 5
+					and e.del_flag = 0
+				<if test=" dto != null and dto.dateRange != null and dto.dateRange.length == 2">
+					and pmcba.collect_date &gt;= #{dto.dateRange[1]}
+				</if>
+				group BY e.goods_name
+			) after_pmcdra
+		on a.trade_name = after_pmcdra.goods_name
+			LEFT JOIN (
+				SELECT
+				trade_name,
+				SUM(current_inventory) AS allCurrentInventory
+				FROM psi_management_warehouse_detailed
+				WHERE del_flag = 0
+				GROUP BY trade_name
+			) all_stock ON a.trade_name = all_stock.trade_name
+			LEFT JOIN (
+				SELECT
+					ab.trade_name,
+					SUM(ab.trade_number) AS trade_number
+				FROM psi_management_warehouse_detailed ab
+				left join psi_management_warehouse_basics pmcba on ab.basic_id = pmcba.id and pmcba.del_flag = 0
+				WHERE ab.del_flag = 0
+				<if test="dto != null and dto.dateRange != null and dto.dateRange.length == 2">
+					and pmcba.ware_house_date  &gt;= #{dto.dateRange[1]}
+				</if>
+				GROUP BY ab.trade_name
+			) after_pmwd ON a.trade_name = after_pmwd.trade_name
 				LEFT JOIN psi_management_warehouse_basics bas on a.basic_id = bas.id
 				left join psi_management_type c on a.ware_house_type = c.id
 			${ew.customSqlSegment}

+ 42 - 7
jeeplus-modules/jeeplus-psi-management/src/main/java/com/jeeplus/psimanage/psiWareHouse/service/PsiWareHouseBasicService.java

@@ -943,7 +943,6 @@ public class PsiWareHouseBasicService {
                     .or()
                     .eq("bas.`status`","5");
         });
-
         //入库类型
         if (StringUtils.isNotEmpty(dto.getWareHouseType())) {
             queryWrapper.eq("c.id", dto.getWareHouseType());
@@ -954,6 +953,12 @@ public class PsiWareHouseBasicService {
             queryWrapper.eq("a.produce_date", dto.getProduceDate());
         }
 
+        //日期范围
+        String[] dateRange = dto.getDateRange();
+        if (dateRange != null) {
+            queryWrapper.between("bas.ware_house_date", dateRange[0], dateRange[1]);
+        }
+
         if (StringUtils.isNotEmpty(dto.getSupplierId())) {
             List<PsiWareHouseDetailed> wareHouseDetaileds = psiDetailedMapper.selectList(new LambdaQueryWrapper<PsiWareHouseDetailed>().eq(PsiWareHouseDetailed::getSupplierId, dto.getSupplierId()));
             if (CollectionUtil.isNotEmpty(wareHouseDetaileds)) {
@@ -967,14 +972,9 @@ public class PsiWareHouseBasicService {
                 return new Page<>();
             }
         }
-        IPage<PsiWareSummaryExportDto> wareHouseDtoIPage = basicMapper.exportSummaryList(page, queryWrapper);
+        IPage<PsiWareSummaryExportDto> wareHouseDtoIPage = basicMapper.exportSummaryList(page, queryWrapper,dto);
         wareHouseDtoIPage.getRecords().forEach(item -> {
             // 将小数点后无效的0删除
-            // 总量  格式化
-            if (StringUtils.isNotBlank(item.getAllNumber())) {
-                String s = convertByBigDecimal(item.getAllNumber());
-                item.setAllNumber(s);
-            }
             //剩余量  格式化
             if (StringUtils.isNotBlank(item.getTradeNumber())) {
                 String s = convertByBigDecimal(item.getTradeNumber());
@@ -1035,6 +1035,41 @@ public class PsiWareHouseBasicService {
                 }
             }
 
+            // 历史库存
+            if(StringUtils.isNotBlank(item.getTradeNumber()) && dateRange != null && dateRange.length == 2){
+                double spec = StringUtils.isNotBlank(item.getSpec())
+                        ? Double.parseDouble(item.getSpec()) : 0;
+
+                double allCurrentInventory = StringUtils.isNotBlank(item.getAllCurrentInventory())
+                        ? Double.parseDouble(item.getAllCurrentInventory()) : 0;
+
+                double notSurplusStock = StringUtils.isNotBlank(item.getNotSurplusStock())
+                        ? Double.parseDouble(item.getNotSurplusStock()) : 0;
+
+                double lossNumber = StringUtils.isNotBlank(item.getLossNumber())
+                        ? Double.parseDouble(item.getLossNumber()) : 0;
+
+                double tradeNumber = StringUtils.isNotBlank(item.getAllNumber())
+                        ? Double.parseDouble(item.getAllNumber()) : 0;
+
+
+                double afterNotSurplusStock = StringUtils.isNotBlank(item.getAfterNotSurplusStock())
+                        ? Double.parseDouble(item.getAfterNotSurplusStock()) : 0;
+
+                double afterLossNumber = StringUtils.isNotBlank(item.getAfterLossNumber())
+                        ? Double.parseDouble(item.getAfterLossNumber()) : 0;
+
+                double afterTradeNumber = StringUtils.isNotBlank(item.getAfterTradeNumber())
+                        ? Double.parseDouble(item.getAfterTradeNumber()) : 0;
+
+                //计算历史库存时,需要对时间范围之后的入库,领用,报损进行处理
+                double historyInventory = allCurrentInventory - tradeNumber + notSurplusStock + lossNumber - afterTradeNumber + (afterNotSurplusStock/spec)  + (afterLossNumber/spec);
+                item.setHisTradeNumber(String.valueOf(historyInventory));
+                item.setDateRange(dateRange[0] + "至" + dateRange[1]);
+            }else{
+                item.setHisTradeNumber("0");
+                item.setDateRange("全部");
+            }
 
         });
         return wareHouseDtoIPage;

+ 2 - 1
jeeplus-modules/jeeplus-psi-management/src/main/java/com/jeeplus/psimanage/psiWareHouse/service/dto/PsiWareHouseDto.java

@@ -373,6 +373,7 @@ public class PsiWareHouseDto {
      */
     private String notSurplusStock;
 
-
+    @TableField(exist = false)
+    private String[] dateRange;
 
 }

+ 37 - 8
jeeplus-modules/jeeplus-psi-management/src/main/java/com/jeeplus/psimanage/psiWareHouse/service/dto/PsiWareSummaryExportDto.java

@@ -2,6 +2,7 @@ package com.jeeplus.psimanage.psiWareHouse.service.dto;
 
 import com.alibaba.excel.annotation.ExcelIgnore;
 import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
 import lombok.Data;
 
 @Data
@@ -10,30 +11,58 @@ public class PsiWareSummaryExportDto {
     @ExcelIgnore
     private String id;
 
+    @ColumnWidth(15)
     @ExcelProperty("商品名称")
     private String tradeName;
 
-    @ExcelProperty("总量")
+    @ColumnWidth(15)
+    @ExcelProperty("入库类型")
+    private String wareHouseTypeName;
+
+    @ColumnWidth(15)
+    @ExcelProperty("历史库存")
+    private String hisTradeNumber;
+
+    @ColumnWidth(15)
+    @ExcelProperty("当月入库")
     private String allNumber;
 
-    @ExcelProperty("领用量")
+    @ColumnWidth(15)
+    @ExcelProperty("当月领取")
     private String notSurplusStock;
 
-    @ExcelProperty("报损量")
+    @ColumnWidth(15)
+    @ExcelProperty("当月报损")
     private String lossNumber;
 
-    @ExcelProperty("剩余量")
-    private String tradeNumber;
+    @ColumnWidth(15)
+    @ExcelProperty("当前库存")
+    private String allCurrentInventory;
 
-    @ExcelProperty("单位")
+    @ExcelIgnore
     private String company;
 
-    @ExcelProperty("提醒数量")
+    @ColumnWidth(30)
+    @ExcelProperty("时间区间")
+    private String dateRange;
+
+    @ExcelIgnore
+    private String tradeNumber;
+
+    @ExcelIgnore
     private String warnNum;
 
-    @ExcelProperty("是否提醒")
+    @ExcelIgnore
     private String warnFlag;
 
     @ExcelIgnore
     private String spec;
+
+
+    @ExcelIgnore
+    private String afterTradeNumber;//日期范围之后的入库数据
+    @ExcelIgnore
+    private String afterLossNumber;//日期范围之后的报损数据
+    @ExcelIgnore
+    private String afterNotSurplusStock;//日期范围之后的报损数据
 }