From 88e1ae77be3fd4bb803fe68b3d04b2478edac550 Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期六, 21 九月 2024 14:15:51 +0800
Subject: [PATCH] 修改接口

---
 ruoyi-system/src/main/java/com/ruoyi/system/service/TOrderStockService.java             |    6 +
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TDataGeneratorController.java    |    1 
 ruoyi-system/src/main/java/com/ruoyi/system/dto/TOrderStockDTO.java                     |    4 +
 ruoyi-system/src/main/java/com/ruoyi/system/query/TOrderSaleQuery.java                  |    2 
 ruoyi-system/src/main/java/com/ruoyi/system/mapper/TOrderSaleGoodsMapper.java           |    2 
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TOrderStockServiceImpl.java    |   77 +++++++++++++++++--
 ruoyi-system/src/main/java/com/ruoyi/system/mapper/TDataGeneratorMapper.java            |    2 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TOrderSaleController.java        |    1 
 ruoyi-system/src/main/java/com/ruoyi/system/domain/TOrderStockGoods.java                |    4 
 ruoyi-system/src/main/java/com/ruoyi/system/mapper/TOrderSaleMapper.java                |    2 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TOrderMealController.java        |    6 +
 ruoyi-system/src/main/resources/mapper/system/TDataGeneratorMapper.xml                  |    2 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TOrderStockController.java       |   11 ++
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TDataGeneratorServiceImpl.java |   86 +++++++++++++++-----
 ruoyi-system/src/main/resources/mapper/system/TOrderStockGoodsMapper.xml                |    4 
 ruoyi-system/src/main/resources/mapper/system/TOrderSaleMapper.xml                      |   12 ++
 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/TimeRangeQueryBody.java   |    5 
 ruoyi-system/src/main/resources/mapper/system/TOrderStockMapper.xml                     |    3 
 ruoyi-system/src/main/java/com/ruoyi/system/domain/TOrderSale.java                      |    3 
 ruoyi-system/src/main/java/com/ruoyi/system/query/TOrderStockQuery.java                 |    2 
 ruoyi-system/src/main/resources/mapper/system/TOrderSaleGoodsMapper.xml                 |    2 
 21 files changed, 195 insertions(+), 42 deletions(-)

diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TDataGeneratorController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TDataGeneratorController.java
index 180b21c..43efa8a 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TDataGeneratorController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TDataGeneratorController.java
@@ -142,6 +142,7 @@
             BeanUtils.copyProperties(orderMealVO, tOrderMealExportExcel);
             tOrderMealExportExcel.setCreateStrTime(DateUtils.localDateToString(orderMealVO.getMealTime()));
             tOrderMealExportExcel.setGoodsList(orderMealVO.getGoodsList().stream().collect(Collectors.joining("\n")));
+            tOrderMealExportExcel.setPersonCount(orderMealVO.getMealPerson());
             orderMeals.add(tOrderMealExportExcel);
         }
         Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(), TOrderMealExportExcel.class, orderMeals);
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TOrderMealController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TOrderMealController.java
index d15881f..81e1109 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TOrderMealController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TOrderMealController.java
@@ -83,7 +83,11 @@
     @PostMapping(value = "/amountSum")
     public AjaxResult<AmountSumVO> amountSum(@RequestBody TOrderMealQuery query) {
         query.setShopId(tokenService.getLoginUser().getObjectId());
-        return AjaxResult.success(orderMealService.amountSum(query));
+        AmountSumVO amountSumVO = orderMealService.amountSum(query);
+        if(amountSumVO.getObligation().compareTo(BigDecimal.ZERO) < 0){
+            amountSumVO.setObligation(BigDecimal.ZERO);
+        }
+        return AjaxResult.success(amountSumVO);
     }
 
     @ApiOperation( value = "查询餐饮详情")
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TOrderSaleController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TOrderSaleController.java
index d5fb8e3..3509703 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TOrderSaleController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TOrderSaleController.java
@@ -68,6 +68,7 @@
     @PostMapping(value = "/pageList")
     public AjaxResult<PageInfo<TOrderSaleVO>> pageList(@RequestBody TOrderSaleQuery query) {
         query.setShopId(tokenService.getLoginUser().getObjectId());
+        query.setIsCover(1);
         return AjaxResult.success(orderSaleService.pageList(query));
     }
 
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TOrderStockController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TOrderStockController.java
index a45038d..b223e2a 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TOrderStockController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TOrderStockController.java
@@ -50,6 +50,7 @@
     @PostMapping(value = "/pageList")
     public AjaxResult<PageInfo<TOrderStockVO>> pageList(@RequestBody TOrderStockQuery query) {
         query.setShopId(tokenService.getLoginUser().getObjectId());
+        query.setIsCover(1);
         return AjaxResult.success(orderStockService.pageList(query));
     }
 
