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 ea203e2a..f7380ad3 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,21 +1,33 @@ package cn.ysk.cashier.controller.product; +import cn.hutool.core.util.StrUtil; import cn.ysk.cashier.annotation.Log; +import cn.ysk.cashier.annotation.rest.AnonymousPostMapping; import cn.ysk.cashier.dto.product.StockQueryDto; import cn.ysk.cashier.exception.BadRequestException; import cn.ysk.cashier.service.product.StockService; +import cn.ysk.cashier.utils.BeanUtil; +import cn.ysk.cashier.utils.SecurityUtils; +import cn.ysk.cashier.vo.StockPageImpl; import cn.ysk.cashier.vo.StockUpdateValueVO; +import cn.ysk.cashier.vo.StockUpdateWarnLineVO; +import cn.ysk.cashier.vo.StockV2Vo; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageImpl; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; +import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; import java.io.IOException; +import java.util.Map; @RestController @RequiredArgsConstructor @@ -60,6 +72,7 @@ public class StockController { @Log("库存导入") @PostMapping("/doImport/v2") @ApiOperation("文件导入库存") + @AnonymousPostMapping public ResponseEntity importExcelV2(@RequestParam String shopId,@RequestParam("file") MultipartFile file) { String fileName = file.getOriginalFilename(); if (file.isEmpty()) { @@ -89,7 +102,14 @@ public class StockController { public ResponseEntity queryTbProductV2(StockQueryDto criteria, @RequestParam(required = false, defaultValue = "0") Integer page, @RequestParam(required = false, defaultValue = "10") Integer size){ - return new ResponseEntity<>(stockService.queryAllV2(criteria,page,size), HttpStatus.OK); + Page stockV2Vos = stockService.queryAllV2(criteria, page, size); + Map dataMap = BeanUtil.transBean2Map(stockV2Vos); + if (stockV2Vos.getContent().isEmpty()) { + dataMap.put("warnLine", 0); + }else { + dataMap.put("warnLine", stockV2Vos.getContent().get(0).getWarnLine()); + } + return new ResponseEntity<>(dataMap, HttpStatus.OK); } @GetMapping("/sku") @@ -113,4 +133,14 @@ public class StockController { return new ResponseEntity<>("修改成功", HttpStatus.OK); } + @PutMapping("warnLine") + @ApiOperation("修改商品警告线") + public ResponseEntity updateProductWarnLine(@RequestBody StockUpdateWarnLineVO stockUpdateWarnLineVO) { + if (StrUtil.isBlank(stockUpdateWarnLineVO.getShopId()) || stockUpdateWarnLineVO.getWarnLine() == null || stockUpdateWarnLineVO.getWarnLine() <= 0) { + throw new BadRequestException("参数有误"); + } + stockService.updateProductWarnLine(stockUpdateWarnLineVO); + return new ResponseEntity<>("修改成功", HttpStatus.OK); + } + } diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/pojo/shop/TbShopPurveyorTransact.java b/eladmin-system/src/main/java/cn/ysk/cashier/pojo/shop/TbShopPurveyorTransact.java index 408c59be..93095600 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/pojo/shop/TbShopPurveyorTransact.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/pojo/shop/TbShopPurveyorTransact.java @@ -86,6 +86,10 @@ public class TbShopPurveyorTransact implements Serializable { @ApiModelProperty(value = "paidAt") private Long paidAt; + @Column(name = "`pay_type`") + @ApiModelProperty(value = "payType") + private String payType; + @Column(name = "`type`") @ApiModelProperty(value = "type") private String type; 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 e924e355..1a4f57fc 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 @@ -59,7 +59,7 @@ public interface TbProductSkuRepository extends JpaRepository> list = new ArrayList<>(); List stockVos = tbProductSkuRepository.searchProStockV2(summaryDto.getShopId(), summaryDto.getName(), summaryDto.getIsStock()); for (StockV2Vo all : stockVos) { - Map map = new LinkedHashMap<>(); - map.put("id(如需导入,该值不可变)", all.getProId()); - map.put("商品名称", all.getName()); - map.put("商品skuId(如需导入,该值不可变)", all.getSkuId()); - map.put("商品类型", all.getType()); - map.put("商品规格", all.getSpecSnap()); - map.put("商品单位", all.getUnitName()); - map.put("库存数量", all.getStockNumber()); - map.put("库存开关", all.getIsStock().equals(0) ? "否" : "是"); - map.put("是否共享库存", all.getIsDistribute().equals(0) ? "否" : "是"); - map.put("是否售罄", all.getIsPauseSale().equals(0) ? "否" : "是"); - list.add(map); - if (all.getIsDistribute().equals(1)) { - continue; - } - - List skuList = queryProductSku(all.getProId().toString()); - for (StockV2Vo sku : skuList) { - Map skuMap = new LinkedHashMap<>(); - skuMap.put("id(如需导入,该值不可变)", ""); - skuMap.put("商品名称", all.getName()); - skuMap.put("商品skuId(如需导入,该值不可变)", sku.getSkuId()); - skuMap.put("商品类型", sku.getType()); - skuMap.put("商品规格", sku.getSpecSnap()); - skuMap.put("商品单位", sku.getUnitName()); - skuMap.put("库存数量", sku.getStockNumber()); - skuMap.put("库存开关", sku.getIsStock().equals(0) ? "否" : "是"); - skuMap.put("是否共享库存", sku.getIsDistribute().equals(0) ? "否" : "是"); - skuMap.put("是否售罄", sku.getIsPauseSale().equals(0) ? "否" : "是"); - list.add(skuMap); + Map map = new LinkedHashMap<>(); + map.put("id(如需导入,该值不可变)", all.getProId()); + map.put("商品名称", all.getName()); + map.put("商品skuId(如需导入,该值不可变)", all.getSkuId()); + map.put("商品类型", all.getType()); + map.put("商品规格", all.getSpecSnap()); + map.put("商品单位", all.getUnitName()); + map.put("库存数量", all.getStockNumber()); + map.put("库存开关", all.getIsStock().equals(0) ? "否" : "是"); + map.put("是否共享库存", all.getIsDistribute().equals(0) ? "否" : "是"); + map.put("是否售罄", all.getIsPauseSale().equals(0) ? "否" : "是"); + list.add(map); + } else { + List skuList = queryProductSku(all.getProId().toString()); + for (StockV2Vo sku : skuList) { + Map skuMap = new LinkedHashMap<>(); + skuMap.put("id(如需导入,该值不可变)", "sku"); + skuMap.put("商品名称", all.getName()); + skuMap.put("商品skuId(如需导入,该值不可变)", sku.getSkuId()); + skuMap.put("商品类型", sku.getType()); + skuMap.put("商品规格", sku.getSpecSnap()); + skuMap.put("商品单位", sku.getUnitName()); + skuMap.put("库存数量", sku.getStockNumber()); + skuMap.put("库存开关", sku.getIsStock().equals(0) ? "否" : "是"); + skuMap.put("是否共享库存", sku.getIsDistribute().equals(0) ? "否" : "是"); + skuMap.put("是否售罄", sku.getIsPauseSale().equals(0) ? "否" : "是"); + list.add(skuMap); + } } } FileUtil.downloadExcel(list, response); @@ -183,27 +191,33 @@ public class StockServiceImpl implements StockService { if (row != null) { XSSFCell cell0 = row.getCell(0); String productIdStr = cell0.toString(); - if (StringUtils.isBlank(productIdStr)) { + if ("sku".equals(productIdStr)) { Optional byId = skuRepository.findById(Double.valueOf(row.getCell(2).toString()).intValue()); if (byId.isPresent()) { TbProductSku sku = byId.get(); + String numStr = row.getCell(6).toString(); + Double aDouble = Double.valueOf(numStr); + if (aDouble.equals(sku.getStockNumber())) { + continue; + } list.add(new StockV2Vo( 0, sku.getId(), row.getCell(1).toString(), row.getCell(5).toString(), row.getCell(4).toString(), - row.getCell(6).toString(), - sku.getStockNumber(), + aDouble.intValue(), + sku.getStockNumber().intValue(), 0 )); } } else { TbProductDto product = productService.findById(Double.valueOf(productIdStr).intValue()); if (product != null) { - Object number = "0"; - if (product.getIsDistribute().equals(1)) { - number = row.getCell(6).toString(); + String numStr = row.getCell(6).toString(); + Integer aIntValue = Double.valueOf(numStr).intValue(); + if (aIntValue.equals(product.getStockNumber())) { + continue; } list.add(new StockV2Vo( product.getId(), @@ -211,7 +225,7 @@ public class StockServiceImpl implements StockService { product.getName(), row.getCell(5).toString(), row.getCell(4).toString(), - number, + aIntValue, product.getStockNumber(), product.getIsDistribute() )); @@ -313,4 +327,13 @@ public class StockServiceImpl implements StockService { Query nativeQuery = em.createNativeQuery(String.valueOf(sqlQuery)); nativeQuery.executeUpdate(); } + + @Override + public void updateProductWarnLine(StockUpdateWarnLineVO stockUpdateWarnLineVO) { + TbShopInfo shopInfo = tbShopInfoRepository.findById(Integer.valueOf(stockUpdateWarnLineVO.getShopId())).orElse(null); + if (shopInfo == null) { + throw new BadRequestException("店铺不存在"); + } + tbProductSkuRepository.updateWarnLineByShopId(stockUpdateWarnLineVO.getWarnLine(), stockUpdateWarnLineVO.getShopId()); + } } diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/productimpl/TbProductGroupServiceImpl.java b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/productimpl/TbProductGroupServiceImpl.java index f80a1fba..89bbc6cc 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/productimpl/TbProductGroupServiceImpl.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/productimpl/TbProductGroupServiceImpl.java @@ -88,7 +88,7 @@ public class TbProductGroupServiceImpl implements TbProductGroupService { resources.setCreatedAt(Instant.now().toEpochMilli()); resources.setUpdatedAt(Instant.now().toEpochMilli()); TbProductGroup save = tbProductGroupRepository.save(resources); - save.setSort(save.getId()); + resources.setSort(save.getId()); return tbProductGroupMapper.toDto(tbProductGroupRepository.save(resources)); } 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 e481d232..6c086f8e 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 @@ -169,18 +169,18 @@ public class TbProductStockOperateServiceImpl implements TbProductStockOperateSe stockOperate.setUpdatedAt(times); stockOperate.setStatus("normal"); stockOperate.setPurveyorId(resources.getPurveyorId()); + if (StringUtils.isNotBlank(resources.getPurveyorId())) { + Optional byId1 = purveyorRepository.findById(Integer.valueOf(resources.getPurveyorId())); + if (byId1.isPresent()) { + TbShopPurveyor tbShopPurveyor = byId1.get(); + resources.setPurveyorName(tbShopPurveyor.getPurveyorName()); + } + } stockOperate.setPurveyorName(resources.getPurveyorName()); if (!resources.getIsImport().equals("true")) { //供应商退货 reject //供应商入库 purveyor if ("reject".equals(resources.getType()) || "purveyor".equals(resources.getType())) { - if (StringUtils.isNotBlank(resources.getPurveyorId())) { - Optional byId1 = purveyorRepository.findById(Integer.valueOf(resources.getPurveyorId())); - if (byId1.isPresent()) { - TbShopPurveyor tbShopPurveyor = byId1.get(); - resources.setPurveyorName(tbShopPurveyor.getPurveyorName()); - } - } TbShopPurveyorTransact purveyorTransact = new TbShopPurveyorTransact(); purveyorTransact.setShopId(resources.getShopId()); purveyorTransact.setPurveyorName(resources.getPurveyorName()); 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 1eb8edac..8f2d7e71 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 @@ -110,6 +110,7 @@ public class TbShopPurveyorTransactServiceImpl implements TbShopPurveyorTransact }else { tbShopPurveyorTransact.setStatus(0); } + tbShopPurveyorTransact.setPayType(resources.getPayType()); tbShopPurveyorTransactRepository.save(tbShopPurveyorTransact); } @@ -142,4 +143,4 @@ public class TbShopPurveyorTransactServiceImpl implements TbShopPurveyorTransact } FileUtil.downloadExcel(list, response); } -} \ No newline at end of file +} 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 d293b5a3..16e2209d 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 @@ -2,6 +2,7 @@ package cn.ysk.cashier.service.product; import cn.ysk.cashier.dto.product.StockQueryDto; import cn.ysk.cashier.vo.StockUpdateValueVO; +import cn.ysk.cashier.vo.StockUpdateWarnLineVO; import cn.ysk.cashier.vo.StockV2Vo; import cn.ysk.cashier.vo.StockVo; import org.springframework.data.domain.Page; @@ -20,7 +21,7 @@ public interface StockService { */ Page queryAll(StockQueryDto criteria, Integer page, Integer size); - Page queryAllV2(StockQueryDto criteria, Integer page, Integer size); + Page queryAllV2(StockQueryDto criteria, Integer page, Integer size); List queryProductSku(String productId); @@ -37,4 +38,10 @@ public interface StockService { void updateIsStock(Integer proId, String shopId,Integer isStock); void updateProductStatus(StockUpdateValueVO updateValueVO); + + /** + * 商品库存警戒线设置 + * @param stockUpdateWarnLineVO 警戒线 + */ + void updateProductWarnLine(StockUpdateWarnLineVO stockUpdateWarnLineVO); } diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/vo/StockPageImpl.java b/eladmin-system/src/main/java/cn/ysk/cashier/vo/StockPageImpl.java new file mode 100644 index 00000000..74ce66d1 --- /dev/null +++ b/eladmin-system/src/main/java/cn/ysk/cashier/vo/StockPageImpl.java @@ -0,0 +1,26 @@ +package cn.ysk.cashier.vo; + +import org.springframework.data.domain.PageImpl; +import org.springframework.data.domain.Pageable; + +import java.util.List; + +public class StockPageImpl extends PageImpl { + private Integer warnLine; + + public StockPageImpl(List content, Pageable pageable, long total) { + super(content, pageable, total); + } + + public StockPageImpl(List content) { + super(content); + } + + public Integer getWarnLine() { + return warnLine; + } + + public void setWarnLine(Integer warnLine) { + this.warnLine = warnLine; + } +} diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/vo/StockUpdateWarnLineVO.java b/eladmin-system/src/main/java/cn/ysk/cashier/vo/StockUpdateWarnLineVO.java new file mode 100644 index 00000000..1b7aa7db --- /dev/null +++ b/eladmin-system/src/main/java/cn/ysk/cashier/vo/StockUpdateWarnLineVO.java @@ -0,0 +1,13 @@ +package cn.ysk.cashier.vo; + +import lombok.Data; + +import javax.validation.constraints.Min; +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; + +@Data +public class StockUpdateWarnLineVO { + private String shopId; + private Integer warnLine; +} diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/vo/StockV2Vo.java b/eladmin-system/src/main/java/cn/ysk/cashier/vo/StockV2Vo.java index d8979eec..e13e8b07 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/vo/StockV2Vo.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/vo/StockV2Vo.java @@ -22,6 +22,7 @@ public class StockV2Vo { private Integer isDistribute; private Integer isPauseSale; private Object number; + private Integer warnLine; public StockV2Vo(Integer proId, Integer skuId, String name, String unitName,String specSnap, Object number,Object stockNumber, Integer isDistribute) { this.proId = proId; @@ -55,6 +56,28 @@ public class StockV2Vo { this.isPauseSale = isPauseSale; } + public StockV2Vo(Integer id, Integer proId,String img,String name,String unitName, String type, String specSnap, + Object isStock, Object number, Integer isDistribute, Integer isPauseSale, boolean isPro, Integer warnLine) { + this.id = id.toString() + "-" + proId.toString(); + if (isPro) { + this.id += proId; + } else { + this.id += id; + } + this.skuId = id; + this.proId = proId; + this.img = img; + this.name = name; + this.unitName = unitName; + setType(type); + this.specSnap = specSnap; + this.isStock = isStock; + this.stockNumber = number; + this.isDistribute = isDistribute; + this.isPauseSale = isPauseSale; + this.warnLine = warnLine; + } + public void setType(String type) { switch (type) { case "normal": @@ -84,7 +107,8 @@ public class StockV2Vo { "\"name\":\"" + name + "\","+ "\"unitName\":\"" + unitName +"\","+ "\"specSnap\":\"" + specSnap + "\"," + - "\"stockNumber\":\"" + stockNumber + "\"," + + "\"number\":\"" + number + "\"," + + "\"stockNumber\":\"" + stockNumber + "\"" + "}"; } }