diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/controller/product/TbProductController.java b/eladmin-system/src/main/java/cn/ysk/cashier/controller/product/TbProductController.java index 2c7d352d..7be97e0c 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/controller/product/TbProductController.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/controller/product/TbProductController.java @@ -1,5 +1,6 @@ package cn.ysk.cashier.controller.product; +import cn.ysk.cashier.annotation.AnonymousAccess; import cn.ysk.cashier.annotation.Log; import cn.ysk.cashier.dto.product.TbProductSortCriteria; import cn.ysk.cashier.vo.TbProductVo; @@ -29,7 +30,13 @@ public class TbProductController { @GetMapping @ApiOperation("查询/product") public ResponseEntity queryTbProduct(TbProductQueryCriteria criteria){ - return new ResponseEntity<>(tbProductService.queryAll(criteria),HttpStatus.OK); + return new ResponseEntity<>(tbProductService.queryAll(criteria, false),HttpStatus.OK); + } + + @GetMapping("/list") + @ApiOperation("查询/productForAdmin") + public ResponseEntity queryTbProductForAdmin(TbProductQueryCriteria criteria){ + return new ResponseEntity<>(tbProductService.queryAll(criteria, true),HttpStatus.OK); } @GetMapping("/isHot") @@ -78,4 +85,4 @@ public class TbProductController { tbProductService.deleteAll(ids); return new ResponseEntity<>(HttpStatus.OK); } -} \ No newline at end of file +} diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/controller/product/TbProductGroupController.java b/eladmin-system/src/main/java/cn/ysk/cashier/controller/product/TbProductGroupController.java index 8c2d5749..b5e82e5b 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/controller/product/TbProductGroupController.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/controller/product/TbProductGroupController.java @@ -92,7 +92,7 @@ public class TbProductGroupController { */ @GetMapping("/addProduct") public ResponseEntity ProductList(TbProductQueryCriteria criteria, Pageable pageable){ - return new ResponseEntity<>(tbProductService.queryAll(criteria),HttpStatus.OK); + return new ResponseEntity<>(tbProductService.queryAll(criteria, false),HttpStatus.OK); } /** @@ -107,4 +107,4 @@ public class TbProductGroupController { return new ResponseEntity<>(tbProductGroupService.updateProductIds(addProduct,userName),HttpStatus.OK); } -} \ No newline at end of file +} diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/controller/product/TbProductStockOperateController.java b/eladmin-system/src/main/java/cn/ysk/cashier/controller/product/TbProductStockOperateController.java index d92c3cd3..c56ccb05 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/controller/product/TbProductStockOperateController.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/controller/product/TbProductStockOperateController.java @@ -1,5 +1,6 @@ package cn.ysk.cashier.controller.product; +import cn.ysk.cashier.annotation.AnonymousAccess; import cn.ysk.cashier.annotation.Log; import cn.ysk.cashier.pojo.product.TbProductStockOperate; import cn.ysk.cashier.service.TbProductStockOperateService; @@ -81,4 +82,4 @@ public class TbProductStockOperateController { tbProductStockOperateService.deleteAll(ids); return new ResponseEntity<>(HttpStatus.OK); } -} \ No newline at end of file +} diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/controller/shop/TbShopPurveyorController.java b/eladmin-system/src/main/java/cn/ysk/cashier/controller/shop/TbShopPurveyorController.java index f119086b..102ac7cc 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/controller/shop/TbShopPurveyorController.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/controller/shop/TbShopPurveyorController.java @@ -78,4 +78,4 @@ public class TbShopPurveyorController { tbShopPurveyorService.deleteAll(ids); return new ResponseEntity<>(HttpStatus.OK); } -} \ No newline at end of file +} diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/controller/shop/TbShopPurveyorTransactController.java b/eladmin-system/src/main/java/cn/ysk/cashier/controller/shop/TbShopPurveyorTransactController.java index 18a3c475..af196e69 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/controller/shop/TbShopPurveyorTransactController.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/controller/shop/TbShopPurveyorTransactController.java @@ -44,23 +44,15 @@ public class TbShopPurveyorTransactController { private final TbShopPurveyorTransactService tbShopPurveyorTransactService; - @ApiOperation("导出数据") - @GetMapping(value = "/download") - @PreAuthorize("@el.check('tbShopPurveyorTransact:list')") - public void exportTbShopPurveyorTransact(HttpServletResponse response, TbShopPurveyorTransactQueryCriteria criteria) throws IOException { - tbShopPurveyorTransactService.download(tbShopPurveyorTransactService.queryAll(criteria), response); - } - /** - * 进货账目 + * 供应商列表 * @param criteria - * @param pageable * @return */ @GetMapping - @ApiOperation("查询帐目往来") - public ResponseEntity queryTbShopPurveyorTransactSum(TbShopPurveyorTransactQueryCriteria criteria, Pageable pageable){ - return new ResponseEntity<>(tbShopPurveyorTransactService.queryTransactDate(criteria,pageable),HttpStatus.OK); + @ApiOperation("供应商列表") + public ResponseEntity queryTransactDate(TbShopPurveyorTransactQueryCriteria criteria){ + return new ResponseEntity<>(tbShopPurveyorTransactService.queryTransactDate(criteria),HttpStatus.OK); } /** @@ -79,10 +71,17 @@ public class TbShopPurveyorTransactController { * @return */ @GetMapping("/sum") - public ResponseEntity queryTransactSum( TbShopPurveyorTransactQueryCriteria criteria){ + public ResponseEntity queryTransactSum(TbShopPurveyorTransactQueryCriteria criteria){ return new ResponseEntity<>(tbShopPurveyorTransactService.queryTransactSum(criteria),HttpStatus.OK); } + @PostMapping("/payTransact") + @ApiOperation("账单付款") + public ResponseEntity payTransact(@RequestBody TbShopPurveyorTransact resources){ + tbShopPurveyorTransactService.payTransact(resources); + return new ResponseEntity<>(HttpStatus.OK); + } + @PostMapping @ApiOperation("新增帐目往来") public ResponseEntity createTbShopPurveyorTransact(@Validated @RequestBody TbShopPurveyorTransact resources){ diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/dto/product/OutAndOnDto.java b/eladmin-system/src/main/java/cn/ysk/cashier/dto/product/OutAndOnDto.java index b734978d..f5d78b52 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/dto/product/OutAndOnDto.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/dto/product/OutAndOnDto.java @@ -46,7 +46,6 @@ public class OutAndOnDto { * 应收金额 */ private BigDecimal totalAmount; - @NonNull private String type; @NonNull @@ -54,7 +53,6 @@ public class OutAndOnDto { private String isImport=""; - public String getBatchNumber() { return batchNumber; } diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/dto/shop/TbShopPurveyorTransactQueryCriteria.java b/eladmin-system/src/main/java/cn/ysk/cashier/dto/shop/TbShopPurveyorTransactQueryCriteria.java index 18e8d5a6..c581fbdb 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/dto/shop/TbShopPurveyorTransactQueryCriteria.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/dto/shop/TbShopPurveyorTransactQueryCriteria.java @@ -1,41 +1,35 @@ -/* -* 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.dto.shop; import lombok.Data; + import java.util.List; + import cn.ysk.cashier.annotation.Query; +import org.apache.commons.lang3.StringUtils; /** -* @website https://eladmin.vip -* @author lyf -* @date 2024-01-23 -**/ + * @author lyf + * @website https://eladmin.vip + * @date 2024-01-23 + **/ @Data -public class TbShopPurveyorTransactQueryCriteria{ +public class TbShopPurveyorTransactQueryCriteria { - /** 精确 */ + /** + * 精确 + */ @Query private String shopId; - /** 精确 */ + /** + * 精确 + */ @Query(type = Query.Type.LEFT_LIKE) private String purveyorName; - /** 精确 */ + /** + * 精确 + */ @Query private String purveyorId; /** @@ -54,11 +48,21 @@ public class TbShopPurveyorTransactQueryCriteria{ private Integer size; - private String sort; + public void setShopId(String shopId) { + if (StringUtils.isNotBlank(shopId) && !shopId.equals("1")) { + this.shopId = shopId; + } + } public void setStatus(Integer status) { if (status != null) { this.status = status; } } + + public void setType(String type) { + if (StringUtils.isNotBlank(type)) { + this.type = type; + } + } } \ 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 a28d820c..4c83db0a 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 @@ -139,4 +139,6 @@ public class TbProductSku implements Serializable { @Column(name = "`is_pause_sale`") @ApiModelProperty(value = "是否暂停销售") private Integer isPauseSale = 0; + + } 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 5bc2a8f9..7be61f46 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 @@ -146,4 +146,8 @@ public interface TbProductSkuRepository extends JpaRepository, JpaSpecificationExecutor { -// @Query("SELECT sum(transact.waitAmount) as waitAmount,count(transact.id) as waitCount, transact.purveyorId as purveyorId, from TbShopPurveyorTransact transact " + -// "where transact.purveyorId = :purveyorId and transact.type =:type GROUP BY transact.purveyorId") -// List> findByPurveyorIds(@Param("purveyorId") String purveyorId, @Param("type") String type); -// @Query(value = "select transact.* from tb_shop_purveyor_transact transact where transact.shop_id =:shopId and transact.status =:status " + -// "GROUP BY transact.purveyor_id LIMIT :page, :size ", nativeQuery = true) -// List findByGroup(@Param("status")Integer status, @Param("shopId") String shopId,@Param("page") Integer page, @Param("size") Integer size); -// - @Query(value = "SELECT\n" + + @Query(value = "SELECT " + "IFNULL(sum( b.wait_amount ), 0 ) AS waitAmount," + "IFNULL(count( b.id ), 0 ) AS waitCount," + "IFNULL(SUM(b.paid_amount),0) AS paidAmount," + @@ -46,10 +27,31 @@ public interface TbShopPurveyorTransactRepository extends JpaRepository findBySum(@Param("purveyorId") String purveyorId,@Param("type")String type); -// + + @Query("SELECT new cn.ysk.cashier.vo.PurveyorTransactVO(" + + "b.id," + + "b.purveyorName," + + "b.purveyorTelephone," + + "b.address," + + "b.remark," + + "b.lastTransactAt," + + "sum(a.waitAmount) ," + + "count(a.id)) " + + "from " + + "TbShopPurveyor b " + + "LEFT JOIN TbShopPurveyorTransact a ON a.purveyorId = b.id " + + "WHERE " + + "1=1 " + + "AND (:type IS NULL OR a.type = :type )" + + "AND (:shopId IS NULL OR b.shopId = :shopId) " + + "AND (:name IS NULL OR b.purveyorName LIKE %:name%) " + + "GROUP BY b.id " + + "order by b.lastTransactAt desc,a.purveyorId") + Page queryTransactDate(String type, String shopId, String name, Pageable page); + @Query(value = "SELECT IFNULL(count(b.id),0) AS waitNumber FROM tb_shop_purveyor_transact b WHERE" + - " b.purveyor_id = :purveyorId AND b.type = :type AND b.`status`= :status",nativeQuery = true) + " b.purveyor_id = :purveyorId AND (:type IS NULL OR b.type = :type) AND b.`status`= :status",nativeQuery = true) Map findByStatusSum(@Param("purveyorId") String purveyorId,@Param("type")String type,@Param("status")Integer status); } \ No newline at end of file diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/productimpl/TbProductServiceImpl.java b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/productimpl/TbProductServiceImpl.java index eb2c0010..c46b73af 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/productimpl/TbProductServiceImpl.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/productimpl/TbProductServiceImpl.java @@ -71,8 +71,25 @@ public class TbProductServiceImpl implements TbProductService { private final RedisUtils redisUtils; + public static String setType(String type) { + switch (type) { + case "normal": + return "单规格"; + case "sku": + return "多规格"; + case "weight": + return "称重商品"; + case "currentPrice": + return "套餐商品/团购卷"; + case "group": + return "时价商品"; + default: + return type; + } + } + @Override - public Map queryAll(TbProductQueryCriteria criteria) { + public Map queryAll(TbProductQueryCriteria criteria, boolean isAdmin) { Sort sort = Sort.by(Sort.Direction.ASC, "sort"); Pageable pageable = PageRequest.of(criteria.getPage(), criteria.getSize(), sort); //查询商品数据 @@ -127,14 +144,23 @@ public class TbProductServiceImpl implements TbProductService { TbProductVo tbProductVo = new TbProductVo(); //sku,并且计算销量以及库存 double stockNumber = 0.00; + if (product.getIsDistribute() == 1) { stockNumber = Double.valueOf(product.getStockNumber()); + TbProductSku tbProductSku = null; + if (isAdmin) { + if (!tbProductSkus.isEmpty()) { + tbProductSku = BeanUtil.copyProperties(tbProductSkus.get(0), TbProductSku.class); + tbProductSku.setStockNumber(stockNumber); + } + skuList.add(tbProductSku); + } } else { for (TbProductSku sku : tbProductSkus) { //sku if (sku.getProductId().equals(product.getId().toString())) { skuList.add(sku); - stockNumber = stockNumber + sku.getStockNumber(); + stockNumber = isAdmin ? sku.getStockNumber() : stockNumber + sku.getStockNumber(); } } } @@ -184,11 +210,13 @@ public class TbProductServiceImpl implements TbProductService { } } BeanUtils.copyProperties(product, tbProductVo); + tbProductVo.setTypeEnum(setType(tbProductVo.getTypeEnum())); tbProductVoList.add(tbProductVo); } return PageUtil.toPage(tbProductVoList, page.getTotalElements()); } + @Override public TbProductVo findByProductId(Integer id) throws Exception { TbProduct tbProduct = tbProductRepository.findById(id).orElseGet(TbProduct::new); diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/productimpl/TbProductStockOperateServiceImpl.java b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/productimpl/TbProductStockOperateServiceImpl.java index 373ad303..91a4cdff 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/productimpl/TbProductStockOperateServiceImpl.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/productimpl/TbProductStockOperateServiceImpl.java @@ -36,6 +36,7 @@ import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.util.CollectionUtils; +import java.math.BigDecimal; import java.time.Instant; import java.util.*; import java.io.IOException; @@ -83,7 +84,7 @@ public class TbProductStockOperateServiceImpl implements TbProductStockOperateSe } HashMap map = new HashMap<>(); map.put("content",stockOperateVOList); - map.put("totalElements",page.getTotalElements()); + map.put("totalElements", page.getTotalElements()); return map; } @@ -187,7 +188,7 @@ public class TbProductStockOperateServiceImpl implements TbProductStockOperateSe purveyorTransact.setTotalAmount(resources.getTotalAmount()); purveyorTransact.setPaidAmount(resources.getPaidAmount()); purveyorTransact.setWaitAmount(resources.getTotalAmount().subtract(resources.getPaidAmount())); - if (resources.getTotalAmount().compareTo(resources.getPaidAmount()) < 0) { + if (resources.getTotalAmount().compareTo(resources.getPaidAmount()) <= 0) { purveyorTransact.setStatus(1); } else { purveyorTransact.setStatus(0); @@ -216,6 +217,7 @@ public class TbProductStockOperateServiceImpl implements TbProductStockOperateSe boolean isDistribute = product.getIsDistribute() == 1; + // 保存库存详情 TbProductStockDetail productStockDetail = new TbProductStockDetail(); productStockDetail.setBatchNumber(resources.getBatchNumber()); productStockDetail.setCreatedAt(times); @@ -223,30 +225,44 @@ public class TbProductStockOperateServiceImpl implements TbProductStockOperateSe productStockDetail.setIsStock(1); Integer round = (int) Math.floor(isDistribute ? product.getStockNumber() : tbProductSku.getStockNumber()); productStockDetail.setLeftNumber(round); - productStockDetail.setProductId(productListDto.getProductId()); - productStockDetail.setProductName(productListDto.getName()); + productStockDetail.setProductId(tbProductSku.getProductId()); + productStockDetail.setProductName(product.getName()); productStockDetail.setRecordId(saveStockOperate.getId().toString()); productStockDetail.setShopId(resources.getShopId()); productStockDetail.setSkuId(productListDto.getId().toString()); productStockDetail.setSourcePath("NORMAL"); productStockDetail.setStockSnap(productListDto.getSpecSnap()); productListDto.setNumber(productListDto.getNumber() != null ? productListDto.getNumber() : 0); + tbProductSku.setCostPrice(productListDto.getCostPrice()); + // 总成本价 + BigDecimal totalCostPrice; + productStockDetail.setType(resources.getType()); switch (resources.getType()) { case "sale": productStockDetail.setStockNumber((double) -productListDto.getNumber()); productStockDetail.setSubType(-1); break; + //后台出库 case "refund": - productStockDetail.setStockNumber((double) productListDto.getNumber()); + productStockDetail.setStockNumber(isDistribute ? product.getStockNumber() : tbProductSku.getStockNumber()); productStockDetail.setSubType(1); + totalCostPrice = productListDto.getCostPrice().multiply(BigDecimal.valueOf(productListDto.getNumber())); + productStockDetail.setCostAmount(totalCostPrice); + productStockDetail.setType("供应商出库"); + break; case "reject": productStockDetail.setStockNumber((double) -productListDto.getNumber()); productStockDetail.setSubType(-1); break; + //后台入库 case "purveyor": - productStockDetail.setStockNumber((double) productListDto.getNumber()); + productStockDetail.setStockNumber(isDistribute ? product.getStockNumber() : tbProductSku.getStockNumber()); productStockDetail.setSubType(1); + totalCostPrice = productListDto.getCostPrice().multiply(BigDecimal.valueOf(productListDto.getNumber())); + productStockDetail.setCostAmount(totalCostPrice); + productStockDetail.setType("供应商入库"); + break; case "purchase": productStockDetail.setStockNumber((double) productListDto.getNumber()); @@ -259,15 +275,17 @@ public class TbProductStockOperateServiceImpl implements TbProductStockOperateSe default: break; } - productStockDetail.setType(resources.getType()); productStockDetail.setUnitName(productListDto.getUnitName()); entityManager.persist(productStockDetail); if (isDistribute) { product.setStockNumber(product.getStockNumber() + productStockDetail.getStockNumber().intValue()); + //修改成本价 + tbProductSkuRepository.updateCostByProductId(product.getId().toString(), productListDto.getCostPrice()); tbProductRepository.save(product); } else { //sku数量 tbProductSku.setStockNumber(tbProductSku.getStockNumber() + productStockDetail.getStockNumber()); + tbProductSku.setCostPrice(productListDto.getCostPrice()); productSkuService.update(tbProductSku); } idStockMap.put(productListDto.getId(), productStockDetail.getStockNumber()); diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopPurveyorTransactServiceImpl.java b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopPurveyorTransactServiceImpl.java index 989a8b5d..891a27bc 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopPurveyorTransactServiceImpl.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopPurveyorTransactServiceImpl.java @@ -1,47 +1,27 @@ -/* -* 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.service.impl.shopimpl; -import cn.ysk.cashier.repository.shop.TbShopPurveyorRepository; -import cn.ysk.cashier.pojo.shop.TbShopPurveyorTransact; -import cn.ysk.cashier.vo.PurveyorTransactVO; -import cn.ysk.cashier.utils.ValidationUtil; -import cn.ysk.cashier.utils.FileUtil; -import lombok.RequiredArgsConstructor; -import cn.ysk.cashier.repository.shop.TbShopPurveyorTransactRepository; -import cn.ysk.cashier.service.shop.TbShopPurveyorTransactService; import cn.ysk.cashier.dto.shop.TbShopPurveyorTransactDto; import cn.ysk.cashier.dto.shop.TbShopPurveyorTransactQueryCriteria; import cn.ysk.cashier.mapper.shop.TbShopPurveyorTransactMapper; +import cn.ysk.cashier.pojo.shop.TbShopPurveyorTransact; +import cn.ysk.cashier.repository.shop.TbShopPurveyorRepository; +import cn.ysk.cashier.repository.shop.TbShopPurveyorTransactRepository; +import cn.ysk.cashier.service.shop.TbShopPurveyorTransactService; +import cn.ysk.cashier.utils.FileUtil; +import cn.ysk.cashier.utils.QueryHelp; +import cn.ysk.cashier.utils.ValidationUtil; +import cn.ysk.cashier.vo.PurveyorTransactVO; +import lombok.RequiredArgsConstructor; +import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Sort; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.Pageable; -import cn.ysk.cashier.utils.QueryHelp; -import java.math.BigDecimal; -import java.math.BigInteger; -import java.util.*; -import java.io.IOException; -import javax.persistence.EntityManager; -import javax.persistence.PersistenceContext; -import javax.persistence.Query; import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.util.*; /** * @website https://eladmin.vip @@ -57,33 +37,6 @@ public class TbShopPurveyorTransactServiceImpl implements TbShopPurveyorTransact private final TbShopPurveyorTransactMapper tbShopPurveyorTransactMapper; private final TbShopPurveyorRepository tbShopPurveyorRepository; - private final String LEFTQUERYSQL="SELECT\n" + - "\ta.purveyor_name AS purveyorName,\n" + - "\tb.last_transact_at AS lastTransactAt,\n" + - "\tIFNULL( b.waitAmount, 0 ) AS waitAmount,\n" + - "\tIFNULL( b.waitCount, 0 ) AS waitCount,\n" + - "\ta.id AS purveyorId \n" + - "FROM\n" + - "\ttb_shop_purveyor a\n" + - "\tLEFT JOIN (\n" + - "\tSELECT\n" + - "\t\tsum( a.wait_amount ) AS waitAmount,\n" + - "\t\tcount( a.id ) AS waitCount,\n" + - "\t\ta.purveyor_id AS id,\n" + - "\t\tb.purveyor_name,\n" + - "\t\tb.last_transact_at \n" + - "\tFROM\n" + - "\t\ttb_shop_purveyor_transact a\n" + - "\t\tLEFT JOIN tb_shop_purveyor b ON a.purveyor_id = b.id \n" + - "\tWHERE " + - "a.`status` = 0 "; - private final String RIGHTQUERYSQL = " GROUP BY\n" + - "\t\tb.id \n" + - "\t) b ON a.id = b.id\n" + - "WHERE 1=1"; - @PersistenceContext - private EntityManager em; - @Override public Map queryPurveyorTransact(TbShopPurveyorTransactQueryCriteria criteria) { Sort sort = Sort.by(Sort.Direction.DESC, "id"); @@ -97,55 +50,14 @@ public class TbShopPurveyorTransactServiceImpl implements TbShopPurveyorTransact } @Override - public Map queryTransactDate(TbShopPurveyorTransactQueryCriteria criteria, Pageable pageable){ - // 构建动态SQL语句 - StringBuilder sqlQuery = new StringBuilder(LEFTQUERYSQL); - sqlQuery.append(" and b.shop_id=").append(criteria.getShopId()).append(" AND a.type=").append("'purveyor'").append(RIGHTQUERYSQL); - //没有条件时 - if (criteria.getStatus() == null && "".equals(criteria.getPurveyorName())){ - sqlQuery.append(" AND a.shop_id = ").append(criteria.getShopId()); - } - //付款状态 - if (criteria.getStatus() != null) { - sqlQuery.append(" AND a.id IN (SELECT purveyor_id FROM tb_shop_purveyor_transact WHERE shop_id AND `status` = ").append(criteria.getStatus()) - .append(" GROUP BY purveyor_id)"); - } - //供应商名字 - if (criteria.getPurveyorName() != null && !"".equals(criteria.getPurveyorName())) { - sqlQuery.append(" AND a.purveyor_name LIKE '").append(criteria.getPurveyorName()).append("%'"); - } - - //获取页码号 - int pageNum = pageable.getPageNumber(); - //获取每页大小 - int pageSize = pageable.getPageSize(); - int beginNo; - if(pageNum <=0){ - beginNo = 0; - }else{ - beginNo = (pageNum - 1) * pageSize; - } - sqlQuery.append(" LIMIT ").append(beginNo).append(",").append(pageSize); - Query query = em.createNativeQuery(String.valueOf(sqlQuery)); - - List resultList = query.getResultList(); - List userVOs = new ArrayList<>(); - for (Object[] result : resultList) { - PurveyorTransactVO purveyorTransactVO = new PurveyorTransactVO(); - purveyorTransactVO.setLastTransactAt((BigInteger) result[1]); - purveyorTransactVO.setPurveyorId((Integer) result[4]); - purveyorTransactVO.setPurveyorName((String) result[0]); - purveyorTransactVO.setWaitAmount((BigDecimal) result[2]); - purveyorTransactVO.setWaitCount((BigInteger) result[3]); + public Page queryTransactDate(TbShopPurveyorTransactQueryCriteria criteria){ + Pageable pageable = PageRequest.of(criteria.getPage(), criteria.getSize()); + Page purveyorTransactVOS = tbShopPurveyorTransactRepository.queryTransactDate(criteria.getType(), criteria.getShopId(), criteria.getPurveyorName(), pageable); + for (PurveyorTransactVO purveyorTransactVO : purveyorTransactVOS.getContent()) { purveyorTransactVO.setType(purveyorTransactVO.getWaitCount().intValue()<1?1:0); - userVOs.add(purveyorTransactVO); } - Integer byCount = tbShopPurveyorRepository.findByCount(criteria.getShopId()); - Map map = new HashMap<>(); - map.put("content",userVOs); - map.put("totalElements",byCount); + return purveyorTransactVOS; - return map; } @Override @@ -185,6 +97,21 @@ public class TbShopPurveyorTransactServiceImpl implements TbShopPurveyorTransact tbShopPurveyorTransactRepository.save(tbShopPurveyorTransact); } + @Override + @Transactional(rollbackFor = Exception.class) + public void payTransact(TbShopPurveyorTransact resources) { + TbShopPurveyorTransact tbShopPurveyorTransact = tbShopPurveyorTransactRepository.findById(resources.getId()).orElseGet(TbShopPurveyorTransact::new); + ValidationUtil.isNull( tbShopPurveyorTransact.getId(),"TbShopPurveyorTransact","id",resources.getId()); + tbShopPurveyorTransact.setPaidAmount(tbShopPurveyorTransact.getPaidAmount().add(resources.getPaidAmount())); + tbShopPurveyorTransact.setWaitAmount(tbShopPurveyorTransact.getWaitAmount().subtract(resources.getPaidAmount())); + tbShopPurveyorTransact.setPaidAt(System.currentTimeMillis()); + if(tbShopPurveyorTransact.getWaitAmount().subtract(resources.getPaidAmount()).equals(0)){ + tbShopPurveyorTransact.setStatus(1); + } + tbShopPurveyorTransactRepository.save(tbShopPurveyorTransact); + } + + @Override public void deleteAll(Integer[] ids) { for (Integer id : ids) { diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/service/product/TbProductService.java b/eladmin-system/src/main/java/cn/ysk/cashier/service/product/TbProductService.java index aab71170..022146a9 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/service/product/TbProductService.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/service/product/TbProductService.java @@ -21,9 +21,11 @@ public interface TbProductService { /** * 查询数据分页 * @param criteria 条件 + * @param isAdmin 是否为后台查询 * @return Map */ - Map queryAll(TbProductQueryCriteria criteria); + Map queryAll(TbProductQueryCriteria criteria, boolean isAdmin); + /** * 查询所有数据不分页 diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/service/shop/TbShopPurveyorService.java b/eladmin-system/src/main/java/cn/ysk/cashier/service/shop/TbShopPurveyorService.java index 08e3b8c2..94c93fe6 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/service/shop/TbShopPurveyorService.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/service/shop/TbShopPurveyorService.java @@ -80,4 +80,4 @@ public interface TbShopPurveyorService { * @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/service/shop/TbShopPurveyorTransactService.java b/eladmin-system/src/main/java/cn/ysk/cashier/service/shop/TbShopPurveyorTransactService.java index c30af3be..b5561424 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/service/shop/TbShopPurveyorTransactService.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/service/shop/TbShopPurveyorTransactService.java @@ -1,24 +1,10 @@ -/* -* 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.service.shop; import cn.ysk.cashier.pojo.shop.TbShopPurveyorTransact; import cn.ysk.cashier.dto.shop.TbShopPurveyorTransactDto; import cn.ysk.cashier.dto.shop.TbShopPurveyorTransactQueryCriteria; -import org.springframework.data.domain.Pageable; +import cn.ysk.cashier.vo.PurveyorTransactVO; +import org.springframework.data.domain.Page; import java.util.Map; import java.util.List; import java.io.IOException; @@ -38,7 +24,7 @@ public interface TbShopPurveyorTransactService { * @return Map */ Map queryPurveyorTransact(TbShopPurveyorTransactQueryCriteria criteria); - Map queryTransactDate(TbShopPurveyorTransactQueryCriteria criteria, Pageable pageable); + Page queryTransactDate(TbShopPurveyorTransactQueryCriteria criteria); Map queryTransactSum(TbShopPurveyorTransactQueryCriteria criteria); @@ -69,6 +55,8 @@ public interface TbShopPurveyorTransactService { */ void update(TbShopPurveyorTransact resources); + void payTransact(TbShopPurveyorTransact resources); + /** * 多选删除 * @param ids / diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/vo/PurveyorTransactVO.java b/eladmin-system/src/main/java/cn/ysk/cashier/vo/PurveyorTransactVO.java index 9bc9a9a5..7e26b5d2 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/vo/PurveyorTransactVO.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/vo/PurveyorTransactVO.java @@ -3,25 +3,27 @@ package cn.ysk.cashier.vo; import lombok.Data; import java.math.BigDecimal; -import java.math.BigInteger; /** * @author lyf */ @Data public class PurveyorTransactVO { - /** - * 上笔进货日期 - */ - private BigInteger lastTransactAt; /** * 供货商id */ - private Integer purveyorId; + private Integer id; /** * 供货商名称 */ private String purveyorName; + private String purveyorTelephone; + private String address; + private String remark; + /** + * 上笔进货日期 + */ + private Long lastTransactAt; /** * 剩余付款金额 */ @@ -29,9 +31,20 @@ public class PurveyorTransactVO { /** *待付款笔数 */ - private BigInteger waitCount; + private Long waitCount; /** * 0.待支付 1.已完结 */ private Integer type; + + public PurveyorTransactVO(Integer id, String name, String telephone, String address, String remark, Long lastTransactAt, BigDecimal waitAmount, Long waitCount) { + this.id = id; + this.purveyorName = name; + this.purveyorTelephone = telephone; + this.address = address; + this.remark = remark; + this.lastTransactAt = lastTransactAt; + this.waitAmount = waitAmount; + this.waitCount = waitCount; + } }