From 508f3e225df87e0da974424981e7782fc5ce875c Mon Sep 17 00:00:00 2001 From: xuhy <3313886187@qq.com> Date: 星期一, 19 五月 2025 14:21:39 +0800 Subject: [PATCH] 修改 --- ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TOrderStockServiceImpl.java | 242 +++++++++++++++++++++++++++++++++++++----------- 1 files changed, 185 insertions(+), 57 deletions(-) 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 97887c2..c51cb1b 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 @@ -5,25 +5,26 @@ import com.ruoyi.common.basic.PageInfo; import com.ruoyi.common.constant.OrderNumConstants; import com.ruoyi.common.utils.CodeGenerateUtils; -import com.ruoyi.system.domain.TOrderSaleGoods; -import com.ruoyi.system.domain.TOrderStock; -import com.ruoyi.system.domain.TOrderStockGoods; +import com.ruoyi.common.utils.DateUtils; +import com.ruoyi.common.utils.StringUtils; +import com.ruoyi.system.domain.*; import com.ruoyi.system.dto.TOrderSaleDTO; import com.ruoyi.system.dto.TOrderStockDTO; -import com.ruoyi.system.mapper.TOrderStockMapper; +import com.ruoyi.system.mapper.*; +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; import org.springframework.stereotype.Service; +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; /** @@ -39,16 +40,41 @@ @Autowired private TOrderStockGoodsService tOrderStockGoodsService; + @Autowired + private TOrderSaleMapper orderSaleMapper; + @Autowired + private TOrderSaleGoodsService orderSaleGoodsService; + @Autowired + private TStockDataSetService stockDataSetService; + @Autowired + private TDataGeneratorMapper dataGeneratorMapper; + @Autowired + private TGoodsService goodsService; @Override public void add(TOrderStockDTO dto) { // 进货单号 - dto.setStockNum(OrderNumConstants.STOCK + CodeGenerateUtils.generateOrderSn()); + dto.setStockNum(OrderNumConstants.STOCK + CodeGenerateUtils.generateVolumeSn()); 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 -> orderSaleGoods1.setOrderId(dto.getId())); + List<TGoods> goods = goodsService.list(Wrappers.lambdaQuery(TGoods.class).eq(TGoods::getShopId,dto.getShopId())); + List<TGoods> goodsUpdateList = new ArrayList<>(); + // 添加商品 + orderStockGoods.forEach(orderSaleGoods1 -> { + orderSaleGoods1.setId(null); + orderSaleGoods1.setOrderId(dto.getId()); + for (TGoods good : goods) { + if(good.getGoodsNum().equals(orderSaleGoods1.getGoodsNum())){ + good.setInventory(orderSaleGoods1.getStockCount()+good.getInventory()); + goodsUpdateList.add(good); + } + } + }); + goodsService.updateBatchById(goodsUpdateList); tOrderStockGoodsService.saveBatch(orderStockGoods); } @@ -62,58 +88,104 @@ tOrderStockGoodsService.remove(Wrappers.lambdaQuery(TOrderStockGoods.class) .eq(TOrderStockGoods::getOrderId,dto.getId())); // 添加商品 - orderStockGoods.forEach(orderSaleGoods1 -> orderSaleGoods1.setOrderId(dto.getId())); + orderStockGoods.forEach(orderSaleGoods1 -> { + orderSaleGoods1.setId(null); + orderSaleGoods1.setOrderId(dto.getId()); + }); tOrderStockGoodsService.saveBatch(orderStockGoods); } @Override public PageInfo<TOrderStockVO> pageList(TOrderStockQuery query) { - - // 判断时间 - if(Objects.nonNull(query.getTimeType())){ - LocalDateTime startTime = null; - LocalDateTime endTime = null; - switch (query.getTimeType()){ - case 1: - // 今日 - startTime = LocalDateTime.MIN; - endTime = LocalDateTime.MAX; - break; - case 2: - // 昨日 - startTime = LocalDateTime.now().minusDays(1); - endTime = LocalDateTime.now().minusDays(1); - break; - case 3: - // 近7天 - startTime = LocalDateTime.now().minusDays(7); - endTime = LocalDateTime.now(); - break; - case 4: - // 近30天 - startTime = LocalDateTime.now().minusDays(30); - endTime = LocalDateTime.now(); - break; + if(StringUtils.isEmpty(query.getStartTime()) && StringUtils.isEmpty(query.getEndTime())){ + // 判断时间 + if(Objects.nonNull(query.getTimeType())){ + LocalDateTime startTime = null; + LocalDateTime endTime = null; + switch (query.getTimeType()){ + case 1: + // 今日 + startTime = DateUtils.getDayStart(LocalDateTime.now()); + endTime = DateUtils.getDayEnd(LocalDateTime.now()); + break; + case 2: + // 昨日 + startTime = DateUtils.getDayStart(LocalDateTime.now().minusDays(1)); + endTime = DateUtils.getDayEnd(LocalDateTime.now().minusDays(1)); + break; + case 3: + // 近7天 + startTime = DateUtils.getDayStart(LocalDateTime.now().minusDays(7)); + endTime = DateUtils.getDayEnd(LocalDateTime.now()); + break; + case 4: + // 近30天 + startTime = DateUtils.getDayStart(LocalDateTime.now().minusDays(30)); + endTime = DateUtils.getDayEnd(LocalDateTime.now()); + break; + } + query.setStartTime(DateUtils.localDateTimeToDate(startTime)); + query.setEndTime(DateUtils.localDateTimeToDate(endTime)); } - query.setStartTime(startTime); - query.setEndTime(endTime); } PageInfo<TOrderStockVO> pageInfo = new PageInfo<>(query.getPageNum(),query.getPageSize()); List<TOrderStockVO> list = this.baseMapper.pageList(query,pageInfo); // 查询商品 List<Long> orderIds = list.stream().map(TOrderStockVO::getId).collect(Collectors.toList()); - List<TOrderStockGoods> orderStockGoods = tOrderStockGoodsService.list(Wrappers.lambdaQuery(TOrderStockGoods.class) - .in(TOrderStockGoods::getOrderId, orderIds)); - list.forEach(orderSale -> { - List<TOrderStockGoods> collect = orderStockGoods.stream().filter(orderSaleGoods -> orderSaleGoods.getOrderId().equals(orderSale.getId())).collect(Collectors.toList()); - orderSale.setOrderStockGoods(collect); - }); + if(!CollectionUtils.isEmpty(orderIds)){ + List<TOrderStockGoods> orderStockGoods = tOrderStockGoodsService.list(Wrappers.lambdaQuery(TOrderStockGoods.class) + .in(TOrderStockGoods::getOrderId, orderIds)); + list.forEach(orderStockVO -> { + List<TOrderStockGoods> collect = orderStockGoods.stream().filter(orderSaleGoods -> orderSaleGoods.getOrderId().equals(orderStockVO.getId())).collect(Collectors.toList()); + if(!CollectionUtils.isEmpty(collect)){ + orderStockVO.setOrderStockGoods(collect); + int sum = collect.stream().mapToInt(TOrderStockGoods::getStockCount).sum(); + orderStockVO.setOrderStockCount(sum); + BigDecimal money = BigDecimal.ZERO; + for (TOrderStockGoods tOrderStockGoods : collect) { + money = money.add(tOrderStockGoods.getThisCostPrice().multiply(new BigDecimal(tOrderStockGoods.getStockCount()))); + } + orderStockVO.setTotalPrice(money); + } + }); + } pageInfo.setRecords(list); return pageInfo; } @Override public Map<String, Object> getDataGeneratorStockDetail(TDataGeneratorStockQuery query) { + if(StringUtils.isEmpty(query.getStartTime()) && StringUtils.isEmpty(query.getEndTime())){ + // 判断时间 + if(Objects.nonNull(query.getTimeType())){ + LocalDateTime startTime = null; + LocalDateTime endTime = null; + switch (query.getTimeType()){ + case 1: + // 今日 + startTime = DateUtils.getDayStart(LocalDateTime.now()); + endTime = DateUtils.getDayEnd(LocalDateTime.now()); + break; + case 2: + // 昨日 + startTime = DateUtils.getDayStart(LocalDateTime.now().minusDays(1)); + endTime = DateUtils.getDayEnd(LocalDateTime.now().minusDays(1)); + break; + case 3: + // 近7天 + startTime = DateUtils.getDayStart(LocalDateTime.now().minusDays(7)); + endTime = DateUtils.getDayEnd(LocalDateTime.now()); + break; + case 4: + // 近30天 + startTime = DateUtils.getDayStart(LocalDateTime.now().minusDays(30)); + endTime = DateUtils.getDayEnd(LocalDateTime.now()); + break; + } + query.setStartTime(DateUtils.localDateTimeToDate(startTime)); + query.setEndTime(DateUtils.localDateTimeToDate(endTime)); + } + } return this.baseMapper.getDataGeneratorStockDetail(query); } @@ -125,27 +197,27 @@ switch (query.getTimeType()){ case 1: // 今日 - startTime = LocalDateTime.MIN; - endTime = LocalDateTime.MAX; + startTime = DateUtils.getDayStart(LocalDateTime.now()); + endTime = DateUtils.getDayEnd(LocalDateTime.now()); break; case 2: // 昨日 - startTime = LocalDateTime.now().minusDays(1); - endTime = LocalDateTime.now().minusDays(1); + startTime = DateUtils.getDayStart(LocalDateTime.now().minusDays(1)); + endTime = DateUtils.getDayEnd(LocalDateTime.now().minusDays(1)); break; case 3: // 近7天 - startTime = LocalDateTime.now().minusDays(7); - endTime = LocalDateTime.now(); + startTime = DateUtils.getDayStart(LocalDateTime.now().minusDays(7)); + endTime = DateUtils.getDayEnd(LocalDateTime.now()); break; case 4: // 近30天 - startTime = LocalDateTime.now().minusDays(30); - endTime = LocalDateTime.now(); + startTime = DateUtils.getDayStart(LocalDateTime.now().minusDays(30)); + endTime = DateUtils.getDayEnd(LocalDateTime.now()); break; } - query.setStartTime(startTime); - query.setEndTime(endTime); + query.setStartTime(DateUtils.localDateTimeToDate(startTime)); + query.setEndTime(DateUtils.localDateTimeToDate(endTime)); } List<TOrderStockVO> list = this.baseMapper.stockGeneratorExport(query); // 查询商品 @@ -158,4 +230,60 @@ }); 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); + } + + @Override + public void deleteByShopId(Long shopId) { + this.baseMapper.deleteByShopId(shopId); + } } -- Gitblit v1.7.1