@@ -75,6 +76,16 @@
     }
 
     /**
+     * 编辑进货单下单接口
+     */
+    @ApiOperation( value = "编辑生成进货单接口")
+    @PostMapping(value = "/editGenerator")
+    public AjaxResult<String> editGenerator(@RequestBody TOrderStockDTO dto) {
+        orderStockService.editGenerator(dto);
+        return AjaxResult.success();
+    }
+
+    /**
      * 查看进货单详情
      */
     @ApiOperation( value = "查看进货单详情")
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/TimeRangeQueryBody.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/TimeRangeQueryBody.java
index 539b795..7cde8bc 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/TimeRangeQueryBody.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/TimeRangeQueryBody.java
@@ -4,6 +4,7 @@
 import com.ruoyi.common.core.domain.BasePage;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
+import org.springframework.format.annotation.DateTimeFormat;
 
 import java.text.SimpleDateFormat;
 import java.time.LocalDateTime;
@@ -14,11 +15,11 @@
 public class TimeRangeQueryBody extends BasePage {
 
     @ApiModelProperty("开始时间 格式 yyyy-MM-dd")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
     private Date startTime;
 
     @ApiModelProperty("结束时间 格式 yyyy-MM-dd")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @JsonFormat(pattern = "yyyy-MM-dd")
     private Date endTime;
 
     public String getStartTime() {
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/TOrderSale.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/TOrderSale.java
index da049cb..0d73b3f 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/TOrderSale.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/TOrderSale.java
@@ -67,6 +67,9 @@
     @ApiModelProperty(value = "支付方式 1=现金 2=支付宝 3=微信 4=银行卡 5=其他")
     @TableField("payType")
     private Integer payType;
+    @ApiModelProperty(value = "是否覆盖 1=是 0=否")
+    @TableField("isCover")
+    private Integer isCover;
 
     @ApiModelProperty(value = "销售订单商品")
     @TableField(exist = false)
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/TOrderStockGoods.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/TOrderStockGoods.java
index 525f2b3..323b39a 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/TOrderStockGoods.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/TOrderStockGoods.java
@@ -55,8 +55,8 @@
 
     @ApiModelProperty(value = "本次进货价格")
     @Excel(name = "进货价格",width = 15)
-    @TableField("thisSalePrice")
-    private BigDecimal thisSalePrice;
+    @TableField("thisCostPrice")
+    private BigDecimal thisCostPrice;
 
     @ApiModelProperty(value = "商品图")
     @TableField("goodsPicture")
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/dto/TOrderStockDTO.java b/ruoyi-system/src/main/java/com/ruoyi/system/dto/TOrderStockDTO.java
index a29174d..aa9055f 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/dto/TOrderStockDTO.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/dto/TOrderStockDTO.java
@@ -4,6 +4,7 @@
 import com.ruoyi.system.domain.TOrderSaleGoods;
 import com.ruoyi.system.domain.TOrderStock;
 import com.ruoyi.system.domain.TOrderStockGoods;
+import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -14,4 +15,7 @@
 @ApiModel(value = "进货订单DTO")
 public class TOrderStockDTO extends TOrderStock {
 
+    @ApiModelProperty(value = "是否为数据生成的进货数据添加 1=商家 2=平台")
+    private Integer isGenerator = 1;
+
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TDataGeneratorMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TDataGeneratorMapper.java
index 481711f..5fe3131 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TDataGeneratorMapper.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TDataGeneratorMapper.java
@@ -8,6 +8,7 @@
 import com.ruoyi.system.query.TDataStatisticsQuery;
 import com.ruoyi.system.vo.SalesVolumeVO;
 import com.ruoyi.system.vo.TDataGeneratorVO;
+import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -20,6 +21,7 @@
  * @author xiaochen
  * @since 2024-08-27
  */
+@Mapper
 public interface TDataGeneratorMapper extends BaseMapper<TDataGenerator> {
 
     /**
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TOrderSaleGoodsMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TOrderSaleGoodsMapper.java
index ac1ee80..7ad2d41 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TOrderSaleGoodsMapper.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TOrderSaleGoodsMapper.java
@@ -4,6 +4,7 @@
 import com.ruoyi.common.basic.PageInfo;
 import com.ruoyi.system.domain.TOrderSaleGoods;
 import com.ruoyi.system.vo.SalesRankingVO;
+import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
 import java.math.BigDecimal;
@@ -17,6 +18,7 @@
  * @author xiaochen
  * @since 2024-08-14
  */
+@Mapper
 public interface TOrderSaleGoodsMapper extends BaseMapper<TOrderSaleGoods> {
 
     /**
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TOrderSaleMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TOrderSaleMapper.java
index 29f161e..09630e0 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TOrderSaleMapper.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TOrderSaleMapper.java
@@ -5,6 +5,7 @@
 import com.ruoyi.system.domain.TOrderSale;
 import com.ruoyi.system.query.*;
 import com.ruoyi.system.vo.*;
+import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
 import java.math.BigDecimal;
@@ -19,6 +20,7 @@
  * @author xiaochen
  * @since 2024-08-14
  */
+@Mapper
 public interface TOrderSaleMapper extends BaseMapper<TOrderSale> {
 
     /**
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/query/TOrderSaleQuery.java b/ruoyi-system/src/main/java/com/ruoyi/system/query/TOrderSaleQuery.java
index dfd8f6e..ea656b8 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/query/TOrderSaleQuery.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/query/TOrderSaleQuery.java
@@ -22,4 +22,6 @@
     private Integer timeType;
     @ApiModelProperty(value = "数据生成id")
     private Long generatorId;
+    @ApiModelProperty(value = "是否覆盖")
+    private Integer isCover;
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/query/TOrderStockQuery.java b/ruoyi-system/src/main/java/com/ruoyi/system/query/TOrderStockQuery.java
index 2d731d8..2842974 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/query/TOrderStockQuery.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/query/TOrderStockQuery.java
@@ -19,4 +19,6 @@
     private Long shopId;
     @ApiModelProperty(value = "数据生成id")
     private Long generatorId;
+    @ApiModelProperty(value = "是否覆盖")
+    private Integer isCover;
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/TOrderStockService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/TOrderStockService.java
index 78f95d2..b64de3b 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/TOrderStockService.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/TOrderStockService.java
@@ -55,4 +55,10 @@
      * @return
      */
     List<TOrderStockVO> stockGeneratorExport(TDataGeneratorStockQuery query);
+
+    /**
+     * 编辑生成进货单接口
+     * @param dto
+     */
+    void editGenerator(TOrderStockDTO dto);
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TDataGeneratorServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TDataGeneratorServiceImpl.java
index eb36fce..df04761 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TDataGeneratorServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TDataGeneratorServiceImpl.java
@@ -235,8 +235,25 @@
             long end = System.currentTimeMillis() - start;
             System.err.println("相差时间========="+end);
         }else {
-            this.removeById(dataGenerator);
-            throw new ServiceException("数据生成不在营业额范围内");
+            // 生成失败 进行重试
+            String key = dto.getShopId()+"_fail";
+            if(redisCache.hasKey(key)){
+                Object cacheObject = redisCache.getCacheObject(key);
+                int i = Integer.parseInt(cacheObject.toString());
+                if(i == 10){
+                    this.removeById(dataGenerator);
+                    redisCache.deleteObject(key);
+                    throw new ServiceException("多次匹配数据不成功,请调整营业额范围");
+                }else {
+                    this.removeById(dataGenerator);
+                    redisCache.setCacheObject(key,i+1);
+                    this.mealDataGenerator(dto);
+                }
+            }else {
+                this.removeById(dataGenerator);
+                redisCache.setCacheObject(key,1);
+                this.mealDataGenerator(dto);
+            }
         }
 
     }
@@ -276,6 +293,7 @@
         orderSales.forEach(e->{
             e.setGeneratorId(dataGenerator.getId());
             e.setOrderNum(OrderNumConstants.SALE + CodeGenerateUtils.generateVolumeSn());
+            e.setIsCover(0);
         });
         List<TOrderSaleGoods> orderSaleGoods = orderSales.stream().map(TOrderSale::getOrderSaleGoods).flatMap(Collection::stream).collect(Collectors.toList());
 
@@ -288,8 +306,9 @@
             if(i==stockDataSets.size()-1){
                 // 最后一次
                 LocalDate endTime = LocalDate.now();
-                List<Long> saleIds = orderSales.stream().filter(e -> e.getOrderTime().compareTo(startTime) >= 0 && e.getOrderTime().compareTo(endTime) <= 0).map(TOrderSale::getId).collect(Collectors.toList());
-                List<TOrderSaleGoods> orderSaleGoodsList = orderSaleGoods.stream().filter(e -> saleIds.contains(e.getOrderId())).collect(Collectors.toList());
+                List<TOrderSale> collect = orderSales.stream().filter(e -> e.getOrderTime().compareTo(startTime) >= 0 && e.getOrderTime().compareTo(endTime) <= 0).collect(Collectors.toList());
+                List<TOrderSaleGoods> orderSaleGoodsList = new ArrayList<>();
+                collect.forEach(e->orderSaleGoodsList.addAll(e.getOrderSaleGoods()));
                 // 根据商品新生成一条数据
                 TOrderStock orderStock = new TOrderStock();
                 orderStock.setStockNum(OrderNumConstants.STOCK + CodeGenerateUtils.generateVolumeSn());
@@ -306,10 +325,13 @@
                     tOrderStockGoods.setGoodsNum(v.get(0).getGoodsNum());
                     tOrderStockGoods.setCostPrice(v.get(0).getGoodsCostPrice());
                     tOrderStockGoods.setSalePrice(v.get(0).getGoodsSalePrice());
-                    tOrderStockGoods.setThisSalePrice(v.get(0).getThisSalePrice());
+//                    tOrderStockGoods.setThisCostPrice(v.get(0).getThisSalePrice());
                     tOrderStockGoods.setGoodsPicture(v.get(0).getGoodsPicture());
                     tOrderStockGoods.setGoodsId(v.get(0).getGoodsId());
-                    tOrderStockGoods.setStockCount(v.stream().mapToInt(TOrderSaleGoods::getGoodsCount).sum());
+                    int sum = v.stream().mapToInt(TOrderSaleGoods::getGoodsCount).sum();
+                    BigDecimal rate = start.getLossRate().divide(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_HALF_UP);
+                    BigDecimal bigDecimal = new BigDecimal(sum).divide(rate).setScale(0, BigDecimal.ROUND_HALF_UP);
+                    tOrderStockGoods.setStockCount(Integer.parseInt(bigDecimal.toString().split("\\.")[0]));
                     orderStockGoods.add(tOrderStockGoods);
                 });
                 orderStock.setOrderStockGoods(orderStockGoods);
@@ -318,8 +340,9 @@
             }else if(i==0 && Objects.nonNull(stockDataSet)){
                 // 第一次 第一次的进货时间为上一次的结束时间  开始时间为上一次的开始时间
                 LocalDate startTime1 = stockDataSet.getStockDate();
-                List<Long> saleIds = orderSales.stream().filter(e -> e.getOrderTime().compareTo(startTime) < 0).map(TOrderSale::getId).collect(Collectors.toList());
-                List<TOrderSaleGoods> orderSaleGoodsList = orderSaleGoods.stream().filter(e -> saleIds.contains(e.getOrderId())).collect(Collectors.toList());
+                List<TOrderSale> collect = orderSales.stream().filter(e -> e.getOrderTime().compareTo(startTime) < 0).collect(Collectors.toList());
+                List<TOrderSaleGoods> orderSaleGoodsList = new ArrayList<>();
+                collect.forEach(e->orderSaleGoodsList.addAll(e.getOrderSaleGoods()));
                 // 查询上一次开始之后的订单数据
                 List<TOrderSale> orderSales1 = orderSaleService.list(new LambdaQueryWrapper<TOrderSale>().gt(TOrderSale::getOrderTime, startTime1));
                 List<Long> saleIds1 = orderSales1.stream().map(TOrderSale::getId).collect(Collectors.toList());
@@ -343,10 +366,13 @@
                     tOrderStockGoods.setGoodsNum(v.get(0).getGoodsNum());
                     tOrderStockGoods.setCostPrice(v.get(0).getGoodsCostPrice());
                     tOrderStockGoods.setSalePrice(v.get(0).getGoodsSalePrice());
-                    tOrderStockGoods.setThisSalePrice(v.get(0).getThisSalePrice());
+//                    tOrderStockGoods.setThisCostPrice(v.get(0).getThisSalePrice());
                     tOrderStockGoods.setGoodsPicture(v.get(0).getGoodsPicture());
                     tOrderStockGoods.setGoodsId(v.get(0).getGoodsId());
-                    tOrderStockGoods.setStockCount(v.stream().mapToInt(TOrderSaleGoods::getGoodsCount).sum());
+                    int sum = v.stream().mapToInt(TOrderSaleGoods::getGoodsCount).sum();
+                    BigDecimal rate = start.getLossRate().divide(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_HALF_UP);
+                    BigDecimal bigDecimal = new BigDecimal(sum).divide(rate).setScale(0, BigDecimal.ROUND_HALF_UP);
+                    tOrderStockGoods.setStockCount(Integer.parseInt(bigDecimal.toString().split("\\.")[0]));
                     orderStockGoods.add(tOrderStockGoods);
                 });
                 orderStock.setOrderStockGoods(orderStockGoods);
@@ -355,8 +381,9 @@
                 // 处理第一次到下一次的数据
                 TStockDataSet end = stockDataSets.get(i + 1);
                 LocalDate endTime = end.getStockDate();
-                List<Long> saleIds2 = orderSales.stream().filter(e -> e.getOrderTime().compareTo(startTime) >= 0 && e.getOrderTime().compareTo(endTime) < 0).map(TOrderSale::getId).collect(Collectors.toList());
-                List<TOrderSaleGoods> orderSaleGoodsList2 = orderSaleGoods.stream().filter(e -> saleIds2.contains(e.getOrderId())).collect(Collectors.toList());
+                List<TOrderSale> collect1 = orderSales.stream().filter(e -> e.getOrderTime().compareTo(startTime) >= 0 && e.getOrderTime().compareTo(endTime) < 0).collect(Collectors.toList());
+                List<TOrderSaleGoods> orderSaleGoodsList2 = new ArrayList<>();
+                collect1.forEach(e->orderSaleGoodsList2.addAll(e.getOrderSaleGoods()));
                 // 根据商品新生成一条数据
                 TOrderStock orderStock1 = new TOrderStock();
                 orderStock1.setStockNum(OrderNumConstants.STOCK + CodeGenerateUtils.generateVolumeSn());
@@ -373,10 +400,13 @@
                     tOrderStockGoods.setGoodsNum(v.get(0).getGoodsNum());
                     tOrderStockGoods.setCostPrice(v.get(0).getGoodsCostPrice());
                     tOrderStockGoods.setSalePrice(v.get(0).getGoodsSalePrice());
-                    tOrderStockGoods.setThisSalePrice(v.get(0).getThisSalePrice());
+//                    tOrderStockGoods.setThisCostPrice(v.get(0).getThisSalePrice());
                     tOrderStockGoods.setGoodsPicture(v.get(0).getGoodsPicture());
                     tOrderStockGoods.setGoodsId(v.get(0).getGoodsId());
-                    tOrderStockGoods.setStockCount(v.stream().mapToInt(TOrderSaleGoods::getGoodsCount).sum());
+                    int sum = v.stream().mapToInt(TOrderSaleGoods::getGoodsCount).sum();
+                    BigDecimal rate = start.getLossRate().divide(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_HALF_UP);
+                    BigDecimal bigDecimal = new BigDecimal(sum).divide(rate).setScale(0, BigDecimal.ROUND_HALF_UP);
+                    tOrderStockGoods.setStockCount(Integer.parseInt(bigDecimal.toString().split("\\.")[0]));
                     orderStockGoods1.add(tOrderStockGoods);
                 });
                 orderStock1.setOrderStockGoods(orderStockGoods1);
