添加耗材功能

This commit is contained in:
韩鹏辉
2024-06-26 09:40:42 +08:00
parent 7b74033bea
commit 08fb6019d6
15 changed files with 461 additions and 18 deletions

View File

@@ -21,11 +21,12 @@ 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-06-24
* @date 2024-06-25
**/
@Entity
@Data
@@ -33,8 +34,7 @@ import java.io.Serializable;
public class ViewConSku implements Serializable {
@Id
@Column(name = "`id`",nullable = false)
@NotNull
@Column(name = "`id`")
@ApiModelProperty(value = "id")
private Integer id;
@@ -56,6 +56,35 @@ public class ViewConSku implements Serializable {
@ApiModelProperty(value = "规格")
private String specSnap;
@Column(name = "`shop_id`")
@ApiModelProperty(value = "店铺id")
private Integer shopId;
@Column(name = "`status`",nullable = false)
@NotBlank
@ApiModelProperty(value = "状态 1 启用 0 禁用")
private String status;
@Column(name = "`con_code`")
@ApiModelProperty(value = "耗材代码")
private String conCode;
@Column(name = "`con_unit`")
@ApiModelProperty(value = "单位值")
private String conUnit;
@Column(name = "`stock_number`")
@ApiModelProperty(value = "库存值")
private BigDecimal stockNumber;
@Column(name = "`surplus_stock`")
@ApiModelProperty(value = "每份消耗")
private BigDecimal surplusStock;
@Column(name = "`spec_info`")
@ApiModelProperty(value = "标签详情")
private String specInfo;
@Column(name = "`name`")
@ApiModelProperty(value = "商品名称")
private String name;
@@ -63,5 +92,4 @@ public class ViewConSku implements Serializable {
public void copy(ViewConSku source){
BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true));
}
}

View File

@@ -0,0 +1,59 @@
/*
* 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.io.Serializable;
/**
* @author admin
* @date 2024-06-25
**/
@Entity
@Data
@Table(name="view_product_sku_shop")
public class ViewProductSkuShop implements Serializable {
@Id
@Column(name = "`id`")
@ApiModelProperty(value = "自增id")
private Integer id;
@Column(name = "`spec_snap`")
@ApiModelProperty(value = "规格")
private String specSnap;
@Column(name = "`name`")
@ApiModelProperty(value = "商品名称")
private String name;
@Column(name = "`shop_name`")
@ApiModelProperty(value = "店铺名称")
private String shopName;
@Column(name = "`shop_id`")
@ApiModelProperty(value = "自增id")
private Integer shopId;
public void copy(ViewProductSkuShop source){
BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true));
}
}

View File

@@ -7,7 +7,7 @@ import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
/**
* @website https://eladmin.vip
* @author admin
* @date 2024-06-24
* @date 2024-06-25
**/
public interface ViewConSkuRepository extends JpaRepository<ViewConSku, Integer>, JpaSpecificationExecutor<ViewConSku> {
}

View File

@@ -0,0 +1,13 @@
package cn.ysk.cashier.cons.repository;
import cn.ysk.cashier.cons.domain.ViewProductSkuShop;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
/**
* @website https://eladmin.vip
* @author admin
* @date 2024-06-25
**/
public interface ViewProductSkuShopRepository extends JpaRepository<ViewProductSkuShop, Integer>, JpaSpecificationExecutor<ViewProductSkuShop> {
}

View File

@@ -0,0 +1,65 @@
package cn.ysk.cashier.cons.rest;
import cn.ysk.cashier.annotation.Log;
import cn.ysk.cashier.cons.domain.ViewProductSkuShop;
import cn.ysk.cashier.cons.service.ViewProductSkuShopService;
import cn.ysk.cashier.cons.service.dto.ViewProductSkuShopQueryCriteria;
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-06-25
**/
@RestController
@RequiredArgsConstructor
@Api(tags = "商品规格信息查询管理")
@RequestMapping("/api/viewProductSkuShop")
public class ViewProductSkuShopController {
private final ViewProductSkuShopService viewProductSkuShopService;
@Log("导出数据")
@ApiOperation("导出数据")
@GetMapping(value = "/download")
public void exportViewProductSkuShop(HttpServletResponse response, ViewProductSkuShopQueryCriteria criteria) throws IOException {
viewProductSkuShopService.download(viewProductSkuShopService.queryAll(criteria), response);
}
@GetMapping
@Log("查询商品规格信息查询")
@ApiOperation("查询商品规格信息查询")
public ResponseEntity<Object> queryViewProductSkuShop(ViewProductSkuShopQueryCriteria criteria, Pageable pageable){
return new ResponseEntity<>(viewProductSkuShopService.queryAll(criteria,pageable),HttpStatus.OK);
}
@PostMapping
@Log("新增商品规格信息查询")
@ApiOperation("新增商品规格信息查询")
public ResponseEntity<Object> createViewProductSkuShop(@Validated @RequestBody ViewProductSkuShop resources){
return new ResponseEntity<>(viewProductSkuShopService.create(resources),HttpStatus.CREATED);
}
@PutMapping
@Log("修改商品规格信息查询")
@ApiOperation("修改商品规格信息查询")
public ResponseEntity<Object> updateViewProductSkuShop(@Validated @RequestBody ViewProductSkuShop resources){
viewProductSkuShopService.update(resources);
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
}
@DeleteMapping
@Log("删除商品规格信息查询")
@ApiOperation("删除商品规格信息查询")
public ResponseEntity<Object> deleteViewProductSkuShop(@RequestBody Integer[] ids) {
viewProductSkuShopService.deleteAll(ids);
return new ResponseEntity<>(HttpStatus.OK);
}
}

