ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TShopController.java
@@ -5,6 +5,7 @@ import com.ruoyi.common.basic.PageInfo; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.framework.web.service.TokenService; import com.ruoyi.system.domain.TBoard; import com.ruoyi.system.domain.TShop; @@ -22,6 +23,8 @@ import java.util.List; import java.util.Objects; import static com.ruoyi.common.core.domain.AjaxResult.error; /** * <p> @@ -64,6 +67,17 @@ @ApiOperation( value = "添加店铺信息") @PostMapping(value = "/add") public AjaxResult<String> add(@RequestBody TShopDTO dto) { SysUser user = new SysUser(); user.setUserName(dto.getAccount()); user.setPhonenumber(dto.getAccount()); if (!userService.checkUserNameUnique(user)) { return error("修改用户'" + user.getUserName() + "'失败,登录账号已存在"); } else if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(user)) { return error("修改用户'" + user.getUserName() + "'失败,手机号码已存在"); } shopService.save(dto); // 添加账号 Long userId = userService.addAccount(dto); @@ -78,6 +92,17 @@ @ApiOperation( value = "编辑店铺信息") @PostMapping(value = "/edit") public AjaxResult<String> edit(@RequestBody TShopDTO dto) { SysUser user = new SysUser(); user.setUserName(dto.getAccount()); user.setPhonenumber(dto.getAccount()); if (!userService.checkUserNameUnique(user)) { return error("修改用户'" + user.getUserName() + "'失败,登录账号已存在"); } else if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(user)) { return error("修改用户'" + user.getUserName() + "'失败,手机号码已存在"); } shopService.updateById(dto); userService.updateAccount(dto); return AjaxResult.success(); @@ -106,7 +131,7 @@ public AjaxResult<TShop> getDetailByUserId() { Integer roleType = tokenService.getLoginUser().getRoleType(); if(roleType == 1){ return AjaxResult.error("该用户不是商家账号"); return error("该用户不是商家账号"); } return AjaxResult.success(shopService.getOne(Wrappers.<TShop>lambdaQuery().eq(TShop::getUserId, tokenService.getLoginUser().getUserId()) .last("LIMIT 1"))); ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java
@@ -1,9 +1,6 @@ package com.ruoyi.web.controller.system; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; import java.util.*; import java.util.concurrent.TimeUnit; import com.ruoyi.common.core.domain.R; @@ -12,6 +9,7 @@ import com.ruoyi.common.core.redis.RedisCache; import com.ruoyi.framework.web.service.TokenService; import com.ruoyi.system.service.ISysRoleService; import com.ruoyi.system.service.ISysUserService; import com.ruoyi.web.controller.tool.MsgUtils; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -53,10 +51,53 @@ @Autowired private ISysRoleService roleService; @Autowired private ISysUserService userService; @Autowired private MsgUtils msgUtils; /** * 账号密码登录 * * @param loginBody 登录信息 * @return 结果 */ @ApiOperation(value = "平台账号密码登录",notes = "平台账号密码登录") @PostMapping("/platformLogin") public AjaxResult<Map<String,Object>> platformLogin(@RequestBody LoginBody loginBody) { SysUser sysUser = userService.selectUserByUserName(loginBody.getUsername()); if(Objects.isNull(sysUser)){ return AjaxResult.error("用户不存在!"); } if(sysUser.getRoleType() != 1){ return AjaxResult.error("商家无法登录平台系统!请访问商家平台"); } Map<String,Object> map = new HashMap<>(); // 生成令牌 LoginUser loginUser = loginService.login(loginBody.getUsername(), loginBody.getPassword(), loginBody.getCode(), loginBody.getUuid()); map.put(Constants.TOKEN, tokenService.createToken(loginUser)); List<SysRole> roles = loginUser.getUser().getRoles(); if(CollectionUtils.isEmpty(roles)){ return AjaxResult.error("请关联角色!"); } if(roles.get(0).getStatus() == 1){ return AjaxResult.error("该账号角色已被禁用!"); } List<SysMenu> menus = roleService.roleInfoFromUserId(loginUser.getUserId()); map.put("menus",menus); map.put("roleName",roles.get(0).getRoleName()); map.put("userInfo",loginUser); return AjaxResult.success(map); } /** * 账号密码登录 * * @param loginBody 登录信息 * @return 结果 ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRoleController.java
@@ -232,17 +232,17 @@ * 删除角色 */ // @PreAuthorize("@ss.hasPermi('system:role:remove')") @ApiOperation(value = "批量删除角色") @Log(title = "角色信息-角色删除角色", businessType = BusinessType.DELETE) @DeleteMapping("/deleteById/{id}") public AjaxResult remove(@PathVariable(value = "id") Long id) { SysRole sysRole = roleService.selectRoleById(id); if("meal".equals(sysRole.getRoleKey()) || "sale".equals(sysRole.getRoleKey()) || "admin".equals(sysRole.getRoleKey())){ return error("当前角色无法删除"); } return AjaxResult.success(roleService.deleteRoleById(id)); } // @ApiOperation(value = "批量删除角色") // @Log(title = "角色信息-角色删除角色", businessType = BusinessType.DELETE) // @DeleteMapping("/deleteById/{id}") // public AjaxResult remove(@PathVariable(value = "id") Long id) // { // SysRole sysRole = roleService.selectRoleById(id); // if("meal".equals(sysRole.getRoleKey()) || "sale".equals(sysRole.getRoleKey()) || "admin".equals(sysRole.getRoleKey())){ // return error("当前角色无法删除"); // } // return AjaxResult.success(roleService.deleteRoleById(id)); // } /** * 删除角色 ruoyi-system/src/main/java/com/ruoyi/system/dto/SysRoleDTO.java
@@ -20,6 +20,9 @@ @ApiModelProperty(value = "类型") private Integer postType; @ApiModelProperty(value = "备注") private String remark; @ApiModelProperty(value = "权限id集合") private List<Long> menuIds; ruoyi-system/src/main/java/com/ruoyi/system/export/TOrderSaleAndGoodsExportExcel.java
@@ -26,6 +26,6 @@ @Excel(width = 30,name = "商品总价",needMerge = true) private BigDecimal goodsAmount; @Excel(width = 30,name = "支付方式",replace = {"现金_1","支付宝_2","微信_3","银行卡_4","其他_5"},needMerge = true) @Excel(width = 30,name = "支付方式",replace = {"现金_1","支付宝_2","微信_3","银行卡_4","其他_5"," _null"},needMerge = true) private Integer payType; } ruoyi-system/src/main/java/com/ruoyi/system/query/TDataGeneratorSaleQuery.java
@@ -22,5 +22,4 @@ @ApiModelProperty(value = "数据生成id") @NotNull(message = "数据生成id不能为空") private Long generatorId; } ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysRoleServiceImpl.java
@@ -395,6 +395,9 @@ { throw new ServiceException(String.format("%1$s已分配,不能删除", role.getRoleName())); } if("meal".equals(role.getRoleKey()) || "sale".equals(role.getRoleKey()) || "admin".equals(role.getRoleKey())){ throw new ServiceException("当前角色无法删除"); } } // 删除角色与菜单关联 roleMenuMapper.deleteRoleMenu(roleIds); @@ -587,6 +590,7 @@ sysRole.setRoleId(dto.getRoleId()); sysRole.setRoleName(dto.getRoleName()); sysRole.setPostType(dto.getPostType()); sysRole.setRemark(dto.getRemark()); roleMapper.updateRole(sysRole); // 删除角色与菜单关联 roleMenuMapper.deleteRoleMenuByRoleId(dto.getRoleId()); ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TDataGeneratorServiceImpl.java
@@ -9,6 +9,7 @@ import com.ruoyi.common.core.redis.RedisCache; import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.utils.CodeGenerateUtils; import com.ruoyi.common.utils.DateUtils; import com.ruoyi.system.domain.*; import com.ruoyi.system.dto.OrderMealGeneratorCountDTO; import com.ruoyi.system.dto.OrderMealGeneratorDTO; @@ -26,6 +27,8 @@ import java.math.BigDecimal; import java.math.RoundingMode; import java.text.ParseException; import java.text.SimpleDateFormat; import java.time.LocalDate; import java.util.*; import java.util.stream.Collectors; @@ -136,6 +139,7 @@ if (good.getGoodsNum().equals(typeGood.getGoodsNum())) { count+=1; good.setGoodsCount(good.getGoodsCount() + 1); good.setGoodsSalePrice(good.getGoodsSalePrice().add(typeGood.getSalePrice())); break; // 找到后直接跳出循环 } } @@ -329,8 +333,8 @@ tOrderStockGoods.setGoodsPicture(v.get(0).getGoodsPicture()); tOrderStockGoods.setGoodsId(v.get(0).getGoodsId()); int sum = v.stream().mapToInt(TOrderSaleGoods::getGoodsCount).sum(); BigDecimal rate = start.getLossRate().divide(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_HALF_UP); BigDecimal bigDecimal = new BigDecimal(sum).divide(rate).setScale(0, BigDecimal.ROUND_HALF_UP); BigDecimal rate = new BigDecimal(100).subtract(start.getLossRate()).divide(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_HALF_UP); BigDecimal bigDecimal = new BigDecimal(sum).divide(rate,2,BigDecimal.ROUND_HALF_UP).setScale(0, BigDecimal.ROUND_HALF_UP); tOrderStockGoods.setStockCount(Integer.parseInt(bigDecimal.toString().split("\\.")[0])); orderStockGoods.add(tOrderStockGoods); }); @@ -370,8 +374,8 @@ tOrderStockGoods.setGoodsPicture(v.get(0).getGoodsPicture()); tOrderStockGoods.setGoodsId(v.get(0).getGoodsId()); int sum = v.stream().mapToInt(TOrderSaleGoods::getGoodsCount).sum(); BigDecimal rate = start.getLossRate().divide(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_HALF_UP); BigDecimal bigDecimal = new BigDecimal(sum).divide(rate).setScale(0, BigDecimal.ROUND_HALF_UP); BigDecimal rate = new BigDecimal(100).subtract(start.getLossRate()).divide(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_HALF_UP); BigDecimal bigDecimal = new BigDecimal(sum).divide(rate,2,BigDecimal.ROUND_HALF_UP).setScale(0, BigDecimal.ROUND_HALF_UP); tOrderStockGoods.setStockCount(Integer.parseInt(bigDecimal.toString().split("\\.")[0])); orderStockGoods.add(tOrderStockGoods); }); @@ -404,8 +408,8 @@ tOrderStockGoods.setGoodsPicture(v.get(0).getGoodsPicture()); tOrderStockGoods.setGoodsId(v.get(0).getGoodsId()); int sum = v.stream().mapToInt(TOrderSaleGoods::getGoodsCount).sum(); BigDecimal rate = start.getLossRate().divide(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_HALF_UP); BigDecimal bigDecimal = new BigDecimal(sum).divide(rate).setScale(0, BigDecimal.ROUND_HALF_UP); BigDecimal rate = new BigDecimal(100).subtract(start.getLossRate()).divide(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_HALF_UP); BigDecimal bigDecimal = new BigDecimal(sum).divide(rate,2,BigDecimal.ROUND_HALF_UP).setScale(0, BigDecimal.ROUND_HALF_UP); tOrderStockGoods.setStockCount(Integer.parseInt(bigDecimal.toString().split("\\.")[0])); orderStockGoods1.add(tOrderStockGoods); }); @@ -438,8 +442,8 @@ tOrderStockGoods.setGoodsPicture(v.get(0).getGoodsPicture()); tOrderStockGoods.setGoodsId(v.get(0).getGoodsId()); int sum = v.stream().mapToInt(TOrderSaleGoods::getGoodsCount).sum(); BigDecimal rate = start.getLossRate().divide(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_HALF_UP); BigDecimal bigDecimal = new BigDecimal(sum).divide(rate).setScale(0, BigDecimal.ROUND_HALF_UP); BigDecimal rate = new BigDecimal(100).subtract(start.getLossRate()).divide(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_HALF_UP); BigDecimal bigDecimal = new BigDecimal(sum).divide(rate,2,BigDecimal.ROUND_HALF_UP).setScale(0, BigDecimal.ROUND_HALF_UP); tOrderStockGoods.setStockCount(Integer.parseInt(bigDecimal.toString().split("\\.")[0])); orderStockGoods.add(tOrderStockGoods); }); @@ -493,12 +497,14 @@ .in(TOrderMeal::getGeneratorId, ids)); List<Long> mealIds = orderMeals.stream().map(TOrderMeal::getId).collect(Collectors.toList()); if(!CollectionUtils.isEmpty(mealIds)){ List<TOrderMealGoods> mealGoods = orderMealGoodsService.list(Wrappers.lambdaQuery(TOrderMealGoods.class) .in(TOrderMealGoods::getOrderId, mealIds)); // List<TOrderMealGoods> mealGoods = orderMealGoodsService.list(Wrappers.lambdaQuery(TOrderMealGoods.class) // .in(TOrderMealGoods::getOrderId, mealIds)); for (TDataGeneratorVO tDataGeneratorVO : list) { List<Long> collect = orderMeals.stream().filter(e -> e.getGeneratorId().equals(tDataGeneratorVO.getId())).map(TOrderMeal::getId).collect(Collectors.toList()); BigDecimal money = mealGoods.stream().filter(e -> collect.contains(e.getOrderId())) .reduce(BigDecimal.ZERO, (x, y) -> x.add(y.getGoodsSalePrice().multiply(new BigDecimal(y.getGoodsCount()))), BigDecimal::add); // List<Long> collect = orderMeals.stream().filter(e -> e.getGeneratorId().equals(tDataGeneratorVO.getId())).map(TOrderMeal::getId).collect(Collectors.toList()); // BigDecimal money = mealGoods.stream().filter(e -> collect.contains(e.getOrderId())) // .reduce(BigDecimal.ZERO, (x, y) -> x.add(y.getGoodsSalePrice().multiply(new BigDecimal(y.getGoodsCount()))), BigDecimal::add); BigDecimal money = orderMeals.stream().filter(e -> e.getGeneratorId().equals(tDataGeneratorVO.getId())) .map(TOrderMeal::getPayMoney).reduce(BigDecimal.ZERO, BigDecimal::add); tDataGeneratorVO.setTotalRevenue(money); } } @@ -530,20 +536,36 @@ // 删除时间段的数据 orderMealService.remove(Wrappers.lambdaQuery(TOrderMeal.class) .ge(TOrderMeal::getMealTime, dataGenerator.getStartTime()) .le(TOrderMeal::getMealTime, dataGenerator.getEndTime())); .le(TOrderMeal::getMealTime, dataGenerator.getEndTime()) .eq(TOrderMeal::getIsCover,1)); // 修改覆盖类型为已覆盖 orderMealService.update(Wrappers.lambdaUpdate(TOrderMeal.class).set(TOrderMeal::getIsCover, 1).eq(TOrderMeal::getGeneratorId, id)); }else { List<TOrderStock> list = orderStockService.list(Wrappers.lambdaQuery(TOrderStock.class) .eq(TOrderStock::getGeneratorId, id)); List<Long> stockIds = list.stream().map(TOrderStock::getId).collect(Collectors.toList()); if(!CollectionUtils.isEmpty(stockIds)){ List<TOrderStockGoods> list1 = orderStockGoodsService.list(Wrappers.lambdaQuery(TOrderStockGoods.class) .in(TOrderStockGoods::getOrderId, stockIds)); // 判断集合中的进价是否为0 for (TOrderStockGoods tOrderStockGoods : list1) { if(tOrderStockGoods.getThisCostPrice().compareTo(BigDecimal.ZERO) == 0){ throw new ServiceException("进价不能为0"); } } } // 删除时间段的数据 orderSaleService.remove(Wrappers.lambdaQuery(TOrderSale.class) .ge(TOrderSale::getOrderTime, dataGenerator.getStartTime()) .le(TOrderSale::getOrderTime, dataGenerator.getEndTime())); .le(TOrderSale::getOrderTime, dataGenerator.getEndTime()) .eq(TOrderSale::getIsCover,1)); // 修改覆盖类型为已覆盖 orderStockService.update(Wrappers.lambdaUpdate(TOrderStock.class).set(TOrderStock::getIsCover, 1).eq(TOrderStock::getGeneratorId, id)); orderSaleService.update(Wrappers.lambdaUpdate(TOrderSale.class).set(TOrderSale::getIsCover, 1).eq(TOrderSale::getGeneratorId, id)); // 删除时间段的数据 orderStockService.remove(Wrappers.lambdaQuery(TOrderStock.class) .ge(TOrderStock::getStockTime, dataGenerator.getStartTime()) .le(TOrderStock::getStockTime, dataGenerator.getEndTime())); .le(TOrderStock::getStockTime, dataGenerator.getEndTime()) .eq(TOrderStock::getIsCover,1)); // 修改覆盖类型为已覆盖 orderStockService.update(Wrappers.lambdaUpdate(TOrderStock.class).set(TOrderStock::getIsCover, 1).eq(TOrderStock::getGeneratorId, id)); } @@ -590,6 +612,14 @@ orderSaleQuery.setPayType(query.getPayType()); orderSaleQuery.setOrderNum(query.getOrderNum()); orderSaleQuery.setGeneratorId(query.getGeneratorId()); try { if (Objects.nonNull(query.getStartTime()) && Objects.nonNull(query.getEndTime())){ orderSaleQuery.setStartTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(query.getStartTime())); orderSaleQuery.setEndTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(query.getEndTime())); } } catch (ParseException e) { throw new ServiceException(e.getMessage()); } PageInfo<TOrderSaleVO> pageInfo = orderSaleService.pageList(orderSaleQuery); data.setOrderMealList(pageInfo); // 统计支付金额 @@ -616,6 +646,14 @@ orderStockQuery.setGeneratorId(query.getGeneratorId()); orderStockQuery.setTimeType(query.getTimeType()); orderStockQuery.setStockNum(query.getOrderNum()); try { if(Objects.nonNull(query.getStartTime()) && Objects.nonNull(query.getEndTime())){ orderStockQuery.setStartTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(query.getStartTime())); orderStockQuery.setEndTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(query.getEndTime())); } } catch (ParseException e) { throw new ServiceException(e.getMessage()); } PageInfo<TOrderStockVO> pageInfo = orderStockService.pageList(orderStockQuery); data.setOrderStockVOList(pageInfo); // 统计支付金额 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TFoundationPersonServiceImpl.java
@@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.common.exception.ServiceException; import com.ruoyi.system.domain.TFoundationConfig; import com.ruoyi.system.domain.TFoundationPerson; import com.ruoyi.system.dto.TFoundationPersonDTO; @@ -33,10 +34,14 @@ @Override public void add(TFoundationPersonDTO dto) { List<TFoundationConfig> foundationConfigs = dto.getFoundationConfigs(); long count = foundationConfigs.stream().map(TFoundationConfig::getTypeId).distinct().count(); if(foundationConfigs.size()!=count){ throw new ServiceException("菜品重复设置"); } // 添加人数 this.save(dto); // 添加菜品 List<TFoundationConfig> foundationConfigs = dto.getFoundationConfigs(); foundationConfigs.forEach(item -> { item.setPersonId(dto.getId()); }); @@ -45,13 +50,17 @@ @Override public void edit(TFoundationPersonDTO dto) { List<TFoundationConfig> foundationConfigs = dto.getFoundationConfigs(); long count = foundationConfigs.stream().map(TFoundationConfig::getTypeId).distinct().count(); if(foundationConfigs.size()!=count){ throw new ServiceException("菜品重复设置"); } // 添加人数 this.updateById(dto); // 删除菜品 foundationConfigService.remove(Wrappers.lambdaQuery(TFoundationConfig.class) .eq(TFoundationConfig::getPersonId,dto.getId())); // 添加菜品 List<TFoundationConfig> foundationConfigs = dto.getFoundationConfigs(); foundationConfigs.forEach(item -> { item.setPersonId(dto.getId()); }); ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TOrderMealServiceImpl.java
@@ -219,7 +219,9 @@ .add(salesVolumeVO.getMoneyPay()).add(salesVolumeVO.getAliPay())); // 查询成本 List<TOrderMeal> list = this.list(Wrappers.lambdaQuery(TOrderMeal.class) .eq(TOrderMeal::getShopId, query.getShopId())); .eq(TOrderMeal::getShopId, query.getShopId()) .ge(TOrderMeal::getMealTime, query.getStartTime()) .le(TOrderMeal::getMealTime, query.getEndTime())); List<Long> ids = list.stream().map(TOrderMeal::getId).collect(Collectors.toList()); if(!CollectionUtils.isEmpty(ids)){ BigDecimal costTotal = orderMealGoodsService.costTotal(ids); ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TOrderSaleServiceImpl.java
@@ -69,33 +69,35 @@ @Override public PageInfo<TOrderSaleVO> pageList(TOrderSaleQuery query) { if(Objects.nonNull(query.getTimeType())){ LocalDateTime startTime = null; LocalDateTime endTime = null; switch (query.getTimeType()){ case 1: // 今日 startTime = DateUtils.getDayStart(LocalDateTime.now()); endTime = DateUtils.getDayEnd(LocalDateTime.now()); break; case 2: // 昨日 startTime = DateUtils.getDayStart(LocalDateTime.now().minusDays(1)); endTime = DateUtils.getDayEnd(LocalDateTime.now().minusDays(1)); break; case 3: // 近7天 startTime = DateUtils.getDayStart(LocalDateTime.now().minusDays(7)); endTime = DateUtils.getDayEnd(LocalDateTime.now()); break; case 4: // 近30天 startTime = DateUtils.getDayStart(LocalDateTime.now().minusDays(30)); endTime = DateUtils.getDayEnd(LocalDateTime.now()); break; if(Objects.nonNull(query.getStartTime()) && Objects.nonNull(query.getEndTime())){ if(Objects.nonNull(query.getTimeType())){ LocalDateTime startTime = null; LocalDateTime endTime = null; switch (query.getTimeType()){ case 1: // 今日 startTime = DateUtils.getDayStart(LocalDateTime.now()); endTime = DateUtils.getDayEnd(LocalDateTime.now()); break; case 2: // 昨日 startTime = DateUtils.getDayStart(LocalDateTime.now().minusDays(1)); endTime = DateUtils.getDayEnd(LocalDateTime.now().minusDays(1)); break; case 3: // 近7天 startTime = DateUtils.getDayStart(LocalDateTime.now().minusDays(7)); endTime = DateUtils.getDayEnd(LocalDateTime.now()); break; case 4: // 近30天 startTime = DateUtils.getDayStart(LocalDateTime.now().minusDays(30)); endTime = DateUtils.getDayEnd(LocalDateTime.now()); break; } query.setStartTime(DateUtils.localDateTimeToDate(startTime)); query.setEndTime(DateUtils.localDateTimeToDate(endTime)); } query.setStartTime(DateUtils.localDateTimeToDate(startTime)); query.setEndTime(DateUtils.localDateTimeToDate(endTime)); } PageInfo<TOrderSaleVO> pageInfo = new PageInfo<>(query.getPageNum(),query.getPageSize()); List<TOrderSaleVO> list = this.baseMapper.pageList(query,pageInfo); @@ -106,7 +108,11 @@ list.forEach(e->{ List<TOrderSaleGoods> collect = list1.stream().filter(m -> m.getOrderId().equals(e.getId())).collect(Collectors.toList()); if(!CollectionUtils.isEmpty(collect)){ e.setGoodsAmount(collect.stream().map(TOrderSaleGoods::getGoodsSalePrice).reduce(BigDecimal::add).get()); BigDecimal goodsAmount = BigDecimal.ZERO; for (TOrderSaleGoods tOrderSaleGoods : collect) { goodsAmount = goodsAmount.add(tOrderSaleGoods.getThisSalePrice().multiply(new BigDecimal(tOrderSaleGoods.getGoodsCount()))); } e.setGoodsAmount(goodsAmount); e.setOrderSaleGoods(collect); } }); @@ -201,6 +207,36 @@ @Override public Map<String, Double> getDataGeneratorSaleDetail(TDataGeneratorSaleQuery query) { if(Objects.nonNull(query.getStartTime()) && Objects.nonNull(query.getEndTime())){ if(Objects.nonNull(query.getTimeType())){ LocalDateTime startTime = null; LocalDateTime endTime = null; switch (query.getTimeType()){ case 1: // 今日 startTime = DateUtils.getDayStart(LocalDateTime.now()); endTime = DateUtils.getDayEnd(LocalDateTime.now()); break; case 2: // 昨日 startTime = DateUtils.getDayStart(LocalDateTime.now().minusDays(1)); endTime = DateUtils.getDayEnd(LocalDateTime.now().minusDays(1)); break; case 3: // 近7天 startTime = DateUtils.getDayStart(LocalDateTime.now().minusDays(7)); endTime = DateUtils.getDayEnd(LocalDateTime.now()); break; case 4: // 近30天 startTime = DateUtils.getDayStart(LocalDateTime.now().minusDays(30)); endTime = DateUtils.getDayEnd(LocalDateTime.now()); break; } query.setStartTime(DateUtils.localDateTimeToDate(startTime)); query.setEndTime(DateUtils.localDateTimeToDate(endTime)); } } return this.baseMapper.getDataGeneratorSaleDetail(query); } ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TOrderStockServiceImpl.java
@@ -88,35 +88,36 @@ @Override public PageInfo<TOrderStockVO> pageList(TOrderStockQuery query) { // 判断时间 if(Objects.nonNull(query.getTimeType())){ LocalDateTime startTime = null; LocalDateTime endTime = null; switch (query.getTimeType()){ case 1: // 今日 startTime = DateUtils.getDayStart(LocalDateTime.now()); endTime = DateUtils.getDayEnd(LocalDateTime.now()); break; case 2: // 昨日 startTime = DateUtils.getDayStart(LocalDateTime.now().minusDays(1)); endTime = DateUtils.getDayEnd(LocalDateTime.now().minusDays(1)); break; case 3: // 近7天 startTime = DateUtils.getDayStart(LocalDateTime.now().minusDays(7)); endTime = DateUtils.getDayEnd(LocalDateTime.now()); break; case 4: // 近30天 startTime = DateUtils.getDayStart(LocalDateTime.now().minusDays(30)); endTime = DateUtils.getDayEnd(LocalDateTime.now()); break; if(Objects.nonNull(query.getStartTime()) && Objects.nonNull(query.getEndTime())){ // 判断时间 if(Objects.nonNull(query.getTimeType())){ LocalDateTime startTime = null; LocalDateTime endTime = null; switch (query.getTimeType()){ case 1: // 今日 startTime = DateUtils.getDayStart(LocalDateTime.now()); endTime = DateUtils.getDayEnd(LocalDateTime.now()); break; case 2: // 昨日 startTime = DateUtils.getDayStart(LocalDateTime.now().minusDays(1)); endTime = DateUtils.getDayEnd(LocalDateTime.now().minusDays(1)); break; case 3: // 近7天 startTime = DateUtils.getDayStart(LocalDateTime.now().minusDays(7)); endTime = DateUtils.getDayEnd(LocalDateTime.now()); break; case 4: // 近30天 startTime = DateUtils.getDayStart(LocalDateTime.now().minusDays(30)); endTime = DateUtils.getDayEnd(LocalDateTime.now()); break; } query.setStartTime(DateUtils.localDateTimeToDate(startTime)); query.setEndTime(DateUtils.localDateTimeToDate(endTime)); } query.setStartTime(DateUtils.localDateTimeToDate(startTime)); query.setEndTime(DateUtils.localDateTimeToDate(endTime)); } PageInfo<TOrderStockVO> pageInfo = new PageInfo<>(query.getPageNum(),query.getPageSize()); List<TOrderStockVO> list = this.baseMapper.pageList(query,pageInfo); ruoyi-system/src/main/resources/mapper/system/SysRoleMapper.xml
@@ -96,7 +96,7 @@ <select id="selectList" resultType="com.ruoyi.common.core.domain.entity.SysRole"> select role_id AS roleId, role_name AS roleName, role_key AS roleKey, role_sort AS roleSort, data_scope AS dataScope, menu_check_strictly AS menuCheckStrictly, dept_check_strictly AS deptCheckStrictly,status AS status, del_flag AS delFlag, create_time AS createTime,create_by AS createBy create_time AS createTime,create_by AS createBy,remark AS remark from sys_role <where> <if test="query.roleName != null and query.roleName != ''"> ruoyi-system/src/main/resources/mapper/system/TOrderMealMapper.xml
@@ -185,7 +185,8 @@ and tom.payType = #{query.payType} </if> <if test="query.startTime != null and query.startTime != '' and query.endTime != null and query.endTime != ''"> AND (tom.createTime BETWEEN #{query.startTime} AND #{query.endTime}) AND (tom.mealTime BETWEEN CONCAT(DATE_FORMAT(#{query.startTime},'%Y-%m-%d %H:%i:%s'),' 00:00:00') AND CONCAT(DATE_FORMAT(#{query.endTime},'%Y-%m-%d %H:%i:%s'),' 23:59:59')) </if> AND tom.disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()} </where> @@ -210,7 +211,7 @@ and generatorId = #{query.generatorId} </if> <if test="query.startTime != null and query.startTime != '' and query.endTime != null and query.endTime != ''"> AND (createTime BETWEEN #{query.startTime} AND #{query.endTime}) AND (mealTime BETWEEN #{query.startTime} AND #{query.endTime}) </if> AND disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()} </where> @@ -229,11 +230,11 @@ and tom.generatorId = #{query.generatorId} </if> <if test="query.startTime != null and query.startTime != '' and query.endTime != null and query.endTime != ''"> AND (tom.createTime BETWEEN #{query.startTime} AND #{query.endTime}) AND (tom.mealTime BETWEEN #{query.startTime} AND #{query.endTime}) </if> AND tom.disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()} </where> ORDER BY tom.createTime DESC ORDER BY tom.mealTime DESC </select> <select id="mealGeneratorListExport" resultType="com.ruoyi.system.vo.TDataGeneratorVO"> select tdg.id, tdg.userId, tdg.userName, tdg.shopId, tdg.startTime, tdg.endTime, tdg.minMoney, tdg.maxMoney, tdg.status, tdg.createTime, @@ -261,7 +262,7 @@ and tdg.orderType = #{query.orderType} </if> <if test="query.startTime != null and query.startTime != '' and query.endTime != null and query.endTime != ''"> AND (tdg.createTime BETWEEN #{query.startTime} AND #{query.endTime}) AND (tdg.mealTime BETWEEN #{query.startTime} AND #{query.endTime}) </if> AND tdg.disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()} and tdg.orderType = 1 @@ -291,6 +292,7 @@ AND tom.shopId = #{query.shopId} </if> AND tom.disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()} AND tom.isCover = 1 </where> GROUP BY tomg.goodsName </select> @@ -323,6 +325,7 @@ AND tom.shopId = #{query.shopId} </if> AND tom.disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()} AND tom.isCover = 1 </where> GROUP BY tomg.goodsName) a </select> ruoyi-system/src/main/resources/mapper/system/TOrderSaleGoodsMapper.xml
@@ -35,6 +35,7 @@ <select id="salesRanking" resultType="com.ruoyi.system.vo.SalesRankingVO"> SELECT tgt.typeName,SUM(tosg.goodsSalePrice*tosg.goodsCount) AS salesVolume FROM t_order_sale_goods tosg LEFT JOIN t_order_sale tos on tosg.orderId=tos.id LEFT JOIN t_goods_type tgt ON tosg.typeId = tgt.id <where> <if test="ids != null and ids.size()>0"> @@ -43,6 +44,7 @@ #{id} </foreach> </if> AND tos.isCover = 1 </where> GROUP BY tgt.typeName </select> ruoyi-system/src/main/resources/mapper/system/TOrderSaleMapper.xml
@@ -49,7 +49,7 @@ and generatorId = #{query.generatorId} </if> <if test="query.startTime != null and query.startTime != '' and query.endTime != null and query.endTime != ''"> AND (createTime BETWEEN #{query.startTime} AND #{query.endTime}) AND (orderTime BETWEEN #{query.startTime} AND #{query.endTime}) </if> AND disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()} </where> @@ -160,13 +160,13 @@ and payType = #{query.payType} </if> <if test="query.startTime != null and query.startTime != '' and query.endTime != null and query.endTime != ''"> AND (createTime BETWEEN #{query.startTime} AND #{query.endTime}) AND (orderTime BETWEEN #{query.startTime} AND #{query.endTime}) </if> AND disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()} </where> </select> <select id="saleGeneratorExport" resultType="com.ruoyi.system.vo.TOrderSaleVO"> select id, orderTime, remark, createTime, updateTime, disabled, createBy, updateBy, orderNum, status,orderMoney,payMoney,shopId select id, orderTime, remark, createTime, updateTime, disabled, createBy, updateBy, orderNum, status,orderMoney,payMoney,shopId,payType from t_order_sale <where> <if test="query.generatorId != null"> @@ -179,7 +179,7 @@ and payType = #{query.payType} </if> <if test="query.startTime != null and query.startTime != '' and query.endTime != null and query.endTime != ''"> AND (createTime BETWEEN #{query.startTime} AND #{query.endTime}) AND (orderTime BETWEEN #{query.startTime} AND #{query.endTime}) </if> AND disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()} </where> @@ -196,7 +196,7 @@ and ts.shopName like concat('%', #{query.shopName}, '%') </if> <if test="query.userName != null and query.userName != ''"> and tdg.shopName like concat('%', #{query.userName}, '%') and tdg.userName like concat('%', #{query.userName}, '%') </if> <if test="query.status != null"> and tdg.status = #{query.status} ruoyi-system/src/main/resources/mapper/system/TOrderStockMapper.xml
@@ -39,7 +39,8 @@ AND isCover = #{query.isCover} </if> <if test="query.endTime != null and query.startTime != null"> AND (stockTime BETWEEN #{query.startTime} and #{query.endTime}) AND (stockTime BETWEEN CONCAT(DATE_FORMAT(#{query.startTime},'%Y-%m-%d %H:%i:%s'),' 00:00:00') AND CONCAT(DATE_FORMAT(#{query.endTime},'%Y-%m-%d %H:%i:%s'),' 23:59:59')) </if> AND disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()} </where> @@ -47,20 +48,22 @@ </select> <select id="getDataGeneratorStockDetail" resultType="java.util.Map"> SELECT IFNULL(SUM(stockTotalPrice),0) AS stockAmountSum, COUNT(id) AS totalStock from t_order_stock IFNULL(SUM(tos.stockTotalPrice),0) AS stockAmountSum, IFNULL(SUM(tosg.stockCount),0) AS totalStock from t_order_stock tos left join t_order_stock_goods tosg on tos.id = tosg.orderId <where> <if test="query.orderNum != null and query.orderNum != ''"> AND stockNum LIKE concat('%',#{query.orderNum},'%') AND tos.stockNum LIKE concat('%',#{query.orderNum},'%') </if> <if test="query.generatorId != null"> AND generatorId = #{query.generatorId} AND tos.generatorId = #{query.generatorId} </if> <if test="query.endTime != null and query.startTime != null"> AND (stockTime BETWEEN #{query.startTime} and #{query.endTime}) AND (tos.stockTime BETWEEN CONCAT(DATE_FORMAT(#{query.startTime},'%Y-%m-%d %H:%i:%s'),' 00:00:00') AND CONCAT(DATE_FORMAT(#{query.endTime},'%Y-%m-%d %H:%i:%s'),' 23:59:59')) </if> AND disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()} AND tos.disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()} </where> </select> <select id="stockGeneratorExport" resultType="com.ruoyi.system.vo.TOrderStockVO">