@@ -385,8 +415,9 @@
             }else {
                 TStockDataSet end = stockDataSets.get(i + 1);
                 LocalDate endTime = end.getStockDate();
-                List<Long> saleIds = orderSales.stream().filter(e -> e.getOrderTime().compareTo(startTime) >= 0 && e.getOrderTime().compareTo(endTime) < 0).map(TOrderSale::getId).collect(Collectors.toList());
-                List<TOrderSaleGoods> orderSaleGoodsList = orderSaleGoods.stream().filter(e -> saleIds.contains(e.getOrderId())).collect(Collectors.toList());
+                List<TOrderSale> collect = orderSales.stream().filter(e -> e.getOrderTime().compareTo(startTime) >= 0 && e.getOrderTime().compareTo(endTime) < 0).collect(Collectors.toList());
+                List<TOrderSaleGoods> orderSaleGoodsList = new ArrayList<>();
+                collect.forEach(e->orderSaleGoodsList.addAll(e.getOrderSaleGoods()));
                 // 根据商品新生成一条数据
                 TOrderStock orderStock = new TOrderStock();
                 orderStock.setStockNum(OrderNumConstants.STOCK + CodeGenerateUtils.generateVolumeSn());
@@ -403,10 +434,13 @@
                     tOrderStockGoods.setGoodsNum(v.get(0).getGoodsNum());
                     tOrderStockGoods.setCostPrice(v.get(0).getGoodsCostPrice());
                     tOrderStockGoods.setSalePrice(v.get(0).getGoodsSalePrice());
-                    tOrderStockGoods.setThisSalePrice(v.get(0).getThisSalePrice());
+//                    tOrderStockGoods.setThisCostPrice(v.get(0).getThisSalePrice());
                     tOrderStockGoods.setGoodsPicture(v.get(0).getGoodsPicture());
                     tOrderStockGoods.setGoodsId(v.get(0).getGoodsId());
-                    tOrderStockGoods.setStockCount(v.stream().mapToInt(TOrderSaleGoods::getGoodsCount).sum());
+                    int sum = v.stream().mapToInt(TOrderSaleGoods::getGoodsCount).sum();
+                    BigDecimal rate = start.getLossRate().divide(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_HALF_UP);
+                    BigDecimal bigDecimal = new BigDecimal(sum).divide(rate).setScale(0, BigDecimal.ROUND_HALF_UP);
+                    tOrderStockGoods.setStockCount(Integer.parseInt(bigDecimal.toString().split("\\.")[0]));
                     orderStockGoods.add(tOrderStockGoods);
                 });
                 orderStock.setOrderStockGoods(orderStockGoods);
