xuhy
2024-09-23 66a4d910a33d1273427b513e008bd9cd4c5d4054
修改接口
17个文件已修改
390 ■■■■ 已修改文件
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TShopController.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRoleController.java 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/dto/SysRoleDTO.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/export/TOrderSaleAndGoodsExportExcel.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/query/TDataGeneratorSaleQuery.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysRoleServiceImpl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TDataGeneratorServiceImpl.java 72 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TFoundationPersonServiceImpl.java 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TOrderMealServiceImpl.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TOrderSaleServiceImpl.java 90 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TOrderStockServiceImpl.java 57 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/resources/mapper/system/SysRoleMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/resources/mapper/system/TOrderMealMapper.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/resources/mapper/system/TOrderSaleGoodsMapper.xml 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/resources/mapper/system/TOrderSaleMapper.xml 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/resources/mapper/system/TOrderStockMapper.xml 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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">