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