@@ -434,10 +468,10 @@
 //        orderSaleGoods.forEach(e->e.setTypeName(list.stream().filter(m->m.getId().equals(e.getTypeId())).findFirst().get().getTypeName()));
         orderSaleGoods.forEach(e->{
             e.setId(null);
+            e.setGoodsCostPrice(null);
         });
         orderSaleGoodsService.saveBatch(orderSaleGoods);
         // 添加数据
-        stockList.forEach(e->e.setShopId(dataGenerator.getShopId()));
         orderStockService.saveBatch(stockList);
         for (TOrderStock stock : stockList) {
             stock.getOrderStockGoods().forEach(e->e.setOrderId(stock.getId()));
@@ -495,15 +529,21 @@
         if(dataGenerator.getOrderType() == 1){
             // 删除时间段的数据
             orderMealService.remove(Wrappers.lambdaQuery(TOrderMeal.class)
-                    .gt(TOrderMeal::getMealTime, dataGenerator.getStartTime())
-                    .lt(TOrderMeal::getMealTime, dataGenerator.getEndTime()));
+                    .ge(TOrderMeal::getMealTime, dataGenerator.getStartTime())
+                    .le(TOrderMeal::getMealTime, dataGenerator.getEndTime()));
             // 修改覆盖类型为已覆盖
             orderMealService.update(Wrappers.lambdaUpdate(TOrderMeal.class).set(TOrderMeal::getIsCover, 1).eq(TOrderMeal::getGeneratorId, id));
         }else {
             // 删除时间段的数据
+            orderSaleService.remove(Wrappers.lambdaQuery(TOrderSale.class)
+                    .ge(TOrderSale::getOrderTime, dataGenerator.getStartTime())
+                    .le(TOrderSale::getOrderTime, dataGenerator.getEndTime()));
+            // 修改覆盖类型为已覆盖
+            orderStockService.update(Wrappers.lambdaUpdate(TOrderStock.class).set(TOrderStock::getIsCover, 1).eq(TOrderStock::getGeneratorId, id));
+            // 删除时间段的数据
             orderStockService.remove(Wrappers.lambdaQuery(TOrderStock.class)
-                    .gt(TOrderStock::getStockTime, dataGenerator.getStartTime())
-                    .lt(TOrderStock::getStockTime, dataGenerator.getEndTime()));
+                    .ge(TOrderStock::getStockTime, dataGenerator.getStartTime())
+                    .le(TOrderStock::getStockTime, dataGenerator.getEndTime()));
             // 修改覆盖类型为已覆盖
             orderStockService.update(Wrappers.lambdaUpdate(TOrderStock.class).set(TOrderStock::getIsCover, 1).eq(TOrderStock::getGeneratorId, id));
         }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TOrderStockServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TOrderStockServiceImpl.java
