From a16b2925b2a58d352461027e3b596ec3bff771e0 Mon Sep 17 00:00:00 2001 From: SongZhang <2064194730@qq.com> Date: Wed, 17 Jul 2024 09:55:23 +0800 Subject: [PATCH 01/12] =?UTF-8?q?1.=E5=BA=93=E5=AD=98=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E4=B8=8A=E4=B8=8B=E6=9E=B6=E6=8E=A5=E5=8F=A3=202.=E5=BA=93?= =?UTF-8?q?=E5=AD=98=E8=AE=B0=E5=BD=95=E8=BF=94=E5=9B=9EorderNo=203.?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BF=9D=E5=AD=98=E5=BA=93=E5=AD=98=E8=AE=B0?= =?UTF-8?q?=E5=BD=95mq=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/ysk/cashier/config/RabbitConfig.java | 30 +++++++++ .../controller/product/StockController.java | 13 ++++ .../TbProductStockDetailController.java | 3 +- .../cashier/pojo/product/TbProductSku.java | 4 ++ .../cn/ysk/cashier/rabbit/StockListener.java | 36 +++++++++++ .../order/StockCountRepository.java | 19 +++++- .../product/TbProductRepository.java | 3 + .../product/TbProductSkuRepository.java | 12 +++- .../impl/productimpl/StockServiceImpl.java | 19 +++++- .../TbProductStockDetailServiceImpl.java | 64 +++++++++++++++++-- .../cashier/service/product/StockService.java | 9 +++ .../product/TbProductStockDetailService.java | 4 +- .../main/java/cn/ysk/cashier/utils/Utils.java | 18 ++++++ 13 files changed, 223 insertions(+), 11 deletions(-) create mode 100644 eladmin-system/src/main/java/cn/ysk/cashier/config/RabbitConfig.java create mode 100644 eladmin-system/src/main/java/cn/ysk/cashier/rabbit/StockListener.java create mode 100644 eladmin-system/src/main/java/cn/ysk/cashier/utils/Utils.java diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/config/RabbitConfig.java b/eladmin-system/src/main/java/cn/ysk/cashier/config/RabbitConfig.java new file mode 100644 index 00000000..1bfae312 --- /dev/null +++ b/eladmin-system/src/main/java/cn/ysk/cashier/config/RabbitConfig.java @@ -0,0 +1,30 @@ +package cn.ysk.cashier.config; + +import org.springframework.amqp.core.Binding; +import org.springframework.amqp.core.BindingBuilder; +import org.springframework.amqp.core.DirectExchange; +import org.springframework.amqp.core.Queue; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +public class RabbitConfig { + public static final String QUEUE_STOCK_RECORD_SALE = "queue.stock.record.sale"; + public static final String EXCHANGE_STOCK_RECORD = "exchange.stock.record"; + public static final String ROUTING_STOCK_RECORD_SALE = "routing.stock.record.sale"; + + @Bean + Queue stockRecordSaleQueue() { + return new Queue(QUEUE_STOCK_RECORD_SALE); + } + + @Bean + DirectExchange stockRecordExchange() { + return new DirectExchange(EXCHANGE_STOCK_RECORD); + } + + @Bean + Binding binding(Queue stockRecordSaleQueue, DirectExchange stockRecordExchange) { + return BindingBuilder.bind(stockRecordSaleQueue).to(stockRecordExchange).with(ROUTING_STOCK_RECORD_SALE); + } +} diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/controller/product/StockController.java b/eladmin-system/src/main/java/cn/ysk/cashier/controller/product/StockController.java index be5c91f4..dbf8901f 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/controller/product/StockController.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/controller/product/StockController.java @@ -1,6 +1,7 @@ package cn.ysk.cashier.controller.product; import cn.hutool.core.util.StrUtil; +import cn.ysk.cashier.annotation.AnonymousAccess; import cn.ysk.cashier.annotation.Log; import cn.ysk.cashier.annotation.rest.AnonymousPostMapping; import cn.ysk.cashier.dto.product.StockQueryDto; @@ -112,6 +113,18 @@ public class StockController { return new ResponseEntity<>(dataMap, HttpStatus.OK); } + @AnonymousAccess + @PutMapping("/grounding") + @ApiOperation("上下架商品") + public ResponseEntity grounding( + @RequestParam Integer shopId, + @RequestParam Integer skuId, + @RequestParam Boolean isGrounding + ){ + stockService.grounding(shopId,skuId, isGrounding); + return ResponseEntity.ok("success"); + } + @GetMapping("/sku") @ApiOperation("查询库存") public ResponseEntity queryProductSku(String productId){ diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/controller/product/TbProductStockDetailController.java b/eladmin-system/src/main/java/cn/ysk/cashier/controller/product/TbProductStockDetailController.java index 7bd4110e..e9774b71 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/controller/product/TbProductStockDetailController.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/controller/product/TbProductStockDetailController.java @@ -15,6 +15,7 @@ */ package cn.ysk.cashier.controller.product; +import cn.ysk.cashier.annotation.AnonymousAccess; import cn.ysk.cashier.annotation.Log; import cn.ysk.cashier.pojo.product.TbProductStockDetail; import cn.ysk.cashier.service.product.TbProductStockDetailService; @@ -91,4 +92,4 @@ public class TbProductStockDetailController { tbProductStockDetailService.deleteAll(ids); return new ResponseEntity<>(HttpStatus.OK); } -} \ No newline at end of file +} diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/pojo/product/TbProductSku.java b/eladmin-system/src/main/java/cn/ysk/cashier/pojo/product/TbProductSku.java index fe42c0ca..b19fe427 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/pojo/product/TbProductSku.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/pojo/product/TbProductSku.java @@ -127,6 +127,10 @@ public class TbProductSku implements Serializable { @ApiModelProperty(value = "是否暂停销售") private Integer isPauseSale = 0; + @Column(name = "`is_grounding`") + @ApiModelProperty(value = "是否上架") + private Integer isGrounding = 0; + public void setIsDel(Integer isDel) { if(isDel!=null){ this.isDel = isDel; diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/rabbit/StockListener.java b/eladmin-system/src/main/java/cn/ysk/cashier/rabbit/StockListener.java new file mode 100644 index 00000000..9fc4ada5 --- /dev/null +++ b/eladmin-system/src/main/java/cn/ysk/cashier/rabbit/StockListener.java @@ -0,0 +1,36 @@ +package cn.ysk.cashier.rabbit; + +import cn.ysk.cashier.config.RabbitConfig; +import cn.ysk.cashier.pojo.product.TbProductStockDetail; +import cn.ysk.cashier.service.product.TbProductStockDetailService; +import com.alibaba.fastjson.JSONObject; +import lombok.extern.slf4j.Slf4j; +import org.springframework.amqp.rabbit.annotation.RabbitHandler; +import org.springframework.amqp.rabbit.annotation.RabbitListener; +import org.springframework.stereotype.Component; + +@Component +@Slf4j +public class StockListener { + + private final TbProductStockDetailService productStockDetailService; + + public StockListener(TbProductStockDetailService productStockDetailService) { + this.productStockDetailService = productStockDetailService; + } + + @RabbitListener(queues = RabbitConfig.QUEUE_STOCK_RECORD_SALE) + public void recordSaleHandler(String message) { + log.info("接收到下单保存库存信息mq消息,消息内容: {}", message); + JSONObject jsonObject = JSONObject.parseObject(message); + if (!jsonObject.containsKey("orderId")) { + log.info("mq消息体有误,确实orderId"); + return; + } + try { + productStockDetailService.addSaleRecord(jsonObject.getInteger("orderId")); + }catch (Exception e) { + log.error("执行保存库存mq失败", e); + } + } +} diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/repository/order/StockCountRepository.java b/eladmin-system/src/main/java/cn/ysk/cashier/repository/order/StockCountRepository.java index 0f3e8353..3933e174 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/repository/order/StockCountRepository.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/repository/order/StockCountRepository.java @@ -2,6 +2,7 @@ package cn.ysk.cashier.repository.order; import cn.ysk.cashier.dto.product.StockCountDTO; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; @@ -32,4 +33,20 @@ public interface StockCountRepository extends JpaRepository countStock( @Param("startTime") String startTime, @Param("endTime") String endTime); -} \ No newline at end of file + @Query(value = "SELECT pro.shop_id as shop_id, pro.id as pro_id, info.product_name as pro_name, pro.is_stock," + + " info.product_sku_name as sku_name, unit.NAME as unit_name ," + + "SUM( CASE WHEN orders.order_type != 'return' THEN info.num ELSE 0 END )- SUM( CASE WHEN orders.order_type = 'return' THEN info.num ELSE 0 END ) as stock_count," + + "CASE WHEN pro.is_distribute = '0' THEN sku.stock_number ELSE pro.stock_number END AS stock_number " + + "FROM " + + "tb_order_info orders " + + "LEFT JOIN tb_order_detail info ON orders.id = info.order_id " + + "LEFT JOIN tb_product pro ON info.product_id = pro.id " + + "LEFT JOIN (SELECT product_id,sum(stock_number) as stock_number from tb_product_sku GROUP BY product_id) sku ON info.product_id = sku.product_id " + + "LEFT JOIN tb_shop_unit unit ON unit.id = pro.unit_id " + + "WHERE " + + "orders.id = :orderId " + + "AND ( info.STATUS = 'closed' OR info.STATUS = 'refund' ) " + + "GROUP BY " + + "info.product_id ",nativeQuery = true) + List countStockById(Integer orderId); +} diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/repository/product/TbProductRepository.java b/eladmin-system/src/main/java/cn/ysk/cashier/repository/product/TbProductRepository.java index 4538c363..aa50c29b 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/repository/product/TbProductRepository.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/repository/product/TbProductRepository.java @@ -55,4 +55,7 @@ public interface TbProductRepository extends JpaRepository, @Modifying @Query("update TbProduct set stockNumber=stockNumber+:num where id=:id") void incrStock(@Param("id") Integer id, @Param("num") Integer num); + + @Query("select product from TbProduct product where product.id=:id and product.shopId=:shopId") + TbProduct selectByShopIdAndId(Integer id, String shopId); } diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/repository/product/TbProductSkuRepository.java b/eladmin-system/src/main/java/cn/ysk/cashier/repository/product/TbProductSkuRepository.java index 0ea3964b..83a0fb42 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/repository/product/TbProductSkuRepository.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/repository/product/TbProductSkuRepository.java @@ -3,6 +3,7 @@ package cn.ysk.cashier.repository.product; import cn.ysk.cashier.pojo.product.TbProductSku; import cn.ysk.cashier.vo.StockV2Vo; import cn.ysk.cashier.vo.StockVo; +import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Update; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; @@ -10,7 +11,6 @@ import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaSpecificationExecutor; import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Query; -import org.springframework.data.repository.query.Param; import javax.transaction.Transactional; import java.math.BigDecimal; @@ -170,4 +170,14 @@ public interface TbProductSkuRepository extends JpaRepository queryAll(TbProductStockDetailQueryCriteria criteria, Pageable pageable){ Page page = tbProductStockDetailRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder),pageable); @@ -66,10 +76,23 @@ public class TbProductStockDetailServiceImpl implements TbProductStockDetailServ Page page = tbProductStockDetailRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder),pageable); Page map = page.map(tbProductStockDetailMapper::toDto); + + ArrayList> contents = new ArrayList<>(); for (TbProductStockDetailDto tbProductStockDetailDto : map.getContent()) { + if (StrUtil.isNotBlank(tbProductStockDetailDto.getOrderId())) { + TbOrderInfo tbOrderInfo = tbOrderInfoRepository.findById(Integer.valueOf(tbProductStockDetailDto.getOrderId())).orElse(null); + Map map1 = BeanUtil.transBean2Map(tbProductStockDetailDto); + if (tbOrderInfo != null) { + map1.put("orderNo", tbOrderInfo.getOrderNo()); + } + contents.add(map1); + } tbProductStockDetailDto.setTypes(); } - return PageUtil.toPage(map); + Map info = new LinkedHashMap<>(2); + info.put("content",contents); + info.put("totalElements",page.getTotalElements()); + return info; } @@ -152,4 +175,33 @@ public class TbProductStockDetailServiceImpl implements TbProductStockDetailServ } FileUtil.downloadExcel(list, response); } -} \ No newline at end of file + + @Override + public void addSaleRecord(Integer orderId) { + List stockCountDTOS = stockCountRepository.countStockById(orderId); + log.info("查询到订单id: {}的所有库存数据: {}", orderId, stockCountDTOS); + stockCountDTOS.forEach(s->{ + if (s.getStockCount() > 0) { + TbProductStockDetail productStockDetail = new TbProductStockDetail(); + productStockDetail.setCreatedAt(System.currentTimeMillis()); + productStockDetail.setUpdatedAt(System.currentTimeMillis()); + productStockDetail.setShopId(s.getShopId()); + productStockDetail.setProductId(s.getProId().toString()); + productStockDetail.setProductName(s.getProName()); + productStockDetail.setOrderId(orderId.toString()); +// productStockDetail.setSkuId(s.getSkuId().toString()); + productStockDetail.setIsStock(s.getIsStock());//是否开启库存 + productStockDetail.setLeftNumber(s.getStockNumber()+s.getStockCount());//原库存 +// productStockDetail.setSpecSnap(s.getSkuName()); + productStockDetail.setUnitName(s.getUnitName()); + productStockDetail.setStockNumber(-Double.valueOf(s.getStockCount())); + productStockDetail.setSourcePath("NORMAL"); + productStockDetail.setType("售出记录"); + productStockDetail.setRemark("售出记录:" + orderId); + productStockDetail.setSubType(-1); + tbProductStockDetailRepository.save(productStockDetail); + } + + }); + } +} diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/service/product/StockService.java b/eladmin-system/src/main/java/cn/ysk/cashier/service/product/StockService.java index 16e2209d..47329894 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/service/product/StockService.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/service/product/StockService.java @@ -44,4 +44,13 @@ public interface StockService { * @param stockUpdateWarnLineVO 警戒线 */ void updateProductWarnLine(StockUpdateWarnLineVO stockUpdateWarnLineVO); + + /** + * 上下架商品 + * + * @param shopId 店铺id + * @param skuId ski + * @param isGrounding + */ + void grounding(Integer shopId, Integer skuId, Boolean isGrounding); } diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/service/product/TbProductStockDetailService.java b/eladmin-system/src/main/java/cn/ysk/cashier/service/product/TbProductStockDetailService.java index a3783d29..5764d35e 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/service/product/TbProductStockDetailService.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/service/product/TbProductStockDetailService.java @@ -86,4 +86,6 @@ public interface TbProductStockDetailService { * @throws IOException / */ void download(List all, HttpServletResponse response) throws IOException; -} \ No newline at end of file + + void addSaleRecord(Integer orderId); +} diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/utils/Utils.java b/eladmin-system/src/main/java/cn/ysk/cashier/utils/Utils.java new file mode 100644 index 00000000..9fa7ad22 --- /dev/null +++ b/eladmin-system/src/main/java/cn/ysk/cashier/utils/Utils.java @@ -0,0 +1,18 @@ +package cn.ysk.cashier.utils; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.function.Supplier; + +public class Utils { + private static final Logger log = LoggerFactory.getLogger(Utils.class); + + public static void catchErrNoReturn(Supplier supplier) { + try { + supplier.get(); + }catch (Exception e) { + log.error("执行方法出现异常", e); + } + } +} From 762c23b08e45a8e9285ac39fd89beb88943a872d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=89=9B=E5=8F=89=E9=97=AA=E9=97=AA?= <18322780655@163.com> Date: Wed, 17 Jul 2024 11:12:07 +0800 Subject: [PATCH 02/12] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=80=97=E6=9D=90?= =?UTF-8?q?=E5=8D=95=E4=BD=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cashier/cons/domain/TbConsInfoFlow.java | 11 +++ .../cashier/cons/domain/ViewConInfoFlow.java | 74 +++++++++++++++ .../repository/TbConsInfoFlowRepository.java | 2 +- .../repository/ViewConInfoFlowRepository.java | 13 +++ .../cons/rest/TbConsInfoController.java | 5 +- .../cons/rest/ViewConInfoFlowController.java | 65 +++++++++++++ .../cons/service/TbConsInfoService.java | 4 +- .../cons/service/ViewConInfoFlowService.java | 66 +++++++++++++ .../cons/service/dto/TbConsInfoFlowDto.java | 8 ++ .../dto/TbConsInfoFlowQueryCriteria.java | 4 + .../cons/service/dto/ViewConInfoFlowDto.java | 44 +++++++++ .../dto/ViewConInfoFlowQueryCriteria.java | 17 ++++ .../service/impl/TbConsInfoServiceImpl.java | 56 ++++++----- .../impl/ViewConInfoFlowServiceImpl.java | 94 +++++++++++++++++++ .../mapstruct/ViewConInfoFlowMapper.java | 16 ++++ 15 files changed, 448 insertions(+), 31 deletions(-) create mode 100644 eladmin-system/src/main/java/cn/ysk/cashier/cons/domain/ViewConInfoFlow.java create mode 100644 eladmin-system/src/main/java/cn/ysk/cashier/cons/repository/ViewConInfoFlowRepository.java create mode 100644 eladmin-system/src/main/java/cn/ysk/cashier/cons/rest/ViewConInfoFlowController.java create mode 100644 eladmin-system/src/main/java/cn/ysk/cashier/cons/service/ViewConInfoFlowService.java create mode 100644 eladmin-system/src/main/java/cn/ysk/cashier/cons/service/dto/ViewConInfoFlowDto.java create mode 100644 eladmin-system/src/main/java/cn/ysk/cashier/cons/service/dto/ViewConInfoFlowQueryCriteria.java create mode 100644 eladmin-system/src/main/java/cn/ysk/cashier/cons/service/impl/ViewConInfoFlowServiceImpl.java create mode 100644 eladmin-system/src/main/java/cn/ysk/cashier/cons/service/mapstruct/ViewConInfoFlowMapper.java diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/cons/domain/TbConsInfoFlow.java b/eladmin-system/src/main/java/cn/ysk/cashier/cons/domain/TbConsInfoFlow.java index a01f2483..2def2fa8 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/cons/domain/TbConsInfoFlow.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/cons/domain/TbConsInfoFlow.java @@ -87,6 +87,17 @@ public class TbConsInfoFlow implements Serializable { @ApiModelProperty(value = "店铺id") private Integer shopId; + + + @Column(name = "`order_id`") + @ApiModelProperty(value = "订单id") + private Integer orderId; + + + @Column(name = "`order_no`") + @ApiModelProperty(value = "订单编号") + private String orderNo; + @Transient @TableField(exist = false) private String productName; diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/cons/domain/ViewConInfoFlow.java b/eladmin-system/src/main/java/cn/ysk/cashier/cons/domain/ViewConInfoFlow.java new file mode 100644 index 00000000..228b0216 --- /dev/null +++ b/eladmin-system/src/main/java/cn/ysk/cashier/cons/domain/ViewConInfoFlow.java @@ -0,0 +1,74 @@ +/* +* Copyright 2019-2020 Zheng Jie +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ +package cn.ysk.cashier.cons.domain; + +import lombok.Data; +import cn.hutool.core.bean.BeanUtil; +import io.swagger.annotations.ApiModelProperty; +import cn.hutool.core.bean.copier.CopyOptions; +import javax.persistence.*; +import javax.validation.constraints.*; +import java.math.BigDecimal; +import java.io.Serializable; + +/** +* @author admin +* @date 2024-07-17 +**/ +@Entity +@Data +@Table(name="view_con_info_flow") +public class ViewConInfoFlow implements Serializable { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "`cons_id`") + @ApiModelProperty(value = "耗材id") + private Integer consId; + + @Column(name = "`con_name`") + @ApiModelProperty(value = "耗材名称") + private String conName; + + @Column(name = "`con_return`",nullable = false) + @NotNull + @ApiModelProperty(value = "con_return") + private BigDecimal conReturn; + + @Column(name = "`con_in`",nullable = false) + @NotNull + @ApiModelProperty(value = "con_in") + private BigDecimal conIn; + + @Column(name = "`con_consume`",nullable = false) + @NotNull + @ApiModelProperty(value = "con_consume") + private BigDecimal conConsume; + + @Column(name = "`con_out`",nullable = false) + @NotNull + @ApiModelProperty(value = "con_out") + private BigDecimal conOut; + + @Column(name = "`balance`",nullable = false) + @NotNull + @ApiModelProperty(value = "balance") + private BigDecimal balance; + + public void copy(ViewConInfoFlow source){ + BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true)); + } +} diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/cons/repository/TbConsInfoFlowRepository.java b/eladmin-system/src/main/java/cn/ysk/cashier/cons/repository/TbConsInfoFlowRepository.java index 2af7ea91..26d7f1d1 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/cons/repository/TbConsInfoFlowRepository.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/cons/repository/TbConsInfoFlowRepository.java @@ -1,7 +1,6 @@ package cn.ysk.cashier.cons.repository; import cn.ysk.cashier.cons.domain.TbConsInfoFlow; -import org.apache.ibatis.annotations.Select; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaSpecificationExecutor; import org.springframework.data.jpa.repository.Query; @@ -22,4 +21,5 @@ public interface TbConsInfoFlowRepository extends JpaRepository, JpaSpecificationExecutor { +} \ No newline at end of file diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/cons/rest/TbConsInfoController.java b/eladmin-system/src/main/java/cn/ysk/cashier/cons/rest/TbConsInfoController.java index 64558e63..54b55da7 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/cons/rest/TbConsInfoController.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/cons/rest/TbConsInfoController.java @@ -16,6 +16,7 @@ import io.swagger.annotations.*; import org.springframework.web.multipart.MultipartFile; import java.io.IOException; +import java.util.List; import javax.servlet.http.HttpServletResponse; /** @@ -47,14 +48,14 @@ public class TbConsInfoController { @PostMapping @Log("新增耗材信息") @ApiOperation("新增耗材信息") - public ResponseEntity createTbConsInfo(@Validated @RequestBody TbConsInfo resources) throws Exception { + public ResponseEntity createTbConsInfo(@Validated @RequestBody List resources) throws Exception { return new ResponseEntity<>(tbConsInfoService.create(resources),HttpStatus.CREATED); } @PutMapping @Log("修改耗材信息") @ApiOperation("修改耗材信息") - public ResponseEntity updateTbConsInfo(@Validated @RequestBody TbConsInfo resources) throws Exception { + public ResponseEntity updateTbConsInfo(@Validated @RequestBody List resources) throws Exception { tbConsInfoService.update(resources); return new ResponseEntity<>(HttpStatus.NO_CONTENT); } diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/cons/rest/ViewConInfoFlowController.java b/eladmin-system/src/main/java/cn/ysk/cashier/cons/rest/ViewConInfoFlowController.java new file mode 100644 index 00000000..e5558da6 --- /dev/null +++ b/eladmin-system/src/main/java/cn/ysk/cashier/cons/rest/ViewConInfoFlowController.java @@ -0,0 +1,65 @@ +package cn.ysk.cashier.cons.rest; + +import cn.ysk.cashier.annotation.Log; +import cn.ysk.cashier.cons.domain.ViewConInfoFlow; +import cn.ysk.cashier.cons.service.ViewConInfoFlowService; +import cn.ysk.cashier.cons.service.dto.ViewConInfoFlowQueryCriteria; +import org.springframework.data.domain.Pageable; +import lombok.RequiredArgsConstructor; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; +import io.swagger.annotations.*; +import java.io.IOException; +import javax.servlet.http.HttpServletResponse; + +/** +* @author admin +* @date 2024-07-17 +**/ +@RestController +@RequiredArgsConstructor +@Api(tags = "获取耗材流水信息管理") +@RequestMapping("/api/viewConInfoFlow") +public class ViewConInfoFlowController { + + private final ViewConInfoFlowService viewConInfoFlowService; + + @Log("导出数据") + @ApiOperation("导出数据") + @GetMapping(value = "/download") + public void exportViewConInfoFlow(HttpServletResponse response, ViewConInfoFlowQueryCriteria criteria) throws IOException { + viewConInfoFlowService.download(viewConInfoFlowService.queryAll(criteria), response); + } + + @GetMapping + @Log("查询获取耗材流水信息") + @ApiOperation("查询获取耗材流水信息") + public ResponseEntity queryViewConInfoFlow(ViewConInfoFlowQueryCriteria criteria, Pageable pageable){ + return new ResponseEntity<>(viewConInfoFlowService.queryAll(criteria,pageable),HttpStatus.OK); + } + + @PostMapping + @Log("新增获取耗材流水信息") + @ApiOperation("新增获取耗材流水信息") + public ResponseEntity createViewConInfoFlow(@Validated @RequestBody ViewConInfoFlow resources){ + return new ResponseEntity<>(viewConInfoFlowService.create(resources),HttpStatus.CREATED); + } + + @PutMapping + @Log("修改获取耗材流水信息") + @ApiOperation("修改获取耗材流水信息") + public ResponseEntity updateViewConInfoFlow(@Validated @RequestBody ViewConInfoFlow resources){ + viewConInfoFlowService.update(resources); + return new ResponseEntity<>(HttpStatus.NO_CONTENT); + } + + @DeleteMapping + @Log("删除获取耗材流水信息") + @ApiOperation("删除获取耗材流水信息") + public ResponseEntity deleteViewConInfoFlow(@RequestBody Integer[] ids) { + viewConInfoFlowService.deleteAll(ids); + return new ResponseEntity<>(HttpStatus.OK); + } +} \ No newline at end of file diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/cons/service/TbConsInfoService.java b/eladmin-system/src/main/java/cn/ysk/cashier/cons/service/TbConsInfoService.java index 10bd7963..144bd73f 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/cons/service/TbConsInfoService.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/cons/service/TbConsInfoService.java @@ -47,13 +47,13 @@ public interface TbConsInfoService { * @param resources / * @return TbConsInfoDto */ - TbConsInfoDto create(TbConsInfo resources) throws Exception; + TbConsInfoDto create(List resources) throws Exception; /** * 编辑 * @param resources / */ - void update(TbConsInfo resources) throws Exception; + void update(List resources) throws Exception; /** * 多选删除 diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/cons/service/ViewConInfoFlowService.java b/eladmin-system/src/main/java/cn/ysk/cashier/cons/service/ViewConInfoFlowService.java new file mode 100644 index 00000000..5e95fff2 --- /dev/null +++ b/eladmin-system/src/main/java/cn/ysk/cashier/cons/service/ViewConInfoFlowService.java @@ -0,0 +1,66 @@ +package cn.ysk.cashier.cons.service; + +import cn.ysk.cashier.cons.domain.ViewConInfoFlow; +import cn.ysk.cashier.cons.service.dto.ViewConInfoFlowDto; +import cn.ysk.cashier.cons.service.dto.ViewConInfoFlowQueryCriteria; +import org.springframework.data.domain.Pageable; +import java.util.Map; +import java.util.List; +import java.io.IOException; +import javax.servlet.http.HttpServletResponse; + +/** +* @author admin +* @date 2024-07-17 +**/ +public interface ViewConInfoFlowService { + + /** + * 查询数据分页 + * @param criteria 条件 + * @param pageable 分页参数 + * @return Map + */ + Map queryAll(ViewConInfoFlowQueryCriteria criteria, Pageable pageable); + + /** + * 查询所有数据不分页 + * @param criteria 条件参数 + * @return List + */ + List queryAll(ViewConInfoFlowQueryCriteria criteria); + + /** + * 根据ID查询 + * @param consId ID + * @return ViewConInfoFlowDto + */ + ViewConInfoFlowDto findById(Integer consId); + + /** + * 创建 + * @param resources / + * @return ViewConInfoFlowDto + */ + ViewConInfoFlowDto create(ViewConInfoFlow resources); + + /** + * 编辑 + * @param resources / + */ + void update(ViewConInfoFlow resources); + + /** + * 多选删除 + * @param ids / + */ + void deleteAll(Integer[] ids); + + /** + * 导出数据 + * @param all 待导出的数据 + * @param response / + * @throws IOException / + */ + void download(List all, HttpServletResponse response) throws IOException; +} \ No newline at end of file diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/cons/service/dto/TbConsInfoFlowDto.java b/eladmin-system/src/main/java/cn/ysk/cashier/cons/service/dto/TbConsInfoFlowDto.java index 627ea21a..b2c628f8 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/cons/service/dto/TbConsInfoFlowDto.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/cons/service/dto/TbConsInfoFlowDto.java @@ -15,7 +15,10 @@ */ package cn.ysk.cashier.cons.service.dto; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; + +import javax.persistence.Column; import java.sql.Timestamp; import java.math.BigDecimal; import java.io.Serializable; @@ -60,4 +63,9 @@ public class TbConsInfoFlowDto implements Serializable { private Integer shopId; private String productName; + + + private Integer orderId; + + private String orderNo; } \ No newline at end of file diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/cons/service/dto/TbConsInfoFlowQueryCriteria.java b/eladmin-system/src/main/java/cn/ysk/cashier/cons/service/dto/TbConsInfoFlowQueryCriteria.java index 3f34192e..18d90b44 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/cons/service/dto/TbConsInfoFlowQueryCriteria.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/cons/service/dto/TbConsInfoFlowQueryCriteria.java @@ -22,4 +22,8 @@ public class TbConsInfoFlowQueryCriteria{ /** 精确 */ @Query private Integer shopId; + + + @Query + private String orderNo; } \ No newline at end of file diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/cons/service/dto/ViewConInfoFlowDto.java b/eladmin-system/src/main/java/cn/ysk/cashier/cons/service/dto/ViewConInfoFlowDto.java new file mode 100644 index 00000000..93397159 --- /dev/null +++ b/eladmin-system/src/main/java/cn/ysk/cashier/cons/service/dto/ViewConInfoFlowDto.java @@ -0,0 +1,44 @@ +/* +* Copyright 2019-2020 Zheng Jie +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ +package cn.ysk.cashier.cons.service.dto; + +import lombok.Data; +import java.math.BigDecimal; +import java.io.Serializable; + +/** +* @author admin +* @date 2024-07-17 +**/ +@Data +public class ViewConInfoFlowDto implements Serializable { + + /** 耗材id */ + private Integer consId; + + /** 耗材名称 */ + private String conName; + + private BigDecimal conReturn; + + private BigDecimal conIn; + + private BigDecimal conConsume; + + private BigDecimal conOut; + + private BigDecimal balance; +} \ No newline at end of file diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/cons/service/dto/ViewConInfoFlowQueryCriteria.java b/eladmin-system/src/main/java/cn/ysk/cashier/cons/service/dto/ViewConInfoFlowQueryCriteria.java new file mode 100644 index 00000000..45b31445 --- /dev/null +++ b/eladmin-system/src/main/java/cn/ysk/cashier/cons/service/dto/ViewConInfoFlowQueryCriteria.java @@ -0,0 +1,17 @@ +package cn.ysk.cashier.cons.service.dto; + +import lombok.Data; +import java.util.List; +import cn.ysk.cashier.annotation.Query; + +/** +* @author admin +* @date 2024-07-17 +**/ +@Data +public class ViewConInfoFlowQueryCriteria{ + + /** 模糊 */ + @Query(type = Query.Type.INNER_LIKE) + private String conName; +} \ No newline at end of file diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/cons/service/impl/TbConsInfoServiceImpl.java b/eladmin-system/src/main/java/cn/ysk/cashier/cons/service/impl/TbConsInfoServiceImpl.java index a154c364..6ec61722 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/cons/service/impl/TbConsInfoServiceImpl.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/cons/service/impl/TbConsInfoServiceImpl.java @@ -99,14 +99,14 @@ public class TbConsInfoServiceImpl implements TbConsInfoService { @Override @Transactional(rollbackFor = Exception.class) - public TbConsInfoDto create(TbConsInfo resources) throws Exception { + public TbConsInfoDto create(List resources) throws Exception { - TbConsType tbConsType = tbConsTypeRepository.getById(resources.getConTypeId()); - if (Objects.isNull(tbConsType)) { - throw new Exception("不存在的耗材类型"); - } - + for (TbConsInfo resource : resources) { + TbConsType tbConsType = tbConsTypeRepository.getById(resource.getConTypeId()); + if (Objects.isNull(tbConsType)) { + throw new Exception("不存在的耗材类型"); + } // int count = tbConsInfoRepository.countByConCode(resources.getConCode()); // if (count > 0) { @@ -114,33 +114,37 @@ public class TbConsInfoServiceImpl implements TbConsInfoService { // } - resources.setConCode(StringCodeUtil.getRandom(8,LETTER_CAPITAL_NUMBER)); - resources.setConTypeName(tbConsType.getConTypeName()); - resources.setLasterInStock(BigDecimal.ZERO); - resources.setStockNumber(BigDecimal.ZERO); - resources.setStatus("1"); - resources.setStockConsume(BigDecimal.ZERO); - resources.setCreateTime(new Timestamp(System.currentTimeMillis())); - return tbConsInfoMapper.toDto(tbConsInfoRepository.save(resources)); + resource.setConCode(StringCodeUtil.getRandom(8,LETTER_CAPITAL_NUMBER)); + resource.setConTypeName(tbConsType.getConTypeName()); + resource.setLasterInStock(BigDecimal.ZERO); + resource.setStockNumber(BigDecimal.ZERO); + resource.setStatus("1"); + resource.setStockConsume(BigDecimal.ZERO); + resource.setCreateTime(new Timestamp(System.currentTimeMillis())); + tbConsInfoRepository.save(resource); + } + return tbConsInfoMapper.toDto(new TbConsInfo()); } @Override @Transactional(rollbackFor = Exception.class) - public void update(TbConsInfo resources) throws Exception { - TbConsInfo tbConsInfo = tbConsInfoRepository.findById(resources.getId()).orElseGet(TbConsInfo::new); + public void update(List resources) throws Exception { + for (TbConsInfo resource : resources) { + TbConsInfo tbConsInfo = tbConsInfoRepository.findById(resource.getId()).orElseGet(TbConsInfo::new); - if (Objects.isNull(tbConsInfo)) { - throw new Exception("耗材信息不存在"); + if (Objects.isNull(tbConsInfo)) { + throw new Exception("耗材信息不存在"); + } + + tbConsInfo.setConName(resource.getConName()); + tbConsInfo.setPrice(resource.getPrice()); + tbConsInfo.setConUnit(resource.getConUnit()); + tbConsInfo.setConWarning(resource.getConWarning()); + tbConsInfo.setStatus(resource.getStatus()); + tbConsInfo.setUpdateTime(new Timestamp(System.currentTimeMillis())); + tbConsInfoRepository.save(tbConsInfo); } - - tbConsInfo.setConName(resources.getConName()); - tbConsInfo.setPrice(resources.getPrice()); - tbConsInfo.setConUnit(resources.getConUnit()); - tbConsInfo.setConWarning(resources.getConWarning()); - tbConsInfo.setStatus(resources.getStatus()); - tbConsInfo.setUpdateTime(new Timestamp(System.currentTimeMillis())); - tbConsInfoRepository.save(tbConsInfo); } @Override diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/cons/service/impl/ViewConInfoFlowServiceImpl.java b/eladmin-system/src/main/java/cn/ysk/cashier/cons/service/impl/ViewConInfoFlowServiceImpl.java new file mode 100644 index 00000000..6f335b0c --- /dev/null +++ b/eladmin-system/src/main/java/cn/ysk/cashier/cons/service/impl/ViewConInfoFlowServiceImpl.java @@ -0,0 +1,94 @@ +package cn.ysk.cashier.cons.service.impl; + +import cn.ysk.cashier.cons.domain.ViewConInfoFlow; +import cn.ysk.cashier.utils.FileUtil; +import cn.ysk.cashier.utils.PageUtil; +import cn.ysk.cashier.utils.QueryHelp; +import cn.ysk.cashier.utils.ValidationUtil; +import lombok.RequiredArgsConstructor; +import cn.ysk.cashier.cons.repository.ViewConInfoFlowRepository; +import cn.ysk.cashier.cons.service.ViewConInfoFlowService; +import cn.ysk.cashier.cons.service.dto.ViewConInfoFlowDto; +import cn.ysk.cashier.cons.service.dto.ViewConInfoFlowQueryCriteria; +import cn.ysk.cashier.cons.service.mapstruct.ViewConInfoFlowMapper; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import java.util.List; +import java.util.Map; +import java.io.IOException; +import javax.servlet.http.HttpServletResponse; +import java.util.ArrayList; +import java.util.LinkedHashMap; + +/** +* @website https://eladmin.vip +* @description 服务实现 +* @author admin +* @date 2024-07-17 +**/ +@Service +@RequiredArgsConstructor +public class ViewConInfoFlowServiceImpl implements ViewConInfoFlowService { + + private final ViewConInfoFlowRepository viewConInfoFlowRepository; + private final ViewConInfoFlowMapper viewConInfoFlowMapper; + + @Override + public Map queryAll(ViewConInfoFlowQueryCriteria criteria, Pageable pageable){ + Page page = viewConInfoFlowRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder),pageable); + return PageUtil.toPage(page.map(viewConInfoFlowMapper::toDto)); + } + + @Override + public List queryAll(ViewConInfoFlowQueryCriteria criteria){ + return viewConInfoFlowMapper.toDto(viewConInfoFlowRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder))); + } + + @Override + @Transactional + public ViewConInfoFlowDto findById(Integer consId) { + ViewConInfoFlow viewConInfoFlow = viewConInfoFlowRepository.findById(consId).orElseGet(ViewConInfoFlow::new); + ValidationUtil.isNull(viewConInfoFlow.getConsId(),"ViewConInfoFlow","consId",consId); + return viewConInfoFlowMapper.toDto(viewConInfoFlow); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public ViewConInfoFlowDto create(ViewConInfoFlow resources) { + return viewConInfoFlowMapper.toDto(viewConInfoFlowRepository.save(resources)); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void update(ViewConInfoFlow resources) { + ViewConInfoFlow viewConInfoFlow = viewConInfoFlowRepository.findById(resources.getConsId()).orElseGet(ViewConInfoFlow::new); + ValidationUtil.isNull( viewConInfoFlow.getConsId(),"ViewConInfoFlow","id",resources.getConsId()); + viewConInfoFlow.copy(resources); + viewConInfoFlowRepository.save(viewConInfoFlow); + } + + @Override + public void deleteAll(Integer[] ids) { + for (Integer consId : ids) { + viewConInfoFlowRepository.deleteById(consId); + } + } + + @Override + public void download(List all, HttpServletResponse response) throws IOException { + List> list = new ArrayList<>(); + for (ViewConInfoFlowDto viewConInfoFlow : all) { + Map map = new LinkedHashMap<>(); + map.put("耗材名称", viewConInfoFlow.getConName()); + map.put(" conreturn", viewConInfoFlow.getConReturn()); + map.put(" conin", viewConInfoFlow.getConIn()); + map.put(" conconsume", viewConInfoFlow.getConConsume()); + map.put(" conout", viewConInfoFlow.getConOut()); + map.put(" balance", viewConInfoFlow.getBalance()); + list.add(map); + } + FileUtil.downloadExcel(list, response); + } +} \ No newline at end of file diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/cons/service/mapstruct/ViewConInfoFlowMapper.java b/eladmin-system/src/main/java/cn/ysk/cashier/cons/service/mapstruct/ViewConInfoFlowMapper.java new file mode 100644 index 00000000..92c1dc35 --- /dev/null +++ b/eladmin-system/src/main/java/cn/ysk/cashier/cons/service/mapstruct/ViewConInfoFlowMapper.java @@ -0,0 +1,16 @@ +package cn.ysk.cashier.cons.service.mapstruct; + +import cn.ysk.cashier.base.BaseMapper; +import cn.ysk.cashier.cons.domain.ViewConInfoFlow; +import cn.ysk.cashier.cons.service.dto.ViewConInfoFlowDto; +import org.mapstruct.Mapper; +import org.mapstruct.ReportingPolicy; + +/** +* @author admin +* @date 2024-07-17 +**/ +@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE) +public interface ViewConInfoFlowMapper extends BaseMapper { + +} \ No newline at end of file From 34c190ced8b121876db4a2f86ccc0ea928bb2738 Mon Sep 17 00:00:00 2001 From: GYJ <1157756119@qq.com> Date: Wed, 17 Jul 2024 11:25:16 +0800 Subject: [PATCH 03/12] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E6=90=BA=E5=B8=A6=E5=95=86=E5=93=81=E5=90=8D=E7=A7=B0=E6=A8=A1?= =?UTF-8?q?=E7=B3=8A=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../order/TbOrderInfoController.java | 4 +- .../dto/order/TbOrderInfoQueryCriteria.java | 4 +- .../order/TbOrderDetailRepository.java | 11 +++- .../impl/order/TbOrderInfoServiceImpl.java | 60 ++++++++++++++----- 4 files changed, 62 insertions(+), 17 deletions(-) diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/controller/order/TbOrderInfoController.java b/eladmin-system/src/main/java/cn/ysk/cashier/controller/order/TbOrderInfoController.java index f8cbe8fe..1344077b 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/controller/order/TbOrderInfoController.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/controller/order/TbOrderInfoController.java @@ -16,6 +16,7 @@ package cn.ysk.cashier.controller.order; import cn.ysk.cashier.annotation.Log; +import cn.ysk.cashier.annotation.rest.AnonymousPostMapping; import cn.ysk.cashier.dto.order.TbOrderInfoDto; import cn.ysk.cashier.dto.order.TbOrderInfoQueryCriteria; import cn.ysk.cashier.dto.order.TbPayCountQueryCriteria; @@ -55,6 +56,7 @@ public class TbOrderInfoController { @PostMapping("/date") @ApiOperation("查询订单") + @AnonymousPostMapping public ResponseEntity queryTbOrderInfo(@RequestBody TbOrderInfoQueryCriteria criteria){ return new ResponseEntity<>(tbOrderInfoService.queryAllPage(criteria),HttpStatus.OK); } @@ -90,4 +92,4 @@ public class TbOrderInfoController { // tbOrderInfoService.deleteAll(ids); // return new ResponseEntity<>(HttpStatus.OK); // } -} \ No newline at end of file +} diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/dto/order/TbOrderInfoQueryCriteria.java b/eladmin-system/src/main/java/cn/ysk/cashier/dto/order/TbOrderInfoQueryCriteria.java index 581cf64c..3af79a3d 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/dto/order/TbOrderInfoQueryCriteria.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/dto/order/TbOrderInfoQueryCriteria.java @@ -72,4 +72,6 @@ public class TbOrderInfoQueryCriteria{ @Query private String tableName; -} \ No newline at end of file + + private String productName; +} diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/repository/order/TbOrderDetailRepository.java b/eladmin-system/src/main/java/cn/ysk/cashier/repository/order/TbOrderDetailRepository.java index 5e705237..e8cdda21 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/repository/order/TbOrderDetailRepository.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/repository/order/TbOrderDetailRepository.java @@ -136,4 +136,13 @@ public interface TbOrderDetailRepository extends JpaRepository findOrderIdsByProductNameLike(@Param("productName") String productName, @Param("shop_id") String shopId, + @Param("startTime") Date startTime, @Param("endTime") Date endTime); + +} diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/order/TbOrderInfoServiceImpl.java b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/order/TbOrderInfoServiceImpl.java index 7143f08c..966d8ceb 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/order/TbOrderInfoServiceImpl.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/order/TbOrderInfoServiceImpl.java @@ -1,10 +1,12 @@ package cn.ysk.cashier.service.impl.order; +import cn.hutool.core.date.DateTime; import cn.hutool.core.util.ObjectUtil; import cn.ysk.cashier.cons.rabbit.RabbitConstants; import cn.ysk.cashier.dto.order.TbOrderInfoDto; import cn.ysk.cashier.dto.order.TbOrderInfoQueryCriteria; import cn.ysk.cashier.dto.order.TbPayCountQueryCriteria; +import cn.ysk.cashier.exception.BadRequestException; import cn.ysk.cashier.mapper.order.TbOrderInfoMapper; import cn.ysk.cashier.mapper.product.TbProductMapper; import cn.ysk.cashier.mapper.product.TbProductSkuMapper; @@ -96,6 +98,36 @@ public class TbOrderInfoServiceImpl implements TbOrderInfoService { if (StringUtils.isBlank(criteria.getStatus()) && StringUtils.isBlank(criteria.getSource())) { predicate = criteriaBuilder.and(predicate, criteriaBuilder.notEqual(root.get("orderType"), "return")); } + + if (StringUtils.isNotBlank(criteria.getProductName())) { + Date startTime, endTime; + DateTime offsetMonth = cn.hutool.core.date.DateUtil.offsetMonth(new Date(), 3); + if (criteria.getCreatedAt() != null && criteria.getCreatedAt().size() == 2) { + Long startLong = criteria.getCreatedAt().get(0); + Long endLong = criteria.getCreatedAt().get(1); + + startTime = new Date(startLong); + endTime = new Date(endLong); + + // 如果开始时间小于三个月前,不查询 + if (startTime.before(offsetMonth)) { + throw new BadRequestException("查询时间范围不能超过三个月"); + } + } else { + startTime = offsetMonth; + endTime = new Date(); + } + + List productIds = tbOrderDetailRepository.findOrderIdsByProductNameLike(criteria.getProductName(), + criteria.getShopId(), startTime, endTime); + + if (productIds.isEmpty()) { + predicate = criteriaBuilder.and(predicate, criteriaBuilder.equal(root.get("id"), 0)); + } else { + predicate = criteriaBuilder.and(predicate, root.get("id").in(productIds)); + } + } + return predicate; }, pageable); @@ -121,7 +153,7 @@ public class TbOrderInfoServiceImpl implements TbOrderInfoService { detail.setRefundNumber(refundNumber); } }); - }else { + } else { details.parallelStream().forEach(detail -> { detail.setRefundNumber(detail.getNum()); }); @@ -151,10 +183,10 @@ public class TbOrderInfoServiceImpl implements TbOrderInfoService { end = createdAt.get(1); } } - if(ObjectUtil.isEmpty(criteria.getTableName())){ + if (ObjectUtil.isEmpty(criteria.getTableName())) { criteria.setTableName(null); } - List payCountVoList = tbOrderInfoRepository.queryTbOrderPayCount(criteria.getShopId(),criteria.getTableName(), start, end); + List payCountVoList = tbOrderInfoRepository.queryTbOrderPayCount(criteria.getShopId(), criteria.getTableName(), start, end); BigDecimal totalPayAmount = BigDecimal.ZERO; for (TbOrderPayCountVo payCount : payCountVoList) { totalPayAmount = totalPayAmount.add(new BigDecimal(payCount.getPayAmount().toString())); @@ -171,7 +203,7 @@ public class TbOrderInfoServiceImpl implements TbOrderInfoService { result.add(payCount); } } - TbOrderPayCountVo payRufund = tbOrderInfoRepository.queryTbOrderRefund(criteria.getShopId(),criteria.getTableName(), start, end); + TbOrderPayCountVo payRufund = tbOrderInfoRepository.queryTbOrderRefund(criteria.getShopId(), criteria.getTableName(), start, end); if (payRufund != null) { totalPayAmount = totalPayAmount.subtract(new BigDecimal(payRufund.getPayAmount().toString())); payRufund.setPayType("退单"); @@ -231,7 +263,7 @@ public class TbOrderInfoServiceImpl implements TbOrderInfoService { dto.setIsRefund(0); dto.setRefundAmount(BigDecimal.ZERO); List tbOrderInfos = tbOrderInfoRepository.selTbOrdersBysource(tbOrderInfo.getId(), tbOrderInfo.getShopId()); - if(!CollectionUtils.isEmpty(tbOrderInfos)){ + if (!CollectionUtils.isEmpty(tbOrderInfos)) { dto.setIsRefund(1); dto.setRefundAmount(tbOrderInfos.stream().map(TbOrderInfo::getOrderAmount).reduce(BigDecimal.ZERO, BigDecimal::add)); } @@ -250,15 +282,15 @@ public class TbOrderInfoServiceImpl implements TbOrderInfoService { @Transactional(rollbackFor = Exception.class) public void expired(String orderId) { //修改耗材数据 - JSONObject jsonObject1=new JSONObject(); - jsonObject1.put("type","delete"); + JSONObject jsonObject1 = new JSONObject(); + jsonObject1.put("type", "delete"); Optional byId = tbOrderInfoRepository.findById(Integer.valueOf(orderId)); if (byId != null && byId.isPresent()) { TbOrderInfo tbOrderInfo = byId.get(); if (tbOrderInfo.getStatus().equals("unpaid")) { upOrderStatus(tbOrderInfo); - jsonObject1.put("orderId",tbOrderInfo.getId()); + jsonObject1.put("orderId", tbOrderInfo.getId()); // 发送取消订单mq消息 rabbitTemplate.convertAndSend(RabbitConstants.CONS_COLLECT_PUT, RabbitConstants.CONS_COLLECT_ROUTINGKEY_PUT, jsonObject1.toJSONString(), new CorrelationData(UUID.randomUUID().toString())); @@ -274,7 +306,7 @@ public class TbOrderInfoServiceImpl implements TbOrderInfoService { redisUtils.set(CacheKey.ORDER_EXPIRED + tbOrderInfo.getId(), tbOrderInfo.getId(), 60 * 2); } else { upOrderStatus(tbOrderInfo); - jsonObject1.put("orderId",tbOrderInfo.getId()); + jsonObject1.put("orderId", tbOrderInfo.getId()); // 发送取消订单mq消息 rabbitTemplate.convertAndSend(RabbitConstants.CONS_COLLECT_PUT, RabbitConstants.CONS_COLLECT_ROUTINGKEY_PUT, @@ -360,7 +392,7 @@ public class TbOrderInfoServiceImpl implements TbOrderInfoService { public void download(List all, HttpServletResponse response) throws IOException { List> list = new ArrayList<>(); - all=all.stream().sorted(Comparator.comparing(TbOrderInfoDto::getId).reversed()).collect(Collectors.toList()); + all = all.stream().sorted(Comparator.comparing(TbOrderInfoDto::getId).reversed()).collect(Collectors.toList()); for (TbOrderInfoDto tbOrderInfo : all) { Map map = new LinkedHashMap<>(); map.put("订单编号", tbOrderInfo.getOrderNo()); @@ -408,8 +440,8 @@ public class TbOrderInfoServiceImpl implements TbOrderInfoService { map.put("商品信息", productNames); // - if(ObjectUtil.isNotEmpty(tbOrderInfo.getPayType())&&ObjectUtil.isNotNull(tbOrderInfo.getPayType())){ - switch (tbOrderInfo.getPayType()){ + if (ObjectUtil.isNotEmpty(tbOrderInfo.getPayType()) && ObjectUtil.isNotNull(tbOrderInfo.getPayType())) { + switch (tbOrderInfo.getPayType()) { case "scanCode": tbOrderInfo.setPayType("收款码支付"); break; @@ -424,7 +456,7 @@ public class TbOrderInfoServiceImpl implements TbOrderInfoService { break; } - }else { + } else { tbOrderInfo.setPayType(""); } @@ -471,7 +503,7 @@ public class TbOrderInfoServiceImpl implements TbOrderInfoService { map.put("状态", tbOrderInfo.getStatus()); map.put("创建日期", DateUtil.timeStampFormatyMdHms(tbOrderInfo.getCreatedAt())); map.put("备注", tbOrderInfo.getRemark()); - map.put("台桌",tbOrderInfo.getTableName()); + map.put("台桌", tbOrderInfo.getTableName()); list.add(map); } FileUtil.downloadExcel(list, response); From 5943f1b72f6a063435defd7dff120ce464fa70a7 Mon Sep 17 00:00:00 2001 From: SongZhang <2064194730@qq.com> Date: Thu, 18 Jul 2024 14:26:58 +0800 Subject: [PATCH 04/12] =?UTF-8?q?1.sku=E5=94=AE=E5=87=BA=E8=AE=B0=E5=BD=95?= =?UTF-8?q?=E4=B8=8D=E4=BF=9D=E5=AD=98=E9=97=AE=E9=A2=98=202.=E5=BA=93?= =?UTF-8?q?=E5=AD=98=E6=9D=A1=E7=9B=AE=E6=95=B0=E4=B8=8D=E4=B8=80=E8=87=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../order/StockCountRepository.java | 46 +++++++++++++------ .../TbProductStockDetailServiceImpl.java | 5 +- 2 files changed, 34 insertions(+), 17 deletions(-) diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/repository/order/StockCountRepository.java b/eladmin-system/src/main/java/cn/ysk/cashier/repository/order/StockCountRepository.java index 3933e174..746d04cd 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/repository/order/StockCountRepository.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/repository/order/StockCountRepository.java @@ -33,20 +33,36 @@ public interface StockCountRepository extends JpaRepository countStock( @Param("startTime") String startTime, @Param("endTime") String endTime); - @Query(value = "SELECT pro.shop_id as shop_id, pro.id as pro_id, info.product_name as pro_name, pro.is_stock," + - " info.product_sku_name as sku_name, unit.NAME as unit_name ," + - "SUM( CASE WHEN orders.order_type != 'return' THEN info.num ELSE 0 END )- SUM( CASE WHEN orders.order_type = 'return' THEN info.num ELSE 0 END ) as stock_count," + - "CASE WHEN pro.is_distribute = '0' THEN sku.stock_number ELSE pro.stock_number END AS stock_number " + - "FROM " + - "tb_order_info orders " + - "LEFT JOIN tb_order_detail info ON orders.id = info.order_id " + - "LEFT JOIN tb_product pro ON info.product_id = pro.id " + - "LEFT JOIN (SELECT product_id,sum(stock_number) as stock_number from tb_product_sku GROUP BY product_id) sku ON info.product_id = sku.product_id " + - "LEFT JOIN tb_shop_unit unit ON unit.id = pro.unit_id " + - "WHERE " + - "orders.id = :orderId " + - "AND ( info.STATUS = 'closed' OR info.STATUS = 'refund' ) " + - "GROUP BY " + - "info.product_id ",nativeQuery = true) + @Query(value = "SELECT \n" + + " pro.shop_id AS shop_id, \n" + + " pro.id AS pro_id, \n" + + " info.product_name AS pro_name, \n" + + " pro.is_stock, \n" + + " info.product_sku_name AS sku_name, \n" + + " unit.NAME AS unit_name, \n" + + " SUM(CASE WHEN orders.order_type != 'return' THEN info.num ELSE 0 END) \n" + + " - SUM(CASE WHEN orders.order_type = 'return' THEN info.num ELSE 0 END) AS stock_count, \n" + + " CASE WHEN pro.is_distribute = '0' THEN sku.stock_number ELSE pro.stock_number END AS stock_number \n" + + "FROM \n" + + " tb_order_info orders \n" + + "LEFT JOIN \n" + + " tb_order_detail info ON orders.id = info.order_id \n" + + "LEFT JOIN \n" + + " tb_product pro ON info.product_id = pro.id \n" + + "LEFT JOIN \n" + + " (SELECT product_id, SUM(stock_number) AS stock_number FROM tb_product_sku GROUP BY product_id) sku ON info.product_id = sku.product_id \n" + + "LEFT JOIN \n" + + " tb_shop_unit unit ON unit.id = pro.unit_id \n" + + "WHERE \n" + + " orders.id = :orderId \n" + + " AND (info.STATUS = 'closed' OR info.STATUS = 'refund') \n" + + "GROUP BY \n" + + " info.product_id, \n" + + " pro.shop_id, \n" + + " pro.id, \n" + + " info.product_name, \n" + + " pro.is_stock, \n" + + " info.product_sku_name, \n" + + " unit.NAME",nativeQuery = true) List countStockById(Integer orderId); } diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/productimpl/TbProductStockDetailServiceImpl.java b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/productimpl/TbProductStockDetailServiceImpl.java index 4280c2af..4556c637 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/productimpl/TbProductStockDetailServiceImpl.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/productimpl/TbProductStockDetailServiceImpl.java @@ -79,14 +79,15 @@ public class TbProductStockDetailServiceImpl implements TbProductStockDetailServ ArrayList> contents = new ArrayList<>(); for (TbProductStockDetailDto tbProductStockDetailDto : map.getContent()) { + Map map1 = BeanUtil.transBean2Map(tbProductStockDetailDto); if (StrUtil.isNotBlank(tbProductStockDetailDto.getOrderId())) { TbOrderInfo tbOrderInfo = tbOrderInfoRepository.findById(Integer.valueOf(tbProductStockDetailDto.getOrderId())).orElse(null); - Map map1 = BeanUtil.transBean2Map(tbProductStockDetailDto); if (tbOrderInfo != null) { map1.put("orderNo", tbOrderInfo.getOrderNo()); } - contents.add(map1); } + contents.add(map1); + tbProductStockDetailDto.setTypes(); } Map info = new LinkedHashMap<>(2); From 946a827154cbb237e6405bcb14c4dfff81765afd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=89=9B=E5=8F=89=E9=97=AA=E9=97=AA?= <18322780655@163.com> Date: Thu, 18 Jul 2024 17:43:17 +0800 Subject: [PATCH 05/12] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=80=97=E6=9D=90?= =?UTF-8?q?=E5=8D=95=E4=BD=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cons/service/dto/TbConsInfoFlowQueryCriteria.java | 6 ++++++ .../cons/service/impl/TbConsInfoFlowServiceImpl.java | 2 ++ 2 files changed, 8 insertions(+) diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/cons/service/dto/TbConsInfoFlowQueryCriteria.java b/eladmin-system/src/main/java/cn/ysk/cashier/cons/service/dto/TbConsInfoFlowQueryCriteria.java index 18d90b44..7e44066c 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/cons/service/dto/TbConsInfoFlowQueryCriteria.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/cons/service/dto/TbConsInfoFlowQueryCriteria.java @@ -1,6 +1,8 @@ package cn.ysk.cashier.cons.service.dto; import lombok.Data; + +import java.math.BigDecimal; import java.util.List; import cn.ysk.cashier.annotation.Query; @@ -26,4 +28,8 @@ public class TbConsInfoFlowQueryCriteria{ @Query private String orderNo; + + + @Query(type = Query.Type.NOT_EQUAL) + private BigDecimal amount; } \ No newline at end of file diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/cons/service/impl/TbConsInfoFlowServiceImpl.java b/eladmin-system/src/main/java/cn/ysk/cashier/cons/service/impl/TbConsInfoFlowServiceImpl.java index 43d101d9..584f9d26 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/cons/service/impl/TbConsInfoFlowServiceImpl.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/cons/service/impl/TbConsInfoFlowServiceImpl.java @@ -18,6 +18,7 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; +import java.math.BigDecimal; import java.util.*; import java.io.IOException; import javax.servlet.http.HttpServletResponse; @@ -38,6 +39,7 @@ public class TbConsInfoFlowServiceImpl implements TbConsInfoFlowService { @Override public Map queryAll(TbConsInfoFlowQueryCriteria criteria, Pageable pageable){ + criteria.setAmount(BigDecimal.ZERO); Sort sort = Sort.by(Sort.Direction.DESC, "id"); pageable = PageRequest.of(pageable.getPageNumber(), pageable.getPageSize(), sort); Page page = tbConsInfoFlowRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder),pageable); From 4bd089e0fc076a4612a5584b02a1a6ea2060c8c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=89=9B=E5=8F=89=E9=97=AA=E9=97=AA?= <18322780655@163.com> Date: Sat, 20 Jul 2024 15:17:05 +0800 Subject: [PATCH 06/12] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=80=97=E6=9D=90?= =?UTF-8?q?=E8=AE=B0=E5=BD=95=E9=80=9A=E8=BF=87=E5=BA=97=E9=93=BAid?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cn/ysk/cashier/cons/domain/ViewConInfoFlow.java | 5 +++++ .../cons/service/dto/ViewConInfoFlowQueryCriteria.java | 4 ++++ 2 files changed, 9 insertions(+) diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/cons/domain/ViewConInfoFlow.java b/eladmin-system/src/main/java/cn/ysk/cashier/cons/domain/ViewConInfoFlow.java index 228b0216..b91594aa 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/cons/domain/ViewConInfoFlow.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/cons/domain/ViewConInfoFlow.java @@ -43,6 +43,11 @@ public class ViewConInfoFlow implements Serializable { @ApiModelProperty(value = "耗材名称") private String conName; + + @Column(name = "`shop_id`") + @ApiModelProperty(value = "店铺id") + private Integer shopId; + @Column(name = "`con_return`",nullable = false) @NotNull @ApiModelProperty(value = "con_return") diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/cons/service/dto/ViewConInfoFlowQueryCriteria.java b/eladmin-system/src/main/java/cn/ysk/cashier/cons/service/dto/ViewConInfoFlowQueryCriteria.java index 45b31445..5540ebe5 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/cons/service/dto/ViewConInfoFlowQueryCriteria.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/cons/service/dto/ViewConInfoFlowQueryCriteria.java @@ -14,4 +14,8 @@ public class ViewConInfoFlowQueryCriteria{ /** 模糊 */ @Query(type = Query.Type.INNER_LIKE) private String conName; + + + @Query + private String shopId; } \ No newline at end of file From 7e4299eecc8d67a185edbdcdc97af58e052bfa94 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=89=9B=E5=8F=89=E9=97=AA=E9=97=AA?= <18322780655@163.com> Date: Sat, 20 Jul 2024 16:02:45 +0800 Subject: [PATCH 07/12] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=80=97=E6=9D=90?= =?UTF-8?q?=E8=AE=B0=E5=BD=95=E9=80=9A=E8=BF=87=E5=BA=97=E9=93=BAid?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cashier/cons/repository/TbConsInfoFlowRepository.java | 8 ++++---- .../cons/service/impl/TbConsInfoFlowServiceImpl.java | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/cons/repository/TbConsInfoFlowRepository.java b/eladmin-system/src/main/java/cn/ysk/cashier/cons/repository/TbConsInfoFlowRepository.java index 26d7f1d1..90c0a8d6 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/cons/repository/TbConsInfoFlowRepository.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/cons/repository/TbConsInfoFlowRepository.java @@ -16,10 +16,10 @@ public interface TbConsInfoFlowRepository extends JpaRepository page = tbConsInfoFlowRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder),pageable); page.get().forEach(it->{ - String name= tbConsInfoFlowRepository.selectByPskId(it.getConsId()); + String name= tbConsInfoFlowRepository.selectByPskId(it.getProSkuId()); if(Objects.nonNull(name)){ it.setProductName(name); } From 4c153a2bfb5b805454c3ca33f2f0962ee6e000e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=89=9B=E5=8F=89=E9=97=AA=E9=97=AA?= <18322780655@163.com> Date: Sat, 20 Jul 2024 16:53:27 +0800 Subject: [PATCH 08/12] =?UTF-8?q?=E8=80=97=E6=9D=90=E8=AE=B0=E5=BD=95?= =?UTF-8?q?=E4=B8=AD=E6=B7=BB=E5=8A=A0=E5=95=86=E5=93=81=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/ysk/cashier/cons/domain/ViewConInfoFlow.java | 13 +++++++++++++ .../cons/service/dto/ViewConInfoFlowDto.java | 8 ++++++++ 2 files changed, 21 insertions(+) diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/cons/domain/ViewConInfoFlow.java b/eladmin-system/src/main/java/cn/ysk/cashier/cons/domain/ViewConInfoFlow.java index b91594aa..c7efd392 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/cons/domain/ViewConInfoFlow.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/cons/domain/ViewConInfoFlow.java @@ -73,6 +73,19 @@ public class ViewConInfoFlow implements Serializable { @ApiModelProperty(value = "balance") private BigDecimal balance; + + + @Column(name = "`product_id`") + @ApiModelProperty(value = "商品id") + private String productId; + + + @Column(name = "`product_name`") + @ApiModelProperty(value = "商品名称") + private String productName; + + + public void copy(ViewConInfoFlow source){ BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true)); } diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/cons/service/dto/ViewConInfoFlowDto.java b/eladmin-system/src/main/java/cn/ysk/cashier/cons/service/dto/ViewConInfoFlowDto.java index 93397159..158170a4 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/cons/service/dto/ViewConInfoFlowDto.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/cons/service/dto/ViewConInfoFlowDto.java @@ -15,7 +15,10 @@ */ package cn.ysk.cashier.cons.service.dto; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; + +import javax.persistence.Column; import java.math.BigDecimal; import java.io.Serializable; @@ -41,4 +44,9 @@ public class ViewConInfoFlowDto implements Serializable { private BigDecimal conOut; private BigDecimal balance; + + + private String productId; + + private String productName; } \ No newline at end of file From 2a6dcf563b885d3bc84127291126022662619b34 Mon Sep 17 00:00:00 2001 From: SongZhang <2064194730@qq.com> Date: Sat, 20 Jul 2024 17:00:39 +0800 Subject: [PATCH 09/12] =?UTF-8?q?1.sku=E5=94=AE=E5=87=BA=E8=AE=B0=E5=BD=95?= =?UTF-8?q?=E4=B8=8D=E4=BF=9D=E5=AD=98=E9=97=AE=E9=A2=98=202.=E5=BA=93?= =?UTF-8?q?=E5=AD=98=E6=9D=A1=E7=9B=AE=E6=95=B0=E4=B8=8D=E4=B8=80=E8=87=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../product/TbProductSkuRepository.java | 2 +- .../java/cn/ysk/cashier/vo/StockV2Vo.java | 151 +++++++++++++++++- 2 files changed, 151 insertions(+), 2 deletions(-) diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/repository/product/TbProductSkuRepository.java b/eladmin-system/src/main/java/cn/ysk/cashier/repository/product/TbProductSkuRepository.java index 83a0fb42..d38551d9 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/repository/product/TbProductSkuRepository.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/repository/product/TbProductSkuRepository.java @@ -63,7 +63,7 @@ public interface TbProductSkuRepository extends JpaRepository Date: Mon, 22 Jul 2024 11:37:31 +0800 Subject: [PATCH 10/12] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=9B=98=E7=82=B9?= =?UTF-8?q?=E5=A4=87=E6=B3=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/cn/ysk/cashier/cons/domain/TbConCheck.java | 5 +++++ .../java/cn/ysk/cashier/cons/service/dto/TbConCheckDto.java | 2 ++ .../ysk/cashier/cons/service/impl/TbConCheckServiceImpl.java | 1 + 3 files changed, 8 insertions(+) diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/cons/domain/TbConCheck.java b/eladmin-system/src/main/java/cn/ysk/cashier/cons/domain/TbConCheck.java index 2ce2ea3d..18c93002 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/cons/domain/TbConCheck.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/cons/domain/TbConCheck.java @@ -72,6 +72,11 @@ public class TbConCheck implements Serializable { @ApiModelProperty(value = "createTime") private Timestamp createTime; + + @Column(name = "`remark`") + @ApiModelProperty(value = "备注") + private String remark; + public void copy(TbConCheck source){ BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true)); } diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/cons/service/dto/TbConCheckDto.java b/eladmin-system/src/main/java/cn/ysk/cashier/cons/service/dto/TbConCheckDto.java index 57db6407..9c09f2ee 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/cons/service/dto/TbConCheckDto.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/cons/service/dto/TbConCheckDto.java @@ -44,4 +44,6 @@ public class TbConCheckDto implements Serializable { private BigDecimal acStockNumber; private Timestamp createTime; + + private String remark; } \ No newline at end of file diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/cons/service/impl/TbConCheckServiceImpl.java b/eladmin-system/src/main/java/cn/ysk/cashier/cons/service/impl/TbConCheckServiceImpl.java index 2bc9b1ad..a5c50c38 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/cons/service/impl/TbConCheckServiceImpl.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/cons/service/impl/TbConCheckServiceImpl.java @@ -82,6 +82,7 @@ public class TbConCheckServiceImpl implements TbConCheckService { conCheck.setLpNum(resources.getLpNum()); conCheck.setLpAmount(consInfo.getPrice().multiply(resources.getLpNum())); conCheck.setCreateTime(new Timestamp(System.currentTimeMillis())); + conCheck.setRemark(resources.getRemark()); return tbConCheckMapper.toDto(tbConCheckRepository.save(conCheck)); } From f6c8a0c06715e48609cc81d8625120a2efd1523f Mon Sep 17 00:00:00 2001 From: wangw <1594593906@qq.com> Date: Mon, 22 Jul 2024 13:48:06 +0800 Subject: [PATCH 11/12] =?UTF-8?q?=E5=BA=97=E9=93=BA=E6=89=A9=E5=B1=95?= =?UTF-8?q?=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../shop/TbShopExtendController.java | 75 ++++++++++++++++ .../dto/shop/TbShopExtendQueryCriteria.java | 36 ++++++++ .../cashier/mybatis/entity/TbShopExtend.java | 88 +++++++++++++++++++ .../mybatis/mapper/TbShopExtendMapper.java | 15 ++++ .../mybatis/service/TbShopExtendService.java | 20 +++++ .../service/impl/TbShopExtendServiceImpl.java | 45 ++++++++++ 6 files changed, 279 insertions(+) create mode 100644 eladmin-system/src/main/java/cn/ysk/cashier/controller/shop/TbShopExtendController.java create mode 100644 eladmin-system/src/main/java/cn/ysk/cashier/dto/shop/TbShopExtendQueryCriteria.java create mode 100644 eladmin-system/src/main/java/cn/ysk/cashier/mybatis/entity/TbShopExtend.java create mode 100644 eladmin-system/src/main/java/cn/ysk/cashier/mybatis/mapper/TbShopExtendMapper.java create mode 100644 eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/TbShopExtendService.java create mode 100644 eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/impl/TbShopExtendServiceImpl.java diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/controller/shop/TbShopExtendController.java b/eladmin-system/src/main/java/cn/ysk/cashier/controller/shop/TbShopExtendController.java new file mode 100644 index 00000000..2a1f6172 --- /dev/null +++ b/eladmin-system/src/main/java/cn/ysk/cashier/controller/shop/TbShopExtendController.java @@ -0,0 +1,75 @@ +package cn.ysk.cashier.controller.shop; + + +import cn.ysk.cashier.annotation.rest.AnonymousDeleteMapping; +import cn.ysk.cashier.annotation.rest.AnonymousGetMapping; +import cn.ysk.cashier.annotation.rest.AnonymousPostMapping; +import cn.ysk.cashier.annotation.rest.AnonymousPutMapping; +import cn.ysk.cashier.mybatis.entity.TbShopExtend; +import cn.ysk.cashier.mybatis.service.TbShopExtendService; +import org.springframework.web.bind.annotation.*; +import io.swagger.annotations.ApiOperation; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import cn.ysk.cashier.dto.shop.TbShopExtendQueryCriteria; + +import javax.annotation.Resource; +import java.io.Serializable; +import java.util.Date; +import java.util.List; + +/** + * 店铺扩展信息(TbShopExtend)表控制层 + * + * @author ww + * @since 2024-07-18 11:10:16 + */ +@RestController +@RequestMapping("tbShopExtend") +public class TbShopExtendController { + /** + * 服务对象 + */ + @Resource + private TbShopExtendService tbShopExtendService; + + @GetMapping + @ApiOperation("分页查询") + @AnonymousGetMapping + public ResponseEntity selectAll(TbShopExtendQueryCriteria criteria) { + return new ResponseEntity<>(tbShopExtendService.queryAll(criteria), HttpStatus.OK); + } + + @GetMapping("{id}") + @ApiOperation("通过Id查询详情") + @AnonymousGetMapping + public TbShopExtend selectOne(@PathVariable Serializable id) { + return tbShopExtendService.getById(id); + } + + @PostMapping + @ApiOperation("新增") + @AnonymousPostMapping + public ResponseEntity insert(@RequestBody TbShopExtend tbShopExtend) { + tbShopExtend.setCreateTime(new Date()); + return new ResponseEntity<>(tbShopExtendService.save(tbShopExtend), HttpStatus.CREATED); + } + + @PutMapping + @ApiOperation("通过id修改") + @AnonymousPutMapping + public ResponseEntity update(@RequestBody TbShopExtend tbShopExtend) { + tbShopExtend.setUpdateTime(new Date()); + tbShopExtendService.updateById(tbShopExtend); + return new ResponseEntity<>(HttpStatus.NO_CONTENT); + } + + @DeleteMapping + @ApiOperation("删除") + @AnonymousDeleteMapping + public ResponseEntity delete(@RequestParam("idList") List idList) { + tbShopExtendService.removeByIds(idList); + return new ResponseEntity<>(HttpStatus.OK); + } +} + diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/dto/shop/TbShopExtendQueryCriteria.java b/eladmin-system/src/main/java/cn/ysk/cashier/dto/shop/TbShopExtendQueryCriteria.java new file mode 100644 index 00000000..667ee2b7 --- /dev/null +++ b/eladmin-system/src/main/java/cn/ysk/cashier/dto/shop/TbShopExtendQueryCriteria.java @@ -0,0 +1,36 @@ +package cn.ysk.cashier.dto.shop; + +import lombok.Data; + + +/** + * 店铺扩展信息(TbShopExtend)表查询类 + * + * @author ww + * @since 2024-07-18 10:46:57 + */ +@Data +public class TbShopExtendQueryCriteria { + private Integer shopId; + //img:图片;text:文本; + private String type; + //自定义key + private String autokey; + //值 + private String value; + private long page = 1; + private long size = 10; + + public void setPage(long page) { + if (page != 0) { + this.page = page; + } + } + + public void setSize(long size) { + if (size != 0) { + this.size = size; + } + } +} + diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/entity/TbShopExtend.java b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/entity/TbShopExtend.java new file mode 100644 index 00000000..a49b186b --- /dev/null +++ b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/entity/TbShopExtend.java @@ -0,0 +1,88 @@ +package cn.ysk.cashier.mybatis.entity; + +import java.util.Date; + +import com.baomidou.mybatisplus.extension.activerecord.Model; + + +/** + * 店铺扩展信息(TbShopExtend)表实体类 + * + * @author ww + * @since 2024-07-18 11:10:16 + */ +@SuppressWarnings("serial") +public class TbShopExtend extends Model { + //自增id + private Integer id; + //商户Id + private Integer shopId; + //img:图片;text:文本; + private String type; + //自定义key + private String autokey; + //值 + private String value; + //更新时间 + private Date updateTime; + //创建时间 + private Date createTime; + + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Integer getShopId() { + return shopId; + } + + public void setShopId(Integer shopId) { + this.shopId = shopId; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getAutokey() { + return autokey; + } + + public void setAutokey(String autokey) { + this.autokey = autokey; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + public Date getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(Date updateTime) { + this.updateTime = updateTime; + } + + public Date getCreateTime() { + return createTime; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } +} + diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/mapper/TbShopExtendMapper.java b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/mapper/TbShopExtendMapper.java new file mode 100644 index 00000000..970a9ba4 --- /dev/null +++ b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/mapper/TbShopExtendMapper.java @@ -0,0 +1,15 @@ +package cn.ysk.cashier.mybatis.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import cn.ysk.cashier.mybatis.entity.TbShopExtend; + +/** + * 店铺扩展信息(TbShopExtend)表数据库访问层 + * + * @author ww + * @since 2024-07-18 11:10:16 + */ +public interface TbShopExtendMapper extends BaseMapper { + +} + diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/TbShopExtendService.java b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/TbShopExtendService.java new file mode 100644 index 00000000..61a6b174 --- /dev/null +++ b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/TbShopExtendService.java @@ -0,0 +1,20 @@ +package cn.ysk.cashier.mybatis.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import cn.ysk.cashier.mybatis.entity.TbShopExtend; +import cn.ysk.cashier.dto.shop.TbShopExtendQueryCriteria; + +import java.util.Map; + +/** + * 店铺扩展信息(TbShopExtend)表服务接口 + * + * @author ww + * @since 2024-07-18 11:10:16 + */ +public interface TbShopExtendService extends IService { + + Map queryAll(TbShopExtendQueryCriteria criteria); + +} + diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/impl/TbShopExtendServiceImpl.java b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/impl/TbShopExtendServiceImpl.java new file mode 100644 index 00000000..fe7bc2cc --- /dev/null +++ b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/impl/TbShopExtendServiceImpl.java @@ -0,0 +1,45 @@ +package cn.ysk.cashier.mybatis.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import cn.ysk.cashier.mybatis.mapper.TbShopExtendMapper; +import cn.ysk.cashier.mybatis.entity.TbShopExtend; +import cn.ysk.cashier.mybatis.service.TbShopExtendService; +import org.springframework.stereotype.Service; +import org.apache.commons.lang3.StringUtils; +import cn.ysk.cashier.dto.shop.TbShopExtendQueryCriteria; +import org.springframework.beans.factory.annotation.Autowired; +import cn.ysk.cashier.utils.PageUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; + +import java.util.Map; + +/** + * 店铺扩展信息(TbShopExtend)表服务实现类 + * + * @author ww + * @since 2024-07-18 10:57:39 + */ +@Service("tbShopExtendService") +public class TbShopExtendServiceImpl extends ServiceImpl implements TbShopExtendService { + + @Autowired + private TbShopExtendMapper tbShopExtendmapper; + + @Override + public Map queryAll(TbShopExtendQueryCriteria criteria) { + Page page = new Page<>(criteria.getPage(), criteria.getSize()); + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("shop_id", criteria.getShopId()); + if (StringUtils.isNotBlank(criteria.getType())) { + wrapper.eq("type",criteria.getType()); + } + if (StringUtils.isNotBlank(criteria.getAutokey())) { + wrapper.like("autokey",criteria.getAutokey()); + } + wrapper.orderByDesc("create_time"); + Page ipage = tbShopExtendmapper.selectPage(page, wrapper); + return PageUtil.toPage(ipage.getRecords(), ipage.getTotal()); + } +} + From 89733cdd95e578748a7d2ce2e4283a2297130463 Mon Sep 17 00:00:00 2001 From: SongZhang <2064194730@qq.com> Date: Tue, 23 Jul 2024 09:17:14 +0800 Subject: [PATCH 12/12] =?UTF-8?q?1.=E5=BA=93=E5=AD=98=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=EF=BC=8Csku=E4=B8=8A=E4=B8=8B=E6=9E=B6?= =?UTF-8?q?=E5=AD=97=E6=AE=B5=E8=BF=94=E5=9B=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cashier/repository/product/TbProductSkuRepository.java | 3 ++- eladmin-system/src/main/java/cn/ysk/cashier/vo/StockV2Vo.java | 4 +++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/repository/product/TbProductSkuRepository.java b/eladmin-system/src/main/java/cn/ysk/cashier/repository/product/TbProductSkuRepository.java index d38551d9..7cf13c48 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/repository/product/TbProductSkuRepository.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/repository/product/TbProductSkuRepository.java @@ -106,7 +106,8 @@ public interface TbProductSkuRepository extends JpaRepository