diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/excelImport/ExcelImportController.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/excelImport/ExcelImportController.java index d5328da2..cc0227f1 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/excelImport/ExcelImportController.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/excelImport/ExcelImportController.java @@ -1,12 +1,18 @@ package cn.iocoder.yudao.module.member.controller.admin.excelImport; import cn.hutool.core.util.ObjectUtil; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; -import cn.iocoder.yudao.module.member.controller.admin.excelImport.vo.RechargeExcel; -import cn.iocoder.yudao.module.member.controller.admin.excelImport.vo.RechargeExcelListener; +import cn.iocoder.yudao.module.member.controller.admin.excelImport.vo.*; +import cn.iocoder.yudao.module.member.controller.admin.storegoods.vo.StoreGoodsSaveReqVO; +import cn.iocoder.yudao.module.member.dal.dataobject.storegoodstype.StoreGoodsTypeDO; import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO; import cn.iocoder.yudao.module.member.service.amount.CashRechargeService; +import cn.iocoder.yudao.module.member.service.storegoods.StoreGoodsService; +import cn.iocoder.yudao.module.member.service.storegoodstype.StoreGoodsTypeService; import cn.iocoder.yudao.module.member.service.user.MemberUserService; +import cn.iocoder.yudao.module.system.api.dish.DishesApi; +import cn.iocoder.yudao.module.system.api.dish.dto.DishExcelDto; import com.alibaba.excel.EasyExcel; import io.swagger.v3.oas.annotations.tags.Tag; import org.springframework.validation.annotation.Validated; @@ -35,6 +41,12 @@ public class ExcelImportController { private MemberUserService memberUserService; @Resource private CashRechargeService cashRechargeService; + @Resource + private DishesApi dishesApi; + @Resource + StoreGoodsService storeGoodsService; + @Resource + StoreGoodsTypeService storeGoodsTypeService; @PostMapping("/easyExcelImport") public void importExcel(MultipartFile file, HttpServletResponse response,Long storeId) { @@ -94,4 +106,90 @@ public class ExcelImportController { return notExist; } + @PostMapping("/dishImport") + public void importExcelDish(MultipartFile file,Long storeId) { + if (!file.isEmpty()) { + //文件名称 + int begin = Objects.requireNonNull(file.getOriginalFilename()).indexOf("."); + //文件名称长度 + int last = file.getOriginalFilename().length(); + //判断文件格式是否正确 + String fileName = file.getOriginalFilename().substring(begin, last); + if (!fileName.endsWith(".xls") && !fileName.endsWith(".xlsx")) { + throw new IllegalArgumentException("上传文件格式错误"); + } + } else { + throw new IllegalArgumentException("文件不能为空"); + } + try (InputStream inputStream = file.getInputStream()) { + dishRead(inputStream,storeId); + } catch (IOException e) { + System.out.println(e.getMessage()); + } + } + + public void dishRead(InputStream inputStream,Long storeId) { + //获取正确数据 + ArrayList successArrayList = new ArrayList<>(); + EasyExcel.read(inputStream) + .head(DishExcel.class) + .registerReadListener(new DishExcelListener( + // 监听器中doAfterAllAnalysed执行此方法;所有读取完成之后处理逻辑 + successArrayList::addAll)) + // 设置sheet,默认读取第一个 + .sheet() + // 设置标题(字段列表)所在行数 + .headRowNumber(1) + .doRead(); + dishesApi.exportDish(BeanUtils.toBean(successArrayList, DishExcelDto.class),storeId); + } + + + @PostMapping("/GoodsImport") + public void importExcelGoods(MultipartFile file,Long storeId) { + if (!file.isEmpty()) { + //文件名称 + int begin = Objects.requireNonNull(file.getOriginalFilename()).indexOf("."); + //文件名称长度 + int last = file.getOriginalFilename().length(); + //判断文件格式是否正确 + String fileName = file.getOriginalFilename().substring(begin, last); + if (!fileName.endsWith(".xls") && !fileName.endsWith(".xlsx")) { + throw new IllegalArgumentException("上传文件格式错误"); + } + } else { + throw new IllegalArgumentException("文件不能为空"); + } + try (InputStream inputStream = file.getInputStream()) { + GoodsRead(inputStream,storeId); + } catch (IOException e) { + System.out.println(e.getMessage()); + } + } + + public void GoodsRead(InputStream inputStream,Long storeId) { + //获取正确数据 + ArrayList successArrayList = new ArrayList<>(); + EasyExcel.read(inputStream) + .head(GoodsExcel.class) + .registerReadListener(new GoodsExcelListener( + // 监听器中doAfterAllAnalysed执行此方法;所有读取完成之后处理逻辑 + successArrayList::addAll)) + // 设置sheet,默认读取第一个 + .sheet() + // 设置标题(字段列表)所在行数 + .headRowNumber(1) + .doRead(); + for (GoodsExcel vo : successArrayList){ + StoreGoodsTypeDO byName = storeGoodsTypeService.getByName(vo.getCategory()); + StoreGoodsSaveReqVO add = new StoreGoodsSaveReqVO(); + add.setGoodsName(vo.getGoodsName()); + add.setPrice(vo.getPrice()); + add.setCarteenId(storeId); + add.setSalesModel(1); + add.setCategoryId(ObjectUtil.isNotEmpty(byName)?byName.getId():null); + storeGoodsService.createStoreGoods(add); + } + } + } \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/excelImport/vo/DishExcel.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/excelImport/vo/DishExcel.java new file mode 100644 index 00000000..203db92f --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/excelImport/vo/DishExcel.java @@ -0,0 +1,53 @@ +package cn.iocoder.yudao.module.member.controller.admin.excelImport.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +/** + * @author zt + * @description + * @since 2024/11/5 + */ + +@ExcelIgnoreUnannotated +public class DishExcel { + + /** + * 用名字去匹配,这里需要注意,如果名字重复,会导致只有一个字段读取到数据 + */ + @ExcelProperty(index = 0) + public String type; + + @ExcelProperty(index = 1) + public String name; + + @ExcelProperty( index = 2) + public BigDecimal money; + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public BigDecimal getMoney() { + return money; + } + + public void setMoney(BigDecimal money) { + this.money = money; + } +} diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/excelImport/vo/DishExcelListener.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/excelImport/vo/DishExcelListener.java new file mode 100644 index 00000000..3ef7a21a --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/excelImport/vo/DishExcelListener.java @@ -0,0 +1,42 @@ +package cn.iocoder.yudao.module.member.controller.admin.excelImport.vo; + + +import com.alibaba.excel.context.AnalysisContext; +import com.alibaba.excel.event.AnalysisEventListener; +import com.google.common.collect.Lists; +import org.apache.commons.collections4.CollectionUtils; + +import java.util.List; +import java.util.function.Consumer; + + +/** + * 读取excel数据 + */ +public class DishExcelListener extends AnalysisEventListener { + + /**临时存储正常数据集合,最大存储100*/ + private List successDataList = Lists.newArrayListWithExpectedSize(300); + + /**自定义消费者函数接口用于自定义监听器中数据组装*/ + private final Consumer> successConsumer; + + public DishExcelListener(Consumer> successConsumer) { + this.successConsumer = successConsumer; + } + + @Override + public void invoke(DishExcel dishExcel, AnalysisContext analysisContext) { + successDataList.add(dishExcel); + System.out.println("数据:"+dishExcel); + } + + + @Override + public void doAfterAllAnalysed(AnalysisContext analysisContext) { + if (CollectionUtils.isNotEmpty(successDataList)) { + successConsumer.accept(successDataList); + } + } +} + diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/excelImport/vo/GoodsExcel.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/excelImport/vo/GoodsExcel.java new file mode 100644 index 00000000..93752e8c --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/excelImport/vo/GoodsExcel.java @@ -0,0 +1,53 @@ +package cn.iocoder.yudao.module.member.controller.admin.excelImport.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; + +import java.math.BigDecimal; + +/** + * @author zt + * @description + * @since 2024/11/5 + */ + +@ExcelIgnoreUnannotated +public class GoodsExcel { + + /** + * 用名字去匹配,这里需要注意,如果名字重复,会导致只有一个字段读取到数据 + */ + @ExcelProperty(index = 0) + public String category; + + @ExcelProperty(index = 1) + public String goodsName; + + @ExcelProperty( index = 2) + public Double price; + + + public String getCategory() { + return category; + } + + public void setCategory(String category) { + this.category = category; + } + + public String getGoodsName() { + return goodsName; + } + + public void setGoodsName(String goodsName) { + this.goodsName = goodsName; + } + + public Double getPrice() { + return price; + } + + public void setPrice(Double price) { + this.price = price; + } +} diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/excelImport/vo/GoodsExcelListener.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/excelImport/vo/GoodsExcelListener.java new file mode 100644 index 00000000..d4d92d98 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/excelImport/vo/GoodsExcelListener.java @@ -0,0 +1,42 @@ +package cn.iocoder.yudao.module.member.controller.admin.excelImport.vo; + + +import com.alibaba.excel.context.AnalysisContext; +import com.alibaba.excel.event.AnalysisEventListener; +import com.google.common.collect.Lists; +import org.apache.commons.collections4.CollectionUtils; + +import java.util.List; +import java.util.function.Consumer; + + +/** + * 读取excel数据 + */ +public class GoodsExcelListener extends AnalysisEventListener { + + /**临时存储正常数据集合,最大存储100*/ + private List successDataList = Lists.newArrayListWithExpectedSize(300); + + /**自定义消费者函数接口用于自定义监听器中数据组装*/ + private final Consumer> successConsumer; + + public GoodsExcelListener(Consumer> successConsumer) { + this.successConsumer = successConsumer; + } + + @Override + public void invoke(GoodsExcel goodsExcel, AnalysisContext analysisContext) { + successDataList.add(goodsExcel); + System.out.println("数据:"+goodsExcel); + } + + + @Override + public void doAfterAllAnalysed(AnalysisContext analysisContext) { + if (CollectionUtils.isNotEmpty(successDataList)) { + successConsumer.accept(successDataList); + } + } +} + diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storegoods/vo/StoreGoodsPageReqVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storegoods/vo/StoreGoodsPageReqVO.java index bd875e36..766c7fcf 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storegoods/vo/StoreGoodsPageReqVO.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storegoods/vo/StoreGoodsPageReqVO.java @@ -24,6 +24,8 @@ public class StoreGoodsPageReqVO extends PageParam { @Schema(description = "价格", example = "11124") private Double price; + private Long carteenId; + @Schema(description = "售卖模式") private Integer salesModel; diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storegoods/vo/StoreGoodsRespVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storegoods/vo/StoreGoodsRespVO.java index 92f43abc..b60c0851 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storegoods/vo/StoreGoodsRespVO.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storegoods/vo/StoreGoodsRespVO.java @@ -42,5 +42,6 @@ public class StoreGoodsRespVO { private String img; + private Long carteenId; } \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storegoods/vo/StoreGoodsSaveReqVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storegoods/vo/StoreGoodsSaveReqVO.java index f57f77f8..2df2081d 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storegoods/vo/StoreGoodsSaveReqVO.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storegoods/vo/StoreGoodsSaveReqVO.java @@ -25,6 +25,8 @@ public class StoreGoodsSaveReqVO { @Schema(description = "设备ID") private String equipmentCode; + private Long carteenId; + private String img; } \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/store/AppStoreController.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/store/AppStoreController.java index 521e10a6..533e3cbe 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/store/AppStoreController.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/store/AppStoreController.java @@ -40,6 +40,7 @@ import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; import javax.annotation.security.PermitAll; +import javax.servlet.http.HttpServletRequest; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -80,8 +81,11 @@ public class AppStoreController { @GetMapping("/mgcr/equipment/goodsList") @Operation(summary = "获取菜品库所有菜品") - public String getGoods(String equipmentCode) { - List goodsDOS = storeGoodsService.getAll(null); + public String getGoods(String equipmentCode, HttpServletRequest request) { + + String equipment = request.getHeader("Authorization"); + Long storeId = cashregisterinfoApi.getStoreId(equipment); + List goodsDOS = storeGoodsService.getByCarteenId(storeId); List goodsTypeDOS = goodsTypeService.getAll(); List goodData = BeanUtils.toBean(goodsDOS, StoreGoodsListVo.class); List categoryData = BeanUtils.toBean(goodsTypeDOS, StoreGoodsTypeListVo.class); diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/storegoods/StoreGoodsDO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/storegoods/StoreGoodsDO.java index a3d56dbd..57e6a713 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/storegoods/StoreGoodsDO.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/storegoods/StoreGoodsDO.java @@ -52,6 +52,8 @@ public class StoreGoodsDO extends BaseDO { */ private String equipmentCode; + + private Long carteenId; /** * 库存 */ diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/storegoods/StoreGoodsMapper.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/storegoods/StoreGoodsMapper.java index dd423940..21d0fb53 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/storegoods/StoreGoodsMapper.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/storegoods/StoreGoodsMapper.java @@ -24,6 +24,7 @@ public interface StoreGoodsMapper extends BaseMapperX { .eqIfPresent(StoreGoodsDO::getPrice, reqVO.getPrice()) .eqIfPresent(StoreGoodsDO::getSalesModel, reqVO.getSalesModel()) .eqIfPresent(StoreGoodsDO::getEquipmentCode, reqVO.getEquipmentCode()) + .eqIfPresent(StoreGoodsDO::getCarteenId, reqVO.getCarteenId()) .betweenIfPresent(StoreGoodsDO::getCreateTime, reqVO.getCreateTime()) .inIfPresent(StoreGoodsDO::getGoodsId, reqVO.getIds()) .orderByDesc(StoreGoodsDO::getGoodsId)); diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/storegoods/StoreGoodsService.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/storegoods/StoreGoodsService.java index de1e56de..2bb95cda 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/storegoods/StoreGoodsService.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/storegoods/StoreGoodsService.java @@ -2,10 +2,10 @@ package cn.iocoder.yudao.module.member.service.storegoods; import java.util.*; import javax.validation.*; + import cn.iocoder.yudao.module.member.controller.admin.storegoods.vo.*; import cn.iocoder.yudao.module.member.dal.dataobject.storegoods.StoreGoodsDO; import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.common.pojo.PageParam; /** * 商品 Service 接口 @@ -55,7 +55,10 @@ public interface StoreGoodsService { List getAll(List goodsIds); + List getByCarteenId(Long carteenId); + PageResult getSaleGoodsPage(StoreSaleGoodsPageVO pageReqVO); Map getPrice(List goodsIds); + } \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/storegoods/StoreGoodsServiceImpl.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/storegoods/StoreGoodsServiceImpl.java index e8c02c08..05233501 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/storegoods/StoreGoodsServiceImpl.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/storegoods/StoreGoodsServiceImpl.java @@ -15,8 +15,6 @@ import cn.iocoder.yudao.module.member.dal.mysql.storesalegoods.StoreSaleGoodsMap import cn.iocoder.yudao.module.member.enums.InventoryTypeEnum; import cn.iocoder.yudao.module.member.enums.OutTypeEnum; import cn.iocoder.yudao.module.member.service.storegoodsinventory.StoreGoodsInventoryService; -import cn.iocoder.yudao.module.system.api.carteen.CarteenApi; -import cn.iocoder.yudao.module.system.api.carteen.dto.CarteenRespDto; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; @@ -27,7 +25,6 @@ import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; import java.util.ArrayList; -import java.util.Collections; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -50,8 +47,6 @@ public class StoreGoodsServiceImpl implements StoreGoodsService { @Resource private StoreSaleGoodsMapper storeSaleGoodsMapper; @Resource - private CarteenApi carteenApi; - @Resource private StoreGoodsInventoryService storeGoodsInventoryService; @Override @@ -61,18 +56,15 @@ public class StoreGoodsServiceImpl implements StoreGoodsService { StoreGoodsDO storeGoods = BeanUtils.toBean(createReqVO, StoreGoodsDO.class); storeGoodsMapper.insert(storeGoods); Integer goodsId = storeGoods.getGoodsId(); - //给每家店添加库存 - List carteenList = carteenApi.getCarteenList(); + //给店添加库存 List list = new ArrayList<>(); AddReqVO addReqVO = new AddReqVO(); - for (CarteenRespDto dto:carteenList){ - GoodsInfoReqVO vo = new GoodsInfoReqVO(); - vo.setGoodsId(goodsId); - vo.setNumber(0); - vo.setWeight(0d); - vo.setCarteenId(dto.getId()); - list.add(vo); - } + GoodsInfoReqVO vo = new GoodsInfoReqVO(); + vo.setGoodsId(goodsId); + vo.setNumber(0); + vo.setWeight(0d); + vo.setCarteenId(createReqVO.getCarteenId()); + list.add(vo); //库存 addReqVO.setList(list); addReqVO.setType(InventoryTypeEnum.IN.getCode()); @@ -130,6 +122,11 @@ public class StoreGoodsServiceImpl implements StoreGoodsService { } + @Override + public List getByCarteenId(Long carteenId) { + return storeGoodsMapper.selectList(new LambdaQueryWrapper().eq(StoreGoodsDO::getCarteenId, carteenId)); + } + @Override public PageResult getSaleGoodsPage(StoreSaleGoodsPageVO pageReqVO) { @@ -146,4 +143,5 @@ public class StoreGoodsServiceImpl implements StoreGoodsService { Map map = goodsDOS.stream().collect(Collectors.toMap(StoreGoodsDO::getGoodsId, vo->vo)); return map; } + } \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/storegoodstype/StoreGoodsTypeService.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/storegoodstype/StoreGoodsTypeService.java index 7a092348..cffa83ad 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/storegoodstype/StoreGoodsTypeService.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/storegoodstype/StoreGoodsTypeService.java @@ -55,5 +55,5 @@ public interface StoreGoodsTypeService { List getAll(); - + StoreGoodsTypeDO getByName(String name); } \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/storegoodstype/StoreGoodsTypeServiceImpl.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/storegoodstype/StoreGoodsTypeServiceImpl.java index bbe0f7c1..864b0fe6 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/storegoodstype/StoreGoodsTypeServiceImpl.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/storegoodstype/StoreGoodsTypeServiceImpl.java @@ -1,5 +1,7 @@ package cn.iocoder.yudao.module.member.service.storegoodstype; +import cn.hutool.core.collection.CollectionUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import org.springframework.stereotype.Service; import javax.annotation.Resource; import org.springframework.validation.annotation.Validated; @@ -75,4 +77,10 @@ public class StoreGoodsTypeServiceImpl implements StoreGoodsTypeService { public List getAll() { return storeGoodsTypeMapper.selectList(); } + + @Override + public StoreGoodsTypeDO getByName(String name) { + List goodsTypeDOS = storeGoodsTypeMapper.selectList(new LambdaQueryWrapper().eq(StoreGoodsTypeDO::getCategoryName, name)); + return CollectionUtil.isNotEmpty(goodsTypeDOS) ? goodsTypeDOS.get(0) : null; + } } \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/dish/DishesApi.java b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/dish/DishesApi.java index 73b26dbf..9e4a5543 100644 --- a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/dish/DishesApi.java +++ b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/dish/DishesApi.java @@ -1,5 +1,6 @@ package cn.iocoder.yudao.module.system.api.dish; +import cn.iocoder.yudao.module.system.api.dish.dto.DishExcelDto; import cn.iocoder.yudao.module.system.api.dish.dto.DishesRespDto; import java.util.List; @@ -26,4 +27,9 @@ public interface DishesApi { * @Description: 根据菜品id 批量获取菜品信息 */ public List getDishInfo(List ids); + + + public void exportDish(List dishExcels,Long storeId); + + } diff --git a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/dish/dto/DishExcelDto.java b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/dish/dto/DishExcelDto.java new file mode 100644 index 00000000..c1faaf68 --- /dev/null +++ b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/dish/dto/DishExcelDto.java @@ -0,0 +1,27 @@ +package cn.iocoder.yudao.module.system.api.dish.dto; + + +import lombok.Data; + +import java.math.BigDecimal; + +/** + * @author zt + * @description + * @since 2024/11/5 + */ + + +@Data +public class DishExcelDto { + + /** + * 用名字去匹配,这里需要注意,如果名字重复,会导致只有一个字段读取到数据 + */ + public String type; + + public String name; + + public BigDecimal money; + +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/dish/DishesApiImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/dish/DishesApiImpl.java index ff6e6cee..223514da 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/dish/DishesApiImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/dish/DishesApiImpl.java @@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.system.api.dish; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.module.system.api.dish.dto.DishExcelDto; import cn.iocoder.yudao.module.system.api.dish.dto.DishesRespDto; import cn.iocoder.yudao.module.system.dal.dataobject.dishes.DishesDO; import cn.iocoder.yudao.module.system.service.dishes.DishesService; @@ -38,4 +39,9 @@ public class DishesApiImpl implements DishesApi { List dishesList = dishesService.getDishesList(ids); return BeanUtils.toBean(dishesList, DishesRespDto.class); } + + @Override + public void exportDish(List dishExcels,Long storeId) { + dishesService.exportDish(dishExcels,storeId); + } } \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dishes/DishesService.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dishes/DishesService.java index 276d6e4a..1de766a6 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dishes/DishesService.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dishes/DishesService.java @@ -1,6 +1,7 @@ package cn.iocoder.yudao.module.system.service.dishes; import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.system.api.dish.dto.DishExcelDto; import cn.iocoder.yudao.module.system.controller.admin.dishes.vo.DishesPageReqVO; import cn.iocoder.yudao.module.system.controller.admin.dishes.vo.DishesRespVO; import cn.iocoder.yudao.module.system.controller.admin.dishes.vo.DishesSaveReqVO; @@ -70,4 +71,6 @@ public interface DishesService { List getTodayDishes(); List getTodayDishesNew(); + + void exportDish(List dishExcels, Long storeId); } \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dishes/DishesServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dishes/DishesServiceImpl.java index 7f9c8dc7..5f0ad37f 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dishes/DishesServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dishes/DishesServiceImpl.java @@ -1,11 +1,14 @@ package cn.iocoder.yudao.module.system.service.dishes; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.ObjUtil; +import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import cn.iocoder.yudao.framework.common.pojo.PageParam; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.module.system.api.dish.dto.DishExcelDto; import cn.iocoder.yudao.module.system.controller.admin.dishes.vo.DishesPageReqVO; import cn.iocoder.yudao.module.system.controller.admin.dishes.vo.DishesRespVO; import cn.iocoder.yudao.module.system.controller.admin.dishes.vo.DishesSaveReqVO; @@ -18,13 +21,16 @@ import cn.iocoder.yudao.module.system.controller.app.dishes.vo.AppUpdateVO; import cn.iocoder.yudao.module.system.dal.dataobject.dishes.DishesDO; import cn.iocoder.yudao.module.system.dal.dataobject.dishesnutrition.DishesNutritionDO; import cn.iocoder.yudao.module.system.dal.dataobject.dishesraw.DishesRawDO; +import cn.iocoder.yudao.module.system.dal.dataobject.dishestype.DishesTypeDO; import cn.iocoder.yudao.module.system.dal.mysql.dishes.DishesMapper; import cn.iocoder.yudao.module.system.enums.ErrorCodeConstants; import cn.iocoder.yudao.module.system.service.deviceinfo.DeviceInfoService; import cn.iocoder.yudao.module.system.service.dishesnutrition.DishesNutritionService; import cn.iocoder.yudao.module.system.service.dishesraw.DishesRawService; +import cn.iocoder.yudao.module.system.service.dishestype.DishesTypeService; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.SneakyThrows; +import org.aspectj.weaver.ast.Var; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; @@ -62,7 +68,8 @@ public class DishesServiceImpl implements DishesService { private DeviceInfoService deviceInfoService; @Resource private HttpServletRequest httpServletRequest; - + @Resource + private DishesTypeService dishesTypeService; @Override @SneakyThrows @@ -321,11 +328,51 @@ public class DishesServiceImpl implements DishesService { } } + public String getToday(){ LocalDate currentDate = LocalDate.now(); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); return currentDate.format(formatter); } + @Override + public void exportDish(List dishExcels, Long storeId) { + for (DishExcelDto vo:dishExcels){ + List dishesDOS = dishesMapper.selectList(Wrappers.lambdaQuery() + .eq(DishesDO::getCarteenId, storeId) + .eq(DishesDO::getDishesName, vo.getName())); + + if(CollectionUtil.isNotEmpty(dishesDOS)){ + continue; + } + // 插入 + DishesDO dishes = new DishesDO(); + dishes.setDishesName(vo.getName()); + dishes.setDishesSumPrice(vo.getMoney()); + dishes.setDeleted(Boolean.FALSE); + dishes.setCarteenId(storeId); + dishes.setDishesNumber(new BigDecimal("50")); + DishesTypeDO byName = dishesTypeService.getByName(vo.getType(), storeId); + dishes.setDishecType(ObjectUtil.isNotEmpty(byName)?byName.getId().toString():null); + + LocalDateTime today = LocalDateTime.now(); + int hour = today.getHour(); + String time = dishesMapper.getTime(hour); + String dayOfWeekInChinese = getToday(); + dishes.setWeekTime(dayOfWeekInChinese); + dishes.setTimeSlot(time); + //计算每g多少钱 + BigDecimal dishesSumPrice = vo.getMoney(); + BigDecimal dishesNumber = new BigDecimal("50"); + BigDecimal div = NumberUtil.div(dishesSumPrice, dishesNumber, 2); + //避免计算出每克价格约 为0 + if (div.floatValue() <= 0.00f) { + dishes.setDishesBasePrice(new BigDecimal("0.01")); + } else { + dishes.setDishesBasePrice(div); + } + dishesMapper.insert(dishes); + } + } } \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dishestype/DishesTypeService.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dishestype/DishesTypeService.java index fa3f8ff9..6cb4a26d 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dishestype/DishesTypeService.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dishestype/DishesTypeService.java @@ -67,5 +67,5 @@ public interface DishesTypeService { List getList(); - + DishesTypeDO getByName(String name,Long carteenId); } \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dishestype/DishesTypeServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dishestype/DishesTypeServiceImpl.java index 86d4d402..ed30acd8 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dishestype/DishesTypeServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dishestype/DishesTypeServiceImpl.java @@ -44,8 +44,7 @@ public class DishesTypeServiceImpl implements DishesTypeService { @Resource private DishesTypeMapper dishesTypeMapper; - @Resource - private DishesService dishesService; + @Override public Long createDishesType(DishesTypeSaveReqVO createReqVO) { // 插入 @@ -166,4 +165,13 @@ public class DishesTypeServiceImpl implements DishesTypeService { public List getList() { return dishesTypeMapper.selectList(); } + + @Override + public DishesTypeDO getByName(String name,Long carteenId) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(DishesTypeDO::getDishesTypeName,name); + wrapper.eq(DishesTypeDO::getCarteenId,carteenId); + List dishesTypeDOS = dishesTypeMapper.selectList(wrapper); + return CollectionUtil.isNotEmpty(dishesTypeDOS)?dishesTypeDOS.get(0):null; + } } \ No newline at end of file