index 0de1014..c365360 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TOrderStockServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TOrderStockServiceImpl.java
@@ -6,17 +6,17 @@
 import com.ruoyi.common.constant.OrderNumConstants;
 import com.ruoyi.common.utils.CodeGenerateUtils;
 import com.ruoyi.common.utils.DateUtils;
-import com.ruoyi.system.domain.TOrderSaleGoods;
-import com.ruoyi.system.domain.TOrderStock;
-import com.ruoyi.system.domain.TOrderStockGoods;
+import com.ruoyi.system.domain.*;
 import com.ruoyi.system.dto.TOrderSaleDTO;
 import com.ruoyi.system.dto.TOrderStockDTO;
+import com.ruoyi.system.mapper.TDataGeneratorMapper;
+import com.ruoyi.system.mapper.TOrderSaleGoodsMapper;
+import com.ruoyi.system.mapper.TOrderSaleMapper;
 import com.ruoyi.system.mapper.TOrderStockMapper;
 import com.ruoyi.system.query.TDataGeneratorQuery;
 import com.ruoyi.system.query.TDataGeneratorStockQuery;
 import com.ruoyi.system.query.TOrderStockQuery;
-import com.ruoyi.system.service.TOrderStockGoodsService;
-import com.ruoyi.system.service.TOrderStockService;
+import com.ruoyi.system.service.*;
 import com.ruoyi.system.vo.TDataGeneratorVO;
 import com.ruoyi.system.vo.TOrderStockVO;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -24,10 +24,9 @@
 import org.springframework.util.CollectionUtils;
 
 import java.math.BigDecimal;
