| | |
| | | if(!goods.getGoodsName().equals(dto.getGoodsName())){ |
| | | List<TOrderStockGoods> orderStockGoods = orderStockGoodsService.list(Wrappers.lambdaQuery(TOrderStockGoods.class) |
| | | .eq(TOrderStockGoods::getGoodsNum, goods.getGoodsNum())); |
| | | orderStockGoods.stream().forEach(tOrderStockGoods -> tOrderStockGoods.setGoodsNum(dto.getGoodsNum())); |
| | | orderStockGoods.stream().forEach(tOrderStockGoods -> tOrderStockGoods.setGoodsName(dto.getGoodsName())); |
| | | orderStockGoodsService.updateBatchById(orderStockGoods); |
| | | |
| | | List<TOrderMealGoods> orderMealGoods = orderMealGoodsService.list(Wrappers.lambdaQuery(TOrderMealGoods.class) |
| | | .eq(TOrderMealGoods::getGoodsNum, goods.getGoodsNum())); |
| | | orderMealGoods.stream().forEach(tOrderMealGoods -> tOrderMealGoods.setGoodsNum(dto.getGoodsNum())); |
| | | orderMealGoods.stream().forEach(tOrderMealGoods -> tOrderMealGoods.setGoodsName(dto.getGoodsName())); |
| | | orderMealGoodsService.updateBatchById(orderMealGoods); |
| | | |
| | | List<TOrderSaleGoods> list = orderSaleGoodsService.list(Wrappers.lambdaQuery(TOrderSaleGoods.class) |
| | | .eq(TOrderSaleGoods::getGoodsNum, goods.getGoodsNum())); |
| | | list.stream().forEach(tOrderSaleGoods -> tOrderSaleGoods.setGoodsNum(dto.getGoodsNum())); |
| | | list.stream().forEach(tOrderSaleGoods -> tOrderSaleGoods.setGoodsName(dto.getGoodsName())); |
| | | orderSaleGoodsService.updateBatchById(list); |
| | | } |
| | | return AjaxResult.success(goodsService.updateById(dto)); |
| | |
| | | TBoard board = boardService.getById(orderMeal.getBoardId()); |
| | | orderMealVO.setMaxPerson(board.getMaxPerson()); |
| | | orderMealVO.setMinPerson(board.getMinPerson()); |
| | | orderMealVO.setBoardName(board.getBoardName()); |
| | | return AjaxResult.success(orderMealVO); |
| | | } |
| | | |
| | |
| | | @PostMapping(value = "/amountSum") |
| | | public AjaxResult<AmountSumVO> amountSum(@RequestBody TOrderSaleQuery query) { |
| | | query.setShopId(tokenService.getLoginUser().getObjectId()); |
| | | orderSaleService.amountSum(query); |
| | | return AjaxResult.success(orderSaleService.amountSum(query)); |
| | | } |
| | | |
| | |
| | | // 登录前置校验 |
| | | loginPreCheck(username, password); |
| | | // 用户验证 |
| | | Authentication authentication = null; |
| | | // Authentication authentication = null; |
| | | // 用户验证 |
| | | SysUser user = userService.selectUserByUserName(username); |
| | | if (StringUtils.isNull(user)){ |
| | |
| | | UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(username+"_", password); |
| | | AuthenticationContextHolder.setContext(authenticationToken); |
| | | // 该方法会去调用UserDetailsServiceImpl.loadUserByUsername |
| | | authentication = authenticationManager.authenticate(authenticationToken); |
| | | // authentication = authenticationManager.authenticate(authenticationToken); |
| | | } |
| | | catch (Exception e) |
| | | { |
| | |
| | | AuthenticationContextHolder.clearContext(); |
| | | } |
| | | AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success"))); |
| | | LoginUser loginUser = (LoginUser) authentication.getPrincipal(); |
| | | LoginUser loginUser = new LoginUser(); |
| | | loginUser.setUser(user); |
| | | loginUser.setUserId(user.getUserId()); |
| | | loginUser.setNickName(user.getNickName()); |
| | | loginUser.setRoleType(user.getRoleType()); |
| | | loginUser.setObjectId(user.getObjectId()); |
| | |
| | | |
| | | public static void main(String[] args) { |
| | | // $2a$10$qofXsM/ZKUMqvysvsWBAfOizecqUdAaXPFUYDVxaYYM0FJg6/mOpq |
| | | String s = SecurityUtils.encryptPassword("111111"); |
| | | String s = SecurityUtils.encryptPassword("123456"); |
| | | System.err.println(s); |
| | | boolean b = SecurityUtils.matchesPassword("111111", "$2a$10$Wx75W2oW23.tsSkvA21QyueQ59iwWwv2ns06Bxubje0ZwPe2wNOQ2"); |
| | | boolean b = SecurityUtils.matchesPassword("123456", "$2a$10$Wx75W2oW23.tsSkvA21QyueQ59iwWwv2ns06Bxubje0ZwPe2wNOQ2"); |
| | | System.err.println(b); |
| | | } |
| | | public boolean reMatches(SysUser user, String rawPassword) |
| | | { |
| | | System.err.println(SecurityUtils.matchesPassword(rawPassword, user.getRePassword())); |
| | | System.err.println(rawPassword); |
| | | System.err.println(user.getRePassword()); |
| | | return SecurityUtils.matchesPassword(rawPassword, user.getRePassword()); |
| | | } |
| | | |
| | |
| | | import com.baomidou.mybatisplus.annotation.TableField; |
| | | import com.baomidou.mybatisplus.annotation.TableId; |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import com.ruoyi.common.core.domain.BaseModel; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | |
| | | @EqualsAndHashCode(callSuper = false) |
| | | @TableName("t_order_meal_goods") |
| | | @ApiModel(value="TOrderMealGoods对象", description="餐饮订单商品") |
| | | public class TOrderMealGoods implements Serializable { |
| | | public class TOrderMealGoods extends BaseModel { |
| | | |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | |
| | | @Excel(width = 30,name = "支付金额") |
| | | private BigDecimal payMoney; |
| | | |
| | | @Excel(width = 30,name = "支付方式",replace = {"现金_1","支付宝_2","微信_3","银行卡_4","其他_5"}) |
| | | @Excel(width = 30,name = "支付方式",replace = {"现金_1","支付宝_2","微信_3","银行卡_4","其他_5"," _null"}) |
| | | private Integer payType; |
| | | |
| | | @Excel(width = 30,name = "菜品数量") |
| | |
| | | SysRole sysRole = new SysRole(); |
| | | sysRole.setRoleName(dto.getRoleName()); |
| | | sysRole.setPostType(dto.getPostType()); |
| | | sysRole.setRemark(dto.getRemark()); |
| | | roleMapper.insertRole(sysRole); |
| | | |
| | | // 添加角色权限中间表 |
| | |
| | | for (OrderMealGeneratorCountDTO orderMealGeneratorCountDTO : orderMealGeneratorCountDTOS) { |
| | | TBoard board = boards.stream().filter(e -> e.getId().equals(orderMealGeneratorCountDTO.getBoardId())).findFirst().orElse(null); |
| | | if(Objects.isNull(board)){ |
| | | throw new ServiceException("桌台用餐人数配置不存在"); |
| | | throw new ServiceException("该桌台信息不存在"); |
| | | } |
| | | Integer orderCount = orderMealGeneratorCountDTO.getOrderCount(); |
| | | // 查询当前桌的用餐人数 |
| | |
| | | List<TOrderMealGoods> orderMealGoods = new ArrayList<>(); |
| | | // 获取当前桌的菜品 |
| | | List<TFoundationConfigVO> foundationConfigVOS = foundationConfigs.stream().filter(e -> e.getMealCount().equals(random)).collect(Collectors.toList()); |
| | | if(CollectionUtils.isEmpty(foundationConfigVOS)){ |
| | | throw new ServiceException("桌台"+random+"人餐,人数配置不存在"); |
| | | } |
| | | // 每种菜品分类需要几个菜的生成 |
| | | foundationConfigVOS.forEach(e -> { |
| | | int random1 = getRandom(e.getMinCount(), e.getMaxCount()); |
| | |
| | | // BigDecimal money = orderSaleGoods.stream().filter(e -> collect.contains(e.getOrderId())) |
| | | // .reduce(BigDecimal.ZERO, (x, y) -> x.add(y.getGoodsCostPrice().multiply(new BigDecimal(y.getGoodsCount()))), BigDecimal::add); |
| | | if(!CollectionUtils.isEmpty(orderSales)){ |
| | | BigDecimal money = orderSales.stream().filter(e -> e.getGeneratorId().equals(tDataGeneratorVO.getId())).map(TOrderSale::getPayMoney).reduce(BigDecimal::add).get(); |
| | | List<TOrderSale> collect = orderSales.stream().filter(e -> e.getGeneratorId().equals(tDataGeneratorVO.getId())).collect(Collectors.toList()); |
| | | BigDecimal money = BigDecimal.ZERO; |
| | | if(!CollectionUtils.isEmpty(collect)){ |
| | | money = collect.stream().map(TOrderSale::getPayMoney).reduce(BigDecimal::add).get(); |
| | | } |
| | | tDataGeneratorVO.setTotalRevenue(money); |
| | | } |
| | | } |
| | |
| | | // 查询已存在的菜品 |
| | | List<TOrderMealGoods> list2 = orderMealGoodsService.list(Wrappers.lambdaQuery(TOrderMealGoods.class) |
| | | .in(TOrderMealGoods::getOrderId, dto.getId())); |
| | | BigDecimal money = BigDecimal.ZERO; |
| | | for (MealOrderGoodsDTO mealOrderGoodsDTO : mealOrderGoodsDTOS) { |
| | | TOrderMealGoods tOrderMealGoods = list2.stream().filter(item1 -> item1.getGoodsId().equals(mealOrderGoodsDTO.getGoodsId())).findFirst().orElse(null); |
| | | if(Objects.nonNull(tOrderMealGoods)){ |
| | | tOrderMealGoods.setGoodsCount(tOrderMealGoods.getGoodsCount()+mealOrderGoodsDTO.getGoodsCount()); |
| | | orderMealGoods.add(tOrderMealGoods); |
| | | money = money.add(tOrderMealGoods.getGoodsSalePrice().multiply(new BigDecimal(mealOrderGoodsDTO.getGoodsCount()))); |
| | | continue; |
| | | } |
| | | for (TGoods goods : list) { |
| | |
| | | orderMealGood.setGoodsId(goods.getId()); |
| | | orderMealGood.setTypeName(list1.stream().filter(item2 -> item2.getId().equals(goods.getTypeId())).findFirst().get().getTypeName()); |
| | | orderMealGoods.add(orderMealGood); |
| | | money = money.add(goods.getSalePrice().multiply(new BigDecimal(mealOrderGoodsDTO.getGoodsCount()))); |
| | | } |
| | | } |
| | | } |
| | | BigDecimal orderMoney = orderMeal.getOrderMoney(); |
| | | // 添加菜品 |
| | | for (TOrderMealGoods orderMealGood : orderMealGoods) { |
| | | orderMealGood.setOrderId(dto.getId()); |
| | | orderMoney = orderMoney.add(orderMealGood.getGoodsSalePrice().multiply(new BigDecimal(orderMealGood.getGoodsCount()))); |
| | | } |
| | | orderMealGoodsService.saveOrUpdateBatch(orderMealGoods); |
| | | BigDecimal orderMoney = orderMeal.getOrderMoney().add(money); |
| | | orderMeal.setOrderMoney(orderMoney); |
| | | this.updateById(orderMeal); |
| | | // 添加备注 |
| | |
| | | |
| | | @Override |
| | | public PageInfo<TOrderSaleVO> pageList(TOrderSaleQuery query) { |
| | | if(Objects.isNull(query.getStartTime()) && Objects.isNull(query.getEndTime())){ |
| | | if(StringUtils.isEmpty(query.getStartTime()) && StringUtils.isEmpty(query.getEndTime())){ |
| | | if(Objects.nonNull(query.getTimeType())){ |
| | | LocalDateTime startTime = null; |
| | | LocalDateTime endTime = null; |
| | |
| | | |
| | | @Override |
| | | public AmountSumVO amountSum(TOrderSaleQuery query) { |
| | | if(StringUtils.isEmpty(query.getStartTime()) && StringUtils.isEmpty(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)); |
| | | } |
| | | } |
| | | AmountSumVO amountSumVO = this.baseMapper.amountSum(query); |
| | | if(amountSumVO.getObligation().compareTo(BigDecimal.ZERO) < 0){ |
| | | amountSumVO.setObligation(BigDecimal.ZERO); |
| | |
| | | |
| | | @Override |
| | | public Map<String, Double> getDataGeneratorSaleDetail(TDataGeneratorSaleQuery query) { |
| | | if(Objects.isNull(query.getStartTime()) && Objects.isNull(query.getEndTime())){ |
| | | if(StringUtils.isEmpty(query.getStartTime()) && StringUtils.isEmpty(query.getEndTime())){ |
| | | if(Objects.nonNull(query.getTimeType())){ |
| | | LocalDateTime startTime = null; |
| | | LocalDateTime endTime = null; |
| | |
| | | orderSale.setPayType(dto.getPayType()); |
| | | orderSale.setPayMoney(dto.getPayMoney()); |
| | | orderSale.setStatus(2); |
| | | |
| | | |
| | | |
| | | this.updateById(orderSale); |
| | | } |
| | | |
| | |
| | | List<TOrderSale> orderSales = this.list(Wrappers.lambdaQuery(TOrderSale.class) |
| | | .in(TOrderSale::getGeneratorId, ids)); |
| | | for (TDataGeneratorVO tDataGeneratorVO : list) { |
| | | if(!CollectionUtils.isEmpty(orderSales)){ |
| | | BigDecimal money = orderSales.stream().map(TOrderSale::getPayMoney).reduce(BigDecimal::add).get(); |
| | | tDataGeneratorVO.setTotalRevenue(money); |
| | | List<TOrderSale> collect = orderSales.stream().filter(e -> e.getGeneratorId().equals(tDataGeneratorVO.getId())).collect(Collectors.toList()); |
| | | BigDecimal money = BigDecimal.ZERO; |
| | | if(!CollectionUtils.isEmpty(collect)){ |
| | | money = collect.stream().map(TOrderSale::getPayMoney).reduce(BigDecimal::add).get(); |
| | | } |
| | | tDataGeneratorVO.setTotalRevenue(money); |
| | | } |
| | | return list; |
| | | } |
| | |
| | | import com.ruoyi.common.constant.OrderNumConstants; |
| | | import com.ruoyi.common.utils.CodeGenerateUtils; |
| | | import com.ruoyi.common.utils.DateUtils; |
| | | import com.ruoyi.common.utils.StringUtils; |
| | | import com.ruoyi.system.domain.*; |
| | | import com.ruoyi.system.dto.TOrderSaleDTO; |
| | | import com.ruoyi.system.dto.TOrderStockDTO; |
| | |
| | | if(good.getGoodsNum().equals(orderSaleGoods1.getGoodsNum())){ |
| | | good.setInventory(orderSaleGoods1.getStockCount()+good.getInventory()); |
| | | goodsUpdateList.add(good); |
| | | }else { |
| | | break; |
| | | } |
| | | } |
| | | }); |
| | |
| | | |
| | | @Override |
| | | public PageInfo<TOrderStockVO> pageList(TOrderStockQuery query) { |
| | | if(Objects.isNull(query.getStartTime()) && Objects.isNull(query.getEndTime())){ |
| | | if(StringUtils.isEmpty(query.getStartTime()) && StringUtils.isEmpty(query.getEndTime())){ |
| | | // 判断时间 |
| | | if(Objects.nonNull(query.getTimeType())){ |
| | | LocalDateTime startTime = null; |
| | |
| | | |
| | | @Override |
| | | public Map<String, Object> getDataGeneratorStockDetail(TDataGeneratorStockQuery query) { |
| | | if(Objects.isNull(query.getStartTime()) && Objects.isNull(query.getEndTime())){ |
| | | if(StringUtils.isEmpty(query.getStartTime()) && StringUtils.isEmpty(query.getEndTime())){ |
| | | // 判断时间 |
| | | if(Objects.nonNull(query.getTimeType())){ |
| | | LocalDateTime startTime = null; |
| | |
| | | <result column="costPrice" property="costPrice" /> |
| | | <result column="typeId" property="typeId" /> |
| | | <result column="goodsId" property="goodsId" /> |
| | | <result column="createTime" property="createTime" /> |
| | | <result column="updateTime" property="updateTime" /> |
| | | <result column="disabled" property="disabled" /> |
| | | <result column="createBy" property="createBy" /> |
| | | <result column="updateBy" property="updateBy" /> |
| | | </resultMap> |
| | | |
| | | <!-- 通用查询结果列 --> |
| | | <sql id="Base_Column_List"> |
| | | id, goodsNum, goodsName, goodsSalePrice, goodsPicture, goodsCount, orderId,typeName,costPrice,typeId,goodsId |
| | | id, goodsNum, goodsName, goodsSalePrice, goodsPicture, goodsCount, orderId,typeName,costPrice,typeId,goodsId,createTime |
| | | </sql> |
| | | <select id="costTotal" resultType="java.math.BigDecimal"> |
| | | select sum(costPrice*goodsCount) from t_order_meal_goods |
| | |
| | | AND tom.disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()} |
| | | AND tom.isCover = 1 |
| | | </where> |
| | | ORDER BY tom.mealTime,tom.createTime DESC |
| | | ORDER BY tom.mealTime DESC , tom.createTime DESC |
| | | </select> |
| | | <select id="amountSum" resultType="com.ruoyi.system.vo.AmountSumVO"> |
| | | select |
| | |
| | | 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> |
| | | ORDER BY tom.mealTime DESC |
| | | </select> |
| | |
| | | AND tdg.disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()} |
| | | and tdg.orderType = 1 |
| | | </where> |
| | | ORDER BY tdg.createTime DESC |
| | | </select> |
| | | <select id="profitDetails" resultType="com.ruoyi.system.vo.GoodsProfitVO"> |
| | | SELECT |
| | |
| | | </select> |
| | | <select id="amountSum" resultType="com.ruoyi.system.vo.AmountSumVO"> |
| | | select |
| | | COUNT(id) AS orderCount, |
| | | COUNT(id) AS orderCount, |
| | | IFNULL(SUM(orderMoney),0) AS saleAmount, |
| | | IFNULL(SUM(payMoney),0) AS payAmount, |
| | | IFNULL(SUM(orderMoney - IFNULL(payMoney,0)),0) AS obligation |
| | |
| | | and shopId = #{query.shopId} |
| | | </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()} |
| | | AND isCover = 1 |
| | |
| | | and shopId = #{query.shopId} |
| | | </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()} |
| | | AND isCover = 1 |
| | |
| | | AND tdg.disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()} |
| | | and tdg.orderType = 2 |
| | | </where> |
| | | ORDER BY tdg.createTime DESC |
| | | </select> |
| | | <select id="profitDetails" resultType="com.ruoyi.system.vo.GoodsProfitVO"> |
| | | SELECT |
| | |
| | | </if> |
| | | AND disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()} |
| | | </where> |
| | | ORDER BY createTime DESC |
| | | ORDER BY stockTime DESC |
| | | </select> |
| | | <select id="getDataGeneratorStockDetail" resultType="java.util.Map"> |
| | | SELECT |
| | |
| | | </if> |
| | | AND disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()} |
| | | </where> |
| | | ORDER BY createTime DESC |
| | | ORDER BY stockTime DESC |
| | | </select> |
| | | |
| | | </mapper> |