View File

@@ -11,7 +11,7 @@ import javax.servlet.http.HttpServletResponse;
/**
* @author admin
* @date 2024-06-24
* @date 2024-06-25
**/
public interface ViewConSkuService {

View File

@@ -0,0 +1,66 @@
package cn.ysk.cashier.cons.service;
import cn.ysk.cashier.cons.domain.ViewProductSkuShop;
import cn.ysk.cashier.cons.service.dto.ViewProductSkuShopDto;
import cn.ysk.cashier.cons.service.dto.ViewProductSkuShopQueryCriteria;
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-06-25
**/
public interface ViewProductSkuShopService {
/**
* 查询数据分页
* @param criteria 条件
* @param pageable 分页参数
* @return Map<String,Object>
*/
Map<String,Object> queryAll(ViewProductSkuShopQueryCriteria criteria, Pageable pageable);
/**
* 查询所有数据不分页
* @param criteria 条件参数
* @return List<ViewProductSkuShopDto>
*/
List<ViewProductSkuShopDto> queryAll(ViewProductSkuShopQueryCriteria criteria);
/**
* 根据ID查询
* @param id ID
* @return ViewProductSkuShopDto
*/
ViewProductSkuShopDto findById(Integer id);
/**
* 创建
* @param resources /
* @return ViewProductSkuShopDto
*/
ViewProductSkuShopDto create(ViewProductSkuShop resources);
/**
* 编辑
* @param resources /
*/
void update(ViewProductSkuShop resources);
/**
* 多选删除
* @param ids /
*/
void deleteAll(Integer[] ids);
/**
* 导出数据
* @param all 待导出的数据
* @param response /
* @throws IOException /
*/
void download(List<ViewProductSkuShopDto> all, HttpServletResponse response) throws IOException;
}

View File

@@ -16,11 +16,12 @@
package cn.ysk.cashier.cons.service.dto;
import lombok.Data;
import java.math.BigDecimal;
import java.io.Serializable;
/**
* @author admin
* @date 2024-06-24
* @date 2024-06-25
**/
@Data
public class ViewConSkuDto implements Serializable {
@@ -39,9 +40,27 @@ public class ViewConSkuDto implements Serializable {
/** 规格 */
private String specSnap;
/** 商品名称 */
private String name;
/** 店铺id */
private Integer shopId;
/** 状态 1 启用 0 禁用 */
private String status;
/** 耗材代码 */
private String conCode;
/** 单位值 */
private String conUnit;
/** 库存值 */
private BigDecimal stockNumber;
/** 每份消耗 */
private BigDecimal surplusStock;
/** 标签详情 */
private String specInfo;
/** 商品名称 */
private String name;
}

View File

@@ -6,7 +6,7 @@ import cn.ysk.cashier.annotation.Query;
/**
* @author admin
* @date 2024-06-24
* @date 2024-06-25
**/
@Data
public class ViewConSkuQueryCriteria{
@@ -19,11 +19,19 @@ public class ViewConSkuQueryCriteria{
@Query
private String specSnap;
/** 模糊 */
@Query(type = Query.Type.INNER_LIKE)
private String name;
/** 精确 */
@Query
private Integer shopId;
/** 精确 */
@Query
private String status;
/** 精确 */
@Query
private String conCode;
/** 模糊 */
@Query(type = Query.Type.INNER_LIKE)
private String name;
}

View File

@@ -0,0 +1,42 @@
/*
* 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.io.Serializable;
/**
* @author admin
* @date 2024-06-25
**/
@Data
public class ViewProductSkuShopDto implements Serializable {
/** 自增id */
private Integer id;
/** 规格 */
private String specSnap;
/** 商品名称 */
private String name;
/** 店铺名称 */
private String shopName;
/** 自增id */
private Integer shopId;
}

View File

@@ -0,0 +1,29 @@
package cn.ysk.cashier.cons.service.dto;
import lombok.Data;
import java.util.List;
import cn.ysk.cashier.annotation.Query;
/**
* @author admin
* @date 2024-06-25
**/
@Data
public class ViewProductSkuShopQueryCriteria{
/** 模糊 */
@Query(type = Query.Type.INNER_LIKE)
private String specSnap;
/** 模糊 */
@Query(type = Query.Type.INNER_LIKE)
private String name;
/** 模糊 */
@Query(type = Query.Type.INNER_LIKE)
private String shopName;
/** 精确 */
@Query
private Integer shopId;
}

View File

@@ -26,7 +26,7 @@ import java.util.LinkedHashMap;
* @website https://eladmin.vip
* @description 服务实现
* @author admin
* @date 2024-06-24
* @date 2024-06-25
**/
@Service
@RequiredArgsConstructor
@@ -85,8 +85,14 @@ public class ViewConSkuServiceImpl implements ViewConSkuService {
map.put("商品规格id", viewConSku.getProductSkuId());
map.put("耗材名称", viewConSku.getConName());
map.put("规格", viewConSku.getSpecSnap());
map.put("商品名称", viewConSku.getName());
map.put("店铺id", viewConSku.getShopId());
map.put("状态 1 启用 0 禁用", viewConSku.getStatus());
map.put("耗材代码", viewConSku.getConCode());
map.put("单位值", viewConSku.getConUnit());
map.put("库存值", viewConSku.getStockNumber());
map.put("每份消耗", viewConSku.getSurplusStock());
map.put("标签详情", viewConSku.getSpecInfo());
map.put("商品名称", viewConSku.getName());
list.add(map);
}
FileUtil.downloadExcel(list, response);

View File

@@ -0,0 +1,92 @@
package cn.ysk.cashier.cons.service.impl;
import cn.ysk.cashier.cons.domain.ViewProductSkuShop;
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.ViewProductSkuShopRepository;
import cn.ysk.cashier.cons.service.ViewProductSkuShopService;
import cn.ysk.cashier.cons.service.dto.ViewProductSkuShopDto;
import cn.ysk.cashier.cons.service.dto.ViewProductSkuShopQueryCriteria;
import cn.ysk.cashier.cons.service.mapstruct.ViewProductSkuShopMapper;
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-06-25
**/
@Service
@RequiredArgsConstructor
public class ViewProductSkuShopServiceImpl implements ViewProductSkuShopService {
private final ViewProductSkuShopRepository viewProductSkuShopRepository;
private final ViewProductSkuShopMapper viewProductSkuShopMapper;
@Override
public Map<String,Object> queryAll(ViewProductSkuShopQueryCriteria criteria, Pageable pageable){
Page<ViewProductSkuShop> page = viewProductSkuShopRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder),pageable);
return PageUtil.toPage(page.map(viewProductSkuShopMapper::toDto));
}
@Override
public List<ViewProductSkuShopDto> queryAll(ViewProductSkuShopQueryCriteria criteria){
return viewProductSkuShopMapper.toDto(viewProductSkuShopRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder)));
}
@Override
@Transactional
public ViewProductSkuShopDto findById(Integer id) {
ViewProductSkuShop viewProductSkuShop = viewProductSkuShopRepository.findById(id).orElseGet(ViewProductSkuShop::new);
ValidationUtil.isNull(viewProductSkuShop.getId(),"ViewProductSkuShop","id",id);
return viewProductSkuShopMapper.toDto(viewProductSkuShop);
}
@Override
@Transactional(rollbackFor = Exception.class)
public ViewProductSkuShopDto create(ViewProductSkuShop resources) {
return viewProductSkuShopMapper.toDto(viewProductSkuShopRepository.save(resources));
}
@Override
@Transactional(rollbackFor = Exception.class)
public void update(ViewProductSkuShop resources) {
ViewProductSkuShop viewProductSkuShop = viewProductSkuShopRepository.findById(resources.getId()).orElseGet(ViewProductSkuShop::new);
ValidationUtil.isNull( viewProductSkuShop.getId(),"ViewProductSkuShop","id",resources.getId());
viewProductSkuShop.copy(resources);
viewProductSkuShopRepository.save(viewProductSkuShop);
}
@Override
public void deleteAll(Integer[] ids) {
for (Integer id : ids) {
viewProductSkuShopRepository.deleteById(id);
}
}
@Override
public void download(List<ViewProductSkuShopDto> all, HttpServletResponse response) throws IOException {
List<Map<String, Object>> list = new ArrayList<>();
for (ViewProductSkuShopDto viewProductSkuShop : all) {
Map<String,Object> map = new LinkedHashMap<>();
map.put("规格", viewProductSkuShop.getSpecSnap());
map.put("商品名称", viewProductSkuShop.getName());
map.put("店铺名称", viewProductSkuShop.getShopName());
map.put("自增id", viewProductSkuShop.getShopId());
list.add(map);
}
FileUtil.downloadExcel(list, response);
}
}

View File

@@ -8,7 +8,7 @@ import org.mapstruct.ReportingPolicy;
/**
* @author admin
* @date 2024-06-24
* @date 2024-06-25
**/
@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE)
public interface ViewConSkuMapper extends BaseMapper<ViewConSkuDto, ViewConSku> {

View File

@@ -0,0 +1,16 @@
package cn.ysk.cashier.cons.service.mapstruct;
import cn.ysk.cashier.base.BaseMapper;
import cn.ysk.cashier.cons.domain.ViewProductSkuShop;
import cn.ysk.cashier.cons.service.dto.ViewProductSkuShopDto;
import org.mapstruct.Mapper;
import org.mapstruct.ReportingPolicy;
/**
* @author admin
* @date 2024-06-25
**/
@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE)
public interface ViewProductSkuShopMapper extends BaseMapper<ViewProductSkuShopDto, ViewProductSkuShop> {
}