+import java.time.LocalDate;
 import java.time.LocalDateTime;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -43,6 +42,14 @@
 
     @Autowired
     private TOrderStockGoodsService tOrderStockGoodsService;
+    @Autowired
+    private TOrderSaleMapper orderSaleMapper;
+    @Autowired
+    private TOrderSaleGoodsService orderSaleGoodsService;
+    @Autowired
+    private TStockDataSetService stockDataSetService;
+    @Autowired
+    private TDataGeneratorMapper dataGeneratorMapper;
     @Override
     public void add(TOrderStockDTO dto) {
         // 进货单号
@@ -50,6 +57,9 @@
         List<TOrderStockGoods> orderStockGoods = dto.getOrderStockGoods();
 //        BigDecimal sum = orderStockGoods.stream().map(TOrderStockGoods::getStockPrice).reduce(BigDecimal::add).get();
 //        dto.setStockTotalPrice(sum);
+        if(dto.getIsGenerator().equals(2)){
+            dto.setIsCover(0);
+        }
         this.save(dto);
         // 添加商品
         orderStockGoods.forEach(orderSaleGoods1 -> {
@@ -174,4 +184,55 @@
         });
         return list;
     }
+
+    @Override
+    public void editGenerator(TOrderStockDTO dto) {
+        TDataGenerator dataGenerator = dataGeneratorMapper.selectById(dto.getGeneratorId());
+        // 查询生成数据的配置
+        List<TStockDataSet> list = stockDataSetService.list(Wrappers.lambdaQuery(TStockDataSet.class)
+                .eq(TStockDataSet::getGeneratorId, dto.getGeneratorId()));
+        list = list.stream().sorted(Comparator.comparing(TStockDataSet::getStockDate)).collect(Collectors.toList());
+        String startTime = null;
+        String endTime = null;
+        Iterator<TStockDataSet> iterator = list.iterator();
+        while (iterator.hasNext()){
+            TStockDataSet next = iterator.next();
+            if(next.getStockDate().compareTo(dto.getStockTime()) == 0){
+                startTime = DateUtils.localDateToString(next.getStockDate());
+            }
+            if(Objects.nonNull(startTime)){
+                endTime = DateUtils.localDateToString(next.getStockDate());
+            }
+            if(Objects.nonNull(endTime)){
+                break;
+            }
+        }
+        if(Objects.isNull(endTime)){
+            endTime = DateUtils.localDateToString(dataGenerator.getEndTime());
+        }
+        // 查询该数据生成的销售单的数据
+        List<TOrderSale> orderSales = orderSaleMapper.selectList(Wrappers.lambdaQuery(TOrderSale.class)
+                .eq(TOrderSale::getGeneratorId, dto.getGeneratorId())
+                .between(TOrderSale::getOrderTime, startTime + " 00:00:00", endTime + " 23:59:59"));
+        List<Long> saleOrderIds = orderSales.stream().map(TOrderSale::getId).collect(Collectors.toList());
+        List<TOrderStockGoods> orderStockGoods = dto.getOrderStockGoods();
+        if(!CollectionUtils.isEmpty(saleOrderIds)){
+            List<TOrderSaleGoods> orderSaleGoods = orderSaleGoodsService.list(Wrappers.lambdaQuery(TOrderSaleGoods.class)
+                    .in(TOrderSaleGoods::getOrderId, saleOrderIds));
+            for (TOrderStockGoods orderStockGood : orderStockGoods) {
+                orderSaleGoods.stream().filter(e->e.getGoodsName().equals(orderStockGood.getGoodsName())).forEach(e->e.setGoodsCostPrice(orderStockGood.getThisCostPrice()));
+            }
+            orderSaleGoodsService.updateBatchById(orderSaleGoods);
+        }
+        this.updateById(dto);
+        // 刪除原有商品
+        tOrderStockGoodsService.remove(Wrappers.lambdaQuery(TOrderStockGoods.class)
+                .eq(TOrderStockGoods::getOrderId,dto.getId()));
+        // 添加商品
+        orderStockGoods.forEach(orderSaleGoods1 -> {
+            orderSaleGoods1.setId(null);
+            orderSaleGoods1.setOrderId(dto.getId());
+        });
+        tOrderStockGoodsService.saveBatch(orderStockGoods);
+    }
 }
diff --git a/ruoyi-system/src/main/resources/mapper/system/TDataGeneratorMapper.xml b/ruoyi-system/src/main/resources/mapper/system/TDataGeneratorMapper.xml
index 2d12d46..c00c698 100644
--- a/ruoyi-system/src/main/resources/mapper/system/TDataGeneratorMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/TDataGeneratorMapper.xml
@@ -42,7 +42,7 @@
                 and ts.shopName like concat('%', #{query.shopName}, '%')
             </if>
             <if test="query.userName != null and query.userName != ''">
-                and tdg.shopName like concat('%', #{query.userName}, '%')
+                and tdg.userName like concat('%', #{query.userName}, '%')
             </if>
             <if test="query.status != null">
                 and tdg.status = #{query.status}
diff --git a/ruoyi-system/src/main/resources/mapper/system/TOrderSaleGoodsMapper.xml b/ruoyi-system/src/main/resources/mapper/system/TOrderSaleGoodsMapper.xml
index 96c451a..a55b961 100644
--- a/ruoyi-system/src/main/resources/mapper/system/TOrderSaleGoodsMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/TOrderSaleGoodsMapper.xml
@@ -22,7 +22,7 @@
         id, orderId, goodsNum, goodsName, goodsCostPrice, goodsSalePrice, goodsCount, thisSalePrice, goodsPicture,typeId,goodsId
     </sql>
     <select id="costTotal" resultType="java.math.BigDecimal">
-        select sum(goodsCostPrice) from t_order_meal_goods
+        select sum(goodsCostPrice) from t_order_sale_goods
         <where>
             <if test="ids != null and ids.size()>0">
                 AND orderId IN
diff --git a/ruoyi-system/src/main/resources/mapper/system/TOrderSaleMapper.xml b/ruoyi-system/src/main/resources/mapper/system/TOrderSaleMapper.xml
index 8f972a6..7176430 100644
--- a/ruoyi-system/src/main/resources/mapper/system/TOrderSaleMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/TOrderSaleMapper.xml
@@ -19,14 +19,15 @@
         <result column="shopId" property="shopId" />
         <result column="generatorId" property="generatorId" />
         <result column="payType" property="payType" />
+        <result column="isCover" property="isCover" />
     </resultMap>
 
     <!-- 通用查询结果列 -->
     <sql id="Base_Column_List">
-        id, orderTime, remark, createTime, updateTime, disabled, createBy, updateBy, orderNum, status,orderMoney,payMoney,shopId,generatorId,payType
+        id, orderTime, remark, createTime, updateTime, disabled, createBy, updateBy, orderNum, status,orderMoney,payMoney,shopId,generatorId,payType,isCover
     </sql>
     <select id="pageList" resultType="com.ruoyi.system.vo.TOrderSaleVO">
-        select id, orderTime, remark, createTime, updateTime, disabled, createBy, updateBy, orderNum, status,orderMoney,payMoney,shopId,generatorId,payType
+        select id, orderTime, remark, createTime, updateTime, disabled, createBy, updateBy, orderNum, status,orderMoney,payMoney,shopId,generatorId,payType,isCover
         from t_order_sale
         <where>
             <if test="query.orderNum != null and query.orderNum != ''">
@@ -40,6 +41,9 @@
             </if>
             <if test="query.shopId != null">
                 and shopId = #{query.shopId}
+            </if>
+            <if test="query.isCover != null">
+                and isCover = #{query.isCover}
             </if>
             <if test="query.generatorId != null">
                 and generatorId = #{query.generatorId}
@@ -75,6 +79,7 @@
                 AND (createTime BETWEEN #{query.startTime} AND #{query.endTime})
             </if>
             AND disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()}
+            AND isCover = 1
         </where>
     </select>
     <select id="salesVolume" resultType="com.ruoyi.system.vo.SalesVolumeVO">
@@ -93,6 +98,7 @@
                 AND (orderTime BETWEEN #{query.startTime} AND #{query.endTime})
             </if>
             AND disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()}
+            AND isCover = 1
         </where>
     </select>
     <select id="exportOrderSale" resultType="com.ruoyi.system.vo.TOrderSaleVO">
@@ -115,6 +121,7 @@
                 AND (createTime BETWEEN #{query.startTime} AND #{query.endTime})
             </if>
             AND disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()}
+            AND isCover = 1
         </where>
         ORDER BY orderTime DESC
     </select>
@@ -131,6 +138,7 @@
                 AND (createTime BETWEEN #{query.startTime} AND #{query.endTime})
             </if>
             AND disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()}
+            AND isCover = 1
         </where>
     </select>
     <select id="getDataGeneratorSaleDetail" resultType="java.util.Map">
diff --git a/ruoyi-system/src/main/resources/mapper/system/TOrderStockGoodsMapper.xml b/ruoyi-system/src/main/resources/mapper/system/TOrderStockGoodsMapper.xml
index 9d3c33b..90157d5 100644
--- a/ruoyi-system/src/main/resources/mapper/system/TOrderStockGoodsMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/TOrderStockGoodsMapper.xml
@@ -12,13 +12,13 @@
         <result column="salePrice" property="salePrice" />
         <result column="goodsPicture" property="goodsPicture" />
         <result column="stockCount" property="stockCount" />
-        <result column="thisSalePrice" property="thisSalePrice" />
+        <result column="thisCostPrice" property="thisCostPrice" />
         <result column="goodsId" property="goodsId" />
     </resultMap>
 
     <!-- 通用查询结果列 -->
     <sql id="Base_Column_List">
-        id, orderId, goodsNum, goodsName, costPrice, salePrice, goodsPicture, stockCount,thisSalePrice,goodsId
+        id, orderId, goodsNum, goodsName, costPrice, salePrice, goodsPicture, stockCount,thisCostPrice,goodsId
     </sql>
 
 </mapper>
diff --git a/ruoyi-system/src/main/resources/mapper/system/TOrderStockMapper.xml b/ruoyi-system/src/main/resources/mapper/system/TOrderStockMapper.xml
index cf4c8da..1604577 100644
--- a/ruoyi-system/src/main/resources/mapper/system/TOrderStockMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/TOrderStockMapper.xml
@@ -35,6 +35,9 @@
             <if test="query.generatorId != null">
                 AND generatorId = #{query.generatorId}
             </if>
+            <if test="query.isCover != null">
+                AND isCover = #{query.isCover}
+            </if>
             <if test="query.endTime != null and query.startTime != null">
                 AND (stockTime BETWEEN #{query.startTime} and #{query.endTime})
             </if>

--
Gitblit v1.7.1